@zintrust/core 0.1.48 → 0.1.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +1 -9
- package/src/cli/CLI.d.ts.map +1 -1
- package/src/cli/CLI.js +2 -0
- package/src/cli/commands/AddCommand.js +2 -2
- package/src/cli/commands/BulletproofKeyGenerateCommand.d.ts +10 -0
- package/src/cli/commands/BulletproofKeyGenerateCommand.d.ts.map +1 -0
- package/src/cli/commands/BulletproofKeyGenerateCommand.js +139 -0
- package/src/cli/commands/JwtDevCommand.d.ts.map +1 -1
- package/src/cli/commands/JwtDevCommand.js +51 -32
- package/src/cli/scaffolding/ControllerGenerator.d.ts +1 -1
- package/src/cli/scaffolding/ControllerGenerator.d.ts.map +1 -1
- package/src/cli/scaffolding/ControllerGenerator.js +8 -79
- package/src/config/SecretsManager.d.ts +0 -1
- package/src/config/SecretsManager.d.ts.map +1 -1
- package/src/config/SecretsManager.js +0 -1
- package/src/config/index.d.ts +1 -1
- package/src/config/index.d.ts.map +1 -1
- package/src/config/index.js +30 -10
- package/src/config/middleware.d.ts +1 -0
- package/src/config/middleware.d.ts.map +1 -1
- package/src/config/middleware.js +3 -0
- package/src/http/error-pages/ErrorPageRenderer.js +7 -1
- package/src/index.d.ts +1 -2
- package/src/index.d.ts.map +1 -1
- package/src/index.js +4 -5
- package/src/middleware/BulletproofAuthMiddleware.d.ts +92 -0
- package/src/middleware/BulletproofAuthMiddleware.d.ts.map +1 -0
- package/src/middleware/BulletproofAuthMiddleware.js +421 -0
- package/src/middleware/CsrfMiddleware.d.ts +0 -1
- package/src/middleware/CsrfMiddleware.d.ts.map +1 -1
- package/src/middleware/CsrfMiddleware.js +8 -1
- package/src/middleware/JwtAuthMiddleware.d.ts.map +1 -1
- package/src/middleware/JwtAuthMiddleware.js +11 -5
- package/src/orm/Database.d.ts.map +1 -1
- package/src/orm/Database.js +48 -39
- package/src/orm/adapters/MySQLProxyAdapter.d.ts.map +1 -1
- package/src/orm/adapters/MySQLProxyAdapter.js +54 -35
- package/src/orm/adapters/PostgreSQLProxyAdapter.d.ts.map +1 -1
- package/src/orm/adapters/PostgreSQLProxyAdapter.js +126 -103
- package/src/orm/adapters/SqlProxyHttpAdapterShared.d.ts +30 -0
- package/src/orm/adapters/SqlProxyHttpAdapterShared.d.ts.map +1 -0
- package/src/orm/adapters/SqlProxyHttpAdapterShared.js +64 -0
- package/src/orm/adapters/SqlServerProxyAdapter.d.ts.map +1 -1
- package/src/orm/adapters/SqlServerProxyAdapter.js +54 -37
- package/src/orm/migrations/MigrationStore.d.ts.map +1 -1
- package/src/orm/migrations/MigrationStore.js +22 -1
- package/src/proxy/d1/ZintrustD1Proxy.d.ts +2 -2
- package/src/proxy/d1/ZintrustD1Proxy.d.ts.map +1 -1
- package/src/proxy/d1/ZintrustD1Proxy.js +39 -2
- package/src/proxy/kv/ZintrustKvProxy.d.ts +2 -2
- package/src/proxy/kv/ZintrustKvProxy.d.ts.map +1 -1
- package/src/proxy/kv/ZintrustKvProxy.js +38 -2
- package/src/routes/doc.js +1 -1
- package/src/routes/errorPages.d.ts.map +1 -1
- package/src/routes/errorPages.js +9 -2
- package/src/security/CsrfTokenManager.d.ts.map +1 -1
- package/src/security/CsrfTokenManager.js +57 -23
- package/src/security/JwtManager.d.ts +4 -1
- package/src/security/JwtManager.d.ts.map +1 -1
- package/src/security/JwtManager.js +25 -11
- package/src/security/JwtSessions.d.ts +12 -0
- package/src/security/JwtSessions.d.ts.map +1 -0
- package/src/security/JwtSessions.js +556 -0
- package/src/security/NonceReplay.d.ts +24 -0
- package/src/security/NonceReplay.d.ts.map +1 -0
- package/src/security/NonceReplay.js +42 -0
- package/src/security/TokenRevocation.d.ts.map +1 -1
- package/src/security/TokenRevocation.js +1 -0
- package/src/tools/http/Http.d.ts +5 -0
- package/src/tools/http/Http.d.ts.map +1 -1
- package/src/tools/http/Http.js +25 -9
- package/src/tools/queue/QueueReliabilityOrchestrator.d.ts.map +1 -1
- package/src/tools/queue/QueueReliabilityOrchestrator.js +18 -6
- package/src/validation/Validator.d.ts.map +1 -1
- package/src/validation/Validator.js +4 -2
- 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 +9 -3
- package/src/zintrust.plugins.d.ts.map +1 -1
- package/src/zintrust.plugins.js +10 -3
- package/src/zintrust.plugins.wg.d.ts +1 -0
- package/src/zintrust.plugins.wg.d.ts.map +1 -1
- package/src/zintrust.plugins.wg.js +1 -0
- package/app/Controllers/AuthController.d.ts +0 -10
- package/app/Controllers/AuthController.d.ts.map +0 -1
- package/app/Controllers/AuthController.js +0 -201
- package/app/Controllers/UserController.d.ts +0 -9
- package/app/Controllers/UserController.d.ts.map +0 -1
- package/app/Controllers/UserController.js +0 -8
- package/app/Controllers/UserQueryBuilderController.d.ts +0 -16
- package/app/Controllers/UserQueryBuilderController.d.ts.map +0 -1
- package/app/Controllers/UserQueryBuilderController.js +0 -404
- package/app/Middleware/ProfilerMiddleware.d.ts +0 -12
- package/app/Middleware/ProfilerMiddleware.d.ts.map +0 -1
- package/app/Middleware/ProfilerMiddleware.js +0 -47
- package/app/Middleware/index.d.ts +0 -59
- package/app/Middleware/index.d.ts.map +0 -1
- package/app/Middleware/index.js +0 -215
- package/app/Models/Post.d.ts +0 -14
- package/app/Models/Post.d.ts.map +0 -1
- package/app/Models/Post.js +0 -27
- package/app/Models/User.d.ts +0 -14
- package/app/Models/User.d.ts.map +0 -1
- package/app/Models/User.js +0 -44
- package/app/Schedules/JobTracking.d.ts +0 -3
- package/app/Schedules/JobTracking.d.ts.map +0 -1
- package/app/Schedules/JobTracking.js +0 -13
- package/app/Schedules/index.d.ts +0 -2
- package/app/Schedules/index.d.ts.map +0 -1
- package/app/Schedules/index.js +0 -1
- package/app/Toolkit/Broadcast/sendBroadcast.d.ts +0 -6
- package/app/Toolkit/Broadcast/sendBroadcast.d.ts.map +0 -1
- package/app/Toolkit/Broadcast/sendBroadcast.js +0 -5
- package/app/Toolkit/Mail/sendWelcomeEmail.d.ts +0 -6
- package/app/Toolkit/Mail/sendWelcomeEmail.d.ts.map +0 -1
- package/app/Toolkit/Mail/sendWelcomeEmail.js +0 -20
- package/app/Toolkit/Notification/sendSlackNotification.d.ts +0 -8
- package/app/Toolkit/Notification/sendSlackNotification.d.ts.map +0 -1
- package/app/Toolkit/Notification/sendSlackNotification.js +0 -5
- package/app/Toolkit/Notification/sendSms.d.ts +0 -6
- package/app/Toolkit/Notification/sendSms.d.ts.map +0 -1
- package/app/Toolkit/Notification/sendSms.js +0 -5
- package/app/Types/controller.d.ts +0 -42
- package/app/Types/controller.d.ts.map +0 -1
- package/app/Types/controller.js +0 -1
- package/config/broadcast.d.ts +0 -38
- package/config/broadcast.d.ts.map +0 -1
- package/config/broadcast.js +0 -37
- package/config/cache.d.ts +0 -40
- package/config/cache.d.ts.map +0 -1
- package/config/cache.js +0 -39
- package/config/database.d.ts +0 -58
- package/config/database.d.ts.map +0 -1
- package/config/database.js +0 -65
- package/config/mail.d.ts +0 -51
- package/config/mail.d.ts.map +0 -1
- package/config/mail.js +0 -69
- package/config/middleware.d.ts +0 -11
- package/config/middleware.d.ts.map +0 -1
- package/config/middleware.js +0 -30
- package/config/notification.d.ts +0 -33
- package/config/notification.d.ts.map +0 -1
- package/config/notification.js +0 -33
- package/config/queue.d.ts +0 -55
- package/config/queue.d.ts.map +0 -1
- package/config/queue.js +0 -87
- package/config/storage.d.ts +0 -59
- package/config/storage.d.ts.map +0 -1
- package/config/storage.js +0 -59
- package/config/workers.d.ts +0 -54
- package/config/workers.d.ts.map +0 -1
- package/config/workers.js +0 -83
- package/packages/cloudflare-d1-proxy/src/index.d.ts +0 -48
- package/packages/cloudflare-d1-proxy/src/index.d.ts.map +0 -1
- package/packages/cloudflare-d1-proxy/src/index.js +0 -387
- package/packages/cloudflare-kv-proxy/src/index.d.ts +0 -44
- package/packages/cloudflare-kv-proxy/src/index.d.ts.map +0 -1
- package/packages/cloudflare-kv-proxy/src/index.js +0 -325
- package/packages/queue-monitor/src/QueueMonitoringService.d.ts +0 -35
- package/packages/queue-monitor/src/QueueMonitoringService.d.ts.map +0 -1
- package/packages/queue-monitor/src/QueueMonitoringService.js +0 -194
- package/packages/queue-monitor/src/connection.d.ts +0 -3
- package/packages/queue-monitor/src/connection.d.ts.map +0 -1
- package/packages/queue-monitor/src/connection.js +0 -1
- package/packages/queue-monitor/src/dashboard-ui.d.ts +0 -7
- package/packages/queue-monitor/src/dashboard-ui.d.ts.map +0 -1
- package/packages/queue-monitor/src/dashboard-ui.js +0 -997
- package/packages/queue-monitor/src/driver.d.ts +0 -15
- package/packages/queue-monitor/src/driver.d.ts.map +0 -1
- package/packages/queue-monitor/src/driver.js +0 -115
- package/packages/queue-monitor/src/index.d.ts +0 -71
- package/packages/queue-monitor/src/index.d.ts.map +0 -1
- package/packages/queue-monitor/src/index.js +0 -296
- package/packages/queue-monitor/src/metrics.d.ts +0 -27
- package/packages/queue-monitor/src/metrics.d.ts.map +0 -1
- package/packages/queue-monitor/src/metrics.js +0 -92
- package/packages/queue-monitor/src/worker.d.ts +0 -8
- package/packages/queue-monitor/src/worker.d.ts.map +0 -1
- package/packages/queue-monitor/src/worker.js +0 -35
- package/packages/queue-redis/src/BullMQRedisQueue.d.ts +0 -26
- package/packages/queue-redis/src/BullMQRedisQueue.d.ts.map +0 -1
- package/packages/queue-redis/src/BullMQRedisQueue.js +0 -463
- package/packages/queue-redis/src/HttpQueueDriver.d.ts +0 -18
- package/packages/queue-redis/src/HttpQueueDriver.d.ts.map +0 -1
- package/packages/queue-redis/src/HttpQueueDriver.js +0 -249
- package/packages/queue-redis/src/QueueHttpGateway.d.ts +0 -16
- package/packages/queue-redis/src/QueueHttpGateway.d.ts.map +0 -1
- package/packages/queue-redis/src/QueueHttpGateway.js +0 -217
- package/packages/queue-redis/src/RedisPublishClient.d.ts +0 -14
- package/packages/queue-redis/src/RedisPublishClient.d.ts.map +0 -1
- package/packages/queue-redis/src/RedisPublishClient.js +0 -251
- package/packages/queue-redis/src/index.d.ts +0 -12
- package/packages/queue-redis/src/index.d.ts.map +0 -1
- package/packages/queue-redis/src/index.js +0 -10
- package/packages/queue-redis/src/register.d.ts +0 -6
- package/packages/queue-redis/src/register.d.ts.map +0 -1
- package/packages/queue-redis/src/register.js +0 -21
- package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts +0 -11
- package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts.map +0 -1
- package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.js +0 -32
- package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts +0 -11
- package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts.map +0 -1
- package/packages/workers/migrations/20260123180000_create_queue_jobs_table.js +0 -46
- package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts +0 -7
- package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts.map +0 -1
- package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.js +0 -44
- package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts +0 -7
- package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts.map +0 -1
- package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.js +0 -104
- package/packages/workers/src/AnomalyDetection.d.ts +0 -107
- package/packages/workers/src/AnomalyDetection.d.ts.map +0 -1
- package/packages/workers/src/AnomalyDetection.js +0 -329
- package/packages/workers/src/AutoScaler.d.ts +0 -128
- package/packages/workers/src/AutoScaler.d.ts.map +0 -1
- package/packages/workers/src/AutoScaler.js +0 -425
- package/packages/workers/src/BroadcastWorker.d.ts +0 -24
- package/packages/workers/src/BroadcastWorker.d.ts.map +0 -1
- package/packages/workers/src/BroadcastWorker.js +0 -24
- package/packages/workers/src/CanaryController.d.ts +0 -104
- package/packages/workers/src/CanaryController.d.ts.map +0 -1
- package/packages/workers/src/CanaryController.js +0 -424
- package/packages/workers/src/ChaosEngineering.d.ts +0 -80
- package/packages/workers/src/ChaosEngineering.d.ts.map +0 -1
- package/packages/workers/src/ChaosEngineering.js +0 -229
- package/packages/workers/src/CircuitBreaker.d.ts +0 -107
- package/packages/workers/src/CircuitBreaker.d.ts.map +0 -1
- package/packages/workers/src/CircuitBreaker.js +0 -374
- package/packages/workers/src/ClusterLock.d.ts +0 -91
- package/packages/workers/src/ClusterLock.d.ts.map +0 -1
- package/packages/workers/src/ClusterLock.js +0 -397
- package/packages/workers/src/ComplianceManager.d.ts +0 -178
- package/packages/workers/src/ComplianceManager.d.ts.map +0 -1
- package/packages/workers/src/ComplianceManager.js +0 -556
- package/packages/workers/src/DatacenterOrchestrator.d.ts +0 -134
- package/packages/workers/src/DatacenterOrchestrator.d.ts.map +0 -1
- package/packages/workers/src/DatacenterOrchestrator.js +0 -404
- package/packages/workers/src/DeadLetterQueue.d.ts +0 -123
- package/packages/workers/src/DeadLetterQueue.d.ts.map +0 -1
- package/packages/workers/src/DeadLetterQueue.js +0 -544
- package/packages/workers/src/HealthMonitor.d.ts +0 -43
- package/packages/workers/src/HealthMonitor.d.ts.map +0 -1
- package/packages/workers/src/HealthMonitor.js +0 -312
- package/packages/workers/src/MultiQueueWorker.d.ts +0 -90
- package/packages/workers/src/MultiQueueWorker.d.ts.map +0 -1
- package/packages/workers/src/MultiQueueWorker.js +0 -282
- package/packages/workers/src/NotificationWorker.d.ts +0 -24
- package/packages/workers/src/NotificationWorker.d.ts.map +0 -1
- package/packages/workers/src/NotificationWorker.js +0 -23
- package/packages/workers/src/Observability.d.ts +0 -154
- package/packages/workers/src/Observability.d.ts.map +0 -1
- package/packages/workers/src/Observability.js +0 -538
- package/packages/workers/src/PluginManager.d.ts +0 -124
- package/packages/workers/src/PluginManager.d.ts.map +0 -1
- package/packages/workers/src/PluginManager.js +0 -392
- package/packages/workers/src/PriorityQueue.d.ts +0 -118
- package/packages/workers/src/PriorityQueue.d.ts.map +0 -1
- package/packages/workers/src/PriorityQueue.js +0 -276
- package/packages/workers/src/ResourceMonitor.d.ts +0 -165
- package/packages/workers/src/ResourceMonitor.d.ts.map +0 -1
- package/packages/workers/src/ResourceMonitor.js +0 -632
- package/packages/workers/src/SLAMonitor.d.ts +0 -111
- package/packages/workers/src/SLAMonitor.d.ts.map +0 -1
- package/packages/workers/src/SLAMonitor.js +0 -274
- package/packages/workers/src/WorkerFactory.d.ts +0 -218
- package/packages/workers/src/WorkerFactory.d.ts.map +0 -1
- package/packages/workers/src/WorkerFactory.js +0 -2253
- package/packages/workers/src/WorkerInit.d.ts +0 -86
- package/packages/workers/src/WorkerInit.d.ts.map +0 -1
- package/packages/workers/src/WorkerInit.js +0 -307
- package/packages/workers/src/WorkerMetrics.d.ts +0 -116
- package/packages/workers/src/WorkerMetrics.d.ts.map +0 -1
- package/packages/workers/src/WorkerMetrics.js +0 -570
- package/packages/workers/src/WorkerRegistry.d.ts +0 -152
- package/packages/workers/src/WorkerRegistry.d.ts.map +0 -1
- package/packages/workers/src/WorkerRegistry.js +0 -396
- package/packages/workers/src/WorkerShutdown.d.ts +0 -70
- package/packages/workers/src/WorkerShutdown.d.ts.map +0 -1
- package/packages/workers/src/WorkerShutdown.js +0 -185
- package/packages/workers/src/WorkerVersioning.d.ts +0 -108
- package/packages/workers/src/WorkerVersioning.d.ts.map +0 -1
- package/packages/workers/src/WorkerVersioning.js +0 -300
- package/packages/workers/src/config/workerConfig.d.ts +0 -5
- package/packages/workers/src/config/workerConfig.d.ts.map +0 -1
- package/packages/workers/src/config/workerConfig.js +0 -25
- package/packages/workers/src/createQueueWorker.d.ts +0 -26
- package/packages/workers/src/createQueueWorker.d.ts.map +0 -1
- package/packages/workers/src/createQueueWorker.js +0 -367
- package/packages/workers/src/dashboard/index.d.ts +0 -2
- package/packages/workers/src/dashboard/index.d.ts.map +0 -1
- package/packages/workers/src/dashboard/index.js +0 -1
- package/packages/workers/src/dashboard/types.d.ts +0 -123
- package/packages/workers/src/dashboard/types.d.ts.map +0 -1
- package/packages/workers/src/dashboard/types.js +0 -1
- package/packages/workers/src/dashboard/workers-api.d.ts +0 -5
- package/packages/workers/src/dashboard/workers-api.d.ts.map +0 -1
- package/packages/workers/src/dashboard/workers-api.js +0 -738
- package/packages/workers/src/helper/index.d.ts +0 -6
- package/packages/workers/src/helper/index.d.ts.map +0 -1
- package/packages/workers/src/helper/index.js +0 -10
- package/packages/workers/src/http/WorkerApiController.d.ts +0 -39
- package/packages/workers/src/http/WorkerApiController.d.ts.map +0 -1
- package/packages/workers/src/http/WorkerApiController.js +0 -313
- package/packages/workers/src/http/WorkerController.d.ts +0 -375
- package/packages/workers/src/http/WorkerController.d.ts.map +0 -1
- package/packages/workers/src/http/WorkerController.js +0 -1454
- package/packages/workers/src/http/WorkerMonitoringService.d.ts +0 -12
- package/packages/workers/src/http/WorkerMonitoringService.d.ts.map +0 -1
- package/packages/workers/src/http/WorkerMonitoringService.js +0 -89
- package/packages/workers/src/http/middleware/CustomValidation.d.ts +0 -93
- package/packages/workers/src/http/middleware/CustomValidation.d.ts.map +0 -1
- package/packages/workers/src/http/middleware/CustomValidation.js +0 -270
- package/packages/workers/src/http/middleware/DatacenterValidator.d.ts +0 -4
- package/packages/workers/src/http/middleware/DatacenterValidator.d.ts.map +0 -1
- package/packages/workers/src/http/middleware/DatacenterValidator.js +0 -94
- package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts +0 -8
- package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts.map +0 -1
- package/packages/workers/src/http/middleware/EditWorkerValidation.js +0 -56
- package/packages/workers/src/http/middleware/FeaturesValidator.d.ts +0 -4
- package/packages/workers/src/http/middleware/FeaturesValidator.d.ts.map +0 -1
- package/packages/workers/src/http/middleware/FeaturesValidator.js +0 -61
- package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts +0 -32
- package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts.map +0 -1
- package/packages/workers/src/http/middleware/InfrastructureValidator.js +0 -226
- package/packages/workers/src/http/middleware/OptionsValidator.d.ts +0 -4
- package/packages/workers/src/http/middleware/OptionsValidator.d.ts.map +0 -1
- package/packages/workers/src/http/middleware/OptionsValidator.js +0 -112
- package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts +0 -8
- package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts.map +0 -1
- package/packages/workers/src/http/middleware/PayloadSanitizer.js +0 -42
- package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts +0 -4
- package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts.map +0 -1
- package/packages/workers/src/http/middleware/ProcessorPathSanitizer.js +0 -140
- package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts +0 -4
- package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts.map +0 -1
- package/packages/workers/src/http/middleware/QueueNameSanitizer.js +0 -45
- package/packages/workers/src/http/middleware/ValidateDriver.d.ts +0 -8
- package/packages/workers/src/http/middleware/ValidateDriver.d.ts.map +0 -1
- package/packages/workers/src/http/middleware/ValidateDriver.js +0 -20
- package/packages/workers/src/http/middleware/VersionSanitizer.d.ts +0 -4
- package/packages/workers/src/http/middleware/VersionSanitizer.d.ts.map +0 -1
- package/packages/workers/src/http/middleware/VersionSanitizer.js +0 -25
- package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts +0 -4
- package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts.map +0 -1
- package/packages/workers/src/http/middleware/WorkerNameSanitizer.js +0 -46
- package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts +0 -28
- package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts.map +0 -1
- package/packages/workers/src/http/middleware/WorkerValidationChain.js +0 -186
- package/packages/workers/src/index.d.ts +0 -47
- package/packages/workers/src/index.d.ts.map +0 -1
- package/packages/workers/src/index.js +0 -48
- package/packages/workers/src/routes/workers.d.ts +0 -13
- package/packages/workers/src/routes/workers.d.ts.map +0 -1
- package/packages/workers/src/routes/workers.js +0 -126
- package/packages/workers/src/storage/WorkerStore.d.ts +0 -52
- package/packages/workers/src/storage/WorkerStore.d.ts.map +0 -1
- package/packages/workers/src/storage/WorkerStore.js +0 -259
- package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts +0 -47
- package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts.map +0 -1
- package/packages/workers/src/telemetry/api/TelemetryAPI.js +0 -219
- package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts +0 -18
- package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts.map +0 -1
- package/packages/workers/src/telemetry/api/TelemetryMonitoringService.js +0 -140
- package/packages/workers/src/telemetry/components/AlertPanel.d.ts +0 -2
- package/packages/workers/src/telemetry/components/AlertPanel.d.ts.map +0 -1
- package/packages/workers/src/telemetry/components/AlertPanel.js +0 -13
- package/packages/workers/src/telemetry/components/CostTracking.d.ts +0 -2
- package/packages/workers/src/telemetry/components/CostTracking.d.ts.map +0 -1
- package/packages/workers/src/telemetry/components/CostTracking.js +0 -14
- package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts +0 -2
- package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts.map +0 -1
- package/packages/workers/src/telemetry/components/ResourceUsageChart.js +0 -11
- package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts +0 -2
- package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts.map +0 -1
- package/packages/workers/src/telemetry/components/WorkerHealthChart.js +0 -11
- package/packages/workers/src/telemetry/index.d.ts +0 -16
- package/packages/workers/src/telemetry/index.d.ts.map +0 -1
- package/packages/workers/src/telemetry/index.js +0 -60
- package/packages/workers/src/telemetry/routes/dashboard.d.ts +0 -7
- package/packages/workers/src/telemetry/routes/dashboard.d.ts.map +0 -1
- package/packages/workers/src/telemetry/routes/dashboard.js +0 -608
- package/packages/workers/src/type.d.ts +0 -77
- package/packages/workers/src/type.d.ts.map +0 -1
- package/packages/workers/src/type.js +0 -1
- package/packages/workers/src/ui/router/EmbeddedAssets.d.ts +0 -5
- package/packages/workers/src/ui/router/EmbeddedAssets.d.ts.map +0 -1
- package/packages/workers/src/ui/router/EmbeddedAssets.js +0 -13
- package/packages/workers/src/ui/router/ui.d.ts +0 -4
- package/packages/workers/src/ui/router/ui.d.ts.map +0 -1
- package/packages/workers/src/ui/router/ui.js +0 -208
- package/packages/workers/src/ui/types/worker-ui.d.ts +0 -230
- package/packages/workers/src/ui/types/worker-ui.d.ts.map +0 -1
- package/packages/workers/src/ui/types/worker-ui.js +0 -5
- package/routes/api.d.ts +0 -7
- package/routes/api.d.ts.map +0 -1
- package/routes/api.js +0 -129
- package/routes/broadcast.d.ts +0 -9
- package/routes/broadcast.d.ts.map +0 -1
- package/routes/broadcast.js +0 -27
- package/routes/storage.d.ts +0 -4
- package/routes/storage.d.ts.map +0 -1
- package/routes/storage.js +0 -35
package/README.md
CHANGED
|
@@ -230,7 +230,7 @@ ZinTrust uses a proven layered architecture:
|
|
|
230
230
|
- 📚 [Documentation](https://zintrust.com)
|
|
231
231
|
- 💬 [Discord Community](https://discord.gg/zintrust)
|
|
232
232
|
- 🐦 [Follow on X](https://x.com/zintrust)
|
|
233
|
-
- 🐛 [Issue Tracker](https://github.com/ZinTrust
|
|
233
|
+
- 🐛 [Issue Tracker](https://github.com/ZinTrust/ZinTrust/issues)
|
|
234
234
|
- 🤝 [Contributing Guide](./contributing.md)
|
|
235
235
|
|
|
236
236
|
## License
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zintrust/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.50",
|
|
4
4
|
"description": "Production-grade TypeScript backend framework for JavaScript",
|
|
5
5
|
"homepage": "https://zintrust.com",
|
|
6
6
|
"repository": {
|
|
@@ -42,10 +42,6 @@
|
|
|
42
42
|
"types": "./src/node.d.ts",
|
|
43
43
|
"import": "./src/node.js"
|
|
44
44
|
},
|
|
45
|
-
"./routes/*": {
|
|
46
|
-
"types": "./routes/*.d.ts",
|
|
47
|
-
"import": "./routes/*.js"
|
|
48
|
-
},
|
|
49
45
|
"./package.json": "./package.json"
|
|
50
46
|
},
|
|
51
47
|
"dependencies": {
|
|
@@ -78,10 +74,6 @@
|
|
|
78
74
|
"files": [
|
|
79
75
|
"bin",
|
|
80
76
|
"src",
|
|
81
|
-
"routes",
|
|
82
|
-
"config",
|
|
83
|
-
"app",
|
|
84
|
-
"packages",
|
|
85
77
|
"public"
|
|
86
78
|
],
|
|
87
79
|
"engines": {
|
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;AAsEH,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;AA4PD;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG;cACJ,IAAI;EAed,CAAC"}
|
package/src/cli/CLI.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { AddCommand } from './commands/AddCommand.js';
|
|
6
6
|
import { BroadcastWorkCommand } from './commands/BroadcastWorkCommand.js';
|
|
7
|
+
import { BulletproofKeyGenerateCommand } from './commands/BulletproofKeyGenerateCommand.js';
|
|
7
8
|
import { ConfigCommand } from './commands/ConfigCommand.js';
|
|
8
9
|
import { ContainerProxiesCommand } from './commands/ContainerProxiesCommand.js';
|
|
9
10
|
import { ContainerWorkersCommand } from './commands/ContainerWorkersCommand.js';
|
|
@@ -119,6 +120,7 @@ const buildCommandRegistry = () => {
|
|
|
119
120
|
QACommand(),
|
|
120
121
|
FixCommand.create(),
|
|
121
122
|
KeyGenerateCommand.create(),
|
|
123
|
+
BulletproofKeyGenerateCommand.create(),
|
|
122
124
|
SimulateCommand,
|
|
123
125
|
TemplatesCommand,
|
|
124
126
|
MakeMailTemplateCommand.create(),
|
|
@@ -33,7 +33,7 @@ const addOptions = (command) => {
|
|
|
33
33
|
.option('--port <number>', 'Service port - for services')
|
|
34
34
|
.option('--service <path>', 'Service path (relative to project root) - for features')
|
|
35
35
|
.option('--with-test', 'Generate test files - for features')
|
|
36
|
-
.option('--controller-type <type>', 'Controller type: crud, resource, api, graphql, websocket
|
|
36
|
+
.option('--controller-type <type>', 'Controller type: crud, resource, api, graphql, websocket - for controllers')
|
|
37
37
|
.option('--soft-delete', 'Add soft delete to model')
|
|
38
38
|
.option('--timestamps', 'Add timestamps to model (default: true)')
|
|
39
39
|
.option('--resource', 'Generate resource routes')
|
|
@@ -304,7 +304,7 @@ const promptControllerConfig = async () => {
|
|
|
304
304
|
type: 'list',
|
|
305
305
|
name: 'type',
|
|
306
306
|
message: 'Controller type:',
|
|
307
|
-
choices: ['crud', 'resource', 'api', 'graphql', 'websocket'
|
|
307
|
+
choices: ['crud', 'resource', 'api', 'graphql', 'websocket'],
|
|
308
308
|
default: 'crud',
|
|
309
309
|
},
|
|
310
310
|
]);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bulletproof Signing Secret Generate Command
|
|
3
|
+
* Generates and sets BULLETPROOF_SIGNING_SECRET (with rotation backups)
|
|
4
|
+
*/
|
|
5
|
+
import type { IBaseCommand } from '../BaseCommand';
|
|
6
|
+
export declare const BulletproofKeyGenerateCommand: Readonly<{
|
|
7
|
+
create(): IBaseCommand;
|
|
8
|
+
}>;
|
|
9
|
+
export default BulletproofKeyGenerateCommand;
|
|
10
|
+
//# sourceMappingURL=BulletproofKeyGenerateCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BulletproofKeyGenerateCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/BulletproofKeyGenerateCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAgBrE,eAAO,MAAM,6BAA6B;cAC9B,YAAY;EAkEtB,CAAC;AAoFH,eAAe,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bulletproof Signing Secret Generate Command
|
|
3
|
+
* Generates and sets BULLETPROOF_SIGNING_SECRET (with rotation backups)
|
|
4
|
+
*/
|
|
5
|
+
import { BaseCommand } from '../BaseCommand.js';
|
|
6
|
+
import { Logger } from '../../config/logger.js';
|
|
7
|
+
import * as crypto from '../../node-singletons/crypto.js';
|
|
8
|
+
import { fsPromises as fs } from '../../node-singletons/fs.js';
|
|
9
|
+
import * as path from '../../node-singletons/path.js';
|
|
10
|
+
const ENV_KEY = 'BULLETPROOF_SIGNING_SECRET';
|
|
11
|
+
const ENV_BK_KEY = 'BULLETPROOF_SIGNING_SECRET_BK';
|
|
12
|
+
export const BulletproofKeyGenerateCommand = Object.freeze({
|
|
13
|
+
create() {
|
|
14
|
+
return BaseCommand.create({
|
|
15
|
+
name: 'key:bulletproof',
|
|
16
|
+
description: 'Generate/rotate BULLETPROOF_SIGNING_SECRET (signed-request proof key)',
|
|
17
|
+
aliases: ['bulletproof:key', 'key:signer'],
|
|
18
|
+
addOptions: (command) => {
|
|
19
|
+
command.option('--show', 'Display the key (and suggested env) instead of modifying files');
|
|
20
|
+
command.option('--max-backups <n>', 'Max secrets to keep in BULLETPROOF_SIGNING_SECRET_BK (default: 5)', '5');
|
|
21
|
+
},
|
|
22
|
+
execute: async (options) => {
|
|
23
|
+
const key = generateRandomKey();
|
|
24
|
+
const maxBackups = parseMaxBackups(options.maxBackups);
|
|
25
|
+
if (options.show === true) {
|
|
26
|
+
Logger.info(`${ENV_KEY}=${key}`);
|
|
27
|
+
Logger.info(`${ENV_BK_KEY}=[]`);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const envPath = path.resolve(process.cwd(), '.env');
|
|
31
|
+
try {
|
|
32
|
+
let envContent = '';
|
|
33
|
+
try {
|
|
34
|
+
envContent = await fs.readFile(envPath, 'utf-8');
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
Logger.warn('Could not read .env file, attempting to create from example', { error });
|
|
38
|
+
const examplePath = path.resolve(process.cwd(), '.env.example');
|
|
39
|
+
try {
|
|
40
|
+
envContent = await fs.readFile(examplePath, 'utf-8');
|
|
41
|
+
await fs.writeFile(envPath, envContent);
|
|
42
|
+
Logger.info('.env file created from .env.example');
|
|
43
|
+
}
|
|
44
|
+
catch (copyError) {
|
|
45
|
+
Logger.error('Failed to create .env from example', { error: copyError });
|
|
46
|
+
Logger.warn('.env file not found and .env.example not found. Creating new .env file.');
|
|
47
|
+
envContent = '';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const currentSecret = readEnvLineValue(envContent, ENV_KEY);
|
|
51
|
+
const currentBackups = parseBackups(readEnvLineValue(envContent, ENV_BK_KEY));
|
|
52
|
+
const nextBackups = rotateBackups({
|
|
53
|
+
currentSecret,
|
|
54
|
+
currentBackups,
|
|
55
|
+
maxBackups,
|
|
56
|
+
});
|
|
57
|
+
envContent = upsertEnvLine(envContent, ENV_BK_KEY, JSON.stringify(nextBackups));
|
|
58
|
+
envContent = upsertEnvLine(envContent, ENV_KEY, key);
|
|
59
|
+
await fs.writeFile(envPath, envContent);
|
|
60
|
+
Logger.info(`Bulletproof signing secret set successfully. [${key}]`);
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
Logger.error('Failed to update .env file', error);
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
const parseMaxBackups = (raw) => {
|
|
70
|
+
const n = typeof raw === 'string' ? Number.parseInt(raw, 10) : Number.NaN;
|
|
71
|
+
if (!Number.isFinite(n) || n < 0)
|
|
72
|
+
return 5;
|
|
73
|
+
return Math.min(50, n);
|
|
74
|
+
};
|
|
75
|
+
const generateRandomKey = () => {
|
|
76
|
+
// 32 bytes = 256-bit (same as APP_KEY default strength).
|
|
77
|
+
return 'base64:' + crypto.randomBytes(32).toString('base64');
|
|
78
|
+
};
|
|
79
|
+
const readEnvLineValue = (envContent, key) => {
|
|
80
|
+
const re = new RegExp(`^${escapeRegExp(key)}=(.*)$`, 'm');
|
|
81
|
+
const match = re.exec(envContent);
|
|
82
|
+
return typeof match?.[1] === 'string' ? match[1].trim() : '';
|
|
83
|
+
};
|
|
84
|
+
const upsertEnvLine = (envContent, key, value) => {
|
|
85
|
+
const line = `${key}=${value}`;
|
|
86
|
+
const re = new RegExp(`^${escapeRegExp(key)}=.*$`, 'm');
|
|
87
|
+
if (re.test(envContent)) {
|
|
88
|
+
return envContent.replace(re, line);
|
|
89
|
+
}
|
|
90
|
+
const trimmed = envContent.trimEnd();
|
|
91
|
+
if (trimmed === '')
|
|
92
|
+
return `${line}\n`;
|
|
93
|
+
return `${trimmed}\n${line}\n`;
|
|
94
|
+
};
|
|
95
|
+
const escapeRegExp = (value) => value.replaceAll(/[.*+?^${}()|[\]\\]/g, String.raw `\$&`);
|
|
96
|
+
const parseBackups = (raw) => {
|
|
97
|
+
const value = raw.trim();
|
|
98
|
+
if (value === '')
|
|
99
|
+
return [];
|
|
100
|
+
if (value.startsWith('[')) {
|
|
101
|
+
try {
|
|
102
|
+
const parsed = JSON.parse(value);
|
|
103
|
+
if (!Array.isArray(parsed))
|
|
104
|
+
return [];
|
|
105
|
+
return parsed
|
|
106
|
+
.filter((v) => typeof v === 'string')
|
|
107
|
+
.map((s) => s.trim())
|
|
108
|
+
.filter((s) => s !== '');
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return [];
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return value
|
|
115
|
+
.split(',')
|
|
116
|
+
.map((s) => s.trim())
|
|
117
|
+
.filter((s) => s !== '');
|
|
118
|
+
};
|
|
119
|
+
const rotateBackups = (params) => {
|
|
120
|
+
const seen = new Set();
|
|
121
|
+
const out = [];
|
|
122
|
+
const pushUnique = (secret) => {
|
|
123
|
+
const s = secret.trim();
|
|
124
|
+
if (s === '')
|
|
125
|
+
return;
|
|
126
|
+
if (seen.has(s))
|
|
127
|
+
return;
|
|
128
|
+
seen.add(s);
|
|
129
|
+
out.push(s);
|
|
130
|
+
};
|
|
131
|
+
if (params.currentSecret !== '') {
|
|
132
|
+
pushUnique(params.currentSecret);
|
|
133
|
+
}
|
|
134
|
+
for (const s of params.currentBackups) {
|
|
135
|
+
pushUnique(s);
|
|
136
|
+
}
|
|
137
|
+
return out.slice(0, Math.max(0, params.maxBackups));
|
|
138
|
+
};
|
|
139
|
+
export default BulletproofKeyGenerateCommand;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JwtDevCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/JwtDevCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"JwtDevCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/JwtDevCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAyHvF,eAAO,MAAM,aAAa,EAAE,YAgD3B,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -2,11 +2,54 @@
|
|
|
2
2
|
* JWT Dev Command
|
|
3
3
|
* Mint a local development JWT for quick manual API testing.
|
|
4
4
|
*/
|
|
5
|
+
import { isUndefinedOrNull } from '../../helper/index.js';
|
|
5
6
|
import { BaseCommand } from '../BaseCommand.js';
|
|
6
7
|
import { appConfig } from '../../config/app.js';
|
|
7
8
|
import { securityConfig } from '../../config/security.js';
|
|
8
9
|
import { ErrorFactory } from '../../exceptions/ZintrustError.js';
|
|
10
|
+
import * as crypto from '../../node-singletons/crypto.js';
|
|
9
11
|
import { JwtManager } from '../../security/JwtManager.js';
|
|
12
|
+
const sha256Hex = (value) => {
|
|
13
|
+
return crypto.createHash('sha256').update(value).digest('hex');
|
|
14
|
+
};
|
|
15
|
+
const optionalTrimmed = (value) => {
|
|
16
|
+
if (typeof value !== 'string')
|
|
17
|
+
return undefined;
|
|
18
|
+
const trimmed = value.trim();
|
|
19
|
+
return trimmed === '' ? undefined : trimmed;
|
|
20
|
+
};
|
|
21
|
+
const buildPayload = (options) => {
|
|
22
|
+
const payload = {};
|
|
23
|
+
const sub = optionalTrimmed(options.sub);
|
|
24
|
+
if (!isUndefinedOrNull(sub))
|
|
25
|
+
payload.sub = sub;
|
|
26
|
+
const email = optionalTrimmed(options.email);
|
|
27
|
+
if (!isUndefinedOrNull(email))
|
|
28
|
+
payload['email'] = email;
|
|
29
|
+
const role = optionalTrimmed(options.role);
|
|
30
|
+
if (!isUndefinedOrNull(role))
|
|
31
|
+
payload['role'] = role;
|
|
32
|
+
const deviceId = optionalTrimmed(options.deviceId);
|
|
33
|
+
if (!isUndefinedOrNull(deviceId))
|
|
34
|
+
payload['deviceId'] = deviceId;
|
|
35
|
+
const tenantId = optionalTrimmed(options.tenantId);
|
|
36
|
+
if (!isUndefinedOrNull(tenantId))
|
|
37
|
+
payload['tenantId'] = tenantId;
|
|
38
|
+
const tz = optionalTrimmed(options.tz);
|
|
39
|
+
if (!isUndefinedOrNull(tz))
|
|
40
|
+
payload['tz'] = tz;
|
|
41
|
+
const uaHash = optionalTrimmed(options.uaHash);
|
|
42
|
+
if (isUndefinedOrNull(uaHash)) {
|
|
43
|
+
const ua = optionalTrimmed(options.ua);
|
|
44
|
+
if (ua !== undefined) {
|
|
45
|
+
payload['uaHash'] = sha256Hex(ua);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
payload['uaHash'] = uaHash;
|
|
50
|
+
}
|
|
51
|
+
return payload;
|
|
52
|
+
};
|
|
10
53
|
const parseExpiresToSeconds = (value) => {
|
|
11
54
|
const raw = typeof value === 'string' ? value.trim() : '';
|
|
12
55
|
if (raw === '')
|
|
@@ -47,25 +90,6 @@ const assertNotProduction = (allowProduction) => {
|
|
|
47
90
|
return;
|
|
48
91
|
throw ErrorFactory.createCliError("Refusing to mint a dev JWT in production. Use --allow-production only if you know what you're doing.");
|
|
49
92
|
};
|
|
50
|
-
const createJwt = (payload, expiresInSeconds) => {
|
|
51
|
-
const algorithm = securityConfig.jwt.algorithm;
|
|
52
|
-
const secret = securityConfig.jwt.secret;
|
|
53
|
-
const jwt = JwtManager.create();
|
|
54
|
-
if (algorithm === 'HS256' || algorithm === 'HS512') {
|
|
55
|
-
jwt.setHmacSecret(secret);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
throw ErrorFactory.createCliError(`JWT algorithm '${algorithm}' is not supported by zin jwt:dev (HS256/HS512 only).`);
|
|
59
|
-
}
|
|
60
|
-
return jwt.sign(payload, {
|
|
61
|
-
algorithm,
|
|
62
|
-
expiresIn: expiresInSeconds,
|
|
63
|
-
issuer: securityConfig.jwt.issuer,
|
|
64
|
-
audience: securityConfig.jwt.audience,
|
|
65
|
-
subject: typeof payload.sub === 'string' ? payload.sub : undefined,
|
|
66
|
-
jwtId: jwt.generateJwtId(),
|
|
67
|
-
});
|
|
68
|
-
};
|
|
69
93
|
export const JwtDevCommand = Object.freeze(BaseCommand.create({
|
|
70
94
|
name: 'jwt:dev',
|
|
71
95
|
description: 'Mint a local development JWT (for manual API testing)',
|
|
@@ -75,25 +99,20 @@ export const JwtDevCommand = Object.freeze(BaseCommand.create({
|
|
|
75
99
|
.option('--sub <sub>', 'JWT subject claim (default: 1)', '1')
|
|
76
100
|
.option('--email <email>', 'Email claim')
|
|
77
101
|
.option('--role <role>', 'Role claim')
|
|
102
|
+
.option('--device-id <id>', 'Attach deviceId claim (for bulletproof auth)')
|
|
103
|
+
.option('--tenant-id <id>', 'Attach tenantId claim')
|
|
104
|
+
.option('--tz <tz>', 'Attach timezone claim (tz)')
|
|
105
|
+
.option('--ua <ua>', 'Compute and attach uaHash claim from a User-Agent string')
|
|
106
|
+
.option('--ua-hash <hash>', 'Attach uaHash claim directly (hex)')
|
|
78
107
|
.option('--expires <duration>', "Expiry: seconds or 30m/1h/7d (default: '1h')", '1h')
|
|
79
108
|
.option('--json', 'Output machine-readable JSON')
|
|
80
109
|
.option('--allow-production', 'Allow running in production (dangerous)');
|
|
81
110
|
},
|
|
82
|
-
execute: (options) => {
|
|
111
|
+
execute: async (options) => {
|
|
83
112
|
assertNotProduction(options.allowProduction);
|
|
84
113
|
const expiresInSeconds = parseExpiresToSeconds(options.expires);
|
|
85
|
-
const payload =
|
|
86
|
-
|
|
87
|
-
? { sub: options.sub.trim() }
|
|
88
|
-
: {}),
|
|
89
|
-
...(typeof options.email === 'string' && options.email.trim() !== ''
|
|
90
|
-
? { email: options.email.trim() }
|
|
91
|
-
: {}),
|
|
92
|
-
...(typeof options.role === 'string' && options.role.trim() !== ''
|
|
93
|
-
? { role: options.role.trim() }
|
|
94
|
-
: {}),
|
|
95
|
-
};
|
|
96
|
-
const token = createJwt(payload, expiresInSeconds);
|
|
114
|
+
const payload = buildPayload(options);
|
|
115
|
+
const token = await JwtManager.signAccessToken(payload, expiresInSeconds);
|
|
97
116
|
/* eslint-disable no-console */
|
|
98
117
|
if (options.json === true) {
|
|
99
118
|
const nowSeconds = Math.floor(Date.now() / 1000);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* ControllerGenerator - Generate controller files
|
|
3
3
|
* Creates CRUD controllers with validation and error handling
|
|
4
4
|
*/
|
|
5
|
-
export type ControllerType = 'crud' | 'resource' | 'api' | 'graphql' | 'websocket'
|
|
5
|
+
export type ControllerType = 'crud' | 'resource' | 'api' | 'graphql' | 'websocket';
|
|
6
6
|
export interface ControllerOptions {
|
|
7
7
|
name: string;
|
|
8
8
|
controllerPath: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ControllerGenerator.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ControllerGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"ControllerGenerator.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ControllerGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,CAAC;AAEnF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAaD;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAgChG;AAED;;GAEG;AAEH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CA2CjG;AAsaD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,EAAE,CAEpD;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;EAI9B,CAAC"}
|
|
@@ -14,7 +14,6 @@ const CONTROLLER_TYPES = {
|
|
|
14
14
|
api: (options) => generateApiController(options),
|
|
15
15
|
graphql: (options) => generateGraphQLController(options),
|
|
16
16
|
websocket: (options) => generateWebSocketController(options),
|
|
17
|
-
webhook: (options) => generateWebhookController(options),
|
|
18
17
|
};
|
|
19
18
|
/**
|
|
20
19
|
* Validate controller options
|
|
@@ -101,9 +100,6 @@ function buildControllerCode(options, type) {
|
|
|
101
100
|
else if (type === 'websocket') {
|
|
102
101
|
return generateWebSocketController(options);
|
|
103
102
|
}
|
|
104
|
-
else if (type === 'webhook') {
|
|
105
|
-
return generateWebhookController(options);
|
|
106
|
-
}
|
|
107
103
|
return '';
|
|
108
104
|
}
|
|
109
105
|
/**
|
|
@@ -405,6 +401,14 @@ const controller = Object.freeze({\n ...Controller,
|
|
|
405
401
|
return;
|
|
406
402
|
}
|
|
407
403
|
|
|
404
|
+
// Secure-by-default: generated scaffold does not execute GraphQL until implemented.
|
|
405
|
+
res.setStatus(501).json({
|
|
406
|
+
error: 'Not Implemented',
|
|
407
|
+
message:
|
|
408
|
+
'GraphQL execution is not implemented in this generated controller. Implement executeQuery() and wire a GraphQL engine before enabling this endpoint.',
|
|
409
|
+
});
|
|
410
|
+
return;
|
|
411
|
+
|
|
408
412
|
const body = req.getBody() as Record<string, unknown>;
|
|
409
413
|
const query = body.query as string;
|
|
410
414
|
|
|
@@ -484,81 +488,6 @@ export const ${className} = Object.freeze({
|
|
|
484
488
|
export default ${className};
|
|
485
489
|
`;
|
|
486
490
|
}
|
|
487
|
-
/**
|
|
488
|
-
* Generate Webhook controller
|
|
489
|
-
*/
|
|
490
|
-
function generateWebhookController(options) {
|
|
491
|
-
const className = options?.name ?? 'WebhookController';
|
|
492
|
-
return `/**
|
|
493
|
-
* ${className}
|
|
494
|
-
* Auto-generated Webhook controller
|
|
495
|
-
*/
|
|
496
|
-
|
|
497
|
-
import { type IRequest, type IResponse, Controller } from '../../index.js';
|
|
498
|
-
import { Logger } from '../../config/logger';
|
|
499
|
-
|
|
500
|
-
function handleError(res: IResponse, error: unknown): void {
|
|
501
|
-
const message = error instanceof Error ? error.message : 'Webhook error';
|
|
502
|
-
res.setStatus(500).json({ error: message });
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
const controller = Object.freeze({\n ...Controller,
|
|
506
|
-
${buildWebhookControllerBody()},
|
|
507
|
-
});
|
|
508
|
-
|
|
509
|
-
export type ${className}Api = typeof controller;
|
|
510
|
-
|
|
511
|
-
export const ${className} = Object.freeze({
|
|
512
|
-
create(): ${className}Api {
|
|
513
|
-
return controller;
|
|
514
|
-
},
|
|
515
|
-
});
|
|
516
|
-
|
|
517
|
-
export default ${className};
|
|
518
|
-
`;
|
|
519
|
-
}
|
|
520
|
-
/**
|
|
521
|
-
* Build Webhook controller body
|
|
522
|
-
*/
|
|
523
|
-
function buildWebhookControllerBody() {
|
|
524
|
-
return ` /**
|
|
525
|
-
* Handle incoming webhook
|
|
526
|
-
*/
|
|
527
|
-
async handle(req: IRequest, res: IResponse): Promise<void> {
|
|
528
|
-
try {
|
|
529
|
-
// Verify webhook signature
|
|
530
|
-
const signature = req.getHeader('x-webhook-signature');
|
|
531
|
-
if (controller.verifySignature(req, signature as string) === false) {
|
|
532
|
-
res.setStatus(401).json({ error: 'Invalid signature' });
|
|
533
|
-
return;
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
const body = req.getBody();
|
|
537
|
-
await controller.processWebhook(body);
|
|
538
|
-
|
|
539
|
-
res.json({ success: true });
|
|
540
|
-
} catch (error) {
|
|
541
|
-
handleError(res, error);
|
|
542
|
-
}
|
|
543
|
-
},
|
|
544
|
-
|
|
545
|
-
/**
|
|
546
|
-
* Verify webhook signature
|
|
547
|
-
*/
|
|
548
|
-
verifySignature(req: IRequest, signature: string): boolean {
|
|
549
|
-
// TODO: Implement signature verification
|
|
550
|
-
return true;
|
|
551
|
-
},
|
|
552
|
-
|
|
553
|
-
/**
|
|
554
|
-
* Process webhook payload
|
|
555
|
-
*/
|
|
556
|
-
async processWebhook(payload: unknown): Promise<void> {
|
|
557
|
-
// TODO: Implement webhook processing
|
|
558
|
-
Logger.info('Processing webhook:', { payload });
|
|
559
|
-
},
|
|
560
|
-
`;
|
|
561
|
-
}
|
|
562
491
|
/**
|
|
563
492
|
* Get available controller types
|
|
564
493
|
*/
|
|
@@ -53,7 +53,6 @@ export declare const SECRETS: Readonly<{
|
|
|
53
53
|
readonly ENCRYPTION_KEY: "encryption/key";
|
|
54
54
|
readonly ENCRYPTION_IV: "encryption/iv";
|
|
55
55
|
readonly STRIPE_API_KEY: "stripe/api-key";
|
|
56
|
-
readonly STRIPE_WEBHOOK_SECRET: "stripe/webhook-secret";
|
|
57
56
|
readonly SENDGRID_API_KEY: "sendgrid/api-key";
|
|
58
57
|
readonly GITHUB_TOKEN: "github/token";
|
|
59
58
|
readonly SESSION_SECRET: "session/secret";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SecretsManager.d.ts","sourceRoot":"","sources":["../../../src/config/SecretsManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAiTtB;;;GAGG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;yBACkB,YAAY,GAAG,sBAAsB;IAY1D;;OAEG;mBACkB,MAAM,YAAY,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzE;;OAEG;mBACkB,MAAM,SAAS,MAAM,YAAY,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAItF;;OAEG;sBACqB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C;;OAEG;sBACqB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C;;OAEG;0BACyB,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAItD;;OAEG;qBACc,MAAM,GAAG,IAAI;EAG9B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,OAAO
|
|
1
|
+
{"version":3,"file":"SecretsManager.d.ts","sourceRoot":"","sources":["../../../src/config/SecretsManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAiTtB;;;GAGG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;yBACkB,YAAY,GAAG,sBAAsB;IAY1D;;OAEG;mBACkB,MAAM,YAAY,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzE;;OAEG;mBACkB,MAAM,SAAS,MAAM,YAAY,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAItF;;OAEG;sBACqB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C;;OAEG;sBACqB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C;;OAEG;0BACyB,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAItD;;OAEG;qBACc,MAAM,GAAG,IAAI;EAG9B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;EAyBT,CAAC;AAEZ;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAU3E;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CAOzD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -323,7 +323,6 @@ export const SECRETS = Object.freeze({
|
|
|
323
323
|
ENCRYPTION_IV: 'encryption/iv',
|
|
324
324
|
// Third-party APIs
|
|
325
325
|
STRIPE_API_KEY: 'stripe/api-key',
|
|
326
|
-
STRIPE_WEBHOOK_SECRET: 'stripe/webhook-secret',
|
|
327
326
|
SENDGRID_API_KEY: 'sendgrid/api-key',
|
|
328
327
|
GITHUB_TOKEN: 'github/token',
|
|
329
328
|
// Session/CSRF
|
package/src/config/index.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export { createRedisConnection } from './workers';
|
|
|
18
18
|
* Sealed namespace for immutability
|
|
19
19
|
*/
|
|
20
20
|
export declare const config: Readonly<{
|
|
21
|
+
readonly middleware: import("./type").MiddlewareConfigType;
|
|
21
22
|
readonly app: Readonly<{
|
|
22
23
|
readonly name: string;
|
|
23
24
|
readonly prefix: string;
|
|
@@ -156,7 +157,6 @@ export declare const config: Readonly<{
|
|
|
156
157
|
readonly bcryptRounds: number;
|
|
157
158
|
};
|
|
158
159
|
}>;
|
|
159
|
-
readonly middleware: import("./type").MiddlewareConfigType;
|
|
160
160
|
readonly microservices: Readonly<{
|
|
161
161
|
readonly enabled: boolean;
|
|
162
162
|
readonly services: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;8BAZc,CAAC;;;;;;;;;;;;;;;;;;;;2EAAC,CAAA;;;;;;;;;;;;;;;;;;;;8BAD2B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA+C8X,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;EAHnb,CAAC;AAEZ,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC"}
|
package/src/config/index.js
CHANGED
|
@@ -28,14 +28,34 @@ export { createRedisConnection } from './workers.js';
|
|
|
28
28
|
* Sealed namespace for immutability
|
|
29
29
|
*/
|
|
30
30
|
export const config = Object.freeze({
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
31
|
+
get middleware() {
|
|
32
|
+
return middlewareConfig;
|
|
33
|
+
},
|
|
34
|
+
get app() {
|
|
35
|
+
return appConfig;
|
|
36
|
+
},
|
|
37
|
+
get broadcast() {
|
|
38
|
+
return broadcastConfig;
|
|
39
|
+
},
|
|
40
|
+
get database() {
|
|
41
|
+
return databaseConfig;
|
|
42
|
+
},
|
|
43
|
+
get storage() {
|
|
44
|
+
return storageConfig;
|
|
45
|
+
},
|
|
46
|
+
get notification() {
|
|
47
|
+
return notificationConfig;
|
|
48
|
+
},
|
|
49
|
+
get security() {
|
|
50
|
+
return securityConfig;
|
|
51
|
+
},
|
|
52
|
+
get microservices() {
|
|
53
|
+
return microservicesConfig;
|
|
54
|
+
},
|
|
55
|
+
get cache() {
|
|
56
|
+
return cacheConfig;
|
|
57
|
+
},
|
|
58
|
+
get queue() {
|
|
59
|
+
return queueConfig;
|
|
60
|
+
},
|
|
41
61
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/config/middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/config/middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAiEzD,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,aAAa,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,qBAAqB,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3E,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;EAkBuB,CAAC;AAEnD,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,cAAc,CAAC;AA2MxD,wBAAgB,sBAAsB,IAAI,oBAAoB,CAkC7D;AAID;;;GAGG;AACH,eAAO,MAAM,0BAA0B,QAAO,IAE7C,CAAC;AAwBF,eAAO,MAAM,gBAAgB,EAAE,oBAY7B,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
|
package/src/config/middleware.js
CHANGED
|
@@ -2,6 +2,7 @@ import { Env } from './env.js';
|
|
|
2
2
|
import { bodyParsingMiddleware } from '../http/middleware/BodyParsingMiddleware.js';
|
|
3
3
|
import { fileUploadMiddleware } from '../http/middleware/FileUploadMiddleware.js';
|
|
4
4
|
import { AuthMiddleware } from '../middleware/AuthMiddleware.js';
|
|
5
|
+
import { BulletproofAuthMiddleware } from '../middleware/BulletproofAuthMiddleware.js';
|
|
5
6
|
import { CsrfMiddleware } from '../middleware/CsrfMiddleware.js';
|
|
6
7
|
import { ErrorHandlerMiddleware } from '../middleware/ErrorHandlerMiddleware.js';
|
|
7
8
|
import { JwtAuthMiddleware } from '../middleware/JwtAuthMiddleware.js';
|
|
@@ -31,6 +32,7 @@ export const MiddlewareKeys = Object.freeze({
|
|
|
31
32
|
csrf: true,
|
|
32
33
|
auth: true,
|
|
33
34
|
jwt: true,
|
|
35
|
+
bulletproof: true,
|
|
34
36
|
validateLogin: true,
|
|
35
37
|
validateRegister: true,
|
|
36
38
|
validateUserStore: true,
|
|
@@ -151,6 +153,7 @@ function createSharedMiddlewares(loadMiddlewareConfig) {
|
|
|
151
153
|
}),
|
|
152
154
|
auth: AuthMiddleware.create(),
|
|
153
155
|
jwt: JwtAuthMiddleware.create(),
|
|
156
|
+
bulletproof: BulletproofAuthMiddleware.create(),
|
|
154
157
|
...validations,
|
|
155
158
|
});
|
|
156
159
|
}
|
|
@@ -225,5 +225,11 @@ const fetchAssetsTemplate = async (assets, templateName) => {
|
|
|
225
225
|
};
|
|
226
226
|
const loadNodeTemplate = (publicRoot, templateName) => {
|
|
227
227
|
const templatePath = resolveTemplatePath(publicRoot, templateName);
|
|
228
|
-
|
|
228
|
+
const loaded = safeReadTemplate(templatePath);
|
|
229
|
+
const resolved = loaded ?? DEFAULT_TEMPLATES[templateName];
|
|
230
|
+
if (resolved !== undefined) {
|
|
231
|
+
// Cache after first successful resolve to avoid repeated filesystem access.
|
|
232
|
+
setTemplateInStore(templateName, resolved);
|
|
233
|
+
}
|
|
234
|
+
return resolved;
|
|
229
235
|
};
|
package/src/index.d.ts
CHANGED
|
@@ -82,8 +82,6 @@ export { ValidationError } from './validation/ValidationError';
|
|
|
82
82
|
export type { FieldError } from './validation/ValidationError';
|
|
83
83
|
export { Schema, Validator } from './validation/Validator';
|
|
84
84
|
export type { ISchema, SchemaType } from './validation/Validator';
|
|
85
|
-
export { ZintrustD1Proxy } from './proxy/d1/ZintrustD1Proxy';
|
|
86
|
-
export { ZintrustKvProxy } from './proxy/kv/ZintrustKvProxy';
|
|
87
85
|
export { CsrfTokenManager } from './security/CsrfTokenManager';
|
|
88
86
|
export type { CsrfTokenData, CsrfTokenManagerType, ICsrfTokenManager, } from './security/CsrfTokenManager';
|
|
89
87
|
export { EncryptedEnvelope } from './security/EncryptedEnvelope';
|
|
@@ -91,6 +89,7 @@ export { Encryptor } from './security/Encryptor';
|
|
|
91
89
|
export { Hash } from './security/Hash';
|
|
92
90
|
export { JwtManager } from './security/JwtManager';
|
|
93
91
|
export type { IJwtManager, JwtAlgorithm, JwtManagerType, JwtOptions, JwtPayload, } from './security/JwtManager';
|
|
92
|
+
export { JwtSessions } from './security/JwtSessions';
|
|
94
93
|
export { PasswordResetTokenBroker } from './security/PasswordResetTokenBroker';
|
|
95
94
|
export type { IPasswordResetTokenBroker, IPasswordResetTokenStore, PasswordResetTokenBrokerOptions, PasswordResetTokenBrokerType, PasswordResetTokenRecord, } from './security/PasswordResetTokenBroker';
|
|
96
95
|
export { createSanitizer, Sanitizer, type SanitizerType } from './security/Sanitizer';
|