@zintrust/core 0.1.41 → 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 (547) 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 +27 -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/boot/bootstrap.js +27 -11
  321. package/src/boot/registry/runtime.d.ts.map +1 -1
  322. package/src/boot/registry/runtime.js +11 -0
  323. package/src/cache/Cache.d.ts.map +1 -1
  324. package/src/cache/Cache.js +40 -8
  325. package/src/cache/drivers/KVRemoteDriver.d.ts +1 -1
  326. package/src/cache/drivers/KVRemoteDriver.d.ts.map +1 -1
  327. package/src/cache/drivers/KVRemoteDriver.js +259 -44
  328. package/src/cache/drivers/MemoryDriver.d.ts.map +1 -1
  329. package/src/cache/drivers/MemoryDriver.js +10 -2
  330. package/src/cache/drivers/RedisDriver.d.ts.map +1 -1
  331. package/src/cache/drivers/RedisDriver.js +256 -33
  332. package/src/cli/CLI.d.ts.map +1 -1
  333. package/src/cli/CLI.js +12 -0
  334. package/src/cli/commands/ConfigCommand.d.ts.map +1 -1
  335. package/src/cli/commands/ConfigCommand.js +3 -5
  336. package/src/cli/commands/D1LearnCommand.d.ts +9 -0
  337. package/src/cli/commands/D1LearnCommand.d.ts.map +1 -0
  338. package/src/cli/commands/D1LearnCommand.js +143 -0
  339. package/src/cli/commands/D1MigrateCommand.d.ts.map +1 -1
  340. package/src/cli/commands/D1MigrateCommand.js +55 -16
  341. package/src/cli/commands/InitContainerCommand.d.ts.map +1 -1
  342. package/src/cli/commands/InitContainerCommand.js +30 -15
  343. package/src/cli/commands/InitEcosystemCommand.d.ts +6 -0
  344. package/src/cli/commands/InitEcosystemCommand.d.ts.map +1 -0
  345. package/src/cli/commands/InitEcosystemCommand.js +51 -0
  346. package/src/cli/commands/MigrateCommand.d.ts.map +1 -1
  347. package/src/cli/commands/MigrateCommand.js +78 -36
  348. package/src/cli/commands/MigrateWorkerCommand.d.ts.map +1 -1
  349. package/src/cli/commands/MigrateWorkerCommand.js +36 -2
  350. package/src/cli/commands/NewCommand.d.ts.map +1 -1
  351. package/src/cli/commands/NewCommand.js +33 -0
  352. package/src/cli/commands/PutCommand.d.ts +6 -0
  353. package/src/cli/commands/PutCommand.d.ts.map +1 -0
  354. package/src/cli/commands/PutCommand.js +173 -0
  355. package/src/cli/commands/QueueRecoveryCommand.d.ts.map +1 -1
  356. package/src/cli/commands/QueueRecoveryCommand.js +113 -14
  357. package/src/cli/commands/ScheduleListCommand.d.ts +6 -0
  358. package/src/cli/commands/ScheduleListCommand.d.ts.map +1 -0
  359. package/src/cli/commands/ScheduleListCommand.js +62 -0
  360. package/src/cli/commands/ScheduleRunCommand.d.ts +6 -0
  361. package/src/cli/commands/ScheduleRunCommand.d.ts.map +1 -0
  362. package/src/cli/commands/ScheduleRunCommand.js +32 -0
  363. package/src/cli/commands/ScheduleStartCommand.d.ts +6 -0
  364. package/src/cli/commands/ScheduleStartCommand.d.ts.map +1 -0
  365. package/src/cli/commands/ScheduleStartCommand.js +40 -0
  366. package/src/cli/commands/SecretsCommand.d.ts.map +1 -1
  367. package/src/cli/commands/SecretsCommand.js +2 -2
  368. package/src/cli/commands/StartCommand.d.ts.map +1 -1
  369. package/src/cli/commands/StartCommand.js +23 -1
  370. package/src/cli/commands/schedule/ScheduleCliSupport.d.ts +6 -0
  371. package/src/cli/commands/schedule/ScheduleCliSupport.d.ts.map +1 -0
  372. package/src/cli/commands/schedule/ScheduleCliSupport.js +55 -0
  373. package/src/cli/config/ConfigManager.d.ts.map +1 -1
  374. package/src/cli/config/ConfigManager.js +8 -1
  375. package/src/cli/d1/D1SqlMigrations.d.ts.map +1 -1
  376. package/src/cli/d1/D1SqlMigrations.js +11 -1
  377. package/src/cli/d1/WranglerConfig.d.ts.map +1 -1
  378. package/src/cli/d1/WranglerConfig.js +34 -2
  379. package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
  380. package/src/cli/scaffolding/ProjectScaffolder.js +65 -73
  381. package/src/cli/services/VersionChecker.d.ts.map +1 -1
  382. package/src/cli/services/VersionChecker.js +5 -1
  383. package/src/cli/utils/DatabaseCliUtils.d.ts.map +1 -1
  384. package/src/cli/utils/DatabaseCliUtils.js +6 -1
  385. package/src/cli/utils/DistPackager.d.ts.map +1 -1
  386. package/src/cli/utils/DistPackager.js +25 -0
  387. package/src/cli/utils/EnvFileLoader.d.ts +1 -0
  388. package/src/cli/utils/EnvFileLoader.d.ts.map +1 -1
  389. package/src/cli/utils/EnvFileLoader.js +47 -14
  390. package/src/cli.d.ts +5 -0
  391. package/src/cli.d.ts.map +1 -0
  392. package/src/cli.js +4 -0
  393. package/src/collections/index.d.ts +2 -2
  394. package/src/collections/index.d.ts.map +1 -1
  395. package/src/collections/index.js +1 -1
  396. package/src/common/RemoteSignedJson.d.ts.map +1 -1
  397. package/src/common/RemoteSignedJson.js +58 -25
  398. package/src/common/utility.d.ts.map +1 -1
  399. package/src/common/utility.js +2 -6
  400. package/src/config/cache.js +1 -1
  401. package/src/config/cloudflare.d.ts.map +1 -1
  402. package/src/config/cloudflare.js +19 -8
  403. package/src/config/env.d.ts +7 -0
  404. package/src/config/env.d.ts.map +1 -1
  405. package/src/config/env.js +10 -2
  406. package/src/config/queue.js +1 -1
  407. package/src/functions/cloudflare.d.ts.map +1 -1
  408. package/src/functions/cloudflare.js +4 -2
  409. package/src/helper/index.d.ts +225 -0
  410. package/src/helper/index.d.ts.map +1 -0
  411. package/src/helper/index.js +347 -0
  412. package/src/index.d.ts +3 -6
  413. package/src/index.d.ts.map +1 -1
  414. package/src/index.js +7 -9
  415. package/src/middleware/JwtAuthMiddleware.d.ts.map +1 -1
  416. package/src/middleware/JwtAuthMiddleware.js +11 -5
  417. package/src/migrations/MigrationDiscovery.d.ts.map +1 -1
  418. package/src/migrations/MigrationDiscovery.js +2 -1
  419. package/src/orm/DatabaseAdapter.d.ts +1 -0
  420. package/src/orm/DatabaseAdapter.d.ts.map +1 -1
  421. package/src/orm/SchemaStatemenWriter.d.ts +15 -0
  422. package/src/orm/SchemaStatemenWriter.d.ts.map +1 -0
  423. package/src/orm/SchemaStatemenWriter.js +78 -0
  424. package/src/orm/adapters/D1Adapter.d.ts.map +1 -1
  425. package/src/orm/adapters/D1Adapter.js +52 -2
  426. package/src/orm/adapters/D1RemoteAdapter.d.ts.map +1 -1
  427. package/src/orm/adapters/D1RemoteAdapter.js +137 -89
  428. package/src/orm/adapters/MySQLProxyAdapter.d.ts.map +1 -1
  429. package/src/orm/adapters/MySQLProxyAdapter.js +100 -81
  430. package/src/orm/adapters/PostgreSQLProxyAdapter.d.ts.map +1 -1
  431. package/src/orm/adapters/PostgreSQLProxyAdapter.js +26 -10
  432. package/src/orm/adapters/SqlProxyAdapterUtils.d.ts.map +1 -1
  433. package/src/orm/adapters/SqlProxyAdapterUtils.js +2 -1
  434. package/src/orm/adapters/SqlProxyRegistryMode.d.ts +12 -0
  435. package/src/orm/adapters/SqlProxyRegistryMode.d.ts.map +1 -0
  436. package/src/orm/adapters/SqlProxyRegistryMode.js +24 -0
  437. package/src/orm/adapters/SqlServerProxyAdapter.d.ts +3 -0
  438. package/src/orm/adapters/SqlServerProxyAdapter.d.ts.map +1 -1
  439. package/src/orm/adapters/SqlServerProxyAdapter.js +125 -117
  440. package/src/orm/migrations/MigrationStore.js +1 -1
  441. package/src/proxy/ProxyRequestParsing.d.ts +9 -0
  442. package/src/proxy/ProxyRequestParsing.d.ts.map +1 -0
  443. package/src/proxy/ProxyRequestParsing.js +16 -0
  444. package/src/proxy/RequestValidator.d.ts.map +1 -1
  445. package/src/proxy/RequestValidator.js +2 -1
  446. package/src/proxy/SigningService.js +2 -2
  447. package/src/proxy/SqlProxyDbOverrides.d.ts +17 -0
  448. package/src/proxy/SqlProxyDbOverrides.d.ts.map +1 -0
  449. package/src/proxy/SqlProxyDbOverrides.js +1 -0
  450. package/src/proxy/SqlProxyServerDeps.d.ts +12 -0
  451. package/src/proxy/SqlProxyServerDeps.d.ts.map +1 -0
  452. package/src/proxy/SqlProxyServerDeps.js +9 -0
  453. package/src/proxy/StatementPayloadValidator.d.ts +13 -0
  454. package/src/proxy/StatementPayloadValidator.d.ts.map +1 -0
  455. package/src/proxy/StatementPayloadValidator.js +18 -0
  456. package/src/proxy/StatementRegistryLoader.d.ts +2 -0
  457. package/src/proxy/StatementRegistryLoader.d.ts.map +1 -0
  458. package/src/proxy/StatementRegistryLoader.js +36 -0
  459. package/src/proxy/StatementRegistryResolver.d.ts +15 -0
  460. package/src/proxy/StatementRegistryResolver.d.ts.map +1 -0
  461. package/src/proxy/StatementRegistryResolver.js +34 -0
  462. package/src/proxy/d1/ZintrustD1Proxy.d.ts +2 -1
  463. package/src/proxy/d1/ZintrustD1Proxy.d.ts.map +1 -1
  464. package/src/proxy/d1/ZintrustD1Proxy.js +2 -1
  465. package/src/proxy/isMutatingSql.d.ts +2 -0
  466. package/src/proxy/isMutatingSql.d.ts.map +1 -0
  467. package/src/proxy/isMutatingSql.js +12 -0
  468. package/src/proxy/kv/ZintrustKvProxy.d.ts +2 -1
  469. package/src/proxy/kv/ZintrustKvProxy.d.ts.map +1 -1
  470. package/src/proxy/kv/ZintrustKvProxy.js +2 -1
  471. package/src/proxy/mysql/MySqlProxyServer.d.ts +2 -8
  472. package/src/proxy/mysql/MySqlProxyServer.d.ts.map +1 -1
  473. package/src/proxy/mysql/MySqlProxyServer.js +84 -51
  474. package/src/proxy/postgres/PostgresProxyServer.d.ts +2 -8
  475. package/src/proxy/postgres/PostgresProxyServer.d.ts.map +1 -1
  476. package/src/proxy/postgres/PostgresProxyServer.js +86 -48
  477. package/src/proxy/smtp/SmtpProxyServer.d.ts.map +1 -1
  478. package/src/proxy/smtp/SmtpProxyServer.js +6 -5
  479. package/src/proxy/sqlserver/SqlServerProxyServer.d.ts +2 -8
  480. package/src/proxy/sqlserver/SqlServerProxyServer.d.ts.map +1 -1
  481. package/src/proxy/sqlserver/SqlServerProxyServer.js +84 -49
  482. package/src/proxy.d.ts +4 -0
  483. package/src/proxy.d.ts.map +1 -0
  484. package/src/proxy.js +3 -0
  485. package/src/runtime/RuntimeAdapter.d.ts.map +1 -1
  486. package/src/runtime/RuntimeAdapter.js +30 -12
  487. package/src/runtime/adapters/CloudflareAdapter.d.ts.map +1 -1
  488. package/src/runtime/adapters/CloudflareAdapter.js +15 -4
  489. package/src/scheduler/Schedule.d.ts +36 -0
  490. package/src/scheduler/Schedule.d.ts.map +1 -0
  491. package/src/scheduler/Schedule.js +197 -0
  492. package/src/scheduler/ScheduleHttpGateway.d.ts +8 -0
  493. package/src/scheduler/ScheduleHttpGateway.d.ts.map +1 -0
  494. package/src/scheduler/ScheduleHttpGateway.js +196 -0
  495. package/src/scheduler/ScheduleRunner.d.ts +6 -0
  496. package/src/scheduler/ScheduleRunner.d.ts.map +1 -1
  497. package/src/scheduler/ScheduleRunner.js +166 -29
  498. package/src/scheduler/SchedulerRuntime.d.ts +15 -0
  499. package/src/scheduler/SchedulerRuntime.d.ts.map +1 -0
  500. package/src/scheduler/SchedulerRuntime.js +79 -0
  501. package/src/scheduler/cron/Cron.d.ts +19 -0
  502. package/src/scheduler/cron/Cron.d.ts.map +1 -0
  503. package/src/scheduler/cron/Cron.js +200 -0
  504. package/src/scheduler/leader/SchedulerLeader.d.ts +14 -0
  505. package/src/scheduler/leader/SchedulerLeader.d.ts.map +1 -0
  506. package/src/scheduler/leader/SchedulerLeader.js +187 -0
  507. package/src/scheduler/state/ScheduleStateStore.d.ts +27 -0
  508. package/src/scheduler/state/ScheduleStateStore.d.ts.map +1 -0
  509. package/src/scheduler/state/ScheduleStateStore.js +27 -0
  510. package/src/scheduler/types.d.ts +10 -0
  511. package/src/scheduler/types.d.ts.map +1 -1
  512. package/src/schedules/index.d.ts +1 -0
  513. package/src/schedules/index.d.ts.map +1 -1
  514. package/src/schedules/index.js +1 -0
  515. package/src/schedules/job-tracking-cleanup.d.ts +4 -0
  516. package/src/schedules/job-tracking-cleanup.d.ts.map +1 -0
  517. package/src/schedules/job-tracking-cleanup.js +116 -0
  518. package/src/schedules/log-cleanup.d.ts +1 -2
  519. package/src/schedules/log-cleanup.d.ts.map +1 -1
  520. package/src/schedules/log-cleanup.js +12 -15
  521. package/src/security/Sanitizer.d.ts.map +1 -1
  522. package/src/security/Sanitizer.js +1 -9
  523. package/src/security/SignedRequest.d.ts.map +1 -1
  524. package/src/security/SignedRequest.js +2 -2
  525. package/src/security/TokenRevocation.d.ts +19 -2
  526. package/src/security/TokenRevocation.d.ts.map +1 -1
  527. package/src/security/TokenRevocation.js +558 -30
  528. package/src/templates/docker/docker-compose.ecosystem.yml.tpl +301 -0
  529. package/src/templates/docker/docker-compose.schedules.yml.tpl +84 -0
  530. package/src/templates/project/basic/app/Controllers/AuthController.ts.tpl +11 -3
  531. package/src/templates/project/basic/app/Schedules/index.ts.tpl +0 -0
  532. package/src/templates/project/basic/config/database.ts.tpl +1 -1
  533. package/src/templates/project/basic/config/middleware.ts.tpl +23 -22
  534. package/src/templates/project/basic/wrangler.jsonc.tpl +28 -0
  535. package/src/toolkit/Secrets/Manifest.d.ts.map +1 -1
  536. package/src/toolkit/Secrets/Manifest.js +5 -7
  537. package/src/tools/mail/drivers/Smtp.d.ts.map +1 -1
  538. package/src/tools/mail/drivers/Smtp.js +7 -1
  539. package/src/tools/queue/JobReconciliationRunner.d.ts.map +1 -1
  540. package/src/tools/queue/JobReconciliationRunner.js +7 -39
  541. package/src/tools/queue/JobRecoveryDaemon.d.ts.map +1 -1
  542. package/src/tools/queue/JobRecoveryDaemon.js +116 -18
  543. package/src/tools/queue/JobStateTracker.d.ts +10 -1
  544. package/src/tools/queue/JobStateTracker.d.ts.map +1 -1
  545. package/src/tools/queue/JobStateTracker.js +24 -2
  546. package/src/tools/queue/JobStateTrackerDbPersistence.d.ts.map +1 -1
  547. package/src/tools/queue/JobStateTrackerDbPersistence.js +93 -2
@@ -0,0 +1,173 @@
1
+ import { BaseCommand } from '../BaseCommand.js';
2
+ import { resolveNpmPath } from '../../common/index.js';
3
+ import { appConfig } from '../../config/app.js';
4
+ import { ErrorFactory } from '../../exceptions/ZintrustError.js';
5
+ import { execFileSync } from '../../node-singletons/child-process.js';
6
+ import { existsSync, readFileSync } from '../../node-singletons/fs.js';
7
+ import * as path from '../../node-singletons/path.js';
8
+ import { EnvFile } from '../../toolkit/Secrets/EnvFile.js';
9
+ const toStringArray = (value) => {
10
+ if (typeof value === 'string')
11
+ return [value];
12
+ if (!Array.isArray(value))
13
+ return [];
14
+ return value.filter((v) => typeof v === 'string');
15
+ };
16
+ const uniq = (items) => {
17
+ const seen = new Set();
18
+ const out = [];
19
+ for (const item of items) {
20
+ const normalized = item.trim();
21
+ if (normalized === '' || seen.has(normalized))
22
+ continue;
23
+ seen.add(normalized);
24
+ out.push(normalized);
25
+ }
26
+ return out;
27
+ };
28
+ const readZintrustConfig = (cwd) => {
29
+ const filePath = path.join(cwd, '.zintrust.json');
30
+ if (!existsSync(filePath)) {
31
+ return {};
32
+ }
33
+ try {
34
+ const raw = readFileSync(filePath, 'utf8');
35
+ const parsed = JSON.parse(raw);
36
+ return typeof parsed === 'object' && parsed !== null ? parsed : {};
37
+ }
38
+ catch (error) {
39
+ throw ErrorFactory.createCliError('Failed to parse .zintrust.json', error);
40
+ }
41
+ };
42
+ const getConfigArray = (config, key) => {
43
+ const raw = config[key];
44
+ if (!Array.isArray(raw))
45
+ return [];
46
+ return uniq(raw.filter((item) => typeof item === 'string'));
47
+ };
48
+ const resolveConfigGroups = (options) => {
49
+ return uniq(toStringArray(options.var));
50
+ };
51
+ const resolveWranglerEnvs = (options) => {
52
+ const requested = uniq(toStringArray(options.wg));
53
+ if (requested.length === 0)
54
+ return ['worker'];
55
+ return requested;
56
+ };
57
+ const parseEnvPath = (options) => {
58
+ const direct = options['env_path'];
59
+ if (typeof direct === 'string' && direct.trim() !== '')
60
+ return direct;
61
+ return '.env';
62
+ };
63
+ const resolveValue = (key, envMap) => {
64
+ const fromFile = envMap[key];
65
+ const fromProcess = process.env[key];
66
+ return fromFile ?? fromProcess ?? '';
67
+ };
68
+ const getPutTimeoutMs = () => {
69
+ const raw = process.env['ZT_PUT_TIMEOUT_MS'];
70
+ if (typeof raw !== 'string')
71
+ return 120000;
72
+ const parsed = Number.parseInt(raw, 10);
73
+ if (!Number.isFinite(parsed) || parsed <= 0)
74
+ return 120000;
75
+ return parsed;
76
+ };
77
+ const putSecret = (wranglerEnv, key, value) => {
78
+ const npmPath = resolveNpmPath();
79
+ execFileSync(npmPath, ['exec', '--yes', '--', 'wrangler', 'secret', 'put', key, '--env', wranglerEnv], {
80
+ stdio: ['pipe', 'inherit', 'inherit'],
81
+ input: value,
82
+ encoding: 'utf8',
83
+ timeout: getPutTimeoutMs(),
84
+ killSignal: 'SIGTERM',
85
+ env: appConfig.getSafeEnv(),
86
+ });
87
+ };
88
+ const addOptions = (command) => {
89
+ command
90
+ .argument('[provider]', 'Secret provider (cloudflare)', 'cloudflare')
91
+ .option('--wg <env...>', 'Wrangler environment target(s), e.g. d1-proxy kv-proxy')
92
+ .option('--var <configKey...>', 'Config array key(s) from .zintrust.json (e.g. d1_env kv_env)')
93
+ .option('--env_path <path>', 'Path to env file used as source values', '.env')
94
+ .option('--dry-run', 'Show what would be uploaded without calling wrangler');
95
+ };
96
+ const ensureCloudflareProvider = (providerRaw) => {
97
+ if (providerRaw.toLowerCase() === 'cloudflare')
98
+ return;
99
+ throw ErrorFactory.createCliError('Only cloudflare provider is supported for `zin put`');
100
+ };
101
+ const resolveSelectedKeys = (cmd, config, options) => {
102
+ const configGroups = resolveConfigGroups(options);
103
+ if (configGroups.length === 0) {
104
+ throw ErrorFactory.createCliError('No config groups selected. Use --var <group>.');
105
+ }
106
+ const selectedKeys = uniq(configGroups.flatMap((groupKey) => {
107
+ const keys = getConfigArray(config, groupKey);
108
+ if (keys.length === 0) {
109
+ cmd.warn(`Group \`${groupKey}\` is missing or empty in .zintrust.json`);
110
+ }
111
+ return keys;
112
+ }));
113
+ if (selectedKeys.length === 0) {
114
+ throw ErrorFactory.createCliError('No secret keys resolved from selected groups.');
115
+ }
116
+ return selectedKeys;
117
+ };
118
+ const getFailureReason = (error) => error instanceof Error ? error.message : String(error);
119
+ const reportResult = (cmd, pushed, failures) => {
120
+ cmd.success(`Cloudflare secrets report: pushed=${pushed}, failed=${failures.length}`);
121
+ for (const item of failures) {
122
+ cmd.warn(`${item.key} -> ${item.wranglerEnv}: ${item.reason}`);
123
+ }
124
+ };
125
+ const processPut = (cmd, wranglerEnvs, selectedKeys, envMap, dryRun) => {
126
+ let pushed = 0;
127
+ const failures = [];
128
+ for (const wranglerEnv of wranglerEnvs) {
129
+ for (const key of selectedKeys) {
130
+ const value = resolveValue(key, envMap);
131
+ if (value.trim() === '') {
132
+ failures.push({ wranglerEnv, key, reason: 'empty value' });
133
+ continue;
134
+ }
135
+ try {
136
+ if (!dryRun) {
137
+ cmd.info(`putting ${key} -> ${wranglerEnv}...`);
138
+ putSecret(wranglerEnv, key, value);
139
+ }
140
+ pushed += 1;
141
+ cmd.info(`${dryRun ? '[dry-run] ' : ''}put ${key} -> ${wranglerEnv}`);
142
+ }
143
+ catch (error) {
144
+ failures.push({ wranglerEnv, key, reason: getFailureReason(error) });
145
+ }
146
+ }
147
+ }
148
+ return { pushed, failures };
149
+ };
150
+ const execute = async (cmd, options) => {
151
+ ensureCloudflareProvider(String(options.args?.[0] ?? 'cloudflare'));
152
+ const cwd = process.cwd();
153
+ const config = readZintrustConfig(cwd);
154
+ const selectedKeys = resolveSelectedKeys(cmd, config, options);
155
+ const envFilePath = parseEnvPath(options);
156
+ const envMap = await EnvFile.read({ cwd, path: envFilePath });
157
+ const wranglerEnvs = resolveWranglerEnvs(options);
158
+ const dryRun = options.dryRun === true;
159
+ const result = processPut(cmd, wranglerEnvs, selectedKeys, envMap, dryRun);
160
+ reportResult(cmd, result.pushed, result.failures);
161
+ };
162
+ export const PutCommand = Object.freeze({
163
+ create() {
164
+ const cmd = BaseCommand.create({
165
+ name: 'put',
166
+ description: 'Put secrets to Cloudflare with dynamic groups from .zintrust.json',
167
+ addOptions,
168
+ execute: async (options) => execute(cmd, options),
169
+ });
170
+ return cmd;
171
+ },
172
+ });
173
+ export default PutCommand;
@@ -1 +1 @@
1
- {"version":3,"file":"QueueRecoveryCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/QueueRecoveryCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAwoBrE,eAAO,MAAM,oBAAoB;cACrB,YAAY;EAsBtB,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"QueueRecoveryCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/QueueRecoveryCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAwvBrE,eAAO,MAAM,oBAAoB;cACrB,YAAY;EAsBtB,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
@@ -1,8 +1,10 @@
1
1
  import { BaseCommand } from '../BaseCommand.js';
2
+ import { databaseConfig } from '../../config/database.js';
2
3
  import { Logger } from '../../config/logger.js';
3
4
  import { queueConfig } from '../../config/queue.js';
4
5
  import { ErrorFactory } from '../../exceptions/ZintrustError.js';
5
- import { useDatabase } from '../../orm/Database.js';
6
+ import { resetDatabase, useDatabase } from '../../orm/Database.js';
7
+ import { registerDatabasesFromRuntimeConfig } from '../../orm/DatabaseRuntimeRegistration.js';
6
8
  import { JobRecoveryDaemon } from '../../tools/queue/JobRecoveryDaemon.js';
7
9
  import { JobStateTracker } from '../../tools/queue/JobStateTracker.js';
8
10
  import { Queue } from '../../tools/queue/Queue.js';
@@ -57,6 +59,7 @@ const normalizeStatus = (value) => {
57
59
  const statuses = [
58
60
  'pending',
59
61
  'active',
62
+ 'enqueued',
60
63
  'completed',
61
64
  'failed',
62
65
  'stalled',
@@ -98,17 +101,13 @@ const toRecordFromPersisted = (row) => {
98
101
  };
99
102
  };
100
103
  const getRecoverableStatuses = () => {
101
- return new Set([
102
- 'pending_recovery',
103
- 'timeout',
104
- 'stalled',
105
- 'dead_letter',
106
- ]);
104
+ return new Set(['pending_recovery']);
107
105
  };
108
106
  const getAllStatuses = () => {
109
107
  return new Set([
110
108
  'pending',
111
109
  'active',
110
+ 'enqueued',
112
111
  'completed',
113
112
  'failed',
114
113
  'stalled',
@@ -355,8 +354,35 @@ const runRecoveryOnce = async () => {
355
354
  const result = await JobRecoveryDaemon.runOnce();
356
355
  Logger.info('Queue recovery run completed', result);
357
356
  };
357
+ const isDuplicateJobIdError = (error) => {
358
+ const message = error instanceof Error ? error.message : String(error);
359
+ const normalized = message.toLowerCase();
360
+ return normalized.includes('jobid') && normalized.includes('already exists');
361
+ };
362
+ const validatePushable = (record) => {
363
+ if (record.status === 'enqueued') {
364
+ Logger.info('Job is already enqueued; nothing to push', {
365
+ jobId: record.jobId,
366
+ queueName: record.queueName,
367
+ });
368
+ return { ok: false };
369
+ }
370
+ if (record.status !== 'pending_recovery') {
371
+ Logger.error(`Refusing to push job in status ${record.status}. Only pending_recovery can be pushed.`);
372
+ if (typeof process !== 'undefined')
373
+ process.exitCode = 1;
374
+ return { ok: false };
375
+ }
376
+ return { ok: true };
377
+ };
358
378
  const runPushForJob = async (record, options) => {
359
- const payload = toSafeObject(record.payload);
379
+ if (!validatePushable(record).ok)
380
+ return;
381
+ const basePayload = toSafeObject(record.payload);
382
+ const hasPayload = record.payload !== undefined &&
383
+ record.payload !== null &&
384
+ typeof record.payload === 'object' &&
385
+ Object.keys(basePayload).length > 0;
360
386
  if (options.dryRun) {
361
387
  Logger.info('Dry-run: skipping enqueue for target job', {
362
388
  jobId: record.jobId,
@@ -365,12 +391,36 @@ const runPushForJob = async (record, options) => {
365
391
  });
366
392
  return;
367
393
  }
368
- const replayJobId = await Queue.enqueue(record.queueName, payload);
369
- await JobStateTracker.markedRecovered({
394
+ if (!hasPayload) {
395
+ Logger.error(`Cannot push job because payload is missing in tracker/persistence store: ${record.jobId}. ` +
396
+ 'Rehydrate payload_json first (or use policy recovery states) before pushing.');
397
+ if (typeof process !== 'undefined')
398
+ process.exitCode = 1;
399
+ return;
400
+ }
401
+ const payload = {
402
+ ...basePayload,
403
+ uniqueId: record.jobId,
404
+ attempts: typeof record.maxAttempts === 'number' ? record.maxAttempts : 3,
405
+ _currentAttempts: Math.max(0, Math.floor(record.attempts ?? 0)),
406
+ timestamp: Date.now(),
407
+ };
408
+ let replayJobId;
409
+ try {
410
+ replayJobId = await Queue.enqueue(record.queueName, payload, 'default');
411
+ }
412
+ catch (error) {
413
+ if (isDuplicateJobIdError(error)) {
414
+ replayJobId = record.jobId;
415
+ }
416
+ else {
417
+ throw error;
418
+ }
419
+ }
420
+ await JobStateTracker.handedOffToQueue({
370
421
  queueName: record.queueName,
371
422
  jobId: record.jobId,
372
423
  reason: `CLI pushed job as ${replayJobId}`,
373
- retryAt: new Date().toISOString(),
374
424
  });
375
425
  Logger.info('Target job pushed to queue', {
376
426
  originalJobId: record.jobId,
@@ -378,6 +428,21 @@ const runPushForJob = async (record, options) => {
378
428
  queueName: record.queueName,
379
429
  });
380
430
  };
431
+ const isTestRuntime = () => (process.env['NODE_ENV'] ?? '').trim().toLowerCase() === 'test' || Boolean(process.env['VITEST']);
432
+ const cleanupOneOffCli = async () => {
433
+ try {
434
+ QueueReliabilityOrchestrator.stop();
435
+ }
436
+ catch {
437
+ // ignore
438
+ }
439
+ try {
440
+ await resetDatabase();
441
+ }
442
+ catch {
443
+ // ignore
444
+ }
445
+ };
381
446
  const runRecoverOneForJob = async (record, options) => {
382
447
  if (options.dryRun) {
383
448
  Logger.info('Dry-run: skipping policy recovery for target job', {
@@ -456,10 +521,23 @@ const runTargetedRecovery = async (resolved) => {
456
521
  return;
457
522
  const record = await findRecord(resolved.jobId, resolved.queueName, resolved.allowDbLookup);
458
523
  if (record === null) {
459
- throw ErrorFactory.createConfigError(`Job not found in tracker${resolved.allowDbLookup ? ' or persistence store' : ''}: ${resolved.jobId}`);
524
+ Logger.error(`Job not found in tracker${resolved.allowDbLookup ? ' or persistence store' : ''}: ${resolved.jobId}`);
525
+ if (typeof process !== 'undefined')
526
+ process.exitCode = 1;
527
+ return;
528
+ }
529
+ if (record.status === 'enqueued' && !resolved.push) {
530
+ Logger.info('Job already enqueued; nothing to recover', {
531
+ jobId: record.jobId,
532
+ queueName: record.queueName,
533
+ });
534
+ return;
460
535
  }
461
536
  if (!resolved.push && !getRecoverableStatuses().has(record.status)) {
462
- throw ErrorFactory.createConfigError(`Job status is not recoverable via policy runner: ${record.status}. Use --push to force requeue.`);
537
+ Logger.error(`Job status is not recoverable via policy runner: ${record.status}. Use --push to force requeue.`);
538
+ if (typeof process !== 'undefined')
539
+ process.exitCode = 1;
540
+ return;
463
541
  }
464
542
  if (resolved.push) {
465
543
  await runPushForJob(record, { dryRun: resolved.dryRun });
@@ -480,11 +558,32 @@ const executeQueueRecovery = async (options) => {
480
558
  const resolved = resolveExecutionOptions(options);
481
559
  if (await maybeRunListMode(resolved))
482
560
  return;
483
- await registerQueuesFromRuntimeConfig(queueConfig);
561
+ // Ensure DB connections exist for optional persistence lookups.
562
+ // (CLI commands don't run full app bootstrap.)
563
+ registerDatabasesFromRuntimeConfig(databaseConfig);
564
+ const envDefault = (process.env['QUEUE_DRIVER'] ?? '').toString().trim().toLowerCase();
565
+ const cliQueueConfig = {
566
+ ...queueConfig,
567
+ default: (envDefault.length > 0
568
+ ? envDefault
569
+ : queueConfig.default),
570
+ };
571
+ await registerQueuesFromRuntimeConfig(cliQueueConfig);
572
+ if (!resolved.start) {
573
+ // Queue registration may auto-start orchestrator when JOB_RELIABILITY_AUTOSTART=true.
574
+ // For one-off CLI runs, stop it to avoid noisy intervals.
575
+ QueueReliabilityOrchestrator.stop();
576
+ }
484
577
  if (await maybeRunDefaultRecovery(resolved))
485
578
  return;
486
579
  await runTargetedRecovery(resolved);
487
580
  await finalizeRecoveryExecution(resolved);
581
+ if (!resolved.start) {
582
+ await cleanupOneOffCli();
583
+ if (!isTestRuntime() && typeof process !== 'undefined') {
584
+ process.exit(process.exitCode ?? 0);
585
+ }
586
+ }
488
587
  };
489
588
  export const QueueRecoveryCommand = Object.freeze({
490
589
  create() {
@@ -0,0 +1,6 @@
1
+ import type { IBaseCommand } from '../BaseCommand';
2
+ export declare const ScheduleListCommand: Readonly<{
3
+ create(): IBaseCommand;
4
+ }>;
5
+ export default ScheduleListCommand;
6
+ //# sourceMappingURL=ScheduleListCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduleListCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ScheduleListCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAsErE,eAAO,MAAM,mBAAmB;cACpB,YAAY;EAUtB,CAAC;AAEH,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { BaseCommand } from '../BaseCommand.js';
2
+ import { ScheduleCliSupport } from '../commands/schedule/ScheduleCliSupport.js';
3
+ import { Logger } from '../../config/logger.js';
4
+ import { SchedulerRuntime } from '../../scheduler/SchedulerRuntime.js';
5
+ const execute = async (options) => {
6
+ try {
7
+ await ScheduleCliSupport.registerAll();
8
+ const toIso = (ms) => typeof ms === 'number' && Number.isFinite(ms) ? new Date(ms).toISOString() : undefined;
9
+ const rows = (await SchedulerRuntime.listWithState())
10
+ .map(({ schedule: s, state }) => ({
11
+ name: s.name,
12
+ enabled: s.enabled !== false,
13
+ intervalMs: s.intervalMs,
14
+ cron: s.cron,
15
+ timezone: s.timezone,
16
+ runOnStart: s.runOnStart === true,
17
+ consecutiveFailures: state?.consecutiveFailures,
18
+ lastRunAt: toIso(state?.lastRunAt),
19
+ lastSuccessAt: toIso(state?.lastSuccessAt),
20
+ lastErrorAt: toIso(state?.lastErrorAt),
21
+ lastErrorMessage: state?.lastErrorMessage,
22
+ nextRunAt: toIso(state?.nextRunAt),
23
+ }))
24
+ .sort((a, b) => a.name.localeCompare(b.name));
25
+ if (options.json === true) {
26
+ Logger.info(JSON.stringify(rows, null, 2));
27
+ return;
28
+ }
29
+ if (rows.length === 0) {
30
+ Logger.info('No schedules registered');
31
+ return;
32
+ }
33
+ rows.forEach((row) => {
34
+ const hasText = (value) => typeof value === 'string' && value.trim().length > 0;
35
+ const tzSuffix = hasText(row.timezone) ? ` tz=${row.timezone}` : '';
36
+ const cadence = typeof row.cron === 'string' && row.cron.trim().length > 0
37
+ ? `cron=${row.cron}${tzSuffix}`
38
+ : `intervalMs=${row.intervalMs ?? 'manual'}`;
39
+ const hasStateInfo = [row.nextRunAt, row.lastSuccessAt, row.lastErrorAt].some(hasText);
40
+ const extra = hasStateInfo
41
+ ? ` next=${row.nextRunAt ?? '-'} lastOk=${row.lastSuccessAt ?? '-'} lastErr=${row.lastErrorAt ?? '-'}`
42
+ : '';
43
+ Logger.info(`${row.name} (enabled=${row.enabled}, ${cadence}, runOnStart=${row.runOnStart}, failures=${row.consecutiveFailures ?? 0})${extra}`);
44
+ });
45
+ }
46
+ finally {
47
+ await ScheduleCliSupport.shutdownCliResources();
48
+ }
49
+ };
50
+ export const ScheduleListCommand = Object.freeze({
51
+ create() {
52
+ return BaseCommand.create({
53
+ name: 'schedule:list',
54
+ description: 'List all registered schedules',
55
+ addOptions: (command) => {
56
+ command.option('--json', 'Output JSON');
57
+ },
58
+ execute,
59
+ });
60
+ },
61
+ });
62
+ export default ScheduleListCommand;
@@ -0,0 +1,6 @@
1
+ import type { IBaseCommand } from '../BaseCommand';
2
+ export declare const ScheduleRunCommand: Readonly<{
3
+ create(): IBaseCommand;
4
+ }>;
5
+ export default ScheduleRunCommand;
6
+ //# sourceMappingURL=ScheduleRunCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduleRunCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ScheduleRunCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA0BrE,eAAO,MAAM,kBAAkB;cACnB,YAAY;EAUtB,CAAC;AAEH,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { BaseCommand } from '../BaseCommand.js';
2
+ import { ScheduleCliSupport } from '../commands/schedule/ScheduleCliSupport.js';
3
+ import { Logger } from '../../config/logger.js';
4
+ import { ErrorFactory } from '../../exceptions/ZintrustError.js';
5
+ import { SchedulerRuntime } from '../../scheduler/SchedulerRuntime.js';
6
+ const execute = async (options) => {
7
+ const name = (options.name ?? '').trim();
8
+ if (name.length === 0)
9
+ throw ErrorFactory.createConfigError('--name is required');
10
+ try {
11
+ await ScheduleCliSupport.registerAll();
12
+ Logger.info('Running schedule once', { name });
13
+ await SchedulerRuntime.runOnce(name);
14
+ Logger.info('Schedule run completed', { name });
15
+ }
16
+ finally {
17
+ await ScheduleCliSupport.shutdownCliResources();
18
+ }
19
+ };
20
+ export const ScheduleRunCommand = Object.freeze({
21
+ create() {
22
+ return BaseCommand.create({
23
+ name: 'schedule:run',
24
+ description: 'Run a specific schedule once and exit',
25
+ addOptions: (command) => {
26
+ command.option('--name <name>', 'Schedule name to run');
27
+ },
28
+ execute,
29
+ });
30
+ },
31
+ });
32
+ export default ScheduleRunCommand;
@@ -0,0 +1,6 @@
1
+ import type { IBaseCommand } from '../BaseCommand';
2
+ export declare const ScheduleStartCommand: Readonly<{
3
+ create(): IBaseCommand;
4
+ }>;
5
+ export default ScheduleStartCommand;
6
+ //# sourceMappingURL=ScheduleStartCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduleStartCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ScheduleStartCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA6CrE,eAAO,MAAM,oBAAoB;cACrB,YAAY;EAOtB,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { BaseCommand } from '../BaseCommand.js';
2
+ import { ScheduleCliSupport } from '../commands/schedule/ScheduleCliSupport.js';
3
+ import { Env } from '../../config/env.js';
4
+ import { Logger } from '../../config/logger.js';
5
+ import { ErrorFactory } from '../../exceptions/ZintrustError.js';
6
+ import { SchedulerRuntime } from '../../scheduler/SchedulerRuntime.js';
7
+ const waitForSignal = async () => {
8
+ if (typeof process === 'undefined' || typeof process.once !== 'function') {
9
+ throw ErrorFactory.createGeneralError('schedule:start is only supported in Node.js runtimes');
10
+ }
11
+ return new Promise((resolve) => {
12
+ process.once('SIGTERM', () => resolve('SIGTERM'));
13
+ process.once('SIGINT', () => resolve('SIGINT'));
14
+ });
15
+ };
16
+ const execute = async (_options) => {
17
+ if (Env.getBool('SCHEDULES_ENABLED', false) === false) {
18
+ Logger.info('Schedules are disabled (SCHEDULES_ENABLED=false); exiting');
19
+ return;
20
+ }
21
+ await ScheduleCliSupport.registerAll();
22
+ const registeredCount = SchedulerRuntime.list().length;
23
+ Logger.info('Starting schedules daemon', { registeredCount });
24
+ SchedulerRuntime.start();
25
+ const signal = await waitForSignal();
26
+ Logger.info('Stopping schedules daemon', { signal });
27
+ const timeoutMs = Env.getInt('SCHEDULE_SHUTDOWN_TIMEOUT_MS', 30000);
28
+ await SchedulerRuntime.stop(timeoutMs);
29
+ Logger.info('Schedules daemon stopped');
30
+ };
31
+ export const ScheduleStartCommand = Object.freeze({
32
+ create() {
33
+ return BaseCommand.create({
34
+ name: 'schedule:start',
35
+ description: 'Start schedules and keep running until SIGINT/SIGTERM',
36
+ execute,
37
+ });
38
+ },
39
+ });
40
+ export default ScheduleStartCommand;
@@ -1 +1 @@
1
- {"version":3,"file":"SecretsCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/SecretsCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAsHvF,eAAO,MAAM,cAAc;cACf,YAAY;EAWtB,CAAC;AAEH,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"SecretsCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/SecretsCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAqHvF,eAAO,MAAM,cAAc;cACf,YAAY;EAWtB,CAAC;AAEH,eAAe,cAAc,CAAC"}
@@ -10,10 +10,10 @@
10
10
  */
11
11
  import { BaseCommand } from '../BaseCommand.js';
12
12
  import { ErrorFactory } from '../../exceptions/ZintrustError.js';
13
+ import { isArray } from '../../helper/index.js';
13
14
  import { SecretsToolkit } from '../../toolkit/Secrets/index.js';
14
- const isUnknownArray = (value) => Array.isArray(value);
15
15
  const getArg = (args, index) => {
16
- if (!isUnknownArray(args))
16
+ if (!isArray(args))
17
17
  return undefined;
18
18
  const v = args[index];
19
19
  return typeof v === 'string' ? v : undefined;
@@ -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')
@@ -0,0 +1,6 @@
1
+ export declare const ScheduleCliSupport: Readonly<{
2
+ registerAll(): Promise<void>;
3
+ shutdownCliResources: () => Promise<void>;
4
+ }>;
5
+ export default ScheduleCliSupport;
6
+ //# sourceMappingURL=ScheduleCliSupport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduleCliSupport.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/schedule/ScheduleCliSupport.ts"],"names":[],"mappings":"AAwDA,eAAO,MAAM,kBAAkB;mBACR,OAAO,CAAC,IAAI,CAAC;gCA1BG,OAAO,CAAC,IAAI,CAAC;EAmClD,CAAC;AAEH,eAAe,kBAAkB,CAAC"}