@zintrust/core 0.1.42 → 0.1.43

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 (365) hide show
  1. package/app/Controllers/AuthController.d.ts +10 -0
  2. package/app/Controllers/AuthController.d.ts.map +1 -0
  3. package/app/Controllers/AuthController.js +201 -0
  4. package/app/Controllers/UserController.d.ts +9 -0
  5. package/app/Controllers/UserController.d.ts.map +1 -0
  6. package/app/Controllers/UserController.js +8 -0
  7. package/app/Controllers/UserQueryBuilderController.d.ts +16 -0
  8. package/app/Controllers/UserQueryBuilderController.d.ts.map +1 -0
  9. package/app/Controllers/UserQueryBuilderController.js +404 -0
  10. package/app/Middleware/ProfilerMiddleware.d.ts +12 -0
  11. package/app/Middleware/ProfilerMiddleware.d.ts.map +1 -0
  12. package/app/Middleware/ProfilerMiddleware.js +47 -0
  13. package/app/Middleware/index.d.ts +59 -0
  14. package/app/Middleware/index.d.ts.map +1 -0
  15. package/app/Middleware/index.js +215 -0
  16. package/app/Models/Post.d.ts +14 -0
  17. package/app/Models/Post.d.ts.map +1 -0
  18. package/app/Models/Post.js +27 -0
  19. package/app/Models/User.d.ts +14 -0
  20. package/app/Models/User.d.ts.map +1 -0
  21. package/app/Models/User.js +44 -0
  22. package/app/Schedules/JobTracking.d.ts +3 -0
  23. package/app/Schedules/JobTracking.d.ts.map +1 -0
  24. package/app/Schedules/JobTracking.js +13 -0
  25. package/app/Schedules/index.d.ts +2 -0
  26. package/app/Schedules/index.d.ts.map +1 -0
  27. package/app/Schedules/index.js +1 -0
  28. package/app/Toolkit/Broadcast/sendBroadcast.d.ts +6 -0
  29. package/app/Toolkit/Broadcast/sendBroadcast.d.ts.map +1 -0
  30. package/app/Toolkit/Broadcast/sendBroadcast.js +5 -0
  31. package/app/Toolkit/Mail/sendWelcomeEmail.d.ts +6 -0
  32. package/app/Toolkit/Mail/sendWelcomeEmail.d.ts.map +1 -0
  33. package/app/Toolkit/Mail/sendWelcomeEmail.js +20 -0
  34. package/app/Toolkit/Notification/sendSlackNotification.d.ts +8 -0
  35. package/app/Toolkit/Notification/sendSlackNotification.d.ts.map +1 -0
  36. package/app/Toolkit/Notification/sendSlackNotification.js +5 -0
  37. package/app/Toolkit/Notification/sendSms.d.ts +6 -0
  38. package/app/Toolkit/Notification/sendSms.d.ts.map +1 -0
  39. package/app/Toolkit/Notification/sendSms.js +5 -0
  40. package/app/Types/controller.d.ts +42 -0
  41. package/app/Types/controller.d.ts.map +1 -0
  42. package/app/Types/controller.js +1 -0
  43. package/config/broadcast.d.ts +38 -0
  44. package/config/broadcast.d.ts.map +1 -0
  45. package/config/broadcast.js +37 -0
  46. package/config/cache.d.ts +40 -0
  47. package/config/cache.d.ts.map +1 -0
  48. package/config/cache.js +39 -0
  49. package/config/database.d.ts +58 -0
  50. package/config/database.d.ts.map +1 -0
  51. package/config/database.js +65 -0
  52. package/config/mail.d.ts +51 -0
  53. package/config/mail.d.ts.map +1 -0
  54. package/config/mail.js +69 -0
  55. package/config/middleware.d.ts +11 -0
  56. package/config/middleware.d.ts.map +1 -0
  57. package/config/middleware.js +30 -0
  58. package/config/notification.d.ts +33 -0
  59. package/config/notification.d.ts.map +1 -0
  60. package/config/notification.js +33 -0
  61. package/config/queue.d.ts +55 -0
  62. package/config/queue.d.ts.map +1 -0
  63. package/config/queue.js +87 -0
  64. package/config/storage.d.ts +59 -0
  65. package/config/storage.d.ts.map +1 -0
  66. package/config/storage.js +59 -0
  67. package/config/workers.d.ts +54 -0
  68. package/config/workers.d.ts.map +1 -0
  69. package/config/workers.js +83 -0
  70. package/package.json +11 -5
  71. package/packages/cloudflare-d1-proxy/src/index.d.ts +48 -0
  72. package/packages/cloudflare-d1-proxy/src/index.d.ts.map +1 -0
  73. package/packages/cloudflare-d1-proxy/src/index.js +387 -0
  74. package/packages/cloudflare-kv-proxy/src/index.d.ts +44 -0
  75. package/packages/cloudflare-kv-proxy/src/index.d.ts.map +1 -0
  76. package/packages/cloudflare-kv-proxy/src/index.js +325 -0
  77. package/packages/queue-monitor/src/QueueMonitoringService.d.ts +35 -0
  78. package/packages/queue-monitor/src/QueueMonitoringService.d.ts.map +1 -0
  79. package/packages/queue-monitor/src/QueueMonitoringService.js +194 -0
  80. package/packages/queue-monitor/src/connection.d.ts +3 -0
  81. package/packages/queue-monitor/src/connection.d.ts.map +1 -0
  82. package/packages/queue-monitor/src/connection.js +1 -0
  83. package/packages/queue-monitor/src/dashboard-ui.d.ts +7 -0
  84. package/packages/queue-monitor/src/dashboard-ui.d.ts.map +1 -0
  85. package/packages/queue-monitor/src/dashboard-ui.js +997 -0
  86. package/packages/queue-monitor/src/driver.d.ts +15 -0
  87. package/packages/queue-monitor/src/driver.d.ts.map +1 -0
  88. package/packages/queue-monitor/src/driver.js +115 -0
  89. package/packages/queue-monitor/src/index.d.ts +71 -0
  90. package/packages/queue-monitor/src/index.d.ts.map +1 -0
  91. package/packages/queue-monitor/src/index.js +296 -0
  92. package/packages/queue-monitor/src/metrics.d.ts +27 -0
  93. package/packages/queue-monitor/src/metrics.d.ts.map +1 -0
  94. package/packages/queue-monitor/src/metrics.js +92 -0
  95. package/packages/queue-monitor/src/worker.d.ts +8 -0
  96. package/packages/queue-monitor/src/worker.d.ts.map +1 -0
  97. package/packages/queue-monitor/src/worker.js +35 -0
  98. package/packages/queue-redis/src/BullMQRedisQueue.d.ts +26 -0
  99. package/packages/queue-redis/src/BullMQRedisQueue.d.ts.map +1 -0
  100. package/packages/queue-redis/src/BullMQRedisQueue.js +463 -0
  101. package/packages/queue-redis/src/HttpQueueDriver.d.ts +18 -0
  102. package/packages/queue-redis/src/HttpQueueDriver.d.ts.map +1 -0
  103. package/packages/queue-redis/src/HttpQueueDriver.js +249 -0
  104. package/packages/queue-redis/src/QueueHttpGateway.d.ts +16 -0
  105. package/packages/queue-redis/src/QueueHttpGateway.d.ts.map +1 -0
  106. package/packages/queue-redis/src/QueueHttpGateway.js +217 -0
  107. package/packages/queue-redis/src/RedisPublishClient.d.ts +14 -0
  108. package/packages/queue-redis/src/RedisPublishClient.d.ts.map +1 -0
  109. package/packages/queue-redis/src/RedisPublishClient.js +251 -0
  110. package/packages/queue-redis/src/index.d.ts +12 -0
  111. package/packages/queue-redis/src/index.d.ts.map +1 -0
  112. package/packages/queue-redis/src/index.js +10 -0
  113. package/packages/queue-redis/src/register.d.ts +6 -0
  114. package/packages/queue-redis/src/register.d.ts.map +1 -0
  115. package/packages/queue-redis/src/register.js +21 -0
  116. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts +11 -0
  117. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts.map +1 -0
  118. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.js +32 -0
  119. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts +11 -0
  120. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts.map +1 -0
  121. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.js +46 -0
  122. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts +7 -0
  123. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts.map +1 -0
  124. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.js +44 -0
  125. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts +7 -0
  126. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts.map +1 -0
  127. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.js +104 -0
  128. package/packages/workers/src/AnomalyDetection.d.ts +107 -0
  129. package/packages/workers/src/AnomalyDetection.d.ts.map +1 -0
  130. package/packages/workers/src/AnomalyDetection.js +329 -0
  131. package/packages/workers/src/AutoScaler.d.ts +128 -0
  132. package/packages/workers/src/AutoScaler.d.ts.map +1 -0
  133. package/packages/workers/src/AutoScaler.js +425 -0
  134. package/packages/workers/src/BroadcastWorker.d.ts +24 -0
  135. package/packages/workers/src/BroadcastWorker.d.ts.map +1 -0
  136. package/packages/workers/src/BroadcastWorker.js +24 -0
  137. package/packages/workers/src/CanaryController.d.ts +104 -0
  138. package/packages/workers/src/CanaryController.d.ts.map +1 -0
  139. package/packages/workers/src/CanaryController.js +424 -0
  140. package/packages/workers/src/ChaosEngineering.d.ts +80 -0
  141. package/packages/workers/src/ChaosEngineering.d.ts.map +1 -0
  142. package/packages/workers/src/ChaosEngineering.js +229 -0
  143. package/packages/workers/src/CircuitBreaker.d.ts +107 -0
  144. package/packages/workers/src/CircuitBreaker.d.ts.map +1 -0
  145. package/packages/workers/src/CircuitBreaker.js +374 -0
  146. package/packages/workers/src/ClusterLock.d.ts +91 -0
  147. package/packages/workers/src/ClusterLock.d.ts.map +1 -0
  148. package/packages/workers/src/ClusterLock.js +397 -0
  149. package/packages/workers/src/ComplianceManager.d.ts +178 -0
  150. package/packages/workers/src/ComplianceManager.d.ts.map +1 -0
  151. package/packages/workers/src/ComplianceManager.js +556 -0
  152. package/packages/workers/src/DatacenterOrchestrator.d.ts +134 -0
  153. package/packages/workers/src/DatacenterOrchestrator.d.ts.map +1 -0
  154. package/packages/workers/src/DatacenterOrchestrator.js +404 -0
  155. package/packages/workers/src/DeadLetterQueue.d.ts +123 -0
  156. package/packages/workers/src/DeadLetterQueue.d.ts.map +1 -0
  157. package/packages/workers/src/DeadLetterQueue.js +544 -0
  158. package/packages/workers/src/HealthMonitor.d.ts +43 -0
  159. package/packages/workers/src/HealthMonitor.d.ts.map +1 -0
  160. package/packages/workers/src/HealthMonitor.js +312 -0
  161. package/packages/workers/src/MultiQueueWorker.d.ts +90 -0
  162. package/packages/workers/src/MultiQueueWorker.d.ts.map +1 -0
  163. package/packages/workers/src/MultiQueueWorker.js +282 -0
  164. package/packages/workers/src/NotificationWorker.d.ts +24 -0
  165. package/packages/workers/src/NotificationWorker.d.ts.map +1 -0
  166. package/packages/workers/src/NotificationWorker.js +23 -0
  167. package/packages/workers/src/Observability.d.ts +154 -0
  168. package/packages/workers/src/Observability.d.ts.map +1 -0
  169. package/packages/workers/src/Observability.js +538 -0
  170. package/packages/workers/src/PluginManager.d.ts +124 -0
  171. package/packages/workers/src/PluginManager.d.ts.map +1 -0
  172. package/packages/workers/src/PluginManager.js +392 -0
  173. package/packages/workers/src/PriorityQueue.d.ts +118 -0
  174. package/packages/workers/src/PriorityQueue.d.ts.map +1 -0
  175. package/packages/workers/src/PriorityQueue.js +276 -0
  176. package/packages/workers/src/ResourceMonitor.d.ts +165 -0
  177. package/packages/workers/src/ResourceMonitor.d.ts.map +1 -0
  178. package/packages/workers/src/ResourceMonitor.js +632 -0
  179. package/packages/workers/src/SLAMonitor.d.ts +111 -0
  180. package/packages/workers/src/SLAMonitor.d.ts.map +1 -0
  181. package/packages/workers/src/SLAMonitor.js +274 -0
  182. package/packages/workers/src/WorkerFactory.d.ts +218 -0
  183. package/packages/workers/src/WorkerFactory.d.ts.map +1 -0
  184. package/packages/workers/src/WorkerFactory.js +2253 -0
  185. package/packages/workers/src/WorkerInit.d.ts +86 -0
  186. package/packages/workers/src/WorkerInit.d.ts.map +1 -0
  187. package/packages/workers/src/WorkerInit.js +307 -0
  188. package/packages/workers/src/WorkerMetrics.d.ts +116 -0
  189. package/packages/workers/src/WorkerMetrics.d.ts.map +1 -0
  190. package/packages/workers/src/WorkerMetrics.js +570 -0
  191. package/packages/workers/src/WorkerRegistry.d.ts +152 -0
  192. package/packages/workers/src/WorkerRegistry.d.ts.map +1 -0
  193. package/packages/workers/src/WorkerRegistry.js +396 -0
  194. package/packages/workers/src/WorkerShutdown.d.ts +70 -0
  195. package/packages/workers/src/WorkerShutdown.d.ts.map +1 -0
  196. package/packages/workers/src/WorkerShutdown.js +185 -0
  197. package/packages/workers/src/WorkerVersioning.d.ts +108 -0
  198. package/packages/workers/src/WorkerVersioning.d.ts.map +1 -0
  199. package/packages/workers/src/WorkerVersioning.js +300 -0
  200. package/packages/workers/src/config/workerConfig.d.ts +5 -0
  201. package/packages/workers/src/config/workerConfig.d.ts.map +1 -0
  202. package/packages/workers/src/config/workerConfig.js +25 -0
  203. package/packages/workers/src/createQueueWorker.d.ts +26 -0
  204. package/packages/workers/src/createQueueWorker.d.ts.map +1 -0
  205. package/packages/workers/src/createQueueWorker.js +367 -0
  206. package/packages/workers/src/dashboard/index.d.ts +2 -0
  207. package/packages/workers/src/dashboard/index.d.ts.map +1 -0
  208. package/packages/workers/src/dashboard/index.js +1 -0
  209. package/packages/workers/src/dashboard/types.d.ts +123 -0
  210. package/packages/workers/src/dashboard/types.d.ts.map +1 -0
  211. package/packages/workers/src/dashboard/types.js +1 -0
  212. package/packages/workers/src/dashboard/workers-api.d.ts +5 -0
  213. package/packages/workers/src/dashboard/workers-api.d.ts.map +1 -0
  214. package/packages/workers/src/dashboard/workers-api.js +738 -0
  215. package/packages/workers/src/helper/index.d.ts +6 -0
  216. package/packages/workers/src/helper/index.d.ts.map +1 -0
  217. package/packages/workers/src/helper/index.js +10 -0
  218. package/packages/workers/src/http/WorkerApiController.d.ts +39 -0
  219. package/packages/workers/src/http/WorkerApiController.d.ts.map +1 -0
  220. package/packages/workers/src/http/WorkerApiController.js +313 -0
  221. package/packages/workers/src/http/WorkerController.d.ts +375 -0
  222. package/packages/workers/src/http/WorkerController.d.ts.map +1 -0
  223. package/packages/workers/src/http/WorkerController.js +1454 -0
  224. package/packages/workers/src/http/WorkerMonitoringService.d.ts +12 -0
  225. package/packages/workers/src/http/WorkerMonitoringService.d.ts.map +1 -0
  226. package/packages/workers/src/http/WorkerMonitoringService.js +89 -0
  227. package/packages/workers/src/http/middleware/CustomValidation.d.ts +93 -0
  228. package/packages/workers/src/http/middleware/CustomValidation.d.ts.map +1 -0
  229. package/packages/workers/src/http/middleware/CustomValidation.js +270 -0
  230. package/packages/workers/src/http/middleware/DatacenterValidator.d.ts +4 -0
  231. package/packages/workers/src/http/middleware/DatacenterValidator.d.ts.map +1 -0
  232. package/packages/workers/src/http/middleware/DatacenterValidator.js +94 -0
  233. package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts +8 -0
  234. package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts.map +1 -0
  235. package/packages/workers/src/http/middleware/EditWorkerValidation.js +56 -0
  236. package/packages/workers/src/http/middleware/FeaturesValidator.d.ts +4 -0
  237. package/packages/workers/src/http/middleware/FeaturesValidator.d.ts.map +1 -0
  238. package/packages/workers/src/http/middleware/FeaturesValidator.js +60 -0
  239. package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts +32 -0
  240. package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts.map +1 -0
  241. package/packages/workers/src/http/middleware/InfrastructureValidator.js +226 -0
  242. package/packages/workers/src/http/middleware/OptionsValidator.d.ts +4 -0
  243. package/packages/workers/src/http/middleware/OptionsValidator.d.ts.map +1 -0
  244. package/packages/workers/src/http/middleware/OptionsValidator.js +112 -0
  245. package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts +8 -0
  246. package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts.map +1 -0
  247. package/packages/workers/src/http/middleware/PayloadSanitizer.js +42 -0
  248. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts +4 -0
  249. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts.map +1 -0
  250. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.js +140 -0
  251. package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts +4 -0
  252. package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts.map +1 -0
  253. package/packages/workers/src/http/middleware/QueueNameSanitizer.js +45 -0
  254. package/packages/workers/src/http/middleware/ValidateDriver.d.ts +8 -0
  255. package/packages/workers/src/http/middleware/ValidateDriver.d.ts.map +1 -0
  256. package/packages/workers/src/http/middleware/ValidateDriver.js +20 -0
  257. package/packages/workers/src/http/middleware/VersionSanitizer.d.ts +4 -0
  258. package/packages/workers/src/http/middleware/VersionSanitizer.d.ts.map +1 -0
  259. package/packages/workers/src/http/middleware/VersionSanitizer.js +25 -0
  260. package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts +4 -0
  261. package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts.map +1 -0
  262. package/packages/workers/src/http/middleware/WorkerNameSanitizer.js +46 -0
  263. package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts +28 -0
  264. package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts.map +1 -0
  265. package/packages/workers/src/http/middleware/WorkerValidationChain.js +186 -0
  266. package/packages/workers/src/index.d.ts +47 -0
  267. package/packages/workers/src/index.d.ts.map +1 -0
  268. package/packages/workers/src/index.js +48 -0
  269. package/packages/workers/src/routes/workers.d.ts +13 -0
  270. package/packages/workers/src/routes/workers.d.ts.map +1 -0
  271. package/packages/workers/src/routes/workers.js +126 -0
  272. package/packages/workers/src/storage/WorkerStore.d.ts +52 -0
  273. package/packages/workers/src/storage/WorkerStore.d.ts.map +1 -0
  274. package/packages/workers/src/storage/WorkerStore.js +259 -0
  275. package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts +47 -0
  276. package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts.map +1 -0
  277. package/packages/workers/src/telemetry/api/TelemetryAPI.js +219 -0
  278. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts +18 -0
  279. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts.map +1 -0
  280. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.js +140 -0
  281. package/packages/workers/src/telemetry/components/AlertPanel.d.ts +2 -0
  282. package/packages/workers/src/telemetry/components/AlertPanel.d.ts.map +1 -0
  283. package/packages/workers/src/telemetry/components/AlertPanel.js +13 -0
  284. package/packages/workers/src/telemetry/components/CostTracking.d.ts +2 -0
  285. package/packages/workers/src/telemetry/components/CostTracking.d.ts.map +1 -0
  286. package/packages/workers/src/telemetry/components/CostTracking.js +14 -0
  287. package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts +2 -0
  288. package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts.map +1 -0
  289. package/packages/workers/src/telemetry/components/ResourceUsageChart.js +11 -0
  290. package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts +2 -0
  291. package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts.map +1 -0
  292. package/packages/workers/src/telemetry/components/WorkerHealthChart.js +11 -0
  293. package/packages/workers/src/telemetry/index.d.ts +16 -0
  294. package/packages/workers/src/telemetry/index.d.ts.map +1 -0
  295. package/packages/workers/src/telemetry/index.js +60 -0
  296. package/packages/workers/src/telemetry/routes/dashboard.d.ts +7 -0
  297. package/packages/workers/src/telemetry/routes/dashboard.d.ts.map +1 -0
  298. package/packages/workers/src/telemetry/routes/dashboard.js +608 -0
  299. package/packages/workers/src/type.d.ts +77 -0
  300. package/packages/workers/src/type.d.ts.map +1 -0
  301. package/packages/workers/src/type.js +1 -0
  302. package/packages/workers/src/ui/router/EmbeddedAssets.d.ts +5 -0
  303. package/packages/workers/src/ui/router/EmbeddedAssets.d.ts.map +1 -0
  304. package/packages/workers/src/ui/router/EmbeddedAssets.js +13 -0
  305. package/packages/workers/src/ui/router/ui.d.ts +4 -0
  306. package/packages/workers/src/ui/router/ui.d.ts.map +1 -0
  307. package/packages/workers/src/ui/router/ui.js +208 -0
  308. package/packages/workers/src/ui/types/worker-ui.d.ts +230 -0
  309. package/packages/workers/src/ui/types/worker-ui.d.ts.map +1 -0
  310. package/packages/workers/src/ui/types/worker-ui.js +5 -0
  311. package/routes/api.d.ts +7 -0
  312. package/routes/api.d.ts.map +1 -0
  313. package/routes/api.js +129 -0
  314. package/routes/broadcast.d.ts +9 -0
  315. package/routes/broadcast.d.ts.map +1 -0
  316. package/routes/broadcast.js +27 -0
  317. package/routes/storage.d.ts +4 -0
  318. package/routes/storage.d.ts.map +1 -0
  319. package/routes/storage.js +35 -0
  320. package/src/cache/Cache.d.ts.map +1 -1
  321. package/src/cache/Cache.js +40 -8
  322. package/src/cache/drivers/KVRemoteDriver.d.ts +1 -1
  323. package/src/cache/drivers/KVRemoteDriver.d.ts.map +1 -1
  324. package/src/cache/drivers/KVRemoteDriver.js +259 -44
  325. package/src/cache/drivers/MemoryDriver.d.ts.map +1 -1
  326. package/src/cache/drivers/MemoryDriver.js +10 -2
  327. package/src/cache/drivers/RedisDriver.d.ts.map +1 -1
  328. package/src/cache/drivers/RedisDriver.js +256 -33
  329. package/src/cli/commands/InitContainerCommand.js +10 -10
  330. package/src/cli/commands/NewCommand.d.ts.map +1 -1
  331. package/src/cli/commands/NewCommand.js +33 -0
  332. package/src/cli/commands/StartCommand.d.ts.map +1 -1
  333. package/src/cli/commands/StartCommand.js +23 -1
  334. package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
  335. package/src/cli/scaffolding/ProjectScaffolder.js +65 -73
  336. package/src/cli/utils/DistPackager.d.ts.map +1 -1
  337. package/src/cli/utils/DistPackager.js +25 -0
  338. package/src/cli/utils/EnvFileLoader.d.ts +1 -0
  339. package/src/cli/utils/EnvFileLoader.d.ts.map +1 -1
  340. package/src/cli/utils/EnvFileLoader.js +14 -0
  341. package/src/common/RemoteSignedJson.d.ts.map +1 -1
  342. package/src/common/RemoteSignedJson.js +9 -2
  343. package/src/config/cache.js +1 -1
  344. package/src/config/env.d.ts +7 -0
  345. package/src/config/env.d.ts.map +1 -1
  346. package/src/config/env.js +8 -0
  347. package/src/config/queue.js +1 -1
  348. package/src/functions/cloudflare.d.ts.map +1 -1
  349. package/src/functions/cloudflare.js +4 -2
  350. package/src/index.js +3 -3
  351. package/src/middleware/JwtAuthMiddleware.d.ts.map +1 -1
  352. package/src/middleware/JwtAuthMiddleware.js +11 -5
  353. package/src/runtime/RuntimeAdapter.d.ts.map +1 -1
  354. package/src/runtime/RuntimeAdapter.js +30 -12
  355. package/src/runtime/adapters/CloudflareAdapter.d.ts.map +1 -1
  356. package/src/runtime/adapters/CloudflareAdapter.js +15 -4
  357. package/src/scheduler/Schedule.js +1 -1
  358. package/src/scheduler/leader/SchedulerLeader.js +1 -1
  359. package/src/schedules/job-tracking-cleanup.js +1 -1
  360. package/src/security/TokenRevocation.d.ts +19 -2
  361. package/src/security/TokenRevocation.d.ts.map +1 -1
  362. package/src/security/TokenRevocation.js +558 -30
  363. package/src/templates/project/basic/app/Controllers/AuthController.ts.tpl +11 -3
  364. package/src/templates/project/basic/config/middleware.ts.tpl +23 -22
  365. package/src/templates/project/basic/wrangler.jsonc.tpl +28 -0
@@ -2,40 +2,235 @@
2
2
  * Redis Cache Driver
3
3
  * Zero-dependency implementation using Node.js native net module
4
4
  */
5
+ import { Cloudflare } from '../../config/cloudflare.js';
5
6
  import { Env } from '../../config/env.js';
6
7
  import { Logger } from '../../config/logger.js';
8
+ import { createRedisConnection } from '../../config/workers.js';
9
+ import { ErrorFactory } from '../../exceptions/ZintrustError.js';
7
10
  import * as net from '../../node-singletons/net.js';
8
11
  import { RedisKeys } from '../../tools/redis/RedisKeyManager.js';
9
- /**
10
- * Create a new Redis driver instance
11
- */
12
- const create = () => {
12
+ const listenPreferOnce = (socket, event, cb) => {
13
+ if (typeof socket.once === 'function') {
14
+ socket.once(event, cb);
15
+ return;
16
+ }
17
+ socket.on?.(event, cb);
18
+ };
19
+ const listenPreferOn = (socket, event, cb) => {
20
+ if (typeof socket.on === 'function') {
21
+ socket.on(event, cb);
22
+ return;
23
+ }
24
+ socket.once?.(event, cb);
25
+ };
26
+ const hasToString = (value) => {
27
+ if (value === null || value === undefined)
28
+ return false;
29
+ return typeof value.toString === 'function';
30
+ };
31
+ const createIoredisClient = (params) => {
32
+ if (String(Env.NODE_ENV ?? '').startsWith('test'))
33
+ return null;
34
+ try {
35
+ const db = Env.getInt('REDIS_CACHE_DB', Env.getInt('REDIS_QUEUE_DB', 0));
36
+ const client = createRedisConnection({
37
+ host: Env.REDIS_HOST,
38
+ port: Env.REDIS_PORT,
39
+ password: Env.get('REDIS_PASSWORD', ''),
40
+ db,
41
+ }, 3);
42
+ return client !== null && typeof client.get === 'function' ? client : null;
43
+ }
44
+ catch (error) {
45
+ const msg = error instanceof Error ? error.message : String(error);
46
+ if (params.isWorkersRuntime || params.wantsProxy) {
47
+ Logger.error('Redis cache driver initialization failed', { error: msg });
48
+ throw error;
49
+ }
50
+ Logger.warn('Redis cache driver falling back to TCP socket implementation', {
51
+ error: msg,
52
+ });
53
+ return null;
54
+ }
55
+ };
56
+ const createCacheDriverFromIoredisClient = (client) => ({
57
+ async get(key) {
58
+ try {
59
+ const prefixedKey = RedisKeys.createCacheKey(key);
60
+ const value = await client.get(prefixedKey);
61
+ if (value === null)
62
+ return null;
63
+ return JSON.parse(value);
64
+ }
65
+ catch (error) {
66
+ Logger.error('Redis GET failed', error);
67
+ return null;
68
+ }
69
+ },
70
+ async set(key, value, ttl) {
71
+ try {
72
+ const prefixedKey = RedisKeys.createCacheKey(key);
73
+ const jsonValue = JSON.stringify(value);
74
+ if (ttl === undefined) {
75
+ await client.set(prefixedKey, jsonValue);
76
+ return;
77
+ }
78
+ await client.set(prefixedKey, jsonValue, 'EX', ttl);
79
+ }
80
+ catch (error) {
81
+ Logger.error('Redis SET failed', error);
82
+ }
83
+ },
84
+ async delete(key) {
85
+ try {
86
+ const prefixedKey = RedisKeys.createCacheKey(key);
87
+ await client.del(prefixedKey);
88
+ }
89
+ catch (error) {
90
+ Logger.error('Redis DEL failed', error);
91
+ }
92
+ },
93
+ async clear() {
94
+ try {
95
+ await client.flushdb();
96
+ }
97
+ catch (error) {
98
+ Logger.error('Redis FLUSHDB failed', error);
99
+ }
100
+ },
101
+ async has(key) {
102
+ try {
103
+ const prefixedKey = RedisKeys.createCacheKey(key);
104
+ const out = await client.exists(prefixedKey);
105
+ return out > 0;
106
+ }
107
+ catch (error) {
108
+ Logger.error('Redis EXISTS failed', error);
109
+ return false;
110
+ }
111
+ },
112
+ });
113
+ const createIoredisCacheDriver = (params) => {
114
+ const client = createIoredisClient(params);
115
+ return client === null ? null : createCacheDriverFromIoredisClient(client);
116
+ };
117
+ const createTcpConnect = (params) => {
13
118
  let client = null;
14
- const host = Env.REDIS_HOST;
15
- const port = Env.REDIS_PORT;
16
- const connect = async () => {
119
+ return async () => {
17
120
  if (client && !client.destroyed)
18
121
  return client;
19
122
  return new Promise((resolve, reject) => {
20
- const socket = net.connect(port, host, () => {
21
- client = socket;
22
- resolve(socket);
23
- });
24
- socket.on('error', (err) => {
123
+ const onTimeout = () => {
124
+ cleanup();
125
+ try {
126
+ socket.destroy?.();
127
+ }
128
+ catch {
129
+ /* ignore */
130
+ }
131
+ reject(ErrorFactory.createConnectionError('Redis connection timeout', {
132
+ host: params.host,
133
+ port: params.port,
134
+ timeoutMs: params.connectTimeoutMs,
135
+ }));
136
+ };
137
+ const onError = (err) => {
138
+ cleanup();
25
139
  Logger.error(`Redis Connection Error: ${err.message}`);
26
140
  reject(err);
27
- });
141
+ };
142
+ const onErrorUnknown = (err) => {
143
+ if (err instanceof Error) {
144
+ onError(err);
145
+ return;
146
+ }
147
+ cleanup();
148
+ const msg = String(err);
149
+ Logger.error(`Redis Connection Error: ${msg}`);
150
+ reject(ErrorFactory.createConnectionError(`Redis Connection Error: ${msg}`, {
151
+ error: msg,
152
+ }));
153
+ };
154
+ const onConnect = () => {
155
+ cleanup();
156
+ client = socket;
157
+ resolve(socket);
158
+ };
159
+ const socket = net.connect(params.port, params.host, onConnect);
160
+ const anySocket = socket;
161
+ const cleanup = () => {
162
+ anySocket.setTimeout?.(0);
163
+ anySocket.removeListener?.('timeout', onTimeout);
164
+ anySocket.removeListener?.('error', onErrorUnknown);
165
+ };
166
+ anySocket.setTimeout?.(Math.max(1, params.connectTimeoutMs));
167
+ listenPreferOnce(anySocket, 'timeout', onTimeout);
168
+ listenPreferOn(anySocket, 'error', onErrorUnknown);
28
169
  });
29
170
  };
30
- const sendCommand = async (command) => {
31
- const socket = await connect();
32
- return new Promise((resolve, _reject) => {
33
- socket.once('data', (data) => {
34
- resolve(data.toString());
35
- });
36
- socket.write(command);
171
+ };
172
+ const createTcpSendCommand = (params) => {
173
+ return async (command) => {
174
+ const socket = await params.connect();
175
+ const anySocket = socket;
176
+ return new Promise((resolve, reject) => {
177
+ let settled = false;
178
+ const onDataUnknown = (data) => {
179
+ if (typeof data === 'string') {
180
+ settleOk(data);
181
+ return;
182
+ }
183
+ if (hasToString(data)) {
184
+ settleOk(data.toString());
185
+ return;
186
+ }
187
+ settleOk(String(data));
188
+ };
189
+ const onErrorUnknown = (err) => {
190
+ settleErr(err instanceof Error
191
+ ? err
192
+ : ErrorFactory.createConnectionError('Redis socket error', {
193
+ error: String(err),
194
+ }));
195
+ };
196
+ const cleanup = () => {
197
+ anySocket.setTimeout?.(0);
198
+ anySocket.removeListener?.('data', onDataUnknown);
199
+ anySocket.removeListener?.('error', onErrorUnknown);
200
+ anySocket.removeListener?.('timeout', onTimeout);
201
+ };
202
+ const settleOk = (value) => {
203
+ if (settled)
204
+ return;
205
+ settled = true;
206
+ cleanup();
207
+ resolve(value);
208
+ };
209
+ const settleErr = (err) => {
210
+ if (settled)
211
+ return;
212
+ settled = true;
213
+ cleanup();
214
+ reject(err);
215
+ };
216
+ const onTimeout = () => settleErr(ErrorFactory.createConnectionError('Redis command timeout', {
217
+ timeoutMs: params.commandTimeoutMs,
218
+ }));
219
+ anySocket.setTimeout?.(Math.max(1, params.commandTimeoutMs));
220
+ listenPreferOnce(anySocket, 'data', onDataUnknown);
221
+ listenPreferOnce(anySocket, 'timeout', onTimeout);
222
+ listenPreferOn(anySocket, 'error', onErrorUnknown);
223
+ anySocket.write?.(command);
37
224
  });
38
225
  };
226
+ };
227
+ const createTcpCacheDriver = () => {
228
+ const host = Env.REDIS_HOST;
229
+ const port = Env.REDIS_PORT;
230
+ const connectTimeoutMs = Env.getInt('REDIS_CONNECT_TIMEOUT_MS', 5_000);
231
+ const commandTimeoutMs = Env.getInt('REDIS_COMMAND_TIMEOUT_MS', 5_000);
232
+ const connect = createTcpConnect({ host, port, connectTimeoutMs });
233
+ const sendCommand = createTcpSendCommand({ connect, commandTimeoutMs });
39
234
  return {
40
235
  async get(key) {
41
236
  try {
@@ -43,7 +238,6 @@ const create = () => {
43
238
  const response = await sendCommand(`GET ${prefixedKey}\r\n`);
44
239
  if (response.startsWith('$-1'))
45
240
  return null;
46
- // Basic RESP parsing
47
241
  const lines = response.split('\r\n');
48
242
  const value = lines[1];
49
243
  return JSON.parse(value);
@@ -54,28 +248,57 @@ const create = () => {
54
248
  }
55
249
  },
56
250
  async set(key, value, ttl) {
57
- const prefixedKey = RedisKeys.createCacheKey(key);
58
- const jsonValue = JSON.stringify(value);
59
- let command = `SET ${prefixedKey} ${jsonValue}\r\n`;
60
- if (ttl !== undefined) {
61
- command = `SETEX ${prefixedKey} ${ttl} ${jsonValue}\r\n`;
251
+ try {
252
+ const prefixedKey = RedisKeys.createCacheKey(key);
253
+ const jsonValue = JSON.stringify(value);
254
+ const command = ttl === undefined
255
+ ? `SET ${prefixedKey} ${jsonValue}\r\n`
256
+ : `SETEX ${prefixedKey} ${ttl} ${jsonValue}\r\n`;
257
+ await sendCommand(command);
258
+ }
259
+ catch (error) {
260
+ Logger.error('Redis SET failed', error);
62
261
  }
63
- await sendCommand(command);
64
262
  },
65
263
  async delete(key) {
66
- const prefixedKey = RedisKeys.createCacheKey(key);
67
- await sendCommand(`DEL ${prefixedKey}\r\n`);
264
+ try {
265
+ const prefixedKey = RedisKeys.createCacheKey(key);
266
+ await sendCommand(`DEL ${prefixedKey}\r\n`);
267
+ }
268
+ catch (error) {
269
+ Logger.error('Redis DEL failed', error);
270
+ }
68
271
  },
69
272
  async clear() {
70
- await sendCommand(`FLUSHDB\r\n`);
273
+ try {
274
+ await sendCommand(`FLUSHDB\r\n`);
275
+ }
276
+ catch (error) {
277
+ Logger.error('Redis FLUSHDB failed', error);
278
+ }
71
279
  },
72
280
  async has(key) {
73
- const prefixedKey = RedisKeys.createCacheKey(key);
74
- const response = await sendCommand(`EXISTS ${prefixedKey}\r\n`);
75
- return response.includes(':1');
281
+ try {
282
+ const prefixedKey = RedisKeys.createCacheKey(key);
283
+ const response = await sendCommand(`EXISTS ${prefixedKey}\r\n`);
284
+ return response.includes(':1');
285
+ }
286
+ catch (error) {
287
+ Logger.error('Redis EXISTS failed', error);
288
+ return false;
289
+ }
76
290
  },
77
291
  };
78
292
  };
293
+ /**
294
+ * Create a new Redis driver instance
295
+ */
296
+ const create = () => {
297
+ const isWorkersRuntime = Cloudflare.getWorkersEnv() !== null;
298
+ const wantsProxy = Env.USE_REDIS_PROXY === true || (Env.get('REDIS_PROXY_URL', '') || '').trim() !== '';
299
+ const ioredisDriver = createIoredisCacheDriver({ isWorkersRuntime, wantsProxy });
300
+ return ioredisDriver ?? createTcpCacheDriver();
301
+ };
79
302
  /**
80
303
  * RedisDriver namespace - sealed for immutability
81
304
  */
@@ -98,7 +98,7 @@ services:
98
98
  `;
99
99
  const DOCKERFILE_TEMPLATE = String.raw `# syntax=docker/dockerfile:1.6
100
100
  # Build Stage - Compile TypeScript
101
- FROM node:20-alpine AS builder
101
+ FROM node:20-bookworm-slim AS builder
102
102
 
103
103
  WORKDIR /app
104
104
 
@@ -106,12 +106,10 @@ WORKDIR /app
106
106
  ENV NPM_CONFIG_CACHE=/root/.npm
107
107
  ENV NPM_CONFIG_PREFER_OFFLINE=true
108
108
 
109
- # Reuse npm cache across builds (requires BuildKit)
110
- ENV NPM_CONFIG_CACHE=/root/.npm
111
- ENV NPM_CONFIG_PREFER_OFFLINE=true
112
-
113
109
  # Install build dependencies for native modules (better-sqlite3, bcrypt)
114
- RUN apk add --no-cache python3 make g++
110
+ RUN apt-get update \
111
+ && apt-get install -y --no-install-recommends python3 make g++ \
112
+ && rm -rf /var/lib/apt/lists/*
115
113
 
116
114
  # Copy package files
117
115
  COPY package.json package-lock.json ./
@@ -131,7 +129,7 @@ ARG BUILD_VARIANT=full
131
129
  RUN --mount=type=cache,target=/root/.npm,id=zintrust-npm-cache,sharing=locked npm run build:dk
132
130
 
133
131
  # Runtime Stage - Production image
134
- FROM node:20-alpine AS runtime
132
+ FROM node:20-bookworm-slim AS runtime
135
133
 
136
134
  WORKDIR /app
137
135
 
@@ -141,16 +139,18 @@ ENV PORT=7772
141
139
  ENV HOST=0.0.0.0
142
140
 
143
141
  # Create non-root user for security
144
- RUN addgroup -g 1001 -S nodejs && adduser -S nodejs -u 1001
142
+ RUN groupadd -g 1001 nodejs && useradd -u 1001 -g 1001 -m -s /usr/sbin/nologin nodejs
145
143
 
146
144
  # Copy package files for production dependencies
147
145
  COPY package.json package-lock.json ./
148
146
 
149
147
  # Install only production dependencies (requires build tools for native modules)
150
148
  RUN --mount=type=cache,target=/root/.npm,id=zintrust-npm-cache,sharing=locked \
151
- apk add --no-cache --virtual .build-deps python3 make g++ \
149
+ apt-get update \
150
+ && apt-get install -y --no-install-recommends python3 make g++ \
152
151
  && npm ci --omit=dev \
153
- && apk del .build-deps
152
+ && apt-get purge -y --auto-remove python3 make g++ \
153
+ && rm -rf /var/lib/apt/lists/*
154
154
 
155
155
  # Copy compiled code from builder stage
156
156
  COPY --from=builder /app/dist ./dist
@@ -1 +1 @@
1
- {"version":3,"file":"NewCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/NewCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAerE,KAAK,YAAY,GAAG,OAAO,GAAG,KAAK,GAAG,cAAc,GAAG,WAAW,CAAC;AACnE,KAAK,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,GAAG,SAAS,GAAG,WAAW,CAAC;AAYhF,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,KAAK,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAwPhD,UAAU,WAAY,SAAQ,YAAY;IACxC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACxF,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACzF,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,GAAG,gBAAgB,EAAE,CAAC;IACjF,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC;IAChC,YAAY,IAAI,MAAM,CAAC;IACvB,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,sBAAsB,EAC9B,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACpE;AAwOD;;;GAGG;AACH,eAAO,MAAM,UAAU;IACrB;;OAEG;cACO,WAAW;EAGrB,CAAC"}
1
+ {"version":3,"file":"NewCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/NewCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAgBrE,KAAK,YAAY,GAAG,OAAO,GAAG,KAAK,GAAG,cAAc,GAAG,WAAW,CAAC;AACnE,KAAK,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,GAAG,SAAS,GAAG,WAAW,CAAC;AAYhF,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,KAAK,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAwPhD,UAAU,WAAY,SAAQ,YAAY;IACxC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACxF,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACzF,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,GAAG,gBAAgB,EAAE,CAAC;IACjF,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC;IAChC,YAAY,IAAI,MAAM,CAAC;IACvB,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,sBAAsB,EAC9B,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACpE;AA0RD;;;GAGG;AACH,eAAO,MAAM,UAAU;IACrB;;OAEG;cACO,WAAW;EAGrB,CAAC"}
@@ -8,6 +8,7 @@ import { extractErrorMessage, resolvePackageManager } from '../../common/index.j
8
8
  import { appConfig } from '../../config/app.js';
9
9
  import { ErrorFactory } from '../../exceptions/ZintrustError.js';
10
10
  import { execFileSync } from '../../node-singletons/child-process.js';
11
+ import fs from '../../node-singletons/fs.js';
11
12
  import * as path from '../../node-singletons/path.js';
12
13
  import chalk from 'chalk';
13
14
  const getGitBinary = () => 'git';
@@ -233,9 +234,39 @@ const addOptions = (command) => {
233
234
  command.option('--install', 'Force dependency installation (useful to override CI defaults)');
234
235
  command.option('--package-manager <manager>', 'Package manager to use (npm, yarn, pnpm)');
235
236
  command.option('--governance', 'Install governance tooling (ESLint + architecture tests)', false);
237
+ command.option('--with-d1-proxy', 'Add @zintrust/cloudflare-d1-proxy to package.json (for deploying the D1 proxy worker)', false);
236
238
  command.option('--force', 'Overwrite existing directory');
237
239
  command.option('--overwrite', 'Overwrite existing directory');
238
240
  };
241
+ const maybeAddD1ProxyDependency = (projectPath, options, log) => {
242
+ const enabled = options['withD1Proxy'] === true || options['with-d1-proxy'] === true;
243
+ if (!enabled)
244
+ return;
245
+ const packageJsonPath = path.join(projectPath, 'package.json');
246
+ if (!fs.existsSync(packageJsonPath)) {
247
+ log.warn(`Could not add @zintrust/cloudflare-d1-proxy (missing package.json at ${packageJsonPath})`);
248
+ return;
249
+ }
250
+ try {
251
+ const raw = fs.readFileSync(packageJsonPath, 'utf8');
252
+ const pkg = JSON.parse(raw);
253
+ const dependencies = { ...pkg.dependencies };
254
+ if (typeof dependencies['@zintrust/cloudflare-d1-proxy'] !== 'string') {
255
+ // Avoid pinning to core version (they can differ). Use a safe caret range.
256
+ dependencies['@zintrust/cloudflare-d1-proxy'] = '^0.1.42';
257
+ }
258
+ const next = {
259
+ ...pkg,
260
+ dependencies,
261
+ };
262
+ fs.writeFileSync(packageJsonPath, JSON.stringify(next, null, 2) + '\n');
263
+ log.info('✅ Added @zintrust/cloudflare-d1-proxy to dependencies');
264
+ }
265
+ catch (error) {
266
+ ErrorFactory.createCliError('Failed to update package.json with D1 proxy dependency', error);
267
+ log.warn('Please add @zintrust/cloudflare-d1-proxy manually if you need the proxy worker.');
268
+ }
269
+ };
239
270
  const resolveProjectName = async (options) => {
240
271
  const argName = options.args?.[0];
241
272
  const projectName = argName ?? (await PromptHelper.projectName('my-zintrust-app', true));
@@ -285,6 +316,8 @@ const createProject = async (target, options, command) => {
285
316
  throw ErrorFactory.createCliError(gov.message ?? 'Governance scaffolding failed', gov);
286
317
  }
287
318
  }
319
+ // Optional dependency injection must happen before `npm/yarn/pnpm install`.
320
+ maybeAddD1ProxyDependency(target.projectPath, options, command);
288
321
  };
289
322
  const maybeInitializeGit = (options, command, target) => {
290
323
  if (options['git'] !== false) {
@@ -1 +1 @@
1
- {"version":3,"file":"StartCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/StartCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAqkBvF,eAAO,MAAM,YAAY;cACb,YAAY;EA0BtB,CAAC"}
1
+ {"version":3,"file":"StartCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/StartCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA2lBvF,eAAO,MAAM,YAAY;cACb,YAAY;EA4BtB,CAAC"}
@@ -132,6 +132,20 @@ const resolveWatchPreference = (options, mode) => {
132
132
  return options.watch;
133
133
  return mode === 'development';
134
134
  };
135
+ const resolveCacheEnabledPreference = (options) => {
136
+ const hasCache = hasFlag('--cache');
137
+ const hasNoCache = hasFlag('--no-cache');
138
+ if (hasCache && hasNoCache) {
139
+ throw ErrorFactory.createCliError('Error: Cannot use both --cache and --no-cache.');
140
+ }
141
+ if (hasCache)
142
+ return true;
143
+ if (hasNoCache)
144
+ return false;
145
+ if (typeof options.cache === 'boolean')
146
+ return options.cache;
147
+ return undefined;
148
+ };
135
149
  const readPackageJson = (cwd) => {
136
150
  const packagePath = path.join(cwd, 'package.json');
137
151
  if (!existsSync(packagePath)) {
@@ -407,7 +421,13 @@ const executeStart = async (options, cmd) => {
407
421
  await executeSplitStart(cmd, cwd, options);
408
422
  return;
409
423
  }
410
- EnvFileLoader.applyCliOverrides({ nodeEnv: mode, port, runtime: effectiveRuntime });
424
+ const cacheEnabled = resolveCacheEnabledPreference(options);
425
+ EnvFileLoader.applyCliOverrides({
426
+ nodeEnv: mode,
427
+ port,
428
+ runtime: effectiveRuntime,
429
+ ...(typeof cacheEnabled === 'boolean' ? { cacheEnabled } : {}),
430
+ });
411
431
  if (variant === 'wrangler') {
412
432
  await executeWranglerStart(cmd, cwd, port, runtime, envName === '' ? undefined : envName);
413
433
  return;
@@ -435,6 +455,8 @@ export const StartCommand = Object.freeze({
435
455
  .option('--wg', 'Alias for --wrangler')
436
456
  .option('--deno', 'Start a local server using the Deno runtime adapter')
437
457
  .option('--lambda', 'Start a local server using the AWS Lambda runtime adapter')
458
+ .option('--cache', 'Enable cache functionality')
459
+ .option('--no-cache', 'Disable cache functionality')
438
460
  .option('--watch', 'Force watch mode (Node only)')
439
461
  .option('--no-watch', 'Disable watch mode (Node only)')
440
462
  .option('--mode <development|production|testing>', 'Override app mode')
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectScaffolder.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ProjectScaffolder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAEpD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACtD,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IACpE,cAAc,IAAI,MAAM,CAAC;IACzB,sBAAsB,IAAI,OAAO,CAAC;IAClC,iBAAiB,IAAI,MAAM,CAAC;IAC5B,WAAW,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAAC;IACtD,gBAAgB,IAAI,OAAO,CAAC;IAC5B,aAAa,IAAI,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC3E;AA+eD,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAsBrE;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG;IAChE,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAsBA;AA4ID;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,GAAE,MAAsB,GAAG,kBAAkB,CAsB/F;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAEhC;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;EAM5B,CAAC"}
1
+ {"version":3,"file":"ProjectScaffolder.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ProjectScaffolder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAEpD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACtD,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IACpE,cAAc,IAAI,MAAM,CAAC;IACzB,sBAAsB,IAAI,OAAO,CAAC;IAClC,iBAAiB,IAAI,MAAM,CAAC;IAC5B,WAAW,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAAC;IACtD,gBAAgB,IAAI,OAAO,CAAC;IAC5B,aAAa,IAAI,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC3E;AA8eD,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAsBrE;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG;IAChE,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAsBA;AA4ID;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,GAAE,MAAsB,GAAG,kBAAkB,CAsB/F;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAEhC;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;EAM5B,CAAC"}