@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.
Files changed (302) hide show
  1. package/README.md +65 -0
  2. package/dist/ConfigLoader.d.ts +46 -5
  3. package/dist/ConfigLoader.d.ts.map +1 -1
  4. package/dist/ConfigLoader.js +60 -9
  5. package/dist/ConfigLoader.js.map +1 -1
  6. package/dist/HttpKernel.d.ts.map +1 -1
  7. package/dist/HttpKernel.js +46 -6
  8. package/dist/HttpKernel.js.map +1 -1
  9. package/dist/Ignitor.d.ts +115 -7
  10. package/dist/Ignitor.d.ts.map +1 -1
  11. package/dist/Ignitor.js +254 -40
  12. package/dist/Ignitor.js.map +1 -1
  13. package/dist/console/BaseCommand.d.ts +217 -0
  14. package/dist/console/BaseCommand.d.ts.map +1 -0
  15. package/dist/console/BaseCommand.js +340 -0
  16. package/dist/console/BaseCommand.js.map +1 -0
  17. package/dist/console/Console.d.ts +86 -0
  18. package/dist/console/Console.d.ts.map +1 -0
  19. package/dist/console/Console.js +134 -0
  20. package/dist/console/Console.js.map +1 -0
  21. package/dist/console/ExceptionHandler.d.ts +28 -0
  22. package/dist/console/ExceptionHandler.d.ts.map +1 -0
  23. package/dist/console/ExceptionHandler.js +76 -0
  24. package/dist/console/ExceptionHandler.js.map +1 -0
  25. package/dist/console/HelpCommand.d.ts +16 -0
  26. package/dist/console/HelpCommand.d.ts.map +1 -0
  27. package/dist/console/HelpCommand.js +40 -0
  28. package/dist/console/HelpCommand.js.map +1 -0
  29. package/dist/console/IndexGenerator.d.ts +24 -0
  30. package/dist/console/IndexGenerator.d.ts.map +1 -0
  31. package/dist/console/IndexGenerator.js +65 -0
  32. package/dist/console/IndexGenerator.js.map +1 -0
  33. package/dist/console/Kernel.d.ts +298 -0
  34. package/dist/console/Kernel.d.ts.map +1 -0
  35. package/dist/console/Kernel.js +1120 -0
  36. package/dist/console/Kernel.js.map +1 -0
  37. package/dist/console/ListCommand.d.ts +18 -0
  38. package/dist/console/ListCommand.d.ts.map +1 -0
  39. package/dist/console/ListCommand.js +60 -0
  40. package/dist/console/ListCommand.js.map +1 -0
  41. package/dist/console/assertions.d.ts +20 -0
  42. package/dist/console/assertions.d.ts.map +1 -0
  43. package/dist/console/assertions.js +84 -0
  44. package/dist/console/assertions.js.map +1 -0
  45. package/dist/console/cliui.d.ts +248 -0
  46. package/dist/console/cliui.d.ts.map +1 -0
  47. package/dist/console/cliui.js +587 -0
  48. package/dist/console/cliui.js.map +1 -0
  49. package/dist/console/decorators.d.ts +90 -0
  50. package/dist/console/decorators.d.ts.map +1 -0
  51. package/dist/console/decorators.js +142 -0
  52. package/dist/console/decorators.js.map +1 -0
  53. package/dist/console/index.d.ts +32 -0
  54. package/dist/console/index.d.ts.map +1 -0
  55. package/dist/console/index.js +24 -0
  56. package/dist/console/index.js.map +1 -0
  57. package/dist/console/loaders.d.ts +52 -0
  58. package/dist/console/loaders.d.ts.map +1 -0
  59. package/dist/console/loaders.js +131 -0
  60. package/dist/console/loaders.js.map +1 -0
  61. package/dist/console/parser.d.ts +86 -0
  62. package/dist/console/parser.d.ts.map +1 -0
  63. package/dist/console/parser.js +440 -0
  64. package/dist/console/parser.js.map +1 -0
  65. package/dist/console/prompts.d.ts +124 -0
  66. package/dist/console/prompts.d.ts.map +1 -0
  67. package/dist/console/prompts.js +356 -0
  68. package/dist/console/prompts.js.map +1 -0
  69. package/dist/console/tracing.d.ts +17 -0
  70. package/dist/console/tracing.d.ts.map +1 -0
  71. package/dist/console/tracing.js +11 -0
  72. package/dist/console/tracing.js.map +1 -0
  73. package/dist/console/types.d.ts +255 -0
  74. package/dist/console/types.d.ts.map +1 -0
  75. package/dist/console/types.js +25 -0
  76. package/dist/console/types.js.map +1 -0
  77. package/dist/console/ui.d.ts +20 -0
  78. package/dist/console/ui.d.ts.map +1 -0
  79. package/dist/console/ui.js +31 -0
  80. package/dist/console/ui.js.map +1 -0
  81. package/dist/console/utils.d.ts +27 -0
  82. package/dist/console/utils.d.ts.map +1 -0
  83. package/dist/console/utils.js +56 -0
  84. package/dist/console/utils.js.map +1 -0
  85. package/dist/container/Container.d.ts +23 -3
  86. package/dist/container/Container.d.ts.map +1 -1
  87. package/dist/container/Container.js +177 -70
  88. package/dist/container/Container.js.map +1 -1
  89. package/dist/container/types.d.ts +14 -2
  90. package/dist/container/types.d.ts.map +1 -1
  91. package/dist/decorators/Service.d.ts +7 -0
  92. package/dist/decorators/Service.d.ts.map +1 -1
  93. package/dist/decorators/Service.js +23 -3
  94. package/dist/decorators/Service.js.map +1 -1
  95. package/dist/env/Env.d.ts +29 -4
  96. package/dist/env/Env.d.ts.map +1 -1
  97. package/dist/env/Env.js +27 -4
  98. package/dist/env/Env.js.map +1 -1
  99. package/dist/env/Secret.d.ts +11 -0
  100. package/dist/env/Secret.d.ts.map +1 -0
  101. package/dist/env/Secret.js +36 -0
  102. package/dist/env/Secret.js.map +1 -0
  103. package/dist/env/interpolate.d.ts +26 -0
  104. package/dist/env/interpolate.d.ts.map +1 -0
  105. package/dist/env/interpolate.js +48 -0
  106. package/dist/env/interpolate.js.map +1 -0
  107. package/dist/env/loadEnvFiles.d.ts.map +1 -1
  108. package/dist/env/loadEnvFiles.js +14 -4
  109. package/dist/env/loadEnvFiles.js.map +1 -1
  110. package/dist/env/schema.d.ts +23 -6
  111. package/dist/env/schema.d.ts.map +1 -1
  112. package/dist/env/schema.js +67 -33
  113. package/dist/env/schema.js.map +1 -1
  114. package/dist/errors/ReamError.d.ts +25 -0
  115. package/dist/errors/ReamError.d.ts.map +1 -1
  116. package/dist/errors/ReamError.js +5 -0
  117. package/dist/errors/ReamError.js.map +1 -1
  118. package/dist/errors/prettyPrintError.d.ts +9 -0
  119. package/dist/errors/prettyPrintError.d.ts.map +1 -0
  120. package/dist/errors/prettyPrintError.js +22 -0
  121. package/dist/errors/prettyPrintError.js.map +1 -0
  122. package/dist/events/Emitter.d.ts +1 -1
  123. package/dist/events/Emitter.d.ts.map +1 -1
  124. package/dist/events/Emitter.js +1 -1
  125. package/dist/events/Emitter.js.map +1 -1
  126. package/dist/events/EventsProvider.d.ts +2 -2
  127. package/dist/events/EventsProvider.d.ts.map +1 -1
  128. package/dist/events/EventsProvider.js +3 -3
  129. package/dist/events/EventsProvider.js.map +1 -1
  130. package/dist/graphql/GraphQLEngine.d.ts +1 -1
  131. package/dist/graphql/GraphQLEngine.d.ts.map +1 -1
  132. package/dist/graphql/GraphQLEngine.js +2 -2
  133. package/dist/graphql/GraphQLEngine.js.map +1 -1
  134. package/dist/graphql/GraphQLProvider.d.ts.map +1 -1
  135. package/dist/graphql/GraphQLProvider.js +7 -3
  136. package/dist/graphql/GraphQLProvider.js.map +1 -1
  137. package/dist/http/Exception.d.ts +63 -1
  138. package/dist/http/Exception.d.ts.map +1 -1
  139. package/dist/http/Exception.js +185 -48
  140. package/dist/http/Exception.js.map +1 -1
  141. package/dist/http/HttpContext.d.ts +53 -7
  142. package/dist/http/HttpContext.d.ts.map +1 -1
  143. package/dist/http/HttpContext.js +56 -15
  144. package/dist/http/HttpContext.js.map +1 -1
  145. package/dist/http/RedirectBuilder.d.ts.map +1 -1
  146. package/dist/http/RedirectBuilder.js +4 -1
  147. package/dist/http/RedirectBuilder.js.map +1 -1
  148. package/dist/http/Request.d.ts +141 -10
  149. package/dist/http/Request.d.ts.map +1 -1
  150. package/dist/http/Request.js +244 -34
  151. package/dist/http/Request.js.map +1 -1
  152. package/dist/http/Response.d.ts +176 -9
  153. package/dist/http/Response.d.ts.map +1 -1
  154. package/dist/http/Response.js +404 -16
  155. package/dist/http/Response.js.map +1 -1
  156. package/dist/index.d.ts +19 -8
  157. package/dist/index.d.ts.map +1 -1
  158. package/dist/index.js +20 -5
  159. package/dist/index.js.map +1 -1
  160. package/dist/middleware/Pipeline.d.ts +29 -8
  161. package/dist/middleware/Pipeline.d.ts.map +1 -1
  162. package/dist/middleware/Pipeline.js +40 -2
  163. package/dist/middleware/Pipeline.js.map +1 -1
  164. package/dist/openapi/OpenApiProvider.js +4 -4
  165. package/dist/openapi/OpenApiProvider.js.map +1 -1
  166. package/dist/router/Router.d.ts +223 -31
  167. package/dist/router/Router.d.ts.map +1 -1
  168. package/dist/router/Router.js +520 -102
  169. package/dist/router/Router.js.map +1 -1
  170. package/dist/rpc/RpcProvider.d.ts +1 -0
  171. package/dist/rpc/RpcProvider.d.ts.map +1 -1
  172. package/dist/rpc/RpcProvider.js +7 -3
  173. package/dist/rpc/RpcProvider.js.map +1 -1
  174. package/dist/rpc/RpcRouter.d.ts +2 -2
  175. package/dist/rpc/RpcRouter.d.ts.map +1 -1
  176. package/dist/rpc/RpcRouter.js +17 -5
  177. package/dist/rpc/RpcRouter.js.map +1 -1
  178. package/dist/scheduler/ScheduleProvider.d.ts.map +1 -1
  179. package/dist/scheduler/ScheduleProvider.js +7 -15
  180. package/dist/scheduler/ScheduleProvider.js.map +1 -1
  181. package/dist/server/Server.d.ts +17 -4
  182. package/dist/server/Server.d.ts.map +1 -1
  183. package/dist/server/Server.js +41 -7
  184. package/dist/server/Server.js.map +1 -1
  185. package/dist/services/app.d.ts +1 -1
  186. package/dist/services/app.js +1 -1
  187. package/dist/services/console.d.ts +21 -0
  188. package/dist/services/console.d.ts.map +1 -0
  189. package/dist/services/console.js +35 -0
  190. package/dist/services/console.js.map +1 -0
  191. package/dist/session/SessionMiddleware.js +3 -3
  192. package/dist/session/SessionMiddleware.js.map +1 -1
  193. package/dist/storage/StaticProvider.js +1 -1
  194. package/dist/storage/StaticProvider.js.map +1 -1
  195. package/dist/testing/ApiResponse.d.ts +218 -0
  196. package/dist/testing/ApiResponse.d.ts.map +1 -0
  197. package/dist/testing/ApiResponse.js +576 -0
  198. package/dist/testing/ApiResponse.js.map +1 -0
  199. package/dist/testing/RequestBuilder.d.ts +155 -35
  200. package/dist/testing/RequestBuilder.d.ts.map +1 -1
  201. package/dist/testing/RequestBuilder.js +455 -109
  202. package/dist/testing/RequestBuilder.js.map +1 -1
  203. package/dist/testing/TestClient.d.ts +53 -37
  204. package/dist/testing/TestClient.d.ts.map +1 -1
  205. package/dist/testing/TestClient.js +84 -52
  206. package/dist/testing/TestClient.js.map +1 -1
  207. package/dist/utils/Macroable.d.ts +30 -0
  208. package/dist/utils/Macroable.d.ts.map +1 -0
  209. package/dist/utils/Macroable.js +43 -0
  210. package/dist/utils/Macroable.js.map +1 -0
  211. package/dist/utils/inflect.d.ts +17 -0
  212. package/dist/utils/inflect.d.ts.map +1 -0
  213. package/dist/utils/inflect.js +32 -0
  214. package/dist/utils/inflect.js.map +1 -0
  215. package/dist/utils/objectPath.d.ts +57 -0
  216. package/dist/utils/objectPath.d.ts.map +1 -0
  217. package/dist/utils/objectPath.js +141 -0
  218. package/dist/utils/objectPath.js.map +1 -0
  219. package/events.darwin-arm64.node +0 -0
  220. package/events.darwin-x64.node +0 -0
  221. package/events.linux-arm64-gnu.node +0 -0
  222. package/events.linux-x64-gnu.node +0 -0
  223. package/events.win32-x64-msvc.node +0 -0
  224. package/index.darwin-arm64.node +0 -0
  225. package/index.darwin-x64.node +0 -0
  226. package/index.linux-arm64-gnu.node +0 -0
  227. package/index.linux-x64-gnu.node +0 -0
  228. package/index.win32-x64-msvc.node +0 -0
  229. package/package.json +20 -2
  230. package/scheduler.darwin-arm64.node +0 -0
  231. package/scheduler.darwin-x64.node +0 -0
  232. package/scheduler.linux-arm64-gnu.node +0 -0
  233. package/scheduler.linux-x64-gnu.node +0 -0
  234. package/scheduler.win32-x64-msvc.node +0 -0
  235. package/src/ConfigLoader.ts +72 -9
  236. package/src/HttpKernel.ts +53 -15
  237. package/src/Ignitor.ts +364 -45
  238. package/src/console/BaseCommand.ts +467 -0
  239. package/src/console/Console.ts +174 -0
  240. package/src/console/ExceptionHandler.ts +91 -0
  241. package/src/console/HelpCommand.ts +37 -0
  242. package/src/console/IndexGenerator.ts +79 -0
  243. package/src/console/Kernel.ts +1382 -0
  244. package/src/console/ListCommand.ts +55 -0
  245. package/src/console/assertions.ts +114 -0
  246. package/src/console/cliui.ts +756 -0
  247. package/src/console/decorators.ts +199 -0
  248. package/src/console/index.ts +67 -0
  249. package/src/console/loaders.ts +145 -0
  250. package/src/console/parser.ts +598 -0
  251. package/src/console/prompts.ts +548 -0
  252. package/src/console/tracing.ts +22 -0
  253. package/src/console/types.ts +280 -0
  254. package/src/console/ui.ts +37 -0
  255. package/src/console/utils.ts +69 -0
  256. package/src/container/Container.ts +198 -72
  257. package/src/container/types.ts +15 -2
  258. package/src/decorators/Service.ts +28 -3
  259. package/src/env/Env.ts +49 -5
  260. package/src/env/Secret.ts +41 -0
  261. package/src/env/interpolate.ts +54 -0
  262. package/src/env/loadEnvFiles.ts +12 -4
  263. package/src/env/schema.ts +109 -35
  264. package/src/errors/ReamError.ts +31 -0
  265. package/src/errors/prettyPrintError.ts +20 -0
  266. package/src/events/Emitter.ts +2 -2
  267. package/src/events/EventsProvider.ts +5 -5
  268. package/src/graphql/GraphQLEngine.ts +4 -4
  269. package/src/graphql/GraphQLProvider.ts +7 -3
  270. package/src/http/Exception.ts +214 -37
  271. package/src/http/HttpContext.ts +87 -18
  272. package/src/http/RedirectBuilder.ts +4 -1
  273. package/src/http/Request.ts +264 -34
  274. package/src/http/Response.ts +478 -27
  275. package/src/index.ts +41 -6
  276. package/src/middleware/Pipeline.ts +77 -6
  277. package/src/openapi/OpenApiProvider.ts +4 -4
  278. package/src/router/Router.ts +631 -113
  279. package/src/rpc/RpcProvider.ts +6 -2
  280. package/src/rpc/RpcRouter.ts +22 -7
  281. package/src/scheduler/ScheduleProvider.ts +7 -15
  282. package/src/server/Server.ts +49 -10
  283. package/src/services/app.ts +1 -1
  284. package/src/services/console.ts +42 -0
  285. package/src/session/SessionMiddleware.ts +4 -4
  286. package/src/storage/StaticProvider.ts +1 -1
  287. package/src/testing/ApiResponse.ts +691 -0
  288. package/src/testing/RequestBuilder.ts +577 -137
  289. package/src/testing/TestClient.ts +110 -77
  290. package/src/utils/Macroable.ts +54 -0
  291. package/src/utils/inflect.ts +29 -0
  292. package/src/utils/objectPath.ts +142 -0
  293. package/dist/console/CommandRunner.d.ts +0 -18
  294. package/dist/console/CommandRunner.d.ts.map +0 -1
  295. package/dist/console/CommandRunner.js +0 -65
  296. package/dist/console/CommandRunner.js.map +0 -1
  297. package/dist/decorators/Lazy.d.ts +0 -19
  298. package/dist/decorators/Lazy.d.ts.map +0 -1
  299. package/dist/decorators/Lazy.js +0 -53
  300. package/dist/decorators/Lazy.js.map +0 -1
  301. package/src/console/CommandRunner.ts +0 -82
  302. package/src/decorators/Lazy.ts +0 -57
@@ -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
- * Global exception handler — catches all unhandled exceptions and converts
109
- * them to HTTP responses.
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 ExceptionHandler {
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 exceptions take over entirely.
132
- if (error instanceof Exception && typeof error.handle === 'function') {
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
- const { status, code } = extractErrorMeta(error);
137
- const message = this.#errorMessage(error);
138
- if (wantsJson(ctx)) {
139
- this.#sendJsonError(ctx, status, code, message, error);
140
- }
141
- else {
142
- this.#sendHtmlError(ctx, status, message);
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.debug && error instanceof Error)
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(ctx, status, code, message, error) {
154
- const errorPayload = { code, message };
155
- if (this.debug && error instanceof Error && error.stack) {
156
- errorPayload.stack = error.stack;
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: errorPayload });
257
+ ctx.response.status(status).json({ error: payload });
159
258
  }
160
- #sendHtmlError(ctx, status, message) {
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 instanceof Exception) {
170
- if (this.ignoreStatuses.includes(error.status))
171
- return;
172
- if (this.ignoreCodes.includes(error.code))
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 to stderr
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.error(`[${new Date().toISOString()}] ${error.message}`, context, error.stack);
298
+ console[level](`[${new Date().toISOString()}] ${error.message}`, context, error.stack);
184
299
  }
185
300
  else {
186
- console.error(`[${new Date().toISOString()}] Unknown error:`, error, context);
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
- /** Content negotiation: JSON unless the client explicitly prefers HTML. */
216
- function wantsJson(ctx) {
217
- return (ctx.request.accepts(['json', 'html']) === 'json' ||
218
- (ctx.request.header('accept')?.includes('application/json') ?? false) ||
219
- !ctx.request.header('accept')?.includes('text/html'));
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';
11
13
  import type { Session } from '../session/Session.js';
14
+ import { Macroable } from '../utils/Macroable.js';
12
15
  import type { RouteUrlResolver } from './RedirectBuilder.js';
13
16
  import type { RawRequest } from './Request.js';
14
17
  import { Request } from './Request.js';
15
18
  import { Response } from './Response.js';
16
19
  export interface AuthState {
17
- authenticated: boolean;
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
@@ -55,8 +78,8 @@ export interface Authorizer {
55
78
  * aligned so a future scoped resolver is a non-breaking swap.
56
79
  */
57
80
  interface ContainerResolver {
58
- /** Resolve/construct a service by token (class, string, or symbol). */
59
- make<T>(token: ServiceToken): T;
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,11 +183,21 @@ export declare class HttpContext {
147
183
  */
148
184
  readonly containerResolver?: ContainerResolver;
149
185
  /**
150
- * Per-request logger (AdonisJS `ctx.logger`). Resolves the container `'logger'`
151
- * (e.g. `@c9up/spectrum`) child-scoped to this request's `id`, or falls back to
152
- * a console logger when none is registered. Built once, on first access.
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;
@@ -1 +1 @@
1
- {"version":3,"file":"HttpContext.d.ts","sourceRoot":"","sources":["../../src/http/HttpContext.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,OAAO,CAAA;IACtB,IAAI,CAAC,EAAE;QACL,EAAE,EAAE,MAAM,CAAA;QACV,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;QAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;QACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,CAAA;IACD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CACvB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,iEAAiE;IACjE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7D,kEAAkE;IAClE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7D,+EAA+E;IAC/E,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9D;AAED;;;;;;;;;;;;GAYG;AAKH,UAAU,iBAAiB;IACzB,uEAAuE;IACvE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,CAAC,CAAA;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC3D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAC7D;AAsCD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAKD,qBAAa,WAAW;;IACtB;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAI/C,gGAAgG;IAChG,MAAM,CAAC,GAAG,IAAI,WAAW,GAAG,SAAS;IAIrC,gGAAgG;IAChG,MAAM,CAAC,SAAS,IAAI,WAAW;IAU/B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IAEnB,0BAA0B;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IAEzB,mCAAmC;IACnC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAE3B,uDAAuD;IACvD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEvC,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IAEzB,2DAA2D;IAC3D,IAAI,EAAE,SAAS,CAA2B;IAE1C;;;;OAIG;IACH,MAAM,SAAO;IAEb,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAY;IAEhD;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAEhB;;;;OAIG;IACH,OAAO,CAAC,EAAE,UAAU,CAAA;IAEpB;;;;;;OAMG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IAQ9C;;;;OAIG;IACH,IAAI,MAAM,IAAI,aAAa,CAK1B;gBAGC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,KAAK,EAAE,SAAS,EAChB,iBAAiB,CAAC,EAAE,iBAAiB;IAqBvC,iFAAiF;IACjF,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;CAGtD"}
1
+ {"version":3,"file":"HttpContext.d.ts","sourceRoot":"","sources":["../../src/http/HttpContext.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@
7
7
  * @implements FR21
8
8
  */
9
9
  import { AsyncLocalStorage } from 'node:async_hooks';
10
+ import { Macroable } from '../utils/Macroable.js';
10
11
  import { RedirectBuilder } from './RedirectBuilder.js';
11
12
  import { Request } from './Request.js';
12
13
  import { Response } from './Response.js';
@@ -25,22 +26,20 @@ function consoleLogger(correlationId) {
25
26
  fatal: (m, d) => write('fatal', m, d),
26
27
  };
27
28
  }
28
- /** Resolve a request-scoped logger from the container, or fall back to console. */
29
- function resolveRequestLogger(resolver, correlationId) {
30
- let base;
31
- try {
32
- base = resolver?.make('logger');
33
- }
34
- catch {
35
- base = undefined;
36
- }
29
+ /**
30
+ * Build a request-scoped logger from the app's base logger, or fall back to
31
+ * console. The base logger is resolved (async) once by HttpKernel and injected
32
+ * via {@link HttpContext.setBaseLogger}; child-scoping here stays synchronous
33
+ * so `ctx.logger` remains a plain getter.
34
+ */
35
+ function resolveRequestLogger(base, correlationId) {
37
36
  if (!base)
38
37
  return consoleLogger(correlationId);
39
38
  return typeof base.child === 'function' ? base.child({ correlationId }) : base;
40
39
  }
41
40
  /** Ambient per-request context store (AdonisJS `HttpContext` ALS accessor). */
42
41
  const httpContextStorage = new AsyncLocalStorage();
43
- export class HttpContext {
42
+ export class HttpContext extends Macroable {
44
43
  /**
45
44
  * @internal Run `fn` with `ctx` as the ambient HttpContext, so code deep in
46
45
  * the call stack can reach it via {@link HttpContext.get}/{@link getOrFail}
@@ -62,6 +61,14 @@ export class HttpContext {
62
61
  }
63
62
  return ctx;
64
63
  }
64
+ /**
65
+ * Run `fn` with the ambient HttpContext temporarily cleared (AdonisJS
66
+ * `HttpContext.runOutsideContext`) — e.g. to detach background work so it
67
+ * doesn't inherit and pin the request's context.
68
+ */
69
+ static runOutsideContext(fn) {
70
+ return httpContextStorage.exit(fn);
71
+ }
65
72
  /** Unique request/correlation ID. */
66
73
  id;
67
74
  /** Typed HTTP request. */
@@ -73,7 +80,7 @@ export class HttpContext {
73
80
  /** Information about the matched route. */
74
81
  route;
75
82
  /** Authentication state — populated by auth middleware. */
76
- auth = { authenticated: false };
83
+ auth = { isAuthenticated: false };
77
84
  /**
78
85
  * Request locale — the primary subtag of the first `Accept-Language` entry
79
86
  * (e.g. `fr-CH,fr;q=0.9` → `fr`), defaulting to `en`. Middleware (or i18n)
@@ -111,26 +118,60 @@ export class HttpContext {
111
118
  containerResolver;
112
119
  /** Lazily-built per-request logger (see {@link logger}). */
113
120
  #logger;
121
+ /** App base logger, resolved once (async) by HttpKernel and injected. */
122
+ #baseLogger;
114
123
  /** Route URL resolver for redirect().toRoute(). */
115
124
  #routeUrlResolver;
116
125
  /**
117
- * Per-request logger (AdonisJS `ctx.logger`). Resolves the container `'logger'`
118
- * (e.g. `@c9up/spectrum`) child-scoped to this request's `id`, or falls back to
119
- * a console logger when none is registered. Built once, on first access.
126
+ * Per-request logger (AdonisJS `ctx.logger`) — the injected app logger (e.g.
127
+ * `@c9up/spectrum`) child-scoped to this request's `id`, or a console logger
128
+ * when none is registered. Built once, on first access.
120
129
  */
121
130
  get logger() {
122
131
  if (!this.#logger) {
123
- this.#logger = resolveRequestLogger(this.containerResolver, this.id);
132
+ this.#logger = resolveRequestLogger(this.#baseLogger, this.id);
124
133
  }
125
134
  return this.#logger;
126
135
  }
136
+ /** @internal Inject the app base logger (resolved async by HttpKernel). */
137
+ setBaseLogger(logger) {
138
+ this.#baseLogger = logger;
139
+ }
140
+ /** @internal Inject the APP_KEY cookie signer into request + response (from HttpKernel). */
141
+ setCookieSigner(signer) {
142
+ this.response.setCookieSigner(signer);
143
+ this.request.setCookieSigner(signer);
144
+ }
145
+ /** @internal Inject the APP_KEY signed-URL helper into the request (from HttpKernel). */
146
+ setSignedUrl(signedUrl) {
147
+ this.request.setSignedUrl(signedUrl);
148
+ }
149
+ /** Subdomains of the request host (AdonisJS `ctx.subdomains`). */
150
+ get subdomains() {
151
+ return this.request.subdomains();
152
+ }
153
+ /** Stable identifier for the matched route (`METHOD-pattern`) — AdonisJS `ctx.routeKey`. */
154
+ get routeKey() {
155
+ return `${this.request.method()}-${this.route.pattern}`;
156
+ }
127
157
  constructor(id, rawRequest, params, route, containerResolver) {
158
+ super();
128
159
  this.id = id;
129
160
  this.params = params;
130
161
  this.route = route;
131
162
  this.containerResolver = containerResolver;
132
163
  this.request = new Request(rawRequest, params);
133
164
  this.response = new Response();
165
+ // Give the response read access to the request (AdonisJS wires them too) —
166
+ // needed by `response.fresh()` for conditional-GET / ETag revalidation.
167
+ this.response.setRequest(this.request);
168
+ // And the reverse, so `request.fresh()`/`stale()` delegate to it, plus the
169
+ // matched-route info for `request.matchesRoute()`.
170
+ this.request.setResponse(this.response);
171
+ this.request.setRouteInfo({ name: route.name, pattern: route.pattern });
172
+ // APP_KEY-backed encryption / signed-URL services + the base logger are
173
+ // resolved asynchronously by HttpKernel and injected via the setters above
174
+ // (the container is async now, so a constructor can't resolve them itself).
134
175
  this.locale = parseAcceptLanguage(this.request.header('accept-language')) ?? 'en';
135
176
  // Wire redirect builder with request context
136
177
  this.response.setRedirectFactory(() => new RedirectBuilder(this.response, {
@@ -1 +1 @@
1
- {"version":3,"file":"HttpContext.js","sourceRoot":"","sources":["../../src/http/HttpContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HttpContext.js","sourceRoot":"","sources":["../../src/http/HttpContext.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RedirectBuilder.d.ts","sourceRoot":"","sources":["../../src/http/RedirectBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CAAA;AAcxF,qBAAa,eAAe;;gBAUxB,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;KACpC;IAQH,gCAAgC;IAChC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK1B,2DAA2D;IAC3D,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IASzC,gDAAgD;IAChD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO1B,iCAAiC;IACjC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAQ5D;;;;OAIG;IACH,IAAI,CAAC,QAAQ,SAAM,GAAG,IAAI;CAoB3B"}
1
+ {"version":3,"file":"RedirectBuilder.d.ts","sourceRoot":"","sources":["../../src/http/RedirectBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CAAA;AAiBxF,qBAAa,eAAe;;gBAUxB,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;KACpC;IAQH,gCAAgC;IAChC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK1B,2DAA2D;IAC3D,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IASzC,gDAAgD;IAChD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO1B,iCAAiC;IACjC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAQ5D;;;;OAIG;IACH,IAAI,CAAC,QAAQ,SAAM,GAAG,IAAI;CAoB3B"}