@zintrust/core 0.1.19 → 0.1.21

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 (528) hide show
  1. package/README.md +10 -10
  2. package/bin/zintrust-main.d.ts.map +1 -1
  3. package/bin/zintrust-main.js +9 -0
  4. package/package.json +3 -2
  5. package/public/error-pages/404.html +145 -0
  6. package/public/error-pages/500.html +266 -0
  7. package/public/error-pages/error.css +628 -0
  8. package/public/error-pages/error.js +428 -0
  9. package/public/zintrust.svg +30 -0
  10. package/routes/api.d.ts.map +1 -1
  11. package/routes/api.js +41 -17
  12. package/routes/metrics.d.ts +9 -0
  13. package/routes/metrics.d.ts.map +1 -0
  14. package/routes/metrics.js +20 -0
  15. package/routes/openapi.d.ts +9 -0
  16. package/routes/openapi.d.ts.map +1 -0
  17. package/routes/openapi.js +76 -0
  18. package/src/boot/Application.d.ts +2 -2
  19. package/src/boot/Application.d.ts.map +1 -1
  20. package/src/boot/Application.js +66 -13
  21. package/src/boot/Server.d.ts +3 -2
  22. package/src/boot/Server.d.ts.map +1 -1
  23. package/src/boot/Server.js +39 -165
  24. package/src/boot/bootstrap.js +2 -0
  25. package/src/cache/Cache.d.ts +1 -1
  26. package/src/cache/Cache.d.ts.map +1 -1
  27. package/src/cache/CacheDriver.d.ts +4 -0
  28. package/src/cache/CacheDriver.d.ts.map +1 -1
  29. package/src/cache/drivers/KVDriver.d.ts +1 -1
  30. package/src/cache/drivers/KVDriver.d.ts.map +1 -1
  31. package/src/cache/drivers/MemoryDriver.d.ts +1 -1
  32. package/src/cache/drivers/MemoryDriver.d.ts.map +1 -1
  33. package/src/cache/drivers/MemoryDriver.js +16 -0
  34. package/src/cache/drivers/MongoDriver.d.ts +1 -1
  35. package/src/cache/drivers/MongoDriver.d.ts.map +1 -1
  36. package/src/cache/drivers/RedisDriver.d.ts +1 -1
  37. package/src/cache/drivers/RedisDriver.d.ts.map +1 -1
  38. package/src/cli/CLI.d.ts.map +1 -1
  39. package/src/cli/CLI.js +10 -4
  40. package/src/cli/commands/AddCommand.d.ts +2 -2
  41. package/src/cli/commands/AddCommand.d.ts.map +1 -1
  42. package/src/cli/commands/AddCommand.js +135 -58
  43. package/src/cli/commands/ConfigCommand.d.ts +1 -1
  44. package/src/cli/commands/ConfigCommand.d.ts.map +1 -1
  45. package/src/cli/commands/CreateCommand.d.ts +15 -0
  46. package/src/cli/commands/CreateCommand.d.ts.map +1 -0
  47. package/src/cli/commands/CreateCommand.js +143 -0
  48. package/src/cli/commands/D1MigrateCommand.d.ts +1 -1
  49. package/src/cli/commands/D1MigrateCommand.d.ts.map +1 -1
  50. package/src/cli/commands/D1MigrateCommand.js +16 -20
  51. package/src/cli/commands/DbSeedCommand.d.ts +9 -0
  52. package/src/cli/commands/DbSeedCommand.d.ts.map +1 -0
  53. package/src/cli/commands/DbSeedCommand.js +171 -0
  54. package/src/cli/commands/DebugCommand.d.ts +1 -1
  55. package/src/cli/commands/DebugCommand.d.ts.map +1 -1
  56. package/src/cli/commands/FixCommand.d.ts +1 -1
  57. package/src/cli/commands/FixCommand.d.ts.map +1 -1
  58. package/src/cli/commands/JwtDevCommand.d.ts +8 -0
  59. package/src/cli/commands/JwtDevCommand.d.ts.map +1 -0
  60. package/src/cli/commands/JwtDevCommand.js +114 -0
  61. package/src/cli/commands/KeyGenerateCommand.d.ts +1 -1
  62. package/src/cli/commands/KeyGenerateCommand.d.ts.map +1 -1
  63. package/src/cli/commands/LogsCommand.d.ts +2 -2
  64. package/src/cli/commands/LogsCommand.d.ts.map +1 -1
  65. package/src/cli/commands/LogsCommand.js +36 -2
  66. package/src/cli/commands/MakeMailTemplateCommand.d.ts +1 -1
  67. package/src/cli/commands/MakeMailTemplateCommand.d.ts.map +1 -1
  68. package/src/cli/commands/MakeNotificationTemplateCommand.d.ts +1 -1
  69. package/src/cli/commands/MakeNotificationTemplateCommand.d.ts.map +1 -1
  70. package/src/cli/commands/MigrateCommand.d.ts +1 -1
  71. package/src/cli/commands/MigrateCommand.d.ts.map +1 -1
  72. package/src/cli/commands/MigrateCommand.js +324 -35
  73. package/src/cli/commands/NewCommand.d.ts +1 -1
  74. package/src/cli/commands/NewCommand.d.ts.map +1 -1
  75. package/src/cli/commands/NewCommand.js +12 -4
  76. package/src/cli/commands/PluginCommand.d.ts +1 -1
  77. package/src/cli/commands/PluginCommand.d.ts.map +1 -1
  78. package/src/cli/commands/PrepareCommand.d.ts +1 -1
  79. package/src/cli/commands/PrepareCommand.d.ts.map +1 -1
  80. package/src/cli/commands/QACommand.d.ts +2 -2
  81. package/src/cli/commands/QACommand.d.ts.map +1 -1
  82. package/src/cli/commands/RoutesCommand.d.ts +10 -0
  83. package/src/cli/commands/RoutesCommand.d.ts.map +1 -0
  84. package/src/cli/commands/RoutesCommand.js +242 -0
  85. package/src/cli/commands/SimulateCommand.d.ts +1 -1
  86. package/src/cli/commands/SimulateCommand.d.ts.map +1 -1
  87. package/src/cli/commands/index.d.ts +3 -0
  88. package/src/cli/commands/index.d.ts.map +1 -1
  89. package/src/cli/commands/index.js +3 -0
  90. package/src/cli/config/ConfigManager.d.ts +1 -1
  91. package/src/cli/config/ConfigManager.d.ts.map +1 -1
  92. package/src/cli/config/ConfigValidator.d.ts +1 -1
  93. package/src/cli/config/ConfigValidator.d.ts.map +1 -1
  94. package/src/cli/config/ConfigValidator.js +1 -1
  95. package/src/cli/d1/D1SqlMigrations.d.ts +20 -0
  96. package/src/cli/d1/D1SqlMigrations.d.ts.map +1 -0
  97. package/src/cli/d1/D1SqlMigrations.js +229 -0
  98. package/src/cli/d1/WranglerConfig.d.ts +4 -0
  99. package/src/cli/d1/WranglerConfig.d.ts.map +1 -0
  100. package/src/cli/d1/WranglerConfig.js +122 -0
  101. package/src/cli/d1/WranglerD1.d.ts +11 -0
  102. package/src/cli/d1/WranglerD1.d.ts.map +1 -0
  103. package/src/cli/d1/WranglerD1.js +16 -0
  104. package/src/cli/scaffolding/ControllerGenerator.d.ts.map +1 -1
  105. package/src/cli/scaffolding/ControllerGenerator.js +76 -26
  106. package/src/cli/scaffolding/FactoryGenerator.d.ts.map +1 -1
  107. package/src/cli/scaffolding/FactoryGenerator.js +3 -1
  108. package/src/cli/scaffolding/GovernanceScaffolder.d.ts +23 -0
  109. package/src/cli/scaffolding/GovernanceScaffolder.d.ts.map +1 -0
  110. package/src/cli/scaffolding/GovernanceScaffolder.js +327 -0
  111. package/src/cli/scaffolding/MigrationGenerator.d.ts +10 -0
  112. package/src/cli/scaffolding/MigrationGenerator.d.ts.map +1 -1
  113. package/src/cli/scaffolding/MigrationGenerator.js +137 -51
  114. package/src/cli/scaffolding/ModelGenerator.js +1 -1
  115. package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
  116. package/src/cli/scaffolding/ProjectScaffolder.js +36 -4
  117. package/src/cli/scaffolding/RouteGenerator.d.ts.map +1 -1
  118. package/src/cli/scaffolding/RouteGenerator.js +79 -43
  119. package/src/cli/scaffolding/SeederGenerator.d.ts +5 -0
  120. package/src/cli/scaffolding/SeederGenerator.d.ts.map +1 -1
  121. package/src/cli/scaffolding/SeederGenerator.js +63 -15
  122. package/src/cli/scaffolding/ServiceScaffolder.d.ts.map +1 -1
  123. package/src/cli/scaffolding/ServiceScaffolder.js +28 -7
  124. package/src/cli/scaffolding/index.d.ts +2 -0
  125. package/src/cli/scaffolding/index.d.ts.map +1 -1
  126. package/src/cli/scaffolding/index.js +1 -0
  127. package/src/common/index.d.ts +8 -0
  128. package/src/common/index.d.ts.map +1 -1
  129. package/src/common/index.js +28 -0
  130. package/src/common/utility.d.ts +38 -0
  131. package/src/common/utility.d.ts.map +1 -0
  132. package/src/common/utility.js +101 -0
  133. package/src/config/FileLogWriter.d.ts +2 -1
  134. package/src/config/FileLogWriter.d.ts.map +1 -1
  135. package/src/config/FileLogWriter.js +83 -2
  136. package/src/config/app.d.ts.map +1 -1
  137. package/src/config/app.js +3 -1
  138. package/src/config/broadcast.d.ts +14 -28
  139. package/src/config/broadcast.d.ts.map +1 -1
  140. package/src/config/broadcast.js +69 -35
  141. package/src/config/cache.d.ts +13 -45
  142. package/src/config/cache.d.ts.map +1 -1
  143. package/src/config/cache.js +69 -25
  144. package/src/config/cloudflare.d.ts +1 -1
  145. package/src/config/cloudflare.d.ts.map +1 -1
  146. package/src/config/database.d.ts +22 -64
  147. package/src/config/database.d.ts.map +1 -1
  148. package/src/config/database.js +191 -37
  149. package/src/config/env.d.ts +12 -0
  150. package/src/config/env.d.ts.map +1 -1
  151. package/src/config/env.js +14 -0
  152. package/src/config/index.d.ts +33 -137
  153. package/src/config/index.d.ts.map +1 -1
  154. package/src/config/logging/KvLogger.js +1 -1
  155. package/src/config/logging/SlackLogger.js +2 -2
  156. package/src/config/mail.d.ts +19 -55
  157. package/src/config/mail.d.ts.map +1 -1
  158. package/src/config/mail.js +63 -21
  159. package/src/config/middleware.d.ts +44 -1
  160. package/src/config/middleware.d.ts.map +1 -1
  161. package/src/config/middleware.js +157 -5
  162. package/src/config/notification.d.ts +14 -27
  163. package/src/config/notification.d.ts.map +1 -1
  164. package/src/config/notification.js +82 -36
  165. package/src/config/queue.d.ts +21 -51
  166. package/src/config/queue.d.ts.map +1 -1
  167. package/src/config/queue.js +72 -27
  168. package/src/config/security.d.ts +1 -1
  169. package/src/config/security.js +1 -1
  170. package/src/config/storage.d.ts +27 -34
  171. package/src/config/storage.d.ts.map +1 -1
  172. package/src/config/storage.js +97 -56
  173. package/src/config/type.d.ts +13 -2
  174. package/src/config/type.d.ts.map +1 -1
  175. package/src/events/EventDispatcher.d.ts.map +1 -1
  176. package/src/events/EventDispatcher.js +6 -4
  177. package/src/exceptions/ZintrustError.d.ts +7 -0
  178. package/src/exceptions/ZintrustError.d.ts.map +1 -1
  179. package/src/exceptions/ZintrustError.js +56 -0
  180. package/src/features/Auth.d.ts +1 -1
  181. package/src/features/Auth.d.ts.map +1 -1
  182. package/src/features/Auth.js +3 -3
  183. package/src/features/Queue.js +1 -1
  184. package/src/functions/cloudflare.d.ts.map +1 -1
  185. package/src/functions/cloudflare.js +3 -14
  186. package/src/functions/deno.d.ts.map +1 -1
  187. package/src/functions/deno.js +3 -14
  188. package/src/functions/lambda.d.ts.map +1 -1
  189. package/src/functions/lambda.js +3 -14
  190. package/src/health/StartupHealthChecks.js +1 -1
  191. package/src/http/Controller.d.ts +2 -2
  192. package/src/http/Controller.d.ts.map +1 -1
  193. package/src/http/FileUpload.d.ts +68 -0
  194. package/src/http/FileUpload.d.ts.map +1 -0
  195. package/src/http/FileUpload.js +120 -0
  196. package/src/http/Kernel.d.ts +5 -5
  197. package/src/http/Kernel.d.ts.map +1 -1
  198. package/src/http/Kernel.js +139 -23
  199. package/src/http/Request.d.ts +20 -1
  200. package/src/http/Request.d.ts.map +1 -1
  201. package/src/http/Request.js +23 -0
  202. package/src/http/RequestContext.d.ts +6 -0
  203. package/src/http/RequestContext.d.ts.map +1 -1
  204. package/src/http/RequestContext.js +77 -1
  205. package/src/http/Response.d.ts +1 -1
  206. package/src/http/Response.d.ts.map +1 -1
  207. package/src/http/ValidationHelper.d.ts +78 -0
  208. package/src/http/ValidationHelper.d.ts.map +1 -0
  209. package/src/http/ValidationHelper.js +121 -0
  210. package/src/http/error-pages/ErrorPageRenderer.d.ts +17 -0
  211. package/src/http/error-pages/ErrorPageRenderer.d.ts.map +1 -0
  212. package/src/http/error-pages/ErrorPageRenderer.js +88 -0
  213. package/src/http/middleware/BodyParsingMiddleware.d.ts +12 -0
  214. package/src/http/middleware/BodyParsingMiddleware.d.ts.map +1 -0
  215. package/src/http/middleware/BodyParsingMiddleware.js +251 -0
  216. package/src/http/middleware/FileUploadMiddleware.d.ts +12 -0
  217. package/src/http/middleware/FileUploadMiddleware.d.ts.map +1 -0
  218. package/src/http/middleware/FileUploadMiddleware.js +74 -0
  219. package/src/http/parsers/BodyParsers.d.ts +32 -0
  220. package/src/http/parsers/BodyParsers.d.ts.map +1 -0
  221. package/src/http/parsers/BodyParsers.js +159 -0
  222. package/src/http/parsers/MultipartParser.d.ts +33 -0
  223. package/src/http/parsers/MultipartParser.d.ts.map +1 -0
  224. package/src/http/parsers/MultipartParser.js +156 -0
  225. package/src/http/parsers/MultipartParserRegistry.d.ts +34 -0
  226. package/src/http/parsers/MultipartParserRegistry.d.ts.map +1 -0
  227. package/src/http/parsers/MultipartParserRegistry.js +20 -0
  228. package/src/http/validated.d.ts +12 -0
  229. package/src/http/validated.d.ts.map +1 -0
  230. package/src/http/validated.js +41 -0
  231. package/src/index.d.ts +73 -12
  232. package/src/index.d.ts.map +1 -1
  233. package/src/index.js +60 -5
  234. package/src/microservices/PostgresAdapter.d.ts.map +1 -1
  235. package/src/microservices/PostgresAdapter.js +0 -1
  236. package/src/microservices/RequestTracingMiddleware.d.ts +2 -2
  237. package/src/microservices/RequestTracingMiddleware.d.ts.map +1 -1
  238. package/src/microservices/RequestTracingMiddleware.js +3 -0
  239. package/src/microservices/ServiceAuthMiddleware.d.ts +2 -2
  240. package/src/microservices/ServiceAuthMiddleware.d.ts.map +1 -1
  241. package/src/middleware/AuthMiddleware.d.ts +10 -0
  242. package/src/middleware/AuthMiddleware.d.ts.map +1 -0
  243. package/src/middleware/AuthMiddleware.js +16 -0
  244. package/src/middleware/CsrfMiddleware.d.ts +11 -1
  245. package/src/middleware/CsrfMiddleware.d.ts.map +1 -1
  246. package/src/middleware/CsrfMiddleware.js +33 -0
  247. package/src/middleware/JwtAuthMiddleware.d.ts +11 -0
  248. package/src/middleware/JwtAuthMiddleware.d.ts.map +1 -0
  249. package/src/middleware/JwtAuthMiddleware.js +73 -0
  250. package/src/middleware/LoggingMiddleware.d.ts.map +1 -1
  251. package/src/middleware/LoggingMiddleware.js +8 -3
  252. package/src/middleware/MiddlewareStack.d.ts +2 -2
  253. package/src/middleware/MiddlewareStack.d.ts.map +1 -1
  254. package/src/middleware/RateLimiter.d.ts +2 -2
  255. package/src/middleware/RateLimiter.d.ts.map +1 -1
  256. package/src/middleware/SanitizeBodyMiddleware.d.ts +12 -0
  257. package/src/middleware/SanitizeBodyMiddleware.d.ts.map +1 -0
  258. package/src/middleware/SanitizeBodyMiddleware.js +31 -0
  259. package/src/middleware/SecurityMiddleware.d.ts +1 -1
  260. package/src/middleware/SecurityMiddleware.d.ts.map +1 -1
  261. package/src/middleware/SessionMiddleware.d.ts +1 -1
  262. package/src/middleware/SessionMiddleware.d.ts.map +1 -1
  263. package/src/middleware/ValidationMiddleware.d.ts +25 -0
  264. package/src/middleware/ValidationMiddleware.d.ts.map +1 -0
  265. package/src/middleware/ValidationMiddleware.js +251 -0
  266. package/src/migrations/MigrationDiscovery.d.ts +5 -0
  267. package/src/migrations/MigrationDiscovery.d.ts.map +1 -0
  268. package/src/migrations/MigrationDiscovery.js +16 -0
  269. package/src/migrations/MigrationLoader.d.ts +5 -0
  270. package/src/migrations/MigrationLoader.d.ts.map +1 -0
  271. package/src/migrations/MigrationLoader.js +43 -0
  272. package/src/migrations/MigrationLock.d.ts +4 -0
  273. package/src/migrations/MigrationLock.d.ts.map +1 -0
  274. package/src/migrations/MigrationLock.js +33 -0
  275. package/src/migrations/Migrator.d.ts +23 -0
  276. package/src/migrations/Migrator.d.ts.map +1 -0
  277. package/src/migrations/Migrator.js +4 -0
  278. package/src/migrations/MigratorFactory.d.ts +25 -0
  279. package/src/migrations/MigratorFactory.d.ts.map +1 -0
  280. package/src/migrations/MigratorFactory.js +339 -0
  281. package/src/migrations/schema/Blueprint.d.ts +5 -0
  282. package/src/migrations/schema/Blueprint.d.ts.map +1 -0
  283. package/src/migrations/schema/Blueprint.js +189 -0
  284. package/src/migrations/schema/Schema.d.ts +8 -0
  285. package/src/migrations/schema/Schema.d.ts.map +1 -0
  286. package/src/migrations/schema/Schema.js +141 -0
  287. package/src/migrations/schema/SchemaCompiler.d.ts +20 -0
  288. package/src/migrations/schema/SchemaCompiler.d.ts.map +1 -0
  289. package/src/migrations/schema/SchemaCompiler.js +262 -0
  290. package/src/migrations/schema/index.d.ts +5 -0
  291. package/src/migrations/schema/index.d.ts.map +1 -0
  292. package/src/migrations/schema/index.js +3 -0
  293. package/src/migrations/schema/types.d.ts +86 -0
  294. package/src/migrations/schema/types.d.ts.map +1 -0
  295. package/src/migrations/schema/types.js +1 -0
  296. package/src/migrations/types.d.ts +45 -0
  297. package/src/migrations/types.d.ts.map +1 -0
  298. package/src/migrations/types.js +1 -0
  299. package/src/node-singletons/crypto.d.ts +1 -1
  300. package/src/node-singletons/crypto.d.ts.map +1 -1
  301. package/src/node-singletons/crypto.js +1 -1
  302. package/src/node-singletons/fs.d.ts +2 -2
  303. package/src/node-singletons/fs.d.ts.map +1 -1
  304. package/src/node-singletons/fs.js +1 -1
  305. package/src/node-singletons/util.d.ts +6 -0
  306. package/src/node-singletons/util.d.ts.map +1 -0
  307. package/src/node-singletons/util.js +5 -0
  308. package/src/node.d.ts +3 -1
  309. package/src/node.d.ts.map +1 -1
  310. package/src/node.js +6 -2
  311. package/src/observability/OpenTelemetry.d.ts +62 -0
  312. package/src/observability/OpenTelemetry.d.ts.map +1 -0
  313. package/src/observability/OpenTelemetry.js +167 -0
  314. package/src/observability/PrometheusMetrics.d.ts +25 -0
  315. package/src/observability/PrometheusMetrics.d.ts.map +1 -0
  316. package/src/observability/PrometheusMetrics.js +114 -0
  317. package/src/openapi/OpenApiGenerator.d.ts +68 -0
  318. package/src/openapi/OpenApiGenerator.d.ts.map +1 -0
  319. package/src/openapi/OpenApiGenerator.js +287 -0
  320. package/src/orm/Database.d.ts +5 -2
  321. package/src/orm/Database.d.ts.map +1 -1
  322. package/src/orm/Database.js +219 -63
  323. package/src/orm/DatabaseAdapter.d.ts +14 -0
  324. package/src/orm/DatabaseAdapter.d.ts.map +1 -1
  325. package/src/orm/DatabaseAdapterRegistry.d.ts.map +1 -1
  326. package/src/orm/DatabaseAdapterRegistry.js +3 -1
  327. package/src/orm/DatabaseRuntimeRegistration.d.ts.map +1 -1
  328. package/src/orm/DatabaseRuntimeRegistration.js +12 -0
  329. package/src/orm/Model.d.ts +30 -2
  330. package/src/orm/Model.d.ts.map +1 -1
  331. package/src/orm/Model.js +255 -62
  332. package/src/orm/QueryBuilder.d.ts +22 -1
  333. package/src/orm/QueryBuilder.d.ts.map +1 -1
  334. package/src/orm/QueryBuilder.js +406 -99
  335. package/src/orm/Relationships.d.ts +7 -1
  336. package/src/orm/Relationships.d.ts.map +1 -1
  337. package/src/orm/Relationships.js +18 -0
  338. package/src/orm/SchemaCompiler.d.ts +9 -0
  339. package/src/orm/SchemaCompiler.d.ts.map +1 -0
  340. package/src/orm/SchemaCompiler.js +145 -0
  341. package/src/orm/adapters/D1Adapter.d.ts +1 -1
  342. package/src/orm/adapters/D1Adapter.d.ts.map +1 -1
  343. package/src/orm/adapters/MySQLAdapter.d.ts +1 -1
  344. package/src/orm/adapters/MySQLAdapter.d.ts.map +1 -1
  345. package/src/orm/adapters/MySQLAdapter.js +88 -69
  346. package/src/orm/adapters/PostgreSQLAdapter.d.ts +1 -1
  347. package/src/orm/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  348. package/src/orm/adapters/PostgreSQLAdapter.js +88 -69
  349. package/src/orm/adapters/SQLServerAdapter.d.ts +1 -1
  350. package/src/orm/adapters/SQLServerAdapter.d.ts.map +1 -1
  351. package/src/orm/adapters/SQLiteAdapter.d.ts +1 -1
  352. package/src/orm/adapters/SQLiteAdapter.d.ts.map +1 -1
  353. package/src/orm/adapters/SQLiteAdapter.js +59 -3
  354. package/src/orm/maintenance/SqliteMaintenance.d.ts +5 -0
  355. package/src/orm/maintenance/SqliteMaintenance.d.ts.map +1 -0
  356. package/src/orm/maintenance/SqliteMaintenance.js +14 -0
  357. package/src/orm/migrations/MigrationStore.d.ts +38 -0
  358. package/src/orm/migrations/MigrationStore.d.ts.map +1 -0
  359. package/src/orm/migrations/MigrationStore.js +157 -0
  360. package/src/performance/CodeGenerationBenchmark.d.ts.map +1 -1
  361. package/src/performance/Optimizer.d.ts +7 -6
  362. package/src/performance/Optimizer.d.ts.map +1 -1
  363. package/src/performance/Optimizer.js +170 -55
  364. package/src/profiling/MemoryProfiler.d.ts +1 -1
  365. package/src/profiling/MemoryProfiler.d.ts.map +1 -1
  366. package/src/profiling/N1Detector.d.ts +1 -1
  367. package/src/profiling/N1Detector.d.ts.map +1 -1
  368. package/src/profiling/QueryLogger.d.ts +1 -1
  369. package/src/profiling/QueryLogger.d.ts.map +1 -1
  370. package/src/profiling/RequestProfiler.d.ts +3 -3
  371. package/src/profiling/RequestProfiler.d.ts.map +1 -1
  372. package/src/routes/metrics.d.ts +2 -0
  373. package/src/routes/metrics.d.ts.map +1 -0
  374. package/src/routes/metrics.js +1 -0
  375. package/src/routing/CoreRoutes.d.ts +12 -0
  376. package/src/routing/CoreRoutes.d.ts.map +1 -0
  377. package/src/routing/CoreRoutes.js +151 -0
  378. package/src/routing/RouteRegistry.d.ts +39 -0
  379. package/src/routing/RouteRegistry.d.ts.map +1 -0
  380. package/src/routing/RouteRegistry.js +44 -0
  381. package/src/routing/Router.d.ts +26 -9
  382. package/src/routing/Router.d.ts.map +1 -1
  383. package/src/routing/Router.js +79 -35
  384. package/src/routing/common.d.ts +15 -0
  385. package/src/routing/common.d.ts.map +1 -0
  386. package/src/routing/common.js +47 -0
  387. package/src/routing/doc.d.ts +27 -0
  388. package/src/routing/doc.d.ts.map +1 -0
  389. package/src/routing/doc.js +110 -0
  390. package/src/routing/error.d.ts +21 -0
  391. package/src/routing/error.d.ts.map +1 -0
  392. package/src/routing/error.js +126 -0
  393. package/src/routing/errorPages.d.ts +14 -0
  394. package/src/routing/errorPages.d.ts.map +1 -0
  395. package/src/routing/errorPages.js +103 -0
  396. package/src/routing/publicRoot.d.ts +27 -0
  397. package/src/routing/publicRoot.d.ts.map +1 -0
  398. package/src/routing/publicRoot.js +110 -0
  399. package/src/runtime/PluginAutoImports.d.ts +21 -0
  400. package/src/runtime/PluginAutoImports.d.ts.map +1 -0
  401. package/src/runtime/PluginAutoImports.js +59 -0
  402. package/src/runtime/PluginManager.d.ts +1 -5
  403. package/src/runtime/PluginManager.d.ts.map +1 -1
  404. package/src/runtime/PluginManager.js +25 -18
  405. package/src/runtime/RuntimeDetector.d.ts +1 -1
  406. package/src/runtime/RuntimeDetector.d.ts.map +1 -1
  407. package/src/runtime/StartupConfigFileRegistry.d.ts +20 -0
  408. package/src/runtime/StartupConfigFileRegistry.d.ts.map +1 -0
  409. package/src/runtime/StartupConfigFileRegistry.js +44 -0
  410. package/src/runtime/adapters/CloudflareAdapter.d.ts +1 -1
  411. package/src/runtime/adapters/CloudflareAdapter.d.ts.map +1 -1
  412. package/src/runtime/adapters/CloudflareAdapter.js +1 -1
  413. package/src/runtime/adapters/DenoAdapter.d.ts +1 -1
  414. package/src/runtime/adapters/DenoAdapter.d.ts.map +1 -1
  415. package/src/runtime/adapters/DenoAdapter.js +1 -1
  416. package/src/runtime/adapters/LambdaAdapter.d.ts +1 -1
  417. package/src/runtime/adapters/LambdaAdapter.d.ts.map +1 -1
  418. package/src/runtime/adapters/LambdaAdapter.js +1 -1
  419. package/src/runtime/adapters/NodeServerAdapter.d.ts +1 -1
  420. package/src/runtime/adapters/NodeServerAdapter.d.ts.map +1 -1
  421. package/src/runtime/getKernel.d.ts +9 -0
  422. package/src/runtime/getKernel.d.ts.map +1 -0
  423. package/src/runtime/getKernel.js +27 -0
  424. package/src/runtime/useFileLoader.d.ts +26 -0
  425. package/src/runtime/useFileLoader.d.ts.map +1 -0
  426. package/src/runtime/useFileLoader.js +188 -0
  427. package/src/scripts/TemplateImportsCheck.js +40 -0
  428. package/src/scripts/TemplateSync.js +90 -24
  429. package/src/security/Encryptor.d.ts.map +1 -1
  430. package/src/security/Encryptor.js +64 -7
  431. package/src/security/JwtManager.d.ts +1 -0
  432. package/src/security/JwtManager.d.ts.map +1 -1
  433. package/src/security/JwtManager.js +33 -0
  434. package/src/security/Sanitizer.d.ts +76 -0
  435. package/src/security/Sanitizer.d.ts.map +1 -0
  436. package/src/security/Sanitizer.js +412 -0
  437. package/src/security/TokenRevocation.d.ts +7 -0
  438. package/src/security/TokenRevocation.d.ts.map +1 -0
  439. package/src/security/TokenRevocation.js +57 -0
  440. package/src/security/XssProtection.d.ts.map +1 -1
  441. package/src/security/XssProtection.js +62 -14
  442. package/src/seeders/SeederDiscovery.d.ts +5 -0
  443. package/src/seeders/SeederDiscovery.d.ts.map +1 -0
  444. package/src/seeders/SeederDiscovery.js +21 -0
  445. package/src/seeders/SeederLoader.d.ts +5 -0
  446. package/src/seeders/SeederLoader.d.ts.map +1 -0
  447. package/src/seeders/SeederLoader.js +60 -0
  448. package/src/seeders/types.d.ts +18 -0
  449. package/src/seeders/types.d.ts.map +1 -0
  450. package/src/seeders/types.js +1 -0
  451. package/src/session/SessionManager.js +1 -1
  452. package/src/templates/adapters/MySQLAdapter.ts.tpl +109 -85
  453. package/src/templates/adapters/PostgreSQLAdapter.ts.tpl +129 -88
  454. package/src/templates/adapters/SQLServerAdapter.ts.tpl +5 -9
  455. package/src/templates/adapters/SQLiteAdapter.ts.tpl +78 -11
  456. package/src/templates/features/Queue.ts.tpl +3 -2
  457. package/src/templates/project/basic/app/Controllers/AuthController.ts.tpl +217 -0
  458. package/src/templates/project/basic/app/Controllers/UserController.ts.tpl +1 -12
  459. package/src/templates/project/basic/app/Types/controller.ts.tpl +46 -0
  460. package/src/templates/project/basic/config/FileLogWriter.ts.tpl +5 -236
  461. package/src/templates/project/basic/config/SecretsManager.ts.tpl +10 -447
  462. package/src/templates/project/basic/config/StartupConfigValidator.ts.tpl +9 -268
  463. package/src/templates/project/basic/config/app.ts.tpl +13 -153
  464. package/src/templates/project/basic/config/broadcast.ts.tpl +29 -126
  465. package/src/templates/project/basic/config/cache.ts.tpl +12 -70
  466. package/src/templates/project/basic/config/cloudflare.ts.tpl +4 -39
  467. package/src/templates/project/basic/config/constants.ts.tpl +9 -65
  468. package/src/templates/project/basic/config/database.ts.tpl +66 -123
  469. package/src/templates/project/basic/config/env.ts.tpl +5 -169
  470. package/src/templates/project/basic/config/features.ts.tpl +6 -54
  471. package/src/templates/project/basic/config/index.ts.tpl +8 -23
  472. package/src/templates/project/basic/config/logging/HttpLogger.ts.tpl +7 -114
  473. package/src/templates/project/basic/config/mail.ts.tpl +9 -62
  474. package/src/templates/project/basic/config/microservices.ts.tpl +11 -97
  475. package/src/templates/project/basic/config/middleware.ts.tpl +25 -43
  476. package/src/templates/project/basic/config/notification.ts.tpl +13 -114
  477. package/src/templates/project/basic/config/queue.ts.tpl +9 -40
  478. package/src/templates/project/basic/config/security.ts.tpl +11 -163
  479. package/src/templates/project/basic/config/startup.ts.tpl +10 -21
  480. package/src/templates/project/basic/config/storage.ts.tpl +57 -137
  481. package/src/templates/project/basic/config/type.ts.tpl +32 -451
  482. package/src/templates/project/basic/database/factories/UserFactory.ts.tpl +80 -0
  483. package/src/templates/project/basic/database/migrations/create_tasks_table.ts.tpl +28 -0
  484. package/src/templates/project/basic/database/migrations/create_users_table.ts.tpl +29 -0
  485. package/src/templates/project/basic/database/seeders/DatabaseSeeder.ts.tpl +19 -0
  486. package/src/templates/project/basic/database/seeders/UserSeeder.ts.tpl +18 -0
  487. package/src/templates/project/basic/database/seeders/index.ts.tpl +2 -0
  488. package/src/templates/project/basic/routes/api.ts.tpl +71 -33
  489. package/src/templates/project/basic/routes/metrics.ts.tpl +22 -0
  490. package/src/templates/project/basic/src/index.ts.tpl +3 -0
  491. package/src/templates/project/basic/tsconfig.json.tpl +12 -11
  492. package/src/testing/TestEnvironment.d.ts +40 -0
  493. package/src/testing/TestEnvironment.d.ts.map +1 -0
  494. package/src/testing/TestEnvironment.js +141 -0
  495. package/src/testing/TestHttp.d.ts +29 -0
  496. package/src/testing/TestHttp.d.ts.map +1 -0
  497. package/src/testing/TestHttp.js +96 -0
  498. package/src/testing/index.d.ts +5 -0
  499. package/src/testing/index.d.ts.map +1 -0
  500. package/src/testing/index.js +2 -0
  501. package/src/time/DateTime.d.ts +181 -0
  502. package/src/time/DateTime.d.ts.map +1 -0
  503. package/src/time/DateTime.js +300 -0
  504. package/src/time/index.d.ts +7 -0
  505. package/src/time/index.d.ts.map +1 -0
  506. package/src/time/index.js +5 -0
  507. package/src/tools/http/Http.d.ts.map +1 -1
  508. package/src/tools/http/Http.js +4 -0
  509. package/src/tools/mail/drivers/Smtp.js +1 -1
  510. package/src/tools/queue/drivers/InMemory.d.ts +1 -1
  511. package/src/tools/queue/drivers/InMemory.d.ts.map +1 -1
  512. package/src/tools/queue/drivers/InMemory.js +1 -1
  513. package/src/tools/queue/drivers/Redis.d.ts +1 -1
  514. package/src/tools/queue/drivers/Redis.d.ts.map +1 -1
  515. package/src/tools/queue/drivers/Redis.js +1 -1
  516. package/src/validation/ValidationError.d.ts.map +1 -1
  517. package/src/validation/ValidationError.js +4 -2
  518. package/src/validation/Validator.d.ts +49 -16
  519. package/src/validation/Validator.d.ts.map +1 -1
  520. package/src/validation/Validator.js +307 -5
  521. package/src/common/uuid.d.ts +0 -3
  522. package/src/common/uuid.d.ts.map +0 -1
  523. package/src/common/uuid.js +0 -30
  524. package/src/templates/project/basic/.env.example.tpl +0 -74
  525. package/src/templates/project/basic/.env.tpl +0 -166
  526. package/src/templates/project/basic/config/logging/KvLogger.ts.tpl +0 -181
  527. package/src/templates/project/basic/config/logging/SlackLogger.ts.tpl +0 -156
  528. package/src/templates/project/basic/database/migrations/index.ts.tpl +0 -2
@@ -5,33 +5,20 @@
5
5
  * Driver selection must be dynamic (tests may mutate process.env).
6
6
  */
7
7
  import type { KnownNotificationDriverConfig, NotificationDrivers, NotificationProviders } from './type';
8
- export declare const notificationConfig: Readonly<{
9
- /**
10
- * Default notification channel name (normalized).
11
- */
12
- readonly default: string;
13
- /**
14
- * Notification channels.
15
- *
16
- * You may add custom named channels (e.g. `opsSlack`, `smsMarketing`) that
17
- * point to any known driver config.
18
- */
19
- readonly drivers: NotificationDrivers;
20
- /**
21
- * Legacy provider configs (kept for backwards compatibility with wrappers).
22
- */
23
- readonly providers: NotificationProviders;
24
- /**
25
- * Normalized notification channel name.
26
- */
27
- readonly getDriverName: () => string;
28
- /**
29
- * Resolve a channel config.
30
- * - Unknown names throw when explicitly selected.
31
- * - `default` is a reserved alias of the configured default.
32
- */
33
- readonly getDriverConfig: (name?: string) => KnownNotificationDriverConfig;
8
+ export type NotificationConfigOverrides = Partial<{
9
+ default: string;
10
+ drivers: NotificationDrivers;
11
+ providers: NotificationProviders;
34
12
  }>;
35
- export type NotificationConfig = typeof notificationConfig;
13
+ type NotificationRuntimeConfig = {
14
+ default: string;
15
+ drivers: NotificationDrivers;
16
+ providers: NotificationProviders;
17
+ getDriverName: () => string;
18
+ getDriverConfig: (name?: string) => KnownNotificationDriverConfig;
19
+ };
20
+ declare const createNotificationConfig: () => NotificationRuntimeConfig;
21
+ export type NotificationConfig = ReturnType<typeof createNotificationConfig>;
22
+ export declare const notificationConfig: NotificationConfig;
36
23
  export default notificationConfig;
37
24
  //# sourceMappingURL=notification.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../../src/config/notification.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,6BAA6B,EAE7B,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AAuHtB,eAAO,MAAM,kBAAkB;IA1C7B;;OAEG;sBACY,MAAM;IAIrB;;;;;OAKG;sBACY,mBAAmB;IAKlC;;OAEG;wBACc,qBAAqB;IAItC;;OAEG;kCACc,MAAM;IAIvB;;;;OAIG;sCACoB,MAAM,KAAG,6BAA6B;EAKO,CAAC;AACvE,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC;AAE3D,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../../src/config/notification.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,6BAA6B,EAE7B,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AAGtB,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAAC;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,SAAS,EAAE,qBAAqB,CAAC;CAClC,CAAC,CAAC;AAEH,KAAK,yBAAyB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,SAAS,EAAE,qBAAqB,CAAC;IACjC,aAAa,EAAE,MAAM,MAAM,CAAC;IAC5B,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,6BAA6B,CAAC;CACnE,CAAC;AA2EF,QAAA,MAAM,wBAAwB,QAAO,yBA+DpC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAqB7E,eAAO,MAAM,kBAAkB,EAAE,kBAY/B,CAAC;AAEH,eAAe,kBAAkB,CAAC"}
@@ -4,6 +4,7 @@
4
4
  * Config-first mapping of notification providers/channels.
5
5
  * Driver selection must be dynamic (tests may mutate process.env).
6
6
  */
7
+ import { StartupConfigFile, StartupConfigFileRegistry } from '../runtime/StartupConfigFileRegistry.js';
7
8
  import { Env } from './env.js';
8
9
  import { ErrorFactory } from '../exceptions/ZintrustError.js';
9
10
  const normalizeName = (value) => value.trim().toLowerCase();
@@ -61,43 +62,88 @@ const getBaseProviders = () => {
61
62
  },
62
63
  };
63
64
  };
64
- const notificationConfigObj = {
65
- /**
66
- * Default notification channel name (normalized).
67
- */
68
- get default() {
69
- return getDefaultChannel(this.drivers);
70
- },
71
- /**
72
- * Notification channels.
73
- *
74
- * You may add custom named channels (e.g. `opsSlack`, `smsMarketing`) that
75
- * point to any known driver config.
76
- */
77
- get drivers() {
78
- // Return a record of channels; can be extended by app-level config.
79
- return getBaseProviders();
80
- },
81
- /**
82
- * Legacy provider configs (kept for backwards compatibility with wrappers).
83
- */
84
- get providers() {
85
- return getBaseProviders();
65
+ const createNotificationConfig = () => {
66
+ const overrides = StartupConfigFileRegistry.get(StartupConfigFile.Notification) ??
67
+ {};
68
+ const notificationConfigObj = {
69
+ /**
70
+ * Default notification channel name (normalized).
71
+ */
72
+ get default() {
73
+ const overrideDefault = overrides.default;
74
+ if (typeof overrideDefault === 'string' && overrideDefault.trim().length > 0) {
75
+ const value = normalizeName(overrideDefault);
76
+ if (value.length > 0 && hasOwn(this.drivers, value))
77
+ return value;
78
+ throw ErrorFactory.createConfigError(`Notification channel not configured: ${value}`);
79
+ }
80
+ return getDefaultChannel(this.drivers);
81
+ },
82
+ /**
83
+ * Notification channels.
84
+ *
85
+ * You may add custom named channels (e.g. `opsSlack`, `smsMarketing`) that
86
+ * point to any known driver config.
87
+ */
88
+ get drivers() {
89
+ // Return a record of channels; can be extended by app-level config.
90
+ return {
91
+ ...getBaseProviders(),
92
+ ...(overrides.providers ?? {}),
93
+ ...(overrides.drivers ?? {}),
94
+ };
95
+ },
96
+ /**
97
+ * Legacy provider configs (kept for backwards compatibility with wrappers).
98
+ */
99
+ get providers() {
100
+ return {
101
+ ...getBaseProviders(),
102
+ ...(overrides.providers ?? {}),
103
+ };
104
+ },
105
+ /**
106
+ * Normalized notification channel name.
107
+ */
108
+ getDriverName() {
109
+ return normalizeName(this.default);
110
+ },
111
+ /**
112
+ * Resolve a channel config.
113
+ * - Unknown names throw when explicitly selected.
114
+ * - `default` is a reserved alias of the configured default.
115
+ */
116
+ getDriverConfig(name) {
117
+ return getNotificationDriver(this, name);
118
+ },
119
+ };
120
+ return Object.freeze(notificationConfigObj);
121
+ };
122
+ let cached = null;
123
+ const proxyTarget = {};
124
+ const ensureNotificationConfig = () => {
125
+ if (cached)
126
+ return cached;
127
+ cached = createNotificationConfig();
128
+ try {
129
+ Object.defineProperties(proxyTarget, Object.getOwnPropertyDescriptors(cached));
130
+ }
131
+ catch {
132
+ // best-effort
133
+ }
134
+ return cached;
135
+ };
136
+ export const notificationConfig = new Proxy(proxyTarget, {
137
+ get(_target, prop) {
138
+ return ensureNotificationConfig()[prop];
86
139
  },
87
- /**
88
- * Normalized notification channel name.
89
- */
90
- getDriverName() {
91
- return normalizeName(this.default);
140
+ ownKeys() {
141
+ ensureNotificationConfig();
142
+ return Reflect.ownKeys(proxyTarget);
92
143
  },
93
- /**
94
- * Resolve a channel config.
95
- * - Unknown names throw when explicitly selected.
96
- * - `default` is a reserved alias of the configured default.
97
- */
98
- getDriverConfig(name) {
99
- return getNotificationDriver(this, name);
144
+ getOwnPropertyDescriptor(_target, prop) {
145
+ ensureNotificationConfig();
146
+ return Object.getOwnPropertyDescriptor(proxyTarget, prop);
100
147
  },
101
- };
102
- export const notificationConfig = Object.freeze(notificationConfigObj);
148
+ });
103
149
  export default notificationConfig;
@@ -3,61 +3,14 @@
3
3
  * Background job and message queue settings
4
4
  * Sealed namespace for immutability
5
5
  */
6
- import type { QueueDriverName, QueueDriversConfig } from './type';
7
- export declare const queueConfig: Readonly<{
8
- /**
9
- * Default queue driver
10
- */
6
+ import type { QueueConfigWithDrivers, QueueDriverName, QueueDriversConfig } from './type';
7
+ export type QueueConfigOverrides = Partial<{
11
8
  default: QueueDriverName;
12
- /**
13
- * Queue drivers
14
- */
15
- drivers: {
16
- sync: {
17
- driver: "sync";
18
- };
19
- database: {
20
- driver: "database";
21
- table: string;
22
- connection: string;
23
- };
24
- redis: {
25
- driver: "redis";
26
- host: string;
27
- port: number;
28
- password: string;
29
- database: number;
30
- };
31
- rabbitmq: {
32
- driver: "rabbitmq";
33
- host: string;
34
- port: number;
35
- username: string;
36
- password: string;
37
- vhost: string;
38
- };
39
- sqs: {
40
- driver: "sqs";
41
- key: string;
42
- secret: string;
43
- region: string;
44
- queueUrl: string;
45
- };
46
- };
47
- /**
48
- * Get queue driver config
49
- */
50
- getDriver(): QueueDriversConfig[QueueDriverName];
51
- /**
52
- * Failed jobs table
53
- */
9
+ drivers: Partial<QueueDriversConfig>;
54
10
  failed: {
55
11
  database: string;
56
12
  table: string;
57
13
  };
58
- /**
59
- * Job processing
60
- */
61
14
  processing: {
62
15
  timeout: number;
63
16
  retries: number;
@@ -65,5 +18,22 @@ export declare const queueConfig: Readonly<{
65
18
  workers: number;
66
19
  };
67
20
  }>;
68
- export type QueueConfig = typeof queueConfig;
21
+ declare const createQueueConfig: () => {
22
+ default: QueueDriverName;
23
+ drivers: QueueDriversConfig;
24
+ getDriver: (this: QueueConfigWithDrivers) => QueueDriversConfig[QueueDriverName];
25
+ failed: {
26
+ database: string;
27
+ table: string;
28
+ };
29
+ processing: {
30
+ timeout: number;
31
+ retries: number;
32
+ backoff: number;
33
+ workers: number;
34
+ };
35
+ };
36
+ export type QueueConfig = ReturnType<typeof createQueueConfig>;
37
+ export declare const queueConfig: QueueConfig;
38
+ export {};
69
39
  //# sourceMappingURL=queue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/config/queue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAA0B,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AA2EhG,eAAO,MAAM,WAAW;IAnEtB;;OAEG;aACyC,eAAe;IAE3D;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkCH;;OAEG;iBACU,kBAAkB,CAAC,eAAe,CAAC;IAIhD;;OAEG;;;;;IAMH;;OAEG;;;;;;;EASmD,CAAC;AAEzD,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/config/queue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEhG,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC;IACzC,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACpF,CAAC,CAAC;AAOH,QAAA,MAAM,iBAAiB,QAAO;IAC5B,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,CAAC,IAAI,EAAE,sBAAsB,KAAK,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACjF,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CA4FpF,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAqB/D,eAAO,MAAM,WAAW,EAAE,WAYxB,CAAC"}
@@ -4,19 +4,15 @@
4
4
  * Sealed namespace for immutability
5
5
  */
6
6
  import { Env } from './env.js';
7
+ import { StartupConfigFile, StartupConfigFileRegistry } from '../runtime/StartupConfigFileRegistry.js';
7
8
  const getQueueDriver = (config) => {
8
9
  const driverName = config.default;
9
10
  return config.drivers[driverName];
10
11
  };
11
- const queueConfigObj = {
12
- /**
13
- * Default queue driver
14
- */
15
- default: Env.get('QUEUE_DRIVER', 'sync'),
16
- /**
17
- * Queue drivers
18
- */
19
- drivers: {
12
+ const createQueueConfig = () => {
13
+ const overrides = StartupConfigFileRegistry.get(StartupConfigFile.Queue) ?? {};
14
+ const baseDefault = Env.get('QUEUE_DRIVER', 'sync');
15
+ const baseDrivers = {
20
16
  sync: {
21
17
  driver: 'sync',
22
18
  },
@@ -47,28 +43,77 @@ const queueConfigObj = {
47
43
  region: Env.AWS_REGION,
48
44
  queueUrl: Env.get('AWS_SQS_QUEUE_URL'),
49
45
  },
50
- },
51
- /**
52
- * Get queue driver config
53
- */
54
- getDriver() {
55
- return getQueueDriver(this);
56
- },
57
- /**
58
- * Failed jobs table
59
- */
60
- failed: {
46
+ };
47
+ const baseFailed = {
61
48
  database: Env.get('FAILED_JOBS_DB_CONNECTION', 'default'),
62
49
  table: Env.get('FAILED_JOBS_TABLE', 'failed_jobs'),
63
- },
64
- /**
65
- * Job processing
66
- */
67
- processing: {
50
+ };
51
+ const baseProcessing = {
68
52
  timeout: Env.getInt('QUEUE_JOB_TIMEOUT', 60),
69
53
  retries: Env.getInt('QUEUE_JOB_RETRIES', 3),
70
54
  backoff: Env.getInt('QUEUE_JOB_BACKOFF', 0),
71
55
  workers: Env.getInt('QUEUE_WORKERS', 1),
72
- },
56
+ };
57
+ const mergedDrivers = {
58
+ ...baseDrivers,
59
+ ...(overrides.drivers ?? {}),
60
+ };
61
+ const queueConfigObj = {
62
+ /**
63
+ * Default queue driver
64
+ */
65
+ default: (overrides.default ?? baseDefault),
66
+ /**
67
+ * Queue drivers
68
+ */
69
+ drivers: mergedDrivers,
70
+ /**
71
+ * Get queue driver config
72
+ */
73
+ getDriver() {
74
+ return getQueueDriver(this);
75
+ },
76
+ /**
77
+ * Failed jobs table
78
+ */
79
+ failed: {
80
+ ...baseFailed,
81
+ ...(overrides.failed ?? {}),
82
+ },
83
+ /**
84
+ * Job processing
85
+ */
86
+ processing: {
87
+ ...baseProcessing,
88
+ ...(overrides.processing ?? {}),
89
+ },
90
+ };
91
+ return Object.freeze(queueConfigObj);
92
+ };
93
+ let cached = null;
94
+ const proxyTarget = {};
95
+ const ensureQueueConfig = () => {
96
+ if (cached)
97
+ return cached;
98
+ cached = createQueueConfig();
99
+ try {
100
+ Object.defineProperties(proxyTarget, Object.getOwnPropertyDescriptors(cached));
101
+ }
102
+ catch {
103
+ // best-effort
104
+ }
105
+ return cached;
73
106
  };
74
- export const queueConfig = Object.freeze(queueConfigObj);
107
+ export const queueConfig = new Proxy(proxyTarget, {
108
+ get(_target, prop) {
109
+ return ensureQueueConfig()[prop];
110
+ },
111
+ ownKeys() {
112
+ ensureQueueConfig();
113
+ return Reflect.ownKeys(proxyTarget);
114
+ },
115
+ getOwnPropertyDescriptor(_target, prop) {
116
+ ensureQueueConfig();
117
+ return Object.getOwnPropertyDescriptor(proxyTarget, prop);
118
+ },
119
+ });
@@ -23,7 +23,7 @@ export declare const securityConfig: Readonly<{
23
23
  readonly enabled: boolean;
24
24
  readonly secret: string;
25
25
  readonly algorithm: "HS256" | "HS512" | "RS256";
26
- readonly expiresIn: string;
26
+ readonly expiresIn: number;
27
27
  readonly refreshExpiresIn: string;
28
28
  readonly issuer: string;
29
29
  readonly audience: string;
@@ -49,7 +49,7 @@ const securityConfigObj = {
49
49
  return cachedJwtSecret;
50
50
  },
51
51
  algorithm: Env.get('JWT_ALGORITHM', 'HS256'),
52
- expiresIn: Env.get('JWT_EXPIRES_IN', '1h'),
52
+ expiresIn: Env.getInt('JWT_EXPIRES_IN', 60 * 60),
53
53
  refreshExpiresIn: Env.get('JWT_REFRESH_EXPIRES_IN', '7d'),
54
54
  issuer: Env.get('JWT_ISSUER', 'zintrust'),
55
55
  audience: Env.get('JWT_AUDIENCE', 'zintrust-api'),
@@ -4,49 +4,42 @@
4
4
  * Sealed namespace for immutability
5
5
  */
6
6
  import type { StorageConfigRuntime, StorageDriverConfig, StorageDrivers } from './type';
7
- export declare const storageConfig: Readonly<{
8
- /**
9
- * Default storage driver (dynamic; tests may mutate process.env)
10
- */
11
- readonly default: string;
12
- /**
13
- * Storage drivers configuration (dynamic; tests may mutate process.env)
14
- */
15
- readonly drivers: StorageDrivers;
16
- /**
17
- * Get storage driver config
18
- */
19
- getDriver(this: StorageConfigRuntime): StorageDriverConfig;
20
- /**
21
- * Get a storage disk configuration by name.
22
- *
23
- * - When `name` is provided and not configured, this throws.
24
- * - When `name` is omitted, it resolves the configured default with a backwards-compatible fallback.
25
- * - Reserved name `default` aliases the configured default.
26
- */
27
- getDriverConfig(this: StorageConfigRuntime, name?: string): StorageDriverConfig;
28
- /**
29
- * Temporary file settings
30
- */
31
- readonly temp: {
7
+ export type StorageConfigOverrides = Partial<{
8
+ default: string;
9
+ drivers: Partial<StorageDrivers> & Record<string, StorageDriverConfig>;
10
+ temp: {
32
11
  path: string;
33
12
  maxAge: number;
34
13
  };
35
- /**
36
- * Uploads settings
37
- */
38
- readonly uploads: {
14
+ uploads: {
39
15
  maxSize: string;
40
16
  allowedMimes: string;
41
17
  path: string;
42
18
  };
43
- /**
44
- * Backups settings
45
- */
46
- readonly backups: {
19
+ backups: {
47
20
  path: string;
48
21
  driver: string;
49
22
  };
50
23
  }>;
51
- export type StorageConfig = typeof storageConfig;
24
+ type StorageRuntimeConfig = StorageConfigRuntime & {
25
+ getDriver: (this: StorageConfigRuntime) => StorageDriverConfig;
26
+ getDriverConfig: (this: StorageConfigRuntime, name?: string) => StorageDriverConfig;
27
+ temp: {
28
+ path: string;
29
+ maxAge: number;
30
+ };
31
+ uploads: {
32
+ maxSize: string;
33
+ allowedMimes: string;
34
+ path: string;
35
+ };
36
+ backups: {
37
+ path: string;
38
+ driver: string;
39
+ };
40
+ };
41
+ declare const createStorageConfig: () => StorageRuntimeConfig;
42
+ export type StorageConfig = ReturnType<typeof createStorageConfig>;
43
+ export declare const storageConfig: StorageConfig;
44
+ export {};
52
45
  //# sourceMappingURL=storage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/config/storage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAmI9F,eAAO,MAAM,aAAa;IAhExB;;OAEG;sBACY,MAAM;IAIrB;;OAEG;sBACY,cAAc;IAI7B;;OAEG;oBACa,oBAAoB,GAAG,mBAAmB;IAI1D;;;;;;OAMG;0BACmB,oBAAoB,SAAS,MAAM,GAAG,mBAAmB;IAI/E;;OAEG;mBACS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAO5C;;OAEG;sBACY;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAQtE;;OAEG;sBACY;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;EAQW,CAAC;AAE7D,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/config/storage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9F,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACvE,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C,CAAC,CAAC;AAEH,KAAK,oBAAoB,GAAG,oBAAoB,GAAG;IACjD,SAAS,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,mBAAmB,CAAC;IAC/D,eAAe,EAAE,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,mBAAmB,CAAC;IACpF,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C,CAAC;AAgEF,QAAA,MAAM,mBAAmB,QAAO,oBAgF/B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAqBnE,eAAO,MAAM,aAAa,EAAE,aAY1B,CAAC"}
@@ -3,6 +3,7 @@
3
3
  * File storage and cloud storage settings
4
4
  * Sealed namespace for immutability
5
5
  */
6
+ import { StartupConfigFile, StartupConfigFileRegistry } from '../runtime/StartupConfigFileRegistry.js';
6
7
  import { Env } from './env.js';
7
8
  import { ErrorFactory } from '../exceptions/ZintrustError.js';
8
9
  const hasOwn = (obj, key) => {
@@ -59,62 +60,102 @@ const getDrivers = () => ({
59
60
  url: Env.get('GCS_URL', ''),
60
61
  },
61
62
  });
62
- const storageConfigObj = {
63
- /**
64
- * Default storage driver (dynamic; tests may mutate process.env)
65
- */
66
- get default() {
67
- return Env.get('STORAGE_CONNECTION', Env.get('STORAGE_DRIVER', 'local')).trim().toLowerCase();
68
- },
69
- /**
70
- * Storage drivers configuration (dynamic; tests may mutate process.env)
71
- */
72
- get drivers() {
73
- return getDrivers();
74
- },
75
- /**
76
- * Get storage driver config
77
- */
78
- getDriver() {
79
- return getStorageDriver(this);
80
- },
81
- /**
82
- * Get a storage disk configuration by name.
83
- *
84
- * - When `name` is provided and not configured, this throws.
85
- * - When `name` is omitted, it resolves the configured default with a backwards-compatible fallback.
86
- * - Reserved name `default` aliases the configured default.
87
- */
88
- getDriverConfig(name) {
89
- return getStorageDriver(this, name);
90
- },
91
- /**
92
- * Temporary file settings
93
- */
94
- get temp() {
95
- return {
96
- path: Env.get('TEMP_PATH', 'storage/temp'),
97
- maxAge: Env.getInt('TEMP_FILE_MAX_AGE', 86400), // 24 hours
98
- };
63
+ const createStorageConfig = () => {
64
+ const overrides = StartupConfigFileRegistry.get(StartupConfigFile.Storage) ?? {};
65
+ const storageConfigObj = {
66
+ /**
67
+ * Default storage driver (dynamic; tests may mutate process.env)
68
+ */
69
+ get default() {
70
+ const base = Env.get('STORAGE_CONNECTION', Env.get('STORAGE_DRIVER', 'local'))
71
+ .trim()
72
+ .toLowerCase();
73
+ const selected = overrides.default ?? base;
74
+ return String(selected).trim().toLowerCase();
75
+ },
76
+ /**
77
+ * Storage drivers configuration (dynamic; tests may mutate process.env)
78
+ */
79
+ get drivers() {
80
+ return {
81
+ ...getDrivers(),
82
+ ...(overrides.drivers ?? {}),
83
+ };
84
+ },
85
+ /**
86
+ * Get storage driver config
87
+ */
88
+ getDriver() {
89
+ return getStorageDriver(this);
90
+ },
91
+ /**
92
+ * Get a storage disk configuration by name.
93
+ *
94
+ * - When `name` is provided and not configured, this throws.
95
+ * - When `name` is omitted, it resolves the configured default with a backwards-compatible fallback.
96
+ * - Reserved name `default` aliases the configured default.
97
+ */
98
+ getDriverConfig(name) {
99
+ return getStorageDriver(this, name);
100
+ },
101
+ /**
102
+ * Temporary file settings
103
+ */
104
+ get temp() {
105
+ return {
106
+ path: Env.get('TEMP_PATH', 'storage/temp'),
107
+ maxAge: Env.getInt('TEMP_FILE_MAX_AGE', 86400), // 24 hours
108
+ ...(overrides.temp ?? {}),
109
+ };
110
+ },
111
+ /**
112
+ * Uploads settings
113
+ */
114
+ get uploads() {
115
+ return {
116
+ maxSize: Env.get('MAX_UPLOAD_SIZE', '100mb'),
117
+ allowedMimes: Env.get('ALLOWED_UPLOAD_MIMES', 'jpg,jpeg,png,pdf,doc,docx'),
118
+ path: Env.get('UPLOADS_PATH', 'storage/uploads'),
119
+ ...(overrides.uploads ?? {}),
120
+ };
121
+ },
122
+ /**
123
+ * Backups settings
124
+ */
125
+ get backups() {
126
+ return {
127
+ path: Env.get('BACKUPS_PATH', 'storage/backups'),
128
+ driver: Env.get('BACKUP_DRIVER', 's3'),
129
+ ...(overrides.backups ?? {}),
130
+ };
131
+ },
132
+ };
133
+ return Object.freeze(storageConfigObj);
134
+ };
135
+ let cached = null;
136
+ const proxyTarget = {};
137
+ const ensureStorageConfig = () => {
138
+ if (cached)
139
+ return cached;
140
+ cached = createStorageConfig();
141
+ try {
142
+ Object.defineProperties(proxyTarget, Object.getOwnPropertyDescriptors(cached));
143
+ }
144
+ catch {
145
+ // best-effort
146
+ }
147
+ return cached;
148
+ };
149
+ export const storageConfig = new Proxy(proxyTarget, {
150
+ get(_target, prop) {
151
+ return ensureStorageConfig()[prop];
99
152
  },
100
- /**
101
- * Uploads settings
102
- */
103
- get uploads() {
104
- return {
105
- maxSize: Env.get('MAX_UPLOAD_SIZE', '100mb'),
106
- allowedMimes: Env.get('ALLOWED_UPLOAD_MIMES', 'jpg,jpeg,png,pdf,doc,docx'),
107
- path: Env.get('UPLOADS_PATH', 'storage/uploads'),
108
- };
153
+ ownKeys() {
154
+ ensureStorageConfig();
155
+ return Reflect.ownKeys(proxyTarget);
109
156
  },
110
- /**
111
- * Backups settings
112
- */
113
- get backups() {
114
- return {
115
- path: Env.get('BACKUPS_PATH', 'storage/backups'),
116
- driver: Env.get('BACKUP_DRIVER', 's3'),
117
- };
157
+ getOwnPropertyDescriptor(_target, prop) {
158
+ ensureStorageConfig();
159
+ return Object.getOwnPropertyDescriptor(proxyTarget, prop);
118
160
  },
119
- };
120
- export const storageConfig = Object.freeze(storageConfigObj);
161
+ });