@nifrajs/core 5.5.1 → 5.7.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/CHANGELOG.md +246 -0
- package/README.md +5 -0
- package/dist/assurance.d.ts.map +1 -1
- package/dist/assurance.js.map +1 -1
- package/dist/binary.d.ts +15 -1
- package/dist/binary.d.ts.map +1 -1
- package/dist/binary.js +1 -0
- package/dist/binary.js.map +1 -1
- package/dist/edge-kit.d.ts +1 -0
- package/dist/edge-kit.d.ts.map +1 -1
- package/dist/edge-kit.js +1 -0
- package/dist/edge-kit.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/evidence.d.ts +4 -0
- package/dist/evidence.d.ts.map +1 -1
- package/dist/evidence.js +4 -0
- package/dist/evidence.js.map +1 -1
- package/dist/file-type.d.ts +30 -0
- package/dist/file-type.d.ts.map +1 -0
- package/dist/file-type.js +118 -0
- package/dist/file-type.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/hook-origins.d.ts +2 -0
- package/dist/internal/hook-origins.d.ts.map +1 -1
- package/dist/internal/hook-origins.js +12 -0
- package/dist/internal/hook-origins.js.map +1 -1
- package/dist/internal/route-program.d.ts +11 -0
- package/dist/internal/route-program.d.ts.map +1 -1
- package/dist/internal/route-program.js +133 -85
- package/dist/internal/route-program.js.map +1 -1
- package/dist/reflection.d.ts +19 -1
- package/dist/reflection.d.ts.map +1 -1
- package/dist/reflection.js +46 -7
- package/dist/reflection.js.map +1 -1
- package/dist/response-observer.d.ts +1 -0
- package/dist/response-observer.d.ts.map +1 -1
- package/dist/response-observer.js +1 -0
- package/dist/response-observer.js.map +1 -1
- package/dist/server/answer-step.d.ts +27 -0
- package/dist/server/answer-step.d.ts.map +1 -0
- package/dist/server/answer-step.js +33 -0
- package/dist/server/answer-step.js.map +1 -0
- package/dist/server/bare-error-lane.d.ts +4 -1
- package/dist/server/bare-error-lane.d.ts.map +1 -1
- package/dist/server/bare-error-lane.js +9 -3
- package/dist/server/bare-error-lane.js.map +1 -1
- package/dist/server/base64-answers.d.ts +5 -0
- package/dist/server/base64-answers.d.ts.map +1 -0
- package/dist/server/base64-answers.js +132 -0
- package/dist/server/base64-answers.js.map +1 -0
- package/dist/server/before-handler.d.ts +10 -0
- package/dist/server/before-handler.d.ts.map +1 -0
- package/dist/server/before-handler.js +12 -0
- package/dist/server/before-handler.js.map +1 -0
- package/dist/server/body-lane.d.ts.map +1 -1
- package/dist/server/body-lane.js +8 -2
- package/dist/server/body-lane.js.map +1 -1
- package/dist/server/body-parser.d.ts.map +1 -1
- package/dist/server/body-parser.js +2 -5
- package/dist/server/body-parser.js.map +1 -1
- package/dist/server/body.d.ts +24 -8
- package/dist/server/body.d.ts.map +1 -1
- package/dist/server/body.js +86 -33
- package/dist/server/body.js.map +1 -1
- package/dist/server/core-copies.d.ts.map +1 -1
- package/dist/server/core-copies.js +5 -2
- package/dist/server/core-copies.js.map +1 -1
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +6 -17
- package/dist/server/http.js.map +1 -1
- package/dist/server/install.d.ts +2 -0
- package/dist/server/install.d.ts.map +1 -1
- package/dist/server/install.js +2 -0
- package/dist/server/install.js.map +1 -1
- package/dist/server/json-response.d.ts +3 -0
- package/dist/server/json-response.d.ts.map +1 -0
- package/dist/server/json-response.js +14 -0
- package/dist/server/json-response.js.map +1 -0
- package/dist/server/json-text.d.ts +16 -0
- package/dist/server/json-text.d.ts.map +1 -0
- package/dist/server/json-text.js +34 -0
- package/dist/server/json-text.js.map +1 -0
- package/dist/server/multipart.d.ts +3 -0
- package/dist/server/multipart.d.ts.map +1 -1
- package/dist/server/multipart.js +226 -97
- package/dist/server/multipart.js.map +1 -1
- package/dist/server/node-outcome.d.ts +5 -0
- package/dist/server/node-outcome.d.ts.map +1 -1
- package/dist/server/node-outcome.js +3 -4
- package/dist/server/node-outcome.js.map +1 -1
- package/dist/server/proto-guard.d.ts.map +1 -1
- package/dist/server/proto-guard.js +39 -4
- package/dist/server/proto-guard.js.map +1 -1
- package/dist/server/query.d.ts.map +1 -1
- package/dist/server/query.js +8 -14
- package/dist/server/query.js.map +1 -1
- package/dist/server/repeated-prefix.d.ts +17 -0
- package/dist/server/repeated-prefix.d.ts.map +1 -0
- package/dist/server/repeated-prefix.js +17 -0
- package/dist/server/repeated-prefix.js.map +1 -0
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js +5 -5
- package/dist/server/request-context.js.map +1 -1
- package/dist/server/respond.d.ts +3 -4
- package/dist/server/respond.d.ts.map +1 -1
- package/dist/server/respond.js +45 -37
- package/dist/server/respond.js.map +1 -1
- package/dist/server/response-contract-lane.d.ts +12 -2
- package/dist/server/response-contract-lane.d.ts.map +1 -1
- package/dist/server/response-contract-lane.js +137 -9
- package/dist/server/response-contract-lane.js.map +1 -1
- package/dist/server/route-template.d.ts +10 -0
- package/dist/server/route-template.d.ts.map +1 -0
- package/dist/server/route-template.js +21 -0
- package/dist/server/route-template.js.map +1 -0
- package/dist/server/runtime-core.d.ts +7 -0
- package/dist/server/runtime-core.d.ts.map +1 -1
- package/dist/server/runtime-core.js +10 -2
- package/dist/server/runtime-core.js.map +1 -1
- package/dist/server/server-types.d.ts +17 -8
- package/dist/server/server-types.d.ts.map +1 -1
- package/dist/server/server.d.ts +27 -12
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +326 -108
- package/dist/server/server.js.map +1 -1
- package/dist/server/sse.d.ts +1 -1
- package/dist/server/sse.d.ts.map +1 -1
- package/dist/server/sse.js +7 -5
- package/dist/server/sse.js.map +1 -1
- package/dist/server/text-slots.d.ts +8 -0
- package/dist/server/text-slots.d.ts.map +1 -0
- package/dist/server/text-slots.js +19 -0
- package/dist/server/text-slots.js.map +1 -0
- package/dist/server/webhook.d.ts +1 -1
- package/dist/server/webhook.d.ts.map +1 -1
- package/dist/server/webhook.js +24 -19
- package/dist/server/webhook.js.map +1 -1
- package/dist/server/websocket.d.ts +18 -3
- package/dist/server/websocket.d.ts.map +1 -1
- package/dist/server/websocket.js +45 -5
- package/dist/server/websocket.js.map +1 -1
- package/dist/server/ws-bun.d.ts.map +1 -1
- package/dist/server/ws-bun.js +7 -4
- package/dist/server/ws-bun.js.map +1 -1
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -1
- package/dist/single-copy.d.ts +5 -0
- package/dist/single-copy.d.ts.map +1 -1
- package/dist/single-copy.js +26 -17
- package/dist/single-copy.js.map +1 -1
- package/dist/tool-cli.d.ts +64 -0
- package/dist/tool-cli.d.ts.map +1 -0
- package/dist/tool-cli.js +495 -0
- package/dist/tool-cli.js.map +1 -0
- package/dist/transport-codec.d.ts.map +1 -1
- package/dist/transport-codec.js +2 -1
- package/dist/transport-codec.js.map +1 -1
- package/package.json +11 -1
- package/src/assurance.ts +1 -0
- package/src/binary.ts +17 -0
- package/src/edge-kit.ts +1 -0
- package/src/errors.ts +1 -0
- package/src/evidence.ts +8 -0
- package/src/file-type.ts +130 -0
- package/src/index.ts +3 -1
- package/src/internal/hook-origins.ts +10 -0
- package/src/internal/route-program.ts +261 -93
- package/src/reflection.ts +71 -7
- package/src/response-observer.ts +6 -0
- package/src/server/answer-step.ts +68 -0
- package/src/server/bare-error-lane.ts +9 -4
- package/src/server/base64-answers.ts +138 -0
- package/src/server/before-handler.ts +14 -0
- package/src/server/body-lane.ts +19 -9
- package/src/server/body-parser.ts +1 -5
- package/src/server/body.ts +96 -36
- package/src/server/core-copies.ts +5 -2
- package/src/server/http.ts +6 -15
- package/src/server/install.ts +3 -0
- package/src/server/json-response.ts +13 -0
- package/src/server/json-text.ts +34 -0
- package/src/server/multipart.ts +232 -100
- package/src/server/node-outcome.ts +4 -5
- package/src/server/proto-guard.ts +39 -4
- package/src/server/query.ts +7 -13
- package/src/server/repeated-prefix.ts +25 -0
- package/src/server/request-context.ts +5 -5
- package/src/server/respond.ts +47 -30
- package/src/server/response-contract-lane.ts +132 -9
- package/src/server/route-template.ts +24 -0
- package/src/server/runtime-core.ts +12 -2
- package/src/server/server-types.ts +18 -6
- package/src/server/server.ts +361 -112
- package/src/server/sse.ts +8 -6
- package/src/server/text-slots.ts +21 -0
- package/src/server/webhook.ts +29 -24
- package/src/server/websocket.ts +57 -8
- package/src/server/ws-bun.ts +7 -3
- package/src/server.ts +2 -0
- package/src/single-copy.ts +31 -15
- package/src/tool-cli.ts +584 -0
- package/src/transport-codec.ts +3 -1
package/dist/server/respond.js
CHANGED
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
import { hasResidentBody, markResidentBody, residentBodiesRecorded } from "../mount.js";
|
|
7
7
|
import { NODE_BRIDGE_MARKER_KEYS } from "./bridge-markers.js";
|
|
8
8
|
import { plainError } from "./http.js";
|
|
9
|
-
import {
|
|
9
|
+
import { jsonResponse } from "./json-response.js";
|
|
10
|
+
import { jsonText } from "./json-text.js";
|
|
11
|
+
import { CONTEXT_REQUEST, CONTEXT_SET, EMPTY_RESPONSE_CONTROLS, isResponseResult, JSON_CONTENT_TYPE, plainRenderHeaders, } from "./runtime-core.js";
|
|
10
12
|
import { mergeStaticHeaderRecord } from "./static-headers.js";
|
|
11
13
|
/** Build the response headers init. The common path (no `c.set`) returns `undefined` so `Response`
|
|
12
14
|
* gets no `headers` at all. Cookies force a `Headers` object - multiple `Set-Cookie`s can't live in a
|
|
@@ -29,10 +31,9 @@ function plainRenderSet(plain, set) {
|
|
|
29
31
|
_cookies: set._cookies,
|
|
30
32
|
};
|
|
31
33
|
}
|
|
32
|
-
// Keep the fast JSON respond path byte-identical to `Response.json`
|
|
33
|
-
//
|
|
34
|
-
//
|
|
35
|
-
const JSON_CONTENT_TYPE = "application/json;charset=utf-8";
|
|
34
|
+
// Keep the fast JSON respond path byte-identical to `Response.json` (see `JSON_CONTENT_TYPE`). A
|
|
35
|
+
// shared `Headers` is safe to reuse across responses: the Response constructor copies
|
|
36
|
+
// `init.headers` into its own list.
|
|
36
37
|
const JSON_CT_HEADERS = new Headers({ "content-type": JSON_CONTENT_TYPE });
|
|
37
38
|
const JSON_INIT_200 = { status: 200, headers: JSON_CT_HEADERS };
|
|
38
39
|
/**
|
|
@@ -163,11 +164,11 @@ function denoResponseWithJsonBody(body, status, headers, defaultContentType = re
|
|
|
163
164
|
* boundary: Response.json supplies the same default content type, then the caller's headers override
|
|
164
165
|
* it exactly as `withJsonContentType` did.
|
|
165
166
|
*/
|
|
166
|
-
function jsonResponseWithOwnHeaders(result, status, headers) {
|
|
167
|
-
const response = status === 200 ?
|
|
167
|
+
function jsonResponseWithOwnHeaders(result, status, headers, unstamped) {
|
|
168
|
+
const response = jsonResponse(result, status === 200 ? undefined : { status });
|
|
168
169
|
for (const name of Object.keys(headers))
|
|
169
170
|
response.headers.set(name, headers[name]);
|
|
170
|
-
return withBody(response);
|
|
171
|
+
return withBody(response, unstamped);
|
|
171
172
|
}
|
|
172
173
|
// The framework-buffered-body marker shared with the Node adapter: a Response carrying it exposes
|
|
173
174
|
// its already-serialized bytes without draining. On the Web serving paths it exists ONLY when a
|
|
@@ -199,9 +200,9 @@ export function rememberRenderedResponse(response, hasBody) {
|
|
|
199
200
|
WRITABLE_BODY_RESPONSES.add(response);
|
|
200
201
|
return response;
|
|
201
202
|
}
|
|
202
|
-
/**
|
|
203
|
-
function withBody(response) {
|
|
204
|
-
return markResidentBody(response);
|
|
203
|
+
/** Record serialized bodies when response hooks or an in-process client can consume the mark. */
|
|
204
|
+
function withBody(response, unstamped = false) {
|
|
205
|
+
return unstamped && !residentBodiesRecorded ? response : markResidentBody(response);
|
|
205
206
|
}
|
|
206
207
|
const HEADER_MUTABILITY_PROBE = "x-nifra-header-probe";
|
|
207
208
|
/** Whether `headers` takes writes. A guarded `Headers` rejects the first one, so the probe changes
|
|
@@ -383,15 +384,21 @@ export function markTaggedResponse(response, body, owner) {
|
|
|
383
384
|
});
|
|
384
385
|
return response;
|
|
385
386
|
}
|
|
386
|
-
function tagged(response, body, tagResponseBody) {
|
|
387
|
-
withBody(response);
|
|
387
|
+
function tagged(response, body, tagResponseBody, unstamped = false) {
|
|
388
|
+
withBody(response, unstamped);
|
|
388
389
|
return tagResponseBody === false || tagResponseBody === undefined
|
|
389
390
|
? response
|
|
390
391
|
: markTaggedResponse(response, body, typeof tagResponseBody === "object" ? tagResponseBody : undefined);
|
|
391
392
|
}
|
|
392
|
-
/**
|
|
393
|
-
*
|
|
394
|
-
*
|
|
393
|
+
/** A plain 200 JSON response. On Bun and Deno the native `Response.json` beats a hand-inlined
|
|
394
|
+
* stringify + Response construction; on Node undici's is 18-26% slower than stringify into the
|
|
395
|
+
* prebuilt init. Both keep the exact body/content-type contract. */
|
|
396
|
+
function plainJsonResponse(result) {
|
|
397
|
+
// `undefined` from stringify (a `toJSON` returning nothing) keeps `Response.json`'s TypeError.
|
|
398
|
+
const body = IS_BUN || IS_DENO ? undefined : jsonText(result);
|
|
399
|
+
return body === undefined ? jsonResponse(result) : new Response(body, JSON_INIT_200);
|
|
400
|
+
}
|
|
401
|
+
/** Fused-lane respond when `c.set` is untouched; keep the generic fallback for non-JSON values. */
|
|
395
402
|
export function fusedRespondNoSet(result, tagResponseBody = false, statics, unstamped = false, request) {
|
|
396
403
|
// With no response hook registered, no code path ever asks whether this response takes writes in
|
|
397
404
|
// place, so recording it in the body WeakSet is dead work - `Response.json` alone is cheaper on Bun
|
|
@@ -409,7 +416,7 @@ export function fusedRespondNoSet(result, tagResponseBody = false, statics, unst
|
|
|
409
416
|
result !== null &&
|
|
410
417
|
!(result instanceof Response) &&
|
|
411
418
|
!isResponseResult(result)) {
|
|
412
|
-
const response =
|
|
419
|
+
const response = plainJsonResponse(result);
|
|
413
420
|
return residentBodiesRecorded ? markResidentBody(response) : response;
|
|
414
421
|
}
|
|
415
422
|
if (result !== undefined &&
|
|
@@ -423,7 +430,7 @@ export function fusedRespondNoSet(result, tagResponseBody = false, statics, unst
|
|
|
423
430
|
// Deno the tier's only saving here is the response walk itself; every other runtime keeps the
|
|
424
431
|
// one-call prebuilt init below.
|
|
425
432
|
if (statics !== undefined && IS_DENO && !tagResponseBody) {
|
|
426
|
-
const response =
|
|
433
|
+
const response = jsonResponse(result);
|
|
427
434
|
// Indexed for the same reason as `applyStaticDefaults`: pair destructuring is a second
|
|
428
435
|
// iterator walk per header.
|
|
429
436
|
for (let i = 0; i < statics.entries.length; i++) {
|
|
@@ -436,7 +443,7 @@ export function fusedRespondNoSet(result, tagResponseBody = false, statics, unst
|
|
|
436
443
|
// content-type, so this lane still constructs the response in one call - the whole point of
|
|
437
444
|
// declaring headers statically instead of writing them per response.
|
|
438
445
|
if (tagResponseBody || statics !== undefined) {
|
|
439
|
-
const body =
|
|
446
|
+
const body = jsonText(result);
|
|
440
447
|
// Each shape carries the content-type of the lane it stands in for: the framework's own for the
|
|
441
448
|
// tagging path this branch already owned, and `Response.json`'s for the construction below that
|
|
442
449
|
// the static tier replaces. They differ on Deno, and a declared header must not change one.
|
|
@@ -448,8 +455,8 @@ export function fusedRespondNoSet(result, tagResponseBody = false, statics, unst
|
|
|
448
455
|
: staticJsonResponse(body, 200, statics, responseJsonContentType(), statics.responseJsonInit200()), body, tagResponseBody);
|
|
449
456
|
}
|
|
450
457
|
return withBody(statics === undefined
|
|
451
|
-
?
|
|
452
|
-
:
|
|
458
|
+
? plainJsonResponse(result)
|
|
459
|
+
: jsonResponse(result, statics.responseJsonInit200()));
|
|
453
460
|
}
|
|
454
461
|
return toResponse(result, EMPTY_RESPONSE_CONTROLS, tagResponseBody, statics, request);
|
|
455
462
|
}
|
|
@@ -460,21 +467,22 @@ export function fusedRespond(result, ctx, tagResponseBody = false, statics, unst
|
|
|
460
467
|
const request = unstamped ? undefined : ctx[CONTEXT_REQUEST];
|
|
461
468
|
if (set === undefined)
|
|
462
469
|
return fusedRespondNoSet(result, tagResponseBody, statics, unstamped, request);
|
|
463
|
-
return toResponse(result, set, tagResponseBody, statics, request);
|
|
470
|
+
return toResponse(result, set, tagResponseBody, statics, request, unstamped);
|
|
464
471
|
}
|
|
465
472
|
/**
|
|
466
473
|
* Render a handler's result. `request` is the request being answered, given when response hooks will
|
|
467
474
|
* write next: a copy or body-less response built here is then recorded as that request's own, so the
|
|
468
475
|
* hooks write it in place instead of copying it again.
|
|
476
|
+
* `unstamped` is the caller's proof that no response hook follows; unknown callers keep the mark.
|
|
469
477
|
*/
|
|
470
|
-
export function toResponse(result, set, tagResponseBody = false, statics, request) {
|
|
478
|
+
export function toResponse(result, set, tagResponseBody = false, statics, request, unstamped = false) {
|
|
471
479
|
if (isResponseResult(result)) {
|
|
472
480
|
const plain = result.plain;
|
|
473
481
|
if (plain !== undefined) {
|
|
474
482
|
// Rendered as the value it is, on the branches below, rather than through `toResponse()`: the
|
|
475
483
|
// status and headers fold into a `set` and the body takes the ordinary JSON lane. One level
|
|
476
484
|
// only - a plain render's body is a user value, never another response carrier.
|
|
477
|
-
return toResponse(plain.body, plainRenderSet(plain, set), tagResponseBody, statics, request);
|
|
485
|
+
return toResponse(plain.body, plainRenderSet(plain, set), tagResponseBody, statics, request, unstamped);
|
|
478
486
|
}
|
|
479
487
|
// A buffered page is built from the body it reports, so the bytes its hooks see are the ones sent.
|
|
480
488
|
const owner = typeof tagResponseBody === "object" ? tagResponseBody : undefined;
|
|
@@ -493,7 +501,7 @@ export function toResponse(result, set, tagResponseBody = false, statics, reques
|
|
|
493
501
|
}
|
|
494
502
|
return withResidentText(withStatics(applySetToResponse(normalizeBodylessResponse(result, request), set, request), statics, request), result, typeof tagResponseBody === "object" ? tagResponseBody : undefined);
|
|
495
503
|
}
|
|
496
|
-
return renderValue(result, set, tagResponseBody, statics, request);
|
|
504
|
+
return renderValue(result, set, tagResponseBody, statics, request, unstamped);
|
|
497
505
|
}
|
|
498
506
|
/**
|
|
499
507
|
* Render a framework {@link ResponseResult} - a rejection such as a `413`, `415` or `422` - with no
|
|
@@ -509,7 +517,7 @@ export function renderResult(result) {
|
|
|
509
517
|
}
|
|
510
518
|
/** The JSON lane: a value that is neither a `Response` nor a response result, rendered with the
|
|
511
519
|
* request's status, headers and cookies. */
|
|
512
|
-
function renderValue(result, set, tagResponseBody, statics, request) {
|
|
520
|
+
function renderValue(result, set, tagResponseBody, statics, request, unstamped = false) {
|
|
513
521
|
// The static tier only changes WHICH prebuilt header shape the branches below reach for: the
|
|
514
522
|
// request's own headers are folded on top of the declared defaults once, here.
|
|
515
523
|
const own = headersInit(set);
|
|
@@ -533,14 +541,14 @@ function renderValue(result, set, tagResponseBody, statics, request) {
|
|
|
533
541
|
result !== undefined &&
|
|
534
542
|
typeof result === "object" &&
|
|
535
543
|
result !== null) {
|
|
536
|
-
return jsonResponseWithOwnHeaders(result, status, own);
|
|
544
|
+
return jsonResponseWithOwnHeaders(result, status, own, unstamped);
|
|
537
545
|
}
|
|
538
546
|
if (own === undefined && result !== undefined) {
|
|
539
547
|
// Fast respond (profiled ~50 ns/req faster on every plain-JSON return): `JSON.stringify` + a
|
|
540
548
|
// prebuilt init beats `Response.json`'s internal init handling. Output is byte-identical -
|
|
541
549
|
// same body bytes, same probed content-type. `undefined` from stringify (a function/symbol
|
|
542
550
|
// result) delegates to Response.json so its TypeError contract stays the single source.
|
|
543
|
-
const body =
|
|
551
|
+
const body = jsonText(result);
|
|
544
552
|
if (body !== undefined) {
|
|
545
553
|
const init = status === 200
|
|
546
554
|
? (statics?.jsonInit200 ?? JSON_INIT_200)
|
|
@@ -548,28 +556,28 @@ function renderValue(result, set, tagResponseBody, statics, request) {
|
|
|
548
556
|
return tagged(statics === undefined
|
|
549
557
|
? // lgtm [js/stack-trace-exposure] the serialized body is not a caught error stack.
|
|
550
558
|
new Response(body, init)
|
|
551
|
-
: staticJsonResponse(body, status, statics, JSON_CONTENT_TYPE, init), body, tagResponseBody);
|
|
559
|
+
: staticJsonResponse(body, status, statics, JSON_CONTENT_TYPE, init), body, tagResponseBody, unstamped);
|
|
552
560
|
}
|
|
553
561
|
}
|
|
554
562
|
const init = headers === undefined ? { status } : { status, headers };
|
|
555
563
|
if (result === undefined)
|
|
556
564
|
return ownedBy(new Response(null, init), request);
|
|
557
565
|
if (tagResponseBody) {
|
|
558
|
-
const body =
|
|
566
|
+
const body = jsonText(result);
|
|
559
567
|
if (body !== undefined) {
|
|
560
568
|
const response = IS_DENO && !(headers instanceof Headers)
|
|
561
|
-
? denoResponseWithJsonBody(body, status, headers,
|
|
569
|
+
? denoResponseWithJsonBody(body, status, headers, JSON_CONTENT_TYPE)
|
|
562
570
|
: // lgtm [js/stack-trace-exposure] the serialized body is not a caught error stack.
|
|
563
571
|
new Response(body, { status, headers: withJsonContentType(headers) });
|
|
564
572
|
return tagged(response, body, typeof tagResponseBody === "object" ? tagResponseBody : undefined);
|
|
565
573
|
}
|
|
566
574
|
}
|
|
567
575
|
if (IS_DENO && headers !== undefined && !(headers instanceof Headers)) {
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
576
|
+
// Deno's own `Response.json` then header writes measured ~10% under stringify, construction and
|
|
577
|
+
// the same writes plus a content-type one; a declared content-type still overrides the default.
|
|
578
|
+
return jsonResponseWithOwnHeaders(result, status, headers, unstamped);
|
|
571
579
|
}
|
|
572
|
-
return withBody(
|
|
580
|
+
return withBody(jsonResponse(result, init), unstamped);
|
|
573
581
|
}
|
|
574
582
|
// Add a JSON content-type without pre-building a `Headers` instance just to check-and-set one key:
|
|
575
583
|
// `new Headers(record)` measured ~8us/call on V8 (Deno) for a handful of header entries - it's a
|
|
@@ -583,12 +591,12 @@ function withJsonContentType(headers) {
|
|
|
583
591
|
return JSON_CT_HEADERS;
|
|
584
592
|
if (headers instanceof Headers) {
|
|
585
593
|
if (!headers.has("content-type"))
|
|
586
|
-
headers.set("content-type",
|
|
594
|
+
headers.set("content-type", JSON_CONTENT_TYPE);
|
|
587
595
|
return headers;
|
|
588
596
|
}
|
|
589
597
|
return Object.hasOwn(headers, "content-type")
|
|
590
598
|
? headers
|
|
591
|
-
: { ...headers, "content-type":
|
|
599
|
+
: { ...headers, "content-type": JSON_CONTENT_TYPE };
|
|
592
600
|
}
|
|
593
601
|
/** Headers that describe a Response's body or its framing: a `c.set` value for one describes a body
|
|
594
602
|
* the handler did not return. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"respond.js","sourceRoot":"","sources":["../../src/server/respond.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"respond.js","sourceRoot":"","sources":["../../src/server/respond.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,13 +32,23 @@
|
|
|
32
32
|
* carries its JSON Schema as `jsonSchema` (every `t` schema does) CAN list its declared keys, so for
|
|
33
33
|
* those the payload is projected onto the declared shape before it is validated.
|
|
34
34
|
*
|
|
35
|
+
* ## What is judged is what is written
|
|
36
|
+
*
|
|
37
|
+
* `JSON.stringify` writes what a `toJSON` hook returns, not the fields a validator reads off the
|
|
38
|
+
* object. So a value's hooks are applied first, as the serializer would, and that result is validated
|
|
39
|
+
* and sent: a class whose `toJSON` adds a private field fails a closed schema instead of passing on its
|
|
40
|
+
* public ones. `strip` keeps the declared fields of what the hook writes, so a hook that writes `id`
|
|
41
|
+
* from private state keeps it. A `Date` is the exception; it stays a `Date` for a date schema and is
|
|
42
|
+
* written as its ISO string.
|
|
43
|
+
*
|
|
35
44
|
* ## What enforcement costs
|
|
36
45
|
*
|
|
37
46
|
* Less than it looks like it should. With a compiled validator (`@nifrajs/schema`'s `t` compiles at
|
|
38
47
|
* construction; zod/valibot equivalents are similarly cheap), the check itself measures in the
|
|
39
48
|
* ~100ns-per-response range - on a realistic middleware-carrying route, enforce mode benchmarks
|
|
40
|
-
* within measurement noise of the same route with no contract at all, on Bun and Node alike.
|
|
41
|
-
*
|
|
49
|
+
* within measurement noise of the same route with no contract at all, on Bun and Node alike. Looking
|
|
50
|
+
* for `toJSON` hooks visits every object in the payload, about 13 ns each, so a 50-row list pays near
|
|
51
|
+
* 0.7 us. The other cost is structural: a contracted route cannot take the bare-route fused lane, because
|
|
42
52
|
* the check needs the handler's VALUE before it becomes bytes. A route with any middleware, derive,
|
|
43
53
|
* or lifecycle hook has already left that lane, so for the routes that look like production the
|
|
44
54
|
* contract is effectively free - declare it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-contract-lane.d.ts","sourceRoot":"","sources":["../../src/server/response-contract-lane.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"response-contract-lane.d.ts","sourceRoot":"","sources":["../../src/server/response-contract-lane.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAA;AAG9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAIjD;;;;;;;;GAQG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAAA;AAErD,MAAM,WAAW,uBAAuB;IACtC;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;IACnC;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAA;CAC7D;AAED,iGAAiG;AACjG,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,UAAU,CAAA;IAChD,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,gGAAgG;IAChG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB;yFACqF;IACrF,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,4FAA4F;AAC5F,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAA;CAC7D;AAED,uFAAuF;AACvF,MAAM,MAAM,uBAAuB;AACjC,yGAAyG;AACvG;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE;AAClD;wGACwG;GACtG;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACpC;AACH,kGAAkG;GAChG;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAiY5D;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,CAAC,EAAE,uBAAuB,GAChC,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAE5D;AAiBD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,0BAA0B,EACtC,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,SAAS,CAAC,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,EACtC,OAAO,CAAC,EAAE,uBAAuB,GAChC,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAQ5D;AAgHD;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAA;IACnC,KAAK,CACH,UAAU,EAAE,0BAA0B,EACtC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;QACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;QACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAC5B,GACA,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;CAC9D;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,GAAE,oBAA6B,EACnC,OAAO,GAAE,uBAA4B,GACpC,cAAc,CAmGhB"}
|
|
@@ -32,19 +32,30 @@
|
|
|
32
32
|
* carries its JSON Schema as `jsonSchema` (every `t` schema does) CAN list its declared keys, so for
|
|
33
33
|
* those the payload is projected onto the declared shape before it is validated.
|
|
34
34
|
*
|
|
35
|
+
* ## What is judged is what is written
|
|
36
|
+
*
|
|
37
|
+
* `JSON.stringify` writes what a `toJSON` hook returns, not the fields a validator reads off the
|
|
38
|
+
* object. So a value's hooks are applied first, as the serializer would, and that result is validated
|
|
39
|
+
* and sent: a class whose `toJSON` adds a private field fails a closed schema instead of passing on its
|
|
40
|
+
* public ones. `strip` keeps the declared fields of what the hook writes, so a hook that writes `id`
|
|
41
|
+
* from private state keeps it. A `Date` is the exception; it stays a `Date` for a date schema and is
|
|
42
|
+
* written as its ISO string.
|
|
43
|
+
*
|
|
35
44
|
* ## What enforcement costs
|
|
36
45
|
*
|
|
37
46
|
* Less than it looks like it should. With a compiled validator (`@nifrajs/schema`'s `t` compiles at
|
|
38
47
|
* construction; zod/valibot equivalents are similarly cheap), the check itself measures in the
|
|
39
48
|
* ~100ns-per-response range - on a realistic middleware-carrying route, enforce mode benchmarks
|
|
40
|
-
* within measurement noise of the same route with no contract at all, on Bun and Node alike.
|
|
41
|
-
*
|
|
49
|
+
* within measurement noise of the same route with no contract at all, on Bun and Node alike. Looking
|
|
50
|
+
* for `toJSON` hooks visits every object in the payload, about 13 ns each, so a 50-row list pays near
|
|
51
|
+
* 0.7 us. The other cost is structural: a contracted route cannot take the bare-route fused lane, because
|
|
42
52
|
* the check needs the handler's VALUE before it becomes bytes. A route with any middleware, derive,
|
|
43
53
|
* or lifecycle hook has already left that lane, so for the routes that look like production the
|
|
44
54
|
* contract is effectively free - declare it.
|
|
45
55
|
*/
|
|
46
56
|
import { formatStandardIssues, } from "../schema/standard.js";
|
|
47
57
|
import { INSTALL_RESPONSE_CONTRACT } from "./install.js";
|
|
58
|
+
import { jsonText } from "./json-text.js";
|
|
48
59
|
import { isResponseResult, status } from "./runtime-core.js";
|
|
49
60
|
const isPlainObject = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
50
61
|
const projectors = new WeakMap();
|
|
@@ -77,7 +88,14 @@ function compileProjector(node) {
|
|
|
77
88
|
const item = Array.isArray(items) ? undefined : compileProjector(items);
|
|
78
89
|
return item === undefined
|
|
79
90
|
? undefined
|
|
80
|
-
: (value) =>
|
|
91
|
+
: (value) => {
|
|
92
|
+
if (!Array.isArray(value))
|
|
93
|
+
return value;
|
|
94
|
+
const out = [];
|
|
95
|
+
for (let i = 0; i < value.length; i++)
|
|
96
|
+
out.push(item(writtenAt(value[i], i)));
|
|
97
|
+
return out;
|
|
98
|
+
};
|
|
81
99
|
}
|
|
82
100
|
if (type !== "object")
|
|
83
101
|
return undefined;
|
|
@@ -112,7 +130,7 @@ function compileProjector(node) {
|
|
|
112
130
|
if (!hasField(value, key))
|
|
113
131
|
continue;
|
|
114
132
|
const projector = nested.get(key);
|
|
115
|
-
define(out, key, projector === undefined ? value[key] : projector(value[key]));
|
|
133
|
+
define(out, key, projector === undefined ? value[key] : projector(writtenAt(value[key], key)));
|
|
116
134
|
}
|
|
117
135
|
if (patterns.length > 0)
|
|
118
136
|
projectPatternKeys(value, out, declared, patterns, closed);
|
|
@@ -261,7 +279,7 @@ function projectPatternKeys(value, out, declared, patterns, closed) {
|
|
|
261
279
|
if (matches === 0)
|
|
262
280
|
continue;
|
|
263
281
|
if (matches === 1 && projector !== undefined)
|
|
264
|
-
define(out, key, projector(value[key]));
|
|
282
|
+
define(out, key, projector(writtenAt(value[key], key)));
|
|
265
283
|
else if (closed)
|
|
266
284
|
define(out, key, value[key]);
|
|
267
285
|
}
|
|
@@ -273,6 +291,106 @@ function define(out, key, value) {
|
|
|
273
291
|
else
|
|
274
292
|
out[key] = value;
|
|
275
293
|
}
|
|
294
|
+
const DATE_TO_JSON = Date.prototype.toJSON;
|
|
295
|
+
// Deeper than this, the copying walk takes over with its own cycle check.
|
|
296
|
+
const MAX_HOOK_SCAN_DEPTH = 64;
|
|
297
|
+
/** Whether `value` holds a `toJSON` hook other than a `Date`'s. Allocates nothing: most payloads
|
|
298
|
+
* have none, and this is the price every contracted response pays. */
|
|
299
|
+
function hasHook(value, depth) {
|
|
300
|
+
if (depth > MAX_HOOK_SCAN_DEPTH)
|
|
301
|
+
return true;
|
|
302
|
+
const hook = Reflect.get(value, "toJSON");
|
|
303
|
+
if (typeof hook === "function")
|
|
304
|
+
return !(hook === DATE_TO_JSON && value instanceof Date);
|
|
305
|
+
if (Array.isArray(value)) {
|
|
306
|
+
for (let i = 0; i < value.length; i++) {
|
|
307
|
+
const item = value[i];
|
|
308
|
+
if (typeof item === "object" && item !== null && hasHook(item, depth + 1))
|
|
309
|
+
return true;
|
|
310
|
+
}
|
|
311
|
+
return false;
|
|
312
|
+
}
|
|
313
|
+
// Inherited enumerable keys are scanned too; that only ever sends a value to the copying walk.
|
|
314
|
+
for (const key in value) {
|
|
315
|
+
// biome-ignore lint/plugin/requireSafetyCommentForTypeAssertion: `key` was enumerated from `value`; `Reflect.get` here halves the speed of this for-in.
|
|
316
|
+
const field = value[key];
|
|
317
|
+
if (typeof field === "object" && field !== null && hasHook(field, depth + 1))
|
|
318
|
+
return true;
|
|
319
|
+
}
|
|
320
|
+
return false;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* What `JSON.stringify` writes for `value`: every `toJSON` hook applied as the serializer applies it,
|
|
324
|
+
* so the contract judges the bytes that go out rather than fields a hook then replaces. Copies only the
|
|
325
|
+
* containers above a hook. A `Date` keeps its object, since its own hook writes nothing but the ISO
|
|
326
|
+
* string a date schema declares.
|
|
327
|
+
*/
|
|
328
|
+
const wireValueOf = (value) => typeof value === "object" && value !== null && hasHook(value, 0)
|
|
329
|
+
? wireValue(value, "", [])
|
|
330
|
+
: value;
|
|
331
|
+
const wireValue = (value, key, path) => wireChildren(writtenAt(value, key), path);
|
|
332
|
+
/** `value` as the serializer takes it under `key`: its own hook applied, its fields still as they are. */
|
|
333
|
+
function writtenAt(value, key) {
|
|
334
|
+
if (typeof value !== "object" || value === null)
|
|
335
|
+
return value;
|
|
336
|
+
const hook = Reflect.get(value, "toJSON");
|
|
337
|
+
if (typeof hook !== "function" || (hook === DATE_TO_JSON && value instanceof Date))
|
|
338
|
+
return value;
|
|
339
|
+
return fieldsOf(Reflect.apply(hook, value, [String(key)]));
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* The serializer calls one hook per value, so a hook's result that has a hook of its own is written
|
|
343
|
+
* by its fields. Copying them out keeps that second hook from running when the checked value is sent.
|
|
344
|
+
*/
|
|
345
|
+
function fieldsOf(value) {
|
|
346
|
+
if (typeof value !== "object" || value === null)
|
|
347
|
+
return value;
|
|
348
|
+
if (typeof Reflect.get(value, "toJSON") !== "function")
|
|
349
|
+
return value;
|
|
350
|
+
if (Array.isArray(value))
|
|
351
|
+
return Array.from({ length: value.length }, (_, i) => value[i]);
|
|
352
|
+
const fields = {};
|
|
353
|
+
for (const name of Object.keys(value))
|
|
354
|
+
if (name !== "toJSON")
|
|
355
|
+
define(fields, name, Reflect.get(value, name));
|
|
356
|
+
return fields;
|
|
357
|
+
}
|
|
358
|
+
function wireChildren(value, path) {
|
|
359
|
+
// A cycle is left as it is for `JSON.stringify` to refuse.
|
|
360
|
+
if (typeof value !== "object" || value === null || path.includes(value))
|
|
361
|
+
return value;
|
|
362
|
+
path.push(value);
|
|
363
|
+
if (Array.isArray(value)) {
|
|
364
|
+
let items;
|
|
365
|
+
for (let i = 0; i < value.length; i++) {
|
|
366
|
+
const item = value[i];
|
|
367
|
+
const written = wireValue(item, i, path);
|
|
368
|
+
if (written !== item)
|
|
369
|
+
items ??= value.slice(0, i);
|
|
370
|
+
if (items !== undefined)
|
|
371
|
+
items[i] = written;
|
|
372
|
+
}
|
|
373
|
+
path.pop();
|
|
374
|
+
return items ?? value;
|
|
375
|
+
}
|
|
376
|
+
const keys = Object.keys(value);
|
|
377
|
+
let out;
|
|
378
|
+
let index = 0;
|
|
379
|
+
for (const name of keys) {
|
|
380
|
+
const field = Reflect.get(value, name);
|
|
381
|
+
const written = wireValue(field, name, path);
|
|
382
|
+
if (written !== field && out === undefined) {
|
|
383
|
+
out = {};
|
|
384
|
+
for (const earlier of keys.slice(0, index))
|
|
385
|
+
define(out, earlier, Reflect.get(value, earlier));
|
|
386
|
+
}
|
|
387
|
+
if (out !== undefined)
|
|
388
|
+
define(out, name, written);
|
|
389
|
+
index++;
|
|
390
|
+
}
|
|
391
|
+
path.pop();
|
|
392
|
+
return out ?? value;
|
|
393
|
+
}
|
|
276
394
|
const MAX_STRIPPED_NAMES = 20;
|
|
277
395
|
const MAX_NAME_LENGTH = 64;
|
|
278
396
|
const MAX_REPORTED_SETS = 32;
|
|
@@ -346,7 +464,7 @@ const schemaFor = (definition, code) => code >= 200 && code < 300 ? definition.r
|
|
|
346
464
|
function reserialize(reply, value) {
|
|
347
465
|
const headers = new Headers(reply.headers);
|
|
348
466
|
headers.delete("content-length");
|
|
349
|
-
return new Response(
|
|
467
|
+
return new Response(jsonText(value), {
|
|
350
468
|
status: reply.status,
|
|
351
469
|
statusText: reply.statusText,
|
|
352
470
|
headers,
|
|
@@ -393,10 +511,20 @@ function checkContract(definition, result, mode, jsonReply, policy) {
|
|
|
393
511
|
* `status(...)` result or reply, never just its body. */
|
|
394
512
|
function validateContract(schema, payload, served, mode, policy, replace) {
|
|
395
513
|
const project = policy.strip ? projectorOf(schema) : undefined;
|
|
396
|
-
|
|
514
|
+
// Naming what was stripped compares against everything the payload writes, so it walks it whole.
|
|
515
|
+
const before = project === undefined || policy.report !== undefined || mode === "warn"
|
|
516
|
+
? wireValueOf(payload)
|
|
517
|
+
: payload;
|
|
518
|
+
// The projection applies the hook of each value it descends into and reads only declared fields,
|
|
519
|
+
// so a quiet strip never enumerates the payload's own keys. What it copies whole is walked after.
|
|
520
|
+
const sent = project === undefined ? before : wireValueOf(project(writtenAt(before, "")));
|
|
521
|
+
const settled = schema["~standard"].validate(sent);
|
|
522
|
+
// When hooks wrote the payload, `warn` sends what they wrote here rather than calling them again,
|
|
523
|
+
// so a hook that answers differently on a second call cannot send what was not judged.
|
|
524
|
+
const shown = mode === "warn" && before !== payload ? replace(before) : served;
|
|
397
525
|
return settled instanceof Promise
|
|
398
|
-
? settled.then((r) => interpret(r,
|
|
399
|
-
: interpret(settled,
|
|
526
|
+
? settled.then((r) => interpret(r, before, shown, mode, replace, policy.report))
|
|
527
|
+
: interpret(settled, before, shown, mode, replace, policy.report);
|
|
400
528
|
}
|
|
401
529
|
function interpret(settled, payload, served, mode, replace, report) {
|
|
402
530
|
if (settled.issues !== undefined) {
|