@zintrust/core 0.1.19 → 0.1.20

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 (495) 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 +2 -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 +18 -3
  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/cache/Cache.d.ts +1 -1
  25. package/src/cache/Cache.d.ts.map +1 -1
  26. package/src/cache/CacheDriver.d.ts +4 -0
  27. package/src/cache/CacheDriver.d.ts.map +1 -1
  28. package/src/cache/drivers/KVDriver.d.ts +1 -1
  29. package/src/cache/drivers/KVDriver.d.ts.map +1 -1
  30. package/src/cache/drivers/MemoryDriver.d.ts +1 -1
  31. package/src/cache/drivers/MemoryDriver.d.ts.map +1 -1
  32. package/src/cache/drivers/MemoryDriver.js +16 -0
  33. package/src/cache/drivers/MongoDriver.d.ts +1 -1
  34. package/src/cache/drivers/MongoDriver.d.ts.map +1 -1
  35. package/src/cache/drivers/RedisDriver.d.ts +1 -1
  36. package/src/cache/drivers/RedisDriver.d.ts.map +1 -1
  37. package/src/cli/CLI.d.ts.map +1 -1
  38. package/src/cli/CLI.js +10 -4
  39. package/src/cli/commands/AddCommand.d.ts +2 -2
  40. package/src/cli/commands/AddCommand.d.ts.map +1 -1
  41. package/src/cli/commands/AddCommand.js +135 -58
  42. package/src/cli/commands/ConfigCommand.d.ts +1 -1
  43. package/src/cli/commands/ConfigCommand.d.ts.map +1 -1
  44. package/src/cli/commands/CreateCommand.d.ts +15 -0
  45. package/src/cli/commands/CreateCommand.d.ts.map +1 -0
  46. package/src/cli/commands/CreateCommand.js +143 -0
  47. package/src/cli/commands/D1MigrateCommand.d.ts +1 -1
  48. package/src/cli/commands/D1MigrateCommand.d.ts.map +1 -1
  49. package/src/cli/commands/D1MigrateCommand.js +16 -20
  50. package/src/cli/commands/DbSeedCommand.d.ts +9 -0
  51. package/src/cli/commands/DbSeedCommand.d.ts.map +1 -0
  52. package/src/cli/commands/DbSeedCommand.js +171 -0
  53. package/src/cli/commands/DebugCommand.d.ts +1 -1
  54. package/src/cli/commands/DebugCommand.d.ts.map +1 -1
  55. package/src/cli/commands/FixCommand.d.ts +1 -1
  56. package/src/cli/commands/FixCommand.d.ts.map +1 -1
  57. package/src/cli/commands/JwtDevCommand.d.ts +8 -0
  58. package/src/cli/commands/JwtDevCommand.d.ts.map +1 -0
  59. package/src/cli/commands/JwtDevCommand.js +114 -0
  60. package/src/cli/commands/KeyGenerateCommand.d.ts +1 -1
  61. package/src/cli/commands/KeyGenerateCommand.d.ts.map +1 -1
  62. package/src/cli/commands/LogsCommand.d.ts +2 -2
  63. package/src/cli/commands/LogsCommand.d.ts.map +1 -1
  64. package/src/cli/commands/LogsCommand.js +36 -2
  65. package/src/cli/commands/MakeMailTemplateCommand.d.ts +1 -1
  66. package/src/cli/commands/MakeMailTemplateCommand.d.ts.map +1 -1
  67. package/src/cli/commands/MakeNotificationTemplateCommand.d.ts +1 -1
  68. package/src/cli/commands/MakeNotificationTemplateCommand.d.ts.map +1 -1
  69. package/src/cli/commands/MigrateCommand.d.ts +1 -1
  70. package/src/cli/commands/MigrateCommand.d.ts.map +1 -1
  71. package/src/cli/commands/MigrateCommand.js +291 -35
  72. package/src/cli/commands/NewCommand.d.ts +1 -1
  73. package/src/cli/commands/NewCommand.d.ts.map +1 -1
  74. package/src/cli/commands/NewCommand.js +12 -4
  75. package/src/cli/commands/PluginCommand.d.ts +1 -1
  76. package/src/cli/commands/PluginCommand.d.ts.map +1 -1
  77. package/src/cli/commands/PrepareCommand.d.ts +1 -1
  78. package/src/cli/commands/PrepareCommand.d.ts.map +1 -1
  79. package/src/cli/commands/QACommand.d.ts +2 -2
  80. package/src/cli/commands/QACommand.d.ts.map +1 -1
  81. package/src/cli/commands/RoutesCommand.d.ts +10 -0
  82. package/src/cli/commands/RoutesCommand.d.ts.map +1 -0
  83. package/src/cli/commands/RoutesCommand.js +242 -0
  84. package/src/cli/commands/SimulateCommand.d.ts +1 -1
  85. package/src/cli/commands/SimulateCommand.d.ts.map +1 -1
  86. package/src/cli/commands/index.d.ts +3 -0
  87. package/src/cli/commands/index.d.ts.map +1 -1
  88. package/src/cli/commands/index.js +3 -0
  89. package/src/cli/config/ConfigManager.d.ts +1 -1
  90. package/src/cli/config/ConfigManager.d.ts.map +1 -1
  91. package/src/cli/config/ConfigValidator.d.ts +1 -1
  92. package/src/cli/config/ConfigValidator.d.ts.map +1 -1
  93. package/src/cli/config/ConfigValidator.js +1 -1
  94. package/src/cli/d1/D1SqlMigrations.d.ts +20 -0
  95. package/src/cli/d1/D1SqlMigrations.d.ts.map +1 -0
  96. package/src/cli/d1/D1SqlMigrations.js +224 -0
  97. package/src/cli/d1/WranglerConfig.d.ts +4 -0
  98. package/src/cli/d1/WranglerConfig.d.ts.map +1 -0
  99. package/src/cli/d1/WranglerConfig.js +122 -0
  100. package/src/cli/d1/WranglerD1.d.ts +11 -0
  101. package/src/cli/d1/WranglerD1.d.ts.map +1 -0
  102. package/src/cli/d1/WranglerD1.js +16 -0
  103. package/src/cli/scaffolding/ControllerGenerator.d.ts.map +1 -1
  104. package/src/cli/scaffolding/ControllerGenerator.js +72 -22
  105. package/src/cli/scaffolding/FactoryGenerator.d.ts.map +1 -1
  106. package/src/cli/scaffolding/FactoryGenerator.js +3 -1
  107. package/src/cli/scaffolding/GovernanceScaffolder.d.ts +23 -0
  108. package/src/cli/scaffolding/GovernanceScaffolder.d.ts.map +1 -0
  109. package/src/cli/scaffolding/GovernanceScaffolder.js +327 -0
  110. package/src/cli/scaffolding/MigrationGenerator.d.ts +10 -0
  111. package/src/cli/scaffolding/MigrationGenerator.d.ts.map +1 -1
  112. package/src/cli/scaffolding/MigrationGenerator.js +137 -51
  113. package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
  114. package/src/cli/scaffolding/ProjectScaffolder.js +36 -4
  115. package/src/cli/scaffolding/RouteGenerator.d.ts.map +1 -1
  116. package/src/cli/scaffolding/RouteGenerator.js +79 -43
  117. package/src/cli/scaffolding/SeederGenerator.d.ts +5 -0
  118. package/src/cli/scaffolding/SeederGenerator.d.ts.map +1 -1
  119. package/src/cli/scaffolding/SeederGenerator.js +63 -15
  120. package/src/cli/scaffolding/ServiceScaffolder.d.ts.map +1 -1
  121. package/src/cli/scaffolding/ServiceScaffolder.js +24 -3
  122. package/src/cli/scaffolding/index.d.ts +2 -0
  123. package/src/cli/scaffolding/index.d.ts.map +1 -1
  124. package/src/cli/scaffolding/index.js +1 -0
  125. package/src/common/index.d.ts +8 -0
  126. package/src/common/index.d.ts.map +1 -1
  127. package/src/common/index.js +28 -0
  128. package/src/common/utility.d.ts +38 -0
  129. package/src/common/utility.d.ts.map +1 -0
  130. package/src/common/utility.js +101 -0
  131. package/src/config/FileLogWriter.d.ts +2 -1
  132. package/src/config/FileLogWriter.d.ts.map +1 -1
  133. package/src/config/FileLogWriter.js +83 -2
  134. package/src/config/app.d.ts.map +1 -1
  135. package/src/config/app.js +3 -1
  136. package/src/config/broadcast.d.ts +1 -1
  137. package/src/config/broadcast.d.ts.map +1 -1
  138. package/src/config/cache.d.ts +1 -1
  139. package/src/config/cache.d.ts.map +1 -1
  140. package/src/config/cloudflare.d.ts +1 -1
  141. package/src/config/cloudflare.d.ts.map +1 -1
  142. package/src/config/database.d.ts +1 -1
  143. package/src/config/database.d.ts.map +1 -1
  144. package/src/config/database.js +92 -6
  145. package/src/config/env.d.ts +6 -0
  146. package/src/config/env.d.ts.map +1 -1
  147. package/src/config/env.js +7 -0
  148. package/src/config/index.d.ts +1 -1
  149. package/src/config/logging/KvLogger.js +1 -1
  150. package/src/config/logging/SlackLogger.js +2 -2
  151. package/src/config/middleware.d.ts +20 -1
  152. package/src/config/middleware.d.ts.map +1 -1
  153. package/src/config/middleware.js +135 -3
  154. package/src/config/security.d.ts +1 -1
  155. package/src/config/security.js +1 -1
  156. package/src/config/type.d.ts +1 -1
  157. package/src/config/type.d.ts.map +1 -1
  158. package/src/events/EventDispatcher.d.ts.map +1 -1
  159. package/src/events/EventDispatcher.js +6 -4
  160. package/src/exceptions/ZintrustError.d.ts +7 -0
  161. package/src/exceptions/ZintrustError.d.ts.map +1 -1
  162. package/src/exceptions/ZintrustError.js +56 -0
  163. package/src/features/Auth.d.ts +1 -1
  164. package/src/features/Auth.d.ts.map +1 -1
  165. package/src/features/Auth.js +3 -3
  166. package/src/features/Queue.js +1 -1
  167. package/src/functions/cloudflare.d.ts.map +1 -1
  168. package/src/functions/cloudflare.js +3 -14
  169. package/src/functions/deno.d.ts.map +1 -1
  170. package/src/functions/deno.js +3 -14
  171. package/src/functions/lambda.d.ts.map +1 -1
  172. package/src/functions/lambda.js +3 -14
  173. package/src/health/StartupHealthChecks.js +1 -1
  174. package/src/http/Controller.d.ts +2 -2
  175. package/src/http/Controller.d.ts.map +1 -1
  176. package/src/http/FileUpload.d.ts +68 -0
  177. package/src/http/FileUpload.d.ts.map +1 -0
  178. package/src/http/FileUpload.js +120 -0
  179. package/src/http/Kernel.d.ts +5 -5
  180. package/src/http/Kernel.d.ts.map +1 -1
  181. package/src/http/Kernel.js +139 -23
  182. package/src/http/Request.d.ts +20 -1
  183. package/src/http/Request.d.ts.map +1 -1
  184. package/src/http/Request.js +23 -0
  185. package/src/http/RequestContext.d.ts +6 -0
  186. package/src/http/RequestContext.d.ts.map +1 -1
  187. package/src/http/RequestContext.js +77 -1
  188. package/src/http/Response.d.ts +1 -1
  189. package/src/http/Response.d.ts.map +1 -1
  190. package/src/http/ValidationHelper.d.ts +78 -0
  191. package/src/http/ValidationHelper.d.ts.map +1 -0
  192. package/src/http/ValidationHelper.js +121 -0
  193. package/src/http/error-pages/ErrorPageRenderer.d.ts +17 -0
  194. package/src/http/error-pages/ErrorPageRenderer.d.ts.map +1 -0
  195. package/src/http/error-pages/ErrorPageRenderer.js +88 -0
  196. package/src/http/middleware/BodyParsingMiddleware.d.ts +12 -0
  197. package/src/http/middleware/BodyParsingMiddleware.d.ts.map +1 -0
  198. package/src/http/middleware/BodyParsingMiddleware.js +251 -0
  199. package/src/http/middleware/FileUploadMiddleware.d.ts +12 -0
  200. package/src/http/middleware/FileUploadMiddleware.d.ts.map +1 -0
  201. package/src/http/middleware/FileUploadMiddleware.js +74 -0
  202. package/src/http/parsers/BodyParsers.d.ts +32 -0
  203. package/src/http/parsers/BodyParsers.d.ts.map +1 -0
  204. package/src/http/parsers/BodyParsers.js +159 -0
  205. package/src/http/parsers/MultipartParser.d.ts +33 -0
  206. package/src/http/parsers/MultipartParser.d.ts.map +1 -0
  207. package/src/http/parsers/MultipartParser.js +129 -0
  208. package/src/http/parsers/MultipartParserRegistry.d.ts +34 -0
  209. package/src/http/parsers/MultipartParserRegistry.d.ts.map +1 -0
  210. package/src/http/parsers/MultipartParserRegistry.js +20 -0
  211. package/src/http/validated.d.ts +12 -0
  212. package/src/http/validated.d.ts.map +1 -0
  213. package/src/http/validated.js +41 -0
  214. package/src/index.d.ts +64 -7
  215. package/src/index.d.ts.map +1 -1
  216. package/src/index.js +59 -5
  217. package/src/microservices/RequestTracingMiddleware.d.ts +2 -2
  218. package/src/microservices/RequestTracingMiddleware.d.ts.map +1 -1
  219. package/src/microservices/RequestTracingMiddleware.js +3 -0
  220. package/src/microservices/ServiceAuthMiddleware.d.ts +2 -2
  221. package/src/microservices/ServiceAuthMiddleware.d.ts.map +1 -1
  222. package/src/middleware/AuthMiddleware.d.ts +10 -0
  223. package/src/middleware/AuthMiddleware.d.ts.map +1 -0
  224. package/src/middleware/AuthMiddleware.js +16 -0
  225. package/src/middleware/CsrfMiddleware.d.ts +11 -1
  226. package/src/middleware/CsrfMiddleware.d.ts.map +1 -1
  227. package/src/middleware/CsrfMiddleware.js +33 -0
  228. package/src/middleware/JwtAuthMiddleware.d.ts +11 -0
  229. package/src/middleware/JwtAuthMiddleware.d.ts.map +1 -0
  230. package/src/middleware/JwtAuthMiddleware.js +73 -0
  231. package/src/middleware/LoggingMiddleware.d.ts.map +1 -1
  232. package/src/middleware/LoggingMiddleware.js +8 -3
  233. package/src/middleware/MiddlewareStack.d.ts +2 -2
  234. package/src/middleware/MiddlewareStack.d.ts.map +1 -1
  235. package/src/middleware/RateLimiter.d.ts +2 -2
  236. package/src/middleware/RateLimiter.d.ts.map +1 -1
  237. package/src/middleware/SanitizeBodyMiddleware.d.ts +12 -0
  238. package/src/middleware/SanitizeBodyMiddleware.d.ts.map +1 -0
  239. package/src/middleware/SanitizeBodyMiddleware.js +31 -0
  240. package/src/middleware/SecurityMiddleware.d.ts +1 -1
  241. package/src/middleware/SecurityMiddleware.d.ts.map +1 -1
  242. package/src/middleware/SessionMiddleware.d.ts +1 -1
  243. package/src/middleware/SessionMiddleware.d.ts.map +1 -1
  244. package/src/middleware/ValidationMiddleware.d.ts +25 -0
  245. package/src/middleware/ValidationMiddleware.d.ts.map +1 -0
  246. package/src/middleware/ValidationMiddleware.js +251 -0
  247. package/src/migrations/MigrationDiscovery.d.ts +5 -0
  248. package/src/migrations/MigrationDiscovery.d.ts.map +1 -0
  249. package/src/migrations/MigrationDiscovery.js +16 -0
  250. package/src/migrations/MigrationLoader.d.ts +5 -0
  251. package/src/migrations/MigrationLoader.d.ts.map +1 -0
  252. package/src/migrations/MigrationLoader.js +43 -0
  253. package/src/migrations/MigrationLock.d.ts +4 -0
  254. package/src/migrations/MigrationLock.d.ts.map +1 -0
  255. package/src/migrations/MigrationLock.js +33 -0
  256. package/src/migrations/Migrator.d.ts +23 -0
  257. package/src/migrations/Migrator.d.ts.map +1 -0
  258. package/src/migrations/Migrator.js +4 -0
  259. package/src/migrations/MigratorFactory.d.ts +25 -0
  260. package/src/migrations/MigratorFactory.d.ts.map +1 -0
  261. package/src/migrations/MigratorFactory.js +323 -0
  262. package/src/migrations/schema/Blueprint.d.ts +5 -0
  263. package/src/migrations/schema/Blueprint.d.ts.map +1 -0
  264. package/src/migrations/schema/Blueprint.js +189 -0
  265. package/src/migrations/schema/Schema.d.ts +8 -0
  266. package/src/migrations/schema/Schema.d.ts.map +1 -0
  267. package/src/migrations/schema/Schema.js +141 -0
  268. package/src/migrations/schema/SchemaCompiler.d.ts +20 -0
  269. package/src/migrations/schema/SchemaCompiler.d.ts.map +1 -0
  270. package/src/migrations/schema/SchemaCompiler.js +262 -0
  271. package/src/migrations/schema/index.d.ts +5 -0
  272. package/src/migrations/schema/index.d.ts.map +1 -0
  273. package/src/migrations/schema/index.js +3 -0
  274. package/src/migrations/schema/types.d.ts +86 -0
  275. package/src/migrations/schema/types.d.ts.map +1 -0
  276. package/src/migrations/schema/types.js +1 -0
  277. package/src/migrations/types.d.ts +45 -0
  278. package/src/migrations/types.d.ts.map +1 -0
  279. package/src/migrations/types.js +1 -0
  280. package/src/node-singletons/crypto.d.ts +1 -1
  281. package/src/node-singletons/crypto.d.ts.map +1 -1
  282. package/src/node-singletons/crypto.js +1 -1
  283. package/src/node-singletons/fs.d.ts +2 -2
  284. package/src/node-singletons/fs.d.ts.map +1 -1
  285. package/src/node-singletons/fs.js +1 -1
  286. package/src/node-singletons/util.d.ts +6 -0
  287. package/src/node-singletons/util.d.ts.map +1 -0
  288. package/src/node-singletons/util.js +5 -0
  289. package/src/node.d.ts +3 -1
  290. package/src/node.d.ts.map +1 -1
  291. package/src/node.js +6 -2
  292. package/src/observability/OpenTelemetry.d.ts +62 -0
  293. package/src/observability/OpenTelemetry.d.ts.map +1 -0
  294. package/src/observability/OpenTelemetry.js +167 -0
  295. package/src/observability/PrometheusMetrics.d.ts +25 -0
  296. package/src/observability/PrometheusMetrics.d.ts.map +1 -0
  297. package/src/observability/PrometheusMetrics.js +114 -0
  298. package/src/openapi/OpenApiGenerator.d.ts +68 -0
  299. package/src/openapi/OpenApiGenerator.d.ts.map +1 -0
  300. package/src/openapi/OpenApiGenerator.js +287 -0
  301. package/src/orm/Database.d.ts +4 -2
  302. package/src/orm/Database.d.ts.map +1 -1
  303. package/src/orm/Database.js +142 -29
  304. package/src/orm/DatabaseAdapter.d.ts +13 -0
  305. package/src/orm/DatabaseAdapter.d.ts.map +1 -1
  306. package/src/orm/DatabaseAdapterRegistry.d.ts.map +1 -1
  307. package/src/orm/DatabaseAdapterRegistry.js +3 -1
  308. package/src/orm/Model.d.ts +30 -2
  309. package/src/orm/Model.d.ts.map +1 -1
  310. package/src/orm/Model.js +255 -62
  311. package/src/orm/QueryBuilder.d.ts +22 -1
  312. package/src/orm/QueryBuilder.d.ts.map +1 -1
  313. package/src/orm/QueryBuilder.js +405 -99
  314. package/src/orm/Relationships.d.ts +7 -1
  315. package/src/orm/Relationships.d.ts.map +1 -1
  316. package/src/orm/Relationships.js +18 -0
  317. package/src/orm/SchemaCompiler.d.ts +9 -0
  318. package/src/orm/SchemaCompiler.d.ts.map +1 -0
  319. package/src/orm/SchemaCompiler.js +145 -0
  320. package/src/orm/adapters/D1Adapter.d.ts +1 -1
  321. package/src/orm/adapters/D1Adapter.d.ts.map +1 -1
  322. package/src/orm/adapters/MySQLAdapter.d.ts +1 -1
  323. package/src/orm/adapters/MySQLAdapter.d.ts.map +1 -1
  324. package/src/orm/adapters/MySQLAdapter.js +88 -69
  325. package/src/orm/adapters/PostgreSQLAdapter.d.ts +1 -1
  326. package/src/orm/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  327. package/src/orm/adapters/PostgreSQLAdapter.js +88 -69
  328. package/src/orm/adapters/SQLServerAdapter.d.ts +1 -1
  329. package/src/orm/adapters/SQLServerAdapter.d.ts.map +1 -1
  330. package/src/orm/adapters/SQLiteAdapter.d.ts +1 -1
  331. package/src/orm/adapters/SQLiteAdapter.d.ts.map +1 -1
  332. package/src/orm/adapters/SQLiteAdapter.js +58 -2
  333. package/src/orm/maintenance/SqliteMaintenance.d.ts +5 -0
  334. package/src/orm/maintenance/SqliteMaintenance.d.ts.map +1 -0
  335. package/src/orm/maintenance/SqliteMaintenance.js +14 -0
  336. package/src/orm/migrations/MigrationStore.d.ts +38 -0
  337. package/src/orm/migrations/MigrationStore.d.ts.map +1 -0
  338. package/src/orm/migrations/MigrationStore.js +157 -0
  339. package/src/performance/CodeGenerationBenchmark.d.ts.map +1 -1
  340. package/src/performance/Optimizer.d.ts +1 -0
  341. package/src/performance/Optimizer.d.ts.map +1 -1
  342. package/src/performance/Optimizer.js +37 -3
  343. package/src/profiling/MemoryProfiler.d.ts +1 -1
  344. package/src/profiling/MemoryProfiler.d.ts.map +1 -1
  345. package/src/profiling/N1Detector.d.ts +1 -1
  346. package/src/profiling/N1Detector.d.ts.map +1 -1
  347. package/src/profiling/QueryLogger.d.ts +1 -1
  348. package/src/profiling/QueryLogger.d.ts.map +1 -1
  349. package/src/profiling/RequestProfiler.d.ts +3 -3
  350. package/src/profiling/RequestProfiler.d.ts.map +1 -1
  351. package/src/routes/metrics.d.ts +2 -0
  352. package/src/routes/metrics.d.ts.map +1 -0
  353. package/src/routes/metrics.js +1 -0
  354. package/src/routing/CoreRoutes.d.ts +12 -0
  355. package/src/routing/CoreRoutes.d.ts.map +1 -0
  356. package/src/routing/CoreRoutes.js +151 -0
  357. package/src/routing/RouteRegistry.d.ts +39 -0
  358. package/src/routing/RouteRegistry.d.ts.map +1 -0
  359. package/src/routing/RouteRegistry.js +44 -0
  360. package/src/routing/Router.d.ts +26 -9
  361. package/src/routing/Router.d.ts.map +1 -1
  362. package/src/routing/Router.js +79 -35
  363. package/src/routing/common.d.ts +15 -0
  364. package/src/routing/common.d.ts.map +1 -0
  365. package/src/routing/common.js +47 -0
  366. package/src/routing/doc.d.ts +28 -0
  367. package/src/routing/doc.d.ts.map +1 -0
  368. package/src/routing/doc.js +95 -0
  369. package/src/routing/error.d.ts +21 -0
  370. package/src/routing/error.d.ts.map +1 -0
  371. package/src/routing/error.js +126 -0
  372. package/src/routing/errorPages.d.ts +14 -0
  373. package/src/routing/errorPages.d.ts.map +1 -0
  374. package/src/routing/errorPages.js +103 -0
  375. package/src/routing/publicRoot.d.ts +18 -0
  376. package/src/routing/publicRoot.d.ts.map +1 -0
  377. package/src/routing/publicRoot.js +49 -0
  378. package/src/runtime/PluginAutoImports.d.ts +21 -0
  379. package/src/runtime/PluginAutoImports.d.ts.map +1 -0
  380. package/src/runtime/PluginAutoImports.js +59 -0
  381. package/src/runtime/PluginManager.d.ts +1 -5
  382. package/src/runtime/PluginManager.d.ts.map +1 -1
  383. package/src/runtime/PluginManager.js +25 -18
  384. package/src/runtime/RuntimeDetector.d.ts +1 -1
  385. package/src/runtime/RuntimeDetector.d.ts.map +1 -1
  386. package/src/runtime/adapters/CloudflareAdapter.d.ts +1 -1
  387. package/src/runtime/adapters/CloudflareAdapter.d.ts.map +1 -1
  388. package/src/runtime/adapters/CloudflareAdapter.js +1 -1
  389. package/src/runtime/adapters/DenoAdapter.d.ts +1 -1
  390. package/src/runtime/adapters/DenoAdapter.d.ts.map +1 -1
  391. package/src/runtime/adapters/DenoAdapter.js +1 -1
  392. package/src/runtime/adapters/LambdaAdapter.d.ts +1 -1
  393. package/src/runtime/adapters/LambdaAdapter.d.ts.map +1 -1
  394. package/src/runtime/adapters/LambdaAdapter.js +1 -1
  395. package/src/runtime/adapters/NodeServerAdapter.d.ts +1 -1
  396. package/src/runtime/adapters/NodeServerAdapter.d.ts.map +1 -1
  397. package/src/runtime/getKernel.d.ts +9 -0
  398. package/src/runtime/getKernel.d.ts.map +1 -0
  399. package/src/runtime/getKernel.js +27 -0
  400. package/src/scripts/TemplateImportsCheck.js +40 -0
  401. package/src/scripts/TemplateSync.js +86 -20
  402. package/src/security/Encryptor.d.ts.map +1 -1
  403. package/src/security/Encryptor.js +64 -7
  404. package/src/security/JwtManager.d.ts +1 -0
  405. package/src/security/JwtManager.d.ts.map +1 -1
  406. package/src/security/JwtManager.js +33 -0
  407. package/src/security/Sanitizer.d.ts +76 -0
  408. package/src/security/Sanitizer.d.ts.map +1 -0
  409. package/src/security/Sanitizer.js +412 -0
  410. package/src/security/TokenRevocation.d.ts +7 -0
  411. package/src/security/TokenRevocation.d.ts.map +1 -0
  412. package/src/security/TokenRevocation.js +57 -0
  413. package/src/seeders/SeederDiscovery.d.ts +5 -0
  414. package/src/seeders/SeederDiscovery.d.ts.map +1 -0
  415. package/src/seeders/SeederDiscovery.js +21 -0
  416. package/src/seeders/SeederLoader.d.ts +5 -0
  417. package/src/seeders/SeederLoader.d.ts.map +1 -0
  418. package/src/seeders/SeederLoader.js +60 -0
  419. package/src/seeders/types.d.ts +18 -0
  420. package/src/seeders/types.d.ts.map +1 -0
  421. package/src/seeders/types.js +1 -0
  422. package/src/session/SessionManager.js +1 -1
  423. package/src/templates/adapters/MySQLAdapter.ts.tpl +109 -85
  424. package/src/templates/adapters/PostgreSQLAdapter.ts.tpl +129 -88
  425. package/src/templates/adapters/SQLServerAdapter.ts.tpl +5 -9
  426. package/src/templates/adapters/SQLiteAdapter.ts.tpl +78 -11
  427. package/src/templates/features/Queue.ts.tpl +3 -2
  428. package/src/templates/project/basic/app/Controllers/AuthController.ts.tpl +217 -0
  429. package/src/templates/project/basic/app/Controllers/UserController.ts.tpl +1 -12
  430. package/src/templates/project/basic/app/Types/controller.ts.tpl +46 -0
  431. package/src/templates/project/basic/config/FileLogWriter.ts.tpl +5 -236
  432. package/src/templates/project/basic/config/SecretsManager.ts.tpl +10 -447
  433. package/src/templates/project/basic/config/StartupConfigValidator.ts.tpl +9 -268
  434. package/src/templates/project/basic/config/app.ts.tpl +13 -153
  435. package/src/templates/project/basic/config/broadcast.ts.tpl +15 -128
  436. package/src/templates/project/basic/config/cache.ts.tpl +15 -91
  437. package/src/templates/project/basic/config/cloudflare.ts.tpl +4 -39
  438. package/src/templates/project/basic/config/constants.ts.tpl +9 -65
  439. package/src/templates/project/basic/config/database.ts.tpl +29 -122
  440. package/src/templates/project/basic/config/env.ts.tpl +5 -169
  441. package/src/templates/project/basic/config/features.ts.tpl +6 -54
  442. package/src/templates/project/basic/config/index.ts.tpl +8 -23
  443. package/src/templates/project/basic/config/mail.ts.tpl +15 -114
  444. package/src/templates/project/basic/config/microservices.ts.tpl +11 -97
  445. package/src/templates/project/basic/config/middleware.ts.tpl +25 -43
  446. package/src/templates/project/basic/config/notification.ts.tpl +14 -126
  447. package/src/templates/project/basic/config/queue.ts.tpl +16 -79
  448. package/src/templates/project/basic/config/security.ts.tpl +11 -163
  449. package/src/templates/project/basic/config/startup.ts.tpl +10 -21
  450. package/src/templates/project/basic/config/storage.ts.tpl +15 -132
  451. package/src/templates/project/basic/config/type.ts.tpl +33 -451
  452. package/src/templates/project/basic/database/factories/UserFactory.ts.tpl +80 -0
  453. package/src/templates/project/basic/database/migrations/create_tasks_table.ts.tpl +28 -0
  454. package/src/templates/project/basic/database/migrations/create_users_table.ts.tpl +29 -0
  455. package/src/templates/project/basic/database/seeders/DatabaseSeeder.ts.tpl +19 -0
  456. package/src/templates/project/basic/database/seeders/UserSeeder.ts.tpl +18 -0
  457. package/src/templates/project/basic/database/seeders/index.ts.tpl +2 -0
  458. package/src/templates/project/basic/routes/api.ts.tpl +71 -33
  459. package/src/templates/project/basic/routes/metrics.ts.tpl +22 -0
  460. package/src/templates/project/basic/tsconfig.json.tpl +12 -11
  461. package/src/testing/TestEnvironment.d.ts +40 -0
  462. package/src/testing/TestEnvironment.d.ts.map +1 -0
  463. package/src/testing/TestEnvironment.js +141 -0
  464. package/src/testing/TestHttp.d.ts +29 -0
  465. package/src/testing/TestHttp.d.ts.map +1 -0
  466. package/src/testing/TestHttp.js +96 -0
  467. package/src/testing/index.d.ts +5 -0
  468. package/src/testing/index.d.ts.map +1 -0
  469. package/src/testing/index.js +2 -0
  470. package/src/time/DateTime.d.ts +181 -0
  471. package/src/time/DateTime.d.ts.map +1 -0
  472. package/src/time/DateTime.js +300 -0
  473. package/src/time/index.d.ts +7 -0
  474. package/src/time/index.d.ts.map +1 -0
  475. package/src/time/index.js +5 -0
  476. package/src/tools/http/Http.d.ts.map +1 -1
  477. package/src/tools/http/Http.js +4 -0
  478. package/src/tools/mail/drivers/Smtp.js +1 -1
  479. package/src/tools/queue/drivers/InMemory.d.ts +1 -1
  480. package/src/tools/queue/drivers/InMemory.d.ts.map +1 -1
  481. package/src/tools/queue/drivers/InMemory.js +1 -1
  482. package/src/tools/queue/drivers/Redis.d.ts +1 -1
  483. package/src/tools/queue/drivers/Redis.d.ts.map +1 -1
  484. package/src/tools/queue/drivers/Redis.js +1 -1
  485. package/src/validation/ValidationError.d.ts.map +1 -1
  486. package/src/validation/ValidationError.js +4 -2
  487. package/src/validation/Validator.d.ts +49 -16
  488. package/src/validation/Validator.d.ts.map +1 -1
  489. package/src/validation/Validator.js +307 -5
  490. package/src/common/uuid.d.ts +0 -3
  491. package/src/common/uuid.d.ts.map +0 -1
  492. package/src/common/uuid.js +0 -30
  493. package/src/templates/project/basic/.env.example.tpl +0 -74
  494. package/src/templates/project/basic/.env.tpl +0 -166
  495. package/src/templates/project/basic/database/migrations/index.ts.tpl +0 -2
@@ -1,170 +1,18 @@
1
1
  /**
2
- * Security Configuration
3
- * JWT, CSRF, encryption and other security settings
4
- * Sealed namespace for immutability
2
+ * Security Configuration (template)
5
3
  *
6
- * APP_KEY: Primary encryption key for storage signing and app-level encryption.
7
- * Set automatically during project scaffolding.
8
- *
9
- * Security keys can be configured per domain:
10
- * - APP_KEY: Default encryption key for all operations (auto-generated)
11
- * - API_KEY_SECRET: Optional API key authentication (if API_KEY_ENABLED=true)
12
- * - ENCRYPTION_CIPHER: Cipher for encrypted envelope interoperability
13
- * - JWT_SECRET: JWT token signing key
14
- *
15
- * Developers can use a single APP_KEY or configure separate keys for different
16
- * security domains (e.g., different keys for different microservices).
4
+ * Keep this file declarative:
5
+ * - Core owns env parsing/default logic.
6
+ * - Projects can override values by editing `securityConfigObj`.
17
7
  */
18
8
 
19
- import { appConfig } from '@zintrust/core';
20
- import { Env } from '@zintrust/core';
21
- import { Logger } from '@zintrust/core';
22
- import { ErrorFactory } from '@zintrust/core';
23
-
24
- /**
25
- * Helper to warn about missing secrets
26
- */
27
- function warnMissingSecret(secretName: string): string {
28
- Logger.error(`❌ CRITICAL: ${secretName} environment variable is not set!`);
29
- Logger.error('⚠️ Application may not function correctly. Set this in production immediately.');
30
- if (appConfig.isProduction()) {
31
- throw ErrorFactory.createConfigError(`Missing required secret: ${secretName}`, { secretName });
32
- }
33
-
34
- // In non-production environments, allow the app/CLI to start while still warning loudly.
35
- // This is intentionally predictable for local development and test tooling.
36
- return 'dev-unsafe-jwt-secret';
37
- }
38
-
39
- let cachedJwtSecret: string | undefined;
40
-
41
- const securityConfigObj = {
42
- /**
43
- * JWT Configuration
44
- */
45
- jwt: {
46
- enabled: Env.getBool('JWT_ENABLED', true),
47
- get secret(): string {
48
- if (cachedJwtSecret !== undefined) return cachedJwtSecret;
49
- const isEnabled = Env.getBool('JWT_ENABLED', true);
50
- cachedJwtSecret = isEnabled
51
- ? Env.get('JWT_SECRET') || warnMissingSecret('JWT_SECRET')
52
- : Env.get('JWT_SECRET') || '';
53
- return cachedJwtSecret;
54
- },
55
- algorithm: Env.get('JWT_ALGORITHM', 'HS256') as 'HS256' | 'HS512' | 'RS256',
56
- expiresIn: Env.get('JWT_EXPIRES_IN', '1h'),
57
- refreshExpiresIn: Env.get('JWT_REFRESH_EXPIRES_IN', '7d'),
58
- issuer: Env.get('JWT_ISSUER', 'zintrust'),
59
- audience: Env.get('JWT_AUDIENCE', 'zintrust-api'),
60
- },
61
-
62
- /**
63
- * CSRF Protection
64
- */
65
- csrf: {
66
- enabled: Env.getBool('CSRF_ENABLED', true),
67
- headerName: Env.get('CSRF_HEADER_NAME', 'x-csrf-token'),
68
- tokenName: Env.get('CSRF_TOKEN_NAME', '_csrf'),
69
- cookieName: Env.get('CSRF_COOKIE_NAME', 'XSRF-TOKEN'),
70
- cookieHttpOnly: Env.getBool('CSRF_COOKIE_HTTP_ONLY', true),
71
- cookieSecure: Env.getBool('CSRF_COOKIE_SECURE', true),
72
- cookieSameSite: Env.get('CSRF_COOKIE_SAME_SITE', 'strict') as 'strict' | 'lax' | 'none',
73
- },
74
-
75
- /**
76
- * Encryption
77
- */
78
- encryption: {
79
- // Required for framework-compatible encrypted payloads.
80
- // Supported values: aes-256-cbc | aes-256-gcm (case-insensitive)
81
- cipher: Env.get('ENCRYPTION_CIPHER', ''),
82
-
83
- // Primary key used for encryption interoperability (framework-compatible envelopes).
84
- // APP_KEY supports both `base64:...` and raw base64.
85
- appKey: Env.get('APP_KEY', ''),
86
- appPreviousKeys: Env.get('APP_PREVIOUS_KEYS', ''),
87
-
88
- // Back-compat fields (not used by EncryptedEnvelope)
89
- algorithm: Env.get('ENCRYPTION_ALGORITHM', 'aes-256-cbc'),
90
- key: Env.get('ENCRYPTION_KEY', 'your-encryption-key'),
91
- },
92
-
93
- /**
94
- * API Key Authentication
95
- */
96
- apiKey: {
97
- enabled: Env.getBool('API_KEY_ENABLED', false),
98
- headerName: Env.get('API_KEY_HEADER', 'x-api-key'),
99
- secret: Env.get('API_KEY_SECRET'),
100
- },
101
-
102
- /**
103
- * CORS Configuration
104
- */
105
- cors: {
106
- enabled: Env.getBool('CORS_ENABLED', true),
107
- origins: Env.get('CORS_ORIGINS', '*').split(','),
108
- methods: Env.get('CORS_METHODS', 'GET,POST,PUT,PATCH,DELETE').split(','),
109
- allowedHeaders: Env.get('CORS_ALLOWED_HEADERS', 'Content-Type,Authorization').split(','),
110
- exposedHeaders: Env.get('CORS_EXPOSED_HEADERS', '').split(','),
111
- credentials: Env.getBool('CORS_CREDENTIALS', false),
112
- maxAge: Env.getInt('CORS_MAX_AGE', 86400),
113
- },
114
-
115
- /**
116
- * Rate Limiting
117
- */
118
- rateLimit: {
119
- enabled: Env.getBool('RATE_LIMIT_ENABLED', true),
120
- windowMs: Env.getInt('RATE_LIMIT_WINDOW_MS', 900000), // 15 minutes
121
- maxRequests: Env.getInt('RATE_LIMIT_MAX_REQUESTS', 100),
122
- message: Env.get('RATE_LIMIT_MESSAGE', 'Too many requests, please try again later'),
123
- },
124
-
125
- /**
126
- * XSS Protection
127
- */
128
- xss: {
129
- enabled: Env.getBool('XSS_ENABLED', true),
130
- reportUri: Env.get('XSS_REPORT_URI'),
131
- },
132
-
133
- /**
134
- * Helmet Security Headers
135
- */
136
- helmet: {
137
- enabled: Env.getBool('HELMET_ENABLED', true),
138
- contentSecurityPolicy: Env.getBool('CSP_ENABLED', true),
139
- hsts: {
140
- enabled: Env.getBool('HSTS_ENABLED', true),
141
- maxAge: Env.getInt('HSTS_MAX_AGE', 31536000),
142
- includeSubDomains: Env.getBool('HSTS_INCLUDE_SUBDOMAINS', true),
143
- },
144
- },
9
+ import { securityConfig as coreSecurityConfig } from '@zintrust/core';
145
10
 
146
- /**
147
- * Session Configuration
148
- */
149
- session: {
150
- name: Env.get('SESSION_NAME', 'zintrust_session'),
151
- secret: Env.get('SESSION_SECRET', 'your-session-secret'),
152
- expiresIn: Env.getInt('SESSION_EXPIRES_IN', 1800000), // 30 minutes
153
- secure: Env.getBool('SESSION_SECURE', true),
154
- httpOnly: Env.getBool('SESSION_HTTP_ONLY', true),
155
- sameSite: Env.get('SESSION_SAME_SITE', 'strict') as 'strict' | 'lax' | 'none',
156
- },
11
+ type SecurityConfigShape = typeof coreSecurityConfig;
157
12
 
158
- /**
159
- * Password settings
160
- */
161
- password: {
162
- minLength: Env.getInt('PASSWORD_MIN_LENGTH', 8),
163
- requireUppercase: Env.getBool('PASSWORD_REQUIRE_UPPERCASE', true),
164
- requireNumbers: Env.getBool('PASSWORD_REQUIRE_NUMBERS', true),
165
- requireSpecialChars: Env.getBool('PASSWORD_REQUIRE_SPECIAL_CHARS', true),
166
- bcryptRounds: Env.getInt('BCRYPT_ROUNDS', 10),
167
- },
168
- } as const;
13
+ export const securityConfigObj = {
14
+ ...coreSecurityConfig,
15
+ } satisfies SecurityConfigShape;
169
16
 
170
- export const securityConfig = Object.freeze(securityConfigObj);
17
+ const securityConfig = securityConfigObj;
18
+ export default securityConfig;
@@ -1,29 +1,18 @@
1
1
  /**
2
- * Startup Configuration
2
+ * Startup Configuration (template)
3
3
  *
4
- * Startup-only controls (evaluated during Application.boot()).
4
+ * Keep this file declarative:
5
+ * - Core owns env parsing/default logic.
6
+ * - Projects can override values by editing `startupConfigObj`.
5
7
  */
6
8
 
7
- import { Env } from '@zintrust/core';
9
+ import { startupConfig as coreStartupConfig } from '@zintrust/core';
8
10
 
9
- export type StartupConfig = {
10
- healthChecksEnabled: boolean;
11
- validateSecrets: boolean;
12
- requireEnv: boolean;
13
- checkDatabase: boolean;
14
- checkCache: boolean;
15
- timeoutMs: number;
16
- continueOnFailure: boolean;
17
- };
11
+ export type StartupConfig = typeof coreStartupConfig;
18
12
 
19
- export const startupConfig = Object.freeze({
20
- healthChecksEnabled: Env.getBool('STARTUP_HEALTH_CHECKS', true),
21
- validateSecrets: Env.getBool('STARTUP_VALIDATE_SECRETS', true),
22
- requireEnv: Env.getBool('STARTUP_REQUIRE_ENV', false),
23
- checkDatabase: Env.getBool('STARTUP_CHECK_DB', false),
24
- checkCache: Env.getBool('STARTUP_CHECK_CACHE', false),
25
- timeoutMs: Env.getInt('STARTUP_HEALTH_TIMEOUT_MS', 2500),
26
- continueOnFailure: Env.getBool('STARTUP_CONTINUE_ON_FAILURE', false),
27
- } satisfies StartupConfig);
13
+ export const startupConfigObj = {
14
+ ...coreStartupConfig,
15
+ } satisfies StartupConfig;
28
16
 
17
+ export const startupConfig = startupConfigObj;
29
18
  export default startupConfig;
@@ -1,140 +1,23 @@
1
1
  /**
2
- * Storage Configuration
3
- * File storage and cloud storage settings
4
- * Sealed namespace for immutability
2
+ * Storage Configuration (template)
3
+ *
4
+ * Keep this file declarative:
5
+ * - Core owns env parsing/default logic.
6
+ * - Projects can override values by editing `drivers` and `storageConfigObj`.
5
7
  */
6
8
 
7
- import type { StorageConfigRuntime, StorageDriverConfig, StorageDrivers } from '@zintrust/core';
8
- import { ErrorFactory , Env} from '@zintrust/core';
9
+ import { storageConfig as coreStorageConfig } from '@zintrust/core';
9
10
 
10
- const hasOwn = <T extends object>(obj: T, key: PropertyKey): key is keyof T => {
11
- return Object.hasOwn(obj, key);
12
- };
11
+ type StorageConfigShape = typeof coreStorageConfig;
13
12
 
14
- const getStorageDriver = (config: StorageConfigRuntime, name?: string): StorageDriverConfig => {
15
- const selected = String(name ?? config.default).trim();
16
- const diskName = selected === 'default' ? String(config.default).trim() : selected;
17
- const isExplicitSelection =
18
- name !== undefined && String(name).trim().length > 0 && String(name).trim() !== 'default';
13
+ export const drivers = {
14
+ ...coreStorageConfig.drivers,
15
+ } satisfies StorageConfigShape['drivers'];
19
16
 
20
- if (diskName !== '' && hasOwn(config.drivers, diskName)) {
21
- const resolved = config.drivers[diskName];
22
- if (resolved !== undefined) return resolved;
23
- }
24
-
25
- if (isExplicitSelection) {
26
- throw ErrorFactory.createConfigError(`Storage disk not configured: ${diskName}`);
27
- }
28
-
29
- if (Object.keys(config.drivers ?? {}).length === 0) {
30
- throw ErrorFactory.createConfigError('No storage disks are configured');
31
- }
32
-
33
- throw ErrorFactory.createConfigError(
34
- `Storage default disk not configured: ${diskName || '<empty>'}`
35
- );
36
- };
37
-
38
- const getDrivers = (): StorageDrivers => ({
39
- local: {
40
- driver: 'local' as const,
41
- root: Env.get('STORAGE_PATH', 'storage'),
42
- url: Env.get('STORAGE_URL', '/storage'),
43
- visibility: Env.get('STORAGE_VISIBILITY', 'private'),
44
- },
45
- s3: {
46
- driver: 's3' as const,
47
- accessKeyId: Env.get('AWS_ACCESS_KEY_ID', ''),
48
- secretAccessKey: Env.get('AWS_SECRET_ACCESS_KEY', ''),
49
- region: Env.AWS_REGION,
50
- bucket: Env.get('AWS_S3_BUCKET', ''),
51
- url: Env.get('AWS_S3_URL', ''),
52
- endpoint: Env.get('AWS_S3_ENDPOINT', ''),
53
- usePathStyleUrl: Env.getBool('AWS_S3_USE_PATH_STYLE_URL', false),
54
- },
55
- r2: {
56
- driver: 'r2' as const,
57
- accessKeyId: Env.get('R2_ACCESS_KEY_ID', ''),
58
- secretAccessKey: Env.get('R2_SECRET_ACCESS_KEY', ''),
59
- region: Env.get('R2_REGION', ''),
60
- bucket: Env.get('R2_BUCKET', ''),
61
- endpoint: Env.get('R2_ENDPOINT', ''),
62
- url: Env.get('R2_URL', ''),
63
- },
64
- gcs: {
65
- driver: 'gcs' as const,
66
- projectId: Env.get('GCS_PROJECT_ID', ''),
67
- keyFile: Env.get('GCS_KEY_FILE', ''),
68
- bucket: Env.get('GCS_BUCKET', ''),
69
- url: Env.get('GCS_URL', ''),
70
- },
71
- });
72
-
73
- const storageConfigObj = {
74
- /**
75
- * Default storage driver (dynamic; tests may mutate process.env)
76
- */
77
- get default(): string {
78
- return Env.get('STORAGE_CONNECTION', Env.get('STORAGE_DRIVER', 'local')).trim().toLowerCase();
79
- },
80
-
81
- /**
82
- * Storage drivers configuration (dynamic; tests may mutate process.env)
83
- */
84
- get drivers(): StorageDrivers {
85
- return getDrivers();
86
- },
87
-
88
- /**
89
- * Get storage driver config
90
- */
91
- getDriver(this: StorageConfigRuntime): StorageDriverConfig {
92
- return getStorageDriver(this);
93
- },
94
-
95
- /**
96
- * Get a storage disk configuration by name.
97
- *
98
- * - When `name` is provided and not configured, this throws.
99
- * - When `name` is omitted, it resolves the configured default with a backwards-compatible fallback.
100
- * - Reserved name `default` aliases the configured default.
101
- */
102
- getDriverConfig(this: StorageConfigRuntime, name?: string): StorageDriverConfig {
103
- return getStorageDriver(this, name);
104
- },
105
-
106
- /**
107
- * Temporary file settings
108
- */
109
- get temp(): { path: string; maxAge: number } {
110
- return {
111
- path: Env.get('TEMP_PATH', 'storage/temp'),
112
- maxAge: Env.getInt('TEMP_FILE_MAX_AGE', 86400), // 24 hours
113
- };
114
- },
115
-
116
- /**
117
- * Uploads settings
118
- */
119
- get uploads(): { maxSize: string; allowedMimes: string; path: string } {
120
- return {
121
- maxSize: Env.get('MAX_UPLOAD_SIZE', '100mb'),
122
- allowedMimes: Env.get('ALLOWED_UPLOAD_MIMES', 'jpg,jpeg,png,pdf,doc,docx'),
123
- path: Env.get('UPLOADS_PATH', 'storage/uploads'),
124
- };
125
- },
126
-
127
- /**
128
- * Backups settings
129
- */
130
- get backups(): { path: string; driver: string } {
131
- return {
132
- path: Env.get('BACKUPS_PATH', 'storage/backups'),
133
- driver: Env.get('BACKUP_DRIVER', 's3'),
134
- };
135
- },
136
- };
137
-
138
- export const storageConfig = Object.freeze(storageConfigObj);
17
+ export const storageConfigObj = {
18
+ ...coreStorageConfig,
19
+ drivers,
20
+ } satisfies StorageConfigShape;
139
21
 
22
+ export const storageConfig = storageConfigObj;
140
23
  export type StorageConfig = typeof storageConfig;