@nifrajs/core 4.0.2 → 5.0.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 (196) hide show
  1. package/README.md +6 -2
  2. package/dist/assurance.d.ts +71 -5
  3. package/dist/assurance.d.ts.map +1 -1
  4. package/dist/assurance.js +90 -25
  5. package/dist/assurance.js.map +1 -1
  6. package/dist/capabilities.d.ts +6 -0
  7. package/dist/capabilities.d.ts.map +1 -1
  8. package/dist/capabilities.js +52 -0
  9. package/dist/capabilities.js.map +1 -1
  10. package/dist/durable-effect.js +1 -1
  11. package/dist/durable-effect.js.map +1 -1
  12. package/dist/durable-saga.d.ts +6 -0
  13. package/dist/durable-saga.d.ts.map +1 -1
  14. package/dist/durable-saga.js +83 -10
  15. package/dist/durable-saga.js.map +1 -1
  16. package/dist/edge-kit.d.ts +7 -2
  17. package/dist/edge-kit.d.ts.map +1 -1
  18. package/dist/edge-kit.js +7 -2
  19. package/dist/edge-kit.js.map +1 -1
  20. package/dist/effect-scope.d.ts.map +1 -1
  21. package/dist/effect-scope.js +16 -5
  22. package/dist/effect-scope.js.map +1 -1
  23. package/dist/errors.d.ts +1 -1
  24. package/dist/errors.d.ts.map +1 -1
  25. package/dist/errors.js.map +1 -1
  26. package/dist/evidence.d.ts +2 -0
  27. package/dist/evidence.d.ts.map +1 -1
  28. package/dist/evidence.js +9 -1
  29. package/dist/evidence.js.map +1 -1
  30. package/dist/index.d.ts +4 -3
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +3 -2
  33. package/dist/index.js.map +1 -1
  34. package/dist/internal/durable-shared.d.ts +1 -2
  35. package/dist/internal/durable-shared.d.ts.map +1 -1
  36. package/dist/internal/durable-shared.js +25 -44
  37. package/dist/internal/durable-shared.js.map +1 -1
  38. package/dist/internal/durable-types.d.ts +3 -0
  39. package/dist/internal/durable-types.d.ts.map +1 -1
  40. package/dist/internal/hook-origins.d.ts +67 -0
  41. package/dist/internal/hook-origins.d.ts.map +1 -0
  42. package/dist/internal/hook-origins.js +86 -0
  43. package/dist/internal/hook-origins.js.map +1 -0
  44. package/dist/internal/route-assurance.d.ts +6 -3
  45. package/dist/internal/route-assurance.d.ts.map +1 -1
  46. package/dist/internal/route-assurance.js +29 -14
  47. package/dist/internal/route-assurance.js.map +1 -1
  48. package/dist/internal/route-program.d.ts +1 -1
  49. package/dist/internal/route-program.d.ts.map +1 -1
  50. package/dist/internal/route-program.js +59 -16
  51. package/dist/internal/route-program.js.map +1 -1
  52. package/dist/reconciliation-worker.d.ts.map +1 -1
  53. package/dist/reconciliation-worker.js +12 -2
  54. package/dist/reconciliation-worker.js.map +1 -1
  55. package/dist/reflection.d.ts +53 -2
  56. package/dist/reflection.d.ts.map +1 -1
  57. package/dist/reflection.js +352 -5
  58. package/dist/reflection.js.map +1 -1
  59. package/dist/router/pattern.d.ts +1 -1
  60. package/dist/router/pattern.d.ts.map +1 -1
  61. package/dist/router/pattern.js +6 -3
  62. package/dist/router/pattern.js.map +1 -1
  63. package/dist/security/baseline.d.ts +3 -0
  64. package/dist/security/baseline.d.ts.map +1 -1
  65. package/dist/security/baseline.js +9 -5
  66. package/dist/security/baseline.js.map +1 -1
  67. package/dist/server/auth.d.ts +32 -3
  68. package/dist/server/auth.d.ts.map +1 -1
  69. package/dist/server/auth.js +23 -0
  70. package/dist/server/auth.js.map +1 -1
  71. package/dist/server/body.d.ts +7 -0
  72. package/dist/server/body.d.ts.map +1 -1
  73. package/dist/server/body.js +34 -1
  74. package/dist/server/body.js.map +1 -1
  75. package/dist/server/client-ip.d.ts +3 -0
  76. package/dist/server/client-ip.d.ts.map +1 -1
  77. package/dist/server/client-ip.js.map +1 -1
  78. package/dist/server/context.d.ts +2 -1
  79. package/dist/server/context.d.ts.map +1 -1
  80. package/dist/server/idempotency-lane.d.ts +6 -3
  81. package/dist/server/idempotency-lane.d.ts.map +1 -1
  82. package/dist/server/idempotency-lane.js +38 -17
  83. package/dist/server/idempotency-lane.js.map +1 -1
  84. package/dist/server/install.d.ts +2 -0
  85. package/dist/server/install.d.ts.map +1 -1
  86. package/dist/server/install.js +2 -0
  87. package/dist/server/install.js.map +1 -1
  88. package/dist/server/logger.d.ts.map +1 -1
  89. package/dist/server/logger.js +3 -1
  90. package/dist/server/logger.js.map +1 -1
  91. package/dist/server/methods.d.ts +1 -0
  92. package/dist/server/methods.d.ts.map +1 -1
  93. package/dist/server/methods.js +1 -0
  94. package/dist/server/methods.js.map +1 -1
  95. package/dist/server/node-outcome.d.ts.map +1 -1
  96. package/dist/server/node-outcome.js +29 -11
  97. package/dist/server/node-outcome.js.map +1 -1
  98. package/dist/server/platform-adapters.d.ts.map +1 -1
  99. package/dist/server/platform-adapters.js +3 -2
  100. package/dist/server/platform-adapters.js.map +1 -1
  101. package/dist/server/request-context.d.ts +2 -1
  102. package/dist/server/request-context.d.ts.map +1 -1
  103. package/dist/server/request-context.js +4 -1
  104. package/dist/server/request-context.js.map +1 -1
  105. package/dist/server/respond.d.ts +44 -11
  106. package/dist/server/respond.d.ts.map +1 -1
  107. package/dist/server/respond.js +192 -79
  108. package/dist/server/respond.js.map +1 -1
  109. package/dist/server/response-observer-runtime.d.ts.map +1 -1
  110. package/dist/server/response-observer-runtime.js +10 -41
  111. package/dist/server/response-observer-runtime.js.map +1 -1
  112. package/dist/server/runtime-core.d.ts +2 -0
  113. package/dist/server/runtime-core.d.ts.map +1 -1
  114. package/dist/server/runtime-core.js +2 -0
  115. package/dist/server/runtime-core.js.map +1 -1
  116. package/dist/server/server-types.d.ts +29 -5
  117. package/dist/server/server-types.d.ts.map +1 -1
  118. package/dist/server/server.d.ts +44 -31
  119. package/dist/server/server.d.ts.map +1 -1
  120. package/dist/server/server.js +444 -321
  121. package/dist/server/server.js.map +1 -1
  122. package/dist/server/sse.d.ts +11 -1
  123. package/dist/server/sse.d.ts.map +1 -1
  124. package/dist/server/sse.js +18 -3
  125. package/dist/server/sse.js.map +1 -1
  126. package/dist/server/transport-lane.d.ts +7 -1
  127. package/dist/server/transport-lane.d.ts.map +1 -1
  128. package/dist/server/transport-lane.js.map +1 -1
  129. package/dist/server/webhook.d.ts +5 -2
  130. package/dist/server/webhook.d.ts.map +1 -1
  131. package/dist/server/webhook.js +17 -1
  132. package/dist/server/webhook.js.map +1 -1
  133. package/dist/server/websocket.d.ts +22 -14
  134. package/dist/server/websocket.d.ts.map +1 -1
  135. package/dist/server/websocket.js +21 -0
  136. package/dist/server/websocket.js.map +1 -1
  137. package/dist/server/ws-hook.d.ts +7 -1
  138. package/dist/server/ws-hook.d.ts.map +1 -1
  139. package/dist/server.d.ts +3 -2
  140. package/dist/server.d.ts.map +1 -1
  141. package/dist/server.js +2 -1
  142. package/dist/server.js.map +1 -1
  143. package/dist/single-copy.d.ts +6 -0
  144. package/dist/single-copy.d.ts.map +1 -1
  145. package/dist/single-copy.js +20 -1
  146. package/dist/single-copy.js.map +1 -1
  147. package/dist/tool-contract.d.ts.map +1 -1
  148. package/dist/tool-contract.js +71 -40
  149. package/dist/tool-contract.js.map +1 -1
  150. package/dist/ws.d.ts.map +1 -1
  151. package/dist/ws.js +3 -1
  152. package/dist/ws.js.map +1 -1
  153. package/package.json +1 -1
  154. package/src/assurance.ts +180 -31
  155. package/src/capabilities.ts +59 -0
  156. package/src/durable-effect.ts +1 -1
  157. package/src/durable-saga.ts +94 -10
  158. package/src/edge-kit.ts +7 -2
  159. package/src/effect-scope.ts +15 -5
  160. package/src/errors.ts +1 -0
  161. package/src/evidence.ts +12 -3
  162. package/src/index.ts +6 -1
  163. package/src/internal/durable-shared.ts +25 -37
  164. package/src/internal/durable-types.ts +3 -0
  165. package/src/internal/hook-origins.ts +153 -0
  166. package/src/internal/route-assurance.ts +32 -18
  167. package/src/internal/route-program.ts +98 -44
  168. package/src/reconciliation-worker.ts +10 -2
  169. package/src/reflection.ts +455 -4
  170. package/src/router/pattern.ts +6 -3
  171. package/src/security/baseline.ts +10 -5
  172. package/src/server/auth.ts +45 -3
  173. package/src/server/body.ts +34 -1
  174. package/src/server/client-ip.ts +3 -0
  175. package/src/server/context.ts +2 -1
  176. package/src/server/idempotency-lane.ts +64 -22
  177. package/src/server/install.ts +3 -0
  178. package/src/server/logger.ts +3 -1
  179. package/src/server/methods.ts +1 -0
  180. package/src/server/node-outcome.ts +34 -12
  181. package/src/server/platform-adapters.ts +3 -2
  182. package/src/server/request-context.ts +5 -0
  183. package/src/server/respond.ts +222 -69
  184. package/src/server/response-observer-runtime.ts +16 -38
  185. package/src/server/runtime-core.ts +2 -0
  186. package/src/server/server-types.ts +29 -5
  187. package/src/server/server.ts +659 -530
  188. package/src/server/sse.ts +84 -55
  189. package/src/server/transport-lane.ts +7 -1
  190. package/src/server/webhook.ts +22 -3
  191. package/src/server/websocket.ts +44 -5
  192. package/src/server/ws-hook.ts +5 -0
  193. package/src/server.ts +5 -0
  194. package/src/single-copy.ts +20 -1
  195. package/src/tool-contract.ts +67 -39
  196. package/src/ws.ts +4 -0
@@ -1 +1 @@
1
- {"version":3,"file":"reconciliation-worker.d.ts","sourceRoot":"","sources":["../src/reconciliation-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reconciliation-worker.d.ts","sourceRoot":"","sources":["../src/reconciliation-worker.ts"],"names":[],"mappings":"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"}
@@ -22,15 +22,25 @@ function throwIfAborted(signal) {
22
22
  }
23
23
  async function boundedMap(values, concurrency, run) {
24
24
  let next = 0;
25
+ let failure;
25
26
  const worker = async () => {
26
- for (;;) {
27
+ while (failure === undefined) {
27
28
  const index = next++;
28
29
  if (index >= values.length)
29
30
  return;
30
- await run(values[index]);
31
+ try {
32
+ await run(values[index]);
33
+ }
34
+ catch (error) {
35
+ failure ??= { error };
36
+ }
31
37
  }
32
38
  };
39
+ // A failure starts no new work but lets every started handler settle: the caller releases the
40
+ // lease next, and a handler still running then overlaps the worker that takes the lease over.
33
41
  await Promise.all(Array.from({ length: Math.min(concurrency, values.length) }, () => worker()));
42
+ if (failure !== undefined)
43
+ throw failure.error;
34
44
  }
35
45
  export async function runReconciliationWorker(options) {
36
46
  assertToken(options.name, "reconciliation worker name");
@@ -1 +1 @@
1
- {"version":3,"file":"reconciliation-worker.js","sourceRoot":"","sources":["../src/reconciliation-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reconciliation-worker.js","sourceRoot":"","sources":["../src/reconciliation-worker.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@
7
7
  * recognizes Nifra/TypeBox carriers and raw JSON Schema without depending on a validator package.
8
8
  */
9
9
  import { type ResponseClassification } from "./classification.js";
10
+ import { type HookKind } from "./internal/hook-origins.js";
10
11
  import { type AssuranceEvidence } from "./internal/route-assurance.js";
11
12
  import type { StandardSchemaV1 } from "./schema/standard.js";
12
13
  import type { ToolAnnotations } from "./server/server.js";
@@ -78,8 +79,9 @@ export interface ReflectedRoute {
78
79
  */
79
80
  export declare function reflectSchema(value: unknown): SchemaReflection;
80
81
  /**
81
- * Safely enumerate and normalize route descriptors from an app or descriptor array. Invalid entries
82
- * are ignored; a missing/throwing `routes()` method yields an empty array.
82
+ * Safely enumerate and normalize route descriptors from an app or descriptor array, and a server's
83
+ * WebSocket routes under the pseudo-method `"WS"`. Invalid entries are ignored; a missing/throwing
84
+ * `routes()` method yields only the sockets.
83
85
  */
84
86
  export declare function reflectRoutes(source: unknown): readonly ReflectedRoute[];
85
87
  /** A mounted child (`mount()`, `mountFetch()`) whose routes route reflection cannot see. */
@@ -88,6 +90,14 @@ export interface ReflectedMount {
88
90
  readonly path: string;
89
91
  /** Why the child is not analyzed, as declared by `opaque` on the mount. */
90
92
  readonly opaque?: string;
93
+ /** The routes the mount declares it serves. Declared, not analyzed. */
94
+ readonly routes?: readonly ReflectedMountRoute[];
95
+ }
96
+ /** A route an opaque mount declares, normalized: method upper-cased, capabilities deduplicated. */
97
+ export interface ReflectedMountRoute {
98
+ readonly method: string;
99
+ readonly path: string;
100
+ readonly capabilities: readonly string[];
91
101
  }
92
102
  /**
93
103
  * The mounts on an app that route reflection cannot see into, sorted by path. A mount whose app
@@ -95,4 +105,45 @@ export interface ReflectedMount {
95
105
  * reflection through that evidence. Anything that is not a nifra server yields an empty list.
96
106
  */
97
107
  export declare function reflectMounts(source: unknown): readonly ReflectedMount[];
108
+ /** One hook that runs for a route or an unmatched path: what it is, who added it, and where. */
109
+ export interface ReflectedHook {
110
+ readonly kind: HookKind;
111
+ /** The plugin that registered it, else the function's own name, else `(anonymous)`. */
112
+ readonly name: string;
113
+ /** Where it was registered: `app`, `group /api`, `merge #1`, `mount /auth`, or `unknown`. */
114
+ readonly site: string;
115
+ /** The header names a static `responseHeaders()` declaration sets. */
116
+ readonly headers?: readonly string[];
117
+ }
118
+ export interface ReflectedRouteHooks {
119
+ readonly method: string;
120
+ readonly path: string;
121
+ /** In the order they run: request hooks, the route chain, then response hooks innermost first. */
122
+ readonly hooks: readonly ReflectedHook[];
123
+ }
124
+ /** The hooks a path under `prefix` that no route matches still runs - its 404s and 405s. */
125
+ export interface ReflectedUnmatchedHooks {
126
+ readonly prefix: string;
127
+ readonly hooks: readonly ReflectedHook[];
128
+ }
129
+ export interface ReflectedHookReport {
130
+ /**
131
+ * False when a hook has no recorded origin and is listed with site `unknown`. Origins are recorded
132
+ * only outside production builds, so reflect a development load of the app.
133
+ */
134
+ readonly complete: boolean;
135
+ readonly routes: readonly ReflectedRouteHooks[];
136
+ readonly unmatched: readonly ReflectedUnmatchedHooks[];
137
+ }
138
+ export type { HookKind };
139
+ /**
140
+ * Every hook that actually runs for each route, and for each prefix's unmatched paths, with the plugin
141
+ * that registered it and where: the app, a `group()`, a `merge()`d server, or a `mount()`ed one. It
142
+ * follows the same scope rules the server applies - a group's hooks cover its prefix, a merged server's
143
+ * request hooks cover only its own routes, a mount runs its child's whole lifecycle inside the app's
144
+ * global hooks - and reads the provenance a development load records, so reflect the app outside
145
+ * production. A mount of a server already on the path (a self-mount) is reported once, as that
146
+ * prefix's unmatched entry. Anything that is not a nifra server yields an empty report.
147
+ */
148
+ export declare function reflectHooks(source: unknown): ReflectedHookReport;
98
149
  //# sourceMappingURL=reflection.d.ts.map
@@ -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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"}
@@ -8,7 +8,8 @@
8
8
  */
9
9
  import { isDataClassification, routeClassification, } from "./classification.js";
10
10
  import { normalizeRouteCapabilities } from "./internal/capability-runtime.js";
11
- import { evidenceProvenance, validEvidence, } from "./internal/route-assurance.js";
11
+ import { adoptionsOf, hookOriginOf, hookScopeOf, hookSourceOf, staticHeadersOf, } from "./internal/hook-origins.js";
12
+ import { assuranceEvidenceFor, evidenceProvenance, NIFRA_ASSURANCE_IDS, validEvidence, } from "./internal/route-assurance.js";
12
13
  import { NIFRA_BACKEND_EVIDENCE } from "./mount.js";
13
14
  const recordOf = (value) => value !== null && typeof value === "object"
14
15
  ? value
@@ -184,9 +185,48 @@ const reflectedAssurance = (value) => {
184
185
  }));
185
186
  return evidence.length > 0 ? Object.freeze(evidence) : undefined;
186
187
  };
188
+ /** The evidence a WebSocket handshake enforces: its route chain runs the auth guards, and the app's
189
+ * request hooks run the rate limiter. Anything else a `GET` at the same path carries comes from code
190
+ * a socket's message handlers never pass through, so a socket does not claim it. */
191
+ const HANDSHAKE_EVIDENCE = new Set([
192
+ NIFRA_ASSURANCE_IDS.AUTHENTICATED,
193
+ NIFRA_ASSURANCE_IDS.RATE_LIMITED,
194
+ ]);
195
+ /** A server's WebSocket routes as `"WS"` routes, read off its own table the way `reflectMounts` reads
196
+ * `fetchMounts`, so serving pays nothing for them. */
197
+ const reflectedSockets = (source) => {
198
+ const record = recordOf(source);
199
+ const sockets = record?.wsRoutes;
200
+ if (!Array.isArray(sockets))
201
+ return [];
202
+ const global = Array.isArray(record?.globalAssurance) ? record.globalAssurance : [];
203
+ const reflected = [];
204
+ for (const candidate of sockets) {
205
+ const socket = recordOf(candidate);
206
+ if (typeof socket?.path !== "string" || !Array.isArray(socket.assurance))
207
+ continue;
208
+ // The server stored them normalized at registration.
209
+ const capabilities = Array.isArray(socket.capabilities)
210
+ ? socket.capabilities.filter((id) => typeof id === "string")
211
+ : [];
212
+ // Declarations scoped by method match the `GET` a handshake is.
213
+ const evidence = reflectedAssurance(assuranceEvidenceFor([...socket.assurance, ...global], "GET", socket.path).filter((item) => HANDSHAKE_EVIDENCE.has(item.id)));
214
+ const route = {
215
+ method: "WS",
216
+ path: socket.path,
217
+ };
218
+ if (evidence !== undefined)
219
+ route.assurance = evidence;
220
+ if (capabilities.length > 0)
221
+ route.capabilities = capabilities;
222
+ reflected.push(route);
223
+ }
224
+ return reflected;
225
+ };
187
226
  /**
188
- * Safely enumerate and normalize route descriptors from an app or descriptor array. Invalid entries
189
- * are ignored; a missing/throwing `routes()` method yields an empty array.
227
+ * Safely enumerate and normalize route descriptors from an app or descriptor array, and a server's
228
+ * WebSocket routes under the pseudo-method `"WS"`. Invalid entries are ignored; a missing/throwing
229
+ * `routes()` method yields only the sockets.
190
230
  */
191
231
  export function reflectRoutes(source) {
192
232
  const reflected = [];
@@ -216,8 +256,50 @@ export function reflectRoutes(source) {
216
256
  ...(tool !== undefined ? { tool } : {}),
217
257
  });
218
258
  }
259
+ reflected.push(...reflectedSockets(source));
219
260
  return reflected;
220
261
  }
262
+ const METHOD_TOKEN = /^[A-Za-z]+$/;
263
+ /** The declared routes of the mount at `prefix`, or a TypeError naming the first bad entry: a
264
+ * declaration assurance reads must say exactly what it claims. */
265
+ function declaredMountRoutes(prefix, shown, value) {
266
+ if (value === undefined)
267
+ return undefined;
268
+ if (!Array.isArray(value))
269
+ throw new TypeError(`mount ${shown}: opaque routes must be an array`);
270
+ const routes = [];
271
+ const seen = new Set();
272
+ value.forEach((candidate, index) => {
273
+ const at = `mount ${shown}: declared route ${index + 1}`;
274
+ const entry = recordOf(candidate);
275
+ if (entry === undefined)
276
+ throw new TypeError(`${at} is not an object`);
277
+ const { method, path, capabilities = [] } = entry;
278
+ if (typeof method !== "string" || !METHOD_TOKEN.test(method)) {
279
+ throw new TypeError(`${at} has no valid method`);
280
+ }
281
+ if (typeof path !== "string" || !path.startsWith("/") || /[?#]/.test(path)) {
282
+ throw new TypeError(`${at} needs a path starting with "/", without a query or fragment`);
283
+ }
284
+ if (prefix !== "/" && path !== prefix && !path.startsWith(`${prefix}/`)) {
285
+ throw new TypeError(`${at} path ${path} is outside the mount`);
286
+ }
287
+ if (!Array.isArray(capabilities) ||
288
+ !capabilities.every((id) => typeof id === "string")) {
289
+ throw new TypeError(`${at} capabilities must be an array of capability ids`);
290
+ }
291
+ const key = `${method.toUpperCase()} ${path}`;
292
+ if (seen.has(key))
293
+ throw new TypeError(`mount ${shown} declares ${key} twice`);
294
+ seen.add(key);
295
+ routes.push(Object.freeze({
296
+ method: method.toUpperCase(),
297
+ path,
298
+ capabilities: Object.freeze([...new Set(capabilities)]),
299
+ }));
300
+ });
301
+ return Object.freeze(routes.sort((a, b) => a.path < b.path ? -1 : a.path > b.path ? 1 : a.method < b.method ? -1 : 1));
302
+ }
221
303
  /**
222
304
  * The mounts on an app that route reflection cannot see into, sorted by path. A mount whose app
223
305
  * publishes composed evidence (the API `createWebApp` mounts) is left out: its routes reach
@@ -238,12 +320,277 @@ export function reflectMounts(source) {
238
320
  if (typeof app?.[NIFRA_BACKEND_EVIDENCE] === "function")
239
321
  continue;
240
322
  // Checked here, at analysis time, so serving pays nothing: a blank reason is no reason.
241
- const opaque = typeof mount.opaque === "string" ? mount.opaque.trim() || undefined : undefined;
323
+ const declaration = recordOf(mount.opaque);
324
+ const reason = typeof mount.opaque === "string" ? mount.opaque : declaration?.reason;
325
+ const opaque = typeof reason === "string" ? reason.trim() || undefined : undefined;
326
+ const shown = mount.path === "/" ? "/*" : `${mount.path}/*`;
327
+ // Routes count only beside a reason: without one the mount stays undeclared and fails as before.
328
+ const routes = opaque === undefined ? undefined : declaredMountRoutes(mount.path, shown, declaration?.routes);
242
329
  reflected.push(Object.freeze({
243
- path: mount.path === "/" ? "/*" : `${mount.path}/*`,
330
+ path: shown,
244
331
  ...(opaque !== undefined ? { opaque } : {}),
332
+ ...(routes !== undefined ? { routes } : {}),
245
333
  }));
246
334
  }
247
335
  return reflected.sort((a, b) => (a.path < b.path ? -1 : a.path > b.path ? 1 : 0));
248
336
  }
337
+ // A middleware method's own name says nothing about who registered it.
338
+ const HOOK_FIELD_NAMES = new Set([
339
+ "onRequest",
340
+ "onResponse",
341
+ "onResponseHeaders",
342
+ "onResponseFinalized",
343
+ "around",
344
+ "derive",
345
+ "beforeHandle",
346
+ "afterHandle",
347
+ "onError",
348
+ "run",
349
+ "web",
350
+ ]);
351
+ const UNMATCHED_PROBE = "__nifra_unmatched__";
352
+ const listOf = (server, field) => {
353
+ const value = server[field];
354
+ return Array.isArray(value) ? value : [];
355
+ };
356
+ const isServerRecord = (value) => {
357
+ const record = recordOf(value);
358
+ return (record !== undefined &&
359
+ Array.isArray(record.onRequestHooks) &&
360
+ typeof recordOf(record.catalog)?.entries === "function");
361
+ };
362
+ const catalogOf = (server) => {
363
+ const entries = recordOf(server.catalog)?.entries;
364
+ const list = typeof entries === "function" ? Reflect.apply(entries, server.catalog, []) : [];
365
+ const routes = [];
366
+ for (const candidate of Array.isArray(list) ? list : []) {
367
+ const route = recordOf(candidate);
368
+ if (typeof route?.method === "string" && typeof route.path === "string") {
369
+ routes.push({ method: route.method, path: route.path, entry: route.entry });
370
+ }
371
+ }
372
+ return routes;
373
+ };
374
+ const joinPath = (base, path) => base === "" ? path : path === "/" ? base : `${base}${path}`;
375
+ /**
376
+ * Every hook that actually runs for each route, and for each prefix's unmatched paths, with the plugin
377
+ * that registered it and where: the app, a `group()`, a `merge()`d server, or a `mount()`ed one. It
378
+ * follows the same scope rules the server applies - a group's hooks cover its prefix, a merged server's
379
+ * request hooks cover only its own routes, a mount runs its child's whole lifecycle inside the app's
380
+ * global hooks - and reads the provenance a development load records, so reflect the app outside
381
+ * production. A mount of a server already on the path (a self-mount) is reported once, as that
382
+ * prefix's unmatched entry. Anything that is not a nifra server yields an empty report.
383
+ */
384
+ export function reflectHooks(source) {
385
+ if (!isServerRecord(source))
386
+ return { complete: true, routes: [], unmatched: [] };
387
+ const labels = new Map();
388
+ let merges = 0;
389
+ const label = (server, context) => {
390
+ for (const adoption of adoptionsOf(server)) {
391
+ if (labels.has(adoption.source))
392
+ continue;
393
+ if (adoption.prefix === undefined)
394
+ merges += 1;
395
+ const own = adoption.prefix !== undefined ? `group ${adoption.prefix}` : `merge #${merges}`;
396
+ const full = context === "" ? own : `${context} > ${own}`;
397
+ labels.set(adoption.source, full);
398
+ label(adoption.source, adoption.prefix !== undefined ? context : full);
399
+ }
400
+ };
401
+ labels.set(source, "app");
402
+ label(source, "");
403
+ let complete = true;
404
+ const siteOf = (owner) => {
405
+ const site = labels.get(owner);
406
+ if (site === undefined)
407
+ complete = false;
408
+ return site ?? "unknown";
409
+ };
410
+ const pluginsOf = (owner) => {
411
+ const plugins = recordOf(owner)?.appliedPlugins;
412
+ return plugins instanceof Map ? [...plugins.entries()] : [];
413
+ };
414
+ const nameOf = (hook, origin) => {
415
+ if (origin.plugin !== undefined)
416
+ return origin.plugin;
417
+ const candidates = [hook];
418
+ for (let next = hookSourceOf(hook); next !== undefined; next = hookSourceOf(next)) {
419
+ candidates.push(next);
420
+ }
421
+ for (const [name, plugin] of pluginsOf(origin.owner)) {
422
+ const bundle = recordOf(plugin);
423
+ if (bundle === undefined)
424
+ continue;
425
+ const fields = Object.values(bundle);
426
+ if (candidates.some((candidate) => fields.includes(candidate)))
427
+ return name;
428
+ }
429
+ for (const candidate of candidates) {
430
+ const name = typeof candidate === "function" ? candidate.name : "";
431
+ if (name !== "" && !HOOK_FIELD_NAMES.has(name))
432
+ return name;
433
+ }
434
+ const id = recordOf(hook)?.id;
435
+ return typeof id === "string" && id !== "" ? id : "(anonymous)";
436
+ };
437
+ const staticEntries = (server) => staticHeadersOf(server).map((tag) => {
438
+ let name = tag.plugin;
439
+ if (name === undefined) {
440
+ for (const [pluginName, plugin] of pluginsOf(tag.owner)) {
441
+ if (recordOf(plugin)?.responseHeaders === tag.source)
442
+ name = pluginName;
443
+ }
444
+ }
445
+ return {
446
+ kind: "responseHeaders",
447
+ name: name ?? "(static)",
448
+ site: siteOf(tag.owner),
449
+ headers: tag.names,
450
+ };
451
+ });
452
+ const entriesOf = (hook, kind) => {
453
+ const origin = hookOriginOf(hook);
454
+ if (origin === undefined) {
455
+ complete = false;
456
+ const name = typeof hook === "function" && hook.name !== "" ? hook.name : "(anonymous)";
457
+ return [{ kind, name, site: "unknown" }];
458
+ }
459
+ if (origin.statics === true)
460
+ return staticEntries(origin.owner);
461
+ return [{ kind: origin.kind, name: nameOf(hook, origin), site: siteOf(origin.owner) }];
462
+ };
463
+ // The hook a scoped wrapper gates, or undefined when the probe falls outside its scope.
464
+ const inScope = (hook, probe) => {
465
+ let current = hook;
466
+ for (let scope = hookScopeOf(current); scope !== undefined; scope = hookScopeOf(current)) {
467
+ const covered = "prefix" in scope
468
+ ? probe.path === scope.prefix || probe.path.startsWith(`${scope.prefix}/`)
469
+ : probe.matched &&
470
+ scope.routes.some((route) => route.method === probe.method && route.path === probe.path);
471
+ if (!covered)
472
+ return undefined;
473
+ current = scope.inner;
474
+ }
475
+ return current;
476
+ };
477
+ const scoped = (hooks, kind, probe) => hooks.flatMap((hook) => {
478
+ const inner = inScope(hook, probe);
479
+ return inner === undefined ? [] : entriesOf(inner, kind);
480
+ });
481
+ const probesOf = (frames, path, method, matched) => frames.map((frame, index) => {
482
+ // Each frame sees the path its own mount stripped; the innermost frame's path is `path`.
483
+ const inner = frames
484
+ .slice(index + 1)
485
+ .reduceRight((acc, next) => joinPath(next.base, acc), path);
486
+ return {
487
+ server: frame.server,
488
+ probe: { method, path: inner, matched: matched && index === frames.length - 1 },
489
+ };
490
+ });
491
+ const requestPhase = (steps) => steps.flatMap(({ server, probe }) => scoped(listOf(server, "onRequestHooks"), "onRequest", probe));
492
+ const responsePhase = (steps) => steps
493
+ .map(({ server, probe }) => [
494
+ ...staticEntries(server),
495
+ ...scoped(listOf(server, "onResponseHooks"), "onResponse", probe),
496
+ ...scoped(listOf(server, "onResponseFinalizedHooks"), "onResponseFinalized", probe),
497
+ ])
498
+ .reverse()
499
+ .flat();
500
+ const routes = [];
501
+ const unmatched = [];
502
+ const visit = (frames, frame) => {
503
+ const reportPath = (path) => frames.reduceRight((acc, current) => joinPath(current.base, acc), path);
504
+ for (const route of catalogOf(frame.server)) {
505
+ const probes = probesOf(frames, route.path, route.method, true);
506
+ const entry = recordOf(route.entry);
507
+ const chain = (field, kind) => entry === undefined ? [] : listOf(entry, field).flatMap((hook) => entriesOf(hook, kind));
508
+ routes.push({
509
+ method: route.method,
510
+ path: reportPath(route.path),
511
+ hooks: [
512
+ ...requestPhase(probes),
513
+ ...chain("around", "around"),
514
+ ...chain("authStages", "authenticate"),
515
+ ...chain("derives", "derive"),
516
+ ...chain("beforeHandle", "beforeHandle"),
517
+ ...chain("afterHandle", "afterHandle"),
518
+ ...chain("onError", "onError"),
519
+ ...responsePhase(probes),
520
+ ],
521
+ });
522
+ }
523
+ // A handshake runs the request hooks and the route chain up to `upgrade()`: no `around`, no
524
+ // `afterHandle`, and no response phase, since an accepted handshake sends no response through it.
525
+ for (const candidate of listOf(frame.server, "wsRoutes")) {
526
+ const socket = recordOf(candidate);
527
+ const chain = recordOf(socket?.chain);
528
+ if (typeof socket?.path !== "string" || chain === undefined)
529
+ continue;
530
+ const entries = (field, kind) => listOf(chain, field).flatMap((hook) => entriesOf(hook, kind));
531
+ routes.push({
532
+ method: "WS",
533
+ path: reportPath(socket.path),
534
+ hooks: [
535
+ ...requestPhase(probesOf(frames, socket.path, "WS", true)),
536
+ ...entries("authStages", "authenticate"),
537
+ ...entries("derives", "derive"),
538
+ ...entries("beforeHandle", "beforeHandle"),
539
+ ...entries("onError", "onError"),
540
+ ],
541
+ });
542
+ }
543
+ const prefixes = new Set(["/"]);
544
+ const collect = (server) => {
545
+ for (const adoption of adoptionsOf(server)) {
546
+ if (adoption.prefix !== undefined)
547
+ prefixes.add(adoption.prefix);
548
+ collect(adoption.source);
549
+ }
550
+ };
551
+ collect(frame.server);
552
+ const mounts = listOf(frame.server, "fetchMounts").flatMap((candidate) => {
553
+ const mount = recordOf(candidate);
554
+ return typeof mount?.path === "string"
555
+ ? [{ path: mount.path, app: mount.app, stripPrefix: mount.stripPrefix === true }]
556
+ : [];
557
+ });
558
+ for (const prefix of prefixes) {
559
+ const probePath = `${prefix === "/" ? "" : prefix}/${UNMATCHED_PROBE}`;
560
+ const probes = probesOf(frames, probePath, "GET", false);
561
+ unmatched.push({
562
+ prefix: reportPath(prefix),
563
+ hooks: [...requestPhase(probes), ...responsePhase(probes)],
564
+ });
565
+ }
566
+ for (const { path, ...mount } of mounts) {
567
+ // A server already on this request's path (a self-mount, or two servers mounting each other)
568
+ // is listed like a plain fetch mount: followed, the walk would never end.
569
+ const cyclic = frames.some((outer) => outer.server === mount.app);
570
+ if (isServerRecord(mount.app) && !cyclic) {
571
+ const child = mount.app;
572
+ if (!labels.has(child)) {
573
+ const context = `mount ${reportPath(path)}`;
574
+ labels.set(child, context);
575
+ label(child, context);
576
+ }
577
+ const next = { server: child, base: mount.stripPrefix ? path : "" };
578
+ visit([...frames, next], next);
579
+ }
580
+ else {
581
+ const probes = probesOf(frames, `${path}/${UNMATCHED_PROBE}`, "GET", false);
582
+ unmatched.push({
583
+ prefix: reportPath(path),
584
+ hooks: [...requestPhase(probes), ...responsePhase(probes)],
585
+ });
586
+ }
587
+ }
588
+ };
589
+ const root = { server: source, base: "" };
590
+ visit([root], root);
591
+ const byPath = (a, b) => a.path < b.path ? -1 : a.path > b.path ? 1 : 0;
592
+ routes.sort((a, b) => byPath(a, b) || (a.method < b.method ? -1 : a.method > b.method ? 1 : 0));
593
+ unmatched.sort((a, b) => byPath({ path: a.prefix }, { path: b.prefix }));
594
+ return { complete, routes, unmatched };
595
+ }
249
596
  //# sourceMappingURL=reflection.js.map