@c9up/ream 0.1.25 → 0.1.27
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/README.md +65 -0
- package/dist/ConfigLoader.d.ts +46 -5
- package/dist/ConfigLoader.d.ts.map +1 -1
- package/dist/ConfigLoader.js +60 -9
- package/dist/ConfigLoader.js.map +1 -1
- package/dist/HttpKernel.d.ts.map +1 -1
- package/dist/HttpKernel.js +46 -6
- package/dist/HttpKernel.js.map +1 -1
- package/dist/Ignitor.d.ts +115 -7
- package/dist/Ignitor.d.ts.map +1 -1
- package/dist/Ignitor.js +254 -40
- package/dist/Ignitor.js.map +1 -1
- package/dist/console/BaseCommand.d.ts +217 -0
- package/dist/console/BaseCommand.d.ts.map +1 -0
- package/dist/console/BaseCommand.js +340 -0
- package/dist/console/BaseCommand.js.map +1 -0
- package/dist/console/Console.d.ts +86 -0
- package/dist/console/Console.d.ts.map +1 -0
- package/dist/console/Console.js +134 -0
- package/dist/console/Console.js.map +1 -0
- package/dist/console/ExceptionHandler.d.ts +28 -0
- package/dist/console/ExceptionHandler.d.ts.map +1 -0
- package/dist/console/ExceptionHandler.js +76 -0
- package/dist/console/ExceptionHandler.js.map +1 -0
- package/dist/console/HelpCommand.d.ts +16 -0
- package/dist/console/HelpCommand.d.ts.map +1 -0
- package/dist/console/HelpCommand.js +40 -0
- package/dist/console/HelpCommand.js.map +1 -0
- package/dist/console/IndexGenerator.d.ts +24 -0
- package/dist/console/IndexGenerator.d.ts.map +1 -0
- package/dist/console/IndexGenerator.js +65 -0
- package/dist/console/IndexGenerator.js.map +1 -0
- package/dist/console/Kernel.d.ts +298 -0
- package/dist/console/Kernel.d.ts.map +1 -0
- package/dist/console/Kernel.js +1120 -0
- package/dist/console/Kernel.js.map +1 -0
- package/dist/console/ListCommand.d.ts +18 -0
- package/dist/console/ListCommand.d.ts.map +1 -0
- package/dist/console/ListCommand.js +60 -0
- package/dist/console/ListCommand.js.map +1 -0
- package/dist/console/assertions.d.ts +20 -0
- package/dist/console/assertions.d.ts.map +1 -0
- package/dist/console/assertions.js +84 -0
- package/dist/console/assertions.js.map +1 -0
- package/dist/console/cliui.d.ts +248 -0
- package/dist/console/cliui.d.ts.map +1 -0
- package/dist/console/cliui.js +587 -0
- package/dist/console/cliui.js.map +1 -0
- package/dist/console/decorators.d.ts +90 -0
- package/dist/console/decorators.d.ts.map +1 -0
- package/dist/console/decorators.js +142 -0
- package/dist/console/decorators.js.map +1 -0
- package/dist/console/index.d.ts +32 -0
- package/dist/console/index.d.ts.map +1 -0
- package/dist/console/index.js +24 -0
- package/dist/console/index.js.map +1 -0
- package/dist/console/loaders.d.ts +52 -0
- package/dist/console/loaders.d.ts.map +1 -0
- package/dist/console/loaders.js +131 -0
- package/dist/console/loaders.js.map +1 -0
- package/dist/console/parser.d.ts +86 -0
- package/dist/console/parser.d.ts.map +1 -0
- package/dist/console/parser.js +440 -0
- package/dist/console/parser.js.map +1 -0
- package/dist/console/prompts.d.ts +124 -0
- package/dist/console/prompts.d.ts.map +1 -0
- package/dist/console/prompts.js +356 -0
- package/dist/console/prompts.js.map +1 -0
- package/dist/console/tracing.d.ts +17 -0
- package/dist/console/tracing.d.ts.map +1 -0
- package/dist/console/tracing.js +11 -0
- package/dist/console/tracing.js.map +1 -0
- package/dist/console/types.d.ts +255 -0
- package/dist/console/types.d.ts.map +1 -0
- package/dist/console/types.js +25 -0
- package/dist/console/types.js.map +1 -0
- package/dist/console/ui.d.ts +20 -0
- package/dist/console/ui.d.ts.map +1 -0
- package/dist/console/ui.js +31 -0
- package/dist/console/ui.js.map +1 -0
- package/dist/console/utils.d.ts +27 -0
- package/dist/console/utils.d.ts.map +1 -0
- package/dist/console/utils.js +56 -0
- package/dist/console/utils.js.map +1 -0
- package/dist/container/Container.d.ts +23 -3
- package/dist/container/Container.d.ts.map +1 -1
- package/dist/container/Container.js +177 -70
- package/dist/container/Container.js.map +1 -1
- package/dist/container/types.d.ts +14 -2
- package/dist/container/types.d.ts.map +1 -1
- package/dist/decorators/Service.d.ts +7 -0
- package/dist/decorators/Service.d.ts.map +1 -1
- package/dist/decorators/Service.js +23 -3
- package/dist/decorators/Service.js.map +1 -1
- package/dist/env/Env.d.ts +29 -4
- package/dist/env/Env.d.ts.map +1 -1
- package/dist/env/Env.js +27 -4
- package/dist/env/Env.js.map +1 -1
- package/dist/env/Secret.d.ts +11 -0
- package/dist/env/Secret.d.ts.map +1 -0
- package/dist/env/Secret.js +36 -0
- package/dist/env/Secret.js.map +1 -0
- package/dist/env/interpolate.d.ts +26 -0
- package/dist/env/interpolate.d.ts.map +1 -0
- package/dist/env/interpolate.js +48 -0
- package/dist/env/interpolate.js.map +1 -0
- package/dist/env/loadEnvFiles.d.ts.map +1 -1
- package/dist/env/loadEnvFiles.js +14 -4
- package/dist/env/loadEnvFiles.js.map +1 -1
- package/dist/env/schema.d.ts +23 -6
- package/dist/env/schema.d.ts.map +1 -1
- package/dist/env/schema.js +67 -33
- package/dist/env/schema.js.map +1 -1
- package/dist/errors/ReamError.d.ts +25 -0
- package/dist/errors/ReamError.d.ts.map +1 -1
- package/dist/errors/ReamError.js +5 -0
- package/dist/errors/ReamError.js.map +1 -1
- package/dist/errors/prettyPrintError.d.ts +9 -0
- package/dist/errors/prettyPrintError.d.ts.map +1 -0
- package/dist/errors/prettyPrintError.js +22 -0
- package/dist/errors/prettyPrintError.js.map +1 -0
- package/dist/events/Emitter.d.ts +1 -1
- package/dist/events/Emitter.d.ts.map +1 -1
- package/dist/events/Emitter.js +1 -1
- package/dist/events/Emitter.js.map +1 -1
- package/dist/events/EventsProvider.d.ts +2 -2
- package/dist/events/EventsProvider.d.ts.map +1 -1
- package/dist/events/EventsProvider.js +3 -3
- package/dist/events/EventsProvider.js.map +1 -1
- package/dist/graphql/GraphQLEngine.d.ts +1 -1
- package/dist/graphql/GraphQLEngine.d.ts.map +1 -1
- package/dist/graphql/GraphQLEngine.js +2 -2
- package/dist/graphql/GraphQLEngine.js.map +1 -1
- package/dist/graphql/GraphQLProvider.d.ts.map +1 -1
- package/dist/graphql/GraphQLProvider.js +7 -3
- package/dist/graphql/GraphQLProvider.js.map +1 -1
- package/dist/http/Exception.d.ts +63 -1
- package/dist/http/Exception.d.ts.map +1 -1
- package/dist/http/Exception.js +185 -48
- package/dist/http/Exception.js.map +1 -1
- package/dist/http/HttpContext.d.ts +53 -7
- package/dist/http/HttpContext.d.ts.map +1 -1
- package/dist/http/HttpContext.js +56 -15
- package/dist/http/HttpContext.js.map +1 -1
- package/dist/http/RedirectBuilder.d.ts.map +1 -1
- package/dist/http/RedirectBuilder.js +4 -1
- package/dist/http/RedirectBuilder.js.map +1 -1
- package/dist/http/Request.d.ts +141 -10
- package/dist/http/Request.d.ts.map +1 -1
- package/dist/http/Request.js +244 -34
- package/dist/http/Request.js.map +1 -1
- package/dist/http/Response.d.ts +176 -9
- package/dist/http/Response.d.ts.map +1 -1
- package/dist/http/Response.js +404 -16
- package/dist/http/Response.js.map +1 -1
- package/dist/index.d.ts +19 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -5
- package/dist/index.js.map +1 -1
- package/dist/middleware/Pipeline.d.ts +29 -8
- package/dist/middleware/Pipeline.d.ts.map +1 -1
- package/dist/middleware/Pipeline.js +40 -2
- package/dist/middleware/Pipeline.js.map +1 -1
- package/dist/openapi/OpenApiProvider.js +4 -4
- package/dist/openapi/OpenApiProvider.js.map +1 -1
- package/dist/router/Router.d.ts +223 -31
- package/dist/router/Router.d.ts.map +1 -1
- package/dist/router/Router.js +520 -102
- package/dist/router/Router.js.map +1 -1
- package/dist/rpc/RpcProvider.d.ts +1 -0
- package/dist/rpc/RpcProvider.d.ts.map +1 -1
- package/dist/rpc/RpcProvider.js +7 -3
- package/dist/rpc/RpcProvider.js.map +1 -1
- package/dist/rpc/RpcRouter.d.ts +2 -2
- package/dist/rpc/RpcRouter.d.ts.map +1 -1
- package/dist/rpc/RpcRouter.js +17 -5
- package/dist/rpc/RpcRouter.js.map +1 -1
- package/dist/scheduler/ScheduleProvider.d.ts.map +1 -1
- package/dist/scheduler/ScheduleProvider.js +7 -15
- package/dist/scheduler/ScheduleProvider.js.map +1 -1
- package/dist/server/Server.d.ts +17 -4
- package/dist/server/Server.d.ts.map +1 -1
- package/dist/server/Server.js +41 -7
- package/dist/server/Server.js.map +1 -1
- package/dist/services/app.d.ts +1 -1
- package/dist/services/app.js +1 -1
- package/dist/services/console.d.ts +21 -0
- package/dist/services/console.d.ts.map +1 -0
- package/dist/services/console.js +35 -0
- package/dist/services/console.js.map +1 -0
- package/dist/session/SessionMiddleware.js +3 -3
- package/dist/session/SessionMiddleware.js.map +1 -1
- package/dist/storage/StaticProvider.js +1 -1
- package/dist/storage/StaticProvider.js.map +1 -1
- package/dist/testing/ApiResponse.d.ts +218 -0
- package/dist/testing/ApiResponse.d.ts.map +1 -0
- package/dist/testing/ApiResponse.js +576 -0
- package/dist/testing/ApiResponse.js.map +1 -0
- package/dist/testing/RequestBuilder.d.ts +155 -35
- package/dist/testing/RequestBuilder.d.ts.map +1 -1
- package/dist/testing/RequestBuilder.js +455 -109
- package/dist/testing/RequestBuilder.js.map +1 -1
- package/dist/testing/TestClient.d.ts +53 -37
- package/dist/testing/TestClient.d.ts.map +1 -1
- package/dist/testing/TestClient.js +84 -52
- package/dist/testing/TestClient.js.map +1 -1
- package/dist/utils/Macroable.d.ts +30 -0
- package/dist/utils/Macroable.d.ts.map +1 -0
- package/dist/utils/Macroable.js +43 -0
- package/dist/utils/Macroable.js.map +1 -0
- package/dist/utils/inflect.d.ts +17 -0
- package/dist/utils/inflect.d.ts.map +1 -0
- package/dist/utils/inflect.js +32 -0
- package/dist/utils/inflect.js.map +1 -0
- package/dist/utils/objectPath.d.ts +57 -0
- package/dist/utils/objectPath.d.ts.map +1 -0
- package/dist/utils/objectPath.js +141 -0
- package/dist/utils/objectPath.js.map +1 -0
- package/events.darwin-arm64.node +0 -0
- package/events.darwin-x64.node +0 -0
- package/events.linux-arm64-gnu.node +0 -0
- package/events.linux-x64-gnu.node +0 -0
- package/events.win32-x64-msvc.node +0 -0
- package/index.darwin-arm64.node +0 -0
- package/index.darwin-x64.node +0 -0
- package/index.linux-arm64-gnu.node +0 -0
- package/index.linux-x64-gnu.node +0 -0
- package/index.win32-x64-msvc.node +0 -0
- package/package.json +20 -2
- package/scheduler.darwin-arm64.node +0 -0
- package/scheduler.darwin-x64.node +0 -0
- package/scheduler.linux-arm64-gnu.node +0 -0
- package/scheduler.linux-x64-gnu.node +0 -0
- package/scheduler.win32-x64-msvc.node +0 -0
- package/src/ConfigLoader.ts +72 -9
- package/src/HttpKernel.ts +53 -15
- package/src/Ignitor.ts +364 -45
- package/src/console/BaseCommand.ts +467 -0
- package/src/console/Console.ts +174 -0
- package/src/console/ExceptionHandler.ts +91 -0
- package/src/console/HelpCommand.ts +37 -0
- package/src/console/IndexGenerator.ts +79 -0
- package/src/console/Kernel.ts +1382 -0
- package/src/console/ListCommand.ts +55 -0
- package/src/console/assertions.ts +114 -0
- package/src/console/cliui.ts +756 -0
- package/src/console/decorators.ts +199 -0
- package/src/console/index.ts +67 -0
- package/src/console/loaders.ts +145 -0
- package/src/console/parser.ts +598 -0
- package/src/console/prompts.ts +548 -0
- package/src/console/tracing.ts +22 -0
- package/src/console/types.ts +280 -0
- package/src/console/ui.ts +37 -0
- package/src/console/utils.ts +69 -0
- package/src/container/Container.ts +198 -72
- package/src/container/types.ts +15 -2
- package/src/decorators/Service.ts +28 -3
- package/src/env/Env.ts +49 -5
- package/src/env/Secret.ts +41 -0
- package/src/env/interpolate.ts +54 -0
- package/src/env/loadEnvFiles.ts +12 -4
- package/src/env/schema.ts +109 -35
- package/src/errors/ReamError.ts +31 -0
- package/src/errors/prettyPrintError.ts +20 -0
- package/src/events/Emitter.ts +2 -2
- package/src/events/EventsProvider.ts +5 -5
- package/src/graphql/GraphQLEngine.ts +4 -4
- package/src/graphql/GraphQLProvider.ts +7 -3
- package/src/http/Exception.ts +214 -37
- package/src/http/HttpContext.ts +87 -18
- package/src/http/RedirectBuilder.ts +4 -1
- package/src/http/Request.ts +264 -34
- package/src/http/Response.ts +478 -27
- package/src/index.ts +41 -6
- package/src/middleware/Pipeline.ts +77 -6
- package/src/openapi/OpenApiProvider.ts +4 -4
- package/src/router/Router.ts +631 -113
- package/src/rpc/RpcProvider.ts +6 -2
- package/src/rpc/RpcRouter.ts +22 -7
- package/src/scheduler/ScheduleProvider.ts +7 -15
- package/src/server/Server.ts +49 -10
- package/src/services/app.ts +1 -1
- package/src/services/console.ts +42 -0
- package/src/session/SessionMiddleware.ts +4 -4
- package/src/storage/StaticProvider.ts +1 -1
- package/src/testing/ApiResponse.ts +691 -0
- package/src/testing/RequestBuilder.ts +577 -137
- package/src/testing/TestClient.ts +110 -77
- package/src/utils/Macroable.ts +54 -0
- package/src/utils/inflect.ts +29 -0
- package/src/utils/objectPath.ts +142 -0
- package/dist/console/CommandRunner.d.ts +0 -18
- package/dist/console/CommandRunner.d.ts.map +0 -1
- package/dist/console/CommandRunner.js +0 -65
- package/dist/console/CommandRunner.js.map +0 -1
- package/dist/decorators/Lazy.d.ts +0 -19
- package/dist/decorators/Lazy.d.ts.map +0 -1
- package/dist/decorators/Lazy.js +0 -53
- package/dist/decorators/Lazy.js.map +0 -1
- package/src/console/CommandRunner.ts +0 -82
- package/src/decorators/Lazy.ts +0 -57
package/README.md
CHANGED
|
@@ -35,6 +35,71 @@ const app = new Ignitor({ port: 3000 })
|
|
|
35
35
|
await app.start()
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
+
## Testing
|
|
39
|
+
|
|
40
|
+
Declare your suites in `reamrc.ts`, the way AdonisJS declares them in
|
|
41
|
+
`adonisrc.ts`, and `ream test` runs them:
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
// reamrc.ts
|
|
45
|
+
export default defineConfig({
|
|
46
|
+
tests: {
|
|
47
|
+
timeout: 2_000,
|
|
48
|
+
forceExit: false,
|
|
49
|
+
suites: [
|
|
50
|
+
{ name: 'unit', files: ['tests/unit/**/*.spec.(js|ts)'] },
|
|
51
|
+
{
|
|
52
|
+
name: 'functional',
|
|
53
|
+
files: ['tests/functional/**/*.spec.ts'],
|
|
54
|
+
timeout: 30_000,
|
|
55
|
+
// Japa's per-suite `configure`. Costs an import of this file in every
|
|
56
|
+
// worker — `configureSuite` in tests/bootstrap.ts does the same for free.
|
|
57
|
+
configure: (suite) => suite.setup(() => startHttpServer()),
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
})
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
```sh
|
|
65
|
+
ream test # every suite, in order
|
|
66
|
+
ream test functional # one suite
|
|
67
|
+
ream test --bail --threads=4
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
`ream test` sets `NODE_ENV=test` and loads the `.env` files itself, before
|
|
71
|
+
spawning anything: `.env.test` wins over `.env`, `.env.local` is skipped so
|
|
72
|
+
a developer's local overrides never decide what CI runs, and the shell keeps
|
|
73
|
+
the last word. The app writes no hook for this — the workers inherit the
|
|
74
|
+
environment of the process that spawned them.
|
|
75
|
+
|
|
76
|
+
`japaPlugins: true` lets official Japa plugins (`@japa/assert`, …) run: it
|
|
77
|
+
points `@japa/runner/core` at helix's shim in every worker, so a plugin
|
|
78
|
+
instruments the runner that is actually running. Off by default —
|
|
79
|
+
redirecting a package specifier is not something to do behind your back.
|
|
80
|
+
|
|
81
|
+
`forceExit: true` makes the run call `process.exit()` once it ends instead
|
|
82
|
+
of waiting for the event loop to drain — the same thing Japa does with it,
|
|
83
|
+
and the answer to a pool or a server the app left open. Without it the
|
|
84
|
+
process exits on its own, so a leaked handle surfaces as a diagnosable
|
|
85
|
+
hang rather than being swallowed.
|
|
86
|
+
|
|
87
|
+
The stratification is AdonisJS's: ream reads its rc file and hands the
|
|
88
|
+
suites to the runner ([`@c9up/helix`](../helix)), exactly as
|
|
89
|
+
`@adonisjs/core` reads `adonisrc.ts` and hands them to Japa. helix knows
|
|
90
|
+
nothing about ream, and ream owns no test execution. `tests/bootstrap.ts`
|
|
91
|
+
— plugins, `runnerHooks`, `configureSuite` — is helix's, unchanged.
|
|
92
|
+
|
|
93
|
+
Driving it yourself (a `bin/test.ts`, a console command) is the same call:
|
|
94
|
+
|
|
95
|
+
```ts
|
|
96
|
+
import { runTestsFromRcFile } from '@c9up/ream/test-runner'
|
|
97
|
+
|
|
98
|
+
process.exitCode = await runTestsFromRcFile('./reamrc.ts', {
|
|
99
|
+
suites: process.argv.slice(2),
|
|
100
|
+
})
|
|
101
|
+
```
|
|
102
|
+
|
|
38
103
|
## Ecosystem
|
|
39
104
|
|
|
40
105
|
Every package is standalone and publishable on its own; they consume the Ream
|
package/dist/ConfigLoader.d.ts
CHANGED
|
@@ -5,15 +5,38 @@
|
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
7
|
* In-memory config store. In production this is populated from config/*.ts
|
|
8
|
-
* files via `defineConfig()
|
|
9
|
-
* is
|
|
8
|
+
* files via `defineConfig()` — one top-level key per module (`config/app.ts`
|
|
9
|
+
* → `app`). The class is its own contract — `AppContext.config` is typed
|
|
10
|
+
* against it directly (structural).
|
|
11
|
+
*
|
|
12
|
+
* Values are held as a nested tree and read with AdonisJS dot-notation
|
|
13
|
+
* (`config.get('database.mysql.host')`), matching `@adonisjs/config`'s
|
|
14
|
+
* `lodash`-backed accessors — reimplemented dependency-free via
|
|
15
|
+
* {@link ../utils/objectPath}.
|
|
10
16
|
*/
|
|
11
17
|
export declare class ConfigStore {
|
|
12
|
-
private
|
|
13
|
-
|
|
18
|
+
#private;
|
|
19
|
+
/**
|
|
20
|
+
* Read a value by dot-notation key, returning `defaultValue` when the path
|
|
21
|
+
* is absent or resolves to `undefined` (AdonisJS `config.get`).
|
|
22
|
+
*/
|
|
23
|
+
get<T = unknown>(key: string, defaultValue?: T): T | undefined;
|
|
24
|
+
/** Set a value by dot-notation key, creating intermediate objects. */
|
|
14
25
|
set(key: string, value: unknown): void;
|
|
26
|
+
/** True when the dot-notation key exists (AdonisJS `config.has`). */
|
|
15
27
|
has(key: string): boolean;
|
|
16
|
-
/**
|
|
28
|
+
/** The full config tree (AdonisJS `config.all`). */
|
|
29
|
+
all(): Record<string, unknown>;
|
|
30
|
+
/**
|
|
31
|
+
* Merge `value` as defaults for `key` — existing config wins over the
|
|
32
|
+
* provided defaults (AdonisJS `config.defaults`).
|
|
33
|
+
*/
|
|
34
|
+
defaults(key: string, value: unknown): void;
|
|
35
|
+
/**
|
|
36
|
+
* Load config from an object (used for testing and initial setup). Each key
|
|
37
|
+
* is applied by dot-notation, so both nested modules (`{ app: {...} }`) and
|
|
38
|
+
* flat dotted keys (`{ 'db.host': '...' }`) land in the tree.
|
|
39
|
+
*/
|
|
17
40
|
loadFromObject(config: Record<string, unknown>): void;
|
|
18
41
|
}
|
|
19
42
|
/**
|
|
@@ -26,4 +49,22 @@ export declare function env(key: string, defaultValue?: string): string | undefi
|
|
|
26
49
|
* Returns the config object as-is (type-checked by the module's defineConfig).
|
|
27
50
|
*/
|
|
28
51
|
export declare function defineModuleConfig<T>(config: T): T;
|
|
52
|
+
declare const CONFIG_PROVIDER: unique symbol;
|
|
53
|
+
/** A deferred config value that resolves against the application at boot. */
|
|
54
|
+
interface ConfigProviderMarker<T> {
|
|
55
|
+
readonly [CONFIG_PROVIDER]: (app: unknown) => T | Promise<T>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Deferred configuration (AdonisJS `configProvider`). A package exports
|
|
59
|
+
* `configProvider.create((app) => ...)` when its config needs the application
|
|
60
|
+
* (env, paths) at boot; the framework calls `configProvider.resolve(app, value)`
|
|
61
|
+
* to materialise it, passing plain values through untouched.
|
|
62
|
+
*/
|
|
63
|
+
export declare const configProvider: {
|
|
64
|
+
/** Wrap a resolver so it's materialised later by {@link resolve}. */
|
|
65
|
+
create<T>(resolver: (app: unknown) => T | Promise<T>): ConfigProviderMarker<T>;
|
|
66
|
+
/** Resolve a value: run it if it's a provider, otherwise return it as-is. */
|
|
67
|
+
resolve<T>(app: unknown, value: ConfigProviderMarker<T> | T): Promise<T>;
|
|
68
|
+
};
|
|
69
|
+
export {};
|
|
29
70
|
//# sourceMappingURL=ConfigLoader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigLoader.d.ts","sourceRoot":"","sources":["../src/ConfigLoader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"ConfigLoader.d.ts","sourceRoot":"","sources":["../src/ConfigLoader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;;;;;GAUG;AACH,qBAAa,WAAW;;IAGtB;;;OAGG;IACH,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAM9D,sEAAsE;IACtE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAItC,qEAAqE;IACrE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,oDAAoD;IACpD,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI9B;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAK3C;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAKtD;AAED;;;GAGG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE1E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAElD;AAED,QAAA,MAAM,eAAe,eAAgC,CAAA;AAErD,6EAA6E;AAC7E,UAAU,oBAAoB,CAAC,CAAC;IAC9B,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CAC7D;AAMD;;;;;GAKG;AACH,eAAO,MAAM,cAAc;IACzB,qEAAqE;WAC9D,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC;IAI9E,6EAA6E;YAC/D,CAAC,OAAO,OAAO,SAAS,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAG/E,CAAA"}
|
package/dist/ConfigLoader.js
CHANGED
|
@@ -3,26 +3,57 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @implements FR18, FR19
|
|
5
5
|
*/
|
|
6
|
+
import { getPath, hasPath, mergeDeep, setPath } from './utils/objectPath.js';
|
|
6
7
|
/**
|
|
7
8
|
* In-memory config store. In production this is populated from config/*.ts
|
|
8
|
-
* files via `defineConfig()
|
|
9
|
-
* is
|
|
9
|
+
* files via `defineConfig()` — one top-level key per module (`config/app.ts`
|
|
10
|
+
* → `app`). The class is its own contract — `AppContext.config` is typed
|
|
11
|
+
* against it directly (structural).
|
|
12
|
+
*
|
|
13
|
+
* Values are held as a nested tree and read with AdonisJS dot-notation
|
|
14
|
+
* (`config.get('database.mysql.host')`), matching `@adonisjs/config`'s
|
|
15
|
+
* `lodash`-backed accessors — reimplemented dependency-free via
|
|
16
|
+
* {@link ../utils/objectPath}.
|
|
10
17
|
*/
|
|
11
18
|
export class ConfigStore {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
19
|
+
#tree = {};
|
|
20
|
+
/**
|
|
21
|
+
* Read a value by dot-notation key, returning `defaultValue` when the path
|
|
22
|
+
* is absent or resolves to `undefined` (AdonisJS `config.get`).
|
|
23
|
+
*/
|
|
24
|
+
get(key, defaultValue) {
|
|
25
|
+
// Untyped store: the caller declares the shape it configured (same
|
|
26
|
+
// contract as `@adonisjs/config`, whose `get<T>` returns the loose value).
|
|
27
|
+
return getPath(this.#tree, key, defaultValue);
|
|
15
28
|
}
|
|
29
|
+
/** Set a value by dot-notation key, creating intermediate objects. */
|
|
16
30
|
set(key, value) {
|
|
17
|
-
this
|
|
31
|
+
setPath(this.#tree, key, value);
|
|
18
32
|
}
|
|
33
|
+
/** True when the dot-notation key exists (AdonisJS `config.has`). */
|
|
19
34
|
has(key) {
|
|
20
|
-
return this
|
|
35
|
+
return hasPath(this.#tree, key);
|
|
36
|
+
}
|
|
37
|
+
/** The full config tree (AdonisJS `config.all`). */
|
|
38
|
+
all() {
|
|
39
|
+
return this.#tree;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Merge `value` as defaults for `key` — existing config wins over the
|
|
43
|
+
* provided defaults (AdonisJS `config.defaults`).
|
|
44
|
+
*/
|
|
45
|
+
defaults(key, value) {
|
|
46
|
+
const existing = this.get(key);
|
|
47
|
+
this.set(key, existing === undefined ? value : mergeDeep(value, existing));
|
|
21
48
|
}
|
|
22
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* Load config from an object (used for testing and initial setup). Each key
|
|
51
|
+
* is applied by dot-notation, so both nested modules (`{ app: {...} }`) and
|
|
52
|
+
* flat dotted keys (`{ 'db.host': '...' }`) land in the tree.
|
|
53
|
+
*/
|
|
23
54
|
loadFromObject(config) {
|
|
24
55
|
for (const [key, value] of Object.entries(config)) {
|
|
25
|
-
this.
|
|
56
|
+
this.set(key, value);
|
|
26
57
|
}
|
|
27
58
|
}
|
|
28
59
|
}
|
|
@@ -40,4 +71,24 @@ export function env(key, defaultValue) {
|
|
|
40
71
|
export function defineModuleConfig(config) {
|
|
41
72
|
return config;
|
|
42
73
|
}
|
|
74
|
+
const CONFIG_PROVIDER = Symbol('ream.configProvider');
|
|
75
|
+
function isConfigProvider(value) {
|
|
76
|
+
return typeof value === 'object' && value !== null && CONFIG_PROVIDER in value;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Deferred configuration (AdonisJS `configProvider`). A package exports
|
|
80
|
+
* `configProvider.create((app) => ...)` when its config needs the application
|
|
81
|
+
* (env, paths) at boot; the framework calls `configProvider.resolve(app, value)`
|
|
82
|
+
* to materialise it, passing plain values through untouched.
|
|
83
|
+
*/
|
|
84
|
+
export const configProvider = {
|
|
85
|
+
/** Wrap a resolver so it's materialised later by {@link resolve}. */
|
|
86
|
+
create(resolver) {
|
|
87
|
+
return { [CONFIG_PROVIDER]: resolver };
|
|
88
|
+
},
|
|
89
|
+
/** Resolve a value: run it if it's a provider, otherwise return it as-is. */
|
|
90
|
+
async resolve(app, value) {
|
|
91
|
+
return isConfigProvider(value) ? value[CONFIG_PROVIDER](app) : value;
|
|
92
|
+
},
|
|
93
|
+
};
|
|
43
94
|
//# sourceMappingURL=ConfigLoader.js.map
|
package/dist/ConfigLoader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigLoader.js","sourceRoot":"","sources":["../src/ConfigLoader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH
|
|
1
|
+
{"version":3,"file":"ConfigLoader.js","sourceRoot":"","sources":["../src/ConfigLoader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE5E;;;;;;;;;;GAUG;AACH,MAAM,OAAO,WAAW;IACtB,KAAK,GAA4B,EAAE,CAAA;IAEnC;;;OAGG;IACH,GAAG,CAAc,GAAW,EAAE,YAAgB;QAC5C,mEAAmE;QACnE,2EAA2E;QAC3E,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,CAAkB,CAAA;IAChE,CAAC;IAED,sEAAsE;IACtE,GAAG,CAAC,GAAW,EAAE,KAAc;QAC7B,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;IACjC,CAAC;IAED,qEAAqE;IACrE,GAAG,CAAC,GAAW;QACb,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACjC,CAAC;IAED,oDAAoD;IACpD,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,GAAW,EAAE,KAAc;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC5E,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,MAA+B;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,YAAqB;IACpD,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,YAAY,CAAA;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAI,MAAS;IAC7C,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,eAAe,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAOrD,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,eAAe,IAAI,KAAK,CAAA;AAChF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,qEAAqE;IACrE,MAAM,CAAI,QAA0C;QAClD,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAA;IACxC,CAAC;IAED,6EAA6E;IAC7E,KAAK,CAAC,OAAO,CAAI,GAAY,EAAE,KAAkC;QAC/D,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IACtE,CAAC;CACF,CAAA"}
|
package/dist/HttpKernel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpKernel.d.ts","sourceRoot":"","sources":["../src/HttpKernel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEzD,OAAO,EAAqB,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACzE,OAAO,
|
|
1
|
+
{"version":3,"file":"HttpKernel.d.ts","sourceRoot":"","sources":["../src/HttpKernel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEzD,OAAO,EAAqB,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACzE,OAAO,EAA0B,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAEnB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,KAAK,EAAmB,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGjE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,kBAAkB,CAAA;IAC9B,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACvC,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,KAAK,IAAI,CAAA;IACpD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,qBAAqB,EAAE,aAAa,GAAG,SAAS,CAAA;CAC9E;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,IAAI,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,IAAI,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IAChC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,gBAAgB,GACvB,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAwQ7D"}
|
package/dist/HttpKernel.js
CHANGED
|
@@ -30,15 +30,36 @@ export function createHttpKernel(config) {
|
|
|
30
30
|
// creation, and `has()` avoids loading the native bus for apps without events.
|
|
31
31
|
let eventsEmitter;
|
|
32
32
|
let eventsResolved = false;
|
|
33
|
-
const resolveEvents = () => {
|
|
33
|
+
const resolveEvents = async () => {
|
|
34
34
|
if (!eventsResolved) {
|
|
35
35
|
eventsResolved = true;
|
|
36
36
|
if (config.container?.has('events')) {
|
|
37
|
-
eventsEmitter = config.container.resolve('events');
|
|
37
|
+
eventsEmitter = await config.container.resolve('events');
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
return eventsEmitter;
|
|
41
41
|
};
|
|
42
|
+
// APP_KEY-backed services + base logger, resolved once (the container is async
|
|
43
|
+
// now, so they can't be resolved in the HttpContext constructor) and injected
|
|
44
|
+
// per request via setters. Best-effort: absent bindings leave the feature off.
|
|
45
|
+
let servicesResolved = false;
|
|
46
|
+
let encryption;
|
|
47
|
+
let signedUrl;
|
|
48
|
+
let baseLogger;
|
|
49
|
+
const resolveServices = async () => {
|
|
50
|
+
if (servicesResolved)
|
|
51
|
+
return;
|
|
52
|
+
servicesResolved = true;
|
|
53
|
+
const c = config.container;
|
|
54
|
+
if (!c)
|
|
55
|
+
return;
|
|
56
|
+
if (c.has('encryption'))
|
|
57
|
+
encryption = await c.resolve('encryption');
|
|
58
|
+
if (c.has('signedUrl'))
|
|
59
|
+
signedUrl = await c.resolve('signedUrl');
|
|
60
|
+
if (c.has('logger'))
|
|
61
|
+
baseLogger = await c.resolve('logger');
|
|
62
|
+
};
|
|
42
63
|
return async (reqData) => {
|
|
43
64
|
// The Rust HyperServer hands the request as a typed JS object via napi
|
|
44
65
|
// `to_js_value` (no JSON intermediate). Serverless adapters that pass a
|
|
@@ -74,7 +95,15 @@ export function createHttpKernel(config) {
|
|
|
74
95
|
// handed instead of importing `@c9up/ream/services/app` at runtime.
|
|
75
96
|
const ctx = new HttpContext(correlationId, reqData, match?.params ?? {}, routeInfo, config.container);
|
|
76
97
|
ctx.setRouteUrlResolver((name, params) => config.router.urlFor(name, params));
|
|
77
|
-
|
|
98
|
+
// Inject the async-resolved APP_KEY services + base logger (resolved once).
|
|
99
|
+
await resolveServices();
|
|
100
|
+
if (encryption)
|
|
101
|
+
ctx.setCookieSigner(encryption);
|
|
102
|
+
if (signedUrl)
|
|
103
|
+
ctx.setSignedUrl(signedUrl);
|
|
104
|
+
if (baseLogger)
|
|
105
|
+
ctx.setBaseLogger(baseLogger);
|
|
106
|
+
ctx.events = await resolveEvents();
|
|
78
107
|
// Core lifecycle event: a request entered the kernel. Fire-and-forget through
|
|
79
108
|
// the bus when events are wired (`?.` → zero cost when no provider). The
|
|
80
109
|
// `http:response` counterpart fires before every exit below.
|
|
@@ -100,6 +129,17 @@ export function createHttpKernel(config) {
|
|
|
100
129
|
}
|
|
101
130
|
let cached = pipelineCache.get(match.route);
|
|
102
131
|
if (!cached) {
|
|
132
|
+
// Promote a lazy/string controller to a concrete controller tuple on
|
|
133
|
+
// first request (imported once, then reused). Done before handler +
|
|
134
|
+
// guard-metadata resolution so @Guard/@Role/@inject flow through the
|
|
135
|
+
// normal controller path below.
|
|
136
|
+
if (match.route.lazyController && !match.route.controller) {
|
|
137
|
+
const mod = await match.route.lazyController.loader();
|
|
138
|
+
match.route.controller = {
|
|
139
|
+
target: mod.default,
|
|
140
|
+
method: match.route.lazyController.method,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
103
143
|
// Resolve handler (once per route)
|
|
104
144
|
let routeHandler;
|
|
105
145
|
if (match.route.controller) {
|
|
@@ -125,14 +165,14 @@ export function createHttpKernel(config) {
|
|
|
125
165
|
// A declared validator that isn't registered is a HARD error — never
|
|
126
166
|
// silently skip validation, that's a security footgun (a typo'd
|
|
127
167
|
// `.validate('craeteUser')` must fail loudly, not pass unvalidated).
|
|
128
|
-
const validators = match.route.validators.map((name) => {
|
|
168
|
+
const validators = await Promise.all(match.route.validators.map((name) => {
|
|
129
169
|
const token = `validator:${name}`;
|
|
130
170
|
if (!config.container?.has(token)) {
|
|
131
171
|
throw new Error(`[E_VALIDATOR_NOT_FOUND] Route validator '${name}' is not registered. ` +
|
|
132
172
|
`Bind it with container.singleton('${token}', () => schema({ ... })).`);
|
|
133
173
|
}
|
|
134
174
|
return config.container.resolve(token);
|
|
135
|
-
});
|
|
175
|
+
}));
|
|
136
176
|
// Compile pipeline once
|
|
137
177
|
const chain = config.middleware.buildChain(match.route.middleware, [...routerMw, ...match.route.inlineMiddleware], async (c) => {
|
|
138
178
|
await routeHandler(c);
|
|
@@ -210,7 +250,7 @@ function createControllerHandler(
|
|
|
210
250
|
// biome-ignore lint/suspicious/noExplicitAny: see ControllerAction type — IoC resolves constructor params
|
|
211
251
|
controller, container) {
|
|
212
252
|
return async (ctx) => {
|
|
213
|
-
const instance = container ? container.make(controller.target) : new controller.target();
|
|
253
|
+
const instance = container ? await container.make(controller.target) : new controller.target();
|
|
214
254
|
const method = instance[controller.method];
|
|
215
255
|
if (typeof method !== 'function') {
|
|
216
256
|
throw new Error(`Controller method '${controller.method}' not found on ${controller.target.name}`);
|
package/dist/HttpKernel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpKernel.js","sourceRoot":"","sources":["../src/HttpKernel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACzE,OAAO,
|
|
1
|
+
{"version":3,"file":"HttpKernel.js","sourceRoot":"","sources":["../src/HttpKernel.ts"],"names":[],"mappings":"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"}
|
package/dist/Ignitor.d.ts
CHANGED
|
@@ -13,7 +13,10 @@
|
|
|
13
13
|
* @implements FR17, FR20, FR23
|
|
14
14
|
*/
|
|
15
15
|
import { Application } from './Application.js';
|
|
16
|
+
import type { Console } from './console/Console.js';
|
|
17
|
+
import type { Kernel as ConsoleKernelInstance } from './console/Kernel.js';
|
|
16
18
|
import type { ErrorEvent } from './ErrorBoundary.js';
|
|
19
|
+
import { prettyPrintError } from './errors/prettyPrintError.js';
|
|
17
20
|
import type { HttpKernelRequest, HttpKernelResponse } from './HttpKernel.js';
|
|
18
21
|
import type { MiddlewareFunction } from './middleware/Pipeline.js';
|
|
19
22
|
import type { AppContext, ProviderContract } from './Provider.js';
|
|
@@ -38,12 +41,81 @@ export interface ReamrcConfig {
|
|
|
38
41
|
environment?: string[];
|
|
39
42
|
}>;
|
|
40
43
|
commands?: Array<() => Promise<unknown>>;
|
|
44
|
+
/**
|
|
45
|
+
* Command shorthands — Console's `commandsAliases`. The value is the command the
|
|
46
|
+
* alias stands for, flags included:
|
|
47
|
+
* `{ resource: 'make:controller --resource' }`
|
|
48
|
+
*/
|
|
49
|
+
commandsAliases?: Record<string, string>;
|
|
41
50
|
modules?: {
|
|
42
51
|
/** Path to the modules directory (relative to app root). Default: './app/modules' */
|
|
43
52
|
path?: string;
|
|
44
53
|
/** Auto-loaded files in each module directory. Default: ['routes'] */
|
|
45
54
|
autoload?: string[];
|
|
46
55
|
};
|
|
56
|
+
/** Test suites and runner settings — the `tests` block of adonisrc.ts. */
|
|
57
|
+
tests?: TestsConfig;
|
|
58
|
+
}
|
|
59
|
+
/** One test suite, as declared in the rc file (AdonisJS `tests.suites[]`). */
|
|
60
|
+
export interface TestSuiteConfig {
|
|
61
|
+
/** Suite name — what `ream test <name>` selects. */
|
|
62
|
+
name: string;
|
|
63
|
+
/**
|
|
64
|
+
* The suite's files: a glob, several, or a callback returning their URLs
|
|
65
|
+
* (Japa `TestFiles`).
|
|
66
|
+
*/
|
|
67
|
+
files: string | string[] | (() => URL[] | Promise<URL[]>);
|
|
68
|
+
/** Per-test timeout for this suite, in ms. */
|
|
69
|
+
timeout?: number;
|
|
70
|
+
/** Extra attempts on failure for this suite. */
|
|
71
|
+
retries?: number;
|
|
72
|
+
/**
|
|
73
|
+
* Configure the suite before it runs (Japa `TestSuite.configure`). Receives
|
|
74
|
+
* the same handle as the bootstrap's `configureSuite`, and runs after it.
|
|
75
|
+
*
|
|
76
|
+
* Costs an import of the rc file in every worker, since a function cannot
|
|
77
|
+
* cross a process boundary — `configureSuite` in `tests/bootstrap.ts` does
|
|
78
|
+
* the same job for free, and is what AdonisJS itself uses.
|
|
79
|
+
*/
|
|
80
|
+
configure?: (suite: TestSuiteHandle) => void;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* What a suite's `configure` receives — helix's `SuiteHandle`, re-declared here
|
|
84
|
+
* so the rc file types without ream depending on the runner at type level.
|
|
85
|
+
*/
|
|
86
|
+
export interface TestSuiteHandle {
|
|
87
|
+
readonly name: string;
|
|
88
|
+
setup(fn: () => void | Promise<void>): TestSuiteHandle;
|
|
89
|
+
teardown(fn: () => void | Promise<void>): TestSuiteHandle;
|
|
90
|
+
onTest(callback: (test: unknown) => void): TestSuiteHandle;
|
|
91
|
+
onGroup(callback: (group: unknown) => void): TestSuiteHandle;
|
|
92
|
+
bail(toggle?: boolean): TestSuiteHandle;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* The `tests` block of the rc file — AdonisJS `adonisrc.ts` `tests`, field for
|
|
96
|
+
* field. The runner that consumes it is helix; ream reads the file, exactly as
|
|
97
|
+
* `@adonisjs/core` reads adonisrc and hands the suites to Japa.
|
|
98
|
+
*/
|
|
99
|
+
export interface TestsConfig {
|
|
100
|
+
/** Named suites. `ream test` with no argument runs them all, in order. */
|
|
101
|
+
suites?: TestSuiteConfig[];
|
|
102
|
+
/** Default per-test timeout, in ms. */
|
|
103
|
+
timeout?: number;
|
|
104
|
+
/** `process.exit()` once the run ends instead of draining the event loop. */
|
|
105
|
+
forceExit?: boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Ream particularity: the bootstrap module's path. AdonisJS hardcodes
|
|
108
|
+
* `tests/bootstrap.ts`; that stays the default here, and this overrides it.
|
|
109
|
+
*/
|
|
110
|
+
bootstrap?: string;
|
|
111
|
+
/**
|
|
112
|
+
* Point `@japa/runner/core` at helix's shim in every worker, so official Japa
|
|
113
|
+
* plugins (`@japa/assert`, …) instrument the runner that is actually running.
|
|
114
|
+
*
|
|
115
|
+
* Off by default: redirecting a package specifier is not something to do
|
|
116
|
+
* behind a user's back, and a project with no Japa plugin gains nothing.
|
|
117
|
+
*/
|
|
118
|
+
japaPlugins?: boolean;
|
|
47
119
|
}
|
|
48
120
|
/** defineConfig helper — like AdonisJS defineConfig(). */
|
|
49
121
|
export declare function defineConfig(config: ReamrcConfig): ReamrcConfig;
|
|
@@ -179,6 +251,24 @@ export declare class Ignitor {
|
|
|
179
251
|
stop(): Promise<void>;
|
|
180
252
|
port(): Promise<number>;
|
|
181
253
|
getApp(): Application;
|
|
254
|
+
/**
|
|
255
|
+
* The application root passed to `new Ignitor(new URL('../', import.meta.url))`.
|
|
256
|
+
* Undefined for inline/test ignitors created without one.
|
|
257
|
+
*/
|
|
258
|
+
getAppRoot(): URL | undefined;
|
|
259
|
+
/** Has the application already been started? */
|
|
260
|
+
isStarted(): boolean;
|
|
261
|
+
/**
|
|
262
|
+
* The `consoleApp` façade — the programmatic console.
|
|
263
|
+
*
|
|
264
|
+
* Built on demand: the console modules are only imported when something
|
|
265
|
+
* actually reaches for them, so an HTTP-only boot does not pay for the CLI.
|
|
266
|
+
*/
|
|
267
|
+
consoleApp(): Promise<Console>;
|
|
268
|
+
/** The loaded rc file, if `useRcFile()` was called. */
|
|
269
|
+
getRcFile(): ReamrcConfig | undefined;
|
|
270
|
+
/** The custom module importer, when the app provided one. */
|
|
271
|
+
getImporter(): ((filePath: string) => Promise<unknown>) | undefined;
|
|
182
272
|
getRouter(): Router;
|
|
183
273
|
getServer(): Server;
|
|
184
274
|
/**
|
|
@@ -190,17 +280,35 @@ export declare class Ignitor {
|
|
|
190
280
|
getPhase(): string;
|
|
191
281
|
private handleError;
|
|
192
282
|
}
|
|
283
|
+
export { prettyPrintError };
|
|
193
284
|
/**
|
|
194
|
-
*
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
*
|
|
199
|
-
*
|
|
285
|
+
* ConsoleKernel — boots the app in console mode and dispatches a command.
|
|
286
|
+
*
|
|
287
|
+
* Console parity: `new Ignitor(...).console().handle(process.argv.slice(2))`.
|
|
288
|
+
*
|
|
289
|
+
* Commands come from two places, as in Console:
|
|
290
|
+
* 1. the app's own `commands/` directory, discovered automatically;
|
|
291
|
+
* 2. `reamrc.commands[]`, which registers commands shipped by packages.
|
|
292
|
+
*
|
|
293
|
+
* The application is booted lazily — only for a command declaring
|
|
294
|
+
* `options.startApp`. A generator has no reason to open a database
|
|
295
|
+
* connection, and paying the boot cost on every `--help` is worse than
|
|
296
|
+
* pointless: it fails on a machine where the DB is simply not running.
|
|
200
297
|
*/
|
|
201
298
|
export declare class ConsoleKernel {
|
|
202
|
-
private
|
|
299
|
+
#private;
|
|
203
300
|
constructor(ignitor: Ignitor);
|
|
301
|
+
/**
|
|
302
|
+
* Build the console kernel and the function that fills it.
|
|
303
|
+
*
|
|
304
|
+
* Shared by `handle()` (the CLI) and the `consoleApp` façade (programmatic use), so
|
|
305
|
+
* both see exactly the same commands — discovery plus `reamrc.commands` —
|
|
306
|
+
* instead of two loaders drifting apart.
|
|
307
|
+
*/
|
|
308
|
+
build(): Promise<{
|
|
309
|
+
kernel: ConsoleKernelInstance;
|
|
310
|
+
load: () => Promise<void>;
|
|
311
|
+
}>;
|
|
204
312
|
handle(argv: string[]): Promise<void>;
|
|
205
313
|
}
|
|
206
314
|
//# sourceMappingURL=Ignitor.d.ts.map
|
package/dist/Ignitor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ignitor.d.ts","sourceRoot":"","sources":["../src/Ignitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"Ignitor.d.ts","sourceRoot":"","sources":["../src/Ignitor.ts"],"names":[],"mappings":"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"}
|