stratal 0.0.1 → 0.0.2

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 (264) hide show
  1. package/README.md +101 -25
  2. package/dist/application.d.ts +0 -1
  3. package/dist/application.d.ts.map +1 -1
  4. package/dist/application.js +1 -2
  5. package/dist/application.js.map +1 -1
  6. package/dist/cache/errors/cache-delete.error.d.ts +1 -1
  7. package/dist/cache/errors/cache-delete.error.d.ts.map +1 -1
  8. package/dist/cache/errors/cache-delete.error.js +1 -1
  9. package/dist/cache/errors/cache-delete.error.js.map +1 -1
  10. package/dist/cache/errors/cache-get.error.d.ts +1 -1
  11. package/dist/cache/errors/cache-get.error.d.ts.map +1 -1
  12. package/dist/cache/errors/cache-get.error.js +1 -1
  13. package/dist/cache/errors/cache-get.error.js.map +1 -1
  14. package/dist/cache/errors/cache-list.error.d.ts +1 -1
  15. package/dist/cache/errors/cache-list.error.d.ts.map +1 -1
  16. package/dist/cache/errors/cache-list.error.js +1 -1
  17. package/dist/cache/errors/cache-list.error.js.map +1 -1
  18. package/dist/cache/errors/cache-put.error.d.ts +1 -1
  19. package/dist/cache/errors/cache-put.error.d.ts.map +1 -1
  20. package/dist/cache/errors/cache-put.error.js +1 -1
  21. package/dist/cache/errors/cache-put.error.js.map +1 -1
  22. package/dist/config/config.types.d.ts +2 -2
  23. package/dist/config/errors/config-not-initialized.error.d.ts +1 -1
  24. package/dist/config/errors/config-not-initialized.error.d.ts.map +1 -1
  25. package/dist/config/errors/config-not-initialized.error.js +1 -1
  26. package/dist/config/errors/config-not-initialized.error.js.map +1 -1
  27. package/dist/config/services/config.service.d.ts +6 -5
  28. package/dist/config/services/config.service.d.ts.map +1 -1
  29. package/dist/config/services/config.service.js +25 -8
  30. package/dist/config/services/config.service.js.map +1 -1
  31. package/dist/cron/cron-job.d.ts +5 -6
  32. package/dist/cron/cron-job.d.ts.map +1 -1
  33. package/dist/cron/errors/cron-execution.error.d.ts +1 -1
  34. package/dist/cron/errors/cron-execution.error.d.ts.map +1 -1
  35. package/dist/cron/errors/cron-execution.error.js +1 -1
  36. package/dist/cron/errors/cron-execution.error.js.map +1 -1
  37. package/dist/di/container.d.ts +0 -4
  38. package/dist/di/container.d.ts.map +1 -1
  39. package/dist/di/container.js +0 -4
  40. package/dist/di/container.js.map +1 -1
  41. package/dist/di/decorators.d.ts +1 -1
  42. package/dist/di/decorators.js +1 -1
  43. package/dist/di/errors/conditional-binding-fallback.error.d.ts +1 -1
  44. package/dist/di/errors/conditional-binding-fallback.error.d.ts.map +1 -1
  45. package/dist/di/errors/conditional-binding-fallback.error.js +1 -1
  46. package/dist/di/errors/conditional-binding-fallback.error.js.map +1 -1
  47. package/dist/di/errors/request-scope-operation-not-allowed.error.d.ts +1 -1
  48. package/dist/di/errors/request-scope-operation-not-allowed.error.d.ts.map +1 -1
  49. package/dist/di/errors/request-scope-operation-not-allowed.error.js +1 -1
  50. package/dist/di/errors/request-scope-operation-not-allowed.error.js.map +1 -1
  51. package/dist/email/consumers/email.consumer.d.ts.map +1 -1
  52. package/dist/email/consumers/email.consumer.js +1 -5
  53. package/dist/email/consumers/email.consumer.js.map +1 -1
  54. package/dist/email/services/email.service.d.ts +1 -1
  55. package/dist/email/services/email.service.js +1 -1
  56. package/dist/errors/application-error.d.ts +1 -1
  57. package/dist/errors/application-error.d.ts.map +1 -1
  58. package/dist/errors/error-codes.d.ts +0 -2
  59. package/dist/errors/error-codes.d.ts.map +1 -1
  60. package/dist/errors/error-codes.js +0 -2
  61. package/dist/errors/error-codes.js.map +1 -1
  62. package/dist/errors/error-response.d.ts.map +1 -0
  63. package/dist/errors/error-response.js.map +1 -0
  64. package/dist/{infrastructure/error-handler → errors}/global-error-handler.d.ts +3 -3
  65. package/dist/errors/global-error-handler.d.ts.map +1 -0
  66. package/dist/{infrastructure/error-handler → errors}/global-error-handler.js +5 -5
  67. package/dist/errors/global-error-handler.js.map +1 -0
  68. package/dist/errors/index.d.ts +4 -0
  69. package/dist/errors/index.d.ts.map +1 -1
  70. package/dist/errors/index.js +4 -0
  71. package/dist/errors/index.js.map +1 -1
  72. package/dist/{infrastructure/error-handler → errors}/internal-error.d.ts +1 -1
  73. package/dist/errors/internal-error.d.ts.map +1 -0
  74. package/dist/{infrastructure/error-handler → errors}/internal-error.js +2 -2
  75. package/dist/errors/internal-error.js.map +1 -0
  76. package/dist/{infrastructure/errors → errors}/request-container-not-initialized.error.d.ts +1 -1
  77. package/dist/errors/request-container-not-initialized.error.d.ts.map +1 -0
  78. package/dist/{infrastructure/errors → errors}/request-container-not-initialized.error.js +2 -2
  79. package/dist/errors/request-container-not-initialized.error.js.map +1 -0
  80. package/dist/guards/types.d.ts +1 -1
  81. package/dist/guards/use-guards.decorator.d.ts +4 -4
  82. package/dist/guards/use-guards.decorator.js +4 -4
  83. package/dist/i18n/errors/locale-not-supported.error.d.ts +1 -1
  84. package/dist/i18n/errors/locale-not-supported.error.d.ts.map +1 -1
  85. package/dist/i18n/errors/locale-not-supported.error.js +1 -1
  86. package/dist/i18n/errors/locale-not-supported.error.js.map +1 -1
  87. package/dist/i18n/errors/translation-missing.error.d.ts +1 -1
  88. package/dist/i18n/errors/translation-missing.error.d.ts.map +1 -1
  89. package/dist/i18n/errors/translation-missing.error.js +1 -2
  90. package/dist/i18n/errors/translation-missing.error.js.map +1 -1
  91. package/dist/i18n/i18n.module.d.ts +3 -3
  92. package/dist/i18n/i18n.module.d.ts.map +1 -1
  93. package/dist/i18n/i18n.module.js +3 -3
  94. package/dist/i18n/i18n.module.js.map +1 -1
  95. package/dist/i18n/i18n.options.d.ts +2 -2
  96. package/dist/i18n/i18n.options.js +1 -1
  97. package/dist/i18n/i18n.tokens.d.ts +1 -1
  98. package/dist/i18n/i18n.tokens.d.ts.map +1 -1
  99. package/dist/i18n/i18n.tokens.js +1 -1
  100. package/dist/i18n/i18n.tokens.js.map +1 -1
  101. package/dist/i18n/messages/en/common.d.ts +1 -5
  102. package/dist/i18n/messages/en/common.d.ts.map +1 -1
  103. package/dist/i18n/messages/en/common.js +1 -5
  104. package/dist/i18n/messages/en/common.js.map +1 -1
  105. package/dist/i18n/messages/en/errors.d.ts +0 -7
  106. package/dist/i18n/messages/en/errors.d.ts.map +1 -1
  107. package/dist/i18n/messages/en/errors.js +0 -8
  108. package/dist/i18n/messages/en/errors.js.map +1 -1
  109. package/dist/i18n/messages/en/zod.js +1 -1
  110. package/dist/i18n/services/message-loader.service.d.ts +1 -1
  111. package/dist/i18n/services/message-loader.service.js +1 -1
  112. package/dist/index.d.ts +0 -18
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +0 -19
  115. package/dist/index.js.map +1 -1
  116. package/dist/logger/contracts/log-context.d.ts +1 -3
  117. package/dist/logger/contracts/log-context.d.ts.map +1 -1
  118. package/dist/logger/formatters/json-formatter.d.ts +0 -1
  119. package/dist/logger/formatters/json-formatter.d.ts.map +1 -1
  120. package/dist/logger/formatters/json-formatter.js +0 -1
  121. package/dist/logger/formatters/json-formatter.js.map +1 -1
  122. package/dist/logger/formatters/pretty-formatter.d.ts +0 -1
  123. package/dist/logger/formatters/pretty-formatter.d.ts.map +1 -1
  124. package/dist/logger/formatters/pretty-formatter.js +0 -1
  125. package/dist/logger/formatters/pretty-formatter.js.map +1 -1
  126. package/dist/logger/services/logger.service.d.ts +2 -2
  127. package/dist/logger/services/logger.service.js +2 -2
  128. package/dist/middleware/middleware-consumer.d.ts +3 -3
  129. package/dist/middleware/middleware-consumer.js +4 -4
  130. package/dist/middleware/types.d.ts +2 -2
  131. package/dist/module/errors/invalid-module-provider.error.d.ts +1 -1
  132. package/dist/module/errors/invalid-module-provider.error.d.ts.map +1 -1
  133. package/dist/module/errors/invalid-module-provider.error.js +1 -2
  134. package/dist/module/errors/invalid-module-provider.error.js.map +1 -1
  135. package/dist/module/errors/module-already-registered.error.d.ts +1 -1
  136. package/dist/module/errors/module-already-registered.error.d.ts.map +1 -1
  137. package/dist/module/errors/module-already-registered.error.js +1 -2
  138. package/dist/module/errors/module-already-registered.error.js.map +1 -1
  139. package/dist/module/errors/module-circular-dependency.error.d.ts +1 -1
  140. package/dist/module/errors/module-circular-dependency.error.d.ts.map +1 -1
  141. package/dist/module/errors/module-circular-dependency.error.js +1 -2
  142. package/dist/module/errors/module-circular-dependency.error.js.map +1 -1
  143. package/dist/module/errors/module-dependency-not-found.error.d.ts +1 -1
  144. package/dist/module/errors/module-dependency-not-found.error.d.ts.map +1 -1
  145. package/dist/module/errors/module-dependency-not-found.error.js +1 -2
  146. package/dist/module/errors/module-dependency-not-found.error.js.map +1 -1
  147. package/dist/module/module-registry.d.ts +1 -1
  148. package/dist/module/module-registry.js +2 -2
  149. package/dist/module/module-registry.js.map +1 -1
  150. package/dist/module/module.decorator.d.ts +3 -3
  151. package/dist/module/module.decorator.js +3 -3
  152. package/dist/module/types.d.ts +11 -11
  153. package/dist/module/types.d.ts.map +1 -1
  154. package/dist/openapi/openapi.module.d.ts +1 -1
  155. package/dist/openapi/openapi.module.js +1 -1
  156. package/dist/openapi/services/openapi-config.service.d.ts +1 -1
  157. package/dist/openapi/services/openapi-config.service.js +1 -1
  158. package/dist/queue/errors/queue-binding-not-found.error.d.ts +1 -1
  159. package/dist/queue/errors/queue-binding-not-found.error.d.ts.map +1 -1
  160. package/dist/queue/errors/queue-binding-not-found.error.js +1 -2
  161. package/dist/queue/errors/queue-binding-not-found.error.js.map +1 -1
  162. package/dist/queue/errors/queue-provider-not-supported.error.d.ts +1 -1
  163. package/dist/queue/errors/queue-provider-not-supported.error.d.ts.map +1 -1
  164. package/dist/queue/errors/queue-provider-not-supported.error.js +1 -2
  165. package/dist/queue/errors/queue-provider-not-supported.error.js.map +1 -1
  166. package/dist/queue/queue-consumer.d.ts +0 -2
  167. package/dist/queue/queue-consumer.d.ts.map +1 -1
  168. package/dist/queue/queue-name.d.ts +2 -2
  169. package/dist/queue/queue-name.js +1 -1
  170. package/dist/queue/queue.module.d.ts +1 -1
  171. package/dist/queue/queue.module.js +1 -1
  172. package/dist/router/controller.d.ts +1 -1
  173. package/dist/router/decorators/controller.decorator.d.ts +2 -18
  174. package/dist/router/decorators/controller.decorator.d.ts.map +1 -1
  175. package/dist/router/decorators/controller.decorator.js +2 -18
  176. package/dist/router/decorators/controller.decorator.js.map +1 -1
  177. package/dist/router/decorators/index.js +0 -2
  178. package/dist/router/decorators/index.js.map +1 -1
  179. package/dist/router/errors/controller-method-not-found.error.d.ts +1 -1
  180. package/dist/router/errors/controller-method-not-found.error.d.ts.map +1 -1
  181. package/dist/router/errors/controller-method-not-found.error.js +1 -2
  182. package/dist/router/errors/controller-method-not-found.error.js.map +1 -1
  183. package/dist/router/errors/controller-registration.error.d.ts +2 -2
  184. package/dist/router/errors/controller-registration.error.d.ts.map +1 -1
  185. package/dist/router/errors/controller-registration.error.js +2 -3
  186. package/dist/router/errors/controller-registration.error.js.map +1 -1
  187. package/dist/router/errors/index.js +0 -2
  188. package/dist/router/errors/index.js.map +1 -1
  189. package/dist/router/errors/openapi-route-registration.error.d.ts +1 -1
  190. package/dist/router/errors/openapi-route-registration.error.d.ts.map +1 -1
  191. package/dist/router/errors/openapi-route-registration.error.js +1 -2
  192. package/dist/router/errors/openapi-route-registration.error.js.map +1 -1
  193. package/dist/router/errors/openapi-validation.error.d.ts +1 -1
  194. package/dist/router/errors/openapi-validation.error.d.ts.map +1 -1
  195. package/dist/router/errors/openapi-validation.error.js +1 -2
  196. package/dist/router/errors/openapi-validation.error.js.map +1 -1
  197. package/dist/router/errors/route-not-found.error.d.ts +1 -1
  198. package/dist/router/errors/route-not-found.error.d.ts.map +1 -1
  199. package/dist/router/errors/route-not-found.error.js +1 -2
  200. package/dist/router/errors/route-not-found.error.js.map +1 -1
  201. package/dist/router/errors/schema-validation.error.d.ts +1 -1
  202. package/dist/router/errors/schema-validation.error.d.ts.map +1 -1
  203. package/dist/router/errors/schema-validation.error.js +1 -2
  204. package/dist/router/errors/schema-validation.error.js.map +1 -1
  205. package/dist/router/router-context.js +1 -1
  206. package/dist/router/router-context.js.map +1 -1
  207. package/dist/router/router.service.d.ts +1 -1
  208. package/dist/router/router.service.d.ts.map +1 -1
  209. package/dist/router/router.service.js +2 -2
  210. package/dist/router/router.service.js.map +1 -1
  211. package/dist/router/services/request-scope.service.d.ts +2 -4
  212. package/dist/router/services/request-scope.service.d.ts.map +1 -1
  213. package/dist/router/services/request-scope.service.js +2 -4
  214. package/dist/router/services/request-scope.service.js.map +1 -1
  215. package/dist/router/types.d.ts.map +1 -1
  216. package/dist/storage/dom.polyfill.d.ts.map +1 -0
  217. package/dist/storage/dom.polyfill.js.map +1 -0
  218. package/dist/storage/providers/s3-storage.provider.d.ts +1 -1
  219. package/dist/storage/providers/s3-storage.provider.d.ts.map +1 -1
  220. package/dist/storage/services/storage.service.d.ts +2 -5
  221. package/dist/storage/services/storage.service.d.ts.map +1 -1
  222. package/dist/storage/services/storage.service.js +2 -5
  223. package/dist/storage/services/storage.service.js.map +1 -1
  224. package/dist/storage/storage.module.d.ts +1 -1
  225. package/dist/storage/storage.module.js +1 -1
  226. package/dist/worker/stratal-worker.d.ts +2 -1
  227. package/dist/worker/stratal-worker.d.ts.map +1 -1
  228. package/dist/worker/stratal-worker.js +1 -0
  229. package/dist/worker/stratal-worker.js.map +1 -1
  230. package/package.json +30 -25
  231. package/dist/infrastructure/error-handler/error-response.d.ts.map +0 -1
  232. package/dist/infrastructure/error-handler/error-response.js.map +0 -1
  233. package/dist/infrastructure/error-handler/global-error-handler.d.ts.map +0 -1
  234. package/dist/infrastructure/error-handler/global-error-handler.js.map +0 -1
  235. package/dist/infrastructure/error-handler/index.d.ts +0 -6
  236. package/dist/infrastructure/error-handler/index.d.ts.map +0 -1
  237. package/dist/infrastructure/error-handler/index.js +0 -5
  238. package/dist/infrastructure/error-handler/index.js.map +0 -1
  239. package/dist/infrastructure/error-handler/internal-error.d.ts.map +0 -1
  240. package/dist/infrastructure/error-handler/internal-error.js.map +0 -1
  241. package/dist/infrastructure/errors/index.d.ts +0 -2
  242. package/dist/infrastructure/errors/index.d.ts.map +0 -1
  243. package/dist/infrastructure/errors/index.js +0 -2
  244. package/dist/infrastructure/errors/index.js.map +0 -1
  245. package/dist/infrastructure/errors/request-container-not-initialized.error.d.ts.map +0 -1
  246. package/dist/infrastructure/errors/request-container-not-initialized.error.js.map +0 -1
  247. package/dist/infrastructure/index.d.ts +0 -3
  248. package/dist/infrastructure/index.d.ts.map +0 -1
  249. package/dist/infrastructure/index.js +0 -3
  250. package/dist/infrastructure/index.js.map +0 -1
  251. package/dist/polyfills/dom.polyfill.d.ts.map +0 -1
  252. package/dist/polyfills/dom.polyfill.js.map +0 -1
  253. package/dist/polyfills/index.d.ts +0 -8
  254. package/dist/polyfills/index.d.ts.map +0 -1
  255. package/dist/polyfills/index.js +0 -8
  256. package/dist/polyfills/index.js.map +0 -1
  257. package/dist/worker/module-worker.d.ts +0 -48
  258. package/dist/worker/module-worker.d.ts.map +0 -1
  259. package/dist/worker/module-worker.js +0 -88
  260. package/dist/worker/module-worker.js.map +0 -1
  261. /package/dist/{infrastructure/error-handler → errors}/error-response.d.ts +0 -0
  262. /package/dist/{infrastructure/error-handler → errors}/error-response.js +0 -0
  263. /package/dist/{polyfills → storage}/dom.polyfill.d.ts +0 -0
  264. /package/dist/{polyfills → storage}/dom.polyfill.js +0 -0
package/README.md CHANGED
@@ -1,50 +1,126 @@
1
- # stratal
1
+ # Stratal
2
2
 
3
- A modular Cloudflare Workers framework with dependency injection, queue-based events, and type-safe configuration.
3
+ A modular framework for building Cloudflare Workers with dependency injection, OpenAPI documentation, queues, cron jobs, and more.
4
4
 
5
- For full documentation and examples, see the [main README](../../README.md).
5
+ [![npm version](https://img.shields.io/npm/v/stratal)](https://www.npmjs.com/package/stratal)
6
+ [![CI](https://github.com/strataljs/stratal/actions/workflows/ci.yml/badge.svg)](https://github.com/strataljs/stratal/actions/workflows/ci.yml)
7
+ [![Benchmark](https://github.com/strataljs/stratal/actions/workflows/benchmark.yml/badge.svg)](https://github.com/strataljs/stratal/actions/workflows/benchmark.yml)
8
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
9
+ [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/strataljs/stratal/badge)](https://securityscorecards.dev/viewer/?uri=github.com/strataljs/stratal)
10
+ [![Known Vulnerabilities](https://snyk.io/test/github/strataljs/stratal/badge.svg)](https://snyk.io/test/github/strataljs/stratal)
11
+ [![npm downloads](https://img.shields.io/npm/dm/stratal)](https://www.npmjs.com/package/stratal)
12
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5-blue?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
13
+ [![Bundle size](https://img.shields.io/bundlephobia/minzip/stratal)](https://bundlephobia.com/package/stratal)
14
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/strataljs/stratal/pulls)
15
+ [![GitHub stars](https://img.shields.io/github/stars/strataljs/stratal?style=social)](https://github.com/strataljs/stratal)
16
+
17
+ ## Documentation
18
+
19
+ Full guides and examples are available at **[stratal.dev](https://stratal.dev)**. API reference lives at **[api-reference.stratal.dev](https://api-reference.stratal.dev)**.
20
+
21
+ ## Features
22
+
23
+ - **Dependency Injection** — Two-tier DI container (global + request-scoped) powered by tsyringe
24
+ - **OpenAPI Documentation** — Define Zod schemas once and get a full OpenAPI 3.0 spec with interactive docs
25
+ - **Modular Architecture** — NestJS-style modules with lifecycle hooks, dynamic configuration, and middleware
26
+ - **Hono Routing** — Convention-based RESTful controllers with automatic HTTP method mapping
27
+ - **Queue Consumers** — Typed Cloudflare Queue consumers with message-type filtering
28
+ - **Cron Jobs** — Scheduled tasks via Cloudflare Workers cron triggers
29
+ - **Storage** — S3-compatible file storage with presigned URLs and TUS upload support
30
+ - **Email** — Resend and SMTP providers with React Email template support
31
+ - **i18n** — Type-safe internationalization with locale detection from request headers
32
+ - **Guards and Middleware** — Route protection and per-module middleware configuration
33
+
34
+ > **Note:** Stratal is in active development and APIs may change before v1. It is okay to use in projects, but consider pinning your dependency version so that a new patch does not break your existing code.
6
35
 
7
36
  ## Installation
8
37
 
38
+ Scaffold a new project from an official template:
39
+
9
40
  ```bash
10
- npm install stratal
41
+ npm create stratal my-app
42
+ # or
43
+ yarn create stratal my-app
11
44
  # or
12
- yarn add stratal
45
+ pnpm create stratal my-app
13
46
  ```
14
47
 
15
- ### Optional dependencies
48
+ Available templates:
49
+
50
+ | Template | Description | Example |
51
+ |---|---|---|
52
+ | `hello-world` | A minimal Stratal app with a single GET endpoint | [Source](https://github.com/strataljs/stratal/tree/main/examples/01-hello-world) |
53
+ | `crud-api` | RESTful notes API with full CRUD operations and DI | [Source](https://github.com/strataljs/stratal/tree/main/examples/02-crud-api) |
54
+ | `testing` | Vitest + @stratal/testing with Cloudflare worker pool | [Source](https://github.com/strataljs/stratal/tree/main/examples/03-testing) |
55
+ | `guards` | Route protection with @UseGuards and CanActivate | [Source](https://github.com/strataljs/stratal/tree/main/examples/04-guards) |
56
+ | `middleware` | Middleware configuration with apply/exclude/forRoutes | [Source](https://github.com/strataljs/stratal/tree/main/examples/05-middleware) |
57
+ | `queues` | Queue producer/consumer pattern with Cloudflare Queues | [Source](https://github.com/strataljs/stratal/tree/main/examples/06-queues) |
58
+ | `scheduled-tasks` | Cron job scheduling with the CronJob interface | [Source](https://github.com/strataljs/stratal/tree/main/examples/07-scheduled-tasks) |
59
+ | `openapi` | OpenAPI docs with Scalar UI and Zod schema integration | [Source](https://github.com/strataljs/stratal/tree/main/examples/08-openapi) |
60
+
61
+ For benchmarks, see the [main README](https://github.com/strataljs/stratal#benchmarks).
62
+
63
+ You can also specify a template directly:
16
64
 
17
- Stratal keeps heavy integrations optional. Install only what you need:
65
+ ```bash
66
+ npm create stratal my-app -- -t crud-api
67
+ ```
68
+
69
+ Or add Stratal to an existing project:
18
70
 
19
71
  ```bash
20
- # Storage (S3-compatible)
21
- npm install @aws-sdk/client-s3 @aws-sdk/lib-storage @aws-sdk/s3-request-presigner
72
+ npm install stratal
73
+ ```
22
74
 
23
- # Email (Resend provider)
24
- npm install resend react react-dom @react-email/components
75
+ ### AI Agent Skills
25
76
 
26
- # Email (SMTP provider)
27
- npm install nodemailer
77
+ Stratal provides [Agent Skills](https://agentskills.io) for AI coding assistants like Claude Code and Cursor. Install to give your AI agent knowledge of Stratal patterns, conventions, and APIs:
28
78
 
29
- # File uploads (TUS protocol)
30
- npm install @tus/server
79
+ ```bash
80
+ npx skills add strataljs/stratal
31
81
  ```
32
82
 
33
- ## Sub-path Exports
83
+ ## Quick Start
34
84
 
35
- Import specific modules for better tree-shaking:
85
+ Define a module with a controller and wire it up as a Cloudflare Worker:
36
86
 
37
87
  ```typescript
38
- import { Application } from 'stratal' // Core
39
- import { Container } from 'stratal/di' // DI container
40
- import { RouterService } from 'stratal/router' // Routing
41
- import { z } from 'stratal/validation' // Zod + OpenAPI
42
- import { ApplicationError } from 'stratal/errors' // Error types
43
- import { I18nModule } from 'stratal/i18n' // Internationalization
44
- import { CacheModule } from 'stratal/cache' // Caching
45
- import { LoggerService } from 'stratal/logger' // Logging
88
+ import { type ApplicationConfig } from 'stratal'
89
+ import { Module } from 'stratal/module'
90
+ import { Controller, Route, type RouterContext } from 'stratal/router'
91
+ import { StratalWorker } from 'stratal/worker'
92
+ import { z } from 'stratal/validation'
93
+
94
+ // Define a controller
95
+ @Controller('/api/greetings')
96
+ class GreetingsController {
97
+ @Route({
98
+ summary: 'Say hello',
99
+ response: z.object({ message: z.string() }),
100
+ })
101
+ async index(ctx: RouterContext) {
102
+ return ctx.json({ message: 'Hello from Stratal!' })
103
+ }
104
+ }
105
+
106
+ // Create the root module
107
+ @Module({
108
+ controllers: [GreetingsController],
109
+ })
110
+ class AppModule {}
111
+
112
+ // Worker entry point
113
+ export default class Backend extends StratalWorker {
114
+ protected configure(): ApplicationConfig {
115
+ return { module: AppModule }
116
+ }
117
+ }
46
118
  ```
47
119
 
120
+ ## Contributing
121
+
122
+ Contributions are welcome! Please see [CONTRIBUTING.md](https://github.com/strataljs/stratal/blob/main/CONTRIBUTING.md) for guidelines.
123
+
48
124
  ## License
49
125
 
50
126
  MIT
@@ -1,4 +1,3 @@
1
- import 'reflect-metadata';
2
1
  import { Container } from './di/container';
3
2
  import { type StratalEnv } from './env';
4
3
  import { LogLevel } from './logger';
@@ -1 +1 @@
1
- {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAA;AAMzB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,OAAO,CAAA;AAGvC,OAAO,EAAiE,QAAQ,EAAmB,MAAM,UAAU,CAAA;AAEnH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAMhE,OAAO,EAAkD,KAAK,aAAa,EAAE,MAAM,UAAU,CAAA;AAG7F,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,MAAM,EAAE,WAAW,GAAG,aAAa,CAAA;IACnC,oEAAoE;IACpE,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,QAAQ,CAAA;QAChB,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;KAC9B,CAAA;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,WAAW;IAapB,QAAQ,CAAC,GAAG,EAAE,UAAU;IACxB,QAAQ,CAAC,GAAG,EAAE,gBAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAd5B;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAW;IAE7B,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAQ;gBAGhB,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,gBAAgB,EACb,SAAS,EAAE,iBAAiB;IAwB/C;;;;;;;OAOG;IACH,IAAI,SAAS,IAAI,SAAS,CAEzB;IAEK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAkCjC;;;;;OAKG;IACH,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC;IAU5B;;;;;OAKG;IACG,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxE;;OAEG;IACG,eAAe,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAerE;;;;;;;OAOG;IACH,uBAAuB,CAAC,MAAM,SAAO,GAAG,aAAa;IAQ/C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAK/B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;CAO7B"}
1
+ {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,OAAO,CAAA;AAGvC,OAAO,EAAiE,QAAQ,EAAmB,MAAM,UAAU,CAAA;AAEnH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAMhE,OAAO,EAAkD,KAAK,aAAa,EAAE,MAAM,UAAU,CAAA;AAG7F,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,MAAM,EAAE,WAAW,GAAG,aAAa,CAAA;IACnC,oEAAoE;IACpE,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,QAAQ,CAAA;QAChB,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;KAC9B,CAAA;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,WAAW;IAapB,QAAQ,CAAC,GAAG,EAAE,UAAU;IACxB,QAAQ,CAAC,GAAG,EAAE,gBAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAd5B;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAW;IAE7B,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAQ;gBAGhB,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,gBAAgB,EACb,SAAS,EAAE,iBAAiB;IAwB/C;;;;;;;OAOG;IACH,IAAI,SAAS,IAAI,SAAS,CAEzB;IAEK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAkCjC;;;;;OAKG;IACH,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC;IAU5B;;;;;OAKG;IACG,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxE;;OAEG;IACG,eAAe,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAerE;;;;;;;OAOG;IACH,uBAAuB,CAAC,MAAM,SAAO,GAAG,aAAa;IAQ/C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAK/B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;CAO7B"}
@@ -1,11 +1,10 @@
1
- import 'reflect-metadata';
2
1
  import { container as tsyringeRootContainer } from 'tsyringe';
3
2
  import { CacheModule } from './cache';
4
3
  import { CronManager } from './cron/cron-manager';
5
4
  import { Container } from './di/container';
6
5
  import { DI_TOKENS } from './di/tokens';
6
+ import { GlobalErrorHandler } from './errors';
7
7
  import { I18nModule } from './i18n/i18n.module';
8
- import { GlobalErrorHandler } from './infrastructure/error-handler';
9
8
  import { ConsoleTransport, JsonFormatter, LOGGER_TOKENS, LoggerService, LogLevel, PrettyFormatter } from './logger';
10
9
  import { ModuleRegistry } from './module/module-registry';
11
10
  import { OpenAPIModule } from './openapi';
@@ -1 +1 @@
1
- {"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ApplicationError } from '../../infrastructure/error-handler';
1
+ import { ApplicationError } from '../../errors';
2
2
  /**
3
3
  * Error thrown when a cache delete operation fails
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"cache-delete.error.d.ts","sourceRoot":"","sources":["../../../src/cache/errors/cache-delete.error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAErE;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,gBAAgB;gBACxC,GAAG,EAAE,MAAM;CAGxB"}
1
+ {"version":3,"file":"cache-delete.error.d.ts","sourceRoot":"","sources":["../../../src/cache/errors/cache-delete.error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,gBAAgB;gBACxC,GAAG,EAAE,MAAM;CAGxB"}
@@ -1,5 +1,5 @@
1
1
  import { ERROR_CODES } from '../../errors';
2
- import { ApplicationError } from '../../infrastructure/error-handler';
2
+ import { ApplicationError } from '../../errors';
3
3
  /**
4
4
  * Error thrown when a cache delete operation fails
5
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"cache-delete.error.js","sourceRoot":"","sources":["../../../src/cache/errors/cache-delete.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAErE;;;;;GAKG;AACH,MAAM,OAAO,gBAAiB,SAAQ,gBAAgB;IACpD,YAAY,GAAW;QACrB,KAAK,CAAC,2BAA2B,EAAE,WAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;IACtF,CAAC;CACF"}
1
+ {"version":3,"file":"cache-delete.error.js","sourceRoot":"","sources":["../../../src/cache/errors/cache-delete.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C;;;;;GAKG;AACH,MAAM,OAAO,gBAAiB,SAAQ,gBAAgB;IACpD,YAAY,GAAW;QACrB,KAAK,CAAC,2BAA2B,EAAE,WAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;IACtF,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { ApplicationError } from '../../infrastructure/error-handler';
1
+ import { ApplicationError } from '../../errors';
2
2
  /**
3
3
  * Error thrown when a cache get operation fails
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"cache-get.error.d.ts","sourceRoot":"","sources":["../../../src/cache/errors/cache-get.error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAErE;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,gBAAgB;gBACrC,GAAG,EAAE,MAAM;CAGxB"}
1
+ {"version":3,"file":"cache-get.error.d.ts","sourceRoot":"","sources":["../../../src/cache/errors/cache-get.error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,gBAAgB;gBACrC,GAAG,EAAE,MAAM;CAGxB"}
@@ -1,5 +1,5 @@
1
1
  import { ERROR_CODES } from '../../errors';
2
- import { ApplicationError } from '../../infrastructure/error-handler';
2
+ import { ApplicationError } from '../../errors';
3
3
  /**
4
4
  * Error thrown when a cache get operation fails
5
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"cache-get.error.js","sourceRoot":"","sources":["../../../src/cache/errors/cache-get.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAErE;;;;;GAKG;AACH,MAAM,OAAO,aAAc,SAAQ,gBAAgB;IACjD,YAAY,GAAW;QACrB,KAAK,CAAC,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;IACnF,CAAC;CACF"}
1
+ {"version":3,"file":"cache-get.error.js","sourceRoot":"","sources":["../../../src/cache/errors/cache-get.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C;;;;;GAKG;AACH,MAAM,OAAO,aAAc,SAAQ,gBAAgB;IACjD,YAAY,GAAW;QACrB,KAAK,CAAC,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;IACnF,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { ApplicationError } from '../../infrastructure/error-handler';
1
+ import { ApplicationError } from '../../errors';
2
2
  /**
3
3
  * Error thrown when a cache list operation fails
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"cache-list.error.d.ts","sourceRoot":"","sources":["../../../src/cache/errors/cache-list.error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAErE;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;;CAInD"}
1
+ {"version":3,"file":"cache-list.error.d.ts","sourceRoot":"","sources":["../../../src/cache/errors/cache-list.error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;;CAInD"}
@@ -1,5 +1,5 @@
1
1
  import { ERROR_CODES } from '../../errors';
2
- import { ApplicationError } from '../../infrastructure/error-handler';
2
+ import { ApplicationError } from '../../errors';
3
3
  /**
4
4
  * Error thrown when a cache list operation fails
5
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"cache-list.error.js","sourceRoot":"","sources":["../../../src/cache/errors/cache-list.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAErE;;;;GAIG;AACH,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAClD;QACE,KAAK,CAAC,yBAAyB,EAAE,WAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAA;IAC/E,CAAC;CACF"}
1
+ {"version":3,"file":"cache-list.error.js","sourceRoot":"","sources":["../../../src/cache/errors/cache-list.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C;;;;GAIG;AACH,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAClD;QACE,KAAK,CAAC,yBAAyB,EAAE,WAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAA;IAC/E,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { ApplicationError } from '../../infrastructure/error-handler';
1
+ import { ApplicationError } from '../../errors';
2
2
  /**
3
3
  * Error thrown when a cache put operation fails
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"cache-put.error.d.ts","sourceRoot":"","sources":["../../../src/cache/errors/cache-put.error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAErE;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,gBAAgB;gBACrC,GAAG,EAAE,MAAM;CAGxB"}
1
+ {"version":3,"file":"cache-put.error.d.ts","sourceRoot":"","sources":["../../../src/cache/errors/cache-put.error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,gBAAgB;gBACrC,GAAG,EAAE,MAAM;CAGxB"}
@@ -1,5 +1,5 @@
1
1
  import { ERROR_CODES } from '../../errors';
2
- import { ApplicationError } from '../../infrastructure/error-handler';
2
+ import { ApplicationError } from '../../errors';
3
3
  /**
4
4
  * Error thrown when a cache put operation fails
5
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"cache-put.error.js","sourceRoot":"","sources":["../../../src/cache/errors/cache-put.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAErE;;;;;GAKG;AACH,MAAM,OAAO,aAAc,SAAQ,gBAAgB;IACjD,YAAY,GAAW;QACrB,KAAK,CAAC,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;IACnF,CAAC;CACF"}
1
+ {"version":3,"file":"cache-put.error.js","sourceRoot":"","sources":["../../../src/cache/errors/cache-put.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C;;;;;GAKG;AACH,MAAM,OAAO,aAAc,SAAQ,gBAAgB;IACjD,YAAY,GAAW;QACrB,KAAK,CAAC,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;IACnF,CAAC;CACF"}
@@ -47,8 +47,8 @@ export interface IConfigService<T extends object = ModuleConfig> {
47
47
  */
48
48
  get<P extends ConfigPath<T>>(path: P): ConfigPathValue<T, P>;
49
49
  /**
50
- * Set config value at runtime (for tenant overrides)
51
- * @example config.set('email.from.name', 'School Name')
50
+ * Set config value at runtime (for runtime overrides)
51
+ * @example config.set('email.from.name', 'Custom Name')
52
52
  */
53
53
  set<P extends ConfigPath<T>>(path: P, value: ConfigPathValue<T, P>): void;
54
54
  /**
@@ -1,4 +1,4 @@
1
- import { ApplicationError } from '../../infrastructure/error-handler';
1
+ import { ApplicationError } from '../../errors';
2
2
  /**
3
3
  * ConfigNotInitializedError
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"config-not-initialized.error.d.ts","sourceRoot":"","sources":["../../../src/config/errors/config-not-initialized.error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAErE;;;;;;GAMG;AACH,qBAAa,yBAA0B,SAAQ,gBAAgB;;CAO9D"}
1
+ {"version":3,"file":"config-not-initialized.error.d.ts","sourceRoot":"","sources":["../../../src/config/errors/config-not-initialized.error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C;;;;;;GAMG;AACH,qBAAa,yBAA0B,SAAQ,gBAAgB;;CAO9D"}
@@ -1,5 +1,5 @@
1
1
  import { ERROR_CODES } from '../../errors';
2
- import { ApplicationError } from '../../infrastructure/error-handler';
2
+ import { ApplicationError } from '../../errors';
3
3
  /**
4
4
  * ConfigNotInitializedError
5
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"config-not-initialized.error.js","sourceRoot":"","sources":["../../../src/config/errors/config-not-initialized.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAErE;;;;;;GAMG;AACH,MAAM,OAAO,yBAA0B,SAAQ,gBAAgB;IAC7D;QACE,KAAK,CACH,6BAA6B,EAC7B,WAAW,CAAC,MAAM,CAAC,sBAAsB,CAC1C,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"config-not-initialized.error.js","sourceRoot":"","sources":["../../../src/config/errors/config-not-initialized.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C;;;;;;GAMG;AACH,MAAM,OAAO,yBAA0B,SAAQ,gBAAgB;IAC7D;QACE,KAAK,CACH,6BAA6B,EAC7B,WAAW,CAAC,MAAM,CAAC,sBAAsB,CAC1C,CAAA;IACH,CAAC;CACF"}
@@ -2,7 +2,7 @@ import type { ConfigPath, ConfigPathValue, IConfigService, ModuleConfig } from '
2
2
  /**
3
3
  * ConfigService with dot notation support for get/set operations
4
4
  *
5
- * Supports runtime overrides via set() - useful for tenant-specific config.
5
+ * Supports runtime overrides via set() - useful for request-specific config overrides.
6
6
  * Use reset() to restore original values.
7
7
  *
8
8
  * @example
@@ -11,8 +11,8 @@ import type { ConfigPath, ConfigPathValue, IConfigService, ModuleConfig } from '
11
11
  * const url = config.get('database.url')
12
12
  * const fromName = config.get('email.from.name')
13
13
  *
14
- * // Set at runtime (e.g., in middleware for tenant override)
15
- * config.set('email.from.name', tenant.schoolName)
14
+ * // Set at runtime (e.g., in middleware for runtime override)
15
+ * config.set('email.from.name', 'Custom Name')
16
16
  *
17
17
  * // Reset to original
18
18
  * config.reset('email.from.name') // reset specific path
@@ -33,8 +33,8 @@ export declare class ConfigService<T extends object = ModuleConfig> implements I
33
33
  */
34
34
  get<P extends ConfigPath<T>>(path: P): ConfigPathValue<T, P>;
35
35
  /**
36
- * Set config value at runtime (for tenant overrides)
37
- * @example config.set('email.from.name', 'School Name')
36
+ * Set config value at runtime (for runtime overrides)
37
+ * @example config.set('email.from.name', 'Custom Name')
38
38
  */
39
39
  set<P extends ConfigPath<T>>(path: P, value: ConfigPathValue<T, P>): void;
40
40
  /**
@@ -52,6 +52,7 @@ export declare class ConfigService<T extends object = ModuleConfig> implements I
52
52
  has(path: ConfigPath<T>): boolean;
53
53
  private getByPath;
54
54
  private setByPath;
55
+ private isDangerousKey;
55
56
  private ensureInitialized;
56
57
  private deepClone;
57
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.service.d.ts","sourceRoot":"","sources":["../../../src/config/services/config.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAGhG;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,YAAY,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IACtF,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,aAAa,CAAe;IAEpC;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI;IAK3B;;;OAGG;IACH,GAAG,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAK5D;;;OAGG;IACH,GAAG,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI;IAKzE;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;IAUjC;;OAEG;IACH,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC;IAKlB;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO;IAKjC,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,SAAS;CAMlB"}
1
+ {"version":3,"file":"config.service.d.ts","sourceRoot":"","sources":["../../../src/config/services/config.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAGhG;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,YAAY,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IACtF,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,aAAa,CAAe;IAEpC;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI;IAK3B;;;OAGG;IACH,GAAG,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAK5D;;;OAGG;IACH,GAAG,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI;IAKzE;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;IAUjC;;OAEG;IACH,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC;IAKlB;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO;IAKjC,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,SAAS;IAwBjB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,SAAS;CAMlB"}
@@ -10,7 +10,7 @@ import { ConfigNotInitializedError } from '../errors';
10
10
  /**
11
11
  * ConfigService with dot notation support for get/set operations
12
12
  *
13
- * Supports runtime overrides via set() - useful for tenant-specific config.
13
+ * Supports runtime overrides via set() - useful for request-specific config overrides.
14
14
  * Use reset() to restore original values.
15
15
  *
16
16
  * @example
@@ -19,8 +19,8 @@ import { ConfigNotInitializedError } from '../errors';
19
19
  * const url = config.get('database.url')
20
20
  * const fromName = config.get('email.from.name')
21
21
  *
22
- * // Set at runtime (e.g., in middleware for tenant override)
23
- * config.set('email.from.name', tenant.schoolName)
22
+ * // Set at runtime (e.g., in middleware for runtime override)
23
+ * config.set('email.from.name', 'Custom Name')
24
24
  *
25
25
  * // Reset to original
26
26
  * config.reset('email.from.name') // reset specific path
@@ -47,8 +47,8 @@ let ConfigService = class ConfigService {
47
47
  return this.getByPath(this.currentConfig, path);
48
48
  }
49
49
  /**
50
- * Set config value at runtime (for tenant overrides)
51
- * @example config.set('email.from.name', 'School Name')
50
+ * Set config value at runtime (for runtime overrides)
51
+ * @example config.set('email.from.name', 'Custom Name')
52
52
  */
53
53
  set(path, value) {
54
54
  this.ensureInitialized();
@@ -86,6 +86,8 @@ let ConfigService = class ConfigService {
86
86
  const keys = path.split('.');
87
87
  let current = obj;
88
88
  for (const key of keys) {
89
+ if (this.isDangerousKey(key))
90
+ return undefined;
89
91
  if (current === null || current === undefined)
90
92
  return undefined;
91
93
  current = current[key];
@@ -94,15 +96,30 @@ let ConfigService = class ConfigService {
94
96
  }
95
97
  setByPath(obj, path, value) {
96
98
  const keys = path.split('.');
99
+ if (keys.some((key) => this.isDangerousKey(key)))
100
+ return;
97
101
  let current = obj;
98
102
  for (let i = 0; i < keys.length - 1; i++) {
99
103
  const key = keys[i];
100
- if (!(key in current) || typeof current[key] !== 'object' || current[key] === null) {
101
- current[key] = {};
104
+ if (!Object.hasOwn(current, key) || typeof current[key] !== 'object' || current[key] === null) {
105
+ Object.defineProperty(current, key, {
106
+ value: {},
107
+ writable: true,
108
+ enumerable: true,
109
+ configurable: true,
110
+ });
102
111
  }
103
112
  current = current[key];
104
113
  }
105
- current[keys[keys.length - 1]] = value;
114
+ Object.defineProperty(current, keys[keys.length - 1], {
115
+ value,
116
+ writable: true,
117
+ enumerable: true,
118
+ configurable: true,
119
+ });
120
+ }
121
+ isDangerousKey(key) {
122
+ return key === '__proto__' || key === 'constructor' || key === 'prototype';
106
123
  }
107
124
  ensureInitialized() {
108
125
  if (!this.currentConfig) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../../src/config/services/config.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../../src/config/services/config.service.ts"],"names":[],"mappings":"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"}
@@ -7,21 +7,20 @@
7
7
  * @example
8
8
  * ```typescript
9
9
  * @Transient()
10
- * export class TenantCleanupJob implements CronJob {
10
+ * export class DataCleanupJob implements CronJob {
11
11
  * readonly schedule = '0 2 * * *' // Daily at 2 AM UTC
12
12
  *
13
13
  * constructor(
14
- * @inject(DI_TOKENS.Logger) private logger: Logger,
15
- * @inject(TENANTS_TOKENS.TenantsService) private tenantsService: TenantsService
14
+ * @inject(LOGGER_TOKENS.LoggerService) private logger: LoggerService,
16
15
  * ) {}
17
16
  *
18
17
  * async execute(controller: ScheduledController): Promise<void> {
19
- * this.logger.info('Running tenant cleanup')
20
- * await this.tenantsService.cleanupInactiveTenants()
18
+ * this.logger.info('Running data cleanup')
19
+ * await this.cleanupExpiredData()
21
20
  * }
22
21
  *
23
22
  * async onError(error: Error): Promise<void> {
24
- * this.logger.error('Tenant cleanup failed', { error: error.message })
23
+ * this.logger.error('Data cleanup failed', { error: error.message })
25
24
  * }
26
25
  * }
27
26
  * ```
@@ -1 +1 @@
1
- {"version":3,"file":"cron-job.d.ts","sourceRoot":"","sources":["../../src/cron/cron-job.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,OAAO;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IAEzB;;;;;OAKG;IACH,OAAO,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEvD;;;;;;;OAOG;IACH,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACtE"}
1
+ {"version":3,"file":"cron-job.d.ts","sourceRoot":"","sources":["../../src/cron/cron-job.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,OAAO;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IAEzB;;;;;OAKG;IACH,OAAO,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEvD;;;;;;;OAOG;IACH,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACtE"}
@@ -1,4 +1,4 @@
1
- import { ApplicationError } from '../../infrastructure/error-handler';
1
+ import { ApplicationError } from '../../errors';
2
2
  /**
3
3
  * Error thrown when one or more cron jobs fail execution
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"cron-execution.error.d.ts","sourceRoot":"","sources":["../../../src/cron/errors/cron-execution.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAGrE;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,gBAAgB;gBAEtD,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM;CAYjB"}
1
+ {"version":3,"file":"cron-execution.error.d.ts","sourceRoot":"","sources":["../../../src/cron/errors/cron-execution.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAG/C;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,gBAAgB;gBAEtD,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM;CAYjB"}
@@ -1,4 +1,4 @@
1
- import { ApplicationError } from '../../infrastructure/error-handler';
1
+ import { ApplicationError } from '../../errors';
2
2
  import { ERROR_CODES } from '../../errors';
3
3
  /**
4
4
  * Error thrown when one or more cron jobs fail execution
@@ -1 +1 @@
1
- {"version":3,"file":"cron-execution.error.js","sourceRoot":"","sources":["../../../src/cron/errors/cron-execution.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,gBAAgB;IACvD,YACC,QAAgB,EAChB,eAAuB,EACvB,QAAgB;QAEhB,KAAK,CACJ,4BAA4B,EAC5B,WAAW,CAAC,MAAM,CAAC,qBAAqB,EACxC;YACC,QAAQ;YACR,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,QAAQ;SACd,CACD,CAAA;IACF,CAAC;CACD"}
1
+ {"version":3,"file":"cron-execution.error.js","sourceRoot":"","sources":["../../../src/cron/errors/cron-execution.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,gBAAgB;IACvD,YACC,QAAgB,EAChB,eAAuB,EACvB,QAAgB;QAEhB,KAAK,CACJ,4BAA4B,EAC5B,WAAW,CAAC,MAAM,CAAC,qBAAqB,EACxC;YACC,QAAQ;YACR,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,QAAQ;SACd,CACD,CAAA;IACF,CAAC;CACD"}
@@ -88,7 +88,6 @@ export interface ContainerOptions {
88
88
  * @example Request scope (manual lifecycle)
89
89
  * ```typescript
90
90
  * const reqContainer = container.createRequestScope(routerContext)
91
- * reqContainer.registerValue(DI_TOKENS.TenantContext, tenantContext)
92
91
  * await reqContainer.runWithContextStore(async () => {
93
92
  * // use reqContainer...
94
93
  * })
@@ -159,7 +158,6 @@ export declare class Container {
159
158
  *
160
159
  * @param token - DI token for resolution
161
160
  * @param factory - Factory function that receives the Container
162
- * @param scope - Optional lifecycle scope (defaults to Transient)
163
161
  *
164
162
  * @example
165
163
  * ```typescript
@@ -332,7 +330,6 @@ export declare class Container {
332
330
  * @example
333
331
  * ```typescript
334
332
  * const reqContainer = container.createRequestScope(routerContext)
335
- * reqContainer.registerValue(DI_TOKENS.TenantContext, tenantContext)
336
333
  * await reqContainer.runWithContextStore(async () => {
337
334
  * // use reqContainer...
338
335
  * })
@@ -354,7 +351,6 @@ export declare class Container {
354
351
  * @example
355
352
  * ```typescript
356
353
  * const reqContainer = container.createRequestScope(routerContext)
357
- * reqContainer.registerValue(DI_TOKENS.TenantContext, tenantContext)
358
354
  * await reqContainer.runWithContextStore(async () => {
359
355
  * const i18n = reqContainer.resolve(I18N_TOKENS.I18nService)
360
356
  * // ...
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/di/container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/di/container.ts"],"names":[],"mappings":"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"}