stratal 0.0.6 → 0.0.7

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 (96) hide show
  1. package/dist/application.d.ts +10 -42
  2. package/dist/application.d.ts.map +1 -1
  3. package/dist/application.js +36 -77
  4. package/dist/application.js.map +1 -1
  5. package/dist/config/config.module.d.ts.map +1 -1
  6. package/dist/config/config.module.js +2 -1
  7. package/dist/config/config.module.js.map +1 -1
  8. package/dist/config/errors/config-module-not-initialized.error.d.ts +10 -0
  9. package/dist/config/errors/config-module-not-initialized.error.d.ts.map +1 -0
  10. package/dist/config/errors/config-module-not-initialized.error.js +12 -0
  11. package/dist/config/errors/config-module-not-initialized.error.js.map +1 -0
  12. package/dist/config/errors/index.d.ts +1 -0
  13. package/dist/config/errors/index.d.ts.map +1 -1
  14. package/dist/config/errors/index.js +1 -0
  15. package/dist/config/errors/index.js.map +1 -1
  16. package/dist/di/container.d.ts +5 -267
  17. package/dist/di/container.d.ts.map +1 -1
  18. package/dist/di/container.js +13 -288
  19. package/dist/di/container.js.map +1 -1
  20. package/dist/di/errors/request-scope-operation-not-allowed.error.d.ts +0 -1
  21. package/dist/di/errors/request-scope-operation-not-allowed.error.d.ts.map +1 -1
  22. package/dist/di/errors/request-scope-operation-not-allowed.error.js +0 -1
  23. package/dist/di/errors/request-scope-operation-not-allowed.error.js.map +1 -1
  24. package/dist/di/index.d.ts +0 -1
  25. package/dist/di/index.d.ts.map +1 -1
  26. package/dist/di/index.js +0 -1
  27. package/dist/di/index.js.map +1 -1
  28. package/dist/errors/error-codes.d.ts +2 -0
  29. package/dist/errors/error-codes.d.ts.map +1 -1
  30. package/dist/errors/error-codes.js +2 -0
  31. package/dist/errors/error-codes.js.map +1 -1
  32. package/dist/events/types.d.ts +1 -1
  33. package/dist/execution-context.d.ts +4 -0
  34. package/dist/execution-context.d.ts.map +1 -0
  35. package/dist/execution-context.js +2 -0
  36. package/dist/execution-context.js.map +1 -0
  37. package/dist/i18n/messages/en/errors.d.ts +2 -2
  38. package/dist/i18n/messages/en/errors.js +2 -2
  39. package/dist/i18n/messages/en/errors.js.map +1 -1
  40. package/dist/index.d.ts +1 -0
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +1 -0
  43. package/dist/index.js.map +1 -1
  44. package/dist/logger/services/logger.service.d.ts +2 -15
  45. package/dist/logger/services/logger.service.d.ts.map +1 -1
  46. package/dist/logger/services/logger.service.js +11 -16
  47. package/dist/logger/services/logger.service.js.map +1 -1
  48. package/dist/router/errors/hono-app-already-configured.error.d.ts +10 -0
  49. package/dist/router/errors/hono-app-already-configured.error.d.ts.map +1 -0
  50. package/dist/router/errors/hono-app-already-configured.error.js +12 -0
  51. package/dist/router/errors/hono-app-already-configured.error.js.map +1 -0
  52. package/dist/router/errors/index.d.ts +1 -2
  53. package/dist/router/errors/index.d.ts.map +1 -1
  54. package/dist/router/errors/index.js +1 -2
  55. package/dist/router/errors/index.js.map +1 -1
  56. package/dist/router/hono-app.d.ts +38 -0
  57. package/dist/router/hono-app.d.ts.map +1 -0
  58. package/dist/router/hono-app.js +128 -0
  59. package/dist/router/hono-app.js.map +1 -0
  60. package/dist/router/index.d.ts +3 -3
  61. package/dist/router/index.d.ts.map +1 -1
  62. package/dist/router/index.js +6 -4
  63. package/dist/router/index.js.map +1 -1
  64. package/dist/router/router.tokens.d.ts +0 -28
  65. package/dist/router/router.tokens.d.ts.map +1 -1
  66. package/dist/router/router.tokens.js +0 -28
  67. package/dist/router/router.tokens.js.map +1 -1
  68. package/dist/router/services/index.d.ts +0 -1
  69. package/dist/router/services/index.d.ts.map +1 -1
  70. package/dist/router/services/index.js +0 -1
  71. package/dist/router/services/index.js.map +1 -1
  72. package/dist/stratal.d.ts +9 -26
  73. package/dist/stratal.d.ts.map +1 -1
  74. package/dist/stratal.js +22 -50
  75. package/dist/stratal.js.map +1 -1
  76. package/package.json +8 -8
  77. package/dist/di/request-context-store.d.ts +0 -122
  78. package/dist/di/request-context-store.d.ts.map +0 -1
  79. package/dist/di/request-context-store.js +0 -135
  80. package/dist/di/request-context-store.js.map +0 -1
  81. package/dist/router/errors/router-already-configured.error.d.ts +0 -5
  82. package/dist/router/errors/router-already-configured.error.d.ts.map +0 -1
  83. package/dist/router/errors/router-already-configured.error.js +0 -8
  84. package/dist/router/errors/router-already-configured.error.js.map +0 -1
  85. package/dist/router/errors/router-not-configured.error.d.ts +0 -5
  86. package/dist/router/errors/router-not-configured.error.d.ts.map +0 -1
  87. package/dist/router/errors/router-not-configured.error.js +0 -8
  88. package/dist/router/errors/router-not-configured.error.js.map +0 -1
  89. package/dist/router/router.service.d.ts +0 -62
  90. package/dist/router/router.service.d.ts.map +0 -1
  91. package/dist/router/router.service.js +0 -166
  92. package/dist/router/router.service.js.map +0 -1
  93. package/dist/router/services/request-scope.service.d.ts +0 -42
  94. package/dist/router/services/request-scope.service.d.ts.map +0 -1
  95. package/dist/router/services/request-scope.service.js +0 -76
  96. package/dist/router/services/request-scope.service.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,OAAO,CAAA;AACrB,cAAc,qBAAqB,CAAA;AACnC,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './application';
2
2
  export * from './env';
3
+ export * from './execution-context';
3
4
  export * from './types';
4
5
  export { Stratal } from './stratal';
5
6
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,OAAO,CAAA;AACrB,cAAc,qBAAqB,CAAA;AACnC,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA"}
@@ -5,23 +5,18 @@ import type { ILogTransport } from '../transports/transport.interface';
5
5
  /**
6
6
  * Logger Service
7
7
  *
8
- * Main logging facade with optional request context enrichment.
9
- * Singleton service that can be enriched with request context via `withContext()`.
8
+ * Main logging facade.
10
9
  *
11
10
  * **Features:**
12
- * - Optional request context enrichment (userId) via `withContext()`
13
11
  * - Async logging via ctx.waitUntil() for non-blocking performance
14
12
  * - Multi-transport support (console, future Sentry/Cloudflare Analytics)
15
13
  * - Configurable formatters (JSON production, Pretty development)
16
14
  * - Log level filtering based on environment
17
15
  *
18
16
  * **Architecture:**
19
- * - Singleton service (available during initialization and request handling)
20
- * - RouterContext optionally set via `withContext()` method
21
- * - Uses ConfigService for all configuration (NEVER process.env)
22
17
  * - Transports and formatters injected via DI
23
18
  *
24
- * @example Basic usage (no request context)
19
+ * @example Basic usage
25
20
  * ```typescript
26
21
  * @Transient()
27
22
  * export class UserService {
@@ -35,14 +30,6 @@ import type { ILogTransport } from '../transports/transport.interface';
35
30
  * }
36
31
  * }
37
32
  * ```
38
- *
39
- * @example With request context (in request container)
40
- * ```typescript
41
- * // In RequestScopeService
42
- * const baseLogger = globalContainer.resolve<LoggerService>(LOGGER_TOKENS.LoggerService)
43
- * const requestLogger = baseLogger.withContext(routerContext)
44
- * requestContainer.register(LOGGER_TOKENS.LoggerService, { useValue: requestLogger })
45
- * ```
46
33
  */
47
34
  export declare class LoggerService {
48
35
  private readonly logLevel;
@@ -1 +1 @@
1
- {"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../src/logger/services/logger.service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAsB,UAAU,EAAY,MAAM,cAAc,CAAA;AAC5E,OAAO,EAAsB,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AAEtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,qBACa,aAAa;IAGtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAGzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAGjC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAG1B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBATV,QAAQ,EAAE,QAAQ,EAGlB,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,EAG7C,SAAS,EAAE,aAAa,EAGxB,UAAU,EAAE,aAAa,EAAE;IAG9C;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIlD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIjD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIjD;;;OAGG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,IAAI;IAajE;;;;OAIG;IACH,OAAO,CAAC,GAAG;IAkCX;;;OAGG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,cAAc;CAOvB"}
1
+ {"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../src/logger/services/logger.service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAsB,UAAU,EAAY,MAAM,cAAc,CAAA;AAC5E,OAAO,EAAsB,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AAEtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBACa,aAAa;IAGtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAGzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAGjC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAG1B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBATV,QAAQ,EAAE,QAAQ,EAGlB,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,EAG7C,SAAS,EAAE,aAAa,EAGxB,UAAU,EAAE,aAAa,EAAE;IAG9C;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIlD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIjD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIjD;;;OAGG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,IAAI;IAajE;;;;OAIG;IACH,OAAO,CAAC,GAAG;IAyCX;;;OAGG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,cAAc;CAOvB"}
@@ -18,23 +18,18 @@ import { LOGGER_TOKENS } from '../logger.tokens';
18
18
  /**
19
19
  * Logger Service
20
20
  *
21
- * Main logging facade with optional request context enrichment.
22
- * Singleton service that can be enriched with request context via `withContext()`.
21
+ * Main logging facade.
23
22
  *
24
23
  * **Features:**
25
- * - Optional request context enrichment (userId) via `withContext()`
26
24
  * - Async logging via ctx.waitUntil() for non-blocking performance
27
25
  * - Multi-transport support (console, future Sentry/Cloudflare Analytics)
28
26
  * - Configurable formatters (JSON production, Pretty development)
29
27
  * - Log level filtering based on environment
30
28
  *
31
29
  * **Architecture:**
32
- * - Singleton service (available during initialization and request handling)
33
- * - RouterContext optionally set via `withContext()` method
34
- * - Uses ConfigService for all configuration (NEVER process.env)
35
30
  * - Transports and formatters injected via DI
36
31
  *
37
- * @example Basic usage (no request context)
32
+ * @example Basic usage
38
33
  * ```typescript
39
34
  * @Transient()
40
35
  * export class UserService {
@@ -48,14 +43,6 @@ import { LOGGER_TOKENS } from '../logger.tokens';
48
43
  * }
49
44
  * }
50
45
  * ```
51
- *
52
- * @example With request context (in request container)
53
- * ```typescript
54
- * // In RequestScopeService
55
- * const baseLogger = globalContainer.resolve<LoggerService>(LOGGER_TOKENS.LoggerService)
56
- * const requestLogger = baseLogger.withContext(routerContext)
57
- * requestContainer.register(LOGGER_TOKENS.LoggerService, { useValue: requestLogger })
58
- * ```
59
46
  */
60
47
  let LoggerService = class LoggerService {
61
48
  logLevel;
@@ -126,7 +113,15 @@ let LoggerService = class LoggerService {
126
113
  console.error(`Transport ${transport.name} failed:`, err);
127
114
  }));
128
115
  // Use waitUntil to ensure logs complete even after response sent
129
- this.executionContext.waitUntil(Promise.all(writePromises));
116
+ const allWrites = Promise.all(writePromises);
117
+ try {
118
+ this.executionContext.waitUntil(allWrites);
119
+ }
120
+ catch (error) {
121
+ if (!(error instanceof Error) || !error.message.includes('global scope')) {
122
+ throw error;
123
+ }
124
+ }
130
125
  }
131
126
  /**
132
127
  * Enrich log context with request info and timestamp
@@ -1 +1 @@
1
- {"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../../src/logger/services/logger.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../../src/logger/services/logger.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { ApplicationError } from '../../errors';
2
+ /**
3
+ * Error thrown when HonoApp.configure() is called more than once.
4
+ *
5
+ * HonoApp can only be configured a single time during application bootstrap.
6
+ */
7
+ export declare class HonoAppAlreadyConfiguredError extends ApplicationError {
8
+ constructor();
9
+ }
10
+ //# sourceMappingURL=hono-app-already-configured.error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hono-app-already-configured.error.d.ts","sourceRoot":"","sources":["../../../src/router/errors/hono-app-already-configured.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAe,MAAM,cAAc,CAAA;AAE5D;;;;GAIG;AACH,qBAAa,6BAA8B,SAAQ,gBAAgB;;CAOlE"}
@@ -0,0 +1,12 @@
1
+ import { ApplicationError, ERROR_CODES } from '../../errors';
2
+ /**
3
+ * Error thrown when HonoApp.configure() is called more than once.
4
+ *
5
+ * HonoApp can only be configured a single time during application bootstrap.
6
+ */
7
+ export class HonoAppAlreadyConfiguredError extends ApplicationError {
8
+ constructor() {
9
+ super('errors.honoAppAlreadyConfigured', ERROR_CODES.SYSTEM.CONFIGURATION_ERROR);
10
+ }
11
+ }
12
+ //# sourceMappingURL=hono-app-already-configured.error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hono-app-already-configured.error.js","sourceRoot":"","sources":["../../../src/router/errors/hono-app-already-configured.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE5D;;;;GAIG;AACH,MAAM,OAAO,6BAA8B,SAAQ,gBAAgB;IACjE;QACE,KAAK,CACH,iCAAiC,EACjC,WAAW,CAAC,MAAM,CAAC,mBAAmB,CACvC,CAAA;IACH,CAAC;CACF"}
@@ -1,9 +1,8 @@
1
1
  export { ControllerMethodNotFoundError } from './controller-method-not-found.error';
2
+ export { HonoAppAlreadyConfiguredError } from './hono-app-already-configured.error';
2
3
  export { ControllerRegistrationError } from './controller-registration.error';
3
4
  export { OpenAPIRouteRegistrationError } from './openapi-route-registration.error';
4
5
  export { OpenAPIValidationError } from './openapi-validation.error';
5
6
  export { RouteNotFoundError } from './route-not-found.error';
6
- export * from './router-already-configured.error';
7
- export * from './router-not-configured.error';
8
7
  export { SchemaValidationError } from './schema-validation.error';
9
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/router/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAA;AACnF,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAA;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAA;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,cAAc,mCAAmC,CAAA;AACjD,cAAc,+BAA+B,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/router/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAA;AACnF,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAA;AACnF,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAA;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAA;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA"}
@@ -1,9 +1,8 @@
1
1
  export { ControllerMethodNotFoundError } from './controller-method-not-found.error';
2
+ export { HonoAppAlreadyConfiguredError } from './hono-app-already-configured.error';
2
3
  export { ControllerRegistrationError } from './controller-registration.error';
3
4
  export { OpenAPIRouteRegistrationError } from './openapi-route-registration.error';
4
5
  export { OpenAPIValidationError } from './openapi-validation.error';
5
6
  export { RouteNotFoundError } from './route-not-found.error';
6
- export * from './router-already-configured.error';
7
- export * from './router-not-configured.error';
8
7
  export { SchemaValidationError } from './schema-validation.error';
9
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/router/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAA;AACnF,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAA;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAA;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,cAAc,mCAAmC,CAAA;AACjD,cAAc,+BAA+B,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/router/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAA;AACnF,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAA;AACnF,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAA;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAA;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA"}
@@ -0,0 +1,38 @@
1
+ import type { Container } from '../di/container';
2
+ import { OpenAPIHono } from '../i18n/validation';
3
+ import type { LoggerService } from '../logger';
4
+ import { type MiddlewareConfigEntry } from '../middleware';
5
+ import type { Constructor } from '../types';
6
+ import type { IController } from './controller';
7
+ import type { RouterEnv } from './types';
8
+ /**
9
+ * HonoApp — extends OpenAPIHono with Stratal-specific setup
10
+ *
11
+ * Absorbs all Hono-related setup from the former RouterService and RequestScopeService:
12
+ * - Request scope middleware (child container per request)
13
+ * - Global middleware (CORS, logging, error handling)
14
+ * - defaultHook for validation errors
15
+ * - `use()` overload for Stratal middleware classes
16
+ * - `configure()` for module middleware, OpenAPI, routes, and 404
17
+ */
18
+ export declare class HonoApp extends OpenAPIHono<RouterEnv> {
19
+ private configured;
20
+ private readonly _container;
21
+ private readonly _logger;
22
+ /**
23
+ * Reference to the original Hono `use` implementation.
24
+ * Captured in constructor after super() sets it as an instance property.
25
+ * Used by private methods to register middleware without going through the override.
26
+ */
27
+ private nativeUse;
28
+ constructor(container: Container, logger: LoggerService);
29
+ /**
30
+ * Configure module middleware, OpenAPI endpoints, controller routes, and 404 handler.
31
+ * Called once by Application.initialize().
32
+ */
33
+ configure(middlewareConfigs: MiddlewareConfigEntry[], controllers: Constructor<IController>[]): void;
34
+ private setupRequestScope;
35
+ private setupGlobalMiddleware;
36
+ private applyMiddlewareClasses;
37
+ }
38
+ //# sourceMappingURL=hono-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hono-app.d.ts","sourceRoot":"","sources":["../../src/router/hono-app.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGhD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,eAAe,CAAA;AAEtB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAQ/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAOxC;;;;;;;;;GASG;AACH,qBAAa,OAAQ,SAAQ,WAAW,CAAC,SAAS,CAAC;IACjD,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAW;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IAEvC;;;;OAIG;IACH,OAAO,CAAC,SAAS,CAAkB;gBAGjC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,aAAa;IAwCvB;;;OAGG;IACH,SAAS,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,GAAG,IAAI;IAqBpG,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,sBAAsB;CAiB/B"}
@@ -0,0 +1,128 @@
1
+ import { cors } from 'hono/cors';
2
+ import { DI_TOKENS } from '../di/tokens';
3
+ import { getHttpStatus } from '../errors';
4
+ import { OpenAPIHono } from '../i18n/validation';
5
+ import { MiddlewareConfigurationService, } from '../middleware';
6
+ import { OPENAPI_TOKENS } from '../openapi';
7
+ import { ROUTER_CONTEXT_KEYS } from './constants';
8
+ import { RouteNotFoundError } from './errors';
9
+ import { HonoAppAlreadyConfiguredError } from './errors/hono-app-already-configured.error';
10
+ import { SchemaValidationError } from './errors/schema-validation.error';
11
+ import { createLoggerMiddleware } from './middleware';
12
+ import { RouterContext } from './router-context';
13
+ import { RouteRegistrationService } from './services/route-registration.service';
14
+ const isMiddlewareClass = (arg) =>
15
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
16
+ typeof arg === 'function' && arg.prototype && 'handle' in arg.prototype;
17
+ /**
18
+ * HonoApp — extends OpenAPIHono with Stratal-specific setup
19
+ *
20
+ * Absorbs all Hono-related setup from the former RouterService and RequestScopeService:
21
+ * - Request scope middleware (child container per request)
22
+ * - Global middleware (CORS, logging, error handling)
23
+ * - defaultHook for validation errors
24
+ * - `use()` overload for Stratal middleware classes
25
+ * - `configure()` for module middleware, OpenAPI, routes, and 404
26
+ */
27
+ export class HonoApp extends OpenAPIHono {
28
+ configured = false;
29
+ _container;
30
+ _logger;
31
+ /**
32
+ * Reference to the original Hono `use` implementation.
33
+ * Captured in constructor after super() sets it as an instance property.
34
+ * Used by private methods to register middleware without going through the override.
35
+ */
36
+ nativeUse;
37
+ constructor(container, logger) {
38
+ super({
39
+ defaultHook: (result, c) => {
40
+ if (!result.success) {
41
+ const requestContainer = c.get(ROUTER_CONTEXT_KEYS.REQUEST_CONTAINER);
42
+ const errorHandler = requestContainer.resolve(DI_TOKENS.ErrorHandler);
43
+ const validationError = new SchemaValidationError(result.error);
44
+ const errorResponse = errorHandler.handle(validationError);
45
+ return c.json(errorResponse, getHttpStatus(errorResponse.code));
46
+ }
47
+ },
48
+ });
49
+ this._container = container;
50
+ this._logger = logger;
51
+ // Capture Hono's original `use` (set by super() as an instance property)
52
+ this.nativeUse = this.use;
53
+ // Override `use` to support Stratal middleware classes alongside Hono-native handlers
54
+ this.use = ((...args) => {
55
+ if (isMiddlewareClass(args[0])) {
56
+ this.applyMiddlewareClasses('*', args);
57
+ return this;
58
+ }
59
+ if (typeof args[0] === 'string' && args.length > 1 && isMiddlewareClass(args[1])) {
60
+ this.applyMiddlewareClasses(args[0], args.slice(1));
61
+ return this;
62
+ }
63
+ return this.nativeUse(...args);
64
+ });
65
+ // Internal setup — uses nativeUse to bypass the override
66
+ this.setupRequestScope();
67
+ this.setupGlobalMiddleware();
68
+ }
69
+ /**
70
+ * Configure module middleware, OpenAPI endpoints, controller routes, and 404 handler.
71
+ * Called once by Application.initialize().
72
+ */
73
+ configure(middlewareConfigs, controllers) {
74
+ if (this.configured)
75
+ throw new HonoAppAlreadyConfiguredError();
76
+ // Module middleware
77
+ const middlewareConfigService = new MiddlewareConfigurationService(this._logger);
78
+ middlewareConfigService.applyMiddlewares(this, middlewareConfigs, controllers, this._container);
79
+ // OpenAPI endpoints
80
+ const openAPIService = this._container.resolve(OPENAPI_TOKENS.OpenAPIService);
81
+ openAPIService.setupEndpoints(this, controllers);
82
+ // Controller routes
83
+ const routeRegistrationService = new RouteRegistrationService(this._logger);
84
+ routeRegistrationService.configure(this, controllers);
85
+ // 404 handler (must be last)
86
+ this.notFound((c) => { throw new RouteNotFoundError(c.req.path, c.req.method); });
87
+ this.configured = true;
88
+ }
89
+ setupRequestScope() {
90
+ this.nativeUse('*', async (c, next) => {
91
+ const routerContext = new RouterContext(c);
92
+ const requestContainer = this._container.createRequestScope(routerContext);
93
+ c.set(ROUTER_CONTEXT_KEYS.REQUEST_CONTAINER, requestContainer);
94
+ try {
95
+ await next();
96
+ }
97
+ finally {
98
+ await requestContainer.dispose();
99
+ }
100
+ });
101
+ }
102
+ setupGlobalMiddleware() {
103
+ this.nativeUse('*', cors());
104
+ this.nativeUse('*', createLoggerMiddleware(this._logger));
105
+ this.onError((err, c) => {
106
+ const requestContainer = c.get(ROUTER_CONTEXT_KEYS.REQUEST_CONTAINER);
107
+ const errorHandler = requestContainer.resolve(DI_TOKENS.ErrorHandler);
108
+ const errorResponse = errorHandler.handle(err);
109
+ return c.json(errorResponse, getHttpStatus(errorResponse.code));
110
+ });
111
+ }
112
+ applyMiddlewareClasses(path, classes) {
113
+ this.nativeUse(path, async (c, next) => {
114
+ const requestContainer = c.get(ROUTER_CONTEXT_KEYS.REQUEST_CONTAINER);
115
+ const ctx = new RouterContext(c);
116
+ // Build chain from end to start
117
+ let current = next;
118
+ for (let i = classes.length - 1; i >= 0; i--) {
119
+ const prevNext = current;
120
+ const middleware = requestContainer.resolve(classes[i]);
121
+ current = () => middleware.handle(ctx, prevNext);
122
+ }
123
+ await current();
124
+ });
125
+ return this;
126
+ }
127
+ }
128
+ //# sourceMappingURL=hono-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hono-app.js","sourceRoot":"","sources":["../../src/router/hono-app.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,11 @@ export type { Middleware } from './middleware.interface';
3
3
  export type { ControllerOptions, RouteConfig, RouterEnv, RouteResponse, RouterVariables, SecurityScheme } from './types';
4
4
  export { HTTP_METHODS, ROUTE_METADATA_KEYS, ROUTER_CONTEXT_KEYS, SECURITY_SCHEMES } from './constants';
5
5
  export { RouterContext } from './router-context';
6
- export { RouterService } from './router.service';
7
- export { RequestScopeService, RouteRegistrationService } from './services';
6
+ export { HonoApp } from './hono-app';
7
+ export { RouteRegistrationService } from './services';
8
8
  export { ROUTER_TOKENS } from './router.tokens';
9
9
  export { Controller, getControllerOptions, getControllerRoute } from './decorators/controller.decorator';
10
10
  export { getDecoratedMethods, getRouteConfig, Route } from './decorators/route.decorator';
11
11
  export * from './schemas';
12
- export { ControllerRegistrationError, OpenAPIRouteRegistrationError, OpenAPIValidationError, RouteNotFoundError } from './errors';
12
+ export { ControllerRegistrationError, HonoAppAlreadyConfiguredError, OpenAPIRouteRegistrationError, OpenAPIValidationError, RouteNotFoundError } from './errors';
13
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAGxH,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAGtG,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAGhD,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/C,OAAO,EACL,UAAU,EAAE,oBAAoB,EAAE,kBAAkB,EACrD,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAA;AAGzF,cAAc,WAAW,CAAA;AAGzB,OAAO,EACL,2BAA2B,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,kBAAkB,EACvG,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAGxH,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAGtG,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAGhD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAGpC,OAAO,EACL,wBAAwB,EACzB,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/C,OAAO,EACL,UAAU,EAAE,oBAAoB,EAAE,kBAAkB,EACrD,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAA;AAGzF,cAAc,WAAW,CAAA;AAGzB,OAAO,EACL,2BAA2B,EAAE,6BAA6B,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,kBAAkB,EACtI,MAAM,UAAU,CAAA"}
@@ -1,11 +1,13 @@
1
+ // eslint-disable-next-line @typescript-eslint/triple-slash-reference
2
+ /// <reference path="./hono-middleware-augment.d.ts" />
1
3
  // Router constants
2
4
  export { HTTP_METHODS, ROUTE_METADATA_KEYS, ROUTER_CONTEXT_KEYS, SECURITY_SCHEMES } from './constants';
3
5
  // Router context
4
6
  export { RouterContext } from './router-context';
5
- // Router service
6
- export { RouterService } from './router.service';
7
+ // HonoApp
8
+ export { HonoApp } from './hono-app';
7
9
  // Router services
8
- export { RequestScopeService, RouteRegistrationService } from './services';
10
+ export { RouteRegistrationService } from './services';
9
11
  // Router tokens
10
12
  export { ROUTER_TOKENS } from './router.tokens';
11
13
  // Decorators
@@ -14,5 +16,5 @@ export { getDecoratedMethods, getRouteConfig, Route } from './decorators/route.d
14
16
  // Schemas
15
17
  export * from './schemas';
16
18
  // Errors
17
- export { ControllerRegistrationError, OpenAPIRouteRegistrationError, OpenAPIValidationError, RouteNotFoundError } from './errors';
19
+ export { ControllerRegistrationError, HonoAppAlreadyConfiguredError, OpenAPIRouteRegistrationError, OpenAPIValidationError, RouteNotFoundError } from './errors';
18
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAKA,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEtG,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,kBAAkB;AAClB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,YAAY,CAAA;AAEnB,gBAAgB;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,aAAa;AACb,OAAO,EACL,UAAU,EAAE,oBAAoB,EAAE,kBAAkB,EACrD,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAA;AAEzF,UAAU;AACV,cAAc,WAAW,CAAA;AAEzB,SAAS;AACT,OAAO,EACL,2BAA2B,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,kBAAkB,EACvG,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,uDAAuD;AAOvD,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEtG,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,UAAU;AACV,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,kBAAkB;AAClB,OAAO,EACL,wBAAwB,EACzB,MAAM,YAAY,CAAA;AAEnB,gBAAgB;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,aAAa;AACb,OAAO,EACL,UAAU,EAAE,oBAAoB,EAAE,kBAAkB,EACrD,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAA;AAEzF,UAAU;AACV,cAAc,WAAW,CAAA;AAEzB,SAAS;AACT,OAAO,EACL,2BAA2B,EAAE,6BAA6B,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,kBAAkB,EACtI,MAAM,UAAU,CAAA"}
@@ -1,35 +1,7 @@
1
1
  /**
2
2
  * Dependency injection tokens for the router system
3
- *
4
- * Controllers and middlewares are exposed via module methods (getControllers() and getMiddlewares())
5
- * rather than DI tokens. The Application collects them by iterating through modules.
6
- *
7
- * ## Service Instantiation Pattern
8
- *
9
- * Router services (RouteRegistrationService, OpenAPIService) are manually instantiated in RouterService
10
- * rather than resolved from the DI container. This is intentional and provides several benefits:
11
- *
12
- * 1. **Lifecycle Control**: Services are created once during router initialization and reused across
13
- * all requests, ensuring singleton behavior without relying on DI container scope management.
14
- *
15
- * 2. **Performance**: Avoiding container resolution on each request reduces overhead. These services
16
- * don't need request-scoped data and can safely be singletons.
17
- *
18
- * 3. **Dependency Injection Still Works**: Constructor injection still works perfectly - the container
19
- * resolves dependencies (like Logger) when we call `new RouteRegistrationService()`. We're only
20
- * bypassing the container for the top-level service itself.
21
- *
22
- * 4. **Clarity**: Makes it explicit that these are singleton services that manage router configuration,
23
- * not request-scoped services that handle individual requests.
24
- *
25
- * This pattern is safe and recommended for stateless utility services that don't need request context.
26
- * Request-scoped services (like controllers) are still resolved from the container on each request.
27
3
  */
28
4
  export declare const ROUTER_TOKENS: {
29
- /**
30
- * Token for RouterService singleton
31
- */
32
- readonly RouterService: symbol;
33
5
  /**
34
6
  * Token for RouterContext (request-scoped)
35
7
  * Contains Hono context wrapper with helper methods
@@ -1 +1 @@
1
- {"version":3,"file":"router.tokens.d.ts","sourceRoot":"","sources":["../../src/router/router.tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,aAAa;IACxB;;OAEG;;IAGH;;;OAGG;;CAEK,CAAA"}
1
+ {"version":3,"file":"router.tokens.d.ts","sourceRoot":"","sources":["../../src/router/router.tokens.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,aAAa;IACxB;;;OAGG;;CAEK,CAAA"}
@@ -1,35 +1,7 @@
1
1
  /**
2
2
  * Dependency injection tokens for the router system
3
- *
4
- * Controllers and middlewares are exposed via module methods (getControllers() and getMiddlewares())
5
- * rather than DI tokens. The Application collects them by iterating through modules.
6
- *
7
- * ## Service Instantiation Pattern
8
- *
9
- * Router services (RouteRegistrationService, OpenAPIService) are manually instantiated in RouterService
10
- * rather than resolved from the DI container. This is intentional and provides several benefits:
11
- *
12
- * 1. **Lifecycle Control**: Services are created once during router initialization and reused across
13
- * all requests, ensuring singleton behavior without relying on DI container scope management.
14
- *
15
- * 2. **Performance**: Avoiding container resolution on each request reduces overhead. These services
16
- * don't need request-scoped data and can safely be singletons.
17
- *
18
- * 3. **Dependency Injection Still Works**: Constructor injection still works perfectly - the container
19
- * resolves dependencies (like Logger) when we call `new RouteRegistrationService()`. We're only
20
- * bypassing the container for the top-level service itself.
21
- *
22
- * 4. **Clarity**: Makes it explicit that these are singleton services that manage router configuration,
23
- * not request-scoped services that handle individual requests.
24
- *
25
- * This pattern is safe and recommended for stateless utility services that don't need request context.
26
- * Request-scoped services (like controllers) are still resolved from the container on each request.
27
3
  */
28
4
  export const ROUTER_TOKENS = {
29
- /**
30
- * Token for RouterService singleton
31
- */
32
- RouterService: Symbol.for('RouterService'),
33
5
  /**
34
6
  * Token for RouterContext (request-scoped)
35
7
  * Contains Hono context wrapper with helper methods
@@ -1 +1 @@
1
- {"version":3,"file":"router.tokens.js","sourceRoot":"","sources":["../../src/router/router.tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;IAE1C;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;CAClC,CAAA"}
1
+ {"version":3,"file":"router.tokens.js","sourceRoot":"","sources":["../../src/router/router.tokens.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;CAClC,CAAA"}
@@ -2,6 +2,5 @@
2
2
  * Router services index
3
3
  * Exports all specialized router services
4
4
  */
5
- export { RequestScopeService } from './request-scope.service';
6
5
  export { RouteRegistrationService } from './route-registration.service';
7
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/router/services/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/router/services/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA"}
@@ -2,6 +2,5 @@
2
2
  * Router services index
3
3
  * Exports all specialized router services
4
4
  */
5
- export { RequestScopeService } from './request-scope.service';
6
5
  export { RouteRegistrationService } from './route-registration.service';
7
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/router/services/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/router/services/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA"}
package/dist/stratal.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import 'reflect-metadata';
2
- import { Application, type ApplicationConfig } from './application';
2
+ import { type ApplicationConfig } from './application';
3
3
  import type { StratalEnv } from './env';
4
+ import type { HonoApp } from './router/hono-app';
4
5
  /**
5
6
  * Stratal — Hono-style entry point for Cloudflare Workers.
6
7
  *
7
- * Lazily initializes the Application on the first handler call and caches it
8
- * for all subsequent invocations. A concurrent-init guard prevents double
9
- * initialization from simultaneous requests.
8
+ * Eagerly bootstraps the Application at construction time, dynamically
9
+ * importing `cloudflare:workers` for env and waitUntil.
10
10
  *
11
11
  * @example
12
12
  * ```typescript
@@ -17,32 +17,15 @@ import type { StratalEnv } from './env';
17
17
  * ```
18
18
  */
19
19
  export declare class Stratal<Env extends StratalEnv = StratalEnv> {
20
- private readonly config;
21
20
  private app;
22
21
  private initPromise;
23
22
  constructor(config: ApplicationConfig);
24
- /**
25
- * Handle HTTP requests via RouterService.
26
- */
27
23
  fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response>;
28
- /**
29
- * Handle queue batches.
30
- */
31
- queue(batch: MessageBatch, env: Env, ctx: ExecutionContext): Promise<void>;
32
- /**
33
- * Handle scheduled cron triggers.
34
- */
35
- scheduled(controller: ScheduledController, env: Env, ctx: ExecutionContext): Promise<void>;
36
- /**
37
- * Get or lazily initialize the Application singleton.
38
- * The first call's `env`/`ctx` are used for initialization;
39
- * subsequent calls return the cached instance.
40
- */
41
- getApplication(env: Env, ctx: ExecutionContext): Promise<Application>;
42
- /**
43
- * Shut down the application and release all resources.
44
- */
24
+ queue(batch: MessageBatch): Promise<void>;
25
+ scheduled(controller: ScheduledController): Promise<void>;
26
+ get hono(): Promise<HonoApp>;
45
27
  shutdown(): Promise<void>;
46
- private initializeApp;
28
+ private ensureReady;
29
+ private prepareApp;
47
30
  }
48
31
  //# sourceMappingURL=stratal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stratal.d.ts","sourceRoot":"","sources":["../src/stratal.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAA;AAEzB,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAGvC;;;;;;;;;;;;;;GAcG;AACH,qBAAa,OAAO,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU;IAI1C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,GAAG,CAA2B;IACtC,OAAO,CAAC,WAAW,CAAoC;gBAE1B,MAAM,EAAE,iBAAiB;IAMtD;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMjF;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhF;;OAEG;IACG,SAAS,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhG;;;;OAIG;IACG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAsB3E;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAOjB,aAAa;CAK5B"}
1
+ {"version":3,"file":"stratal.d.ts","sourceRoot":"","sources":["../src/stratal.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAA;AAEzB,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD;;;;;;;;;;;;;GAaG;AACH,qBAAa,OAAO,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU;IACtD,OAAO,CAAC,GAAG,CAA2B;IACtC,OAAO,CAAC,WAAW,CAAsB;gBAE7B,MAAM,EAAE,iBAAiB;IAQ/B,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAK3E,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,SAAS,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/D,IAAI,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAE3B;IAEK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAQjB,WAAW;YAKX,UAAU;CAMzB"}