@zintrust/core 0.4.26 → 0.4.28
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 +233 -0
- package/app/Controllers/TestController.d.ts +22 -0
- package/app/Controllers/TestController.d.ts.map +1 -0
- package/app/Controllers/TestController.js +188 -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/Jobs/AdvancedEmailJobService.d.ts +57 -0
- package/app/Jobs/AdvancedEmailJobService.d.ts.map +1 -0
- package/app/Jobs/AdvancedEmailJobService.js +185 -0
- package/app/Jobs/EmailJobService.d.ts +33 -0
- package/app/Jobs/EmailJobService.d.ts.map +1 -0
- package/app/Jobs/EmailJobService.js +113 -0
- package/app/Middleware/AuthFailureResponder.d.ts +3 -0
- package/app/Middleware/AuthFailureResponder.d.ts.map +1 -0
- package/app/Middleware/AuthFailureResponder.js +8 -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 +216 -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 +44 -0
- package/app/Types/controller.d.ts.map +1 -0
- package/app/Types/controller.js +1 -0
- package/app/Workers/AdvancEmailWorker.d.ts +44 -0
- package/app/Workers/AdvancEmailWorker.d.ts.map +1 -0
- package/app/Workers/AdvancEmailWorker.js +192 -0
- package/app/Workers/EmailWorker.d.ts +39 -0
- package/app/Workers/EmailWorker.d.ts.map +1 -0
- package/app/Workers/EmailWorker.js +199 -0
- package/app/Workers/TestWorker.d.ts +16 -0
- package/app/Workers/TestWorker.d.ts.map +1 -0
- package/app/Workers/TestWorker.js +153 -0
- package/bin/z.js +0 -0
- package/bin/zin.js +0 -0
- package/bin/zintrust.js +0 -0
- package/bin/zt.js +0 -0
- package/build-manifest.json +6410 -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 +21 -0
- package/config/middleware.d.ts.map +1 -0
- package/config/middleware.js +61 -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/database/factories/UserFactory.d.ts +40 -0
- package/database/factories/UserFactory.d.ts.map +1 -0
- package/database/factories/UserFactory.js +99 -0
- package/database/migrations/20260109074544_create_users_table.d.ts +7 -0
- package/database/migrations/20260109074544_create_users_table.d.ts.map +1 -0
- package/database/migrations/20260109074544_create_users_table.js +21 -0
- package/database/migrations/20260109144731_create_tasks_table.d.ts +7 -0
- package/database/migrations/20260109144731_create_tasks_table.d.ts.map +1 -0
- package/database/migrations/20260109144731_create_tasks_table.js +19 -0
- package/database/migrations/20260109144735_add_done_tasks_table.d.ts +11 -0
- package/database/migrations/20260109144735_add_done_tasks_table.d.ts.map +1 -0
- package/database/migrations/20260109144735_add_done_tasks_table.js +25 -0
- package/database/migrations/20260109150837_add_start_tasks_table.d.ts +11 -0
- package/database/migrations/20260109150837_add_start_tasks_table.d.ts.map +1 -0
- package/database/migrations/20260109150837_add_start_tasks_table.js +22 -0
- package/database/migrations/20260109152114_add_way_tasks_table.d.ts +11 -0
- package/database/migrations/20260109152114_add_way_tasks_table.d.ts.map +1 -0
- package/database/migrations/20260109152114_add_way_tasks_table.js +22 -0
- package/database/migrations/20260218121500_create_jwt_revocations_table.d.ts +7 -0
- package/database/migrations/20260218121500_create_jwt_revocations_table.d.ts.map +1 -0
- package/database/migrations/20260218121500_create_jwt_revocations_table.js +22 -0
- package/database/migrations/20260222120000_add_kind_to_jwt_revocations_table.d.ts +11 -0
- package/database/migrations/20260222120000_add_kind_to_jwt_revocations_table.d.ts.map +1 -0
- package/database/migrations/20260222120000_add_kind_to_jwt_revocations_table.js +20 -0
- package/database/migrations/20260222123000_add_user_id_to_jwt_revocations_table.d.ts +11 -0
- package/database/migrations/20260222123000_add_user_id_to_jwt_revocations_table.d.ts.map +1 -0
- package/database/migrations/20260222123000_add_user_id_to_jwt_revocations_table.js +20 -0
- package/database/migrations/20260327112651_create_posts_table.d.ts +11 -0
- package/database/migrations/20260327112651_create_posts_table.d.ts.map +1 -0
- package/database/migrations/20260327112651_create_posts_table.js +24 -0
- package/database/seeders/DatabaseSeeder.d.ts +5 -0
- package/database/seeders/DatabaseSeeder.d.ts.map +1 -0
- package/database/seeders/DatabaseSeeder.js +15 -0
- package/database/seeders/UserSeeder.d.ts +30 -0
- package/database/seeders/UserSeeder.d.ts.map +1 -0
- package/database/seeders/UserSeeder.js +97 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +27 -78
- package/packages/cache-redis/src/RedisProxyAdapter.d.ts +6 -0
- package/packages/cache-redis/src/RedisProxyAdapter.d.ts.map +1 -0
- package/packages/cache-redis/src/RedisProxyAdapter.js +144 -0
- package/packages/cache-redis/src/index.d.ts +27 -0
- package/packages/cache-redis/src/index.d.ts.map +1 -0
- package/packages/cache-redis/src/index.js +153 -0
- package/packages/db-d1/src/index.d.ts +55 -0
- package/packages/db-d1/src/index.d.ts.map +1 -0
- package/packages/db-d1/src/index.js +118 -0
- package/packages/db-d1/src/register.d.ts +6 -0
- package/packages/db-d1/src/register.d.ts.map +1 -0
- package/packages/db-d1/src/register.js +8 -0
- package/packages/db-mysql/src/common.d.ts +7 -0
- package/packages/db-mysql/src/common.d.ts.map +1 -0
- package/packages/db-mysql/src/common.js +17 -0
- package/packages/db-mysql/src/index.d.ts +43 -0
- package/packages/db-mysql/src/index.d.ts.map +1 -0
- package/packages/db-mysql/src/index.js +265 -0
- package/packages/db-mysql/src/register.d.ts +6 -0
- package/packages/db-mysql/src/register.d.ts.map +1 -0
- package/packages/db-mysql/src/register.js +32 -0
- package/packages/db-postgres/src/index.d.ts +39 -0
- package/packages/db-postgres/src/index.d.ts.map +1 -0
- package/packages/db-postgres/src/index.js +179 -0
- package/packages/db-postgres/src/register.d.ts +6 -0
- package/packages/db-postgres/src/register.d.ts.map +1 -0
- package/packages/db-postgres/src/register.js +8 -0
- package/packages/db-sqlite/src/index.d.ts +9 -0
- package/packages/db-sqlite/src/index.d.ts.map +1 -0
- package/packages/db-sqlite/src/index.js +7 -0
- package/packages/db-sqlite/src/register.d.ts +6 -0
- package/packages/db-sqlite/src/register.d.ts.map +1 -0
- package/packages/db-sqlite/src/register.js +8 -0
- package/packages/db-sqlserver/src/index.d.ts +38 -0
- package/packages/db-sqlserver/src/index.d.ts.map +1 -0
- package/packages/db-sqlserver/src/index.js +73 -0
- package/packages/db-sqlserver/src/register.d.ts +6 -0
- package/packages/db-sqlserver/src/register.d.ts.map +1 -0
- package/packages/db-sqlserver/src/register.js +21 -0
- package/packages/mail-sendgrid/src/register.d.ts +6 -0
- package/packages/mail-sendgrid/src/register.d.ts.map +1 -0
- package/packages/mail-sendgrid/src/register.js +24 -0
- package/packages/mail-smtp/src/register.d.ts +6 -0
- package/packages/mail-smtp/src/register.d.ts.map +1 -0
- package/packages/mail-smtp/src/register.js +29 -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 +465 -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 +29 -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 +29 -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 +226 -0
- package/packages/workers/src/WorkerFactory.d.ts.map +1 -0
- package/packages/workers/src/WorkerFactory.js +2551 -0
- package/packages/workers/src/WorkerInit.d.ts +103 -0
- package/packages/workers/src/WorkerInit.d.ts.map +1 -0
- package/packages/workers/src/WorkerInit.js +359 -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 +31 -0
- package/packages/workers/src/createQueueWorker.d.ts.map +1 -0
- package/packages/workers/src/createQueueWorker.js +382 -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 +776 -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 +61 -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/register.d.ts +10 -0
- package/packages/workers/src/register.d.ts.map +1 -0
- package/packages/workers/src/register.js +43 -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/DirectTestRoutes.d.ts +25 -0
- package/routes/DirectTestRoutes.d.ts.map +1 -0
- package/routes/DirectTestRoutes.js +480 -0
- package/routes/TestRoutes.d.ts +11 -0
- package/routes/TestRoutes.d.ts.map +1 -0
- package/routes/TestRoutes.js +25 -0
- package/routes/api.d.ts +7 -0
- package/routes/api.d.ts.map +1 -0
- package/routes/api.js +136 -0
- package/routes/apiDev.d.ts +7 -0
- package/routes/apiDev.d.ts.map +1 -0
- package/routes/apiDev.js +92 -0
- package/routes/broadcast.d.ts +9 -0
- package/routes/broadcast.d.ts.map +1 -0
- package/routes/broadcast.js +27 -0
- package/routes/mail.d.ts +12 -0
- package/routes/mail.d.ts.map +1 -0
- package/routes/mail.js +138 -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 +5 -0
- package/src/cli/CLI.d.ts.map +1 -1
- package/src/cli/CLI.js +4 -0
- package/src/cli/commands/D1ProxyCommand.d.ts +6 -0
- package/src/cli/commands/D1ProxyCommand.d.ts.map +1 -0
- package/src/cli/commands/D1ProxyCommand.js +170 -0
- package/src/cli/commands/InitContainerCommand.d.ts.map +1 -1
- package/src/cli/commands/InitContainerCommand.js +61 -23
- package/src/cli/commands/KvProxyCommand.d.ts +6 -0
- package/src/cli/commands/KvProxyCommand.d.ts.map +1 -0
- package/src/cli/commands/KvProxyCommand.js +158 -0
- package/src/cli/commands/MigrateCommand.js +1 -1
- package/src/cli/commands/MigrateWorkerCommand.d.ts.map +1 -1
- package/src/cli/commands/MigrateWorkerCommand.js +8 -2
- package/src/cli/commands/ProxyCommand.d.ts.map +1 -1
- package/src/cli/commands/ProxyCommand.js +2 -0
- package/src/cli/commands/WorkerCommands.d.ts.map +1 -1
- package/src/cli/commands/WorkerCommands.js +47 -7
- package/src/cli/commands/index.d.ts +2 -0
- package/src/cli/commands/index.d.ts.map +1 -1
- package/src/cli/commands/index.js +2 -0
- package/src/cli/index.d.ts +2 -0
- package/src/cli/index.d.ts.map +1 -1
- package/src/cli/index.js +2 -0
- package/src/cli/scaffolding/GovernanceScaffolder.d.ts.map +1 -1
- package/src/cli/scaffolding/GovernanceScaffolder.js +20 -3
- package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
- package/src/cli/scaffolding/ProjectScaffolder.js +13 -4
- package/src/cli/utils/DistPackager.d.ts +2 -2
- package/src/cli/utils/DistPackager.d.ts.map +1 -1
- package/src/cli/utils/DistPackager.js +9 -3
- package/src/index.js +3 -3
- package/src/proxy.d.ts +2 -0
- package/src/proxy.d.ts.map +1 -1
- package/src/proxy.js +2 -0
- package/src/runtime/WorkerProjectAutoImports.d.ts +14 -0
- package/src/runtime/WorkerProjectAutoImports.d.ts.map +1 -0
- package/src/runtime/WorkerProjectAutoImports.js +63 -0
- package/src/templates/project/basic/app/Workers/ExampleWorker.ts.tpl +17 -0
- package/src/templates/project/basic/package.json.tpl +1 -1
- package/src/templates/project/basic/src/zintrust.workers.ts.tpl +11 -0
- package/src/zintrust.comon.d.ts +9 -0
- package/src/zintrust.comon.d.ts.map +1 -0
- package/src/zintrust.comon.js +15 -0
- package/src/zintrust.plugins.d.ts +6 -3
- package/src/zintrust.plugins.d.ts.map +1 -1
- package/src/zintrust.plugins.js +27 -3
- package/start.d.ts +1 -0
- package/start.js +1 -0
package/routes/apiDev.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example Routes
|
|
3
|
+
* Demonstrates routing patterns
|
|
4
|
+
*/
|
|
5
|
+
// import { MultiLoginController } from '@app/Controllers/MultiLoginController';
|
|
6
|
+
import { Router } from '../src/routes/Router.js';
|
|
7
|
+
import { registerMailUiPag } from './mail.js';
|
|
8
|
+
import registerDirectMysqlTestRoutes from './TestRoutes.js';
|
|
9
|
+
import { JobStateTracker } from '../src/index.js';
|
|
10
|
+
const trackerStatuses = new Set([
|
|
11
|
+
'pending',
|
|
12
|
+
'active',
|
|
13
|
+
'completed',
|
|
14
|
+
'failed',
|
|
15
|
+
'stalled',
|
|
16
|
+
'timeout',
|
|
17
|
+
'pending_recovery',
|
|
18
|
+
'dead_letter',
|
|
19
|
+
'manual_review',
|
|
20
|
+
'delayed',
|
|
21
|
+
]);
|
|
22
|
+
const getQueryValue = (req, key) => {
|
|
23
|
+
const raw = req.getQueryParam(key);
|
|
24
|
+
if (Array.isArray(raw)) {
|
|
25
|
+
return raw.length > 0 ? String(raw[0]) : undefined;
|
|
26
|
+
}
|
|
27
|
+
if (typeof raw === 'string')
|
|
28
|
+
return raw;
|
|
29
|
+
return undefined;
|
|
30
|
+
};
|
|
31
|
+
const parseLimit = (value) => {
|
|
32
|
+
if (value === undefined || value.trim().length === 0)
|
|
33
|
+
return 200;
|
|
34
|
+
const parsed = Number.parseInt(value, 10);
|
|
35
|
+
if (!Number.isFinite(parsed) || parsed <= 0)
|
|
36
|
+
return 200;
|
|
37
|
+
return Math.min(5000, parsed);
|
|
38
|
+
};
|
|
39
|
+
const normalizeOptional = (value) => {
|
|
40
|
+
if (value === undefined)
|
|
41
|
+
return undefined;
|
|
42
|
+
const trimmed = value.trim();
|
|
43
|
+
if (trimmed.length === 0)
|
|
44
|
+
return undefined;
|
|
45
|
+
return trimmed;
|
|
46
|
+
};
|
|
47
|
+
const parseStatus = (value) => {
|
|
48
|
+
const normalized = normalizeOptional(value);
|
|
49
|
+
if (normalized === undefined)
|
|
50
|
+
return undefined;
|
|
51
|
+
if (!trackerStatuses.has(normalized))
|
|
52
|
+
return undefined;
|
|
53
|
+
return normalized;
|
|
54
|
+
};
|
|
55
|
+
const buildTrackerResponse = (req) => {
|
|
56
|
+
const queueName = normalizeOptional(getQueryValue(req, 'queue'));
|
|
57
|
+
const status = parseStatus(getQueryValue(req, 'status'));
|
|
58
|
+
const jobId = normalizeOptional(getQueryValue(req, 'jobId'));
|
|
59
|
+
const limit = parseLimit(getQueryValue(req, 'limit'));
|
|
60
|
+
const records = JobStateTracker.list({
|
|
61
|
+
queueName,
|
|
62
|
+
status,
|
|
63
|
+
limit,
|
|
64
|
+
});
|
|
65
|
+
const transitions = JobStateTracker.getTransitions({
|
|
66
|
+
queueName,
|
|
67
|
+
jobId,
|
|
68
|
+
limit,
|
|
69
|
+
});
|
|
70
|
+
const processId = typeof process === 'undefined' ? null : process.pid;
|
|
71
|
+
return {
|
|
72
|
+
processId,
|
|
73
|
+
queueName: queueName ?? null,
|
|
74
|
+
status: status ?? null,
|
|
75
|
+
jobId: jobId ?? null,
|
|
76
|
+
limit,
|
|
77
|
+
records,
|
|
78
|
+
transitions,
|
|
79
|
+
summary: JobStateTracker.getSummary(queueName),
|
|
80
|
+
generatedAt: new Date().toISOString(),
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
const registerQueueTrackerDebugRoute = (_router) => {
|
|
84
|
+
Router.get(_router, '/_debug/queue/tracker', async (req, res) => {
|
|
85
|
+
res.json(buildTrackerResponse(req));
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
export function registerDevRoutes(_router) {
|
|
89
|
+
registerDirectMysqlTestRoutes(_router);
|
|
90
|
+
registerQueueTrackerDebugRoute(_router);
|
|
91
|
+
registerMailUiPag(_router);
|
|
92
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Broadcast Routes
|
|
3
|
+
*
|
|
4
|
+
* Runtime-only endpoints for broadcast.
|
|
5
|
+
* Provider setup and secret provisioning remain CLI-only.
|
|
6
|
+
*/
|
|
7
|
+
import { type IRouter } from '../src/routes/Router';
|
|
8
|
+
export declare function registerBroadcastRoutes(router: IRouter): void;
|
|
9
|
+
//# sourceMappingURL=broadcast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../routes/broadcast.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,qBAAqB,CAAC;AAE3D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAsB7D"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Broadcast Routes
|
|
3
|
+
*
|
|
4
|
+
* Runtime-only endpoints for broadcast.
|
|
5
|
+
* Provider setup and secret provisioning remain CLI-only.
|
|
6
|
+
*/
|
|
7
|
+
import { Router } from '../src/routes/Router.js';
|
|
8
|
+
export function registerBroadcastRoutes(router) {
|
|
9
|
+
Router.get(router, '/broadcast/health', async (_req, res) => {
|
|
10
|
+
res.json({ ok: true });
|
|
11
|
+
});
|
|
12
|
+
Router.post(router, '/broadcast/send', async (req, res) => {
|
|
13
|
+
const body = (req.body ?? {});
|
|
14
|
+
const channel = typeof body['channel'] === 'string' ? body['channel'] : '';
|
|
15
|
+
const event = typeof body['event'] === 'string' ? body['event'] : '';
|
|
16
|
+
const data = body['data'];
|
|
17
|
+
if (!channel || !event) {
|
|
18
|
+
res
|
|
19
|
+
.setStatus(400)
|
|
20
|
+
.json({ ok: false, error: 'Invalid payload: channel and event are required' });
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const { Broadcast } = await import('../src/tools/broadcast/Broadcast.js');
|
|
24
|
+
const result = await Broadcast.send(channel, event, data);
|
|
25
|
+
res.json({ ok: true, result });
|
|
26
|
+
});
|
|
27
|
+
}
|
package/routes/mail.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type IRouter } from '../src/index.js';
|
|
2
|
+
import '../app/Workers/TestWorker';
|
|
3
|
+
export declare const demonstrateDelayScheduling: () => Promise<void>;
|
|
4
|
+
export declare const demonstratePriorityJobOrdering: () => Promise<void>;
|
|
5
|
+
export declare const demonstrateRetryControl: () => Promise<void>;
|
|
6
|
+
export declare const demonstrateDeduplication: () => Promise<void>;
|
|
7
|
+
export declare const demonstrateCustomLockProvider: () => Promise<void>;
|
|
8
|
+
export declare const demonstrateBulkProcessing: () => Promise<void>;
|
|
9
|
+
export declare const demonstrateMetadataTracking: () => Promise<void>;
|
|
10
|
+
export declare const demonstrateCombinedAdvancedOptions: () => Promise<void>;
|
|
11
|
+
export declare const registerMailUiPag: (router: IRouter) => Promise<void>;
|
|
12
|
+
//# sourceMappingURL=mail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../routes/mail.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9D,OAAO,yBAAyB,CAAC;AAEjC,eAAO,MAAM,0BAA0B,QAAa,OAAO,CAAC,IAAI,CAU/D,CAAC;AAEF,eAAO,MAAM,8BAA8B,QAAa,OAAO,CAAC,IAAI,CAUnE,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAa,OAAO,CAAC,IAAI,CAS5D,CAAC;AAEF,eAAO,MAAM,wBAAwB,QAAa,OAAO,CAAC,IAAI,CA4B7D,CAAC;AAEF,eAAO,MAAM,6BAA6B,QAAa,OAAO,CAAC,IAAI,CA4BlE,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAAa,OAAO,CAAC,IAAI,CAU9D,CAAC;AAEF,eAAO,MAAM,2BAA2B,QAAa,OAAO,CAAC,IAAI,CAehE,CAAC;AAEF,eAAO,MAAM,kCAAkC,QAAa,OAAO,CAAC,IAAI,CAcvE,CAAC;AA4CF,eAAO,MAAM,iBAAiB,GAAU,QAAQ,OAAO,KAAG,OAAO,CAAC,IAAI,CAkDrE,CAAC"}
|
package/routes/mail.js
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/* istanbul ignore file */
|
|
2
|
+
import AdvancedEmailJobService from '../app/Jobs/AdvancedEmailJobService.js';
|
|
3
|
+
import { Mail } from '../src/tools/mail/Mail.js';
|
|
4
|
+
import { Logger, Router } from '../src/index.js';
|
|
5
|
+
// Ensure TestWorker is registered for dashboard visibility
|
|
6
|
+
import '../app/Workers/TestWorker.js';
|
|
7
|
+
export const demonstrateDelayScheduling = async () => {
|
|
8
|
+
// Schedule email for 1 hour from now - job won't process until delay expires
|
|
9
|
+
await AdvancedEmailJobService.sendScheduledLock('scheduled@zintrust.com', 'Meeting Reminder', 'welcome', { meetingTime: '2026-02-01T10:00:00Z' }, 3600000 // 1 hour delay in milliseconds
|
|
10
|
+
);
|
|
11
|
+
// AdvancedEmailJobService.processAll();
|
|
12
|
+
};
|
|
13
|
+
export const demonstratePriorityJobOrdering = async () => {
|
|
14
|
+
// High priority urgent email - processes before lower priority jobs
|
|
15
|
+
await AdvancedEmailJobService.sendHighPriority('urgent@zintrust.com', 'URGENT: System Alert', 'welcome', { alertType: 'critical' }, { priority: 10, attempts: 5 }, // Higher number = higher priority,
|
|
16
|
+
'advanced-queue-redis');
|
|
17
|
+
};
|
|
18
|
+
export const demonstrateRetryControl = async () => {
|
|
19
|
+
// Email with custom retry attempts and exponential backoff
|
|
20
|
+
await AdvancedEmailJobService.sendHighPriority('retry@zintrust.com', 'Retry Test', 'welcome', { test: 'retry-logic' }, { attempts: 7, delay: 0 } // Will retry 7 times with exponential backoff
|
|
21
|
+
);
|
|
22
|
+
};
|
|
23
|
+
export const demonstrateDeduplication = async () => {
|
|
24
|
+
// Prevents duplicate emails from being sent within 24-hour window
|
|
25
|
+
await AdvancedEmailJobService.sendWithDeduplication('dedup@zintrust.com', 'Welcome Email', 'welcome', { name: 'User' }, 'welcome-user-123', // Same uniqueId = same job
|
|
26
|
+
'example-redis1');
|
|
27
|
+
await AdvancedEmailJobService.sendWithDeduplication('dedup-2@zintrust.com', 'Weekly Digest', 'welcome', { digest: 'week-1', delay: 300000 }, 'weekly-digest-001', 'example-redis1');
|
|
28
|
+
await AdvancedEmailJobService.sendWithDeduplication('dedup-3@zintrust.com', 'Invoice Ready', 'welcome', { invoiceId: 'inv-8899', delay: 300000 }, 'invoice-inv-8899', 'advanced-queue');
|
|
29
|
+
};
|
|
30
|
+
export const demonstrateCustomLockProvider = async () => {
|
|
31
|
+
// Use custom lock provider (redis/database/memory) for uniqueness
|
|
32
|
+
await AdvancedEmailJobService.sendWithUniqueLock('unique@zintrust.com', 'Password Reset', 'welcome', { token: 'abc123' }, 'redis', // uniqueVia: 'redis' | 'database' | 'memory'
|
|
33
|
+
'example-redis1');
|
|
34
|
+
await AdvancedEmailJobService.sendWithUniqueLock('unique-2@zintrust.com', 'Email Verification', 'welcome', { token: 'verify-456' }, 'memory', 'advanced-queue');
|
|
35
|
+
await AdvancedEmailJobService.sendWithUniqueLock('unique-3@zintrust.com', 'Account Recovery', 'welcome', { token: 'recover-789' }, 'database', 'example-redis1');
|
|
36
|
+
};
|
|
37
|
+
export const demonstrateBulkProcessing = async () => {
|
|
38
|
+
// Send bulk emails with batch ID and per-recipient deduplication
|
|
39
|
+
await AdvancedEmailJobService.sendBulk(['bulk1@zintrust.com', 'bulk2@zintrust.com', 'bulk3@zintrust.com'], 'Monthly Newsletter', 'welcome', { campaign: 'Q1-2026', issue: 'January' }, 'batch-newsletter-202601', // batchId for tracking
|
|
40
|
+
'advanced-queue');
|
|
41
|
+
};
|
|
42
|
+
export const demonstrateMetadataTracking = async () => {
|
|
43
|
+
// Email with campaign tracking metadata
|
|
44
|
+
await AdvancedEmailJobService.sendWithMetadata('metadata@zintrust.com', 'Campaign Email', 'welcome', { userName: 'Alice' }, {
|
|
45
|
+
campaign: 'winter-sale',
|
|
46
|
+
source: 'web-signup',
|
|
47
|
+
priority: 'high',
|
|
48
|
+
tags: ['marketing', 'promotion', 'new-user'],
|
|
49
|
+
}, 'example-redis1');
|
|
50
|
+
};
|
|
51
|
+
export const demonstrateCombinedAdvancedOptions = async () => {
|
|
52
|
+
// High-priority scheduled email with retry logic
|
|
53
|
+
await AdvancedEmailJobService.sendHighPriority('combined@zintrust.com', 'VIP Scheduled Notification', 'welcome', { vipLevel: 'platinum' }, {
|
|
54
|
+
priority: 10, // High priority
|
|
55
|
+
delay: 300000, // 5 minutes delay
|
|
56
|
+
attempts: 5, // Retry up to 5 times
|
|
57
|
+
}, 'example-redis1');
|
|
58
|
+
};
|
|
59
|
+
const TestAdvancedJob = async () => {
|
|
60
|
+
// ====================================================================
|
|
61
|
+
// SCENARIO 1: Delay Scheduling (delay option)
|
|
62
|
+
// ====================================================================
|
|
63
|
+
// await demonstrateDelayScheduling();
|
|
64
|
+
// ====================================================================
|
|
65
|
+
// SCENARIO 2: Priority Job Ordering (priority option)
|
|
66
|
+
// ====================================================================
|
|
67
|
+
await demonstratePriorityJobOrdering();
|
|
68
|
+
// ====================================================================
|
|
69
|
+
// SCENARIO 3: Retry Control (attempts + backoff options)
|
|
70
|
+
// ====================================================================
|
|
71
|
+
// await demonstrateRetryControl();
|
|
72
|
+
// ====================================================================
|
|
73
|
+
// SCENARIO 4: Deduplication Support (uniqueId + deduplication options)
|
|
74
|
+
// ====================================================================
|
|
75
|
+
// await demonstrateDeduplication();
|
|
76
|
+
// ====================================================================
|
|
77
|
+
// SCENARIO 5: Custom Lock Provider (uniqueVia option)
|
|
78
|
+
// ====================================================================
|
|
79
|
+
// await demonstrateCustomLockProvider();
|
|
80
|
+
// ====================================================================
|
|
81
|
+
// SCENARIO 6: Bulk Processing with Deduplication
|
|
82
|
+
// ====================================================================
|
|
83
|
+
// await demonstrateBulkProcessing();
|
|
84
|
+
// ====================================================================
|
|
85
|
+
// SCENARIO 7: Metadata Tracking (custom envelope data)
|
|
86
|
+
// ====================================================================
|
|
87
|
+
// await demonstrateMetadataTracking();
|
|
88
|
+
// ====================================================================
|
|
89
|
+
// SCENARIO 8: Combined Advanced Options
|
|
90
|
+
// ====================================================================
|
|
91
|
+
// await demonstrateCombinedAdvancedOptions();
|
|
92
|
+
};
|
|
93
|
+
export const registerMailUiPag = async (router) => {
|
|
94
|
+
/* istanbul ignore next */
|
|
95
|
+
// const { EmailJobService } = await import('../app/Jobs/EmailJobService');
|
|
96
|
+
const handler = async (req, res) => {
|
|
97
|
+
try {
|
|
98
|
+
await TestAdvancedJob();
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
Logger.warn('Mail preview queue trigger failed', {
|
|
102
|
+
route: '/mail/:template',
|
|
103
|
+
template: req.getParam('template') ?? 'welcome',
|
|
104
|
+
error: error instanceof Error ? error.message : String(error),
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
const templateName = req.getParam('template') ?? 'welcome';
|
|
108
|
+
const templates = {
|
|
109
|
+
welcome: 'welcome',
|
|
110
|
+
general: 'general',
|
|
111
|
+
custom: 'custom',
|
|
112
|
+
'job-completed': 'job-completed',
|
|
113
|
+
'performance-report': 'performance-report',
|
|
114
|
+
'password-reset': 'password-reset',
|
|
115
|
+
'worker-alert': 'worker-alert',
|
|
116
|
+
};
|
|
117
|
+
const finalTemplate = templates[templateName] ?? 'welcome';
|
|
118
|
+
const variablesByTemplate = {
|
|
119
|
+
welcome: { name: 'Alice' },
|
|
120
|
+
general: {
|
|
121
|
+
name: 'Alice',
|
|
122
|
+
headline: 'Hello Alice',
|
|
123
|
+
message: 'Welcome to ZinTrust platform.',
|
|
124
|
+
primary_color: '#0ea5e9',
|
|
125
|
+
},
|
|
126
|
+
custom: { name: 'Alice' },
|
|
127
|
+
};
|
|
128
|
+
const html = await Mail.render({
|
|
129
|
+
template: finalTemplate,
|
|
130
|
+
variables: variablesByTemplate[finalTemplate] ?? { name: 'Alice' },
|
|
131
|
+
});
|
|
132
|
+
res.html(html);
|
|
133
|
+
};
|
|
134
|
+
if (typeof Router?.get !== 'function') {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
Router.get(router, '/mail/:template', handler);
|
|
138
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../routes/storage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,qBAAqB,CAAC;AAI3D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAiC3D;AAED,eAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { HTTP_HEADERS } from '../src/config/constants.js';
|
|
2
|
+
import { Env } from '../src/config/env.js';
|
|
3
|
+
import { Router } from '../src/routes/Router.js';
|
|
4
|
+
import { LocalSignedUrl } from '../src/tools/storage/LocalSignedUrl.js';
|
|
5
|
+
import { Storage } from '../src/tools/storage/index.js';
|
|
6
|
+
export function registerStorageRoutes(router) {
|
|
7
|
+
Router.get(router, '/storage/download', async (req, res) => {
|
|
8
|
+
const tokenRaw = req.getQueryParam('token');
|
|
9
|
+
const token = typeof tokenRaw === 'string' ? tokenRaw : '';
|
|
10
|
+
if (token.trim() === '') {
|
|
11
|
+
res.setStatus(400).json({ message: 'Missing token' });
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const appKey = Env.get('APP_KEY', '');
|
|
15
|
+
if (appKey.trim() === '') {
|
|
16
|
+
res.setStatus(500).json({ message: 'Storage signing is not configured' });
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
const payload = LocalSignedUrl.verifyToken(token, appKey);
|
|
21
|
+
// Only local disk is supported by this route.
|
|
22
|
+
if (payload.disk !== 'local') {
|
|
23
|
+
res.setStatus(400).json({ message: 'Unsupported disk' });
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const contents = await Storage.get('local', payload.key);
|
|
27
|
+
res.setHeader(HTTP_HEADERS.CONTENT_TYPE, 'application/octet-stream');
|
|
28
|
+
res.setStatus(200).send(contents);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
res.setStatus(403).json({ message: 'Invalid or expired token' });
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
export default registerStorageRoutes;
|
package/src/boot/bootstrap.js
CHANGED
|
@@ -10,6 +10,7 @@ import { Env } from '../config/env.js';
|
|
|
10
10
|
import { Logger } from '../config/logger.js';
|
|
11
11
|
import { ErrorFactory } from '../exceptions/ZintrustError.js';
|
|
12
12
|
import { ProjectRuntime } from '../runtime/ProjectRuntime.js';
|
|
13
|
+
import { WorkerProjectAutoImports } from '../runtime/WorkerProjectAutoImports.js';
|
|
13
14
|
import { loadWorkersModule } from '../runtime/WorkersModule.js';
|
|
14
15
|
let appInstance;
|
|
15
16
|
let serverInstance;
|
|
@@ -165,6 +166,10 @@ async function useWorkerStarter() {
|
|
|
165
166
|
// Initialize worker management system
|
|
166
167
|
let workerInit = null;
|
|
167
168
|
try {
|
|
169
|
+
const projectWorkerEntrypoint = await WorkerProjectAutoImports.tryImportProjectWorkerEntrypoint();
|
|
170
|
+
if (!projectWorkerEntrypoint.ok && projectWorkerEntrypoint.reason === 'import-failed') {
|
|
171
|
+
Logger.warn(`Project worker entrypoint import failed: ${projectWorkerEntrypoint.errorMessage ?? 'Unknown error'}`);
|
|
172
|
+
}
|
|
168
173
|
const workers = await loadWorkersModule();
|
|
169
174
|
if (workers?.WorkerInit !== undefined) {
|
|
170
175
|
workerInit = workers.WorkerInit;
|
package/src/cli/CLI.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CLI.d.ts","sourceRoot":"","sources":["../../../src/cli/CLI.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"CLI.d.ts","sourceRoot":"","sources":["../../../src/cli/CLI.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,MAAM,WAAW,IAAI;IACnB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,UAAU,IAAI,OAAO,CAAC;CACvB;AAwPD;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG;cACJ,IAAI;EAed,CAAC"}
|
package/src/cli/CLI.js
CHANGED
|
@@ -11,6 +11,7 @@ import { ContainerWorkersCommand } from './commands/ContainerWorkersCommand.js';
|
|
|
11
11
|
import { AddMigrationCommand, CreateCommand, CreateMigrationCommand, } from './commands/CreateCommand.js';
|
|
12
12
|
import { D1LearnCommand } from './commands/D1LearnCommand.js';
|
|
13
13
|
import { D1MigrateCommand } from './commands/D1MigrateCommand.js';
|
|
14
|
+
import { D1ProxyCommand } from './commands/D1ProxyCommand.js';
|
|
14
15
|
import { DbSeedCommand } from './commands/DbSeedCommand.js';
|
|
15
16
|
import { DebugCommand } from './commands/DebugCommand.js';
|
|
16
17
|
import { DeployCommand } from './commands/DeployCommand.js';
|
|
@@ -28,6 +29,7 @@ import { InitProducerCommand } from './commands/InitProducerCommand.js';
|
|
|
28
29
|
import { InitProxyCommand } from './commands/InitProxyCommand.js';
|
|
29
30
|
import { JwtDevCommand } from './commands/JwtDevCommand.js';
|
|
30
31
|
import { KeyGenerateCommand } from './commands/KeyGenerateCommand.js';
|
|
32
|
+
import { KvProxyCommand } from './commands/KvProxyCommand.js';
|
|
31
33
|
import { MakeMailTemplateCommand } from './commands/MakeMailTemplateCommand.js';
|
|
32
34
|
import { MakeNotificationTemplateCommand } from './commands/MakeNotificationTemplateCommand.js';
|
|
33
35
|
import { MigrateCommand } from './commands/MigrateCommand.js';
|
|
@@ -128,6 +130,8 @@ const buildCommandRegistry = () => {
|
|
|
128
130
|
RoutesCommand.create(),
|
|
129
131
|
JwtDevCommand,
|
|
130
132
|
ProxyCommand.create(),
|
|
133
|
+
D1ProxyCommand.create(),
|
|
134
|
+
KvProxyCommand.create(),
|
|
131
135
|
MySqlProxyCommand.create(),
|
|
132
136
|
PostgresProxyCommand.create(),
|
|
133
137
|
MongoDBProxyCommand.create(),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"D1ProxyCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/D1ProxyCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA6LrE,eAAO,MAAM,cAAc;cACf,YAAY;EAmCtB,CAAC;AAEH,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { BaseCommand } from '../BaseCommand.js';
|
|
2
|
+
import { maybeRunProxyWatchMode } from '../commands/ProxyCommandUtils.js';
|
|
3
|
+
import { SpawnUtil } from '../utils/spawn.js';
|
|
4
|
+
import { Env } from '../../config/env.js';
|
|
5
|
+
import { Logger } from '../../config/logger.js';
|
|
6
|
+
import { ErrorFactory } from '../../exceptions/ZintrustError.js';
|
|
7
|
+
import { isNonEmptyString } from '../../helper/index.js';
|
|
8
|
+
import { existsSync, readFileSync, writeFileSync } from '../../node-singletons/fs.js';
|
|
9
|
+
import { join } from '../../node-singletons/path.js';
|
|
10
|
+
const DEFAULT_CONFIG = 'wrangler.jsonc';
|
|
11
|
+
const DEFAULT_COMPATIBILITY_DATE = '2026-03-12';
|
|
12
|
+
const DEFAULT_BINDING = 'ZIN_DB';
|
|
13
|
+
const DEFAULT_DATABASE_NAME = 'd1-proxy-db';
|
|
14
|
+
const DEFAULT_DATABASE_ID = '<your-d1-database-id>';
|
|
15
|
+
const DEFAULT_MIGRATIONS_DIR = 'database/migrations/d1';
|
|
16
|
+
const trimOption = (value) => {
|
|
17
|
+
if (!isNonEmptyString(value))
|
|
18
|
+
return undefined;
|
|
19
|
+
const trimmed = value.trim();
|
|
20
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
21
|
+
};
|
|
22
|
+
const resolveConfigPath = (raw) => {
|
|
23
|
+
const trimmed = trimOption(raw);
|
|
24
|
+
return trimmed ?? DEFAULT_CONFIG;
|
|
25
|
+
};
|
|
26
|
+
const findQuotedValue = (content, key) => {
|
|
27
|
+
const pattern = new RegExp(String.raw `"${key}"\s*:\s*"([^"]+)"`);
|
|
28
|
+
const match = pattern.exec(content);
|
|
29
|
+
return trimOption(match?.[1]);
|
|
30
|
+
};
|
|
31
|
+
const resolveConfigValues = (content, options) => {
|
|
32
|
+
const fileContent = content ?? '';
|
|
33
|
+
return {
|
|
34
|
+
binding: trimOption(options.binding) ??
|
|
35
|
+
trimOption(Env.get('D1_BINDING', '')) ??
|
|
36
|
+
findQuotedValue(fileContent, 'D1_BINDING') ??
|
|
37
|
+
findQuotedValue(fileContent, 'binding') ??
|
|
38
|
+
DEFAULT_BINDING,
|
|
39
|
+
databaseName: trimOption(options.databaseName) ??
|
|
40
|
+
trimOption(Env.get('D1_DATABASE_NAME', '')) ??
|
|
41
|
+
findQuotedValue(fileContent, 'database_name') ??
|
|
42
|
+
DEFAULT_DATABASE_NAME,
|
|
43
|
+
databaseId: trimOption(options.databaseId) ??
|
|
44
|
+
trimOption(Env.get('D1_DATABASE_ID', '')) ??
|
|
45
|
+
findQuotedValue(fileContent, 'database_id') ??
|
|
46
|
+
DEFAULT_DATABASE_ID,
|
|
47
|
+
migrationsDir: trimOption(options.migrationsDir) ??
|
|
48
|
+
findQuotedValue(fileContent, 'migrations_dir') ??
|
|
49
|
+
DEFAULT_MIGRATIONS_DIR,
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
const renderD1ProxyEnvBlock = (values) => {
|
|
53
|
+
return [
|
|
54
|
+
' "d1-proxy": {',
|
|
55
|
+
' "name": "zintrust-d1-proxy",',
|
|
56
|
+
' "main": "./src/proxy/d1/ZintrustD1Proxy.ts",',
|
|
57
|
+
' "compatibility_flags": ["nodejs_compat"],',
|
|
58
|
+
` "compatibility_date": "${DEFAULT_COMPATIBILITY_DATE}",`,
|
|
59
|
+
' "vars": {',
|
|
60
|
+
` "D1_BINDING": "${values.binding}",`,
|
|
61
|
+
' "ZT_PROXY_SIGNING_WINDOW_MS": "60000",',
|
|
62
|
+
' "ZT_MAX_BODY_BYTES": "131072",',
|
|
63
|
+
' "ZT_MAX_SQL_BYTES": "32768",',
|
|
64
|
+
' "ZT_MAX_PARAMS": "256",',
|
|
65
|
+
' "NODE_ENV": "development",',
|
|
66
|
+
String.raw ` "ZT_D1_STATEMENTS_JSON": "{\"health\":\"select 1 as ok\"}"`,
|
|
67
|
+
' },',
|
|
68
|
+
' "d1_databases": [',
|
|
69
|
+
' {',
|
|
70
|
+
` "binding": "${values.binding}",`,
|
|
71
|
+
` "database_name": "${values.databaseName}",`,
|
|
72
|
+
` "database_id": "${values.databaseId}",`,
|
|
73
|
+
` "migrations_dir": "${values.migrationsDir}"`,
|
|
74
|
+
' }',
|
|
75
|
+
' ]',
|
|
76
|
+
' }',
|
|
77
|
+
].join('\n');
|
|
78
|
+
};
|
|
79
|
+
const renderDefaultWranglerConfig = (values) => {
|
|
80
|
+
return [
|
|
81
|
+
'{',
|
|
82
|
+
' "name": "zintrust-api",',
|
|
83
|
+
' "main": "./src/functions/cloudflare.ts",',
|
|
84
|
+
` "compatibility_date": "${DEFAULT_COMPATIBILITY_DATE}",`,
|
|
85
|
+
' "compatibility_flags": ["nodejs_compat"],',
|
|
86
|
+
' "env": {',
|
|
87
|
+
renderD1ProxyEnvBlock(values),
|
|
88
|
+
' }',
|
|
89
|
+
'}',
|
|
90
|
+
'',
|
|
91
|
+
].join('\n');
|
|
92
|
+
};
|
|
93
|
+
const injectEnvBlock = (content, block) => {
|
|
94
|
+
if (/"d1-proxy"\s*:\s*\{/.test(content))
|
|
95
|
+
return content;
|
|
96
|
+
if (/"env"\s*:\s*\{\s*\}/m.test(content)) {
|
|
97
|
+
return content.replace(/"env"\s*:\s*\{\s*\}/m, `"env": {\n${block}\n }`);
|
|
98
|
+
}
|
|
99
|
+
if (/"env"\s*:\s*\{/m.test(content)) {
|
|
100
|
+
return content.replace(/"env"\s*:\s*\{/m, (match) => `${match}\n${block},`);
|
|
101
|
+
}
|
|
102
|
+
const closingIndex = content.lastIndexOf('}');
|
|
103
|
+
if (closingIndex < 0) {
|
|
104
|
+
throw ErrorFactory.createCliError('Invalid wrangler.jsonc: missing closing brace.');
|
|
105
|
+
}
|
|
106
|
+
const before = content.slice(0, closingIndex).trimEnd();
|
|
107
|
+
const suffix = before.endsWith('{') ? '\n' : ',\n';
|
|
108
|
+
return `${before}${suffix} "env": {\n${block}\n }\n}\n`;
|
|
109
|
+
};
|
|
110
|
+
const ensureWranglerConfig = (configPath, options) => {
|
|
111
|
+
if (!existsSync(configPath)) {
|
|
112
|
+
const values = resolveConfigValues(undefined, options);
|
|
113
|
+
writeFileSync(configPath, renderDefaultWranglerConfig(values), 'utf-8');
|
|
114
|
+
return { createdFile: true, insertedEnv: true, values };
|
|
115
|
+
}
|
|
116
|
+
const content = readFileSync(configPath, 'utf-8');
|
|
117
|
+
const values = resolveConfigValues(content, options);
|
|
118
|
+
const next = injectEnvBlock(content, renderD1ProxyEnvBlock(values));
|
|
119
|
+
if (next !== content) {
|
|
120
|
+
writeFileSync(configPath, next, 'utf-8');
|
|
121
|
+
return { createdFile: false, insertedEnv: true, values };
|
|
122
|
+
}
|
|
123
|
+
return { createdFile: false, insertedEnv: false, values };
|
|
124
|
+
};
|
|
125
|
+
const warnOnPlaceholderDatabaseId = (values) => {
|
|
126
|
+
if (values.databaseId !== DEFAULT_DATABASE_ID)
|
|
127
|
+
return;
|
|
128
|
+
Logger.warn('Could not resolve a D1 database id automatically. Update wrangler.jsonc or pass --database-id before relying on the generated d1-proxy environment.');
|
|
129
|
+
};
|
|
130
|
+
const addOptions = (command) => {
|
|
131
|
+
command.option('-c, --config <path>', 'Wrangler config file', DEFAULT_CONFIG);
|
|
132
|
+
command.option('--watch', 'Auto-restart proxy on file changes');
|
|
133
|
+
command.option('--binding <name>', 'D1 binding name', DEFAULT_BINDING);
|
|
134
|
+
command.option('--database-name <name>', 'Cloudflare D1 database name');
|
|
135
|
+
command.option('--database-id <id>', 'Cloudflare D1 database id');
|
|
136
|
+
command.option('--migrations-dir <path>', 'Cloudflare D1 migrations directory', DEFAULT_MIGRATIONS_DIR);
|
|
137
|
+
};
|
|
138
|
+
export const D1ProxyCommand = Object.freeze({
|
|
139
|
+
create() {
|
|
140
|
+
return BaseCommand.create({
|
|
141
|
+
name: 'proxy:d1',
|
|
142
|
+
aliases: ['d1:proxy'],
|
|
143
|
+
description: 'Start the local Cloudflare D1 proxy Worker via Wrangler and scaffold env.d1-proxy in wrangler.jsonc when missing',
|
|
144
|
+
addOptions,
|
|
145
|
+
execute: async (options) => {
|
|
146
|
+
await maybeRunProxyWatchMode(options.watch);
|
|
147
|
+
const cwd = process.cwd();
|
|
148
|
+
const configPath = join(cwd, resolveConfigPath(options.config));
|
|
149
|
+
const result = ensureWranglerConfig(configPath, options);
|
|
150
|
+
if (result.createdFile) {
|
|
151
|
+
Logger.info(`Created ${configPath} with a default d1-proxy environment.`);
|
|
152
|
+
}
|
|
153
|
+
else if (result.insertedEnv) {
|
|
154
|
+
Logger.info(`Added env.d1-proxy to ${configPath}.`);
|
|
155
|
+
}
|
|
156
|
+
warnOnPlaceholderDatabaseId(result.values);
|
|
157
|
+
const exitCode = await SpawnUtil.spawnAndWait({
|
|
158
|
+
command: 'wrangler',
|
|
159
|
+
args: ['dev', '--config', configPath, '--env', 'd1-proxy'],
|
|
160
|
+
env: process.env,
|
|
161
|
+
forwardSignals: false,
|
|
162
|
+
});
|
|
163
|
+
if (exitCode !== 0) {
|
|
164
|
+
process.exit(exitCode);
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
export default D1ProxyCommand;
|
|
@@ -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;AA8MlE,eAAO,MAAM,oBAAoB;cACrB,YAAY;EAqBtB,CAAC"}
|