@c9up/ream 0.2.16 → 0.2.18
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.
- package/dist/Application.d.ts +54 -8
- package/dist/Application.d.ts.map +1 -1
- package/dist/Application.js +77 -7
- package/dist/Application.js.map +1 -1
- package/dist/HttpKernel.d.ts +10 -0
- package/dist/HttpKernel.d.ts.map +1 -1
- package/dist/HttpKernel.js +61 -5
- package/dist/HttpKernel.js.map +1 -1
- package/dist/Ignitor.d.ts.map +1 -1
- package/dist/Ignitor.js +76 -18
- package/dist/Ignitor.js.map +1 -1
- package/dist/commands/ScheduleList.d.ts.map +1 -1
- package/dist/commands/ScheduleList.js +29 -0
- package/dist/commands/ScheduleList.js.map +1 -1
- package/dist/container/Container.d.ts.map +1 -1
- package/dist/container/Container.js +174 -45
- package/dist/container/Container.js.map +1 -1
- package/dist/container/types.d.ts +7 -0
- package/dist/container/types.d.ts.map +1 -1
- package/dist/dev/hmr.d.ts +37 -0
- package/dist/dev/hmr.d.ts.map +1 -0
- package/dist/dev/hmr.js +72 -0
- package/dist/dev/hmr.js.map +1 -0
- package/dist/graphql/GraphQLProvider.d.ts +14 -3
- package/dist/graphql/GraphQLProvider.d.ts.map +1 -1
- package/dist/graphql/GraphQLProvider.js +14 -3
- package/dist/graphql/GraphQLProvider.js.map +1 -1
- package/dist/hot.d.ts +29 -0
- package/dist/hot.d.ts.map +1 -0
- package/dist/hot.js +135 -0
- package/dist/hot.js.map +1 -0
- package/dist/http/Exception.d.ts +2 -2
- package/dist/http/Exception.d.ts.map +1 -1
- package/dist/http/Exception.js +3 -3
- package/dist/http/Exception.js.map +1 -1
- package/dist/http/Request.d.ts +11 -0
- package/dist/http/Request.d.ts.map +1 -1
- package/dist/http/Request.js +40 -0
- package/dist/http/Request.js.map +1 -1
- package/dist/http/RequestValidator.d.ts +80 -0
- package/dist/http/RequestValidator.d.ts.map +1 -0
- package/dist/http/RequestValidator.js +93 -0
- package/dist/http/RequestValidator.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/middleware/Pipeline.d.ts +2 -2
- package/dist/middleware/Pipeline.js +2 -2
- package/dist/middleware/Pipeline.js.map +1 -1
- package/dist/migrations/MigrationRegistry.d.ts +16 -0
- package/dist/migrations/MigrationRegistry.d.ts.map +1 -1
- package/dist/migrations/MigrationRegistry.js +24 -0
- package/dist/migrations/MigrationRegistry.js.map +1 -1
- package/dist/openapi/OpenApiGenerator.d.ts +16 -0
- package/dist/openapi/OpenApiGenerator.d.ts.map +1 -1
- package/dist/openapi/OpenApiGenerator.js +76 -4
- package/dist/openapi/OpenApiGenerator.js.map +1 -1
- package/dist/openapi/OpenApiProvider.d.ts +16 -5
- package/dist/openapi/OpenApiProvider.d.ts.map +1 -1
- package/dist/openapi/OpenApiProvider.js +21 -6
- package/dist/openapi/OpenApiProvider.js.map +1 -1
- package/dist/rpc/RpcProvider.d.ts +13 -2
- package/dist/rpc/RpcProvider.d.ts.map +1 -1
- package/dist/rpc/RpcProvider.js +13 -2
- package/dist/rpc/RpcProvider.js.map +1 -1
- package/dist/storage/StaticProvider.d.ts +12 -2
- package/dist/storage/StaticProvider.d.ts.map +1 -1
- package/dist/storage/StaticProvider.js +12 -2
- package/dist/storage/StaticProvider.js.map +1 -1
- package/events.win32-x64-msvc.node +0 -0
- package/index.win32-x64-msvc.node +0 -0
- package/package.json +14 -2
- package/scheduler.win32-x64-msvc.node +0 -0
- package/src/Application.ts +89 -8
- package/src/HttpKernel.ts +87 -5
- package/src/Ignitor.ts +82 -19
- package/src/commands/ScheduleList.ts +30 -0
- package/src/container/Container.ts +178 -48
- package/src/container/types.ts +11 -0
- package/src/dev/hmr.ts +83 -0
- package/src/graphql/GraphQLProvider.ts +14 -3
- package/src/hot.ts +165 -0
- package/src/http/Exception.ts +4 -4
- package/src/http/Request.ts +54 -0
- package/src/http/RequestValidator.ts +143 -0
- package/src/index.ts +8 -1
- package/src/middleware/Pipeline.ts +4 -4
- package/src/migrations/MigrationRegistry.ts +23 -0
- package/src/openapi/OpenApiGenerator.ts +84 -4
- package/src/openapi/OpenApiProvider.ts +21 -6
- package/src/rpc/RpcProvider.ts +13 -2
- package/src/storage/StaticProvider.ts +12 -2
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `OpenApiProvider` — serves an auto-generated OpenAPI 3.1 spec + Swagger UI.
|
|
3
3
|
*
|
|
4
|
-
* `
|
|
4
|
+
* `start()` mounts a global middleware that, on the first GET to `/api-docs`
|
|
5
5
|
* (JSON) or `/docs` (Swagger UI), lazily generates the spec from the router's
|
|
6
|
-
* registered routes — so every route registered
|
|
7
|
-
* (the spec must NOT be generated eagerly
|
|
8
|
-
* registered their routes). Opt-out via
|
|
6
|
+
* registered routes — so every route registered while the application starts
|
|
7
|
+
* up is included (the spec must NOT be generated eagerly, before the other
|
|
8
|
+
* providers and the preloads have registered their routes). Opt-out via
|
|
9
|
+
* `config.openapi.enabled = false`.
|
|
9
10
|
*
|
|
10
11
|
* @implements Story 24.4
|
|
11
12
|
*/
|
|
@@ -43,7 +44,17 @@ export class OpenApiProvider extends Provider {
|
|
|
43
44
|
this.#override = options.generator
|
|
44
45
|
}
|
|
45
46
|
|
|
46
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Routes and server middleware go in `start`, not `boot`.
|
|
49
|
+
*
|
|
50
|
+
* Upstream documents that phase for exactly this, and the order is what makes
|
|
51
|
+
* it matter: providers boot, then providers START, then the preloads run —
|
|
52
|
+
* and the preloads are where an application writes its own routes and kernel.
|
|
53
|
+
* Mounted in `boot`, a framework route landed ahead of every application
|
|
54
|
+
* route, so an overlapping path was answered by the framework rather than by
|
|
55
|
+
* the app that meant to override it.
|
|
56
|
+
*/
|
|
57
|
+
override async start(): Promise<void> {
|
|
47
58
|
const config = this.app.config.get<OpenApiDocsConfig>('openapi') ?? {}
|
|
48
59
|
if (config.enabled === false) return
|
|
49
60
|
|
|
@@ -59,10 +70,14 @@ export class OpenApiProvider extends Provider {
|
|
|
59
70
|
|
|
60
71
|
async #buildGenerator(config: OpenApiDocsConfig): Promise<OpenApiGenerator> {
|
|
61
72
|
const router = await this.app.container.make<Router>('router')
|
|
62
|
-
|
|
73
|
+
const generator = new OpenApiGenerator(router, {
|
|
63
74
|
title: config.title ?? 'API',
|
|
64
75
|
version: config.version ?? '1.0.0',
|
|
65
76
|
})
|
|
77
|
+
// The routes already name their validators; ask each one to describe
|
|
78
|
+
// itself instead of making the app repeat the shape by hand.
|
|
79
|
+
await generator.hydrateSchemas((token) => this.app.container.make<unknown>(token))
|
|
80
|
+
return generator
|
|
66
81
|
}
|
|
67
82
|
}
|
|
68
83
|
|
package/src/rpc/RpcProvider.ts
CHANGED
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
* rpc.method('task.validate', handler).guard('jwt')
|
|
10
10
|
* rpc.namespace('user', UserController)
|
|
11
11
|
*
|
|
12
|
-
* - `
|
|
12
|
+
* - `start()` — mount `POST <config.rpc.path ?? '/rpc'>` on the core router,
|
|
13
13
|
* dispatching every request body (single or batch) to `RpcRouter.handle()`.
|
|
14
|
+
* In `start`, which is the phase upstream documents for routes.
|
|
14
15
|
*
|
|
15
16
|
* @implements Story 24.1, 24.2
|
|
16
17
|
*/
|
|
@@ -68,7 +69,17 @@ export class RpcProvider extends Provider {
|
|
|
68
69
|
this.#registered = true
|
|
69
70
|
}
|
|
70
71
|
|
|
71
|
-
|
|
72
|
+
/**
|
|
73
|
+
* Routes and server middleware go in `start`, not `boot`.
|
|
74
|
+
*
|
|
75
|
+
* Upstream documents that phase for exactly this, and the order is what makes
|
|
76
|
+
* it matter: providers boot, then providers START, then the preloads run —
|
|
77
|
+
* and the preloads are where an application writes its own routes and kernel.
|
|
78
|
+
* Mounted in `boot`, a framework route landed ahead of every application
|
|
79
|
+
* route, so an overlapping path was answered by the framework rather than by
|
|
80
|
+
* the app that meant to override it.
|
|
81
|
+
*/
|
|
82
|
+
override async start(): Promise<void> {
|
|
72
83
|
const config = this.app.config.get<RpcConfig>('rpc')
|
|
73
84
|
const path = config?.path ?? '/rpc'
|
|
74
85
|
const router = await this.app.container.make<Router>('router')
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* `StaticProvider` — serves static files from a directory.
|
|
3
3
|
*
|
|
4
4
|
* Opt-in: does nothing unless `config.static.root` is set (or a middleware is
|
|
5
|
-
* injected for tests). When configured, `
|
|
5
|
+
* injected for tests). When configured, `start()` mounts a global
|
|
6
6
|
* `StaticMiddleware` (path-traversal + symlink-escape guarded) that serves
|
|
7
7
|
* matching requests and falls through (`next()`) otherwise.
|
|
8
8
|
*
|
|
@@ -30,7 +30,17 @@ export class StaticProvider extends Provider {
|
|
|
30
30
|
this.#override = options.middleware
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Routes and server middleware go in `start`, not `boot`.
|
|
35
|
+
*
|
|
36
|
+
* Upstream documents that phase for exactly this, and the order is what makes
|
|
37
|
+
* it matter: providers boot, then providers START, then the preloads run —
|
|
38
|
+
* and the preloads are where an application writes its own routes and kernel.
|
|
39
|
+
* Mounted in `boot`, a framework route landed ahead of every application
|
|
40
|
+
* route, so an overlapping path was answered by the framework rather than by
|
|
41
|
+
* the app that meant to override it.
|
|
42
|
+
*/
|
|
43
|
+
override async start(): Promise<void> {
|
|
34
44
|
const config = this.app.config.get<StaticConfig>('static')
|
|
35
45
|
const middleware = this.#override ?? (config?.root ? new StaticMiddleware(config) : undefined)
|
|
36
46
|
if (!middleware) return // not configured — opt-out
|