@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.
- 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 +27 -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/boot/bootstrap.js +27 -11
- package/src/boot/registry/runtime.d.ts.map +1 -1
- package/src/boot/registry/runtime.js +11 -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 +12 -0
- package/src/cli/commands/ConfigCommand.d.ts.map +1 -1
- package/src/cli/commands/ConfigCommand.js +3 -5
- package/src/cli/commands/D1LearnCommand.d.ts +9 -0
- package/src/cli/commands/D1LearnCommand.d.ts.map +1 -0
- package/src/cli/commands/D1LearnCommand.js +143 -0
- package/src/cli/commands/D1MigrateCommand.d.ts.map +1 -1
- package/src/cli/commands/D1MigrateCommand.js +55 -16
- package/src/cli/commands/InitContainerCommand.d.ts.map +1 -1
- package/src/cli/commands/InitContainerCommand.js +30 -15
- package/src/cli/commands/InitEcosystemCommand.d.ts +6 -0
- package/src/cli/commands/InitEcosystemCommand.d.ts.map +1 -0
- package/src/cli/commands/InitEcosystemCommand.js +51 -0
- package/src/cli/commands/MigrateCommand.d.ts.map +1 -1
- package/src/cli/commands/MigrateCommand.js +78 -36
- package/src/cli/commands/MigrateWorkerCommand.d.ts.map +1 -1
- package/src/cli/commands/MigrateWorkerCommand.js +36 -2
- 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 +6 -0
- package/src/cli/commands/PutCommand.d.ts.map +1 -0
- package/src/cli/commands/PutCommand.js +173 -0
- package/src/cli/commands/QueueRecoveryCommand.d.ts.map +1 -1
- package/src/cli/commands/QueueRecoveryCommand.js +113 -14
- package/src/cli/commands/ScheduleListCommand.d.ts +6 -0
- package/src/cli/commands/ScheduleListCommand.d.ts.map +1 -0
- package/src/cli/commands/ScheduleListCommand.js +62 -0
- package/src/cli/commands/ScheduleRunCommand.d.ts +6 -0
- package/src/cli/commands/ScheduleRunCommand.d.ts.map +1 -0
- package/src/cli/commands/ScheduleRunCommand.js +32 -0
- package/src/cli/commands/ScheduleStartCommand.d.ts +6 -0
- package/src/cli/commands/ScheduleStartCommand.d.ts.map +1 -0
- package/src/cli/commands/ScheduleStartCommand.js +40 -0
- package/src/cli/commands/SecretsCommand.d.ts.map +1 -1
- package/src/cli/commands/SecretsCommand.js +2 -2
- package/src/cli/commands/StartCommand.d.ts.map +1 -1
- package/src/cli/commands/StartCommand.js +23 -1
- package/src/cli/commands/schedule/ScheduleCliSupport.d.ts +6 -0
- package/src/cli/commands/schedule/ScheduleCliSupport.d.ts.map +1 -0
- package/src/cli/commands/schedule/ScheduleCliSupport.js +55 -0
- package/src/cli/config/ConfigManager.d.ts.map +1 -1
- package/src/cli/config/ConfigManager.js +8 -1
- package/src/cli/d1/D1SqlMigrations.d.ts.map +1 -1
- package/src/cli/d1/D1SqlMigrations.js +11 -1
- package/src/cli/d1/WranglerConfig.d.ts.map +1 -1
- package/src/cli/d1/WranglerConfig.js +34 -2
- package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
- package/src/cli/scaffolding/ProjectScaffolder.js +65 -73
- package/src/cli/services/VersionChecker.d.ts.map +1 -1
- package/src/cli/services/VersionChecker.js +5 -1
- package/src/cli/utils/DatabaseCliUtils.d.ts.map +1 -1
- package/src/cli/utils/DatabaseCliUtils.js +6 -1
- 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 +47 -14
- package/src/cli.d.ts +5 -0
- package/src/cli.d.ts.map +1 -0
- package/src/cli.js +4 -0
- package/src/collections/index.d.ts +2 -2
- package/src/collections/index.d.ts.map +1 -1
- package/src/collections/index.js +1 -1
- package/src/common/RemoteSignedJson.d.ts.map +1 -1
- package/src/common/RemoteSignedJson.js +58 -25
- package/src/common/utility.d.ts.map +1 -1
- package/src/common/utility.js +2 -6
- package/src/config/cache.js +1 -1
- package/src/config/cloudflare.d.ts.map +1 -1
- package/src/config/cloudflare.js +19 -8
- package/src/config/env.d.ts +7 -0
- package/src/config/env.d.ts.map +1 -1
- package/src/config/env.js +10 -2
- 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/helper/index.d.ts +225 -0
- package/src/helper/index.d.ts.map +1 -0
- package/src/helper/index.js +347 -0
- package/src/index.d.ts +3 -6
- package/src/index.d.ts.map +1 -1
- package/src/index.js +7 -9
- package/src/middleware/JwtAuthMiddleware.d.ts.map +1 -1
- package/src/middleware/JwtAuthMiddleware.js +11 -5
- package/src/migrations/MigrationDiscovery.d.ts.map +1 -1
- package/src/migrations/MigrationDiscovery.js +2 -1
- package/src/orm/DatabaseAdapter.d.ts +1 -0
- package/src/orm/DatabaseAdapter.d.ts.map +1 -1
- package/src/orm/SchemaStatemenWriter.d.ts +15 -0
- package/src/orm/SchemaStatemenWriter.d.ts.map +1 -0
- package/src/orm/SchemaStatemenWriter.js +78 -0
- package/src/orm/adapters/D1Adapter.d.ts.map +1 -1
- package/src/orm/adapters/D1Adapter.js +52 -2
- package/src/orm/adapters/D1RemoteAdapter.d.ts.map +1 -1
- package/src/orm/adapters/D1RemoteAdapter.js +137 -89
- package/src/orm/adapters/MySQLProxyAdapter.d.ts.map +1 -1
- package/src/orm/adapters/MySQLProxyAdapter.js +100 -81
- package/src/orm/adapters/PostgreSQLProxyAdapter.d.ts.map +1 -1
- package/src/orm/adapters/PostgreSQLProxyAdapter.js +26 -10
- package/src/orm/adapters/SqlProxyAdapterUtils.d.ts.map +1 -1
- package/src/orm/adapters/SqlProxyAdapterUtils.js +2 -1
- package/src/orm/adapters/SqlProxyRegistryMode.d.ts +12 -0
- package/src/orm/adapters/SqlProxyRegistryMode.d.ts.map +1 -0
- package/src/orm/adapters/SqlProxyRegistryMode.js +24 -0
- package/src/orm/adapters/SqlServerProxyAdapter.d.ts +3 -0
- package/src/orm/adapters/SqlServerProxyAdapter.d.ts.map +1 -1
- package/src/orm/adapters/SqlServerProxyAdapter.js +125 -117
- package/src/orm/migrations/MigrationStore.js +1 -1
- package/src/proxy/ProxyRequestParsing.d.ts +9 -0
- package/src/proxy/ProxyRequestParsing.d.ts.map +1 -0
- package/src/proxy/ProxyRequestParsing.js +16 -0
- package/src/proxy/RequestValidator.d.ts.map +1 -1
- package/src/proxy/RequestValidator.js +2 -1
- package/src/proxy/SigningService.js +2 -2
- package/src/proxy/SqlProxyDbOverrides.d.ts +17 -0
- package/src/proxy/SqlProxyDbOverrides.d.ts.map +1 -0
- package/src/proxy/SqlProxyDbOverrides.js +1 -0
- package/src/proxy/SqlProxyServerDeps.d.ts +12 -0
- package/src/proxy/SqlProxyServerDeps.d.ts.map +1 -0
- package/src/proxy/SqlProxyServerDeps.js +9 -0
- package/src/proxy/StatementPayloadValidator.d.ts +13 -0
- package/src/proxy/StatementPayloadValidator.d.ts.map +1 -0
- package/src/proxy/StatementPayloadValidator.js +18 -0
- package/src/proxy/StatementRegistryLoader.d.ts +2 -0
- package/src/proxy/StatementRegistryLoader.d.ts.map +1 -0
- package/src/proxy/StatementRegistryLoader.js +36 -0
- package/src/proxy/StatementRegistryResolver.d.ts +15 -0
- package/src/proxy/StatementRegistryResolver.d.ts.map +1 -0
- package/src/proxy/StatementRegistryResolver.js +34 -0
- package/src/proxy/d1/ZintrustD1Proxy.d.ts +2 -1
- package/src/proxy/d1/ZintrustD1Proxy.d.ts.map +1 -1
- package/src/proxy/d1/ZintrustD1Proxy.js +2 -1
- package/src/proxy/isMutatingSql.d.ts +2 -0
- package/src/proxy/isMutatingSql.d.ts.map +1 -0
- package/src/proxy/isMutatingSql.js +12 -0
- package/src/proxy/kv/ZintrustKvProxy.d.ts +2 -1
- package/src/proxy/kv/ZintrustKvProxy.d.ts.map +1 -1
- package/src/proxy/kv/ZintrustKvProxy.js +2 -1
- package/src/proxy/mysql/MySqlProxyServer.d.ts +2 -8
- package/src/proxy/mysql/MySqlProxyServer.d.ts.map +1 -1
- package/src/proxy/mysql/MySqlProxyServer.js +84 -51
- package/src/proxy/postgres/PostgresProxyServer.d.ts +2 -8
- package/src/proxy/postgres/PostgresProxyServer.d.ts.map +1 -1
- package/src/proxy/postgres/PostgresProxyServer.js +86 -48
- package/src/proxy/smtp/SmtpProxyServer.d.ts.map +1 -1
- package/src/proxy/smtp/SmtpProxyServer.js +6 -5
- package/src/proxy/sqlserver/SqlServerProxyServer.d.ts +2 -8
- package/src/proxy/sqlserver/SqlServerProxyServer.d.ts.map +1 -1
- package/src/proxy/sqlserver/SqlServerProxyServer.js +84 -49
- package/src/proxy.d.ts +4 -0
- package/src/proxy.d.ts.map +1 -0
- package/src/proxy.js +3 -0
- 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.d.ts +36 -0
- package/src/scheduler/Schedule.d.ts.map +1 -0
- package/src/scheduler/Schedule.js +197 -0
- package/src/scheduler/ScheduleHttpGateway.d.ts +8 -0
- package/src/scheduler/ScheduleHttpGateway.d.ts.map +1 -0
- package/src/scheduler/ScheduleHttpGateway.js +196 -0
- package/src/scheduler/ScheduleRunner.d.ts +6 -0
- package/src/scheduler/ScheduleRunner.d.ts.map +1 -1
- package/src/scheduler/ScheduleRunner.js +166 -29
- package/src/scheduler/SchedulerRuntime.d.ts +15 -0
- package/src/scheduler/SchedulerRuntime.d.ts.map +1 -0
- package/src/scheduler/SchedulerRuntime.js +79 -0
- package/src/scheduler/cron/Cron.d.ts +19 -0
- package/src/scheduler/cron/Cron.d.ts.map +1 -0
- package/src/scheduler/cron/Cron.js +200 -0
- package/src/scheduler/leader/SchedulerLeader.d.ts +14 -0
- package/src/scheduler/leader/SchedulerLeader.d.ts.map +1 -0
- package/src/scheduler/leader/SchedulerLeader.js +187 -0
- package/src/scheduler/state/ScheduleStateStore.d.ts +27 -0
- package/src/scheduler/state/ScheduleStateStore.d.ts.map +1 -0
- package/src/scheduler/state/ScheduleStateStore.js +27 -0
- package/src/scheduler/types.d.ts +10 -0
- package/src/scheduler/types.d.ts.map +1 -1
- package/src/schedules/index.d.ts +1 -0
- package/src/schedules/index.d.ts.map +1 -1
- package/src/schedules/index.js +1 -0
- package/src/schedules/job-tracking-cleanup.d.ts +4 -0
- package/src/schedules/job-tracking-cleanup.d.ts.map +1 -0
- package/src/schedules/job-tracking-cleanup.js +116 -0
- package/src/schedules/log-cleanup.d.ts +1 -2
- package/src/schedules/log-cleanup.d.ts.map +1 -1
- package/src/schedules/log-cleanup.js +12 -15
- package/src/security/Sanitizer.d.ts.map +1 -1
- package/src/security/Sanitizer.js +1 -9
- package/src/security/SignedRequest.d.ts.map +1 -1
- package/src/security/SignedRequest.js +2 -2
- 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/docker/docker-compose.ecosystem.yml.tpl +301 -0
- package/src/templates/docker/docker-compose.schedules.yml.tpl +84 -0
- package/src/templates/project/basic/app/Controllers/AuthController.ts.tpl +11 -3
- package/src/templates/project/basic/app/Schedules/index.ts.tpl +0 -0
- package/src/templates/project/basic/config/database.ts.tpl +1 -1
- package/src/templates/project/basic/config/middleware.ts.tpl +23 -22
- package/src/templates/project/basic/wrangler.jsonc.tpl +28 -0
- package/src/toolkit/Secrets/Manifest.d.ts.map +1 -1
- package/src/toolkit/Secrets/Manifest.js +5 -7
- package/src/tools/mail/drivers/Smtp.d.ts.map +1 -1
- package/src/tools/mail/drivers/Smtp.js +7 -1
- package/src/tools/queue/JobReconciliationRunner.d.ts.map +1 -1
- package/src/tools/queue/JobReconciliationRunner.js +7 -39
- package/src/tools/queue/JobRecoveryDaemon.d.ts.map +1 -1
- package/src/tools/queue/JobRecoveryDaemon.js +116 -18
- package/src/tools/queue/JobStateTracker.d.ts +10 -1
- package/src/tools/queue/JobStateTracker.d.ts.map +1 -1
- package/src/tools/queue/JobStateTracker.js +24 -2
- package/src/tools/queue/JobStateTrackerDbPersistence.d.ts.map +1 -1
- package/src/tools/queue/JobStateTrackerDbPersistence.js +93 -2
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { BaseCommand } from '../BaseCommand.js';
|
|
2
|
+
import { resolveNpmPath } from '../../common/index.js';
|
|
3
|
+
import { appConfig } from '../../config/app.js';
|
|
4
|
+
import { ErrorFactory } from '../../exceptions/ZintrustError.js';
|
|
5
|
+
import { execFileSync } from '../../node-singletons/child-process.js';
|
|
6
|
+
import { existsSync, readFileSync } from '../../node-singletons/fs.js';
|
|
7
|
+
import * as path from '../../node-singletons/path.js';
|
|
8
|
+
import { EnvFile } from '../../toolkit/Secrets/EnvFile.js';
|
|
9
|
+
const toStringArray = (value) => {
|
|
10
|
+
if (typeof value === 'string')
|
|
11
|
+
return [value];
|
|
12
|
+
if (!Array.isArray(value))
|
|
13
|
+
return [];
|
|
14
|
+
return value.filter((v) => typeof v === 'string');
|
|
15
|
+
};
|
|
16
|
+
const uniq = (items) => {
|
|
17
|
+
const seen = new Set();
|
|
18
|
+
const out = [];
|
|
19
|
+
for (const item of items) {
|
|
20
|
+
const normalized = item.trim();
|
|
21
|
+
if (normalized === '' || seen.has(normalized))
|
|
22
|
+
continue;
|
|
23
|
+
seen.add(normalized);
|
|
24
|
+
out.push(normalized);
|
|
25
|
+
}
|
|
26
|
+
return out;
|
|
27
|
+
};
|
|
28
|
+
const readZintrustConfig = (cwd) => {
|
|
29
|
+
const filePath = path.join(cwd, '.zintrust.json');
|
|
30
|
+
if (!existsSync(filePath)) {
|
|
31
|
+
return {};
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const raw = readFileSync(filePath, 'utf8');
|
|
35
|
+
const parsed = JSON.parse(raw);
|
|
36
|
+
return typeof parsed === 'object' && parsed !== null ? parsed : {};
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
throw ErrorFactory.createCliError('Failed to parse .zintrust.json', error);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const getConfigArray = (config, key) => {
|
|
43
|
+
const raw = config[key];
|
|
44
|
+
if (!Array.isArray(raw))
|
|
45
|
+
return [];
|
|
46
|
+
return uniq(raw.filter((item) => typeof item === 'string'));
|
|
47
|
+
};
|
|
48
|
+
const resolveConfigGroups = (options) => {
|
|
49
|
+
return uniq(toStringArray(options.var));
|
|
50
|
+
};
|
|
51
|
+
const resolveWranglerEnvs = (options) => {
|
|
52
|
+
const requested = uniq(toStringArray(options.wg));
|
|
53
|
+
if (requested.length === 0)
|
|
54
|
+
return ['worker'];
|
|
55
|
+
return requested;
|
|
56
|
+
};
|
|
57
|
+
const parseEnvPath = (options) => {
|
|
58
|
+
const direct = options['env_path'];
|
|
59
|
+
if (typeof direct === 'string' && direct.trim() !== '')
|
|
60
|
+
return direct;
|
|
61
|
+
return '.env';
|
|
62
|
+
};
|
|
63
|
+
const resolveValue = (key, envMap) => {
|
|
64
|
+
const fromFile = envMap[key];
|
|
65
|
+
const fromProcess = process.env[key];
|
|
66
|
+
return fromFile ?? fromProcess ?? '';
|
|
67
|
+
};
|
|
68
|
+
const getPutTimeoutMs = () => {
|
|
69
|
+
const raw = process.env['ZT_PUT_TIMEOUT_MS'];
|
|
70
|
+
if (typeof raw !== 'string')
|
|
71
|
+
return 120000;
|
|
72
|
+
const parsed = Number.parseInt(raw, 10);
|
|
73
|
+
if (!Number.isFinite(parsed) || parsed <= 0)
|
|
74
|
+
return 120000;
|
|
75
|
+
return parsed;
|
|
76
|
+
};
|
|
77
|
+
const putSecret = (wranglerEnv, key, value) => {
|
|
78
|
+
const npmPath = resolveNpmPath();
|
|
79
|
+
execFileSync(npmPath, ['exec', '--yes', '--', 'wrangler', 'secret', 'put', key, '--env', wranglerEnv], {
|
|
80
|
+
stdio: ['pipe', 'inherit', 'inherit'],
|
|
81
|
+
input: value,
|
|
82
|
+
encoding: 'utf8',
|
|
83
|
+
timeout: getPutTimeoutMs(),
|
|
84
|
+
killSignal: 'SIGTERM',
|
|
85
|
+
env: appConfig.getSafeEnv(),
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
const addOptions = (command) => {
|
|
89
|
+
command
|
|
90
|
+
.argument('[provider]', 'Secret provider (cloudflare)', 'cloudflare')
|
|
91
|
+
.option('--wg <env...>', 'Wrangler environment target(s), e.g. d1-proxy kv-proxy')
|
|
92
|
+
.option('--var <configKey...>', 'Config array key(s) from .zintrust.json (e.g. d1_env kv_env)')
|
|
93
|
+
.option('--env_path <path>', 'Path to env file used as source values', '.env')
|
|
94
|
+
.option('--dry-run', 'Show what would be uploaded without calling wrangler');
|
|
95
|
+
};
|
|
96
|
+
const ensureCloudflareProvider = (providerRaw) => {
|
|
97
|
+
if (providerRaw.toLowerCase() === 'cloudflare')
|
|
98
|
+
return;
|
|
99
|
+
throw ErrorFactory.createCliError('Only cloudflare provider is supported for `zin put`');
|
|
100
|
+
};
|
|
101
|
+
const resolveSelectedKeys = (cmd, config, options) => {
|
|
102
|
+
const configGroups = resolveConfigGroups(options);
|
|
103
|
+
if (configGroups.length === 0) {
|
|
104
|
+
throw ErrorFactory.createCliError('No config groups selected. Use --var <group>.');
|
|
105
|
+
}
|
|
106
|
+
const selectedKeys = uniq(configGroups.flatMap((groupKey) => {
|
|
107
|
+
const keys = getConfigArray(config, groupKey);
|
|
108
|
+
if (keys.length === 0) {
|
|
109
|
+
cmd.warn(`Group \`${groupKey}\` is missing or empty in .zintrust.json`);
|
|
110
|
+
}
|
|
111
|
+
return keys;
|
|
112
|
+
}));
|
|
113
|
+
if (selectedKeys.length === 0) {
|
|
114
|
+
throw ErrorFactory.createCliError('No secret keys resolved from selected groups.');
|
|
115
|
+
}
|
|
116
|
+
return selectedKeys;
|
|
117
|
+
};
|
|
118
|
+
const getFailureReason = (error) => error instanceof Error ? error.message : String(error);
|
|
119
|
+
const reportResult = (cmd, pushed, failures) => {
|
|
120
|
+
cmd.success(`Cloudflare secrets report: pushed=${pushed}, failed=${failures.length}`);
|
|
121
|
+
for (const item of failures) {
|
|
122
|
+
cmd.warn(`${item.key} -> ${item.wranglerEnv}: ${item.reason}`);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
const processPut = (cmd, wranglerEnvs, selectedKeys, envMap, dryRun) => {
|
|
126
|
+
let pushed = 0;
|
|
127
|
+
const failures = [];
|
|
128
|
+
for (const wranglerEnv of wranglerEnvs) {
|
|
129
|
+
for (const key of selectedKeys) {
|
|
130
|
+
const value = resolveValue(key, envMap);
|
|
131
|
+
if (value.trim() === '') {
|
|
132
|
+
failures.push({ wranglerEnv, key, reason: 'empty value' });
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
if (!dryRun) {
|
|
137
|
+
cmd.info(`putting ${key} -> ${wranglerEnv}...`);
|
|
138
|
+
putSecret(wranglerEnv, key, value);
|
|
139
|
+
}
|
|
140
|
+
pushed += 1;
|
|
141
|
+
cmd.info(`${dryRun ? '[dry-run] ' : ''}put ${key} -> ${wranglerEnv}`);
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
failures.push({ wranglerEnv, key, reason: getFailureReason(error) });
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return { pushed, failures };
|
|
149
|
+
};
|
|
150
|
+
const execute = async (cmd, options) => {
|
|
151
|
+
ensureCloudflareProvider(String(options.args?.[0] ?? 'cloudflare'));
|
|
152
|
+
const cwd = process.cwd();
|
|
153
|
+
const config = readZintrustConfig(cwd);
|
|
154
|
+
const selectedKeys = resolveSelectedKeys(cmd, config, options);
|
|
155
|
+
const envFilePath = parseEnvPath(options);
|
|
156
|
+
const envMap = await EnvFile.read({ cwd, path: envFilePath });
|
|
157
|
+
const wranglerEnvs = resolveWranglerEnvs(options);
|
|
158
|
+
const dryRun = options.dryRun === true;
|
|
159
|
+
const result = processPut(cmd, wranglerEnvs, selectedKeys, envMap, dryRun);
|
|
160
|
+
reportResult(cmd, result.pushed, result.failures);
|
|
161
|
+
};
|
|
162
|
+
export const PutCommand = Object.freeze({
|
|
163
|
+
create() {
|
|
164
|
+
const cmd = BaseCommand.create({
|
|
165
|
+
name: 'put',
|
|
166
|
+
description: 'Put secrets to Cloudflare with dynamic groups from .zintrust.json',
|
|
167
|
+
addOptions,
|
|
168
|
+
execute: async (options) => execute(cmd, options),
|
|
169
|
+
});
|
|
170
|
+
return cmd;
|
|
171
|
+
},
|
|
172
|
+
});
|
|
173
|
+
export default PutCommand;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueueRecoveryCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/QueueRecoveryCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"QueueRecoveryCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/QueueRecoveryCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAwvBrE,eAAO,MAAM,oBAAoB;cACrB,YAAY;EAsBtB,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { BaseCommand } from '../BaseCommand.js';
|
|
2
|
+
import { databaseConfig } from '../../config/database.js';
|
|
2
3
|
import { Logger } from '../../config/logger.js';
|
|
3
4
|
import { queueConfig } from '../../config/queue.js';
|
|
4
5
|
import { ErrorFactory } from '../../exceptions/ZintrustError.js';
|
|
5
|
-
import { useDatabase } from '../../orm/Database.js';
|
|
6
|
+
import { resetDatabase, useDatabase } from '../../orm/Database.js';
|
|
7
|
+
import { registerDatabasesFromRuntimeConfig } from '../../orm/DatabaseRuntimeRegistration.js';
|
|
6
8
|
import { JobRecoveryDaemon } from '../../tools/queue/JobRecoveryDaemon.js';
|
|
7
9
|
import { JobStateTracker } from '../../tools/queue/JobStateTracker.js';
|
|
8
10
|
import { Queue } from '../../tools/queue/Queue.js';
|
|
@@ -57,6 +59,7 @@ const normalizeStatus = (value) => {
|
|
|
57
59
|
const statuses = [
|
|
58
60
|
'pending',
|
|
59
61
|
'active',
|
|
62
|
+
'enqueued',
|
|
60
63
|
'completed',
|
|
61
64
|
'failed',
|
|
62
65
|
'stalled',
|
|
@@ -98,17 +101,13 @@ const toRecordFromPersisted = (row) => {
|
|
|
98
101
|
};
|
|
99
102
|
};
|
|
100
103
|
const getRecoverableStatuses = () => {
|
|
101
|
-
return new Set([
|
|
102
|
-
'pending_recovery',
|
|
103
|
-
'timeout',
|
|
104
|
-
'stalled',
|
|
105
|
-
'dead_letter',
|
|
106
|
-
]);
|
|
104
|
+
return new Set(['pending_recovery']);
|
|
107
105
|
};
|
|
108
106
|
const getAllStatuses = () => {
|
|
109
107
|
return new Set([
|
|
110
108
|
'pending',
|
|
111
109
|
'active',
|
|
110
|
+
'enqueued',
|
|
112
111
|
'completed',
|
|
113
112
|
'failed',
|
|
114
113
|
'stalled',
|
|
@@ -355,8 +354,35 @@ const runRecoveryOnce = async () => {
|
|
|
355
354
|
const result = await JobRecoveryDaemon.runOnce();
|
|
356
355
|
Logger.info('Queue recovery run completed', result);
|
|
357
356
|
};
|
|
357
|
+
const isDuplicateJobIdError = (error) => {
|
|
358
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
359
|
+
const normalized = message.toLowerCase();
|
|
360
|
+
return normalized.includes('jobid') && normalized.includes('already exists');
|
|
361
|
+
};
|
|
362
|
+
const validatePushable = (record) => {
|
|
363
|
+
if (record.status === 'enqueued') {
|
|
364
|
+
Logger.info('Job is already enqueued; nothing to push', {
|
|
365
|
+
jobId: record.jobId,
|
|
366
|
+
queueName: record.queueName,
|
|
367
|
+
});
|
|
368
|
+
return { ok: false };
|
|
369
|
+
}
|
|
370
|
+
if (record.status !== 'pending_recovery') {
|
|
371
|
+
Logger.error(`Refusing to push job in status ${record.status}. Only pending_recovery can be pushed.`);
|
|
372
|
+
if (typeof process !== 'undefined')
|
|
373
|
+
process.exitCode = 1;
|
|
374
|
+
return { ok: false };
|
|
375
|
+
}
|
|
376
|
+
return { ok: true };
|
|
377
|
+
};
|
|
358
378
|
const runPushForJob = async (record, options) => {
|
|
359
|
-
|
|
379
|
+
if (!validatePushable(record).ok)
|
|
380
|
+
return;
|
|
381
|
+
const basePayload = toSafeObject(record.payload);
|
|
382
|
+
const hasPayload = record.payload !== undefined &&
|
|
383
|
+
record.payload !== null &&
|
|
384
|
+
typeof record.payload === 'object' &&
|
|
385
|
+
Object.keys(basePayload).length > 0;
|
|
360
386
|
if (options.dryRun) {
|
|
361
387
|
Logger.info('Dry-run: skipping enqueue for target job', {
|
|
362
388
|
jobId: record.jobId,
|
|
@@ -365,12 +391,36 @@ const runPushForJob = async (record, options) => {
|
|
|
365
391
|
});
|
|
366
392
|
return;
|
|
367
393
|
}
|
|
368
|
-
|
|
369
|
-
|
|
394
|
+
if (!hasPayload) {
|
|
395
|
+
Logger.error(`Cannot push job because payload is missing in tracker/persistence store: ${record.jobId}. ` +
|
|
396
|
+
'Rehydrate payload_json first (or use policy recovery states) before pushing.');
|
|
397
|
+
if (typeof process !== 'undefined')
|
|
398
|
+
process.exitCode = 1;
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
const payload = {
|
|
402
|
+
...basePayload,
|
|
403
|
+
uniqueId: record.jobId,
|
|
404
|
+
attempts: typeof record.maxAttempts === 'number' ? record.maxAttempts : 3,
|
|
405
|
+
_currentAttempts: Math.max(0, Math.floor(record.attempts ?? 0)),
|
|
406
|
+
timestamp: Date.now(),
|
|
407
|
+
};
|
|
408
|
+
let replayJobId;
|
|
409
|
+
try {
|
|
410
|
+
replayJobId = await Queue.enqueue(record.queueName, payload, 'default');
|
|
411
|
+
}
|
|
412
|
+
catch (error) {
|
|
413
|
+
if (isDuplicateJobIdError(error)) {
|
|
414
|
+
replayJobId = record.jobId;
|
|
415
|
+
}
|
|
416
|
+
else {
|
|
417
|
+
throw error;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
await JobStateTracker.handedOffToQueue({
|
|
370
421
|
queueName: record.queueName,
|
|
371
422
|
jobId: record.jobId,
|
|
372
423
|
reason: `CLI pushed job as ${replayJobId}`,
|
|
373
|
-
retryAt: new Date().toISOString(),
|
|
374
424
|
});
|
|
375
425
|
Logger.info('Target job pushed to queue', {
|
|
376
426
|
originalJobId: record.jobId,
|
|
@@ -378,6 +428,21 @@ const runPushForJob = async (record, options) => {
|
|
|
378
428
|
queueName: record.queueName,
|
|
379
429
|
});
|
|
380
430
|
};
|
|
431
|
+
const isTestRuntime = () => (process.env['NODE_ENV'] ?? '').trim().toLowerCase() === 'test' || Boolean(process.env['VITEST']);
|
|
432
|
+
const cleanupOneOffCli = async () => {
|
|
433
|
+
try {
|
|
434
|
+
QueueReliabilityOrchestrator.stop();
|
|
435
|
+
}
|
|
436
|
+
catch {
|
|
437
|
+
// ignore
|
|
438
|
+
}
|
|
439
|
+
try {
|
|
440
|
+
await resetDatabase();
|
|
441
|
+
}
|
|
442
|
+
catch {
|
|
443
|
+
// ignore
|
|
444
|
+
}
|
|
445
|
+
};
|
|
381
446
|
const runRecoverOneForJob = async (record, options) => {
|
|
382
447
|
if (options.dryRun) {
|
|
383
448
|
Logger.info('Dry-run: skipping policy recovery for target job', {
|
|
@@ -456,10 +521,23 @@ const runTargetedRecovery = async (resolved) => {
|
|
|
456
521
|
return;
|
|
457
522
|
const record = await findRecord(resolved.jobId, resolved.queueName, resolved.allowDbLookup);
|
|
458
523
|
if (record === null) {
|
|
459
|
-
|
|
524
|
+
Logger.error(`Job not found in tracker${resolved.allowDbLookup ? ' or persistence store' : ''}: ${resolved.jobId}`);
|
|
525
|
+
if (typeof process !== 'undefined')
|
|
526
|
+
process.exitCode = 1;
|
|
527
|
+
return;
|
|
528
|
+
}
|
|
529
|
+
if (record.status === 'enqueued' && !resolved.push) {
|
|
530
|
+
Logger.info('Job already enqueued; nothing to recover', {
|
|
531
|
+
jobId: record.jobId,
|
|
532
|
+
queueName: record.queueName,
|
|
533
|
+
});
|
|
534
|
+
return;
|
|
460
535
|
}
|
|
461
536
|
if (!resolved.push && !getRecoverableStatuses().has(record.status)) {
|
|
462
|
-
|
|
537
|
+
Logger.error(`Job status is not recoverable via policy runner: ${record.status}. Use --push to force requeue.`);
|
|
538
|
+
if (typeof process !== 'undefined')
|
|
539
|
+
process.exitCode = 1;
|
|
540
|
+
return;
|
|
463
541
|
}
|
|
464
542
|
if (resolved.push) {
|
|
465
543
|
await runPushForJob(record, { dryRun: resolved.dryRun });
|
|
@@ -480,11 +558,32 @@ const executeQueueRecovery = async (options) => {
|
|
|
480
558
|
const resolved = resolveExecutionOptions(options);
|
|
481
559
|
if (await maybeRunListMode(resolved))
|
|
482
560
|
return;
|
|
483
|
-
|
|
561
|
+
// Ensure DB connections exist for optional persistence lookups.
|
|
562
|
+
// (CLI commands don't run full app bootstrap.)
|
|
563
|
+
registerDatabasesFromRuntimeConfig(databaseConfig);
|
|
564
|
+
const envDefault = (process.env['QUEUE_DRIVER'] ?? '').toString().trim().toLowerCase();
|
|
565
|
+
const cliQueueConfig = {
|
|
566
|
+
...queueConfig,
|
|
567
|
+
default: (envDefault.length > 0
|
|
568
|
+
? envDefault
|
|
569
|
+
: queueConfig.default),
|
|
570
|
+
};
|
|
571
|
+
await registerQueuesFromRuntimeConfig(cliQueueConfig);
|
|
572
|
+
if (!resolved.start) {
|
|
573
|
+
// Queue registration may auto-start orchestrator when JOB_RELIABILITY_AUTOSTART=true.
|
|
574
|
+
// For one-off CLI runs, stop it to avoid noisy intervals.
|
|
575
|
+
QueueReliabilityOrchestrator.stop();
|
|
576
|
+
}
|
|
484
577
|
if (await maybeRunDefaultRecovery(resolved))
|
|
485
578
|
return;
|
|
486
579
|
await runTargetedRecovery(resolved);
|
|
487
580
|
await finalizeRecoveryExecution(resolved);
|
|
581
|
+
if (!resolved.start) {
|
|
582
|
+
await cleanupOneOffCli();
|
|
583
|
+
if (!isTestRuntime() && typeof process !== 'undefined') {
|
|
584
|
+
process.exit(process.exitCode ?? 0);
|
|
585
|
+
}
|
|
586
|
+
}
|
|
488
587
|
};
|
|
489
588
|
export const QueueRecoveryCommand = Object.freeze({
|
|
490
589
|
create() {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScheduleListCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ScheduleListCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAsErE,eAAO,MAAM,mBAAmB;cACpB,YAAY;EAUtB,CAAC;AAEH,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { BaseCommand } from '../BaseCommand.js';
|
|
2
|
+
import { ScheduleCliSupport } from '../commands/schedule/ScheduleCliSupport.js';
|
|
3
|
+
import { Logger } from '../../config/logger.js';
|
|
4
|
+
import { SchedulerRuntime } from '../../scheduler/SchedulerRuntime.js';
|
|
5
|
+
const execute = async (options) => {
|
|
6
|
+
try {
|
|
7
|
+
await ScheduleCliSupport.registerAll();
|
|
8
|
+
const toIso = (ms) => typeof ms === 'number' && Number.isFinite(ms) ? new Date(ms).toISOString() : undefined;
|
|
9
|
+
const rows = (await SchedulerRuntime.listWithState())
|
|
10
|
+
.map(({ schedule: s, state }) => ({
|
|
11
|
+
name: s.name,
|
|
12
|
+
enabled: s.enabled !== false,
|
|
13
|
+
intervalMs: s.intervalMs,
|
|
14
|
+
cron: s.cron,
|
|
15
|
+
timezone: s.timezone,
|
|
16
|
+
runOnStart: s.runOnStart === true,
|
|
17
|
+
consecutiveFailures: state?.consecutiveFailures,
|
|
18
|
+
lastRunAt: toIso(state?.lastRunAt),
|
|
19
|
+
lastSuccessAt: toIso(state?.lastSuccessAt),
|
|
20
|
+
lastErrorAt: toIso(state?.lastErrorAt),
|
|
21
|
+
lastErrorMessage: state?.lastErrorMessage,
|
|
22
|
+
nextRunAt: toIso(state?.nextRunAt),
|
|
23
|
+
}))
|
|
24
|
+
.sort((a, b) => a.name.localeCompare(b.name));
|
|
25
|
+
if (options.json === true) {
|
|
26
|
+
Logger.info(JSON.stringify(rows, null, 2));
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (rows.length === 0) {
|
|
30
|
+
Logger.info('No schedules registered');
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
rows.forEach((row) => {
|
|
34
|
+
const hasText = (value) => typeof value === 'string' && value.trim().length > 0;
|
|
35
|
+
const tzSuffix = hasText(row.timezone) ? ` tz=${row.timezone}` : '';
|
|
36
|
+
const cadence = typeof row.cron === 'string' && row.cron.trim().length > 0
|
|
37
|
+
? `cron=${row.cron}${tzSuffix}`
|
|
38
|
+
: `intervalMs=${row.intervalMs ?? 'manual'}`;
|
|
39
|
+
const hasStateInfo = [row.nextRunAt, row.lastSuccessAt, row.lastErrorAt].some(hasText);
|
|
40
|
+
const extra = hasStateInfo
|
|
41
|
+
? ` next=${row.nextRunAt ?? '-'} lastOk=${row.lastSuccessAt ?? '-'} lastErr=${row.lastErrorAt ?? '-'}`
|
|
42
|
+
: '';
|
|
43
|
+
Logger.info(`${row.name} (enabled=${row.enabled}, ${cadence}, runOnStart=${row.runOnStart}, failures=${row.consecutiveFailures ?? 0})${extra}`);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
await ScheduleCliSupport.shutdownCliResources();
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
export const ScheduleListCommand = Object.freeze({
|
|
51
|
+
create() {
|
|
52
|
+
return BaseCommand.create({
|
|
53
|
+
name: 'schedule:list',
|
|
54
|
+
description: 'List all registered schedules',
|
|
55
|
+
addOptions: (command) => {
|
|
56
|
+
command.option('--json', 'Output JSON');
|
|
57
|
+
},
|
|
58
|
+
execute,
|
|
59
|
+
});
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
export default ScheduleListCommand;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScheduleRunCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ScheduleRunCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA0BrE,eAAO,MAAM,kBAAkB;cACnB,YAAY;EAUtB,CAAC;AAEH,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { BaseCommand } from '../BaseCommand.js';
|
|
2
|
+
import { ScheduleCliSupport } from '../commands/schedule/ScheduleCliSupport.js';
|
|
3
|
+
import { Logger } from '../../config/logger.js';
|
|
4
|
+
import { ErrorFactory } from '../../exceptions/ZintrustError.js';
|
|
5
|
+
import { SchedulerRuntime } from '../../scheduler/SchedulerRuntime.js';
|
|
6
|
+
const execute = async (options) => {
|
|
7
|
+
const name = (options.name ?? '').trim();
|
|
8
|
+
if (name.length === 0)
|
|
9
|
+
throw ErrorFactory.createConfigError('--name is required');
|
|
10
|
+
try {
|
|
11
|
+
await ScheduleCliSupport.registerAll();
|
|
12
|
+
Logger.info('Running schedule once', { name });
|
|
13
|
+
await SchedulerRuntime.runOnce(name);
|
|
14
|
+
Logger.info('Schedule run completed', { name });
|
|
15
|
+
}
|
|
16
|
+
finally {
|
|
17
|
+
await ScheduleCliSupport.shutdownCliResources();
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
export const ScheduleRunCommand = Object.freeze({
|
|
21
|
+
create() {
|
|
22
|
+
return BaseCommand.create({
|
|
23
|
+
name: 'schedule:run',
|
|
24
|
+
description: 'Run a specific schedule once and exit',
|
|
25
|
+
addOptions: (command) => {
|
|
26
|
+
command.option('--name <name>', 'Schedule name to run');
|
|
27
|
+
},
|
|
28
|
+
execute,
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
export default ScheduleRunCommand;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScheduleStartCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ScheduleStartCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA6CrE,eAAO,MAAM,oBAAoB;cACrB,YAAY;EAOtB,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { BaseCommand } from '../BaseCommand.js';
|
|
2
|
+
import { ScheduleCliSupport } from '../commands/schedule/ScheduleCliSupport.js';
|
|
3
|
+
import { Env } from '../../config/env.js';
|
|
4
|
+
import { Logger } from '../../config/logger.js';
|
|
5
|
+
import { ErrorFactory } from '../../exceptions/ZintrustError.js';
|
|
6
|
+
import { SchedulerRuntime } from '../../scheduler/SchedulerRuntime.js';
|
|
7
|
+
const waitForSignal = async () => {
|
|
8
|
+
if (typeof process === 'undefined' || typeof process.once !== 'function') {
|
|
9
|
+
throw ErrorFactory.createGeneralError('schedule:start is only supported in Node.js runtimes');
|
|
10
|
+
}
|
|
11
|
+
return new Promise((resolve) => {
|
|
12
|
+
process.once('SIGTERM', () => resolve('SIGTERM'));
|
|
13
|
+
process.once('SIGINT', () => resolve('SIGINT'));
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
const execute = async (_options) => {
|
|
17
|
+
if (Env.getBool('SCHEDULES_ENABLED', false) === false) {
|
|
18
|
+
Logger.info('Schedules are disabled (SCHEDULES_ENABLED=false); exiting');
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
await ScheduleCliSupport.registerAll();
|
|
22
|
+
const registeredCount = SchedulerRuntime.list().length;
|
|
23
|
+
Logger.info('Starting schedules daemon', { registeredCount });
|
|
24
|
+
SchedulerRuntime.start();
|
|
25
|
+
const signal = await waitForSignal();
|
|
26
|
+
Logger.info('Stopping schedules daemon', { signal });
|
|
27
|
+
const timeoutMs = Env.getInt('SCHEDULE_SHUTDOWN_TIMEOUT_MS', 30000);
|
|
28
|
+
await SchedulerRuntime.stop(timeoutMs);
|
|
29
|
+
Logger.info('Schedules daemon stopped');
|
|
30
|
+
};
|
|
31
|
+
export const ScheduleStartCommand = Object.freeze({
|
|
32
|
+
create() {
|
|
33
|
+
return BaseCommand.create({
|
|
34
|
+
name: 'schedule:start',
|
|
35
|
+
description: 'Start schedules and keep running until SIGINT/SIGTERM',
|
|
36
|
+
execute,
|
|
37
|
+
});
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
export default ScheduleStartCommand;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SecretsCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/SecretsCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"SecretsCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/SecretsCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAqHvF,eAAO,MAAM,cAAc;cACf,YAAY;EAWtB,CAAC;AAEH,eAAe,cAAc,CAAC"}
|
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { BaseCommand } from '../BaseCommand.js';
|
|
12
12
|
import { ErrorFactory } from '../../exceptions/ZintrustError.js';
|
|
13
|
+
import { isArray } from '../../helper/index.js';
|
|
13
14
|
import { SecretsToolkit } from '../../toolkit/Secrets/index.js';
|
|
14
|
-
const isUnknownArray = (value) => Array.isArray(value);
|
|
15
15
|
const getArg = (args, index) => {
|
|
16
|
-
if (!
|
|
16
|
+
if (!isArray(args))
|
|
17
17
|
return undefined;
|
|
18
18
|
const v = args[index];
|
|
19
19
|
return typeof v === 'string' ? v : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StartCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/StartCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"StartCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/StartCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA2lBvF,eAAO,MAAM,YAAY;cACb,YAAY;EA4BtB,CAAC"}
|
|
@@ -132,6 +132,20 @@ const resolveWatchPreference = (options, mode) => {
|
|
|
132
132
|
return options.watch;
|
|
133
133
|
return mode === 'development';
|
|
134
134
|
};
|
|
135
|
+
const resolveCacheEnabledPreference = (options) => {
|
|
136
|
+
const hasCache = hasFlag('--cache');
|
|
137
|
+
const hasNoCache = hasFlag('--no-cache');
|
|
138
|
+
if (hasCache && hasNoCache) {
|
|
139
|
+
throw ErrorFactory.createCliError('Error: Cannot use both --cache and --no-cache.');
|
|
140
|
+
}
|
|
141
|
+
if (hasCache)
|
|
142
|
+
return true;
|
|
143
|
+
if (hasNoCache)
|
|
144
|
+
return false;
|
|
145
|
+
if (typeof options.cache === 'boolean')
|
|
146
|
+
return options.cache;
|
|
147
|
+
return undefined;
|
|
148
|
+
};
|
|
135
149
|
const readPackageJson = (cwd) => {
|
|
136
150
|
const packagePath = path.join(cwd, 'package.json');
|
|
137
151
|
if (!existsSync(packagePath)) {
|
|
@@ -407,7 +421,13 @@ const executeStart = async (options, cmd) => {
|
|
|
407
421
|
await executeSplitStart(cmd, cwd, options);
|
|
408
422
|
return;
|
|
409
423
|
}
|
|
410
|
-
|
|
424
|
+
const cacheEnabled = resolveCacheEnabledPreference(options);
|
|
425
|
+
EnvFileLoader.applyCliOverrides({
|
|
426
|
+
nodeEnv: mode,
|
|
427
|
+
port,
|
|
428
|
+
runtime: effectiveRuntime,
|
|
429
|
+
...(typeof cacheEnabled === 'boolean' ? { cacheEnabled } : {}),
|
|
430
|
+
});
|
|
411
431
|
if (variant === 'wrangler') {
|
|
412
432
|
await executeWranglerStart(cmd, cwd, port, runtime, envName === '' ? undefined : envName);
|
|
413
433
|
return;
|
|
@@ -435,6 +455,8 @@ export const StartCommand = Object.freeze({
|
|
|
435
455
|
.option('--wg', 'Alias for --wrangler')
|
|
436
456
|
.option('--deno', 'Start a local server using the Deno runtime adapter')
|
|
437
457
|
.option('--lambda', 'Start a local server using the AWS Lambda runtime adapter')
|
|
458
|
+
.option('--cache', 'Enable cache functionality')
|
|
459
|
+
.option('--no-cache', 'Disable cache functionality')
|
|
438
460
|
.option('--watch', 'Force watch mode (Node only)')
|
|
439
461
|
.option('--no-watch', 'Disable watch mode (Node only)')
|
|
440
462
|
.option('--mode <development|production|testing>', 'Override app mode')
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScheduleCliSupport.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/schedule/ScheduleCliSupport.ts"],"names":[],"mappings":"AAwDA,eAAO,MAAM,kBAAkB;mBACR,OAAO,CAAC,IAAI,CAAC;gCA1BG,OAAO,CAAC,IAAI,CAAC;EAmClD,CAAC;AAEH,eAAe,kBAAkB,CAAC"}
|