@zintrust/core 0.1.42 → 0.1.44
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.
- package/README.md +1 -0
- package/app/Controllers/AuthController.d.ts +10 -0
- package/app/Controllers/AuthController.d.ts.map +1 -0
- package/app/Controllers/AuthController.js +201 -0
- package/app/Controllers/UserController.d.ts +9 -0
- package/app/Controllers/UserController.d.ts.map +1 -0
- package/app/Controllers/UserController.js +8 -0
- package/app/Controllers/UserQueryBuilderController.d.ts +16 -0
- package/app/Controllers/UserQueryBuilderController.d.ts.map +1 -0
- package/app/Controllers/UserQueryBuilderController.js +404 -0
- package/app/Middleware/ProfilerMiddleware.d.ts +12 -0
- package/app/Middleware/ProfilerMiddleware.d.ts.map +1 -0
- package/app/Middleware/ProfilerMiddleware.js +47 -0
- package/app/Middleware/index.d.ts +59 -0
- package/app/Middleware/index.d.ts.map +1 -0
- package/app/Middleware/index.js +215 -0
- package/app/Models/Post.d.ts +14 -0
- package/app/Models/Post.d.ts.map +1 -0
- package/app/Models/Post.js +27 -0
- package/app/Models/User.d.ts +14 -0
- package/app/Models/User.d.ts.map +1 -0
- package/app/Models/User.js +44 -0
- package/app/Schedules/JobTracking.d.ts +3 -0
- package/app/Schedules/JobTracking.d.ts.map +1 -0
- package/app/Schedules/JobTracking.js +13 -0
- package/app/Schedules/index.d.ts +2 -0
- package/app/Schedules/index.d.ts.map +1 -0
- package/app/Schedules/index.js +1 -0
- package/app/Toolkit/Broadcast/sendBroadcast.d.ts +6 -0
- package/app/Toolkit/Broadcast/sendBroadcast.d.ts.map +1 -0
- package/app/Toolkit/Broadcast/sendBroadcast.js +5 -0
- package/app/Toolkit/Mail/sendWelcomeEmail.d.ts +6 -0
- package/app/Toolkit/Mail/sendWelcomeEmail.d.ts.map +1 -0
- package/app/Toolkit/Mail/sendWelcomeEmail.js +20 -0
- package/app/Toolkit/Notification/sendSlackNotification.d.ts +8 -0
- package/app/Toolkit/Notification/sendSlackNotification.d.ts.map +1 -0
- package/app/Toolkit/Notification/sendSlackNotification.js +5 -0
- package/app/Toolkit/Notification/sendSms.d.ts +6 -0
- package/app/Toolkit/Notification/sendSms.d.ts.map +1 -0
- package/app/Toolkit/Notification/sendSms.js +5 -0
- package/app/Types/controller.d.ts +42 -0
- package/app/Types/controller.d.ts.map +1 -0
- package/app/Types/controller.js +1 -0
- package/config/broadcast.d.ts +38 -0
- package/config/broadcast.d.ts.map +1 -0
- package/config/broadcast.js +37 -0
- package/config/cache.d.ts +40 -0
- package/config/cache.d.ts.map +1 -0
- package/config/cache.js +39 -0
- package/config/database.d.ts +58 -0
- package/config/database.d.ts.map +1 -0
- package/config/database.js +65 -0
- package/config/mail.d.ts +51 -0
- package/config/mail.d.ts.map +1 -0
- package/config/mail.js +69 -0
- package/config/middleware.d.ts +11 -0
- package/config/middleware.d.ts.map +1 -0
- package/config/middleware.js +30 -0
- package/config/notification.d.ts +33 -0
- package/config/notification.d.ts.map +1 -0
- package/config/notification.js +33 -0
- package/config/queue.d.ts +55 -0
- package/config/queue.d.ts.map +1 -0
- package/config/queue.js +87 -0
- package/config/storage.d.ts +59 -0
- package/config/storage.d.ts.map +1 -0
- package/config/storage.js +59 -0
- package/config/workers.d.ts +54 -0
- package/config/workers.d.ts.map +1 -0
- package/config/workers.js +83 -0
- package/package.json +12 -5
- package/packages/cloudflare-d1-proxy/src/index.d.ts +48 -0
- package/packages/cloudflare-d1-proxy/src/index.d.ts.map +1 -0
- package/packages/cloudflare-d1-proxy/src/index.js +387 -0
- package/packages/cloudflare-kv-proxy/src/index.d.ts +44 -0
- package/packages/cloudflare-kv-proxy/src/index.d.ts.map +1 -0
- package/packages/cloudflare-kv-proxy/src/index.js +325 -0
- package/packages/queue-monitor/src/QueueMonitoringService.d.ts +35 -0
- package/packages/queue-monitor/src/QueueMonitoringService.d.ts.map +1 -0
- package/packages/queue-monitor/src/QueueMonitoringService.js +194 -0
- package/packages/queue-monitor/src/connection.d.ts +3 -0
- package/packages/queue-monitor/src/connection.d.ts.map +1 -0
- package/packages/queue-monitor/src/connection.js +1 -0
- package/packages/queue-monitor/src/dashboard-ui.d.ts +7 -0
- package/packages/queue-monitor/src/dashboard-ui.d.ts.map +1 -0
- package/packages/queue-monitor/src/dashboard-ui.js +997 -0
- package/packages/queue-monitor/src/driver.d.ts +15 -0
- package/packages/queue-monitor/src/driver.d.ts.map +1 -0
- package/packages/queue-monitor/src/driver.js +115 -0
- package/packages/queue-monitor/src/index.d.ts +71 -0
- package/packages/queue-monitor/src/index.d.ts.map +1 -0
- package/packages/queue-monitor/src/index.js +296 -0
- package/packages/queue-monitor/src/metrics.d.ts +27 -0
- package/packages/queue-monitor/src/metrics.d.ts.map +1 -0
- package/packages/queue-monitor/src/metrics.js +92 -0
- package/packages/queue-monitor/src/worker.d.ts +8 -0
- package/packages/queue-monitor/src/worker.d.ts.map +1 -0
- package/packages/queue-monitor/src/worker.js +35 -0
- package/packages/queue-redis/src/BullMQRedisQueue.d.ts +26 -0
- package/packages/queue-redis/src/BullMQRedisQueue.d.ts.map +1 -0
- package/packages/queue-redis/src/BullMQRedisQueue.js +463 -0
- package/packages/queue-redis/src/HttpQueueDriver.d.ts +18 -0
- package/packages/queue-redis/src/HttpQueueDriver.d.ts.map +1 -0
- package/packages/queue-redis/src/HttpQueueDriver.js +249 -0
- package/packages/queue-redis/src/QueueHttpGateway.d.ts +16 -0
- package/packages/queue-redis/src/QueueHttpGateway.d.ts.map +1 -0
- package/packages/queue-redis/src/QueueHttpGateway.js +217 -0
- package/packages/queue-redis/src/RedisPublishClient.d.ts +14 -0
- package/packages/queue-redis/src/RedisPublishClient.d.ts.map +1 -0
- package/packages/queue-redis/src/RedisPublishClient.js +251 -0
- package/packages/queue-redis/src/index.d.ts +12 -0
- package/packages/queue-redis/src/index.d.ts.map +1 -0
- package/packages/queue-redis/src/index.js +10 -0
- package/packages/queue-redis/src/register.d.ts +6 -0
- package/packages/queue-redis/src/register.d.ts.map +1 -0
- package/packages/queue-redis/src/register.js +21 -0
- package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts +11 -0
- package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts.map +1 -0
- package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.js +32 -0
- package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts +11 -0
- package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts.map +1 -0
- package/packages/workers/migrations/20260123180000_create_queue_jobs_table.js +46 -0
- package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts +7 -0
- package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts.map +1 -0
- package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.js +44 -0
- package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts +7 -0
- package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts.map +1 -0
- package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.js +104 -0
- package/packages/workers/src/AnomalyDetection.d.ts +107 -0
- package/packages/workers/src/AnomalyDetection.d.ts.map +1 -0
- package/packages/workers/src/AnomalyDetection.js +329 -0
- package/packages/workers/src/AutoScaler.d.ts +128 -0
- package/packages/workers/src/AutoScaler.d.ts.map +1 -0
- package/packages/workers/src/AutoScaler.js +425 -0
- package/packages/workers/src/BroadcastWorker.d.ts +24 -0
- package/packages/workers/src/BroadcastWorker.d.ts.map +1 -0
- package/packages/workers/src/BroadcastWorker.js +24 -0
- package/packages/workers/src/CanaryController.d.ts +104 -0
- package/packages/workers/src/CanaryController.d.ts.map +1 -0
- package/packages/workers/src/CanaryController.js +424 -0
- package/packages/workers/src/ChaosEngineering.d.ts +80 -0
- package/packages/workers/src/ChaosEngineering.d.ts.map +1 -0
- package/packages/workers/src/ChaosEngineering.js +229 -0
- package/packages/workers/src/CircuitBreaker.d.ts +107 -0
- package/packages/workers/src/CircuitBreaker.d.ts.map +1 -0
- package/packages/workers/src/CircuitBreaker.js +374 -0
- package/packages/workers/src/ClusterLock.d.ts +91 -0
- package/packages/workers/src/ClusterLock.d.ts.map +1 -0
- package/packages/workers/src/ClusterLock.js +397 -0
- package/packages/workers/src/ComplianceManager.d.ts +178 -0
- package/packages/workers/src/ComplianceManager.d.ts.map +1 -0
- package/packages/workers/src/ComplianceManager.js +556 -0
- package/packages/workers/src/DatacenterOrchestrator.d.ts +134 -0
- package/packages/workers/src/DatacenterOrchestrator.d.ts.map +1 -0
- package/packages/workers/src/DatacenterOrchestrator.js +404 -0
- package/packages/workers/src/DeadLetterQueue.d.ts +123 -0
- package/packages/workers/src/DeadLetterQueue.d.ts.map +1 -0
- package/packages/workers/src/DeadLetterQueue.js +544 -0
- package/packages/workers/src/HealthMonitor.d.ts +43 -0
- package/packages/workers/src/HealthMonitor.d.ts.map +1 -0
- package/packages/workers/src/HealthMonitor.js +312 -0
- package/packages/workers/src/MultiQueueWorker.d.ts +90 -0
- package/packages/workers/src/MultiQueueWorker.d.ts.map +1 -0
- package/packages/workers/src/MultiQueueWorker.js +282 -0
- package/packages/workers/src/NotificationWorker.d.ts +24 -0
- package/packages/workers/src/NotificationWorker.d.ts.map +1 -0
- package/packages/workers/src/NotificationWorker.js +23 -0
- package/packages/workers/src/Observability.d.ts +154 -0
- package/packages/workers/src/Observability.d.ts.map +1 -0
- package/packages/workers/src/Observability.js +538 -0
- package/packages/workers/src/PluginManager.d.ts +124 -0
- package/packages/workers/src/PluginManager.d.ts.map +1 -0
- package/packages/workers/src/PluginManager.js +392 -0
- package/packages/workers/src/PriorityQueue.d.ts +118 -0
- package/packages/workers/src/PriorityQueue.d.ts.map +1 -0
- package/packages/workers/src/PriorityQueue.js +276 -0
- package/packages/workers/src/ResourceMonitor.d.ts +165 -0
- package/packages/workers/src/ResourceMonitor.d.ts.map +1 -0
- package/packages/workers/src/ResourceMonitor.js +632 -0
- package/packages/workers/src/SLAMonitor.d.ts +111 -0
- package/packages/workers/src/SLAMonitor.d.ts.map +1 -0
- package/packages/workers/src/SLAMonitor.js +274 -0
- package/packages/workers/src/WorkerFactory.d.ts +218 -0
- package/packages/workers/src/WorkerFactory.d.ts.map +1 -0
- package/packages/workers/src/WorkerFactory.js +2253 -0
- package/packages/workers/src/WorkerInit.d.ts +86 -0
- package/packages/workers/src/WorkerInit.d.ts.map +1 -0
- package/packages/workers/src/WorkerInit.js +307 -0
- package/packages/workers/src/WorkerMetrics.d.ts +116 -0
- package/packages/workers/src/WorkerMetrics.d.ts.map +1 -0
- package/packages/workers/src/WorkerMetrics.js +570 -0
- package/packages/workers/src/WorkerRegistry.d.ts +152 -0
- package/packages/workers/src/WorkerRegistry.d.ts.map +1 -0
- package/packages/workers/src/WorkerRegistry.js +396 -0
- package/packages/workers/src/WorkerShutdown.d.ts +70 -0
- package/packages/workers/src/WorkerShutdown.d.ts.map +1 -0
- package/packages/workers/src/WorkerShutdown.js +185 -0
- package/packages/workers/src/WorkerVersioning.d.ts +108 -0
- package/packages/workers/src/WorkerVersioning.d.ts.map +1 -0
- package/packages/workers/src/WorkerVersioning.js +300 -0
- package/packages/workers/src/config/workerConfig.d.ts +5 -0
- package/packages/workers/src/config/workerConfig.d.ts.map +1 -0
- package/packages/workers/src/config/workerConfig.js +25 -0
- package/packages/workers/src/createQueueWorker.d.ts +26 -0
- package/packages/workers/src/createQueueWorker.d.ts.map +1 -0
- package/packages/workers/src/createQueueWorker.js +367 -0
- package/packages/workers/src/dashboard/index.d.ts +2 -0
- package/packages/workers/src/dashboard/index.d.ts.map +1 -0
- package/packages/workers/src/dashboard/index.js +1 -0
- package/packages/workers/src/dashboard/types.d.ts +123 -0
- package/packages/workers/src/dashboard/types.d.ts.map +1 -0
- package/packages/workers/src/dashboard/types.js +1 -0
- package/packages/workers/src/dashboard/workers-api.d.ts +5 -0
- package/packages/workers/src/dashboard/workers-api.d.ts.map +1 -0
- package/packages/workers/src/dashboard/workers-api.js +738 -0
- package/packages/workers/src/helper/index.d.ts +6 -0
- package/packages/workers/src/helper/index.d.ts.map +1 -0
- package/packages/workers/src/helper/index.js +10 -0
- package/packages/workers/src/http/WorkerApiController.d.ts +39 -0
- package/packages/workers/src/http/WorkerApiController.d.ts.map +1 -0
- package/packages/workers/src/http/WorkerApiController.js +313 -0
- package/packages/workers/src/http/WorkerController.d.ts +375 -0
- package/packages/workers/src/http/WorkerController.d.ts.map +1 -0
- package/packages/workers/src/http/WorkerController.js +1454 -0
- package/packages/workers/src/http/WorkerMonitoringService.d.ts +12 -0
- package/packages/workers/src/http/WorkerMonitoringService.d.ts.map +1 -0
- package/packages/workers/src/http/WorkerMonitoringService.js +89 -0
- package/packages/workers/src/http/middleware/CustomValidation.d.ts +93 -0
- package/packages/workers/src/http/middleware/CustomValidation.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/CustomValidation.js +270 -0
- package/packages/workers/src/http/middleware/DatacenterValidator.d.ts +4 -0
- package/packages/workers/src/http/middleware/DatacenterValidator.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/DatacenterValidator.js +94 -0
- package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts +8 -0
- package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/EditWorkerValidation.js +56 -0
- package/packages/workers/src/http/middleware/FeaturesValidator.d.ts +4 -0
- package/packages/workers/src/http/middleware/FeaturesValidator.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/FeaturesValidator.js +60 -0
- package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts +32 -0
- package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/InfrastructureValidator.js +226 -0
- package/packages/workers/src/http/middleware/OptionsValidator.d.ts +4 -0
- package/packages/workers/src/http/middleware/OptionsValidator.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/OptionsValidator.js +112 -0
- package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts +8 -0
- package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/PayloadSanitizer.js +42 -0
- package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts +4 -0
- package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/ProcessorPathSanitizer.js +140 -0
- package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts +4 -0
- package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/QueueNameSanitizer.js +45 -0
- package/packages/workers/src/http/middleware/ValidateDriver.d.ts +8 -0
- package/packages/workers/src/http/middleware/ValidateDriver.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/ValidateDriver.js +20 -0
- package/packages/workers/src/http/middleware/VersionSanitizer.d.ts +4 -0
- package/packages/workers/src/http/middleware/VersionSanitizer.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/VersionSanitizer.js +25 -0
- package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts +4 -0
- package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/WorkerNameSanitizer.js +46 -0
- package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts +28 -0
- package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/WorkerValidationChain.js +186 -0
- package/packages/workers/src/index.d.ts +47 -0
- package/packages/workers/src/index.d.ts.map +1 -0
- package/packages/workers/src/index.js +48 -0
- package/packages/workers/src/routes/workers.d.ts +13 -0
- package/packages/workers/src/routes/workers.d.ts.map +1 -0
- package/packages/workers/src/routes/workers.js +126 -0
- package/packages/workers/src/storage/WorkerStore.d.ts +52 -0
- package/packages/workers/src/storage/WorkerStore.d.ts.map +1 -0
- package/packages/workers/src/storage/WorkerStore.js +259 -0
- package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts +47 -0
- package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts.map +1 -0
- package/packages/workers/src/telemetry/api/TelemetryAPI.js +219 -0
- package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts +18 -0
- package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts.map +1 -0
- package/packages/workers/src/telemetry/api/TelemetryMonitoringService.js +140 -0
- package/packages/workers/src/telemetry/components/AlertPanel.d.ts +2 -0
- package/packages/workers/src/telemetry/components/AlertPanel.d.ts.map +1 -0
- package/packages/workers/src/telemetry/components/AlertPanel.js +13 -0
- package/packages/workers/src/telemetry/components/CostTracking.d.ts +2 -0
- package/packages/workers/src/telemetry/components/CostTracking.d.ts.map +1 -0
- package/packages/workers/src/telemetry/components/CostTracking.js +14 -0
- package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts +2 -0
- package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts.map +1 -0
- package/packages/workers/src/telemetry/components/ResourceUsageChart.js +11 -0
- package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts +2 -0
- package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts.map +1 -0
- package/packages/workers/src/telemetry/components/WorkerHealthChart.js +11 -0
- package/packages/workers/src/telemetry/index.d.ts +16 -0
- package/packages/workers/src/telemetry/index.d.ts.map +1 -0
- package/packages/workers/src/telemetry/index.js +60 -0
- package/packages/workers/src/telemetry/routes/dashboard.d.ts +7 -0
- package/packages/workers/src/telemetry/routes/dashboard.d.ts.map +1 -0
- package/packages/workers/src/telemetry/routes/dashboard.js +608 -0
- package/packages/workers/src/type.d.ts +77 -0
- package/packages/workers/src/type.d.ts.map +1 -0
- package/packages/workers/src/type.js +1 -0
- package/packages/workers/src/ui/router/EmbeddedAssets.d.ts +5 -0
- package/packages/workers/src/ui/router/EmbeddedAssets.d.ts.map +1 -0
- package/packages/workers/src/ui/router/EmbeddedAssets.js +13 -0
- package/packages/workers/src/ui/router/ui.d.ts +4 -0
- package/packages/workers/src/ui/router/ui.d.ts.map +1 -0
- package/packages/workers/src/ui/router/ui.js +208 -0
- package/packages/workers/src/ui/types/worker-ui.d.ts +230 -0
- package/packages/workers/src/ui/types/worker-ui.d.ts.map +1 -0
- package/packages/workers/src/ui/types/worker-ui.js +5 -0
- package/routes/api.d.ts +7 -0
- package/routes/api.d.ts.map +1 -0
- package/routes/api.js +129 -0
- package/routes/broadcast.d.ts +9 -0
- package/routes/broadcast.d.ts.map +1 -0
- package/routes/broadcast.js +27 -0
- package/routes/storage.d.ts +4 -0
- package/routes/storage.d.ts.map +1 -0
- package/routes/storage.js +35 -0
- package/src/cache/Cache.d.ts.map +1 -1
- package/src/cache/Cache.js +40 -8
- package/src/cache/drivers/KVRemoteDriver.d.ts +1 -1
- package/src/cache/drivers/KVRemoteDriver.d.ts.map +1 -1
- package/src/cache/drivers/KVRemoteDriver.js +259 -44
- package/src/cache/drivers/MemoryDriver.d.ts.map +1 -1
- package/src/cache/drivers/MemoryDriver.js +10 -2
- package/src/cache/drivers/RedisDriver.d.ts.map +1 -1
- package/src/cache/drivers/RedisDriver.js +256 -33
- package/src/cli/CLI.d.ts.map +1 -1
- package/src/cli/CLI.js +6 -0
- package/src/cli/commands/DeployCommand.d.ts.map +1 -1
- package/src/cli/commands/DeployCommand.js +12 -1
- package/src/cli/commands/DeployContainersProxyCommand.d.ts +5 -0
- package/src/cli/commands/DeployContainersProxyCommand.d.ts.map +1 -0
- package/src/cli/commands/DeployContainersProxyCommand.js +45 -0
- package/src/cli/commands/DockerCommand.d.ts +5 -0
- package/src/cli/commands/DockerCommand.d.ts.map +1 -0
- package/src/cli/commands/DockerCommand.js +74 -0
- package/src/cli/commands/InitContainerCommand.js +10 -10
- package/src/cli/commands/InitContainersProxyCommand.d.ts +5 -0
- package/src/cli/commands/InitContainersProxyCommand.d.ts.map +1 -0
- package/src/cli/commands/InitContainersProxyCommand.js +159 -0
- package/src/cli/commands/NewCommand.d.ts.map +1 -1
- package/src/cli/commands/NewCommand.js +33 -0
- package/src/cli/commands/PutCommand.d.ts.map +1 -1
- package/src/cli/commands/PutCommand.js +15 -5
- package/src/cli/commands/StartCommand.d.ts.map +1 -1
- package/src/cli/commands/StartCommand.js +43 -4
- package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
- package/src/cli/scaffolding/ProjectScaffolder.js +65 -73
- package/src/cli/utils/DistPackager.d.ts.map +1 -1
- package/src/cli/utils/DistPackager.js +25 -0
- package/src/cli/utils/EnvFileLoader.d.ts +1 -0
- package/src/cli/utils/EnvFileLoader.d.ts.map +1 -1
- package/src/cli/utils/EnvFileLoader.js +14 -0
- package/src/common/RemoteSignedJson.d.ts.map +1 -1
- package/src/common/RemoteSignedJson.js +9 -2
- package/src/config/cache.js +1 -1
- package/src/config/env.d.ts +7 -0
- package/src/config/env.d.ts.map +1 -1
- package/src/config/env.js +8 -0
- package/src/config/queue.js +1 -1
- package/src/functions/cloudflare.d.ts.map +1 -1
- package/src/functions/cloudflare.js +4 -2
- package/src/index.js +3 -3
- package/src/middleware/JwtAuthMiddleware.d.ts.map +1 -1
- package/src/middleware/JwtAuthMiddleware.js +11 -5
- package/src/runtime/RuntimeAdapter.d.ts.map +1 -1
- package/src/runtime/RuntimeAdapter.js +30 -12
- package/src/runtime/adapters/CloudflareAdapter.d.ts.map +1 -1
- package/src/runtime/adapters/CloudflareAdapter.js +15 -4
- package/src/scheduler/Schedule.js +1 -1
- package/src/scheduler/leader/SchedulerLeader.js +1 -1
- package/src/schedules/job-tracking-cleanup.js +1 -1
- package/src/security/TokenRevocation.d.ts +19 -2
- package/src/security/TokenRevocation.d.ts.map +1 -1
- package/src/security/TokenRevocation.js +558 -30
- package/src/templates/project/basic/app/Controllers/AuthController.ts.tpl +11 -3
- package/src/templates/project/basic/config/middleware.ts.tpl +23 -22
- package/src/templates/project/basic/wrangler.jsonc.tpl +28 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Logger } from '../../../../../src/index.js';
|
|
2
|
+
const QUEUE_NAME_PATTERN = /^[a-zA-Z0-9_-]{3,50}$/;
|
|
3
|
+
export const withQueueNameValidation = (handler) => {
|
|
4
|
+
return async (req, res) => {
|
|
5
|
+
try {
|
|
6
|
+
const data = req.data();
|
|
7
|
+
const queueName = data['queueName'];
|
|
8
|
+
if (!queueName) {
|
|
9
|
+
return res.setStatus(400).json({
|
|
10
|
+
error: 'Queue name is required',
|
|
11
|
+
code: 'MISSING_QUEUE_NAME',
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
if (!QUEUE_NAME_PATTERN.test(queueName)) {
|
|
15
|
+
return res.setStatus(400).json({
|
|
16
|
+
error: 'Invalid queue name',
|
|
17
|
+
message: 'Queue name must be 3-50 characters long and contain only letters, numbers, hyphens, and underscores',
|
|
18
|
+
code: 'INVALID_QUEUE_NAME',
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
// Sanitize the queue name
|
|
22
|
+
const sanitizedQueueName = queueName
|
|
23
|
+
.trim()
|
|
24
|
+
.replaceAll(/[^a-zA-Z0-9_-]/g, '')
|
|
25
|
+
.substring(0, 50);
|
|
26
|
+
if (sanitizedQueueName.length < 3) {
|
|
27
|
+
return res.setStatus(400).json({
|
|
28
|
+
error: 'Queue name too short after sanitization',
|
|
29
|
+
message: 'Queue name must be at least 3 characters long',
|
|
30
|
+
code: 'QUEUE_NAME_TOO_SHORT',
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
const currentBody = req.getBody();
|
|
34
|
+
req.setBody({ ...currentBody, queueName: sanitizedQueueName });
|
|
35
|
+
return handler(req, res);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
Logger.error('Queue name validation failed', error);
|
|
39
|
+
return res.setStatus(500).json({
|
|
40
|
+
error: 'Internal validation error',
|
|
41
|
+
code: 'VALIDATION_ERROR',
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate Driver Middleware
|
|
3
|
+
* Ensures the 'driver' query parameter is valid if present.
|
|
4
|
+
*/
|
|
5
|
+
import type { IRequest, IResponse } from '../../../../../src/index.js';
|
|
6
|
+
export type RouteHandler = (req: IRequest, res: IResponse) => Promise<void> | void;
|
|
7
|
+
export declare const withDriverValidation: (handler: RouteHandler) => RouteHandler;
|
|
8
|
+
//# sourceMappingURL=ValidateDriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidateDriver.d.ts","sourceRoot":"","sources":["../../../../../../packages/workers/src/http/middleware/ValidateDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE1D,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAInF,eAAO,MAAM,oBAAoB,GAAI,SAAS,YAAY,KAAG,YAiB5D,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate Driver Middleware
|
|
3
|
+
* Ensures the 'driver' query parameter is valid if present.
|
|
4
|
+
*/
|
|
5
|
+
const VALID_DRIVERS = new Set(['database', 'redis', 'memory']);
|
|
6
|
+
export const withDriverValidation = (handler) => {
|
|
7
|
+
return async (req, res) => {
|
|
8
|
+
const driver = req.getQueryParam('driver');
|
|
9
|
+
// Normalize to string if it's an array (take first)
|
|
10
|
+
const driverValue = Array.isArray(driver) ? driver[0] : driver;
|
|
11
|
+
if (driverValue && !VALID_DRIVERS.has(driverValue)) {
|
|
12
|
+
res.setStatus(400).json({
|
|
13
|
+
error: 'Invalid driver parameter',
|
|
14
|
+
message: 'Driver must be one of: database, redis, memory',
|
|
15
|
+
});
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
return handler(req, res);
|
|
19
|
+
};
|
|
20
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type IRequest, type IResponse } from '../../../../../src/index.js';
|
|
2
|
+
export type RouteHandler = (req: IRequest, res: IResponse) => Promise<void> | void;
|
|
3
|
+
export declare const withVersionValidation: (handler: RouteHandler) => RouteHandler;
|
|
4
|
+
//# sourceMappingURL=VersionSanitizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VersionSanitizer.d.ts","sourceRoot":"","sources":["../../../../../../packages/workers/src/http/middleware/VersionSanitizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEvE,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAInF,eAAO,MAAM,qBAAqB,GAAI,SAAS,YAAY,KAAG,YAuB7D,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Logger } from '../../../../../src/index.js';
|
|
2
|
+
const VERSION_PATTERN = /^\d+\.\d+\.\d+$/;
|
|
3
|
+
export const withVersionValidation = (handler) => {
|
|
4
|
+
return async (req, res) => {
|
|
5
|
+
try {
|
|
6
|
+
const data = req.data();
|
|
7
|
+
const version = data['version'];
|
|
8
|
+
if (version && !VERSION_PATTERN.test(version)) {
|
|
9
|
+
return res.setStatus(400).json({
|
|
10
|
+
error: 'Invalid version format',
|
|
11
|
+
message: 'Version must follow semantic versioning (e.g., 1.0.0)',
|
|
12
|
+
code: 'INVALID_VERSION_FORMAT',
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
return handler(req, res);
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
Logger.error('Version validation failed', error);
|
|
19
|
+
return res.setStatus(500).json({
|
|
20
|
+
error: 'Internal validation error',
|
|
21
|
+
code: 'VALIDATION_ERROR',
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type IRequest, type IResponse } from '../../../../../src/index.js';
|
|
2
|
+
export type RouteHandler = (req: IRequest, res: IResponse) => Promise<void> | void;
|
|
3
|
+
export declare const withWorkerNameValidation: (handler: RouteHandler) => RouteHandler;
|
|
4
|
+
//# sourceMappingURL=WorkerNameSanitizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkerNameSanitizer.d.ts","sourceRoot":"","sources":["../../../../../../packages/workers/src/http/middleware/WorkerNameSanitizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEvE,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAInF,eAAO,MAAM,wBAAwB,GAAI,SAAS,YAAY,KAAG,YAiDhE,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Logger } from '../../../../../src/index.js';
|
|
2
|
+
const WORKER_NAME_PATTERN = /^[a-zA-Z0-9_-]{3,50}$/;
|
|
3
|
+
export const withWorkerNameValidation = (handler) => {
|
|
4
|
+
return async (req, res) => {
|
|
5
|
+
try {
|
|
6
|
+
const data = req.data();
|
|
7
|
+
const workerName = data['name'];
|
|
8
|
+
if (!workerName) {
|
|
9
|
+
return res.setStatus(400).json({
|
|
10
|
+
error: 'Worker name is required',
|
|
11
|
+
code: 'MISSING_WORKER_NAME',
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
if (!WORKER_NAME_PATTERN.test(workerName)) {
|
|
15
|
+
return res.setStatus(400).json({
|
|
16
|
+
error: 'Invalid worker name',
|
|
17
|
+
message: 'Worker name must be 3-50 characters long and contain only letters, numbers, hyphens, and underscores',
|
|
18
|
+
code: 'INVALID_WORKER_NAME',
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
// Sanitize the name
|
|
22
|
+
const sanitizedName = workerName
|
|
23
|
+
.trim()
|
|
24
|
+
.replaceAll(/[^a-zA-Z0-9_-]/g, '')
|
|
25
|
+
.substring(0, 50);
|
|
26
|
+
if (sanitizedName.length < 3) {
|
|
27
|
+
return res.setStatus(400).json({
|
|
28
|
+
error: 'Worker name too short after sanitization',
|
|
29
|
+
message: 'Worker name must be at least 3 characters long',
|
|
30
|
+
code: 'WORKER_NAME_TOO_SHORT',
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
// Update the request data with sanitized value
|
|
34
|
+
const currentBody = req.getBody();
|
|
35
|
+
req.setBody({ ...currentBody, name: sanitizedName });
|
|
36
|
+
return handler(req, res);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
Logger.error('Worker name validation failed', error);
|
|
40
|
+
return res.setStatus(500).json({
|
|
41
|
+
error: 'Internal validation error',
|
|
42
|
+
code: 'VALIDATION_ERROR',
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type IRequest, type IResponse } from '../../../../../src/index.js';
|
|
2
|
+
export type RouteHandler = (req: IRequest, res: IResponse) => Promise<void> | void;
|
|
3
|
+
/**
|
|
4
|
+
* Composite middleware for worker creation validation
|
|
5
|
+
* Validates all required fields for creating a new worker
|
|
6
|
+
*/
|
|
7
|
+
export declare const withCreateWorkerValidation: (handler: RouteHandler) => RouteHandler;
|
|
8
|
+
/**
|
|
9
|
+
* Composite middleware for worker update validation
|
|
10
|
+
* Validates optional fields for updating an existing worker
|
|
11
|
+
*/
|
|
12
|
+
export declare const withUpdateWorkerValidation: (handler: RouteHandler) => RouteHandler;
|
|
13
|
+
/**
|
|
14
|
+
* Composite middleware for worker operation validation
|
|
15
|
+
* Validates worker name for operations like start, stop, restart, etc.
|
|
16
|
+
*/
|
|
17
|
+
export declare const withWorkerOperationValidation: (handler: RouteHandler) => RouteHandler;
|
|
18
|
+
/**
|
|
19
|
+
* Composite middleware for bulk operations validation
|
|
20
|
+
* Validates arrays of worker names and operation parameters
|
|
21
|
+
*/
|
|
22
|
+
export declare const withBulkOperationValidation: (handler: RouteHandler) => RouteHandler;
|
|
23
|
+
/**
|
|
24
|
+
* Composite middleware for canary deployment validation
|
|
25
|
+
* Validates canary-specific parameters
|
|
26
|
+
*/
|
|
27
|
+
export declare const withCanaryDeploymentValidation: (handler: RouteHandler) => RouteHandler;
|
|
28
|
+
//# sourceMappingURL=WorkerValidationChain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkerValidationChain.d.ts","sourceRoot":"","sources":["../../../../../../packages/workers/src/http/middleware/WorkerValidationChain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEvE,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAanF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GAAI,SAAS,YAAY,KAAG,YA2BlE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GAAI,SAAS,YAAY,KAAG,YAIlE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,6BAA6B,GAAI,SAAS,YAAY,KAAG,YAErE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,GAAI,SAAS,YAAY,KAAG,YA8EnE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,8BAA8B,GAAI,SAAS,YAAY,KAAG,YA4EtE,CAAC"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { Logger } from '../../../../../src/index.js';
|
|
2
|
+
// Import individual validators
|
|
3
|
+
import { withDatacenterValidation } from './DatacenterValidator.js';
|
|
4
|
+
import { withFeaturesValidation } from './FeaturesValidator.js';
|
|
5
|
+
import { withInfrastructureValidation } from './InfrastructureValidator.js';
|
|
6
|
+
import { withOptionsValidation } from './OptionsValidator.js';
|
|
7
|
+
import { withStrictPayloadKeys } from './PayloadSanitizer.js';
|
|
8
|
+
import { withProcessorPathValidation } from './ProcessorPathSanitizer.js';
|
|
9
|
+
import { withQueueNameValidation } from './QueueNameSanitizer.js';
|
|
10
|
+
import { withVersionValidation } from './VersionSanitizer.js';
|
|
11
|
+
import { withWorkerNameValidation } from './WorkerNameSanitizer.js';
|
|
12
|
+
/**
|
|
13
|
+
* Composite middleware for worker creation validation
|
|
14
|
+
* Validates all required fields for creating a new worker
|
|
15
|
+
*/
|
|
16
|
+
export const withCreateWorkerValidation = (handler) => {
|
|
17
|
+
return withStrictPayloadKeys([
|
|
18
|
+
'name',
|
|
19
|
+
'queueName',
|
|
20
|
+
'processor',
|
|
21
|
+
'version',
|
|
22
|
+
'options',
|
|
23
|
+
'infrastructure',
|
|
24
|
+
'features',
|
|
25
|
+
'datacenter',
|
|
26
|
+
'activeStatus',
|
|
27
|
+
], withProcessorPathValidation(withWorkerNameValidation(withQueueNameValidation(withVersionValidation(withOptionsValidation(withInfrastructureValidation(withFeaturesValidation(withDatacenterValidation(handler)))))))));
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Composite middleware for worker update validation
|
|
31
|
+
* Validates optional fields for updating an existing worker
|
|
32
|
+
*/
|
|
33
|
+
export const withUpdateWorkerValidation = (handler) => {
|
|
34
|
+
return withVersionValidation(withInfrastructureValidation(withFeaturesValidation(withDatacenterValidation(handler))));
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Composite middleware for worker operation validation
|
|
38
|
+
* Validates worker name for operations like start, stop, restart, etc.
|
|
39
|
+
*/
|
|
40
|
+
export const withWorkerOperationValidation = (handler) => {
|
|
41
|
+
return withWorkerNameValidation(handler);
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Composite middleware for bulk operations validation
|
|
45
|
+
* Validates arrays of worker names and operation parameters
|
|
46
|
+
*/
|
|
47
|
+
export const withBulkOperationValidation = (handler) => {
|
|
48
|
+
return async (req, res) => {
|
|
49
|
+
try {
|
|
50
|
+
const data = req.data();
|
|
51
|
+
const workerNames = data['workerNames'];
|
|
52
|
+
// Handle single worker name or array of names
|
|
53
|
+
const names = Array.isArray(workerNames) ? workerNames : [workerNames];
|
|
54
|
+
// Prevent enormous bulk operations
|
|
55
|
+
const MAX_BULK_NAMES = 1000;
|
|
56
|
+
if (names.length > MAX_BULK_NAMES) {
|
|
57
|
+
return res.setStatus(413).json({
|
|
58
|
+
error: 'Too many worker names',
|
|
59
|
+
message: `Bulk operation exceeds maximum allowed names (${MAX_BULK_NAMES})`,
|
|
60
|
+
code: 'BULK_OPERATION_TOO_LARGE',
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
if (!names || names.length === 0) {
|
|
64
|
+
return res.setStatus(400).json({
|
|
65
|
+
error: 'Worker names are required',
|
|
66
|
+
message: 'At least one worker name must be provided',
|
|
67
|
+
code: 'MISSING_WORKER_NAMES',
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
// Validate each worker name
|
|
71
|
+
const WORKER_NAME_PATTERN = /^[a-zA-Z0-9_-]{3,50}$/;
|
|
72
|
+
for (const name of names) {
|
|
73
|
+
if (!name || typeof name !== 'string') {
|
|
74
|
+
return res.setStatus(400).json({
|
|
75
|
+
error: 'Invalid worker name',
|
|
76
|
+
message: 'Worker name must be a string',
|
|
77
|
+
code: 'INVALID_WORKER_NAME_TYPE',
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
if (!WORKER_NAME_PATTERN.test(name)) {
|
|
81
|
+
return res.setStatus(400).json({
|
|
82
|
+
error: 'Invalid worker name',
|
|
83
|
+
message: `Worker name "${name}" must be 3-50 characters long and contain only letters, numbers, hyphens, and underscores`,
|
|
84
|
+
code: 'INVALID_WORKER_NAME',
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// Sanitize worker names
|
|
89
|
+
const sanitizedNames = names
|
|
90
|
+
.map((name) => name
|
|
91
|
+
.trim()
|
|
92
|
+
.replaceAll(/[^a-zA-Z0-9_-]/g, '')
|
|
93
|
+
.substring(0, 50))
|
|
94
|
+
.filter((name) => name.length >= 3);
|
|
95
|
+
if (sanitizedNames.length === 0) {
|
|
96
|
+
return res.setStatus(400).json({
|
|
97
|
+
error: 'No valid worker names after sanitization',
|
|
98
|
+
message: 'All worker names were invalid after sanitization',
|
|
99
|
+
code: 'NO_VALID_WORKER_NAMES',
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
// Update request data with sanitized names
|
|
103
|
+
const currentBody = req.getBody();
|
|
104
|
+
req.setBody({ ...currentBody, workerNames: sanitizedNames });
|
|
105
|
+
return handler(req, res);
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
Logger.error('Bulk operation validation failed', error);
|
|
109
|
+
return res.setStatus(500).json({
|
|
110
|
+
error: 'Internal validation error',
|
|
111
|
+
code: 'VALIDATION_ERROR',
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Composite middleware for canary deployment validation
|
|
118
|
+
* Validates canary-specific parameters
|
|
119
|
+
*/
|
|
120
|
+
export const withCanaryDeploymentValidation = (handler) => {
|
|
121
|
+
return async (req, res) => {
|
|
122
|
+
try {
|
|
123
|
+
const data = req.data();
|
|
124
|
+
const newVersion = data['newVersion'];
|
|
125
|
+
const initialTrafficPercent = data['initialTrafficPercent'];
|
|
126
|
+
const targetTrafficPercent = data['targetTrafficPercent'];
|
|
127
|
+
// Validate new version
|
|
128
|
+
if (!newVersion) {
|
|
129
|
+
return res.setStatus(400).json({
|
|
130
|
+
error: 'New version is required',
|
|
131
|
+
code: 'MISSING_NEW_VERSION',
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
const VERSION_PATTERN = /^\d+\.\d+\.\d+$/;
|
|
135
|
+
if (!VERSION_PATTERN.test(newVersion)) {
|
|
136
|
+
return res.setStatus(400).json({
|
|
137
|
+
error: 'Invalid version format',
|
|
138
|
+
message: 'Version must follow semantic versioning (e.g., 1.0.0)',
|
|
139
|
+
code: 'INVALID_VERSION_FORMAT',
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
// Validate initial traffic percent
|
|
143
|
+
if (initialTrafficPercent !== undefined) {
|
|
144
|
+
if (typeof initialTrafficPercent !== 'number' ||
|
|
145
|
+
initialTrafficPercent < 0 ||
|
|
146
|
+
initialTrafficPercent > 100) {
|
|
147
|
+
return res.setStatus(400).json({
|
|
148
|
+
error: 'Invalid initial traffic percent',
|
|
149
|
+
message: 'Initial traffic percent must be a number between 0 and 100',
|
|
150
|
+
code: 'INVALID_INITIAL_TRAFFIC_PERCENT',
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// Validate target traffic percent
|
|
155
|
+
if (targetTrafficPercent !== undefined) {
|
|
156
|
+
if (typeof targetTrafficPercent !== 'number' ||
|
|
157
|
+
targetTrafficPercent < 0 ||
|
|
158
|
+
targetTrafficPercent > 100) {
|
|
159
|
+
return res.setStatus(400).json({
|
|
160
|
+
error: 'Invalid target traffic percent',
|
|
161
|
+
message: 'Target traffic percent must be a number between 0 and 100',
|
|
162
|
+
code: 'INVALID_TARGET_TRAFFIC_PERCENT',
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
// Validate traffic progression
|
|
167
|
+
if (initialTrafficPercent !== undefined && targetTrafficPercent !== undefined) {
|
|
168
|
+
if (targetTrafficPercent < initialTrafficPercent) {
|
|
169
|
+
return res.setStatus(400).json({
|
|
170
|
+
error: 'Invalid traffic progression',
|
|
171
|
+
message: 'Target traffic percent must be greater than or equal to initial traffic percent',
|
|
172
|
+
code: 'INVALID_TRAFFIC_PROGRESSION',
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return handler(req, res);
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
Logger.error('Canary deployment validation failed', error);
|
|
180
|
+
return res.setStatus(500).json({
|
|
181
|
+
error: 'Internal validation error',
|
|
182
|
+
code: 'VALIDATION_ERROR',
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worker Management System - Public API
|
|
3
|
+
*
|
|
4
|
+
* Central export file for all worker management modules.
|
|
5
|
+
*/
|
|
6
|
+
export { ClusterLock } from './ClusterLock';
|
|
7
|
+
export { PriorityQueue } from './PriorityQueue';
|
|
8
|
+
export { WorkerMetrics } from './WorkerMetrics';
|
|
9
|
+
export { WorkerRegistry } from './WorkerRegistry';
|
|
10
|
+
export { AutoScaler } from './AutoScaler';
|
|
11
|
+
export { CircuitBreaker } from './CircuitBreaker';
|
|
12
|
+
export { DeadLetterQueue } from './DeadLetterQueue';
|
|
13
|
+
export { HealthMonitor } from './HealthMonitor';
|
|
14
|
+
export { ResourceMonitor } from './ResourceMonitor';
|
|
15
|
+
export { SLAMonitor } from './SLAMonitor';
|
|
16
|
+
export { ComplianceManager } from './ComplianceManager';
|
|
17
|
+
export { Observability } from './Observability';
|
|
18
|
+
export { PluginManager } from './PluginManager';
|
|
19
|
+
export { AnomalyDetection } from './AnomalyDetection';
|
|
20
|
+
export { CanaryController } from './CanaryController';
|
|
21
|
+
export { ChaosEngineering } from './ChaosEngineering';
|
|
22
|
+
export { DatacenterOrchestrator } from './DatacenterOrchestrator';
|
|
23
|
+
export { MultiQueueWorker } from './MultiQueueWorker';
|
|
24
|
+
export { WorkerVersioning } from './WorkerVersioning';
|
|
25
|
+
export { WorkerFactory } from './WorkerFactory';
|
|
26
|
+
export type { ProcessorResolver, WorkerFactoryConfig, WorkerPersistenceConfig, } from './WorkerFactory';
|
|
27
|
+
export { WorkerInit } from './WorkerInit';
|
|
28
|
+
export { WorkerShutdown } from './WorkerShutdown';
|
|
29
|
+
export { WorkerController } from './http/WorkerController';
|
|
30
|
+
export { registerWorkerRoutes } from './routes/workers';
|
|
31
|
+
export { BroadcastWorker } from './BroadcastWorker';
|
|
32
|
+
export { createQueueWorker } from './createQueueWorker';
|
|
33
|
+
export type { CreateQueueWorkerOptions } from './createQueueWorker';
|
|
34
|
+
export { NotificationWorker } from './NotificationWorker';
|
|
35
|
+
export type { RedisConfig, WorkerAutoScalingConfig, WorkerComplianceConfig, WorkerConfig, WorkerCostConfig, WorkerObservabilityConfig, WorkerStatus, WorkerVersioningConfig, WorkersConfigOverrides, WorkersGlobalConfig, } from '../../../src/index.js';
|
|
36
|
+
export type { Job, Worker, WorkerOptions } from 'bullmq';
|
|
37
|
+
export type { IAnomaly, IAnomalyConfig, IForecast, IMetric, IPrediction, IRecommendation, IRootCauseAnalysis, } from './AnomalyDetection';
|
|
38
|
+
export type { IChaosComparison, IChaosExperiment, IChaosReport, IChaosStatus, } from './ChaosEngineering';
|
|
39
|
+
export type { ISLAConfig, ISLAReport, ISLAStatus, ISLAViolation, ITimeRange } from './SLAMonitor';
|
|
40
|
+
export type * from './type';
|
|
41
|
+
/**
|
|
42
|
+
* Package version and build metadata
|
|
43
|
+
* Available at runtime for debugging and health checks
|
|
44
|
+
*/
|
|
45
|
+
export declare const _ZINTRUST_WORKERS_VERSION = "0.1.0";
|
|
46
|
+
export declare const _ZINTRUST_WORKERS_BUILD_DATE = "__BUILD_DATE__";
|
|
47
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/workers/src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGxD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,YAAY,EACV,WAAW,EACX,uBAAuB,EACvB,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,yBAAyB,EACzB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEzD,YAAY,EACV,QAAQ,EACR,cAAc,EACd,SAAS,EACT,OAAO,EACP,WAAW,EACX,eAAe,EACf,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAElG,mBAAmB,QAAQ,CAAC;AAE5B;;;GAGG;AACH,eAAO,MAAM,yBAAyB,UAAU,CAAC;AACjD,eAAO,MAAM,4BAA4B,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worker Management System - Public API
|
|
3
|
+
*
|
|
4
|
+
* Central export file for all worker management modules.
|
|
5
|
+
*/
|
|
6
|
+
// Core Infrastructure
|
|
7
|
+
export { ClusterLock } from './ClusterLock.js';
|
|
8
|
+
export { PriorityQueue } from './PriorityQueue.js';
|
|
9
|
+
export { WorkerMetrics } from './WorkerMetrics.js';
|
|
10
|
+
export { WorkerRegistry } from './WorkerRegistry.js';
|
|
11
|
+
// Resilience & Recovery
|
|
12
|
+
export { AutoScaler } from './AutoScaler.js';
|
|
13
|
+
export { CircuitBreaker } from './CircuitBreaker.js';
|
|
14
|
+
export { DeadLetterQueue } from './DeadLetterQueue.js';
|
|
15
|
+
// Monitoring & Resources
|
|
16
|
+
export { HealthMonitor } from './HealthMonitor.js';
|
|
17
|
+
export { ResourceMonitor } from './ResourceMonitor.js';
|
|
18
|
+
export { SLAMonitor } from './SLAMonitor.js';
|
|
19
|
+
// Compliance & Security
|
|
20
|
+
export { ComplianceManager } from './ComplianceManager.js';
|
|
21
|
+
// Observability
|
|
22
|
+
export { Observability } from './Observability.js';
|
|
23
|
+
// Plugin System
|
|
24
|
+
export { PluginManager } from './PluginManager.js';
|
|
25
|
+
// Advanced Features
|
|
26
|
+
export { AnomalyDetection } from './AnomalyDetection.js';
|
|
27
|
+
export { CanaryController } from './CanaryController.js';
|
|
28
|
+
export { ChaosEngineering } from './ChaosEngineering.js';
|
|
29
|
+
export { DatacenterOrchestrator } from './DatacenterOrchestrator.js';
|
|
30
|
+
export { MultiQueueWorker } from './MultiQueueWorker.js';
|
|
31
|
+
export { WorkerVersioning } from './WorkerVersioning.js';
|
|
32
|
+
// Factory & Lifecycle
|
|
33
|
+
export { WorkerFactory } from './WorkerFactory.js';
|
|
34
|
+
export { WorkerInit } from './WorkerInit.js';
|
|
35
|
+
export { WorkerShutdown } from './WorkerShutdown.js';
|
|
36
|
+
// HTTP Controllers & Routes
|
|
37
|
+
export { WorkerController } from './http/WorkerController.js';
|
|
38
|
+
export { registerWorkerRoutes } from './routes/workers.js';
|
|
39
|
+
// Queue Workers
|
|
40
|
+
export { BroadcastWorker } from './BroadcastWorker.js';
|
|
41
|
+
export { createQueueWorker } from './createQueueWorker.js';
|
|
42
|
+
export { NotificationWorker } from './NotificationWorker.js';
|
|
43
|
+
/**
|
|
44
|
+
* Package version and build metadata
|
|
45
|
+
* Available at runtime for debugging and health checks
|
|
46
|
+
*/
|
|
47
|
+
export const _ZINTRUST_WORKERS_VERSION = '0.1.0';
|
|
48
|
+
export const _ZINTRUST_WORKERS_BUILD_DATE = '__BUILD_DATE__';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worker Management Routes
|
|
3
|
+
* HTTP API for managing workers with dashboard functionality
|
|
4
|
+
*/
|
|
5
|
+
import type { IRouter } from '../../../../src/index.js';
|
|
6
|
+
import { type WorkersDashboardUiOptions } from '../dashboard';
|
|
7
|
+
type WorkerUiOptions = WorkersDashboardUiOptions;
|
|
8
|
+
type RouteOptions = {
|
|
9
|
+
middleware?: ReadonlyArray<string>;
|
|
10
|
+
} | undefined;
|
|
11
|
+
export declare function registerWorkerRoutes(router: IRouter, _options?: WorkerUiOptions, routeOptions?: RouteOptions): void;
|
|
12
|
+
export default registerWorkerRoutes;
|
|
13
|
+
//# sourceMappingURL=workers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workers.d.ts","sourceRoot":"","sources":["../../../../../packages/workers/src/routes/workers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAuB,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAe9D,KAAK,eAAe,GAAG,yBAAyB,CAAC;AACjD,KAAK,YAAY,GAAG;IAAE,UAAU,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAAE,GAAG,SAAS,CAAC;AA0KvE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,EACf,QAAQ,CAAC,EAAE,eAAe,EAC1B,YAAY,CAAC,EAAE,YAAY,GAC1B,IAAI,CAaN;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worker Management Routes
|
|
3
|
+
* HTTP API for managing workers with dashboard functionality
|
|
4
|
+
*/
|
|
5
|
+
import { Cloudflare, Env, Logger, Router } from '../../../../src/index.js';
|
|
6
|
+
import { HealthMonitor } from '../HealthMonitor.js';
|
|
7
|
+
import { ValidationSchemas, withCustomValidation } from '../http/middleware/CustomValidation.js';
|
|
8
|
+
import { withEditWorkerValidation } from '../http/middleware/EditWorkerValidation.js';
|
|
9
|
+
import { withDriverValidation } from '../http/middleware/ValidateDriver.js';
|
|
10
|
+
import { withCreateWorkerValidation, withWorkerOperationValidation, } from '../http/middleware/WorkerValidationChain.js';
|
|
11
|
+
import { WorkerApiController } from '../http/WorkerApiController.js';
|
|
12
|
+
import { WorkerController } from '../http/WorkerController.js';
|
|
13
|
+
import { ResourceMonitor } from '../ResourceMonitor.js';
|
|
14
|
+
import { TelemetryDashboard } from '../telemetry/index.js';
|
|
15
|
+
import { registerStaticAssets } from '../ui/router/ui.js';
|
|
16
|
+
import { WorkerFactory } from '../WorkerFactory.js';
|
|
17
|
+
const controller = WorkerController.create();
|
|
18
|
+
const apiController = WorkerApiController.create();
|
|
19
|
+
function registerCoreWorkerRoutes(r) {
|
|
20
|
+
// Core worker operations
|
|
21
|
+
Router.post(r, '/create', withCreateWorkerValidation(controller.create));
|
|
22
|
+
Router.put(r, '/:name', withCreateWorkerValidation(controller.update));
|
|
23
|
+
// Worker editing with custom validation that handles mapping
|
|
24
|
+
Router.put(r, '/:name/edit', withEditWorkerValidation(controller.update));
|
|
25
|
+
Router.post(r, '/:name/start', withDriverValidation(withWorkerOperationValidation(controller.start)));
|
|
26
|
+
Router.post(r, '/:name/auto-start', withDriverValidation(withWorkerOperationValidation(controller.setAutoStart)));
|
|
27
|
+
Router.post(r, '/:name/stop', withDriverValidation(withWorkerOperationValidation(controller.stop)));
|
|
28
|
+
Router.post(r, '/:name/restart', withDriverValidation(withWorkerOperationValidation(controller.restart)));
|
|
29
|
+
Router.post(r, '/:name/pause', withDriverValidation(withWorkerOperationValidation(controller.pause)));
|
|
30
|
+
Router.post(r, '/:name/resume', withDriverValidation(withWorkerOperationValidation(controller.resume)));
|
|
31
|
+
Router.del(r, '/:name', withDriverValidation(withWorkerOperationValidation(controller.remove)));
|
|
32
|
+
}
|
|
33
|
+
function registerWorkerQueryRoutes(r) {
|
|
34
|
+
// Worker listing and filtering
|
|
35
|
+
Router.get(r, '/', withDriverValidation(withCustomValidation(ValidationSchemas.workerFilter, apiController.listWorkers)));
|
|
36
|
+
Router.get(r, '/:name', withDriverValidation(withWorkerOperationValidation(controller.get)));
|
|
37
|
+
Router.get(r, '/:name/status', withWorkerOperationValidation(controller.status));
|
|
38
|
+
Router.get(r, '/:name/creation-status', withWorkerOperationValidation(controller.getCreationStatus));
|
|
39
|
+
Router.get(r, '/:name/metrics', withWorkerOperationValidation(controller.metrics));
|
|
40
|
+
Router.get(r, '/:name/health', withWorkerOperationValidation(controller.health));
|
|
41
|
+
// Worker details
|
|
42
|
+
Router.get(r, '/:name/details', withDriverValidation(apiController.getWorkerDetailsHandler));
|
|
43
|
+
// Worker driver data for editing
|
|
44
|
+
Router.get(r, '/:name/driver-data', withDriverValidation(apiController.getWorkerDriverDataHandler));
|
|
45
|
+
}
|
|
46
|
+
function registerMonitoringRoutes(r) {
|
|
47
|
+
// SSE events stream for monitoring + workers snapshot
|
|
48
|
+
Router.get(r, '/events', controller.eventsStream);
|
|
49
|
+
// Health monitoring
|
|
50
|
+
Router.post(r, '/:name/monitoring/start', controller.startMonitoring);
|
|
51
|
+
Router.post(r, '/:name/monitoring/stop', controller.stopMonitoring);
|
|
52
|
+
Router.get(r, '/:name/monitoring/history', controller.healthHistory);
|
|
53
|
+
Router.get(r, '/:name/monitoring/trend', controller.healthTrend);
|
|
54
|
+
Router.put(r, '/:name/monitoring/config', controller.updateMonitoringConfig);
|
|
55
|
+
// SLA monitoring
|
|
56
|
+
Router.get(r, '/:name/sla/status', controller.getSlaStatus);
|
|
57
|
+
}
|
|
58
|
+
function registerVersioningRoutes(r) {
|
|
59
|
+
// Versioning
|
|
60
|
+
Router.post(r, '/:name/versions', controller.registerVersion);
|
|
61
|
+
Router.get(r, '/:name/versions', controller.listVersions);
|
|
62
|
+
Router.get(r, '/:name/versions/:version', controller.getVersion);
|
|
63
|
+
}
|
|
64
|
+
function registerUtilityRoutes(r) {
|
|
65
|
+
// Utility endpoints
|
|
66
|
+
Router.get(r, '/drivers', apiController.getDriversHandler);
|
|
67
|
+
Router.get(r, '/queue-data', apiController.getQueueDataHandler);
|
|
68
|
+
Router.get(r, '/health', apiController.getHealthSummaryHandler);
|
|
69
|
+
}
|
|
70
|
+
function registerWorkerLifecycleRoutes(router, middleware) {
|
|
71
|
+
Router.group(router, '/api/workers', (r) => {
|
|
72
|
+
Logger.info('Registering Worker Management Routes');
|
|
73
|
+
registerCoreWorkerRoutes(r);
|
|
74
|
+
if (Cloudflare.getWorkersEnv() === null) {
|
|
75
|
+
registerMonitoringRoutes(r); // ← Move FIRST - has /events
|
|
76
|
+
registerWorkerQueryRoutes(r);
|
|
77
|
+
registerVersioningRoutes(r);
|
|
78
|
+
registerUtilityRoutes(r);
|
|
79
|
+
}
|
|
80
|
+
}, { middleware: middleware });
|
|
81
|
+
}
|
|
82
|
+
function registerWorkerTelemetryRoutes(router, middleware) {
|
|
83
|
+
const options = middleware ? { middleware } : undefined;
|
|
84
|
+
Router.group(router, '/api', (r) => {
|
|
85
|
+
Router.get(r, '/workers/system/summary', async (_req, res) => {
|
|
86
|
+
const workers = WorkerFactory.list();
|
|
87
|
+
const monitoringSummary = await HealthMonitor.getSummary();
|
|
88
|
+
const resourceUsage = ResourceMonitor.getCurrentUsage('system');
|
|
89
|
+
res.json({
|
|
90
|
+
ok: true,
|
|
91
|
+
summary: {
|
|
92
|
+
workers: workers.length,
|
|
93
|
+
monitoring: monitoringSummary,
|
|
94
|
+
resources: resourceUsage,
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
Router.get(r, '/workers/system/monitoring/summary', async (_req, res) => {
|
|
99
|
+
const summary = await HealthMonitor.getSummary();
|
|
100
|
+
res.json({ ok: true, summary });
|
|
101
|
+
});
|
|
102
|
+
Router.get(r, '/resources/current', async (_req, res) => {
|
|
103
|
+
const usage = ResourceMonitor.getCurrentUsage('system');
|
|
104
|
+
res.json({ ok: true, usage });
|
|
105
|
+
});
|
|
106
|
+
Router.get(r, '/resources/trends', async (req, res) => {
|
|
107
|
+
const period = (req.getParam('period') ?? 'day');
|
|
108
|
+
const trends = ResourceMonitor.getAllTrends('system', period);
|
|
109
|
+
res.json({ ok: true, trends });
|
|
110
|
+
});
|
|
111
|
+
}, options);
|
|
112
|
+
}
|
|
113
|
+
export function registerWorkerRoutes(router, _options, routeOptions) {
|
|
114
|
+
registerStaticAssets(router, routeOptions?.middleware ?? []);
|
|
115
|
+
registerWorkerLifecycleRoutes(router, routeOptions?.middleware);
|
|
116
|
+
registerWorkerTelemetryRoutes(router, routeOptions?.middleware);
|
|
117
|
+
// Register Telemetry Dashboard
|
|
118
|
+
const dashboard = TelemetryDashboard.create({
|
|
119
|
+
basePath: '/telemetry',
|
|
120
|
+
});
|
|
121
|
+
dashboard.registerRoutes(router);
|
|
122
|
+
const port = Env.get('PORT', '7777');
|
|
123
|
+
Logger.info(`Worker routes registered at http://127.0.0.1:${port}/workers`);
|
|
124
|
+
Logger.info(`Telemetry dashboard registered at http://127.0.0.1:${port}/telemetry`);
|
|
125
|
+
}
|
|
126
|
+
export default registerWorkerRoutes;
|