@btravstack/http-server

中文文档
0.58.0发布于 2026/11/08MITTypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 9614

The protocol-neutral Node HTTP runtime, request units, and authentication for @btravstack/core

原始使用文档

@btravstack/http-server

The protocol-neutral Node HTTP runtime for @btravstack/core. It owns the listener, HttpHandler set port, one unit per request, authentication helpers, readiness, and graceful drain. Each protocol contributes a handler from its own package:

Choose the answerer packages for the deployment. The order API runs oRPC and htmx; the GraphQL gateway runs separately and calls the order API through its client package.

pnpm add @btravstack/http-server @btravstack/core @btravstack/config \
  @btravstack/di unthrown

The HTTP runtime is composed by HttpModule (@btravstack/orpc-server) or GraphqlModule (@btravstack/graphql-server); its HttpHandler members route by longest matching prefix. defineAuth() names shared schemes without choosing a protocol. JWT, session and OIDC helpers remain on /jwt, /session and /oidc. Opt-in /oidc-tokens retains delegated access, refresh and ID tokens in application-supplied shared storage, with refresh and logout serialized across replicas. Pass its manager port to both the login and session authenticator; credentials stay out of the principal and session cookie. Set oidc()'s postLogoutRedirectUri or HTTP_OIDC_POST_LOGOUT_REDIRECT_URI to a provider-registered absolute return URI to enable RP-initiated logout. The login uses the retained ID token only as the provider's logout hint, after atomically deleting the credentials. Without that setting, logout keeps its existing parameterless behavior. See server-side OIDC tokens.

protectedResource() publishes Protected Resource Metadata (RFC 9728) for one resource, protectedResourcePerHost() for one per served host. See the HTTP reference for request units, security, configuration and shutdown behavior.

Application authenticators can return AuthenticatorUnavailable when a dependency cannot decide. It stops the authentication walk and every HTTP answerer returns 503, reporting the scheme through Observers. See authentication dependency outages.

jwtAuthenticator() returns Unauthenticated when the issuer's key set is unavailable or unusable. The answerer determines the response: usually 401, or a 303 login redirect for a navigating browser on an htmx route with a configured login route. It reports the outage through Observers with component: "jwt", name: "verify", outcome: "error" and a bounded reason, rather than returning AuthenticatorUnavailable. See the JWT issuer-outage policy and its distinction from authentication dependency outages.

Request-scoped providers may inject HttpRequestMetadata to decode headers, method and URL independently of authentication. The runtime seeds its immutable snapshot and cancellation signal once per request unit; it is unavailable in application-scoped providers. See the HTTP reference.

jwtVerifier() on /jwt provides cached signed-evidence verification independently of an HTTP authentication scheme. Inject JwtVerifier and supply the expected audience on each verify({ token, audience }) call; issuer and JWKS trust remain fixed at startup. See signed evidence.

JWT verifier options

  • issuer: pins the required issuer.
  • jwks: pins the trusted key-set endpoint.
  • variablePrefix: names the issuer/JWKS environment prefix.
  • algorithms: pins the signature allowlist.
  • clockToleranceSec: pins expiry/not-before leeway.
  • allowInsecureJwks: explicitly permits non-loopback cleartext development keys.
  • port: names a second issuer's verifier capability.

Defaults and configuration semantics are in the HTTP reference.

Listener options

  • port, hostname: bind the listener.
  • headersTimeoutMs, requestTimeoutMs: bound request reception.
  • keepAliveTimeoutMs: bound idle reusable connections after a response.
  • keepAliveTimeoutBufferMs: extend the actual keepalive lifetime beyond its advertised budget.
  • socketTimeoutMs: bound inactivity during request and response progress.

Each has a matching environment variable; defaults, zero semantics and Node compatibility are in the HTTP reference.

版本与发布记录

@btravstack/http-server 共发布 62 个版本,首次发布于 2026/08/26;过去 12 个月发布了 62 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.58.0latest2026/11/08今天
0.57.02026/11/071 天前
0.56.12026/11/062 天前
0.56.02026/11/062 天前
0.55.12026/11/035 天前
0.55.02026/11/035 天前

关于 @btravstack/http-server 的常见问题

@btravstack/http-server 是什么?

The protocol-neutral Node HTTP runtime, request units, and authentication for @btravstack/core

如何安装 @btravstack/http-server?

在项目目录运行 npm install @btravstack/http-server,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:unthrown(^5.7.0)、@btravstack/di(^0.58.0)、@btravstack/core(^0.58.0)、@btravstack/config(^0.58.0)、@btravstack/contract(^0.58.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@btravstack/http-server 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@btravstack/http-server 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@btravstack/http-server 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.12。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@btravstack/http-server 可以商用吗?

@btravstack/http-server 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@btravstack/http-server 的下载量有多少?

根据 npm 官方下载统计,@btravstack/http-server 在 2026/10/09 – 2026/11/07 这 30 天内被下载 9,614 次,日均约 320 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@btravstack/http-server 还在维护吗?

最新版本 0.58.0 发布于 2026/11/08(今天);至今共发布 62 个版本,其中过去 12 个月发布了 62 个;首次发布于 2026/08/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。