@c9up/ream 0.1.24 → 0.1.26
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/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.map +1 -1
- package/dist/Ignitor.js +21 -3
- package/dist/Ignitor.js.map +1 -1
- package/dist/container/Container.d.ts +23 -3
- package/dist/container/Container.d.ts.map +1 -1
- package/dist/container/Container.js +139 -60
- package/dist/container/Container.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/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 +56 -9
- 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 +431 -19
- package/dist/http/Response.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/middleware/Pipeline.js +1 -1
- 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 +5 -4
- 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/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/RequestBuilder.d.ts +60 -0
- package/dist/testing/RequestBuilder.d.ts.map +1 -1
- package/dist/testing/RequestBuilder.js +180 -1
- package/dist/testing/RequestBuilder.js.map +1 -1
- package/dist/testing/TestClient.d.ts +22 -1
- package/dist/testing/TestClient.d.ts.map +1 -1
- package/dist/testing/TestClient.js +40 -0
- 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 +6 -1
- 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 +24 -3
- package/src/container/Container.ts +145 -61
- 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/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 +93 -20
- package/src/http/RedirectBuilder.ts +4 -1
- package/src/http/Request.ts +264 -34
- package/src/http/Response.ts +504 -30
- package/src/index.ts +11 -2
- package/src/middleware/Pipeline.ts +1 -1
- 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 +7 -6
- package/src/scheduler/ScheduleProvider.ts +7 -15
- package/src/server/Server.ts +49 -10
- package/src/session/SessionMiddleware.ts +4 -4
- package/src/storage/StaticProvider.ts +1 -1
- package/src/testing/RequestBuilder.ts +218 -1
- package/src/testing/TestClient.ts +57 -1
- package/src/utils/Macroable.ts +54 -0
- package/src/utils/inflect.ts +29 -0
- package/src/utils/objectPath.ts +142 -0
- 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/decorators/Lazy.ts +0 -57
|
@@ -19,6 +19,7 @@ import { Provider } from '../Provider.js';
|
|
|
19
19
|
import { GraphQLEngine } from './GraphQLEngine.js';
|
|
20
20
|
export class GraphQLProvider extends Provider {
|
|
21
21
|
#engine;
|
|
22
|
+
#registered = false;
|
|
22
23
|
constructor(app, options = {}) {
|
|
23
24
|
super(app);
|
|
24
25
|
this.#engine = options.engine;
|
|
@@ -34,9 +35,11 @@ export class GraphQLProvider extends Provider {
|
|
|
34
35
|
return; // GraphQL not configured — opt-out.
|
|
35
36
|
const container = this.app.container;
|
|
36
37
|
if (container.has('graphql')) {
|
|
37
|
-
|
|
38
|
+
// Idempotent re-register: tracked with a flag rather than
|
|
39
|
+
// `container.resolve('graphql')` because resolution is now async.
|
|
40
|
+
if (this.#registered) {
|
|
38
41
|
this.#engine = engine;
|
|
39
|
-
return;
|
|
42
|
+
return;
|
|
40
43
|
}
|
|
41
44
|
throw new ReamError('GRAPHQL_PROVIDER_ALREADY_REGISTERED', "Container token 'graphql' is already bound to a different instance", {
|
|
42
45
|
hint: 'Only one GraphQLProvider can own the graphql binding. Remove the duplicate provider from your reamrc.ts.',
|
|
@@ -45,12 +48,13 @@ export class GraphQLProvider extends Provider {
|
|
|
45
48
|
engine.useContainer(container);
|
|
46
49
|
this.#engine = engine;
|
|
47
50
|
container.singleton('graphql', () => engine);
|
|
51
|
+
this.#registered = true;
|
|
48
52
|
}
|
|
49
53
|
async boot() {
|
|
50
54
|
const engine = this.#engine;
|
|
51
55
|
if (!engine)
|
|
52
56
|
return;
|
|
53
|
-
const router = this.app.container.make('router');
|
|
57
|
+
const router = await this.app.container.make('router');
|
|
54
58
|
// GraphQLEngine.handle() serves the playground on GET and executes queries
|
|
55
59
|
// on POST, so mount the same path for both verbs.
|
|
56
60
|
router.get(engine.path, (ctx) => engine.handle(ctx));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphQLProvider.js","sourceRoot":"","sources":["../../src/graphql/GraphQLProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAsB,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAOtE,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAC3C,OAAO,CAAgB;
|
|
1
|
+
{"version":3,"file":"GraphQLProvider.js","sourceRoot":"","sources":["../../src/graphql/GraphQLProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAsB,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAOtE,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAC3C,OAAO,CAAgB;IACvB,WAAW,GAAG,KAAK,CAAA;IAEnB,YAAY,GAAe,EAAE,UAAkC,EAAE;QAC/D,KAAK,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAA;IAC/B,CAAC;IAED,qEAAqE;IACrE,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAEQ,QAAQ;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAgB,SAAS,CAAC,CAAA;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAC3F,IAAI,CAAC,MAAM;YAAE,OAAM,CAAC,oCAAoC;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAA;QACpC,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,0DAA0D;YAC1D,kEAAkE;YAClE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;gBACrB,OAAM;YACR,CAAC;YACD,MAAM,IAAI,SAAS,CACjB,qCAAqC,EACrC,oEAAoE,EACpE;gBACE,IAAI,EAAE,0GAA0G;aACjH,CACF,CAAA;QACH,CAAC;QACD,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;QAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;IACzB,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAA;QAC3B,IAAI,CAAC,MAAM;YAAE,OAAM;QACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAS,QAAQ,CAAC,CAAA;QAC9D,2EAA2E;QAC3E,kDAAkD;QAClD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QACpD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IACvD,CAAC;CACF;AAED,2KAA2K;AAC3K,eAAe,eAAe,CAAA"}
|
package/dist/http/Exception.d.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* - ExceptionHandler: global exception handler with content negotiation
|
|
6
6
|
* - Built-in E_* exceptions
|
|
7
7
|
*/
|
|
8
|
+
import { Macroable } from '../utils/Macroable.js';
|
|
8
9
|
import type { HttpContext } from './HttpContext.js';
|
|
9
10
|
/**
|
|
10
11
|
* Base exception class. Extend this to create self-handling exceptions.
|
|
@@ -27,8 +28,12 @@ import type { HttpContext } from './HttpContext.js';
|
|
|
27
28
|
export declare class Exception extends Error {
|
|
28
29
|
static status: number;
|
|
29
30
|
static code: string;
|
|
31
|
+
/** Optional static remediation hint, copied onto instances (AdonisJS `Exception.help`). */
|
|
32
|
+
static help?: string;
|
|
30
33
|
status: number;
|
|
31
34
|
code: string;
|
|
35
|
+
/** Human-readable remediation hint surfaced in debug output (AdonisJS `error.help`). */
|
|
36
|
+
help?: string;
|
|
32
37
|
constructor(message: string, options?: {
|
|
33
38
|
status?: number;
|
|
34
39
|
code?: string;
|
|
@@ -38,6 +43,30 @@ export declare class Exception extends Error {
|
|
|
38
43
|
/** Override to report the exception (logging, monitoring). Never send HTTP from here. */
|
|
39
44
|
report?(error: this, ctx: HttpContext): Promise<void> | void;
|
|
40
45
|
}
|
|
46
|
+
/** A concrete Exception subclass produced by {@link createError}. */
|
|
47
|
+
export interface ExceptionConstructor {
|
|
48
|
+
new (...args: unknown[]): Exception;
|
|
49
|
+
status: number;
|
|
50
|
+
code: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Build a reusable Exception subclass in one line (AdonisJS `createError`).
|
|
54
|
+
* `message` may contain `util.format` placeholders (`%s`, `%d`) filled by the
|
|
55
|
+
* constructor args:
|
|
56
|
+
*
|
|
57
|
+
* const E_RESOURCE_MISSING = createError('Resource %s not found', 'E_RESOURCE_MISSING', 404)
|
|
58
|
+
* throw new E_RESOURCE_MISSING('user-42') // → "Resource user-42 not found"
|
|
59
|
+
*/
|
|
60
|
+
export declare function createError(message: string, code: string, status?: number): ExceptionConstructor;
|
|
61
|
+
/** A generic 500 runtime error (AdonisJS `RuntimeException`). */
|
|
62
|
+
export declare class RuntimeException extends Exception {
|
|
63
|
+
static status: number;
|
|
64
|
+
static code: string;
|
|
65
|
+
}
|
|
66
|
+
/** Raised when a function receives invalid arguments (AdonisJS `InvalidArgumentsException`). */
|
|
67
|
+
export declare class InvalidArgumentsException extends RuntimeException {
|
|
68
|
+
static code: string;
|
|
69
|
+
}
|
|
41
70
|
export declare class E_ROUTE_NOT_FOUND extends Exception {
|
|
42
71
|
static status: number;
|
|
43
72
|
static code: string;
|
|
@@ -72,6 +101,18 @@ export declare class E_ROW_NOT_FOUND extends Exception {
|
|
|
72
101
|
export declare class E_HTTP_EXCEPTION extends Exception {
|
|
73
102
|
constructor(message: string, status: number);
|
|
74
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Thrown by `response.abort()` / `response.abortIf()` (AdonisJS parity). Carries
|
|
106
|
+
* an arbitrary body that {@link handle} renders as-is — a string verbatim,
|
|
107
|
+
* anything else as JSON.
|
|
108
|
+
*/
|
|
109
|
+
export declare class E_HTTP_REQUEST_ABORTED extends Exception {
|
|
110
|
+
static status: number;
|
|
111
|
+
static code: string;
|
|
112
|
+
readonly body: unknown;
|
|
113
|
+
constructor(body: unknown, status?: number);
|
|
114
|
+
handle(_error: this, ctx: HttpContext): void;
|
|
115
|
+
}
|
|
75
116
|
/**
|
|
76
117
|
* Global exception handler — catches all unhandled exceptions and converts
|
|
77
118
|
* them to HTTP responses.
|
|
@@ -87,12 +128,32 @@ export declare class E_HTTP_EXCEPTION extends Exception {
|
|
|
87
128
|
* 2. Else → this.handle() → content negotiation (JSON or HTML)
|
|
88
129
|
* 3. Then → this.report() → logging/monitoring
|
|
89
130
|
*/
|
|
90
|
-
|
|
131
|
+
/** Renders an HTML error page for a status (AdonisJS `StatusPageRenderer`). */
|
|
132
|
+
export type StatusPageRenderer = (error: unknown, ctx: HttpContext) => Promise<string> | string;
|
|
133
|
+
/** A constructor usable in `instanceof` for {@link ExceptionHandler.ignoreExceptions}. */
|
|
134
|
+
export type ExceptionClass = new (...args: never[]) => Error;
|
|
135
|
+
/** Reporting log level, keyed to `console` (AdonisJS levels: error/warn/info). */
|
|
136
|
+
type LogLevel = 'error' | 'warn' | 'info';
|
|
137
|
+
export declare class ExceptionHandler extends Macroable {
|
|
91
138
|
#private;
|
|
92
139
|
protected debug: boolean;
|
|
140
|
+
/** Render `statusPages` (browser HTML). Defaults to production only (AdonisJS). */
|
|
141
|
+
protected renderStatusPages: boolean;
|
|
142
|
+
/** Status → HTML renderer, keys may be single codes or `'500..599'` ranges. */
|
|
143
|
+
protected statusPages: Record<string, StatusPageRenderer>;
|
|
144
|
+
/** Master reporting switch (AdonisJS `reportErrors`). */
|
|
145
|
+
protected reportErrors: boolean;
|
|
93
146
|
protected ignoreStatuses: number[];
|
|
94
147
|
protected ignoreCodes: string[];
|
|
148
|
+
/** Exception classes never reported (AdonisJS `ignoreExceptions`). */
|
|
149
|
+
protected ignoreExceptions: ExceptionClass[];
|
|
95
150
|
constructor(debug?: boolean);
|
|
151
|
+
/** Whether debug detail is exposed for this request (AdonisJS — override per-ctx). */
|
|
152
|
+
protected isDebuggingEnabled(_ctx: HttpContext): boolean;
|
|
153
|
+
/** Log level for an error by status: 5xx→error, 4xx→warn, else info (AdonisJS). */
|
|
154
|
+
protected getErrorLogLevel(status: number): LogLevel;
|
|
155
|
+
/** Whether an error should be reported — honours every ignore list (AdonisJS `shouldReport`). */
|
|
156
|
+
protected shouldReport(error: unknown): boolean;
|
|
96
157
|
/** Convert an exception to an HTTP response. */
|
|
97
158
|
handle(error: unknown, ctx: HttpContext): Promise<void>;
|
|
98
159
|
/** Log/report an exception. Override for custom monitoring. */
|
|
@@ -100,4 +161,5 @@ export declare class ExceptionHandler {
|
|
|
100
161
|
/** Provide additional context for error reports. Override for custom data. */
|
|
101
162
|
protected context(ctx: HttpContext): Record<string, unknown>;
|
|
102
163
|
}
|
|
164
|
+
export {};
|
|
103
165
|
//# sourceMappingURL=Exception.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Exception.d.ts","sourceRoot":"","sources":["../../src/http/Exception.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"Exception.d.ts","sourceRoot":"","sources":["../../src/http/Exception.ts"],"names":[],"mappings":"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"}
|
package/dist/http/Exception.js
CHANGED
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
* - ExceptionHandler: global exception handler with content negotiation
|
|
6
6
|
* - Built-in E_* exceptions
|
|
7
7
|
*/
|
|
8
|
+
import { format } from 'node:util';
|
|
9
|
+
import { Macroable } from '../utils/Macroable.js';
|
|
8
10
|
/**
|
|
9
11
|
* Base exception class. Extend this to create self-handling exceptions.
|
|
10
12
|
*
|
|
@@ -26,8 +28,12 @@
|
|
|
26
28
|
export class Exception extends Error {
|
|
27
29
|
static status = 500;
|
|
28
30
|
static code = 'E_UNKNOWN';
|
|
31
|
+
/** Optional static remediation hint, copied onto instances (AdonisJS `Exception.help`). */
|
|
32
|
+
static help;
|
|
29
33
|
status;
|
|
30
34
|
code;
|
|
35
|
+
/** Human-readable remediation hint surfaced in debug output (AdonisJS `error.help`). */
|
|
36
|
+
help;
|
|
31
37
|
constructor(message, options) {
|
|
32
38
|
super(message);
|
|
33
39
|
this.name = this.constructor.name;
|
|
@@ -35,8 +41,36 @@ export class Exception extends Error {
|
|
|
35
41
|
const ctor = this.constructor;
|
|
36
42
|
this.status = options?.status ?? ctor.status;
|
|
37
43
|
this.code = options?.code ?? ctor.code;
|
|
44
|
+
if (ctor.help !== undefined)
|
|
45
|
+
this.help = ctor.help;
|
|
38
46
|
}
|
|
39
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Build a reusable Exception subclass in one line (AdonisJS `createError`).
|
|
50
|
+
* `message` may contain `util.format` placeholders (`%s`, `%d`) filled by the
|
|
51
|
+
* constructor args:
|
|
52
|
+
*
|
|
53
|
+
* const E_RESOURCE_MISSING = createError('Resource %s not found', 'E_RESOURCE_MISSING', 404)
|
|
54
|
+
* throw new E_RESOURCE_MISSING('user-42') // → "Resource user-42 not found"
|
|
55
|
+
*/
|
|
56
|
+
export function createError(message, code, status = 500) {
|
|
57
|
+
return class extends Exception {
|
|
58
|
+
static status = status;
|
|
59
|
+
static code = code;
|
|
60
|
+
constructor(...args) {
|
|
61
|
+
super(format(message, ...args), { status, code });
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/** A generic 500 runtime error (AdonisJS `RuntimeException`). */
|
|
66
|
+
export class RuntimeException extends Exception {
|
|
67
|
+
static status = 500;
|
|
68
|
+
static code = 'E_RUNTIME_EXCEPTION';
|
|
69
|
+
}
|
|
70
|
+
/** Raised when a function receives invalid arguments (AdonisJS `InvalidArgumentsException`). */
|
|
71
|
+
export class InvalidArgumentsException extends RuntimeException {
|
|
72
|
+
static code = 'E_INVALID_ARGUMENTS';
|
|
73
|
+
}
|
|
40
74
|
// ─── Built-in exceptions ──────────────────────────────────
|
|
41
75
|
export class E_ROUTE_NOT_FOUND extends Exception {
|
|
42
76
|
static status = 404;
|
|
@@ -103,61 +137,144 @@ export class E_HTTP_EXCEPTION extends Exception {
|
|
|
103
137
|
super(message, { status, code: 'E_HTTP_EXCEPTION' });
|
|
104
138
|
}
|
|
105
139
|
}
|
|
106
|
-
// ─── ExceptionHandler ─────────────────────────────────────
|
|
107
140
|
/**
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
* Extend this in your app:
|
|
112
|
-
* export default class Handler extends ExceptionHandler {
|
|
113
|
-
* protected debug = app.inDev
|
|
114
|
-
* protected ignoreStatuses = [400, 401, 404, 422]
|
|
115
|
-
* }
|
|
116
|
-
*
|
|
117
|
-
* Flow:
|
|
118
|
-
* 1. If exception has handle() → self-handled (bypass global)
|
|
119
|
-
* 2. Else → this.handle() → content negotiation (JSON or HTML)
|
|
120
|
-
* 3. Then → this.report() → logging/monitoring
|
|
141
|
+
* Thrown by `response.abort()` / `response.abortIf()` (AdonisJS parity). Carries
|
|
142
|
+
* an arbitrary body that {@link handle} renders as-is — a string verbatim,
|
|
143
|
+
* anything else as JSON.
|
|
121
144
|
*/
|
|
122
|
-
export class
|
|
145
|
+
export class E_HTTP_REQUEST_ABORTED extends Exception {
|
|
146
|
+
static status = 400;
|
|
147
|
+
static code = 'E_HTTP_REQUEST_ABORTED';
|
|
148
|
+
body;
|
|
149
|
+
constructor(body, status = 400) {
|
|
150
|
+
super(typeof body === 'string' ? body : 'Request aborted', {
|
|
151
|
+
status,
|
|
152
|
+
code: 'E_HTTP_REQUEST_ABORTED',
|
|
153
|
+
});
|
|
154
|
+
this.body = body;
|
|
155
|
+
}
|
|
156
|
+
handle(_error, ctx) {
|
|
157
|
+
if (typeof this.body === 'string') {
|
|
158
|
+
ctx.response.status(this.status).send(this.body);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
ctx.response.status(this.status).json(this.body);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
export class ExceptionHandler extends Macroable {
|
|
123
166
|
debug;
|
|
167
|
+
/** Render `statusPages` (browser HTML). Defaults to production only (AdonisJS). */
|
|
168
|
+
renderStatusPages = process.env.NODE_ENV === 'production';
|
|
169
|
+
/** Status → HTML renderer, keys may be single codes or `'500..599'` ranges. */
|
|
170
|
+
statusPages = {};
|
|
171
|
+
/** Master reporting switch (AdonisJS `reportErrors`). */
|
|
172
|
+
reportErrors = true;
|
|
124
173
|
ignoreStatuses = [400, 401, 404, 422];
|
|
125
174
|
ignoreCodes = [];
|
|
175
|
+
/** Exception classes never reported (AdonisJS `ignoreExceptions`). */
|
|
176
|
+
ignoreExceptions = [];
|
|
177
|
+
#expandedStatusPages;
|
|
126
178
|
constructor(debug = false) {
|
|
179
|
+
super();
|
|
127
180
|
this.debug = debug;
|
|
128
181
|
}
|
|
182
|
+
/** Whether debug detail is exposed for this request (AdonisJS — override per-ctx). */
|
|
183
|
+
isDebuggingEnabled(_ctx) {
|
|
184
|
+
return this.debug;
|
|
185
|
+
}
|
|
186
|
+
/** Log level for an error by status: 5xx→error, 4xx→warn, else info (AdonisJS). */
|
|
187
|
+
getErrorLogLevel(status) {
|
|
188
|
+
if (status >= 500)
|
|
189
|
+
return 'error';
|
|
190
|
+
if (status >= 400)
|
|
191
|
+
return 'warn';
|
|
192
|
+
return 'info';
|
|
193
|
+
}
|
|
194
|
+
/** Whether an error should be reported — honours every ignore list (AdonisJS `shouldReport`). */
|
|
195
|
+
shouldReport(error) {
|
|
196
|
+
if (!this.reportErrors)
|
|
197
|
+
return false;
|
|
198
|
+
const { status, code } = extractErrorMeta(error);
|
|
199
|
+
if (this.ignoreStatuses.includes(status))
|
|
200
|
+
return false;
|
|
201
|
+
if (this.ignoreCodes.includes(code))
|
|
202
|
+
return false;
|
|
203
|
+
if (this.ignoreExceptions.some((exception) => error instanceof exception))
|
|
204
|
+
return false;
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
/** Expand `statusPages` range keys (`'500..599'`) into a per-code lookup (cached). */
|
|
208
|
+
#expandStatusPages() {
|
|
209
|
+
if (!this.#expandedStatusPages) {
|
|
210
|
+
const expanded = {};
|
|
211
|
+
for (const range of Object.keys(this.statusPages)) {
|
|
212
|
+
Object.assign(expanded, parseStatusRange(range, this.statusPages[range]));
|
|
213
|
+
}
|
|
214
|
+
this.#expandedStatusPages = expanded;
|
|
215
|
+
}
|
|
216
|
+
return this.#expandedStatusPages;
|
|
217
|
+
}
|
|
129
218
|
/** Convert an exception to an HTTP response. */
|
|
130
219
|
async handle(error, ctx) {
|
|
131
|
-
// Self-handled
|
|
132
|
-
|
|
220
|
+
// Self-handled errors take over entirely (duck-typed, per AdonisJS — any
|
|
221
|
+
// thrown value exposing a `handle()` method, not just `Exception` instances).
|
|
222
|
+
if (isSelfHandling(error)) {
|
|
133
223
|
await error.handle(error, ctx);
|
|
134
224
|
return;
|
|
135
225
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
226
|
+
// Negotiation. DEVIATION (named): ream lists `json` FIRST, so a request
|
|
227
|
+
// with no/`*/*` Accept defaults to JSON (API-first). AdonisJS lists `html`
|
|
228
|
+
// first (full-stack default). Explicit `text/html` / `vnd.api+json` are
|
|
229
|
+
// honoured identically.
|
|
230
|
+
switch (ctx.request.accepts(['json', 'html', 'application/vnd.api+json'])) {
|
|
231
|
+
case 'application/vnd.api+json':
|
|
232
|
+
this.#sendJsonApiError(error, ctx);
|
|
233
|
+
return;
|
|
234
|
+
case 'html':
|
|
235
|
+
await this.#sendHtmlError(error, ctx);
|
|
236
|
+
return;
|
|
237
|
+
default:
|
|
238
|
+
this.#sendJsonError(error, ctx);
|
|
143
239
|
}
|
|
144
240
|
}
|
|
145
241
|
/** Pick the user-facing message — full detail only in debug mode. */
|
|
146
|
-
#errorMessage(error) {
|
|
147
|
-
if (this.
|
|
242
|
+
#errorMessage(error, ctx) {
|
|
243
|
+
if (this.isDebuggingEnabled(ctx) && error instanceof Error)
|
|
148
244
|
return error.message;
|
|
149
245
|
if (error instanceof Exception)
|
|
150
246
|
return error.message;
|
|
151
247
|
return 'An internal error occurred';
|
|
152
248
|
}
|
|
153
|
-
#sendJsonError(
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
249
|
+
#sendJsonError(error, ctx) {
|
|
250
|
+
const { status, code } = extractErrorMeta(error);
|
|
251
|
+
const payload = { code, message: this.#errorMessage(error, ctx) };
|
|
252
|
+
if (error instanceof Exception && error.help)
|
|
253
|
+
payload.help = error.help;
|
|
254
|
+
if (this.isDebuggingEnabled(ctx) && error instanceof Error && error.stack) {
|
|
255
|
+
payload.stack = error.stack;
|
|
157
256
|
}
|
|
158
|
-
ctx.response.status(status).json({ error:
|
|
257
|
+
ctx.response.status(status).json({ error: payload });
|
|
159
258
|
}
|
|
160
|
-
#
|
|
259
|
+
#sendJsonApiError(error, ctx) {
|
|
260
|
+
const { status, code } = extractErrorMeta(error);
|
|
261
|
+
ctx.response
|
|
262
|
+
.status(status)
|
|
263
|
+
.type('application/vnd.api+json')
|
|
264
|
+
.json({ errors: [{ title: this.#errorMessage(error, ctx), code, status: String(status) }] });
|
|
265
|
+
}
|
|
266
|
+
async #sendHtmlError(error, ctx) {
|
|
267
|
+
const { status } = extractErrorMeta(error);
|
|
268
|
+
// A registered status page wins (production browser error pages).
|
|
269
|
+
if (this.renderStatusPages) {
|
|
270
|
+
const renderer = this.#expandStatusPages()[status];
|
|
271
|
+
if (renderer) {
|
|
272
|
+
const html = await renderer(error, ctx);
|
|
273
|
+
ctx.response.status(status).type('text/html; charset=utf-8').send(html);
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
const message = this.#errorMessage(error, ctx);
|
|
161
278
|
ctx.response
|
|
162
279
|
.status(status)
|
|
163
280
|
.type('text/html; charset=utf-8')
|
|
@@ -166,24 +283,22 @@ export class ExceptionHandler {
|
|
|
166
283
|
}
|
|
167
284
|
/** Log/report an exception. Override for custom monitoring. */
|
|
168
285
|
async report(error, ctx) {
|
|
169
|
-
if (error
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
// Self-reported exceptions
|
|
176
|
-
if (error instanceof Exception && typeof error.report === 'function') {
|
|
286
|
+
if (!this.shouldReport(error))
|
|
287
|
+
return;
|
|
288
|
+
// Self-reported exceptions handle their own reporting.
|
|
289
|
+
if (isSelfReporting(error)) {
|
|
177
290
|
await error.report(error, ctx);
|
|
178
291
|
return;
|
|
179
292
|
}
|
|
180
|
-
// Default: log
|
|
293
|
+
// Default: log at the status-appropriate level.
|
|
294
|
+
const { status } = extractErrorMeta(error);
|
|
295
|
+
const level = this.getErrorLogLevel(status);
|
|
181
296
|
const context = this.context(ctx);
|
|
182
297
|
if (error instanceof Error) {
|
|
183
|
-
console
|
|
298
|
+
console[level](`[${new Date().toISOString()}] ${error.message}`, context, error.stack);
|
|
184
299
|
}
|
|
185
300
|
else {
|
|
186
|
-
console
|
|
301
|
+
console[level](`[${new Date().toISOString()}] Unknown error:`, error, context);
|
|
187
302
|
}
|
|
188
303
|
}
|
|
189
304
|
/** Provide additional context for error reports. Override for custom data. */
|
|
@@ -212,11 +327,33 @@ function extractErrorMeta(error) {
|
|
|
212
327
|
}
|
|
213
328
|
return { status, code };
|
|
214
329
|
}
|
|
215
|
-
/**
|
|
216
|
-
function
|
|
217
|
-
return (
|
|
218
|
-
|
|
219
|
-
|
|
330
|
+
/** True when a thrown value self-handles via a `handle()` method (AdonisJS duck-type). */
|
|
331
|
+
function isSelfHandling(error) {
|
|
332
|
+
return (error !== null &&
|
|
333
|
+
typeof error === 'object' &&
|
|
334
|
+
'handle' in error &&
|
|
335
|
+
typeof error.handle === 'function');
|
|
336
|
+
}
|
|
337
|
+
/** True when a thrown value self-reports via a `report()` method. */
|
|
338
|
+
function isSelfReporting(error) {
|
|
339
|
+
return (error !== null &&
|
|
340
|
+
typeof error === 'object' &&
|
|
341
|
+
'report' in error &&
|
|
342
|
+
typeof error.report === 'function');
|
|
343
|
+
}
|
|
344
|
+
/** Expand a status-page key into a per-code map: `'500..599'` → {500,…,599}, `'404'` → {404}. */
|
|
345
|
+
function parseStatusRange(range, renderer) {
|
|
346
|
+
const parts = range.split('..');
|
|
347
|
+
const min = Number(parts[0]);
|
|
348
|
+
const max = Number(parts[1]);
|
|
349
|
+
if (parts.length === 1 && !Number.isNaN(min))
|
|
350
|
+
return { [min]: renderer };
|
|
351
|
+
if (Number.isNaN(min) || Number.isNaN(max))
|
|
352
|
+
return {};
|
|
353
|
+
const result = {};
|
|
354
|
+
for (let status = min; status <= max; status += 1)
|
|
355
|
+
result[status] = renderer;
|
|
356
|
+
return result;
|
|
220
357
|
}
|
|
221
358
|
function escapeHtml(str) {
|
|
222
359
|
return str
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Exception.js","sourceRoot":"","sources":["../../src/http/Exception.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Exception.js","sourceRoot":"","sources":["../../src/http/Exception.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,13 +8,21 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import type { ServiceToken } from '../container/types.js';
|
|
10
10
|
import type { Emitter } from '../events/Emitter.js';
|
|
11
|
+
import type { CookieSigner } from '../security/CookieSigner.js';
|
|
12
|
+
import type { SignedUrl } from '../security/SignedUrl.js';
|
|
13
|
+
import type { Session } from '../session/Session.js';
|
|
14
|
+
import { Macroable } from '../utils/Macroable.js';
|
|
11
15
|
import type { RouteUrlResolver } from './RedirectBuilder.js';
|
|
12
16
|
import type { RawRequest } from './Request.js';
|
|
13
17
|
import { Request } from './Request.js';
|
|
14
18
|
import { Response } from './Response.js';
|
|
15
|
-
import type { Session } from '../session/Session.js';
|
|
16
19
|
export interface AuthState {
|
|
17
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Whether the request carries an authenticated user (AdonisJS `auth.isAuthenticated`
|
|
22
|
+
* parity, renamed from `authenticated`). Always present — Ream defaults it to
|
|
23
|
+
* `false`; an auth provider (e.g. `@c9up/warden`'s Authenticator) sets it true.
|
|
24
|
+
*/
|
|
25
|
+
isAuthenticated: boolean;
|
|
18
26
|
user?: {
|
|
19
27
|
id: string;
|
|
20
28
|
email?: string;
|
|
@@ -24,6 +32,21 @@ export interface AuthState {
|
|
|
24
32
|
};
|
|
25
33
|
roles?: string[];
|
|
26
34
|
permissions?: string[];
|
|
35
|
+
/**
|
|
36
|
+
* Optional AdonisJS `Authenticator` surface — present when an auth provider
|
|
37
|
+
* (Warden) fills the slot with a per-request authenticator, absent for the
|
|
38
|
+
* bare `{ isAuthenticated: false }` default. Methods are OPTIONAL so Ream stays
|
|
39
|
+
* agnostic: a non-Warden host, or the default state, remains a valid AuthState.
|
|
40
|
+
*/
|
|
41
|
+
authenticate?(): Promise<void>;
|
|
42
|
+
check?(): Promise<boolean>;
|
|
43
|
+
authenticateUsing?(guards?: string[], options?: {
|
|
44
|
+
loginRoute?: string;
|
|
45
|
+
}): Promise<void>;
|
|
46
|
+
getUserOrFail?(): AuthState['user'];
|
|
47
|
+
use?(name: string): unknown;
|
|
48
|
+
readonly authenticationAttempted?: boolean;
|
|
49
|
+
readonly authenticatedViaGuard?: string;
|
|
27
50
|
}
|
|
28
51
|
/**
|
|
29
52
|
* Per-request authorization entry point — populated by an authorization
|
|
@@ -54,9 +77,9 @@ export interface Authorizer {
|
|
|
54
77
|
* exposing it under the Adonis name with `.make()` keeps the public contract
|
|
55
78
|
* aligned so a future scoped resolver is a non-breaking swap.
|
|
56
79
|
*/
|
|
57
|
-
|
|
58
|
-
/** Resolve/construct a service by token (class, string, or symbol). */
|
|
59
|
-
make<T>(token: ServiceToken): T
|
|
80
|
+
interface ContainerResolver {
|
|
81
|
+
/** Resolve/construct a service by token (class, string, or symbol). Async (AdonisJS parity). */
|
|
82
|
+
make<T>(token: ServiceToken): Promise<T>;
|
|
60
83
|
}
|
|
61
84
|
/**
|
|
62
85
|
* Per-request logger contract (AdonisJS `ctx.logger`). Structural so Ream stays
|
|
@@ -71,6 +94,13 @@ export interface ContextLogger {
|
|
|
71
94
|
error(message: string, data?: Record<string, unknown>): void;
|
|
72
95
|
fatal(message: string, data?: Record<string, unknown>): void;
|
|
73
96
|
}
|
|
97
|
+
/** A logger that can spawn a request-scoped child (e.g. spectrum's `child()`). */
|
|
98
|
+
export interface ChildLoggerSource extends ContextLogger {
|
|
99
|
+
child?(options: {
|
|
100
|
+
correlationId?: string;
|
|
101
|
+
module?: string;
|
|
102
|
+
}): ContextLogger;
|
|
103
|
+
}
|
|
74
104
|
export interface RouteInfo {
|
|
75
105
|
pattern: string;
|
|
76
106
|
name?: string;
|
|
@@ -86,7 +116,7 @@ export interface RouteInfo {
|
|
|
86
116
|
controller?: object;
|
|
87
117
|
action?: string;
|
|
88
118
|
}
|
|
89
|
-
export declare class HttpContext {
|
|
119
|
+
export declare class HttpContext extends Macroable {
|
|
90
120
|
#private;
|
|
91
121
|
/**
|
|
92
122
|
* @internal Run `fn` with `ctx` as the ambient HttpContext, so code deep in
|
|
@@ -99,6 +129,12 @@ export declare class HttpContext {
|
|
|
99
129
|
static get(): HttpContext | undefined;
|
|
100
130
|
/** The ambient HttpContext, or throw outside a request (AdonisJS `HttpContext.getOrFail()`). */
|
|
101
131
|
static getOrFail(): HttpContext;
|
|
132
|
+
/**
|
|
133
|
+
* Run `fn` with the ambient HttpContext temporarily cleared (AdonisJS
|
|
134
|
+
* `HttpContext.runOutsideContext`) — e.g. to detach background work so it
|
|
135
|
+
* doesn't inherit and pin the request's context.
|
|
136
|
+
*/
|
|
137
|
+
static runOutsideContext<T>(fn: () => T): T;
|
|
102
138
|
/** Unique request/correlation ID. */
|
|
103
139
|
readonly id: string;
|
|
104
140
|
/** Typed HTTP request. */
|
|
@@ -147,13 +183,24 @@ export declare class HttpContext {
|
|
|
147
183
|
*/
|
|
148
184
|
readonly containerResolver?: ContainerResolver;
|
|
149
185
|
/**
|
|
150
|
-
* Per-request logger (AdonisJS `ctx.logger`)
|
|
151
|
-
*
|
|
152
|
-
*
|
|
186
|
+
* Per-request logger (AdonisJS `ctx.logger`) — the injected app logger (e.g.
|
|
187
|
+
* `@c9up/spectrum`) child-scoped to this request's `id`, or a console logger
|
|
188
|
+
* when none is registered. Built once, on first access.
|
|
153
189
|
*/
|
|
154
190
|
get logger(): ContextLogger;
|
|
191
|
+
/** @internal Inject the app base logger (resolved async by HttpKernel). */
|
|
192
|
+
setBaseLogger(logger: ChildLoggerSource): void;
|
|
193
|
+
/** @internal Inject the APP_KEY cookie signer into request + response (from HttpKernel). */
|
|
194
|
+
setCookieSigner(signer: CookieSigner): void;
|
|
195
|
+
/** @internal Inject the APP_KEY signed-URL helper into the request (from HttpKernel). */
|
|
196
|
+
setSignedUrl(signedUrl: SignedUrl): void;
|
|
197
|
+
/** Subdomains of the request host (AdonisJS `ctx.subdomains`). */
|
|
198
|
+
get subdomains(): string[];
|
|
199
|
+
/** Stable identifier for the matched route (`METHOD-pattern`) — AdonisJS `ctx.routeKey`. */
|
|
200
|
+
get routeKey(): string;
|
|
155
201
|
constructor(id: string, rawRequest: RawRequest, params: Record<string, string>, route: RouteInfo, containerResolver?: ContainerResolver);
|
|
156
202
|
/** @internal Set the route URL resolver (injected by HttpKernel from Router). */
|
|
157
203
|
setRouteUrlResolver(resolver: RouteUrlResolver): void;
|
|
158
204
|
}
|
|
205
|
+
export {};
|
|
159
206
|
//# sourceMappingURL=HttpContext.d.ts.map
|