@zintrust/core 0.1.42 → 0.1.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +11 -5
- package/packages/cloudflare-d1-proxy/src/index.d.ts +48 -0
- package/packages/cloudflare-d1-proxy/src/index.d.ts.map +1 -0
- package/packages/cloudflare-d1-proxy/src/index.js +387 -0
- package/packages/cloudflare-kv-proxy/src/index.d.ts +44 -0
- package/packages/cloudflare-kv-proxy/src/index.d.ts.map +1 -0
- package/packages/cloudflare-kv-proxy/src/index.js +325 -0
- package/packages/queue-monitor/src/QueueMonitoringService.d.ts +35 -0
- package/packages/queue-monitor/src/QueueMonitoringService.d.ts.map +1 -0
- package/packages/queue-monitor/src/QueueMonitoringService.js +194 -0
- package/packages/queue-monitor/src/connection.d.ts +3 -0
- package/packages/queue-monitor/src/connection.d.ts.map +1 -0
- package/packages/queue-monitor/src/connection.js +1 -0
- package/packages/queue-monitor/src/dashboard-ui.d.ts +7 -0
- package/packages/queue-monitor/src/dashboard-ui.d.ts.map +1 -0
- package/packages/queue-monitor/src/dashboard-ui.js +997 -0
- package/packages/queue-monitor/src/driver.d.ts +15 -0
- package/packages/queue-monitor/src/driver.d.ts.map +1 -0
- package/packages/queue-monitor/src/driver.js +115 -0
- package/packages/queue-monitor/src/index.d.ts +71 -0
- package/packages/queue-monitor/src/index.d.ts.map +1 -0
- package/packages/queue-monitor/src/index.js +296 -0
- package/packages/queue-monitor/src/metrics.d.ts +27 -0
- package/packages/queue-monitor/src/metrics.d.ts.map +1 -0
- package/packages/queue-monitor/src/metrics.js +92 -0
- package/packages/queue-monitor/src/worker.d.ts +8 -0
- package/packages/queue-monitor/src/worker.d.ts.map +1 -0
- package/packages/queue-monitor/src/worker.js +35 -0
- package/packages/queue-redis/src/BullMQRedisQueue.d.ts +26 -0
- package/packages/queue-redis/src/BullMQRedisQueue.d.ts.map +1 -0
- package/packages/queue-redis/src/BullMQRedisQueue.js +463 -0
- package/packages/queue-redis/src/HttpQueueDriver.d.ts +18 -0
- package/packages/queue-redis/src/HttpQueueDriver.d.ts.map +1 -0
- package/packages/queue-redis/src/HttpQueueDriver.js +249 -0
- package/packages/queue-redis/src/QueueHttpGateway.d.ts +16 -0
- package/packages/queue-redis/src/QueueHttpGateway.d.ts.map +1 -0
- package/packages/queue-redis/src/QueueHttpGateway.js +217 -0
- package/packages/queue-redis/src/RedisPublishClient.d.ts +14 -0
- package/packages/queue-redis/src/RedisPublishClient.d.ts.map +1 -0
- package/packages/queue-redis/src/RedisPublishClient.js +251 -0
- package/packages/queue-redis/src/index.d.ts +12 -0
- package/packages/queue-redis/src/index.d.ts.map +1 -0
- package/packages/queue-redis/src/index.js +10 -0
- package/packages/queue-redis/src/register.d.ts +6 -0
- package/packages/queue-redis/src/register.d.ts.map +1 -0
- package/packages/queue-redis/src/register.js +21 -0
- package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts +11 -0
- package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts.map +1 -0
- package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.js +32 -0
- package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts +11 -0
- package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts.map +1 -0
- package/packages/workers/migrations/20260123180000_create_queue_jobs_table.js +46 -0
- package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts +7 -0
- package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts.map +1 -0
- package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.js +44 -0
- package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts +7 -0
- package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts.map +1 -0
- package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.js +104 -0
- package/packages/workers/src/AnomalyDetection.d.ts +107 -0
- package/packages/workers/src/AnomalyDetection.d.ts.map +1 -0
- package/packages/workers/src/AnomalyDetection.js +329 -0
- package/packages/workers/src/AutoScaler.d.ts +128 -0
- package/packages/workers/src/AutoScaler.d.ts.map +1 -0
- package/packages/workers/src/AutoScaler.js +425 -0
- package/packages/workers/src/BroadcastWorker.d.ts +24 -0
- package/packages/workers/src/BroadcastWorker.d.ts.map +1 -0
- package/packages/workers/src/BroadcastWorker.js +24 -0
- package/packages/workers/src/CanaryController.d.ts +104 -0
- package/packages/workers/src/CanaryController.d.ts.map +1 -0
- package/packages/workers/src/CanaryController.js +424 -0
- package/packages/workers/src/ChaosEngineering.d.ts +80 -0
- package/packages/workers/src/ChaosEngineering.d.ts.map +1 -0
- package/packages/workers/src/ChaosEngineering.js +229 -0
- package/packages/workers/src/CircuitBreaker.d.ts +107 -0
- package/packages/workers/src/CircuitBreaker.d.ts.map +1 -0
- package/packages/workers/src/CircuitBreaker.js +374 -0
- package/packages/workers/src/ClusterLock.d.ts +91 -0
- package/packages/workers/src/ClusterLock.d.ts.map +1 -0
- package/packages/workers/src/ClusterLock.js +397 -0
- package/packages/workers/src/ComplianceManager.d.ts +178 -0
- package/packages/workers/src/ComplianceManager.d.ts.map +1 -0
- package/packages/workers/src/ComplianceManager.js +556 -0
- package/packages/workers/src/DatacenterOrchestrator.d.ts +134 -0
- package/packages/workers/src/DatacenterOrchestrator.d.ts.map +1 -0
- package/packages/workers/src/DatacenterOrchestrator.js +404 -0
- package/packages/workers/src/DeadLetterQueue.d.ts +123 -0
- package/packages/workers/src/DeadLetterQueue.d.ts.map +1 -0
- package/packages/workers/src/DeadLetterQueue.js +544 -0
- package/packages/workers/src/HealthMonitor.d.ts +43 -0
- package/packages/workers/src/HealthMonitor.d.ts.map +1 -0
- package/packages/workers/src/HealthMonitor.js +312 -0
- package/packages/workers/src/MultiQueueWorker.d.ts +90 -0
- package/packages/workers/src/MultiQueueWorker.d.ts.map +1 -0
- package/packages/workers/src/MultiQueueWorker.js +282 -0
- package/packages/workers/src/NotificationWorker.d.ts +24 -0
- package/packages/workers/src/NotificationWorker.d.ts.map +1 -0
- package/packages/workers/src/NotificationWorker.js +23 -0
- package/packages/workers/src/Observability.d.ts +154 -0
- package/packages/workers/src/Observability.d.ts.map +1 -0
- package/packages/workers/src/Observability.js +538 -0
- package/packages/workers/src/PluginManager.d.ts +124 -0
- package/packages/workers/src/PluginManager.d.ts.map +1 -0
- package/packages/workers/src/PluginManager.js +392 -0
- package/packages/workers/src/PriorityQueue.d.ts +118 -0
- package/packages/workers/src/PriorityQueue.d.ts.map +1 -0
- package/packages/workers/src/PriorityQueue.js +276 -0
- package/packages/workers/src/ResourceMonitor.d.ts +165 -0
- package/packages/workers/src/ResourceMonitor.d.ts.map +1 -0
- package/packages/workers/src/ResourceMonitor.js +632 -0
- package/packages/workers/src/SLAMonitor.d.ts +111 -0
- package/packages/workers/src/SLAMonitor.d.ts.map +1 -0
- package/packages/workers/src/SLAMonitor.js +274 -0
- package/packages/workers/src/WorkerFactory.d.ts +218 -0
- package/packages/workers/src/WorkerFactory.d.ts.map +1 -0
- package/packages/workers/src/WorkerFactory.js +2253 -0
- package/packages/workers/src/WorkerInit.d.ts +86 -0
- package/packages/workers/src/WorkerInit.d.ts.map +1 -0
- package/packages/workers/src/WorkerInit.js +307 -0
- package/packages/workers/src/WorkerMetrics.d.ts +116 -0
- package/packages/workers/src/WorkerMetrics.d.ts.map +1 -0
- package/packages/workers/src/WorkerMetrics.js +570 -0
- package/packages/workers/src/WorkerRegistry.d.ts +152 -0
- package/packages/workers/src/WorkerRegistry.d.ts.map +1 -0
- package/packages/workers/src/WorkerRegistry.js +396 -0
- package/packages/workers/src/WorkerShutdown.d.ts +70 -0
- package/packages/workers/src/WorkerShutdown.d.ts.map +1 -0
- package/packages/workers/src/WorkerShutdown.js +185 -0
- package/packages/workers/src/WorkerVersioning.d.ts +108 -0
- package/packages/workers/src/WorkerVersioning.d.ts.map +1 -0
- package/packages/workers/src/WorkerVersioning.js +300 -0
- package/packages/workers/src/config/workerConfig.d.ts +5 -0
- package/packages/workers/src/config/workerConfig.d.ts.map +1 -0
- package/packages/workers/src/config/workerConfig.js +25 -0
- package/packages/workers/src/createQueueWorker.d.ts +26 -0
- package/packages/workers/src/createQueueWorker.d.ts.map +1 -0
- package/packages/workers/src/createQueueWorker.js +367 -0
- package/packages/workers/src/dashboard/index.d.ts +2 -0
- package/packages/workers/src/dashboard/index.d.ts.map +1 -0
- package/packages/workers/src/dashboard/index.js +1 -0
- package/packages/workers/src/dashboard/types.d.ts +123 -0
- package/packages/workers/src/dashboard/types.d.ts.map +1 -0
- package/packages/workers/src/dashboard/types.js +1 -0
- package/packages/workers/src/dashboard/workers-api.d.ts +5 -0
- package/packages/workers/src/dashboard/workers-api.d.ts.map +1 -0
- package/packages/workers/src/dashboard/workers-api.js +738 -0
- package/packages/workers/src/helper/index.d.ts +6 -0
- package/packages/workers/src/helper/index.d.ts.map +1 -0
- package/packages/workers/src/helper/index.js +10 -0
- package/packages/workers/src/http/WorkerApiController.d.ts +39 -0
- package/packages/workers/src/http/WorkerApiController.d.ts.map +1 -0
- package/packages/workers/src/http/WorkerApiController.js +313 -0
- package/packages/workers/src/http/WorkerController.d.ts +375 -0
- package/packages/workers/src/http/WorkerController.d.ts.map +1 -0
- package/packages/workers/src/http/WorkerController.js +1454 -0
- package/packages/workers/src/http/WorkerMonitoringService.d.ts +12 -0
- package/packages/workers/src/http/WorkerMonitoringService.d.ts.map +1 -0
- package/packages/workers/src/http/WorkerMonitoringService.js +89 -0
- package/packages/workers/src/http/middleware/CustomValidation.d.ts +93 -0
- package/packages/workers/src/http/middleware/CustomValidation.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/CustomValidation.js +270 -0
- package/packages/workers/src/http/middleware/DatacenterValidator.d.ts +4 -0
- package/packages/workers/src/http/middleware/DatacenterValidator.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/DatacenterValidator.js +94 -0
- package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts +8 -0
- package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/EditWorkerValidation.js +56 -0
- package/packages/workers/src/http/middleware/FeaturesValidator.d.ts +4 -0
- package/packages/workers/src/http/middleware/FeaturesValidator.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/FeaturesValidator.js +60 -0
- package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts +32 -0
- package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/InfrastructureValidator.js +226 -0
- package/packages/workers/src/http/middleware/OptionsValidator.d.ts +4 -0
- package/packages/workers/src/http/middleware/OptionsValidator.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/OptionsValidator.js +112 -0
- package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts +8 -0
- package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/PayloadSanitizer.js +42 -0
- package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts +4 -0
- package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/ProcessorPathSanitizer.js +140 -0
- package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts +4 -0
- package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/QueueNameSanitizer.js +45 -0
- package/packages/workers/src/http/middleware/ValidateDriver.d.ts +8 -0
- package/packages/workers/src/http/middleware/ValidateDriver.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/ValidateDriver.js +20 -0
- package/packages/workers/src/http/middleware/VersionSanitizer.d.ts +4 -0
- package/packages/workers/src/http/middleware/VersionSanitizer.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/VersionSanitizer.js +25 -0
- package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts +4 -0
- package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/WorkerNameSanitizer.js +46 -0
- package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts +28 -0
- package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts.map +1 -0
- package/packages/workers/src/http/middleware/WorkerValidationChain.js +186 -0
- package/packages/workers/src/index.d.ts +47 -0
- package/packages/workers/src/index.d.ts.map +1 -0
- package/packages/workers/src/index.js +48 -0
- package/packages/workers/src/routes/workers.d.ts +13 -0
- package/packages/workers/src/routes/workers.d.ts.map +1 -0
- package/packages/workers/src/routes/workers.js +126 -0
- package/packages/workers/src/storage/WorkerStore.d.ts +52 -0
- package/packages/workers/src/storage/WorkerStore.d.ts.map +1 -0
- package/packages/workers/src/storage/WorkerStore.js +259 -0
- package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts +47 -0
- package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts.map +1 -0
- package/packages/workers/src/telemetry/api/TelemetryAPI.js +219 -0
- package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts +18 -0
- package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts.map +1 -0
- package/packages/workers/src/telemetry/api/TelemetryMonitoringService.js +140 -0
- package/packages/workers/src/telemetry/components/AlertPanel.d.ts +2 -0
- package/packages/workers/src/telemetry/components/AlertPanel.d.ts.map +1 -0
- package/packages/workers/src/telemetry/components/AlertPanel.js +13 -0
- package/packages/workers/src/telemetry/components/CostTracking.d.ts +2 -0
- package/packages/workers/src/telemetry/components/CostTracking.d.ts.map +1 -0
- package/packages/workers/src/telemetry/components/CostTracking.js +14 -0
- package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts +2 -0
- package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts.map +1 -0
- package/packages/workers/src/telemetry/components/ResourceUsageChart.js +11 -0
- package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts +2 -0
- package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts.map +1 -0
- package/packages/workers/src/telemetry/components/WorkerHealthChart.js +11 -0
- package/packages/workers/src/telemetry/index.d.ts +16 -0
- package/packages/workers/src/telemetry/index.d.ts.map +1 -0
- package/packages/workers/src/telemetry/index.js +60 -0
- package/packages/workers/src/telemetry/routes/dashboard.d.ts +7 -0
- package/packages/workers/src/telemetry/routes/dashboard.d.ts.map +1 -0
- package/packages/workers/src/telemetry/routes/dashboard.js +608 -0
- package/packages/workers/src/type.d.ts +77 -0
- package/packages/workers/src/type.d.ts.map +1 -0
- package/packages/workers/src/type.js +1 -0
- package/packages/workers/src/ui/router/EmbeddedAssets.d.ts +5 -0
- package/packages/workers/src/ui/router/EmbeddedAssets.d.ts.map +1 -0
- package/packages/workers/src/ui/router/EmbeddedAssets.js +13 -0
- package/packages/workers/src/ui/router/ui.d.ts +4 -0
- package/packages/workers/src/ui/router/ui.d.ts.map +1 -0
- package/packages/workers/src/ui/router/ui.js +208 -0
- package/packages/workers/src/ui/types/worker-ui.d.ts +230 -0
- package/packages/workers/src/ui/types/worker-ui.d.ts.map +1 -0
- package/packages/workers/src/ui/types/worker-ui.js +5 -0
- package/routes/api.d.ts +7 -0
- package/routes/api.d.ts.map +1 -0
- package/routes/api.js +129 -0
- package/routes/broadcast.d.ts +9 -0
- package/routes/broadcast.d.ts.map +1 -0
- package/routes/broadcast.js +27 -0
- package/routes/storage.d.ts +4 -0
- package/routes/storage.d.ts.map +1 -0
- package/routes/storage.js +35 -0
- package/src/cache/Cache.d.ts.map +1 -1
- package/src/cache/Cache.js +40 -8
- package/src/cache/drivers/KVRemoteDriver.d.ts +1 -1
- package/src/cache/drivers/KVRemoteDriver.d.ts.map +1 -1
- package/src/cache/drivers/KVRemoteDriver.js +259 -44
- package/src/cache/drivers/MemoryDriver.d.ts.map +1 -1
- package/src/cache/drivers/MemoryDriver.js +10 -2
- package/src/cache/drivers/RedisDriver.d.ts.map +1 -1
- package/src/cache/drivers/RedisDriver.js +256 -33
- package/src/cli/commands/InitContainerCommand.js +10 -10
- package/src/cli/commands/NewCommand.d.ts.map +1 -1
- package/src/cli/commands/NewCommand.js +33 -0
- package/src/cli/commands/StartCommand.d.ts.map +1 -1
- package/src/cli/commands/StartCommand.js +23 -1
- package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
- package/src/cli/scaffolding/ProjectScaffolder.js +65 -73
- package/src/cli/utils/DistPackager.d.ts.map +1 -1
- package/src/cli/utils/DistPackager.js +25 -0
- package/src/cli/utils/EnvFileLoader.d.ts +1 -0
- package/src/cli/utils/EnvFileLoader.d.ts.map +1 -1
- package/src/cli/utils/EnvFileLoader.js +14 -0
- package/src/common/RemoteSignedJson.d.ts.map +1 -1
- package/src/common/RemoteSignedJson.js +9 -2
- package/src/config/cache.js +1 -1
- package/src/config/env.d.ts +7 -0
- package/src/config/env.d.ts.map +1 -1
- package/src/config/env.js +8 -0
- package/src/config/queue.js +1 -1
- package/src/functions/cloudflare.d.ts.map +1 -1
- package/src/functions/cloudflare.js +4 -2
- package/src/index.js +3 -3
- package/src/middleware/JwtAuthMiddleware.d.ts.map +1 -1
- package/src/middleware/JwtAuthMiddleware.js +11 -5
- package/src/runtime/RuntimeAdapter.d.ts.map +1 -1
- package/src/runtime/RuntimeAdapter.js +30 -12
- package/src/runtime/adapters/CloudflareAdapter.d.ts.map +1 -1
- package/src/runtime/adapters/CloudflareAdapter.js +15 -4
- package/src/scheduler/Schedule.js +1 -1
- package/src/scheduler/leader/SchedulerLeader.js +1 -1
- package/src/schedules/job-tracking-cleanup.js +1 -1
- package/src/security/TokenRevocation.d.ts +19 -2
- package/src/security/TokenRevocation.d.ts.map +1 -1
- package/src/security/TokenRevocation.js +558 -30
- package/src/templates/project/basic/app/Controllers/AuthController.ts.tpl +11 -3
- package/src/templates/project/basic/config/middleware.ts.tpl +23 -22
- package/src/templates/project/basic/wrangler.jsonc.tpl +28 -0
|
@@ -2,40 +2,235 @@
|
|
|
2
2
|
* Redis Cache Driver
|
|
3
3
|
* Zero-dependency implementation using Node.js native net module
|
|
4
4
|
*/
|
|
5
|
+
import { Cloudflare } from '../../config/cloudflare.js';
|
|
5
6
|
import { Env } from '../../config/env.js';
|
|
6
7
|
import { Logger } from '../../config/logger.js';
|
|
8
|
+
import { createRedisConnection } from '../../config/workers.js';
|
|
9
|
+
import { ErrorFactory } from '../../exceptions/ZintrustError.js';
|
|
7
10
|
import * as net from '../../node-singletons/net.js';
|
|
8
11
|
import { RedisKeys } from '../../tools/redis/RedisKeyManager.js';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
const listenPreferOnce = (socket, event, cb) => {
|
|
13
|
+
if (typeof socket.once === 'function') {
|
|
14
|
+
socket.once(event, cb);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
socket.on?.(event, cb);
|
|
18
|
+
};
|
|
19
|
+
const listenPreferOn = (socket, event, cb) => {
|
|
20
|
+
if (typeof socket.on === 'function') {
|
|
21
|
+
socket.on(event, cb);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
socket.once?.(event, cb);
|
|
25
|
+
};
|
|
26
|
+
const hasToString = (value) => {
|
|
27
|
+
if (value === null || value === undefined)
|
|
28
|
+
return false;
|
|
29
|
+
return typeof value.toString === 'function';
|
|
30
|
+
};
|
|
31
|
+
const createIoredisClient = (params) => {
|
|
32
|
+
if (String(Env.NODE_ENV ?? '').startsWith('test'))
|
|
33
|
+
return null;
|
|
34
|
+
try {
|
|
35
|
+
const db = Env.getInt('REDIS_CACHE_DB', Env.getInt('REDIS_QUEUE_DB', 0));
|
|
36
|
+
const client = createRedisConnection({
|
|
37
|
+
host: Env.REDIS_HOST,
|
|
38
|
+
port: Env.REDIS_PORT,
|
|
39
|
+
password: Env.get('REDIS_PASSWORD', ''),
|
|
40
|
+
db,
|
|
41
|
+
}, 3);
|
|
42
|
+
return client !== null && typeof client.get === 'function' ? client : null;
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
46
|
+
if (params.isWorkersRuntime || params.wantsProxy) {
|
|
47
|
+
Logger.error('Redis cache driver initialization failed', { error: msg });
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
Logger.warn('Redis cache driver falling back to TCP socket implementation', {
|
|
51
|
+
error: msg,
|
|
52
|
+
});
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
const createCacheDriverFromIoredisClient = (client) => ({
|
|
57
|
+
async get(key) {
|
|
58
|
+
try {
|
|
59
|
+
const prefixedKey = RedisKeys.createCacheKey(key);
|
|
60
|
+
const value = await client.get(prefixedKey);
|
|
61
|
+
if (value === null)
|
|
62
|
+
return null;
|
|
63
|
+
return JSON.parse(value);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
Logger.error('Redis GET failed', error);
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
async set(key, value, ttl) {
|
|
71
|
+
try {
|
|
72
|
+
const prefixedKey = RedisKeys.createCacheKey(key);
|
|
73
|
+
const jsonValue = JSON.stringify(value);
|
|
74
|
+
if (ttl === undefined) {
|
|
75
|
+
await client.set(prefixedKey, jsonValue);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
await client.set(prefixedKey, jsonValue, 'EX', ttl);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
Logger.error('Redis SET failed', error);
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
async delete(key) {
|
|
85
|
+
try {
|
|
86
|
+
const prefixedKey = RedisKeys.createCacheKey(key);
|
|
87
|
+
await client.del(prefixedKey);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
Logger.error('Redis DEL failed', error);
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
async clear() {
|
|
94
|
+
try {
|
|
95
|
+
await client.flushdb();
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
Logger.error('Redis FLUSHDB failed', error);
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
async has(key) {
|
|
102
|
+
try {
|
|
103
|
+
const prefixedKey = RedisKeys.createCacheKey(key);
|
|
104
|
+
const out = await client.exists(prefixedKey);
|
|
105
|
+
return out > 0;
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
Logger.error('Redis EXISTS failed', error);
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
const createIoredisCacheDriver = (params) => {
|
|
114
|
+
const client = createIoredisClient(params);
|
|
115
|
+
return client === null ? null : createCacheDriverFromIoredisClient(client);
|
|
116
|
+
};
|
|
117
|
+
const createTcpConnect = (params) => {
|
|
13
118
|
let client = null;
|
|
14
|
-
|
|
15
|
-
const port = Env.REDIS_PORT;
|
|
16
|
-
const connect = async () => {
|
|
119
|
+
return async () => {
|
|
17
120
|
if (client && !client.destroyed)
|
|
18
121
|
return client;
|
|
19
122
|
return new Promise((resolve, reject) => {
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
123
|
+
const onTimeout = () => {
|
|
124
|
+
cleanup();
|
|
125
|
+
try {
|
|
126
|
+
socket.destroy?.();
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
/* ignore */
|
|
130
|
+
}
|
|
131
|
+
reject(ErrorFactory.createConnectionError('Redis connection timeout', {
|
|
132
|
+
host: params.host,
|
|
133
|
+
port: params.port,
|
|
134
|
+
timeoutMs: params.connectTimeoutMs,
|
|
135
|
+
}));
|
|
136
|
+
};
|
|
137
|
+
const onError = (err) => {
|
|
138
|
+
cleanup();
|
|
25
139
|
Logger.error(`Redis Connection Error: ${err.message}`);
|
|
26
140
|
reject(err);
|
|
27
|
-
}
|
|
141
|
+
};
|
|
142
|
+
const onErrorUnknown = (err) => {
|
|
143
|
+
if (err instanceof Error) {
|
|
144
|
+
onError(err);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
cleanup();
|
|
148
|
+
const msg = String(err);
|
|
149
|
+
Logger.error(`Redis Connection Error: ${msg}`);
|
|
150
|
+
reject(ErrorFactory.createConnectionError(`Redis Connection Error: ${msg}`, {
|
|
151
|
+
error: msg,
|
|
152
|
+
}));
|
|
153
|
+
};
|
|
154
|
+
const onConnect = () => {
|
|
155
|
+
cleanup();
|
|
156
|
+
client = socket;
|
|
157
|
+
resolve(socket);
|
|
158
|
+
};
|
|
159
|
+
const socket = net.connect(params.port, params.host, onConnect);
|
|
160
|
+
const anySocket = socket;
|
|
161
|
+
const cleanup = () => {
|
|
162
|
+
anySocket.setTimeout?.(0);
|
|
163
|
+
anySocket.removeListener?.('timeout', onTimeout);
|
|
164
|
+
anySocket.removeListener?.('error', onErrorUnknown);
|
|
165
|
+
};
|
|
166
|
+
anySocket.setTimeout?.(Math.max(1, params.connectTimeoutMs));
|
|
167
|
+
listenPreferOnce(anySocket, 'timeout', onTimeout);
|
|
168
|
+
listenPreferOn(anySocket, 'error', onErrorUnknown);
|
|
28
169
|
});
|
|
29
170
|
};
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
171
|
+
};
|
|
172
|
+
const createTcpSendCommand = (params) => {
|
|
173
|
+
return async (command) => {
|
|
174
|
+
const socket = await params.connect();
|
|
175
|
+
const anySocket = socket;
|
|
176
|
+
return new Promise((resolve, reject) => {
|
|
177
|
+
let settled = false;
|
|
178
|
+
const onDataUnknown = (data) => {
|
|
179
|
+
if (typeof data === 'string') {
|
|
180
|
+
settleOk(data);
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
if (hasToString(data)) {
|
|
184
|
+
settleOk(data.toString());
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
settleOk(String(data));
|
|
188
|
+
};
|
|
189
|
+
const onErrorUnknown = (err) => {
|
|
190
|
+
settleErr(err instanceof Error
|
|
191
|
+
? err
|
|
192
|
+
: ErrorFactory.createConnectionError('Redis socket error', {
|
|
193
|
+
error: String(err),
|
|
194
|
+
}));
|
|
195
|
+
};
|
|
196
|
+
const cleanup = () => {
|
|
197
|
+
anySocket.setTimeout?.(0);
|
|
198
|
+
anySocket.removeListener?.('data', onDataUnknown);
|
|
199
|
+
anySocket.removeListener?.('error', onErrorUnknown);
|
|
200
|
+
anySocket.removeListener?.('timeout', onTimeout);
|
|
201
|
+
};
|
|
202
|
+
const settleOk = (value) => {
|
|
203
|
+
if (settled)
|
|
204
|
+
return;
|
|
205
|
+
settled = true;
|
|
206
|
+
cleanup();
|
|
207
|
+
resolve(value);
|
|
208
|
+
};
|
|
209
|
+
const settleErr = (err) => {
|
|
210
|
+
if (settled)
|
|
211
|
+
return;
|
|
212
|
+
settled = true;
|
|
213
|
+
cleanup();
|
|
214
|
+
reject(err);
|
|
215
|
+
};
|
|
216
|
+
const onTimeout = () => settleErr(ErrorFactory.createConnectionError('Redis command timeout', {
|
|
217
|
+
timeoutMs: params.commandTimeoutMs,
|
|
218
|
+
}));
|
|
219
|
+
anySocket.setTimeout?.(Math.max(1, params.commandTimeoutMs));
|
|
220
|
+
listenPreferOnce(anySocket, 'data', onDataUnknown);
|
|
221
|
+
listenPreferOnce(anySocket, 'timeout', onTimeout);
|
|
222
|
+
listenPreferOn(anySocket, 'error', onErrorUnknown);
|
|
223
|
+
anySocket.write?.(command);
|
|
37
224
|
});
|
|
38
225
|
};
|
|
226
|
+
};
|
|
227
|
+
const createTcpCacheDriver = () => {
|
|
228
|
+
const host = Env.REDIS_HOST;
|
|
229
|
+
const port = Env.REDIS_PORT;
|
|
230
|
+
const connectTimeoutMs = Env.getInt('REDIS_CONNECT_TIMEOUT_MS', 5_000);
|
|
231
|
+
const commandTimeoutMs = Env.getInt('REDIS_COMMAND_TIMEOUT_MS', 5_000);
|
|
232
|
+
const connect = createTcpConnect({ host, port, connectTimeoutMs });
|
|
233
|
+
const sendCommand = createTcpSendCommand({ connect, commandTimeoutMs });
|
|
39
234
|
return {
|
|
40
235
|
async get(key) {
|
|
41
236
|
try {
|
|
@@ -43,7 +238,6 @@ const create = () => {
|
|
|
43
238
|
const response = await sendCommand(`GET ${prefixedKey}\r\n`);
|
|
44
239
|
if (response.startsWith('$-1'))
|
|
45
240
|
return null;
|
|
46
|
-
// Basic RESP parsing
|
|
47
241
|
const lines = response.split('\r\n');
|
|
48
242
|
const value = lines[1];
|
|
49
243
|
return JSON.parse(value);
|
|
@@ -54,28 +248,57 @@ const create = () => {
|
|
|
54
248
|
}
|
|
55
249
|
},
|
|
56
250
|
async set(key, value, ttl) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
251
|
+
try {
|
|
252
|
+
const prefixedKey = RedisKeys.createCacheKey(key);
|
|
253
|
+
const jsonValue = JSON.stringify(value);
|
|
254
|
+
const command = ttl === undefined
|
|
255
|
+
? `SET ${prefixedKey} ${jsonValue}\r\n`
|
|
256
|
+
: `SETEX ${prefixedKey} ${ttl} ${jsonValue}\r\n`;
|
|
257
|
+
await sendCommand(command);
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
Logger.error('Redis SET failed', error);
|
|
62
261
|
}
|
|
63
|
-
await sendCommand(command);
|
|
64
262
|
},
|
|
65
263
|
async delete(key) {
|
|
66
|
-
|
|
67
|
-
|
|
264
|
+
try {
|
|
265
|
+
const prefixedKey = RedisKeys.createCacheKey(key);
|
|
266
|
+
await sendCommand(`DEL ${prefixedKey}\r\n`);
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
Logger.error('Redis DEL failed', error);
|
|
270
|
+
}
|
|
68
271
|
},
|
|
69
272
|
async clear() {
|
|
70
|
-
|
|
273
|
+
try {
|
|
274
|
+
await sendCommand(`FLUSHDB\r\n`);
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
Logger.error('Redis FLUSHDB failed', error);
|
|
278
|
+
}
|
|
71
279
|
},
|
|
72
280
|
async has(key) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
281
|
+
try {
|
|
282
|
+
const prefixedKey = RedisKeys.createCacheKey(key);
|
|
283
|
+
const response = await sendCommand(`EXISTS ${prefixedKey}\r\n`);
|
|
284
|
+
return response.includes(':1');
|
|
285
|
+
}
|
|
286
|
+
catch (error) {
|
|
287
|
+
Logger.error('Redis EXISTS failed', error);
|
|
288
|
+
return false;
|
|
289
|
+
}
|
|
76
290
|
},
|
|
77
291
|
};
|
|
78
292
|
};
|
|
293
|
+
/**
|
|
294
|
+
* Create a new Redis driver instance
|
|
295
|
+
*/
|
|
296
|
+
const create = () => {
|
|
297
|
+
const isWorkersRuntime = Cloudflare.getWorkersEnv() !== null;
|
|
298
|
+
const wantsProxy = Env.USE_REDIS_PROXY === true || (Env.get('REDIS_PROXY_URL', '') || '').trim() !== '';
|
|
299
|
+
const ioredisDriver = createIoredisCacheDriver({ isWorkersRuntime, wantsProxy });
|
|
300
|
+
return ioredisDriver ?? createTcpCacheDriver();
|
|
301
|
+
};
|
|
79
302
|
/**
|
|
80
303
|
* RedisDriver namespace - sealed for immutability
|
|
81
304
|
*/
|
|
@@ -98,7 +98,7 @@ services:
|
|
|
98
98
|
`;
|
|
99
99
|
const DOCKERFILE_TEMPLATE = String.raw `# syntax=docker/dockerfile:1.6
|
|
100
100
|
# Build Stage - Compile TypeScript
|
|
101
|
-
FROM node:20-
|
|
101
|
+
FROM node:20-bookworm-slim AS builder
|
|
102
102
|
|
|
103
103
|
WORKDIR /app
|
|
104
104
|
|
|
@@ -106,12 +106,10 @@ WORKDIR /app
|
|
|
106
106
|
ENV NPM_CONFIG_CACHE=/root/.npm
|
|
107
107
|
ENV NPM_CONFIG_PREFER_OFFLINE=true
|
|
108
108
|
|
|
109
|
-
# Reuse npm cache across builds (requires BuildKit)
|
|
110
|
-
ENV NPM_CONFIG_CACHE=/root/.npm
|
|
111
|
-
ENV NPM_CONFIG_PREFER_OFFLINE=true
|
|
112
|
-
|
|
113
109
|
# Install build dependencies for native modules (better-sqlite3, bcrypt)
|
|
114
|
-
RUN
|
|
110
|
+
RUN apt-get update \
|
|
111
|
+
&& apt-get install -y --no-install-recommends python3 make g++ \
|
|
112
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
115
113
|
|
|
116
114
|
# Copy package files
|
|
117
115
|
COPY package.json package-lock.json ./
|
|
@@ -131,7 +129,7 @@ ARG BUILD_VARIANT=full
|
|
|
131
129
|
RUN --mount=type=cache,target=/root/.npm,id=zintrust-npm-cache,sharing=locked npm run build:dk
|
|
132
130
|
|
|
133
131
|
# Runtime Stage - Production image
|
|
134
|
-
FROM node:20-
|
|
132
|
+
FROM node:20-bookworm-slim AS runtime
|
|
135
133
|
|
|
136
134
|
WORKDIR /app
|
|
137
135
|
|
|
@@ -141,16 +139,18 @@ ENV PORT=7772
|
|
|
141
139
|
ENV HOST=0.0.0.0
|
|
142
140
|
|
|
143
141
|
# Create non-root user for security
|
|
144
|
-
RUN
|
|
142
|
+
RUN groupadd -g 1001 nodejs && useradd -u 1001 -g 1001 -m -s /usr/sbin/nologin nodejs
|
|
145
143
|
|
|
146
144
|
# Copy package files for production dependencies
|
|
147
145
|
COPY package.json package-lock.json ./
|
|
148
146
|
|
|
149
147
|
# Install only production dependencies (requires build tools for native modules)
|
|
150
148
|
RUN --mount=type=cache,target=/root/.npm,id=zintrust-npm-cache,sharing=locked \
|
|
151
|
-
|
|
149
|
+
apt-get update \
|
|
150
|
+
&& apt-get install -y --no-install-recommends python3 make g++ \
|
|
152
151
|
&& npm ci --omit=dev \
|
|
153
|
-
|
|
152
|
+
&& apt-get purge -y --auto-remove python3 make g++ \
|
|
153
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
154
154
|
|
|
155
155
|
# Copy compiled code from builder stage
|
|
156
156
|
COPY --from=builder /app/dist ./dist
|
|
@@ -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) {
|
|
@@ -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')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectScaffolder.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ProjectScaffolder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAEpD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACtD,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IACpE,cAAc,IAAI,MAAM,CAAC;IACzB,sBAAsB,IAAI,OAAO,CAAC;IAClC,iBAAiB,IAAI,MAAM,CAAC;IAC5B,WAAW,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAAC;IACtD,gBAAgB,IAAI,OAAO,CAAC;IAC5B,aAAa,IAAI,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC3E;
|
|
1
|
+
{"version":3,"file":"ProjectScaffolder.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ProjectScaffolder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAEpD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACtD,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IACpE,cAAc,IAAI,MAAM,CAAC;IACzB,sBAAsB,IAAI,OAAO,CAAC;IAClC,iBAAiB,IAAI,MAAM,CAAC;IAC5B,WAAW,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAAC;IACtD,gBAAgB,IAAI,OAAO,CAAC;IAC5B,aAAa,IAAI,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC3E;AA8eD,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAsBrE;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG;IAChE,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAsBA;AA4ID;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,GAAE,MAAsB,GAAG,kBAAkB,CAsB/F;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAEhC;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;EAM5B,CAAC"}
|