@zintrust/core 0.1.40 → 0.1.41
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/bin/zintrust-main.d.ts.map +1 -1
- package/bin/zintrust-main.js +22 -1
- package/package.json +8 -4
- package/public/error-pages/404.html +2 -2
- package/src/auth/Auth.js +1 -1
- package/src/boot/Application.d.ts +1 -16
- package/src/boot/Application.d.ts.map +1 -1
- package/src/boot/Application.js +2 -290
- package/src/boot/Server.d.ts +1 -1
- package/src/boot/Server.d.ts.map +1 -1
- package/src/boot/bootstrap.js +23 -5
- package/src/boot/registry/registerRoute.d.ts +6 -0
- package/src/boot/registry/registerRoute.d.ts.map +1 -0
- package/src/boot/registry/registerRoute.js +96 -0
- package/src/boot/registry/runtime.d.ts +15 -0
- package/src/boot/registry/runtime.d.ts.map +1 -0
- package/src/boot/registry/runtime.js +353 -0
- package/src/boot/registry/type.d.ts +25 -0
- package/src/boot/registry/type.d.ts.map +1 -0
- package/src/boot/registry/type.js +1 -0
- package/src/boot/registry/worker.d.ts +6 -0
- package/src/boot/registry/worker.d.ts.map +1 -0
- package/src/boot/registry/worker.js +35 -0
- package/src/cache/drivers/KVRemoteDriver.d.ts.map +1 -1
- package/src/cache/drivers/KVRemoteDriver.js +14 -1
- package/src/cli/CLI.d.ts.map +1 -1
- package/src/cli/CLI.js +82 -34
- package/src/cli/ErrorHandler.js +1 -1
- package/src/cli/commands/ContainerProxiesCommand.d.ts +5 -0
- package/src/cli/commands/ContainerProxiesCommand.d.ts.map +1 -0
- package/src/cli/commands/ContainerProxiesCommand.js +77 -0
- package/src/cli/commands/ContainerWorkersCommand.d.ts +5 -0
- package/src/cli/commands/ContainerWorkersCommand.d.ts.map +1 -0
- package/src/cli/commands/ContainerWorkersCommand.js +57 -0
- package/src/cli/commands/DeployCommand.d.ts +16 -0
- package/src/cli/commands/DeployCommand.d.ts.map +1 -0
- package/src/cli/commands/DeployCommand.js +110 -0
- package/src/cli/commands/DeployContainerProxiesCommand.d.ts +5 -0
- package/src/cli/commands/DeployContainerProxiesCommand.d.ts.map +1 -0
- package/src/cli/commands/DeployContainerProxiesCommand.js +27 -0
- package/src/cli/commands/DeployContainerWorkersCommand.d.ts +5 -0
- package/src/cli/commands/DeployContainerWorkersCommand.d.ts.map +1 -0
- package/src/cli/commands/DeployContainerWorkersCommand.js +27 -0
- package/src/cli/commands/DockerComposeCommandUtils.d.ts +3 -0
- package/src/cli/commands/DockerComposeCommandUtils.d.ts.map +1 -0
- package/src/cli/commands/DockerComposeCommandUtils.js +34 -0
- package/src/cli/commands/DoctorArchitectureCommand.d.ts +5 -0
- package/src/cli/commands/DoctorArchitectureCommand.d.ts.map +1 -0
- package/src/cli/commands/DoctorArchitectureCommand.js +54 -0
- package/src/cli/commands/InitContainerCommand.d.ts +5 -0
- package/src/cli/commands/InitContainerCommand.d.ts.map +1 -0
- package/src/cli/commands/InitContainerCommand.js +216 -0
- package/src/cli/commands/InitProducerCommand.d.ts +5 -0
- package/src/cli/commands/InitProducerCommand.d.ts.map +1 -0
- package/src/cli/commands/InitProducerCommand.js +47 -0
- package/src/cli/commands/InitProxyCommand.d.ts +5 -0
- package/src/cli/commands/InitProxyCommand.d.ts.map +1 -0
- package/src/cli/commands/InitProxyCommand.js +442 -0
- package/src/cli/commands/MongoDBProxyCommand.d.ts +5 -0
- package/src/cli/commands/MongoDBProxyCommand.d.ts.map +1 -0
- package/src/cli/commands/MongoDBProxyCommand.js +98 -0
- package/src/cli/commands/MySqlProxyCommand.d.ts +6 -0
- package/src/cli/commands/MySqlProxyCommand.d.ts.map +1 -0
- package/src/cli/commands/MySqlProxyCommand.js +32 -0
- package/src/cli/commands/PostgresProxyCommand.d.ts +6 -0
- package/src/cli/commands/PostgresProxyCommand.d.ts.map +1 -0
- package/src/cli/commands/PostgresProxyCommand.js +32 -0
- package/src/cli/commands/ProxyCommand.d.ts +12 -0
- package/src/cli/commands/ProxyCommand.d.ts.map +1 -0
- package/src/cli/commands/ProxyCommand.js +80 -0
- package/src/cli/commands/ProxyCommandUtils.d.ts +6 -0
- package/src/cli/commands/ProxyCommandUtils.d.ts.map +1 -0
- package/src/cli/commands/ProxyCommandUtils.js +38 -0
- package/src/cli/commands/QueueRecoveryCommand.d.ts +6 -0
- package/src/cli/commands/QueueRecoveryCommand.d.ts.map +1 -0
- package/src/cli/commands/QueueRecoveryCommand.js +513 -0
- package/src/cli/commands/RedisProxyCommand.d.ts +6 -0
- package/src/cli/commands/RedisProxyCommand.d.ts.map +1 -0
- package/src/cli/commands/RedisProxyCommand.js +53 -0
- package/src/cli/commands/SmtpProxyCommand.d.ts +6 -0
- package/src/cli/commands/SmtpProxyCommand.d.ts.map +1 -0
- package/src/cli/commands/SmtpProxyCommand.js +56 -0
- package/src/cli/commands/SqlProxyCommandUtils.d.ts +46 -0
- package/src/cli/commands/SqlProxyCommandUtils.d.ts.map +1 -0
- package/src/cli/commands/SqlProxyCommandUtils.js +48 -0
- package/src/cli/commands/SqlServerProxyCommand.d.ts +5 -0
- package/src/cli/commands/SqlServerProxyCommand.d.ts.map +1 -0
- package/src/cli/commands/SqlServerProxyCommand.js +85 -0
- package/src/cli/commands/StartCommand.d.ts.map +1 -1
- package/src/cli/commands/StartCommand.js +132 -17
- package/src/cli/commands/WorkerCommands.d.ts +1 -0
- package/src/cli/commands/WorkerCommands.d.ts.map +1 -1
- package/src/cli/commands/WorkerCommands.js +140 -6
- package/src/cli/commands/index.d.ts +2 -0
- package/src/cli/commands/index.d.ts.map +1 -1
- package/src/cli/commands/index.js +2 -0
- package/src/cli/commands/runner/index.d.ts +2 -2
- package/src/cli/commands/runner/index.d.ts.map +1 -1
- package/src/cli/commands/runner/index.js +15 -4
- package/src/cli/d1/D1SqlMigrations.d.ts.map +1 -1
- package/src/cli/d1/D1SqlMigrations.js +3 -0
- package/src/cli/index.d.ts +4 -0
- package/src/cli/index.d.ts.map +1 -1
- package/src/cli/index.js +4 -0
- package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
- package/src/cli/scaffolding/ProjectScaffolder.js +2 -0
- package/src/cli/scaffolding/ServiceScaffolder.d.ts.map +1 -1
- package/src/cli/scaffolding/ServiceScaffolder.js +1 -0
- package/src/cli/utils/EnvFileLoader.js +16 -15
- package/src/cli/workers/QueueWorkRunner.js +1 -1
- package/src/common/HealthRoutes.d.ts.map +1 -1
- package/src/common/HealthRoutes.js +50 -2
- package/src/common/RemoteSignedJson.d.ts +1 -0
- package/src/common/RemoteSignedJson.d.ts.map +1 -1
- package/src/common/RemoteSignedJson.js +39 -13
- package/src/common/index.d.ts +1 -0
- package/src/common/index.d.ts.map +1 -1
- package/src/common/index.js +12 -1
- package/src/config/FileLogWriter.d.ts.map +1 -1
- package/src/config/FileLogWriter.js +21 -6
- package/src/config/app.d.ts +4 -0
- package/src/config/app.d.ts.map +1 -1
- package/src/config/app.js +4 -0
- package/src/config/cache.d.ts.map +1 -1
- package/src/config/cache.js +22 -2
- package/src/config/cloudflare.d.ts +5 -1
- package/src/config/cloudflare.d.ts.map +1 -1
- package/src/config/cloudflare.js +48 -0
- package/src/config/database.d.ts.map +1 -1
- package/src/config/database.js +48 -13
- package/src/config/env.d.ts +87 -2
- package/src/config/env.d.ts.map +1 -1
- package/src/config/env.js +156 -17
- package/src/config/index.d.ts +1 -0
- package/src/config/index.d.ts.map +1 -1
- package/src/config/mail.d.ts.map +1 -1
- package/src/config/mail.js +16 -10
- package/src/config/middleware.d.ts +5 -0
- package/src/config/middleware.d.ts.map +1 -1
- package/src/config/middleware.js +19 -1
- package/src/config/queue.d.ts.map +1 -1
- package/src/config/queue.js +70 -9
- package/src/config/redis.d.ts.map +1 -1
- package/src/config/redis.js +48 -13
- package/src/config/storage.d.ts.map +1 -1
- package/src/config/storage.js +1 -0
- package/src/config/type.d.ts +18 -0
- package/src/config/type.d.ts.map +1 -1
- package/src/config/workers.d.ts.map +1 -1
- package/src/config/workers.js +122 -16
- package/src/functions/cloudflare.d.ts.map +1 -1
- package/src/functions/cloudflare.js +55 -1
- package/src/health/StartupHealthChecks.js +1 -1
- package/src/http/FileUpload.d.ts +3 -2
- package/src/http/FileUpload.d.ts.map +1 -1
- package/src/http/Kernel.d.ts.map +1 -1
- package/src/http/Kernel.js +2 -1
- package/src/http/error-pages/ErrorPageRenderer.d.ts +4 -0
- package/src/http/error-pages/ErrorPageRenderer.d.ts.map +1 -1
- package/src/http/error-pages/ErrorPageRenderer.js +141 -1
- package/src/http/middleware/BodyParsingMiddleware.d.ts.map +1 -1
- package/src/http/middleware/BodyParsingMiddleware.js +33 -6
- package/src/index.d.ts +25 -53
- package/src/index.d.ts.map +1 -1
- package/src/index.js +30 -14
- package/src/microservices/ServiceAuthMiddleware.d.ts.map +1 -1
- package/src/microservices/ServiceAuthMiddleware.js +12 -4
- package/src/middleware/CsrfMiddleware.d.ts.map +1 -1
- package/src/middleware/CsrfMiddleware.js +30 -16
- package/src/middleware/ErrorHandlerMiddleware.d.ts.map +1 -1
- package/src/middleware/ErrorHandlerMiddleware.js +2 -1
- package/src/migrations/MigrationLoader.js +1 -1
- package/src/migrations/schema/SchemaCompiler.d.ts.map +1 -1
- package/src/migrations/schema/SchemaCompiler.js +6 -3
- package/src/node-singletons/crypto.d.ts +1 -1
- package/src/node-singletons/crypto.d.ts.map +1 -1
- package/src/node-singletons/crypto.js +1 -1
- package/src/node-singletons/fs.d.ts +1 -1
- package/src/node-singletons/fs.d.ts.map +1 -1
- package/src/node-singletons/path.d.ts +1 -1
- package/src/node-singletons/path.d.ts.map +1 -1
- package/src/node-singletons/path.js +1 -1
- package/src/node-singletons/stream.d.ts +11 -0
- package/src/node-singletons/stream.d.ts.map +1 -0
- package/src/node-singletons/stream.js +8 -0
- package/src/observability/OpenTelemetry.d.ts +7 -0
- package/src/observability/OpenTelemetry.d.ts.map +1 -1
- package/src/observability/OpenTelemetry.js +49 -2
- package/src/orm/Database.d.ts +4 -0
- package/src/orm/Database.d.ts.map +1 -1
- package/src/orm/Database.js +80 -9
- package/src/orm/DatabaseRuntimeRegistration.d.ts.map +1 -1
- package/src/orm/DatabaseRuntimeRegistration.js +2 -0
- package/src/orm/QueryBuilder.d.ts +1 -0
- package/src/orm/QueryBuilder.d.ts.map +1 -1
- package/src/orm/QueryBuilder.js +33 -3
- package/src/orm/SchemaCompiler.d.ts.map +1 -1
- package/src/orm/SchemaCompiler.js +6 -3
- package/src/orm/adapters/D1RemoteAdapter.d.ts.map +1 -1
- package/src/orm/adapters/D1RemoteAdapter.js +14 -1
- package/src/orm/adapters/MongoDBProxyAdapter.d.ts +3 -0
- package/src/orm/adapters/MongoDBProxyAdapter.d.ts.map +1 -0
- package/src/orm/adapters/MongoDBProxyAdapter.js +128 -0
- package/src/orm/adapters/MySQLProxyAdapter.d.ts +11 -0
- package/src/orm/adapters/MySQLProxyAdapter.d.ts.map +1 -0
- package/src/orm/adapters/MySQLProxyAdapter.js +143 -0
- package/src/orm/adapters/PostgreSQLProxyAdapter.d.ts +11 -0
- package/src/orm/adapters/PostgreSQLProxyAdapter.d.ts.map +1 -0
- package/src/orm/adapters/PostgreSQLProxyAdapter.js +147 -0
- package/src/orm/adapters/ProxyCache.d.ts +9 -0
- package/src/orm/adapters/ProxyCache.d.ts.map +1 -0
- package/src/orm/adapters/ProxyCache.js +24 -0
- package/src/orm/adapters/ProxySignedRequest.d.ts +11 -0
- package/src/orm/adapters/ProxySignedRequest.d.ts.map +1 -0
- package/src/orm/adapters/ProxySignedRequest.js +30 -0
- package/src/orm/adapters/ProxySigningPath.d.ts +3 -0
- package/src/orm/adapters/ProxySigningPath.d.ts.map +1 -0
- package/src/orm/adapters/ProxySigningPath.js +25 -0
- package/src/orm/adapters/SqlProxyAdapterUtils.d.ts +19 -0
- package/src/orm/adapters/SqlProxyAdapterUtils.d.ts.map +1 -0
- package/src/orm/adapters/SqlProxyAdapterUtils.js +35 -0
- package/src/orm/adapters/SqlServerProxyAdapter.d.ts +3 -0
- package/src/orm/adapters/SqlServerProxyAdapter.d.ts.map +1 -0
- package/src/orm/adapters/SqlServerProxyAdapter.js +146 -0
- package/src/performance/Optimizer.d.ts +1 -0
- package/src/performance/Optimizer.d.ts.map +1 -1
- package/src/performance/Optimizer.js +21 -8
- package/src/proxy/ErrorHandler.d.ts +11 -0
- package/src/proxy/ErrorHandler.d.ts.map +1 -0
- package/src/proxy/ErrorHandler.js +7 -0
- package/src/proxy/PoolManager.d.ts +8 -0
- package/src/proxy/PoolManager.d.ts.map +1 -0
- package/src/proxy/PoolManager.js +18 -0
- package/src/proxy/ProxyBackend.d.ts +18 -0
- package/src/proxy/ProxyBackend.d.ts.map +1 -0
- package/src/proxy/ProxyBackend.js +1 -0
- package/src/proxy/ProxyConfig.d.ts +12 -0
- package/src/proxy/ProxyConfig.d.ts.map +1 -0
- package/src/proxy/ProxyConfig.js +1 -0
- package/src/proxy/ProxyRegistry.d.ts +10 -0
- package/src/proxy/ProxyRegistry.d.ts.map +1 -0
- package/src/proxy/ProxyRegistry.js +11 -0
- package/src/proxy/ProxyServer.d.ts +21 -0
- package/src/proxy/ProxyServer.d.ts.map +1 -0
- package/src/proxy/ProxyServer.js +84 -0
- package/src/proxy/ProxyServerUtils.d.ts +37 -0
- package/src/proxy/ProxyServerUtils.d.ts.map +1 -0
- package/src/proxy/ProxyServerUtils.js +42 -0
- package/src/proxy/ProxySigningConfigResolver.d.ts +22 -0
- package/src/proxy/ProxySigningConfigResolver.d.ts.map +1 -0
- package/src/proxy/ProxySigningConfigResolver.js +24 -0
- package/src/proxy/ProxySigningRequest.d.ts +12 -0
- package/src/proxy/ProxySigningRequest.d.ts.map +1 -0
- package/src/proxy/ProxySigningRequest.js +31 -0
- package/src/proxy/RequestValidator.d.ts +15 -0
- package/src/proxy/RequestValidator.d.ts.map +1 -0
- package/src/proxy/RequestValidator.js +25 -0
- package/src/proxy/SigningService.d.ts +39 -0
- package/src/proxy/SigningService.d.ts.map +1 -0
- package/src/proxy/SigningService.js +107 -0
- package/src/proxy/SqlPayloadValidator.d.ts +13 -0
- package/src/proxy/SqlPayloadValidator.d.ts.map +1 -0
- package/src/proxy/SqlPayloadValidator.js +14 -0
- package/src/proxy/d1/ZintrustD1Proxy.d.ts +2 -0
- package/src/proxy/d1/ZintrustD1Proxy.d.ts.map +1 -0
- package/src/proxy/d1/ZintrustD1Proxy.js +1 -0
- package/src/proxy/d1/register.d.ts +2 -0
- package/src/proxy/d1/register.d.ts.map +1 -0
- package/src/proxy/d1/register.js +5 -0
- package/src/proxy/kv/ZintrustKvProxy.d.ts +2 -0
- package/src/proxy/kv/ZintrustKvProxy.d.ts.map +1 -0
- package/src/proxy/kv/ZintrustKvProxy.js +1 -0
- package/src/proxy/kv/register.d.ts +2 -0
- package/src/proxy/kv/register.d.ts.map +1 -0
- package/src/proxy/kv/register.js +5 -0
- package/src/proxy/mongodb/MongoDBProxyServer.d.ts +33 -0
- package/src/proxy/mongodb/MongoDBProxyServer.d.ts.map +1 -0
- package/src/proxy/mongodb/MongoDBProxyServer.js +202 -0
- package/src/proxy/mongodb/register.d.ts +2 -0
- package/src/proxy/mongodb/register.d.ts.map +1 -0
- package/src/proxy/mongodb/register.js +5 -0
- package/src/proxy/mysql/MySqlProxyServer.d.ts +14 -0
- package/src/proxy/mysql/MySqlProxyServer.d.ts.map +1 -0
- package/src/proxy/mysql/MySqlProxyServer.js +169 -0
- package/src/proxy/mysql/register.d.ts +2 -0
- package/src/proxy/mysql/register.d.ts.map +1 -0
- package/src/proxy/mysql/register.js +5 -0
- package/src/proxy/postgres/PostgresProxyServer.d.ts +14 -0
- package/src/proxy/postgres/PostgresProxyServer.d.ts.map +1 -0
- package/src/proxy/postgres/PostgresProxyServer.js +140 -0
- package/src/proxy/postgres/register.d.ts +2 -0
- package/src/proxy/postgres/register.d.ts.map +1 -0
- package/src/proxy/postgres/register.js +5 -0
- package/src/proxy/redis/RedisProxyServer.d.ts +12 -0
- package/src/proxy/redis/RedisProxyServer.d.ts.map +1 -0
- package/src/proxy/redis/RedisProxyServer.js +192 -0
- package/src/proxy/redis/register.d.ts +2 -0
- package/src/proxy/redis/register.d.ts.map +1 -0
- package/src/proxy/redis/register.js +5 -0
- package/src/proxy/smtp/SmtpProxyServer.d.ts +19 -0
- package/src/proxy/smtp/SmtpProxyServer.d.ts.map +1 -0
- package/src/proxy/smtp/SmtpProxyServer.js +289 -0
- package/src/proxy/smtp/register.d.ts +2 -0
- package/src/proxy/smtp/register.d.ts.map +1 -0
- package/src/proxy/smtp/register.js +5 -0
- package/src/proxy/sqlserver/SqlServerProxyServer.d.ts +14 -0
- package/src/proxy/sqlserver/SqlServerProxyServer.d.ts.map +1 -0
- package/src/proxy/sqlserver/SqlServerProxyServer.js +168 -0
- package/src/proxy/sqlserver/register.d.ts +2 -0
- package/src/proxy/sqlserver/register.d.ts.map +1 -0
- package/src/proxy/sqlserver/register.js +5 -0
- package/src/routes/doc.d.ts.map +1 -1
- package/src/routes/doc.js +16 -2
- package/src/routes/error.d.ts +5 -4
- package/src/routes/error.d.ts.map +1 -1
- package/src/routes/error.js +15 -13
- package/src/routes/errorPages.d.ts +2 -0
- package/src/routes/errorPages.d.ts.map +1 -1
- package/src/routes/errorPages.js +144 -4
- package/src/runtime/PluginAutoImports.d.ts +1 -0
- package/src/runtime/PluginAutoImports.d.ts.map +1 -1
- package/src/runtime/PluginAutoImports.js +94 -9
- package/src/runtime/RuntimeAdapter.d.ts +8 -9
- package/src/runtime/RuntimeAdapter.d.ts.map +1 -1
- package/src/runtime/RuntimeAdapter.js +120 -34
- package/src/runtime/RuntimeServices.d.ts +47 -0
- package/src/runtime/RuntimeServices.d.ts.map +1 -0
- package/src/runtime/RuntimeServices.js +164 -0
- package/src/runtime/StartupConfigFileRegistry.d.ts +4 -4
- package/src/runtime/StartupConfigFileRegistry.d.ts.map +1 -1
- package/src/runtime/StartupConfigFileRegistry.js +12 -0
- package/src/runtime/WorkerAdapterImports.d.ts +5 -0
- package/src/runtime/WorkerAdapterImports.d.ts.map +1 -0
- package/src/runtime/WorkerAdapterImports.js +17 -0
- package/src/runtime/WorkersModule.d.ts +6 -0
- package/src/runtime/WorkersModule.d.ts.map +1 -0
- package/src/runtime/WorkersModule.js +278 -0
- package/src/runtime/adapters/CloudflareAdapter.d.ts.map +1 -1
- package/src/runtime/adapters/CloudflareAdapter.js +19 -2
- package/src/runtime/adapters/DenoAdapter.js +1 -0
- package/src/runtime/adapters/FargateAdapter.js +1 -1
- package/src/runtime/adapters/LambdaAdapter.js +1 -1
- package/src/runtime/adapters/NodeServerAdapter.js +1 -1
- package/src/runtime/detectRuntime.d.ts +10 -0
- package/src/runtime/detectRuntime.d.ts.map +1 -0
- package/src/runtime/detectRuntime.js +57 -0
- package/src/runtime/useFileLoader.d.ts.map +1 -1
- package/src/runtime/useFileLoader.js +16 -0
- package/src/scripts/TemplateImportsCheck.js +2 -2
- package/src/scripts/TemplateSync.js +3 -4
- package/src/security/CsrfTokenManager.d.ts.map +1 -1
- package/src/security/CsrfTokenManager.js +12 -0
- package/src/security/Hash.d.ts +1 -1
- package/src/security/Hash.d.ts.map +1 -1
- package/src/security/Hash.js +31 -36
- package/src/seeders/SeederLoader.js +1 -1
- package/src/session/SessionManager.d.ts +3 -0
- package/src/session/SessionManager.d.ts.map +1 -1
- package/src/session/SessionManager.js +49 -10
- package/src/sockets/CloudflareSocket.d.ts +24 -0
- package/src/sockets/CloudflareSocket.d.ts.map +1 -0
- package/src/sockets/CloudflareSocket.js +259 -0
- package/src/start.d.ts.map +1 -1
- package/src/start.js +1 -8
- package/src/templates/project/basic/src/zintrust.plugins.wg.ts.tpl +8 -0
- package/src/tools/mail/drivers/Smtp.d.ts.map +1 -1
- package/src/tools/mail/drivers/Smtp.js +223 -18
- package/src/tools/mail/index.d.ts.map +1 -1
- package/src/tools/mail/index.js +5 -4
- package/src/tools/mail/template-loader.d.ts.map +1 -1
- package/src/tools/mail/template-loader.js +197 -29
- package/src/tools/mail/templates/auth-password-reset.d.ts +3 -0
- package/src/tools/mail/templates/auth-password-reset.d.ts.map +1 -0
- package/src/tools/mail/templates/auth-password-reset.js +231 -0
- package/src/tools/mail/templates/auth-welcome.d.ts +3 -0
- package/src/tools/mail/templates/auth-welcome.d.ts.map +1 -0
- package/src/tools/mail/templates/auth-welcome.js +236 -0
- package/src/tools/mail/templates/general.d.ts +3 -0
- package/src/tools/mail/templates/general.d.ts.map +1 -0
- package/src/tools/mail/templates/general.js +109 -0
- package/src/tools/mail/templates/index.js +2 -2
- package/src/tools/mail/templates/job-completed.d.ts +3 -0
- package/src/tools/mail/templates/job-completed.d.ts.map +1 -0
- package/src/tools/mail/templates/job-completed.js +188 -0
- package/src/tools/mail/templates/notifications-new-comment.d.ts +3 -0
- package/src/tools/mail/templates/notifications-new-comment.d.ts.map +1 -0
- package/src/tools/mail/templates/notifications-new-comment.js +228 -0
- package/src/tools/mail/templates/password-reset.d.ts +3 -0
- package/src/tools/mail/templates/password-reset.d.ts.map +1 -0
- package/src/tools/mail/templates/password-reset.js +221 -0
- package/src/tools/mail/templates/performance-report.d.ts +3 -0
- package/src/tools/mail/templates/performance-report.d.ts.map +1 -0
- package/src/tools/mail/templates/performance-report.js +258 -0
- package/src/tools/mail/templates/welcome.d.ts +3 -0
- package/src/tools/mail/templates/welcome.d.ts.map +1 -0
- package/src/tools/mail/templates/welcome.js +187 -0
- package/src/tools/mail/templates/worker-alert.d.ts +3 -0
- package/src/tools/mail/templates/worker-alert.d.ts.map +1 -0
- package/src/tools/mail/templates/worker-alert.js +229 -0
- package/src/tools/notification/Notification.js +1 -1
- package/src/tools/notification/testingHelpers.js +6 -5
- package/src/tools/queue/AdvancedQueue.js +2 -6
- package/src/tools/queue/IdempotencyManager.d.ts +6 -0
- package/src/tools/queue/IdempotencyManager.d.ts.map +1 -0
- package/src/tools/queue/IdempotencyManager.js +36 -0
- package/src/tools/queue/JobHeartbeatStore.d.ts +16 -0
- package/src/tools/queue/JobHeartbeatStore.d.ts.map +1 -0
- package/src/tools/queue/JobHeartbeatStore.js +67 -0
- package/src/tools/queue/JobReconciliationRunner.d.ts +16 -0
- package/src/tools/queue/JobReconciliationRunner.d.ts.map +1 -0
- package/src/tools/queue/JobReconciliationRunner.js +88 -0
- package/src/tools/queue/JobRecoveryDaemon.d.ts +27 -0
- package/src/tools/queue/JobRecoveryDaemon.d.ts.map +1 -0
- package/src/tools/queue/JobRecoveryDaemon.js +205 -0
- package/src/tools/queue/JobStateTracker.d.ts +131 -0
- package/src/tools/queue/JobStateTracker.d.ts.map +1 -0
- package/src/tools/queue/JobStateTracker.js +387 -0
- package/src/tools/queue/JobStateTrackerDbPersistence.d.ts +12 -0
- package/src/tools/queue/JobStateTrackerDbPersistence.d.ts.map +1 -0
- package/src/tools/queue/JobStateTrackerDbPersistence.js +148 -0
- package/src/tools/queue/Queue.d.ts.map +1 -1
- package/src/tools/queue/Queue.js +160 -16
- package/src/tools/queue/QueueDataRedactor.d.ts +6 -0
- package/src/tools/queue/QueueDataRedactor.d.ts.map +1 -0
- package/src/tools/queue/QueueDataRedactor.js +45 -0
- package/src/tools/queue/QueueExtensions.d.ts.map +1 -1
- package/src/tools/queue/QueueExtensions.js +2 -1
- package/src/tools/queue/QueueReliabilityMetrics.d.ts +38 -0
- package/src/tools/queue/QueueReliabilityMetrics.d.ts.map +1 -0
- package/src/tools/queue/QueueReliabilityMetrics.js +131 -0
- package/src/tools/queue/QueueReliabilityOrchestrator.d.ts +7 -0
- package/src/tools/queue/QueueReliabilityOrchestrator.d.ts.map +1 -0
- package/src/tools/queue/QueueReliabilityOrchestrator.js +59 -0
- package/src/tools/queue/QueueRuntimeRegistration.d.ts +1 -9
- package/src/tools/queue/QueueRuntimeRegistration.d.ts.map +1 -1
- package/src/tools/queue/QueueRuntimeRegistration.js +75 -4
- package/src/tools/queue/QueueTracing.d.ts +32 -0
- package/src/tools/queue/QueueTracing.d.ts.map +1 -0
- package/src/tools/queue/QueueTracing.js +151 -0
- package/src/tools/queue/StalledJobMonitor.d.ts +5 -0
- package/src/tools/queue/StalledJobMonitor.d.ts.map +1 -0
- package/src/tools/queue/StalledJobMonitor.js +21 -0
- package/src/tools/queue/TimeoutManager.d.ts +14 -0
- package/src/tools/queue/TimeoutManager.d.ts.map +1 -0
- package/src/tools/queue/TimeoutManager.js +77 -0
- package/src/tools/queue/drivers/Redis.d.ts +1 -0
- package/src/tools/queue/drivers/Redis.d.ts.map +1 -1
- package/src/tools/queue/drivers/Redis.js +1 -0
- package/src/tools/queue/index.d.ts +10 -0
- package/src/tools/queue/index.d.ts.map +1 -1
- package/src/tools/queue/index.js +10 -0
- package/src/tools/storage/drivers/R2.d.ts +13 -0
- package/src/tools/storage/drivers/R2.d.ts.map +1 -1
- package/src/tools/storage/drivers/R2.js +29 -0
- package/src/zintrust.plugins.d.ts +9 -0
- package/src/zintrust.plugins.d.ts.map +1 -0
- package/src/zintrust.plugins.js +7 -0
- package/src/zintrust.plugins.wg.d.ts +9 -0
- package/src/zintrust.plugins.wg.d.ts.map +1 -0
- package/src/zintrust.plugins.wg.js +7 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type QueueTraceOperation = 'enqueue' | 'dequeue' | 'ack' | 'length' | 'drain';
|
|
2
|
+
export type QueueTraceStatus = 'ok' | 'error';
|
|
3
|
+
export type QueueTraceEvent = {
|
|
4
|
+
traceId: string;
|
|
5
|
+
spanId: string;
|
|
6
|
+
queueName: string;
|
|
7
|
+
operation: QueueTraceOperation;
|
|
8
|
+
status: QueueTraceStatus;
|
|
9
|
+
startedAt: string;
|
|
10
|
+
endedAt: string;
|
|
11
|
+
durationMs: number;
|
|
12
|
+
error?: string;
|
|
13
|
+
attributes?: Record<string, unknown>;
|
|
14
|
+
};
|
|
15
|
+
export type QueueTraceExporter = (events: ReadonlyArray<QueueTraceEvent>) => void | Promise<void>;
|
|
16
|
+
export declare const QueueTracing: Readonly<{
|
|
17
|
+
isEnabled: () => boolean;
|
|
18
|
+
registerExporter(exporter: QueueTraceExporter): void;
|
|
19
|
+
unregisterExporter(exporter: QueueTraceExporter): void;
|
|
20
|
+
flush(): Promise<number>;
|
|
21
|
+
snapshot(limit?: number): QueueTraceEvent[];
|
|
22
|
+
prune(): void;
|
|
23
|
+
reset(): void;
|
|
24
|
+
traceOperation<T>(input: {
|
|
25
|
+
queueName: string;
|
|
26
|
+
operation: QueueTraceOperation;
|
|
27
|
+
attributes?: Record<string, unknown>;
|
|
28
|
+
execute: () => Promise<T>;
|
|
29
|
+
}): Promise<T>;
|
|
30
|
+
}>;
|
|
31
|
+
export default QueueTracing;
|
|
32
|
+
//# sourceMappingURL=QueueTracing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueueTracing.d.ts","sourceRoot":"","sources":["../../../../src/tools/queue/QueueTracing.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErF,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,OAAO,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAiFlG,eAAO,MAAM,YAAY;qBArEH,OAAO;+BAwEA,kBAAkB,GAAG,IAAI;iCAIvB,kBAAkB,GAAG,IAAI;aAIvC,OAAO,CAAC,MAAM,CAAC;8BAuBP,eAAe,EAAE;aAO/B,IAAI;aAIJ,IAAI;mBAMQ,CAAC,SAAS;QAC7B,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,mBAAmB,CAAC;QAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;KAC3B,GAAG,OAAO,CAAC,CAAC,CAAC;EAiDd,CAAC;AAEH,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { OpenTelemetry } from '../../observability/OpenTelemetry.js';
|
|
2
|
+
import { generateUuid } from '../../common/utility.js';
|
|
3
|
+
import { Env } from '../../config/env.js';
|
|
4
|
+
import { Logger } from '../../config/logger.js';
|
|
5
|
+
const storedEvents = [];
|
|
6
|
+
const pendingEvents = [];
|
|
7
|
+
const exporters = new Set();
|
|
8
|
+
const normalizeSampleRate = () => {
|
|
9
|
+
const value = Env.getFloat('QUEUE_TRACING_SAMPLE_RATE', 1);
|
|
10
|
+
if (Number.isFinite(value) === false)
|
|
11
|
+
return 1;
|
|
12
|
+
return Math.max(0, Math.min(1, value));
|
|
13
|
+
};
|
|
14
|
+
const isEnabled = () => Env.getBool('QUEUE_TRACING_ENABLED', false);
|
|
15
|
+
const shouldSample = () => {
|
|
16
|
+
const rate = normalizeSampleRate();
|
|
17
|
+
if (rate >= 1)
|
|
18
|
+
return true;
|
|
19
|
+
if (rate <= 0)
|
|
20
|
+
return false;
|
|
21
|
+
return Math.random() <= rate; // NOSONAR - Math.random() is sufficient for sampling decisions in this context.
|
|
22
|
+
};
|
|
23
|
+
const maxEvents = () => Math.max(1, Env.getInt('QUEUE_TRACING_MAX_EVENTS', 5000));
|
|
24
|
+
const retentionMs = () => Math.max(1000, Env.getInt('QUEUE_TRACING_RETENTION_MS', 86400000));
|
|
25
|
+
const exportBatchSize = () => Math.max(1, Env.getInt('QUEUE_TRACING_EXPORT_BATCH_SIZE', 20));
|
|
26
|
+
const shouldExportToOtel = () => Env.getBool('QUEUE_TRACING_EXPORT_OTEL', true);
|
|
27
|
+
const pruneStored = () => {
|
|
28
|
+
const cutoff = Date.now() - retentionMs();
|
|
29
|
+
const filtered = storedEvents.filter((event) => {
|
|
30
|
+
const ended = new Date(event.endedAt).getTime();
|
|
31
|
+
if (Number.isNaN(ended))
|
|
32
|
+
return false;
|
|
33
|
+
return ended >= cutoff;
|
|
34
|
+
});
|
|
35
|
+
storedEvents.splice(0, storedEvents.length, ...filtered);
|
|
36
|
+
const keep = maxEvents();
|
|
37
|
+
if (storedEvents.length > keep) {
|
|
38
|
+
storedEvents.splice(0, storedEvents.length - keep);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
const finalize = (event) => {
|
|
42
|
+
storedEvents.push(event);
|
|
43
|
+
pendingEvents.push(event);
|
|
44
|
+
pruneStored();
|
|
45
|
+
};
|
|
46
|
+
const normalizeError = (error) => {
|
|
47
|
+
if (error instanceof Error)
|
|
48
|
+
return error.message;
|
|
49
|
+
return String(error);
|
|
50
|
+
};
|
|
51
|
+
const tryExportToOpenTelemetry = (batch) => {
|
|
52
|
+
if (shouldExportToOtel() === false)
|
|
53
|
+
return;
|
|
54
|
+
const recordQueueSpan = OpenTelemetry.recordQueueOperationSpan;
|
|
55
|
+
if (recordQueueSpan === undefined)
|
|
56
|
+
return;
|
|
57
|
+
batch.forEach((event) => {
|
|
58
|
+
recordQueueSpan({
|
|
59
|
+
queueName: event.queueName,
|
|
60
|
+
operation: event.operation,
|
|
61
|
+
durationMs: event.durationMs,
|
|
62
|
+
status: event.status,
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
export const QueueTracing = Object.freeze({
|
|
67
|
+
isEnabled,
|
|
68
|
+
registerExporter(exporter) {
|
|
69
|
+
exporters.add(exporter);
|
|
70
|
+
},
|
|
71
|
+
unregisterExporter(exporter) {
|
|
72
|
+
exporters.delete(exporter);
|
|
73
|
+
},
|
|
74
|
+
async flush() {
|
|
75
|
+
if (pendingEvents.length === 0)
|
|
76
|
+
return 0;
|
|
77
|
+
const batch = pendingEvents.splice(0, pendingEvents.length);
|
|
78
|
+
tryExportToOpenTelemetry(batch);
|
|
79
|
+
if (exporters.size > 0) {
|
|
80
|
+
const settled = await Promise.allSettled(Array.from(exporters).map(async (exporter) => exporter(batch)));
|
|
81
|
+
settled.forEach((result) => {
|
|
82
|
+
if (result.status === 'rejected') {
|
|
83
|
+
Logger.warn('Queue trace exporter failed', {
|
|
84
|
+
error: String(result.reason),
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return batch.length;
|
|
90
|
+
},
|
|
91
|
+
snapshot(limit = 100) {
|
|
92
|
+
const safeLimit = Math.max(1, Math.floor(limit));
|
|
93
|
+
pruneStored();
|
|
94
|
+
if (storedEvents.length <= safeLimit)
|
|
95
|
+
return [...storedEvents];
|
|
96
|
+
return storedEvents.slice(storedEvents.length - safeLimit);
|
|
97
|
+
},
|
|
98
|
+
prune() {
|
|
99
|
+
pruneStored();
|
|
100
|
+
},
|
|
101
|
+
reset() {
|
|
102
|
+
storedEvents.splice(0, storedEvents.length);
|
|
103
|
+
pendingEvents.splice(0, pendingEvents.length);
|
|
104
|
+
exporters.clear();
|
|
105
|
+
},
|
|
106
|
+
async traceOperation(input) {
|
|
107
|
+
if (isEnabled() === false || shouldSample() === false) {
|
|
108
|
+
return input.execute();
|
|
109
|
+
}
|
|
110
|
+
const startedAtMs = Date.now();
|
|
111
|
+
const traceId = generateUuid();
|
|
112
|
+
const spanId = generateUuid();
|
|
113
|
+
try {
|
|
114
|
+
const result = await input.execute();
|
|
115
|
+
finalize({
|
|
116
|
+
traceId,
|
|
117
|
+
spanId,
|
|
118
|
+
queueName: input.queueName,
|
|
119
|
+
operation: input.operation,
|
|
120
|
+
status: 'ok',
|
|
121
|
+
startedAt: new Date(startedAtMs).toISOString(),
|
|
122
|
+
endedAt: new Date().toISOString(),
|
|
123
|
+
durationMs: Math.max(0, Date.now() - startedAtMs),
|
|
124
|
+
attributes: input.attributes,
|
|
125
|
+
});
|
|
126
|
+
if (pendingEvents.length >= exportBatchSize()) {
|
|
127
|
+
void this.flush();
|
|
128
|
+
}
|
|
129
|
+
return result;
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
finalize({
|
|
133
|
+
traceId,
|
|
134
|
+
spanId,
|
|
135
|
+
queueName: input.queueName,
|
|
136
|
+
operation: input.operation,
|
|
137
|
+
status: 'error',
|
|
138
|
+
startedAt: new Date(startedAtMs).toISOString(),
|
|
139
|
+
endedAt: new Date().toISOString(),
|
|
140
|
+
durationMs: Math.max(0, Date.now() - startedAtMs),
|
|
141
|
+
error: normalizeError(error),
|
|
142
|
+
attributes: input.attributes,
|
|
143
|
+
});
|
|
144
|
+
if (pendingEvents.length >= exportBatchSize()) {
|
|
145
|
+
void this.flush();
|
|
146
|
+
}
|
|
147
|
+
throw error;
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
});
|
|
151
|
+
export default QueueTracing;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StalledJobMonitor.d.ts","sourceRoot":"","sources":["../../../../src/tools/queue/StalledJobMonitor.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB;gBACV,OAAO,CAAC,MAAM,CAAC;EAoBjC,CAAC;AAEH,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Logger } from '../../config/logger.js';
|
|
2
|
+
import { JobHeartbeatStore } from './JobHeartbeatStore.js';
|
|
3
|
+
import { JobStateTracker } from './JobStateTracker.js';
|
|
4
|
+
export const StalledJobMonitor = Object.freeze({
|
|
5
|
+
async scanOnce() {
|
|
6
|
+
const expired = await JobHeartbeatStore.listExpired();
|
|
7
|
+
await Promise.all(expired.map(async (row) => {
|
|
8
|
+
await JobStateTracker.stalled({
|
|
9
|
+
queueName: row.queueName,
|
|
10
|
+
jobId: row.jobId,
|
|
11
|
+
reason: 'Heartbeat expired',
|
|
12
|
+
});
|
|
13
|
+
await JobHeartbeatStore.remove(row.queueName, row.jobId);
|
|
14
|
+
}));
|
|
15
|
+
if (expired.length > 0) {
|
|
16
|
+
Logger.warn('Stalled jobs detected from heartbeat store', { count: expired.length });
|
|
17
|
+
}
|
|
18
|
+
return expired.length;
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
export default StalledJobMonitor;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type TimeoutRetryConfig = {
|
|
2
|
+
timeoutMs: number;
|
|
3
|
+
maxRetries: number;
|
|
4
|
+
retryDelayMs: number;
|
|
5
|
+
operationName?: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const TimeoutManager: Readonly<{
|
|
8
|
+
getQueueJobTimeoutMs(): number;
|
|
9
|
+
withTimeout<T>(operation: () => Promise<T>, timeoutMs: number, operationName: string, timeoutHandler?: () => Promise<T>): Promise<T>;
|
|
10
|
+
withTimeoutRetry<T>(operation: () => Promise<T>, config: TimeoutRetryConfig): Promise<T>;
|
|
11
|
+
isTimeoutError: (error: unknown) => boolean;
|
|
12
|
+
}>;
|
|
13
|
+
export default TimeoutManager;
|
|
14
|
+
//# sourceMappingURL=TimeoutManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimeoutManager.d.ts","sourceRoot":"","sources":["../../../../src/tools/queue/TimeoutManager.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AA8BF,eAAO,MAAM,cAAc;4BACD,MAAM;gBAKZ,CAAC,aACN,MAAM,OAAO,CAAC,CAAC,CAAC,aAChB,MAAM,iBACF,MAAM,mBACJ,MAAM,OAAO,CAAC,CAAC,CAAC,GAChC,OAAO,CAAC,CAAC,CAAC;qBA0BU,CAAC,aAAa,MAAM,OAAO,CAAC,CAAC,CAAC,UAAU,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;4BAhDjE,OAAO,KAAG,OAAO;EAwE9C,CAAC;AAEH,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Env } from '../../config/env.js';
|
|
2
|
+
import { ErrorFactory } from '../../exceptions/ZintrustError.js';
|
|
3
|
+
const sleep = async (ms) => {
|
|
4
|
+
if (ms <= 0)
|
|
5
|
+
return;
|
|
6
|
+
await new Promise((resolve) => {
|
|
7
|
+
const timeoutRef = globalThis.setTimeout(() => {
|
|
8
|
+
clearTimeout(timeoutRef);
|
|
9
|
+
resolve();
|
|
10
|
+
}, ms);
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
const createTimeoutError = (operationName, timeoutMs) => ErrorFactory.createTryCatchError(`Operation timed out: ${operationName}`, {
|
|
14
|
+
code: 'QUEUE_TIMEOUT',
|
|
15
|
+
operationName,
|
|
16
|
+
timeoutMs,
|
|
17
|
+
});
|
|
18
|
+
const isTimeoutError = (error) => {
|
|
19
|
+
if (error === null || error === undefined || typeof error !== 'object')
|
|
20
|
+
return false;
|
|
21
|
+
const code = error.code;
|
|
22
|
+
if (code === 'QUEUE_TIMEOUT')
|
|
23
|
+
return true;
|
|
24
|
+
const details = error.details;
|
|
25
|
+
if (details !== null && details !== undefined && typeof details === 'object') {
|
|
26
|
+
return details.code === 'QUEUE_TIMEOUT';
|
|
27
|
+
}
|
|
28
|
+
return false;
|
|
29
|
+
};
|
|
30
|
+
export const TimeoutManager = Object.freeze({
|
|
31
|
+
getQueueJobTimeoutMs() {
|
|
32
|
+
const timeoutSeconds = Env.getInt('QUEUE_JOB_TIMEOUT', 60);
|
|
33
|
+
return Math.max(1000, timeoutSeconds * 1000);
|
|
34
|
+
},
|
|
35
|
+
async withTimeout(operation, timeoutMs, operationName, timeoutHandler) {
|
|
36
|
+
let timeoutId;
|
|
37
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
38
|
+
timeoutId = globalThis.setTimeout(() => {
|
|
39
|
+
reject(createTimeoutError(operationName, timeoutMs));
|
|
40
|
+
}, Math.max(1, timeoutMs));
|
|
41
|
+
});
|
|
42
|
+
try {
|
|
43
|
+
return await Promise.race([operation(), timeoutPromise]);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
if (timeoutHandler !== undefined && isTimeoutError(error)) {
|
|
47
|
+
return await timeoutHandler();
|
|
48
|
+
}
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
if (timeoutId !== undefined) {
|
|
53
|
+
clearTimeout(timeoutId);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
async withTimeoutRetry(operation, config) {
|
|
58
|
+
const retries = Math.max(0, Math.floor(config.maxRetries));
|
|
59
|
+
const attemptRun = async (attempt) => {
|
|
60
|
+
try {
|
|
61
|
+
return await this.withTimeout(operation, config.timeoutMs, config.operationName ?? 'queue-operation');
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
const shouldRetry = isTimeoutError(error) && attempt < retries;
|
|
65
|
+
if (!shouldRetry) {
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
const delay = Math.max(0, Math.floor(config.retryDelayMs * 2 ** attempt));
|
|
69
|
+
await sleep(delay);
|
|
70
|
+
return attemptRun(attempt + 1);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
return attemptRun(0);
|
|
74
|
+
},
|
|
75
|
+
isTimeoutError,
|
|
76
|
+
});
|
|
77
|
+
export default TimeoutManager;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { QueueMessage } from '../../queue/Queue';
|
|
2
2
|
export declare const RedisQueue: {
|
|
3
|
+
readonly __zintrustCoreRedisQueue: true;
|
|
3
4
|
readonly enqueue: <T = unknown>(queue: string, payload: T) => Promise<string>;
|
|
4
5
|
readonly dequeue: <T = unknown>(queue: string) => Promise<QueueMessage<T> | undefined>;
|
|
5
6
|
readonly ack: (_queue: string, _id: string) => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Redis.d.ts","sourceRoot":"","sources":["../../../../../src/tools/queue/drivers/Redis.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,eAAO,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"Redis.d.ts","sourceRoot":"","sources":["../../../../../src/tools/queue/drivers/Redis.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,eAAO,MAAM,UAAU;;uBAGL,CAAC,mBAAmB,MAAM,WAAW,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;uBAKxD,CAAC,mBAAmB,MAAM,KAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;2BAK7D,MAAM,OAAO,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;6BAKjC,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;4BAKzB,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;CAKzC,CAAC;AAEL,eAAe,UAAU,CAAC"}
|
|
@@ -4,6 +4,16 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export { createAdvancedQueue, type AdvancedQueue } from './AdvancedQueue';
|
|
6
6
|
export { createDeduplicationBuilder, type DeduplicationBuilder } from './DeduplicationBuilder';
|
|
7
|
+
export { IdempotencyManager } from './IdempotencyManager';
|
|
8
|
+
export { JobHeartbeatStore } from './JobHeartbeatStore';
|
|
9
|
+
export { JobReconciliationRunner } from './JobReconciliationRunner';
|
|
10
|
+
export { JobRecoveryDaemon } from './JobRecoveryDaemon';
|
|
7
11
|
export { createLockProvider, createMemoryLockProvider, createRedisLockProvider, getLockProvider, registerLockProvider, } from './LockProvider';
|
|
12
|
+
export { QueueDataRedactor } from './QueueDataRedactor';
|
|
13
|
+
export { QueueReliabilityMetrics } from './QueueReliabilityMetrics';
|
|
14
|
+
export { QueueReliabilityOrchestrator } from './QueueReliabilityOrchestrator';
|
|
15
|
+
export { QueueTracing } from './QueueTracing';
|
|
16
|
+
export { StalledJobMonitor } from './StalledJobMonitor';
|
|
17
|
+
export { TimeoutManager } from './TimeoutManager';
|
|
8
18
|
export type { AdvancedJobOptions, DeduplicationOptions, JobResult, Lock, LockOptions, LockProvider, LockProviderConfig, LockStatus, QueueConfig, ReleaseCondition, } from '../../types/Queue';
|
|
9
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tools/queue/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACpG,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tools/queue/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACpG,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,SAAS,EACT,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
|
package/src/tools/queue/index.js
CHANGED
|
@@ -4,4 +4,14 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export { createAdvancedQueue } from './AdvancedQueue.js';
|
|
6
6
|
export { createDeduplicationBuilder } from './DeduplicationBuilder.js';
|
|
7
|
+
export { IdempotencyManager } from './IdempotencyManager.js';
|
|
8
|
+
export { JobHeartbeatStore } from './JobHeartbeatStore.js';
|
|
9
|
+
export { JobReconciliationRunner } from './JobReconciliationRunner.js';
|
|
10
|
+
export { JobRecoveryDaemon } from './JobRecoveryDaemon.js';
|
|
7
11
|
export { createLockProvider, createMemoryLockProvider, createRedisLockProvider, getLockProvider, registerLockProvider, } from './LockProvider.js';
|
|
12
|
+
export { QueueDataRedactor } from './QueueDataRedactor.js';
|
|
13
|
+
export { QueueReliabilityMetrics } from './QueueReliabilityMetrics.js';
|
|
14
|
+
export { QueueReliabilityOrchestrator } from './QueueReliabilityOrchestrator.js';
|
|
15
|
+
export { QueueTracing } from './QueueTracing.js';
|
|
16
|
+
export { StalledJobMonitor } from './StalledJobMonitor.js';
|
|
17
|
+
export { TimeoutManager } from './TimeoutManager.js';
|
|
@@ -4,8 +4,21 @@ export type R2Config = {
|
|
|
4
4
|
accessKeyId: string;
|
|
5
5
|
secretAccessKey: string;
|
|
6
6
|
endpoint?: string;
|
|
7
|
+
binding?: string;
|
|
8
|
+
};
|
|
9
|
+
export type R2MultipartUploadInfo = {
|
|
10
|
+
key: string;
|
|
11
|
+
uploadId: string;
|
|
12
|
+
};
|
|
13
|
+
export type R2UploadedPart = {
|
|
14
|
+
partNumber: number;
|
|
15
|
+
etag: string;
|
|
7
16
|
};
|
|
8
17
|
export declare const R2Driver: Readonly<{
|
|
18
|
+
createMultipartUpload(config: R2Config, key: string, options?: unknown): Promise<R2MultipartUploadInfo>;
|
|
19
|
+
uploadPart(config: R2Config, key: string, uploadId: string, partNumber: number, value: unknown, options?: unknown): Promise<R2UploadedPart>;
|
|
20
|
+
completeMultipartUpload(config: R2Config, key: string, uploadId: string, uploadedParts: R2UploadedPart[]): Promise<string>;
|
|
21
|
+
abortMultipartUpload(config: R2Config, key: string, uploadId: string): Promise<void>;
|
|
9
22
|
put(config: R2Config, key: string, content: string | Buffer): Promise<string>;
|
|
10
23
|
get(config: R2Config, key: string): Promise<Buffer>;
|
|
11
24
|
exists(config: R2Config, key: string): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"R2.d.ts","sourceRoot":"","sources":["../../../../../src/tools/storage/drivers/R2.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"R2.d.ts","sourceRoot":"","sources":["../../../../../src/tools/storage/drivers/R2.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAyBF,eAAO,MAAM,QAAQ;kCAET,QAAQ,OACX,MAAM,YACD,OAAO,GAChB,OAAO,CAAC,qBAAqB,CAAC;uBAOvB,QAAQ,OACX,MAAM,YACD,MAAM,cACJ,MAAM,SACX,OAAO,YACJ,OAAO,GAChB,OAAO,CAAC,cAAc,CAAC;oCAOhB,QAAQ,OACX,MAAM,YACD,MAAM,iBACD,cAAc,EAAE,GAC9B,OAAO,CAAC,MAAM,CAAC;iCAOiB,QAAQ,OAAO,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;gBAMxE,QAAQ,OAAO,MAAM,WAAW,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBAkBjE,QAAQ,OAAO,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;mBAapC,QAAQ,OAAO,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;mBAaxC,QAAQ,OAAO,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;gBAa9C,QAAQ,OAAO,MAAM,GAAG,MAAM;oBAQhC,QAAQ,OACX,MAAM,YACD;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAA;KAAE,GACvD,MAAM;EAgBT,CAAC;AAEH,eAAe,QAAQ,CAAC"}
|
|
@@ -1,6 +1,35 @@
|
|
|
1
1
|
import { ErrorFactory } from '../../../exceptions/ZintrustError.js';
|
|
2
|
+
import { Cloudflare } from '../../../config/cloudflare.js';
|
|
2
3
|
import { S3Driver } from '../drivers/S3.js';
|
|
4
|
+
const resolveWorkersBucket = (config) => {
|
|
5
|
+
const binding = Cloudflare.getR2Binding(config.binding);
|
|
6
|
+
if (binding === null || typeof binding.createMultipartUpload !== 'function') {
|
|
7
|
+
throw ErrorFactory.createConfigError('R2 multipart requires a Workers R2 binding (set config.binding or R2_BUCKET/R2/BUCKET).');
|
|
8
|
+
}
|
|
9
|
+
return binding;
|
|
10
|
+
};
|
|
3
11
|
export const R2Driver = Object.freeze({
|
|
12
|
+
async createMultipartUpload(config, key, options) {
|
|
13
|
+
const bucket = resolveWorkersBucket(config);
|
|
14
|
+
const upload = await bucket.createMultipartUpload(key, options);
|
|
15
|
+
return { key: upload.key ?? key, uploadId: upload.uploadId };
|
|
16
|
+
},
|
|
17
|
+
async uploadPart(config, key, uploadId, partNumber, value, options) {
|
|
18
|
+
const bucket = resolveWorkersBucket(config);
|
|
19
|
+
const upload = bucket.resumeMultipartUpload(key, uploadId);
|
|
20
|
+
return upload.uploadPart(partNumber, value, options);
|
|
21
|
+
},
|
|
22
|
+
async completeMultipartUpload(config, key, uploadId, uploadedParts) {
|
|
23
|
+
const bucket = resolveWorkersBucket(config);
|
|
24
|
+
const upload = bucket.resumeMultipartUpload(key, uploadId);
|
|
25
|
+
await upload.complete(uploadedParts);
|
|
26
|
+
return R2Driver.url(config, key);
|
|
27
|
+
},
|
|
28
|
+
async abortMultipartUpload(config, key, uploadId) {
|
|
29
|
+
const bucket = resolveWorkersBucket(config);
|
|
30
|
+
const upload = bucket.resumeMultipartUpload(key, uploadId);
|
|
31
|
+
await upload.abort();
|
|
32
|
+
},
|
|
4
33
|
async put(config, key, content) {
|
|
5
34
|
if (typeof config.endpoint !== 'string' || config.endpoint.trim() === '') {
|
|
6
35
|
throw ErrorFactory.createConfigError('R2: missing endpoint');
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-generated fallback module.
|
|
3
|
+
* This file is created by scripts/ensure-worker-plugins.mjs when missing.
|
|
4
|
+
* It allows optional runtime plugin imports to resolve in CI/scaffolded setups.
|
|
5
|
+
*/
|
|
6
|
+
export declare const __zintrustGeneratedPluginStub = "zintrust.plugins.ts";
|
|
7
|
+
declare const _default: {};
|
|
8
|
+
export default _default;
|
|
9
|
+
//# sourceMappingURL=zintrust.plugins.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zintrust.plugins.d.ts","sourceRoot":"","sources":["../../src/zintrust.plugins.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,6BAA6B,wBAAwB,CAAC;;AACnE,wBAAkB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-generated fallback module.
|
|
3
|
+
* This file is created by scripts/ensure-worker-plugins.mjs when missing.
|
|
4
|
+
* It allows optional runtime plugin imports to resolve in CI/scaffolded setups.
|
|
5
|
+
*/
|
|
6
|
+
export const __zintrustGeneratedPluginStub = 'zintrust.plugins.ts';
|
|
7
|
+
export default {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-generated fallback module.
|
|
3
|
+
* This file is created by scripts/ensure-worker-plugins.mjs when missing.
|
|
4
|
+
* It allows optional runtime plugin imports to resolve in CI/scaffolded setups.
|
|
5
|
+
*/
|
|
6
|
+
export declare const __zintrustGeneratedPluginStub = "zintrust.plugins.wg.ts";
|
|
7
|
+
declare const _default: {};
|
|
8
|
+
export default _default;
|
|
9
|
+
//# sourceMappingURL=zintrust.plugins.wg.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zintrust.plugins.wg.d.ts","sourceRoot":"","sources":["../../src/zintrust.plugins.wg.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,6BAA6B,2BAA2B,CAAC;;AACtE,wBAAkB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-generated fallback module.
|
|
3
|
+
* This file is created by scripts/ensure-worker-plugins.mjs when missing.
|
|
4
|
+
* It allows optional runtime plugin imports to resolve in CI/scaffolded setups.
|
|
5
|
+
*/
|
|
6
|
+
export const __zintrustGeneratedPluginStub = 'zintrust.plugins.wg.ts';
|
|
7
|
+
export default {};
|