@getsoda/core 0.2.2 → 0.3.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 (121) hide show
  1. package/README.md +80 -0
  2. package/dist/app/app.d.ts +15 -5
  3. package/dist/app/app.d.ts.map +1 -1
  4. package/dist/app/app.js +31 -8
  5. package/dist/app/app.js.map +1 -1
  6. package/dist/app/index.d.ts +1 -1
  7. package/dist/app/index.d.ts.map +1 -1
  8. package/dist/config/config.d.ts.map +1 -1
  9. package/dist/config/config.js +2 -0
  10. package/dist/config/config.js.map +1 -1
  11. package/dist/di/errors.d.ts.map +1 -1
  12. package/dist/di/errors.js +2 -0
  13. package/dist/di/errors.js.map +1 -1
  14. package/dist/http/arguments.d.ts +19 -6
  15. package/dist/http/arguments.d.ts.map +1 -1
  16. package/dist/http/arguments.js +7 -0
  17. package/dist/http/arguments.js.map +1 -1
  18. package/dist/http/cookies.d.ts.map +1 -1
  19. package/dist/http/cookies.js +2 -0
  20. package/dist/http/cookies.js.map +1 -1
  21. package/dist/http/decorators.d.ts +12 -5
  22. package/dist/http/decorators.d.ts.map +1 -1
  23. package/dist/http/decorators.js +7 -2
  24. package/dist/http/decorators.js.map +1 -1
  25. package/dist/http/errors.d.ts +3 -1
  26. package/dist/http/errors.d.ts.map +1 -1
  27. package/dist/http/errors.js +2 -0
  28. package/dist/http/errors.js.map +1 -1
  29. package/dist/http/index.d.ts +6 -4
  30. package/dist/http/index.d.ts.map +1 -1
  31. package/dist/http/index.js +3 -2
  32. package/dist/http/index.js.map +1 -1
  33. package/dist/http/parsers.d.ts +4 -0
  34. package/dist/http/parsers.d.ts.map +1 -1
  35. package/dist/http/parsers.js +9 -5
  36. package/dist/http/parsers.js.map +1 -1
  37. package/dist/http/pipeline.d.ts +4 -5
  38. package/dist/http/pipeline.d.ts.map +1 -1
  39. package/dist/http/pipeline.js +2 -2
  40. package/dist/http/pipeline.js.map +1 -1
  41. package/dist/http/routes.d.ts +27 -2
  42. package/dist/http/routes.d.ts.map +1 -1
  43. package/dist/http/routes.js +34 -20
  44. package/dist/http/routes.js.map +1 -1
  45. package/dist/http/sse.d.ts +39 -0
  46. package/dist/http/sse.d.ts.map +1 -0
  47. package/dist/http/sse.js +89 -0
  48. package/dist/http/sse.js.map +1 -0
  49. package/dist/index.d.ts +1 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +1 -0
  52. package/dist/index.js.map +1 -1
  53. package/dist/openapi/decorators.d.ts +41 -0
  54. package/dist/openapi/decorators.d.ts.map +1 -0
  55. package/dist/openapi/decorators.js +29 -0
  56. package/dist/openapi/decorators.js.map +1 -0
  57. package/dist/openapi/document.d.ts +62 -0
  58. package/dist/openapi/document.d.ts.map +1 -0
  59. package/dist/openapi/document.js +135 -0
  60. package/dist/openapi/document.js.map +1 -0
  61. package/dist/openapi/index.d.ts +11 -0
  62. package/dist/openapi/index.d.ts.map +1 -0
  63. package/dist/openapi/index.js +8 -0
  64. package/dist/openapi/index.js.map +1 -0
  65. package/dist/openapi/module.d.ts +26 -0
  66. package/dist/openapi/module.d.ts.map +1 -0
  67. package/dist/openapi/module.js +73 -0
  68. package/dist/openapi/module.js.map +1 -0
  69. package/dist/routing/errors.d.ts.map +1 -1
  70. package/dist/routing/errors.js +2 -0
  71. package/dist/routing/errors.js.map +1 -1
  72. package/dist/testing/index.d.ts +46 -0
  73. package/dist/testing/index.d.ts.map +1 -0
  74. package/dist/testing/index.js +49 -0
  75. package/dist/testing/index.js.map +1 -0
  76. package/dist/utils/errors.d.ts +11 -0
  77. package/dist/utils/errors.d.ts.map +1 -0
  78. package/dist/utils/errors.js +22 -0
  79. package/dist/utils/errors.js.map +1 -0
  80. package/dist/utils/object.d.ts +4 -0
  81. package/dist/utils/object.d.ts.map +1 -1
  82. package/dist/utils/object.js +16 -0
  83. package/dist/utils/object.js.map +1 -1
  84. package/dist/websocket/decorators.d.ts +31 -0
  85. package/dist/websocket/decorators.d.ts.map +1 -0
  86. package/dist/websocket/decorators.js +43 -0
  87. package/dist/websocket/decorators.js.map +1 -0
  88. package/dist/websocket/gateway.d.ts +61 -0
  89. package/dist/websocket/gateway.d.ts.map +1 -0
  90. package/dist/websocket/gateway.js +142 -0
  91. package/dist/websocket/gateway.js.map +1 -0
  92. package/dist/websocket/index.d.ts +7 -0
  93. package/dist/websocket/index.d.ts.map +1 -0
  94. package/dist/websocket/index.js +6 -0
  95. package/dist/websocket/index.js.map +1 -0
  96. package/package.json +12 -1
  97. package/src/app/app.ts +69 -18
  98. package/src/app/index.ts +1 -1
  99. package/src/config/config.ts +2 -0
  100. package/src/di/errors.ts +3 -0
  101. package/src/http/arguments.ts +31 -6
  102. package/src/http/cookies.ts +2 -0
  103. package/src/http/decorators.ts +16 -8
  104. package/src/http/errors.ts +7 -0
  105. package/src/http/index.ts +6 -4
  106. package/src/http/parsers.ts +18 -7
  107. package/src/http/pipeline.ts +6 -6
  108. package/src/http/routes.ts +68 -29
  109. package/src/http/sse.ts +120 -0
  110. package/src/index.ts +1 -0
  111. package/src/openapi/decorators.ts +50 -0
  112. package/src/openapi/document.ts +221 -0
  113. package/src/openapi/index.ts +11 -0
  114. package/src/openapi/module.ts +95 -0
  115. package/src/routing/errors.ts +3 -0
  116. package/src/testing/index.ts +73 -0
  117. package/src/utils/errors.ts +25 -0
  118. package/src/utils/object.ts +23 -0
  119. package/src/websocket/decorators.ts +55 -0
  120. package/src/websocket/gateway.ts +213 -0
  121. package/src/websocket/index.ts +7 -0
package/README.md CHANGED
@@ -120,6 +120,44 @@ class SessionController {
120
120
 
121
121
  Name cookies that guard sessions with the `__Host-` prefix: browsers then refuse them from subdomains and over HTTP.
122
122
 
123
+ ## Server-sent events
124
+
125
+ An `@Sse()` route returns an async iterable of messages, streamed as `text/event-stream`; when the client disconnects, the generator is returned and its `finally` runs:
126
+
127
+ ```ts
128
+ @Sse('ticks')
129
+ async *ticks(): AsyncGenerator<SseMessage> {
130
+ for (let i = 0; ; i++) {
131
+ yield { data: { tick: i }, id: String(i) } // also event and retry
132
+ await Bun.sleep(1000)
133
+ }
134
+ }
135
+ ```
136
+
137
+ ## WebSockets
138
+
139
+ A gateway is listed in `controllers` like a controller; its guards run on the handshake, and frames follow the protocol of Nest's `WsAdapter`, `{ "event": "...", "data": ... }`:
140
+
141
+ ```ts
142
+ @WebSocketGateway('/chat')
143
+ @UseGuards(JwtGuard) // browsers send cookies with the handshake
144
+ class ChatGateway implements OnGatewayConnection {
145
+ handleConnection(socket: GatewaySocket) {
146
+ socket.subscribe('room')
147
+ }
148
+
149
+ @SubscribeMessage('say')
150
+ say(data: string, socket: GatewaySocket) {
151
+ const user = socket.data.context.get(JWT_PAYLOAD).sub
152
+
153
+ socket.publish('room', JSON.stringify({ event: 'said', data: { user, text: data } }))
154
+ return { event: 'sent' } // sent back to this socket
155
+ }
156
+ }
157
+ ```
158
+
159
+ `socket` is Bun's `ServerWebSocket`, with its pub/sub. Frames that are not such JSON are dropped; when the application closes, sockets are closed with code 1001.
160
+
123
161
  ## JWT
124
162
 
125
163
  `@getsoda/core/jwt` signs and verifies JSON Web Tokens with WebCrypto: HS256/384/512, RS, PS, ES and EdDSA, keys as secrets, PEM, JWK or `CryptoKey`. The algorithm is fixed by the options, never read from the token, so `alg: none` and algorithm confusion are refused.
@@ -153,6 +191,48 @@ class AuthModule {}
153
191
 
154
192
  `JwtModule.registerAsync({ inject, useFactory })` takes the options from other providers; `new JwtService(options)` works without the module.
155
193
 
194
+ ## OpenAPI
195
+
196
+ `@getsoda/core/openapi` describes the routes from what validates them: argument parsers and schemas implementing [Standard JSON Schema](https://standardschema.dev) (zod does). Import the module to serve the document and a Swagger UI page:
197
+
198
+ ```ts
199
+ import { ApiBearerAuth, ApiOperation, ApiResponses, ApiTags, OpenApiModule } from '@getsoda/core/openapi'
200
+
201
+ @Controller('users')
202
+ @ApiTags('users')
203
+ class UsersController {
204
+ @Get(':id', [param('id', int())])
205
+ @ApiOperation({ summary: 'One user' })
206
+ @ApiResponses({ 200: { description: 'The user', schema: User }, 404: { description: 'No such user' } })
207
+ findOne(id: number) {}
208
+ }
209
+
210
+ @Module({ imports: [OpenApiModule.forRoot({ info: { title: 'Shop', version: '1.0.0' }, ui: '/docs' })] })
211
+ class AppModule {}
212
+ ```
213
+
214
+ `/openapi.json` and `/docs` follow the global prefix; `@ApiExclude()` leaves a route out, `createOpenApiDocument(inject(ROUTES).controllers, options)` gives the document itself.
215
+
216
+ ## Testing
217
+
218
+ `@getsoda/core/testing` serves the application on a free port with a silent logger; `overrides` replace providers, as Nest's `overrideProvider()`:
219
+
220
+ ```ts
221
+ import { createTestApp } from '@getsoda/core/testing'
222
+
223
+ const app = await createTestApp(AppModule, { overrides: [provide(Mailer, { useValue: fakeMailer })] })
224
+
225
+ afterAll(() => app.close()) // or `await using app = ...` in a block
226
+
227
+ test('signs up', async () => {
228
+ const response = await app.request('/users', { method: 'POST', json: { name: 'Bo' } })
229
+
230
+ expect(response.status).toBe(201)
231
+ })
232
+ ```
233
+
234
+ A single service needs no server: `createContainer(UsersModule, { overrides })`.
235
+
156
236
  ## License
157
237
 
158
238
  [MIT](./LICENSE)
package/dist/app/app.d.ts CHANGED
@@ -21,7 +21,8 @@
21
21
  import type { Container, ContainerOptions, ModuleImport } from '../di/index.ts';
22
22
  import type { ControllerRoutesOptions, Middleware } from '../http/index.ts';
23
23
  import { Logger } from '../logger/index.ts';
24
- import type { CompiledRoutes, CompileOptions } from '../routing/index.ts';
24
+ import type { CompiledRoutes, CompileOptions, NativeHandler } from '../routing/index.ts';
25
+ import type { BuiltGateway, GatewaySocketData } from '../websocket/gateway.ts';
25
26
  /**
26
27
  * Options of `createApp`.
27
28
  */
@@ -54,16 +55,16 @@ export interface ListenOptions {
54
55
  */
55
56
  export interface App {
56
57
  readonly container: Container;
57
- /** Routes for `Bun.serve()`, when serving them yourself instead of calling `listen()`. */
58
- readonly routes: CompiledRoutes;
58
+ /** Routes (and WebSocket handlers) for `Bun.serve()`, when serving them yourself instead of calling `listen()`. */
59
+ readonly routes: ServeRoutes;
59
60
  /** The server once `listen()` resolved. */
60
- readonly server: Bun.Server<undefined> | undefined;
61
+ readonly server: Bun.Server<GatewaySocketData> | undefined;
61
62
  /**
62
63
  * Starts serving. Under `bun --hot`, a new version of the application
63
64
  * listening on the same port takes the server over from the previous one,
64
65
  * which is then destroyed (its server is not stopped: it is shared).
65
66
  */
66
- listen(options?: number | ListenOptions): Promise<Bun.Server<undefined>>;
67
+ listen(options?: number | ListenOptions): Promise<Bun.Server<GatewaySocketData>>;
67
68
  /**
68
69
  * Graceful shutdown: refuses new requests, waits for those in flight, then
69
70
  * runs `onDestroy` hooks. Safe to call more than once, even from a hook.
@@ -75,6 +76,15 @@ export interface App {
75
76
  */
76
77
  enableShutdownSignals(signals?: readonly NodeJS.Signals[]): this;
77
78
  }
79
+ /**
80
+ * Routes and WebSocket handlers for `Bun.serve()`: the handshakes of gateways
81
+ * are native routes of their own, outside middleware, as an upgrade returns no response.
82
+ */
83
+ export interface ServeRoutes {
84
+ readonly routes: Record<string, NativeHandler | BuiltGateway['handle']>;
85
+ readonly fetch: CompiledRoutes['fetch'];
86
+ readonly websocket: Bun.WebSocketHandler<GatewaySocketData>;
87
+ }
78
88
  /**
79
89
  * Creates the container and the routes, and runs every `onInit` hook.
80
90
  *
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/app/app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG/E,OAAO,KAAK,EAAE,uBAAuB,EAAoB,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAG7F,OAAO,EAAiB,MAAM,EAAgB,MAAM,oBAAoB,CAAA;AAExE,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGzE;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,gBAAgB,EAAE,uBAAuB,EAAE,cAAc;IAC3F;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,UAAU,EAAE,CAAA;IAC3C;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CACrC;AAKD;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,0FAA0F;IAC1F,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;IAClD;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;IACxE;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB;;;OAGG;IACH,qBAAqB,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAA;CACjE;AA+KD;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,SAAgB,YAAY,YAAW,UAAU,KAAQ,OAAO,CAAC,GAAG,CA2CzF,CAAA"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/app/app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG/E,OAAO,KAAK,EAAE,uBAAuB,EAAoB,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAG7F,OAAO,EAAiB,MAAM,EAAgB,MAAM,oBAAoB,CAAA;AAExE,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAExF,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAG9E;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,gBAAgB,EAAE,uBAAuB,EAAE,cAAc;IAC3F;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,UAAU,EAAE,CAAA;IAC3C;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CACrC;AAKD;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,mHAAmH;IACnH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAA;IAC1D;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAChF;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB;;;OAGG;IACH,qBAAqB,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAA;CACjE;AA0KD;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAA;IACvE,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;IACvC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAA;CAC5D;AA2CD;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,SAAgB,YAAY,YAAW,UAAU,KAAQ,OAAO,CAAC,GAAG,CA8CzF,CAAA"}
package/dist/app/app.js CHANGED
@@ -20,11 +20,12 @@
20
20
  */
21
21
  import { createContainer, provide } from '../di/index.js';
22
22
  import { destroyAll, initializeAll } from '../di/lifecycle.js';
23
- import { buildRoutes } from '../http/index.js';
23
+ import { buildRoutes, ControllerError, ROUTES } from '../http/index.js';
24
24
  import { errorResponse } from '../http/exceptions.js';
25
25
  import { applyMiddleware, resolveMiddleware } from '../http/middleware.js';
26
26
  import { ConsoleLogger, Logger, SilentLogger } from '../logger/index.js';
27
27
  import { compileRoutes } from '../routing/index.js';
28
+ import { websocketHandler } from '../websocket/gateway.js';
28
29
  import { release, takeOver } from './hot.js';
29
30
  /** Signals `enableShutdownSignals()` listens to by default. */
30
31
  const DEFAULT_SIGNALS = ['SIGTERM', 'SIGINT'];
@@ -38,9 +39,11 @@ class Application {
38
39
  #enhancers;
39
40
  #signals = new Map();
40
41
  #logger;
41
- constructor(container, routes, enhancers, logger) {
42
+ #gateways;
43
+ constructor(container, routes, gateways, enhancers, logger) {
42
44
  this.container = container;
43
45
  this.routes = routes;
46
+ this.#gateways = gateways;
44
47
  this.#enhancers = enhancers;
45
48
  this.#logger = logger;
46
49
  }
@@ -104,6 +107,10 @@ class Application {
104
107
  async #shutdown() {
105
108
  const server = this.#server;
106
109
  try {
110
+ // Open sockets would keep stop() waiting; under --hot, clients reconnect to the new version.
111
+ for (const gateway of this.#gateways) {
112
+ gateway.runtime.closeAll();
113
+ }
107
114
  if (server !== undefined && !this.#handedOver) {
108
115
  await server.stop();
109
116
  }
@@ -150,8 +157,18 @@ const destroyEverything = async (enhancers, container) => {
150
157
  throw new AggregateError(errors, `${errors.length} onDestroy hooks failed`);
151
158
  }
152
159
  };
160
+ const withGateways = (compiled, gateways) => {
161
+ const routes = { ...compiled.routes };
162
+ for (const gateway of gateways) {
163
+ if (Object.hasOwn(routes, gateway.path)) {
164
+ throw new ControllerError('DUPLICATE_ROUTE', `The WebSocket gateway on ${gateway.path} has the path of another gateway or route`);
165
+ }
166
+ routes[gateway.path] = gateway.handle;
167
+ }
168
+ return { routes, fetch: compiled.fetch, websocket: websocketHandler };
169
+ };
153
170
  /** What Nest logs at startup: the modules, then each controller and its routes. */
154
- const logStartup = (logger, container, controllers) => {
171
+ const logStartup = (logger, container, controllers, gateways) => {
155
172
  const modules = logger.child('Container');
156
173
  const routes = logger.child('Routes');
157
174
  for (const module of container.modules) {
@@ -159,10 +176,13 @@ const logStartup = (logger, container, controllers) => {
159
176
  }
160
177
  for (const { controller, path, routes: mapped } of controllers) {
161
178
  routes.log(`${controller.name} {${path}}:`);
162
- for (const route of mapped) {
163
- routes.log(`Mapped {${route.path}, ${route.method}} route`);
179
+ for (const { info } of mapped) {
180
+ routes.log(`Mapped {${info.path}, ${info.method}} route`);
164
181
  }
165
182
  }
183
+ for (const gateway of gateways) {
184
+ routes.log(`WebSocket gateway {${gateway.path}}, events: ${gateway.runtime.events.join(', ') || 'none'}`);
185
+ }
166
186
  };
167
187
  /**
168
188
  * Creates the container and the routes, and runs every `onInit` hook.
@@ -177,9 +197,11 @@ export const createApp = async (root, options = {}) => {
177
197
  const onError = options.onError ??
178
198
  ((error, req) => own.error('Unhandled error while handling a request', { error, method: req.method, url: req.url }));
179
199
  own.log('Starting application');
200
+ // Filled once the routes are built; read by what describes them (OpenAPI).
201
+ const registry = { controllers: [] };
180
202
  const container = await createContainer(root, {
181
203
  ...options,
182
- providers: [...(options.providers ?? []), provide(Logger, { useValue: logger })],
204
+ providers: [...(options.providers ?? []), provide(Logger, { useValue: logger }), provide(ROUTES, { useValue: registry })],
183
205
  });
184
206
  const enhancers = [];
185
207
  try {
@@ -188,13 +210,14 @@ export const createApp = async (root, options = {}) => {
188
210
  enhancers.push(instance);
189
211
  });
190
212
  const built = buildRoutes(container, { ...options, onError });
191
- logStartup(logger, container, built.controllers);
213
+ registry.controllers = built.controllers;
214
+ logStartup(logger, container, built.controllers, built.gateways);
192
215
  enhancers.push(...built.enhancers);
193
216
  await initializeAll(enhancers);
194
217
  own.log('Application started');
195
218
  const compiled = compileRoutes(built.routes, options);
196
219
  const routes = applyMiddleware(middleware, compiled.routes, compiled.fetch, (error, req) => errorResponse(error, (unknown) => onError(unknown, req)));
197
- return new Application(container, routes, enhancers, own);
220
+ return new Application(container, withGateways(routes, built.gateways), built.gateways, enhancers, own);
198
221
  }
199
222
  catch (error) {
200
223
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app/app.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@
3
3
  * The application: container, routes and server, started and stopped together.
4
4
  */
5
5
  export { createApp } from './app.ts';
6
- export type { App, AppOptions, ListenOptions } from './app.ts';
6
+ export type { App, AppOptions, ListenOptions, ServeRoutes } from './app.ts';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACpC,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACpC,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEtE,kDAAkD;AAClD,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;AAEtE,oFAAoF;AACpF,qBAAa,WAAY,SAAQ,KAAK;IAIlC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE;IAJpC,SAAkB,IAAI,iBAAgB;IAEtC,YACW,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,MAAM,EAAE,EAGnC;CACF;AAED;;;GAGG;AACH,qBAAa,MAAM,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;;IAI9C,YAAY,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,EAIpG;IAED,iGAAiG;IAC3F,IAAI,CAAC,GAAG,GAAE,WAAyB,GAAG,OAAO,CAAC,CAAC,CAAC,CAQrD;IAEQ,QAAQ,IAAI,MAAM,CAE1B;CACF;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,gBAAgB,QAC/C,MAAM,UACJ,CAAC,WACD,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,KACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAkF,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAGtE,kDAAkD;AAClD,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;AAEtE,oFAAoF;AACpF,qBAAa,WAAY,SAAQ,KAAK;IAIlC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE;IAJpC,SAAkB,IAAI,iBAAgB;IAEtC,YACW,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,MAAM,EAAE,EAInC;CACF;AAED;;;GAGG;AACH,qBAAa,MAAM,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;;IAI9C,YAAY,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,EAIpG;IAED,iGAAiG;IAC3F,IAAI,CAAC,GAAG,GAAE,WAAyB,GAAG,OAAO,CAAC,CAAC,CAAC,CAQrD;IAEQ,QAAQ,IAAI,MAAM,CAE1B;CACF;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,gBAAgB,QAC/C,MAAM,UACJ,CAAC,WACD,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,KACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAkF,CAAA"}
@@ -22,6 +22,7 @@
22
22
  */
23
23
  import { InjectionToken } from '../di/token.js';
24
24
  import { formatIssues } from '../http/schema.js';
25
+ import { hideFrameworkFrames } from '../utils/errors.js';
25
26
  /** A configuration that does not match its schema; `issues` lists every problem. */
26
27
  export class ConfigError extends Error {
27
28
  config;
@@ -31,6 +32,7 @@ export class ConfigError extends Error {
31
32
  super(`Invalid configuration "${config}":\n ${issues.join('\n ')}`);
32
33
  this.config = config;
33
34
  this.issues = issues;
35
+ hideFrameworkFrames(this);
34
36
  }
35
37
  }
36
38
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAMhD,oFAAoF;AACpF,MAAM,OAAO,WAAY,SAAQ,KAAK;IAIzB,MAAM;IACN,MAAM;IAJC,IAAI,GAAG,aAAa,CAAA;IAEtC,YACW,MAAc,EACd,MAAyB;QAElC,KAAK,CAAC,0BAA0B,MAAM,SAAS,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;sBAH5D,MAAM;sBACN,MAAM;IAGjB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,MAAU,SAAQ,cAAiB;IACrC,OAAO,CAA8B;IACrC,OAAO,CAA+B;IAE/C,YAAY,IAAY,EAAE,MAAoC,EAAE,MAAqC;QACnG,KAAK,CAAC,IAAI,CAAC,CAAA;QACX,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACvB,CAAC;IAED,iGAAiG;IACjG,KAAK,CAAC,IAAI,CAAC,GAAG,GAAgB,OAAO,CAAC,GAAG;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;QAE1E,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAA;QAC1E,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAA;IACrB,CAAC;IAEQ,QAAQ;QACf,OAAO,UAAU,IAAI,CAAC,WAAW,GAAG,CAAA;IACtC,CAAC;CACF;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,IAAY,EACZ,MAAS,EACT,MAAM,GAAkC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAC5B,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,MAAmD,EAAE,MAAM,CAAC,CAAA"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAKxD,oFAAoF;AACpF,MAAM,OAAO,WAAY,SAAQ,KAAK;IAIzB,MAAM;IACN,MAAM;IAJC,IAAI,GAAG,aAAa,CAAA;IAEtC,YACW,MAAc,EACd,MAAyB;QAElC,KAAK,CAAC,0BAA0B,MAAM,SAAS,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;sBAH5D,MAAM;sBACN,MAAM;QAGf,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAC3B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,MAAU,SAAQ,cAAiB;IACrC,OAAO,CAA8B;IACrC,OAAO,CAA+B;IAE/C,YAAY,IAAY,EAAE,MAAoC,EAAE,MAAqC;QACnG,KAAK,CAAC,IAAI,CAAC,CAAA;QACX,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACvB,CAAC;IAED,iGAAiG;IACjG,KAAK,CAAC,IAAI,CAAC,GAAG,GAAgB,OAAO,CAAC,GAAG;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;QAE1E,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAA;QAC1E,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAA;IACrB,CAAC;IAEQ,QAAQ;QACf,OAAO,UAAU,IAAI,CAAC,WAAW,GAAG,CAAA;IACtC,CAAC;CACF;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,IAAY,EACZ,MAAS,EACT,MAAM,GAAkC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAC5B,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,MAAmD,EAAE,MAAM,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/di/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,WAAW,GACnB,aAAa,GACb,oBAAoB,GACpB,qBAAqB,GACrB,kBAAkB,GAClB,2BAA2B,GAC3B,kBAAkB,GAClB,oBAAoB,GACpB,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,CAAA;AAEtB;;;;GAIG;AACH,qBAAa,OAAQ,SAAQ,KAAK;IAI9B,QAAQ,CAAC,IAAI,EAAE,WAAW;IAH5B,SAAkB,IAAI,aAAY;IAElC,YACW,IAAI,EAAE,WAAW,EAC1B,OAAO,EAAE,MAAM,EAGhB;CACF"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/di/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,WAAW,GACnB,aAAa,GACb,oBAAoB,GACpB,qBAAqB,GACrB,kBAAkB,GAClB,2BAA2B,GAC3B,kBAAkB,GAClB,oBAAoB,GACpB,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,CAAA;AAEtB;;;;GAIG;AACH,qBAAa,OAAQ,SAAQ,KAAK;IAI9B,QAAQ,CAAC,IAAI,EAAE,WAAW;IAH5B,SAAkB,IAAI,aAAY;IAElC,YACW,IAAI,EAAE,WAAW,EAC1B,OAAO,EAAE,MAAM,EAIhB;CACF"}
package/dist/di/errors.js CHANGED
@@ -2,6 +2,7 @@
2
2
  * @module
3
3
  * Errors raised by the dependency injection container.
4
4
  */
5
+ import { hideFrameworkFrames } from '../utils/errors.js';
5
6
  /**
6
7
  * Error thrown by the container.
7
8
  *
@@ -13,6 +14,7 @@ export class DiError extends Error {
13
14
  constructor(code, message) {
14
15
  super(message);
15
16
  this.code = code;
17
+ hideFrameworkFrames(this);
16
18
  }
17
19
  }
18
20
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/di/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4BH;;;;GAIG;AACH,MAAM,OAAO,OAAQ,SAAQ,KAAK;IAIrB,IAAI;IAHG,IAAI,GAAG,SAAS,CAAA;IAElC,YACW,IAAiB,EAC1B,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAA;oBAHL,IAAI;IAIf,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/di/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AA4BxD;;;;GAIG;AACH,MAAM,OAAO,OAAQ,SAAQ,KAAK;IAIrB,IAAI;IAHG,IAAI,GAAG,SAAS,CAAA;IAElC,YACW,IAAiB,EAC1B,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAA;oBAHL,IAAI;QAIb,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAC3B,CAAC;CACF"}
@@ -17,7 +17,7 @@
17
17
  */
18
18
  import type { FormFields, FormLimits } from './body.ts';
19
19
  import type { ContextKey } from './context-key.ts';
20
- import type { Context, ParamNameOf } from './context.ts';
20
+ import type { Context, ContextParams, ParamNameOf } from './context.ts';
21
21
  import type { Parsed, ValueParser } from './parsers.ts';
22
22
  import type { InferOutput, StandardSchemaV1 } from './schema.ts';
23
23
  export type ArgumentKind = 'param' | 'query' | 'header' | 'cookie' | 'body' | 'context' | 'value';
@@ -29,15 +29,27 @@ export interface Argument<T, K extends ArgumentKind = ArgumentKind, N extends st
29
29
  /** Parameter, query, header or cookie name; the key description for `value`; empty for `body` and `context`. */
30
30
  readonly name: N;
31
31
  readonly read: (ctx: Context) => T | Promise<T>;
32
+ /** The parser or schema the value goes through, for API descriptions such as OpenAPI. */
33
+ readonly source?: ValueParser<unknown> | StandardSchemaV1;
34
+ /** Set by `form()`: the body is a form, not JSON. */
35
+ readonly multipart?: true;
32
36
  }
33
37
  /** Arguments accepted by a route with path `P`: `param()` names must exist in it. */
34
38
  export type ArgumentFor<P extends string> = Argument<unknown, 'param', ParamNameOf<P>> | Argument<unknown, Exclude<ArgumentKind, 'param'>>;
35
- /** Values a method receives for an argument list. */
36
- export type ArgumentValues<A extends readonly Argument<unknown>[]> = {
37
- -readonly [K in keyof A]: A[K] extends Argument<infer T> ? T : never;
39
+ declare const RAW_PARAM: unique symbol;
40
+ /**
41
+ * Value of `param(name)` without parser, typed by the route path:
42
+ * `string` for `:id`, `string | undefined` for `:id?`.
43
+ */
44
+ export interface RawParam {
45
+ readonly [RAW_PARAM]: true;
46
+ }
47
+ /** Values a method receives for an argument list on a route with path `P`. */
48
+ export type ArgumentValues<A extends readonly Argument<unknown>[], P extends string = string> = {
49
+ -readonly [K in keyof A]: A[K] extends Argument<infer T, ArgumentKind, infer N> ? [T] extends [RawParam] ? ContextParams<P>[N] : T : never;
38
50
  };
39
- /** Path parameter. Like `@Param('id', ParseIntPipe)`. */
40
- export declare function param<const N extends string>(name: N): Argument<string | undefined, 'param', N>;
51
+ /** Path parameter, typed by the route path, or by `parser`. Like `@Param('id', ParseIntPipe)`. */
52
+ export declare function param<const N extends string>(name: N): Argument<RawParam, 'param', N>;
41
53
  export declare function param<const N extends string, V extends ValueParser<unknown>>(name: N, parser: V): Argument<Parsed<V>, 'param', N>;
42
54
  /** Query parameter. Like `@Query('page', ParseIntPipe)`. */
43
55
  export declare function query(name: string): Argument<string | undefined, 'query'>;
@@ -66,4 +78,5 @@ export declare const value: <T>(key: ContextKey<T>) => Argument<T, 'value'>;
66
78
  /** Form body, validated by `schema` when given, within `limits`. Like `@Body()` on a form, or Nest's file interceptors with multer limits. */
67
79
  export declare function form(limits?: FormLimits): Argument<FormFields, 'body'>;
68
80
  export declare function form<S extends StandardSchemaV1>(schema: S, limits?: FormLimits): Argument<InferOutput<S>, 'body'>;
81
+ export {};
69
82
  //# sourceMappingURL=arguments.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"arguments.d.ts","sourceRoot":"","sources":["../../src/http/arguments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arguments.d.ts","sourceRoot":"","sources":["../../src/http/arguments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEhE,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAA;AAEjG;;GAEG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,YAAY,GAAG,YAAY,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM;IAC3F,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,gHAAgH;IAChH,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAC/C,yFAAyF;IACzF,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,gBAAgB,CAAA;IACzD,qDAAqD;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAA;CAC1B;AAED,qFAAqF;AACrF,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,GAC1C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAA;AAErD,OAAO,CAAC,MAAM,SAAS,EAAE,OAAO,MAAM,CAAA;AAEtC;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAA;CAC3B;AAED,8EAA8E;AAC9E,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,SAAS,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IAC9F,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,GAC3E,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GACpB,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACnB,CAAC,GACH,KAAK;CACV,CAAA;AAED,kGAAkG;AAClG,wBAAgB,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;AACtF,wBAAgB,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,WAAW,CAAC,OAAO,CAAC,EAC1E,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,CAAC,GACR,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;AAUlC,4DAA4D;AAC5D,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,EAAE,OAAO,CAAC,CAAA;AAC1E,wBAAgB,KAAK,CAAC,CAAC,SAAS,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;AAU5G,wDAAwD;AACxD,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,EAAE,QAAQ,CAAC,CAAA;AAC5E,wBAAgB,MAAM,CAAC,CAAC,SAAS,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;AAU9G,qGAAqG;AACrG,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,EAAE,QAAQ,CAAC,CAAA;AAC5E,wBAAgB,MAAM,CAAC,CAAC,SAAS,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;AAU9G,kGAAkG;AAClG,wBAAgB,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;AACjD,wBAAgB,IAAI,CAAC,CAAC,SAAS,gBAAgB,EAAE,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AAU7F,4EAA4E;AAC5E,eAAO,MAAM,OAAO,QAAO,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAwD,CAAA;AAE9G;;;;;;;;GAQG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,KAAG,QAAQ,CAAC,CAAC,EAAE,OAAO,CAI/D,CAAA;AAEF,8IAA8I;AAC9I,wBAAgB,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;AACvE,wBAAgB,IAAI,CAAC,CAAC,SAAS,gBAAgB,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA"}
@@ -20,6 +20,7 @@ export function param(name, parser) {
20
20
  return {
21
21
  kind: 'param',
22
22
  name,
23
+ source: parser,
23
24
  read: parser === undefined ? (ctx) => ctx.param(name) : (ctx) => ctx.param(name, parser),
24
25
  };
25
26
  }
@@ -27,6 +28,7 @@ export function query(name, parser) {
27
28
  return {
28
29
  kind: 'query',
29
30
  name,
31
+ source: parser,
30
32
  read: parser === undefined ? (ctx) => ctx.query(name) : (ctx) => ctx.query(name, parser),
31
33
  };
32
34
  }
@@ -34,6 +36,7 @@ export function header(name, parser) {
34
36
  return {
35
37
  kind: 'header',
36
38
  name,
39
+ source: parser,
37
40
  read: parser === undefined ? (ctx) => ctx.header(name) : (ctx) => ctx.header(name, parser),
38
41
  };
39
42
  }
@@ -41,6 +44,7 @@ export function cookie(name, parser) {
41
44
  return {
42
45
  kind: 'cookie',
43
46
  name,
47
+ source: parser,
44
48
  read: parser === undefined ? (ctx) => ctx.cookie(name) : (ctx) => ctx.cookie(name, parser),
45
49
  };
46
50
  }
@@ -48,6 +52,7 @@ export function body(schema) {
48
52
  return {
49
53
  kind: 'body',
50
54
  name: '',
55
+ source: schema,
51
56
  read: schema === undefined ? (ctx) => ctx.body() : (ctx) => ctx.body(schema),
52
57
  };
53
58
  }
@@ -71,6 +76,8 @@ export function form(schemaOrLimits, limits) {
71
76
  return {
72
77
  kind: 'body',
73
78
  name: '',
79
+ source: isStandardSchema(schemaOrLimits) ? schemaOrLimits : undefined,
80
+ multipart: true,
74
81
  read: isStandardSchema(schemaOrLimits) ? (ctx) => ctx.form(schemaOrLimits, limits) : (ctx) => ctx.form(schemaOrLimits),
75
82
  };
76
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../src/http/arguments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../src/http/arguments.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../../src/http/cookies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAKzD;;;;;;;GAOG;AACH,qBAAa,YAAY;;IAGvB,oEAAoE;IACpE,YAAY,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAQ9C;IAED,+DAA+D;IAC/D,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1B;IAED,8FAA8F;IAC9F,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAmBzC;CACF;AAED,KAAK,MAAM,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,SAAS;IAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAA;AAE1G;;;;GAIG;AACH,eAAO,MAAM,MAAM,GAAI,KAAK,CAAC,CAAC,SAAS,aAAa,GAAG,EAAE,UAAU,YAAY,YAAY,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAU7G,CAAA"}
1
+ {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../../src/http/cookies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAKzD;;;;;;;GAOG;AACH,qBAAa,YAAY;;IAGvB,oEAAoE;IACpE,YAAY,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAQ9C;IAED,+DAA+D;IAC/D,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1B;IAED,8FAA8F;IAC9F,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAmBzC;CACF;AAED,KAAK,MAAM,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,SAAS;IAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAA;AAE1G;;;;GAIG;AACH,eAAO,MAAM,MAAM,GAAI,KAAK,CAAC,CAAC,SAAS,aAAa,GAAG,EAAE,UAAU,YAAY,YAAY,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAY7G,CAAA"}
@@ -66,6 +66,8 @@ export class CookieSigner {
66
66
  * forged cookie is no better than none.
67
67
  */
68
68
  export const signed = (signer, options) => ({
69
+ jsonSchema: { type: 'string' },
70
+ optional: options?.optional === true,
69
71
  parse: (value, name) => {
70
72
  const unsigned = value === undefined ? undefined : signer.unsign(value);
71
73
  if (unsigned === undefined && options?.optional !== true) {
@@ -1 +1 @@
1
- {"version":3,"file":"cookies.js","sourceRoot":"","sources":["../../src/http/cookies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAGtC,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,KAAa,EAAU,EAAE,CACrD,IAAI,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;AAE1E;;;;;;;GAOG;AACH,MAAM,OAAO,YAAY;IACd,QAAQ,CAAmB;IAEpC,oEAAoE;IACpE,YAAY,OAAmC;QAC7C,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAA;QAEnE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,SAAS,CAAC,2DAA2D,CAAC,CAAA;QAClF,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;IACtB,CAAC;IAED,+DAA+D;IAC/D,IAAI,CAAC,KAAa;QAChB,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,EAAE,CAAA;IACrD,CAAC;IAED,8FAA8F;IAC9F,MAAM,CAAC,MAAc;QACnB,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAEnC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAClC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QAEpD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;YAEjD,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,IAAI,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;gBACjF,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;CACF;AAID;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAqC,MAAoB,EAAE,OAAW,EAAqB,EAAE,CAAC,CAAC;IACnH,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAEvE,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,EAAE,QAAQ,KAAK,IAAI,EAAE,CAAC;YACzD,MAAM,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,CAAA;QACtC,CAAC;QAED,OAAO,QAAqB,CAAA;IAC9B,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"cookies.js","sourceRoot":"","sources":["../../src/http/cookies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAGtC,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,KAAa,EAAU,EAAE,CACrD,IAAI,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;AAE1E;;;;;;;GAOG;AACH,MAAM,OAAO,YAAY;IACd,QAAQ,CAAmB;IAEpC,oEAAoE;IACpE,YAAY,OAAmC;QAC7C,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAA;QAEnE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,SAAS,CAAC,2DAA2D,CAAC,CAAA;QAClF,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;IACtB,CAAC;IAED,+DAA+D;IAC/D,IAAI,CAAC,KAAa;QAChB,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,EAAE,CAAA;IACrD,CAAC;IAED,8FAA8F;IAC9F,MAAM,CAAC,MAAc;QACnB,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAEnC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAClC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QAEpD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;YAEjD,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,IAAI,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;gBACjF,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;CACF;AAID;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAqC,MAAoB,EAAE,OAAW,EAAqB,EAAE,CAAC,CAAC;IACnH,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9B,QAAQ,EAAE,OAAO,EAAE,QAAQ,KAAK,IAAI;IACpC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAEvE,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,EAAE,QAAQ,KAAK,IAAI,EAAE,CAAC;YACzD,MAAM,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,CAAA;QACtC,CAAC;QAED,OAAO,QAAqB,CAAA;IAC9B,CAAC;CACF,CAAC,CAAA"}
@@ -38,6 +38,8 @@ export interface RouteMetadata {
38
38
  readonly path: string;
39
39
  /** Declared arguments; `undefined` when the method receives the context. */
40
40
  readonly args: readonly Argument<unknown>[] | undefined;
41
+ /** Declared with `@Sse()`: the result is streamed as server-sent events. */
42
+ readonly sse: boolean;
41
43
  }
42
44
  /**
43
45
  * Everything the decorators recorded for one method.
@@ -67,7 +69,7 @@ export type RouteHandlerHint<P extends string> = `Without an argument list, the
67
69
  * Decorator of a route with an argument list: `@Get(':id', [param('id', int())])`.
68
70
  * The method must accept the values of the arguments, in order.
69
71
  */
70
- export type ArgumentsRouteDecorator<A extends readonly Argument<unknown>[]> = <This, M extends (this: This, ...args: ArgumentValues<A>) => unknown>(method: M, context: ClassMethodDecoratorContext<This, M>) => void;
72
+ export type ArgumentsRouteDecorator<A extends readonly Argument<unknown>[], P extends string = string> = <This, M extends (this: This, ...args: ArgumentValues<A, P>) => unknown>(method: M, context: ClassMethodDecoratorContext<This, M>) => void;
71
73
  /**
72
74
  * `@Get`, `@Post`... : path and argument list are both optional.
73
75
  *
@@ -80,8 +82,8 @@ export type ArgumentsRouteDecorator<A extends readonly Argument<unknown>[]> = <T
80
82
  */
81
83
  export interface RouteDecoratorFactory {
82
84
  <const P extends string = '/'>(path?: P): RouteDecorator<P>;
83
- <const P extends string, const A extends readonly ArgumentFor<P>[]>(path: P, args: A): ArgumentsRouteDecorator<A>;
84
- <const A extends readonly ArgumentFor<'/'>[]>(args: A): ArgumentsRouteDecorator<A>;
85
+ <const P extends string, const A extends readonly ArgumentFor<P>[]>(path: P, args: A): ArgumentsRouteDecorator<A, P>;
86
+ <const A extends readonly ArgumentFor<'/'>[]>(args: A): ArgumentsRouteDecorator<A, '/'>;
85
87
  }
86
88
  /**
87
89
  * Decorator returned by `@HttpCode()` and `@Header()`: fits any method.
@@ -102,8 +104,8 @@ export declare const Controller: (path?: string) => (target: Constructor<unknown
102
104
  */
103
105
  export interface MethodRouteDecoratorFactory {
104
106
  <const P extends string = '/'>(method: string, path?: P): RouteDecorator<P>;
105
- <const P extends string, const A extends readonly ArgumentFor<P>[]>(method: string, path: P, args: A): ArgumentsRouteDecorator<A>;
106
- <const A extends readonly ArgumentFor<'/'>[]>(method: string, args: A): ArgumentsRouteDecorator<A>;
107
+ <const P extends string, const A extends readonly ArgumentFor<P>[]>(method: string, path: P, args: A): ArgumentsRouteDecorator<A, P>;
108
+ <const A extends readonly ArgumentFor<'/'>[]>(method: string, args: A): ArgumentsRouteDecorator<A, '/'>;
107
109
  }
108
110
  /**
109
111
  * Route for any method name, including extensions (`PROPFIND`, `REPORT`...).
@@ -126,6 +128,11 @@ export declare const Options: RouteDecoratorFactory;
126
128
  export declare const Head: RouteDecoratorFactory;
127
129
  /** Route for every method; a route for a concrete method on the same path wins. */
128
130
  export declare const All: RouteDecoratorFactory;
131
+ /**
132
+ * `GET` route streaming server-sent events: the method returns an async
133
+ * iterable of `SseMessage`, such as an `async function*`. Like Nest's `@Sse()`.
134
+ */
135
+ export declare const Sse: RouteDecoratorFactory;
129
136
  /**
130
137
  * Status of the responses built from the returned value (not of a returned `Response`).
131
138
  * Defaults to `201` for `POST` and `200` otherwise, as in Nest.
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/http/decorators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/http/decorators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAG3C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,SAAS,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG,SAAS,CAAA;IACvD,4EAA4E;IAC5E,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,CAAA;IAChC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;CACrC;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC,SAAS,MAAM,IACjD,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,GAC1C,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,CAAA;AAE3C;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,EACrG,MAAM,EAAE,CAAC,SAAS,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EACvE,OAAO,EAAE,2BAA2B,CAAC,IAAI,EAAE,CAAC,CAAC,KAC1C,IAAI,CAAA;AAET;;;GAGG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAC3C,6EAA6E,CAAC,4CAA4C,CAAC,sBAAsB,CAAA;AAEnJ;;;GAGG;AACH,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,SAAS,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,CACvG,IAAI,EACJ,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,EAEhE,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,2BAA2B,CAAC,IAAI,EAAE,CAAC,CAAC,KAC1C,IAAI,CAAA;AAET;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;IAC3D,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACpH,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,uBAAuB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;CACxF;AAED;;;GAGG;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,EACtF,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,2BAA2B,CAAC,IAAI,EAAE,CAAC,CAAC,KAC1C,IAAI,CAAA;AAwCT;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,8BAEZ,WAAW,CAAC,OAAO,CAAC,YAAY,qBAAqB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAG,IAEtF,CAAA;AAiBH;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;IAC3E,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,EAChE,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,CAAC,GACN,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAChC,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,uBAAuB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;CACxG;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,EAIV,2BAA2B,CAAA;AAEnC,mBAAmB;AACnB,eAAO,MAAM,GAAG,uBAA6B,CAAA;AAC7C,+EAA+E;AAC/E,eAAO,MAAM,IAAI,uBAA+B,CAAA;AAChD,mBAAmB;AACnB,eAAO,MAAM,GAAG,uBAA6B,CAAA;AAC7C,qBAAqB;AACrB,eAAO,MAAM,KAAK,uBAAiC,CAAA;AACnD,sBAAsB;AACtB,eAAO,MAAM,MAAM,uBAAmC,CAAA;AACtD,uBAAuB;AACvB,eAAO,MAAM,OAAO,uBAAqC,CAAA;AACzD,qEAAqE;AACrE,eAAO,MAAM,IAAI,uBAA+B,CAAA;AAChD,mFAAmF;AACnF,eAAO,MAAM,GAAG,uBAA6B,CAAA;AAE7C;;;GAGG;AACH,eAAO,MAAM,GAAG,uBAAmC,CAAA;AAEnD;;;GAGG;AACH,eAAO,MAAM,QAAQ,WACV,MAAM,KAAG,uBAejB,CAAA;AAEH;;GAEG;AACH,eAAO,MAAM,MAAM,SACV,MAAM,SAAS,MAAM,KAAG,uBAW9B,CAAA;AAEH,qFAAqF;AACrF,eAAO,MAAM,iBAAiB,WAAY,WAAW,CAAC,OAAO,CAAC,KAAG,MAAM,GAAG,SAAoC,CAAA;AAE9G,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,WAAY,OAAO,KAAG,eAAe,GAAG,SACN,CAAA"}