@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.
Files changed (209) hide show
  1. package/CHANGELOG.md +246 -0
  2. package/README.md +5 -0
  3. package/dist/assurance.d.ts.map +1 -1
  4. package/dist/assurance.js.map +1 -1
  5. package/dist/binary.d.ts +15 -1
  6. package/dist/binary.d.ts.map +1 -1
  7. package/dist/binary.js +1 -0
  8. package/dist/binary.js.map +1 -1
  9. package/dist/edge-kit.d.ts +1 -0
  10. package/dist/edge-kit.d.ts.map +1 -1
  11. package/dist/edge-kit.js +1 -0
  12. package/dist/edge-kit.js.map +1 -1
  13. package/dist/errors.d.ts +1 -1
  14. package/dist/errors.d.ts.map +1 -1
  15. package/dist/errors.js.map +1 -1
  16. package/dist/evidence.d.ts +4 -0
  17. package/dist/evidence.d.ts.map +1 -1
  18. package/dist/evidence.js +4 -0
  19. package/dist/evidence.js.map +1 -1
  20. package/dist/file-type.d.ts +30 -0
  21. package/dist/file-type.d.ts.map +1 -0
  22. package/dist/file-type.js +118 -0
  23. package/dist/file-type.js.map +1 -0
  24. package/dist/index.d.ts +3 -1
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +3 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/internal/hook-origins.d.ts +2 -0
  29. package/dist/internal/hook-origins.d.ts.map +1 -1
  30. package/dist/internal/hook-origins.js +12 -0
  31. package/dist/internal/hook-origins.js.map +1 -1
  32. package/dist/internal/route-program.d.ts +11 -0
  33. package/dist/internal/route-program.d.ts.map +1 -1
  34. package/dist/internal/route-program.js +133 -85
  35. package/dist/internal/route-program.js.map +1 -1
  36. package/dist/reflection.d.ts +19 -1
  37. package/dist/reflection.d.ts.map +1 -1
  38. package/dist/reflection.js +46 -7
  39. package/dist/reflection.js.map +1 -1
  40. package/dist/response-observer.d.ts +1 -0
  41. package/dist/response-observer.d.ts.map +1 -1
  42. package/dist/response-observer.js +1 -0
  43. package/dist/response-observer.js.map +1 -1
  44. package/dist/server/answer-step.d.ts +27 -0
  45. package/dist/server/answer-step.d.ts.map +1 -0
  46. package/dist/server/answer-step.js +33 -0
  47. package/dist/server/answer-step.js.map +1 -0
  48. package/dist/server/bare-error-lane.d.ts +4 -1
  49. package/dist/server/bare-error-lane.d.ts.map +1 -1
  50. package/dist/server/bare-error-lane.js +9 -3
  51. package/dist/server/bare-error-lane.js.map +1 -1
  52. package/dist/server/base64-answers.d.ts +5 -0
  53. package/dist/server/base64-answers.d.ts.map +1 -0
  54. package/dist/server/base64-answers.js +132 -0
  55. package/dist/server/base64-answers.js.map +1 -0
  56. package/dist/server/before-handler.d.ts +10 -0
  57. package/dist/server/before-handler.d.ts.map +1 -0
  58. package/dist/server/before-handler.js +12 -0
  59. package/dist/server/before-handler.js.map +1 -0
  60. package/dist/server/body-lane.d.ts.map +1 -1
  61. package/dist/server/body-lane.js +8 -2
  62. package/dist/server/body-lane.js.map +1 -1
  63. package/dist/server/body-parser.d.ts.map +1 -1
  64. package/dist/server/body-parser.js +2 -5
  65. package/dist/server/body-parser.js.map +1 -1
  66. package/dist/server/body.d.ts +24 -8
  67. package/dist/server/body.d.ts.map +1 -1
  68. package/dist/server/body.js +86 -33
  69. package/dist/server/body.js.map +1 -1
  70. package/dist/server/core-copies.d.ts.map +1 -1
  71. package/dist/server/core-copies.js +5 -2
  72. package/dist/server/core-copies.js.map +1 -1
  73. package/dist/server/http.d.ts.map +1 -1
  74. package/dist/server/http.js +6 -17
  75. package/dist/server/http.js.map +1 -1
  76. package/dist/server/install.d.ts +2 -0
  77. package/dist/server/install.d.ts.map +1 -1
  78. package/dist/server/install.js +2 -0
  79. package/dist/server/install.js.map +1 -1
  80. package/dist/server/json-response.d.ts +3 -0
  81. package/dist/server/json-response.d.ts.map +1 -0
  82. package/dist/server/json-response.js +14 -0
  83. package/dist/server/json-response.js.map +1 -0
  84. package/dist/server/json-text.d.ts +16 -0
  85. package/dist/server/json-text.d.ts.map +1 -0
  86. package/dist/server/json-text.js +34 -0
  87. package/dist/server/json-text.js.map +1 -0
  88. package/dist/server/multipart.d.ts +3 -0
  89. package/dist/server/multipart.d.ts.map +1 -1
  90. package/dist/server/multipart.js +226 -97
  91. package/dist/server/multipart.js.map +1 -1
  92. package/dist/server/node-outcome.d.ts +5 -0
  93. package/dist/server/node-outcome.d.ts.map +1 -1
  94. package/dist/server/node-outcome.js +3 -4
  95. package/dist/server/node-outcome.js.map +1 -1
  96. package/dist/server/proto-guard.d.ts.map +1 -1
  97. package/dist/server/proto-guard.js +39 -4
  98. package/dist/server/proto-guard.js.map +1 -1
  99. package/dist/server/query.d.ts.map +1 -1
  100. package/dist/server/query.js +8 -14
  101. package/dist/server/query.js.map +1 -1
  102. package/dist/server/repeated-prefix.d.ts +17 -0
  103. package/dist/server/repeated-prefix.d.ts.map +1 -0
  104. package/dist/server/repeated-prefix.js +17 -0
  105. package/dist/server/repeated-prefix.js.map +1 -0
  106. package/dist/server/request-context.d.ts.map +1 -1
  107. package/dist/server/request-context.js +5 -5
  108. package/dist/server/request-context.js.map +1 -1
  109. package/dist/server/respond.d.ts +3 -4
  110. package/dist/server/respond.d.ts.map +1 -1
  111. package/dist/server/respond.js +45 -37
  112. package/dist/server/respond.js.map +1 -1
  113. package/dist/server/response-contract-lane.d.ts +12 -2
  114. package/dist/server/response-contract-lane.d.ts.map +1 -1
  115. package/dist/server/response-contract-lane.js +137 -9
  116. package/dist/server/response-contract-lane.js.map +1 -1
  117. package/dist/server/route-template.d.ts +10 -0
  118. package/dist/server/route-template.d.ts.map +1 -0
  119. package/dist/server/route-template.js +21 -0
  120. package/dist/server/route-template.js.map +1 -0
  121. package/dist/server/runtime-core.d.ts +7 -0
  122. package/dist/server/runtime-core.d.ts.map +1 -1
  123. package/dist/server/runtime-core.js +10 -2
  124. package/dist/server/runtime-core.js.map +1 -1
  125. package/dist/server/server-types.d.ts +17 -8
  126. package/dist/server/server-types.d.ts.map +1 -1
  127. package/dist/server/server.d.ts +27 -12
  128. package/dist/server/server.d.ts.map +1 -1
  129. package/dist/server/server.js +326 -108
  130. package/dist/server/server.js.map +1 -1
  131. package/dist/server/sse.d.ts +1 -1
  132. package/dist/server/sse.d.ts.map +1 -1
  133. package/dist/server/sse.js +7 -5
  134. package/dist/server/sse.js.map +1 -1
  135. package/dist/server/text-slots.d.ts +8 -0
  136. package/dist/server/text-slots.d.ts.map +1 -0
  137. package/dist/server/text-slots.js +19 -0
  138. package/dist/server/text-slots.js.map +1 -0
  139. package/dist/server/webhook.d.ts +1 -1
  140. package/dist/server/webhook.d.ts.map +1 -1
  141. package/dist/server/webhook.js +24 -19
  142. package/dist/server/webhook.js.map +1 -1
  143. package/dist/server/websocket.d.ts +18 -3
  144. package/dist/server/websocket.d.ts.map +1 -1
  145. package/dist/server/websocket.js +45 -5
  146. package/dist/server/websocket.js.map +1 -1
  147. package/dist/server/ws-bun.d.ts.map +1 -1
  148. package/dist/server/ws-bun.js +7 -4
  149. package/dist/server/ws-bun.js.map +1 -1
  150. package/dist/server.d.ts +2 -0
  151. package/dist/server.d.ts.map +1 -1
  152. package/dist/server.js +2 -0
  153. package/dist/server.js.map +1 -1
  154. package/dist/single-copy.d.ts +5 -0
  155. package/dist/single-copy.d.ts.map +1 -1
  156. package/dist/single-copy.js +26 -17
  157. package/dist/single-copy.js.map +1 -1
  158. package/dist/tool-cli.d.ts +64 -0
  159. package/dist/tool-cli.d.ts.map +1 -0
  160. package/dist/tool-cli.js +495 -0
  161. package/dist/tool-cli.js.map +1 -0
  162. package/dist/transport-codec.d.ts.map +1 -1
  163. package/dist/transport-codec.js +2 -1
  164. package/dist/transport-codec.js.map +1 -1
  165. package/package.json +11 -1
  166. package/src/assurance.ts +1 -0
  167. package/src/binary.ts +17 -0
  168. package/src/edge-kit.ts +1 -0
  169. package/src/errors.ts +1 -0
  170. package/src/evidence.ts +8 -0
  171. package/src/file-type.ts +130 -0
  172. package/src/index.ts +3 -1
  173. package/src/internal/hook-origins.ts +10 -0
  174. package/src/internal/route-program.ts +261 -93
  175. package/src/reflection.ts +71 -7
  176. package/src/response-observer.ts +6 -0
  177. package/src/server/answer-step.ts +68 -0
  178. package/src/server/bare-error-lane.ts +9 -4
  179. package/src/server/base64-answers.ts +138 -0
  180. package/src/server/before-handler.ts +14 -0
  181. package/src/server/body-lane.ts +19 -9
  182. package/src/server/body-parser.ts +1 -5
  183. package/src/server/body.ts +96 -36
  184. package/src/server/core-copies.ts +5 -2
  185. package/src/server/http.ts +6 -15
  186. package/src/server/install.ts +3 -0
  187. package/src/server/json-response.ts +13 -0
  188. package/src/server/json-text.ts +34 -0
  189. package/src/server/multipart.ts +232 -100
  190. package/src/server/node-outcome.ts +4 -5
  191. package/src/server/proto-guard.ts +39 -4
  192. package/src/server/query.ts +7 -13
  193. package/src/server/repeated-prefix.ts +25 -0
  194. package/src/server/request-context.ts +5 -5
  195. package/src/server/respond.ts +47 -30
  196. package/src/server/response-contract-lane.ts +132 -9
  197. package/src/server/route-template.ts +24 -0
  198. package/src/server/runtime-core.ts +12 -2
  199. package/src/server/server-types.ts +18 -6
  200. package/src/server/server.ts +361 -112
  201. package/src/server/sse.ts +8 -6
  202. package/src/server/text-slots.ts +21 -0
  203. package/src/server/webhook.ts +29 -24
  204. package/src/server/websocket.ts +57 -8
  205. package/src/server/ws-bun.ts +7 -3
  206. package/src/server.ts +2 -0
  207. package/src/single-copy.ts +31 -15
  208. package/src/tool-cli.ts +584 -0
  209. 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 === null ||
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
- return await runFastAuthenticatedProgram(host, entry, program, source, ctx, finalize, wrapResponse, validationIndex);
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
- return await runValidationBeforeAuthentication(host, entry, program, source, ctx, finalize, wrapResponse, validationIndex);
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
- async function runAuthBeforeValidation(host, entry, program, source, ctx, finalize, wrapResponse, gated = false) {
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 (const derive of program.derives) {
282
- const result = derive(ctx);
283
- const settled = result instanceof Promise ? await result : result;
284
- if (isEarly(settled))
285
- return finishEarly(host, entry, ctx, settled, finalize, wrapResponse);
286
- Object.assign(ctx, settled);
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 (const before of program.beforeHandle) {
289
- const result = before(ctx);
290
- const settled = result instanceof Promise ? await result : result;
291
- if (settled !== undefined)
292
- return finishEarly(host, entry, ctx, settled, finalize, wrapResponse);
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 (const stage of program.validationStages) {
376
+ for (let i = validationStart; i < program.validationStages.length; i++) {
377
+ const stage = program.validationStages[i];
301
378
  const result = stage.kind === "body"
302
- ? await host.readProgramBody(entry, source, ctx)
379
+ ? host.readProgramBody(entry, source, ctx)
303
380
  : host.validateProgramStage(entry, stage, source, ctx);
304
- const settled = result instanceof Promise ? await result : result;
305
- if (settled !== undefined)
306
- return wrapResponse(settled);
307
- }
308
- let result = await program.handler(ctx);
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
- return await host.finishProgramResult(entry, ctx, result, finalize, wrapResponse);
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 await host.handleProgramError(entry, error, ctx, finalize, wrapResponse);
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, 0, initial);
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, afterIndex, initial) {
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
- let result = output;
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
- return await runAsyncStages(host, entry, program, source, ctx, finalize, wrapResponse, pendingPhase, result);
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
- async function runAsyncStages(host, entry, program, source, ctx, finalize, wrapResponse, pendingPhase, result) {
423
- try {
424
- if (pendingPhase.kind === "validation") {
425
- const validations = program.validationStages;
426
- for (let i = pendingPhase.next; i < validations.length; i++) {
427
- const stage = validations[i];
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
- const deriveStart = pendingPhase.kind === "derive" ? pendingPhase.next : 0;
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
- catch (error) {
467
- return await host.handleProgramError(entry, error, ctx, finalize, wrapResponse);
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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"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"reflection.d.ts","sourceRoot":"","sources":["../src/reflection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reflection.d.ts","sourceRoot":"","sources":["../src/reflection.ts"],"names":[],"mappings":"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"}
@@ -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 jsonSchema = jsonSchemaOf(value, standard);
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 ? { response: reflectSchema(schema.response) } : {}),
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);