@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
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { BaseCommand } from '../BaseCommand.js';
|
|
2
|
+
import { D1SqlMigrations } from '../d1/D1SqlMigrations.js';
|
|
3
|
+
import { WranglerConfig } from '../d1/WranglerConfig.js';
|
|
2
4
|
import { WranglerD1 } from '../d1/WranglerD1.js';
|
|
3
5
|
import { resolveNpmPath } from '../../common/index.js';
|
|
4
6
|
import { appConfig } from '../../config/app.js';
|
|
7
|
+
import { databaseConfig } from '../../config/database.js';
|
|
5
8
|
import { Logger } from '../../config/logger.js';
|
|
6
9
|
import { ErrorFactory } from '../../exceptions/ZintrustError.js';
|
|
10
|
+
import * as path from '../../node-singletons/path.js';
|
|
7
11
|
const RESOLVED_VOID = Promise.resolve();
|
|
8
12
|
const runWrangler = async (cmd, args) => {
|
|
9
13
|
// Back-compat entrypoint for tests; we only use this for D1 migrations apply.
|
|
@@ -13,30 +17,64 @@ const runWrangler = async (cmd, args) => {
|
|
|
13
17
|
await RESOLVED_VOID;
|
|
14
18
|
return WranglerD1.applyMigrations({ cmd, dbName, isLocal });
|
|
15
19
|
};
|
|
16
|
-
const
|
|
20
|
+
const getDbName = (options) => {
|
|
21
|
+
const value = options['database'];
|
|
22
|
+
return typeof value === 'string' && value.trim() !== '' ? value : 'zintrust_db';
|
|
23
|
+
};
|
|
24
|
+
const buildExecutionContext = (options) => {
|
|
25
|
+
const isWorkerCommand = process.argv.includes('d1:migrate:worker');
|
|
17
26
|
const isLocal = options['local'] === true || options['remote'] !== true;
|
|
18
|
-
const dbName =
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
27
|
+
const dbName = getDbName(options);
|
|
28
|
+
const projectRoot = process.cwd();
|
|
29
|
+
const migrationsRelDir = isWorkerCommand
|
|
30
|
+
? path.join('database', 'migrations', 'd1')
|
|
31
|
+
: WranglerConfig.getD1MigrationsDir(projectRoot, dbName);
|
|
32
|
+
const sourceMigrationsDir = isWorkerCommand
|
|
33
|
+
? path.join('packages', 'workers', 'migrations')
|
|
34
|
+
: databaseConfig.migrations.directory;
|
|
35
|
+
return {
|
|
36
|
+
isLocal,
|
|
37
|
+
dbName,
|
|
38
|
+
projectRoot,
|
|
39
|
+
migrationsRelDir,
|
|
40
|
+
sourceMigrationsDir,
|
|
41
|
+
outputDir: path.join(projectRoot, migrationsRelDir),
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
const handleMigrationError = (cmd, error) => {
|
|
45
|
+
Logger.error('D1 Migration failed', error);
|
|
46
|
+
ErrorFactory.createCliError('D1 Migration failed', error);
|
|
47
|
+
const err = error;
|
|
48
|
+
if (err.stdout !== undefined && err.stdout.length > 0)
|
|
49
|
+
cmd.info(err.stdout.toString());
|
|
50
|
+
if (err.stderr !== undefined && err.stderr.length > 0) {
|
|
51
|
+
const stderr = err.stderr.toString();
|
|
52
|
+
Logger.error('Wrangler stderr', stderr);
|
|
53
|
+
ErrorFactory.createCliError('Wrangler stderr', stderr);
|
|
54
|
+
}
|
|
55
|
+
throw error;
|
|
56
|
+
};
|
|
57
|
+
const executeD1Migrate = async (cmd, options) => {
|
|
58
|
+
const ctx = buildExecutionContext(options);
|
|
59
|
+
cmd.info(`Running D1 migrations for ${ctx.dbName} (${ctx.isLocal ? 'local' : 'remote'})...`);
|
|
60
|
+
cmd.info(`Generating D1 SQL migrations into ${ctx.migrationsRelDir}...`);
|
|
22
61
|
await RESOLVED_VOID;
|
|
23
62
|
try {
|
|
24
|
-
const
|
|
63
|
+
const generated = await D1SqlMigrations.compileAndWrite({
|
|
64
|
+
projectRoot: ctx.projectRoot,
|
|
65
|
+
globalDir: ctx.sourceMigrationsDir,
|
|
66
|
+
extension: databaseConfig.migrations.extension,
|
|
67
|
+
includeGlobal: true,
|
|
68
|
+
outputDir: ctx.outputDir,
|
|
69
|
+
});
|
|
70
|
+
cmd.info(`Generated ${generated.length} SQL migration file(s).`);
|
|
71
|
+
const output = WranglerD1.applyMigrations({ cmd, dbName: ctx.dbName, isLocal: ctx.isLocal });
|
|
25
72
|
if (output !== '')
|
|
26
73
|
cmd.info(output);
|
|
27
74
|
cmd.info('✓ D1 migrations completed successfully');
|
|
28
75
|
}
|
|
29
76
|
catch (error) {
|
|
30
|
-
|
|
31
|
-
ErrorFactory.createCliError('D1 Migration failed', error);
|
|
32
|
-
const err = error;
|
|
33
|
-
if (err.stdout !== undefined && err.stdout.length > 0)
|
|
34
|
-
cmd.info(err.stdout.toString());
|
|
35
|
-
if (err.stderr !== undefined && err.stderr.length > 0)
|
|
36
|
-
Logger.error('Wrangler stderr', err.stderr.toString());
|
|
37
|
-
if (err.stderr !== undefined && err.stderr.length > 0)
|
|
38
|
-
ErrorFactory.createCliError('Wrangler stderr', err.stderr.toString());
|
|
39
|
-
throw error;
|
|
77
|
+
handleMigrationError(cmd, error);
|
|
40
78
|
}
|
|
41
79
|
};
|
|
42
80
|
/**
|
|
@@ -60,6 +98,7 @@ export const D1MigrateCommand = Object.freeze({
|
|
|
60
98
|
const cmd = BaseCommand.create({
|
|
61
99
|
name: 'd1:migrate',
|
|
62
100
|
description: 'Run Cloudflare D1 migrations',
|
|
101
|
+
aliases: ['d1:migrate:worker'],
|
|
63
102
|
addOptions,
|
|
64
103
|
execute: async (options) => executeD1Migrate(cmd, options),
|
|
65
104
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InitContainerCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/InitContainerCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"InitContainerCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/InitContainerCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAmOlE,eAAO,MAAM,oBAAoB;cACrB,YAAY;EAkBtB,CAAC"}
|
|
@@ -76,13 +76,29 @@ services:
|
|
|
76
76
|
- DB_DATABASE_MYSQL=\${DB_DATABASE_MYSQL:-zintrust}
|
|
77
77
|
- DB_USERNAME_MYSQL=\${DB_USERNAME_MYSQL:-zintrust}
|
|
78
78
|
- DB_PASSWORD_MYSQL=\${DB_PASSWORD_MYSQL:-secret}
|
|
79
|
+
|
|
80
|
+
# Cloudflare D1
|
|
81
|
+
- D1_DATABASE_ID=\${D1_DATABASE_ID}
|
|
82
|
+
- D1_ACCOUNT_ID=\${D1_ACCOUNT_ID}
|
|
83
|
+
- D1_API_TOKEN=\${D1_API_TOKEN}
|
|
84
|
+
- D1_REMOTE_URL=\${D1_REMOTE_URL}
|
|
85
|
+
- D1_REMOTE_KEY_ID=\${D1_REMOTE_KEY_ID}
|
|
86
|
+
- D1_REMOTE_SECRET=\${D1_REMOTE_SECRET}
|
|
87
|
+
|
|
88
|
+
# Cloudflare KV
|
|
89
|
+
- KV_NAMESPACE_ID=\${KV_NAMESPACE_ID}
|
|
90
|
+
- KV_ACCOUNT_ID=\${KV_ACCOUNT_ID}
|
|
91
|
+
- KV_API_TOKEN=\${KV_API_TOKEN}
|
|
92
|
+
- KV_REMOTE_URL=\${KV_REMOTE_URL}
|
|
93
|
+
- KV_REMOTE_KEY_ID=\${KV_REMOTE_KEY_ID}
|
|
94
|
+
- KV_REMOTE_SECRET=\${KV_REMOTE_SECRET}
|
|
79
95
|
ports:
|
|
80
96
|
- '7772:7772'
|
|
81
97
|
|
|
82
98
|
`;
|
|
83
99
|
const DOCKERFILE_TEMPLATE = String.raw `# syntax=docker/dockerfile:1.6
|
|
84
100
|
# Build Stage - Compile TypeScript
|
|
85
|
-
FROM node:20-
|
|
101
|
+
FROM node:20-bookworm-slim AS builder
|
|
86
102
|
|
|
87
103
|
WORKDIR /app
|
|
88
104
|
|
|
@@ -90,18 +106,16 @@ WORKDIR /app
|
|
|
90
106
|
ENV NPM_CONFIG_CACHE=/root/.npm
|
|
91
107
|
ENV NPM_CONFIG_PREFER_OFFLINE=true
|
|
92
108
|
|
|
93
|
-
# Reuse npm cache across builds (requires BuildKit)
|
|
94
|
-
ENV NPM_CONFIG_CACHE=/root/.npm
|
|
95
|
-
ENV NPM_CONFIG_PREFER_OFFLINE=true
|
|
96
|
-
|
|
97
109
|
# Install build dependencies for native modules (better-sqlite3, bcrypt)
|
|
98
|
-
RUN
|
|
110
|
+
RUN apt-get update \
|
|
111
|
+
&& apt-get install -y --no-install-recommends python3 make g++ \
|
|
112
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
99
113
|
|
|
100
114
|
# Copy package files
|
|
101
115
|
COPY package.json package-lock.json ./
|
|
102
116
|
|
|
103
117
|
# Install dependencies (including dev dependencies needed for build)
|
|
104
|
-
RUN --mount=type=cache,target=/root/.npm \
|
|
118
|
+
RUN --mount=type=cache,target=/root/.npm,id=zintrust-npm-cache,sharing=locked \
|
|
105
119
|
npm config set fetch-retries 5 \
|
|
106
120
|
&& npm config set fetch-retry-mintimeout 20000 \
|
|
107
121
|
&& npm config set fetch-retry-maxtimeout 120000 \
|
|
@@ -112,10 +126,10 @@ COPY . .
|
|
|
112
126
|
|
|
113
127
|
# Build TypeScript to JavaScript
|
|
114
128
|
ARG BUILD_VARIANT=full
|
|
115
|
-
RUN --mount=type=cache,target=/root/.npm npm run build:dk
|
|
129
|
+
RUN --mount=type=cache,target=/root/.npm,id=zintrust-npm-cache,sharing=locked npm run build:dk
|
|
116
130
|
|
|
117
131
|
# Runtime Stage - Production image
|
|
118
|
-
FROM node:20-
|
|
132
|
+
FROM node:20-bookworm-slim AS runtime
|
|
119
133
|
|
|
120
134
|
WORKDIR /app
|
|
121
135
|
|
|
@@ -125,17 +139,18 @@ ENV PORT=7772
|
|
|
125
139
|
ENV HOST=0.0.0.0
|
|
126
140
|
|
|
127
141
|
# Create non-root user for security
|
|
128
|
-
RUN
|
|
142
|
+
RUN groupadd -g 1001 nodejs && useradd -u 1001 -g 1001 -m -s /usr/sbin/nologin nodejs
|
|
129
143
|
|
|
130
144
|
# Copy package files for production dependencies
|
|
131
145
|
COPY package.json package-lock.json ./
|
|
132
146
|
|
|
133
147
|
# Install only production dependencies (requires build tools for native modules)
|
|
134
|
-
RUN --mount=type=cache,target=/root/.npm \
|
|
135
|
-
|
|
148
|
+
RUN --mount=type=cache,target=/root/.npm,id=zintrust-npm-cache,sharing=locked \
|
|
149
|
+
apt-get update \
|
|
150
|
+
&& apt-get install -y --no-install-recommends python3 make g++ \
|
|
136
151
|
&& npm ci --omit=dev \
|
|
137
|
-
|
|
138
|
-
|
|
152
|
+
&& apt-get purge -y --auto-remove python3 make g++ \
|
|
153
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
139
154
|
|
|
140
155
|
# Copy compiled code from builder stage
|
|
141
156
|
COPY --from=builder /app/dist ./dist
|
|
@@ -157,7 +172,7 @@ EXPOSE 7772
|
|
|
157
172
|
# Start application (compiled JS; no tsx needed in runtime)
|
|
158
173
|
CMD ["node", "dist/src/boot/bootstrap.js"]
|
|
159
174
|
`;
|
|
160
|
-
const backupSuffix = () => new Date().toISOString().
|
|
175
|
+
const backupSuffix = () => new Date().toISOString().replaceAll(/[:.]/g, '-');
|
|
161
176
|
const backupFileIfExists = (filePath) => {
|
|
162
177
|
if (!existsSync(filePath))
|
|
163
178
|
return;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InitEcosystemCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/InitEcosystemCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAoDlE,eAAO,MAAM,oBAAoB;cACrB,YAAY;EAOtB,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { BaseCommand } from '../BaseCommand.js';
|
|
2
|
+
import { PromptHelper } from '../PromptHelper.js';
|
|
3
|
+
import { Logger } from '../../config/logger.js';
|
|
4
|
+
import { copyFileSync, existsSync, readFileSync, writeFileSync } from '../../node-singletons/fs.js';
|
|
5
|
+
import { join } from '../../node-singletons/path.js';
|
|
6
|
+
import { fileURLToPath } from '../../node-singletons/url.js';
|
|
7
|
+
const backupSuffix = () => new Date().toISOString().replaceAll(/[:.]/g, '-');
|
|
8
|
+
const backupFileIfExists = (filePath) => {
|
|
9
|
+
if (!existsSync(filePath))
|
|
10
|
+
return;
|
|
11
|
+
const backupPath = `${filePath}.bak.${backupSuffix()}`;
|
|
12
|
+
copyFileSync(filePath, backupPath);
|
|
13
|
+
Logger.info(`🗂️ Backup created: ${backupPath}`);
|
|
14
|
+
};
|
|
15
|
+
const readTemplate = (relPathFromThisModule) => {
|
|
16
|
+
const absPath = fileURLToPath(new URL(relPathFromThisModule, import.meta.url));
|
|
17
|
+
return readFileSync(absPath, 'utf-8');
|
|
18
|
+
};
|
|
19
|
+
const TEMPLATE_ECOSYSTEM = readTemplate('../../templates/docker/docker-compose.ecosystem.yml.tpl');
|
|
20
|
+
const TEMPLATE_SCHEDULES = readTemplate('../../templates/docker/docker-compose.schedules.yml.tpl');
|
|
21
|
+
const writeScaffoldFile = async (cwd, fileName, content) => {
|
|
22
|
+
const outPath = join(cwd, fileName);
|
|
23
|
+
let shouldWrite = true;
|
|
24
|
+
if (existsSync(outPath)) {
|
|
25
|
+
shouldWrite = await PromptHelper.confirm(`${fileName} already exists. Overwrite?`, false);
|
|
26
|
+
}
|
|
27
|
+
if (!shouldWrite) {
|
|
28
|
+
Logger.info(`Skipped ${fileName}`);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
backupFileIfExists(outPath);
|
|
32
|
+
writeFileSync(outPath, content);
|
|
33
|
+
Logger.info(`✅ Created ${fileName}`);
|
|
34
|
+
};
|
|
35
|
+
const execute = async () => {
|
|
36
|
+
const cwd = process.cwd();
|
|
37
|
+
await writeScaffoldFile(cwd, 'docker-compose.ecosystem.yml', TEMPLATE_ECOSYSTEM);
|
|
38
|
+
await writeScaffoldFile(cwd, 'docker-compose.schedules.yml', TEMPLATE_SCHEDULES);
|
|
39
|
+
Logger.info('✅ Ecosystem scaffolding complete.');
|
|
40
|
+
Logger.info('Next: docker compose -f docker-compose.ecosystem.yml up -d');
|
|
41
|
+
};
|
|
42
|
+
export const InitEcosystemCommand = Object.freeze({
|
|
43
|
+
create() {
|
|
44
|
+
return BaseCommand.create({
|
|
45
|
+
name: 'init:ecosystem',
|
|
46
|
+
description: 'Scaffold docker-compose.ecosystem.yml and docker-compose.schedules.yml',
|
|
47
|
+
execute,
|
|
48
|
+
});
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
export default InitEcosystemCommand;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MigrateCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/MigrateCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"MigrateCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/MigrateCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA0erE;;GAEG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;cACO,YAAY;EAUtB,CAAC"}
|
|
@@ -8,6 +8,7 @@ import { WranglerConfig } from '../d1/WranglerConfig.js';
|
|
|
8
8
|
import { WranglerD1 } from '../d1/WranglerD1.js';
|
|
9
9
|
import { PromptHelper } from '../PromptHelper.js';
|
|
10
10
|
import { confirmProductionRun, mapConnectionToOrmConfig, parseRollbackSteps, } from '../utils/DatabaseCliUtils.js';
|
|
11
|
+
import { EnvFileLoader } from '../utils/EnvFileLoader.js';
|
|
11
12
|
import { readEnvString } from '../../common/ExternalServiceUtils.js';
|
|
12
13
|
import { databaseConfig } from '../../config/database.js';
|
|
13
14
|
import { ErrorFactory } from '../../exceptions/ZintrustError.js';
|
|
@@ -52,7 +53,7 @@ const getServiceArgs = (options) => {
|
|
|
52
53
|
return { service: serviceArg, includeGlobal };
|
|
53
54
|
};
|
|
54
55
|
const isDestructiveAction = (options) => options['fresh'] === true || options['reset'] === true || options['rollback'] === true;
|
|
55
|
-
const
|
|
56
|
+
const isWranglerD1Driver = (driver) => driver === 'd1';
|
|
56
57
|
const describeTargetDatabase = (conn) => {
|
|
57
58
|
switch (conn.driver) {
|
|
58
59
|
case 'sqlite':
|
|
@@ -189,33 +190,47 @@ const runD1Actions = async (params) => {
|
|
|
189
190
|
cmd.info(output);
|
|
190
191
|
cmd.success('D1 migrations completed successfully');
|
|
191
192
|
};
|
|
192
|
-
const
|
|
193
|
-
|
|
194
|
-
if (isD1Driver(conn.driver)) {
|
|
193
|
+
const logOptionsForConn = (cmd, conn, options) => {
|
|
194
|
+
if (isWranglerD1Driver(conn.driver)) {
|
|
195
195
|
cmd.debug(`Migrate command executed with options: ${JSON.stringify(options)}`);
|
|
196
|
+
return;
|
|
196
197
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
198
|
+
const optionsForLog = { ...options };
|
|
199
|
+
delete optionsForLog['database'];
|
|
200
|
+
delete optionsForLog['local'];
|
|
201
|
+
delete optionsForLog['remote'];
|
|
202
|
+
cmd.debug(`Migrate command executed with options: ${JSON.stringify(optionsForLog)}`);
|
|
203
|
+
};
|
|
204
|
+
const warnIfAdapterMissing = (cmd, conn) => {
|
|
205
|
+
if (conn.driver === 'mysql' && DatabaseAdapterRegistry.get('mysql') === undefined) {
|
|
206
|
+
cmd.warn('MySQL adapter is not installed/registered; migrations may not hit a real MySQL DB.');
|
|
207
|
+
cmd.warn('Install via `zin plugin install adapter:mysql` (or `zin add db:mysql`).');
|
|
208
|
+
cmd.debug('[debug] Expected a side-effect import in src/zintrust.plugins.ts like: import "@zintrust/db-mysql/register";');
|
|
203
209
|
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
await runD1Actions({
|
|
208
|
-
options,
|
|
209
|
-
cmd,
|
|
210
|
-
projectRoot: process.cwd(),
|
|
211
|
-
globalDir,
|
|
212
|
-
extension,
|
|
213
|
-
separateTracking,
|
|
214
|
-
service,
|
|
215
|
-
includeGlobal,
|
|
216
|
-
});
|
|
217
|
-
return;
|
|
210
|
+
if (conn.driver === 'postgresql' && DatabaseAdapterRegistry.get('postgresql') === undefined) {
|
|
211
|
+
cmd.warn('PostgreSQL adapter is not installed/registered; migrations may not hit a real PostgreSQL DB.');
|
|
212
|
+
cmd.warn('Install via `zin plugin install adapter:postgres` (or `zin add db:postgres`).');
|
|
218
213
|
}
|
|
214
|
+
};
|
|
215
|
+
const withD1RemoteSqlMode = async (fn) => {
|
|
216
|
+
if (typeof process === 'undefined' || process.env === undefined)
|
|
217
|
+
return fn();
|
|
218
|
+
const prev = process.env['D1_REMOTE_MODE'];
|
|
219
|
+
process.env['D1_REMOTE_MODE'] = 'sql';
|
|
220
|
+
try {
|
|
221
|
+
return await fn();
|
|
222
|
+
}
|
|
223
|
+
finally {
|
|
224
|
+
if (prev === undefined) {
|
|
225
|
+
delete process.env['D1_REMOTE_MODE'];
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
process.env['D1_REMOTE_MODE'] = prev;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
const runOrmMigrationsForConn = async (params) => {
|
|
233
|
+
const { conn, options, cmd, interactive, globalDir, extension, separateTracking, service, includeGlobal, } = params;
|
|
219
234
|
const ormConfig = mapConnectionToOrmConfig(conn);
|
|
220
235
|
const destructive = isDestructiveAction(options);
|
|
221
236
|
const force = options['force'] === true;
|
|
@@ -231,18 +246,7 @@ const processConnection = async (conn, options, cmd, interactive) => {
|
|
|
231
246
|
cmd.info(`[i] Target database: ${describeTargetDatabase(conn)}`);
|
|
232
247
|
cmd.info('[i] Migration tracking table: migrations');
|
|
233
248
|
cmd.debug(`[debug] Registered database adapters: ${DatabaseAdapterRegistry.list().join(', ')}`);
|
|
234
|
-
|
|
235
|
-
// Adapters are registered via side-effect imports in src/zintrust.plugins.ts
|
|
236
|
-
// (generated by `zin plugin install`) and are loaded at CLI startup.
|
|
237
|
-
if (conn.driver === 'mysql' && DatabaseAdapterRegistry.get('mysql') === undefined) {
|
|
238
|
-
cmd.warn('MySQL adapter is not installed/registered; migrations may not hit a real MySQL DB.');
|
|
239
|
-
cmd.warn('Install via `zin plugin install adapter:mysql` (or `zin add db:mysql`).');
|
|
240
|
-
cmd.debug('[debug] Expected a side-effect import in src/zintrust.plugins.ts like: import "@zintrust/db-mysql/register";');
|
|
241
|
-
}
|
|
242
|
-
if (conn.driver === 'postgresql' && DatabaseAdapterRegistry.get('postgresql') === undefined) {
|
|
243
|
-
cmd.warn('PostgreSQL adapter is not installed/registered; migrations may not hit a real PostgreSQL DB.');
|
|
244
|
-
cmd.warn('Install via `zin plugin install adapter:postgres` (or `zin add db:postgres`).');
|
|
245
|
-
}
|
|
249
|
+
warnIfAdapterMissing(cmd, conn);
|
|
246
250
|
const db = Database.create(ormConfig);
|
|
247
251
|
await db.connect();
|
|
248
252
|
try {
|
|
@@ -261,7 +265,45 @@ const processConnection = async (conn, options, cmd, interactive) => {
|
|
|
261
265
|
await db.disconnect();
|
|
262
266
|
}
|
|
263
267
|
};
|
|
268
|
+
const processConnection = async (conn, options, cmd, interactive) => {
|
|
269
|
+
// Avoid confusion: `--database` is a D1-only option (Wrangler binding name), not DB_DATABASE.
|
|
270
|
+
logOptionsForConn(cmd, conn, options);
|
|
271
|
+
const { globalDir, extension, separateTracking } = getMigrationDirs();
|
|
272
|
+
const { service, includeGlobal } = getServiceArgs(options);
|
|
273
|
+
if (isWranglerD1Driver(conn.driver)) {
|
|
274
|
+
await runD1Actions({
|
|
275
|
+
options,
|
|
276
|
+
cmd,
|
|
277
|
+
projectRoot: process.cwd(),
|
|
278
|
+
globalDir,
|
|
279
|
+
extension,
|
|
280
|
+
separateTracking,
|
|
281
|
+
service,
|
|
282
|
+
includeGlobal,
|
|
283
|
+
});
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
const run = async () => runOrmMigrationsForConn({
|
|
287
|
+
conn,
|
|
288
|
+
options,
|
|
289
|
+
cmd,
|
|
290
|
+
interactive,
|
|
291
|
+
globalDir,
|
|
292
|
+
extension,
|
|
293
|
+
separateTracking,
|
|
294
|
+
service,
|
|
295
|
+
includeGlobal,
|
|
296
|
+
});
|
|
297
|
+
if (conn.driver === 'd1-remote') {
|
|
298
|
+
cmd.info('[i] d1-remote migrations: using SQL mode automatically for this CLI run');
|
|
299
|
+
await withD1RemoteSqlMode(run);
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
await run();
|
|
303
|
+
};
|
|
264
304
|
const executeMigrate = async (options, cmd) => {
|
|
305
|
+
// Ensure .env overlays are loaded for CLI runs (needed for d1-remote signing fallbacks).
|
|
306
|
+
EnvFileLoader.ensureLoaded();
|
|
265
307
|
const interactive = getInteractive(options);
|
|
266
308
|
const targets = [];
|
|
267
309
|
if (options['all'] === true) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MigrateWorkerCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/MigrateWorkerCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"MigrateWorkerCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/MigrateWorkerCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAiNrE,eAAO,MAAM,oBAAoB;cACrB,YAAY;EAUtB,CAAC"}
|
|
@@ -9,6 +9,19 @@ import { Migrator } from '../../migrations/Migrator.js';
|
|
|
9
9
|
import * as path from '../../node-singletons/path.js';
|
|
10
10
|
import { Database } from '../../orm/Database.js';
|
|
11
11
|
import { DatabaseAdapterRegistry } from '../../orm/DatabaseAdapterRegistry.js';
|
|
12
|
+
const isBuiltInDriver = (driver) => driver === 'sqlite' ||
|
|
13
|
+
driver === 'mysql' ||
|
|
14
|
+
driver === 'postgresql' ||
|
|
15
|
+
driver === 'sqlserver' ||
|
|
16
|
+
driver === 'd1' ||
|
|
17
|
+
driver === 'd1-remote';
|
|
18
|
+
const getWorkerPersistenceConnectionName = () => {
|
|
19
|
+
if (typeof process === 'undefined')
|
|
20
|
+
return 'default';
|
|
21
|
+
const raw = process.env?.['WORKER_PERSISTENCE_DB_CONNECTION'];
|
|
22
|
+
const value = typeof raw === 'string' ? raw.trim() : '';
|
|
23
|
+
return value.length > 0 ? value : 'default';
|
|
24
|
+
};
|
|
12
25
|
const addOptions = (command) => {
|
|
13
26
|
command
|
|
14
27
|
.option('--status', 'Display migration status (applied, pending, failed)')
|
|
@@ -80,10 +93,16 @@ const runForConnection = async (conn, options, cmd, interactive) => {
|
|
|
80
93
|
});
|
|
81
94
|
if (!proceed)
|
|
82
95
|
return;
|
|
83
|
-
if (!DatabaseAdapterRegistry.has(conn.driver)) {
|
|
96
|
+
if (!isBuiltInDriver(conn.driver) && !DatabaseAdapterRegistry.has(conn.driver)) {
|
|
84
97
|
cmd.warn(`Missing adapter for driver: ${conn.driver}`);
|
|
85
98
|
cmd.warn(`Install via 'zin plugin install adapter:${conn.driver}' (or 'zin add db:${conn.driver}').`);
|
|
86
99
|
}
|
|
100
|
+
const previousD1RemoteMode = typeof process === 'undefined' ? undefined : process.env['D1_REMOTE_MODE'];
|
|
101
|
+
if (conn.driver === 'd1-remote' && typeof process !== 'undefined') {
|
|
102
|
+
// Important: set BEFORE Database.create() so D1RemoteAdapter is constructed in SQL mode.
|
|
103
|
+
// Registry mode uses /zin/d1/statement, which is not appropriate for migrations.
|
|
104
|
+
process.env['D1_REMOTE_MODE'] = 'sql';
|
|
105
|
+
}
|
|
87
106
|
const ormConfig = mapConnectionToOrmConfig(conn);
|
|
88
107
|
const db = Database.create(ormConfig);
|
|
89
108
|
await db.connect();
|
|
@@ -98,6 +117,14 @@ const runForConnection = async (conn, options, cmd, interactive) => {
|
|
|
98
117
|
await runActions(migrator, options, cmd, conn.driver);
|
|
99
118
|
}
|
|
100
119
|
finally {
|
|
120
|
+
if (conn.driver === 'd1-remote' && typeof process !== 'undefined') {
|
|
121
|
+
if (previousD1RemoteMode === undefined) {
|
|
122
|
+
delete process.env['D1_REMOTE_MODE'];
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
process.env['D1_REMOTE_MODE'] = previousD1RemoteMode;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
101
128
|
await db.disconnect();
|
|
102
129
|
}
|
|
103
130
|
};
|
|
@@ -110,7 +137,14 @@ const executeMigrateWorker = async (options, cmd) => {
|
|
|
110
137
|
}
|
|
111
138
|
}
|
|
112
139
|
else {
|
|
113
|
-
|
|
140
|
+
const selected = getWorkerPersistenceConnectionName();
|
|
141
|
+
const hasSelected = selected.length > 0;
|
|
142
|
+
const connections = databaseConfig.connections;
|
|
143
|
+
const configured = hasSelected ? connections[selected] : undefined;
|
|
144
|
+
targets.push({
|
|
145
|
+
name: hasSelected ? selected : 'default',
|
|
146
|
+
config: configured ?? databaseConfig.getConnection(),
|
|
147
|
+
});
|
|
114
148
|
}
|
|
115
149
|
let sequence = Promise.resolve();
|
|
116
150
|
for (const { name, config } of targets) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NewCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/NewCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"NewCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/NewCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAgBrE,KAAK,YAAY,GAAG,OAAO,GAAG,KAAK,GAAG,cAAc,GAAG,WAAW,CAAC;AACnE,KAAK,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,GAAG,SAAS,GAAG,WAAW,CAAC;AAYhF,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,KAAK,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAwPhD,UAAU,WAAY,SAAQ,YAAY;IACxC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACxF,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACzF,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,GAAG,gBAAgB,EAAE,CAAC;IACjF,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC;IAChC,YAAY,IAAI,MAAM,CAAC;IACvB,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,sBAAsB,EAC9B,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACpE;AA0RD;;;GAGG;AACH,eAAO,MAAM,UAAU;IACrB;;OAEG;cACO,WAAW;EAGrB,CAAC"}
|
|
@@ -8,6 +8,7 @@ import { extractErrorMessage, resolvePackageManager } from '../../common/index.j
|
|
|
8
8
|
import { appConfig } from '../../config/app.js';
|
|
9
9
|
import { ErrorFactory } from '../../exceptions/ZintrustError.js';
|
|
10
10
|
import { execFileSync } from '../../node-singletons/child-process.js';
|
|
11
|
+
import fs from '../../node-singletons/fs.js';
|
|
11
12
|
import * as path from '../../node-singletons/path.js';
|
|
12
13
|
import chalk from 'chalk';
|
|
13
14
|
const getGitBinary = () => 'git';
|
|
@@ -233,9 +234,39 @@ const addOptions = (command) => {
|
|
|
233
234
|
command.option('--install', 'Force dependency installation (useful to override CI defaults)');
|
|
234
235
|
command.option('--package-manager <manager>', 'Package manager to use (npm, yarn, pnpm)');
|
|
235
236
|
command.option('--governance', 'Install governance tooling (ESLint + architecture tests)', false);
|
|
237
|
+
command.option('--with-d1-proxy', 'Add @zintrust/cloudflare-d1-proxy to package.json (for deploying the D1 proxy worker)', false);
|
|
236
238
|
command.option('--force', 'Overwrite existing directory');
|
|
237
239
|
command.option('--overwrite', 'Overwrite existing directory');
|
|
238
240
|
};
|
|
241
|
+
const maybeAddD1ProxyDependency = (projectPath, options, log) => {
|
|
242
|
+
const enabled = options['withD1Proxy'] === true || options['with-d1-proxy'] === true;
|
|
243
|
+
if (!enabled)
|
|
244
|
+
return;
|
|
245
|
+
const packageJsonPath = path.join(projectPath, 'package.json');
|
|
246
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
247
|
+
log.warn(`Could not add @zintrust/cloudflare-d1-proxy (missing package.json at ${packageJsonPath})`);
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
const raw = fs.readFileSync(packageJsonPath, 'utf8');
|
|
252
|
+
const pkg = JSON.parse(raw);
|
|
253
|
+
const dependencies = { ...pkg.dependencies };
|
|
254
|
+
if (typeof dependencies['@zintrust/cloudflare-d1-proxy'] !== 'string') {
|
|
255
|
+
// Avoid pinning to core version (they can differ). Use a safe caret range.
|
|
256
|
+
dependencies['@zintrust/cloudflare-d1-proxy'] = '^0.1.42';
|
|
257
|
+
}
|
|
258
|
+
const next = {
|
|
259
|
+
...pkg,
|
|
260
|
+
dependencies,
|
|
261
|
+
};
|
|
262
|
+
fs.writeFileSync(packageJsonPath, JSON.stringify(next, null, 2) + '\n');
|
|
263
|
+
log.info('✅ Added @zintrust/cloudflare-d1-proxy to dependencies');
|
|
264
|
+
}
|
|
265
|
+
catch (error) {
|
|
266
|
+
ErrorFactory.createCliError('Failed to update package.json with D1 proxy dependency', error);
|
|
267
|
+
log.warn('Please add @zintrust/cloudflare-d1-proxy manually if you need the proxy worker.');
|
|
268
|
+
}
|
|
269
|
+
};
|
|
239
270
|
const resolveProjectName = async (options) => {
|
|
240
271
|
const argName = options.args?.[0];
|
|
241
272
|
const projectName = argName ?? (await PromptHelper.projectName('my-zintrust-app', true));
|
|
@@ -285,6 +316,8 @@ const createProject = async (target, options, command) => {
|
|
|
285
316
|
throw ErrorFactory.createCliError(gov.message ?? 'Governance scaffolding failed', gov);
|
|
286
317
|
}
|
|
287
318
|
}
|
|
319
|
+
// Optional dependency injection must happen before `npm/yarn/pnpm install`.
|
|
320
|
+
maybeAddD1ProxyDependency(target.projectPath, options, command);
|
|
288
321
|
};
|
|
289
322
|
const maybeInitializeGit = (options, command, target) => {
|
|
290
323
|
if (options['git'] !== false) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PutCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/PutCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAmNvF,eAAO,MAAM,UAAU;cACX,YAAY;EAWtB,CAAC;AAEH,eAAe,UAAU,CAAC"}
|