@zintrust/core 0.1.42 → 0.1.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. package/app/Controllers/AuthController.d.ts +10 -0
  2. package/app/Controllers/AuthController.d.ts.map +1 -0
  3. package/app/Controllers/AuthController.js +201 -0
  4. package/app/Controllers/UserController.d.ts +9 -0
  5. package/app/Controllers/UserController.d.ts.map +1 -0
  6. package/app/Controllers/UserController.js +8 -0
  7. package/app/Controllers/UserQueryBuilderController.d.ts +16 -0
  8. package/app/Controllers/UserQueryBuilderController.d.ts.map +1 -0
  9. package/app/Controllers/UserQueryBuilderController.js +404 -0
  10. package/app/Middleware/ProfilerMiddleware.d.ts +12 -0
  11. package/app/Middleware/ProfilerMiddleware.d.ts.map +1 -0
  12. package/app/Middleware/ProfilerMiddleware.js +47 -0
  13. package/app/Middleware/index.d.ts +59 -0
  14. package/app/Middleware/index.d.ts.map +1 -0
  15. package/app/Middleware/index.js +215 -0
  16. package/app/Models/Post.d.ts +14 -0
  17. package/app/Models/Post.d.ts.map +1 -0
  18. package/app/Models/Post.js +27 -0
  19. package/app/Models/User.d.ts +14 -0
  20. package/app/Models/User.d.ts.map +1 -0
  21. package/app/Models/User.js +44 -0
  22. package/app/Schedules/JobTracking.d.ts +3 -0
  23. package/app/Schedules/JobTracking.d.ts.map +1 -0
  24. package/app/Schedules/JobTracking.js +13 -0
  25. package/app/Schedules/index.d.ts +2 -0
  26. package/app/Schedules/index.d.ts.map +1 -0
  27. package/app/Schedules/index.js +1 -0
  28. package/app/Toolkit/Broadcast/sendBroadcast.d.ts +6 -0
  29. package/app/Toolkit/Broadcast/sendBroadcast.d.ts.map +1 -0
  30. package/app/Toolkit/Broadcast/sendBroadcast.js +5 -0
  31. package/app/Toolkit/Mail/sendWelcomeEmail.d.ts +6 -0
  32. package/app/Toolkit/Mail/sendWelcomeEmail.d.ts.map +1 -0
  33. package/app/Toolkit/Mail/sendWelcomeEmail.js +20 -0
  34. package/app/Toolkit/Notification/sendSlackNotification.d.ts +8 -0
  35. package/app/Toolkit/Notification/sendSlackNotification.d.ts.map +1 -0
  36. package/app/Toolkit/Notification/sendSlackNotification.js +5 -0
  37. package/app/Toolkit/Notification/sendSms.d.ts +6 -0
  38. package/app/Toolkit/Notification/sendSms.d.ts.map +1 -0
  39. package/app/Toolkit/Notification/sendSms.js +5 -0
  40. package/app/Types/controller.d.ts +42 -0
  41. package/app/Types/controller.d.ts.map +1 -0
  42. package/app/Types/controller.js +1 -0
  43. package/config/broadcast.d.ts +38 -0
  44. package/config/broadcast.d.ts.map +1 -0
  45. package/config/broadcast.js +37 -0
  46. package/config/cache.d.ts +40 -0
  47. package/config/cache.d.ts.map +1 -0
  48. package/config/cache.js +39 -0
  49. package/config/database.d.ts +58 -0
  50. package/config/database.d.ts.map +1 -0
  51. package/config/database.js +65 -0
  52. package/config/mail.d.ts +51 -0
  53. package/config/mail.d.ts.map +1 -0
  54. package/config/mail.js +69 -0
  55. package/config/middleware.d.ts +11 -0
  56. package/config/middleware.d.ts.map +1 -0
  57. package/config/middleware.js +30 -0
  58. package/config/notification.d.ts +33 -0
  59. package/config/notification.d.ts.map +1 -0
  60. package/config/notification.js +33 -0
  61. package/config/queue.d.ts +55 -0
  62. package/config/queue.d.ts.map +1 -0
  63. package/config/queue.js +87 -0
  64. package/config/storage.d.ts +59 -0
  65. package/config/storage.d.ts.map +1 -0
  66. package/config/storage.js +59 -0
  67. package/config/workers.d.ts +54 -0
  68. package/config/workers.d.ts.map +1 -0
  69. package/config/workers.js +83 -0
  70. package/package.json +11 -5
  71. package/packages/cloudflare-d1-proxy/src/index.d.ts +48 -0
  72. package/packages/cloudflare-d1-proxy/src/index.d.ts.map +1 -0
  73. package/packages/cloudflare-d1-proxy/src/index.js +387 -0
  74. package/packages/cloudflare-kv-proxy/src/index.d.ts +44 -0
  75. package/packages/cloudflare-kv-proxy/src/index.d.ts.map +1 -0
  76. package/packages/cloudflare-kv-proxy/src/index.js +325 -0
  77. package/packages/queue-monitor/src/QueueMonitoringService.d.ts +35 -0
  78. package/packages/queue-monitor/src/QueueMonitoringService.d.ts.map +1 -0
  79. package/packages/queue-monitor/src/QueueMonitoringService.js +194 -0
  80. package/packages/queue-monitor/src/connection.d.ts +3 -0
  81. package/packages/queue-monitor/src/connection.d.ts.map +1 -0
  82. package/packages/queue-monitor/src/connection.js +1 -0
  83. package/packages/queue-monitor/src/dashboard-ui.d.ts +7 -0
  84. package/packages/queue-monitor/src/dashboard-ui.d.ts.map +1 -0
  85. package/packages/queue-monitor/src/dashboard-ui.js +997 -0
  86. package/packages/queue-monitor/src/driver.d.ts +15 -0
  87. package/packages/queue-monitor/src/driver.d.ts.map +1 -0
  88. package/packages/queue-monitor/src/driver.js +115 -0
  89. package/packages/queue-monitor/src/index.d.ts +71 -0
  90. package/packages/queue-monitor/src/index.d.ts.map +1 -0
  91. package/packages/queue-monitor/src/index.js +296 -0
  92. package/packages/queue-monitor/src/metrics.d.ts +27 -0
  93. package/packages/queue-monitor/src/metrics.d.ts.map +1 -0
  94. package/packages/queue-monitor/src/metrics.js +92 -0
  95. package/packages/queue-monitor/src/worker.d.ts +8 -0
  96. package/packages/queue-monitor/src/worker.d.ts.map +1 -0
  97. package/packages/queue-monitor/src/worker.js +35 -0
  98. package/packages/queue-redis/src/BullMQRedisQueue.d.ts +26 -0
  99. package/packages/queue-redis/src/BullMQRedisQueue.d.ts.map +1 -0
  100. package/packages/queue-redis/src/BullMQRedisQueue.js +463 -0
  101. package/packages/queue-redis/src/HttpQueueDriver.d.ts +18 -0
  102. package/packages/queue-redis/src/HttpQueueDriver.d.ts.map +1 -0
  103. package/packages/queue-redis/src/HttpQueueDriver.js +249 -0
  104. package/packages/queue-redis/src/QueueHttpGateway.d.ts +16 -0
  105. package/packages/queue-redis/src/QueueHttpGateway.d.ts.map +1 -0
  106. package/packages/queue-redis/src/QueueHttpGateway.js +217 -0
  107. package/packages/queue-redis/src/RedisPublishClient.d.ts +14 -0
  108. package/packages/queue-redis/src/RedisPublishClient.d.ts.map +1 -0
  109. package/packages/queue-redis/src/RedisPublishClient.js +251 -0
  110. package/packages/queue-redis/src/index.d.ts +12 -0
  111. package/packages/queue-redis/src/index.d.ts.map +1 -0
  112. package/packages/queue-redis/src/index.js +10 -0
  113. package/packages/queue-redis/src/register.d.ts +6 -0
  114. package/packages/queue-redis/src/register.d.ts.map +1 -0
  115. package/packages/queue-redis/src/register.js +21 -0
  116. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts +11 -0
  117. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts.map +1 -0
  118. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.js +32 -0
  119. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts +11 -0
  120. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts.map +1 -0
  121. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.js +46 -0
  122. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts +7 -0
  123. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts.map +1 -0
  124. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.js +44 -0
  125. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts +7 -0
  126. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts.map +1 -0
  127. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.js +104 -0
  128. package/packages/workers/src/AnomalyDetection.d.ts +107 -0
  129. package/packages/workers/src/AnomalyDetection.d.ts.map +1 -0
  130. package/packages/workers/src/AnomalyDetection.js +329 -0
  131. package/packages/workers/src/AutoScaler.d.ts +128 -0
  132. package/packages/workers/src/AutoScaler.d.ts.map +1 -0
  133. package/packages/workers/src/AutoScaler.js +425 -0
  134. package/packages/workers/src/BroadcastWorker.d.ts +24 -0
  135. package/packages/workers/src/BroadcastWorker.d.ts.map +1 -0
  136. package/packages/workers/src/BroadcastWorker.js +24 -0
  137. package/packages/workers/src/CanaryController.d.ts +104 -0
  138. package/packages/workers/src/CanaryController.d.ts.map +1 -0
  139. package/packages/workers/src/CanaryController.js +424 -0
  140. package/packages/workers/src/ChaosEngineering.d.ts +80 -0
  141. package/packages/workers/src/ChaosEngineering.d.ts.map +1 -0
  142. package/packages/workers/src/ChaosEngineering.js +229 -0
  143. package/packages/workers/src/CircuitBreaker.d.ts +107 -0
  144. package/packages/workers/src/CircuitBreaker.d.ts.map +1 -0
  145. package/packages/workers/src/CircuitBreaker.js +374 -0
  146. package/packages/workers/src/ClusterLock.d.ts +91 -0
  147. package/packages/workers/src/ClusterLock.d.ts.map +1 -0
  148. package/packages/workers/src/ClusterLock.js +397 -0
  149. package/packages/workers/src/ComplianceManager.d.ts +178 -0
  150. package/packages/workers/src/ComplianceManager.d.ts.map +1 -0
  151. package/packages/workers/src/ComplianceManager.js +556 -0
  152. package/packages/workers/src/DatacenterOrchestrator.d.ts +134 -0
  153. package/packages/workers/src/DatacenterOrchestrator.d.ts.map +1 -0
  154. package/packages/workers/src/DatacenterOrchestrator.js +404 -0
  155. package/packages/workers/src/DeadLetterQueue.d.ts +123 -0
  156. package/packages/workers/src/DeadLetterQueue.d.ts.map +1 -0
  157. package/packages/workers/src/DeadLetterQueue.js +544 -0
  158. package/packages/workers/src/HealthMonitor.d.ts +43 -0
  159. package/packages/workers/src/HealthMonitor.d.ts.map +1 -0
  160. package/packages/workers/src/HealthMonitor.js +312 -0
  161. package/packages/workers/src/MultiQueueWorker.d.ts +90 -0
  162. package/packages/workers/src/MultiQueueWorker.d.ts.map +1 -0
  163. package/packages/workers/src/MultiQueueWorker.js +282 -0
  164. package/packages/workers/src/NotificationWorker.d.ts +24 -0
  165. package/packages/workers/src/NotificationWorker.d.ts.map +1 -0
  166. package/packages/workers/src/NotificationWorker.js +23 -0
  167. package/packages/workers/src/Observability.d.ts +154 -0
  168. package/packages/workers/src/Observability.d.ts.map +1 -0
  169. package/packages/workers/src/Observability.js +538 -0
  170. package/packages/workers/src/PluginManager.d.ts +124 -0
  171. package/packages/workers/src/PluginManager.d.ts.map +1 -0
  172. package/packages/workers/src/PluginManager.js +392 -0
  173. package/packages/workers/src/PriorityQueue.d.ts +118 -0
  174. package/packages/workers/src/PriorityQueue.d.ts.map +1 -0
  175. package/packages/workers/src/PriorityQueue.js +276 -0
  176. package/packages/workers/src/ResourceMonitor.d.ts +165 -0
  177. package/packages/workers/src/ResourceMonitor.d.ts.map +1 -0
  178. package/packages/workers/src/ResourceMonitor.js +632 -0
  179. package/packages/workers/src/SLAMonitor.d.ts +111 -0
  180. package/packages/workers/src/SLAMonitor.d.ts.map +1 -0
  181. package/packages/workers/src/SLAMonitor.js +274 -0
  182. package/packages/workers/src/WorkerFactory.d.ts +218 -0
  183. package/packages/workers/src/WorkerFactory.d.ts.map +1 -0
  184. package/packages/workers/src/WorkerFactory.js +2253 -0
  185. package/packages/workers/src/WorkerInit.d.ts +86 -0
  186. package/packages/workers/src/WorkerInit.d.ts.map +1 -0
  187. package/packages/workers/src/WorkerInit.js +307 -0
  188. package/packages/workers/src/WorkerMetrics.d.ts +116 -0
  189. package/packages/workers/src/WorkerMetrics.d.ts.map +1 -0
  190. package/packages/workers/src/WorkerMetrics.js +570 -0
  191. package/packages/workers/src/WorkerRegistry.d.ts +152 -0
  192. package/packages/workers/src/WorkerRegistry.d.ts.map +1 -0
  193. package/packages/workers/src/WorkerRegistry.js +396 -0
  194. package/packages/workers/src/WorkerShutdown.d.ts +70 -0
  195. package/packages/workers/src/WorkerShutdown.d.ts.map +1 -0
  196. package/packages/workers/src/WorkerShutdown.js +185 -0
  197. package/packages/workers/src/WorkerVersioning.d.ts +108 -0
  198. package/packages/workers/src/WorkerVersioning.d.ts.map +1 -0
  199. package/packages/workers/src/WorkerVersioning.js +300 -0
  200. package/packages/workers/src/config/workerConfig.d.ts +5 -0
  201. package/packages/workers/src/config/workerConfig.d.ts.map +1 -0
  202. package/packages/workers/src/config/workerConfig.js +25 -0
  203. package/packages/workers/src/createQueueWorker.d.ts +26 -0
  204. package/packages/workers/src/createQueueWorker.d.ts.map +1 -0
  205. package/packages/workers/src/createQueueWorker.js +367 -0
  206. package/packages/workers/src/dashboard/index.d.ts +2 -0
  207. package/packages/workers/src/dashboard/index.d.ts.map +1 -0
  208. package/packages/workers/src/dashboard/index.js +1 -0
  209. package/packages/workers/src/dashboard/types.d.ts +123 -0
  210. package/packages/workers/src/dashboard/types.d.ts.map +1 -0
  211. package/packages/workers/src/dashboard/types.js +1 -0
  212. package/packages/workers/src/dashboard/workers-api.d.ts +5 -0
  213. package/packages/workers/src/dashboard/workers-api.d.ts.map +1 -0
  214. package/packages/workers/src/dashboard/workers-api.js +738 -0
  215. package/packages/workers/src/helper/index.d.ts +6 -0
  216. package/packages/workers/src/helper/index.d.ts.map +1 -0
  217. package/packages/workers/src/helper/index.js +10 -0
  218. package/packages/workers/src/http/WorkerApiController.d.ts +39 -0
  219. package/packages/workers/src/http/WorkerApiController.d.ts.map +1 -0
  220. package/packages/workers/src/http/WorkerApiController.js +313 -0
  221. package/packages/workers/src/http/WorkerController.d.ts +375 -0
  222. package/packages/workers/src/http/WorkerController.d.ts.map +1 -0
  223. package/packages/workers/src/http/WorkerController.js +1454 -0
  224. package/packages/workers/src/http/WorkerMonitoringService.d.ts +12 -0
  225. package/packages/workers/src/http/WorkerMonitoringService.d.ts.map +1 -0
  226. package/packages/workers/src/http/WorkerMonitoringService.js +89 -0
  227. package/packages/workers/src/http/middleware/CustomValidation.d.ts +93 -0
  228. package/packages/workers/src/http/middleware/CustomValidation.d.ts.map +1 -0
  229. package/packages/workers/src/http/middleware/CustomValidation.js +270 -0
  230. package/packages/workers/src/http/middleware/DatacenterValidator.d.ts +4 -0
  231. package/packages/workers/src/http/middleware/DatacenterValidator.d.ts.map +1 -0
  232. package/packages/workers/src/http/middleware/DatacenterValidator.js +94 -0
  233. package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts +8 -0
  234. package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts.map +1 -0
  235. package/packages/workers/src/http/middleware/EditWorkerValidation.js +56 -0
  236. package/packages/workers/src/http/middleware/FeaturesValidator.d.ts +4 -0
  237. package/packages/workers/src/http/middleware/FeaturesValidator.d.ts.map +1 -0
  238. package/packages/workers/src/http/middleware/FeaturesValidator.js +60 -0
  239. package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts +32 -0
  240. package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts.map +1 -0
  241. package/packages/workers/src/http/middleware/InfrastructureValidator.js +226 -0
  242. package/packages/workers/src/http/middleware/OptionsValidator.d.ts +4 -0
  243. package/packages/workers/src/http/middleware/OptionsValidator.d.ts.map +1 -0
  244. package/packages/workers/src/http/middleware/OptionsValidator.js +112 -0
  245. package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts +8 -0
  246. package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts.map +1 -0
  247. package/packages/workers/src/http/middleware/PayloadSanitizer.js +42 -0
  248. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts +4 -0
  249. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts.map +1 -0
  250. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.js +140 -0
  251. package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts +4 -0
  252. package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts.map +1 -0
  253. package/packages/workers/src/http/middleware/QueueNameSanitizer.js +45 -0
  254. package/packages/workers/src/http/middleware/ValidateDriver.d.ts +8 -0
  255. package/packages/workers/src/http/middleware/ValidateDriver.d.ts.map +1 -0
  256. package/packages/workers/src/http/middleware/ValidateDriver.js +20 -0
  257. package/packages/workers/src/http/middleware/VersionSanitizer.d.ts +4 -0
  258. package/packages/workers/src/http/middleware/VersionSanitizer.d.ts.map +1 -0
  259. package/packages/workers/src/http/middleware/VersionSanitizer.js +25 -0
  260. package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts +4 -0
  261. package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts.map +1 -0
  262. package/packages/workers/src/http/middleware/WorkerNameSanitizer.js +46 -0
  263. package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts +28 -0
  264. package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts.map +1 -0
  265. package/packages/workers/src/http/middleware/WorkerValidationChain.js +186 -0
  266. package/packages/workers/src/index.d.ts +47 -0
  267. package/packages/workers/src/index.d.ts.map +1 -0
  268. package/packages/workers/src/index.js +48 -0
  269. package/packages/workers/src/routes/workers.d.ts +13 -0
  270. package/packages/workers/src/routes/workers.d.ts.map +1 -0
  271. package/packages/workers/src/routes/workers.js +126 -0
  272. package/packages/workers/src/storage/WorkerStore.d.ts +52 -0
  273. package/packages/workers/src/storage/WorkerStore.d.ts.map +1 -0
  274. package/packages/workers/src/storage/WorkerStore.js +259 -0
  275. package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts +47 -0
  276. package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts.map +1 -0
  277. package/packages/workers/src/telemetry/api/TelemetryAPI.js +219 -0
  278. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts +18 -0
  279. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts.map +1 -0
  280. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.js +140 -0
  281. package/packages/workers/src/telemetry/components/AlertPanel.d.ts +2 -0
  282. package/packages/workers/src/telemetry/components/AlertPanel.d.ts.map +1 -0
  283. package/packages/workers/src/telemetry/components/AlertPanel.js +13 -0
  284. package/packages/workers/src/telemetry/components/CostTracking.d.ts +2 -0
  285. package/packages/workers/src/telemetry/components/CostTracking.d.ts.map +1 -0
  286. package/packages/workers/src/telemetry/components/CostTracking.js +14 -0
  287. package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts +2 -0
  288. package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts.map +1 -0
  289. package/packages/workers/src/telemetry/components/ResourceUsageChart.js +11 -0
  290. package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts +2 -0
  291. package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts.map +1 -0
  292. package/packages/workers/src/telemetry/components/WorkerHealthChart.js +11 -0
  293. package/packages/workers/src/telemetry/index.d.ts +16 -0
  294. package/packages/workers/src/telemetry/index.d.ts.map +1 -0
  295. package/packages/workers/src/telemetry/index.js +60 -0
  296. package/packages/workers/src/telemetry/routes/dashboard.d.ts +7 -0
  297. package/packages/workers/src/telemetry/routes/dashboard.d.ts.map +1 -0
  298. package/packages/workers/src/telemetry/routes/dashboard.js +608 -0
  299. package/packages/workers/src/type.d.ts +77 -0
  300. package/packages/workers/src/type.d.ts.map +1 -0
  301. package/packages/workers/src/type.js +1 -0
  302. package/packages/workers/src/ui/router/EmbeddedAssets.d.ts +5 -0
  303. package/packages/workers/src/ui/router/EmbeddedAssets.d.ts.map +1 -0
  304. package/packages/workers/src/ui/router/EmbeddedAssets.js +13 -0
  305. package/packages/workers/src/ui/router/ui.d.ts +4 -0
  306. package/packages/workers/src/ui/router/ui.d.ts.map +1 -0
  307. package/packages/workers/src/ui/router/ui.js +208 -0
  308. package/packages/workers/src/ui/types/worker-ui.d.ts +230 -0
  309. package/packages/workers/src/ui/types/worker-ui.d.ts.map +1 -0
  310. package/packages/workers/src/ui/types/worker-ui.js +5 -0
  311. package/routes/api.d.ts +7 -0
  312. package/routes/api.d.ts.map +1 -0
  313. package/routes/api.js +129 -0
  314. package/routes/broadcast.d.ts +9 -0
  315. package/routes/broadcast.d.ts.map +1 -0
  316. package/routes/broadcast.js +27 -0
  317. package/routes/storage.d.ts +4 -0
  318. package/routes/storage.d.ts.map +1 -0
  319. package/routes/storage.js +35 -0
  320. package/src/cache/Cache.d.ts.map +1 -1
  321. package/src/cache/Cache.js +40 -8
  322. package/src/cache/drivers/KVRemoteDriver.d.ts +1 -1
  323. package/src/cache/drivers/KVRemoteDriver.d.ts.map +1 -1
  324. package/src/cache/drivers/KVRemoteDriver.js +259 -44
  325. package/src/cache/drivers/MemoryDriver.d.ts.map +1 -1
  326. package/src/cache/drivers/MemoryDriver.js +10 -2
  327. package/src/cache/drivers/RedisDriver.d.ts.map +1 -1
  328. package/src/cache/drivers/RedisDriver.js +256 -33
  329. package/src/cli/commands/InitContainerCommand.js +10 -10
  330. package/src/cli/commands/NewCommand.d.ts.map +1 -1
  331. package/src/cli/commands/NewCommand.js +33 -0
  332. package/src/cli/commands/StartCommand.d.ts.map +1 -1
  333. package/src/cli/commands/StartCommand.js +23 -1
  334. package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
  335. package/src/cli/scaffolding/ProjectScaffolder.js +65 -73
  336. package/src/cli/utils/DistPackager.d.ts.map +1 -1
  337. package/src/cli/utils/DistPackager.js +25 -0
  338. package/src/cli/utils/EnvFileLoader.d.ts +1 -0
  339. package/src/cli/utils/EnvFileLoader.d.ts.map +1 -1
  340. package/src/cli/utils/EnvFileLoader.js +14 -0
  341. package/src/common/RemoteSignedJson.d.ts.map +1 -1
  342. package/src/common/RemoteSignedJson.js +9 -2
  343. package/src/config/cache.js +1 -1
  344. package/src/config/env.d.ts +7 -0
  345. package/src/config/env.d.ts.map +1 -1
  346. package/src/config/env.js +8 -0
  347. package/src/config/queue.js +1 -1
  348. package/src/functions/cloudflare.d.ts.map +1 -1
  349. package/src/functions/cloudflare.js +4 -2
  350. package/src/index.js +3 -3
  351. package/src/middleware/JwtAuthMiddleware.d.ts.map +1 -1
  352. package/src/middleware/JwtAuthMiddleware.js +11 -5
  353. package/src/runtime/RuntimeAdapter.d.ts.map +1 -1
  354. package/src/runtime/RuntimeAdapter.js +30 -12
  355. package/src/runtime/adapters/CloudflareAdapter.d.ts.map +1 -1
  356. package/src/runtime/adapters/CloudflareAdapter.js +15 -4
  357. package/src/scheduler/Schedule.js +1 -1
  358. package/src/scheduler/leader/SchedulerLeader.js +1 -1
  359. package/src/schedules/job-tracking-cleanup.js +1 -1
  360. package/src/security/TokenRevocation.d.ts +19 -2
  361. package/src/security/TokenRevocation.d.ts.map +1 -1
  362. package/src/security/TokenRevocation.js +558 -30
  363. package/src/templates/project/basic/app/Controllers/AuthController.ts.tpl +11 -3
  364. package/src/templates/project/basic/config/middleware.ts.tpl +23 -22
  365. package/src/templates/project/basic/wrangler.jsonc.tpl +28 -0
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Worker Registry
3
+ * Central registry for all background workers with lifecycle management
4
+ * Sealed namespace for immutability
5
+ */
6
+ import { type WorkerConfig, type WorkerStatus } from '../../../src/index.js';
7
+ export type WorkerMetadata = {
8
+ name: string;
9
+ status: WorkerStatus;
10
+ version: string;
11
+ region: string;
12
+ queueName: string;
13
+ concurrency: number;
14
+ activeStatus?: boolean;
15
+ startedAt: Date | null;
16
+ stoppedAt: Date | null;
17
+ lastProcessedAt: Date | null;
18
+ restartCount: number;
19
+ processedCount: number;
20
+ errorCount: number;
21
+ lockKey: string | null;
22
+ priority: number;
23
+ memoryUsage: number;
24
+ cpuUsage: number;
25
+ circuitState: 'closed' | 'open' | 'half-open';
26
+ queues: ReadonlyArray<string>;
27
+ plugins: ReadonlyArray<string>;
28
+ datacenter: string;
29
+ canaryPercentage: number;
30
+ config: Partial<WorkerConfig>;
31
+ };
32
+ export type WorkerInstance = {
33
+ metadata: WorkerMetadata;
34
+ instance: unknown;
35
+ start: () => void;
36
+ stop: () => Promise<void>;
37
+ drain: () => Promise<void>;
38
+ sleep: () => Promise<void>;
39
+ wakeup: () => void;
40
+ getStatus: () => WorkerStatus;
41
+ getHealth: () => 'green' | 'yellow' | 'red';
42
+ };
43
+ export type RegisterWorkerOptions = {
44
+ name: string;
45
+ config: Partial<WorkerConfig>;
46
+ activeStatus?: boolean;
47
+ version?: string;
48
+ region?: string;
49
+ queues?: ReadonlyArray<string>;
50
+ factory: () => Promise<WorkerInstance>;
51
+ };
52
+ export type WorkerRegistrySnapshot = {
53
+ timestamp: Date;
54
+ totalWorkers: number;
55
+ runningWorkers: number;
56
+ stoppedWorkers: number;
57
+ sleepingWorkers: number;
58
+ unhealthyWorkers: number;
59
+ workers: ReadonlyArray<{
60
+ name: string;
61
+ status: WorkerStatus;
62
+ health: 'green' | 'yellow' | 'red';
63
+ uptime: number | null;
64
+ processedCount: number;
65
+ errorCount: number;
66
+ }>;
67
+ };
68
+ /**
69
+ * Worker Registry - Sealed namespace
70
+ */
71
+ export declare const WorkerRegistry: Readonly<{
72
+ /**
73
+ * Register a worker with the registry
74
+ */
75
+ register(options: RegisterWorkerOptions): void;
76
+ /**
77
+ * Start a worker
78
+ */
79
+ start(name: string, version?: string): Promise<void>;
80
+ /**
81
+ * Stop a worker
82
+ */
83
+ stop(name: string): Promise<void>;
84
+ /**
85
+ * Restart a worker (stop + start)
86
+ */
87
+ restart(name: string): Promise<void>;
88
+ /**
89
+ * Sleep a worker (pause processing but keep lock)
90
+ */
91
+ sleep(name: string): Promise<void>;
92
+ /**
93
+ * Wakeup a worker (resume from sleep)
94
+ */
95
+ wakeup(name: string): Promise<void>;
96
+ /**
97
+ * Get worker status
98
+ */
99
+ status(name: string): WorkerMetadata | null;
100
+ /**
101
+ * List all registered workers
102
+ */
103
+ list(): ReadonlyArray<string>;
104
+ /**
105
+ * Update active status for a registered worker
106
+ */
107
+ setActiveStatus(name: string, activeStatus: boolean): void;
108
+ /**
109
+ * List all running workers
110
+ */
111
+ listRunning(): ReadonlyArray<string>;
112
+ /**
113
+ * Stop all running workers
114
+ */
115
+ stopAll(): Promise<void>;
116
+ /**
117
+ * Get worker metrics
118
+ */
119
+ getMetrics(name: string): Pick<WorkerMetadata, "processedCount" | "errorCount" | "memoryUsage" | "cpuUsage"> | null;
120
+ /**
121
+ * Get worker health status
122
+ */
123
+ getHealth(name: string): "green" | "yellow" | "red" | null;
124
+ /**
125
+ * Get registry snapshot
126
+ */
127
+ getSnapshot(): WorkerRegistrySnapshot;
128
+ /**
129
+ * Get worker topology (cluster view)
130
+ */
131
+ getTopology(): Record<string, {
132
+ workers: string[];
133
+ count: number;
134
+ }>;
135
+ /**
136
+ * Unregister a worker and clear its instance
137
+ */
138
+ unregister(name: string): void;
139
+ /**
140
+ * Check if worker is registered
141
+ */
142
+ isRegistered(name: string): boolean;
143
+ /**
144
+ * Check if worker is running
145
+ */
146
+ isRunning(name: string): boolean;
147
+ /**
148
+ * Get worker instance (internal use)
149
+ */
150
+ getInstance(name: string): WorkerInstance | null;
151
+ }>;
152
+ //# sourceMappingURL=WorkerRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerRegistry.d.ts","sourceRoot":"","sources":["../../../../packages/workers/src/WorkerRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,396 @@
1
+ /**
2
+ * Worker Registry
3
+ * Central registry for all background workers with lifecycle management
4
+ * Sealed namespace for immutability
5
+ */
6
+ import { ErrorFactory, Logger } from '../../../src/index.js';
7
+ import { AnomalyDetection } from './AnomalyDetection.js';
8
+ // Internal storage
9
+ const workers = new Map();
10
+ const registrations = new Map();
11
+ // Cleanup configuration
12
+ const STOPPED_WORKER_CLEANUP_DELAY = 5 * 60 * 1000; // 5 minutes
13
+ const cleanupTimers = new Map();
14
+ const isUnrefableTimer = (value) => {
15
+ if (typeof value !== 'object' || value === null)
16
+ return false;
17
+ return 'unref' in value && typeof value.unref === 'function';
18
+ };
19
+ /**
20
+ * Helper: Schedule cleanup of stopped worker
21
+ */
22
+ const scheduleStoppedWorkerCleanup = (name) => {
23
+ // Clear existing timer if any
24
+ const existingTimer = cleanupTimers.get(name);
25
+ if (existingTimer) {
26
+ clearTimeout(existingTimer);
27
+ }
28
+ // Schedule new cleanup with proper cleanup handling
29
+ // eslint-disable-next-line no-restricted-syntax
30
+ const timer = setTimeout(() => {
31
+ try {
32
+ const instance = workers.get(name);
33
+ if (instance && instance.metadata.status === 'stopped') {
34
+ Logger.info(`Auto-cleaning up stopped worker: ${name}`);
35
+ workers.delete(name);
36
+ registrations.delete(name);
37
+ }
38
+ }
39
+ catch (error) {
40
+ Logger.error(`Error during auto-cleanup of worker ${name}`, error);
41
+ }
42
+ finally {
43
+ cleanupTimers.delete(name);
44
+ }
45
+ }, STOPPED_WORKER_CLEANUP_DELAY);
46
+ if (isUnrefableTimer(timer)) {
47
+ timer.unref();
48
+ }
49
+ cleanupTimers.set(name, timer);
50
+ };
51
+ /**
52
+ * Helper: Cancel cleanup timer
53
+ */
54
+ const cancelCleanupTimer = (name) => {
55
+ const timer = cleanupTimers.get(name);
56
+ if (timer) {
57
+ clearTimeout(timer);
58
+ cleanupTimers.delete(name);
59
+ }
60
+ };
61
+ /**
62
+ * Helper: Calculate uptime in seconds
63
+ */
64
+ const calculateUptime = (startedAt) => {
65
+ if (!startedAt)
66
+ return null;
67
+ return Math.floor((Date.now() - startedAt.getTime()) / 1000);
68
+ };
69
+ /**
70
+ * Helper: Validate worker name
71
+ */
72
+ const validateWorkerName = (name) => {
73
+ if (!name || typeof name !== 'string') {
74
+ throw ErrorFactory.createWorkerError('Worker name must be a non-empty string');
75
+ }
76
+ if (!/^[a-z0-9-]+$/.test(name)) {
77
+ throw ErrorFactory.createWorkerError('Worker name must contain only lowercase letters, numbers, and hyphens');
78
+ }
79
+ };
80
+ /**
81
+ * Worker Registry - Sealed namespace
82
+ */
83
+ export const WorkerRegistry = Object.freeze({
84
+ /**
85
+ * Register a worker with the registry
86
+ */
87
+ register(options) {
88
+ validateWorkerName(options.name);
89
+ if (registrations.has(options.name)) {
90
+ Logger.warn(`Worker "${options.name}" is already registered. Skipping.`);
91
+ return;
92
+ }
93
+ registrations.set(options.name, options);
94
+ Logger.info(`Worker "${options.name}" registered successfully`);
95
+ },
96
+ /**
97
+ * Start a worker
98
+ */
99
+ async start(name, version) {
100
+ validateWorkerName(name);
101
+ const registration = registrations.get(name);
102
+ if (!registration) {
103
+ throw ErrorFactory.createWorkerError(`Worker "${name}" is not registered`);
104
+ }
105
+ if (registration.activeStatus === false) {
106
+ throw ErrorFactory.createWorkerError(`Worker "${name}" is inactive`);
107
+ }
108
+ if (workers.has(name)) {
109
+ const existing = workers.get(name);
110
+ if (existing?.metadata.status === 'running') {
111
+ Logger.warn(`Worker "${name}" is already running`);
112
+ return;
113
+ }
114
+ }
115
+ const versionSuffix = version === undefined ? '' : ` version ${version}`;
116
+ Logger.info(`Starting worker "${name}"${versionSuffix}...`);
117
+ try {
118
+ const instance = await registration.factory();
119
+ instance.metadata.status = 'starting';
120
+ instance.metadata.version = version ?? '1.0.0';
121
+ // Cancel any pending cleanup timer when worker restarts
122
+ cancelCleanupTimer(name);
123
+ workers.set(name, instance);
124
+ instance.start();
125
+ instance.metadata.status = 'running';
126
+ instance.metadata.startedAt = new Date();
127
+ instance.metadata.stoppedAt = null;
128
+ Logger.info(`Worker "${name}" started successfully`);
129
+ }
130
+ catch (error) {
131
+ Logger.error(`Failed to start worker "${name}"`, error);
132
+ throw error;
133
+ }
134
+ },
135
+ /**
136
+ * Stop a worker
137
+ */
138
+ async stop(name) {
139
+ validateWorkerName(name);
140
+ const instance = workers.get(name);
141
+ if (!instance) {
142
+ Logger.warn(`Worker "${name}" is not running`);
143
+ return;
144
+ }
145
+ if (instance.metadata.status === 'stopped') {
146
+ Logger.warn(`Worker "${name}" is already stopped`);
147
+ return;
148
+ }
149
+ Logger.info(`Stopping worker "${name}"...`);
150
+ try {
151
+ instance.metadata.status = 'stopping';
152
+ await instance.stop();
153
+ instance.metadata.status = 'stopped';
154
+ instance.metadata.stoppedAt = new Date();
155
+ AnomalyDetection.cleanup(name);
156
+ // Schedule automatic cleanup for stopped worker
157
+ scheduleStoppedWorkerCleanup(name);
158
+ Logger.info(`Worker "${name}" stopped successfully`);
159
+ }
160
+ catch (error) {
161
+ Logger.error(`Failed to stop worker "${name}"`, error);
162
+ throw error;
163
+ }
164
+ },
165
+ /**
166
+ * Restart a worker (stop + start)
167
+ */
168
+ async restart(name) {
169
+ validateWorkerName(name);
170
+ const instance = workers.get(name);
171
+ if (instance) {
172
+ await WorkerRegistry.stop(name);
173
+ instance.metadata.restartCount += 1;
174
+ }
175
+ await WorkerRegistry.start(name);
176
+ Logger.info(`Worker "${name}" restarted successfully`);
177
+ },
178
+ /**
179
+ * Sleep a worker (pause processing but keep lock)
180
+ */
181
+ async sleep(name) {
182
+ validateWorkerName(name);
183
+ const instance = workers.get(name);
184
+ if (!instance) {
185
+ throw ErrorFactory.createWorkerError(`Worker "${name}" is not running`);
186
+ }
187
+ if (instance.metadata.status === 'sleeping') {
188
+ Logger.warn(`Worker "${name}" is already sleeping`);
189
+ return;
190
+ }
191
+ Logger.info(`Putting worker "${name}" to sleep...`);
192
+ try {
193
+ await instance.sleep();
194
+ instance.metadata.status = 'sleeping';
195
+ Logger.info(`Worker "${name}" is now sleeping`);
196
+ }
197
+ catch (error) {
198
+ Logger.error(`Failed to sleep worker "${name}"`, error);
199
+ throw error;
200
+ }
201
+ },
202
+ /**
203
+ * Wakeup a worker (resume from sleep)
204
+ */
205
+ async wakeup(name) {
206
+ validateWorkerName(name);
207
+ const instance = workers.get(name);
208
+ if (!instance) {
209
+ throw ErrorFactory.createWorkerError(`Worker "${name}" is not found`);
210
+ }
211
+ if (instance.metadata.status !== 'sleeping') {
212
+ Logger.warn(`Worker "${name}" is not sleeping (status: ${instance.metadata.status})`);
213
+ return;
214
+ }
215
+ Logger.info(`Waking up worker "${name}"...`);
216
+ try {
217
+ instance.wakeup();
218
+ instance.metadata.status = 'running';
219
+ Logger.info(`Worker "${name}" is now awake and running`);
220
+ }
221
+ catch (error) {
222
+ Logger.error(`Failed to wake up worker "${name}"`, error);
223
+ throw error;
224
+ }
225
+ },
226
+ /**
227
+ * Get worker status
228
+ */
229
+ status(name) {
230
+ validateWorkerName(name);
231
+ const instance = workers.get(name);
232
+ if (!instance) {
233
+ return null;
234
+ }
235
+ return { ...instance.metadata };
236
+ },
237
+ /**
238
+ * List all registered workers
239
+ */
240
+ list() {
241
+ const names = [];
242
+ for (const [name, registration] of registrations.entries()) {
243
+ if (registration.activeStatus === false)
244
+ continue;
245
+ names.push(name);
246
+ }
247
+ return names;
248
+ },
249
+ /**
250
+ * Update active status for a registered worker
251
+ */
252
+ setActiveStatus(name, activeStatus) {
253
+ const registration = registrations.get(name);
254
+ if (!registration)
255
+ return;
256
+ registrations.set(name, { ...registration, activeStatus });
257
+ },
258
+ /**
259
+ * List all running workers
260
+ */
261
+ listRunning() {
262
+ const running = [];
263
+ for (const [name, instance] of workers.entries()) {
264
+ if (instance.metadata.status === 'running') {
265
+ running.push(name);
266
+ }
267
+ }
268
+ return running;
269
+ },
270
+ /**
271
+ * Stop all running workers
272
+ */
273
+ async stopAll() {
274
+ Logger.info('Stopping all running workers...');
275
+ const running = WorkerRegistry.listRunning();
276
+ const tasks = running.map(async (name) => WorkerRegistry.stop(name));
277
+ try {
278
+ await Promise.all(tasks);
279
+ Logger.info(`Stopped ${running.length} workers successfully`);
280
+ }
281
+ catch (error) {
282
+ Logger.error('Failed to stop some workers', error);
283
+ throw error;
284
+ }
285
+ },
286
+ /**
287
+ * Get worker metrics
288
+ */
289
+ getMetrics(name) {
290
+ validateWorkerName(name);
291
+ const instance = workers.get(name);
292
+ if (!instance) {
293
+ return null;
294
+ }
295
+ return {
296
+ processedCount: instance.metadata.processedCount,
297
+ errorCount: instance.metadata.errorCount,
298
+ memoryUsage: instance.metadata.memoryUsage,
299
+ cpuUsage: instance.metadata.cpuUsage,
300
+ };
301
+ },
302
+ /**
303
+ * Get worker health status
304
+ */
305
+ getHealth(name) {
306
+ validateWorkerName(name);
307
+ const instance = workers.get(name);
308
+ if (!instance) {
309
+ return null;
310
+ }
311
+ return instance.getHealth();
312
+ },
313
+ /**
314
+ * Get registry snapshot
315
+ */
316
+ getSnapshot() {
317
+ const allWorkers = Array.from(workers.entries()).map(([name, instance]) => ({
318
+ name,
319
+ status: instance.metadata.status,
320
+ health: instance.getHealth(),
321
+ uptime: calculateUptime(instance.metadata.startedAt),
322
+ processedCount: instance.metadata.processedCount,
323
+ errorCount: instance.metadata.errorCount,
324
+ }));
325
+ const statusCounts = allWorkers.reduce((acc, w) => {
326
+ if (w.status === 'running')
327
+ acc.running++;
328
+ else if (w.status === 'stopped')
329
+ acc.stopped++;
330
+ else if (w.status === 'sleeping')
331
+ acc.sleeping++;
332
+ if (w.health === 'red')
333
+ acc.unhealthy++;
334
+ return acc;
335
+ }, { running: 0, stopped: 0, sleeping: 0, unhealthy: 0 });
336
+ return {
337
+ timestamp: new Date(),
338
+ totalWorkers: registrations.size,
339
+ runningWorkers: statusCounts.running,
340
+ stoppedWorkers: statusCounts.stopped,
341
+ sleepingWorkers: statusCounts.sleeping,
342
+ unhealthyWorkers: statusCounts.unhealthy,
343
+ workers: allWorkers,
344
+ };
345
+ },
346
+ /**
347
+ * Get worker topology (cluster view)
348
+ */
349
+ getTopology() {
350
+ const topology = {};
351
+ for (const [name, instance] of workers.entries()) {
352
+ const region = instance.metadata.region;
353
+ if (topology[region].count <= 0) {
354
+ topology[region] = { workers: [], count: 0 };
355
+ }
356
+ topology[region].workers.push(name);
357
+ topology[region].count++;
358
+ }
359
+ return topology;
360
+ },
361
+ /**
362
+ * Unregister a worker and clear its instance
363
+ */
364
+ unregister(name) {
365
+ validateWorkerName(name);
366
+ const instance = workers.get(name);
367
+ if (instance?.metadata.status === 'running') {
368
+ Logger.warn(`Worker "${name}" is still running during unregister`);
369
+ }
370
+ // Cancel any pending cleanup timer
371
+ cancelCleanupTimer(name);
372
+ workers.delete(name);
373
+ registrations.delete(name);
374
+ AnomalyDetection.cleanup(name);
375
+ Logger.info(`Worker "${name}" unregistered`);
376
+ },
377
+ /**
378
+ * Check if worker is registered
379
+ */
380
+ isRegistered(name) {
381
+ return registrations.has(name);
382
+ },
383
+ /**
384
+ * Check if worker is running
385
+ */
386
+ isRunning(name) {
387
+ const instance = workers.get(name);
388
+ return instance?.metadata.status === 'running';
389
+ },
390
+ /**
391
+ * Get worker instance (internal use)
392
+ */
393
+ getInstance(name) {
394
+ return workers.get(name) ?? null;
395
+ },
396
+ });
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Worker Shutdown Coordinator
3
+ *
4
+ * Centralized graceful shutdown handling for the worker management system.
5
+ * Coordinates orderly shutdown of all worker modules and the WorkerFactory.
6
+ */
7
+ export interface IShutdownOptions {
8
+ /**
9
+ * Timeout for graceful shutdown in milliseconds
10
+ */
11
+ timeout?: number;
12
+ /**
13
+ * Whether to force exit after timeout
14
+ */
15
+ forceExit?: boolean;
16
+ /**
17
+ * Signal that triggered shutdown (SIGTERM, SIGINT, etc.)
18
+ */
19
+ signal?: string;
20
+ }
21
+ interface IShutdownState {
22
+ isShuttingDown: boolean;
23
+ completedAt: Date | null;
24
+ startedAt: Date | null;
25
+ reason: string | null;
26
+ }
27
+ /**
28
+ * Perform graceful shutdown of all worker modules
29
+ */
30
+ declare function shutdown(options?: IShutdownOptions): Promise<void>;
31
+ /**
32
+ * Register process signal handlers for graceful shutdown
33
+ */
34
+ declare function registerShutdownHandlers(): void;
35
+ /**
36
+ * Unregister process signal handlers (for hot reload/testing)
37
+ */
38
+ declare function unregisterShutdownHandlers(): void;
39
+ /**
40
+ * Check if system is currently shutting down
41
+ */
42
+ declare function isShuttingDown(): boolean;
43
+ /**
44
+ * Get current shutdown state
45
+ */
46
+ declare function getShutdownState(): Readonly<IShutdownState>;
47
+ export declare const WorkerShutdown: Readonly<{
48
+ /**
49
+ * Perform graceful shutdown of all worker modules
50
+ */
51
+ shutdown: typeof shutdown;
52
+ /**
53
+ * Register process signal handlers for graceful shutdown
54
+ */
55
+ registerShutdownHandlers: typeof registerShutdownHandlers;
56
+ /**
57
+ * Unregister process signal handlers (for hot reload/testing)
58
+ */
59
+ unregisterShutdownHandlers: typeof unregisterShutdownHandlers;
60
+ /**
61
+ * Check if system is currently shutting down
62
+ */
63
+ isShuttingDown: typeof isShuttingDown;
64
+ /**
65
+ * Get current shutdown state
66
+ */
67
+ getShutdownState: typeof getShutdownState;
68
+ }>;
69
+ export {};
70
+ //# sourceMappingURL=WorkerShutdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerShutdown.d.ts","sourceRoot":"","sources":["../../../../packages/workers/src/WorkerShutdown.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,cAAc;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAsBD;;GAEG;AACH,iBAAe,QAAQ,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDrE;AAED;;GAEG;AACH,iBAAS,wBAAwB,IAAI,IAAI,CA8DxC;AAED;;GAEG;AACH,iBAAS,0BAA0B,IAAI,IAAI,CAiB1C;AAED;;GAEG;AACH,iBAAS,cAAc,IAAI,OAAO,CAEjC;AAED;;GAEG;AACH,iBAAS,gBAAgB,IAAI,QAAQ,CAAC,cAAc,CAAC,CAEpD;AAMD,eAAO,MAAM,cAAc;IACzB;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;EAEH,CAAC"}