@nifrajs/core 2.11.0 → 2.12.1
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/dist/assurance.d.ts +61 -3
- package/dist/assurance.d.ts.map +1 -1
- package/dist/assurance.js +152 -5
- package/dist/assurance.js.map +1 -1
- package/dist/capabilities.d.ts +9 -1
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +5 -1
- package/dist/capabilities.js.map +1 -1
- package/dist/diff.d.ts +2 -1
- package/dist/diff.d.ts.map +1 -1
- package/dist/diff.js +3 -1
- package/dist/diff.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 +89 -0
- package/dist/evidence.d.ts.map +1 -0
- package/dist/evidence.js +170 -0
- package/dist/evidence.js.map +1 -0
- package/dist/execution-policy.d.ts +23 -0
- package/dist/execution-policy.d.ts.map +1 -0
- package/dist/execution-policy.js +28 -0
- package/dist/execution-policy.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/route-assurance.d.ts +19 -0
- package/dist/internal/route-assurance.d.ts.map +1 -1
- package/dist/internal/route-assurance.js +38 -5
- package/dist/internal/route-assurance.js.map +1 -1
- package/dist/internal/route-execution.d.ts +18 -0
- package/dist/internal/route-execution.d.ts.map +1 -1
- package/dist/internal/route-execution.js +67 -1
- package/dist/internal/route-execution.js.map +1 -1
- package/dist/manifest.d.ts +5 -1
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +22 -4
- package/dist/manifest.js.map +1 -1
- package/dist/reflection.d.ts +5 -0
- package/dist/reflection.d.ts.map +1 -1
- package/dist/reflection.js +13 -4
- package/dist/reflection.js.map +1 -1
- package/dist/replay.d.ts +26 -0
- package/dist/replay.d.ts.map +1 -0
- package/dist/replay.js +63 -0
- package/dist/replay.js.map +1 -0
- package/dist/schema/standard.d.ts +2 -0
- package/dist/schema/standard.d.ts.map +1 -1
- package/dist/schema/standard.js +13 -0
- package/dist/schema/standard.js.map +1 -1
- package/dist/server/body.d.ts +49 -6
- package/dist/server/body.d.ts.map +1 -1
- package/dist/server/body.js +226 -8
- package/dist/server/body.js.map +1 -1
- package/dist/server/context.d.ts +20 -3
- package/dist/server/context.d.ts.map +1 -1
- package/dist/server/contract.d.ts +15 -3
- package/dist/server/contract.d.ts.map +1 -1
- package/dist/server/contract.js +22 -0
- package/dist/server/contract.js.map +1 -1
- package/dist/server/cookies.d.ts +26 -5
- package/dist/server/cookies.d.ts.map +1 -1
- package/dist/server/cookies.js +76 -9
- package/dist/server/cookies.js.map +1 -1
- package/dist/server/edge.d.ts.map +1 -1
- package/dist/server/edge.js +11 -0
- package/dist/server/edge.js.map +1 -1
- package/dist/server/header-case.d.ts +9 -0
- package/dist/server/header-case.d.ts.map +1 -0
- package/dist/server/header-case.js +54 -0
- package/dist/server/header-case.js.map +1 -0
- package/dist/server/headers.d.ts +8 -0
- package/dist/server/headers.d.ts.map +1 -0
- package/dist/server/headers.js +13 -0
- package/dist/server/headers.js.map +1 -0
- package/dist/server/node-outcome-hook.d.ts.map +1 -1
- package/dist/server/node-outcome-hook.js +7 -11
- package/dist/server/node-outcome-hook.js.map +1 -1
- package/dist/server/node-outcome.d.ts +8 -1
- package/dist/server/node-outcome.d.ts.map +1 -1
- package/dist/server/node-outcome.js +10 -3
- package/dist/server/node-outcome.js.map +1 -1
- package/dist/server/plugin.d.ts +66 -7
- package/dist/server/plugin.d.ts.map +1 -1
- package/dist/server/plugin.js +14 -10
- package/dist/server/plugin.js.map +1 -1
- package/dist/server/proto-guard.d.ts +30 -0
- package/dist/server/proto-guard.d.ts.map +1 -0
- package/dist/server/proto-guard.js +116 -0
- package/dist/server/proto-guard.js.map +1 -0
- package/dist/server/registry.d.ts +6 -2
- package/dist/server/registry.d.ts.map +1 -1
- package/dist/server/request-context.d.ts +24 -6
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js +157 -30
- package/dist/server/request-context.js.map +1 -1
- package/dist/server/respond.d.ts +2 -2
- package/dist/server/respond.d.ts.map +1 -1
- package/dist/server/respond.js +34 -8
- package/dist/server/respond.js.map +1 -1
- package/dist/server/response-contract-lane.d.ts +1 -1
- package/dist/server/response-contract-lane.d.ts.map +1 -1
- package/dist/server/response-contract-lane.js +45 -13
- package/dist/server/response-contract-lane.js.map +1 -1
- package/dist/server/response-hooks.d.ts +10 -0
- package/dist/server/response-hooks.d.ts.map +1 -0
- package/dist/server/response-hooks.js +52 -0
- package/dist/server/response-hooks.js.map +1 -0
- package/dist/server/runtime-core.d.ts +12 -0
- package/dist/server/runtime-core.d.ts.map +1 -1
- package/dist/server/runtime-core.js +8 -0
- package/dist/server/runtime-core.js.map +1 -1
- package/dist/server/server-types.d.ts +60 -6
- package/dist/server/server-types.d.ts.map +1 -1
- package/dist/server/server.d.ts +80 -23
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +429 -213
- package/dist/server/server.js.map +1 -1
- package/dist/server/static-headers.d.ts +14 -3
- package/dist/server/static-headers.d.ts.map +1 -1
- package/dist/server/static-headers.js +28 -6
- package/dist/server/static-headers.js.map +1 -1
- package/dist/server/transport-lane.d.ts +8 -0
- package/dist/server/transport-lane.d.ts.map +1 -1
- package/dist/server/transport-lane.js +12 -8
- package/dist/server/transport-lane.js.map +1 -1
- package/dist/server/websocket.d.ts +3 -0
- package/dist/server/websocket.d.ts.map +1 -1
- package/dist/server/websocket.js +14 -0
- package/dist/server/websocket.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/tool-catalog.d.ts +21 -0
- package/dist/tool-catalog.d.ts.map +1 -0
- package/dist/tool-catalog.js +16 -0
- package/dist/tool-catalog.js.map +1 -0
- package/dist/tool-contract.d.ts +238 -0
- package/dist/tool-contract.d.ts.map +1 -0
- package/dist/tool-contract.js +569 -0
- package/dist/tool-contract.js.map +1 -0
- package/package.json +26 -1
- package/src/assurance.ts +236 -6
- package/src/capabilities.ts +14 -1
- package/src/diff.ts +5 -2
- package/src/errors.ts +1 -0
- package/src/evidence.ts +319 -0
- package/src/execution-policy.ts +57 -0
- package/src/index.ts +1 -1
- package/src/internal/route-assurance.ts +67 -4
- package/src/internal/route-execution.ts +276 -1
- package/src/manifest.ts +27 -5
- package/src/reflection.ts +24 -4
- package/src/replay.ts +96 -0
- package/src/schema/standard.ts +16 -0
- package/src/server/body.ts +275 -7
- package/src/server/context.ts +23 -3
- package/src/server/contract.ts +43 -3
- package/src/server/cookies.ts +80 -10
- package/src/server/edge.ts +10 -0
- package/src/server/header-case.ts +54 -0
- package/src/server/headers.ts +11 -0
- package/src/server/node-outcome-hook.ts +6 -11
- package/src/server/node-outcome.ts +10 -2
- package/src/server/plugin.ts +87 -8
- package/src/server/proto-guard.ts +118 -0
- package/src/server/registry.ts +6 -2
- package/src/server/request-context.ts +242 -26
- package/src/server/respond.ts +35 -4
- package/src/server/response-contract-lane.ts +6 -17
- package/src/server/response-hooks.ts +51 -0
- package/src/server/runtime-core.ts +14 -0
- package/src/server/server-types.ts +66 -6
- package/src/server/server.ts +672 -287
- package/src/server/static-headers.ts +27 -3
- package/src/server/transport-lane.ts +19 -8
- package/src/server/websocket.ts +18 -2
- package/src/server.ts +7 -0
- package/src/tool-catalog.ts +40 -0
- package/src/tool-contract.ts +896 -0
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { drainCapped, parseContentLength, readBoundedBytes } from "./body.js";
|
|
2
|
-
import { parseCookies, serializeCookie } from "./cookies.js";
|
|
1
|
+
import { applyTransportCap, drainCapped, hasTrustedBodyFraming, parseContentLength, RAW_BODY_READERS, readBoundedBytes, } from "./body.js";
|
|
2
|
+
import { cookieNamePrefix, parseCookies, serializeCookie } from "./cookies.js";
|
|
3
|
+
import { headerObjectOf } from "./headers.js";
|
|
3
4
|
import { jsonError } from "./http.js";
|
|
5
|
+
import { guardParsedValue, parseJsonGuarded } from "./proto-guard.js";
|
|
4
6
|
import { searchOf } from "./query.js";
|
|
5
|
-
import { CONTEXT_SEARCH, CONTEXT_SET, fallbackWaitUntil, getNeverAbortSignal, getUnboundedRequestBudget, headerOf, requestOf, TEXT_DECODER, } from "./runtime-core.js";
|
|
7
|
+
import { CONTEXT_SEARCH, CONTEXT_SET, fallbackWaitUntil, getNeverAbortSignal, getUnboundedRequestBudget, headerOf, PRE_DECODED_BODY, requestOf, TEXT_DECODER, } from "./runtime-core.js";
|
|
6
8
|
/** A fixed past instant for cookie deletion (`Expires`). A literal epoch - deterministic, unlike an
|
|
7
9
|
* argless `new Date()`. */
|
|
8
10
|
const EPOCH = new Date(0);
|
|
@@ -35,8 +37,11 @@ class LazyResponseControls {
|
|
|
35
37
|
}
|
|
36
38
|
deleteCookie(name, options) {
|
|
37
39
|
// Expire immediately; default Path=/, and match the original path/domain or the browser keeps it.
|
|
40
|
+
// A prefixed name gets Secure on the deletion write too - the browser holds the deletion
|
|
41
|
+
// Set-Cookie to the same prefix contract as the original, and rejects it without.
|
|
38
42
|
this._cookies ??= [];
|
|
39
|
-
|
|
43
|
+
const base = { path: "/", ...options, maxAge: 0, expires: EPOCH };
|
|
44
|
+
this._cookies.push(serializeCookie(name, "", cookieNamePrefix(name) !== undefined ? { ...base, secure: true } : base));
|
|
40
45
|
}
|
|
41
46
|
}
|
|
42
47
|
/** Coerce `c.json`/`c.text`'s second arg - a status number (the common case) or a full `ResponseInit`. */
|
|
@@ -44,20 +49,23 @@ function statusInit(init) {
|
|
|
44
49
|
return typeof init === "number" ? { status: init } : init;
|
|
45
50
|
}
|
|
46
51
|
export class RequestContext {
|
|
47
|
-
constructor(source, params, searchOrMaxBodyBytes,
|
|
52
|
+
constructor(source, params, searchOrMaxBodyBytes, signalOrProtoPoisoning, budget, platform, maxBodyBytes, protoPoisoning) {
|
|
48
53
|
this.source = source;
|
|
49
54
|
this.params = params;
|
|
50
55
|
if (typeof searchOrMaxBodyBytes === "number") {
|
|
51
56
|
this.maxBodyBytes = searchOrMaxBodyBytes;
|
|
57
|
+
this.protoPoisoning =
|
|
58
|
+
typeof signalOrProtoPoisoning === "string" ? signalOrProtoPoisoning : "reject";
|
|
52
59
|
return;
|
|
53
60
|
}
|
|
54
61
|
if (searchOrMaxBodyBytes !== undefined)
|
|
55
62
|
this.searchValue = searchOrMaxBodyBytes;
|
|
56
|
-
this.signalValue =
|
|
63
|
+
this.signalValue = signalOrProtoPoisoning;
|
|
57
64
|
this.budgetValue = budget;
|
|
58
65
|
if (platform !== undefined)
|
|
59
66
|
this.platformValue = platform;
|
|
60
67
|
this.maxBodyBytes = maxBodyBytes;
|
|
68
|
+
this.protoPoisoning = protoPoisoning ?? "reject";
|
|
61
69
|
}
|
|
62
70
|
/**
|
|
63
71
|
* The no-timeout context: `c.signal`/`c.budget` fall back to the never-abort signal and the
|
|
@@ -65,8 +73,8 @@ export class RequestContext {
|
|
|
65
73
|
* are left unwritten instead of initialized. `search` carries the router's already-split query
|
|
66
74
|
* string when it has one; `undefined` leaves `c.query` to re-scan the URL lazily.
|
|
67
75
|
*/
|
|
68
|
-
static native(source, params, search, maxBodyBytes, platform) {
|
|
69
|
-
const context = new RequestContext(source, params, maxBodyBytes);
|
|
76
|
+
static native(source, params, search, maxBodyBytes, platform, protoPoisoning) {
|
|
77
|
+
const context = new RequestContext(source, params, maxBodyBytes, protoPoisoning);
|
|
70
78
|
if (search !== undefined)
|
|
71
79
|
context.searchValue = search;
|
|
72
80
|
if (platform !== undefined)
|
|
@@ -102,14 +110,27 @@ export class RequestContext {
|
|
|
102
110
|
return this.platformValue?.waitUntil ?? fallbackWaitUntil;
|
|
103
111
|
}
|
|
104
112
|
get req() {
|
|
105
|
-
|
|
113
|
+
// A dispatcher-marked source gets its route's transport byte cap applied here - at the moment
|
|
114
|
+
// user code reaches for the request - so routes that never direct-read the body pay nothing.
|
|
115
|
+
const request = requestOf(this.source);
|
|
116
|
+
applyTransportCap(this.source, request);
|
|
117
|
+
return request;
|
|
106
118
|
}
|
|
107
119
|
get request() {
|
|
108
|
-
|
|
120
|
+
const request = requestOf(this.source);
|
|
121
|
+
applyTransportCap(this.source, request);
|
|
122
|
+
return request;
|
|
109
123
|
}
|
|
110
124
|
header(name) {
|
|
111
125
|
return headerOf(this.source, name);
|
|
112
126
|
}
|
|
127
|
+
get headers() {
|
|
128
|
+
this.headersValue ??= headerObjectOf(this.source.headers);
|
|
129
|
+
return this.headersValue;
|
|
130
|
+
}
|
|
131
|
+
set headers(value) {
|
|
132
|
+
this.headersValue = value;
|
|
133
|
+
}
|
|
113
134
|
json(body, init) {
|
|
114
135
|
return Response.json(body, statusInit(init));
|
|
115
136
|
}
|
|
@@ -139,7 +160,7 @@ export class RequestContext {
|
|
|
139
160
|
return readBoundedBodyOrThrow(this.source, this.maxBodyBytes, maxBytes);
|
|
140
161
|
}
|
|
141
162
|
boundedJson(maxBytes) {
|
|
142
|
-
return readBoundedJsonBodyOrThrow(this.source, this.maxBodyBytes, maxBytes);
|
|
163
|
+
return readBoundedJsonBodyOrThrow(this.source, this.maxBodyBytes, this.protoPoisoning, maxBytes);
|
|
143
164
|
}
|
|
144
165
|
}
|
|
145
166
|
/** Backs `c.boundedBody`: bounded byte read that throws a flat 413/400 `Response` (caught by
|
|
@@ -153,20 +174,36 @@ async function readBoundedBodyOrThrow(req, maxBodyBytes, maxBytes) {
|
|
|
153
174
|
? jsonError(413, "payload_too_large")
|
|
154
175
|
: jsonError(400, "invalid_content_length");
|
|
155
176
|
}
|
|
156
|
-
/** Backs `c.boundedJson`: `
|
|
157
|
-
async function readBoundedJsonBodyOrThrow(req, maxBodyBytes, maxBytes) {
|
|
158
|
-
const parsed = await readBoundedJsonSource(req, maxBytes ?? maxBodyBytes);
|
|
177
|
+
/** Backs `c.boundedJson`: `readBoundedJsonSource`, throwing its flat 400/413 on failure. */
|
|
178
|
+
async function readBoundedJsonBodyOrThrow(req, maxBodyBytes, protoPoisoning, maxBytes) {
|
|
179
|
+
const parsed = await readBoundedJsonSource(req, maxBytes ?? maxBodyBytes, protoPoisoning);
|
|
159
180
|
if (parsed instanceof Response)
|
|
160
181
|
throw parsed;
|
|
161
182
|
return parsed;
|
|
162
183
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
184
|
+
export function readBoundedJsonSource(req, maxBytes, protoPoisoning = "reject", onResult, onError) {
|
|
185
|
+
// A pre-parsing hook (the transport-codec lane) may have decoded the body already - its stash
|
|
186
|
+
// is taken verbatim: the stasher enforced its own byte cap and poisoning policy on text this
|
|
187
|
+
// lane never sees. One symbol read; a miss on ordinary requests costs a cache-line, not a parse.
|
|
188
|
+
const preDecoded = req[PRE_DECODED_BODY];
|
|
189
|
+
if (preDecoded !== undefined) {
|
|
190
|
+
return onResult === undefined
|
|
191
|
+
? Promise.resolve(preDecoded.value)
|
|
192
|
+
: Promise.resolve(preDecoded.value).then(onResult);
|
|
193
|
+
}
|
|
194
|
+
// Read through the pre-cap readers when the request is transport-capped: this lane enforces its
|
|
195
|
+
// own `maxBytes` (which may exceed the route's transport cap), so the shadowed user-facing
|
|
196
|
+
// readers must not narrow it.
|
|
197
|
+
// Keep the source's header dispatch local: the normal Node source exposes a direct `header`
|
|
198
|
+
// lookup, while a Web Request only exposes `Headers.get`. Rechecking that optional method through
|
|
199
|
+
// `headerOf` twice per body is measurable on the framed lane. The raw-reader shadow is still
|
|
200
|
+
// bypassed for reads, but header authority remains the original source (same semantics as before).
|
|
201
|
+
const raw = (req[RAW_BODY_READERS] ??
|
|
202
|
+
req);
|
|
203
|
+
const sourceHeader = req.header;
|
|
204
|
+
const declared = sourceHeader === undefined
|
|
205
|
+
? req.headers.get("content-length")
|
|
206
|
+
: sourceHeader.call(req, "content-length");
|
|
170
207
|
if (declared !== null) {
|
|
171
208
|
// A present Content-Length must be a non-negative integer (HTTP grammar: `1*DIGIT`). A
|
|
172
209
|
// non-numeric / negative / fractional / exponential value (`Number()` would happily accept
|
|
@@ -176,27 +213,117 @@ export async function readBoundedJsonSource(req, maxBytes) {
|
|
|
176
213
|
// hardens hand-built Requests (tests, the in-process client) and crafted input.
|
|
177
214
|
const length = parseContentLength(declared);
|
|
178
215
|
if (length === undefined)
|
|
179
|
-
return
|
|
216
|
+
return onResult === undefined
|
|
217
|
+
? Promise.resolve(jsonError(400, "invalid_content_length"))
|
|
218
|
+
: Promise.resolve(jsonError(400, "invalid_content_length")).then(onResult);
|
|
180
219
|
if (length > maxBytes)
|
|
181
|
-
return
|
|
182
|
-
|
|
220
|
+
return onResult === undefined
|
|
221
|
+
? Promise.resolve(jsonError(413, "payload_too_large"))
|
|
222
|
+
: Promise.resolve(jsonError(413, "payload_too_large")).then(onResult);
|
|
223
|
+
const chunked = (sourceHeader === undefined
|
|
224
|
+
? req.headers.get("transfer-encoding")
|
|
225
|
+
: sourceHeader.call(req, "transfer-encoding")) !== null;
|
|
183
226
|
if (!chunked) {
|
|
184
|
-
|
|
185
|
-
|
|
227
|
+
// Bun's compiled native route table receives a Request whose bytes were already delimited by
|
|
228
|
+
// Bun's HTTP parser. Keep the exact-byte path for every portable/adapted source, but preserve
|
|
229
|
+
// Bun's fused decode+parse on this trusted ingress; the declared length is the transport frame
|
|
230
|
+
// there, not an attacker-controlled hint. The parsed-value poisoning walk still applies.
|
|
231
|
+
if (hasTrustedBodyFraming(req)) {
|
|
232
|
+
return raw.json().then((parsed) => {
|
|
233
|
+
let guarded;
|
|
234
|
+
try {
|
|
235
|
+
guarded = guardParsedValue(parsed, protoPoisoning);
|
|
236
|
+
}
|
|
237
|
+
catch {
|
|
238
|
+
return onResult === undefined
|
|
239
|
+
? jsonError(400, "invalid_json")
|
|
240
|
+
: onResult(jsonError(400, "invalid_json"));
|
|
241
|
+
}
|
|
242
|
+
return onResult === undefined ? guarded : onResult(guarded);
|
|
243
|
+
}, () => (onResult === undefined ? INVALID_JSON() : onResult(INVALID_JSON())));
|
|
244
|
+
}
|
|
245
|
+
const jsonWithByteLength = raw.jsonWithByteLength;
|
|
246
|
+
if (jsonWithByteLength !== undefined) {
|
|
247
|
+
return jsonWithByteLength.call(raw).then(({ value, byteLength }) => {
|
|
248
|
+
if (byteLength > length || byteLength > maxBytes) {
|
|
249
|
+
return onResult === undefined
|
|
250
|
+
? jsonError(413, "payload_too_large")
|
|
251
|
+
: onResult(jsonError(413, "payload_too_large"));
|
|
252
|
+
}
|
|
253
|
+
let guarded;
|
|
254
|
+
try {
|
|
255
|
+
guarded = guardParsedValue(value, protoPoisoning);
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
return onResult === undefined
|
|
259
|
+
? jsonError(400, "invalid_json")
|
|
260
|
+
: onResult(jsonError(400, "invalid_json"));
|
|
261
|
+
}
|
|
262
|
+
return onResult === undefined ? guarded : onResult(guarded);
|
|
263
|
+
}, () => (onResult === undefined ? INVALID_JSON() : onResult(INVALID_JSON())));
|
|
186
264
|
}
|
|
187
|
-
|
|
188
|
-
|
|
265
|
+
const bytesReader = raw.bytes;
|
|
266
|
+
if (bytesReader !== undefined) {
|
|
267
|
+
return bytesReader.call(raw).then((bytes) => {
|
|
268
|
+
if (bytes.byteLength > length || bytes.byteLength > maxBytes) {
|
|
269
|
+
return onResult === undefined
|
|
270
|
+
? jsonError(413, "payload_too_large")
|
|
271
|
+
: onResult(jsonError(413, "payload_too_large"));
|
|
272
|
+
}
|
|
273
|
+
try {
|
|
274
|
+
const parsed = parseJsonGuarded(TEXT_DECODER.decode(bytes), protoPoisoning);
|
|
275
|
+
return onResult === undefined ? parsed : onResult(parsed);
|
|
276
|
+
}
|
|
277
|
+
catch {
|
|
278
|
+
return onResult === undefined
|
|
279
|
+
? jsonError(400, "invalid_json")
|
|
280
|
+
: onResult(jsonError(400, "invalid_json"));
|
|
281
|
+
}
|
|
282
|
+
}, () => (onResult === undefined ? INVALID_JSON() : onResult(INVALID_JSON())));
|
|
189
283
|
}
|
|
284
|
+
// Read the actual framed bytes before parsing. A declared length is only a hint on Web
|
|
285
|
+
// Requests and adapter-shaped sources: a caller can construct a Request (or an adapter can
|
|
286
|
+
// decode/expand a body) whose header claims fewer bytes than the delivered payload. Calling
|
|
287
|
+
// native `json()` here would accept that understatement and bypass the cap. The byte lane
|
|
288
|
+
// already owns this post-read check; keeping the JSON lane on the same raw-byte read makes the
|
|
289
|
+
// trust boundary consistent. `Uint8Array(buffer)` is a view, not a copy.
|
|
290
|
+
return raw.arrayBuffer().then((buffer) => {
|
|
291
|
+
const bytes = new Uint8Array(buffer);
|
|
292
|
+
if (bytes.byteLength > length || bytes.byteLength > maxBytes) {
|
|
293
|
+
return onResult === undefined
|
|
294
|
+
? jsonError(413, "payload_too_large")
|
|
295
|
+
: onResult(jsonError(413, "payload_too_large"));
|
|
296
|
+
}
|
|
297
|
+
let parsed;
|
|
298
|
+
try {
|
|
299
|
+
parsed = parseJsonGuarded(TEXT_DECODER.decode(bytes), protoPoisoning);
|
|
300
|
+
}
|
|
301
|
+
catch {
|
|
302
|
+
return onResult === undefined
|
|
303
|
+
? jsonError(400, "invalid_json")
|
|
304
|
+
: onResult(jsonError(400, "invalid_json"));
|
|
305
|
+
}
|
|
306
|
+
return onResult === undefined ? parsed : onResult(parsed);
|
|
307
|
+
}, () => (onResult === undefined ? INVALID_JSON() : onResult(INVALID_JSON())));
|
|
190
308
|
}
|
|
191
309
|
}
|
|
192
|
-
const
|
|
310
|
+
const streamed = readStreamedJsonSource(raw, maxBytes, protoPoisoning);
|
|
311
|
+
return onResult === undefined ? streamed : streamed.then(onResult, onError);
|
|
312
|
+
}
|
|
313
|
+
/** The shared rejection handler for a body read that never completed (client abort, socket error,
|
|
314
|
+
* malformed framing): the same flat 400 a syntactically invalid body gets. Hoisted so the framed
|
|
315
|
+
* lane allocates no per-request closure for it. */
|
|
316
|
+
const INVALID_JSON = () => jsonError(400, "invalid_json");
|
|
317
|
+
/** The chunked / length-less fallback: drain under the streaming byte cap, then parse guarded. */
|
|
318
|
+
async function readStreamedJsonSource(raw, maxBytes, protoPoisoning) {
|
|
319
|
+
const body = raw.body;
|
|
193
320
|
if (body === null)
|
|
194
321
|
return jsonError(400, "invalid_json");
|
|
195
322
|
const drained = await drainCapped(body, maxBytes);
|
|
196
323
|
if (!drained.ok)
|
|
197
324
|
return jsonError(413, "payload_too_large");
|
|
198
325
|
try {
|
|
199
|
-
return
|
|
326
|
+
return parseJsonGuarded(TEXT_DECODER.decode(drained.bytes), protoPoisoning);
|
|
200
327
|
}
|
|
201
328
|
catch {
|
|
202
329
|
return jsonError(400, "invalid_json");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/server/request-context.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/server/request-context.ts"],"names":[],"mappings":"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"}
|
package/dist/server/respond.d.ts
CHANGED
|
@@ -33,10 +33,10 @@ export declare function markTaggedResponse(response: Response, body: string | Ui
|
|
|
33
33
|
/** Fused-lane respond when `c.set` is untouched. Bun 1.3's native `Response.json` now beats the
|
|
34
34
|
* older hand-inlined stringify + Response construction on this lane while preserving the exact
|
|
35
35
|
* body/content-type contract; keep the generic fallback for non-JSON values. */
|
|
36
|
-
export declare function fusedRespondNoSet(result: unknown, tagResponseBody?: ResponseBodyTagOption, statics?: StaticResponseHeaders): Response;
|
|
36
|
+
export declare function fusedRespondNoSet(result: unknown, tagResponseBody?: ResponseBodyTagOption, statics?: StaticResponseHeaders, unstamped?: boolean): Response;
|
|
37
37
|
/** Fused-lane respond with a context: read `c.set` once; untouched (the common case) -> the fast
|
|
38
38
|
* JSON respond; touched -> the generic `toResponse` with those controls (statuses, headers, cookies). */
|
|
39
|
-
export declare function fusedRespond(result: unknown, ctx: RawContext, tagResponseBody?: ResponseBodyTagOption, statics?: StaticResponseHeaders): Response;
|
|
39
|
+
export declare function fusedRespond(result: unknown, ctx: RawContext, tagResponseBody?: ResponseBodyTagOption, statics?: StaticResponseHeaders, unstamped?: boolean): Response;
|
|
40
40
|
export declare function toResponse(result: HandlerResult, set: CtxSet, tagResponseBody?: ResponseBodyTagOption, statics?: StaticResponseHeaders): Response;
|
|
41
41
|
export declare function appendCookiesToResponse(response: Response, set: CtxSet): Response;
|
|
42
42
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../src/server/respond.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAA2B,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAoBzF;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACvC,qBAAqB,CAiBvB;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,qBAAqB,GAC7B,QAAQ,CAeV;
|
|
1
|
+
{"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../src/server/respond.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAA2B,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAoBzF;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACvC,qBAAqB,CAiBvB;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,qBAAqB,GAC7B,QAAQ,CAeV;AA0GD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAE7D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAE7D;AAYD,0FAA0F;AAC1F,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAYtE;AAOD,KAAK,qBAAqB,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAA;AAE9D,qGAAqG;AACrG,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3B,MAAM,GAAG,UAAU,GAAG,SAAS,CAqBjC;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAO1E;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,KAAK,CAAC,EAAE,MAAM,GACb,QAAQ,CAKV;AAiBD;;gFAEgF;AAChF,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,OAAO,EACf,eAAe,GAAE,qBAA6B,EAC9C,OAAO,CAAC,EAAE,qBAAqB,EAC/B,SAAS,UAAQ,GAChB,QAAQ,CA0EV;AAED;yGACyG;AACzG,wBAAgB,YAAY,CAC1B,MAAM,EAAE,OAAO,EACf,GAAG,EAAE,UAAU,EACf,eAAe,GAAE,qBAA6B,EAC9C,OAAO,CAAC,EAAE,qBAAqB,EAC/B,SAAS,UAAQ,GAChB,QAAQ,CAIV;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,aAAa,EACrB,GAAG,EAAE,MAAM,EACX,eAAe,GAAE,qBAA6B,EAC9C,OAAO,CAAC,EAAE,qBAAqB,GAC9B,QAAQ,CAiEV;AAsBD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CAUjF"}
|
package/dist/server/respond.js
CHANGED
|
@@ -90,9 +90,14 @@ function withStatics(response, statics) {
|
|
|
90
90
|
return statics === undefined ? response : applyStaticResponseHeaders(response, statics);
|
|
91
91
|
}
|
|
92
92
|
function applyStaticDefaults(headers, statics) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
// Indexed with an explicit tuple read, not `for...of` with array destructuring: the destructuring
|
|
94
|
+
// pattern is itself an iterator walk, so the pair form pays two iterator protocols per header.
|
|
95
|
+
// Measured on a 5-header set: 211ns cheaper on Bun, 56ns on Node.
|
|
96
|
+
const entries = statics.entries;
|
|
97
|
+
for (let i = 0; i < entries.length; i++) {
|
|
98
|
+
const entry = entries[i];
|
|
99
|
+
if (!headers.has(entry[0]))
|
|
100
|
+
headers.set(entry[0], entry[1]);
|
|
96
101
|
}
|
|
97
102
|
}
|
|
98
103
|
/** Fold the static defaults under whatever shape the request's own headers took. */
|
|
@@ -214,7 +219,24 @@ function tagged(response, body, tagResponseBody) {
|
|
|
214
219
|
/** Fused-lane respond when `c.set` is untouched. Bun 1.3's native `Response.json` now beats the
|
|
215
220
|
* older hand-inlined stringify + Response construction on this lane while preserving the exact
|
|
216
221
|
* body/content-type contract; keep the generic fallback for non-JSON values. */
|
|
217
|
-
export function fusedRespondNoSet(result, tagResponseBody = false, statics) {
|
|
222
|
+
export function fusedRespondNoSet(result, tagResponseBody = false, statics, unstamped = false) {
|
|
223
|
+
// With no response hook registered, no code path ever asks whether these headers are mutable, so
|
|
224
|
+
// stamping the Headers object into the mutability WeakSet is dead work - `Response.json` alone is
|
|
225
|
+
// cheaper on Bun than the same construction plus the WeakSet write. `unstamped` is the caller's
|
|
226
|
+
// assertion that the hook walk is empty; an app that registers ANY response hook keeps the stamp,
|
|
227
|
+
// because the alternative is the set/delete mutability probe on every single response (each one
|
|
228
|
+
// carries a fresh `Headers`, so the probe's memo never amortizes) - measured 19% slower than
|
|
229
|
+
// stamping. Default false: an unknown caller pays one WeakSet write rather than a probe per response.
|
|
230
|
+
if (unstamped &&
|
|
231
|
+
(tagResponseBody === false || tagResponseBody === undefined) &&
|
|
232
|
+
statics === undefined &&
|
|
233
|
+
result !== undefined &&
|
|
234
|
+
typeof result === "object" &&
|
|
235
|
+
result !== null &&
|
|
236
|
+
!(result instanceof Response) &&
|
|
237
|
+
!isResponseResult(result)) {
|
|
238
|
+
return Response.json(result);
|
|
239
|
+
}
|
|
218
240
|
if (result !== undefined &&
|
|
219
241
|
!(result instanceof Response) &&
|
|
220
242
|
typeof result === "object" &&
|
|
@@ -227,8 +249,12 @@ export function fusedRespondNoSet(result, tagResponseBody = false, statics) {
|
|
|
227
249
|
// one-call prebuilt init below.
|
|
228
250
|
if (statics !== undefined && IS_DENO && !tagResponseBody) {
|
|
229
251
|
const response = Response.json(result);
|
|
230
|
-
for
|
|
231
|
-
|
|
252
|
+
// Indexed for the same reason as `applyStaticDefaults`: pair destructuring is a second
|
|
253
|
+
// iterator walk per header.
|
|
254
|
+
for (let i = 0; i < statics.entries.length; i++) {
|
|
255
|
+
const entry = statics.entries[i];
|
|
256
|
+
response.headers.set(entry[0], entry[1]);
|
|
257
|
+
}
|
|
232
258
|
return stamped(response);
|
|
233
259
|
}
|
|
234
260
|
// With declared static headers the prebuilt init already carries them plus the JSON
|
|
@@ -254,10 +280,10 @@ export function fusedRespondNoSet(result, tagResponseBody = false, statics) {
|
|
|
254
280
|
}
|
|
255
281
|
/** Fused-lane respond with a context: read `c.set` once; untouched (the common case) -> the fast
|
|
256
282
|
* JSON respond; touched -> the generic `toResponse` with those controls (statuses, headers, cookies). */
|
|
257
|
-
export function fusedRespond(result, ctx, tagResponseBody = false, statics) {
|
|
283
|
+
export function fusedRespond(result, ctx, tagResponseBody = false, statics, unstamped = false) {
|
|
258
284
|
const set = ctx[CONTEXT_SET]();
|
|
259
285
|
if (set === undefined)
|
|
260
|
-
return fusedRespondNoSet(result, tagResponseBody, statics);
|
|
286
|
+
return fusedRespondNoSet(result, tagResponseBody, statics, unstamped);
|
|
261
287
|
return toResponse(result, set, tagResponseBody, statics);
|
|
262
288
|
}
|
|
263
289
|
export function toResponse(result, set, tagResponseBody = false, statics) {
|
|
@@ -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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"}
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
* or lifecycle hook has already left that lane, so for the routes that look like production the
|
|
42
42
|
* contract is effectively free - declare it.
|
|
43
43
|
*/
|
|
44
|
-
import type
|
|
44
|
+
import { type StandardSchemaV1 } from "../schema/standard.js";
|
|
45
45
|
import type { IdentityPlugin } from "./plugin.js";
|
|
46
46
|
/**
|
|
47
47
|
* How hard a declared `response` schema is held.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-contract-lane.d.ts","sourceRoot":"","sources":["../../src/server/response-contract-lane.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"response-contract-lane.d.ts","sourceRoot":"","sources":["../../src/server/response-contract-lane.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAGjD;;;;;;;;GAQG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAAA;AAErD,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;AAW5D;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAQ5D;AA0BD;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAA;IACnC,KAAK,CACH,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,OAAO,GACd,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;CAC9D;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,oBAA6B,GAAG,cAAc,CAUpF"}
|
|
@@ -1,3 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Making a route's declared `response` schema mean something at runtime.
|
|
3
|
+
*
|
|
4
|
+
* ## The gap this closes
|
|
5
|
+
*
|
|
6
|
+
* A `response` schema is a LOWER bound, not an upper one. It says "at least these fields, of these
|
|
7
|
+
* types"; it never said "only these". TypeScript does not close the gap either - excess-property
|
|
8
|
+
* checking fires on a fresh object literal in an annotated position, and a handler is neither: it is a
|
|
9
|
+
* contextually-typed argument that usually returns a variable. So this compiles, and ships every field:
|
|
10
|
+
*
|
|
11
|
+
* app.get("/me", { response: PublicUser }, async () => {
|
|
12
|
+
* const user = await db.users.find(id) // { id, name, email, passwordHash, ... }
|
|
13
|
+
* return user // all of it goes on the wire
|
|
14
|
+
* })
|
|
15
|
+
*
|
|
16
|
+
* The client's type says `{ id, name }`, so the leak is invisible from both ends. And it can appear
|
|
17
|
+
* with no code change at all: add a column to `users`, and the next deploy ships it to browsers.
|
|
18
|
+
*
|
|
19
|
+
* ## Why the behaviour follows the schema, not this module
|
|
20
|
+
*
|
|
21
|
+
* Standard Schema exposes exactly one operation - `validate` - and no way to enumerate a schema's
|
|
22
|
+
* declared keys. So a projection of "just the declared fields" cannot be written generically here;
|
|
23
|
+
* the only clean value available is whatever `validate()` returns. That is deliberate on the spec's
|
|
24
|
+
* part, and it means enforcement inherits each validator's own semantics:
|
|
25
|
+
*
|
|
26
|
+
* - a STRIPPING schema (zod, valibot) returns a cleaned value -> the undeclared fields are removed
|
|
27
|
+
* - a STRICT schema (`@nifrajs/schema`'s `t.object`) reports issues -> the response is a violation
|
|
28
|
+
*
|
|
29
|
+
* That is not an inconsistency to paper over: a strict schema has already declared that extra fields
|
|
30
|
+
* are an error, and a stripping one has declared they are ignorable. Enforcement honours what the
|
|
31
|
+
* author wrote rather than overriding it.
|
|
32
|
+
*
|
|
33
|
+
* ## What enforcement costs
|
|
34
|
+
*
|
|
35
|
+
* Less than it looks like it should. With a compiled validator (`@nifrajs/schema`'s `t` compiles at
|
|
36
|
+
* construction; zod/valibot equivalents are similarly cheap), the check itself measures in the
|
|
37
|
+
* ~100ns-per-response range - on a realistic middleware-carrying route, enforce mode benchmarks
|
|
38
|
+
* within measurement noise of the same route with no contract at all, on Bun and Node alike. The
|
|
39
|
+
* one real cost is structural: a contracted route cannot take the bare-route fused lane, because
|
|
40
|
+
* the check needs the handler's VALUE before it becomes bytes. A route with any middleware, derive,
|
|
41
|
+
* or lifecycle hook has already left that lane, so for the routes that look like production the
|
|
42
|
+
* contract is effectively free - declare it.
|
|
43
|
+
*/
|
|
44
|
+
import { formatStandardIssues, } from "../schema/standard.js";
|
|
1
45
|
import { INSTALL_RESPONSE_CONTRACT } from "./install.js";
|
|
2
46
|
const isPlainObject = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
3
47
|
/** Top-level keys present in the handler's result but absent from the validated value. */
|
|
@@ -6,18 +50,6 @@ function droppedKeys(result, value) {
|
|
|
6
50
|
return [];
|
|
7
51
|
return Object.keys(result).filter((k) => !(k in value));
|
|
8
52
|
}
|
|
9
|
-
function describeIssues(issues) {
|
|
10
|
-
return issues
|
|
11
|
-
.map((issue) => {
|
|
12
|
-
const path = Array.isArray(issue.path)
|
|
13
|
-
? issue.path
|
|
14
|
-
.map((seg) => String(typeof seg === "object" && seg !== null ? seg.key : seg))
|
|
15
|
-
.join(".")
|
|
16
|
-
: "";
|
|
17
|
-
return path === "" ? issue.message : `${path}: ${issue.message}`;
|
|
18
|
-
})
|
|
19
|
-
.join("; ");
|
|
20
|
-
}
|
|
21
53
|
/**
|
|
22
54
|
* Check one result against the route's declared response schema.
|
|
23
55
|
*
|
|
@@ -36,7 +68,7 @@ export function checkResponseContract(schema, result, mode) {
|
|
|
36
68
|
}
|
|
37
69
|
function interpret(settled, result, mode) {
|
|
38
70
|
if (settled.issues !== undefined) {
|
|
39
|
-
const message = `response does not satisfy its declared contract: ${
|
|
71
|
+
const message = `response does not satisfy its declared contract: ${formatStandardIssues(settled.issues)}`;
|
|
40
72
|
// `warn` never changes what is served - it reports and gets out of the way, so switching it on can
|
|
41
73
|
// never be the thing that broke production.
|
|
42
74
|
return mode === "warn"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-contract-lane.js","sourceRoot":"","sources":["../../src/server/response-contract-lane.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"response-contract-lane.js","sourceRoot":"","sources":["../../src/server/response-contract-lane.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { NodeResponseContext, ResponseBodyReplacement } from "./node-outcome-hook.js";
|
|
2
|
+
export declare function isBodylessStatus(status: number): boolean;
|
|
3
|
+
/** Apply a body hook's return to the native response outcome. */
|
|
4
|
+
export declare function applyBodyReplacement(response: NodeResponseContext, replaced: string | Uint8Array | ResponseBodyReplacement | undefined): void;
|
|
5
|
+
/**
|
|
6
|
+
* Swap a tagged Response's body for a hook's replacement, re-tagging so later body hooks and the Node
|
|
7
|
+
* fallback's direct writer see the new bytes. Explicit lengths are dropped so framing is re-derived.
|
|
8
|
+
*/
|
|
9
|
+
export declare function withReplacedBody(response: Response, replaced: string | Uint8Array | ResponseBodyReplacement | undefined): Response;
|
|
10
|
+
//# sourceMappingURL=response-hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-hooks.d.ts","sourceRoot":"","sources":["../../src/server/response-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAG1F,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,iEAAiE;AACjE,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,mBAAmB,EAC7B,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,uBAAuB,GAAG,SAAS,GAClE,IAAI,CASN;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,uBAAuB,GAAG,SAAS,GAClE,QAAQ,CAqBV"}
|