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,166 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- var __param = (this && this.__param) || function (paramIndex, decorator) {
11
- return function (target, key) { decorator(target, key, paramIndex); }
12
- };
13
- import { cors } from 'hono/cors';
14
- import { inject } from 'tsyringe';
15
- import { CONTAINER_TOKEN } from '../di';
16
- import { Transient } from '../di/decorators';
17
- import { DI_TOKENS } from '../di/tokens';
18
- import { getHttpStatus } from '../errors';
19
- import { OpenAPIHono } from '../i18n/validation';
20
- import { LOGGER_TOKENS } from '../logger';
21
- import { MiddlewareConfigurationService, } from '../middleware';
22
- import { OPENAPI_TOKENS } from '../openapi';
23
- import { ROUTER_CONTEXT_KEYS } from './constants';
24
- import { RouteNotFoundError, RouterAlreadyConfiguredError, RouterNotConfiguredError } from './errors';
25
- import { SchemaValidationError } from './errors/schema-validation.error';
26
- import { createLoggerMiddleware } from './middleware';
27
- import { ROUTER_TOKENS } from './router.tokens';
28
- import { RequestScopeService } from './services/request-scope.service';
29
- import { RouteRegistrationService } from './services/route-registration.service';
30
- /**
31
- * RouterService manages HTTP routing and request handling with OpenAPI support
32
- *
33
- * Responsibilities:
34
- * - Creates and configures OpenAPIHono application
35
- * - Delegates to specialized services:
36
- * - RequestScopeService: Request-scoped container setup
37
- * - OpenAPIService: OpenAPI spec and documentation endpoints
38
- * - RouteRegistrationService: Controller and route registration
39
- * - Registers global middleware (CORS, logging, error handling)
40
- * - Handles fetch requests via Hono
41
- *
42
- * Note: Route access control (domain-based enforcement) is handled by
43
- * RouteAccessMiddleware in the tenancy module, applied via TenancyModule.configure().
44
- *
45
- * The service is registered as a singleton in the DI container
46
- * and accessed by the Backend worker's fetch() method.
47
- */
48
- let RouterService = class RouterService {
49
- logger;
50
- container;
51
- app;
52
- configured = false;
53
- constructor(logger, container) {
54
- this.logger = logger;
55
- this.container = container;
56
- this.app = new OpenAPIHono({
57
- defaultHook: (result, c) => {
58
- if (!result.success) {
59
- // Get request container (created by RequestScopeService)
60
- const requestContainer = c.get(ROUTER_CONTEXT_KEYS.REQUEST_CONTAINER);
61
- // Resolve GlobalErrorHandler from request container for i18n support
62
- const errorHandler = requestContainer.resolve(DI_TOKENS.ErrorHandler);
63
- // Convert ZodError to SchemaValidationError
64
- const validationError = new SchemaValidationError(result.error);
65
- // Process through global error handler for consistent formatting
66
- const errorResponse = errorHandler.handle(validationError);
67
- // Get HTTP status code from error code
68
- const status = getHttpStatus(errorResponse.code);
69
- return c.json(errorResponse, status);
70
- }
71
- // Validation succeeded, continue to handler
72
- return;
73
- },
74
- });
75
- this.setupMiddleware();
76
- }
77
- /**
78
- * Setup all middleware in correct order
79
- * Note: OpenAPI setup is deferred to configure() because it needs controllers
80
- */
81
- setupMiddleware() {
82
- // 1. Request-scoped container setup (MUST be FIRST)
83
- const requestScopeService = new RequestScopeService(this.container);
84
- requestScopeService.setupMiddleware(this.app);
85
- // 2. Global middleware (CORS, logging, error handling)
86
- this.setupGlobalMiddleware();
87
- // 3. OpenAPI documentation endpoints - deferred to configure()
88
- }
89
- /**
90
- * Setup global middleware that runs for all requests
91
- */
92
- setupGlobalMiddleware() {
93
- // CORS middleware
94
- this.app.use('*', cors());
95
- // Request logger middleware (uses our Logger service)
96
- this.app.use('*', createLoggerMiddleware(this.logger));
97
- // Global error handler
98
- this.app.onError((err, c) => {
99
- // Resolve GlobalErrorHandler from request container (has I18nService for translation)
100
- const requestContainer = c.get(ROUTER_CONTEXT_KEYS.REQUEST_CONTAINER);
101
- const errorHandler = requestContainer.resolve(DI_TOKENS.ErrorHandler);
102
- // Handle all errors via GlobalErrorHandler
103
- const errorResponse = errorHandler.handle(err);
104
- const status = getHttpStatus(errorResponse.code);
105
- return c.json(errorResponse, status);
106
- });
107
- }
108
- /**
109
- * Configure router with middlewares and controllers atomically
110
- * This MUST be called immediately after RouterService construction
111
- * and can only be called once.
112
- *
113
- * @param middlewareConfigs - Array of middleware configuration entries from modules
114
- * @param controllers - Array of controller classes from modules
115
- */
116
- configure(middlewareConfigs, controllers) {
117
- if (this.configured) {
118
- throw new RouterAlreadyConfiguredError();
119
- }
120
- this.logger.info('Configuring router', {
121
- middlewareConfigCount: middlewareConfigs.length,
122
- controllerCount: controllers.length,
123
- });
124
- // 3. Apply middleware configurations FIRST (includes LocaleExtractionMiddleware, RouteAccessMiddleware)
125
- // Middleware must run before OpenAPI endpoints so locale and route context are available
126
- const middlewareConfigService = new MiddlewareConfigurationService(this.logger);
127
- middlewareConfigService.applyMiddlewares(this.app, middlewareConfigs, controllers, this.container);
128
- // 4. OpenAPI documentation endpoints (needs middleware to run first for i18n and route filtering)
129
- const openAPIService = this.container.resolve(OPENAPI_TOKENS.OpenAPIService);
130
- openAPIService.setupEndpoints(this.app, controllers);
131
- // 5. Register controllers and routes
132
- const routeRegistrationService = new RouteRegistrationService(this.logger);
133
- routeRegistrationService.configure(this.app, controllers);
134
- // 6. Register 404 handler last
135
- this.app.notFound((c) => {
136
- throw new RouteNotFoundError(c.req.path, c.req.method);
137
- });
138
- this.configured = true;
139
- this.logger.info('Router configuration complete');
140
- }
141
- /**
142
- * Handle incoming fetch request via Hono
143
- *
144
- * This method is called by the Backend worker's fetch() method.
145
- * The request-scoped container is created in RequestScopeService.
146
- *
147
- * @param request - Incoming Request object
148
- * @param env - Cloudflare environment bindings
149
- * @param ctx - Cloudflare execution context
150
- * @returns Response object
151
- */
152
- fetch(request, env, ctx) {
153
- if (!this.configured) {
154
- throw new RouterNotConfiguredError();
155
- }
156
- return this.app.fetch(request, env, ctx);
157
- }
158
- };
159
- RouterService = __decorate([
160
- Transient(ROUTER_TOKENS.RouterService),
161
- __param(0, inject(LOGGER_TOKENS.LoggerService)),
162
- __param(1, inject(CONTAINER_TOKEN)),
163
- __metadata("design:paramtypes", [Function, Function])
164
- ], RouterService);
165
- export { RouterService };
166
- //# sourceMappingURL=router.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"router.service.js","sourceRoot":"","sources":["../../src/router/router.service.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- import type { OpenAPIHono } from '../../i18n/validation';
2
- import { Container } from '../../di';
3
- import type { RouterEnv } from '../types';
4
- /**
5
- * Request Scope Service
6
- *
7
- * Manages request-scoped container setup and lifecycle.
8
- * Creates context-enriched instances of `@RequestScoped` services.
9
- *
10
- * **Two-Tier Container Architecture:**
11
- * ```
12
- * Container (manages global container)
13
- * ↓
14
- * container.createRequestScope(routerContext)
15
- * ↓
16
- * Request Container (child, per request)
17
- * ↓
18
- * Context-enriched instances via withContext(routerContext)
19
- * ```
20
- *
21
- * **Responsibilities:**
22
- * - Setup request-scoped container middleware
23
- * - Create context-enriched instances of `@RequestScoped` services
24
- *
25
- * **Note:**
26
- * - AuthContext registration is handled by AuthModule's AuthContextMiddleware
27
- * - Locale extraction is handled by I18nModule's LocaleExtractionMiddleware
28
- * - Zod i18n context is handled by I18nModule's I18nContextMiddleware
29
- * - Session verification is handled by AuthModule's SessionVerificationMiddleware
30
- */
31
- export declare class RequestScopeService {
32
- private readonly container;
33
- constructor(container: Container);
34
- /**
35
- * Setup request-scoped container middleware
36
- *
37
- * This MUST run before all other middleware and routes.
38
- * Creates a child container with context-enriched service instances.
39
- */
40
- setupMiddleware(app: OpenAPIHono<RouterEnv>): void;
41
- }
42
- //# sourceMappingURL=request-scope.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request-scope.service.d.ts","sourceRoot":"","sources":["../../../src/router/services/request-scope.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAAE,SAAS,EAAmB,MAAM,UAAU,CAAA;AAIrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBACa,mBAAmB;IAG5B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAGvC;;;;;OAKG;IACH,eAAe,CAAC,GAAG,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI;CAgBnD"}
@@ -1,76 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- var __param = (this && this.__param) || function (paramIndex, decorator) {
11
- return function (target, key) { decorator(target, key, paramIndex); }
12
- };
13
- import { inject } from 'tsyringe';
14
- import { Container, CONTAINER_TOKEN } from '../../di';
15
- import { Transient } from '../../di/decorators';
16
- import { ROUTER_CONTEXT_KEYS } from '../constants';
17
- import { RouterContext } from '../router-context';
18
- /**
19
- * Request Scope Service
20
- *
21
- * Manages request-scoped container setup and lifecycle.
22
- * Creates context-enriched instances of `@RequestScoped` services.
23
- *
24
- * **Two-Tier Container Architecture:**
25
- * ```
26
- * Container (manages global container)
27
- * ↓
28
- * container.createRequestScope(routerContext)
29
- * ↓
30
- * Request Container (child, per request)
31
- * ↓
32
- * Context-enriched instances via withContext(routerContext)
33
- * ```
34
- *
35
- * **Responsibilities:**
36
- * - Setup request-scoped container middleware
37
- * - Create context-enriched instances of `@RequestScoped` services
38
- *
39
- * **Note:**
40
- * - AuthContext registration is handled by AuthModule's AuthContextMiddleware
41
- * - Locale extraction is handled by I18nModule's LocaleExtractionMiddleware
42
- * - Zod i18n context is handled by I18nModule's I18nContextMiddleware
43
- * - Session verification is handled by AuthModule's SessionVerificationMiddleware
44
- */
45
- let RequestScopeService = class RequestScopeService {
46
- container;
47
- constructor(container) {
48
- this.container = container;
49
- }
50
- /**
51
- * Setup request-scoped container middleware
52
- *
53
- * This MUST run before all other middleware and routes.
54
- * Creates a child container with context-enriched service instances.
55
- */
56
- setupMiddleware(app) {
57
- app.use('*', async (c, next) => {
58
- // Create RouterContext
59
- const routerContext = new RouterContext(c);
60
- // Create request scope using Container
61
- const requestContainer = this.container.createRequestScope(routerContext);
62
- // Store in Hono context
63
- c.set(ROUTER_CONTEXT_KEYS.REQUEST_CONTAINER, requestContainer);
64
- // Run request within AsyncLocalStorage context
65
- // Cleanup is automatic in runWithContextStore
66
- await requestContainer.runWithContextStore(() => next());
67
- });
68
- }
69
- };
70
- RequestScopeService = __decorate([
71
- Transient(),
72
- __param(0, inject(CONTAINER_TOKEN)),
73
- __metadata("design:paramtypes", [Container])
74
- ], RequestScopeService);
75
- export { RequestScopeService };
76
- //# sourceMappingURL=request-scope.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request-scope.service.js","sourceRoot":"","sources":["../../../src/router/services/request-scope.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGjD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAGX;IAFnB,YAEmB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IACpC,CAAC;IAEJ;;;;;OAKG;IACH,eAAe,CAAC,GAA2B;QACzC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;YAC7B,uBAAuB;YACvB,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,CAAuB,CAAC,CAAA;YAEhE,uCAAuC;YACvC,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAA;YAEzE,wBAAwB;YACxB,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAA;YAE9D,+CAA+C;YAC/C,8CAA8C;YAC9C,MAAM,gBAAgB,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;QAC1D,CAAC,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AA5BY,mBAAmB;IAD/B,SAAS,EAAE;IAGP,WAAA,MAAM,CAAC,eAAe,CAAC,CAAA;qCACI,SAAS;GAH5B,mBAAmB,CA4B/B"}