@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,103 @@
1
+ /**
2
+ * Worker Management System Initializer
3
+ *
4
+ * Handles initialization and lifecycle management of the worker management system.
5
+ * - Registers shutdown handlers
6
+ * - Initializes monitoring and resource management
7
+ * - Sets up auto-scaling and health checks
8
+ * - Ensures graceful startup and shutdown
9
+ */
10
+ import type { WorkerPersistenceConfig } from './WorkerFactory';
11
+ export interface IWorkerInitOptions {
12
+ /**
13
+ * Whether to start resource monitoring on initialization
14
+ * @default true
15
+ */
16
+ enableResourceMonitoring?: boolean;
17
+ /**
18
+ * Whether to start health monitoring on initialization
19
+ * @default true
20
+ */
21
+ enableHealthMonitoring?: boolean;
22
+ /**
23
+ * Whether to start auto-scaling on initialization
24
+ * @default false - must be explicitly enabled
25
+ */
26
+ enableAutoScaling?: boolean;
27
+ /**
28
+ * Whether to register graceful shutdown handlers
29
+ * @default true
30
+ */
31
+ registerShutdownHandlers?: boolean;
32
+ /**
33
+ * Resource monitoring interval in milliseconds
34
+ * @default 60000 (1 minute)
35
+ */
36
+ resourceMonitoringInterval?: number;
37
+ }
38
+ interface IInitState {
39
+ initialized: boolean;
40
+ initializedAt: Date | null;
41
+ resourceMonitoring: boolean;
42
+ healthMonitoring: boolean;
43
+ autoScaling: boolean;
44
+ shutdownHandlersRegistered: boolean;
45
+ }
46
+ type AutoStartCandidate = {
47
+ name: string;
48
+ autoStart: boolean;
49
+ activeStatus?: boolean;
50
+ };
51
+ type PersistenceOverride = WorkerPersistenceConfig;
52
+ type AutoStartTask = AutoStartCandidate & {
53
+ persistenceOverride: PersistenceOverride;
54
+ source: 'database' | 'redis' | 'memory' | 'file';
55
+ };
56
+ export declare const buildFileBackedAutoStartTasks: (records: AutoStartCandidate[], warn?: (message: string) => void) => AutoStartTask[];
57
+ export declare const selectAutoStartTasks: (persistedTasks: AutoStartTask[], fileRecords: AutoStartCandidate[], warn?: (message: string) => void) => AutoStartTask[];
58
+ export declare const selectAutoStartNames: (persistedRecords: AutoStartCandidate[], fileRecords: AutoStartCandidate[], warn?: (message: string) => void) => {
59
+ names: string[];
60
+ source: "persisted" | "file" | "none";
61
+ };
62
+ /**
63
+ * Initialize the worker management system
64
+ */
65
+ declare function initialize(options?: IWorkerInitOptions): Promise<void>;
66
+ declare function autoStartPersistedWorkers(): Promise<void>;
67
+ /**
68
+ * Check if worker management system is initialized
69
+ */
70
+ declare function isInitialized(): boolean;
71
+ /**
72
+ * Get initialization state
73
+ */
74
+ declare function getInitState(): Readonly<IInitState>;
75
+ /**
76
+ * Graceful shutdown of worker management system
77
+ * (convenience method that delegates to WorkerShutdown)
78
+ */
79
+ declare function shutdown(): Promise<void>;
80
+ export declare const WorkerInit: Readonly<{
81
+ /**
82
+ * Initialize the worker management system
83
+ */
84
+ initialize: typeof initialize;
85
+ /**
86
+ * Check if worker management system is initialized
87
+ */
88
+ isInitialized: typeof isInitialized;
89
+ /**
90
+ * Get initialization state
91
+ */
92
+ getInitState: typeof getInitState;
93
+ /**
94
+ * Graceful shutdown of worker management system
95
+ */
96
+ shutdown: typeof shutdown;
97
+ /**
98
+ * Start persisted workers after boot completes
99
+ */
100
+ autoStartPersistedWorkers: typeof autoStartPersistedWorkers;
101
+ }>;
102
+ export {};
103
+ //# sourceMappingURL=WorkerInit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerInit.d.ts","sourceRoot":"","sources":["../../../../packages/workers/src/WorkerInit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAS/D,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;;OAGG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,UAAU,UAAU;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,0BAA0B,EAAE,OAAO,CAAC;CACrC;AAgFD,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,KAAK,mBAAmB,GAAG,uBAAuB,CAAC;AAEnD,KAAK,aAAa,GAAG,kBAAkB,GAAG;IACxC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;CAClD,CAAC;AAgFF,eAAO,MAAM,6BAA6B,GACxC,SAAS,kBAAkB,EAAE,EAC7B,OAAM,CAAC,OAAO,EAAE,MAAM,KAAK,IAAkB,KAC5C,aAAa,EAsBf,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,gBAAgB,aAAa,EAAE,EAC/B,aAAa,kBAAkB,EAAE,EACjC,OAAM,CAAC,OAAO,EAAE,MAAM,KAAK,IAAkB,KAC5C,aAAa,EAMf,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,kBAAkB,kBAAkB,EAAE,EACtC,aAAa,kBAAkB,EAAE,EACjC,OAAM,CAAC,OAAO,EAAE,MAAM,KAAK,IAAkB,KAC5C;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAAA;CAS1D,CAAC;AAsEF;;GAEG;AACH,iBAAe,UAAU,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DzE;AAED,iBAAe,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmCxD;AAED;;GAEG;AACH,iBAAS,aAAa,IAAI,OAAO,CAEhC;AAED;;GAEG;AACH,iBAAS,YAAY,IAAI,QAAQ,CAAC,UAAU,CAAC,CAE5C;AAED;;;GAGG;AACH,iBAAe,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAWvC;AAMD,eAAO,MAAM,UAAU;IACrB;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;EAEH,CAAC"}
@@ -0,0 +1,359 @@
1
+ /**
2
+ * Worker Management System Initializer
3
+ *
4
+ * Handles initialization and lifecycle management of the worker management system.
5
+ * - Registers shutdown handlers
6
+ * - Initializes monitoring and resource management
7
+ * - Sets up auto-scaling and health checks
8
+ * - Ensures graceful startup and shutdown
9
+ */
10
+ import { Env, Logger } from '../../../src/index.js';
11
+ import { ResourceMonitor } from './ResourceMonitor.js';
12
+ import { WorkerFactory } from './WorkerFactory.js';
13
+ import { WorkerShutdown } from './WorkerShutdown.js';
14
+ import { keyPrefix } from './config/workerConfig.js';
15
+ // ============================================================================
16
+ // State
17
+ // ============================================================================
18
+ const state = {
19
+ initialized: false,
20
+ initializedAt: null,
21
+ resourceMonitoring: false,
22
+ healthMonitoring: false,
23
+ autoScaling: false,
24
+ shutdownHandlersRegistered: false,
25
+ };
26
+ // ============================================================================
27
+ // Implementation
28
+ // ============================================================================
29
+ /**
30
+ * Initialize resource monitoring based on environment and worker settings
31
+ */
32
+ function initializeResourceMonitoring(enableResourceMonitoring, resourceMonitoringInterval) {
33
+ // Check global environment gate first
34
+ const globalResourceMonitoring = Env.getBool('WORKER_RESOURCE_MONITORING', false);
35
+ if (enableResourceMonitoring && globalResourceMonitoring) {
36
+ // Check if any workers have resourceMonitoring enabled
37
+ const shouldStart = shouldStartResourceMonitoring();
38
+ if (shouldStart) {
39
+ if (ResourceMonitor.isRunning() === false) {
40
+ ResourceMonitor.start(resourceMonitoringInterval / 1000);
41
+ }
42
+ Logger.debug('✓ Resource monitoring started (worker requested)');
43
+ return true;
44
+ }
45
+ else {
46
+ Logger.debug('⏸️ Resource monitoring disabled (no workers requested it)');
47
+ }
48
+ }
49
+ else if (!globalResourceMonitoring) {
50
+ Logger.debug('⏸️ Resource monitoring disabled (WORKER_RESOURCE_MONITORING=false)');
51
+ }
52
+ return false;
53
+ }
54
+ const getPersistenceOverride = (driver) => {
55
+ if (driver === 'redis') {
56
+ return { driver: 'redis', keyPrefix: keyPrefix() };
57
+ }
58
+ if (driver === 'memory') {
59
+ return { driver: 'memory' };
60
+ }
61
+ return {
62
+ driver: 'database',
63
+ connection: Env.get('WORKER_PERSISTENCE_DB_CONNECTION', 'default') ?? 'default',
64
+ table: Env.get('WORKER_PERSISTENCE_TABLE', 'zintrust_workers') ?? 'zintrust_workers',
65
+ };
66
+ };
67
+ /**
68
+ * Check if any workers have resource monitoring enabled
69
+ */
70
+ function shouldStartResourceMonitoring() {
71
+ try {
72
+ const workerNames = WorkerFactory.list();
73
+ return workerNames.some((name) => {
74
+ const worker = WorkerFactory.get(name);
75
+ return worker?.config?.features?.resourceMonitoring === true;
76
+ });
77
+ }
78
+ catch {
79
+ return false;
80
+ }
81
+ }
82
+ const resolveAutoStartCandidates = (records) => {
83
+ return records.filter((record) => record.activeStatus !== false && record.autoStart === true);
84
+ };
85
+ const resolvePersistenceTargets = () => {
86
+ const configuredDriver = (Env.get('WORKER_PERSISTENCE_DRIVER', 'memory') || '')
87
+ .toLowerCase()
88
+ .trim();
89
+ const targets = configuredDriver === 'database'
90
+ ? [
91
+ { source: 'database', persistenceOverride: getPersistenceOverride('database') },
92
+ { source: 'redis', persistenceOverride: getPersistenceOverride('redis') },
93
+ { source: 'memory', persistenceOverride: { driver: 'memory' } },
94
+ ]
95
+ : [
96
+ { source: 'redis', persistenceOverride: getPersistenceOverride('redis') },
97
+ { source: 'memory', persistenceOverride: { driver: 'memory' } },
98
+ ];
99
+ // Sort so the configured driver comes first (priority)
100
+ return targets.sort((a, b) => {
101
+ const aIsConfigured = a.persistenceOverride.driver === configuredDriver;
102
+ const bIsConfigured = b.persistenceOverride.driver === configuredDriver;
103
+ if (aIsConfigured && !bIsConfigured)
104
+ return -1;
105
+ if (!aIsConfigured && bIsConfigured)
106
+ return 1;
107
+ return 0;
108
+ });
109
+ };
110
+ const collectAutoStartTasks = async () => {
111
+ const targets = resolvePersistenceTargets();
112
+ const tasks = [];
113
+ const seenWorkerNames = new Set();
114
+ for (const target of targets) {
115
+ try {
116
+ // eslint-disable-next-line no-await-in-loop
117
+ const records = await WorkerFactory.listPersistedRecords(target.persistenceOverride);
118
+ const candidates = resolveAutoStartCandidates(records);
119
+ Logger.debug('Auto-start discovery', {
120
+ source: target.source,
121
+ totalRecords: records.length,
122
+ candidateCount: candidates.length,
123
+ });
124
+ for (const record of candidates) {
125
+ if (seenWorkerNames.has(record.name)) {
126
+ Logger.warn(`Worker ${record.name} appears in multiple persistence stores; keeping first discovered source and skipping duplicate from ${target.source}.`);
127
+ continue;
128
+ }
129
+ seenWorkerNames.add(record.name);
130
+ tasks.push({
131
+ ...record,
132
+ persistenceOverride: target.persistenceOverride,
133
+ source: target.source,
134
+ });
135
+ }
136
+ }
137
+ catch (error) {
138
+ const message = error instanceof Error ? error.message : String(error);
139
+ Logger.warn(`Auto-start discovery failed for ${target.source} persistence: ${message}`);
140
+ }
141
+ }
142
+ return tasks;
143
+ };
144
+ export const buildFileBackedAutoStartTasks = (records, warn = Logger.warn) => {
145
+ const tasks = [];
146
+ const seenWorkerNames = new Set();
147
+ const candidates = resolveAutoStartCandidates(records);
148
+ for (const record of candidates) {
149
+ if (seenWorkerNames.has(record.name)) {
150
+ warn(`Worker ${record.name} appears multiple times in file-backed discovery; keeping the first definition and skipping duplicates.`);
151
+ continue;
152
+ }
153
+ seenWorkerNames.add(record.name);
154
+ tasks.push({
155
+ ...record,
156
+ persistenceOverride: { driver: 'memory' },
157
+ source: 'file',
158
+ });
159
+ }
160
+ return tasks;
161
+ };
162
+ export const selectAutoStartTasks = (persistedTasks, fileRecords, warn = Logger.warn) => {
163
+ if (persistedTasks.length > 0) {
164
+ return persistedTasks;
165
+ }
166
+ return buildFileBackedAutoStartTasks(fileRecords, warn);
167
+ };
168
+ export const selectAutoStartNames = (persistedRecords, fileRecords, warn = Logger.warn) => {
169
+ const persistedNames = resolveAutoStartCandidates(persistedRecords).map((record) => record.name);
170
+ if (persistedNames.length > 0) {
171
+ return { names: persistedNames, source: 'persisted' };
172
+ }
173
+ const fileNames = buildFileBackedAutoStartTasks(fileRecords, warn).map((record) => record.name);
174
+ return { names: fileNames, source: fileNames.length > 0 ? 'file' : 'none' };
175
+ };
176
+ const collectFileBackedAutoStartTasks = async () => {
177
+ try {
178
+ const records = await WorkerFactory.listFileBackedRecords();
179
+ const tasks = buildFileBackedAutoStartTasks(records);
180
+ Logger.debug('File-backed auto-start discovery', {
181
+ totalRecords: records.length,
182
+ candidateCount: tasks.length,
183
+ });
184
+ return tasks;
185
+ }
186
+ catch (error) {
187
+ const message = error instanceof Error ? error.message : String(error);
188
+ Logger.warn(`File-backed auto-start discovery failed: ${message}`);
189
+ }
190
+ return [];
191
+ };
192
+ const isWorkerTrulyRunning = async (name) => {
193
+ const existing = WorkerFactory.get(name);
194
+ if (!existing)
195
+ return false;
196
+ const workerLike = existing.worker;
197
+ const isRunning = typeof workerLike.isRunning === 'function'
198
+ ? await Promise.resolve(workerLike.isRunning())
199
+ : false;
200
+ const isPaused = typeof workerLike.isPaused === 'function' ? workerLike.isPaused() : false;
201
+ return isRunning && !isPaused;
202
+ };
203
+ const autoStartOneWorker = async (record) => {
204
+ const existing = WorkerFactory.get(record.name);
205
+ if (existing) {
206
+ try {
207
+ if (await isWorkerTrulyRunning(record.name)) {
208
+ return { name: record.name, started: false, skipped: true };
209
+ }
210
+ Logger.warn(`Worker ${record.name} was registered but not truly running. Restarting to recover from stale state.`);
211
+ await WorkerFactory.restart(record.name, record.persistenceOverride);
212
+ return { name: record.name, started: true, skipped: false };
213
+ }
214
+ catch (error) {
215
+ const message = error instanceof Error ? error.message : String(error);
216
+ Logger.warn(`Auto-start recovery failed for worker ${record.name}: ${message}`);
217
+ return { name: record.name, started: false, skipped: false };
218
+ }
219
+ }
220
+ try {
221
+ await WorkerFactory.startFromPersisted(record.name, record.persistenceOverride);
222
+ return { name: record.name, started: true, skipped: false };
223
+ }
224
+ catch (error) {
225
+ const message = error instanceof Error ? error.message : String(error);
226
+ Logger.warn(`Auto-start failed for worker ${record.name}: ${message}`);
227
+ return { name: record.name, started: false, skipped: false };
228
+ }
229
+ };
230
+ /**
231
+ * Initialize the worker management system
232
+ */
233
+ async function initialize(options = {}) {
234
+ if (state.initialized) {
235
+ Logger.warn('Worker management system already initialized');
236
+ return;
237
+ }
238
+ const { enableResourceMonitoring = true, enableHealthMonitoring = true, enableAutoScaling = false, registerShutdownHandlers = true, resourceMonitoringInterval = 60000, } = options;
239
+ Logger.info('🚀 Initializing worker management system', {
240
+ enableResourceMonitoring,
241
+ enableHealthMonitoring,
242
+ enableAutoScaling,
243
+ registerShutdownHandlers,
244
+ });
245
+ try {
246
+ // 1. Register shutdown handlers first (so they're ready for any failures)
247
+ if (registerShutdownHandlers) {
248
+ WorkerShutdown.registerShutdownHandlers();
249
+ state.shutdownHandlersRegistered = true;
250
+ Logger.debug('✓ Shutdown handlers registered');
251
+ }
252
+ // 2. Start resource monitoring (important for scaling decisions)
253
+ state.resourceMonitoring = initializeResourceMonitoring(enableResourceMonitoring, resourceMonitoringInterval);
254
+ // 3. Enable health monitoring (depends on workers being created)
255
+ if (enableHealthMonitoring) {
256
+ // Health checks will start automatically when workers are created
257
+ state.healthMonitoring = true;
258
+ Logger.debug('✓ Health monitoring enabled');
259
+ }
260
+ // 4. Start auto-scaling if explicitly enabled
261
+ if (enableAutoScaling) {
262
+ // Auto-scaling will evaluate workers when they are created
263
+ state.autoScaling = true;
264
+ Logger.debug('✓ Auto-scaling enabled');
265
+ }
266
+ state.initialized = true;
267
+ state.initializedAt = new Date();
268
+ Logger.info('✅ Worker management system initialized successfully', {
269
+ timestamp: state.initializedAt.toISOString(),
270
+ });
271
+ }
272
+ catch (error) {
273
+ Logger.error('❌ Failed to initialize worker management system', error);
274
+ throw error;
275
+ }
276
+ }
277
+ async function autoStartPersistedWorkers() {
278
+ const envAutoStart = Env.getBool('WORKER_AUTO_START', false);
279
+ const shouldAutoStart = envAutoStart;
280
+ Logger.debug('Auto-start check', {
281
+ envAutoStart,
282
+ shouldAutoStart,
283
+ });
284
+ if (!shouldAutoStart) {
285
+ Logger.debug('Auto-start disabled - WORKER_AUTO_START is not true');
286
+ return;
287
+ }
288
+ try {
289
+ let candidates = await collectAutoStartTasks();
290
+ if (candidates.length === 0) {
291
+ candidates = await collectFileBackedAutoStartTasks();
292
+ }
293
+ const results = await Promise.all(candidates.map(async (record) => autoStartOneWorker(record)));
294
+ const startedCount = results.filter((item) => item.started).length;
295
+ const skippedCount = results.filter((item) => item.skipped).length;
296
+ Logger.info('Auto-started workers', {
297
+ total: candidates.length,
298
+ started: startedCount,
299
+ skipped: skippedCount,
300
+ source: candidates[0]?.source ?? 'none',
301
+ });
302
+ }
303
+ catch (error) {
304
+ const message = error instanceof Error ? error.message : String(error);
305
+ Logger.warn(`Auto-start persisted workers failed: ${message}`);
306
+ }
307
+ }
308
+ /**
309
+ * Check if worker management system is initialized
310
+ */
311
+ function isInitialized() {
312
+ return state.initialized;
313
+ }
314
+ /**
315
+ * Get initialization state
316
+ */
317
+ function getInitState() {
318
+ return { ...state };
319
+ }
320
+ /**
321
+ * Graceful shutdown of worker management system
322
+ * (convenience method that delegates to WorkerShutdown)
323
+ */
324
+ async function shutdown() {
325
+ if (!state.initialized) {
326
+ Logger.warn('Worker management system not initialized, nothing to shutdown');
327
+ return;
328
+ }
329
+ await WorkerShutdown.shutdown();
330
+ state.initialized = false;
331
+ state.resourceMonitoring = false;
332
+ state.healthMonitoring = false;
333
+ state.autoScaling = false;
334
+ }
335
+ // ============================================================================
336
+ // Public API (Sealed Namespace)
337
+ // ============================================================================
338
+ export const WorkerInit = Object.freeze({
339
+ /**
340
+ * Initialize the worker management system
341
+ */
342
+ initialize,
343
+ /**
344
+ * Check if worker management system is initialized
345
+ */
346
+ isInitialized,
347
+ /**
348
+ * Get initialization state
349
+ */
350
+ getInitState,
351
+ /**
352
+ * Graceful shutdown of worker management system
353
+ */
354
+ shutdown,
355
+ /**
356
+ * Start persisted workers after boot completes
357
+ */
358
+ autoStartPersistedWorkers,
359
+ });
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Worker Metrics Manager
3
+ * Time-series metrics persistence with Redis Sorted Sets
4
+ * Sealed namespace for immutability
5
+ */
6
+ import { type RedisConfig } from '../../../src/index.js';
7
+ export type MetricType = 'processed' | 'errors' | 'duration' | 'memory' | 'cpu' | 'queue-size' | 'active-jobs' | 'waiting-jobs' | 'delayed-jobs' | 'failed-jobs' | 'completed-jobs';
8
+ export type MetricGranularity = 'hourly' | 'daily' | 'monthly';
9
+ export type MetricPoint = {
10
+ timestamp: Date;
11
+ value: number;
12
+ metadata?: Record<string, unknown>;
13
+ };
14
+ export type MetricEntry = {
15
+ workerName: string;
16
+ metricType: MetricType;
17
+ granularity: MetricGranularity;
18
+ points: ReadonlyArray<MetricPoint>;
19
+ };
20
+ export type MetricQueryOptions = {
21
+ workerName: string;
22
+ metricType: MetricType;
23
+ granularity: MetricGranularity;
24
+ startDate?: Date;
25
+ endDate?: Date;
26
+ limit?: number;
27
+ };
28
+ export type AggregatedMetrics = {
29
+ workerName: string;
30
+ metricType: MetricType;
31
+ period: {
32
+ start: Date;
33
+ end: Date;
34
+ };
35
+ total: number;
36
+ average: number;
37
+ min: number;
38
+ max: number;
39
+ count: number;
40
+ };
41
+ export type WorkerHealthScore = {
42
+ workerName: string;
43
+ timestamp: Date;
44
+ score: number;
45
+ factors: {
46
+ errorRate: number;
47
+ throughput: number;
48
+ latency: number;
49
+ resourceUsage: number;
50
+ };
51
+ status: 'healthy' | 'degraded' | 'unhealthy';
52
+ };
53
+ /**
54
+ * Worker Metrics Manager - Sealed namespace
55
+ */
56
+ declare const WorkerMetrics: Readonly<{
57
+ /**
58
+ * Initialize the metrics manager with Redis connection
59
+ */
60
+ initialize(config: RedisConfig): void;
61
+ /**
62
+ * Record a metric point
63
+ */
64
+ record(workerName: string, metricType: MetricType, value: number, metadata?: Record<string, unknown>): Promise<void>;
65
+ /**
66
+ * Record multiple metrics at once (batch operation)
67
+ */
68
+ recordBatch(workerName: string, metrics: Array<{
69
+ metricType: MetricType;
70
+ value: number;
71
+ metadata?: Record<string, unknown>;
72
+ }>): Promise<void>;
73
+ /**
74
+ * Query metrics for a time range
75
+ */
76
+ query(options: MetricQueryOptions): Promise<MetricEntry>;
77
+ /**
78
+ * Get aggregated metrics for a time range
79
+ */
80
+ aggregate(options: MetricQueryOptions): Promise<AggregatedMetrics>;
81
+ aggregateBatch(optionsList: MetricQueryOptions[]): Promise<AggregatedMetrics[]>;
82
+ /**
83
+ * Calculate and store health score
84
+ */
85
+ calculateHealth(workerName: string): Promise<WorkerHealthScore>;
86
+ /**
87
+ * Get recent health scores
88
+ */
89
+ getHealthHistory(workerName: string, hours?: number): Promise<ReadonlyArray<WorkerHealthScore>>;
90
+ /**
91
+ * Get latest health score
92
+ */
93
+ getLatestHealth(workerName: string): Promise<WorkerHealthScore | null>;
94
+ /**
95
+ * Get metrics summary for all workers
96
+ */
97
+ getAllWorkersSummary(): Promise<ReadonlyArray<{
98
+ workerName: string;
99
+ health: WorkerHealthScore | null;
100
+ metrics: {
101
+ processed: number;
102
+ errors: number;
103
+ errorRate: number;
104
+ };
105
+ }>>;
106
+ /**
107
+ * Delete all metrics for a worker
108
+ */
109
+ deleteWorkerMetrics(workerName: string): Promise<void>;
110
+ /**
111
+ * Shutdown and disconnect
112
+ */
113
+ shutdown(): Promise<void>;
114
+ }>;
115
+ export { WorkerMetrics };
116
+ //# sourceMappingURL=WorkerMetrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerMetrics.d.ts","sourceRoot":"","sources":["../../../../packages/workers/src/WorkerMetrics.ts"],"names":[],"mappings":"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"}