@zintrust/core 0.1.18 → 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 (558) hide show
  1. package/README.md +16 -10
  2. package/bin/zintrust-main.d.ts.map +1 -1
  3. package/bin/zintrust-main.js +9 -0
  4. package/package.json +11 -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/index.html +1 -1
  10. package/public/zintrust.svg +30 -0
  11. package/routes/api.d.ts +7 -0
  12. package/routes/api.d.ts.map +1 -0
  13. package/routes/api.js +115 -0
  14. package/routes/broadcast.d.ts +9 -0
  15. package/routes/broadcast.d.ts.map +1 -0
  16. package/routes/broadcast.js +27 -0
  17. package/routes/health.d.ts +7 -0
  18. package/routes/health.d.ts.map +1 -0
  19. package/routes/health.js +127 -0
  20. package/routes/metrics.d.ts +9 -0
  21. package/routes/metrics.d.ts.map +1 -0
  22. package/routes/metrics.js +20 -0
  23. package/routes/openapi.d.ts +9 -0
  24. package/routes/openapi.d.ts.map +1 -0
  25. package/routes/openapi.js +76 -0
  26. package/routes/storage.d.ts +4 -0
  27. package/routes/storage.d.ts.map +1 -0
  28. package/routes/storage.js +35 -0
  29. package/src/boot/Application.d.ts +2 -2
  30. package/src/boot/Application.d.ts.map +1 -1
  31. package/src/boot/Application.js +18 -3
  32. package/src/boot/Server.d.ts +3 -2
  33. package/src/boot/Server.d.ts.map +1 -1
  34. package/src/boot/Server.js +39 -165
  35. package/src/boot/bootstrap.js +1 -1
  36. package/src/cache/Cache.d.ts +1 -1
  37. package/src/cache/Cache.d.ts.map +1 -1
  38. package/src/cache/CacheDriver.d.ts +4 -0
  39. package/src/cache/CacheDriver.d.ts.map +1 -1
  40. package/src/cache/drivers/KVDriver.d.ts +1 -1
  41. package/src/cache/drivers/KVDriver.d.ts.map +1 -1
  42. package/src/cache/drivers/MemoryDriver.d.ts +1 -1
  43. package/src/cache/drivers/MemoryDriver.d.ts.map +1 -1
  44. package/src/cache/drivers/MemoryDriver.js +16 -0
  45. package/src/cache/drivers/MongoDriver.d.ts +1 -1
  46. package/src/cache/drivers/MongoDriver.d.ts.map +1 -1
  47. package/src/cache/drivers/RedisDriver.d.ts +1 -1
  48. package/src/cache/drivers/RedisDriver.d.ts.map +1 -1
  49. package/src/cli/CLI.d.ts.map +1 -1
  50. package/src/cli/CLI.js +12 -4
  51. package/src/cli/PromptHelper.d.ts.map +1 -1
  52. package/src/cli/PromptHelper.js +4 -3
  53. package/src/cli/commands/AddCommand.d.ts +2 -2
  54. package/src/cli/commands/AddCommand.d.ts.map +1 -1
  55. package/src/cli/commands/AddCommand.js +135 -58
  56. package/src/cli/commands/ConfigCommand.d.ts +1 -1
  57. package/src/cli/commands/ConfigCommand.d.ts.map +1 -1
  58. package/src/cli/commands/CreateCommand.d.ts +15 -0
  59. package/src/cli/commands/CreateCommand.d.ts.map +1 -0
  60. package/src/cli/commands/CreateCommand.js +143 -0
  61. package/src/cli/commands/D1MigrateCommand.d.ts +1 -1
  62. package/src/cli/commands/D1MigrateCommand.d.ts.map +1 -1
  63. package/src/cli/commands/D1MigrateCommand.js +16 -20
  64. package/src/cli/commands/DbSeedCommand.d.ts +9 -0
  65. package/src/cli/commands/DbSeedCommand.d.ts.map +1 -0
  66. package/src/cli/commands/DbSeedCommand.js +171 -0
  67. package/src/cli/commands/DebugCommand.d.ts +1 -1
  68. package/src/cli/commands/DebugCommand.d.ts.map +1 -1
  69. package/src/cli/commands/FixCommand.d.ts +1 -1
  70. package/src/cli/commands/FixCommand.d.ts.map +1 -1
  71. package/src/cli/commands/JwtDevCommand.d.ts +8 -0
  72. package/src/cli/commands/JwtDevCommand.d.ts.map +1 -0
  73. package/src/cli/commands/JwtDevCommand.js +114 -0
  74. package/src/cli/commands/KeyGenerateCommand.d.ts +1 -1
  75. package/src/cli/commands/KeyGenerateCommand.d.ts.map +1 -1
  76. package/src/cli/commands/LogsCommand.d.ts +2 -2
  77. package/src/cli/commands/LogsCommand.d.ts.map +1 -1
  78. package/src/cli/commands/LogsCommand.js +36 -2
  79. package/src/cli/commands/MakeMailTemplateCommand.d.ts +1 -1
  80. package/src/cli/commands/MakeMailTemplateCommand.d.ts.map +1 -1
  81. package/src/cli/commands/MakeNotificationTemplateCommand.d.ts +1 -1
  82. package/src/cli/commands/MakeNotificationTemplateCommand.d.ts.map +1 -1
  83. package/src/cli/commands/MigrateCommand.d.ts +1 -1
  84. package/src/cli/commands/MigrateCommand.d.ts.map +1 -1
  85. package/src/cli/commands/MigrateCommand.js +291 -35
  86. package/src/cli/commands/NewCommand.d.ts +2 -2
  87. package/src/cli/commands/NewCommand.d.ts.map +1 -1
  88. package/src/cli/commands/NewCommand.js +38 -13
  89. package/src/cli/commands/PluginCommand.d.ts +1 -1
  90. package/src/cli/commands/PluginCommand.d.ts.map +1 -1
  91. package/src/cli/commands/PrepareCommand.d.ts +1 -1
  92. package/src/cli/commands/PrepareCommand.d.ts.map +1 -1
  93. package/src/cli/commands/QACommand.d.ts +2 -2
  94. package/src/cli/commands/QACommand.d.ts.map +1 -1
  95. package/src/cli/commands/RoutesCommand.d.ts +10 -0
  96. package/src/cli/commands/RoutesCommand.d.ts.map +1 -0
  97. package/src/cli/commands/RoutesCommand.js +242 -0
  98. package/src/cli/commands/SimulateCommand.d.ts +1 -1
  99. package/src/cli/commands/SimulateCommand.d.ts.map +1 -1
  100. package/src/cli/commands/SimulateCommand.js +1 -1
  101. package/src/cli/commands/StartCommand.d.ts.map +1 -1
  102. package/src/cli/commands/StartCommand.js +90 -3
  103. package/src/cli/commands/UpgradeCommand.d.ts +16 -0
  104. package/src/cli/commands/UpgradeCommand.d.ts.map +1 -0
  105. package/src/cli/commands/UpgradeCommand.js +107 -0
  106. package/src/cli/commands/index.d.ts +3 -0
  107. package/src/cli/commands/index.d.ts.map +1 -1
  108. package/src/cli/commands/index.js +3 -0
  109. package/src/cli/commands/runner/index.d.ts +3 -0
  110. package/src/cli/commands/runner/index.d.ts.map +1 -0
  111. package/src/cli/commands/runner/index.js +139 -0
  112. package/src/cli/config/ConfigManager.d.ts +1 -1
  113. package/src/cli/config/ConfigManager.d.ts.map +1 -1
  114. package/src/cli/config/ConfigValidator.d.ts +1 -1
  115. package/src/cli/config/ConfigValidator.d.ts.map +1 -1
  116. package/src/cli/config/ConfigValidator.js +1 -1
  117. package/src/cli/d1/D1SqlMigrations.d.ts +20 -0
  118. package/src/cli/d1/D1SqlMigrations.d.ts.map +1 -0
  119. package/src/cli/d1/D1SqlMigrations.js +224 -0
  120. package/src/cli/d1/WranglerConfig.d.ts +4 -0
  121. package/src/cli/d1/WranglerConfig.d.ts.map +1 -0
  122. package/src/cli/d1/WranglerConfig.js +122 -0
  123. package/src/cli/d1/WranglerD1.d.ts +11 -0
  124. package/src/cli/d1/WranglerD1.d.ts.map +1 -0
  125. package/src/cli/d1/WranglerD1.js +16 -0
  126. package/src/cli/env/EnvFileBackfill.d.ts +10 -0
  127. package/src/cli/env/EnvFileBackfill.d.ts.map +1 -0
  128. package/src/cli/env/EnvFileBackfill.js +64 -0
  129. package/src/cli/scaffolding/ControllerGenerator.d.ts.map +1 -1
  130. package/src/cli/scaffolding/ControllerGenerator.js +72 -22
  131. package/src/cli/scaffolding/FactoryGenerator.d.ts.map +1 -1
  132. package/src/cli/scaffolding/FactoryGenerator.js +3 -1
  133. package/src/cli/scaffolding/GovernanceScaffolder.d.ts +23 -0
  134. package/src/cli/scaffolding/GovernanceScaffolder.d.ts.map +1 -0
  135. package/src/cli/scaffolding/GovernanceScaffolder.js +327 -0
  136. package/src/cli/scaffolding/MigrationGenerator.d.ts +10 -0
  137. package/src/cli/scaffolding/MigrationGenerator.d.ts.map +1 -1
  138. package/src/cli/scaffolding/MigrationGenerator.js +137 -51
  139. package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
  140. package/src/cli/scaffolding/ProjectScaffolder.js +54 -59
  141. package/src/cli/scaffolding/RouteGenerator.d.ts.map +1 -1
  142. package/src/cli/scaffolding/RouteGenerator.js +79 -43
  143. package/src/cli/scaffolding/SeederGenerator.d.ts +5 -0
  144. package/src/cli/scaffolding/SeederGenerator.d.ts.map +1 -1
  145. package/src/cli/scaffolding/SeederGenerator.js +63 -15
  146. package/src/cli/scaffolding/ServiceScaffolder.d.ts.map +1 -1
  147. package/src/cli/scaffolding/ServiceScaffolder.js +24 -3
  148. package/src/cli/scaffolding/index.d.ts +2 -0
  149. package/src/cli/scaffolding/index.d.ts.map +1 -1
  150. package/src/cli/scaffolding/index.js +1 -0
  151. package/src/cli/utils/DistPackager.d.ts.map +1 -1
  152. package/src/cli/utils/DistPackager.js +8 -0
  153. package/src/common/index.d.ts +8 -0
  154. package/src/common/index.d.ts.map +1 -1
  155. package/src/common/index.js +28 -0
  156. package/src/common/utility.d.ts +38 -0
  157. package/src/common/utility.d.ts.map +1 -0
  158. package/src/common/utility.js +101 -0
  159. package/src/config/FileLogWriter.d.ts +2 -1
  160. package/src/config/FileLogWriter.d.ts.map +1 -1
  161. package/src/config/FileLogWriter.js +83 -2
  162. package/src/config/app.d.ts.map +1 -1
  163. package/src/config/app.js +3 -1
  164. package/src/config/broadcast.d.ts +1 -1
  165. package/src/config/broadcast.d.ts.map +1 -1
  166. package/src/config/broadcast.js +1 -1
  167. package/src/config/cache.d.ts +1 -1
  168. package/src/config/cache.d.ts.map +1 -1
  169. package/src/config/cloudflare.d.ts +1 -1
  170. package/src/config/cloudflare.d.ts.map +1 -1
  171. package/src/config/database.d.ts +7 -1
  172. package/src/config/database.d.ts.map +1 -1
  173. package/src/config/database.js +99 -7
  174. package/src/config/env.d.ts +6 -0
  175. package/src/config/env.d.ts.map +1 -1
  176. package/src/config/env.js +7 -0
  177. package/src/config/index.d.ts +8 -2
  178. package/src/config/index.d.ts.map +1 -1
  179. package/src/config/logging/KvLogger.js +1 -1
  180. package/src/config/logging/SlackLogger.js +2 -2
  181. package/src/config/middleware.d.ts +22 -2
  182. package/src/config/middleware.d.ts.map +1 -1
  183. package/src/config/middleware.js +179 -11
  184. package/src/config/notification.js +1 -1
  185. package/src/config/security.d.ts +1 -1
  186. package/src/config/security.js +1 -1
  187. package/src/config/storage.js +1 -1
  188. package/src/config/type.d.ts +8 -2
  189. package/src/config/type.d.ts.map +1 -1
  190. package/src/events/EventDispatcher.d.ts.map +1 -1
  191. package/src/events/EventDispatcher.js +6 -4
  192. package/src/exceptions/ZintrustError.d.ts +7 -0
  193. package/src/exceptions/ZintrustError.d.ts.map +1 -1
  194. package/src/exceptions/ZintrustError.js +56 -0
  195. package/src/features/Auth.d.ts +1 -1
  196. package/src/features/Auth.d.ts.map +1 -1
  197. package/src/features/Auth.js +3 -3
  198. package/src/features/Queue.js +1 -1
  199. package/src/functions/cloudflare.d.ts.map +1 -1
  200. package/src/functions/cloudflare.js +3 -14
  201. package/src/functions/deno.d.ts.map +1 -1
  202. package/src/functions/deno.js +3 -14
  203. package/src/functions/lambda.d.ts.map +1 -1
  204. package/src/functions/lambda.js +3 -14
  205. package/src/health/StartupHealthChecks.js +1 -1
  206. package/src/http/Controller.d.ts +2 -2
  207. package/src/http/Controller.d.ts.map +1 -1
  208. package/src/http/FileUpload.d.ts +68 -0
  209. package/src/http/FileUpload.d.ts.map +1 -0
  210. package/src/http/FileUpload.js +120 -0
  211. package/src/http/Kernel.d.ts +5 -5
  212. package/src/http/Kernel.d.ts.map +1 -1
  213. package/src/http/Kernel.js +139 -23
  214. package/src/http/Request.d.ts +20 -1
  215. package/src/http/Request.d.ts.map +1 -1
  216. package/src/http/Request.js +23 -0
  217. package/src/http/RequestContext.d.ts +6 -0
  218. package/src/http/RequestContext.d.ts.map +1 -1
  219. package/src/http/RequestContext.js +77 -1
  220. package/src/http/Response.d.ts +1 -1
  221. package/src/http/Response.d.ts.map +1 -1
  222. package/src/http/ValidationHelper.d.ts +78 -0
  223. package/src/http/ValidationHelper.d.ts.map +1 -0
  224. package/src/http/ValidationHelper.js +121 -0
  225. package/src/http/error-pages/ErrorPageRenderer.d.ts +17 -0
  226. package/src/http/error-pages/ErrorPageRenderer.d.ts.map +1 -0
  227. package/src/http/error-pages/ErrorPageRenderer.js +88 -0
  228. package/src/http/middleware/BodyParsingMiddleware.d.ts +12 -0
  229. package/src/http/middleware/BodyParsingMiddleware.d.ts.map +1 -0
  230. package/src/http/middleware/BodyParsingMiddleware.js +251 -0
  231. package/src/http/middleware/FileUploadMiddleware.d.ts +12 -0
  232. package/src/http/middleware/FileUploadMiddleware.d.ts.map +1 -0
  233. package/src/http/middleware/FileUploadMiddleware.js +74 -0
  234. package/src/http/parsers/BodyParsers.d.ts +32 -0
  235. package/src/http/parsers/BodyParsers.d.ts.map +1 -0
  236. package/src/http/parsers/BodyParsers.js +159 -0
  237. package/src/http/parsers/MultipartParser.d.ts +33 -0
  238. package/src/http/parsers/MultipartParser.d.ts.map +1 -0
  239. package/src/http/parsers/MultipartParser.js +129 -0
  240. package/src/http/parsers/MultipartParserRegistry.d.ts +34 -0
  241. package/src/http/parsers/MultipartParserRegistry.d.ts.map +1 -0
  242. package/src/http/parsers/MultipartParserRegistry.js +20 -0
  243. package/src/http/validated.d.ts +12 -0
  244. package/src/http/validated.d.ts.map +1 -0
  245. package/src/http/validated.js +41 -0
  246. package/src/index.d.ts +65 -7
  247. package/src/index.d.ts.map +1 -1
  248. package/src/index.js +59 -5
  249. package/src/microservices/RequestTracingMiddleware.d.ts +2 -2
  250. package/src/microservices/RequestTracingMiddleware.d.ts.map +1 -1
  251. package/src/microservices/RequestTracingMiddleware.js +3 -0
  252. package/src/microservices/ServiceAuthMiddleware.d.ts +2 -2
  253. package/src/microservices/ServiceAuthMiddleware.d.ts.map +1 -1
  254. package/src/middleware/AuthMiddleware.d.ts +10 -0
  255. package/src/middleware/AuthMiddleware.d.ts.map +1 -0
  256. package/src/middleware/AuthMiddleware.js +16 -0
  257. package/src/middleware/CsrfMiddleware.d.ts +11 -1
  258. package/src/middleware/CsrfMiddleware.d.ts.map +1 -1
  259. package/src/middleware/CsrfMiddleware.js +33 -0
  260. package/src/middleware/JwtAuthMiddleware.d.ts +11 -0
  261. package/src/middleware/JwtAuthMiddleware.d.ts.map +1 -0
  262. package/src/middleware/JwtAuthMiddleware.js +73 -0
  263. package/src/middleware/LoggingMiddleware.d.ts.map +1 -1
  264. package/src/middleware/LoggingMiddleware.js +8 -3
  265. package/src/middleware/MiddlewareStack.d.ts +2 -2
  266. package/src/middleware/MiddlewareStack.d.ts.map +1 -1
  267. package/src/middleware/RateLimiter.d.ts +2 -2
  268. package/src/middleware/RateLimiter.d.ts.map +1 -1
  269. package/src/middleware/RateLimiter.js +26 -1
  270. package/src/middleware/SanitizeBodyMiddleware.d.ts +12 -0
  271. package/src/middleware/SanitizeBodyMiddleware.d.ts.map +1 -0
  272. package/src/middleware/SanitizeBodyMiddleware.js +31 -0
  273. package/src/middleware/SecurityMiddleware.d.ts +1 -1
  274. package/src/middleware/SecurityMiddleware.d.ts.map +1 -1
  275. package/src/middleware/SessionMiddleware.d.ts +1 -1
  276. package/src/middleware/SessionMiddleware.d.ts.map +1 -1
  277. package/src/middleware/ValidationMiddleware.d.ts +25 -0
  278. package/src/middleware/ValidationMiddleware.d.ts.map +1 -0
  279. package/src/middleware/ValidationMiddleware.js +251 -0
  280. package/src/migrations/MigrationDiscovery.d.ts +5 -0
  281. package/src/migrations/MigrationDiscovery.d.ts.map +1 -0
  282. package/src/migrations/MigrationDiscovery.js +16 -0
  283. package/src/migrations/MigrationLoader.d.ts +5 -0
  284. package/src/migrations/MigrationLoader.d.ts.map +1 -0
  285. package/src/migrations/MigrationLoader.js +43 -0
  286. package/src/migrations/MigrationLock.d.ts +4 -0
  287. package/src/migrations/MigrationLock.d.ts.map +1 -0
  288. package/src/migrations/MigrationLock.js +33 -0
  289. package/src/migrations/Migrator.d.ts +23 -0
  290. package/src/migrations/Migrator.d.ts.map +1 -0
  291. package/src/migrations/Migrator.js +4 -0
  292. package/src/migrations/MigratorFactory.d.ts +25 -0
  293. package/src/migrations/MigratorFactory.d.ts.map +1 -0
  294. package/src/migrations/MigratorFactory.js +323 -0
  295. package/src/migrations/schema/Blueprint.d.ts +5 -0
  296. package/src/migrations/schema/Blueprint.d.ts.map +1 -0
  297. package/src/migrations/schema/Blueprint.js +189 -0
  298. package/src/migrations/schema/Schema.d.ts +8 -0
  299. package/src/migrations/schema/Schema.d.ts.map +1 -0
  300. package/src/migrations/schema/Schema.js +141 -0
  301. package/src/migrations/schema/SchemaCompiler.d.ts +20 -0
  302. package/src/migrations/schema/SchemaCompiler.d.ts.map +1 -0
  303. package/src/migrations/schema/SchemaCompiler.js +262 -0
  304. package/src/migrations/schema/index.d.ts +5 -0
  305. package/src/migrations/schema/index.d.ts.map +1 -0
  306. package/src/migrations/schema/index.js +3 -0
  307. package/src/migrations/schema/types.d.ts +86 -0
  308. package/src/migrations/schema/types.d.ts.map +1 -0
  309. package/src/migrations/schema/types.js +1 -0
  310. package/src/migrations/types.d.ts +45 -0
  311. package/src/migrations/types.d.ts.map +1 -0
  312. package/src/migrations/types.js +1 -0
  313. package/src/node-singletons/crypto.d.ts +1 -1
  314. package/src/node-singletons/crypto.d.ts.map +1 -1
  315. package/src/node-singletons/crypto.js +1 -1
  316. package/src/node-singletons/fs.d.ts +2 -2
  317. package/src/node-singletons/fs.d.ts.map +1 -1
  318. package/src/node-singletons/fs.js +1 -1
  319. package/src/node-singletons/util.d.ts +6 -0
  320. package/src/node-singletons/util.d.ts.map +1 -0
  321. package/src/node-singletons/util.js +5 -0
  322. package/src/node.d.ts +2 -0
  323. package/src/node.d.ts.map +1 -1
  324. package/src/node.js +7 -0
  325. package/src/observability/OpenTelemetry.d.ts +62 -0
  326. package/src/observability/OpenTelemetry.d.ts.map +1 -0
  327. package/src/observability/OpenTelemetry.js +167 -0
  328. package/src/observability/PrometheusMetrics.d.ts +25 -0
  329. package/src/observability/PrometheusMetrics.d.ts.map +1 -0
  330. package/src/observability/PrometheusMetrics.js +114 -0
  331. package/src/openapi/OpenApiGenerator.d.ts +68 -0
  332. package/src/openapi/OpenApiGenerator.d.ts.map +1 -0
  333. package/src/openapi/OpenApiGenerator.js +287 -0
  334. package/src/orm/Database.d.ts +4 -2
  335. package/src/orm/Database.d.ts.map +1 -1
  336. package/src/orm/Database.js +142 -29
  337. package/src/orm/DatabaseAdapter.d.ts +13 -0
  338. package/src/orm/DatabaseAdapter.d.ts.map +1 -1
  339. package/src/orm/DatabaseAdapterRegistry.d.ts.map +1 -1
  340. package/src/orm/DatabaseAdapterRegistry.js +3 -1
  341. package/src/orm/DatabaseRuntimeRegistration.d.ts.map +1 -1
  342. package/src/orm/DatabaseRuntimeRegistration.js +4 -0
  343. package/src/orm/Model.d.ts +30 -2
  344. package/src/orm/Model.d.ts.map +1 -1
  345. package/src/orm/Model.js +255 -62
  346. package/src/orm/QueryBuilder.d.ts +22 -1
  347. package/src/orm/QueryBuilder.d.ts.map +1 -1
  348. package/src/orm/QueryBuilder.js +405 -95
  349. package/src/orm/Relationships.d.ts +7 -1
  350. package/src/orm/Relationships.d.ts.map +1 -1
  351. package/src/orm/Relationships.js +18 -0
  352. package/src/orm/SchemaCompiler.d.ts +9 -0
  353. package/src/orm/SchemaCompiler.d.ts.map +1 -0
  354. package/src/orm/SchemaCompiler.js +145 -0
  355. package/src/orm/adapters/D1Adapter.d.ts +1 -1
  356. package/src/orm/adapters/D1Adapter.d.ts.map +1 -1
  357. package/src/orm/adapters/MySQLAdapter.d.ts +1 -1
  358. package/src/orm/adapters/MySQLAdapter.d.ts.map +1 -1
  359. package/src/orm/adapters/MySQLAdapter.js +88 -69
  360. package/src/orm/adapters/PostgreSQLAdapter.d.ts +1 -1
  361. package/src/orm/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  362. package/src/orm/adapters/PostgreSQLAdapter.js +88 -69
  363. package/src/orm/adapters/SQLServerAdapter.d.ts +1 -1
  364. package/src/orm/adapters/SQLServerAdapter.d.ts.map +1 -1
  365. package/src/orm/adapters/SQLiteAdapter.d.ts +1 -1
  366. package/src/orm/adapters/SQLiteAdapter.d.ts.map +1 -1
  367. package/src/orm/adapters/SQLiteAdapter.js +63 -3
  368. package/src/orm/maintenance/SqliteMaintenance.d.ts +5 -0
  369. package/src/orm/maintenance/SqliteMaintenance.d.ts.map +1 -0
  370. package/src/orm/maintenance/SqliteMaintenance.js +14 -0
  371. package/src/orm/migrations/MigrationStore.d.ts +38 -0
  372. package/src/orm/migrations/MigrationStore.d.ts.map +1 -0
  373. package/src/orm/migrations/MigrationStore.js +157 -0
  374. package/src/performance/CodeGenerationBenchmark.d.ts.map +1 -1
  375. package/src/performance/Optimizer.d.ts +1 -0
  376. package/src/performance/Optimizer.d.ts.map +1 -1
  377. package/src/performance/Optimizer.js +37 -3
  378. package/src/profiling/MemoryProfiler.d.ts +1 -1
  379. package/src/profiling/MemoryProfiler.d.ts.map +1 -1
  380. package/src/profiling/N1Detector.d.ts +1 -1
  381. package/src/profiling/N1Detector.d.ts.map +1 -1
  382. package/src/profiling/QueryLogger.d.ts +1 -1
  383. package/src/profiling/QueryLogger.d.ts.map +1 -1
  384. package/src/profiling/RequestProfiler.d.ts +3 -3
  385. package/src/profiling/RequestProfiler.d.ts.map +1 -1
  386. package/src/routes/api.d.ts +2 -0
  387. package/src/routes/api.d.ts.map +1 -0
  388. package/src/routes/api.js +1 -0
  389. package/src/routes/broadcast.d.ts +2 -0
  390. package/src/routes/broadcast.d.ts.map +1 -0
  391. package/src/routes/broadcast.js +1 -0
  392. package/src/routes/health.d.ts +2 -0
  393. package/src/routes/health.d.ts.map +1 -0
  394. package/src/routes/health.js +1 -0
  395. package/src/routes/metrics.d.ts +2 -0
  396. package/src/routes/metrics.d.ts.map +1 -0
  397. package/src/routes/metrics.js +1 -0
  398. package/src/routes/storage.d.ts +2 -0
  399. package/src/routes/storage.d.ts.map +1 -0
  400. package/src/routes/storage.js +1 -0
  401. package/src/routing/CoreRoutes.d.ts +12 -0
  402. package/src/routing/CoreRoutes.d.ts.map +1 -0
  403. package/src/routing/CoreRoutes.js +151 -0
  404. package/src/routing/RouteRegistry.d.ts +39 -0
  405. package/src/routing/RouteRegistry.d.ts.map +1 -0
  406. package/src/routing/RouteRegistry.js +44 -0
  407. package/src/routing/Router.d.ts +26 -9
  408. package/src/routing/Router.d.ts.map +1 -1
  409. package/src/routing/Router.js +79 -35
  410. package/src/routing/common.d.ts +15 -0
  411. package/src/routing/common.d.ts.map +1 -0
  412. package/src/routing/common.js +47 -0
  413. package/src/routing/doc.d.ts +28 -0
  414. package/src/routing/doc.d.ts.map +1 -0
  415. package/src/routing/doc.js +95 -0
  416. package/src/routing/error.d.ts +21 -0
  417. package/src/routing/error.d.ts.map +1 -0
  418. package/src/routing/error.js +126 -0
  419. package/src/routing/errorPages.d.ts +14 -0
  420. package/src/routing/errorPages.d.ts.map +1 -0
  421. package/src/routing/errorPages.js +103 -0
  422. package/src/routing/publicRoot.d.ts +18 -0
  423. package/src/routing/publicRoot.d.ts.map +1 -0
  424. package/src/routing/publicRoot.js +49 -0
  425. package/src/runtime/PluginAutoImports.d.ts +21 -0
  426. package/src/runtime/PluginAutoImports.d.ts.map +1 -0
  427. package/src/runtime/PluginAutoImports.js +59 -0
  428. package/src/runtime/PluginManager.d.ts +1 -5
  429. package/src/runtime/PluginManager.d.ts.map +1 -1
  430. package/src/runtime/PluginManager.js +25 -18
  431. package/src/runtime/RuntimeAdapter.d.ts.map +1 -1
  432. package/src/runtime/RuntimeAdapter.js +20 -1
  433. package/src/runtime/RuntimeDetector.d.ts +1 -1
  434. package/src/runtime/RuntimeDetector.d.ts.map +1 -1
  435. package/src/runtime/adapters/CloudflareAdapter.d.ts +1 -1
  436. package/src/runtime/adapters/CloudflareAdapter.d.ts.map +1 -1
  437. package/src/runtime/adapters/CloudflareAdapter.js +1 -1
  438. package/src/runtime/adapters/DenoAdapter.d.ts +1 -1
  439. package/src/runtime/adapters/DenoAdapter.d.ts.map +1 -1
  440. package/src/runtime/adapters/DenoAdapter.js +3 -3
  441. package/src/runtime/adapters/LambdaAdapter.d.ts +1 -1
  442. package/src/runtime/adapters/LambdaAdapter.d.ts.map +1 -1
  443. package/src/runtime/adapters/LambdaAdapter.js +1 -1
  444. package/src/runtime/adapters/NodeServerAdapter.d.ts +1 -1
  445. package/src/runtime/adapters/NodeServerAdapter.d.ts.map +1 -1
  446. package/src/runtime/getKernel.d.ts +9 -0
  447. package/src/runtime/getKernel.d.ts.map +1 -0
  448. package/src/runtime/getKernel.js +27 -0
  449. package/src/scripts/TemplateImportsCheck.js +47 -7
  450. package/src/scripts/TemplateSync.js +92 -20
  451. package/src/security/Encryptor.d.ts.map +1 -1
  452. package/src/security/Encryptor.js +64 -7
  453. package/src/security/JwtManager.d.ts +1 -0
  454. package/src/security/JwtManager.d.ts.map +1 -1
  455. package/src/security/JwtManager.js +33 -0
  456. package/src/security/Sanitizer.d.ts +76 -0
  457. package/src/security/Sanitizer.d.ts.map +1 -0
  458. package/src/security/Sanitizer.js +412 -0
  459. package/src/security/TokenRevocation.d.ts +7 -0
  460. package/src/security/TokenRevocation.d.ts.map +1 -0
  461. package/src/security/TokenRevocation.js +57 -0
  462. package/src/seeders/SeederDiscovery.d.ts +5 -0
  463. package/src/seeders/SeederDiscovery.d.ts.map +1 -0
  464. package/src/seeders/SeederDiscovery.js +21 -0
  465. package/src/seeders/SeederLoader.d.ts +5 -0
  466. package/src/seeders/SeederLoader.d.ts.map +1 -0
  467. package/src/seeders/SeederLoader.js +60 -0
  468. package/src/seeders/types.d.ts +18 -0
  469. package/src/seeders/types.d.ts.map +1 -0
  470. package/src/seeders/types.js +1 -0
  471. package/src/session/SessionManager.js +1 -1
  472. package/src/start.d.ts +21 -0
  473. package/src/start.d.ts.map +1 -0
  474. package/src/start.js +60 -0
  475. package/src/templates/adapters/MySQLAdapter.ts.tpl +109 -85
  476. package/src/templates/adapters/PostgreSQLAdapter.ts.tpl +129 -88
  477. package/src/templates/adapters/SQLServerAdapter.ts.tpl +5 -9
  478. package/src/templates/adapters/SQLiteAdapter.ts.tpl +78 -11
  479. package/src/templates/features/Queue.ts.tpl +2 -2
  480. package/src/templates/project/basic/app/Controllers/AuthController.ts.tpl +217 -0
  481. package/src/templates/project/basic/app/Controllers/UserController.ts.tpl +3 -16
  482. package/src/templates/project/basic/app/Middleware/ProfilerMiddleware.ts.tpl +1 -3
  483. package/src/templates/project/basic/app/Middleware/index.ts.tpl +3 -8
  484. package/src/templates/project/basic/app/Models/Post.ts.tpl +2 -3
  485. package/src/templates/project/basic/app/Models/User.ts.tpl +1 -1
  486. package/src/templates/project/basic/app/Types/controller.ts.tpl +46 -0
  487. package/src/templates/project/basic/config/FileLogWriter.ts.tpl +5 -236
  488. package/src/templates/project/basic/config/SecretsManager.ts.tpl +13 -450
  489. package/src/templates/project/basic/config/StartupConfigValidator.ts.tpl +9 -268
  490. package/src/templates/project/basic/config/app.ts.tpl +13 -153
  491. package/src/templates/project/basic/config/broadcast.ts.tpl +15 -129
  492. package/src/templates/project/basic/config/cache.ts.tpl +15 -92
  493. package/src/templates/project/basic/config/cloudflare.ts.tpl +4 -39
  494. package/src/templates/project/basic/config/constants.ts.tpl +9 -65
  495. package/src/templates/project/basic/config/database.ts.tpl +29 -116
  496. package/src/templates/project/basic/config/env.ts.tpl +5 -169
  497. package/src/templates/project/basic/config/features.ts.tpl +6 -54
  498. package/src/templates/project/basic/config/index.ts.tpl +27 -24
  499. package/src/templates/project/basic/config/logger.ts.tpl +5 -381
  500. package/src/templates/project/basic/config/logging/HttpLogger.ts.tpl +1 -1
  501. package/src/templates/project/basic/config/logging/KvLogger.ts.tpl +2 -2
  502. package/src/templates/project/basic/config/logging/SlackLogger.ts.tpl +1 -1
  503. package/src/templates/project/basic/config/mail.ts.tpl +15 -115
  504. package/src/templates/project/basic/config/microservices.ts.tpl +11 -97
  505. package/src/templates/project/basic/config/middleware.ts.tpl +27 -18
  506. package/src/templates/project/basic/config/notification.ts.tpl +14 -127
  507. package/src/templates/project/basic/config/queue.ts.tpl +16 -79
  508. package/src/templates/project/basic/config/security.ts.tpl +11 -163
  509. package/src/templates/project/basic/config/startup.ts.tpl +10 -21
  510. package/src/templates/project/basic/config/storage.ts.tpl +15 -133
  511. package/src/templates/project/basic/config/type.ts.tpl +33 -441
  512. package/src/templates/project/basic/database/factories/UserFactory.ts.tpl +80 -0
  513. package/src/templates/project/basic/database/migrations/create_tasks_table.ts.tpl +28 -0
  514. package/src/templates/project/basic/database/migrations/create_users_table.ts.tpl +29 -0
  515. package/src/templates/project/basic/database/seeders/DatabaseSeeder.ts.tpl +19 -0
  516. package/src/templates/project/basic/database/seeders/UserSeeder.ts.tpl +18 -0
  517. package/src/templates/project/basic/database/seeders/index.ts.tpl +2 -0
  518. package/src/templates/project/basic/package.json.tpl +1 -1
  519. package/src/templates/project/basic/routes/api.ts.tpl +74 -36
  520. package/src/templates/project/basic/routes/health.ts.tpl +1 -6
  521. package/src/templates/project/basic/routes/metrics.ts.tpl +22 -0
  522. package/src/templates/project/basic/src/index.ts.tpl +7 -80
  523. package/src/templates/project/basic/tsconfig.json.tpl +12 -13
  524. package/src/testing/TestEnvironment.d.ts +40 -0
  525. package/src/testing/TestEnvironment.d.ts.map +1 -0
  526. package/src/testing/TestEnvironment.js +141 -0
  527. package/src/testing/TestHttp.d.ts +29 -0
  528. package/src/testing/TestHttp.d.ts.map +1 -0
  529. package/src/testing/TestHttp.js +96 -0
  530. package/src/testing/index.d.ts +5 -0
  531. package/src/testing/index.d.ts.map +1 -0
  532. package/src/testing/index.js +2 -0
  533. package/src/time/DateTime.d.ts +181 -0
  534. package/src/time/DateTime.d.ts.map +1 -0
  535. package/src/time/DateTime.js +300 -0
  536. package/src/time/index.d.ts +7 -0
  537. package/src/time/index.d.ts.map +1 -0
  538. package/src/time/index.js +5 -0
  539. package/src/tools/http/Http.d.ts.map +1 -1
  540. package/src/tools/http/Http.js +4 -0
  541. package/src/tools/mail/drivers/Smtp.js +1 -1
  542. package/src/tools/queue/drivers/InMemory.d.ts +1 -1
  543. package/src/tools/queue/drivers/InMemory.d.ts.map +1 -1
  544. package/src/tools/queue/drivers/InMemory.js +1 -1
  545. package/src/tools/queue/drivers/Redis.d.ts +1 -1
  546. package/src/tools/queue/drivers/Redis.d.ts.map +1 -1
  547. package/src/tools/queue/drivers/Redis.js +1 -1
  548. package/src/validation/ValidationError.d.ts.map +1 -1
  549. package/src/validation/ValidationError.js +4 -2
  550. package/src/validation/Validator.d.ts +49 -16
  551. package/src/validation/Validator.d.ts.map +1 -1
  552. package/src/validation/Validator.js +307 -5
  553. package/src/common/uuid.d.ts +0 -3
  554. package/src/common/uuid.d.ts.map +0 -1
  555. package/src/common/uuid.js +0 -30
  556. package/src/templates/project/basic/.env.example.tpl +0 -74
  557. package/src/templates/project/basic/.env.tpl +0 -166
  558. package/src/templates/project/basic/database/migrations/index.ts.tpl +0 -2
@@ -1,141 +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 { Env } from './env';
8
- import type { StorageConfigRuntime, StorageDriverConfig, StorageDrivers } from './type';
9
- import { ErrorFactory } from '@zintrust/core';
9
+ import { storageConfig as coreStorageConfig } from '@zintrust/core';
10
10
 
11
- const hasOwn = <T extends object>(obj: T, key: PropertyKey): key is keyof T => {
12
- return Object.prototype.hasOwnProperty.call(obj, key);
13
- };
11
+ type StorageConfigShape = typeof coreStorageConfig;
14
12
 
15
- const getStorageDriver = (config: StorageConfigRuntime, name?: string): StorageDriverConfig => {
16
- const selected = String(name ?? config.default).trim();
17
- const diskName = selected === 'default' ? String(config.default).trim() : selected;
18
- const isExplicitSelection =
19
- name !== undefined && String(name).trim().length > 0 && String(name).trim() !== 'default';
13
+ export const drivers = {
14
+ ...coreStorageConfig.drivers,
15
+ } satisfies StorageConfigShape['drivers'];
20
16
 
21
- if (diskName !== '' && hasOwn(config.drivers, diskName)) {
22
- const resolved = config.drivers[diskName];
23
- if (resolved !== undefined) return resolved;
24
- }
25
-
26
- if (isExplicitSelection) {
27
- throw ErrorFactory.createConfigError(`Storage disk not configured: ${diskName}`);
28
- }
29
-
30
- if (Object.keys(config.drivers ?? {}).length === 0) {
31
- throw ErrorFactory.createConfigError('No storage disks are configured');
32
- }
33
-
34
- throw ErrorFactory.createConfigError(
35
- `Storage default disk not configured: ${diskName || '<empty>'}`
36
- );
37
- };
38
-
39
- const getDrivers = (): StorageDrivers => ({
40
- local: {
41
- driver: 'local' as const,
42
- root: Env.get('STORAGE_PATH', 'storage'),
43
- url: Env.get('STORAGE_URL', '/storage'),
44
- visibility: Env.get('STORAGE_VISIBILITY', 'private'),
45
- },
46
- s3: {
47
- driver: 's3' as const,
48
- accessKeyId: Env.get('AWS_ACCESS_KEY_ID', ''),
49
- secretAccessKey: Env.get('AWS_SECRET_ACCESS_KEY', ''),
50
- region: Env.AWS_REGION,
51
- bucket: Env.get('AWS_S3_BUCKET', ''),
52
- url: Env.get('AWS_S3_URL', ''),
53
- endpoint: Env.get('AWS_S3_ENDPOINT', ''),
54
- usePathStyleUrl: Env.getBool('AWS_S3_USE_PATH_STYLE_URL', false),
55
- },
56
- r2: {
57
- driver: 'r2' as const,
58
- accessKeyId: Env.get('R2_ACCESS_KEY_ID', ''),
59
- secretAccessKey: Env.get('R2_SECRET_ACCESS_KEY', ''),
60
- region: Env.get('R2_REGION', ''),
61
- bucket: Env.get('R2_BUCKET', ''),
62
- endpoint: Env.get('R2_ENDPOINT', ''),
63
- url: Env.get('R2_URL', ''),
64
- },
65
- gcs: {
66
- driver: 'gcs' as const,
67
- projectId: Env.get('GCS_PROJECT_ID', ''),
68
- keyFile: Env.get('GCS_KEY_FILE', ''),
69
- bucket: Env.get('GCS_BUCKET', ''),
70
- url: Env.get('GCS_URL', ''),
71
- },
72
- });
73
-
74
- const storageConfigObj = {
75
- /**
76
- * Default storage driver (dynamic; tests may mutate process.env)
77
- */
78
- get default(): string {
79
- return Env.get('STORAGE_CONNECTION', Env.get('STORAGE_DRIVER', 'local')).trim().toLowerCase();
80
- },
81
-
82
- /**
83
- * Storage drivers configuration (dynamic; tests may mutate process.env)
84
- */
85
- get drivers(): StorageDrivers {
86
- return getDrivers();
87
- },
88
-
89
- /**
90
- * Get storage driver config
91
- */
92
- getDriver(this: StorageConfigRuntime): StorageDriverConfig {
93
- return getStorageDriver(this);
94
- },
95
-
96
- /**
97
- * Get a storage disk configuration by name.
98
- *
99
- * - When `name` is provided and not configured, this throws.
100
- * - When `name` is omitted, it resolves the configured default with a backwards-compatible fallback.
101
- * - Reserved name `default` aliases the configured default.
102
- */
103
- getDriverConfig(this: StorageConfigRuntime, name?: string): StorageDriverConfig {
104
- return getStorageDriver(this, name);
105
- },
106
-
107
- /**
108
- * Temporary file settings
109
- */
110
- get temp(): { path: string; maxAge: number } {
111
- return {
112
- path: Env.get('TEMP_PATH', 'storage/temp'),
113
- maxAge: Env.getInt('TEMP_FILE_MAX_AGE', 86400), // 24 hours
114
- };
115
- },
116
-
117
- /**
118
- * Uploads settings
119
- */
120
- get uploads(): { maxSize: string; allowedMimes: string; path: string } {
121
- return {
122
- maxSize: Env.get('MAX_UPLOAD_SIZE', '100mb'),
123
- allowedMimes: Env.get('ALLOWED_UPLOAD_MIMES', 'jpg,jpeg,png,pdf,doc,docx'),
124
- path: Env.get('UPLOADS_PATH', 'storage/uploads'),
125
- };
126
- },
127
-
128
- /**
129
- * Backups settings
130
- */
131
- get backups(): { path: string; driver: string } {
132
- return {
133
- path: Env.get('BACKUPS_PATH', 'storage/backups'),
134
- driver: Env.get('BACKUP_DRIVER', 's3'),
135
- };
136
- },
137
- };
138
-
139
- export const storageConfig = Object.freeze(storageConfigObj);
17
+ export const storageConfigObj = {
18
+ ...coreStorageConfig,
19
+ drivers,
20
+ } satisfies StorageConfigShape;
140
21
 
22
+ export const storageConfig = storageConfigObj;
141
23
  export type StorageConfig = typeof storageConfig;
@@ -1,445 +1,37 @@
1
- import { Env } from './env';
2
- import type { Middleware as MiddlewareFn } from '@zintrust/core';
3
-
4
- export type Environment =
5
- | 'development'
6
- | 'dev'
7
- | 'production'
8
- | 'prod'
9
- | 'pro'
10
- | 'testing'
11
- | 'test';
12
- export type StartMode = 'development' | 'production' | 'testing';
13
-
14
- export type EnvGetValue = ReturnType<typeof Env.get>;
15
- export type EnvGetBoolValue = ReturnType<typeof Env.getBool>;
16
-
17
- export type LocalStorageDriverConfig = {
18
- driver: 'local';
19
- root: EnvGetValue;
20
- url: EnvGetValue;
21
- visibility: EnvGetValue;
22
- };
23
-
24
- export type S3StorageDriverConfig = {
25
- driver: 's3';
26
- accessKeyId: EnvGetValue;
27
- secretAccessKey: EnvGetValue;
28
- region: typeof Env.AWS_REGION;
29
- bucket: EnvGetValue;
30
- url: EnvGetValue;
31
- endpoint: EnvGetValue;
32
- usePathStyleUrl: EnvGetBoolValue;
33
- };
34
-
35
- export type R2StorageDriverConfig = {
36
- driver: 'r2';
37
- accessKeyId: EnvGetValue;
38
- secretAccessKey: EnvGetValue;
39
- region: EnvGetValue;
40
- bucket: EnvGetValue;
41
- endpoint: EnvGetValue;
42
- url: EnvGetValue;
43
- };
44
-
45
- export type GcsStorageDriverConfig = {
46
- driver: 'gcs';
47
- projectId: EnvGetValue;
48
- keyFile: EnvGetValue;
49
- bucket: EnvGetValue;
50
- url: EnvGetValue;
51
- };
52
-
53
- export type StorageDriverConfig =
54
- | LocalStorageDriverConfig
55
- | S3StorageDriverConfig
56
- | R2StorageDriverConfig
57
- | GcsStorageDriverConfig;
58
-
59
- export type StorageDrivers = Record<string, StorageDriverConfig>;
60
-
61
- export type StorageDriverName = keyof StorageDrivers;
62
-
63
- export type StorageConfigRuntime = {
64
- readonly default: string;
65
- readonly drivers: StorageDrivers;
66
- };
67
-
68
- export type StartupConfigValidationError = {
69
- key: string;
70
- value: unknown;
71
- message: string;
72
- };
73
-
74
- export type StartupConfigValidationResult = {
75
- valid: boolean;
76
- errors: StartupConfigValidationError[];
77
- };
78
-
79
- export interface CloudflareKV {
80
- get(key: string): Promise<string | null>;
81
- put(key: string, value: string, options?: { expirationTtl?: number }): Promise<void>;
82
- delete(key: string): Promise<void>;
83
- list(options?: { prefix?: string }): Promise<{ keys: { name: string }[] }>;
84
- }
85
-
86
- export interface SecretConfig {
87
- platform: 'aws' | 'cloudflare' | 'deno' | 'local';
88
- region?: string;
89
- kv?: CloudflareKV; // Cloudflare KV namespace
90
- }
91
-
92
- export interface SecretValue {
93
- key: string;
94
- value: string;
95
- expiresAt?: number;
96
- rotationEnabled?: boolean;
97
- }
98
-
99
- export interface GetSecretOptions {
100
- cacheTtl?: number; // Cache time-to-live in milliseconds
101
- throwIfMissing?: boolean;
102
- }
103
-
104
- export interface SetSecretOptions {
105
- expirationTtl?: number; // Expiration time-to-live in seconds
106
- metadata?: Record<string, unknown>;
107
- }
108
-
109
- export interface SecretsManagerInstance {
110
- getSecret(key: string, options?: GetSecretOptions): Promise<string>;
111
- setSecret(key: string, value: string, options?: SetSecretOptions): Promise<void>;
112
- deleteSecret(key: string): Promise<void>;
113
- rotateSecret(key: string): Promise<void>;
114
- listSecrets(pattern?: string): Promise<string[]>;
115
- clearCache(key?: string): void;
116
- }
117
-
118
- export type QueueDriverName = 'sync' | 'database' | 'redis' | 'rabbitmq' | 'sqs';
119
-
120
- export type SyncQueueDriverConfig = {
121
- driver: 'sync';
122
- };
123
-
124
- export type DatabaseQueueDriverConfig = {
125
- driver: 'database';
126
- table: string;
127
- connection: string;
128
- };
129
-
130
- export type RedisQueueDriverConfig = {
131
- driver: 'redis';
132
- host: string;
133
- port: number;
134
- password?: string;
135
- database: number;
136
- };
137
-
138
- export type RabbitMqQueueDriverConfig = {
139
- driver: 'rabbitmq';
140
- host: string;
141
- port: number;
142
- username: string;
143
- password: string;
144
- vhost: string;
145
- };
146
-
147
- export type SqsQueueDriverConfig = {
148
- driver: 'sqs';
149
- key?: string;
150
- secret?: string;
151
- region: string;
152
- queueUrl?: string;
153
- };
154
-
155
- export type QueueDriversConfig = {
156
- sync: SyncQueueDriverConfig;
157
- database: DatabaseQueueDriverConfig;
158
- redis: RedisQueueDriverConfig;
159
- rabbitmq: RabbitMqQueueDriverConfig;
160
- sqs: SqsQueueDriverConfig;
161
- };
162
-
163
- export type QueueConfigWithDrivers = {
164
- default: QueueDriverName;
165
- drivers: QueueDriversConfig;
166
- };
167
-
168
- export type KnownNotificationDriverName = 'console' | 'termii' | 'twilio' | 'slack';
169
-
170
- export type ConsoleNotificationDriverConfig = { driver: 'console' };
171
-
172
- export type TermiiNotificationDriverConfig = {
173
- driver: 'termii';
174
- apiKey: string;
175
- sender: string;
176
- endpoint: string;
177
- };
178
-
179
- export type TwilioNotificationDriverConfig = {
180
- driver: 'twilio';
181
- accountSid: string;
182
- authToken: string;
183
- fromNumber: string;
184
- };
185
-
186
- export type SlackNotificationDriverConfig = {
187
- driver: 'slack';
188
- webhookUrl: string;
189
- };
190
-
191
- export type KnownNotificationDriverConfig =
192
- | ConsoleNotificationDriverConfig
193
- | TermiiNotificationDriverConfig
194
- | TwilioNotificationDriverConfig
195
- | SlackNotificationDriverConfig;
196
-
197
- export type NotificationDrivers = Record<string, KnownNotificationDriverConfig>;
198
-
199
- export type NotificationConfigInput = {
200
- default: string;
201
- drivers: NotificationDrivers;
202
- };
203
-
204
- export type NotificationProviders = {
205
- console: ConsoleNotificationDriverConfig;
206
- termii: TermiiNotificationDriverConfig;
207
- twilio: TwilioNotificationDriverConfig;
208
- slack: SlackNotificationDriverConfig;
209
- };
210
-
211
- export type MiddlewareConfigType = {
212
- global: MiddlewareFn[];
213
- route: Record<string, MiddlewareFn>;
214
- };
215
-
216
- export type MailDriverName = 'disabled' | 'sendgrid' | 'smtp' | 'ses' | 'mailgun' | 'nodemailer';
217
-
218
- export type DisabledMailDriverConfig = {
219
- driver: 'disabled';
220
- };
221
-
222
- export type SendGridMailDriverConfig = {
223
- driver: 'sendgrid';
224
- apiKey: string;
225
- };
226
-
227
- export type MailgunMailDriverConfig = {
228
- driver: 'mailgun';
229
- apiKey: string;
230
- domain: string;
231
- baseUrl: string;
232
- };
233
-
234
- // Placeholders for future drivers (kept config-first)
235
- export type SmtpMailDriverConfig = {
236
- driver: 'smtp';
237
- host: string;
238
- port: number;
239
- username: string;
240
- password: string;
241
- secure: boolean | 'starttls';
242
- };
243
-
244
- export type NodemailerMailDriverConfig = {
245
- driver: 'nodemailer';
246
- host: string;
247
- port: number;
248
- username: string;
249
- password: string;
250
- secure: boolean | 'starttls';
251
- };
252
-
253
- export type SesMailDriverConfig = {
254
- driver: 'ses';
255
- region: string;
256
- };
257
-
258
- export type MailDriverConfig =
259
- | DisabledMailDriverConfig
260
- | SendGridMailDriverConfig
261
- | MailgunMailDriverConfig
262
- | SmtpMailDriverConfig
263
- | NodemailerMailDriverConfig
264
- | SesMailDriverConfig;
265
-
266
- export type MailDrivers = Record<string, MailDriverConfig>;
267
-
268
- export type MailConfigInput = {
269
- /**
270
- * Default mailer key name.
271
- *
272
- * This is intentionally a string to support named mailers (e.g. 'transactional', 'marketing').
273
- * The underlying driver is selected by the `driver` field within each mailer config.
274
- */
275
- default: string;
276
- from: {
277
- address: string;
278
- name: string;
279
- };
280
- drivers: MailDrivers;
281
- };
282
-
283
- export type ProcessLike = {
284
- env?: Record<string, string | undefined>;
285
- execPath?: string;
286
- platform?: string;
287
- };
288
-
289
- export type SqliteConnectionConfig = {
290
- driver: 'sqlite';
291
- database: string;
292
- migrations: string;
293
- };
294
-
295
- export type PostgresqlConnectionConfig = {
296
- driver: 'postgresql';
297
- host: string;
298
- port: number;
299
- database: string;
300
- username: string;
301
- password: string;
302
- ssl: boolean;
303
- pooling: {
304
- enabled: boolean;
305
- min: number;
306
- max: number;
307
- idleTimeout: number;
308
- connectionTimeout: number;
309
- };
310
- };
311
-
312
- export type MysqlConnectionConfig = {
313
- driver: 'mysql';
314
- host: string;
315
- port: number;
316
- database: string;
317
- username: string;
318
- password: string;
319
- pooling: {
320
- enabled: boolean;
321
- min: number;
322
- max: number;
323
- };
324
- };
325
-
326
- export type DatabaseConnectionConfig =
327
- | SqliteConnectionConfig
328
- | PostgresqlConnectionConfig
329
- | MysqlConnectionConfig;
330
-
331
1
  /**
332
- * Named database connection configs.
2
+ * Config Types (template)
333
3
  *
334
- * Keys represent connection names (e.g. 'default', 'auth', 'tasks', 'db1').
335
- */
336
- export type DatabaseConnections = Record<string, DatabaseConnectionConfig>;
337
-
338
- /**
339
- * Default connection name.
4
+ * Keep this file declarative:
5
+ * - Core owns canonical type definitions.
340
6
  */
341
- export type DatabaseConfigShape = {
342
- default: string;
343
- connections: DatabaseConnections;
344
- };
345
-
346
- export type WorkersEnv = Record<string, unknown>;
347
-
348
- export type KVNamespace = {
349
- get(
350
- key: string,
351
- options?: { type: 'text' | 'json' | 'arrayBuffer' | 'stream' }
352
- ): Promise<unknown>;
353
- put(
354
- key: string,
355
- value: string | ReadableStream | ArrayBuffer | FormData,
356
- options?: { expiration?: number; expirationTtl?: number; metadata?: unknown }
357
- ): Promise<void>;
358
- delete(key: string): Promise<void>;
359
- };
360
-
361
- export type MemoryCacheDriverConfig = {
362
- driver: 'memory';
363
- ttl: number;
364
- };
365
-
366
- export type RedisCacheDriverConfig = {
367
- driver: 'redis';
368
- host: string;
369
- port: number;
370
- ttl: number;
371
- };
372
-
373
- export type MongoCacheDriverConfig = {
374
- driver: 'mongodb';
375
- uri: string;
376
- db: string;
377
- ttl: number;
378
- };
379
-
380
- export type KvCacheDriverConfig = {
381
- driver: 'kv';
382
- ttl: number;
383
- };
384
-
385
- export type KvRemoteCacheDriverConfig = {
386
- driver: 'kv-remote';
387
- ttl: number;
388
- };
389
-
390
- export type CacheDriverConfig =
391
- | MemoryCacheDriverConfig
392
- | RedisCacheDriverConfig
393
- | MongoCacheDriverConfig
394
- | KvCacheDriverConfig
395
- | KvRemoteCacheDriverConfig;
396
-
397
- export type CacheDrivers = Record<string, CacheDriverConfig>;
398
-
399
- export type CacheConfigInput = {
400
- default: string;
401
- drivers: CacheDrivers;
402
- };
403
-
404
- export type KnownBroadcastDriverName = 'inmemory' | 'pusher' | 'redis' | 'redishttps';
405
-
406
- export type InMemoryBroadcastDriverConfig = {
407
- driver: 'inmemory';
408
- };
409
-
410
- export type PusherBroadcastDriverConfig = {
411
- driver: 'pusher';
412
- appId: string;
413
- key: string;
414
- secret: string;
415
- cluster: string;
416
- useTLS: boolean;
417
- };
418
-
419
- export type RedisBroadcastDriverConfig = {
420
- driver: 'redis';
421
- host: string;
422
- port: number;
423
- password: string;
424
- channelPrefix: string;
425
- };
426
-
427
- export type RedisHttpsBroadcastDriverConfig = {
428
- driver: 'redishttps';
429
- endpoint: string;
430
- token: string;
431
- channelPrefix: string;
432
- };
433
-
434
- export type KnownBroadcastDriverConfig =
435
- | InMemoryBroadcastDriverConfig
436
- | PusherBroadcastDriverConfig
437
- | RedisBroadcastDriverConfig
438
- | RedisHttpsBroadcastDriverConfig;
439
-
440
- export type BroadcastDrivers = Record<string, KnownBroadcastDriverConfig>;
441
7
 
442
- export type BroadcastConfigInput = {
443
- default: string;
444
- drivers: BroadcastDrivers;
445
- };
8
+ export type {
9
+ BroadcastConfigInput,
10
+ BroadcastDrivers,
11
+ CacheConfigInput,
12
+ CacheDrivers,
13
+ DatabaseConfig,
14
+ DatabaseConfigShape,
15
+ DatabaseConnectionConfig,
16
+ DatabaseConnections,
17
+ KVNamespace,
18
+ KnownBroadcastDriverConfig,
19
+ KnownBroadcastDriverName,
20
+ MailConfig,
21
+ MailConfigInput,
22
+ MailDriverConfig,
23
+ MailDrivers,
24
+ MicroservicesConfig,
25
+ MiddlewareConfigType,
26
+ NotificationConfig,
27
+ NotificationConfigInput,
28
+ NotificationDrivers,
29
+ ProcessLike,
30
+ QueueConfig,
31
+ QueueConfigInput,
32
+ StorageConfig,
33
+ StorageConfigRuntime,
34
+ StorageDriverConfig,
35
+ StorageDrivers,
36
+ WorkersEnv,
37
+ } from '@zintrust/core';
@@ -0,0 +1,80 @@
1
+ import { faker } from '@faker-js/faker';
2
+
3
+ interface UserFactoryData {
4
+ id: number;
5
+ name: string;
6
+ email: string;
7
+ password: string;
8
+ email_verified_at: string | null;
9
+ active: boolean;
10
+ created_at: string;
11
+ updated_at: string;
12
+ deleted_at?: string | null;
13
+ }
14
+
15
+ interface UserFactory {
16
+ data: (data: Record<string, unknown>) => UserFactory;
17
+ set: (key: string, value: unknown) => UserFactory;
18
+ state: (name: string) => UserFactory;
19
+ count: (n: number) => UserFactoryData[];
20
+ getActiveState: () => { active: boolean; deleted_at: null };
21
+ getInactiveState: () => { active: boolean };
22
+ getDeletedState: () => { deleted_at: string };
23
+ create: () => UserFactoryData;
24
+ }
25
+
26
+ const makeUserData = (): Omit<UserFactoryData, 'deleted_at'> => ({
27
+ id: faker.number.int({ min: 1, max: 1000 }),
28
+ name: faker.person.fullName(),
29
+ email: faker.internet.email(),
30
+ password: faker.internet.password(),
31
+ email_verified_at: faker.date.past().toISOString(),
32
+ active: true,
33
+ created_at: new Date().toISOString(),
34
+ updated_at: new Date().toISOString(),
35
+ });
36
+
37
+ let customData: Record<string, unknown> = {};
38
+ let customStates: Record<string, Record<string, unknown>> = {};
39
+
40
+ export const UserFactory = Object.freeze({
41
+ data(data: Record<string, unknown>): UserFactory {
42
+ customData = { ...data };
43
+ return UserFactory;
44
+ },
45
+
46
+ set(key: string, value: unknown): UserFactory {
47
+ customData[key] = value;
48
+ return UserFactory;
49
+ },
50
+
51
+ state(name: string): UserFactory {
52
+ customStates[name] = {};
53
+ return UserFactory;
54
+ },
55
+
56
+ count(n: number): UserFactoryData[] {
57
+ return Array.from({ length: n }, () => this.create());
58
+ },
59
+
60
+ getActiveState(): { active: boolean; deleted_at: null } {
61
+ return { active: true, deleted_at: null };
62
+ },
63
+
64
+ getInactiveState(): { active: boolean } {
65
+ return { active: false };
66
+ },
67
+
68
+ getDeletedState(): { deleted_at: string } {
69
+ return { deleted_at: new Date().toISOString() };
70
+ },
71
+
72
+ create(): UserFactoryData {
73
+ const base = makeUserData();
74
+ return {
75
+ ...base,
76
+ ...customData,
77
+ ...customStates,
78
+ } as UserFactoryData;
79
+ },
80
+ }) as UserFactory;