@zintrust/core 0.4.26 → 0.4.28

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 (486) 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 +233 -0
  4. package/app/Controllers/TestController.d.ts +22 -0
  5. package/app/Controllers/TestController.d.ts.map +1 -0
  6. package/app/Controllers/TestController.js +188 -0
  7. package/app/Controllers/UserController.d.ts +9 -0
  8. package/app/Controllers/UserController.d.ts.map +1 -0
  9. package/app/Controllers/UserController.js +8 -0
  10. package/app/Controllers/UserQueryBuilderController.d.ts +16 -0
  11. package/app/Controllers/UserQueryBuilderController.d.ts.map +1 -0
  12. package/app/Controllers/UserQueryBuilderController.js +404 -0
  13. package/app/Jobs/AdvancedEmailJobService.d.ts +57 -0
  14. package/app/Jobs/AdvancedEmailJobService.d.ts.map +1 -0
  15. package/app/Jobs/AdvancedEmailJobService.js +185 -0
  16. package/app/Jobs/EmailJobService.d.ts +33 -0
  17. package/app/Jobs/EmailJobService.d.ts.map +1 -0
  18. package/app/Jobs/EmailJobService.js +113 -0
  19. package/app/Middleware/AuthFailureResponder.d.ts +3 -0
  20. package/app/Middleware/AuthFailureResponder.d.ts.map +1 -0
  21. package/app/Middleware/AuthFailureResponder.js +8 -0
  22. package/app/Middleware/ProfilerMiddleware.d.ts +12 -0
  23. package/app/Middleware/ProfilerMiddleware.d.ts.map +1 -0
  24. package/app/Middleware/ProfilerMiddleware.js +47 -0
  25. package/app/Middleware/index.d.ts +59 -0
  26. package/app/Middleware/index.d.ts.map +1 -0
  27. package/app/Middleware/index.js +216 -0
  28. package/app/Models/Post.d.ts +14 -0
  29. package/app/Models/Post.d.ts.map +1 -0
  30. package/app/Models/Post.js +27 -0
  31. package/app/Models/User.d.ts +14 -0
  32. package/app/Models/User.d.ts.map +1 -0
  33. package/app/Models/User.js +44 -0
  34. package/app/Schedules/JobTracking.d.ts +3 -0
  35. package/app/Schedules/JobTracking.d.ts.map +1 -0
  36. package/app/Schedules/JobTracking.js +13 -0
  37. package/app/Schedules/index.d.ts +2 -0
  38. package/app/Schedules/index.d.ts.map +1 -0
  39. package/app/Schedules/index.js +1 -0
  40. package/app/Toolkit/Broadcast/sendBroadcast.d.ts +6 -0
  41. package/app/Toolkit/Broadcast/sendBroadcast.d.ts.map +1 -0
  42. package/app/Toolkit/Broadcast/sendBroadcast.js +5 -0
  43. package/app/Toolkit/Mail/sendWelcomeEmail.d.ts +6 -0
  44. package/app/Toolkit/Mail/sendWelcomeEmail.d.ts.map +1 -0
  45. package/app/Toolkit/Mail/sendWelcomeEmail.js +20 -0
  46. package/app/Toolkit/Notification/sendSlackNotification.d.ts +8 -0
  47. package/app/Toolkit/Notification/sendSlackNotification.d.ts.map +1 -0
  48. package/app/Toolkit/Notification/sendSlackNotification.js +5 -0
  49. package/app/Toolkit/Notification/sendSms.d.ts +6 -0
  50. package/app/Toolkit/Notification/sendSms.d.ts.map +1 -0
  51. package/app/Toolkit/Notification/sendSms.js +5 -0
  52. package/app/Types/controller.d.ts +44 -0
  53. package/app/Types/controller.d.ts.map +1 -0
  54. package/app/Types/controller.js +1 -0
  55. package/app/Workers/AdvancEmailWorker.d.ts +44 -0
  56. package/app/Workers/AdvancEmailWorker.d.ts.map +1 -0
  57. package/app/Workers/AdvancEmailWorker.js +192 -0
  58. package/app/Workers/EmailWorker.d.ts +39 -0
  59. package/app/Workers/EmailWorker.d.ts.map +1 -0
  60. package/app/Workers/EmailWorker.js +199 -0
  61. package/app/Workers/TestWorker.d.ts +16 -0
  62. package/app/Workers/TestWorker.d.ts.map +1 -0
  63. package/app/Workers/TestWorker.js +153 -0
  64. package/bin/z.js +0 -0
  65. package/bin/zin.js +0 -0
  66. package/bin/zintrust.js +0 -0
  67. package/bin/zt.js +0 -0
  68. package/build-manifest.json +6410 -0
  69. package/config/broadcast.d.ts +38 -0
  70. package/config/broadcast.d.ts.map +1 -0
  71. package/config/broadcast.js +37 -0
  72. package/config/cache.d.ts +40 -0
  73. package/config/cache.d.ts.map +1 -0
  74. package/config/cache.js +39 -0
  75. package/config/database.d.ts +58 -0
  76. package/config/database.d.ts.map +1 -0
  77. package/config/database.js +65 -0
  78. package/config/mail.d.ts +51 -0
  79. package/config/mail.d.ts.map +1 -0
  80. package/config/mail.js +69 -0
  81. package/config/middleware.d.ts +21 -0
  82. package/config/middleware.d.ts.map +1 -0
  83. package/config/middleware.js +61 -0
  84. package/config/notification.d.ts +33 -0
  85. package/config/notification.d.ts.map +1 -0
  86. package/config/notification.js +33 -0
  87. package/config/queue.d.ts +55 -0
  88. package/config/queue.d.ts.map +1 -0
  89. package/config/queue.js +87 -0
  90. package/config/storage.d.ts +59 -0
  91. package/config/storage.d.ts.map +1 -0
  92. package/config/storage.js +59 -0
  93. package/config/workers.d.ts +54 -0
  94. package/config/workers.d.ts.map +1 -0
  95. package/config/workers.js +83 -0
  96. package/database/factories/UserFactory.d.ts +40 -0
  97. package/database/factories/UserFactory.d.ts.map +1 -0
  98. package/database/factories/UserFactory.js +99 -0
  99. package/database/migrations/20260109074544_create_users_table.d.ts +7 -0
  100. package/database/migrations/20260109074544_create_users_table.d.ts.map +1 -0
  101. package/database/migrations/20260109074544_create_users_table.js +21 -0
  102. package/database/migrations/20260109144731_create_tasks_table.d.ts +7 -0
  103. package/database/migrations/20260109144731_create_tasks_table.d.ts.map +1 -0
  104. package/database/migrations/20260109144731_create_tasks_table.js +19 -0
  105. package/database/migrations/20260109144735_add_done_tasks_table.d.ts +11 -0
  106. package/database/migrations/20260109144735_add_done_tasks_table.d.ts.map +1 -0
  107. package/database/migrations/20260109144735_add_done_tasks_table.js +25 -0
  108. package/database/migrations/20260109150837_add_start_tasks_table.d.ts +11 -0
  109. package/database/migrations/20260109150837_add_start_tasks_table.d.ts.map +1 -0
  110. package/database/migrations/20260109150837_add_start_tasks_table.js +22 -0
  111. package/database/migrations/20260109152114_add_way_tasks_table.d.ts +11 -0
  112. package/database/migrations/20260109152114_add_way_tasks_table.d.ts.map +1 -0
  113. package/database/migrations/20260109152114_add_way_tasks_table.js +22 -0
  114. package/database/migrations/20260218121500_create_jwt_revocations_table.d.ts +7 -0
  115. package/database/migrations/20260218121500_create_jwt_revocations_table.d.ts.map +1 -0
  116. package/database/migrations/20260218121500_create_jwt_revocations_table.js +22 -0
  117. package/database/migrations/20260222120000_add_kind_to_jwt_revocations_table.d.ts +11 -0
  118. package/database/migrations/20260222120000_add_kind_to_jwt_revocations_table.d.ts.map +1 -0
  119. package/database/migrations/20260222120000_add_kind_to_jwt_revocations_table.js +20 -0
  120. package/database/migrations/20260222123000_add_user_id_to_jwt_revocations_table.d.ts +11 -0
  121. package/database/migrations/20260222123000_add_user_id_to_jwt_revocations_table.d.ts.map +1 -0
  122. package/database/migrations/20260222123000_add_user_id_to_jwt_revocations_table.js +20 -0
  123. package/database/migrations/20260327112651_create_posts_table.d.ts +11 -0
  124. package/database/migrations/20260327112651_create_posts_table.d.ts.map +1 -0
  125. package/database/migrations/20260327112651_create_posts_table.js +24 -0
  126. package/database/seeders/DatabaseSeeder.d.ts +5 -0
  127. package/database/seeders/DatabaseSeeder.d.ts.map +1 -0
  128. package/database/seeders/DatabaseSeeder.js +15 -0
  129. package/database/seeders/UserSeeder.d.ts +30 -0
  130. package/database/seeders/UserSeeder.d.ts.map +1 -0
  131. package/database/seeders/UserSeeder.js +97 -0
  132. package/index.d.ts +1 -0
  133. package/index.js +1 -0
  134. package/package.json +27 -78
  135. package/packages/cache-redis/src/RedisProxyAdapter.d.ts +6 -0
  136. package/packages/cache-redis/src/RedisProxyAdapter.d.ts.map +1 -0
  137. package/packages/cache-redis/src/RedisProxyAdapter.js +144 -0
  138. package/packages/cache-redis/src/index.d.ts +27 -0
  139. package/packages/cache-redis/src/index.d.ts.map +1 -0
  140. package/packages/cache-redis/src/index.js +153 -0
  141. package/packages/db-d1/src/index.d.ts +55 -0
  142. package/packages/db-d1/src/index.d.ts.map +1 -0
  143. package/packages/db-d1/src/index.js +118 -0
  144. package/packages/db-d1/src/register.d.ts +6 -0
  145. package/packages/db-d1/src/register.d.ts.map +1 -0
  146. package/packages/db-d1/src/register.js +8 -0
  147. package/packages/db-mysql/src/common.d.ts +7 -0
  148. package/packages/db-mysql/src/common.d.ts.map +1 -0
  149. package/packages/db-mysql/src/common.js +17 -0
  150. package/packages/db-mysql/src/index.d.ts +43 -0
  151. package/packages/db-mysql/src/index.d.ts.map +1 -0
  152. package/packages/db-mysql/src/index.js +265 -0
  153. package/packages/db-mysql/src/register.d.ts +6 -0
  154. package/packages/db-mysql/src/register.d.ts.map +1 -0
  155. package/packages/db-mysql/src/register.js +32 -0
  156. package/packages/db-postgres/src/index.d.ts +39 -0
  157. package/packages/db-postgres/src/index.d.ts.map +1 -0
  158. package/packages/db-postgres/src/index.js +179 -0
  159. package/packages/db-postgres/src/register.d.ts +6 -0
  160. package/packages/db-postgres/src/register.d.ts.map +1 -0
  161. package/packages/db-postgres/src/register.js +8 -0
  162. package/packages/db-sqlite/src/index.d.ts +9 -0
  163. package/packages/db-sqlite/src/index.d.ts.map +1 -0
  164. package/packages/db-sqlite/src/index.js +7 -0
  165. package/packages/db-sqlite/src/register.d.ts +6 -0
  166. package/packages/db-sqlite/src/register.d.ts.map +1 -0
  167. package/packages/db-sqlite/src/register.js +8 -0
  168. package/packages/db-sqlserver/src/index.d.ts +38 -0
  169. package/packages/db-sqlserver/src/index.d.ts.map +1 -0
  170. package/packages/db-sqlserver/src/index.js +73 -0
  171. package/packages/db-sqlserver/src/register.d.ts +6 -0
  172. package/packages/db-sqlserver/src/register.d.ts.map +1 -0
  173. package/packages/db-sqlserver/src/register.js +21 -0
  174. package/packages/mail-sendgrid/src/register.d.ts +6 -0
  175. package/packages/mail-sendgrid/src/register.d.ts.map +1 -0
  176. package/packages/mail-sendgrid/src/register.js +24 -0
  177. package/packages/mail-smtp/src/register.d.ts +6 -0
  178. package/packages/mail-smtp/src/register.d.ts.map +1 -0
  179. package/packages/mail-smtp/src/register.js +29 -0
  180. package/packages/queue-monitor/src/QueueMonitoringService.d.ts +35 -0
  181. package/packages/queue-monitor/src/QueueMonitoringService.d.ts.map +1 -0
  182. package/packages/queue-monitor/src/QueueMonitoringService.js +194 -0
  183. package/packages/queue-monitor/src/connection.d.ts +3 -0
  184. package/packages/queue-monitor/src/connection.d.ts.map +1 -0
  185. package/packages/queue-monitor/src/connection.js +1 -0
  186. package/packages/queue-monitor/src/dashboard-ui.d.ts +7 -0
  187. package/packages/queue-monitor/src/dashboard-ui.d.ts.map +1 -0
  188. package/packages/queue-monitor/src/dashboard-ui.js +997 -0
  189. package/packages/queue-monitor/src/driver.d.ts +15 -0
  190. package/packages/queue-monitor/src/driver.d.ts.map +1 -0
  191. package/packages/queue-monitor/src/driver.js +115 -0
  192. package/packages/queue-monitor/src/index.d.ts +71 -0
  193. package/packages/queue-monitor/src/index.d.ts.map +1 -0
  194. package/packages/queue-monitor/src/index.js +296 -0
  195. package/packages/queue-monitor/src/metrics.d.ts +27 -0
  196. package/packages/queue-monitor/src/metrics.d.ts.map +1 -0
  197. package/packages/queue-monitor/src/metrics.js +92 -0
  198. package/packages/queue-monitor/src/worker.d.ts +8 -0
  199. package/packages/queue-monitor/src/worker.d.ts.map +1 -0
  200. package/packages/queue-monitor/src/worker.js +35 -0
  201. package/packages/queue-redis/src/BullMQRedisQueue.d.ts +26 -0
  202. package/packages/queue-redis/src/BullMQRedisQueue.d.ts.map +1 -0
  203. package/packages/queue-redis/src/BullMQRedisQueue.js +465 -0
  204. package/packages/queue-redis/src/HttpQueueDriver.d.ts +18 -0
  205. package/packages/queue-redis/src/HttpQueueDriver.d.ts.map +1 -0
  206. package/packages/queue-redis/src/HttpQueueDriver.js +249 -0
  207. package/packages/queue-redis/src/QueueHttpGateway.d.ts +16 -0
  208. package/packages/queue-redis/src/QueueHttpGateway.d.ts.map +1 -0
  209. package/packages/queue-redis/src/QueueHttpGateway.js +217 -0
  210. package/packages/queue-redis/src/RedisPublishClient.d.ts +14 -0
  211. package/packages/queue-redis/src/RedisPublishClient.d.ts.map +1 -0
  212. package/packages/queue-redis/src/RedisPublishClient.js +251 -0
  213. package/packages/queue-redis/src/index.d.ts +12 -0
  214. package/packages/queue-redis/src/index.d.ts.map +1 -0
  215. package/packages/queue-redis/src/index.js +10 -0
  216. package/packages/queue-redis/src/register.d.ts +6 -0
  217. package/packages/queue-redis/src/register.d.ts.map +1 -0
  218. package/packages/queue-redis/src/register.js +21 -0
  219. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts +11 -0
  220. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts.map +1 -0
  221. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.js +32 -0
  222. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts +11 -0
  223. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts.map +1 -0
  224. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.js +46 -0
  225. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts +7 -0
  226. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts.map +1 -0
  227. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.js +44 -0
  228. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts +7 -0
  229. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts.map +1 -0
  230. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.js +104 -0
  231. package/packages/workers/src/AnomalyDetection.d.ts +107 -0
  232. package/packages/workers/src/AnomalyDetection.d.ts.map +1 -0
  233. package/packages/workers/src/AnomalyDetection.js +329 -0
  234. package/packages/workers/src/AutoScaler.d.ts +128 -0
  235. package/packages/workers/src/AutoScaler.d.ts.map +1 -0
  236. package/packages/workers/src/AutoScaler.js +425 -0
  237. package/packages/workers/src/BroadcastWorker.d.ts +29 -0
  238. package/packages/workers/src/BroadcastWorker.d.ts.map +1 -0
  239. package/packages/workers/src/BroadcastWorker.js +24 -0
  240. package/packages/workers/src/CanaryController.d.ts +104 -0
  241. package/packages/workers/src/CanaryController.d.ts.map +1 -0
  242. package/packages/workers/src/CanaryController.js +424 -0
  243. package/packages/workers/src/ChaosEngineering.d.ts +80 -0
  244. package/packages/workers/src/ChaosEngineering.d.ts.map +1 -0
  245. package/packages/workers/src/ChaosEngineering.js +229 -0
  246. package/packages/workers/src/CircuitBreaker.d.ts +107 -0
  247. package/packages/workers/src/CircuitBreaker.d.ts.map +1 -0
  248. package/packages/workers/src/CircuitBreaker.js +374 -0
  249. package/packages/workers/src/ClusterLock.d.ts +91 -0
  250. package/packages/workers/src/ClusterLock.d.ts.map +1 -0
  251. package/packages/workers/src/ClusterLock.js +397 -0
  252. package/packages/workers/src/ComplianceManager.d.ts +178 -0
  253. package/packages/workers/src/ComplianceManager.d.ts.map +1 -0
  254. package/packages/workers/src/ComplianceManager.js +556 -0
  255. package/packages/workers/src/DatacenterOrchestrator.d.ts +134 -0
  256. package/packages/workers/src/DatacenterOrchestrator.d.ts.map +1 -0
  257. package/packages/workers/src/DatacenterOrchestrator.js +404 -0
  258. package/packages/workers/src/DeadLetterQueue.d.ts +123 -0
  259. package/packages/workers/src/DeadLetterQueue.d.ts.map +1 -0
  260. package/packages/workers/src/DeadLetterQueue.js +544 -0
  261. package/packages/workers/src/HealthMonitor.d.ts +43 -0
  262. package/packages/workers/src/HealthMonitor.d.ts.map +1 -0
  263. package/packages/workers/src/HealthMonitor.js +312 -0
  264. package/packages/workers/src/MultiQueueWorker.d.ts +90 -0
  265. package/packages/workers/src/MultiQueueWorker.d.ts.map +1 -0
  266. package/packages/workers/src/MultiQueueWorker.js +282 -0
  267. package/packages/workers/src/NotificationWorker.d.ts +29 -0
  268. package/packages/workers/src/NotificationWorker.d.ts.map +1 -0
  269. package/packages/workers/src/NotificationWorker.js +23 -0
  270. package/packages/workers/src/Observability.d.ts +154 -0
  271. package/packages/workers/src/Observability.d.ts.map +1 -0
  272. package/packages/workers/src/Observability.js +538 -0
  273. package/packages/workers/src/PluginManager.d.ts +124 -0
  274. package/packages/workers/src/PluginManager.d.ts.map +1 -0
  275. package/packages/workers/src/PluginManager.js +392 -0
  276. package/packages/workers/src/PriorityQueue.d.ts +118 -0
  277. package/packages/workers/src/PriorityQueue.d.ts.map +1 -0
  278. package/packages/workers/src/PriorityQueue.js +276 -0
  279. package/packages/workers/src/ResourceMonitor.d.ts +165 -0
  280. package/packages/workers/src/ResourceMonitor.d.ts.map +1 -0
  281. package/packages/workers/src/ResourceMonitor.js +632 -0
  282. package/packages/workers/src/SLAMonitor.d.ts +111 -0
  283. package/packages/workers/src/SLAMonitor.d.ts.map +1 -0
  284. package/packages/workers/src/SLAMonitor.js +274 -0
  285. package/packages/workers/src/WorkerFactory.d.ts +226 -0
  286. package/packages/workers/src/WorkerFactory.d.ts.map +1 -0
  287. package/packages/workers/src/WorkerFactory.js +2551 -0
  288. package/packages/workers/src/WorkerInit.d.ts +103 -0
  289. package/packages/workers/src/WorkerInit.d.ts.map +1 -0
  290. package/packages/workers/src/WorkerInit.js +359 -0
  291. package/packages/workers/src/WorkerMetrics.d.ts +116 -0
  292. package/packages/workers/src/WorkerMetrics.d.ts.map +1 -0
  293. package/packages/workers/src/WorkerMetrics.js +570 -0
  294. package/packages/workers/src/WorkerRegistry.d.ts +152 -0
  295. package/packages/workers/src/WorkerRegistry.d.ts.map +1 -0
  296. package/packages/workers/src/WorkerRegistry.js +396 -0
  297. package/packages/workers/src/WorkerShutdown.d.ts +70 -0
  298. package/packages/workers/src/WorkerShutdown.d.ts.map +1 -0
  299. package/packages/workers/src/WorkerShutdown.js +185 -0
  300. package/packages/workers/src/WorkerVersioning.d.ts +108 -0
  301. package/packages/workers/src/WorkerVersioning.d.ts.map +1 -0
  302. package/packages/workers/src/WorkerVersioning.js +300 -0
  303. package/packages/workers/src/config/workerConfig.d.ts +5 -0
  304. package/packages/workers/src/config/workerConfig.d.ts.map +1 -0
  305. package/packages/workers/src/config/workerConfig.js +25 -0
  306. package/packages/workers/src/createQueueWorker.d.ts +31 -0
  307. package/packages/workers/src/createQueueWorker.d.ts.map +1 -0
  308. package/packages/workers/src/createQueueWorker.js +382 -0
  309. package/packages/workers/src/dashboard/index.d.ts +2 -0
  310. package/packages/workers/src/dashboard/index.d.ts.map +1 -0
  311. package/packages/workers/src/dashboard/index.js +1 -0
  312. package/packages/workers/src/dashboard/types.d.ts +123 -0
  313. package/packages/workers/src/dashboard/types.d.ts.map +1 -0
  314. package/packages/workers/src/dashboard/types.js +1 -0
  315. package/packages/workers/src/dashboard/workers-api.d.ts +5 -0
  316. package/packages/workers/src/dashboard/workers-api.d.ts.map +1 -0
  317. package/packages/workers/src/dashboard/workers-api.js +776 -0
  318. package/packages/workers/src/helper/index.d.ts +6 -0
  319. package/packages/workers/src/helper/index.d.ts.map +1 -0
  320. package/packages/workers/src/helper/index.js +10 -0
  321. package/packages/workers/src/http/WorkerApiController.d.ts +39 -0
  322. package/packages/workers/src/http/WorkerApiController.d.ts.map +1 -0
  323. package/packages/workers/src/http/WorkerApiController.js +313 -0
  324. package/packages/workers/src/http/WorkerController.d.ts +375 -0
  325. package/packages/workers/src/http/WorkerController.d.ts.map +1 -0
  326. package/packages/workers/src/http/WorkerController.js +1454 -0
  327. package/packages/workers/src/http/WorkerMonitoringService.d.ts +12 -0
  328. package/packages/workers/src/http/WorkerMonitoringService.d.ts.map +1 -0
  329. package/packages/workers/src/http/WorkerMonitoringService.js +89 -0
  330. package/packages/workers/src/http/middleware/CustomValidation.d.ts +93 -0
  331. package/packages/workers/src/http/middleware/CustomValidation.d.ts.map +1 -0
  332. package/packages/workers/src/http/middleware/CustomValidation.js +270 -0
  333. package/packages/workers/src/http/middleware/DatacenterValidator.d.ts +4 -0
  334. package/packages/workers/src/http/middleware/DatacenterValidator.d.ts.map +1 -0
  335. package/packages/workers/src/http/middleware/DatacenterValidator.js +94 -0
  336. package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts +8 -0
  337. package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts.map +1 -0
  338. package/packages/workers/src/http/middleware/EditWorkerValidation.js +56 -0
  339. package/packages/workers/src/http/middleware/FeaturesValidator.d.ts +4 -0
  340. package/packages/workers/src/http/middleware/FeaturesValidator.d.ts.map +1 -0
  341. package/packages/workers/src/http/middleware/FeaturesValidator.js +61 -0
  342. package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts +32 -0
  343. package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts.map +1 -0
  344. package/packages/workers/src/http/middleware/InfrastructureValidator.js +226 -0
  345. package/packages/workers/src/http/middleware/OptionsValidator.d.ts +4 -0
  346. package/packages/workers/src/http/middleware/OptionsValidator.d.ts.map +1 -0
  347. package/packages/workers/src/http/middleware/OptionsValidator.js +112 -0
  348. package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts +8 -0
  349. package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts.map +1 -0
  350. package/packages/workers/src/http/middleware/PayloadSanitizer.js +42 -0
  351. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts +4 -0
  352. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts.map +1 -0
  353. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.js +140 -0
  354. package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts +4 -0
  355. package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts.map +1 -0
  356. package/packages/workers/src/http/middleware/QueueNameSanitizer.js +45 -0
  357. package/packages/workers/src/http/middleware/ValidateDriver.d.ts +8 -0
  358. package/packages/workers/src/http/middleware/ValidateDriver.d.ts.map +1 -0
  359. package/packages/workers/src/http/middleware/ValidateDriver.js +20 -0
  360. package/packages/workers/src/http/middleware/VersionSanitizer.d.ts +4 -0
  361. package/packages/workers/src/http/middleware/VersionSanitizer.d.ts.map +1 -0
  362. package/packages/workers/src/http/middleware/VersionSanitizer.js +25 -0
  363. package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts +4 -0
  364. package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts.map +1 -0
  365. package/packages/workers/src/http/middleware/WorkerNameSanitizer.js +46 -0
  366. package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts +28 -0
  367. package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts.map +1 -0
  368. package/packages/workers/src/http/middleware/WorkerValidationChain.js +186 -0
  369. package/packages/workers/src/index.d.ts +47 -0
  370. package/packages/workers/src/index.d.ts.map +1 -0
  371. package/packages/workers/src/index.js +48 -0
  372. package/packages/workers/src/register.d.ts +10 -0
  373. package/packages/workers/src/register.d.ts.map +1 -0
  374. package/packages/workers/src/register.js +43 -0
  375. package/packages/workers/src/routes/workers.d.ts +13 -0
  376. package/packages/workers/src/routes/workers.d.ts.map +1 -0
  377. package/packages/workers/src/routes/workers.js +126 -0
  378. package/packages/workers/src/storage/WorkerStore.d.ts +52 -0
  379. package/packages/workers/src/storage/WorkerStore.d.ts.map +1 -0
  380. package/packages/workers/src/storage/WorkerStore.js +259 -0
  381. package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts +47 -0
  382. package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts.map +1 -0
  383. package/packages/workers/src/telemetry/api/TelemetryAPI.js +219 -0
  384. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts +18 -0
  385. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts.map +1 -0
  386. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.js +140 -0
  387. package/packages/workers/src/telemetry/components/AlertPanel.d.ts +2 -0
  388. package/packages/workers/src/telemetry/components/AlertPanel.d.ts.map +1 -0
  389. package/packages/workers/src/telemetry/components/AlertPanel.js +13 -0
  390. package/packages/workers/src/telemetry/components/CostTracking.d.ts +2 -0
  391. package/packages/workers/src/telemetry/components/CostTracking.d.ts.map +1 -0
  392. package/packages/workers/src/telemetry/components/CostTracking.js +14 -0
  393. package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts +2 -0
  394. package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts.map +1 -0
  395. package/packages/workers/src/telemetry/components/ResourceUsageChart.js +11 -0
  396. package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts +2 -0
  397. package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts.map +1 -0
  398. package/packages/workers/src/telemetry/components/WorkerHealthChart.js +11 -0
  399. package/packages/workers/src/telemetry/index.d.ts +16 -0
  400. package/packages/workers/src/telemetry/index.d.ts.map +1 -0
  401. package/packages/workers/src/telemetry/index.js +60 -0
  402. package/packages/workers/src/telemetry/routes/dashboard.d.ts +7 -0
  403. package/packages/workers/src/telemetry/routes/dashboard.d.ts.map +1 -0
  404. package/packages/workers/src/telemetry/routes/dashboard.js +608 -0
  405. package/packages/workers/src/type.d.ts +77 -0
  406. package/packages/workers/src/type.d.ts.map +1 -0
  407. package/packages/workers/src/type.js +1 -0
  408. package/packages/workers/src/ui/router/EmbeddedAssets.d.ts +5 -0
  409. package/packages/workers/src/ui/router/EmbeddedAssets.d.ts.map +1 -0
  410. package/packages/workers/src/ui/router/EmbeddedAssets.js +13 -0
  411. package/packages/workers/src/ui/router/ui.d.ts +4 -0
  412. package/packages/workers/src/ui/router/ui.d.ts.map +1 -0
  413. package/packages/workers/src/ui/router/ui.js +208 -0
  414. package/packages/workers/src/ui/types/worker-ui.d.ts +230 -0
  415. package/packages/workers/src/ui/types/worker-ui.d.ts.map +1 -0
  416. package/packages/workers/src/ui/types/worker-ui.js +5 -0
  417. package/routes/DirectTestRoutes.d.ts +25 -0
  418. package/routes/DirectTestRoutes.d.ts.map +1 -0
  419. package/routes/DirectTestRoutes.js +480 -0
  420. package/routes/TestRoutes.d.ts +11 -0
  421. package/routes/TestRoutes.d.ts.map +1 -0
  422. package/routes/TestRoutes.js +25 -0
  423. package/routes/api.d.ts +7 -0
  424. package/routes/api.d.ts.map +1 -0
  425. package/routes/api.js +136 -0
  426. package/routes/apiDev.d.ts +7 -0
  427. package/routes/apiDev.d.ts.map +1 -0
  428. package/routes/apiDev.js +92 -0
  429. package/routes/broadcast.d.ts +9 -0
  430. package/routes/broadcast.d.ts.map +1 -0
  431. package/routes/broadcast.js +27 -0
  432. package/routes/mail.d.ts +12 -0
  433. package/routes/mail.d.ts.map +1 -0
  434. package/routes/mail.js +138 -0
  435. package/routes/storage.d.ts +4 -0
  436. package/routes/storage.d.ts.map +1 -0
  437. package/routes/storage.js +35 -0
  438. package/src/boot/bootstrap.js +5 -0
  439. package/src/cli/CLI.d.ts.map +1 -1
  440. package/src/cli/CLI.js +4 -0
  441. package/src/cli/commands/D1ProxyCommand.d.ts +6 -0
  442. package/src/cli/commands/D1ProxyCommand.d.ts.map +1 -0
  443. package/src/cli/commands/D1ProxyCommand.js +170 -0
  444. package/src/cli/commands/InitContainerCommand.d.ts.map +1 -1
  445. package/src/cli/commands/InitContainerCommand.js +61 -23
  446. package/src/cli/commands/KvProxyCommand.d.ts +6 -0
  447. package/src/cli/commands/KvProxyCommand.d.ts.map +1 -0
  448. package/src/cli/commands/KvProxyCommand.js +158 -0
  449. package/src/cli/commands/MigrateCommand.js +1 -1
  450. package/src/cli/commands/MigrateWorkerCommand.d.ts.map +1 -1
  451. package/src/cli/commands/MigrateWorkerCommand.js +8 -2
  452. package/src/cli/commands/ProxyCommand.d.ts.map +1 -1
  453. package/src/cli/commands/ProxyCommand.js +2 -0
  454. package/src/cli/commands/WorkerCommands.d.ts.map +1 -1
  455. package/src/cli/commands/WorkerCommands.js +47 -7
  456. package/src/cli/commands/index.d.ts +2 -0
  457. package/src/cli/commands/index.d.ts.map +1 -1
  458. package/src/cli/commands/index.js +2 -0
  459. package/src/cli/index.d.ts +2 -0
  460. package/src/cli/index.d.ts.map +1 -1
  461. package/src/cli/index.js +2 -0
  462. package/src/cli/scaffolding/GovernanceScaffolder.d.ts.map +1 -1
  463. package/src/cli/scaffolding/GovernanceScaffolder.js +20 -3
  464. package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
  465. package/src/cli/scaffolding/ProjectScaffolder.js +13 -4
  466. package/src/cli/utils/DistPackager.d.ts +2 -2
  467. package/src/cli/utils/DistPackager.d.ts.map +1 -1
  468. package/src/cli/utils/DistPackager.js +9 -3
  469. package/src/index.js +3 -3
  470. package/src/proxy.d.ts +2 -0
  471. package/src/proxy.d.ts.map +1 -1
  472. package/src/proxy.js +2 -0
  473. package/src/runtime/WorkerProjectAutoImports.d.ts +14 -0
  474. package/src/runtime/WorkerProjectAutoImports.d.ts.map +1 -0
  475. package/src/runtime/WorkerProjectAutoImports.js +63 -0
  476. package/src/templates/project/basic/app/Workers/ExampleWorker.ts.tpl +17 -0
  477. package/src/templates/project/basic/package.json.tpl +1 -1
  478. package/src/templates/project/basic/src/zintrust.workers.ts.tpl +11 -0
  479. package/src/zintrust.comon.d.ts +9 -0
  480. package/src/zintrust.comon.d.ts.map +1 -0
  481. package/src/zintrust.comon.js +15 -0
  482. package/src/zintrust.plugins.d.ts +6 -3
  483. package/src/zintrust.plugins.d.ts.map +1 -1
  484. package/src/zintrust.plugins.js +27 -3
  485. package/start.d.ts +1 -0
  486. package/start.js +1 -0
@@ -0,0 +1,382 @@
1
+ import * as Core from '../../../src/index.js';
2
+ import { Env, Logger, Queue } from '../../../src/index.js';
3
+ const RETRY_BASE_DELAY_MS = 1000;
4
+ const RETRY_MAX_DELAY_MS = 30000;
5
+ const getJobStateTracker = () => {
6
+ try {
7
+ return Core['JobStateTracker'];
8
+ }
9
+ catch {
10
+ return undefined;
11
+ }
12
+ };
13
+ const getJobHeartbeatStore = () => {
14
+ try {
15
+ return Core['JobHeartbeatStore'];
16
+ }
17
+ catch {
18
+ return undefined;
19
+ }
20
+ };
21
+ const getTimeoutManager = () => {
22
+ try {
23
+ return Core['TimeoutManager'];
24
+ }
25
+ catch {
26
+ return undefined;
27
+ }
28
+ };
29
+ const getEnvInt = (key, fallback) => {
30
+ const getter = Env.getInt;
31
+ if (typeof getter === 'function') {
32
+ return getter(key, fallback);
33
+ }
34
+ const raw = Env[key];
35
+ if (typeof raw === 'number' && Number.isFinite(raw))
36
+ return Math.floor(raw);
37
+ if (typeof raw === 'string' && raw.trim() !== '') {
38
+ const parsed = Number(raw);
39
+ if (Number.isFinite(parsed))
40
+ return Math.floor(parsed);
41
+ }
42
+ return fallback;
43
+ };
44
+ const resolveQueueJobTimeoutMs = () => {
45
+ const timeoutManager = getTimeoutManager();
46
+ const tm = (timeoutManager ?? {});
47
+ if (typeof tm.getQueueJobTimeoutMs === 'function') {
48
+ return tm.getQueueJobTimeoutMs();
49
+ }
50
+ return Math.max(1000, getEnvInt('QUEUE_JOB_TIMEOUT', 60) * 1000);
51
+ };
52
+ const runWithTimeout = async (operation, timeoutMs, operationName) => {
53
+ const timeoutManager = getTimeoutManager();
54
+ const tm = (timeoutManager ?? {});
55
+ if (typeof tm.withTimeout === 'function') {
56
+ return tm.withTimeout(operation, timeoutMs, operationName);
57
+ }
58
+ return operation();
59
+ };
60
+ const isTimeoutError = (error) => {
61
+ const timeoutManager = getTimeoutManager();
62
+ const tm = (timeoutManager ?? {});
63
+ if (typeof tm.isTimeoutError === 'function') {
64
+ return tm.isTimeoutError(error);
65
+ }
66
+ if (error instanceof Error) {
67
+ return error.message.toLowerCase().includes('timed out');
68
+ }
69
+ return false;
70
+ };
71
+ const normalizeAttempts = (value) => {
72
+ if (typeof value === 'number' && Number.isFinite(value) && value >= 0) {
73
+ return Math.floor(value);
74
+ }
75
+ return 0;
76
+ };
77
+ const getAttemptsFromMessage = (message) => {
78
+ const payloadAttempts = typeof message.payload === 'object' && message.payload !== null
79
+ ? normalizeAttempts(message.payload['attempts'])
80
+ : 0;
81
+ const messageAttempts = normalizeAttempts(message.attempts);
82
+ return Math.max(payloadAttempts, messageAttempts);
83
+ };
84
+ const getRetryDelayMs = (nextAttempts) => {
85
+ const exponentialDelay = Math.min(RETRY_BASE_DELAY_MS * 2 ** Math.max(0, nextAttempts - 1), RETRY_MAX_DELAY_MS);
86
+ const jitterMs = Math.floor(Math.random() * 250); // NOSONAR
87
+ return exponentialDelay + jitterMs;
88
+ };
89
+ const buildBaseLogFields = (message, getLogFields) => {
90
+ return {
91
+ messageId: message.id,
92
+ ...getLogFields(message.payload),
93
+ };
94
+ };
95
+ const toBullMQPayload = (payload) => {
96
+ if (typeof payload === 'object' && payload !== null) {
97
+ return { ...payload };
98
+ }
99
+ return { payload };
100
+ };
101
+ const getWorkerInstanceId = () => {
102
+ return typeof Env['WORKER_INSTANCE_ID'] === 'string'
103
+ ? String(Env['WORKER_INSTANCE_ID'])
104
+ : undefined;
105
+ };
106
+ const getTrackerApi = () => {
107
+ return (getJobStateTracker() ?? {}) ?? {};
108
+ };
109
+ const getHeartbeatStoreApi = () => {
110
+ return (getJobHeartbeatStore() ?? {}) ?? {};
111
+ };
112
+ const removeHeartbeatIfSupported = async (queueName, jobId) => {
113
+ const heartbeatStore = getHeartbeatStoreApi();
114
+ if (typeof heartbeatStore.remove === 'function') {
115
+ await heartbeatStore.remove(queueName, jobId);
116
+ }
117
+ };
118
+ const scheduleHeartbeatLoop = (trackerApi, queueName, jobId, workerInstanceId, heartbeatIntervalMs) => {
119
+ return setInterval(() => {
120
+ if (typeof trackerApi.heartbeat === 'function') {
121
+ void trackerApi.heartbeat({
122
+ queueName,
123
+ jobId,
124
+ workerInstanceId,
125
+ });
126
+ }
127
+ const heartbeatStore = getHeartbeatStoreApi();
128
+ if (typeof heartbeatStore.heartbeat === 'function') {
129
+ void heartbeatStore.heartbeat({
130
+ queueName,
131
+ jobId,
132
+ workerInstanceId,
133
+ intervalMs: heartbeatIntervalMs,
134
+ });
135
+ }
136
+ }, heartbeatIntervalMs);
137
+ };
138
+ const checkAndRequeueIfNotDue = async (options, queueName, driverName, message, baseLogFields) => {
139
+ const payload = message.payload;
140
+ const rawTimestamp = 'timestamp' in payload ? payload['timestamp'] : 0;
141
+ const timestamp = typeof rawTimestamp === 'number' ? rawTimestamp : 0;
142
+ if (timestamp <= Date.now())
143
+ return false;
144
+ Logger.info(`${options.kindLabel} not due yet, re-queueing`, {
145
+ ...baseLogFields,
146
+ dueAt: new Date(timestamp).toISOString(),
147
+ });
148
+ await Queue.enqueue(queueName, toBullMQPayload(message.payload), driverName);
149
+ await Queue.ack(queueName, message.id, driverName);
150
+ return true;
151
+ };
152
+ const onProcessSuccess = async (input) => {
153
+ await Queue.ack(input.queueName, input.message.id, input.driverName);
154
+ if (typeof input.trackerApi.completed === 'function') {
155
+ await input.trackerApi.completed({
156
+ queueName: input.queueName,
157
+ jobId: input.message.id,
158
+ processingTimeMs: Date.now() - input.startedAtMs,
159
+ });
160
+ }
161
+ await removeHeartbeatIfSupported(input.queueName, input.message.id);
162
+ Logger.info(`${input.options.kindLabel} processed successfully`, input.baseLogFields);
163
+ return true;
164
+ };
165
+ const onProcessFailure = async (input) => {
166
+ const attempts = getAttemptsFromMessage(input.message);
167
+ const nextAttempts = attempts + 1;
168
+ const isFinal = nextAttempts >= input.options.maxAttempts;
169
+ let retryAt;
170
+ Logger.error(`Failed to process ${input.options.kindLabel}`, {
171
+ ...input.baseLogFields,
172
+ error: input.error,
173
+ attempts: nextAttempts,
174
+ });
175
+ if (isTimeoutError(input.error) && typeof input.trackerApi.timedOut === 'function') {
176
+ await input.trackerApi.timedOut({
177
+ queueName: input.queueName,
178
+ jobId: input.message.id,
179
+ reason: `Worker processing exceeded timeout for ${input.options.kindLabel}`,
180
+ error: input.error,
181
+ });
182
+ }
183
+ if (nextAttempts < input.options.maxAttempts) {
184
+ const retryDelayMs = getRetryDelayMs(nextAttempts);
185
+ retryAt = new Date(Date.now() + retryDelayMs).toISOString();
186
+ const currentPayload = toBullMQPayload(input.message.payload);
187
+ const payloadForRetry = {
188
+ ...currentPayload,
189
+ attempts: nextAttempts,
190
+ timestamp: Date.now() + retryDelayMs,
191
+ };
192
+ await Queue.enqueue(input.queueName, payloadForRetry, input.driverName);
193
+ Logger.info(`${input.options.kindLabel} re-queued for retry`, {
194
+ ...input.baseLogFields,
195
+ attempts: nextAttempts,
196
+ retryDelayMs,
197
+ });
198
+ }
199
+ await Queue.ack(input.queueName, input.message.id, input.driverName);
200
+ await removeHeartbeatIfSupported(input.queueName, input.message.id);
201
+ if (typeof input.trackerApi.failed === 'function') {
202
+ await input.trackerApi.failed({
203
+ queueName: input.queueName,
204
+ jobId: input.message.id,
205
+ attempts: nextAttempts,
206
+ isFinal,
207
+ retryAt,
208
+ error: input.error,
209
+ });
210
+ }
211
+ return true;
212
+ };
213
+ const startTrackingAndHeartbeat = async (input) => {
214
+ const startedAtMs = Date.now();
215
+ const timeoutMs = resolveQueueJobTimeoutMs();
216
+ const heartbeatIntervalMs = Math.max(1000, getEnvInt('JOB_HEARTBEAT_INTERVAL_MS', 10000));
217
+ const attempts = getAttemptsFromMessage(input.message);
218
+ const workerInstanceId = getWorkerInstanceId();
219
+ if (typeof input.trackerApi.started === 'function') {
220
+ await input.trackerApi.started({
221
+ queueName: input.queueName,
222
+ jobId: input.message.id,
223
+ attempts: attempts + 1,
224
+ timeoutMs,
225
+ workerName: input.options.kindLabel,
226
+ workerInstanceId,
227
+ });
228
+ }
229
+ const heartbeatStore = getHeartbeatStoreApi();
230
+ if (typeof heartbeatStore.heartbeat === 'function') {
231
+ await heartbeatStore.heartbeat({
232
+ queueName: input.queueName,
233
+ jobId: input.message.id,
234
+ workerInstanceId,
235
+ intervalMs: heartbeatIntervalMs,
236
+ });
237
+ }
238
+ const heartbeatTimer = scheduleHeartbeatLoop(input.trackerApi, input.queueName, input.message.id, workerInstanceId, heartbeatIntervalMs);
239
+ return { startedAtMs, heartbeatTimer };
240
+ };
241
+ const processQueueMessage = async (options, queueName, driverName) => {
242
+ const message = await Queue.dequeue(queueName, driverName);
243
+ if (!message)
244
+ return false;
245
+ const baseLogFields = buildBaseLogFields(message, options.getLogFields);
246
+ const isRequeued = await checkAndRequeueIfNotDue(options, queueName, driverName, message, baseLogFields);
247
+ if (isRequeued)
248
+ return false;
249
+ let heartbeatTimer;
250
+ const trackerApi = getTrackerApi();
251
+ const timeoutMs = resolveQueueJobTimeoutMs();
252
+ let startedAtMs;
253
+ try {
254
+ const tracking = await startTrackingAndHeartbeat({
255
+ options,
256
+ trackerApi,
257
+ queueName,
258
+ message,
259
+ });
260
+ startedAtMs = tracking.startedAtMs;
261
+ heartbeatTimer = tracking.heartbeatTimer;
262
+ Logger.info(`Processing queued ${options.kindLabel}`, baseLogFields);
263
+ await runWithTimeout(async () => {
264
+ await options.handle(message.payload);
265
+ }, timeoutMs, `${options.kindLabel}:${queueName}:${message.id}`);
266
+ return onProcessSuccess({
267
+ options,
268
+ trackerApi,
269
+ queueName,
270
+ driverName,
271
+ message,
272
+ startedAtMs,
273
+ baseLogFields,
274
+ });
275
+ }
276
+ catch (error) {
277
+ return onProcessFailure({
278
+ options,
279
+ trackerApi,
280
+ queueName,
281
+ driverName,
282
+ message,
283
+ baseLogFields,
284
+ error,
285
+ });
286
+ }
287
+ finally {
288
+ if (heartbeatTimer !== undefined) {
289
+ clearInterval(heartbeatTimer);
290
+ }
291
+ }
292
+ };
293
+ const createProcessOne = (options) => {
294
+ return async (queueName = options.defaultQueueName, driverName) => {
295
+ return processQueueMessage(options, queueName, driverName);
296
+ };
297
+ };
298
+ const createProcessAll = (defaultQueueName, processOne) => {
299
+ return async (queueName = defaultQueueName, driverName) => {
300
+ let processed = 0;
301
+ let hasMore = true;
302
+ while (hasMore) {
303
+ // eslint-disable-next-line no-await-in-loop
304
+ hasMore = await processOne(queueName, driverName);
305
+ if (hasMore)
306
+ processed++;
307
+ }
308
+ return processed;
309
+ };
310
+ };
311
+ const createRunOnce = (defaultQueueName, processOne) => {
312
+ return async (opts = {}) => {
313
+ const { queueName = defaultQueueName, driverName, maxItems, maxDurationMs = 30000, concurrency = 1, } = opts;
314
+ const startTime = Date.now();
315
+ let totalProcessed = 0;
316
+ // Helper for single worker loop
317
+ const runWorker = async () => {
318
+ let workerProcessed = 0;
319
+ while (true) {
320
+ if (maxDurationMs > 0 && Date.now() - startTime > maxDurationMs) {
321
+ break;
322
+ }
323
+ if (maxItems !== undefined && totalProcessed >= maxItems) {
324
+ break;
325
+ }
326
+ // eslint-disable-next-line no-await-in-loop
327
+ const didProcess = await processOne(queueName, driverName);
328
+ if (!didProcess)
329
+ break;
330
+ workerProcessed++;
331
+ totalProcessed++; // Shared counter (approximation in parallel)
332
+ }
333
+ return workerProcessed;
334
+ };
335
+ // Run workers in parallel
336
+ await Promise.all(Array.from({ length: Math.max(1, concurrency) }).map(() => runWorker()));
337
+ return totalProcessed;
338
+ };
339
+ };
340
+ const createStartWorker = (kindLabel, defaultQueueName, processOne) => {
341
+ return async (opts = {}) => {
342
+ const { queueName = defaultQueueName, driverName, signal, maxDurationMs = 300000, concurrency = 1, } = opts;
343
+ Logger.info(`Starting ${kindLabel} worker (drain-until-empty)`, { queueName, concurrency });
344
+ const startTime = Date.now();
345
+ let totalProcessed = 0;
346
+ const runWorker = async () => {
347
+ while (signal?.aborted !== true) {
348
+ if (maxDurationMs > 0 && Date.now() - startTime > maxDurationMs) {
349
+ Logger.warn(`${kindLabel} worker timeout reached`, { queueName, totalProcessed });
350
+ break;
351
+ }
352
+ // eslint-disable-next-line no-await-in-loop
353
+ const didProcess = await processOne(queueName, driverName);
354
+ if (!didProcess)
355
+ break;
356
+ totalProcessed++;
357
+ }
358
+ };
359
+ // Run workers in parallel
360
+ await Promise.all(Array.from({ length: Math.max(1, concurrency) }).map(() => runWorker()));
361
+ Logger.info(`${kindLabel} worker finished (queue drained)`, { queueName, totalProcessed });
362
+ return totalProcessed;
363
+ };
364
+ };
365
+ export function createQueueWorker(options) {
366
+ const processOne = createProcessOne(options);
367
+ const processAll = createProcessAll(options.defaultQueueName, processOne);
368
+ const runOnce = createRunOnce(options.defaultQueueName, processOne);
369
+ const startWorker = createStartWorker(options.kindLabel, options.defaultQueueName, processOne);
370
+ const queueWorkerMeta = Object.freeze({
371
+ kindLabel: options.kindLabel,
372
+ defaultQueueName: options.defaultQueueName,
373
+ maxAttempts: options.maxAttempts,
374
+ });
375
+ return Object.freeze({
376
+ processOne,
377
+ processAll,
378
+ runOnce,
379
+ startWorker,
380
+ __zintrustQueueWorkerMeta: queueWorkerMeta,
381
+ });
382
+ }
@@ -0,0 +1,2 @@
1
+ export type { GetWorkersQuery, WorkerData, WorkersDashboardUiOptions, WorkersListResponse, } from './types';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/workers/src/dashboard/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,eAAe,EACf,UAAU,EACV,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,SAAS,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,123 @@
1
+ export interface WorkerConfiguration {
2
+ processorSpec?: string | null;
3
+ activeStatus?: boolean | null;
4
+ [key: string]: string | number | boolean | null | undefined | object;
5
+ }
6
+ export type WorkerDriver = 'database' | 'redis' | 'memory';
7
+ export type WorkerStatus = 'running' | 'stopped' | 'error' | 'paused';
8
+ export type WorkerSortBy = 'name' | 'status' | 'driver' | 'health' | 'version' | 'processed';
9
+ export type WorkerSortOrder = 'asc' | 'desc';
10
+ export type WorkerHealthStatus = 'healthy' | 'unhealthy' | 'warning';
11
+ export type WorkerHealthCheckStatus = 'pass' | 'fail' | 'warn';
12
+ export interface WorkerHealth {
13
+ status: WorkerHealthStatus;
14
+ checks: Array<{
15
+ name: string;
16
+ status: WorkerHealthCheckStatus;
17
+ message?: string;
18
+ }>;
19
+ lastCheck: string;
20
+ }
21
+ export interface WorkerMetrics {
22
+ processed: number;
23
+ failed: number;
24
+ avgTime: number;
25
+ memory: number;
26
+ cpu: number;
27
+ uptime: number;
28
+ [key: string]: string | number | boolean | null | undefined;
29
+ }
30
+ export interface WorkerData {
31
+ name: string;
32
+ queueName: string;
33
+ status: WorkerStatus;
34
+ health: WorkerHealth;
35
+ driver: WorkerDriver;
36
+ version: string;
37
+ processed: number;
38
+ avgTime: number;
39
+ memory: number;
40
+ autoStart: boolean;
41
+ activeStatus?: boolean;
42
+ details?: {
43
+ configuration: WorkerConfiguration;
44
+ health: WorkerHealth;
45
+ metrics: WorkerMetrics;
46
+ recentLogs: Array<{
47
+ timestamp: string;
48
+ level: string;
49
+ message: string;
50
+ }>;
51
+ };
52
+ }
53
+ export interface WorkersListResponse {
54
+ workers: WorkerData[];
55
+ queueData: QueueData;
56
+ pagination: {
57
+ page: number;
58
+ limit: number;
59
+ total: number;
60
+ totalPages: number;
61
+ hasNext: boolean;
62
+ hasPrev: boolean;
63
+ };
64
+ drivers: WorkerDriver[];
65
+ }
66
+ export interface QueueData {
67
+ driver: WorkerDriver;
68
+ totalQueues: number;
69
+ totalJobs: number;
70
+ processingJobs: number;
71
+ failedJobs: number;
72
+ }
73
+ export type GetWorkersQuery = {
74
+ page?: number;
75
+ limit?: number;
76
+ sortBy?: WorkerSortBy;
77
+ sortOrder?: WorkerSortOrder;
78
+ status?: WorkerStatus;
79
+ driver?: WorkerDriver;
80
+ search?: string;
81
+ includeDetails?: boolean;
82
+ includeInactive?: boolean;
83
+ };
84
+ export type WorkersDashboardUiOptions = {
85
+ autoRefresh: boolean;
86
+ refreshIntervalMs: number;
87
+ pageSize: number;
88
+ enableAutoStart: boolean;
89
+ basePath?: string;
90
+ };
91
+ export type RawWorkerData = {
92
+ name: string;
93
+ status?: WorkerStatus;
94
+ lastError?: string;
95
+ avgTime?: number;
96
+ memory?: number;
97
+ processed?: number;
98
+ version?: string;
99
+ autoStart?: boolean;
100
+ activeStatus?: boolean;
101
+ queueName?: string;
102
+ details?: {
103
+ configuration: WorkerConfiguration;
104
+ health: WorkerHealth;
105
+ metrics: WorkerMetrics;
106
+ recentLogs: Array<{
107
+ timestamp: string;
108
+ level: string;
109
+ message: string;
110
+ }>;
111
+ };
112
+ };
113
+ export type WorkerDetails = {
114
+ configuration: WorkerConfiguration;
115
+ health: WorkerHealth;
116
+ metrics: WorkerMetrics;
117
+ recentLogs: Array<{
118
+ timestamp: string;
119
+ level: string;
120
+ message: string;
121
+ }>;
122
+ };
123
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../packages/workers/src/dashboard/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import type { GetWorkersQuery, WorkerData, WorkersListResponse } from './types';
2
+ export declare function getWorkers(query: GetWorkersQuery): Promise<WorkersListResponse>;
3
+ export declare function toggleAutoStart(name: string, enabled: boolean): Promise<void>;
4
+ export declare function getWorkerDetails(name: string, driver?: string): Promise<WorkerData>;
5
+ //# sourceMappingURL=workers-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workers-api.d.ts","sourceRoot":"","sources":["../../../../../packages/workers/src/dashboard/workers-api.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,eAAe,EAIf,UAAU,EAMV,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAqGjB,wBAAsB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAuErF;AAktBD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAqCzF"}