@nifrajs/core 4.0.2 → 5.1.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 +6 -2
- package/dist/assurance.d.ts +86 -6
- package/dist/assurance.d.ts.map +1 -1
- package/dist/assurance.js +186 -95
- package/dist/assurance.js.map +1 -1
- package/dist/capabilities.d.ts +8 -0
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +53 -1
- package/dist/capabilities.js.map +1 -1
- package/dist/durable-effect.js +1 -1
- package/dist/durable-effect.js.map +1 -1
- package/dist/durable-saga.d.ts +6 -0
- package/dist/durable-saga.d.ts.map +1 -1
- package/dist/durable-saga.js +83 -10
- package/dist/durable-saga.js.map +1 -1
- package/dist/edge-kit.d.ts +8 -3
- package/dist/edge-kit.d.ts.map +1 -1
- package/dist/edge-kit.js +7 -2
- package/dist/edge-kit.js.map +1 -1
- package/dist/effect-scope.d.ts.map +1 -1
- package/dist/effect-scope.js +16 -5
- package/dist/effect-scope.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 +2 -0
- package/dist/evidence.d.ts.map +1 -1
- package/dist/evidence.js +9 -1
- package/dist/evidence.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/internal/durable-shared.d.ts +1 -2
- package/dist/internal/durable-shared.d.ts.map +1 -1
- package/dist/internal/durable-shared.js +25 -44
- package/dist/internal/durable-shared.js.map +1 -1
- package/dist/internal/durable-types.d.ts +3 -0
- package/dist/internal/durable-types.d.ts.map +1 -1
- package/dist/internal/hook-origins.d.ts +67 -0
- package/dist/internal/hook-origins.d.ts.map +1 -0
- package/dist/internal/hook-origins.js +86 -0
- package/dist/internal/hook-origins.js.map +1 -0
- package/dist/internal/route-assurance.d.ts +6 -3
- package/dist/internal/route-assurance.d.ts.map +1 -1
- package/dist/internal/route-assurance.js +29 -14
- package/dist/internal/route-assurance.js.map +1 -1
- package/dist/internal/route-compiler.d.ts +9 -0
- package/dist/internal/route-compiler.d.ts.map +1 -1
- package/dist/internal/route-compiler.js +95 -13
- package/dist/internal/route-compiler.js.map +1 -1
- package/dist/internal/route-program.d.ts +1 -1
- package/dist/internal/route-program.d.ts.map +1 -1
- package/dist/internal/route-program.js +59 -16
- package/dist/internal/route-program.js.map +1 -1
- package/dist/internal/same-origin.d.ts +11 -1
- package/dist/internal/same-origin.d.ts.map +1 -1
- package/dist/internal/same-origin.js +8 -0
- package/dist/internal/same-origin.js.map +1 -1
- package/dist/reconciliation-worker.d.ts.map +1 -1
- package/dist/reconciliation-worker.js +12 -2
- package/dist/reconciliation-worker.js.map +1 -1
- package/dist/reflection.d.ts +53 -2
- package/dist/reflection.d.ts.map +1 -1
- package/dist/reflection.js +352 -5
- package/dist/reflection.js.map +1 -1
- package/dist/router/pattern.d.ts +1 -1
- package/dist/router/pattern.d.ts.map +1 -1
- package/dist/router/pattern.js +6 -3
- package/dist/router/pattern.js.map +1 -1
- package/dist/security/baseline.d.ts +3 -0
- package/dist/security/baseline.d.ts.map +1 -1
- package/dist/security/baseline.js +9 -5
- package/dist/security/baseline.js.map +1 -1
- package/dist/server/auth.d.ts +32 -3
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +23 -0
- package/dist/server/auth.js.map +1 -1
- package/dist/server/body-lane.d.ts +8 -2
- package/dist/server/body-lane.d.ts.map +1 -1
- package/dist/server/body-lane.js +27 -2
- package/dist/server/body-lane.js.map +1 -1
- package/dist/server/body.d.ts +7 -0
- package/dist/server/body.d.ts.map +1 -1
- package/dist/server/body.js +34 -1
- package/dist/server/body.js.map +1 -1
- package/dist/server/client-ip.d.ts +3 -0
- package/dist/server/client-ip.d.ts.map +1 -1
- package/dist/server/client-ip.js +6 -5
- package/dist/server/client-ip.js.map +1 -1
- package/dist/server/context.d.ts +2 -1
- package/dist/server/context.d.ts.map +1 -1
- package/dist/server/cookies.d.ts.map +1 -1
- package/dist/server/cookies.js +13 -1
- package/dist/server/cookies.js.map +1 -1
- package/dist/server/edge.d.ts.map +1 -1
- package/dist/server/edge.js +2 -1
- package/dist/server/edge.js.map +1 -1
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +5 -1
- package/dist/server/http.js.map +1 -1
- package/dist/server/idempotency-lane.d.ts +6 -3
- package/dist/server/idempotency-lane.d.ts.map +1 -1
- package/dist/server/idempotency-lane.js +38 -17
- package/dist/server/idempotency-lane.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/logger.d.ts.map +1 -1
- package/dist/server/logger.js +3 -1
- package/dist/server/logger.js.map +1 -1
- package/dist/server/methods.d.ts +1 -0
- package/dist/server/methods.d.ts.map +1 -1
- package/dist/server/methods.js +1 -0
- package/dist/server/methods.js.map +1 -1
- package/dist/server/node-outcome.d.ts.map +1 -1
- package/dist/server/node-outcome.js +29 -11
- package/dist/server/node-outcome.js.map +1 -1
- package/dist/server/platform-adapters.d.ts.map +1 -1
- package/dist/server/platform-adapters.js +3 -2
- package/dist/server/platform-adapters.js.map +1 -1
- package/dist/server/request-context.d.ts +2 -1
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js +4 -1
- package/dist/server/request-context.js.map +1 -1
- package/dist/server/respond.d.ts +44 -11
- package/dist/server/respond.d.ts.map +1 -1
- package/dist/server/respond.js +192 -79
- package/dist/server/respond.js.map +1 -1
- package/dist/server/response-contract-lane.d.ts +21 -6
- package/dist/server/response-contract-lane.d.ts.map +1 -1
- package/dist/server/response-contract-lane.js +139 -14
- package/dist/server/response-contract-lane.js.map +1 -1
- package/dist/server/response-observer-runtime.d.ts.map +1 -1
- package/dist/server/response-observer-runtime.js +10 -41
- package/dist/server/response-observer-runtime.js.map +1 -1
- package/dist/server/runtime-core.d.ts +2 -0
- package/dist/server/runtime-core.d.ts.map +1 -1
- package/dist/server/runtime-core.js +2 -0
- package/dist/server/runtime-core.js.map +1 -1
- package/dist/server/server-types.d.ts +45 -10
- package/dist/server/server-types.d.ts.map +1 -1
- package/dist/server/server.d.ts +67 -32
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +481 -334
- package/dist/server/server.js.map +1 -1
- package/dist/server/sse.d.ts +11 -1
- package/dist/server/sse.d.ts.map +1 -1
- package/dist/server/sse.js +18 -3
- package/dist/server/sse.js.map +1 -1
- package/dist/server/transport-lane.d.ts +7 -1
- package/dist/server/transport-lane.d.ts.map +1 -1
- package/dist/server/transport-lane.js.map +1 -1
- package/dist/server/webhook.d.ts +5 -2
- package/dist/server/webhook.d.ts.map +1 -1
- package/dist/server/webhook.js +17 -1
- package/dist/server/webhook.js.map +1 -1
- package/dist/server/websocket.d.ts +33 -14
- package/dist/server/websocket.d.ts.map +1 -1
- package/dist/server/websocket.js +47 -12
- package/dist/server/websocket.js.map +1 -1
- package/dist/server/ws-bun.d.ts +7 -1
- package/dist/server/ws-bun.d.ts.map +1 -1
- package/dist/server/ws-bun.js +42 -2
- package/dist/server/ws-bun.js.map +1 -1
- package/dist/server/ws-hook.d.ts +15 -3
- package/dist/server/ws-hook.d.ts.map +1 -1
- package/dist/server.d.ts +4 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +3 -2
- package/dist/server.js.map +1 -1
- package/dist/single-copy.d.ts +6 -0
- package/dist/single-copy.d.ts.map +1 -1
- package/dist/single-copy.js +55 -6
- package/dist/single-copy.js.map +1 -1
- package/dist/tool-contract.d.ts.map +1 -1
- package/dist/tool-contract.js +71 -40
- package/dist/tool-contract.js.map +1 -1
- package/dist/wire.d.ts +5 -0
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +5 -0
- package/dist/wire.js.map +1 -1
- package/dist/ws.d.ts.map +1 -1
- package/dist/ws.js +4 -1
- package/dist/ws.js.map +1 -1
- package/package.json +1 -1
- package/src/assurance.ts +299 -111
- package/src/capabilities.ts +62 -1
- package/src/durable-effect.ts +1 -1
- package/src/durable-saga.ts +94 -10
- package/src/edge-kit.ts +8 -3
- package/src/effect-scope.ts +15 -5
- package/src/errors.ts +1 -0
- package/src/evidence.ts +12 -3
- package/src/index.ts +7 -2
- package/src/internal/durable-shared.ts +25 -37
- package/src/internal/durable-types.ts +3 -0
- package/src/internal/hook-origins.ts +153 -0
- package/src/internal/route-assurance.ts +32 -18
- package/src/internal/route-compiler.ts +107 -16
- package/src/internal/route-program.ts +98 -44
- package/src/internal/same-origin.ts +14 -1
- package/src/reconciliation-worker.ts +10 -2
- package/src/reflection.ts +455 -4
- package/src/router/pattern.ts +6 -3
- package/src/security/baseline.ts +10 -5
- package/src/server/auth.ts +45 -3
- package/src/server/body-lane.ts +36 -1
- package/src/server/body.ts +34 -1
- package/src/server/client-ip.ts +8 -5
- package/src/server/context.ts +2 -1
- package/src/server/cookies.ts +12 -1
- package/src/server/edge.ts +2 -1
- package/src/server/http.ts +7 -1
- package/src/server/idempotency-lane.ts +64 -22
- package/src/server/install.ts +3 -0
- package/src/server/logger.ts +3 -1
- package/src/server/methods.ts +1 -0
- package/src/server/node-outcome.ts +34 -12
- package/src/server/platform-adapters.ts +3 -2
- package/src/server/request-context.ts +5 -0
- package/src/server/respond.ts +222 -69
- package/src/server/response-contract-lane.ts +162 -10
- package/src/server/response-observer-runtime.ts +16 -38
- package/src/server/runtime-core.ts +2 -0
- package/src/server/server-types.ts +45 -10
- package/src/server/server.ts +707 -539
- package/src/server/sse.ts +84 -55
- package/src/server/transport-lane.ts +7 -1
- package/src/server/webhook.ts +22 -3
- package/src/server/websocket.ts +83 -18
- package/src/server/ws-bun.ts +48 -1
- package/src/server/ws-hook.ts +14 -2
- package/src/server.ts +6 -1
- package/src/single-copy.ts +55 -5
- package/src/tool-contract.ts +67 -39
- package/src/wire.ts +14 -0
- package/src/ws.ts +6 -0
package/dist/server/respond.js
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* spine types, so the wire-response format lives in one module distinct from the request engine.
|
|
5
5
|
*/
|
|
6
6
|
import { NODE_BRIDGE_MARKER_KEYS } from "./bridge-markers.js";
|
|
7
|
-
import {
|
|
7
|
+
import { plainError } from "./http.js";
|
|
8
|
+
import { CONTEXT_REQUEST, CONTEXT_SET, EMPTY_RESPONSE_CONTROLS, isResponseResult, plainRenderHeaders, } from "./runtime-core.js";
|
|
8
9
|
import { mergeStaticHeaderRecord } from "./static-headers.js";
|
|
9
10
|
/** Build the response headers init. The common path (no `c.set`) returns `undefined` so `Response`
|
|
10
11
|
* gets no `headers` at all. Cookies force a `Headers` object - multiple `Set-Cookie`s can't live in a
|
|
@@ -61,26 +62,24 @@ export function buildStaticResponseHeaders(record, inherited) {
|
|
|
61
62
|
/**
|
|
62
63
|
* Apply the static defaults to an ALREADY-BUILT response - the framework's error/404/timeout renders
|
|
63
64
|
* and a handler-returned `Response`, none of which go through the header init below. Defaults, so a
|
|
64
|
-
* name the response already carries is left alone
|
|
65
|
-
*
|
|
66
|
-
*
|
|
65
|
+
* name the response already carries is left alone, and a response needing none is returned untouched.
|
|
66
|
+
* The writes land on {@link writableResponse}'s answer, never on an object other requests may share;
|
|
67
|
+
* `request` is the request being answered.
|
|
67
68
|
*/
|
|
68
|
-
export function applyStaticResponseHeaders(response, statics) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
return stamped(clone);
|
|
69
|
+
export function applyStaticResponseHeaders(response, statics, request) {
|
|
70
|
+
let target = response;
|
|
71
|
+
const entries = statics.entries;
|
|
72
|
+
for (let i = 0; i < entries.length; i++) {
|
|
73
|
+
const entry = entries[i];
|
|
74
|
+
const current = response.headers.get(entry[0]);
|
|
75
|
+
// Set by the request, or already the declared value: nothing to write.
|
|
76
|
+
if (current === entry[1] || current !== (statics.inherited?.[entry[0]] ?? null))
|
|
77
|
+
continue;
|
|
78
|
+
if (target === response)
|
|
79
|
+
target = writableResponse(response, request);
|
|
80
|
+
target.headers.set(entry[0], entry[1]);
|
|
81
81
|
}
|
|
82
|
-
|
|
83
|
-
return response;
|
|
82
|
+
return target;
|
|
84
83
|
}
|
|
85
84
|
/**
|
|
86
85
|
* Build a JSON response carrying the declared headers, the cheapest way this runtime allows.
|
|
@@ -99,8 +98,8 @@ function staticJsonResponse(body, status, statics, contentType, init) {
|
|
|
99
98
|
// with the fixed internal-error envelope before reaching this response boundary.
|
|
100
99
|
return new Response(body, init);
|
|
101
100
|
}
|
|
102
|
-
function withStatics(response, statics) {
|
|
103
|
-
return statics === undefined ? response : applyStaticResponseHeaders(response, statics);
|
|
101
|
+
function withStatics(response, statics, request) {
|
|
102
|
+
return statics === undefined ? response : applyStaticResponseHeaders(response, statics, request);
|
|
104
103
|
}
|
|
105
104
|
function applyStaticDefaults(headers, statics) {
|
|
106
105
|
// Indexed with an explicit tuple read, not `for...of` with array destructuring: the destructuring
|
|
@@ -167,47 +166,120 @@ function jsonResponseWithOwnHeaders(result, status, headers) {
|
|
|
167
166
|
const response = status === 200 ? Response.json(result) : Response.json(result, { status });
|
|
168
167
|
for (const name of Object.keys(headers))
|
|
169
168
|
response.headers.set(name, headers[name]);
|
|
170
|
-
return
|
|
169
|
+
return withBody(response);
|
|
171
170
|
}
|
|
172
171
|
// The framework-buffered-body marker shared with the Node adapter: a Response carrying it exposes
|
|
173
172
|
// its already-serialized bytes without draining. On the Web serving paths it exists ONLY when a
|
|
174
173
|
// registered body/raw hook needs it, so hook-less apps pay nothing.
|
|
175
174
|
const RESPONSE_BODY = Symbol.for(NODE_BRIDGE_MARKER_KEYS.responseBody);
|
|
176
175
|
/**
|
|
177
|
-
*
|
|
178
|
-
*
|
|
179
|
-
*
|
|
180
|
-
*
|
|
181
|
-
|
|
176
|
+
* Responses known to carry a body and take header writes: framework renders built with one, and
|
|
177
|
+
* foreign ones `writableResponse` has already checked. A body is sent once, so such a response belongs
|
|
178
|
+
* to whichever request holds it and is written in place without reading `.body` again - on Bun that
|
|
179
|
+
* read turns a string body into a stream, measured at about 6% of a request.
|
|
180
|
+
*/
|
|
181
|
+
const WRITABLE_BODY_RESPONSES = new WeakSet();
|
|
182
|
+
/**
|
|
183
|
+
* Body-less responses nifra built for one request - `writableResponse` copies and the framework's own
|
|
184
|
+
* body-less renders - by that request. Only objects nifra constructs are entered, never one a handler
|
|
185
|
+
* or hook hands over, so the request's later writers write them in place and any other request that
|
|
186
|
+
* is handed one copies it.
|
|
182
187
|
*/
|
|
183
|
-
const
|
|
184
|
-
|
|
185
|
-
|
|
188
|
+
const REQUEST_OWNED = new WeakMap();
|
|
189
|
+
function ownedBy(response, request) {
|
|
190
|
+
if (request !== undefined)
|
|
191
|
+
REQUEST_OWNED.set(response, request);
|
|
192
|
+
return response;
|
|
186
193
|
}
|
|
187
|
-
|
|
188
|
-
|
|
194
|
+
/** Record a Response the framework constructed: one built with a body is single-use and writable. */
|
|
195
|
+
export function rememberRenderedResponse(response, hasBody) {
|
|
196
|
+
if (hasBody)
|
|
197
|
+
WRITABLE_BODY_RESPONSES.add(response);
|
|
198
|
+
return response;
|
|
189
199
|
}
|
|
190
|
-
/**
|
|
191
|
-
function
|
|
192
|
-
|
|
200
|
+
/** `rememberRenderedResponse` for a Response the framework constructed with a body. */
|
|
201
|
+
function withBody(response) {
|
|
202
|
+
WRITABLE_BODY_RESPONSES.add(response);
|
|
193
203
|
return response;
|
|
194
204
|
}
|
|
205
|
+
const HEADER_MUTABILITY_PROBE = "x-nifra-header-probe";
|
|
206
|
+
/** Whether `headers` takes writes. A guarded `Headers` rejects the first one, so the probe changes
|
|
207
|
+
* nothing either way. */
|
|
208
|
+
function headersTakeWrites(headers) {
|
|
209
|
+
try {
|
|
210
|
+
const previous = headers.get(HEADER_MUTABILITY_PROBE);
|
|
211
|
+
headers.set(HEADER_MUTABILITY_PROBE, "1");
|
|
212
|
+
if (previous === null)
|
|
213
|
+
headers.delete(HEADER_MUTABILITY_PROBE);
|
|
214
|
+
else
|
|
215
|
+
headers.set(HEADER_MUTABILITY_PROBE, previous);
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
return false;
|
|
219
|
+
}
|
|
220
|
+
return true;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* The response to write headers on for the request being answered: `response` itself, or a copy.
|
|
224
|
+
*
|
|
225
|
+
* A Response without a body can be sent any number of times, so the object a handler, hook or cache
|
|
226
|
+
* hands over may be answering other requests too - a module-level `new Response(null, { status: 204 })`,
|
|
227
|
+
* a kept redirect, even one nifra rendered earlier. A cookie or per-request header written onto it would
|
|
228
|
+
* ship with every later request it answers, so it is always copied, whoever built it. One with a body
|
|
229
|
+
* can be sent only once, so it already belongs to this request and is written in place; a copy would
|
|
230
|
+
* cost Bun's file responses their sendfile path and buy nothing. Guarded `Headers`
|
|
231
|
+
* (`Response.redirect()`, a raw `fetch()` result) reject writes, so those are copied as well.
|
|
232
|
+
*
|
|
233
|
+
* Pass the `request` being answered and a copy made for it is written in place by its later writers;
|
|
234
|
+
* handed back on any other request, that copy is copied again.
|
|
235
|
+
*/
|
|
236
|
+
export function writableResponse(response, request) {
|
|
237
|
+
if (WRITABLE_BODY_RESPONSES.has(response))
|
|
238
|
+
return response;
|
|
239
|
+
if (response.body === null) {
|
|
240
|
+
// A 101 upgrade and the status-0 `Response.error()` cannot be constructed, and a runtime makes
|
|
241
|
+
// them per request.
|
|
242
|
+
if (response.status < 200)
|
|
243
|
+
return response;
|
|
244
|
+
if (request !== undefined && REQUEST_OWNED.get(response) === request)
|
|
245
|
+
return response;
|
|
246
|
+
const copy = copiedResponse(response, new Response(null, {
|
|
247
|
+
status: response.status,
|
|
248
|
+
statusText: response.statusText,
|
|
249
|
+
headers: response.headers,
|
|
250
|
+
}), false);
|
|
251
|
+
return ownedBy(copy, request);
|
|
252
|
+
}
|
|
253
|
+
if (headersTakeWrites(response.headers)) {
|
|
254
|
+
WRITABLE_BODY_RESPONSES.add(response);
|
|
255
|
+
return response;
|
|
256
|
+
}
|
|
257
|
+
return copiedResponse(response, new Response(response.body, response), true);
|
|
258
|
+
}
|
|
259
|
+
/** `copy`, recorded and carrying `original`'s buffered-body marker: the Node writer still sends the
|
|
260
|
+
* serialized bytes directly, and a marked body-less Response keeps the body only the marker holds. */
|
|
261
|
+
function copiedResponse(original, copy, hasBody) {
|
|
262
|
+
const marker = Reflect.get(original, RESPONSE_BODY);
|
|
263
|
+
if (marker !== undefined)
|
|
264
|
+
Object.defineProperty(copy, RESPONSE_BODY, { value: marker });
|
|
265
|
+
return rememberRenderedResponse(copy, hasBody);
|
|
266
|
+
}
|
|
195
267
|
function isBodylessStatus(status) {
|
|
196
268
|
return status === 204 || status === 205 || status === 304;
|
|
197
269
|
}
|
|
198
270
|
/** Normalize handler-produced bodyless responses before response middleware sees them. */
|
|
199
|
-
export function normalizeBodylessResponse(response) {
|
|
271
|
+
export function normalizeBodylessResponse(response, request) {
|
|
200
272
|
if (!isBodylessStatus(response.status))
|
|
201
273
|
return response;
|
|
202
274
|
if (response.body === null && !response.headers.has("content-length"))
|
|
203
275
|
return response;
|
|
204
276
|
const headers = new Headers(response.headers);
|
|
205
277
|
headers.delete("content-length");
|
|
206
|
-
return
|
|
278
|
+
return ownedBy(new Response(null, {
|
|
207
279
|
status: response.status,
|
|
208
280
|
statusText: response.statusText,
|
|
209
281
|
headers,
|
|
210
|
-
}));
|
|
282
|
+
}), request);
|
|
211
283
|
}
|
|
212
284
|
/** The framework-serialized bytes riding a tagged Response, or `undefined` for raw/streamed ones. */
|
|
213
285
|
export function taggedResponseBody(response, owners) {
|
|
@@ -242,7 +314,7 @@ export function markTaggedResponse(response, body, owner) {
|
|
|
242
314
|
return response;
|
|
243
315
|
}
|
|
244
316
|
function tagged(response, body, tagResponseBody) {
|
|
245
|
-
|
|
317
|
+
withBody(response);
|
|
246
318
|
return tagResponseBody === false || tagResponseBody === undefined
|
|
247
319
|
? response
|
|
248
320
|
: markTaggedResponse(response, body, typeof tagResponseBody === "object" ? tagResponseBody : undefined);
|
|
@@ -250,14 +322,14 @@ function tagged(response, body, tagResponseBody) {
|
|
|
250
322
|
/** Fused-lane respond when `c.set` is untouched. Bun 1.3's native `Response.json` now beats the
|
|
251
323
|
* older hand-inlined stringify + Response construction on this lane while preserving the exact
|
|
252
324
|
* body/content-type contract; keep the generic fallback for non-JSON values. */
|
|
253
|
-
export function fusedRespondNoSet(result, tagResponseBody = false, statics, unstamped = false) {
|
|
254
|
-
// With no response hook registered, no code path ever asks whether
|
|
255
|
-
//
|
|
256
|
-
//
|
|
257
|
-
//
|
|
258
|
-
//
|
|
259
|
-
//
|
|
260
|
-
//
|
|
325
|
+
export function fusedRespondNoSet(result, tagResponseBody = false, statics, unstamped = false, request) {
|
|
326
|
+
// With no response hook registered, no code path ever asks whether this response takes writes in
|
|
327
|
+
// place, so recording it in the body WeakSet is dead work - `Response.json` alone is cheaper on Bun
|
|
328
|
+
// than the same construction plus the WeakSet write. `unstamped` is the caller's assertion that the
|
|
329
|
+
// hook walk is empty; an app that registers ANY response hook keeps the record, because the
|
|
330
|
+
// alternative is `writableResponse` reading `.body` and probing the headers of every response (each
|
|
331
|
+
// one is fresh, so nothing amortizes) - the probe alone measured 19% slower than the WeakSet write.
|
|
332
|
+
// Default false: an unknown caller pays one WeakSet write rather than a probe per response.
|
|
261
333
|
if (unstamped &&
|
|
262
334
|
(tagResponseBody === false || tagResponseBody === undefined) &&
|
|
263
335
|
statics === undefined &&
|
|
@@ -286,7 +358,7 @@ export function fusedRespondNoSet(result, tagResponseBody = false, statics, unst
|
|
|
286
358
|
const entry = statics.entries[i];
|
|
287
359
|
response.headers.set(entry[0], entry[1]);
|
|
288
360
|
}
|
|
289
|
-
return
|
|
361
|
+
return withBody(response);
|
|
290
362
|
}
|
|
291
363
|
// With declared static headers the prebuilt init already carries them plus the JSON
|
|
292
364
|
// content-type, so this lane still constructs the response in one call - the whole point of
|
|
@@ -303,34 +375,60 @@ export function fusedRespondNoSet(result, tagResponseBody = false, statics, unst
|
|
|
303
375
|
? staticJsonResponse(body, 200, statics, JSON_CONTENT_TYPE, statics.jsonInit200)
|
|
304
376
|
: staticJsonResponse(body, 200, statics, responseJsonContentType(), statics.responseJsonInit200()), body, tagResponseBody);
|
|
305
377
|
}
|
|
306
|
-
return
|
|
378
|
+
return withBody(statics === undefined
|
|
307
379
|
? Response.json(result)
|
|
308
380
|
: Response.json(result, statics.responseJsonInit200()));
|
|
309
381
|
}
|
|
310
|
-
return toResponse(result, EMPTY_RESPONSE_CONTROLS, tagResponseBody, statics);
|
|
382
|
+
return toResponse(result, EMPTY_RESPONSE_CONTROLS, tagResponseBody, statics, request);
|
|
311
383
|
}
|
|
312
384
|
/** Fused-lane respond with a context: read `c.set` once; untouched (the common case) -> the fast
|
|
313
385
|
* JSON respond; touched -> the generic `toResponse` with those controls (statuses, headers, cookies). */
|
|
314
386
|
export function fusedRespond(result, ctx, tagResponseBody = false, statics, unstamped = false) {
|
|
315
387
|
const set = ctx[CONTEXT_SET]();
|
|
388
|
+
const request = unstamped ? undefined : ctx[CONTEXT_REQUEST];
|
|
316
389
|
if (set === undefined)
|
|
317
|
-
return fusedRespondNoSet(result, tagResponseBody, statics, unstamped);
|
|
318
|
-
return toResponse(result, set, tagResponseBody, statics);
|
|
390
|
+
return fusedRespondNoSet(result, tagResponseBody, statics, unstamped, request);
|
|
391
|
+
return toResponse(result, set, tagResponseBody, statics, request);
|
|
319
392
|
}
|
|
320
|
-
|
|
393
|
+
/**
|
|
394
|
+
* Render a handler's result. `request` is the request being answered, given when response hooks will
|
|
395
|
+
* write next: a copy or body-less response built here is then recorded as that request's own, so the
|
|
396
|
+
* hooks write it in place instead of copying it again.
|
|
397
|
+
*/
|
|
398
|
+
export function toResponse(result, set, tagResponseBody = false, statics, request) {
|
|
321
399
|
if (isResponseResult(result)) {
|
|
322
400
|
const plain = result.plain;
|
|
323
401
|
if (plain !== undefined) {
|
|
324
402
|
// Rendered as the value it is, on the branches below, rather than through `toResponse()`: the
|
|
325
403
|
// status and headers fold into a `set` and the body takes the ordinary JSON lane. One level
|
|
326
404
|
// only - a plain render's body is a user value, never another response carrier.
|
|
327
|
-
return toResponse(plain.body, plainRenderSet(plain, set), tagResponseBody, statics);
|
|
405
|
+
return toResponse(plain.body, plainRenderSet(plain, set), tagResponseBody, statics, request);
|
|
328
406
|
}
|
|
329
|
-
return withStatics(
|
|
407
|
+
return withStatics(applySetToResponse(normalizeBodylessResponse(result.toResponse(), request), set, request), statics, request);
|
|
330
408
|
}
|
|
331
409
|
if (result instanceof Response) {
|
|
332
|
-
|
|
410
|
+
if (result.bodyUsed) {
|
|
411
|
+
return toResponse(SENT_BODY, EMPTY_RESPONSE_CONTROLS, false, statics, request);
|
|
412
|
+
}
|
|
413
|
+
return withStatics(applySetToResponse(normalizeBodylessResponse(result, request), set, request), statics, request);
|
|
333
414
|
}
|
|
415
|
+
return renderValue(result, set, tagResponseBody, statics, request);
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Render a framework {@link ResponseResult} - a rejection such as a `413`, `415` or `422` - with no
|
|
419
|
+
* request controls, byte-identical to `toResponse(result, EMPTY_RESPONSE_CONTROLS)`. It never takes a
|
|
420
|
+
* handler's `Response`, so a compact server rendering only its own rejections ships none of the code
|
|
421
|
+
* that adopts one.
|
|
422
|
+
*/
|
|
423
|
+
export function renderResult(result) {
|
|
424
|
+
const plain = result.plain;
|
|
425
|
+
return plain === undefined
|
|
426
|
+
? normalizeBodylessResponse(result.toResponse())
|
|
427
|
+
: renderValue(plain.body, plainRenderSet(plain, EMPTY_RESPONSE_CONTROLS), false, undefined, undefined);
|
|
428
|
+
}
|
|
429
|
+
/** The JSON lane: a value that is neither a `Response` nor a response result, rendered with the
|
|
430
|
+
* request's status, headers and cookies. */
|
|
431
|
+
function renderValue(result, set, tagResponseBody, statics, request) {
|
|
334
432
|
// The static tier only changes WHICH prebuilt header shape the branches below reach for: the
|
|
335
433
|
// request's own headers are folded on top of the declared defaults once, here.
|
|
336
434
|
const own = headersInit(set);
|
|
@@ -338,7 +436,7 @@ export function toResponse(result, set, tagResponseBody = false, statics) {
|
|
|
338
436
|
const jsonCtHeaders = statics === undefined ? JSON_CT_HEADERS : statics.jsonHeaders;
|
|
339
437
|
const status = set.status ?? (result === undefined ? 204 : 200);
|
|
340
438
|
if (status === 204 || status === 205 || status === 304) {
|
|
341
|
-
return
|
|
439
|
+
return ownedBy(new Response(null, headers === undefined ? { status } : { status, headers }), request);
|
|
342
440
|
}
|
|
343
441
|
// Bun and Deno both make a JSON response first and then accept a few header mutations more cheaply
|
|
344
442
|
// than ingesting the same plain record in the constructor. This is the common dynamic-header
|
|
@@ -374,7 +472,7 @@ export function toResponse(result, set, tagResponseBody = false, statics) {
|
|
|
374
472
|
}
|
|
375
473
|
const init = headers === undefined ? { status } : { status, headers };
|
|
376
474
|
if (result === undefined)
|
|
377
|
-
return
|
|
475
|
+
return ownedBy(new Response(null, init), request);
|
|
378
476
|
if (tagResponseBody) {
|
|
379
477
|
const body = JSON.stringify(result);
|
|
380
478
|
if (body !== undefined) {
|
|
@@ -388,9 +486,9 @@ export function toResponse(result, set, tagResponseBody = false, statics) {
|
|
|
388
486
|
if (IS_DENO && headers !== undefined && !(headers instanceof Headers)) {
|
|
389
487
|
const body = JSON.stringify(result);
|
|
390
488
|
if (body !== undefined)
|
|
391
|
-
return
|
|
489
|
+
return withBody(denoResponseWithJsonBody(body, status, headers));
|
|
392
490
|
}
|
|
393
|
-
return
|
|
491
|
+
return withBody(Response.json(result, init));
|
|
394
492
|
}
|
|
395
493
|
// Add a JSON content-type without pre-building a `Headers` instance just to check-and-set one key:
|
|
396
494
|
// `new Headers(record)` measured ~8us/call on V8 (Deno) for a handful of header entries - it's a
|
|
@@ -411,26 +509,41 @@ function withJsonContentType(headers) {
|
|
|
411
509
|
? headers
|
|
412
510
|
: { ...headers, "content-type": "application/json;charset=utf-8" };
|
|
413
511
|
}
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
512
|
+
/** Headers that describe a Response's body or its framing: a `c.set` value for one describes a body
|
|
513
|
+
* the handler did not return. */
|
|
514
|
+
export const RESPONSE_OWNED_HEADERS = new Set([
|
|
515
|
+
"content-type",
|
|
516
|
+
"content-length",
|
|
517
|
+
"content-encoding",
|
|
518
|
+
"content-range",
|
|
519
|
+
"transfer-encoding",
|
|
520
|
+
]);
|
|
521
|
+
export function applySetToResponse(response, set, request) {
|
|
522
|
+
// A guard's `c.set.headers` (a `cache-control: no-store` on private data) and queued cookies belong
|
|
523
|
+
// to this request whatever the handler returned, so they go on `writableResponse`'s answer, never on
|
|
524
|
+
// an object another request may be served from. The Response's own headers win, and the ones that
|
|
525
|
+
// describe its body or framing come from it alone. A 101 or `Response.error()` takes no headers.
|
|
526
|
+
let target = response;
|
|
527
|
+
const headers = set._headers;
|
|
528
|
+
if (headers !== undefined && response.status >= 200) {
|
|
529
|
+
for (const name in headers) {
|
|
530
|
+
if (RESPONSE_OWNED_HEADERS.has(name.toLowerCase()) || target.headers.has(name))
|
|
531
|
+
continue;
|
|
532
|
+
if (target === response)
|
|
533
|
+
target = writableResponse(response, request);
|
|
534
|
+
target.headers.set(name, headers[name]);
|
|
535
|
+
}
|
|
536
|
+
}
|
|
419
537
|
const cookies = set._cookies;
|
|
420
538
|
if (cookies === undefined || cookies.length === 0)
|
|
421
|
-
return
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
catch {
|
|
428
|
-
// Guarded `Headers` (`Response.redirect()`, a raw `fetch()` result) reject every write, so the
|
|
429
|
-
// first append throws with nothing applied and the cookies land on a mutable copy instead.
|
|
430
|
-
const clone = new Response(response.body, response);
|
|
431
|
-
for (const cookie of cookies)
|
|
432
|
-
clone.headers.append("set-cookie", cookie);
|
|
433
|
-
return stamped(clone);
|
|
434
|
-
}
|
|
539
|
+
return target;
|
|
540
|
+
if (target === response)
|
|
541
|
+
target = writableResponse(response, request);
|
|
542
|
+
for (const cookie of cookies)
|
|
543
|
+
target.headers.append("set-cookie", cookie);
|
|
544
|
+
return target;
|
|
435
545
|
}
|
|
546
|
+
/** What a handler's Response renders as when its body was already sent: a runtime refuses to send it
|
|
547
|
+
* again, and the headers it carries were written for the request it already answered. */
|
|
548
|
+
export const SENT_BODY = plainError(500, "internal_error");
|
|
436
549
|
//# sourceMappingURL=respond.js.map
|
|
@@ -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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"}
|
|
@@ -28,7 +28,9 @@
|
|
|
28
28
|
*
|
|
29
29
|
* That is not an inconsistency to paper over: a strict schema has already declared that extra fields
|
|
30
30
|
* are an error, and a stripping one has declared they are ignorable. Enforcement honours what the
|
|
31
|
-
* author wrote rather than overriding it
|
|
31
|
+
* author wrote rather than overriding it - unless the app asks for `extra: "strip"`. A schema that
|
|
32
|
+
* carries its JSON Schema as `jsonSchema` (every `t` schema does) CAN list its declared keys, so for
|
|
33
|
+
* those the payload is projected onto the declared shape before it is validated.
|
|
32
34
|
*
|
|
33
35
|
* ## What enforcement costs
|
|
34
36
|
*
|
|
@@ -53,6 +55,17 @@ import type { IdentityPlugin } from "./plugin.js";
|
|
|
53
55
|
* app's bundle entirely rather than shipping a disabled branch to everyone.
|
|
54
56
|
*/
|
|
55
57
|
export type ResponseContractMode = "warn" | "enforce";
|
|
58
|
+
export interface ResponseContractOptions {
|
|
59
|
+
/**
|
|
60
|
+
* Fields the schema does not declare. `"reject"` (the default) leaves them to the validator: a
|
|
61
|
+
* closed `t.object` reports them, so an enforced response becomes a 500 and the log names them.
|
|
62
|
+
* `"strip"` drops them first, for any schema exposing its JSON Schema as `jsonSchema` (every
|
|
63
|
+
* `@nifrajs/schema` `t` schema) - nested objects, arrays and records included. A union is projected
|
|
64
|
+
* only when exactly one branch can hold an object. Schemas without `jsonSchema` (zod, valibot) are
|
|
65
|
+
* unaffected: they already strip or reject by their own rules.
|
|
66
|
+
*/
|
|
67
|
+
readonly extra?: "reject" | "strip";
|
|
68
|
+
}
|
|
56
69
|
/** Success and status-specific error schemas captured by one route at registration time. */
|
|
57
70
|
export interface ResponseContractDefinition {
|
|
58
71
|
readonly response?: StandardSchemaV1;
|
|
@@ -82,7 +95,7 @@ export type ResponseContractOutcome =
|
|
|
82
95
|
* Returns synchronously when the schema does (the common case), so an app that opts in does not pay a
|
|
83
96
|
* microtask per response for a check that had no work to do.
|
|
84
97
|
*/
|
|
85
|
-
export declare function checkResponseContract(schema: StandardSchemaV1, result: unknown, mode: "warn" | "enforce"): ResponseContractOutcome | Promise<ResponseContractOutcome>;
|
|
98
|
+
export declare function checkResponseContract(schema: StandardSchemaV1, result: unknown, mode: "warn" | "enforce", options?: ResponseContractOptions): ResponseContractOutcome | Promise<ResponseContractOutcome>;
|
|
86
99
|
/**
|
|
87
100
|
* Check a route's success or status-specific error payload. Plain `status()` results retain their
|
|
88
101
|
* status while enforcement replaces only the body with the validator's output. A `c.json(...)`
|
|
@@ -92,7 +105,7 @@ export declare function checkResponseContract(schema: StandardSchemaV1, result:
|
|
|
92
105
|
*/
|
|
93
106
|
export declare function checkRouteResponseContract(definition: ResponseContractDefinition, result: unknown, mode: "warn" | "enforce", jsonReply?: {
|
|
94
107
|
readonly body: unknown;
|
|
95
|
-
}): ResponseContractOutcome | Promise<ResponseContractOutcome>;
|
|
108
|
+
}, options?: ResponseContractOptions): ResponseContractOutcome | Promise<ResponseContractOutcome>;
|
|
96
109
|
/**
|
|
97
110
|
* What the server holds when the plugin is installed. The kernel calls `check` through this object and
|
|
98
111
|
* never imports the implementation, so an app that does not install the plugin does not carry it.
|
|
@@ -107,10 +120,12 @@ export interface ResponseContractRuntime {
|
|
|
107
120
|
/**
|
|
108
121
|
* Hold every route's declared `response` schema to what the handler actually returned.
|
|
109
122
|
*
|
|
110
|
-
* app.use(responseContract("enforce"))
|
|
123
|
+
* app.use(responseContract("enforce")) // a closed t.object -> 500 on extras
|
|
124
|
+
* app.use(responseContract("enforce", { extra: "strip" })) // extras dropped, declared fields sent
|
|
111
125
|
*
|
|
112
126
|
* Install it before the routes it should cover - like `idempotency()`, the decision is made per route
|
|
113
|
-
* at registration, so routes registered earlier are not retroactively covered.
|
|
127
|
+
* at registration, so routes registered earlier are not retroactively covered. It covers routes on
|
|
128
|
+
* the server it is installed on, its `group()`s, and servers `merge()`d into it afterwards.
|
|
114
129
|
*
|
|
115
130
|
* The check itself is cheap - with a compiled validator it measures in the ~100ns-per-response
|
|
116
131
|
* range, within benchmark noise of an uncontracted route on any route that carries middleware or a
|
|
@@ -119,5 +134,5 @@ export interface ResponseContractRuntime {
|
|
|
119
134
|
* taking anyway. Opt-in because not installing the plugin keeps the lane out of the bundle, not
|
|
120
135
|
* because enforcement is expensive.
|
|
121
136
|
*/
|
|
122
|
-
export declare function responseContract(mode?: ResponseContractMode): IdentityPlugin;
|
|
137
|
+
export declare function responseContract(mode?: ResponseContractMode, options?: ResponseContractOptions): IdentityPlugin;
|
|
123
138
|
//# sourceMappingURL=response-contract-lane.d.ts.map
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAIjD;;;;;;;;GAQG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAAA;AAErD,MAAM,WAAW,uBAAuB;IACtC;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;CACpC;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,gGAAgG;GAC9F;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAC9E,kGAAkG;GAChG;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAoI5D;;;;;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,CA8B5D;AA6CD;;;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;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;QAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GACnF,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;CAC9D;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,GAAE,oBAA6B,EACnC,OAAO,GAAE,uBAA4B,GACpC,cAAc,CAyBhB"}
|