@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
|
@@ -10,6 +10,7 @@ import { markAuthenticatedRequest } from "../server/auth.js";
|
|
|
10
10
|
import { declaredHeaderNames } from "../server/headers.js";
|
|
11
11
|
import { pathnameOf } from "../server/http.js";
|
|
12
12
|
import { queryObjectOf } from "../server/query.js";
|
|
13
|
+
import { toResponse } from "../server/respond.js";
|
|
13
14
|
import { CONTEXT_SEARCH, CONTEXT_SET, EMPTY_RESPONSE_CONTROLS, isResponseResult, requestOf, status, } from "../server/runtime-core.js";
|
|
14
15
|
/** Build the immutable stage sequence once, while the server is still configurable. */
|
|
15
16
|
export function compileRouteProgram(input) {
|
|
@@ -119,6 +120,70 @@ function authenticationInputOf(source, ctx) {
|
|
|
119
120
|
signal: ctx.signal,
|
|
120
121
|
});
|
|
121
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Run the `authenticate()` stages a mount was registered after, in order, against the request the
|
|
125
|
+
* mount would receive: `undefined` once each one authenticated, else the response that refuses it. A
|
|
126
|
+
* stage that throws or decides nothing valid answers 503, and its cause goes to `logger`, as a route
|
|
127
|
+
* error no hook answers does.
|
|
128
|
+
*/
|
|
129
|
+
export function authenticateMount(stages, request, platform, logger) {
|
|
130
|
+
let query;
|
|
131
|
+
const search = (() => {
|
|
132
|
+
const at = request.url.indexOf("?");
|
|
133
|
+
return at === -1 ? "" : request.url.slice(at);
|
|
134
|
+
})();
|
|
135
|
+
const input = Object.freeze({
|
|
136
|
+
method: request.method,
|
|
137
|
+
pathname: pathnameOf(request.url),
|
|
138
|
+
headers: authHeadersOf(request),
|
|
139
|
+
params: Object.freeze({}),
|
|
140
|
+
search,
|
|
141
|
+
get query() {
|
|
142
|
+
query ??= frozenQueryOf(search);
|
|
143
|
+
return query;
|
|
144
|
+
},
|
|
145
|
+
request,
|
|
146
|
+
env: platform?.env,
|
|
147
|
+
clientIp: platform?.clientIp,
|
|
148
|
+
signal: request.signal,
|
|
149
|
+
});
|
|
150
|
+
const unavailable = (error) => {
|
|
151
|
+
logger.error("authenticate() stage failed before a mount", {
|
|
152
|
+
method: request.method,
|
|
153
|
+
path: input.pathname,
|
|
154
|
+
error: error instanceof Error ? error.message : String(error),
|
|
155
|
+
});
|
|
156
|
+
return toResponse(defaultAuthenticationResponse("unavailable"), EMPTY_RESPONSE_CONTROLS);
|
|
157
|
+
};
|
|
158
|
+
const decide = (index, result) => {
|
|
159
|
+
if (!isAuthenticationDecision(result)) {
|
|
160
|
+
const id = stages[index]?.id;
|
|
161
|
+
return unavailable(new TypeError(`authenticate() stage "${id}" returned an invalid decision`));
|
|
162
|
+
}
|
|
163
|
+
if (result.kind === "rejected") {
|
|
164
|
+
const refusal = result.response ?? defaultAuthenticationResponse(result.reason);
|
|
165
|
+
return refusal instanceof Response ? refusal : toResponse(refusal, EMPTY_RESPONSE_CONTROLS);
|
|
166
|
+
}
|
|
167
|
+
markAuthenticatedRequest(request);
|
|
168
|
+
return run(index + 1);
|
|
169
|
+
};
|
|
170
|
+
const run = (index) => {
|
|
171
|
+
const stage = stages[index];
|
|
172
|
+
if (stage === undefined)
|
|
173
|
+
return undefined;
|
|
174
|
+
let outcome;
|
|
175
|
+
try {
|
|
176
|
+
outcome = stage.run(input);
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
return unavailable(error);
|
|
180
|
+
}
|
|
181
|
+
return outcome instanceof Promise
|
|
182
|
+
? outcome.then((settled) => decide(index, settled), unavailable)
|
|
183
|
+
: decide(index, outcome);
|
|
184
|
+
};
|
|
185
|
+
return run(0);
|
|
186
|
+
}
|
|
122
187
|
function defaultAuthenticationResponse(reason) {
|
|
123
188
|
if (reason === "forbidden")
|
|
124
189
|
return status(403, { ok: false, error: "forbidden" });
|
|
@@ -126,6 +191,20 @@ function defaultAuthenticationResponse(reason) {
|
|
|
126
191
|
return status(503, { ok: false, error: "auth_unavailable" });
|
|
127
192
|
return status(401, { ok: false, error: "unauthorized" });
|
|
128
193
|
}
|
|
194
|
+
/** Whether a stage returned a decision it may: a rejection with a known reason and a response, if
|
|
195
|
+
* any, that answers; or a principal. */
|
|
196
|
+
function isAuthenticationDecision(result) {
|
|
197
|
+
return (result !== null &&
|
|
198
|
+
typeof result === "object" &&
|
|
199
|
+
(result.kind === "rejected"
|
|
200
|
+
? validAuthenticationFailureReason(result.reason) &&
|
|
201
|
+
(result.response === undefined ||
|
|
202
|
+
result.response instanceof Response ||
|
|
203
|
+
isResponseResult(result.response))
|
|
204
|
+
: result.kind === "authenticated" &&
|
|
205
|
+
result.principal !== null &&
|
|
206
|
+
result.principal !== undefined));
|
|
207
|
+
}
|
|
129
208
|
function validAuthenticationFailureReason(value) {
|
|
130
209
|
return (value === undefined ||
|
|
131
210
|
value === "unauthenticated" ||
|
|
@@ -176,16 +255,7 @@ function runAuthenticationStages(host, entry, program, source, ctx, finalize, wr
|
|
|
176
255
|
return finishAuthentication(host, entry, program, source, ctx, finalize, wrapResponse, outcome, start + 1, validationComplete);
|
|
177
256
|
}
|
|
178
257
|
function finishAuthentication(host, entry, program, source, ctx, finalize, wrapResponse, result, next, validationComplete = false) {
|
|
179
|
-
if (result
|
|
180
|
-
typeof result !== "object" ||
|
|
181
|
-
(result.kind === "rejected"
|
|
182
|
-
? !validAuthenticationFailureReason(result.reason) ||
|
|
183
|
-
(result.response !== undefined &&
|
|
184
|
-
!(result.response instanceof Response) &&
|
|
185
|
-
!isResponseResult(result.response))
|
|
186
|
-
: result.kind !== "authenticated" ||
|
|
187
|
-
result.principal === null ||
|
|
188
|
-
result.principal === undefined)) {
|
|
258
|
+
if (!isAuthenticationDecision(result)) {
|
|
189
259
|
const id = program.authStages[next - 1].id;
|
|
190
260
|
const error = new TypeError(`authenticate() stage "${id}" returned an invalid decision`);
|
|
191
261
|
return failAuthentication(host, entry, ctx, finalize, wrapResponse, error);
|
|
@@ -223,7 +293,8 @@ async function continueFastAuthenticatedProgram(host, entry, program, source, ct
|
|
|
223
293
|
const settled = await pending;
|
|
224
294
|
if (settled !== undefined)
|
|
225
295
|
return wrapResponse(settled);
|
|
226
|
-
|
|
296
|
+
const outcome = runFastAuthenticatedProgram(host, entry, program, source, ctx, finalize, wrapResponse, validationIndex);
|
|
297
|
+
return outcome instanceof Promise ? await outcome : outcome;
|
|
227
298
|
}
|
|
228
299
|
catch (error) {
|
|
229
300
|
return await host.handleProgramError(entry, error, ctx, finalize, wrapResponse);
|
|
@@ -261,7 +332,8 @@ async function continueValidationBeforeAuthentication(host, entry, program, sour
|
|
|
261
332
|
const settled = await pending;
|
|
262
333
|
if (settled !== undefined)
|
|
263
334
|
return wrapResponse(settled);
|
|
264
|
-
|
|
335
|
+
const outcome = runValidationBeforeAuthentication(host, entry, program, source, ctx, finalize, wrapResponse, validationIndex);
|
|
336
|
+
return outcome instanceof Promise ? await outcome : outcome;
|
|
265
337
|
}
|
|
266
338
|
catch (error) {
|
|
267
339
|
return await host.handleProgramError(entry, error, ctx, finalize, wrapResponse);
|
|
@@ -273,23 +345,27 @@ function runValidatedProgram(host, entry, program, source, ctx, finalize, wrapRe
|
|
|
273
345
|
return runSync(host, entry, program, source, ctx, finalize, wrapResponse, 0, undefined);
|
|
274
346
|
}
|
|
275
347
|
/** Opt-in sensitive-route lane: run authentication/policy hooks before parsing untrusted input. */
|
|
276
|
-
|
|
348
|
+
function runAuthBeforeValidation(host, entry, program, source, ctx, finalize, wrapResponse, gated = false, deriveStart = 0, beforeStart = 0, validationStart = 0) {
|
|
277
349
|
try {
|
|
278
350
|
if (!gated) {
|
|
279
|
-
if (program.hasDecorations)
|
|
351
|
+
if (deriveStart === 0 && beforeStart === 0 && program.hasDecorations)
|
|
280
352
|
Object.assign(ctx, program.decorations);
|
|
281
|
-
for (
|
|
282
|
-
const result =
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
353
|
+
for (let i = deriveStart; i < program.derives.length; i++) {
|
|
354
|
+
const result = program.derives[i](ctx);
|
|
355
|
+
if (result instanceof Promise) {
|
|
356
|
+
return continueProgram(host, entry, program, source, ctx, finalize, wrapResponse, { kind: "derive", next: i + 1, policy: true }, result, undefined);
|
|
357
|
+
}
|
|
358
|
+
if (isEarly(result))
|
|
359
|
+
return finishEarly(host, entry, ctx, result, finalize, wrapResponse);
|
|
360
|
+
Object.assign(ctx, result);
|
|
287
361
|
}
|
|
288
|
-
for (
|
|
289
|
-
const result =
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
362
|
+
for (let i = beforeStart; i < program.beforeHandle.length; i++) {
|
|
363
|
+
const result = program.beforeHandle[i](ctx);
|
|
364
|
+
if (result instanceof Promise) {
|
|
365
|
+
return continueProgram(host, entry, program, source, ctx, finalize, wrapResponse, { kind: "before", next: i + 1, policy: true }, result, undefined);
|
|
366
|
+
}
|
|
367
|
+
if (result !== undefined)
|
|
368
|
+
return finishEarly(host, entry, ctx, result, finalize, wrapResponse);
|
|
293
369
|
}
|
|
294
370
|
// The policy hooks have passed, so the idempotency gate may buffer the body now. Not awaited:
|
|
295
371
|
// the gate reports its own failures, and one the resumed program let escape must skip this catch.
|
|
@@ -297,23 +373,23 @@ async function runAuthBeforeValidation(host, entry, program, source, ctx, finali
|
|
|
297
373
|
return runIdempotencyGate(host, entry, ctx, finalize, wrapResponse, (e, p) => runAuthBeforeValidation(host, e, p, source, ctx, finalize, wrapResponse, true));
|
|
298
374
|
}
|
|
299
375
|
}
|
|
300
|
-
for (
|
|
376
|
+
for (let i = validationStart; i < program.validationStages.length; i++) {
|
|
377
|
+
const stage = program.validationStages[i];
|
|
301
378
|
const result = stage.kind === "body"
|
|
302
|
-
?
|
|
379
|
+
? host.readProgramBody(entry, source, ctx)
|
|
303
380
|
: host.validateProgramStage(entry, stage, source, ctx);
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
for (const after of program.afterHandle) {
|
|
310
|
-
const transformed = after(result, ctx);
|
|
311
|
-
result = transformed instanceof Promise ? await transformed : transformed;
|
|
381
|
+
if (result instanceof Promise) {
|
|
382
|
+
return continueProgram(host, entry, program, source, ctx, finalize, wrapResponse, { kind: "validation", next: i + 1, policy: true }, result, undefined);
|
|
383
|
+
}
|
|
384
|
+
if (result !== undefined)
|
|
385
|
+
return wrapResponse(result);
|
|
312
386
|
}
|
|
313
|
-
|
|
387
|
+
// A pending outcome here already met the error boundary (continueProgram or the response
|
|
388
|
+
// contract), so wrapping it in another catch would only add a promise.
|
|
389
|
+
return runHooksSync(host, entry, program, source, ctx, finalize, wrapResponse, program.derives.length, program.beforeHandle.length, undefined);
|
|
314
390
|
}
|
|
315
391
|
catch (error) {
|
|
316
|
-
return
|
|
392
|
+
return host.handleProgramError(entry, error, ctx, finalize, wrapResponse);
|
|
317
393
|
}
|
|
318
394
|
}
|
|
319
395
|
/** Execute the general program. The first synchronous stage sequence stays synchronous. */
|
|
@@ -356,9 +432,9 @@ function runSync(host, entry, program, source, ctx, finalize, wrapResponse, vali
|
|
|
356
432
|
if (outcome !== undefined)
|
|
357
433
|
return wrapResponse(outcome);
|
|
358
434
|
}
|
|
359
|
-
return runHooksSync(host, entry, program, source, ctx, finalize, wrapResponse, 0, 0,
|
|
435
|
+
return runHooksSync(host, entry, program, source, ctx, finalize, wrapResponse, 0, 0, initial);
|
|
360
436
|
}
|
|
361
|
-
function runHooksSync(host, entry, program, source, ctx, finalize, wrapResponse, deriveIndex, beforeIndex,
|
|
437
|
+
function runHooksSync(host, entry, program, source, ctx, finalize, wrapResponse, deriveIndex, beforeIndex, initial) {
|
|
362
438
|
for (let i = deriveIndex; i < program.derives.length; i++) {
|
|
363
439
|
const outcome = program.derives[i](ctx);
|
|
364
440
|
if (outcome instanceof Promise) {
|
|
@@ -380,7 +456,9 @@ function runHooksSync(host, entry, program, source, ctx, finalize, wrapResponse,
|
|
|
380
456
|
if (output instanceof Promise) {
|
|
381
457
|
return continueProgram(host, entry, program, source, ctx, finalize, wrapResponse, { kind: "handler" }, output, initial);
|
|
382
458
|
}
|
|
383
|
-
|
|
459
|
+
return runAfterSync(host, entry, program, source, ctx, finalize, wrapResponse, 0, output);
|
|
460
|
+
}
|
|
461
|
+
function runAfterSync(host, entry, program, source, ctx, finalize, wrapResponse, afterIndex, result) {
|
|
384
462
|
for (let i = afterIndex; i < program.afterHandle.length; i++) {
|
|
385
463
|
const outcome = program.afterHandle[i](result, ctx);
|
|
386
464
|
if (outcome instanceof Promise) {
|
|
@@ -413,58 +491,28 @@ async function continueProgram(host, entry, program, source, ctx, finalize, wrap
|
|
|
413
491
|
else {
|
|
414
492
|
result = settled;
|
|
415
493
|
}
|
|
416
|
-
|
|
494
|
+
const outcome = runAsyncStages(host, entry, program, source, ctx, finalize, wrapResponse, pendingPhase, result);
|
|
495
|
+
return outcome instanceof Promise ? await outcome : outcome;
|
|
417
496
|
}
|
|
418
497
|
catch (error) {
|
|
419
498
|
return await host.handleProgramError(entry, error, ctx, finalize, wrapResponse);
|
|
420
499
|
}
|
|
421
500
|
}
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
const outcome = stage.kind === "body"
|
|
429
|
-
? await host.readProgramBody(entry, source, ctx)
|
|
430
|
-
: host.validateProgramStage(entry, stage, source, ctx);
|
|
431
|
-
const settled = outcome instanceof Promise ? await outcome : outcome;
|
|
432
|
-
if (settled !== undefined)
|
|
433
|
-
return wrapResponse(settled);
|
|
434
|
-
}
|
|
501
|
+
function runAsyncStages(host, entry, program, source, ctx, finalize, wrapResponse, pendingPhase, result) {
|
|
502
|
+
// After an actual async boundary, resume the same sync runner until the next pending stage.
|
|
503
|
+
// Sync hooks and finalization need no async function wrapper or additional microtask turn.
|
|
504
|
+
if (pendingPhase.kind === "validation") {
|
|
505
|
+
if (pendingPhase.policy) {
|
|
506
|
+
return runAuthBeforeValidation(host, entry, program, source, ctx, finalize, wrapResponse, true, 0, 0, pendingPhase.next);
|
|
435
507
|
}
|
|
436
|
-
|
|
437
|
-
if (pendingPhase.kind === "validation" || pendingPhase.kind === "derive") {
|
|
438
|
-
for (let i = deriveStart; i < program.derives.length; i++) {
|
|
439
|
-
const outcome = program.derives[i](ctx);
|
|
440
|
-
const settled = outcome instanceof Promise ? await outcome : outcome;
|
|
441
|
-
if (isEarly(settled))
|
|
442
|
-
return finishEarly(host, entry, ctx, settled, finalize, wrapResponse);
|
|
443
|
-
Object.assign(ctx, settled);
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
const beforeStart = pendingPhase.kind === "before" ? pendingPhase.next : 0;
|
|
447
|
-
if (pendingPhase.kind === "validation" ||
|
|
448
|
-
pendingPhase.kind === "derive" ||
|
|
449
|
-
pendingPhase.kind === "before") {
|
|
450
|
-
for (let i = beforeStart; i < program.beforeHandle.length; i++) {
|
|
451
|
-
const outcome = program.beforeHandle[i](ctx);
|
|
452
|
-
const settled = outcome instanceof Promise ? await outcome : outcome;
|
|
453
|
-
if (settled !== undefined)
|
|
454
|
-
return finishEarly(host, entry, ctx, settled, finalize, wrapResponse);
|
|
455
|
-
}
|
|
456
|
-
const output = program.handler(ctx);
|
|
457
|
-
result = output instanceof Promise ? await output : output;
|
|
458
|
-
}
|
|
459
|
-
const afterStart = pendingPhase.kind === "after" ? pendingPhase.next : 0;
|
|
460
|
-
for (let i = afterStart; i < program.afterHandle.length; i++) {
|
|
461
|
-
const outcome = program.afterHandle[i](result, ctx);
|
|
462
|
-
result = outcome instanceof Promise ? await outcome : outcome;
|
|
463
|
-
}
|
|
464
|
-
return await host.finishProgramResult(entry, ctx, result, finalize, wrapResponse);
|
|
508
|
+
return runSync(host, entry, program, source, ctx, finalize, wrapResponse, pendingPhase.next, result);
|
|
465
509
|
}
|
|
466
|
-
|
|
467
|
-
|
|
510
|
+
if (pendingPhase.kind === "derive" || pendingPhase.kind === "before") {
|
|
511
|
+
if (pendingPhase.policy) {
|
|
512
|
+
return runAuthBeforeValidation(host, entry, program, source, ctx, finalize, wrapResponse, false, pendingPhase.kind === "derive" ? pendingPhase.next : program.derives.length, pendingPhase.kind === "before" ? pendingPhase.next : 0);
|
|
513
|
+
}
|
|
514
|
+
return runHooksSync(host, entry, program, source, ctx, finalize, wrapResponse, pendingPhase.kind === "derive" ? pendingPhase.next : program.derives.length, pendingPhase.kind === "before" ? pendingPhase.next : 0, result);
|
|
468
515
|
}
|
|
516
|
+
return runAfterSync(host, entry, program, source, ctx, finalize, wrapResponse, pendingPhase.kind === "after" ? pendingPhase.next : 0, result);
|
|
469
517
|
}
|
|
470
518
|
//# sourceMappingURL=route-program.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-program.js","sourceRoot":"","sources":["../../src/internal/route-program.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"route-program.js","sourceRoot":"","sources":["../../src/internal/route-program.ts"],"names":[],"mappings":"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"}
|
package/dist/reflection.d.ts
CHANGED
|
@@ -26,6 +26,11 @@ export interface SchemaReflection {
|
|
|
26
26
|
readonly standard: StandardSchemaV1 | undefined;
|
|
27
27
|
/** Raw JSON Schema metadata, when the value exposes it or is itself a raw JSON Schema. */
|
|
28
28
|
readonly jsonSchema: JsonSchema | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Set when `jsonSchema` came from the schema's Standard JSON Schema converter (`~standard.jsonSchema`)
|
|
31
|
+
* rather than from metadata it carries. Such output may use `$defs` and `$ref`.
|
|
32
|
+
*/
|
|
33
|
+
readonly converted?: true;
|
|
29
34
|
/** Top-level object fields, or `undefined` when the JSON Schema is absent/non-object. */
|
|
30
35
|
readonly fields: readonly ReflectedSchemaField[] | undefined;
|
|
31
36
|
/**
|
|
@@ -33,6 +38,11 @@ export interface SchemaReflection {
|
|
|
33
38
|
* JSON and urlencoded bodies every body schema reads. Absent when it declares none.
|
|
34
39
|
*/
|
|
35
40
|
readonly mediaTypes?: readonly string[];
|
|
41
|
+
/**
|
|
42
|
+
* Set when the schema reads text values with `t.query`'s string coercion (`"1"` and `"TRUE"` are
|
|
43
|
+
* `true`, a lone value is a one-item list), as `t.query`, `t.headers` and `t.cookies` do.
|
|
44
|
+
*/
|
|
45
|
+
readonly coerces?: true;
|
|
36
46
|
}
|
|
37
47
|
export interface ReflectedRouteSchema {
|
|
38
48
|
/** Explicit external-protocol mode; the handler owns raw request parsing. */
|
|
@@ -54,7 +64,14 @@ export interface ReflectedRouteSchema {
|
|
|
54
64
|
readonly errors?: Readonly<Record<string, SchemaReflection>>;
|
|
55
65
|
/** The SSE event-payload schema of a typed streaming route (`app.sse()`). */
|
|
56
66
|
readonly sse?: SchemaReflection;
|
|
67
|
+
/**
|
|
68
|
+
* Set when an `onValidationError` hook (the route's own, or the app-wide default) answers this
|
|
69
|
+
* route's validation failures, so its 422 body is whatever the hook returns.
|
|
70
|
+
*/
|
|
71
|
+
readonly validationErrorHook?: true;
|
|
57
72
|
}
|
|
73
|
+
/** Which side of a schema to describe: the value a request sends, or the value a response carries. */
|
|
74
|
+
export type SchemaSide = "input" | "output";
|
|
58
75
|
export interface ReflectedRoute {
|
|
59
76
|
readonly method: string;
|
|
60
77
|
readonly path: string;
|
|
@@ -77,8 +94,9 @@ export interface ReflectedRoute {
|
|
|
77
94
|
/**
|
|
78
95
|
* Reflect a Standard Schema, Nifra/TypeBox schema carrier, or raw JSON Schema. Never throws.
|
|
79
96
|
* Validation-only schemas have `standard` but no `jsonSchema`; raw JSON Schema has the reverse.
|
|
97
|
+
* A Standard JSON Schema is read on `side`, since a default or a transform makes the two differ.
|
|
80
98
|
*/
|
|
81
|
-
export declare function reflectSchema(value: unknown): SchemaReflection;
|
|
99
|
+
export declare function reflectSchema(value: unknown, side?: SchemaSide): SchemaReflection;
|
|
82
100
|
/**
|
|
83
101
|
* Safely enumerate and normalize route descriptors from an app or descriptor array, and a server's
|
|
84
102
|
* WebSocket routes under the pseudo-method `"WS"`. Invalid entries are ignored; a missing/throwing
|
package/dist/reflection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reflection.d.ts","sourceRoot":"","sources":["../src/reflection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,KAAK,sBAAsB,EAE5B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAEL,KAAK,QAAQ,EAKb,KAAK,eAAe,EAIrB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,KAAK,iBAAiB,EAKvB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAEzD,4FAA4F;AAC5F,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAEpE,iEAAiE;AACjE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAC5B;AAED,sFAAsF;AACtF,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,GAAG,SAAS,CAAA;IAC/C,0FAA0F;IAC1F,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAA;IAC3C,yFAAyF;IACzF,QAAQ,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,GAAG,SAAS,CAAA;IAC5D;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"reflection.d.ts","sourceRoot":"","sources":["../src/reflection.ts"],"names":[],"mappings":"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"}
|
package/dist/reflection.js
CHANGED
|
@@ -22,6 +22,20 @@ const standardOf = (value) => {
|
|
|
22
22
|
? value
|
|
23
23
|
: undefined;
|
|
24
24
|
};
|
|
25
|
+
/** The JSON Schema a Standard JSON Schema (`~standard.jsonSchema`) converts `side` to, if it has one. */
|
|
26
|
+
const standardJsonSchemaOf = (standard, side) => {
|
|
27
|
+
const converters = recordOf(recordOf(standard["~standard"])?.jsonSchema);
|
|
28
|
+
const convert = converters?.[side];
|
|
29
|
+
if (typeof convert !== "function")
|
|
30
|
+
return undefined;
|
|
31
|
+
try {
|
|
32
|
+
return normalizeJsonSchema(Reflect.apply(convert, converters, [{ target: "draft-2020-12" }]));
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// A library throws for a type JSON Schema cannot express (zod's `z.date()`); the schema stays opaque.
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
25
39
|
const jsonSchemaOf = (value, standard) => {
|
|
26
40
|
const record = recordOf(value);
|
|
27
41
|
if (record !== undefined && "jsonSchema" in record) {
|
|
@@ -102,19 +116,37 @@ const mediaTypesOf = (value) => {
|
|
|
102
116
|
return undefined;
|
|
103
117
|
}
|
|
104
118
|
};
|
|
119
|
+
// The mark a coercing `@nifrajs/schema` validate carries.
|
|
120
|
+
const COERCES = Symbol.for("nifra.schema.coerce");
|
|
121
|
+
const coercesOf = (standard) => {
|
|
122
|
+
try {
|
|
123
|
+
const validate = standard?.["~standard"].validate;
|
|
124
|
+
return typeof validate === "function" && Reflect.get(validate, COERCES) === true;
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
};
|
|
105
130
|
/**
|
|
106
131
|
* Reflect a Standard Schema, Nifra/TypeBox schema carrier, or raw JSON Schema. Never throws.
|
|
107
132
|
* Validation-only schemas have `standard` but no `jsonSchema`; raw JSON Schema has the reverse.
|
|
133
|
+
* A Standard JSON Schema is read on `side`, since a default or a transform makes the two differ.
|
|
108
134
|
*/
|
|
109
|
-
export function reflectSchema(value) {
|
|
135
|
+
export function reflectSchema(value, side = "input") {
|
|
110
136
|
const standard = standardOf(value);
|
|
111
|
-
const
|
|
137
|
+
const carried = jsonSchemaOf(value, standard);
|
|
138
|
+
const converted = carried === undefined && standard !== undefined
|
|
139
|
+
? standardJsonSchemaOf(standard, side)
|
|
140
|
+
: undefined;
|
|
141
|
+
const jsonSchema = carried ?? converted;
|
|
112
142
|
const mediaTypes = mediaTypesOf(value);
|
|
113
143
|
return {
|
|
114
144
|
standard,
|
|
115
145
|
jsonSchema,
|
|
146
|
+
...(converted !== undefined ? { converted: true } : {}),
|
|
116
147
|
fields: fieldsOf(jsonSchema),
|
|
117
148
|
...(mediaTypes !== undefined ? { mediaTypes } : {}),
|
|
149
|
+
...(coercesOf(standard) ? { coerces: true } : {}),
|
|
118
150
|
};
|
|
119
151
|
}
|
|
120
152
|
const routeCandidates = (source) => {
|
|
@@ -131,7 +163,7 @@ const routeCandidates = (source) => {
|
|
|
131
163
|
return [];
|
|
132
164
|
}
|
|
133
165
|
};
|
|
134
|
-
const reflectedRouteSchema = (value) => {
|
|
166
|
+
const reflectedRouteSchema = (value, appValidationHook) => {
|
|
135
167
|
const schema = recordOf(value);
|
|
136
168
|
if (schema === undefined)
|
|
137
169
|
return undefined;
|
|
@@ -139,7 +171,7 @@ const reflectedRouteSchema = (value) => {
|
|
|
139
171
|
const reflectedErrors = {};
|
|
140
172
|
if (errors !== undefined) {
|
|
141
173
|
for (const [status, errorSchema] of Object.entries(errors)) {
|
|
142
|
-
reflectedErrors[status] = reflectSchema(errorSchema);
|
|
174
|
+
reflectedErrors[status] = reflectSchema(errorSchema, "output");
|
|
143
175
|
}
|
|
144
176
|
}
|
|
145
177
|
return {
|
|
@@ -159,9 +191,14 @@ const reflectedRouteSchema = (value) => {
|
|
|
159
191
|
...(schema.body !== undefined ? { body: reflectSchema(schema.body) } : {}),
|
|
160
192
|
...(schema.query !== undefined ? { query: reflectSchema(schema.query) } : {}),
|
|
161
193
|
...(schema.params !== undefined ? { params: reflectSchema(schema.params) } : {}),
|
|
162
|
-
...(schema.response !== undefined
|
|
194
|
+
...(schema.response !== undefined
|
|
195
|
+
? { response: reflectSchema(schema.response, "output") }
|
|
196
|
+
: {}),
|
|
163
197
|
...(Object.keys(reflectedErrors).length > 0 ? { errors: reflectedErrors } : {}),
|
|
164
|
-
...(schema.sse !== undefined ? { sse: reflectSchema(schema.sse) } : {}),
|
|
198
|
+
...(schema.sse !== undefined ? { sse: reflectSchema(schema.sse, "output") } : {}),
|
|
199
|
+
...(appValidationHook || typeof schema.onValidationError === "function"
|
|
200
|
+
? { validationErrorHook: true }
|
|
201
|
+
: {}),
|
|
165
202
|
};
|
|
166
203
|
};
|
|
167
204
|
const reflectedTool = (value) => {
|
|
@@ -231,11 +268,13 @@ const reflectedSockets = (source) => {
|
|
|
231
268
|
*/
|
|
232
269
|
export function reflectRoutes(source) {
|
|
233
270
|
const reflected = [];
|
|
271
|
+
// The app-wide `server({ onValidationError })` lives on the server, not on each route descriptor.
|
|
272
|
+
const appValidationHook = typeof recordOf(source)?.defaultOnValidationError === "function";
|
|
234
273
|
for (const candidate of routeCandidates(source)) {
|
|
235
274
|
const route = recordOf(candidate);
|
|
236
275
|
if (typeof route?.method !== "string" || typeof route.path !== "string")
|
|
237
276
|
continue;
|
|
238
|
-
const schema = reflectedRouteSchema(route.schema);
|
|
277
|
+
const schema = reflectedRouteSchema(route.schema, appValidationHook);
|
|
239
278
|
const tool = reflectedTool(route.tool);
|
|
240
279
|
const assurance = reflectedAssurance(route.assurance);
|
|
241
280
|
const capabilities = normalizeRouteCapabilities(Array.isArray(route.capabilities) ? route.capabilities : undefined);
|