@zintrust/core 0.1.41 → 0.1.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (547) hide show
  1. package/app/Controllers/AuthController.d.ts +10 -0
  2. package/app/Controllers/AuthController.d.ts.map +1 -0
  3. package/app/Controllers/AuthController.js +201 -0
  4. package/app/Controllers/UserController.d.ts +9 -0
  5. package/app/Controllers/UserController.d.ts.map +1 -0
  6. package/app/Controllers/UserController.js +8 -0
  7. package/app/Controllers/UserQueryBuilderController.d.ts +16 -0
  8. package/app/Controllers/UserQueryBuilderController.d.ts.map +1 -0
  9. package/app/Controllers/UserQueryBuilderController.js +404 -0
  10. package/app/Middleware/ProfilerMiddleware.d.ts +12 -0
  11. package/app/Middleware/ProfilerMiddleware.d.ts.map +1 -0
  12. package/app/Middleware/ProfilerMiddleware.js +47 -0
  13. package/app/Middleware/index.d.ts +59 -0
  14. package/app/Middleware/index.d.ts.map +1 -0
  15. package/app/Middleware/index.js +215 -0
  16. package/app/Models/Post.d.ts +14 -0
  17. package/app/Models/Post.d.ts.map +1 -0
  18. package/app/Models/Post.js +27 -0
  19. package/app/Models/User.d.ts +14 -0
  20. package/app/Models/User.d.ts.map +1 -0
  21. package/app/Models/User.js +44 -0
  22. package/app/Schedules/JobTracking.d.ts +3 -0
  23. package/app/Schedules/JobTracking.d.ts.map +1 -0
  24. package/app/Schedules/JobTracking.js +13 -0
  25. package/app/Schedules/index.d.ts +2 -0
  26. package/app/Schedules/index.d.ts.map +1 -0
  27. package/app/Schedules/index.js +1 -0
  28. package/app/Toolkit/Broadcast/sendBroadcast.d.ts +6 -0
  29. package/app/Toolkit/Broadcast/sendBroadcast.d.ts.map +1 -0
  30. package/app/Toolkit/Broadcast/sendBroadcast.js +5 -0
  31. package/app/Toolkit/Mail/sendWelcomeEmail.d.ts +6 -0
  32. package/app/Toolkit/Mail/sendWelcomeEmail.d.ts.map +1 -0
  33. package/app/Toolkit/Mail/sendWelcomeEmail.js +20 -0
  34. package/app/Toolkit/Notification/sendSlackNotification.d.ts +8 -0
  35. package/app/Toolkit/Notification/sendSlackNotification.d.ts.map +1 -0
  36. package/app/Toolkit/Notification/sendSlackNotification.js +5 -0
  37. package/app/Toolkit/Notification/sendSms.d.ts +6 -0
  38. package/app/Toolkit/Notification/sendSms.d.ts.map +1 -0
  39. package/app/Toolkit/Notification/sendSms.js +5 -0
  40. package/app/Types/controller.d.ts +42 -0
  41. package/app/Types/controller.d.ts.map +1 -0
  42. package/app/Types/controller.js +1 -0
  43. package/config/broadcast.d.ts +38 -0
  44. package/config/broadcast.d.ts.map +1 -0
  45. package/config/broadcast.js +37 -0
  46. package/config/cache.d.ts +40 -0
  47. package/config/cache.d.ts.map +1 -0
  48. package/config/cache.js +39 -0
  49. package/config/database.d.ts +58 -0
  50. package/config/database.d.ts.map +1 -0
  51. package/config/database.js +65 -0
  52. package/config/mail.d.ts +51 -0
  53. package/config/mail.d.ts.map +1 -0
  54. package/config/mail.js +69 -0
  55. package/config/middleware.d.ts +11 -0
  56. package/config/middleware.d.ts.map +1 -0
  57. package/config/middleware.js +30 -0
  58. package/config/notification.d.ts +33 -0
  59. package/config/notification.d.ts.map +1 -0
  60. package/config/notification.js +33 -0
  61. package/config/queue.d.ts +55 -0
  62. package/config/queue.d.ts.map +1 -0
  63. package/config/queue.js +87 -0
  64. package/config/storage.d.ts +59 -0
  65. package/config/storage.d.ts.map +1 -0
  66. package/config/storage.js +59 -0
  67. package/config/workers.d.ts +54 -0
  68. package/config/workers.d.ts.map +1 -0
  69. package/config/workers.js +83 -0
  70. package/package.json +27 -5
  71. package/packages/cloudflare-d1-proxy/src/index.d.ts +48 -0
  72. package/packages/cloudflare-d1-proxy/src/index.d.ts.map +1 -0
  73. package/packages/cloudflare-d1-proxy/src/index.js +387 -0
  74. package/packages/cloudflare-kv-proxy/src/index.d.ts +44 -0
  75. package/packages/cloudflare-kv-proxy/src/index.d.ts.map +1 -0
  76. package/packages/cloudflare-kv-proxy/src/index.js +325 -0
  77. package/packages/queue-monitor/src/QueueMonitoringService.d.ts +35 -0
  78. package/packages/queue-monitor/src/QueueMonitoringService.d.ts.map +1 -0
  79. package/packages/queue-monitor/src/QueueMonitoringService.js +194 -0
  80. package/packages/queue-monitor/src/connection.d.ts +3 -0
  81. package/packages/queue-monitor/src/connection.d.ts.map +1 -0
  82. package/packages/queue-monitor/src/connection.js +1 -0
  83. package/packages/queue-monitor/src/dashboard-ui.d.ts +7 -0
  84. package/packages/queue-monitor/src/dashboard-ui.d.ts.map +1 -0
  85. package/packages/queue-monitor/src/dashboard-ui.js +997 -0
  86. package/packages/queue-monitor/src/driver.d.ts +15 -0
  87. package/packages/queue-monitor/src/driver.d.ts.map +1 -0
  88. package/packages/queue-monitor/src/driver.js +115 -0
  89. package/packages/queue-monitor/src/index.d.ts +71 -0
  90. package/packages/queue-monitor/src/index.d.ts.map +1 -0
  91. package/packages/queue-monitor/src/index.js +296 -0
  92. package/packages/queue-monitor/src/metrics.d.ts +27 -0
  93. package/packages/queue-monitor/src/metrics.d.ts.map +1 -0
  94. package/packages/queue-monitor/src/metrics.js +92 -0
  95. package/packages/queue-monitor/src/worker.d.ts +8 -0
  96. package/packages/queue-monitor/src/worker.d.ts.map +1 -0
  97. package/packages/queue-monitor/src/worker.js +35 -0
  98. package/packages/queue-redis/src/BullMQRedisQueue.d.ts +26 -0
  99. package/packages/queue-redis/src/BullMQRedisQueue.d.ts.map +1 -0
  100. package/packages/queue-redis/src/BullMQRedisQueue.js +463 -0
  101. package/packages/queue-redis/src/HttpQueueDriver.d.ts +18 -0
  102. package/packages/queue-redis/src/HttpQueueDriver.d.ts.map +1 -0
  103. package/packages/queue-redis/src/HttpQueueDriver.js +249 -0
  104. package/packages/queue-redis/src/QueueHttpGateway.d.ts +16 -0
  105. package/packages/queue-redis/src/QueueHttpGateway.d.ts.map +1 -0
  106. package/packages/queue-redis/src/QueueHttpGateway.js +217 -0
  107. package/packages/queue-redis/src/RedisPublishClient.d.ts +14 -0
  108. package/packages/queue-redis/src/RedisPublishClient.d.ts.map +1 -0
  109. package/packages/queue-redis/src/RedisPublishClient.js +251 -0
  110. package/packages/queue-redis/src/index.d.ts +12 -0
  111. package/packages/queue-redis/src/index.d.ts.map +1 -0
  112. package/packages/queue-redis/src/index.js +10 -0
  113. package/packages/queue-redis/src/register.d.ts +6 -0
  114. package/packages/queue-redis/src/register.d.ts.map +1 -0
  115. package/packages/queue-redis/src/register.js +21 -0
  116. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts +11 -0
  117. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts.map +1 -0
  118. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.js +32 -0
  119. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts +11 -0
  120. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts.map +1 -0
  121. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.js +46 -0
  122. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts +7 -0
  123. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts.map +1 -0
  124. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.js +44 -0
  125. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts +7 -0
  126. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts.map +1 -0
  127. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.js +104 -0
  128. package/packages/workers/src/AnomalyDetection.d.ts +107 -0
  129. package/packages/workers/src/AnomalyDetection.d.ts.map +1 -0
  130. package/packages/workers/src/AnomalyDetection.js +329 -0
  131. package/packages/workers/src/AutoScaler.d.ts +128 -0
  132. package/packages/workers/src/AutoScaler.d.ts.map +1 -0
  133. package/packages/workers/src/AutoScaler.js +425 -0
  134. package/packages/workers/src/BroadcastWorker.d.ts +24 -0
  135. package/packages/workers/src/BroadcastWorker.d.ts.map +1 -0
  136. package/packages/workers/src/BroadcastWorker.js +24 -0
  137. package/packages/workers/src/CanaryController.d.ts +104 -0
  138. package/packages/workers/src/CanaryController.d.ts.map +1 -0
  139. package/packages/workers/src/CanaryController.js +424 -0
  140. package/packages/workers/src/ChaosEngineering.d.ts +80 -0
  141. package/packages/workers/src/ChaosEngineering.d.ts.map +1 -0
  142. package/packages/workers/src/ChaosEngineering.js +229 -0
  143. package/packages/workers/src/CircuitBreaker.d.ts +107 -0
  144. package/packages/workers/src/CircuitBreaker.d.ts.map +1 -0
  145. package/packages/workers/src/CircuitBreaker.js +374 -0
  146. package/packages/workers/src/ClusterLock.d.ts +91 -0
  147. package/packages/workers/src/ClusterLock.d.ts.map +1 -0
  148. package/packages/workers/src/ClusterLock.js +397 -0
  149. package/packages/workers/src/ComplianceManager.d.ts +178 -0
  150. package/packages/workers/src/ComplianceManager.d.ts.map +1 -0
  151. package/packages/workers/src/ComplianceManager.js +556 -0
  152. package/packages/workers/src/DatacenterOrchestrator.d.ts +134 -0
  153. package/packages/workers/src/DatacenterOrchestrator.d.ts.map +1 -0
  154. package/packages/workers/src/DatacenterOrchestrator.js +404 -0
  155. package/packages/workers/src/DeadLetterQueue.d.ts +123 -0
  156. package/packages/workers/src/DeadLetterQueue.d.ts.map +1 -0
  157. package/packages/workers/src/DeadLetterQueue.js +544 -0
  158. package/packages/workers/src/HealthMonitor.d.ts +43 -0
  159. package/packages/workers/src/HealthMonitor.d.ts.map +1 -0
  160. package/packages/workers/src/HealthMonitor.js +312 -0
  161. package/packages/workers/src/MultiQueueWorker.d.ts +90 -0
  162. package/packages/workers/src/MultiQueueWorker.d.ts.map +1 -0
  163. package/packages/workers/src/MultiQueueWorker.js +282 -0
  164. package/packages/workers/src/NotificationWorker.d.ts +24 -0
  165. package/packages/workers/src/NotificationWorker.d.ts.map +1 -0
  166. package/packages/workers/src/NotificationWorker.js +23 -0
  167. package/packages/workers/src/Observability.d.ts +154 -0
  168. package/packages/workers/src/Observability.d.ts.map +1 -0
  169. package/packages/workers/src/Observability.js +538 -0
  170. package/packages/workers/src/PluginManager.d.ts +124 -0
  171. package/packages/workers/src/PluginManager.d.ts.map +1 -0
  172. package/packages/workers/src/PluginManager.js +392 -0
  173. package/packages/workers/src/PriorityQueue.d.ts +118 -0
  174. package/packages/workers/src/PriorityQueue.d.ts.map +1 -0
  175. package/packages/workers/src/PriorityQueue.js +276 -0
  176. package/packages/workers/src/ResourceMonitor.d.ts +165 -0
  177. package/packages/workers/src/ResourceMonitor.d.ts.map +1 -0
  178. package/packages/workers/src/ResourceMonitor.js +632 -0
  179. package/packages/workers/src/SLAMonitor.d.ts +111 -0
  180. package/packages/workers/src/SLAMonitor.d.ts.map +1 -0
  181. package/packages/workers/src/SLAMonitor.js +274 -0
  182. package/packages/workers/src/WorkerFactory.d.ts +218 -0
  183. package/packages/workers/src/WorkerFactory.d.ts.map +1 -0
  184. package/packages/workers/src/WorkerFactory.js +2253 -0
  185. package/packages/workers/src/WorkerInit.d.ts +86 -0
  186. package/packages/workers/src/WorkerInit.d.ts.map +1 -0
  187. package/packages/workers/src/WorkerInit.js +307 -0
  188. package/packages/workers/src/WorkerMetrics.d.ts +116 -0
  189. package/packages/workers/src/WorkerMetrics.d.ts.map +1 -0
  190. package/packages/workers/src/WorkerMetrics.js +570 -0
  191. package/packages/workers/src/WorkerRegistry.d.ts +152 -0
  192. package/packages/workers/src/WorkerRegistry.d.ts.map +1 -0
  193. package/packages/workers/src/WorkerRegistry.js +396 -0
  194. package/packages/workers/src/WorkerShutdown.d.ts +70 -0
  195. package/packages/workers/src/WorkerShutdown.d.ts.map +1 -0
  196. package/packages/workers/src/WorkerShutdown.js +185 -0
  197. package/packages/workers/src/WorkerVersioning.d.ts +108 -0
  198. package/packages/workers/src/WorkerVersioning.d.ts.map +1 -0
  199. package/packages/workers/src/WorkerVersioning.js +300 -0
  200. package/packages/workers/src/config/workerConfig.d.ts +5 -0
  201. package/packages/workers/src/config/workerConfig.d.ts.map +1 -0
  202. package/packages/workers/src/config/workerConfig.js +25 -0
  203. package/packages/workers/src/createQueueWorker.d.ts +26 -0
  204. package/packages/workers/src/createQueueWorker.d.ts.map +1 -0
  205. package/packages/workers/src/createQueueWorker.js +367 -0
  206. package/packages/workers/src/dashboard/index.d.ts +2 -0
  207. package/packages/workers/src/dashboard/index.d.ts.map +1 -0
  208. package/packages/workers/src/dashboard/index.js +1 -0
  209. package/packages/workers/src/dashboard/types.d.ts +123 -0
  210. package/packages/workers/src/dashboard/types.d.ts.map +1 -0
  211. package/packages/workers/src/dashboard/types.js +1 -0
  212. package/packages/workers/src/dashboard/workers-api.d.ts +5 -0
  213. package/packages/workers/src/dashboard/workers-api.d.ts.map +1 -0
  214. package/packages/workers/src/dashboard/workers-api.js +738 -0
  215. package/packages/workers/src/helper/index.d.ts +6 -0
  216. package/packages/workers/src/helper/index.d.ts.map +1 -0
  217. package/packages/workers/src/helper/index.js +10 -0
  218. package/packages/workers/src/http/WorkerApiController.d.ts +39 -0
  219. package/packages/workers/src/http/WorkerApiController.d.ts.map +1 -0
  220. package/packages/workers/src/http/WorkerApiController.js +313 -0
  221. package/packages/workers/src/http/WorkerController.d.ts +375 -0
  222. package/packages/workers/src/http/WorkerController.d.ts.map +1 -0
  223. package/packages/workers/src/http/WorkerController.js +1454 -0
  224. package/packages/workers/src/http/WorkerMonitoringService.d.ts +12 -0
  225. package/packages/workers/src/http/WorkerMonitoringService.d.ts.map +1 -0
  226. package/packages/workers/src/http/WorkerMonitoringService.js +89 -0
  227. package/packages/workers/src/http/middleware/CustomValidation.d.ts +93 -0
  228. package/packages/workers/src/http/middleware/CustomValidation.d.ts.map +1 -0
  229. package/packages/workers/src/http/middleware/CustomValidation.js +270 -0
  230. package/packages/workers/src/http/middleware/DatacenterValidator.d.ts +4 -0
  231. package/packages/workers/src/http/middleware/DatacenterValidator.d.ts.map +1 -0
  232. package/packages/workers/src/http/middleware/DatacenterValidator.js +94 -0
  233. package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts +8 -0
  234. package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts.map +1 -0
  235. package/packages/workers/src/http/middleware/EditWorkerValidation.js +56 -0
  236. package/packages/workers/src/http/middleware/FeaturesValidator.d.ts +4 -0
  237. package/packages/workers/src/http/middleware/FeaturesValidator.d.ts.map +1 -0
  238. package/packages/workers/src/http/middleware/FeaturesValidator.js +60 -0
  239. package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts +32 -0
  240. package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts.map +1 -0
  241. package/packages/workers/src/http/middleware/InfrastructureValidator.js +226 -0
  242. package/packages/workers/src/http/middleware/OptionsValidator.d.ts +4 -0
  243. package/packages/workers/src/http/middleware/OptionsValidator.d.ts.map +1 -0
  244. package/packages/workers/src/http/middleware/OptionsValidator.js +112 -0
  245. package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts +8 -0
  246. package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts.map +1 -0
  247. package/packages/workers/src/http/middleware/PayloadSanitizer.js +42 -0
  248. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts +4 -0
  249. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts.map +1 -0
  250. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.js +140 -0
  251. package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts +4 -0
  252. package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts.map +1 -0
  253. package/packages/workers/src/http/middleware/QueueNameSanitizer.js +45 -0
  254. package/packages/workers/src/http/middleware/ValidateDriver.d.ts +8 -0
  255. package/packages/workers/src/http/middleware/ValidateDriver.d.ts.map +1 -0
  256. package/packages/workers/src/http/middleware/ValidateDriver.js +20 -0
  257. package/packages/workers/src/http/middleware/VersionSanitizer.d.ts +4 -0
  258. package/packages/workers/src/http/middleware/VersionSanitizer.d.ts.map +1 -0
  259. package/packages/workers/src/http/middleware/VersionSanitizer.js +25 -0
  260. package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts +4 -0
  261. package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts.map +1 -0
  262. package/packages/workers/src/http/middleware/WorkerNameSanitizer.js +46 -0
  263. package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts +28 -0
  264. package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts.map +1 -0
  265. package/packages/workers/src/http/middleware/WorkerValidationChain.js +186 -0
  266. package/packages/workers/src/index.d.ts +47 -0
  267. package/packages/workers/src/index.d.ts.map +1 -0
  268. package/packages/workers/src/index.js +48 -0
  269. package/packages/workers/src/routes/workers.d.ts +13 -0
  270. package/packages/workers/src/routes/workers.d.ts.map +1 -0
  271. package/packages/workers/src/routes/workers.js +126 -0
  272. package/packages/workers/src/storage/WorkerStore.d.ts +52 -0
  273. package/packages/workers/src/storage/WorkerStore.d.ts.map +1 -0
  274. package/packages/workers/src/storage/WorkerStore.js +259 -0
  275. package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts +47 -0
  276. package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts.map +1 -0
  277. package/packages/workers/src/telemetry/api/TelemetryAPI.js +219 -0
  278. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts +18 -0
  279. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts.map +1 -0
  280. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.js +140 -0
  281. package/packages/workers/src/telemetry/components/AlertPanel.d.ts +2 -0
  282. package/packages/workers/src/telemetry/components/AlertPanel.d.ts.map +1 -0
  283. package/packages/workers/src/telemetry/components/AlertPanel.js +13 -0
  284. package/packages/workers/src/telemetry/components/CostTracking.d.ts +2 -0
  285. package/packages/workers/src/telemetry/components/CostTracking.d.ts.map +1 -0
  286. package/packages/workers/src/telemetry/components/CostTracking.js +14 -0
  287. package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts +2 -0
  288. package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts.map +1 -0
  289. package/packages/workers/src/telemetry/components/ResourceUsageChart.js +11 -0
  290. package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts +2 -0
  291. package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts.map +1 -0
  292. package/packages/workers/src/telemetry/components/WorkerHealthChart.js +11 -0
  293. package/packages/workers/src/telemetry/index.d.ts +16 -0
  294. package/packages/workers/src/telemetry/index.d.ts.map +1 -0
  295. package/packages/workers/src/telemetry/index.js +60 -0
  296. package/packages/workers/src/telemetry/routes/dashboard.d.ts +7 -0
  297. package/packages/workers/src/telemetry/routes/dashboard.d.ts.map +1 -0
  298. package/packages/workers/src/telemetry/routes/dashboard.js +608 -0
  299. package/packages/workers/src/type.d.ts +77 -0
  300. package/packages/workers/src/type.d.ts.map +1 -0
  301. package/packages/workers/src/type.js +1 -0
  302. package/packages/workers/src/ui/router/EmbeddedAssets.d.ts +5 -0
  303. package/packages/workers/src/ui/router/EmbeddedAssets.d.ts.map +1 -0
  304. package/packages/workers/src/ui/router/EmbeddedAssets.js +13 -0
  305. package/packages/workers/src/ui/router/ui.d.ts +4 -0
  306. package/packages/workers/src/ui/router/ui.d.ts.map +1 -0
  307. package/packages/workers/src/ui/router/ui.js +208 -0
  308. package/packages/workers/src/ui/types/worker-ui.d.ts +230 -0
  309. package/packages/workers/src/ui/types/worker-ui.d.ts.map +1 -0
  310. package/packages/workers/src/ui/types/worker-ui.js +5 -0
  311. package/routes/api.d.ts +7 -0
  312. package/routes/api.d.ts.map +1 -0
  313. package/routes/api.js +129 -0
  314. package/routes/broadcast.d.ts +9 -0
  315. package/routes/broadcast.d.ts.map +1 -0
  316. package/routes/broadcast.js +27 -0
  317. package/routes/storage.d.ts +4 -0
  318. package/routes/storage.d.ts.map +1 -0
  319. package/routes/storage.js +35 -0
  320. package/src/boot/bootstrap.js +27 -11
  321. package/src/boot/registry/runtime.d.ts.map +1 -1
  322. package/src/boot/registry/runtime.js +11 -0
  323. package/src/cache/Cache.d.ts.map +1 -1
  324. package/src/cache/Cache.js +40 -8
  325. package/src/cache/drivers/KVRemoteDriver.d.ts +1 -1
  326. package/src/cache/drivers/KVRemoteDriver.d.ts.map +1 -1
  327. package/src/cache/drivers/KVRemoteDriver.js +259 -44
  328. package/src/cache/drivers/MemoryDriver.d.ts.map +1 -1
  329. package/src/cache/drivers/MemoryDriver.js +10 -2
  330. package/src/cache/drivers/RedisDriver.d.ts.map +1 -1
  331. package/src/cache/drivers/RedisDriver.js +256 -33
  332. package/src/cli/CLI.d.ts.map +1 -1
  333. package/src/cli/CLI.js +12 -0
  334. package/src/cli/commands/ConfigCommand.d.ts.map +1 -1
  335. package/src/cli/commands/ConfigCommand.js +3 -5
  336. package/src/cli/commands/D1LearnCommand.d.ts +9 -0
  337. package/src/cli/commands/D1LearnCommand.d.ts.map +1 -0
  338. package/src/cli/commands/D1LearnCommand.js +143 -0
  339. package/src/cli/commands/D1MigrateCommand.d.ts.map +1 -1
  340. package/src/cli/commands/D1MigrateCommand.js +55 -16
  341. package/src/cli/commands/InitContainerCommand.d.ts.map +1 -1
  342. package/src/cli/commands/InitContainerCommand.js +30 -15
  343. package/src/cli/commands/InitEcosystemCommand.d.ts +6 -0
  344. package/src/cli/commands/InitEcosystemCommand.d.ts.map +1 -0
  345. package/src/cli/commands/InitEcosystemCommand.js +51 -0
  346. package/src/cli/commands/MigrateCommand.d.ts.map +1 -1
  347. package/src/cli/commands/MigrateCommand.js +78 -36
  348. package/src/cli/commands/MigrateWorkerCommand.d.ts.map +1 -1
  349. package/src/cli/commands/MigrateWorkerCommand.js +36 -2
  350. package/src/cli/commands/NewCommand.d.ts.map +1 -1
  351. package/src/cli/commands/NewCommand.js +33 -0
  352. package/src/cli/commands/PutCommand.d.ts +6 -0
  353. package/src/cli/commands/PutCommand.d.ts.map +1 -0
  354. package/src/cli/commands/PutCommand.js +173 -0
  355. package/src/cli/commands/QueueRecoveryCommand.d.ts.map +1 -1
  356. package/src/cli/commands/QueueRecoveryCommand.js +113 -14
  357. package/src/cli/commands/ScheduleListCommand.d.ts +6 -0
  358. package/src/cli/commands/ScheduleListCommand.d.ts.map +1 -0
  359. package/src/cli/commands/ScheduleListCommand.js +62 -0
  360. package/src/cli/commands/ScheduleRunCommand.d.ts +6 -0
  361. package/src/cli/commands/ScheduleRunCommand.d.ts.map +1 -0
  362. package/src/cli/commands/ScheduleRunCommand.js +32 -0
  363. package/src/cli/commands/ScheduleStartCommand.d.ts +6 -0
  364. package/src/cli/commands/ScheduleStartCommand.d.ts.map +1 -0
  365. package/src/cli/commands/ScheduleStartCommand.js +40 -0
  366. package/src/cli/commands/SecretsCommand.d.ts.map +1 -1
  367. package/src/cli/commands/SecretsCommand.js +2 -2
  368. package/src/cli/commands/StartCommand.d.ts.map +1 -1
  369. package/src/cli/commands/StartCommand.js +23 -1
  370. package/src/cli/commands/schedule/ScheduleCliSupport.d.ts +6 -0
  371. package/src/cli/commands/schedule/ScheduleCliSupport.d.ts.map +1 -0
  372. package/src/cli/commands/schedule/ScheduleCliSupport.js +55 -0
  373. package/src/cli/config/ConfigManager.d.ts.map +1 -1
  374. package/src/cli/config/ConfigManager.js +8 -1
  375. package/src/cli/d1/D1SqlMigrations.d.ts.map +1 -1
  376. package/src/cli/d1/D1SqlMigrations.js +11 -1
  377. package/src/cli/d1/WranglerConfig.d.ts.map +1 -1
  378. package/src/cli/d1/WranglerConfig.js +34 -2
  379. package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
  380. package/src/cli/scaffolding/ProjectScaffolder.js +65 -73
  381. package/src/cli/services/VersionChecker.d.ts.map +1 -1
  382. package/src/cli/services/VersionChecker.js +5 -1
  383. package/src/cli/utils/DatabaseCliUtils.d.ts.map +1 -1
  384. package/src/cli/utils/DatabaseCliUtils.js +6 -1
  385. package/src/cli/utils/DistPackager.d.ts.map +1 -1
  386. package/src/cli/utils/DistPackager.js +25 -0
  387. package/src/cli/utils/EnvFileLoader.d.ts +1 -0
  388. package/src/cli/utils/EnvFileLoader.d.ts.map +1 -1
  389. package/src/cli/utils/EnvFileLoader.js +47 -14
  390. package/src/cli.d.ts +5 -0
  391. package/src/cli.d.ts.map +1 -0
  392. package/src/cli.js +4 -0
  393. package/src/collections/index.d.ts +2 -2
  394. package/src/collections/index.d.ts.map +1 -1
  395. package/src/collections/index.js +1 -1
  396. package/src/common/RemoteSignedJson.d.ts.map +1 -1
  397. package/src/common/RemoteSignedJson.js +58 -25
  398. package/src/common/utility.d.ts.map +1 -1
  399. package/src/common/utility.js +2 -6
  400. package/src/config/cache.js +1 -1
  401. package/src/config/cloudflare.d.ts.map +1 -1
  402. package/src/config/cloudflare.js +19 -8
  403. package/src/config/env.d.ts +7 -0
  404. package/src/config/env.d.ts.map +1 -1
  405. package/src/config/env.js +10 -2
  406. package/src/config/queue.js +1 -1
  407. package/src/functions/cloudflare.d.ts.map +1 -1
  408. package/src/functions/cloudflare.js +4 -2
  409. package/src/helper/index.d.ts +225 -0
  410. package/src/helper/index.d.ts.map +1 -0
  411. package/src/helper/index.js +347 -0
  412. package/src/index.d.ts +3 -6
  413. package/src/index.d.ts.map +1 -1
  414. package/src/index.js +7 -9
  415. package/src/middleware/JwtAuthMiddleware.d.ts.map +1 -1
  416. package/src/middleware/JwtAuthMiddleware.js +11 -5
  417. package/src/migrations/MigrationDiscovery.d.ts.map +1 -1
  418. package/src/migrations/MigrationDiscovery.js +2 -1
  419. package/src/orm/DatabaseAdapter.d.ts +1 -0
  420. package/src/orm/DatabaseAdapter.d.ts.map +1 -1
  421. package/src/orm/SchemaStatemenWriter.d.ts +15 -0
  422. package/src/orm/SchemaStatemenWriter.d.ts.map +1 -0
  423. package/src/orm/SchemaStatemenWriter.js +78 -0
  424. package/src/orm/adapters/D1Adapter.d.ts.map +1 -1
  425. package/src/orm/adapters/D1Adapter.js +52 -2
  426. package/src/orm/adapters/D1RemoteAdapter.d.ts.map +1 -1
  427. package/src/orm/adapters/D1RemoteAdapter.js +137 -89
  428. package/src/orm/adapters/MySQLProxyAdapter.d.ts.map +1 -1
  429. package/src/orm/adapters/MySQLProxyAdapter.js +100 -81
  430. package/src/orm/adapters/PostgreSQLProxyAdapter.d.ts.map +1 -1
  431. package/src/orm/adapters/PostgreSQLProxyAdapter.js +26 -10
  432. package/src/orm/adapters/SqlProxyAdapterUtils.d.ts.map +1 -1
  433. package/src/orm/adapters/SqlProxyAdapterUtils.js +2 -1
  434. package/src/orm/adapters/SqlProxyRegistryMode.d.ts +12 -0
  435. package/src/orm/adapters/SqlProxyRegistryMode.d.ts.map +1 -0
  436. package/src/orm/adapters/SqlProxyRegistryMode.js +24 -0
  437. package/src/orm/adapters/SqlServerProxyAdapter.d.ts +3 -0
  438. package/src/orm/adapters/SqlServerProxyAdapter.d.ts.map +1 -1
  439. package/src/orm/adapters/SqlServerProxyAdapter.js +125 -117
  440. package/src/orm/migrations/MigrationStore.js +1 -1
  441. package/src/proxy/ProxyRequestParsing.d.ts +9 -0
  442. package/src/proxy/ProxyRequestParsing.d.ts.map +1 -0
  443. package/src/proxy/ProxyRequestParsing.js +16 -0
  444. package/src/proxy/RequestValidator.d.ts.map +1 -1
  445. package/src/proxy/RequestValidator.js +2 -1
  446. package/src/proxy/SigningService.js +2 -2
  447. package/src/proxy/SqlProxyDbOverrides.d.ts +17 -0
  448. package/src/proxy/SqlProxyDbOverrides.d.ts.map +1 -0
  449. package/src/proxy/SqlProxyDbOverrides.js +1 -0
  450. package/src/proxy/SqlProxyServerDeps.d.ts +12 -0
  451. package/src/proxy/SqlProxyServerDeps.d.ts.map +1 -0
  452. package/src/proxy/SqlProxyServerDeps.js +9 -0
  453. package/src/proxy/StatementPayloadValidator.d.ts +13 -0
  454. package/src/proxy/StatementPayloadValidator.d.ts.map +1 -0
  455. package/src/proxy/StatementPayloadValidator.js +18 -0
  456. package/src/proxy/StatementRegistryLoader.d.ts +2 -0
  457. package/src/proxy/StatementRegistryLoader.d.ts.map +1 -0
  458. package/src/proxy/StatementRegistryLoader.js +36 -0
  459. package/src/proxy/StatementRegistryResolver.d.ts +15 -0
  460. package/src/proxy/StatementRegistryResolver.d.ts.map +1 -0
  461. package/src/proxy/StatementRegistryResolver.js +34 -0
  462. package/src/proxy/d1/ZintrustD1Proxy.d.ts +2 -1
  463. package/src/proxy/d1/ZintrustD1Proxy.d.ts.map +1 -1
  464. package/src/proxy/d1/ZintrustD1Proxy.js +2 -1
  465. package/src/proxy/isMutatingSql.d.ts +2 -0
  466. package/src/proxy/isMutatingSql.d.ts.map +1 -0
  467. package/src/proxy/isMutatingSql.js +12 -0
  468. package/src/proxy/kv/ZintrustKvProxy.d.ts +2 -1
  469. package/src/proxy/kv/ZintrustKvProxy.d.ts.map +1 -1
  470. package/src/proxy/kv/ZintrustKvProxy.js +2 -1
  471. package/src/proxy/mysql/MySqlProxyServer.d.ts +2 -8
  472. package/src/proxy/mysql/MySqlProxyServer.d.ts.map +1 -1
  473. package/src/proxy/mysql/MySqlProxyServer.js +84 -51
  474. package/src/proxy/postgres/PostgresProxyServer.d.ts +2 -8
  475. package/src/proxy/postgres/PostgresProxyServer.d.ts.map +1 -1
  476. package/src/proxy/postgres/PostgresProxyServer.js +86 -48
  477. package/src/proxy/smtp/SmtpProxyServer.d.ts.map +1 -1
  478. package/src/proxy/smtp/SmtpProxyServer.js +6 -5
  479. package/src/proxy/sqlserver/SqlServerProxyServer.d.ts +2 -8
  480. package/src/proxy/sqlserver/SqlServerProxyServer.d.ts.map +1 -1
  481. package/src/proxy/sqlserver/SqlServerProxyServer.js +84 -49
  482. package/src/proxy.d.ts +4 -0
  483. package/src/proxy.d.ts.map +1 -0
  484. package/src/proxy.js +3 -0
  485. package/src/runtime/RuntimeAdapter.d.ts.map +1 -1
  486. package/src/runtime/RuntimeAdapter.js +30 -12
  487. package/src/runtime/adapters/CloudflareAdapter.d.ts.map +1 -1
  488. package/src/runtime/adapters/CloudflareAdapter.js +15 -4
  489. package/src/scheduler/Schedule.d.ts +36 -0
  490. package/src/scheduler/Schedule.d.ts.map +1 -0
  491. package/src/scheduler/Schedule.js +197 -0
  492. package/src/scheduler/ScheduleHttpGateway.d.ts +8 -0
  493. package/src/scheduler/ScheduleHttpGateway.d.ts.map +1 -0
  494. package/src/scheduler/ScheduleHttpGateway.js +196 -0
  495. package/src/scheduler/ScheduleRunner.d.ts +6 -0
  496. package/src/scheduler/ScheduleRunner.d.ts.map +1 -1
  497. package/src/scheduler/ScheduleRunner.js +166 -29
  498. package/src/scheduler/SchedulerRuntime.d.ts +15 -0
  499. package/src/scheduler/SchedulerRuntime.d.ts.map +1 -0
  500. package/src/scheduler/SchedulerRuntime.js +79 -0
  501. package/src/scheduler/cron/Cron.d.ts +19 -0
  502. package/src/scheduler/cron/Cron.d.ts.map +1 -0
  503. package/src/scheduler/cron/Cron.js +200 -0
  504. package/src/scheduler/leader/SchedulerLeader.d.ts +14 -0
  505. package/src/scheduler/leader/SchedulerLeader.d.ts.map +1 -0
  506. package/src/scheduler/leader/SchedulerLeader.js +187 -0
  507. package/src/scheduler/state/ScheduleStateStore.d.ts +27 -0
  508. package/src/scheduler/state/ScheduleStateStore.d.ts.map +1 -0
  509. package/src/scheduler/state/ScheduleStateStore.js +27 -0
  510. package/src/scheduler/types.d.ts +10 -0
  511. package/src/scheduler/types.d.ts.map +1 -1
  512. package/src/schedules/index.d.ts +1 -0
  513. package/src/schedules/index.d.ts.map +1 -1
  514. package/src/schedules/index.js +1 -0
  515. package/src/schedules/job-tracking-cleanup.d.ts +4 -0
  516. package/src/schedules/job-tracking-cleanup.d.ts.map +1 -0
  517. package/src/schedules/job-tracking-cleanup.js +116 -0
  518. package/src/schedules/log-cleanup.d.ts +1 -2
  519. package/src/schedules/log-cleanup.d.ts.map +1 -1
  520. package/src/schedules/log-cleanup.js +12 -15
  521. package/src/security/Sanitizer.d.ts.map +1 -1
  522. package/src/security/Sanitizer.js +1 -9
  523. package/src/security/SignedRequest.d.ts.map +1 -1
  524. package/src/security/SignedRequest.js +2 -2
  525. package/src/security/TokenRevocation.d.ts +19 -2
  526. package/src/security/TokenRevocation.d.ts.map +1 -1
  527. package/src/security/TokenRevocation.js +558 -30
  528. package/src/templates/docker/docker-compose.ecosystem.yml.tpl +301 -0
  529. package/src/templates/docker/docker-compose.schedules.yml.tpl +84 -0
  530. package/src/templates/project/basic/app/Controllers/AuthController.ts.tpl +11 -3
  531. package/src/templates/project/basic/app/Schedules/index.ts.tpl +0 -0
  532. package/src/templates/project/basic/config/database.ts.tpl +1 -1
  533. package/src/templates/project/basic/config/middleware.ts.tpl +23 -22
  534. package/src/templates/project/basic/wrangler.jsonc.tpl +28 -0
  535. package/src/toolkit/Secrets/Manifest.d.ts.map +1 -1
  536. package/src/toolkit/Secrets/Manifest.js +5 -7
  537. package/src/tools/mail/drivers/Smtp.d.ts.map +1 -1
  538. package/src/tools/mail/drivers/Smtp.js +7 -1
  539. package/src/tools/queue/JobReconciliationRunner.d.ts.map +1 -1
  540. package/src/tools/queue/JobReconciliationRunner.js +7 -39
  541. package/src/tools/queue/JobRecoveryDaemon.d.ts.map +1 -1
  542. package/src/tools/queue/JobRecoveryDaemon.js +116 -18
  543. package/src/tools/queue/JobStateTracker.d.ts +10 -1
  544. package/src/tools/queue/JobStateTracker.d.ts.map +1 -1
  545. package/src/tools/queue/JobStateTracker.js +24 -2
  546. package/src/tools/queue/JobStateTrackerDbPersistence.d.ts.map +1 -1
  547. package/src/tools/queue/JobStateTrackerDbPersistence.js +93 -2
@@ -0,0 +1,632 @@
1
+ /**
2
+ * Resource Monitor
3
+ * Real-time resource tracking with cost calculation
4
+ * Sealed namespace for immutability
5
+ */
6
+ import { Env, Logger, NodeSingletons } from '../../../src/index.js';
7
+ const getOsModule = () => NodeSingletons?.os ?? null;
8
+ const safeTotalMemory = () => {
9
+ const os = getOsModule();
10
+ if (!os?.totalmem)
11
+ return 0;
12
+ try {
13
+ return os.totalmem();
14
+ }
15
+ catch {
16
+ return 0;
17
+ }
18
+ };
19
+ const safeFreeMemory = () => {
20
+ const os = getOsModule();
21
+ if (!os?.freemem)
22
+ return 0;
23
+ try {
24
+ return os.freemem();
25
+ }
26
+ catch {
27
+ return 0;
28
+ }
29
+ };
30
+ const safeLoadAverage = () => {
31
+ const os = getOsModule();
32
+ if (!os?.loadavg)
33
+ return [0, 0, 0];
34
+ try {
35
+ return os.loadavg();
36
+ }
37
+ catch {
38
+ return [0, 0, 0];
39
+ }
40
+ };
41
+ const safeCpuCount = () => {
42
+ const os = getOsModule();
43
+ if (!os?.cpus)
44
+ return 1;
45
+ try {
46
+ return Math.max(1, os.cpus().length);
47
+ }
48
+ catch {
49
+ return 1;
50
+ }
51
+ };
52
+ const safePlatform = () => {
53
+ const os = getOsModule();
54
+ if (!os?.platform)
55
+ return 'unknown';
56
+ try {
57
+ return os.platform();
58
+ }
59
+ catch {
60
+ return 'unknown';
61
+ }
62
+ };
63
+ const safeArch = () => {
64
+ const os = getOsModule();
65
+ if (!os?.arch)
66
+ return 'unknown';
67
+ try {
68
+ return os.arch();
69
+ }
70
+ catch {
71
+ return 'unknown';
72
+ }
73
+ };
74
+ const safeHostname = () => {
75
+ const os = getOsModule();
76
+ if (!os?.hostname)
77
+ return 'unknown';
78
+ try {
79
+ return os.hostname();
80
+ }
81
+ catch {
82
+ return 'unknown';
83
+ }
84
+ };
85
+ const safeUptime = () => {
86
+ const os = getOsModule();
87
+ if (!os?.uptime)
88
+ return 0;
89
+ try {
90
+ return os.uptime();
91
+ }
92
+ catch {
93
+ return 0;
94
+ }
95
+ };
96
+ const safeProcessCpuUsage = () => {
97
+ if (!process?.cpuUsage)
98
+ return { user: 0, system: 0 };
99
+ try {
100
+ return process.cpuUsage();
101
+ }
102
+ catch {
103
+ return { user: 0, system: 0 };
104
+ }
105
+ };
106
+ // Default cost configuration (AWS-like pricing)
107
+ const DEFAULT_COST_CONFIG = {
108
+ computeCostPerCoreHour: 0.0416, // ~$0.0416 per vCPU hour (t3.medium equivalent)
109
+ memoryCostPerGBHour: 0.0052, // ~$0.0052 per GB hour
110
+ networkCostPerGB: 0.09, // $0.09 per GB transferred
111
+ diskCostPerGB: 0.1, // $0.10 per GB/month
112
+ spotInstanceDiscount: 70, // 70% discount for spot instances
113
+ };
114
+ // Internal state
115
+ let costConfig = { ...DEFAULT_COST_CONFIG };
116
+ let monitoringInterval = null;
117
+ const resourceHistory = new Map();
118
+ const alertHistory = new Map();
119
+ // Memory management constants
120
+ const MAX_HISTORY_SIZE = 1000; // Keep last 1000 snapshots per worker
121
+ const MAX_ALERT_HISTORY = 100; // Keep last 100 alerts per worker
122
+ // Resource thresholds
123
+ const THRESHOLDS = {
124
+ cpu: { warning: 70, critical: 90 },
125
+ memory: { warning: 75, critical: 85 },
126
+ disk: { warning: 80, critical: 90 },
127
+ costPerHour: { warning: 10, critical: 50 },
128
+ };
129
+ // Store previous CPU measurements for calculating real-time usage
130
+ let previousCpuTimes = null;
131
+ /**
132
+ * Helper: Calculate CPU usage percentage (real-time)
133
+ */
134
+ const calculateCpuUsage = () => {
135
+ const os = getOsModule();
136
+ if (!os?.cpus)
137
+ return 0;
138
+ try {
139
+ const cpus = os.cpus();
140
+ let totalIdle = 0;
141
+ let totalTick = 0;
142
+ cpus.forEach((cpu) => {
143
+ for (const type in cpu.times) {
144
+ totalTick += cpu.times[type];
145
+ }
146
+ totalIdle += cpu.times.idle;
147
+ });
148
+ const now = Date.now();
149
+ // If we have previous measurements, calculate real-time usage
150
+ if (previousCpuTimes) {
151
+ const timeDiff = now - previousCpuTimes.timestamp;
152
+ // Only calculate if enough time has passed (minimum 100ms)
153
+ if (timeDiff >= 100) {
154
+ const idleDiff = totalIdle - previousCpuTimes.idle;
155
+ const totalDiff = totalTick - previousCpuTimes.total;
156
+ // Calculate CPU usage percentage for this interval
157
+ const cpuPercentage = totalDiff > 0 ? ((totalDiff - idleDiff) / totalDiff) * 100 : 0;
158
+ // Update previous measurements
159
+ previousCpuTimes = { idle: totalIdle, total: totalTick, timestamp: now };
160
+ return Math.min(100, Math.max(0, cpuPercentage));
161
+ }
162
+ }
163
+ // First measurement or not enough time passed
164
+ previousCpuTimes = { idle: totalIdle, total: totalTick, timestamp: now };
165
+ // For first call, return a reasonable estimate or use load average
166
+ const loadAvg = safeLoadAverage();
167
+ const cpuCount = safeCpuCount();
168
+ return Math.min(100, Math.max(0, (loadAvg[0] / cpuCount) * 100));
169
+ }
170
+ catch (error) {
171
+ Logger.error('Failed to calculate system CPU usage', error);
172
+ return 0;
173
+ }
174
+ };
175
+ /**
176
+ * Helper: Get memory usage
177
+ */
178
+ const getMemoryUsage = () => {
179
+ const totalMemory = safeTotalMemory();
180
+ const freeMemory = safeFreeMemory();
181
+ const usedMemory = totalMemory - freeMemory;
182
+ const usage = totalMemory > 0 ? (usedMemory / totalMemory) * 100 : 0;
183
+ return {
184
+ total: totalMemory,
185
+ used: usedMemory,
186
+ free: freeMemory,
187
+ usage,
188
+ };
189
+ };
190
+ /**
191
+ * Helper: Capture resource snapshot
192
+ */
193
+ const captureSnapshot = () => {
194
+ const cpuUsage = calculateCpuUsage();
195
+ const memoryUsage = getMemoryUsage();
196
+ const loadAverage = safeLoadAverage();
197
+ const cpuCores = safeCpuCount();
198
+ return {
199
+ timestamp: new Date(),
200
+ cpu: {
201
+ usage: cpuUsage,
202
+ loadAverage,
203
+ cores: cpuCores,
204
+ },
205
+ memory: memoryUsage,
206
+ disk: {
207
+ read: 0, // Would need platform-specific implementation
208
+ write: 0,
209
+ },
210
+ network: {
211
+ received: 0, // Would need platform-specific implementation
212
+ transmitted: 0,
213
+ },
214
+ process: {
215
+ pid: process.pid,
216
+ uptime: process.uptime(),
217
+ memoryUsage: process.memoryUsage(),
218
+ cpuUsage: safeProcessCpuUsage(),
219
+ },
220
+ };
221
+ };
222
+ /**
223
+ * Helper: Calculate cost based on resource usage
224
+ */
225
+ const calculateCost = (snapshot, useSpotDiscount = false) => {
226
+ const { cpu, memory } = snapshot;
227
+ // CPU cost (based on cores and usage)
228
+ const cpuCostPerHour = cpu.cores * (cpu.usage / 100) * costConfig.computeCostPerCoreHour;
229
+ // Memory cost (based on GB used)
230
+ const memoryGB = memory.used / (1024 * 1024 * 1024);
231
+ const memoryCostPerHour = memoryGB * costConfig.memoryCostPerGBHour;
232
+ // Total compute cost
233
+ let totalCostPerHour = cpuCostPerHour + memoryCostPerHour;
234
+ // Apply spot instance discount if applicable
235
+ if (useSpotDiscount) {
236
+ totalCostPerHour *= 1 - costConfig.spotInstanceDiscount / 100;
237
+ }
238
+ return {
239
+ perHour: totalCostPerHour,
240
+ perDay: totalCostPerHour * 24,
241
+ perMonth: totalCostPerHour * 24 * 30,
242
+ };
243
+ };
244
+ /**
245
+ * Helper: Calculate efficiency score
246
+ */
247
+ const calculateEfficiency = (snapshot) => {
248
+ const { cpu, memory } = snapshot;
249
+ // CPU efficiency: 50-80% usage is ideal
250
+ let cpuEfficiency;
251
+ if (cpu.usage < 30) {
252
+ cpuEfficiency = cpu.usage * 2; // Under-utilized
253
+ }
254
+ else if (cpu.usage > 80) {
255
+ cpuEfficiency = 100 - (cpu.usage - 80) * 2; // Over-utilized
256
+ }
257
+ else {
258
+ cpuEfficiency = 100; // Ideal range
259
+ }
260
+ // Memory efficiency: 50-75% usage is ideal
261
+ let memoryEfficiency;
262
+ if (memory.usage < 40) {
263
+ memoryEfficiency = memory.usage * 1.5; // Under-utilized
264
+ }
265
+ else if (memory.usage > 75) {
266
+ memoryEfficiency = 100 - (memory.usage - 75) * 2; // Over-utilized
267
+ }
268
+ else {
269
+ memoryEfficiency = 100; // Ideal range
270
+ }
271
+ const overallScore = cpuEfficiency * 0.6 + memoryEfficiency * 0.4;
272
+ return {
273
+ cpuEfficiency: Math.round(cpuEfficiency),
274
+ memoryEfficiency: Math.round(memoryEfficiency),
275
+ overallScore: Math.round(overallScore),
276
+ };
277
+ };
278
+ /**
279
+ * Helper: Check thresholds and create alerts
280
+ */
281
+ const checkThresholds = (workerName, snapshot, cost) => {
282
+ const alerts = [];
283
+ // CPU alerts
284
+ if (snapshot.cpu.usage >= THRESHOLDS.cpu.critical) {
285
+ alerts.push({
286
+ timestamp: new Date(),
287
+ workerName,
288
+ alertType: 'cpu-high',
289
+ severity: 'critical',
290
+ message: `Critical CPU usage: ${snapshot.cpu.usage.toFixed(1)}%`,
291
+ currentValue: snapshot.cpu.usage,
292
+ threshold: THRESHOLDS.cpu.critical,
293
+ recommendation: 'Consider scaling up or optimizing worker code',
294
+ });
295
+ }
296
+ else if (snapshot.cpu.usage >= THRESHOLDS.cpu.warning) {
297
+ alerts.push({
298
+ timestamp: new Date(),
299
+ workerName,
300
+ alertType: 'cpu-high',
301
+ severity: 'warning',
302
+ message: `High CPU usage: ${snapshot.cpu.usage.toFixed(1)}%`,
303
+ currentValue: snapshot.cpu.usage,
304
+ threshold: THRESHOLDS.cpu.warning,
305
+ recommendation: 'Monitor closely and consider scaling',
306
+ });
307
+ }
308
+ // Memory alerts
309
+ if (snapshot.memory.usage >= THRESHOLDS.memory.critical) {
310
+ alerts.push({
311
+ timestamp: new Date(),
312
+ workerName,
313
+ alertType: 'memory-high',
314
+ severity: 'critical',
315
+ message: `Critical memory usage: ${snapshot.memory.usage.toFixed(1)}%`,
316
+ currentValue: snapshot.memory.usage,
317
+ threshold: THRESHOLDS.memory.critical,
318
+ recommendation: 'Increase memory allocation or optimize memory usage',
319
+ });
320
+ }
321
+ else if (snapshot.memory.usage >= THRESHOLDS.memory.warning) {
322
+ alerts.push({
323
+ timestamp: new Date(),
324
+ workerName,
325
+ alertType: 'memory-high',
326
+ severity: 'warning',
327
+ message: `High memory usage: ${snapshot.memory.usage.toFixed(1)}%`,
328
+ currentValue: snapshot.memory.usage,
329
+ threshold: THRESHOLDS.memory.warning,
330
+ recommendation: 'Monitor memory consumption',
331
+ });
332
+ }
333
+ // Cost alerts
334
+ if (cost.perHour >= THRESHOLDS.costPerHour.critical) {
335
+ alerts.push({
336
+ timestamp: new Date(),
337
+ workerName,
338
+ alertType: 'cost-high',
339
+ severity: 'critical',
340
+ message: `Critical hourly cost: $${cost.perHour.toFixed(2)}/hr`,
341
+ currentValue: cost.perHour,
342
+ threshold: THRESHOLDS.costPerHour.critical,
343
+ recommendation: 'Review resource allocation and consider cost optimization',
344
+ });
345
+ }
346
+ else if (cost.perHour >= THRESHOLDS.costPerHour.warning) {
347
+ alerts.push({
348
+ timestamp: new Date(),
349
+ workerName,
350
+ alertType: 'cost-high',
351
+ severity: 'warning',
352
+ message: `High hourly cost: $${cost.perHour.toFixed(2)}/hr`,
353
+ currentValue: cost.perHour,
354
+ threshold: THRESHOLDS.costPerHour.warning,
355
+ recommendation: 'Consider using spot instances or reducing concurrency',
356
+ });
357
+ }
358
+ return alerts;
359
+ };
360
+ /**
361
+ * Helper: Store alert
362
+ */
363
+ const storeAlert = (alert) => {
364
+ let history = alertHistory.get(alert.workerName);
365
+ if (!history) {
366
+ history = [];
367
+ alertHistory.set(alert.workerName, history);
368
+ }
369
+ history.push(alert);
370
+ // Trim alert history to prevent memory leaks
371
+ if (history.length > MAX_ALERT_HISTORY) {
372
+ alertHistory.set(alert.workerName, history.slice(-MAX_ALERT_HISTORY));
373
+ }
374
+ };
375
+ /**
376
+ * Helper: Calculate trend
377
+ */
378
+ const calculateTrend = (workerName, metric, period) => {
379
+ const history = resourceHistory.get(workerName);
380
+ if (!history || history.length < 2)
381
+ return null;
382
+ const now = Date.now();
383
+ let periodMs;
384
+ switch (period) {
385
+ case 'hour':
386
+ periodMs = 60 * 60 * 1000;
387
+ break;
388
+ case 'day':
389
+ periodMs = 24 * 60 * 60 * 1000;
390
+ break;
391
+ case 'week':
392
+ periodMs = 7 * 24 * 60 * 60 * 1000;
393
+ break;
394
+ }
395
+ // Filter snapshots within period
396
+ const periodSnapshots = history.filter((s) => now - s.timestamp.getTime() <= periodMs);
397
+ if (periodSnapshots.length < 2)
398
+ return null;
399
+ // Get metric values
400
+ const values = periodSnapshots.map((s) => {
401
+ switch (metric) {
402
+ case 'cpu':
403
+ return s.cpu.usage;
404
+ case 'memory':
405
+ return s.memory.usage;
406
+ case 'disk':
407
+ return s.disk.read + s.disk.write;
408
+ case 'network':
409
+ return s.network.received + s.network.transmitted;
410
+ case 'cost':
411
+ return calculateCost(s).perHour;
412
+ }
413
+ });
414
+ // Simple linear regression for trend
415
+ const firstValue = values[0];
416
+ const lastValue = values[values.length - 1] ?? values[0];
417
+ const changePercentage = ((lastValue - firstValue) / firstValue) * 100;
418
+ let trend;
419
+ if (Math.abs(changePercentage) < 5) {
420
+ trend = 'stable';
421
+ }
422
+ else if (changePercentage > 0) {
423
+ trend = 'increasing';
424
+ }
425
+ else {
426
+ trend = 'decreasing';
427
+ }
428
+ // Simple predictions (linear extrapolation)
429
+ const avgChange = (lastValue - firstValue) / periodSnapshots.length;
430
+ const predictions = {
431
+ nextHour: lastValue + avgChange * 12, // Assuming 5-min intervals
432
+ nextDay: lastValue + avgChange * 288,
433
+ nextWeek: lastValue + avgChange * 2016,
434
+ };
435
+ return {
436
+ workerName,
437
+ metric,
438
+ period,
439
+ trend,
440
+ changePercentage,
441
+ predictions,
442
+ };
443
+ };
444
+ /**
445
+ * Resource Monitor - Sealed namespace
446
+ */
447
+ export const ResourceMonitor = Object.freeze({
448
+ /**
449
+ * Initialize resource monitor
450
+ */
451
+ initialize(config) {
452
+ if (config) {
453
+ costConfig = { ...DEFAULT_COST_CONFIG, ...config };
454
+ }
455
+ Logger.info('ResourceMonitor initialized', { costConfig });
456
+ },
457
+ /**
458
+ * Check whether monitoring is running
459
+ */
460
+ isRunning() {
461
+ return monitoringInterval !== null;
462
+ },
463
+ /**
464
+ * Start monitoring
465
+ */
466
+ start(intervalSeconds = 30) {
467
+ const globalResourceMonitoring = Env.getBool('WORKER_RESOURCE_MONITORING', false);
468
+ if (!globalResourceMonitoring) {
469
+ Logger.warn('ResourceMonitor disabled (WORKER_RESOURCE_MONITORING=false)');
470
+ return;
471
+ }
472
+ if (monitoringInterval) {
473
+ Logger.warn('ResourceMonitor already running');
474
+ return;
475
+ }
476
+ monitoringInterval = setInterval(() => {
477
+ const snapshot = captureSnapshot();
478
+ // Store snapshot for later analysis
479
+ // This would typically be saved to a time-series database
480
+ Logger.debug('Resource snapshot captured', {
481
+ cpu: snapshot.cpu.usage.toFixed(1) + '%',
482
+ memory: snapshot.memory.usage.toFixed(1) + '%',
483
+ });
484
+ }, intervalSeconds * 1000);
485
+ Logger.info('ResourceMonitor started', { intervalSeconds });
486
+ },
487
+ /**
488
+ * Stop monitoring
489
+ */
490
+ stop() {
491
+ if (monitoringInterval) {
492
+ clearInterval(monitoringInterval);
493
+ monitoringInterval = null;
494
+ Logger.info('ResourceMonitor stopped');
495
+ }
496
+ },
497
+ /**
498
+ * Get current resource usage
499
+ */
500
+ getCurrentUsage(workerName, useSpotDiscount = false) {
501
+ const snapshot = captureSnapshot();
502
+ const cost = calculateCost(snapshot, useSpotDiscount);
503
+ const efficiency = calculateEfficiency(snapshot);
504
+ // Store in history
505
+ let history = resourceHistory.get(workerName);
506
+ if (!history) {
507
+ history = [];
508
+ resourceHistory.set(workerName, history);
509
+ }
510
+ history.push(snapshot);
511
+ // Trim resource history to prevent memory leaks
512
+ if (history.length > MAX_HISTORY_SIZE) {
513
+ resourceHistory.set(workerName, history.slice(-MAX_HISTORY_SIZE));
514
+ }
515
+ // Check thresholds
516
+ const alerts = checkThresholds(workerName, snapshot, cost);
517
+ alerts.forEach((element) => {
518
+ storeAlert(element);
519
+ });
520
+ return {
521
+ workerName,
522
+ cpu: snapshot.cpu.usage,
523
+ memory: {
524
+ number: snapshot.memory.total,
525
+ percent: snapshot.memory.usage,
526
+ used: snapshot.memory.used,
527
+ free: snapshot.memory.free,
528
+ },
529
+ cost: {
530
+ hourly: cost.perHour,
531
+ daily: cost.perDay,
532
+ },
533
+ resourceSnapshot: snapshot,
534
+ estimatedCost: cost,
535
+ efficiency,
536
+ };
537
+ },
538
+ /**
539
+ * Get resource history
540
+ */
541
+ getHistory(workerName, limit = 100) {
542
+ const history = resourceHistory.get(workerName) ?? [];
543
+ return history.slice(-limit).map((s) => ({ ...s }));
544
+ },
545
+ /**
546
+ * Get alerts
547
+ */
548
+ getAlerts(workerName, limit = 100) {
549
+ const history = alertHistory.get(workerName) ?? [];
550
+ return history.slice(-limit).map((a) => ({ ...a }));
551
+ },
552
+ /**
553
+ * Get trend analysis
554
+ */
555
+ getTrend(workerName, metric, period) {
556
+ return calculateTrend(workerName, metric, period);
557
+ },
558
+ /**
559
+ * Get all trends
560
+ */
561
+ getAllTrends(workerName, period) {
562
+ return {
563
+ cpu: calculateTrend(workerName, 'cpu', period),
564
+ memory: calculateTrend(workerName, 'memory', period),
565
+ disk: calculateTrend(workerName, 'disk', period),
566
+ network: calculateTrend(workerName, 'network', period),
567
+ cost: calculateTrend(workerName, 'cost', period),
568
+ };
569
+ },
570
+ /**
571
+ * Update cost configuration
572
+ */
573
+ updateCostConfig(config) {
574
+ costConfig = { ...costConfig, ...config };
575
+ Logger.info('Resource monitor cost config updated', { costConfig });
576
+ },
577
+ /**
578
+ * Get cost configuration
579
+ */
580
+ getCostConfig() {
581
+ return { ...costConfig };
582
+ },
583
+ /**
584
+ * Calculate projected cost
585
+ */
586
+ calculateProjectedCost(cpuUsagePercent, memoryGB, hoursPerDay, useSpotDiscount = false) {
587
+ const cpuCores = safeCpuCount();
588
+ const cpuCostPerHour = cpuCores * (cpuUsagePercent / 100) * costConfig.computeCostPerCoreHour;
589
+ const memoryCostPerHour = memoryGB * costConfig.memoryCostPerGBHour;
590
+ let totalCostPerHour = cpuCostPerHour + memoryCostPerHour;
591
+ if (useSpotDiscount) {
592
+ totalCostPerHour *= 1 - costConfig.spotInstanceDiscount / 100;
593
+ }
594
+ return {
595
+ daily: totalCostPerHour * hoursPerDay,
596
+ monthly: totalCostPerHour * hoursPerDay * 30,
597
+ yearly: totalCostPerHour * hoursPerDay * 365,
598
+ };
599
+ },
600
+ /**
601
+ * Get system information
602
+ */
603
+ getSystemInfo() {
604
+ return {
605
+ platform: safePlatform(),
606
+ arch: safeArch(),
607
+ hostname: safeHostname(),
608
+ cpus: safeCpuCount(),
609
+ totalMemory: safeTotalMemory(),
610
+ freeMemory: safeFreeMemory(),
611
+ uptime: safeUptime(),
612
+ };
613
+ },
614
+ /**
615
+ * Clear history for a worker
616
+ */
617
+ clearHistory(workerName) {
618
+ resourceHistory.delete(workerName);
619
+ alertHistory.delete(workerName);
620
+ Logger.info(`Cleared resource history for ${workerName}`);
621
+ },
622
+ /**
623
+ * Shutdown
624
+ */
625
+ shutdown() {
626
+ ResourceMonitor.stop();
627
+ resourceHistory.clear();
628
+ alertHistory.clear();
629
+ Logger.info('ResourceMonitor shutdown complete');
630
+ },
631
+ });
632
+ // Graceful shutdown handled by WorkerShutdown