@raiyyan/brisk 0.1.0 → 0.2.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 (174) hide show
  1. package/AGENTS.md +135 -67
  2. package/README.md +467 -139
  3. package/dist/src/cli/agents.js +5 -5
  4. package/dist/src/cli/agents.js.map +1 -1
  5. package/dist/src/cli/cli.d.ts +1 -1
  6. package/dist/src/cli/cli.d.ts.map +1 -1
  7. package/dist/src/cli/cli.js +22 -36
  8. package/dist/src/cli/cli.js.map +1 -1
  9. package/dist/src/cli/init.d.ts +8 -11
  10. package/dist/src/cli/init.d.ts.map +1 -1
  11. package/dist/src/cli/init.js +120 -96
  12. package/dist/src/cli/init.js.map +1 -1
  13. package/dist/src/cli/render.d.ts +30 -0
  14. package/dist/src/cli/render.d.ts.map +1 -0
  15. package/dist/src/cli/render.js +101 -0
  16. package/dist/src/cli/render.js.map +1 -0
  17. package/dist/src/cli/system.d.ts +2 -2
  18. package/dist/src/cli/system.d.ts.map +1 -1
  19. package/dist/src/cli/system.js +3 -5
  20. package/dist/src/cli/system.js.map +1 -1
  21. package/dist/src/client/client.d.ts.map +1 -1
  22. package/dist/src/client/client.js +32 -5
  23. package/dist/src/client/client.js.map +1 -1
  24. package/dist/src/client/index.d.ts +1 -1
  25. package/dist/src/client/index.d.ts.map +1 -1
  26. package/dist/src/di/container.d.ts +10 -2
  27. package/dist/src/di/container.d.ts.map +1 -1
  28. package/dist/src/di/container.js +20 -3
  29. package/dist/src/di/container.js.map +1 -1
  30. package/dist/src/http/app.d.ts +41 -12
  31. package/dist/src/http/app.d.ts.map +1 -1
  32. package/dist/src/http/app.js.map +1 -1
  33. package/dist/src/http/context.d.ts +5 -5
  34. package/dist/src/http/context.js +5 -5
  35. package/dist/src/http/controller.d.ts +26 -9
  36. package/dist/src/http/controller.d.ts.map +1 -1
  37. package/dist/src/http/controller.js +25 -52
  38. package/dist/src/http/controller.js.map +1 -1
  39. package/dist/src/http/error-handler.d.ts +27 -0
  40. package/dist/src/http/error-handler.d.ts.map +1 -1
  41. package/dist/src/http/error-handler.js +26 -3
  42. package/dist/src/http/error-handler.js.map +1 -1
  43. package/dist/src/http/instance.d.ts +2 -2
  44. package/dist/src/http/instance.d.ts.map +1 -1
  45. package/dist/src/http/instance.js +107 -39
  46. package/dist/src/http/instance.js.map +1 -1
  47. package/dist/src/http/middleware.d.ts +104 -17
  48. package/dist/src/http/middleware.d.ts.map +1 -1
  49. package/dist/src/http/middleware.js +85 -26
  50. package/dist/src/http/middleware.js.map +1 -1
  51. package/dist/src/http/openapi.d.ts.map +1 -1
  52. package/dist/src/http/openapi.js +30 -2
  53. package/dist/src/http/openapi.js.map +1 -1
  54. package/dist/src/http/routes.d.ts +29 -7
  55. package/dist/src/http/routes.d.ts.map +1 -1
  56. package/dist/src/http/validation.d.ts +16 -0
  57. package/dist/src/http/validation.d.ts.map +1 -0
  58. package/dist/src/http/validation.js +51 -0
  59. package/dist/src/http/validation.js.map +1 -0
  60. package/dist/src/index.d.ts +2 -2
  61. package/dist/src/index.d.ts.map +1 -1
  62. package/dist/src/index.js +2 -2
  63. package/dist/src/index.js.map +1 -1
  64. package/dist/src/testing/test-client.d.ts +8 -6
  65. package/dist/src/testing/test-client.d.ts.map +1 -1
  66. package/dist/src/testing/test-client.js +3 -2
  67. package/dist/src/testing/test-client.js.map +1 -1
  68. package/package.json +3 -2
  69. package/starters/minimal/.env.example +3 -0
  70. package/starters/minimal/.oxfmtrc.json +5 -0
  71. package/starters/minimal/.oxlintrc.json +14 -0
  72. package/starters/minimal/AGENTS.md +23 -0
  73. package/starters/minimal/CLAUDE.md +2 -0
  74. package/starters/minimal/README.md +53 -0
  75. package/starters/minimal/_gitignore +3 -0
  76. package/starters/minimal/package.json +29 -0
  77. package/starters/minimal/src/app.ts +14 -0
  78. package/starters/minimal/src/env.ts +7 -0
  79. package/starters/minimal/src/features/index.ts +8 -0
  80. package/starters/minimal/src/features/notes/notes.controller.ts +38 -0
  81. package/starters/minimal/src/features/notes/notes.repository.ts +36 -0
  82. package/starters/minimal/src/features/notes/notes.schema.ts +24 -0
  83. package/starters/minimal/src/features/notes/notes.service.ts +33 -0
  84. package/starters/minimal/src/main.ts +4 -0
  85. package/starters/minimal/src/schemas.ts +26 -0
  86. package/starters/minimal/templates/feature/src/features/index.ts.controllers.insert +1 -0
  87. package/starters/minimal/templates/feature/src/features/index.ts.imports.insert +1 -0
  88. package/starters/minimal/templates/feature/src/features/{{kebab}}/{{kebab}}.controller.ts +38 -0
  89. package/starters/minimal/templates/feature/src/features/{{kebab}}/{{kebab}}.repository.ts +36 -0
  90. package/starters/minimal/templates/feature/src/features/{{kebab}}/{{kebab}}.schema.ts +24 -0
  91. package/starters/minimal/templates/feature/src/features/{{kebab}}/{{kebab}}.service.ts +33 -0
  92. package/starters/minimal/templates/feature/test/{{kebab}}.service.test.ts +20 -0
  93. package/starters/minimal/templates/feature/test/{{kebab}}.test.ts +35 -0
  94. package/starters/minimal/templates/middleware/src/middlewares/{{kebab}}.ts +12 -0
  95. package/starters/minimal/test/notes.service.test.ts +20 -0
  96. package/starters/minimal/test/notes.test.ts +35 -0
  97. package/starters/minimal/tsconfig.json +17 -0
  98. package/starters/minimal/vitest.config.ts +9 -0
  99. package/starters/sqlite-auth/.dockerignore +8 -0
  100. package/starters/sqlite-auth/.env.example +9 -0
  101. package/starters/sqlite-auth/.oxfmtrc.json +5 -0
  102. package/starters/sqlite-auth/.oxlintrc.json +14 -0
  103. package/starters/sqlite-auth/AGENTS.md +23 -0
  104. package/starters/sqlite-auth/CLAUDE.md +2 -0
  105. package/starters/sqlite-auth/Dockerfile +23 -0
  106. package/starters/sqlite-auth/README.md +93 -0
  107. package/starters/sqlite-auth/_gitignore +5 -0
  108. package/starters/sqlite-auth/compose.yaml +14 -0
  109. package/starters/sqlite-auth/package.json +35 -0
  110. package/starters/sqlite-auth/public/.gitkeep +0 -0
  111. package/starters/sqlite-auth/src/app.ts +39 -0
  112. package/starters/sqlite-auth/src/auth/tokens.ts +41 -0
  113. package/starters/sqlite-auth/src/database/clock.ts +4 -0
  114. package/starters/sqlite-auth/src/database/database.ts +29 -0
  115. package/starters/sqlite-auth/src/database/errors.ts +11 -0
  116. package/starters/sqlite-auth/src/database/migrations.ts +29 -0
  117. package/starters/sqlite-auth/src/env.ts +17 -0
  118. package/starters/sqlite-auth/src/features/auth/auth.controller.ts +28 -0
  119. package/starters/sqlite-auth/src/features/index.ts +12 -0
  120. package/starters/sqlite-auth/src/features/notes/notes.controller.ts +39 -0
  121. package/starters/sqlite-auth/src/features/notes/notes.repository.ts +47 -0
  122. package/starters/sqlite-auth/src/features/notes/notes.schema.ts +24 -0
  123. package/starters/sqlite-auth/src/features/notes/notes.service.ts +33 -0
  124. package/starters/sqlite-auth/src/features/users/admin-seed.ts +21 -0
  125. package/starters/sqlite-auth/src/features/users/users.controller.ts +42 -0
  126. package/starters/sqlite-auth/src/features/users/users.errors.ts +13 -0
  127. package/starters/sqlite-auth/src/features/users/users.repository.ts +77 -0
  128. package/starters/sqlite-auth/src/features/users/users.schema.ts +35 -0
  129. package/starters/sqlite-auth/src/features/users/users.service.ts +80 -0
  130. package/starters/sqlite-auth/src/main.ts +4 -0
  131. package/starters/sqlite-auth/src/middlewares/authenticate.ts +29 -0
  132. package/starters/sqlite-auth/src/schemas.ts +26 -0
  133. package/starters/sqlite-auth/templates/feature/src/database/migrations.ts.migrations.insert +5 -0
  134. package/starters/sqlite-auth/templates/feature/src/features/index.ts.controllers.insert +1 -0
  135. package/starters/sqlite-auth/templates/feature/src/features/index.ts.imports.insert +1 -0
  136. package/starters/sqlite-auth/templates/feature/src/features/{{kebab}}/{{kebab}}.controller.ts +39 -0
  137. package/starters/sqlite-auth/templates/feature/src/features/{{kebab}}/{{kebab}}.repository.ts +47 -0
  138. package/starters/sqlite-auth/templates/feature/src/features/{{kebab}}/{{kebab}}.schema.ts +24 -0
  139. package/starters/sqlite-auth/templates/feature/src/features/{{kebab}}/{{kebab}}.service.ts +33 -0
  140. package/starters/sqlite-auth/templates/feature/test/{{kebab}}.service.test.ts +20 -0
  141. package/starters/sqlite-auth/templates/feature/test/{{kebab}}.test.ts +41 -0
  142. package/starters/sqlite-auth/templates/middleware/src/middlewares/{{kebab}}.ts +12 -0
  143. package/starters/sqlite-auth/test/auth.test.ts +18 -0
  144. package/starters/sqlite-auth/test/helpers.ts +13 -0
  145. package/starters/sqlite-auth/test/notes.service.test.ts +20 -0
  146. package/starters/sqlite-auth/test/notes.test.ts +41 -0
  147. package/starters/sqlite-auth/test/users.service.test.ts +25 -0
  148. package/starters/sqlite-auth/test/users.test.ts +164 -0
  149. package/starters/sqlite-auth/tsconfig.json +17 -0
  150. package/starters/sqlite-auth/vitest.config.ts +15 -0
  151. package/dist/src/cli/generate.d.ts +0 -9
  152. package/dist/src/cli/generate.d.ts.map +0 -1
  153. package/dist/src/cli/generate.js +0 -39
  154. package/dist/src/cli/generate.js.map +0 -1
  155. package/dist/src/cli/templates/auth.d.ts +0 -4
  156. package/dist/src/cli/templates/auth.d.ts.map +0 -1
  157. package/dist/src/cli/templates/auth.js +0 -90
  158. package/dist/src/cli/templates/auth.js.map +0 -1
  159. package/dist/src/cli/templates/database.d.ts +0 -4
  160. package/dist/src/cli/templates/database.d.ts.map +0 -1
  161. package/dist/src/cli/templates/database.js +0 -107
  162. package/dist/src/cli/templates/database.js.map +0 -1
  163. package/dist/src/cli/templates/docker.d.ts +0 -4
  164. package/dist/src/cli/templates/docker.d.ts.map +0 -1
  165. package/dist/src/cli/templates/docker.js +0 -102
  166. package/dist/src/cli/templates/docker.js.map +0 -1
  167. package/dist/src/cli/templates/feature.d.ts +0 -8
  168. package/dist/src/cli/templates/feature.d.ts.map +0 -1
  169. package/dist/src/cli/templates/feature.js +0 -145
  170. package/dist/src/cli/templates/feature.js.map +0 -1
  171. package/dist/src/cli/templates/project.d.ts +0 -24
  172. package/dist/src/cli/templates/project.d.ts.map +0 -1
  173. package/dist/src/cli/templates/project.js +0 -166
  174. package/dist/src/cli/templates/project.js.map +0 -1
@@ -2,11 +2,12 @@ import { randomUUID } from "node:crypto";
2
2
  import { createServer } from "node:http";
3
3
  import express, { Router } from "express";
4
4
  import { createLogger, Logger } from "../config/logger.js";
5
- import { Container, provide } from "../di/container.js";
5
+ import { Container, lifecycleFailure, provide } from "../di/container.js";
6
6
  import { NotFoundError } from "../errors/http-errors.js";
7
7
  import { createRequestContext, getContext } from "./context.js";
8
8
  import { joinPath, methodGuard } from "./controller.js";
9
- import { defaultErrorFormatter, errorHandler } from "./error-handler.js";
9
+ import { defaultErrorFormatter, ErrorTranslator, errorHandler, toHttpError } from "./error-handler.js";
10
+ import { ExpressMiddleware, resolveMiddleware, securityOf } from "./middleware.js";
10
11
  import { buildOpenApi } from "./openapi.js";
11
12
  import { HttpServer } from "./server.js";
12
13
  const DEFAULT_SECURITY_HEADERS = {
@@ -19,8 +20,8 @@ const DEFAULT_SECURITY_HEADERS = {
19
20
  /** Accepts a caller's `x-request-id` only when it is short and plain, so it cannot forge log lines. */
20
21
  const SAFE_REQUEST_ID = /^[\w.:-]{1,128}$/;
21
22
  /**
22
- * Builds one instance of an app: security headers, request ids and logging, your Express setup, JSON parsing,
23
- * health check and OpenAPI routes, controllers, 404 and error handling, and the container that runs every
23
+ * Builds one instance of an app: security headers, request ids and logging, health check and OpenAPI routes,
24
+ * the app's `use`, controllers (each parsing its own JSON bodies), mounts, 404 and error handling, and the container that runs every
24
25
  * lifecycle hook. `overrides` come after the app's own providers, so they win.
25
26
  */
26
27
  export function createInstance(options, overrides = []) {
@@ -28,54 +29,84 @@ export function createInstance(options, overrides = []) {
28
29
  const hooks = options.hooks ?? {};
29
30
  const http = options.http ?? {};
30
31
  const errors = options.errors ?? {};
31
- const container = new Container([provide(Logger, logger), ...(options.providers ?? []), ...overrides]);
32
+ const controllers = Object.entries(options.controllers ?? {});
33
+ const container = new Container([
34
+ provide(Logger, logger),
35
+ provide(ErrorTranslator, (error) => {
36
+ const translated = toHttpError(error, { mappers: errors.mappers ?? [], exposeInternalErrors: errors.exposeInternal ?? false }, logger);
37
+ const { status, code, message, details } = translated;
38
+ return { status, code, message, details };
39
+ }),
40
+ ...controllers.flatMap(([, controller]) => controller.providers),
41
+ ...(options.providers ?? []),
42
+ ...overrides,
43
+ ]);
32
44
  const app = express();
33
45
  const draining = { active: false, responses: new Map() };
34
46
  app.disable("x-powered-by");
35
47
  app.set("query parser", "simple");
36
- if (http.trustProxy !== undefined)
37
- app.set("trust proxy", http.trustProxy);
48
+ for (const [name, value] of Object.entries(http.settings ?? {}))
49
+ app.set(name, value);
50
+ const allRoutes = [];
51
+ let document;
52
+ const openapi = () => (document ??= buildOpenApi(allRoutes, options.openapi ?? { title: "API", version: "0.0.0" }));
38
53
  app.use(prelude({ logger, hooks, draining, container, headers: securityHeaders(http.securityHeaders) }));
39
- options.configureExpress?.(app);
54
+ // System routes come before the app's own middleware, so a rate limit or an auth check never blocks a probe.
55
+ if (http.healthPath !== false) {
56
+ app.get(http.healthPath ?? "/health", (_req, res) => {
57
+ if (draining.active)
58
+ res.status(503).json({ status: "shutting down" });
59
+ else
60
+ res.json({ status: "ok" });
61
+ });
62
+ }
63
+ const openapiPath = options.openapi?.path ?? "/openapi.json";
64
+ if (options.openapi && openapiPath !== false) {
65
+ app.get(openapiPath, (_req, res) => {
66
+ res.json(openapi());
67
+ });
68
+ }
69
+ const use = options.use ?? [];
70
+ for (const middleware of use) {
71
+ app.use(middleware instanceof ExpressMiddleware ? middleware.handler : runEach(middleware));
72
+ }
40
73
  const router = Router();
74
+ const parseBody = express.json({
75
+ limit: http.bodyLimit ?? "1mb",
76
+ type: ["application/json", "application/*+json"],
77
+ });
78
+ const appSecurity = securityOf(use);
41
79
  const manifest = {};
42
- const allRoutes = [];
43
- for (const [name, controller] of Object.entries(options.controllers ?? {})) {
44
- const mounted = controller.mount(container, router, joinPath(options.prefix ?? "/", controller.prefix));
45
- for (const endpoint of mounted.endpoints)
46
- allRoutes.push({ ...endpoint, tag: name });
80
+ for (const [name, controller] of controllers) {
81
+ const basePath = joinPath(options.prefix ?? "/", controller.prefix);
82
+ const mounted = controller.mount({ container, router, basePath, parseBody });
83
+ for (const endpoint of mounted.endpoints) {
84
+ const security = appSecurity ? { ...appSecurity, ...endpoint.security } : endpoint.security;
85
+ allRoutes.push({ ...endpoint, security, tag: name });
86
+ }
47
87
  if (mounted.manifest)
48
88
  manifest[name] = mounted.manifest;
49
89
  }
50
- let document;
51
- const openapi = () => (document ??= buildOpenApi(allRoutes, options.openapi ?? { title: "API", version: "0.0.0" }));
52
- const routes = allRoutes.map(({ method, path }) => `${method.toUpperCase()} ${path}`);
90
+ assertUniqueRoutes(allRoutes);
91
+ const mounts = Object.entries(options.mount ?? {});
92
+ const routes = [
93
+ ...allRoutes.map(({ method, path }) => `${method.toUpperCase()} ${path}`),
94
+ ...mounts.map(([path]) => `MOUNT ${path}`),
95
+ ];
53
96
  const guard = methodGuard(allRoutes);
54
- const json = express.json({
55
- limit: http.bodyLimit ?? "1mb",
56
- type: ["application/json", "application/*+json"],
57
- });
58
97
  app.use((req, res, next) => {
59
98
  if (req.method === "OPTIONS")
60
99
  guard(req, res, next);
61
100
  else
62
- json(req, res, next);
101
+ next();
63
102
  });
64
- if (hooks.onRequest)
65
- app.use(onRequest(hooks.onRequest));
66
- const openapiPath = options.openapi?.path ?? "/openapi.json";
67
- if (options.openapi && openapiPath !== false) {
68
- app.get(openapiPath, (_req, res) => {
69
- res.json(openapi());
70
- });
71
- }
72
- if (http.healthPath !== false) {
73
- app.get(http.healthPath ?? "/health", (_req, res) => {
74
- res.json({ status: "ok" });
75
- });
76
- }
77
103
  app.use(router);
78
104
  app.use(guard);
105
+ for (const [path, handlers] of mounts) {
106
+ if (!path.startsWith("/"))
107
+ throw new TypeError(`Mount path "${path}" must start with "/"`);
108
+ app.use(path, ...[handlers].flat());
109
+ }
79
110
  app.use((req) => {
80
111
  throw new NotFoundError(`Cannot ${req.method} ${req.path}`, { code: "ROUTE_NOT_FOUND" });
81
112
  });
@@ -141,12 +172,16 @@ export function createInstance(options, overrides = []) {
141
172
  process.on("uncaughtException", onCrash);
142
173
  }
143
174
  };
144
- /** Boots, and shuts down whatever already started when booting fails. */
175
+ /**
176
+ * Boots, and when booting fails logs why (naming the provider and hook when one threw), then shuts down
177
+ * whatever already started and rethrows.
178
+ */
145
179
  const boot = async (run) => {
146
180
  try {
147
181
  return await run();
148
182
  }
149
183
  catch (error) {
184
+ logger.fatal({ err: error, ...lifecycleFailure(error) }, "startup failed");
150
185
  await shutdown();
151
186
  throw error;
152
187
  }
@@ -233,7 +268,7 @@ const proceed = (next) => next();
233
268
  /**
234
269
  * Everything brisk does before your Express code, in one layer: security headers, the request id and context
235
270
  * (with its lazy logger), the response log and `onResponse`, shutdown's `Connection: close`, and the app's
236
- * dependency scope, so `inject()` works for the rest of the request, `configureExpress` included.
271
+ * dependency scope, so `inject()` works for the rest of the request, the app's `use` and `mount` included.
237
272
  *
238
273
  * The response is logged on `close`, which also fires for requests the client abandoned (`finish` would not).
239
274
  * The listener exists only when something consumes it: the `info` log level or an `onResponse` hook.
@@ -279,12 +314,25 @@ function pathOf(url) {
279
314
  const query = url.indexOf("?");
280
315
  return query === -1 ? url : url.slice(0, query);
281
316
  }
282
- function onRequest(hook) {
283
- return async (req, _res, next) => {
284
- await hook(getContext(req));
317
+ /**
318
+ * One app-level `defineMiddleware` as an Express layer. Its result is memoized for the request, so a route that
319
+ * lists it again, or reads it with `run(ctx)`, does not run it twice. Allocates only when it is async.
320
+ */
321
+ function runEach(middleware) {
322
+ return (req, res, next) => {
323
+ const out = resolveMiddleware(middleware, getContext(req));
324
+ if (out instanceof Promise)
325
+ return continueAfter(out, res, next);
285
326
  next();
327
+ return undefined;
286
328
  };
287
329
  }
330
+ /** Express 5 sends a rejected promise to the error handler; a middleware that answered stops the request. */
331
+ async function continueAfter(out, res, next) {
332
+ await out;
333
+ if (!res.headersSent)
334
+ next();
335
+ }
288
336
  /**
289
337
  * Stops accepting connections and resolves once every in-flight request has finished. Keep-alive sockets
290
338
  * close as soon as they go idle; after `timeoutMs` every remaining socket is destroyed, including upgraded
@@ -306,4 +354,24 @@ function closeServer(server, sockets, timeoutMs) {
306
354
  server.closeIdleConnections();
307
355
  });
308
356
  }
357
+ /**
358
+ * Two routes that answer the same requests are a mistake: Express only ever runs the first, while the typed
359
+ * client and the OpenAPI document would both still list the second. Paths that differ only in parameter names
360
+ * (`:id` and `:userId`) match the same requests.
361
+ */
362
+ function assertUniqueRoutes(endpoints) {
363
+ const seen = new Map();
364
+ for (const endpoint of endpoints) {
365
+ const key = `${endpoint.method} ${endpoint.path.replace(/([:*])[\w$]+/g, "$1")}`;
366
+ const first = seen.get(key);
367
+ if (!first) {
368
+ seen.set(key, endpoint);
369
+ continue;
370
+ }
371
+ throw new Error(`${describeRoute(endpoint)} can never run: ${describeRoute(first)} answers the same requests. Remove or change one.`);
372
+ }
373
+ }
374
+ function describeRoute({ method, path, tag, name }) {
375
+ return `${method.toUpperCase()} ${path} (${tag}.${name ?? "unnamed route"})`;
376
+ }
309
377
  //# sourceMappingURL=instance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"instance.js","sourceRoot":"","sources":["../../../src/http/instance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instance.js","sourceRoot":"","sources":["../../../src/http/instance.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,46 @@
1
+ import type { RequestHandler } from "express";
2
+ import type { z } from "zod";
1
3
  import { type RequestContext } from "./context.ts";
4
+ /** An OpenAPI security scheme, in OpenAPI's own words: `{ type: "http", scheme: "bearer" }` and the like. */
5
+ export type SecurityScheme = {
6
+ type: "http";
7
+ scheme: string;
8
+ bearerFormat?: string;
9
+ description?: string;
10
+ } | {
11
+ type: "apiKey";
12
+ in: "header" | "query" | "cookie";
13
+ name: string;
14
+ description?: string;
15
+ } | {
16
+ type: "oauth2";
17
+ flows: Readonly<Record<string, unknown>>;
18
+ description?: string;
19
+ } | {
20
+ type: "openIdConnect";
21
+ openIdConnectUrl: string;
22
+ description?: string;
23
+ };
24
+ /** Security schemes by name, such as `{ bearer: { type: "http", scheme: "bearer" } }`. */
25
+ export type SecuritySchemes = Readonly<Record<string, SecurityScheme>>;
2
26
  /**
3
27
  * Per-request logic shared by many routes, as {@link defineMiddleware} makes it. `run(ctx)` resolves to its
4
28
  * output, computing it at most once per request.
5
29
  */
6
30
  export interface Middleware<Out extends object = object> {
7
- readonly name: string;
31
+ /** The security schemes it enforces; the OpenAPI document lists them on every operation behind it. */
32
+ readonly security?: SecuritySchemes | undefined;
8
33
  run(ctx: RequestContext): Promise<Out>;
9
34
  }
35
+ /** Options for {@link defineMiddleware}. */
36
+ export interface MiddlewareOptions<P, Q> {
37
+ /** Path params the middleware reads, validated (400 when invalid) and typed before it runs. */
38
+ params?: P;
39
+ /** Query fields the middleware reads, validated and typed before it runs. */
40
+ query?: Q;
41
+ /** The security schemes it enforces, for the OpenAPI document. */
42
+ security?: SecuritySchemes;
43
+ }
10
44
  /**
11
45
  * Names a middleware may not return: the request basics and validated input share the handler's ctx, and a
12
46
  * middleware field with one of these names would be silently replaced. `log` is allowed, to enrich the logger.
@@ -18,30 +52,76 @@ type NoReservedKeys<Out> = {
18
52
  };
19
53
  /** The middleware's output, or a type error naming any {@link ReservedKey} it uses. */
20
54
  type Checked<Out> = Out extends object ? Out & NoReservedKeys<Out> : Out;
55
+ type Result<Out> = Out extends object ? Out : {};
56
+ /** The ctx of a middleware that declares input: the request basics plus the validated `params` and `query`. */
57
+ export type MiddlewareInput<P, Q> = RequestContext & (P extends z.ZodType ? {
58
+ params: z.output<P>;
59
+ } : {}) & (Q extends z.ZodType ? {
60
+ query: z.output<Q>;
61
+ } : {});
21
62
  /**
22
- * Declares per-request logic shared by many routes. Return an object to add typed fields to the handler's ctx,
23
- * return nothing for a pure check, or throw an error class to stop the request. Sync or async.
63
+ * Declares per-request logic shared by many routes, as `(fn)` or `(options, fn)`. Return an object to add
64
+ * typed fields to the handler's ctx, return nothing for a pure check, or throw an error class to stop the
65
+ * request. Sync or async.
24
66
  *
25
- * Each middleware runs at most once per request: another middleware, or a handler, can `await other.run(ctx)`
26
- * and reuse its result. The names `req`, `res`, `requestId`, `params`, `query`, `body` and `headers` are
27
- * reserved on ctx and rejected at compile time; returning `log` replaces the request logger.
67
+ * Middlewares run before the route validates its input, so authentication rejects a request first. A
68
+ * middleware that needs input, such as the id its permission check depends on, declares `params` or `query`:
69
+ * they are validated (400 when invalid) and typed before it runs.
70
+ *
71
+ * Each runs at most once per request: another middleware, or a handler, can `await other.run(ctx)` to reuse
72
+ * its result. The names `req`, `res`, `requestId`, `params`, `query`, `body` and `headers` are reserved on ctx
73
+ * and rejected at compile time; returning `log` replaces the request logger.
28
74
  *
29
75
  * @example
30
76
  * ```ts
31
- * export const authenticate = defineMiddleware(async ({ req, log }) => {
32
- * const user = await inject(Sessions).verify(req.get("authorization"));
33
- * if (!user) throw new UnauthorizedError();
34
- * return { user, log: log.child({ userId: user.id }) };
35
- * }, "authenticate");
77
+ * export const authenticate = defineMiddleware(
78
+ * { security: { bearer: { type: "http", scheme: "bearer" } } },
79
+ * async ({ req, log }) => {
80
+ * const user = await inject(Sessions).verify(req.get("authorization"));
81
+ * if (!user) throw new UnauthorizedError();
82
+ * return { user, log: log.child({ userId: user.id }) };
83
+ * },
84
+ * );
85
+ *
86
+ * export const requireProjectRole = (role: Role) =>
87
+ * defineMiddleware(
88
+ * { params: z.object({ projectId: z.uuid() }), security: authenticate.security },
89
+ * async (ctx) => {
90
+ * const { user } = await authenticate.run(ctx);
91
+ * const member = await inject(Members).find(ctx.params.projectId, user.id);
92
+ * if (!member) throw new NotFoundError("Project not found");
93
+ * if (!allows(member.role, role)) throw new ForbiddenError();
94
+ * return { member };
95
+ * },
96
+ * );
97
+ * ```
98
+ */
99
+ export declare function defineMiddleware<Out extends object | void>(fn: (ctx: RequestContext) => Checked<Out> | Promise<Checked<Out>>): Middleware<Result<Out>>;
100
+ export declare function defineMiddleware<Out extends object | void, P extends z.ZodType | undefined = undefined, Q extends z.ZodType | undefined = undefined>(options: MiddlewareOptions<P, Q>, fn: (ctx: MiddlewareInput<P, Q>) => Checked<Out> | Promise<Checked<Out>>): Middleware<Result<Out>>;
101
+ /**
102
+ * Runs an Express middleware as a brisk middleware, in order with the others in `use`: a body parser such as
103
+ * multer then runs after authentication, on the one route that needs it. An error it passes to `next` goes
104
+ * to the app's error handler; when it answers the request itself, the route stops there.
36
105
  *
37
- * export const requireRole = (role: Role) =>
38
- * defineMiddleware(async (ctx) => {
39
- * const { user } = await authenticate.run(ctx);
40
- * if (user.role !== role) throw new ForbiddenError();
41
- * });
106
+ * @example
107
+ * ```ts
108
+ * upload: route.post(
109
+ * "/:taskId/attachments",
110
+ * { use: [authenticate, fromExpress(multer({ limits: { fileSize: 5_000_000 } }).single("file"))] },
111
+ * ({ req, params }) => attachments.save(params.taskId, req.file),
112
+ * ),
42
113
  * ```
43
114
  */
44
- export declare function defineMiddleware<Out extends object | void>(fn: (ctx: RequestContext) => Checked<Out> | Promise<Checked<Out>>, name?: string): Middleware<Out extends object ? Out : {}>;
115
+ export declare function fromExpress(handler: RequestHandler): Middleware<{}>;
116
+ /**
117
+ * An Express middleware wrapped by {@link fromExpress}. In a route's `use` it runs in order with the others;
118
+ * in the app's `use` the app registers `handler` itself as a plain Express layer, at no extra cost.
119
+ */
120
+ export declare class ExpressMiddleware implements Middleware<{}> {
121
+ readonly handler: RequestHandler;
122
+ constructor(handler: RequestHandler);
123
+ run({ req, res }: RequestContext): Promise<{}>;
124
+ }
45
125
  type UnionToIntersection<U> = (U extends unknown ? (x: U) => void : never) extends (x: infer I) => void ? I : never;
46
126
  /** Merges the outputs of a middleware list into one type: `[auth, tenant]` gives `{ user } & { tenant }`. */
47
127
  export type MiddlewareContext<T extends readonly Middleware[]> = [T[number]] extends [never] ? {} : UnionToIntersection<T[number] extends infer M ? (M extends Middleware<infer O> ? O : never) : never>;
@@ -50,5 +130,12 @@ export type MiddlewareContext<T extends readonly Middleware[]> = [T[number]] ext
50
130
  * while the middlewares are, and returns a promise only from the first async one on.
51
131
  */
52
132
  export declare function applyMiddlewares(base: RequestContext, target: object, list: readonly Middleware[], from?: number): void | Promise<void>;
133
+ /**
134
+ * Runs one middleware for the request, reusing its memoized result: a value when it stays synchronous, a
135
+ * promise otherwise.
136
+ */
137
+ export declare function resolveMiddleware(middleware: Middleware, ctx: RequestContext): object | Promise<object>;
138
+ /** The security schemes a list of middlewares enforces, merged; `undefined` when none does. */
139
+ export declare function securityOf(middlewares: readonly Middleware[]): SecuritySchemes | undefined;
53
140
  export {};
54
141
  //# sourceMappingURL=middleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/http/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAEhE;;;GAGG;AACH,MAAM,WAAW,UAAU,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CACxC;AAED;;;GAGG;AACH,KAAK,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzF,yFAAyF;AACzF,KAAK,cAAc,CAAC,GAAG,IAAI;KAAG,CAAC,IAAI,MAAM,GAAG,GAAG,CAAC,SAAS,WAAW,GAAG,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC,CAAC,CAAC;CAAE,CAAC;AAE9G,uFAAuF;AACvF,KAAK,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,MAAM,GAAG,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,SAAS,MAAM,GAAG,IAAI,EACxD,EAAE,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EACjE,IAAI,GAAE,MAAgB,GACrB,UAAU,CAAC,GAAG,SAAS,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,CAE3C;AAsDD,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,GACnG,CAAC,GACD,KAAK,CAAC;AAEV,6GAA6G;AAC7G,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,SAAS,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACxF,EAAE,GACF,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAEzG;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,UAAU,EAAE,EAC3B,IAAI,SAAI,GACP,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CActB"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/http/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAA+B,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAGhF,6GAA6G;AAC7G,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACzF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAClF;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9E,0FAA0F;AAC1F,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;AAEvE;;;GAGG;AACH,MAAM,WAAW,UAAU,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM;IACrD,sGAAsG;IACtG,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IAChD,GAAG,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CACxC;AAED,4CAA4C;AAC5C,MAAM,WAAW,iBAAiB,CAAC,CAAC,EAAE,CAAC;IACrC,+FAA+F;IAC/F,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,6EAA6E;IAC7E,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,kEAAkE;IAClE,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED;;;GAGG;AACH,KAAK,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzF,yFAAyF;AACzF,KAAK,cAAc,CAAC,GAAG,IAAI;KAAG,CAAC,IAAI,MAAM,GAAG,GAAG,CAAC,SAAS,WAAW,GAAG,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC,CAAC,CAAC;CAAE,CAAC;AAE9G,uFAAuF;AACvF,KAAK,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,MAAM,GAAG,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAEzE,KAAK,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC;AAEjD,+GAA+G;AAC/G,MAAM,MAAM,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,cAAc,GAChD,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG;IAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG,EAAE,CAAC,GACpD,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG;IAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG,EAAE,CAAC,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,SAAS,MAAM,GAAG,IAAI,EACxD,EAAE,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAChE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,wBAAgB,gBAAgB,CAC9B,GAAG,SAAS,MAAM,GAAG,IAAI,EACzB,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS,EAC3C,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS,EAE3C,OAAO,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,EAChC,EAAE,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GACvE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAiB3B;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAAC,EAAE,CAAC,CAEnE;AAED;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,UAAU,CAAC,EAAE,CAAC;IACtD,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IAEjC,YAAY,OAAO,EAAE,cAAc,EAElC;IAED,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,EAAE,CAAC,CAW7C;CACF;AA2ED,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,GACnG,CAAC,GACD,KAAK,CAAC;AAEV,6GAA6G;AAC7G,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,SAAS,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACxF,EAAE,GACF,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAEzG;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,UAAU,EAAE,EAC3B,IAAI,SAAI,GACP,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CActB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEvG;AAED,+FAA+F;AAC/F,wBAAgB,UAAU,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,GAAG,eAAe,GAAG,SAAS,CAG1F"}
@@ -1,42 +1,71 @@
1
- import { requestMemo } from "./context.js";
1
+ import { HandlerContext, requestMemo } from "./context.js";
2
+ import { parseInput, Pending, settle } from "./validation.js";
3
+ export function defineMiddleware(optionsOrFn, maybeFn) {
4
+ if (typeof optionsOrFn === "function")
5
+ return new DefinedMiddleware(optionsOrFn, {});
6
+ if (typeof maybeFn !== "function") {
7
+ throw new TypeError("defineMiddleware takes (fn) or (options, fn)");
8
+ }
9
+ return new DefinedMiddleware(maybeFn, optionsOrFn);
10
+ }
11
+ const EMPTY = Object.freeze({});
2
12
  /**
3
- * Declares per-request logic shared by many routes. Return an object to add typed fields to the handler's ctx,
4
- * return nothing for a pure check, or throw an error class to stop the request. Sync or async.
5
- *
6
- * Each middleware runs at most once per request: another middleware, or a handler, can `await other.run(ctx)`
7
- * and reuse its result. The names `req`, `res`, `requestId`, `params`, `query`, `body` and `headers` are
8
- * reserved on ctx and rejected at compile time; returning `log` replaces the request logger.
13
+ * Runs an Express middleware as a brisk middleware, in order with the others in `use`: a body parser such as
14
+ * multer then runs after authentication, on the one route that needs it. An error it passes to `next` goes
15
+ * to the app's error handler; when it answers the request itself, the route stops there.
9
16
  *
10
17
  * @example
11
18
  * ```ts
12
- * export const authenticate = defineMiddleware(async ({ req, log }) => {
13
- * const user = await inject(Sessions).verify(req.get("authorization"));
14
- * if (!user) throw new UnauthorizedError();
15
- * return { user, log: log.child({ userId: user.id }) };
16
- * }, "authenticate");
17
- *
18
- * export const requireRole = (role: Role) =>
19
- * defineMiddleware(async (ctx) => {
20
- * const { user } = await authenticate.run(ctx);
21
- * if (user.role !== role) throw new ForbiddenError();
22
- * });
19
+ * upload: route.post(
20
+ * "/:taskId/attachments",
21
+ * { use: [authenticate, fromExpress(multer({ limits: { fileSize: 5_000_000 } }).single("file"))] },
22
+ * ({ req, params }) => attachments.save(params.taskId, req.file),
23
+ * ),
23
24
  * ```
24
25
  */
25
- export function defineMiddleware(fn, name = fn.name) {
26
- return new DefinedMiddleware(fn, name);
26
+ export function fromExpress(handler) {
27
+ return new ExpressMiddleware(handler);
28
+ }
29
+ /**
30
+ * An Express middleware wrapped by {@link fromExpress}. In a route's `use` it runs in order with the others;
31
+ * in the app's `use` the app registers `handler` itself as a plain Express layer, at no extra cost.
32
+ */
33
+ export class ExpressMiddleware {
34
+ handler;
35
+ constructor(handler) {
36
+ this.handler = handler;
37
+ }
38
+ run({ req, res }) {
39
+ return new Promise((resolve, reject) => {
40
+ const answered = () => resolve(EMPTY);
41
+ res.once("finish", answered);
42
+ const next = (error) => {
43
+ res.off("finish", answered);
44
+ if (error === undefined || error === "route" || error === "router")
45
+ resolve(EMPTY);
46
+ else
47
+ reject(error);
48
+ };
49
+ Promise.resolve(this.handler(req, res, next)).catch(reject);
50
+ });
51
+ }
27
52
  }
28
- const EMPTY = Object.freeze({});
29
53
  /**
30
54
  * A middleware made by {@link defineMiddleware}. Its result is memoized in the request's own context: a plain
31
55
  * value when `fn` is synchronous, so sync middlewares never allocate a promise on the request path, and a
32
56
  * promise (replaced by its value once settled) when `fn` is async.
33
57
  */
34
58
  class DefinedMiddleware {
35
- name;
59
+ security;
36
60
  #fn;
37
- constructor(fn, name) {
38
- this.name = name;
61
+ #params;
62
+ #query;
63
+ constructor(fn, options) {
64
+ // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- fn's ctx type was checked by the overload that declared it
39
65
  this.#fn = fn;
66
+ this.#params = options.params;
67
+ this.#query = options.query;
68
+ this.security = options.security;
40
69
  }
41
70
  run(ctx) {
42
71
  try {
@@ -54,7 +83,7 @@ class DefinedMiddleware {
54
83
  return cached.then((settled) => this.#output(settled));
55
84
  if (cached !== undefined)
56
85
  return this.#output(cached);
57
- const out = this.#fn(ctx);
86
+ const out = this.#call(ctx);
58
87
  if (!(out instanceof Promise)) {
59
88
  const value = this.#output(out);
60
89
  memo.set(this, value);
@@ -68,6 +97,24 @@ class DefinedMiddleware {
68
97
  memo.set(this, pending);
69
98
  return pending;
70
99
  }
100
+ /** Calls `fn`, first validating the input it declared onto a ctx of its own. */
101
+ #call(ctx) {
102
+ if (!this.#params && !this.#query)
103
+ return this.#fn(ctx);
104
+ const input = new HandlerContext(ctx);
105
+ const params = parseInput(this.#params, ctx.req.params, "params");
106
+ const query = parseInput(this.#query, ctx.req.query, "query");
107
+ if (params instanceof Pending || query instanceof Pending) {
108
+ return Promise.all([settle(params), settle(query)]).then(([p, q]) => {
109
+ input.params = p;
110
+ input.query = q;
111
+ return this.#fn(input);
112
+ });
113
+ }
114
+ input.params = params;
115
+ input.query = query;
116
+ return this.#fn(input);
117
+ }
71
118
  /** What `fn` returned, as the output its signature declared (`{}` for a check-only middleware). */
72
119
  #output(out) {
73
120
  // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- fn is typed to return Out (or nothing)
@@ -83,7 +130,7 @@ export function applyMiddlewares(base, target, list, from = 0) {
83
130
  const middleware = list[index];
84
131
  if (!middleware)
85
132
  continue;
86
- const out = isDefined(middleware) ? middleware.resolve(base) : middleware.run(base);
133
+ const out = resolveMiddleware(middleware, base);
87
134
  if (out instanceof Promise) {
88
135
  return out.then((value) => {
89
136
  Object.assign(target, value);
@@ -94,6 +141,18 @@ export function applyMiddlewares(base, target, list, from = 0) {
94
141
  }
95
142
  return undefined;
96
143
  }
144
+ /**
145
+ * Runs one middleware for the request, reusing its memoized result: a value when it stays synchronous, a
146
+ * promise otherwise.
147
+ */
148
+ export function resolveMiddleware(middleware, ctx) {
149
+ return isDefined(middleware) ? middleware.resolve(ctx) : middleware.run(ctx);
150
+ }
151
+ /** The security schemes a list of middlewares enforces, merged; `undefined` when none does. */
152
+ export function securityOf(middlewares) {
153
+ const entries = middlewares.flatMap((middleware) => Object.entries(middleware.security ?? {}));
154
+ return entries.length > 0 ? Object.fromEntries(entries) : undefined;
155
+ }
97
156
  /** `instanceof` on a generic class narrows to `any` type arguments; this keeps the output typed as `object`. */
98
157
  function isDefined(middleware) {
99
158
  return middleware instanceof DefinedMiddleware;
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/http/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAuB,MAAM,cAAc,CAAC;AAuBhE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,EAAiE,EACjE,IAAI,GAAW,EAAE,CAAC,IAAI;IAEtB,OAAO,IAAI,iBAAiB,CAAgC,EAAE,EAAE,IAAI,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,KAAK,GAAW,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAExC;;;;GAIG;AACH,MAAM,iBAAiB;IACZ,IAAI,CAAS;IACb,GAAG,CAAmC;IAE/C,YAAY,EAAoC,EAAE,IAAY;QAC5D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,GAAG,CAAC,GAAmB;QACrB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,GAAG,YAAY,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAmB;QACzB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,MAAM,YAAY,OAAO;YAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/F,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,CAAC,GAAG,YAAY,OAAO,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,OAAgB,EAAE,EAAE;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,mGAAmG;IACnG,OAAO,CAAC,GAAY;QAClB,yGAAyG;QACzG,OAAO,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAQ,CAAC;IACxE,CAAC;CACF;AAWD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAoB,EACpB,MAAc,EACd,IAA2B,EAC3B,IAAI,GAAG,CAAC;IAER,KAAK,IAAI,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU;YAAE,SAAS;QAC1B,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpF,IAAI,GAAG,YAAY,OAAO,EAAE,CAAC;YAC3B,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC7B,OAAO,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,gHAAgH;AAChH,SAAS,SAAS,CAAC,UAAsB;IACvC,OAAO,UAAU,YAAY,iBAAiB,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/http/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAuB,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAmG9D,MAAM,UAAU,gBAAgB,CAC9B,WAA2F,EAC3F,OAAsB;IAEtB,IAAI,OAAO,WAAW,KAAK,UAAU;QAAE,OAAO,IAAI,iBAAiB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACrF,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,IAAI,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,KAAK,GAAW,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAKxC;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,OAAuB;IACjD,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACnB,OAAO,CAAiB;IAEjC,YAAY,OAAuB;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAkB;QAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,GAAS,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,CAAC,KAAe,EAAQ,EAAE;gBACrC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAC5B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ;oBAAE,OAAO,CAAC,KAAK,CAAC,CAAC;;oBAC9E,MAAM,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC,CAAC;YACF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,iBAAiB;IACZ,QAAQ,CAA8B;IACtC,GAAG,CAAmC;IACtC,OAAO,CAAwB;IAC/B,MAAM,CAAwB;IAEvC,YAAY,EAAgB,EAAE,OAAwE;QACpG,6HAA6H;QAC7H,IAAI,CAAC,GAAG,GAAG,EAAsC,CAAC;QAClD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED,GAAG,CAAC,GAAmB;QACrB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,GAAG,YAAY,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAmB;QACzB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,MAAM,YAAY,OAAO;YAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/F,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,CAAC,GAAG,YAAY,OAAO,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,OAAgB,EAAE,EAAE;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,gFAAgF;IAChF,KAAK,CAAC,GAAmB;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,MAAM,YAAY,OAAO,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;YAC1D,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;gBAClE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBACjB,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;gBAChB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,mGAAmG;IACnG,OAAO,CAAC,GAAY;QAClB,yGAAyG;QACzG,OAAO,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAQ,CAAC;IACxE,CAAC;CACF;AAWD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAoB,EACpB,MAAc,EACd,IAA2B,EAC3B,IAAI,GAAG,CAAC;IAER,KAAK,IAAI,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU;YAAE,SAAS;QAC1B,MAAM,GAAG,GAAG,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,GAAG,YAAY,OAAO,EAAE,CAAC;YAC3B,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC7B,OAAO,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAsB,EAAE,GAAmB;IAC3E,OAAO,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/E,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,UAAU,CAAC,WAAkC;IAC3D,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;IAC/F,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtE,CAAC;AAED,gHAAgH;AAChH,SAAS,SAAS,CAAC,UAAsB;IACvC,OAAO,UAAU,YAAY,iBAAiB,CAAC;AACjD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../../src/http/openapi.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kGAAkG;IAClG,OAAO,CAAC,EAAE,SAAS;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3D,4GAA4G;IAC5G,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CACvB;AAED,8EAA8E;AAC9E,MAAM,WAAW,kBAAmB,SAAQ,QAAQ;IAClD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAmB1C;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,kBAAkB,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,UAAU,CAmB1G;AAsCD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAOnD"}
1
+ {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../../src/http/openapi.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kGAAkG;IAClG,OAAO,CAAC,EAAE,SAAS;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3D,4GAA4G;IAC5G,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CACvB;AAED,8EAA8E;AAC9E,MAAM,WAAW,kBAAmB,SAAQ,QAAQ;IAClD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAmB1C;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,kBAAkB,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,UAAU,CAwB1G;AAyCD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAOnD"}