@nifrajs/core 3.5.0 → 4.0.2

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 (325) hide show
  1. package/README.md +26 -0
  2. package/dist/assurance.d.ts +7 -0
  3. package/dist/assurance.d.ts.map +1 -1
  4. package/dist/assurance.js +39 -3
  5. package/dist/assurance.js.map +1 -1
  6. package/dist/capabilities.d.ts +20 -2
  7. package/dist/capabilities.d.ts.map +1 -1
  8. package/dist/capabilities.js +47 -15
  9. package/dist/capabilities.js.map +1 -1
  10. package/dist/diff.d.ts +2 -1
  11. package/dist/diff.d.ts.map +1 -1
  12. package/dist/diff.js +26 -2
  13. package/dist/diff.js.map +1 -1
  14. package/dist/durable-adapters.d.ts.map +1 -1
  15. package/dist/durable-adapters.js +16 -3
  16. package/dist/durable-adapters.js.map +1 -1
  17. package/dist/durable-effect.d.ts.map +1 -1
  18. package/dist/durable-effect.js +6 -3
  19. package/dist/durable-effect.js.map +1 -1
  20. package/dist/edge-kit.d.ts +2 -0
  21. package/dist/edge-kit.d.ts.map +1 -1
  22. package/dist/edge-kit.js +2 -0
  23. package/dist/edge-kit.js.map +1 -1
  24. package/dist/effect-lifecycle.d.ts.map +1 -1
  25. package/dist/effect-lifecycle.js +2 -1
  26. package/dist/effect-lifecycle.js.map +1 -1
  27. package/dist/effect-scope.d.ts.map +1 -1
  28. package/dist/effect-scope.js +1 -1
  29. package/dist/effect-scope.js.map +1 -1
  30. package/dist/errors.d.ts +1 -1
  31. package/dist/errors.d.ts.map +1 -1
  32. package/dist/errors.js.map +1 -1
  33. package/dist/evidence.d.ts +24 -1
  34. package/dist/evidence.d.ts.map +1 -1
  35. package/dist/evidence.js +168 -13
  36. package/dist/evidence.js.map +1 -1
  37. package/dist/idempotency.d.ts +31 -0
  38. package/dist/idempotency.d.ts.map +1 -1
  39. package/dist/idempotency.js +40 -8
  40. package/dist/idempotency.js.map +1 -1
  41. package/dist/index.d.ts +8 -5
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +5 -2
  44. package/dist/index.js.map +1 -1
  45. package/dist/internal/code-unit-order.d.ts +7 -0
  46. package/dist/internal/code-unit-order.d.ts.map +1 -0
  47. package/dist/internal/code-unit-order.js +9 -0
  48. package/dist/internal/code-unit-order.js.map +1 -0
  49. package/dist/internal/durable-saga-protocol.d.ts.map +1 -1
  50. package/dist/internal/durable-saga-protocol.js +2 -0
  51. package/dist/internal/durable-saga-protocol.js.map +1 -1
  52. package/dist/internal/route-catalog.d.ts +6 -6
  53. package/dist/internal/route-catalog.d.ts.map +1 -1
  54. package/dist/internal/route-catalog.js +20 -18
  55. package/dist/internal/route-catalog.js.map +1 -1
  56. package/dist/internal/route-compiler.d.ts +7 -6
  57. package/dist/internal/route-compiler.d.ts.map +1 -1
  58. package/dist/internal/route-compiler.js +36 -4
  59. package/dist/internal/route-compiler.js.map +1 -1
  60. package/dist/internal/route-execution.d.ts +7 -3
  61. package/dist/internal/route-execution.d.ts.map +1 -1
  62. package/dist/internal/route-execution.js.map +1 -1
  63. package/dist/internal/route-lanes.d.ts +1 -0
  64. package/dist/internal/route-lanes.d.ts.map +1 -1
  65. package/dist/internal/route-lanes.js +34 -29
  66. package/dist/internal/route-lanes.js.map +1 -1
  67. package/dist/internal/route-program.d.ts +8 -2
  68. package/dist/internal/route-program.d.ts.map +1 -1
  69. package/dist/internal/route-program.js +222 -20
  70. package/dist/internal/route-program.js.map +1 -1
  71. package/dist/ledger.d.ts.map +1 -1
  72. package/dist/ledger.js +8 -5
  73. package/dist/ledger.js.map +1 -1
  74. package/dist/manifest.d.ts.map +1 -1
  75. package/dist/manifest.js +41 -37
  76. package/dist/manifest.js.map +1 -1
  77. package/dist/mount.d.ts +36 -0
  78. package/dist/mount.d.ts.map +1 -1
  79. package/dist/mount.js +32 -0
  80. package/dist/mount.js.map +1 -1
  81. package/dist/reflection.d.ts +26 -0
  82. package/dist/reflection.d.ts.map +1 -1
  83. package/dist/reflection.js +65 -1
  84. package/dist/reflection.js.map +1 -1
  85. package/dist/response-observer.d.ts +1 -1
  86. package/dist/response-observer.d.ts.map +1 -1
  87. package/dist/response-observer.js.map +1 -1
  88. package/dist/router/overlap.d.ts +23 -0
  89. package/dist/router/overlap.d.ts.map +1 -0
  90. package/dist/router/overlap.js +224 -0
  91. package/dist/router/overlap.js.map +1 -0
  92. package/dist/router/pattern.d.ts +117 -2
  93. package/dist/router/pattern.d.ts.map +1 -1
  94. package/dist/router/pattern.js +283 -23
  95. package/dist/router/pattern.js.map +1 -1
  96. package/dist/router/router.d.ts +18 -4
  97. package/dist/router/router.d.ts.map +1 -1
  98. package/dist/router/router.js +51 -44
  99. package/dist/router/router.js.map +1 -1
  100. package/dist/server/auth.d.ts +53 -0
  101. package/dist/server/auth.d.ts.map +1 -0
  102. package/dist/server/auth.js +9 -0
  103. package/dist/server/auth.js.map +1 -0
  104. package/dist/server/bare-error-lane.d.ts +12 -7
  105. package/dist/server/bare-error-lane.d.ts.map +1 -1
  106. package/dist/server/bare-error-lane.js +13 -11
  107. package/dist/server/bare-error-lane.js.map +1 -1
  108. package/dist/server/body-lane.d.ts +20 -2
  109. package/dist/server/body-lane.d.ts.map +1 -1
  110. package/dist/server/body-lane.js +26 -7
  111. package/dist/server/body-lane.js.map +1 -1
  112. package/dist/server/body-parser.d.ts +68 -0
  113. package/dist/server/body-parser.d.ts.map +1 -0
  114. package/dist/server/body-parser.js +172 -0
  115. package/dist/server/body-parser.js.map +1 -0
  116. package/dist/server/body.d.ts.map +1 -1
  117. package/dist/server/body.js +62 -7
  118. package/dist/server/body.js.map +1 -1
  119. package/dist/server/client-ip.d.ts +8 -0
  120. package/dist/server/client-ip.d.ts.map +1 -1
  121. package/dist/server/client-ip.js +8 -0
  122. package/dist/server/client-ip.js.map +1 -1
  123. package/dist/server/context.d.ts +71 -6
  124. package/dist/server/context.d.ts.map +1 -1
  125. package/dist/server/contract.d.ts +15 -5
  126. package/dist/server/contract.d.ts.map +1 -1
  127. package/dist/server/contract.js +25 -4
  128. package/dist/server/contract.js.map +1 -1
  129. package/dist/server/core-copies.d.ts +2 -0
  130. package/dist/server/core-copies.d.ts.map +1 -0
  131. package/dist/server/core-copies.js +20 -0
  132. package/dist/server/core-copies.js.map +1 -0
  133. package/dist/server/edge.d.ts.map +1 -1
  134. package/dist/server/edge.js +2 -0
  135. package/dist/server/edge.js.map +1 -1
  136. package/dist/server/http.d.ts +11 -0
  137. package/dist/server/http.d.ts.map +1 -1
  138. package/dist/server/http.js +36 -0
  139. package/dist/server/http.js.map +1 -1
  140. package/dist/server/idempotency-lane.d.ts +6 -0
  141. package/dist/server/idempotency-lane.d.ts.map +1 -1
  142. package/dist/server/idempotency-lane.js +130 -73
  143. package/dist/server/idempotency-lane.js.map +1 -1
  144. package/dist/server/install.d.ts +4 -0
  145. package/dist/server/install.d.ts.map +1 -1
  146. package/dist/server/install.js +4 -0
  147. package/dist/server/install.js.map +1 -1
  148. package/dist/server/methods.d.ts +45 -0
  149. package/dist/server/methods.d.ts.map +1 -0
  150. package/dist/server/methods.js +37 -0
  151. package/dist/server/methods.js.map +1 -0
  152. package/dist/server/multipart.d.ts +63 -0
  153. package/dist/server/multipart.d.ts.map +1 -0
  154. package/dist/server/multipart.js +374 -0
  155. package/dist/server/multipart.js.map +1 -0
  156. package/dist/server/node-outcome-hook.d.ts +20 -0
  157. package/dist/server/node-outcome-hook.d.ts.map +1 -1
  158. package/dist/server/node-outcome-hook.js +15 -6
  159. package/dist/server/node-outcome-hook.js.map +1 -1
  160. package/dist/server/not-found-answer.d.ts +40 -0
  161. package/dist/server/not-found-answer.d.ts.map +1 -0
  162. package/dist/server/not-found-answer.js +56 -0
  163. package/dist/server/not-found-answer.js.map +1 -0
  164. package/dist/server/not-found.d.ts +23 -0
  165. package/dist/server/not-found.d.ts.map +1 -0
  166. package/dist/server/not-found.js +81 -0
  167. package/dist/server/not-found.js.map +1 -0
  168. package/dist/server/plugin.d.ts +26 -1
  169. package/dist/server/plugin.d.ts.map +1 -1
  170. package/dist/server/plugin.js.map +1 -1
  171. package/dist/server/proto-guard.d.ts +18 -5
  172. package/dist/server/proto-guard.d.ts.map +1 -1
  173. package/dist/server/proto-guard.js +114 -9
  174. package/dist/server/proto-guard.js.map +1 -1
  175. package/dist/server/query.d.ts +7 -0
  176. package/dist/server/query.d.ts.map +1 -1
  177. package/dist/server/query.js +47 -0
  178. package/dist/server/query.js.map +1 -1
  179. package/dist/server/registry.d.ts +13 -2
  180. package/dist/server/registry.d.ts.map +1 -1
  181. package/dist/server/request-context.d.ts +11 -0
  182. package/dist/server/request-context.d.ts.map +1 -1
  183. package/dist/server/request-context.js +33 -19
  184. package/dist/server/request-context.js.map +1 -1
  185. package/dist/server/request-lineage.d.ts +8 -0
  186. package/dist/server/request-lineage.d.ts.map +1 -0
  187. package/dist/server/request-lineage.js +14 -0
  188. package/dist/server/request-lineage.js.map +1 -0
  189. package/dist/server/request-target.d.ts +31 -0
  190. package/dist/server/request-target.d.ts.map +1 -0
  191. package/dist/server/request-target.js +44 -0
  192. package/dist/server/request-target.js.map +1 -0
  193. package/dist/server/respond.d.ts +1 -1
  194. package/dist/server/respond.d.ts.map +1 -1
  195. package/dist/server/respond.js +16 -4
  196. package/dist/server/respond.js.map +1 -1
  197. package/dist/server/response-contract-lane.d.ts +19 -1
  198. package/dist/server/response-contract-lane.d.ts.map +1 -1
  199. package/dist/server/response-contract-lane.js +59 -14
  200. package/dist/server/response-contract-lane.js.map +1 -1
  201. package/dist/server/response-observer-runtime.d.ts +9 -5
  202. package/dist/server/response-observer-runtime.d.ts.map +1 -1
  203. package/dist/server/response-observer-runtime.js +10 -6
  204. package/dist/server/response-observer-runtime.js.map +1 -1
  205. package/dist/server/runtime-core.d.ts +2 -0
  206. package/dist/server/runtime-core.d.ts.map +1 -1
  207. package/dist/server/runtime-core.js.map +1 -1
  208. package/dist/server/server-types.d.ts +53 -3
  209. package/dist/server/server-types.d.ts.map +1 -1
  210. package/dist/server/server.d.ts +191 -19
  211. package/dist/server/server.d.ts.map +1 -1
  212. package/dist/server/server.js +1206 -218
  213. package/dist/server/server.js.map +1 -1
  214. package/dist/server/sse.d.ts.map +1 -1
  215. package/dist/server/sse.js +10 -7
  216. package/dist/server/sse.js.map +1 -1
  217. package/dist/server/static-headers.d.ts +3 -0
  218. package/dist/server/static-headers.d.ts.map +1 -1
  219. package/dist/server/static-headers.js +19 -1
  220. package/dist/server/static-headers.js.map +1 -1
  221. package/dist/server/transport-lane.d.ts +8 -0
  222. package/dist/server/transport-lane.d.ts.map +1 -1
  223. package/dist/server/transport-lane.js +9 -8
  224. package/dist/server/transport-lane.js.map +1 -1
  225. package/dist/server/validation.d.ts.map +1 -1
  226. package/dist/server/validation.js +5 -1
  227. package/dist/server/validation.js.map +1 -1
  228. package/dist/server/websocket.d.ts +10 -3
  229. package/dist/server/websocket.d.ts.map +1 -1
  230. package/dist/server/websocket.js +7 -4
  231. package/dist/server/websocket.js.map +1 -1
  232. package/dist/server/ws-bun.d.ts +2 -0
  233. package/dist/server/ws-bun.d.ts.map +1 -1
  234. package/dist/server/ws-bun.js +6 -3
  235. package/dist/server/ws-bun.js.map +1 -1
  236. package/dist/server/ws-hook.d.ts +2 -1
  237. package/dist/server/ws-hook.d.ts.map +1 -1
  238. package/dist/server.d.ts +7 -4
  239. package/dist/server.d.ts.map +1 -1
  240. package/dist/server.js +4 -1
  241. package/dist/server.js.map +1 -1
  242. package/dist/single-copy-register.js +5 -0
  243. package/dist/single-copy-register.js.map +1 -1
  244. package/dist/single-copy.d.ts +46 -3
  245. package/dist/single-copy.d.ts.map +1 -1
  246. package/dist/single-copy.js +125 -12
  247. package/dist/single-copy.js.map +1 -1
  248. package/dist/tool-contract.d.ts +23 -0
  249. package/dist/tool-contract.d.ts.map +1 -1
  250. package/dist/tool-contract.js +37 -3
  251. package/dist/tool-contract.js.map +1 -1
  252. package/dist/transport-codec.d.ts.map +1 -1
  253. package/dist/transport-codec.js +2 -1
  254. package/dist/transport-codec.js.map +1 -1
  255. package/package.json +27 -2
  256. package/src/assurance.ts +52 -2
  257. package/src/capabilities.ts +81 -22
  258. package/src/diff.ts +31 -6
  259. package/src/durable-adapters.ts +20 -3
  260. package/src/durable-effect.ts +10 -3
  261. package/src/edge-kit.ts +7 -0
  262. package/src/effect-lifecycle.ts +5 -1
  263. package/src/effect-scope.ts +2 -1
  264. package/src/errors.ts +3 -0
  265. package/src/evidence.ts +237 -12
  266. package/src/idempotency.ts +72 -8
  267. package/src/index.ts +40 -3
  268. package/src/internal/code-unit-order.ts +8 -0
  269. package/src/internal/durable-saga-protocol.ts +2 -0
  270. package/src/internal/route-catalog.ts +19 -18
  271. package/src/internal/route-compiler.ts +62 -13
  272. package/src/internal/route-execution.ts +13 -3
  273. package/src/internal/route-lanes.ts +37 -28
  274. package/src/internal/route-program.ts +434 -20
  275. package/src/ledger.ts +11 -5
  276. package/src/manifest.ts +41 -36
  277. package/src/mount.ts +62 -0
  278. package/src/reflection.ts +84 -1
  279. package/src/response-observer.ts +1 -0
  280. package/src/router/overlap.ts +258 -0
  281. package/src/router/pattern.ts +349 -25
  282. package/src/router/router.ts +76 -51
  283. package/src/server/auth.ts +75 -0
  284. package/src/server/bare-error-lane.ts +12 -11
  285. package/src/server/body-lane.ts +46 -6
  286. package/src/server/body-parser.ts +241 -0
  287. package/src/server/body.ts +82 -9
  288. package/src/server/client-ip.ts +9 -0
  289. package/src/server/context.ts +219 -12
  290. package/src/server/contract.ts +54 -9
  291. package/src/server/core-copies.ts +21 -0
  292. package/src/server/edge.ts +2 -0
  293. package/src/server/http.ts +34 -0
  294. package/src/server/idempotency-lane.ts +147 -72
  295. package/src/server/install.ts +6 -0
  296. package/src/server/methods.ts +143 -0
  297. package/src/server/multipart.ts +424 -0
  298. package/src/server/node-outcome-hook.ts +40 -7
  299. package/src/server/not-found-answer.ts +109 -0
  300. package/src/server/not-found.ts +121 -0
  301. package/src/server/plugin.ts +45 -1
  302. package/src/server/proto-guard.ts +128 -9
  303. package/src/server/query.ts +49 -0
  304. package/src/server/registry.ts +17 -2
  305. package/src/server/request-context.ts +44 -16
  306. package/src/server/request-lineage.ts +15 -0
  307. package/src/server/request-target.ts +46 -0
  308. package/src/server/respond.ts +14 -3
  309. package/src/server/response-contract-lane.ts +97 -16
  310. package/src/server/response-observer-runtime.ts +37 -8
  311. package/src/server/runtime-core.ts +2 -0
  312. package/src/server/server-types.ts +59 -2
  313. package/src/server/server.ts +1613 -269
  314. package/src/server/sse.ts +10 -8
  315. package/src/server/static-headers.ts +22 -1
  316. package/src/server/transport-lane.ts +17 -9
  317. package/src/server/validation.ts +7 -1
  318. package/src/server/websocket.ts +23 -9
  319. package/src/server/ws-bun.ts +8 -3
  320. package/src/server/ws-hook.ts +2 -1
  321. package/src/server.ts +38 -2
  322. package/src/single-copy-register.ts +5 -0
  323. package/src/single-copy.ts +160 -12
  324. package/src/tool-contract.ts +66 -3
  325. package/src/transport-codec.ts +2 -1
@@ -17,18 +17,20 @@
17
17
  * The `Server` import is type-only and erased, so there is no runtime cycle back into the kernel.
18
18
  */
19
19
  import type { RequestBudget } from "../budget.js";
20
- import type { StandardSchemaV1 } from "../schema/standard.js";
20
+ import type { AuthenticationStage } from "../server/auth.js";
21
21
  import type { Platform, RouteSchema } from "../server/context.js";
22
22
  import type { ResolvedIdempotency } from "../server/idempotency-lane.js";
23
23
  import type { ResolvedEffectLedger } from "../server/ledger-lane.js";
24
24
  import type { Registry } from "../server/registry.js";
25
- import type { ResponseContractRuntime } from "../server/response-contract-lane.js";
25
+ import type { ResponseContractDefinition, ResponseContractRuntime } from "../server/response-contract-lane.js";
26
26
  import type { HandlerResult, ResponseResult } from "../server/runtime-core.js";
27
27
  import type { CtxSet, MaybePromise, RawContext, RequestSource, Server } from "../server/server.js";
28
28
  import type { RouteProgram } from "./route-program.js";
29
29
  export type InternalHandler = (ctx: RawContext) => MaybePromise<HandlerResult>;
30
30
  /** A `derive` computes per-request context extensions; stored path-erased. */
31
31
  export type RawDerive = (ctx: RawContext) => MaybePromise<object>;
32
+ /** A route-scoped authentication provider, stored path-erased after registration. */
33
+ export type RawAuthStage = AuthenticationStage<unknown, unknown>;
32
34
  export type RawBeforeHandle = (ctx: RawContext) => MaybePromise<unknown>;
33
35
  export type RawAfterHandle = (result: unknown, ctx: RawContext) => MaybePromise<unknown>;
34
36
  export type RawErrorHandler = (error: unknown, ctx: RawContext) => MaybePromise<unknown>;
@@ -81,10 +83,12 @@ export interface RouteEntry {
81
83
  * still take the fused/native lanes). */
82
84
  readonly responseContract: {
83
85
  readonly runtime: ResponseContractRuntime;
84
- readonly schema: StandardSchemaV1;
86
+ readonly definition: ResponseContractDefinition;
85
87
  } | undefined;
86
88
  /** Per-request context extensions captured at registration (order-scoped). */
87
89
  readonly derives: ReadonlyArray<RawDerive>;
90
+ /** Dedicated auth stages run before validation; ordinary derives keep their existing order. */
91
+ readonly authStages: ReadonlyArray<RawAuthStage>;
88
92
  /** Static context extensions captured at registration. */
89
93
  readonly decorations: Record<PropertyKey, unknown>;
90
94
  /** Whether {@link decorations} has any keys - precomputed so the hot path skips a no-op
@@ -1 +1 @@
1
- {"version":3,"file":"route-execution.d.ts","sourceRoot":"","sources":["../../src/internal/route-execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-execution.d.ts","sourceRoot":"","sources":["../../src/internal/route-execution.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"route-execution.js","sourceRoot":"","sources":["../../src/internal/route-execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-execution.js","sourceRoot":"","sources":["../../src/internal/route-execution.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@ export interface RouteLaneSelection {
21
21
  }
22
22
  export declare function selectRouteLanes(options: {
23
23
  readonly schema: RouteSchema | undefined;
24
+ readonly hasAuth?: boolean;
24
25
  readonly hasIdempotency: boolean;
25
26
  readonly hasLedger: boolean;
26
27
  readonly hasResponseContract: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"route-lanes.d.ts","sourceRoot":"","sources":["../../src/internal/route-lanes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEtF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;IACjC,QAAQ,CAAC,aAAa,EAAE,sBAAsB,CAAA;IAC9C,QAAQ,CAAC,iBAAiB,EAAE,eAAe,GAAG,qBAAqB,GAAG,SAAS,CAAA;IAC/E,QAAQ,CAAC,SAAS,EACd,MAAM,GACN,MAAM,GACN,OAAO,GACP,eAAe,GACf,qBAAqB,GACrB,oBAAoB,GACpB,0BAA0B,GAC1B,SAAS,CAAA;CACd;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACxC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAA;IACrC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAA;CAC3C,GAAG,kBAAkB,CAiLrB"}
1
+ {"version":3,"file":"route-lanes.d.ts","sourceRoot":"","sources":["../../src/internal/route-lanes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEtF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;IACjC,QAAQ,CAAC,aAAa,EAAE,sBAAsB,CAAA;IAC9C,QAAQ,CAAC,iBAAiB,EAAE,eAAe,GAAG,qBAAqB,GAAG,SAAS,CAAA;IAC/E,QAAQ,CAAC,SAAS,EACd,MAAM,GACN,MAAM,GACN,OAAO,GACP,eAAe,GACf,qBAAqB,GACrB,oBAAoB,GACpB,0BAA0B,GAC1B,SAAS,CAAA;CACd;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACxC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAA;IACrC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAA;CAC3C,GAAG,kBAAkB,CAyLrB"}
@@ -1,7 +1,10 @@
1
1
  export function selectRouteLanes(options) {
2
2
  const { schema, hasIdempotency, hasLedger, hasResponseContract, hasDecorations, derives, beforeHandle, afterHandle, onError, around, defaultOnValidationError, } = options;
3
- const bare = schema?.params === undefined &&
4
- schema?.headers === undefined &&
3
+ const authBeforeValidation = options.hasAuth === true || schema?.validationOrder === "auth-before-validation";
4
+ // No fused lane validates params, headers, or cookies: any of those schemas keeps the stage runner.
5
+ const plain = schema?.params === undefined && schema?.headers === undefined && schema?.cookies === undefined;
6
+ const bare = !authBeforeValidation &&
7
+ plain &&
5
8
  schema?.body === undefined &&
6
9
  schema?.query === undefined &&
7
10
  !hasIdempotency &&
@@ -17,11 +20,11 @@ export function selectRouteLanes(options) {
17
20
  // wrappers, and validation-error recovery (schema or server default) - the fused invalid path is
18
21
  // exactly `validationError(issues)`, so any recovery semantics keep the generic lane.
19
22
  const fusedQuery = !bare &&
23
+ !authBeforeValidation &&
20
24
  !hasResponseContract &&
21
25
  schema?.query !== undefined &&
22
26
  schema.body === undefined &&
23
- schema.params === undefined &&
24
- schema.headers === undefined &&
27
+ plain &&
25
28
  schema.onValidationError === undefined &&
26
29
  !defaultOnValidationError &&
27
30
  !hasIdempotency &&
@@ -31,42 +34,44 @@ export function selectRouteLanes(options) {
31
34
  afterHandle === 0 &&
32
35
  onError === 0 &&
33
36
  around === 0;
34
- const bodyOnly = !hasResponseContract &&
37
+ const bodyOnly = !authBeforeValidation &&
38
+ !hasResponseContract &&
35
39
  schema?.body !== undefined &&
36
40
  schema.query === undefined &&
37
- schema.params === undefined &&
38
- schema.headers === undefined &&
41
+ plain &&
39
42
  derives === 0 &&
40
43
  beforeHandle === 0 &&
41
44
  afterHandle === 0 &&
42
45
  onError === 0;
43
46
  const fusedBody = !bare &&
47
+ !authBeforeValidation &&
44
48
  bodyOnly &&
45
49
  schema.onValidationError === undefined &&
46
50
  !defaultOnValidationError &&
47
51
  !hasIdempotency &&
48
52
  !hasLedger &&
49
53
  around === 0;
50
- const lane = bare
51
- ? "bare"
52
- : bodyOnly
53
- ? "body"
54
- : !hasResponseContract &&
55
- schema?.body === undefined &&
56
- schema?.query !== undefined &&
57
- schema.params === undefined &&
58
- schema.headers === undefined &&
59
- derives === 0 &&
60
- beforeHandle === 0 &&
61
- afterHandle === 0 &&
62
- onError === 0
63
- ? "query"
64
- : "lifecycle";
54
+ const lane = authBeforeValidation
55
+ ? "lifecycle"
56
+ : bare
57
+ ? "bare"
58
+ : bodyOnly
59
+ ? "body"
60
+ : !hasResponseContract &&
61
+ schema?.body === undefined &&
62
+ schema?.query !== undefined &&
63
+ plain &&
64
+ derives === 0 &&
65
+ beforeHandle === 0 &&
66
+ afterHandle === 0 &&
67
+ onError === 0
68
+ ? "query"
69
+ : "lifecycle";
65
70
  // Lifecycle routes with no params schema are the common middleware shape: derive/before plus an
66
71
  // optional query or body schema. Select their complete validation stage at registration so the
67
72
  // request path never re-checks params/body presence. Parameter-schema routes retain the generic
68
73
  // lifecycle runner until their more involved recovery matrix is selected explicitly.
69
- const lifecycleLane = lane !== "lifecycle" || schema?.params !== undefined || schema?.headers !== undefined
74
+ const lifecycleLane = lane !== "lifecycle" || !plain
70
75
  ? undefined
71
76
  : schema?.body !== undefined
72
77
  ? schema.query !== undefined
@@ -78,20 +83,20 @@ export function selectRouteLanes(options) {
78
83
  // The realistic middleware shape is commonly exactly one synchronous-or-async derive followed by
79
84
  // one before hook. Keep the generic runner for every route that can observe decorations, after hooks,
80
85
  // error hooks, or response contracts; this lane only removes the two per-request hook-loop dispatches
81
- // and preserves the same async continuations and error handling. A params or headers schema routes
82
- // back to the generic lane because the fused builder has no `params` / `headers` validation step
86
+ // and preserves the same async continuations and error handling. A params, headers, or cookies schema
87
+ // routes back to the generic lane because the fused builder has no validation step for them
83
88
  // baked in - adding them would be more code than it saves. A `body` schema is the same story
84
89
  // because the fused derive-before / derive-before-after builders don't parse the body: routes with a
85
90
  // body schema are routed to the `body-derive-before` / `body-derive-before-after` lane below.
86
91
  const lifecycleHookLane = lane === "lifecycle" &&
92
+ !authBeforeValidation &&
87
93
  !hasResponseContract &&
88
94
  !hasDecorations &&
89
95
  !hasIdempotency &&
90
96
  !hasLedger &&
91
97
  schema?.onValidationError === undefined &&
92
98
  !defaultOnValidationError &&
93
- schema?.params === undefined &&
94
- schema?.headers === undefined &&
99
+ plain &&
95
100
  schema?.body === undefined &&
96
101
  derives === 1 &&
97
102
  beforeHandle === 1 &&
@@ -107,10 +112,10 @@ export function selectRouteLanes(options) {
107
112
  // parse → validate → derive → before → handler → after → respond in one function frame, the same
108
113
  // win `fusedBody` already gives for the no-hooks body shape.
109
114
  const fusedBodyLifecycle = lane === "lifecycle" &&
115
+ !authBeforeValidation &&
110
116
  schema?.body !== undefined &&
111
117
  schema?.query === undefined &&
112
- schema?.params === undefined &&
113
- schema?.headers === undefined &&
118
+ plain &&
114
119
  schema?.onValidationError === undefined &&
115
120
  !defaultOnValidationError &&
116
121
  !hasResponseContract &&
@@ -1 +1 @@
1
- {"version":3,"file":"route-lanes.js","sourceRoot":"","sources":["../../src/internal/route-lanes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-lanes.js","sourceRoot":"","sources":["../../src/internal/route-lanes.ts"],"names":[],"mappings":"AA+BA,MAAM,UAAU,gBAAgB,CAAC,OAahC;IACC,MAAM,EACJ,MAAM,EACN,cAAc,EACd,SAAS,EACT,mBAAmB,EACnB,cAAc,EACd,OAAO,EACP,YAAY,EACZ,WAAW,EACX,OAAO,EACP,MAAM,EACN,wBAAwB,GACzB,GAAG,OAAO,CAAA;IAEX,MAAM,oBAAoB,GACxB,OAAO,CAAC,OAAO,KAAK,IAAI,IAAI,MAAM,EAAE,eAAe,KAAK,wBAAwB,CAAA;IAClF,oGAAoG;IACpG,MAAM,KAAK,GACT,MAAM,EAAE,MAAM,KAAK,SAAS,IAAI,MAAM,EAAE,OAAO,KAAK,SAAS,IAAI,MAAM,EAAE,OAAO,KAAK,SAAS,CAAA;IAEhG,MAAM,IAAI,GACR,CAAC,oBAAoB;QACrB,KAAK;QACL,MAAM,EAAE,IAAI,KAAK,SAAS;QAC1B,MAAM,EAAE,KAAK,KAAK,SAAS;QAC3B,CAAC,cAAc;QACf,CAAC,SAAS;QACV,CAAC,mBAAmB;QACpB,OAAO,KAAK,CAAC;QACb,YAAY,KAAK,CAAC;QAClB,WAAW,KAAK,CAAC;QACjB,OAAO,KAAK,CAAC,CAAA;IAEf,qGAAqG;IACrG,sGAAsG;IACtG,kGAAkG;IAClG,iGAAiG;IACjG,sFAAsF;IACtF,MAAM,UAAU,GACd,CAAC,IAAI;QACL,CAAC,oBAAoB;QACrB,CAAC,mBAAmB;QACpB,MAAM,EAAE,KAAK,KAAK,SAAS;QAC3B,MAAM,CAAC,IAAI,KAAK,SAAS;QACzB,KAAK;QACL,MAAM,CAAC,iBAAiB,KAAK,SAAS;QACtC,CAAC,wBAAwB;QACzB,CAAC,cAAc;QACf,CAAC,SAAS;QACV,OAAO,KAAK,CAAC;QACb,YAAY,KAAK,CAAC;QAClB,WAAW,KAAK,CAAC;QACjB,OAAO,KAAK,CAAC;QACb,MAAM,KAAK,CAAC,CAAA;IAEd,MAAM,QAAQ,GACZ,CAAC,oBAAoB;QACrB,CAAC,mBAAmB;QACpB,MAAM,EAAE,IAAI,KAAK,SAAS;QAC1B,MAAM,CAAC,KAAK,KAAK,SAAS;QAC1B,KAAK;QACL,OAAO,KAAK,CAAC;QACb,YAAY,KAAK,CAAC;QAClB,WAAW,KAAK,CAAC;QACjB,OAAO,KAAK,CAAC,CAAA;IAEf,MAAM,SAAS,GACb,CAAC,IAAI;QACL,CAAC,oBAAoB;QACrB,QAAQ;QACR,MAAM,CAAC,iBAAiB,KAAK,SAAS;QACtC,CAAC,wBAAwB;QACzB,CAAC,cAAc;QACf,CAAC,SAAS;QACV,MAAM,KAAK,CAAC,CAAA;IAEd,MAAM,IAAI,GAAuB,oBAAoB;QACnD,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,IAAI;YACJ,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,QAAQ;gBACR,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,CAAC,mBAAmB;oBAClB,MAAM,EAAE,IAAI,KAAK,SAAS;oBAC1B,MAAM,EAAE,KAAK,KAAK,SAAS;oBAC3B,KAAK;oBACL,OAAO,KAAK,CAAC;oBACb,YAAY,KAAK,CAAC;oBAClB,WAAW,KAAK,CAAC;oBACjB,OAAO,KAAK,CAAC;oBACf,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,WAAW,CAAA;IAErB,gGAAgG;IAChG,+FAA+F;IAC/F,gGAAgG;IAChG,qFAAqF;IACrF,MAAM,aAAa,GACjB,IAAI,KAAK,WAAW,IAAI,CAAC,KAAK;QAC5B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,EAAE,IAAI,KAAK,SAAS;YAC1B,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS;gBAC1B,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,MAAM;YACV,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK,SAAS;gBAC3B,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,OAAO,CAAA;IAEjB,iGAAiG;IACjG,sGAAsG;IACtG,sGAAsG;IACtG,sGAAsG;IACtG,4FAA4F;IAC5F,6FAA6F;IAC7F,qGAAqG;IACrG,8FAA8F;IAC9F,MAAM,iBAAiB,GACrB,IAAI,KAAK,WAAW;QACpB,CAAC,oBAAoB;QACrB,CAAC,mBAAmB;QACpB,CAAC,cAAc;QACf,CAAC,cAAc;QACf,CAAC,SAAS;QACV,MAAM,EAAE,iBAAiB,KAAK,SAAS;QACvC,CAAC,wBAAwB;QACzB,KAAK;QACL,MAAM,EAAE,IAAI,KAAK,SAAS;QAC1B,OAAO,KAAK,CAAC;QACb,YAAY,KAAK,CAAC;QAClB,WAAW,IAAI,CAAC;QAChB,OAAO,KAAK,CAAC;QACb,MAAM,KAAK,CAAC;QACV,CAAC,CAAC,WAAW,KAAK,CAAC;YACjB,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,qBAAqB;QACzB,CAAC,CAAC,SAAS,CAAA;IAEf,8FAA8F;IAC9F,iGAAiG;IACjG,iGAAiG;IACjG,6DAA6D;IAC7D,MAAM,kBAAkB,GACtB,IAAI,KAAK,WAAW;QACpB,CAAC,oBAAoB;QACrB,MAAM,EAAE,IAAI,KAAK,SAAS;QAC1B,MAAM,EAAE,KAAK,KAAK,SAAS;QAC3B,KAAK;QACL,MAAM,EAAE,iBAAiB,KAAK,SAAS;QACvC,CAAC,wBAAwB;QACzB,CAAC,mBAAmB;QACpB,CAAC,cAAc;QACf,CAAC,cAAc;QACf,CAAC,SAAS;QACV,OAAO,KAAK,CAAC;QACb,YAAY,KAAK,CAAC;QAClB,WAAW,IAAI,CAAC;QAChB,OAAO,KAAK,CAAC;QACb,MAAM,KAAK,CAAC,CAAA;IAEd,OAAO;QACL,IAAI;QACJ,UAAU;QACV,QAAQ;QACR,SAAS;QACT,IAAI;QACJ,aAAa;QACb,iBAAiB;QACjB,SAAS,EACP,MAAM,KAAK,CAAC;YACV,CAAC,CAAC,UAAU;gBACV,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,SAAS;oBACT,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,IAAI;wBACJ,CAAC,CAAC,MAAM;wBACR,CAAC,CAAC,iBAAiB,KAAK,SAAS;4BAC/B,CAAC,CAAE,iBAA6D;4BAChE,CAAC,CAAC,kBAAkB;gCAClB,CAAC,CAAC,WAAW,KAAK,CAAC;oCACjB,CAAC,CAAC,oBAAoB;oCACtB,CAAC,CAAC,0BAA0B;gCAC9B,CAAC,CAAC,SAAS;YACrB,CAAC,CAAC,SAAS;KAChB,CAAA;AACH,CAAC"}
@@ -10,8 +10,8 @@ import type { StandardSchemaV1 } from "../schema/standard.js";
10
10
  import type { Registry } from "../server/registry.js";
11
11
  import { type ResponseResult } from "../server/runtime-core.js";
12
12
  import type { CtxSet, MaybePromise, RawContext, RequestSource, Server } from "../server/server.js";
13
- import type { InternalHandler, RawAfterHandle, RawBeforeHandle, RawDerive, RawErrorHandler, RouteEntry } from "./route-execution.js";
14
- export type ProgramValidationKind = "headers" | "params" | "body" | "query";
13
+ import type { InternalHandler, RawAfterHandle, RawAuthStage, RawBeforeHandle, RawDerive, RawErrorHandler, RouteEntry } from "./route-execution.js";
14
+ export type ProgramValidationKind = "headers" | "cookies" | "params" | "body" | "query";
15
15
  export type RouteProgramStage = {
16
16
  readonly kind: ProgramValidationKind;
17
17
  readonly schema: StandardSchemaV1;
@@ -31,6 +31,11 @@ export type RouteProgramStage = {
31
31
  /** The complete registration-time lifecycle, in semantic execution order. */
32
32
  export interface RouteProgram {
33
33
  readonly stages: readonly RouteProgramStage[];
34
+ readonly validationOrder: "validate-before-auth" | "auth-before-validation";
35
+ readonly authBeforeValidation: boolean;
36
+ readonly authStages: readonly RawAuthStage[];
37
+ /** Protected route fast lane: auth plus validation/handler, with no general lifecycle hooks. */
38
+ readonly authFastLane: boolean;
34
39
  readonly validationStages: readonly Extract<RouteProgramStage, {
35
40
  kind: ProgramValidationKind;
36
41
  }>[];
@@ -49,6 +54,7 @@ export interface RouteProgramInput {
49
54
  readonly schema: RouteEntry["schema"];
50
55
  readonly handler: InternalHandler;
51
56
  readonly derives: readonly RawDerive[];
57
+ readonly authStages?: readonly RawAuthStage[];
52
58
  readonly beforeHandle: readonly RawBeforeHandle[];
53
59
  readonly afterHandle: readonly RawAfterHandle[];
54
60
  readonly onError: readonly RawErrorHandler[];
@@ -1 +1 @@
1
- {"version":3,"file":"route-program.d.ts","sourceRoot":"","sources":["../../src/internal/route-program.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-program.d.ts","sourceRoot":"","sources":["../../src/internal/route-program.ts"],"names":[],"mappings":"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"}
@@ -6,31 +6,24 @@
6
6
  * program is frozen at registration so the request path walks one immutable stage sequence instead
7
7
  * of rediscovering which lifecycle features are present.
8
8
  */
9
- import { CONTEXT_SET, EMPTY_RESPONSE_CONTROLS, isResponseResult, } from "../server/runtime-core.js";
9
+ import { pathnameOf } from "../server/http.js";
10
+ import { CONTEXT_SET, EMPTY_RESPONSE_CONTROLS, isResponseResult, status, } from "../server/runtime-core.js";
10
11
  /** Build the immutable stage sequence once, while the server is still configurable. */
11
12
  export function compileRouteProgram(input) {
12
13
  const stages = [];
13
14
  const validationStages = [];
14
15
  const schema = input.schema;
15
- if (schema?.headers !== undefined) {
16
- const stage = { kind: "headers", schema: schema.headers };
17
- stages.push(stage);
18
- validationStages.push(stage);
19
- }
20
- if (schema?.params !== undefined) {
21
- const stage = { kind: "params", schema: schema.params };
22
- stages.push(stage);
23
- validationStages.push(stage);
24
- }
25
- if (schema?.body !== undefined) {
26
- const stage = { kind: "body", schema: schema.body };
27
- stages.push(stage);
28
- validationStages.push(stage);
29
- }
30
- if (schema?.query !== undefined) {
31
- const stage = { kind: "query", schema: schema.query };
32
- stages.push(stage);
33
- validationStages.push(stage);
16
+ const authStages = input.authStages ?? [];
17
+ const authBeforeValidation = authStages.length > 0
18
+ ? schema?.validationOrder !== "validate-before-auth"
19
+ : schema?.validationOrder === "auth-before-validation";
20
+ for (const kind of ["headers", "cookies", "params", "body", "query"]) {
21
+ const validator = schema?.[kind];
22
+ if (validator !== undefined) {
23
+ const stage = { kind, schema: validator };
24
+ stages.push(stage);
25
+ validationStages.push(stage);
26
+ }
34
27
  }
35
28
  for (const derive of input.derives)
36
29
  stages.push({ kind: "derive", run: derive });
@@ -41,6 +34,13 @@ export function compileRouteProgram(input) {
41
34
  stages.push({ kind: "after", run: after });
42
35
  return Object.freeze({
43
36
  stages: Object.freeze(stages),
37
+ validationOrder: authBeforeValidation ? "auth-before-validation" : "validate-before-auth",
38
+ authBeforeValidation,
39
+ authStages: Object.freeze([...authStages]),
40
+ authFastLane: authStages.length > 0 &&
41
+ input.derives.length === 0 &&
42
+ input.beforeHandle.length === 0 &&
43
+ input.afterHandle.length === 0,
44
44
  validationStages: Object.freeze(validationStages),
45
45
  derives: Object.freeze([...input.derives]),
46
46
  beforeHandle: Object.freeze([...input.beforeHandle]),
@@ -60,10 +60,212 @@ function responseSet(ctx) {
60
60
  function isEarly(value) {
61
61
  return value instanceof Response || isResponseResult(value);
62
62
  }
63
+ function authHeadersOf(source) {
64
+ return Object.freeze({
65
+ get: (name) => source.headers.get(name),
66
+ has: (name) => source.headers.has(name),
67
+ forEach: (callback) => {
68
+ source.headers.forEach(callback);
69
+ },
70
+ });
71
+ }
72
+ function authenticationInputOf(source, ctx) {
73
+ return Object.freeze({
74
+ method: source.method,
75
+ pathname: pathnameOf(source.url),
76
+ headers: authHeadersOf(source),
77
+ params: Object.freeze({ ...ctx.params }),
78
+ env: ctx.env,
79
+ clientIp: ctx.clientIp,
80
+ signal: ctx.signal,
81
+ });
82
+ }
83
+ function defaultAuthenticationResponse(reason) {
84
+ if (reason === "forbidden")
85
+ return status(403, { ok: false, error: "forbidden" });
86
+ if (reason === "unavailable")
87
+ return status(503, { ok: false, error: "auth_unavailable" });
88
+ return status(401, { ok: false, error: "unauthorized" });
89
+ }
90
+ function validAuthenticationFailureReason(value) {
91
+ return (value === undefined ||
92
+ value === "unauthenticated" ||
93
+ value === "forbidden" ||
94
+ value === "unavailable");
95
+ }
96
+ function runAuthenticationStages(host, entry, program, source, ctx, finalize, wrapResponse, start = 0, validationComplete = false) {
97
+ if (start >= program.authStages.length) {
98
+ if (program.authFastLane) {
99
+ const validationIndex = validationComplete ? program.validationStages.length : 0;
100
+ return runFastAuthenticatedProgram(host, entry, program, source, ctx, finalize, wrapResponse, validationIndex);
101
+ }
102
+ return validationComplete
103
+ ? runSync(host, entry, program, source, ctx, finalize, wrapResponse, program.validationStages.length, undefined)
104
+ : runValidatedProgram(host, entry, program, source, ctx, finalize, wrapResponse);
105
+ }
106
+ const input = authenticationInputOf(source, ctx);
107
+ const stage = program.authStages[start];
108
+ let outcome;
109
+ try {
110
+ outcome = stage.run(input);
111
+ }
112
+ catch {
113
+ return finalize(defaultAuthenticationResponse("unavailable"), responseSet(ctx));
114
+ }
115
+ if (outcome instanceof Promise) {
116
+ return outcome.then((settled) => finishAuthentication(host, entry, program, source, ctx, finalize, wrapResponse, settled, start + 1, validationComplete), () => finalize(defaultAuthenticationResponse("unavailable"), responseSet(ctx)));
117
+ }
118
+ return finishAuthentication(host, entry, program, source, ctx, finalize, wrapResponse, outcome, start + 1, validationComplete);
119
+ }
120
+ function finishAuthentication(host, entry, program, source, ctx, finalize, wrapResponse, result, next, validationComplete = false) {
121
+ if (result === null ||
122
+ typeof result !== "object" ||
123
+ (result.kind !== "authenticated" && result.kind !== "rejected")) {
124
+ return finalize(defaultAuthenticationResponse("unavailable"), responseSet(ctx));
125
+ }
126
+ if (result.kind === "rejected") {
127
+ if (!validAuthenticationFailureReason(result.reason)) {
128
+ return finalize(defaultAuthenticationResponse("unavailable"), responseSet(ctx));
129
+ }
130
+ if (result.response !== undefined &&
131
+ !(result.response instanceof Response) &&
132
+ !isResponseResult(result.response)) {
133
+ return finalize(defaultAuthenticationResponse("unavailable"), responseSet(ctx));
134
+ }
135
+ const response = result.response ?? defaultAuthenticationResponse(result.reason);
136
+ return finalize(response, responseSet(ctx));
137
+ }
138
+ if (result.principal === null || result.principal === undefined) {
139
+ return finalize(defaultAuthenticationResponse("unavailable"), responseSet(ctx));
140
+ }
141
+ Object.defineProperty(ctx, "principal", {
142
+ value: result.principal,
143
+ enumerable: true,
144
+ configurable: true,
145
+ writable: false,
146
+ });
147
+ return runAuthenticationStages(host, entry, program, source, ctx, finalize, wrapResponse, next, validationComplete);
148
+ }
149
+ /** Validate first only when a route explicitly opts out of the protected auth-first default. */
150
+ function runFastAuthenticatedProgram(host, entry, program, source, ctx, finalize, wrapResponse, validationIndex) {
151
+ for (let i = validationIndex; i < program.validationStages.length; i++) {
152
+ const stage = program.validationStages[i];
153
+ const outcome = stage.kind === "body"
154
+ ? host.readProgramBody(entry, source, ctx)
155
+ : host.validateProgramStage(entry, stage, source, ctx);
156
+ if (outcome instanceof Promise) {
157
+ return continueFastAuthenticatedProgram(host, entry, program, source, ctx, finalize, wrapResponse, i + 1, outcome);
158
+ }
159
+ if (outcome !== undefined)
160
+ return wrapResponse(outcome);
161
+ }
162
+ return runFastAuthenticatedHandler(host, entry, program, ctx, finalize, wrapResponse);
163
+ }
164
+ async function continueFastAuthenticatedProgram(host, entry, program, source, ctx, finalize, wrapResponse, validationIndex, pending) {
165
+ try {
166
+ const settled = await pending;
167
+ if (settled !== undefined)
168
+ return wrapResponse(settled);
169
+ return await runFastAuthenticatedProgram(host, entry, program, source, ctx, finalize, wrapResponse, validationIndex);
170
+ }
171
+ catch (error) {
172
+ return await host.handleProgramError(entry, error, ctx, finalize, wrapResponse);
173
+ }
174
+ }
175
+ function runFastAuthenticatedHandler(host, entry, program, ctx, finalize, wrapResponse) {
176
+ let result;
177
+ try {
178
+ result = program.handler(ctx);
179
+ }
180
+ catch (error) {
181
+ return host.handleProgramError(entry, error, ctx, finalize, wrapResponse);
182
+ }
183
+ if (result instanceof Promise) {
184
+ return result.then((value) => host.finishProgramResult(entry, ctx, value, finalize, wrapResponse), (error) => host.handleProgramError(entry, error, ctx, finalize, wrapResponse));
185
+ }
186
+ return host.finishProgramResult(entry, ctx, result, finalize, wrapResponse);
187
+ }
188
+ function runValidationBeforeAuthentication(host, entry, program, source, ctx, finalize, wrapResponse, validationIndex = 0) {
189
+ for (let i = validationIndex; i < program.validationStages.length; i++) {
190
+ const stage = program.validationStages[i];
191
+ const outcome = stage.kind === "body"
192
+ ? host.readProgramBody(entry, source, ctx)
193
+ : host.validateProgramStage(entry, stage, source, ctx);
194
+ if (outcome instanceof Promise) {
195
+ return continueValidationBeforeAuthentication(host, entry, program, source, ctx, finalize, wrapResponse, i + 1, outcome);
196
+ }
197
+ if (outcome !== undefined)
198
+ return wrapResponse(outcome);
199
+ }
200
+ return runAuthenticationStages(host, entry, program, source, ctx, finalize, wrapResponse, 0, true);
201
+ }
202
+ async function continueValidationBeforeAuthentication(host, entry, program, source, ctx, finalize, wrapResponse, validationIndex, pending) {
203
+ try {
204
+ const settled = await pending;
205
+ if (settled !== undefined)
206
+ return wrapResponse(settled);
207
+ return await runValidationBeforeAuthentication(host, entry, program, source, ctx, finalize, wrapResponse, validationIndex);
208
+ }
209
+ catch (error) {
210
+ return await host.handleProgramError(entry, error, ctx, finalize, wrapResponse);
211
+ }
212
+ }
213
+ function runValidatedProgram(host, entry, program, source, ctx, finalize, wrapResponse) {
214
+ if (program.hasDecorations)
215
+ Object.assign(ctx, program.decorations);
216
+ return runSync(host, entry, program, source, ctx, finalize, wrapResponse, 0, undefined);
217
+ }
218
+ /** Opt-in sensitive-route lane: run authentication/policy hooks before parsing untrusted input. */
219
+ async function runAuthBeforeValidation(host, entry, program, source, ctx, finalize, wrapResponse) {
220
+ try {
221
+ if (program.hasDecorations)
222
+ Object.assign(ctx, program.decorations);
223
+ for (const derive of program.derives) {
224
+ const result = derive(ctx);
225
+ const settled = result instanceof Promise ? await result : result;
226
+ if (isEarly(settled))
227
+ return finalize(settled, responseSet(ctx));
228
+ Object.assign(ctx, settled);
229
+ }
230
+ for (const before of program.beforeHandle) {
231
+ const result = before(ctx);
232
+ const settled = result instanceof Promise ? await result : result;
233
+ if (settled !== undefined)
234
+ return finalize(settled, responseSet(ctx));
235
+ }
236
+ for (const stage of program.validationStages) {
237
+ const result = stage.kind === "body"
238
+ ? await host.readProgramBody(entry, source, ctx)
239
+ : host.validateProgramStage(entry, stage, source, ctx);
240
+ const settled = result instanceof Promise ? await result : result;
241
+ if (settled !== undefined)
242
+ return wrapResponse(settled);
243
+ }
244
+ let result = await program.handler(ctx);
245
+ for (const after of program.afterHandle) {
246
+ const transformed = after(result, ctx);
247
+ result = transformed instanceof Promise ? await transformed : transformed;
248
+ }
249
+ return await host.finishProgramResult(entry, ctx, result, finalize, wrapResponse);
250
+ }
251
+ catch (error) {
252
+ return await host.handleProgramError(entry, error, ctx, finalize, wrapResponse);
253
+ }
254
+ }
63
255
  /** Execute the general program. The first synchronous stage sequence stays synchronous. */
64
256
  export function executeRouteProgram(runtime, entry, program, source, ctx, finalize, wrapResponse) {
65
257
  const host = runtime;
66
258
  try {
259
+ if (program.authStages.length > 0) {
260
+ if (program.hasDecorations)
261
+ Object.assign(ctx, program.decorations);
262
+ return program.authBeforeValidation
263
+ ? runAuthenticationStages(host, entry, program, source, ctx, finalize, wrapResponse)
264
+ : runValidationBeforeAuthentication(host, entry, program, source, ctx, finalize, wrapResponse);
265
+ }
266
+ if (program.validationOrder === "auth-before-validation") {
267
+ return runAuthBeforeValidation(host, entry, program, source, ctx, finalize, wrapResponse);
268
+ }
67
269
  if (program.hasDecorations)
68
270
  Object.assign(ctx, program.decorations);
69
271
  return runSync(host, entry, program, source, ctx, finalize, wrapResponse, 0, undefined);