@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
|
@@ -1,404 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* User QueryBuilder Controller
|
|
3
|
-
* QueryBuilder-backed controller for the users resource.
|
|
4
|
-
*/
|
|
5
|
-
import { Logger, QueryBuilder, Sanitizer, Schema, Validator, getValidatedBody, nowIso, randomBytes, useDatabase, } from '../../src/index.js';
|
|
6
|
-
const isValidationError = (error) => {
|
|
7
|
-
if (typeof error !== 'object' || error === null)
|
|
8
|
-
return false;
|
|
9
|
-
const maybe = error;
|
|
10
|
-
return maybe.name === 'ValidationError' && typeof maybe.toObject === 'function';
|
|
11
|
-
};
|
|
12
|
-
const isSanitizerError = (error) => {
|
|
13
|
-
if (typeof error !== 'object' || error === null)
|
|
14
|
-
return false;
|
|
15
|
-
const maybe = error;
|
|
16
|
-
return maybe.name === 'SanitizerError';
|
|
17
|
-
};
|
|
18
|
-
const toJsonRecord = (value) => {
|
|
19
|
-
if (typeof value !== 'object' || value === null)
|
|
20
|
-
return {};
|
|
21
|
-
if (Array.isArray(value))
|
|
22
|
-
return {};
|
|
23
|
-
return value;
|
|
24
|
-
};
|
|
25
|
-
const resolveBody = (req) => {
|
|
26
|
-
return toJsonRecord(getValidatedBody(req) ?? req.body ?? {});
|
|
27
|
-
};
|
|
28
|
-
const getParamCompat = (req, name) => {
|
|
29
|
-
try {
|
|
30
|
-
const anyReq = req;
|
|
31
|
-
if (typeof anyReq.getParam === 'function')
|
|
32
|
-
return anyReq.getParam(name);
|
|
33
|
-
}
|
|
34
|
-
catch {
|
|
35
|
-
// ignore
|
|
36
|
-
}
|
|
37
|
-
const anyReq = req;
|
|
38
|
-
const params = anyReq.params;
|
|
39
|
-
if (typeof params === 'object' && params !== null)
|
|
40
|
-
return params[name];
|
|
41
|
-
return undefined;
|
|
42
|
-
};
|
|
43
|
-
const requireSelf = (req, res, userId) => {
|
|
44
|
-
if (typeof userId !== 'string' || userId.length === 0) {
|
|
45
|
-
res.status(400).json({ error: 'Missing user id' });
|
|
46
|
-
return false;
|
|
47
|
-
}
|
|
48
|
-
const subject = typeof req.user?.sub === 'string' ? req.user.sub : undefined;
|
|
49
|
-
if (subject === undefined || subject.length === 0) {
|
|
50
|
-
res.status(401).json({ error: 'Unauthorized' });
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
if (subject !== userId) {
|
|
54
|
-
res.status(403).json({ error: 'Forbidden' });
|
|
55
|
-
return false;
|
|
56
|
-
}
|
|
57
|
-
return true;
|
|
58
|
-
};
|
|
59
|
-
const randomInt = (min, max) => {
|
|
60
|
-
const lo = Math.ceil(min);
|
|
61
|
-
const hi = Math.floor(max);
|
|
62
|
-
return Math.floor(lo + Math.random() * (hi - lo + 1)); // NOSONAR is just a test utility
|
|
63
|
-
};
|
|
64
|
-
const randomName = () => {
|
|
65
|
-
const first = ['Alex', 'Jordan', 'Taylor', 'Sam', 'Casey', 'Riley', 'Morgan'];
|
|
66
|
-
const last = ['Lee', 'Kim', 'Patel', 'Garcia', 'Brown', 'Nguyen', 'Smith'];
|
|
67
|
-
return `${first[randomInt(0, first.length - 1)]} ${last[randomInt(0, last.length - 1)]}`;
|
|
68
|
-
};
|
|
69
|
-
const randomEmail = () => {
|
|
70
|
-
const n = randomInt(10000, 99999);
|
|
71
|
-
return `user${n}@example.com`;
|
|
72
|
-
};
|
|
73
|
-
const randomPassword = () => {
|
|
74
|
-
// Not cryptographically perfect UX-wise, but avoids hard-coded credentials.
|
|
75
|
-
// `base64url` keeps it URL-safe and reasonably short.
|
|
76
|
-
return randomBytes(12).toString('base64url');
|
|
77
|
-
};
|
|
78
|
-
const pickAllowed = (body, allowed) => {
|
|
79
|
-
const out = {};
|
|
80
|
-
for (const [k, v] of Object.entries(body)) {
|
|
81
|
-
if (allowed.has(k))
|
|
82
|
-
out[k] = v;
|
|
83
|
-
}
|
|
84
|
-
return out;
|
|
85
|
-
};
|
|
86
|
-
const hasUnknownKeys = (body, allowed) => {
|
|
87
|
-
for (const k of Object.keys(body)) {
|
|
88
|
-
if (!allowed.has(k))
|
|
89
|
-
return k;
|
|
90
|
-
}
|
|
91
|
-
return null;
|
|
92
|
-
};
|
|
93
|
-
const sanitizeUserUpdateBody = (updateBody) => {
|
|
94
|
-
const sanitizedUpdateBody = {};
|
|
95
|
-
if ('name' in updateBody) {
|
|
96
|
-
sanitizedUpdateBody['name'] = Sanitizer.nameText(updateBody['name']).trim();
|
|
97
|
-
}
|
|
98
|
-
if ('email' in updateBody) {
|
|
99
|
-
sanitizedUpdateBody['email'] = Sanitizer.email(updateBody['email']).trim().toLowerCase();
|
|
100
|
-
}
|
|
101
|
-
if ('password' in updateBody) {
|
|
102
|
-
sanitizedUpdateBody['password'] = Sanitizer.safePasswordChars(updateBody['password']);
|
|
103
|
-
}
|
|
104
|
-
return sanitizedUpdateBody;
|
|
105
|
-
};
|
|
106
|
-
const buildUserUpdateSchema = () => {
|
|
107
|
-
return Schema.create()
|
|
108
|
-
.custom('name', (v) => v === undefined || typeof v === 'string', 'name must be a string')
|
|
109
|
-
.minLength('name', 1)
|
|
110
|
-
.custom('email', (v) => v === undefined || typeof v === 'string', 'email must be a string')
|
|
111
|
-
.custom('password', (v) => v === undefined || typeof v === 'string', 'password must be a string')
|
|
112
|
-
.minLength('password', 8);
|
|
113
|
-
};
|
|
114
|
-
const buildUserStoreSchema = () => {
|
|
115
|
-
return Schema.create()
|
|
116
|
-
.custom('name', (v) => typeof v === 'string', 'name must be a string')
|
|
117
|
-
.minLength('name', 1)
|
|
118
|
-
.custom('email', (v) => typeof v === 'string', 'email must be a string')
|
|
119
|
-
.email('email')
|
|
120
|
-
.custom('password', (v) => typeof v === 'string', 'password must be a string')
|
|
121
|
-
.minLength('password', 8);
|
|
122
|
-
};
|
|
123
|
-
/**
|
|
124
|
-
* User Controller Methods
|
|
125
|
-
*/
|
|
126
|
-
const userControllerMethods = {
|
|
127
|
-
/**
|
|
128
|
-
* List all users
|
|
129
|
-
* GET /users
|
|
130
|
-
*/
|
|
131
|
-
async index(req, res) {
|
|
132
|
-
try {
|
|
133
|
-
const subject = typeof req.user?.sub === 'string' ? req.user.sub : undefined;
|
|
134
|
-
if (subject === undefined || subject.length === 0) {
|
|
135
|
-
res.status(401).json({ error: 'Unauthorized' });
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
const db = useDatabase();
|
|
139
|
-
const users = await QueryBuilder.create('users', db)
|
|
140
|
-
.select('id', 'name', 'email', 'created_at', 'updated_at')
|
|
141
|
-
.where('id', '=', subject)
|
|
142
|
-
.limit(1)
|
|
143
|
-
.get();
|
|
144
|
-
res.json({ data: users });
|
|
145
|
-
}
|
|
146
|
-
catch (error) {
|
|
147
|
-
Logger.error('Error fetching users:', error);
|
|
148
|
-
res.status(500).json({ error: 'Failed to fetch users' });
|
|
149
|
-
}
|
|
150
|
-
},
|
|
151
|
-
/**
|
|
152
|
-
* Show a specific user
|
|
153
|
-
* GET /users/:id
|
|
154
|
-
*/
|
|
155
|
-
async show(req, res) {
|
|
156
|
-
try {
|
|
157
|
-
const db = useDatabase();
|
|
158
|
-
const rawId = getParamCompat(req, 'id');
|
|
159
|
-
const id = Sanitizer.digitsOnly(rawId); // Zero trust protection for db id
|
|
160
|
-
if (typeof id !== 'string' || id.length === 0) {
|
|
161
|
-
// ✅ Good
|
|
162
|
-
res.status(400).json({ error: 'Missing user id' });
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
if (!requireSelf(req, res, id))
|
|
166
|
-
return;
|
|
167
|
-
const user = await QueryBuilder.create('users', db)
|
|
168
|
-
.select('id', 'name', 'email', 'created_at', 'updated_at')
|
|
169
|
-
.where('id', '=', id)
|
|
170
|
-
.limit(1)
|
|
171
|
-
.first();
|
|
172
|
-
if (user === null) {
|
|
173
|
-
res.status(404).json({ error: 'User not found' });
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
res.json({ data: user });
|
|
177
|
-
}
|
|
178
|
-
catch (error) {
|
|
179
|
-
if (isSanitizerError(error)) {
|
|
180
|
-
res.status(400).json({ error: error.message });
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
Logger.error('Error fetching user:', error);
|
|
184
|
-
res.status(500).json({ error: 'Failed to fetch user' });
|
|
185
|
-
}
|
|
186
|
-
},
|
|
187
|
-
/**
|
|
188
|
-
* Show create form
|
|
189
|
-
* GET /users/create
|
|
190
|
-
*/
|
|
191
|
-
async create(_req, res) {
|
|
192
|
-
res.json({ form: 'Create User Form' });
|
|
193
|
-
},
|
|
194
|
-
/**
|
|
195
|
-
* Store a new user
|
|
196
|
-
* POST /users
|
|
197
|
-
*/
|
|
198
|
-
async store(req, res) {
|
|
199
|
-
try {
|
|
200
|
-
// Use validated body if available (already sanitized by middleware), otherwise fallback to raw
|
|
201
|
-
const body = resolveBody(req);
|
|
202
|
-
const required = ['name', 'email', 'password'];
|
|
203
|
-
const missing = {};
|
|
204
|
-
for (const key of required) {
|
|
205
|
-
const val = body[key];
|
|
206
|
-
if (typeof val !== 'string' || val.trim() === '') {
|
|
207
|
-
missing[key] = ['Required'];
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
if (Object.keys(missing).length > 0) {
|
|
211
|
-
res.status(422).json({ errors: missing });
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
// Trust middleware for sanitization if validation passed.
|
|
215
|
-
// If we are here, validation ostensibly passed or we are in a context where we must self-validate.
|
|
216
|
-
// To satisfy defense-in-depth without double-sanitization bottleneck:
|
|
217
|
-
// We assume body is safe-ish if it came from resolved validated body.
|
|
218
|
-
// But to be explicit and type-safe, we cast or read fields directly.
|
|
219
|
-
const db = useDatabase();
|
|
220
|
-
const ts = nowIso();
|
|
221
|
-
// Apply bulletproof sanitization for defense-in-depth
|
|
222
|
-
const name = Sanitizer.nameText(body['name']);
|
|
223
|
-
const email = Sanitizer.email(body['email']);
|
|
224
|
-
const password = Sanitizer.safePasswordChars(body['password']);
|
|
225
|
-
Validator.validate({ name, email, password }, buildUserStoreSchema());
|
|
226
|
-
await QueryBuilder.create('users', db).insert({
|
|
227
|
-
name,
|
|
228
|
-
email,
|
|
229
|
-
password, // Hashing should be handled by model/service or here if raw
|
|
230
|
-
created_at: ts,
|
|
231
|
-
updated_at: ts,
|
|
232
|
-
});
|
|
233
|
-
res.status(201).json({ message: 'User created' });
|
|
234
|
-
}
|
|
235
|
-
catch (error) {
|
|
236
|
-
if (isSanitizerError(error)) {
|
|
237
|
-
res.status(400).json({ error: error.message });
|
|
238
|
-
return;
|
|
239
|
-
}
|
|
240
|
-
if (isValidationError(error)) {
|
|
241
|
-
res.status(422).json({ errors: error.toObject?.() ?? {} });
|
|
242
|
-
return;
|
|
243
|
-
}
|
|
244
|
-
Logger.error('Error creating user:', error);
|
|
245
|
-
res.status(500).json({ error: 'Failed to create user' });
|
|
246
|
-
}
|
|
247
|
-
},
|
|
248
|
-
/**
|
|
249
|
-
* Fill users table with random users
|
|
250
|
-
* POST /users/fill
|
|
251
|
-
*/
|
|
252
|
-
async fill(req, res) {
|
|
253
|
-
try {
|
|
254
|
-
const body = resolveBody(req);
|
|
255
|
-
const countVal = body['count'];
|
|
256
|
-
// Ensure count is a number (middleware validation handles this, but we double check or default)
|
|
257
|
-
let count = typeof countVal === 'number' ? countVal : 10;
|
|
258
|
-
if (count < 1)
|
|
259
|
-
count = 1;
|
|
260
|
-
if (count > 100)
|
|
261
|
-
count = 100;
|
|
262
|
-
const db = useDatabase();
|
|
263
|
-
const ts = nowIso();
|
|
264
|
-
// Optimize: Bulk insert instead of N+1 inserts to reduce IO bottleneck and memory overhead
|
|
265
|
-
const users = Array.from({ length: count }, () => ({
|
|
266
|
-
name: randomName(),
|
|
267
|
-
email: randomEmail(),
|
|
268
|
-
password: randomPassword(),
|
|
269
|
-
created_at: ts,
|
|
270
|
-
updated_at: ts,
|
|
271
|
-
}));
|
|
272
|
-
await QueryBuilder.create('users', db).insert(users);
|
|
273
|
-
res.status(201).json({ message: 'Users filled', count });
|
|
274
|
-
}
|
|
275
|
-
catch (error) {
|
|
276
|
-
Logger.error('Error filling users:', error);
|
|
277
|
-
res.status(500).json({ error: 'Failed to fill users' });
|
|
278
|
-
}
|
|
279
|
-
},
|
|
280
|
-
/**
|
|
281
|
-
* Show edit form
|
|
282
|
-
* GET /users/:id/edit
|
|
283
|
-
*/
|
|
284
|
-
async edit(_req, res) {
|
|
285
|
-
try {
|
|
286
|
-
res.json({ form: 'Edit User Form' });
|
|
287
|
-
}
|
|
288
|
-
catch (error) {
|
|
289
|
-
Logger.error('Error loading edit form:', error);
|
|
290
|
-
res.status(500).json({ error: 'Failed to load edit form' });
|
|
291
|
-
}
|
|
292
|
-
},
|
|
293
|
-
/**
|
|
294
|
-
* Update a user
|
|
295
|
-
* PUT /users/:id
|
|
296
|
-
*/
|
|
297
|
-
async update(req, res) {
|
|
298
|
-
// NOSONAR bulletproof sanitization requires explicit validation steps
|
|
299
|
-
try {
|
|
300
|
-
const db = useDatabase();
|
|
301
|
-
const rawId = getParamCompat(req, 'id');
|
|
302
|
-
const id = Sanitizer.digitsOnly(rawId);
|
|
303
|
-
if (typeof id !== 'string' || id.length === 0) {
|
|
304
|
-
res.status(400).json({ error: 'Missing user id' });
|
|
305
|
-
return;
|
|
306
|
-
}
|
|
307
|
-
if (!requireSelf(req, res, id))
|
|
308
|
-
return;
|
|
309
|
-
const allowed = new Set(['name', 'email', 'password']);
|
|
310
|
-
const body = resolveBody(req);
|
|
311
|
-
const unknown = hasUnknownKeys(body, allowed);
|
|
312
|
-
if (unknown !== null) {
|
|
313
|
-
res.status(422).json({ errors: { [unknown]: ['Unknown field'] } });
|
|
314
|
-
return;
|
|
315
|
-
}
|
|
316
|
-
const updateBody = pickAllowed(body, allowed);
|
|
317
|
-
if (Object.keys(updateBody).length === 0) {
|
|
318
|
-
res.status(422).json({ errors: { body: ['No fields to update'] } });
|
|
319
|
-
return;
|
|
320
|
-
}
|
|
321
|
-
const sanitizedUpdateBody = sanitizeUserUpdateBody(updateBody);
|
|
322
|
-
Validator.validate(sanitizedUpdateBody, buildUserUpdateSchema());
|
|
323
|
-
const existing = await QueryBuilder.create('users', db)
|
|
324
|
-
.select('id')
|
|
325
|
-
.where('id', '=', id)
|
|
326
|
-
.limit(1)
|
|
327
|
-
.first();
|
|
328
|
-
if (existing === null) {
|
|
329
|
-
res.status(404).json({ error: 'User not found' });
|
|
330
|
-
return;
|
|
331
|
-
}
|
|
332
|
-
const ts = nowIso();
|
|
333
|
-
await QueryBuilder.create('users', db)
|
|
334
|
-
.where('id', '=', id)
|
|
335
|
-
.update({ ...sanitizedUpdateBody, updated_at: ts });
|
|
336
|
-
const user = await QueryBuilder.create('users', db)
|
|
337
|
-
.select('id', 'name', 'email', 'created_at', 'updated_at')
|
|
338
|
-
.where('id', '=', id)
|
|
339
|
-
.limit(1)
|
|
340
|
-
.first();
|
|
341
|
-
res.json({ message: 'User updated', user });
|
|
342
|
-
}
|
|
343
|
-
catch (error) {
|
|
344
|
-
if (isSanitizerError(error)) {
|
|
345
|
-
res.status(400).json({ error: error.message });
|
|
346
|
-
return;
|
|
347
|
-
}
|
|
348
|
-
if (isValidationError(error)) {
|
|
349
|
-
res.status(422).json({ errors: error.toObject?.() ?? {} });
|
|
350
|
-
return;
|
|
351
|
-
}
|
|
352
|
-
Logger.error('Error updating user:', error);
|
|
353
|
-
res.status(500).json({ error: 'Failed to update user' });
|
|
354
|
-
}
|
|
355
|
-
},
|
|
356
|
-
/**
|
|
357
|
-
* Delete a user
|
|
358
|
-
* DELETE /users/:id
|
|
359
|
-
*/
|
|
360
|
-
async destroy(req, res) {
|
|
361
|
-
try {
|
|
362
|
-
const db = useDatabase();
|
|
363
|
-
const rawId = getParamCompat(req, 'id');
|
|
364
|
-
const id = Sanitizer.digitsOnly(rawId);
|
|
365
|
-
if (typeof id !== 'string' || id.length === 0) {
|
|
366
|
-
res.status(400).json({ error: 'Missing user id' });
|
|
367
|
-
return;
|
|
368
|
-
}
|
|
369
|
-
if (!requireSelf(req, res, id))
|
|
370
|
-
return;
|
|
371
|
-
const existing = await QueryBuilder.create('users', db)
|
|
372
|
-
.select('id')
|
|
373
|
-
.where('id', '=', id)
|
|
374
|
-
.limit(1)
|
|
375
|
-
.first();
|
|
376
|
-
if (existing === null) {
|
|
377
|
-
res.status(404).json({ error: 'User not found' });
|
|
378
|
-
return;
|
|
379
|
-
}
|
|
380
|
-
await QueryBuilder.create('users', db).where('id', '=', id).delete();
|
|
381
|
-
res.json({ message: 'User deleted' });
|
|
382
|
-
}
|
|
383
|
-
catch (error) {
|
|
384
|
-
if (isSanitizerError(error)) {
|
|
385
|
-
res.status(400).json({ error: error.message });
|
|
386
|
-
return;
|
|
387
|
-
}
|
|
388
|
-
Logger.error('Error deleting user:', error);
|
|
389
|
-
res.status(500).json({ error: 'Failed to delete user' });
|
|
390
|
-
}
|
|
391
|
-
},
|
|
392
|
-
};
|
|
393
|
-
/**
|
|
394
|
-
* User QueryBuilder Controller Factory
|
|
395
|
-
*/
|
|
396
|
-
export const UserQueryBuilderController = {
|
|
397
|
-
/**
|
|
398
|
-
* Create a new user controller instance
|
|
399
|
-
*/
|
|
400
|
-
create() {
|
|
401
|
-
return userControllerMethods;
|
|
402
|
-
},
|
|
403
|
-
};
|
|
404
|
-
export default UserQueryBuilderController;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Profiler Middleware
|
|
3
|
-
* Enables request profiling when ENABLE_PROFILER environment variable is set
|
|
4
|
-
*/
|
|
5
|
-
import type { Middleware } from '../../src/middleware/MiddlewareStack';
|
|
6
|
-
/**
|
|
7
|
-
* ProfilerMiddleware wraps request execution with performance profiling
|
|
8
|
-
* Enabled via ENABLE_PROFILER=true environment variable
|
|
9
|
-
* Attaches profiling report to response headers
|
|
10
|
-
*/
|
|
11
|
-
export declare const ProfilerMiddleware: Middleware;
|
|
12
|
-
//# sourceMappingURL=ProfilerMiddleware.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProfilerMiddleware.d.ts","sourceRoot":"","sources":["../../../app/Middleware/ProfilerMiddleware.ts"],"names":[],"mappings":"AACA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAG9D;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,UAwChC,CAAC"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck - Example middleware - WIP
|
|
2
|
-
/**
|
|
3
|
-
* Profiler Middleware
|
|
4
|
-
* Enables request profiling when ENABLE_PROFILER environment variable is set
|
|
5
|
-
*/
|
|
6
|
-
import { Logger } from '../../src/config/logger.js';
|
|
7
|
-
import { RequestProfiler } from '../../src/profiling/RequestProfiler.js';
|
|
8
|
-
/**
|
|
9
|
-
* ProfilerMiddleware wraps request execution with performance profiling
|
|
10
|
-
* Enabled via ENABLE_PROFILER=true environment variable
|
|
11
|
-
* Attaches profiling report to response headers
|
|
12
|
-
*/
|
|
13
|
-
export const ProfilerMiddleware = async (req, res, next) => {
|
|
14
|
-
const isEnabled = process.env.ENABLE_PROFILER === 'true';
|
|
15
|
-
if (!isEnabled) {
|
|
16
|
-
// Pass through without profiling
|
|
17
|
-
await next();
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
const profiler = RequestProfiler.create();
|
|
21
|
-
const queryLogger = profiler.getQueryLogger();
|
|
22
|
-
// Set up query logging if database is available
|
|
23
|
-
const db = req.context.db;
|
|
24
|
-
if (db !== undefined && db !== null && typeof db.onAfterQuery === 'function') {
|
|
25
|
-
db.onAfterQuery((sql, params, duration) => {
|
|
26
|
-
queryLogger.logQuery(sql, params, duration, 'middleware-profiling');
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
// Capture request execution
|
|
30
|
-
const profile = await profiler.captureRequest(async () => next());
|
|
31
|
-
// Attach profile to response
|
|
32
|
-
res.locals.profile = profile;
|
|
33
|
-
// Add profiling report to response header
|
|
34
|
-
try {
|
|
35
|
-
const report = profiler.generateReport(profile);
|
|
36
|
-
res.setHeader('X-Profiler-Report', Buffer.from(report).toString('base64'));
|
|
37
|
-
res.setHeader('X-Profiler-Queries', profile.queriesExecuted.toString());
|
|
38
|
-
res.setHeader('X-Profiler-Duration', profile.duration.toString());
|
|
39
|
-
if (profile.n1Patterns.length > 0) {
|
|
40
|
-
res.setHeader('X-Profiler-N1-Patterns', profile.n1Patterns.length.toString());
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
// Silently fail if header encoding fails
|
|
45
|
-
Logger.error('Failed to encode profiler report header:', error);
|
|
46
|
-
}
|
|
47
|
-
};
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Example Middleware
|
|
3
|
-
* Common middleware patterns for ZinTrust
|
|
4
|
-
*/
|
|
5
|
-
import type { IRequest } from '../../src/http/Request';
|
|
6
|
-
import type { IResponse } from '../../src/http/Response';
|
|
7
|
-
import type { CsrfTokenManagerType, ICsrfTokenManager } from '../../src/security/CsrfTokenManager';
|
|
8
|
-
import type { IJwtManager, JwtAlgorithm, JwtManagerType } from '../../src/security/JwtManager';
|
|
9
|
-
import type { SchemaType } from '../../src/validation/Validator';
|
|
10
|
-
type JwtManagerInput = IJwtManager | JwtManagerType;
|
|
11
|
-
type CsrfManagerInput = ICsrfTokenManager | CsrfTokenManagerType;
|
|
12
|
-
/**
|
|
13
|
-
* Authentication Middleware
|
|
14
|
-
* Verify user is authenticated
|
|
15
|
-
*/
|
|
16
|
-
export declare const authMiddleware: (req: IRequest, res: IResponse, next: () => Promise<void>) => Promise<void>;
|
|
17
|
-
/**
|
|
18
|
-
* CORS Middleware
|
|
19
|
-
* Handle CORS headers
|
|
20
|
-
*/
|
|
21
|
-
export declare const corsMiddleware: (req: IRequest, res: IResponse, next: () => Promise<void>) => Promise<void>;
|
|
22
|
-
/**
|
|
23
|
-
* JSON Request Middleware
|
|
24
|
-
* Parse JSON request bodies
|
|
25
|
-
*/
|
|
26
|
-
export declare const jsonMiddleware: (req: IRequest, res: IResponse, next: () => Promise<void>) => Promise<void>;
|
|
27
|
-
/**
|
|
28
|
-
* Logging Middleware
|
|
29
|
-
* Log all requests
|
|
30
|
-
*/
|
|
31
|
-
export declare const loggingMiddleware: (req: IRequest, res: IResponse, next: () => Promise<void>) => Promise<void>;
|
|
32
|
-
export declare const rateLimitMiddleware: (req: IRequest, res: IResponse, next: () => Promise<void>) => Promise<void>;
|
|
33
|
-
/**
|
|
34
|
-
* Trailing Slash Middleware
|
|
35
|
-
* Redirect URLs with trailing slashes
|
|
36
|
-
*/
|
|
37
|
-
export declare const trailingSlashMiddleware: (req: IRequest, res: IResponse, next: () => Promise<void>) => Promise<void>;
|
|
38
|
-
/**
|
|
39
|
-
* JWT Authentication Middleware
|
|
40
|
-
* Verify JWT token and extract claims
|
|
41
|
-
*/
|
|
42
|
-
export declare const jwtMiddleware: (jwtManager: JwtManagerInput, algorithm?: JwtAlgorithm) => (req: IRequest, res: IResponse, next: () => Promise<void>) => Promise<void>;
|
|
43
|
-
/**
|
|
44
|
-
* CSRF Protection Middleware
|
|
45
|
-
* Validate CSRF tokens for state-changing requests
|
|
46
|
-
*/
|
|
47
|
-
export declare const csrfMiddleware: (csrfManager: CsrfManagerInput) => (req: IRequest, res: IResponse, next: () => Promise<void>) => Promise<void>;
|
|
48
|
-
/**
|
|
49
|
-
* Input Validation Middleware
|
|
50
|
-
* Validate request body against schema
|
|
51
|
-
*/
|
|
52
|
-
export declare const validationMiddleware: (schema: SchemaType) => (req: IRequest, res: IResponse, next: () => Promise<void>) => Promise<void>;
|
|
53
|
-
/**
|
|
54
|
-
* XSS Protection Middleware
|
|
55
|
-
* Sanitize and escape user input
|
|
56
|
-
*/
|
|
57
|
-
export declare const xssProtectionMiddleware: (req: IRequest, res: IResponse, next: () => Promise<void>) => Promise<void>;
|
|
58
|
-
export {};
|
|
59
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../app/Middleware/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtF,OAAO,KAAK,EAAW,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGjE,KAAK,eAAe,GAAG,WAAW,GAAG,cAAc,CAAC;AACpD,KAAK,gBAAgB,GAAG,iBAAiB,GAAG,oBAAoB,CAAC;AAajE;;;GAGG;AACH,eAAO,MAAM,cAAc,GACzB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC,KACxB,OAAO,CAAC,IAAI,CASd,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GACzB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC,KACxB,OAAO,CAAC,IAAI,CAWd,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GACzB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC,KACxB,OAAO,CAAC,IAAI,CAYd,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC,KACxB,OAAO,CAAC,IAAI,CAYd,CAAC;AAQF,eAAO,MAAM,mBAAmB,GAC9B,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC,KACxB,OAAO,CAAC,IAAI,CAsBd,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAClC,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC,KACxB,OAAO,CAAC,IAAI,CAUd,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,YAAY,eAAe,EAAE,YAAW,YAAsB,MAC5E,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC,KAAG,OAAO,CAAC,IAAI,CAiCtF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,aAAa,gBAAgB,MAC5C,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC,KAAG,OAAO,CAAC,IAAI,CAmCtF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,UAAU,MACvC,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC,KAAG,OAAO,CAAC,IAAI,CAwBtF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAClC,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC,KACxB,OAAO,CAAC,IAAI,CAiBd,CAAC"}
|