@nifrajs/node 2.10.0 → 2.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -42,6 +42,17 @@ await serve(app, {
42
42
  })
43
43
  ```
44
44
 
45
+ By default, `request.url` reflects the inbound `Host` header. Do not use that value for
46
+ security decisions unless the deployment validates it. Set `allowedHosts` to reject unknown
47
+ host authorities, or set `canonicalHost` behind a trusted proxy to build URLs from a fixed
48
+ authority. If neither option is set, treat the host in `request.url` as client-controlled.
49
+
50
+ ## Static files
51
+
52
+ The optional `static` root is served before `app.fetch` for GET and HEAD requests. It is a
53
+ public asset directory and must contain nothing private: no secrets, source maps, build
54
+ metadata, or user uploads.
55
+
45
56
  ## Graceful shutdown on signals
46
57
 
47
58
  Opt in to SIGTERM/SIGINT handling so a `docker stop` / Ctrl-C drains in-flight requests
@@ -0,0 +1,19 @@
1
+ export type NodeServeOutcome = {
2
+ readonly kind: "response";
3
+ readonly response: Response;
4
+ } | {
5
+ readonly kind: "json";
6
+ readonly status: number;
7
+ /** Header record after native hooks; repeated values are retained as arrays. */
8
+ readonly headers: Readonly<Record<string, string | readonly string[]>> | undefined;
9
+ /** Queued `Set-Cookie` lines, or `undefined`; the adapter emits one header line each. */
10
+ readonly cookies: readonly string[] | undefined;
11
+ /** The JSON body already stringified, or `null` for an empty (204) response. */
12
+ readonly body: string | null;
13
+ } | {
14
+ readonly kind: "body";
15
+ readonly status: number;
16
+ readonly headers: Readonly<Record<string, string | readonly string[]>> | undefined;
17
+ readonly body: string | Uint8Array;
18
+ };
19
+ //# sourceMappingURL=node-outcome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-outcome.d.ts","sourceRoot":"","sources":["../../src/generated/node-outcome.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GAC1D;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,gFAAgF;IAChF,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,CAAA;IAClF,yFAAyF;IACzF,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;IAC/C,gFAAgF;IAChF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,CAAA;IAClF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAA;CACnC,CAAA"}
@@ -0,0 +1,4 @@
1
+ // Generated by scripts/gen-node-outcome.ts - edit packages/core/src/server/node-outcome.ts instead.
2
+ // This file is type-only so @nifrajs/node stays free of a runtime @nifrajs/core dependency.
3
+ export {};
4
+ //# sourceMappingURL=node-outcome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-outcome.js","sourceRoot":"","sources":["../../src/generated/node-outcome.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,4FAA4F"}
package/dist/index.d.ts CHANGED
@@ -47,6 +47,7 @@ type WsUpgradeOutcome = {
47
47
  readonly handler: NifraWsHandler;
48
48
  readonly data: unknown;
49
49
  readonly pubsub: WsPubSub;
50
+ readonly maxPayloadBytes?: number;
50
51
  };
51
52
  export type RequestProtocol = "http" | "https";
52
53
  export type RequestProtocolOption = RequestProtocol | ((request: IncomingMessage) => RequestProtocol);
@@ -64,6 +65,14 @@ export interface ServeStaticOptions {
64
65
  readonly immutable?: boolean;
65
66
  /** Extra headers merged onto every served file. */
66
67
  readonly headers?: Readonly<Record<string, string>>;
68
+ /**
69
+ * Whether a path with a dot-leading segment (`/.env`, `/.git/config`, `/.hidden/app.js`) is
70
+ * served. Default `"deny"`: answered `404` - the same response as a missing file, so probing
71
+ * can't distinguish "hidden" from "absent". Dotfiles land in build output by accident, not by
72
+ * design (`.env` next to the bundle, a `.git` dir in a copied tree), so serving them is opt-in.
73
+ * Set `"allow"` if the directory deliberately contains them (e.g. `/.well-known`).
74
+ */
75
+ readonly dotfiles?: "deny" | "allow";
67
76
  }
68
77
  export interface ServeOptions {
69
78
  readonly port: number;
@@ -76,6 +85,10 @@ export interface ServeOptions {
76
85
  * `request.url` sees the public scheme. Forwarded headers are not trusted implicitly.
77
86
  */
78
87
  readonly protocol?: RequestProtocolOption;
88
+ /** Reject requests whose normalized Host authority is not in this allowlist or callback result. */
89
+ readonly allowedHosts?: readonly string[] | ((host: string) => boolean);
90
+ /** Use this validated authority when constructing Request.url, ignoring the inbound Host value. */
91
+ readonly canonicalHost?: string;
79
92
  /**
80
93
  * Install SIGTERM/SIGINT handlers that call `stop()` for a graceful drain on
81
94
  * `docker stop` / Ctrl-C. Off by default - taking over process signals is opt-in,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -36,6 +36,10 @@ const INTERNAL_ERROR_BODY = '{"ok":false,"error":"internal_error"}';
36
36
  const EMPTY_BUFFER = Buffer.alloc(0);
37
37
  const NODE_RESPONSE_BODY = Symbol.for("nifra.response.body");
38
38
  const RESPONSE_RESULT = Symbol.for("nifra.response.result");
39
+ /** Core's proof that a header record's names are already the lowercase wire spelling - set once per
40
+ * request by the native response walk, which had to look at the same keys anyway. Declared by key
41
+ * rather than imported: the same cross-package convention as the two marks above. */
42
+ const LOWERCASE_HEADER_KEYS = Symbol.for("nifra.headers.lowercase");
39
43
  function isBodylessStatus(status) {
40
44
  return status === 204 || status === 205 || status === 304;
41
45
  }
@@ -190,6 +194,106 @@ function appendCookiesToNodeHeaders(headers, cookies) {
190
194
  }
191
195
  const DEFAULT_DRAIN_MS = 10_000;
192
196
  const DRAIN_POLL_MS = 10;
197
+ function normalizeHostAuthority(value) {
198
+ if (value.length === 0 || /[\r\n\s@/?#]/.test(value))
199
+ return undefined;
200
+ let hostname;
201
+ let port;
202
+ if (value.startsWith("[")) {
203
+ const close = value.indexOf("]");
204
+ if (close === -1)
205
+ return undefined;
206
+ hostname = value.slice(1, close);
207
+ const rest = value.slice(close + 1);
208
+ if (rest !== "") {
209
+ if (!rest.startsWith(":"))
210
+ return undefined;
211
+ port = rest.slice(1);
212
+ }
213
+ if (hostname.length === 0 || !/^[0-9a-f:.%]+$/i.test(hostname))
214
+ return undefined;
215
+ hostname = `[${hostname.toLowerCase()}]`;
216
+ }
217
+ else {
218
+ const colon = value.indexOf(":");
219
+ if (colon === -1) {
220
+ hostname = value;
221
+ }
222
+ else {
223
+ if (value.indexOf(":", colon + 1) !== -1)
224
+ return undefined;
225
+ hostname = value.slice(0, colon);
226
+ port = value.slice(colon + 1);
227
+ }
228
+ if (hostname.length === 0 || !/^[a-z0-9.-]+$/i.test(hostname))
229
+ return undefined;
230
+ hostname = hostname.toLowerCase();
231
+ }
232
+ if (port !== undefined) {
233
+ if (!/^\d{1,5}$/.test(port))
234
+ return undefined;
235
+ const numericPort = Number(port);
236
+ if (!Number.isSafeInteger(numericPort) || numericPort > 65_535)
237
+ return undefined;
238
+ port = String(numericPort);
239
+ }
240
+ return port === undefined ? hostname : `${hostname}:${port}`;
241
+ }
242
+ function hostPolicyOf(options) {
243
+ let allowedHosts;
244
+ if (options.allowedHosts !== undefined && typeof options.allowedHosts !== "function") {
245
+ const normalized = new Set();
246
+ for (const host of options.allowedHosts) {
247
+ const parsed = normalizeHostAuthority(host);
248
+ if (parsed === undefined)
249
+ throw new TypeError(`@nifrajs/node: invalid allowed host ${host}`);
250
+ normalized.add(parsed);
251
+ }
252
+ allowedHosts = normalized;
253
+ }
254
+ else {
255
+ allowedHosts = options.allowedHosts;
256
+ }
257
+ const canonicalHost = options.canonicalHost === undefined ? undefined : normalizeHostAuthority(options.canonicalHost);
258
+ if (options.canonicalHost !== undefined && canonicalHost === undefined) {
259
+ throw new TypeError(`@nifrajs/node: invalid canonical host ${options.canonicalHost}`);
260
+ }
261
+ return { allowedHosts, canonicalHost };
262
+ }
263
+ // Last inbound Host and what it normalized to. Normalization is pure and the value repeats for
264
+ // every request of a deployment (one authority, reused across connections), so a one-entry memo
265
+ // turns three regex tests plus the slicing into a string compare - measured 135ns -> ~3ns per
266
+ // request on Node 26. A miss just runs the normalizer, so an attacker rotating the header only
267
+ // gives up the cache, never correctness.
268
+ let lastHostInput;
269
+ let lastHostOutput;
270
+ function normalizeHostCached(value) {
271
+ if (value === lastHostInput)
272
+ return lastHostOutput;
273
+ const normalized = normalizeHostAuthority(value);
274
+ lastHostInput = value;
275
+ lastHostOutput = normalized;
276
+ return normalized;
277
+ }
278
+ function requestHost(req, policy) {
279
+ const inbound = typeof req.headers.host === "string" ? req.headers.host : "localhost";
280
+ const normalized = normalizeHostCached(inbound);
281
+ if (normalized === undefined)
282
+ return undefined;
283
+ if (policy.allowedHosts !== undefined) {
284
+ try {
285
+ const allowed = typeof policy.allowedHosts === "function"
286
+ ? policy.allowedHosts(normalized)
287
+ : policy.allowedHosts.has(normalized);
288
+ if (!allowed)
289
+ return undefined;
290
+ }
291
+ catch {
292
+ return undefined;
293
+ }
294
+ }
295
+ return policy.canonicalHost ?? normalized;
296
+ }
193
297
  const STATIC_CONTENT_TYPES = {
194
298
  ".js": "text/javascript; charset=utf-8",
195
299
  ".mjs": "text/javascript; charset=utf-8",
@@ -224,7 +328,13 @@ function staticStateOf(options) {
224
328
  while (to > from && raw.charCodeAt(to - 1) === 47)
225
329
  to--;
226
330
  const prefix = raw === "/" ? "/" : `/${raw.slice(from, to)}`;
227
- return { root, prefix, immutable: options.immutable !== false, headers: options.headers };
331
+ return {
332
+ root,
333
+ prefix,
334
+ immutable: options.immutable !== false,
335
+ headers: options.headers,
336
+ denyDotfiles: options.dotfiles !== "allow",
337
+ };
228
338
  }
229
339
  /**
230
340
  * Resolve a request URL to a file under the served root - **synchronously**, so non-matching requests
@@ -252,9 +362,21 @@ function staticMatch(state, rawUrl) {
252
362
  // Reject traversal in the REQUEST form before it ever reaches the filesystem path join: a `..`
253
363
  // path segment (or a backslash Windows would treat as a separator) has no legitimate use in an
254
364
  // asset URL. Segment-precise on purpose - a filename merely CONTAINING `..` (`logo..png`) is legal.
255
- if (rel.split("/").includes("..") || rel.includes("\\")) {
365
+ // The same segment pass covers dotfiles: the check runs post-decode, so `%2E`-spelled dots are
366
+ // already plain `.` here. Denied dotfiles answer 404, not 403 - identical to a missing file, so
367
+ // probing can't distinguish "hidden" from "absent" (traversal keeps its 403: `..` is an attack
368
+ // shape, and there is nothing behind it to conceal).
369
+ const segments = rel.split("/");
370
+ if (segments.includes("..") || rel.includes("\\")) {
256
371
  return { reject: new Response("Forbidden", { status: 403 }) };
257
372
  }
373
+ if (state.denyDotfiles) {
374
+ for (const segment of segments) {
375
+ if (segment.charCodeAt(0) === 46 /* '.' */) {
376
+ return { reject: new Response("Not Found", { status: 404 }) };
377
+ }
378
+ }
379
+ }
258
380
  const file = resolve(state.root, rel);
259
381
  // Confine to the served directory - the resolved path must sit at or below root.
260
382
  const contained = relative(state.root, file);
@@ -349,11 +471,12 @@ export function serve(app, options) {
349
471
  let inFlight = 0;
350
472
  let closed = false;
351
473
  const protocol = protocolResolver(options.protocol);
474
+ const hostPolicy = hostPolicyOf(options);
352
475
  const staticState = options.static !== undefined ? staticStateOf(options.static) : undefined;
353
476
  const server = createServer((nodeReq, nodeRes) => {
354
477
  inFlight += 1;
355
478
  try {
356
- const handled = handle(app, nodeReq, nodeRes, protocol, staticState);
479
+ const handled = handle(app, nodeReq, nodeRes, protocol, staticState, hostPolicy);
357
480
  if (handled instanceof Promise) {
358
481
  void handled.finally(() => {
359
482
  inFlight -= 1;
@@ -374,8 +497,8 @@ export function serve(app, options) {
374
497
  if (resolveWs !== undefined) {
375
498
  let wssPromise;
376
499
  server.on("upgrade", (nodeReq, socket, head) => {
377
- void handleUpgrade(resolveWs, protocol, nodeReq, socket, head, () => {
378
- wssPromise ??= loadWsServer();
500
+ void handleUpgrade(resolveWs, protocol, hostPolicy, nodeReq, socket, head, (maxPayloadBytes) => {
501
+ wssPromise ??= loadWsServer(maxPayloadBytes);
379
502
  return wssPromise;
380
503
  });
381
504
  });
@@ -420,7 +543,12 @@ export function serve(app, options) {
420
543
  server.listen(options.port, options.hostname, onListening);
421
544
  });
422
545
  }
423
- function handle(app, nodeReq, nodeRes, getProtocol, staticState) {
546
+ function handle(app, nodeReq, nodeRes, getProtocol, staticState, hostPolicy) {
547
+ const host = requestHost(nodeReq, hostPolicy);
548
+ if (host === undefined) {
549
+ writeBadRequest(nodeRes);
550
+ return;
551
+ }
424
552
  let protocol;
425
553
  try {
426
554
  protocol = getProtocol(nodeReq);
@@ -460,7 +588,7 @@ function handle(app, nodeReq, nodeRes, getProtocol, staticState) {
460
588
  const resolveNodeSource = app.resolveNodeSource;
461
589
  if (typeof resolveNodeSource === "function") {
462
590
  try {
463
- const outcome = resolveNodeSource.call(app, toNodeRequestSource(nodeReq, protocol), platform, NODE_OUTCOME_RUNTIME);
591
+ const outcome = resolveNodeSource.call(app, toNodeRequestSource(nodeReq, protocol, host), platform, NODE_OUTCOME_RUNTIME);
464
592
  return outcome instanceof Promise
465
593
  ? outcome.then((settled) => writeNodeOutcome(settled, nodeRes), () => writeInternalError(nodeRes))
466
594
  : writeNodeOutcome(outcome, nodeRes);
@@ -470,7 +598,7 @@ function handle(app, nodeReq, nodeRes, getProtocol, staticState) {
470
598
  return;
471
599
  }
472
600
  }
473
- const request = toWebRequest(nodeReq, protocol);
601
+ const request = toWebRequest(nodeReq, protocol, host);
474
602
  const resolveNode = app.resolveNode;
475
603
  if (typeof resolveNode === "function") {
476
604
  try {
@@ -512,6 +640,14 @@ function writeInternalError(nodeRes) {
512
640
  nodeRes.writeHead(500, { "content-type": "application/json" });
513
641
  nodeRes.end(INTERNAL_ERROR_BODY);
514
642
  }
643
+ function writeBadRequest(nodeRes) {
644
+ const body = "Bad Request";
645
+ nodeRes.writeHead(400, {
646
+ "content-type": "text/plain; charset=utf-8",
647
+ "content-length": String(Buffer.byteLength(body)),
648
+ });
649
+ nodeRes.end(body);
650
+ }
515
651
  /** True when every header name in the record is already free of ASCII uppercase - the gate for
516
652
  * skipping the per-request lowercase normalization copy in {@link writeJsonOutcome}. */
517
653
  function allHeaderKeysLowercase(record) {
@@ -533,7 +669,9 @@ function allHeaderKeysLowercase(record) {
533
669
  function writeJsonOutcome(outcome, nodeRes) {
534
670
  // The outcome's record is the request's own (`c.set.headers`, already mutated by any native
535
671
  // response hooks), and its writers - middleware twins and the framework's own additions - emit
536
- // lowercase names. When a key scan confirms that, the record is used as-is and the additions
672
+ // lowercase names. Confirmed either by core's mark (the native response walk already looked at
673
+ // these keys, so re-walking them here is the same pass twice) or, when the record never went
674
+ // through that walk, by the scan below. Either way the record is then used as-is and the additions
537
675
  // below mutate it in place; nothing reads it after the write. Only a mixed-case key (a user's
538
676
  // hand-set `X-Foo`) pays the normalization copy, keeping the wire byte-identical to undici's
539
677
  // `Headers` lowercasing on every other runtime.
@@ -548,7 +686,8 @@ function writeJsonOutcome(outcome, nodeRes) {
548
686
  // frame on a bare route). A literal keeps it in fast mode.
549
687
  headers = {};
550
688
  }
551
- else if (allHeaderKeysLowercase(source)) {
689
+ else if (source[LOWERCASE_HEADER_KEYS] === true ||
690
+ allHeaderKeysLowercase(source)) {
552
691
  headers = source;
553
692
  }
554
693
  else {
@@ -633,17 +772,16 @@ function normalizeProtocol(value) {
633
772
  return value;
634
773
  throw new Error(`@nifrajs/node: protocol must be "http" or "https" (got ${JSON.stringify(value)})`);
635
774
  }
636
- function toWebRequest(req, protocol) {
637
- const host = req.headers.host ?? "localhost";
775
+ function toWebRequest(req, protocol, host) {
638
776
  const url = `${protocol}://${host}${req.url ?? "/"}`;
639
777
  const method = req.method ?? "GET";
640
778
  return makeWebRequest(req, method, url, headerRecordFromNode(req.headers));
641
779
  }
642
- function toNodeRequestSource(req, protocol) {
780
+ function toNodeRequestSource(req, protocol, host) {
643
781
  const method = req.method ?? "GET";
644
782
  return method === "GET" || method === "HEAD"
645
- ? new LeanNodeGetSource(req, method, protocol)
646
- : new LazyNodeRequestSource(req, method, protocol);
783
+ ? new LeanNodeGetSource(req, method, protocol, host)
784
+ : new LazyNodeRequestSource(req, method, protocol, host);
647
785
  }
648
786
  /**
649
787
  * Split an origin-form request target ("/path?q#frag") into pathname + search without synthesizing
@@ -688,14 +826,16 @@ class LazyNodeRequestSource {
688
826
  urlValue;
689
827
  nodeReq;
690
828
  protocol;
691
- constructor(nodeReq, method, protocol) {
829
+ host;
830
+ constructor(nodeReq, method, protocol, host) {
692
831
  this.nodeReq = nodeReq;
693
832
  this.method = method;
694
833
  this.protocol = protocol;
834
+ this.host = host;
695
835
  }
696
836
  /** The absolute URL, built only when something reads it - routing uses `urlParts` instead. */
697
837
  get url() {
698
- this.urlValue ??= `${this.protocol}://${this.nodeReq.headers.host ?? "localhost"}${this.nodeReq.url ?? "/"}`;
838
+ this.urlValue ??= `${this.protocol}://${this.host}${this.nodeReq.url ?? "/"}`;
699
839
  return this.urlValue;
700
840
  }
701
841
  get urlParts() {
@@ -731,6 +871,18 @@ class LazyNodeRequestSource {
731
871
  return this.requestValue.json();
732
872
  return this.readNodeBody().then((buffer) => JSON.parse(buffer.toString("utf8")));
733
873
  }
874
+ jsonWithByteLength() {
875
+ if (this.requestValue !== undefined) {
876
+ return this.requestValue.arrayBuffer().then((buffer) => ({
877
+ value: JSON.parse(Buffer.from(buffer).toString("utf8")),
878
+ byteLength: buffer.byteLength,
879
+ }));
880
+ }
881
+ return this.readNodeBody().then((buffer) => ({
882
+ value: JSON.parse(buffer.toString("utf8")),
883
+ byteLength: buffer.byteLength,
884
+ }));
885
+ }
734
886
  get request() {
735
887
  this.requestValue ??= new LazyWebRequest(this.method, this.url, () => this.headersValue ?? headerRecordFromNode(this.nodeReq.headers), (headers) => {
736
888
  if (this.consumedBody !== undefined) {
@@ -809,14 +961,16 @@ class LeanNodeGetSource {
809
961
  urlValue;
810
962
  nodeReq;
811
963
  protocol;
812
- constructor(nodeReq, method, protocol) {
964
+ host;
965
+ constructor(nodeReq, method, protocol, host) {
813
966
  this.nodeReq = nodeReq;
814
967
  this.method = method;
815
968
  this.protocol = protocol;
969
+ this.host = host;
816
970
  }
817
971
  /** The absolute URL, built only when something reads it - routing uses `urlParts` instead. */
818
972
  get url() {
819
- this.urlValue ??= `${this.protocol}://${this.nodeReq.headers.host ?? "localhost"}${this.nodeReq.url ?? "/"}`;
973
+ this.urlValue ??= `${this.protocol}://${this.host}${this.nodeReq.url ?? "/"}`;
820
974
  return this.urlValue;
821
975
  }
822
976
  get urlParts() {
@@ -1065,11 +1219,15 @@ function nodeResponseBody(response) {
1065
1219
  * `@types/ws` dependency here (the surface is structurally typed via {@link WsServer}/{@link WsSocket}). */
1066
1220
  const WS_MODULE_SPECIFIER = "ws";
1067
1221
  /** Lazily build a noServer `ws` `WebSocketServer`, or `undefined` if `ws` isn't installed. */
1068
- async function loadWsServer() {
1222
+ async function loadWsServer(maxPayloadBytes) {
1069
1223
  try {
1070
1224
  const mod = (await import(__rewriteRelativeImportExtension(WS_MODULE_SPECIFIER)));
1071
1225
  const Ctor = mod.WebSocketServer ?? mod.default?.WebSocketServer;
1072
- return Ctor === undefined ? undefined : new Ctor({ noServer: true });
1226
+ return Ctor === undefined
1227
+ ? undefined
1228
+ : new Ctor(maxPayloadBytes === undefined
1229
+ ? { noServer: true }
1230
+ : { noServer: true, maxPayload: maxPayloadBytes });
1073
1231
  }
1074
1232
  catch {
1075
1233
  return undefined; // `ws` not installed - caller responds 501
@@ -1086,10 +1244,15 @@ const WS_STATUS_TEXT = {
1086
1244
  };
1087
1245
  /** Resolve a Node `upgrade` event: run the nifra upgrade guard, then either reject (write an HTTP error
1088
1246
  * to the raw socket) or perform the `ws` upgrade and wire the socket to the handler. */
1089
- async function handleUpgrade(resolveWs, getProtocol, nodeReq, socket, head, getWss) {
1247
+ async function handleUpgrade(resolveWs, getProtocol, hostPolicy, nodeReq, socket, head, getWss) {
1090
1248
  let outcome;
1091
1249
  try {
1092
- outcome = await resolveWs(toWebRequest(nodeReq, getProtocol(nodeReq)));
1250
+ const host = requestHost(nodeReq, hostPolicy);
1251
+ if (host === undefined) {
1252
+ writeUpgradeRejection(socket, 400, "bad_request");
1253
+ return;
1254
+ }
1255
+ outcome = await resolveWs(toWebRequest(nodeReq, getProtocol(nodeReq), host));
1093
1256
  }
1094
1257
  catch {
1095
1258
  writeUpgradeRejection(socket, 500, "internal_error");
@@ -1103,7 +1266,7 @@ async function handleUpgrade(resolveWs, getProtocol, nodeReq, socket, head, getW
1103
1266
  await writeRejectionResponse(socket, outcome.response);
1104
1267
  return;
1105
1268
  }
1106
- const wss = await getWss();
1269
+ const wss = await getWss(outcome.maxPayloadBytes);
1107
1270
  if (wss === undefined) {
1108
1271
  writeUpgradeRejection(socket, 501, "websocket_unavailable"); // `ws` not installed
1109
1272
  return;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,15 +1,17 @@
1
1
  {
2
2
  "name": "@nifrajs/node",
3
- "version": "2.10.0",
3
+ "version": "2.12.0",
4
4
  "description": "Run a nifra app on Node's http server - a Request<->stream adapter with a graceful stop().",
5
5
  "keywords": [
6
6
  "bun",
7
7
  "typescript",
8
8
  "nifra",
9
- "web-framework",
10
- "full-stack",
11
- "edge",
12
- "ssr"
9
+ "node",
10
+ "nodejs",
11
+ "http",
12
+ "adapter",
13
+ "runtime",
14
+ "server"
13
15
  ],
14
16
  "type": "module",
15
17
  "main": "./dist/index.js",
@@ -28,7 +30,7 @@
28
30
  ],
29
31
  "sideEffects": false,
30
32
  "scripts": {
31
- "build": "tsc -p tsconfig.build.json && bun run ../../scripts/fix-dts.ts dist"
33
+ "build": "bun run ../../scripts/gen-node-outcome.ts && tsc -p tsconfig.build.json && bun run ../../scripts/fix-dts.ts dist"
32
34
  },
33
35
  "peerDependencies": {
34
36
  "ws": "^8.18.0"
@@ -0,0 +1,21 @@
1
+ // Generated by scripts/gen-node-outcome.ts - edit packages/core/src/server/node-outcome.ts instead.
2
+ // This file is type-only so @nifrajs/node stays free of a runtime @nifrajs/core dependency.
3
+
4
+ export type NodeServeOutcome =
5
+ | { readonly kind: "response"; readonly response: Response }
6
+ | {
7
+ readonly kind: "json"
8
+ readonly status: number
9
+ /** Header record after native hooks; repeated values are retained as arrays. */
10
+ readonly headers: Readonly<Record<string, string | readonly string[]>> | undefined
11
+ /** Queued `Set-Cookie` lines, or `undefined`; the adapter emits one header line each. */
12
+ readonly cookies: readonly string[] | undefined
13
+ /** The JSON body already stringified, or `null` for an empty (204) response. */
14
+ readonly body: string | null
15
+ }
16
+ | {
17
+ readonly kind: "body"
18
+ readonly status: number
19
+ readonly headers: Readonly<Record<string, string | readonly string[]>> | undefined
20
+ readonly body: string | Uint8Array
21
+ }
package/src/index.ts CHANGED
@@ -23,6 +23,7 @@ import { type Duplex, Readable } from "node:stream"
23
23
  import { fileURLToPath } from "node:url"
24
24
  // srvx's lazy spec-shaped Response - see nodeOutcomeToResponse for why the bridge uses it.
25
25
  import { FastResponse } from "srvx/node"
26
+ import type { NodeServeOutcome } from "./generated/node-outcome.ts"
26
27
 
27
28
  /** The runtime platform a nifra app accepts as `fetch`'s 2nd arg - here, the observed socket peer. */
28
29
  interface NodePlatform {
@@ -38,8 +39,8 @@ export interface FetchHandler {
38
39
  resolveWebSocketUpgrade?(request: Request): WsUpgradeOutcome | Promise<WsUpgradeOutcome>
39
40
  }
40
41
 
41
- // --- WebSocket types: structurally mirrored from @nifrajs/core (this adapter has no @nifrajs/core
42
- // dependency - see NodeServeOutcome above). Kept in lockstep by the WS integration test. ---
42
+ // --- WebSocket types: structurally mirrored from @nifrajs/core. The adapter stays dependency-free;
43
+ // the runtime outcome contract below is generated from core as a separate type-only artifact. ---
43
44
 
44
45
  /** A received frame, normalized: text → `string`, binary → `Uint8Array`. */
45
46
  type NifraWsData = string | Uint8Array
@@ -79,6 +80,7 @@ type WsUpgradeOutcome =
79
80
  readonly handler: NifraWsHandler
80
81
  readonly data: unknown
81
82
  readonly pubsub: WsPubSub
83
+ readonly maxPayloadBytes?: number
82
84
  }
83
85
 
84
86
  /** Structural view of the `ws` package's `WebSocket` (no `@types/ws` dependency - see `loadWsServer`). */
@@ -107,30 +109,7 @@ export type RequestProtocolOption =
107
109
  | ((request: IncomingMessage) => RequestProtocol)
108
110
  type RequestProtocolResolver = (request: IncomingMessage) => RequestProtocol
109
111
 
110
- /**
111
- * The node-direct render returned by a nifra app's `resolveNode` - structurally mirrored here so this
112
- * adapter stays decoupled from `@nifrajs/core` (it bridges *any* handler exposing this seam, and has no
113
- * runtime dependency on nifra). A `kind: "json"` outcome is a plain-data result we serialize straight to
114
- * the socket; a `kind: "body"` outcome is a marked buffered response body (notably @nifrajs/web's
115
- * non-deferred SSR HTML). Both skip undici/Web body draining. Everything else carries a `Response` we
116
- * write the usual Web way. Kept in lockstep with `@nifrajs/core`'s `NodeServeOutcome` by the integration
117
- * test (`serve.test.ts`), which runs a real nifra app end-to-end through this path.
118
- */
119
- type NodeServeOutcome =
120
- | { readonly kind: "response"; readonly response: Response }
121
- | {
122
- readonly kind: "json"
123
- readonly status: number
124
- readonly headers: Readonly<Record<string, string | readonly string[]>> | undefined
125
- readonly cookies: readonly string[] | undefined
126
- readonly body: string | null
127
- }
128
- | {
129
- readonly kind: "body"
130
- readonly status: number
131
- readonly headers: Readonly<Record<string, string | readonly string[]>> | undefined
132
- readonly body: string | Uint8Array
133
- }
112
+ /** The node-direct render contract is generated from core at build time into `./generated`. */
134
113
 
135
114
  interface NodeRequestSource {
136
115
  readonly method: string
@@ -142,6 +121,7 @@ interface NodeRequestSource {
142
121
  readonly body: ReadableStream<Uint8Array> | null
143
122
  arrayBuffer(): Promise<ArrayBuffer>
144
123
  json(): Promise<unknown>
124
+ jsonWithByteLength?(): Promise<{ readonly value: unknown; readonly byteLength: number }>
145
125
  readonly request: Request
146
126
  }
147
127
 
@@ -185,6 +165,10 @@ const INTERNAL_ERROR_BODY = '{"ok":false,"error":"internal_error"}'
185
165
  const EMPTY_BUFFER = Buffer.alloc(0)
186
166
  const NODE_RESPONSE_BODY = Symbol.for("nifra.response.body")
187
167
  const RESPONSE_RESULT = Symbol.for("nifra.response.result")
168
+ /** Core's proof that a header record's names are already the lowercase wire spelling - set once per
169
+ * request by the native response walk, which had to look at the same keys anyway. Declared by key
170
+ * rather than imported: the same cross-package convention as the two marks above. */
171
+ const LOWERCASE_HEADER_KEYS = Symbol.for("nifra.headers.lowercase")
188
172
 
189
173
  function isBodylessStatus(status: number): boolean {
190
174
  return status === 204 || status === 205 || status === 304
@@ -371,6 +355,14 @@ export interface ServeStaticOptions {
371
355
  readonly immutable?: boolean
372
356
  /** Extra headers merged onto every served file. */
373
357
  readonly headers?: Readonly<Record<string, string>>
358
+ /**
359
+ * Whether a path with a dot-leading segment (`/.env`, `/.git/config`, `/.hidden/app.js`) is
360
+ * served. Default `"deny"`: answered `404` - the same response as a missing file, so probing
361
+ * can't distinguish "hidden" from "absent". Dotfiles land in build output by accident, not by
362
+ * design (`.env` next to the bundle, a `.git` dir in a copied tree), so serving them is opt-in.
363
+ * Set `"allow"` if the directory deliberately contains them (e.g. `/.well-known`).
364
+ */
365
+ readonly dotfiles?: "deny" | "allow"
374
366
  }
375
367
 
376
368
  export interface ServeOptions {
@@ -384,6 +376,10 @@ export interface ServeOptions {
384
376
  * `request.url` sees the public scheme. Forwarded headers are not trusted implicitly.
385
377
  */
386
378
  readonly protocol?: RequestProtocolOption
379
+ /** Reject requests whose normalized Host authority is not in this allowlist or callback result. */
380
+ readonly allowedHosts?: readonly string[] | ((host: string) => boolean)
381
+ /** Use this validated authority when constructing Request.url, ignoring the inbound Host value. */
382
+ readonly canonicalHost?: string
387
383
  /**
388
384
  * Install SIGTERM/SIGINT handlers that call `stop()` for a graceful drain on
389
385
  * `docker stop` / Ctrl-C. Off by default - taking over process signals is opt-in,
@@ -416,6 +412,102 @@ export interface NodeServer {
416
412
  const DEFAULT_DRAIN_MS = 10_000
417
413
  const DRAIN_POLL_MS = 10
418
414
 
415
+ interface HostPolicy {
416
+ readonly allowedHosts: ReadonlySet<string> | ((host: string) => boolean) | undefined
417
+ readonly canonicalHost: string | undefined
418
+ }
419
+
420
+ function normalizeHostAuthority(value: string): string | undefined {
421
+ if (value.length === 0 || /[\r\n\s@/?#]/.test(value)) return undefined
422
+ let hostname: string
423
+ let port: string | undefined
424
+ if (value.startsWith("[")) {
425
+ const close = value.indexOf("]")
426
+ if (close === -1) return undefined
427
+ hostname = value.slice(1, close)
428
+ const rest = value.slice(close + 1)
429
+ if (rest !== "") {
430
+ if (!rest.startsWith(":")) return undefined
431
+ port = rest.slice(1)
432
+ }
433
+ if (hostname.length === 0 || !/^[0-9a-f:.%]+$/i.test(hostname)) return undefined
434
+ hostname = `[${hostname.toLowerCase()}]`
435
+ } else {
436
+ const colon = value.indexOf(":")
437
+ if (colon === -1) {
438
+ hostname = value
439
+ } else {
440
+ if (value.indexOf(":", colon + 1) !== -1) return undefined
441
+ hostname = value.slice(0, colon)
442
+ port = value.slice(colon + 1)
443
+ }
444
+ if (hostname.length === 0 || !/^[a-z0-9.-]+$/i.test(hostname)) return undefined
445
+ hostname = hostname.toLowerCase()
446
+ }
447
+ if (port !== undefined) {
448
+ if (!/^\d{1,5}$/.test(port)) return undefined
449
+ const numericPort = Number(port)
450
+ if (!Number.isSafeInteger(numericPort) || numericPort > 65_535) return undefined
451
+ port = String(numericPort)
452
+ }
453
+ return port === undefined ? hostname : `${hostname}:${port}`
454
+ }
455
+
456
+ function hostPolicyOf(options: ServeOptions): HostPolicy {
457
+ let allowedHosts: HostPolicy["allowedHosts"]
458
+ if (options.allowedHosts !== undefined && typeof options.allowedHosts !== "function") {
459
+ const normalized = new Set<string>()
460
+ for (const host of options.allowedHosts) {
461
+ const parsed = normalizeHostAuthority(host)
462
+ if (parsed === undefined) throw new TypeError(`@nifrajs/node: invalid allowed host ${host}`)
463
+ normalized.add(parsed)
464
+ }
465
+ allowedHosts = normalized
466
+ } else {
467
+ allowedHosts = options.allowedHosts
468
+ }
469
+ const canonicalHost =
470
+ options.canonicalHost === undefined ? undefined : normalizeHostAuthority(options.canonicalHost)
471
+ if (options.canonicalHost !== undefined && canonicalHost === undefined) {
472
+ throw new TypeError(`@nifrajs/node: invalid canonical host ${options.canonicalHost}`)
473
+ }
474
+ return { allowedHosts, canonicalHost }
475
+ }
476
+
477
+ // Last inbound Host and what it normalized to. Normalization is pure and the value repeats for
478
+ // every request of a deployment (one authority, reused across connections), so a one-entry memo
479
+ // turns three regex tests plus the slicing into a string compare - measured 135ns -> ~3ns per
480
+ // request on Node 26. A miss just runs the normalizer, so an attacker rotating the header only
481
+ // gives up the cache, never correctness.
482
+ let lastHostInput: string | undefined
483
+ let lastHostOutput: string | undefined
484
+
485
+ function normalizeHostCached(value: string): string | undefined {
486
+ if (value === lastHostInput) return lastHostOutput
487
+ const normalized = normalizeHostAuthority(value)
488
+ lastHostInput = value
489
+ lastHostOutput = normalized
490
+ return normalized
491
+ }
492
+
493
+ function requestHost(req: IncomingMessage, policy: HostPolicy): string | undefined {
494
+ const inbound = typeof req.headers.host === "string" ? req.headers.host : "localhost"
495
+ const normalized = normalizeHostCached(inbound)
496
+ if (normalized === undefined) return undefined
497
+ if (policy.allowedHosts !== undefined) {
498
+ try {
499
+ const allowed =
500
+ typeof policy.allowedHosts === "function"
501
+ ? policy.allowedHosts(normalized)
502
+ : policy.allowedHosts.has(normalized)
503
+ if (!allowed) return undefined
504
+ } catch {
505
+ return undefined
506
+ }
507
+ }
508
+ return policy.canonicalHost ?? normalized
509
+ }
510
+
419
511
  const STATIC_CONTENT_TYPES: Readonly<Record<string, string>> = {
420
512
  ".js": "text/javascript; charset=utf-8",
421
513
  ".mjs": "text/javascript; charset=utf-8",
@@ -445,6 +537,7 @@ interface StaticState {
445
537
  readonly prefix: string // normalized: "/assets" (no trailing slash) or "/"
446
538
  readonly immutable: boolean
447
539
  readonly headers: Readonly<Record<string, string>> | undefined
540
+ readonly denyDotfiles: boolean
448
541
  }
449
542
 
450
543
  function staticStateOf(options: ServeStaticOptions): StaticState {
@@ -456,7 +549,13 @@ function staticStateOf(options: ServeStaticOptions): StaticState {
456
549
  let to = raw.length
457
550
  while (to > from && raw.charCodeAt(to - 1) === 47) to--
458
551
  const prefix = raw === "/" ? "/" : `/${raw.slice(from, to)}`
459
- return { root, prefix, immutable: options.immutable !== false, headers: options.headers }
552
+ return {
553
+ root,
554
+ prefix,
555
+ immutable: options.immutable !== false,
556
+ headers: options.headers,
557
+ denyDotfiles: options.dotfiles !== "allow",
558
+ }
460
559
  }
461
560
 
462
561
  /**
@@ -485,9 +584,21 @@ function staticMatch(
485
584
  // Reject traversal in the REQUEST form before it ever reaches the filesystem path join: a `..`
486
585
  // path segment (or a backslash Windows would treat as a separator) has no legitimate use in an
487
586
  // asset URL. Segment-precise on purpose - a filename merely CONTAINING `..` (`logo..png`) is legal.
488
- if (rel.split("/").includes("..") || rel.includes("\\")) {
587
+ // The same segment pass covers dotfiles: the check runs post-decode, so `%2E`-spelled dots are
588
+ // already plain `.` here. Denied dotfiles answer 404, not 403 - identical to a missing file, so
589
+ // probing can't distinguish "hidden" from "absent" (traversal keeps its 403: `..` is an attack
590
+ // shape, and there is nothing behind it to conceal).
591
+ const segments = rel.split("/")
592
+ if (segments.includes("..") || rel.includes("\\")) {
489
593
  return { reject: new Response("Forbidden", { status: 403 }) }
490
594
  }
595
+ if (state.denyDotfiles) {
596
+ for (const segment of segments) {
597
+ if (segment.charCodeAt(0) === 46 /* '.' */) {
598
+ return { reject: new Response("Not Found", { status: 404 }) }
599
+ }
600
+ }
601
+ }
491
602
  const file = resolve(state.root, rel)
492
603
  // Confine to the served directory - the resolved path must sit at or below root.
493
604
  const contained = relative(state.root, file)
@@ -585,11 +696,12 @@ export function serve(app: FetchHandler, options: ServeOptions): Promise<NodeSer
585
696
  let inFlight = 0
586
697
  let closed = false
587
698
  const protocol = protocolResolver(options.protocol)
699
+ const hostPolicy = hostPolicyOf(options)
588
700
  const staticState = options.static !== undefined ? staticStateOf(options.static) : undefined
589
701
  const server = createServer((nodeReq, nodeRes) => {
590
702
  inFlight += 1
591
703
  try {
592
- const handled = handle(app, nodeReq, nodeRes, protocol, staticState)
704
+ const handled = handle(app, nodeReq, nodeRes, protocol, staticState, hostPolicy)
593
705
  if (handled instanceof Promise) {
594
706
  void handled.finally(() => {
595
707
  inFlight -= 1
@@ -610,10 +722,18 @@ export function serve(app: FetchHandler, options: ServeOptions): Promise<NodeSer
610
722
  if (resolveWs !== undefined) {
611
723
  let wssPromise: Promise<WsServer | undefined> | undefined
612
724
  server.on("upgrade", (nodeReq, socket, head) => {
613
- void handleUpgrade(resolveWs, protocol, nodeReq, socket, head, () => {
614
- wssPromise ??= loadWsServer()
615
- return wssPromise
616
- })
725
+ void handleUpgrade(
726
+ resolveWs,
727
+ protocol,
728
+ hostPolicy,
729
+ nodeReq,
730
+ socket,
731
+ head,
732
+ (maxPayloadBytes) => {
733
+ wssPromise ??= loadWsServer(maxPayloadBytes)
734
+ return wssPromise
735
+ },
736
+ )
617
737
  })
618
738
  }
619
739
 
@@ -663,7 +783,13 @@ function handle(
663
783
  nodeRes: ServerResponse,
664
784
  getProtocol: RequestProtocolResolver,
665
785
  staticState: StaticState | undefined,
786
+ hostPolicy: HostPolicy,
666
787
  ): void | Promise<void> {
788
+ const host = requestHost(nodeReq, hostPolicy)
789
+ if (host === undefined) {
790
+ writeBadRequest(nodeRes)
791
+ return
792
+ }
667
793
  let protocol: RequestProtocol
668
794
  try {
669
795
  protocol = getProtocol(nodeReq)
@@ -709,7 +835,7 @@ function handle(
709
835
  try {
710
836
  const outcome = resolveNodeSource.call(
711
837
  app,
712
- toNodeRequestSource(nodeReq, protocol),
838
+ toNodeRequestSource(nodeReq, protocol, host),
713
839
  platform,
714
840
  NODE_OUTCOME_RUNTIME,
715
841
  )
@@ -725,7 +851,7 @@ function handle(
725
851
  }
726
852
  }
727
853
 
728
- const request = toWebRequest(nodeReq, protocol)
854
+ const request = toWebRequest(nodeReq, protocol, host)
729
855
  const resolveNode = (app as Partial<NodeFastHandler>).resolveNode
730
856
  if (typeof resolveNode === "function") {
731
857
  try {
@@ -778,6 +904,15 @@ function writeInternalError(nodeRes: ServerResponse): void {
778
904
  nodeRes.end(INTERNAL_ERROR_BODY)
779
905
  }
780
906
 
907
+ function writeBadRequest(nodeRes: ServerResponse): void {
908
+ const body = "Bad Request"
909
+ nodeRes.writeHead(400, {
910
+ "content-type": "text/plain; charset=utf-8",
911
+ "content-length": String(Buffer.byteLength(body)),
912
+ })
913
+ nodeRes.end(body)
914
+ }
915
+
781
916
  /** True when every header name in the record is already free of ASCII uppercase - the gate for
782
917
  * skipping the per-request lowercase normalization copy in {@link writeJsonOutcome}. */
783
918
  function allHeaderKeysLowercase(record: Readonly<Record<string, unknown>>): boolean {
@@ -802,7 +937,9 @@ function writeJsonOutcome(
802
937
  ): void {
803
938
  // The outcome's record is the request's own (`c.set.headers`, already mutated by any native
804
939
  // response hooks), and its writers - middleware twins and the framework's own additions - emit
805
- // lowercase names. When a key scan confirms that, the record is used as-is and the additions
940
+ // lowercase names. Confirmed either by core's mark (the native response walk already looked at
941
+ // these keys, so re-walking them here is the same pass twice) or, when the record never went
942
+ // through that walk, by the scan below. Either way the record is then used as-is and the additions
806
943
  // below mutate it in place; nothing reads it after the write. Only a mixed-case key (a user's
807
944
  // hand-set `X-Foo`) pays the normalization copy, keeping the wire byte-identical to undici's
808
945
  // `Headers` lowercasing on every other runtime.
@@ -816,7 +953,10 @@ function writeJsonOutcome(
816
953
  // this record key by key on every response (measured at over twice fastify's share of the same
817
954
  // frame on a bare route). A literal keeps it in fast mode.
818
955
  headers = {}
819
- } else if (allHeaderKeysLowercase(source)) {
956
+ } else if (
957
+ (source as Record<symbol, unknown>)[LOWERCASE_HEADER_KEYS] === true ||
958
+ allHeaderKeysLowercase(source)
959
+ ) {
820
960
  headers = source as Record<string, string | string[]>
821
961
  } else {
822
962
  headers = Object.create(null) as Record<string, string | string[]>
@@ -904,18 +1044,21 @@ function normalizeProtocol(value: string): RequestProtocol {
904
1044
  )
905
1045
  }
906
1046
 
907
- function toWebRequest(req: IncomingMessage, protocol: RequestProtocol): Request {
908
- const host = req.headers.host ?? "localhost"
1047
+ function toWebRequest(req: IncomingMessage, protocol: RequestProtocol, host: string): Request {
909
1048
  const url = `${protocol}://${host}${req.url ?? "/"}`
910
1049
  const method = req.method ?? "GET"
911
1050
  return makeWebRequest(req, method, url, headerRecordFromNode(req.headers))
912
1051
  }
913
1052
 
914
- function toNodeRequestSource(req: IncomingMessage, protocol: RequestProtocol): NodeRequestSource {
1053
+ function toNodeRequestSource(
1054
+ req: IncomingMessage,
1055
+ protocol: RequestProtocol,
1056
+ host: string,
1057
+ ): NodeRequestSource {
915
1058
  const method = req.method ?? "GET"
916
1059
  return method === "GET" || method === "HEAD"
917
- ? new LeanNodeGetSource(req, method, protocol)
918
- : new LazyNodeRequestSource(req, method, protocol)
1060
+ ? new LeanNodeGetSource(req, method, protocol, host)
1061
+ : new LazyNodeRequestSource(req, method, protocol, host)
919
1062
  }
920
1063
 
921
1064
  /**
@@ -961,16 +1104,18 @@ class LazyNodeRequestSource implements NodeRequestSource {
961
1104
  private urlValue: string | undefined
962
1105
  private readonly nodeReq: IncomingMessage
963
1106
  private readonly protocol: RequestProtocol
1107
+ private readonly host: string
964
1108
 
965
- constructor(nodeReq: IncomingMessage, method: string, protocol: RequestProtocol) {
1109
+ constructor(nodeReq: IncomingMessage, method: string, protocol: RequestProtocol, host: string) {
966
1110
  this.nodeReq = nodeReq
967
1111
  this.method = method
968
1112
  this.protocol = protocol
1113
+ this.host = host
969
1114
  }
970
1115
 
971
1116
  /** The absolute URL, built only when something reads it - routing uses `urlParts` instead. */
972
1117
  get url(): string {
973
- this.urlValue ??= `${this.protocol}://${this.nodeReq.headers.host ?? "localhost"}${this.nodeReq.url ?? "/"}`
1118
+ this.urlValue ??= `${this.protocol}://${this.host}${this.nodeReq.url ?? "/"}`
974
1119
  return this.urlValue
975
1120
  }
976
1121
 
@@ -1014,6 +1159,19 @@ class LazyNodeRequestSource implements NodeRequestSource {
1014
1159
  return this.readNodeBody().then((buffer) => JSON.parse(buffer.toString("utf8")) as unknown)
1015
1160
  }
1016
1161
 
1162
+ jsonWithByteLength(): Promise<{ readonly value: unknown; readonly byteLength: number }> {
1163
+ if (this.requestValue !== undefined) {
1164
+ return this.requestValue.arrayBuffer().then((buffer) => ({
1165
+ value: JSON.parse(Buffer.from(buffer).toString("utf8")) as unknown,
1166
+ byteLength: buffer.byteLength,
1167
+ }))
1168
+ }
1169
+ return this.readNodeBody().then((buffer) => ({
1170
+ value: JSON.parse(buffer.toString("utf8")) as unknown,
1171
+ byteLength: buffer.byteLength,
1172
+ }))
1173
+ }
1174
+
1017
1175
  get request(): Request {
1018
1176
  this.requestValue ??= new LazyWebRequest(
1019
1177
  this.method,
@@ -1103,16 +1261,18 @@ class LeanNodeGetSource implements NodeRequestSource {
1103
1261
  private urlValue: string | undefined
1104
1262
  private readonly nodeReq: IncomingMessage
1105
1263
  private readonly protocol: RequestProtocol
1264
+ private readonly host: string
1106
1265
 
1107
- constructor(nodeReq: IncomingMessage, method: string, protocol: RequestProtocol) {
1266
+ constructor(nodeReq: IncomingMessage, method: string, protocol: RequestProtocol, host: string) {
1108
1267
  this.nodeReq = nodeReq
1109
1268
  this.method = method
1110
1269
  this.protocol = protocol
1270
+ this.host = host
1111
1271
  }
1112
1272
 
1113
1273
  /** The absolute URL, built only when something reads it - routing uses `urlParts` instead. */
1114
1274
  get url(): string {
1115
- this.urlValue ??= `${this.protocol}://${this.nodeReq.headers.host ?? "localhost"}${this.nodeReq.url ?? "/"}`
1275
+ this.urlValue ??= `${this.protocol}://${this.host}${this.nodeReq.url ?? "/"}`
1116
1276
  return this.urlValue
1117
1277
  }
1118
1278
 
@@ -1385,21 +1545,27 @@ function nodeResponseBody(response: Response): string | Uint8Array | undefined {
1385
1545
  // --- WebSocket bridge: Node has no built-in WS server, so upgrades go through the OPTIONAL `ws`
1386
1546
  // package, lazy-imported on the first upgrade (non-WS apps never load it). ---
1387
1547
 
1388
- type WsServerCtor = new (options: { noServer: true }) => WsServer
1548
+ type WsServerCtor = new (options: { noServer: true; maxPayload?: number }) => WsServer
1389
1549
 
1390
1550
  /** A non-literal specifier so TS treats `import(...)` as `any` - `ws` is an optional peer with no
1391
1551
  * `@types/ws` dependency here (the surface is structurally typed via {@link WsServer}/{@link WsSocket}). */
1392
1552
  const WS_MODULE_SPECIFIER = "ws"
1393
1553
 
1394
1554
  /** Lazily build a noServer `ws` `WebSocketServer`, or `undefined` if `ws` isn't installed. */
1395
- async function loadWsServer(): Promise<WsServer | undefined> {
1555
+ async function loadWsServer(maxPayloadBytes?: number): Promise<WsServer | undefined> {
1396
1556
  try {
1397
1557
  const mod = (await import(WS_MODULE_SPECIFIER)) as {
1398
1558
  WebSocketServer?: WsServerCtor
1399
1559
  default?: { WebSocketServer?: WsServerCtor }
1400
1560
  }
1401
1561
  const Ctor = mod.WebSocketServer ?? mod.default?.WebSocketServer
1402
- return Ctor === undefined ? undefined : new Ctor({ noServer: true })
1562
+ return Ctor === undefined
1563
+ ? undefined
1564
+ : new Ctor(
1565
+ maxPayloadBytes === undefined
1566
+ ? { noServer: true }
1567
+ : { noServer: true, maxPayload: maxPayloadBytes },
1568
+ )
1403
1569
  } catch {
1404
1570
  return undefined // `ws` not installed - caller responds 501
1405
1571
  }
@@ -1420,14 +1586,20 @@ const WS_STATUS_TEXT: Readonly<Record<number, string>> = {
1420
1586
  async function handleUpgrade(
1421
1587
  resolveWs: (request: Request) => WsUpgradeOutcome | Promise<WsUpgradeOutcome>,
1422
1588
  getProtocol: RequestProtocolResolver,
1589
+ hostPolicy: HostPolicy,
1423
1590
  nodeReq: IncomingMessage,
1424
1591
  socket: Duplex,
1425
1592
  head: Buffer,
1426
- getWss: () => Promise<WsServer | undefined>,
1593
+ getWss: (maxPayloadBytes?: number) => Promise<WsServer | undefined>,
1427
1594
  ): Promise<void> {
1428
1595
  let outcome: WsUpgradeOutcome
1429
1596
  try {
1430
- outcome = await resolveWs(toWebRequest(nodeReq, getProtocol(nodeReq)))
1597
+ const host = requestHost(nodeReq, hostPolicy)
1598
+ if (host === undefined) {
1599
+ writeUpgradeRejection(socket, 400, "bad_request")
1600
+ return
1601
+ }
1602
+ outcome = await resolveWs(toWebRequest(nodeReq, getProtocol(nodeReq), host))
1431
1603
  } catch {
1432
1604
  writeUpgradeRejection(socket, 500, "internal_error")
1433
1605
  return
@@ -1440,7 +1612,7 @@ async function handleUpgrade(
1440
1612
  await writeRejectionResponse(socket, outcome.response)
1441
1613
  return
1442
1614
  }
1443
- const wss = await getWss()
1615
+ const wss = await getWss(outcome.maxPayloadBytes)
1444
1616
  if (wss === undefined) {
1445
1617
  writeUpgradeRejection(socket, 501, "websocket_unavailable") // `ws` not installed
1446
1618
  return