@zintrust/core 2.2.1 → 2.2.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zintrust/core",
3
- "version": "2.2.1",
3
+ "version": "2.2.3",
4
4
  "description": "Production-grade TypeScript backend framework for JavaScript",
5
5
  "homepage": "https://zintrust.com",
6
6
  "repository": {
@@ -105,6 +105,7 @@ export declare const Env: Readonly<{
105
105
  REDIS_PROXY_TIMEOUT_MS: number;
106
106
  REDIS_PROXY_REQUIRE_SIGNING: boolean;
107
107
  REDIS_PROXY_SIGNING_WINDOW_MS: number;
108
+ REDIS_REQUIRE_DIRECT_FOR_SCRIPTS: boolean;
108
109
  USE_REDIS_PROXY: boolean;
109
110
  SMTP_PROXY_URL: string;
110
111
  SMTP_PROXY_HOST: string;
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/config/env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/config/env.ts"],"names":[],"mappings":"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"}
package/src/config/env.js CHANGED
@@ -345,6 +345,7 @@ export const Env = Object.freeze({
345
345
  REDIS_PROXY_TIMEOUT_MS: getInt('REDIS_PROXY_TIMEOUT_MS', ZT_PROXY_TIMEOUT_MS),
346
346
  REDIS_PROXY_REQUIRE_SIGNING: getBool('REDIS_PROXY_REQUIRE_SIGNING', true),
347
347
  REDIS_PROXY_SIGNING_WINDOW_MS: getInt('REDIS_PROXY_SIGNING_WINDOW_MS', getInt('ZT_PROXY_SIGNING_WINDOW_MS', 60000)),
348
+ REDIS_REQUIRE_DIRECT_FOR_SCRIPTS: getBool('REDIS_REQUIRE_DIRECT_FOR_SCRIPTS', true),
348
349
  USE_REDIS_PROXY: getBool('USE_REDIS_PROXY', false),
349
350
  SMTP_PROXY_URL: get('SMTP_PROXY_URL', ''),
350
351
  SMTP_PROXY_HOST: get('SMTP_PROXY_HOST', '127.0.0.1'),
package/src/index.d.ts CHANGED
@@ -13,7 +13,7 @@ export { AwsSigV4 } from './common/index';
13
13
  export { SignedRequest } from './security/SignedRequest';
14
14
  export { Server } from './boot/Server';
15
15
  export { ServiceContainer } from './container/ServiceContainer';
16
- export { createPaginator, getNextPageUrl, getPrevPageUrl, Paginator } from './database/Paginator';
16
+ export { Paginator, createPaginator, getNextPageUrl, getPrevPageUrl } from './database/Paginator';
17
17
  export type { CreatePaginatorInput, PaginationLinks, PaginationQuery, Paginator as PaginatorType, } from './database/Paginator';
18
18
  export { MySQLAdapter } from './orm/adapters/MySQLAdapter';
19
19
  export { PostgreSQLAdapter } from './orm/adapters/PostgreSQLAdapter';
@@ -25,9 +25,9 @@ export { DatabaseConnectionRegistry } from './orm/DatabaseConnectionRegistry';
25
25
  export { Model } from './orm/Model';
26
26
  export type { IModel, ModelConfig, ModelStatic } from './orm/Model';
27
27
  export { QueryBuilder } from './orm/QueryBuilder';
28
- export type { InsertResult, IQueryBuilder, PaginationOptions } from './orm/QueryBuilder';
28
+ export type { IQueryBuilder, InsertResult, PaginationOptions } from './orm/QueryBuilder';
29
29
  export type { IRelationship } from './orm/Relationships';
30
- export { BodyParsers, bodyParsingMiddleware, BulletproofAuthMiddleware, Controller, CsrfMiddleware, ErrorHandlerMiddleware, FileUpload, fileUploadMiddleware, getValidatedBody, getValidatedHeaders, getValidatedParams, getValidatedQuery, hasValidatedBody, Kernel, LoggingMiddleware, MiddlewareStack, MultipartParser, RateLimiter, Request, RequestContext, requireValidatedBody, Response, SecurityMiddleware, SessionMiddleware, ValidationHelper, ValidationMiddleware, } from './runtime-index.js';
30
+ export { BodyParsers, BulletproofAuthMiddleware, Controller, CsrfMiddleware, ErrorHandlerMiddleware, FileUpload, Kernel, LoggingMiddleware, MiddlewareStack, MultipartParser, RateLimiter, Request, RequestContext, Response, SecurityMiddleware, SessionMiddleware, ValidationHelper, ValidationMiddleware, bodyParsingMiddleware, fileUploadMiddleware, getValidatedBody, getValidatedHeaders, getValidatedParams, getValidatedQuery, hasValidatedBody, requireValidatedBody, } from './runtime-index.js';
31
31
  export type { FileUploadOptions, IFileUploadHandler, IRequest, IResponse, Middleware, MultipartFieldValue, MultipartParseInput, MultipartParserProvider, ParsedMultipartData, UploadedFile, ValidatedRequest, } from './runtime-index.js';
32
32
  export { DateTime } from './time/DateTime';
33
33
  export type { IDateTime } from './time/DateTime';
@@ -36,12 +36,12 @@ export { OpenApiGenerator } from './openapi/OpenApiGenerator';
36
36
  export type { OpenApiGeneratorOptions } from './openapi/OpenApiGenerator';
37
37
  export { Router } from './routes/Router';
38
38
  export type { IRouter } from './routes/Router';
39
- export { normalizeRouteMeta, RouteRegistry } from './routes/RouteRegistry';
39
+ export { RouteRegistry, normalizeRouteMeta } from './routes/RouteRegistry';
40
40
  export type { RouteMeta, RouteMetaInput, RouteRegistration } from './routes/RouteRegistry';
41
41
  export { DatabaseAdapterRegistry } from './orm/DatabaseAdapterRegistry';
42
- export { ContextLoader, delay, ensureDirSafe, generateSecureJobId, generateUuid, getString, RemoteSignedJson, Utilities, } from './runtime-index.js';
42
+ export { ContextLoader, RemoteSignedJson, Utilities, delay, ensureDirSafe, generateSecureJobId, generateUuid, getString, } from './runtime-index.js';
43
43
  export type { ContextLoaderBatchHandler, ContextLoaderBatchKey, ContextLoaderBatchResult, ContextLoaderContext, ContextLoaderInstance, ContextLoaderMode, ContextLoaderPlan, ContextLoaderResolver, RemoteSignedJsonSettings, UtilitiesType, } from './runtime-index.js';
44
- export { collect, Collection } from './collections/index';
44
+ export { Collection, collect } from './collections/index';
45
45
  export type { ICollection, PrimitiveKey } from './collections/index';
46
46
  export { HttpClient } from './tools/http/Http';
47
47
  export type { IHttpRequest, IHttpResponse } from './tools/http/Http';
@@ -75,12 +75,12 @@ export { JwtVerifier } from './security/JwtVerifier';
75
75
  export type { JwtVerifierAlgorithm, JwtVerifierFailure, JwtVerifierFailureReason, JwtVerifierJwk, JwtVerifierJwksDocument, JwtVerifierResult, JwtVerifierSuccess, JwtVerifierWithJwkInput, JwtVerifierWithJwksInput, } from './security/JwtVerifier';
76
76
  export { PasswordResetTokenBroker } from './security/PasswordResetTokenBroker';
77
77
  export type { IPasswordResetTokenBroker, IPasswordResetTokenStore, PasswordResetTokenBrokerOptions, PasswordResetTokenBrokerType, PasswordResetTokenRecord, } from './security/PasswordResetTokenBroker';
78
- export { createSanitizer, Sanitizer, type SanitizerType } from './security/Sanitizer';
78
+ export { Sanitizer, createSanitizer, type SanitizerType } from './security/Sanitizer';
79
79
  export { TokenRevocation } from './security/TokenRevocation';
80
80
  export { Xss } from './security/Xss';
81
81
  export { XssProtection } from './security/XssProtection';
82
82
  export { ErrorFactory } from './exceptions/ZintrustError';
83
- export { detectCloudflareWorkers, detectRuntimePlatform, RUNTIME_PLATFORM, RuntimeServices, type RuntimeCrypto, type RuntimeEnvReader, type RuntimeFs, type RuntimePlatform, type RuntimeServices as RuntimeServicesType, type RuntimeTimers, } from './runtime/RuntimeServices';
83
+ export { RUNTIME_PLATFORM, RuntimeServices, detectCloudflareWorkers, detectRuntimePlatform, type RuntimeCrypto, type RuntimeEnvReader, type RuntimeFs, type RuntimePlatform, type RuntimeServices as RuntimeServicesType, type RuntimeTimers, } from './runtime/RuntimeServices';
84
84
  export { StartupConfigFile, StartupConfigFileRegistry } from './runtime/StartupConfigFileRegistry';
85
85
  export { SystemTraceBridge } from './trace/SystemTraceBridge';
86
86
  export { EventDispatcher } from './events/EventDispatcher';
@@ -118,7 +118,7 @@ export { HealthCheckHandler, ServiceHealthMonitor } from './microservices/Servic
118
118
  export type { AggregatedHealthStatus, HealthCheckResult, IServiceHealthMonitor, } from './microservices/ServiceHealthMonitor';
119
119
  export { getServiceId, isCanonicalServiceId, normalizeServiceManifest, } from './microservices/ServiceManifest';
120
120
  export type { ProjectRuntimeModule, ServiceManifestEntry } from './microservices/ServiceManifest';
121
- export { clearMiddlewareConfigCache, middlewareConfig, MiddlewareKeys } from './config/middleware';
121
+ export { MiddlewareKeys, clearMiddlewareConfigCache, middlewareConfig } from './config/middleware';
122
122
  export type { MiddlewareKey } from './config/middleware';
123
123
  export type { MiddlewareConfigType } from './config/type';
124
124
  export { createBaseDrivers, queueConfig } from './config/queue';
@@ -137,7 +137,7 @@ export type { StartupConfig } from './config/startup';
137
137
  export { Constants, DEFAULTS, ENV_KEYS, HTTP_HEADERS, MIME_TYPES } from './config/constants';
138
138
  export { FeatureFlags } from './config/features';
139
139
  export { Cloudflare } from './config/cloudflare';
140
- export { getDatabaseCredentials, getJwtSecrets, SECRETS, SecretsManager, } from './config/SecretsManager';
140
+ export { SECRETS, SecretsManager, getDatabaseCredentials, getJwtSecrets, } from './config/SecretsManager';
141
141
  export type { DatabaseCredentials, JwtSecrets } from './config/SecretsManager';
142
142
  export type { MailDriverConfig, MailDriverName, WorkersEnv } from './config/type';
143
143
  export { StartupConfigValidator } from './config/StartupConfigValidator';
@@ -219,8 +219,9 @@ export type * from './config/type';
219
219
  export * from './helper/index';
220
220
  export { ZintrustLang } from './lang/lang';
221
221
  export { createRedisConnection, workersConfig } from './config/workers';
222
+ export type { RedisTransportOptions } from './tools/redis/RedisTransport';
222
223
  export type { RouteOptions } from './routes/Router';
223
- export { createRedisKey, extractOriginalKey, getBullMQSafeQueueName, getPrefix, isAppKey, RedisKeys, type RedisKeyType, } from './tools/redis/RedisKeyManager';
224
+ export { RedisKeys, createRedisKey, extractOriginalKey, getBullMQSafeQueueName, getPrefix, isAppKey, type RedisKeyType, } from './tools/redis/RedisKeyManager';
224
225
  export { CloudflareSocket } from './sockets/CloudflareSocket';
225
226
  export { SocketFeature } from './sockets/SocketRuntime';
226
227
  export type { SocketAuthorizationContext, SocketAuthorizationDecision, SocketAuthorizer, SocketAuthorizerHandler, SocketFeatureSettings, SocketNodeUpgradeInput, SocketPublishContext, SocketPublishDecision, SocketPublishPolicy, SocketPublishPolicyHandler, SocketRouteRegistrar, SocketRuntime, SocketRuntimeDiagnostics, SocketTransportMode, SocketWorkerContext, } from './sockets/SocketRuntime';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/src/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @zintrust/core v2.2.1
2
+ * @zintrust/core v2.2.3
3
3
  *
4
4
  * ZinTrust Framework - Production-Grade TypeScript Backend
5
5
  * Built for performance, type safety, and exceptional developer experience
6
6
  *
7
7
  * Build Information:
8
- * Built: 2026-05-27T19:51:45.261Z
8
+ * Built: 2026-05-28T13:50:35.338Z
9
9
  * Node: >=20.0.0
10
10
  * License: MIT
11
11
  *
@@ -21,13 +21,13 @@
21
21
  * Available at runtime for debugging and health checks
22
22
  */
23
23
  export const ZINTRUST_VERSION = '0.1.41';
24
- export const ZINTRUST_BUILD_DATE = '2026-05-27T19:51:45.222Z'; // Replaced during build
24
+ export const ZINTRUST_BUILD_DATE = '2026-05-28T13:50:35.305Z'; // Replaced during build
25
25
  export { Application } from './boot/Application.js';
26
26
  export { AwsSigV4 } from './common/index.js';
27
27
  export { SignedRequest } from './security/SignedRequest.js';
28
28
  export { Server } from './boot/Server.js';
29
29
  export { ServiceContainer } from './container/ServiceContainer.js';
30
- export { createPaginator, getNextPageUrl, getPrevPageUrl, Paginator } from './database/Paginator.js';
30
+ export { Paginator, createPaginator, getNextPageUrl, getPrevPageUrl } from './database/Paginator.js';
31
31
  // HTTP primitives - re-exported from runtime
32
32
  export { MySQLAdapter } from './orm/adapters/MySQLAdapter.js';
33
33
  export { PostgreSQLAdapter } from './orm/adapters/PostgreSQLAdapter.js';
@@ -37,7 +37,7 @@ export { Database, resetDatabase, useDatabase, useEnsureDbConnected } from './or
37
37
  export { DatabaseConnectionRegistry } from './orm/DatabaseConnectionRegistry.js';
38
38
  export { Model } from './orm/Model.js';
39
39
  export { QueryBuilder } from './orm/QueryBuilder.js';
40
- export { BodyParsers, bodyParsingMiddleware, BulletproofAuthMiddleware, Controller, CsrfMiddleware, ErrorHandlerMiddleware, FileUpload, fileUploadMiddleware, getValidatedBody, getValidatedHeaders, getValidatedParams, getValidatedQuery, hasValidatedBody, Kernel, LoggingMiddleware, MiddlewareStack, MultipartParser, RateLimiter, Request, RequestContext, requireValidatedBody, Response, SecurityMiddleware, SessionMiddleware, ValidationHelper, ValidationMiddleware, } from './runtime-index.js';
40
+ export { BodyParsers, BulletproofAuthMiddleware, Controller, CsrfMiddleware, ErrorHandlerMiddleware, FileUpload, Kernel, LoggingMiddleware, MiddlewareStack, MultipartParser, RateLimiter, Request, RequestContext, Response, SecurityMiddleware, SessionMiddleware, ValidationHelper, ValidationMiddleware, bodyParsingMiddleware, fileUploadMiddleware, getValidatedBody, getValidatedHeaders, getValidatedParams, getValidatedQuery, hasValidatedBody, requireValidatedBody, } from './runtime-index.js';
41
41
  // Time Utilities
42
42
  export { DateTime } from './time/DateTime.js';
43
43
  // Migrations
@@ -47,12 +47,12 @@ export { Schema as MigrationSchema } from './migrations/schema/index.js';
47
47
  // Adapter registry (for external adapter packages)
48
48
  export { OpenApiGenerator } from './openapi/OpenApiGenerator.js';
49
49
  export { Router } from './routes/Router.js';
50
- export { normalizeRouteMeta, RouteRegistry } from './routes/RouteRegistry.js';
50
+ export { RouteRegistry, normalizeRouteMeta } from './routes/RouteRegistry.js';
51
51
  export { DatabaseAdapterRegistry } from './orm/DatabaseAdapterRegistry.js';
52
52
  // Common - re-exported from runtime
53
- export { ContextLoader, delay, ensureDirSafe, generateSecureJobId, generateUuid, getString, RemoteSignedJson, Utilities, } from './runtime-index.js';
53
+ export { ContextLoader, RemoteSignedJson, Utilities, delay, ensureDirSafe, generateSecureJobId, generateUuid, getString, } from './runtime-index.js';
54
54
  // Collections
55
- export { collect, Collection } from './collections/index.js';
55
+ export { Collection, collect } from './collections/index.js';
56
56
  // HTTP Client
57
57
  export { HttpClient } from './tools/http/Http.js';
58
58
  // Database adapter types
@@ -82,14 +82,14 @@ export { JwtManager } from './security/JwtManager.js';
82
82
  export { JwtSessions } from './security/JwtSessions.js';
83
83
  export { JwtVerifier } from './security/JwtVerifier.js';
84
84
  export { PasswordResetTokenBroker } from './security/PasswordResetTokenBroker.js';
85
- export { createSanitizer, Sanitizer } from './security/Sanitizer.js';
85
+ export { Sanitizer, createSanitizer } from './security/Sanitizer.js';
86
86
  export { TokenRevocation } from './security/TokenRevocation.js';
87
87
  export { Xss } from './security/Xss.js';
88
88
  export { XssProtection } from './security/XssProtection.js';
89
89
  // Exceptions
90
90
  export { ErrorFactory } from './exceptions/ZintrustError.js';
91
91
  // Runtime services
92
- export { detectCloudflareWorkers, detectRuntimePlatform, RUNTIME_PLATFORM, RuntimeServices, } from './runtime/RuntimeServices.js';
92
+ export { RUNTIME_PLATFORM, RuntimeServices, detectCloudflareWorkers, detectRuntimePlatform, } from './runtime/RuntimeServices.js';
93
93
  export { StartupConfigFile, StartupConfigFileRegistry } from './runtime/StartupConfigFileRegistry.js';
94
94
  // Events
95
95
  export { SystemTraceBridge } from './trace/SystemTraceBridge.js';
@@ -122,7 +122,7 @@ export { RequestTracingMiddleware } from './microservices/RequestTracingMiddlewa
122
122
  export { ServiceAuthMiddleware } from './microservices/ServiceAuthMiddleware.js';
123
123
  export { HealthCheckHandler, ServiceHealthMonitor } from './microservices/ServiceHealthMonitor.js';
124
124
  export { getServiceId, isCanonicalServiceId, normalizeServiceManifest, } from './microservices/ServiceManifest.js';
125
- export { clearMiddlewareConfigCache, middlewareConfig, MiddlewareKeys } from './config/middleware.js';
125
+ export { MiddlewareKeys, clearMiddlewareConfigCache, middlewareConfig } from './config/middleware.js';
126
126
  export { createBaseDrivers, queueConfig } from './config/queue.js';
127
127
  export { default as broadcastConfig, clearBroadcastConfigCache } from './config/broadcast.js';
128
128
  export { default as notificationConfig } from './config/notification.js';
@@ -133,7 +133,7 @@ export { startupConfig } from './config/startup.js';
133
133
  export { Constants, DEFAULTS, ENV_KEYS, HTTP_HEADERS, MIME_TYPES } from './config/constants.js';
134
134
  export { FeatureFlags } from './config/features.js';
135
135
  export { Cloudflare } from './config/cloudflare.js';
136
- export { getDatabaseCredentials, getJwtSecrets, SECRETS, SecretsManager, } from './config/SecretsManager.js';
136
+ export { SECRETS, SecretsManager, getDatabaseCredentials, getJwtSecrets, } from './config/SecretsManager.js';
137
137
  // Config (validation)
138
138
  export { StartupConfigValidator } from './config/StartupConfigValidator.js';
139
139
  export { Mail } from './tools/mail/index.js';
@@ -220,7 +220,7 @@ export { ZintrustLang } from './lang/lang.js';
220
220
  // Workers config
221
221
  export { createRedisConnection, workersConfig } from './config/workers.js';
222
222
  // Redis config key - Singleton exports
223
- export { createRedisKey, extractOriginalKey, getBullMQSafeQueueName, getPrefix, isAppKey, RedisKeys, } from './tools/redis/RedisKeyManager.js';
223
+ export { RedisKeys, createRedisKey, extractOriginalKey, getBullMQSafeQueueName, getPrefix, isAppKey, } from './tools/redis/RedisKeyManager.js';
224
224
  export { CloudflareSocket } from './sockets/CloudflareSocket.js';
225
225
  export { SocketFeature } from './sockets/SocketRuntime.js';
226
226
  export { SocketRuntimeRegistry } from './sockets/SocketRuntimeRegistry.js';
@@ -1 +1 @@
1
- {"version":3,"file":"RedisProxyServer.d.ts","sourceRoot":"","sources":["../../../../src/proxy/redis/RedisProxyServer.ts"],"names":[],"mappings":"AAQA,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AAiBjC,KAAK,cAAc,GAAG,kBAAkB,GACtC,OAAO,CAAC;IACN,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AA2NL,eAAO,MAAM,gBAAgB;sBACJ,cAAc,GAAQ,OAAO,CAAC,IAAI,CAAC;EAqB1D,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"RedisProxyServer.d.ts","sourceRoot":"","sources":["../../../../src/proxy/redis/RedisProxyServer.ts"],"names":[],"mappings":"AAQA,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AAiBjC,KAAK,cAAc,GAAG,kBAAkB,GACtC,OAAO,CAAC;IACN,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAwSL,eAAO,MAAM,gBAAgB;sBACJ,cAAc,GAAQ,OAAO,CAAC,IAAI,CAAC;EAqB1D,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
@@ -6,6 +6,48 @@ import { ErrorHandler } from '../ErrorHandler.js';
6
6
  import { createProxyServer } from '../ProxyServer.js';
7
7
  import { resolveBaseConfig, resolveBaseSigningConfig, verifyRequestSignature, } from '../ProxyServerUtils.js';
8
8
  import { RequestValidator } from '../RequestValidator.js';
9
+ // Module-level script cache for persistent storage across requests
10
+ const scriptCache = new Map(); // script SHA -> script content
11
+ let scriptCacheClient = null;
12
+ const getScriptCacheClient = async (config) => {
13
+ if (scriptCacheClient !== null && scriptCacheClient.status === 'ready') {
14
+ return scriptCacheClient;
15
+ }
16
+ const module = (await getRedisModule());
17
+ const moduleDefault = module['default'];
18
+ const candidates = [
19
+ module['Redis'],
20
+ module['default'],
21
+ moduleDefault?.['Redis'],
22
+ moduleDefault?.['default'],
23
+ module,
24
+ ];
25
+ const RedisCtor = candidates.find((candidate) => typeof candidate === 'function');
26
+ if (typeof RedisCtor !== 'function') {
27
+ throw ErrorFactory.createConfigError("Redis proxy could not resolve a Redis constructor from 'ioredis'.");
28
+ }
29
+ scriptCacheClient = new RedisCtor({
30
+ host: config.redis.host,
31
+ port: config.redis.port,
32
+ password: config.redis.password,
33
+ db: config.redis.db,
34
+ maxRetriesPerRequest: 3,
35
+ enableOfflineQueue: true,
36
+ lazyConnect: false,
37
+ retryStrategy: (times) => {
38
+ if (times > 3)
39
+ return null;
40
+ return Math.min(times * 100, 1000);
41
+ },
42
+ });
43
+ if (typeof scriptCacheClient.connect === 'function') {
44
+ await scriptCacheClient.connect();
45
+ }
46
+ scriptCacheClient.on('error', (error) => {
47
+ Logger.warn('[RedisProxyServer] script cache client error', error);
48
+ });
49
+ return scriptCacheClient;
50
+ };
9
51
  const resolveRedisConfig = (overrides = {}) => {
10
52
  const host = overrides.redisHost ?? Env.get('REDIS_PROXY_TARGET_HOST', Env.get('REDIS_HOST', '127.0.0.1'));
11
53
  const port = overrides.redisPort ?? Env.getInt('REDIS_PROXY_TARGET_PORT', Env.getInt('REDIS_PORT', 6379));
@@ -90,9 +132,30 @@ const createClient = async (config) => {
90
132
  }
91
133
  return client;
92
134
  };
93
- const executeCommand = async (client, command, args) => {
135
+ const executeCommand = async (client, command, args, config) => {
94
136
  const trimmed = command.trim();
95
137
  const lower = trimmed.toLowerCase();
138
+ // Handle SCRIPT LOAD - use persistent cache client
139
+ if (lower === 'script' && args.length > 0) {
140
+ const subCommand = String(args[0]).toLowerCase();
141
+ if (subCommand === 'load' && args.length > 1) {
142
+ const script = String(args[1]);
143
+ const cacheClient = await getScriptCacheClient(config);
144
+ const sha = await cacheClient.call('SCRIPT', 'LOAD', script);
145
+ if (typeof sha === 'string') {
146
+ scriptCache.set(sha, script);
147
+ Logger.debug('[RedisProxyServer] Script loaded into cache', { sha });
148
+ }
149
+ return sha;
150
+ }
151
+ }
152
+ // Handle EVALSHA - check cache first
153
+ if (lower === 'evalsha' && args.length > 0) {
154
+ const sha = String(args[0]);
155
+ if (scriptCache.has(sha)) {
156
+ Logger.debug('[RedisProxyServer] Using cached script for EVALSHA', { sha });
157
+ }
158
+ }
96
159
  const candidate = client[lower];
97
160
  if (typeof candidate === 'function') {
98
161
  return candidate.apply(client, args);
@@ -140,7 +203,7 @@ const createBackend = (config) => ({
140
203
  const client = await createClient(config);
141
204
  try {
142
205
  const startedAt = Date.now();
143
- const result = await executeCommand(client, command, validated.args ?? []);
206
+ const result = await executeCommand(client, command, validated.args ?? [], config);
144
207
  SystemTraceBridge.emitRedis(command, Date.now() - startedAt);
145
208
  return { status: 200, body: { result } };
146
209
  }
@@ -160,7 +223,7 @@ const createBackend = (config) => ({
160
223
  await pingFn.apply(client);
161
224
  }
162
225
  else {
163
- await executeCommand(client, 'PING', []);
226
+ await executeCommand(client, 'PING', [], config);
164
227
  }
165
228
  await client.quit();
166
229
  return { status: 200, body: { status: 'healthy' } };
@@ -5,4 +5,5 @@
5
5
  export { RedisKeys, createRedisKey, extractOriginalKey, getBullMQSafeQueueName, getPrefix, isAppKey, type RedisKeyType, } from './tools/redis/RedisKeyManager';
6
6
  export type { RedisConfig } from './config/type';
7
7
  export { createRedisConnection } from './config/workers';
8
+ export type { RedisTransportOptions } from './tools/redis/RedisTransport';
8
9
  //# sourceMappingURL=redis-index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redis-index.d.ts","sourceRoot":"","sources":["../../src/redis-index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,SAAS,EACT,QAAQ,EACR,KAAK,YAAY,GAClB,MAAM,8BAA8B,CAAC;AAGtC,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"redis-index.d.ts","sourceRoot":"","sources":["../../src/redis-index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,SAAS,EACT,QAAQ,EACR,KAAK,YAAY,GAClB,MAAM,8BAA8B,CAAC;AAGtC,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -3,20 +3,41 @@ export type RedisTransportMode = 'direct' | 'proxy';
3
3
  export type RedisTransportOptions = Readonly<{
4
4
  subsystem?: string;
5
5
  requireDirect?: boolean;
6
+ requireDirectForScripts?: boolean;
6
7
  }>;
7
8
  type RedisProxyConnection = {
8
9
  [x: string]: unknown;
10
+ __bullmq_iredis?: true;
11
+ isCluster?: false;
12
+ options?: Readonly<Record<string, unknown>>;
9
13
  status: 'ready';
10
14
  connect: () => Promise<void>;
11
15
  quit: () => Promise<'OK'>;
12
16
  disconnect: () => void;
17
+ duplicate: () => RedisProxyConnection;
18
+ defineCommand: (name: string, definition: {
19
+ numberOfKeys: number;
20
+ lua: string;
21
+ }) => void;
22
+ runCommand: (name: string, args: unknown[]) => Promise<unknown>;
13
23
  on: (event: string, handler: (...args: unknown[]) => void) => RedisProxyConnection;
14
24
  once: (event: string, handler: (...args: unknown[]) => void) => RedisProxyConnection;
15
25
  off: (event: string, handler: (...args: unknown[]) => void) => RedisProxyConnection;
16
26
  removeListener: (event: string, handler: (...args: unknown[]) => void) => RedisProxyConnection;
27
+ setMaxListeners: (count: number) => RedisProxyConnection;
28
+ getMaxListeners: () => number;
17
29
  call: (command: string, ...args: unknown[]) => Promise<unknown>;
30
+ scripts: {
31
+ [key: string]: (...args: unknown[]) => Promise<unknown>;
32
+ };
18
33
  pipeline: () => {
19
34
  exec: () => Promise<Array<[Error | null, unknown]>>;
35
+ runCommand?: (name: string, args: unknown[]) => unknown;
36
+ [key: string]: unknown;
37
+ };
38
+ multi: () => {
39
+ exec: () => Promise<Array<[Error | null, unknown]>>;
40
+ runCommand?: (name: string, args: unknown[]) => unknown;
20
41
  [key: string]: unknown;
21
42
  };
22
43
  scanStream: (options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"RedisTransport.d.ts","sourceRoot":"","sources":["../../../../src/tools/redis/RedisTransport.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAKhD,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEpD,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC,CAAC;AAUH,KAAK,oBAAoB,GAAG;IAC1B,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,oBAAoB,CAAC;IACnF,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,oBAAoB,CAAC;IACrF,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,oBAAoB,CAAC;IACpF,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,oBAAoB,CAAC;IAC/F,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChE,QAAQ,EAAE,MAAM;QACd,IAAI,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK;QAC5D,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,OAAO,CAAC;QACtE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,OAAO,CAAC;QACxE,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,OAAO,CAAC;KACxE,CAAC;CACH,CAAC;AAiRF,eAAO,MAAM,yBAAyB,QAAO,kBAI5C,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,QAAQ,WAAW,EACnB,UAAU,qBAAqB,KAC9B,oBAgDF,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,WAAW,EACnB,UAAU,qBAAqB,KAC9B,kBAaF,CAAC"}
1
+ {"version":3,"file":"RedisTransport.d.ts","sourceRoot":"","sources":["../../../../src/tools/redis/RedisTransport.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@ import { ErrorFactory } from '../../exceptions/ZintrustError.js';
4
4
  import { parseCustomHeadersFromEnv } from '../../orm/adapters/SqlProxyAdapterUtils.js';
5
5
  import { SignedRequest } from '../../security/SignedRequest.js';
6
6
  const loggedSelections = new Set();
7
+ // Module-level script storage for persistence across connections
8
+ const globalScripts = new Map();
7
9
  const readEnvString = (key, fallback = '') => {
8
10
  if (typeof Env.get === 'function') {
9
11
  return Env.get(key, fallback);
@@ -186,10 +188,14 @@ const createScanStream = (settings, options) => {
186
188
  });
187
189
  return stream;
188
190
  };
189
- const createPipeline = (settings) => {
191
+ const createPipeline = (settings, _runCommand) => {
190
192
  const commands = [];
191
193
  const target = {
192
194
  async exec() {
195
+ Logger.debug('[redis][proxy][pipeline] Executing pipeline', {
196
+ commandCount: commands.length,
197
+ commands: commands.map((c) => ({ command: c.command, argsCount: c.args.length })),
198
+ });
193
199
  const results = [];
194
200
  for (const entry of commands) {
195
201
  try {
@@ -208,6 +214,15 @@ const createPipeline = (settings) => {
208
214
  }
209
215
  return results;
210
216
  },
217
+ runCommand(name, args) {
218
+ Logger.debug('[redis][proxy][pipeline] runCommand called in pipeline', {
219
+ commandName: name,
220
+ argsCount: args.length,
221
+ hasRunCommandFunction: _runCommand !== undefined,
222
+ });
223
+ commands.push({ command: name, args });
224
+ return pipeline;
225
+ },
211
226
  };
212
227
  const pipeline = new Proxy(target, {
213
228
  get(obj, prop) {
@@ -215,6 +230,10 @@ const createPipeline = (settings) => {
215
230
  return Reflect.get(obj, prop);
216
231
  if (prop in obj)
217
232
  return Reflect.get(obj, prop);
233
+ Logger.debug('[redis][proxy][pipeline] Property access in pipeline', {
234
+ property: prop,
235
+ currentCommandCount: commands.length,
236
+ });
218
237
  return (...args) => {
219
238
  commands.push({ command: prop.toUpperCase(), args });
220
239
  return pipeline;
@@ -228,46 +247,187 @@ export const resolveRedisTransportMode = () => {
228
247
  ? 'proxy'
229
248
  : 'direct';
230
249
  };
231
- export const createRedisProxyConnection = (config, options) => {
232
- const settings = resolveProxySettings();
233
- logTransportSelection('proxy', config, options);
250
+ const logDefineCommandCall = (name, definition) => {
251
+ Logger.debug('[redis][proxy][bullmq] defineCommand called', {
252
+ commandName: name,
253
+ numberOfKeys: definition.numberOfKeys,
254
+ luaLength: definition.lua.length,
255
+ luaPreview: definition.lua.substring(0, 100) + '...',
256
+ });
257
+ };
258
+ const storeScript = (name, definition) => {
259
+ globalScripts.set(name, {
260
+ numberOfKeys: definition.numberOfKeys,
261
+ lua: definition.lua,
262
+ });
263
+ Logger.debug('[redis][proxy][bullmq] Script stored', {
264
+ commandName: name,
265
+ totalScripts: globalScripts.size,
266
+ allScriptNames: Array.from(globalScripts.keys()),
267
+ });
268
+ };
269
+ const executeScriptViaEval = async (settings, name, script, args) => {
270
+ Logger.debug('[redis][proxy][bullmq] Executing script via SCRIPT LOAD + EVALSHA', {
271
+ commandName: name,
272
+ numberOfKeys: script.numberOfKeys,
273
+ luaLength: script.lua.length,
274
+ args: args.slice(0, 3), // Log first 3 args to avoid huge logs
275
+ });
276
+ // Load script into Redis cache
277
+ const sha = await requestProxyCommand(settings, 'SCRIPT', ['LOAD', script.lua]);
278
+ // Execute using SHA for performance
279
+ if (typeof sha === 'string') {
280
+ return requestProxyCommand(settings, 'EVALSHA', [sha, script.numberOfKeys, ...args]);
281
+ }
282
+ // Fallback to EVAL if SCRIPT LOAD fails
283
+ Logger.warn('[redis][proxy][bullmq] SCRIPT LOAD failed, falling back to EVAL', {
284
+ commandName: name,
285
+ });
286
+ return requestProxyCommand(settings, 'EVAL', [script.lua, script.numberOfKeys, ...args]);
287
+ };
288
+ const createCommandFunction = (settings, prop) => {
289
+ return async (...args) => {
290
+ Logger.debug('[redis][proxy][trap] Executing unknown property as command', {
291
+ property: prop,
292
+ argsCount: args.length,
293
+ args: args.slice(0, 3),
294
+ });
295
+ return requestProxyCommand(settings, typeof prop === 'string' ? prop.toUpperCase() : String(prop), args);
296
+ };
297
+ };
298
+ const handlePropertyAccess = (obj, prop, scripts, client, settings) => {
299
+ if (typeof prop !== 'string')
300
+ return Reflect.get(obj, prop);
301
+ if (prop === 'then')
302
+ return undefined;
303
+ if (prop === 'setMaxListeners') {
304
+ return function (_count) {
305
+ return client;
306
+ };
307
+ }
308
+ if (prop === 'getMaxListeners') {
309
+ return function () {
310
+ return Infinity;
311
+ };
312
+ }
313
+ if (prop in obj) {
314
+ Logger.debug('[redis][proxy][trap] Property access on target object', {
315
+ property: prop,
316
+ hasScript: scripts.has(prop),
317
+ });
318
+ return Reflect.get(obj, prop);
319
+ }
320
+ // Log when BullMQ accesses unknown properties (potential versioned commands)
321
+ Logger.debug('[redis][proxy][trap] Unknown property access - potential BullMQ command', {
322
+ property: prop,
323
+ propertyType: typeof prop,
324
+ hasScript: typeof prop === 'string' ? scripts.has(prop) : false,
325
+ availableScripts: Array.from(scripts.keys()),
326
+ isVersionedCommand: typeof prop === 'string' ? prop.includes(':') : false,
327
+ });
328
+ if (typeof prop !== 'string') {
329
+ return Reflect.get(obj, prop);
330
+ }
331
+ return createCommandFunction(settings, prop);
332
+ };
333
+ const createScriptsHandler = (scripts, settings) => {
334
+ return new Proxy({}, {
335
+ get(_target, prop) {
336
+ return async (...args) => {
337
+ const scriptName = String(prop);
338
+ Logger.debug('[redis][proxy][scripts] Script method called', {
339
+ scriptName,
340
+ argsCount: args.length,
341
+ isVersioned: scriptName.includes(':'),
342
+ });
343
+ // Strip version suffix (e.g., moveToActive:5.77.6 -> moveToActive)
344
+ const baseScriptName = scriptName.includes(':') ? scriptName.split(':')[0] : scriptName;
345
+ const script = scripts.get(baseScriptName);
346
+ if (script === undefined) {
347
+ Logger.warn('[redis][proxy][scripts] Script not found, falling back to direct proxy call', {
348
+ scriptName,
349
+ baseScriptName,
350
+ availableScripts: Array.from(scripts.keys()),
351
+ });
352
+ return requestProxyCommand(settings, scriptName, args);
353
+ }
354
+ return executeScriptViaEval(settings, scriptName, script, args);
355
+ };
356
+ },
357
+ });
358
+ };
359
+ const createProxyTarget = (config, options, scripts, runDefinedCommand, settings, client) => {
234
360
  const target = {
361
+ __bullmq_iredis: true,
362
+ isCluster: false,
363
+ options: Object.freeze({}),
235
364
  status: 'ready',
236
365
  connect: async () => { },
237
366
  // eslint-disable-next-line @typescript-eslint/require-await
238
367
  quit: async () => 'OK',
239
368
  disconnect: () => undefined,
240
- on: (_event, _handler) => client,
241
- once: (_event, _handler) => client,
242
- off: (_event, _handler) => client,
243
- removeListener: (_event, _handler) => client,
244
- setMaxListeners: (_count) => client,
369
+ duplicate: () => createRedisProxyConnection(config, options),
370
+ defineCommand: (name, definition) => {
371
+ logDefineCommandCall(name, definition);
372
+ storeScript(name, definition);
373
+ },
374
+ runCommand: async (name, args) => runDefinedCommand(name, args),
375
+ on: (_event, _handler) => client ?? target,
376
+ once: (_event, _handler) => client ?? target,
377
+ off: (_event, _handler) => client ?? target,
378
+ removeListener: (_event, _handler) => client ?? target,
379
+ setMaxListeners: (_count) => client ?? target,
245
380
  getMaxListeners: () => Infinity,
246
381
  call: async (command, ...args) => {
382
+ Logger.debug('[redis][proxy][call] Direct call method invoked', {
383
+ command,
384
+ argsCount: args.length,
385
+ hasScript: scripts.has(command),
386
+ isVersionedCommand: command.includes(':'),
387
+ args: args.slice(0, 3),
388
+ });
247
389
  return requestProxyCommand(settings, command, args);
248
390
  },
249
- pipeline: () => createPipeline(settings),
391
+ scripts: createScriptsHandler(scripts, settings),
392
+ pipeline: () => createPipeline(settings, runDefinedCommand),
393
+ multi: () => createPipeline(settings, runDefinedCommand),
250
394
  scanStream: (scanOptions) => createScanStream(settings, scanOptions),
251
395
  };
252
- const client = new Proxy(target, {
396
+ return target;
397
+ };
398
+ export const createRedisProxyConnection = (config, options) => {
399
+ const settings = resolveProxySettings();
400
+ const runDefinedCommand = async (name, args) => {
401
+ Logger.debug('[redis][proxy][bullmq] runDefinedCommand called', {
402
+ commandName: name,
403
+ argsCount: args.length,
404
+ hasScript: globalScripts.has(name),
405
+ scriptKeys: Array.from(globalScripts.keys()),
406
+ });
407
+ const script = globalScripts.get(name);
408
+ if (script === undefined) {
409
+ Logger.warn('[redis][proxy][bullmq] Script not found, falling back to direct proxy call', {
410
+ commandName: name,
411
+ availableScripts: Array.from(globalScripts.keys()),
412
+ });
413
+ return requestProxyCommand(settings, name, args);
414
+ }
415
+ return executeScriptViaEval(settings, name, script, args);
416
+ };
417
+ logTransportSelection('proxy', config, options);
418
+ Logger.info('[redis][proxy][bullmq] Creating BullMQ-compatible proxy connection', {
419
+ hasBullMQFlag: true,
420
+ hasIsClusterFlag: true,
421
+ hasOptionsFlag: true,
422
+ hasDuplicateMethod: true,
423
+ hasDefineCommandMethod: true,
424
+ hasRunCommandMethod: true,
425
+ hasMultiMethod: true,
426
+ });
427
+ const proxyTarget = createProxyTarget(config, options, globalScripts, runDefinedCommand, settings, null);
428
+ const client = new Proxy(proxyTarget, {
253
429
  get(obj, prop) {
254
- if (typeof prop !== 'string')
255
- return Reflect.get(obj, prop);
256
- if (prop === 'then')
257
- return undefined;
258
- if (prop === 'setMaxListeners') {
259
- return function (_count) {
260
- return client;
261
- };
262
- }
263
- if (prop === 'getMaxListeners') {
264
- return function () {
265
- return Infinity;
266
- };
267
- }
268
- if (prop in obj)
269
- return Reflect.get(obj, prop);
270
- return async (...args) => requestProxyCommand(settings, prop.toUpperCase(), args);
430
+ return handlePropertyAccess(obj, prop, globalScripts, client, settings);
271
431
  },
272
432
  });
273
433
  return client;
@@ -277,6 +437,15 @@ export const ensureRedisTransportMode = (config, options) => {
277
437
  if (mode === 'proxy' && options?.requireDirect === true) {
278
438
  throw ErrorFactory.createConfigError(`Redis subsystem '${options.subsystem ?? 'redis'}' requires a direct Redis connection, but proxy mode is enabled.`);
279
439
  }
440
+ // If requireDirectForScripts is set (option or env), force direct mode for script operations
441
+ const requireDirectForScripts = options?.requireDirectForScripts ?? Env.REDIS_REQUIRE_DIRECT_FOR_SCRIPTS;
442
+ if (mode === 'proxy' && requireDirectForScripts === true) {
443
+ Logger.warn('[redis][transport] Forcing direct mode for scripts due to requireDirectForScripts', {
444
+ subsystem: options?.subsystem ?? 'redis',
445
+ source: options?.requireDirectForScripts === true ? 'option' : 'env',
446
+ });
447
+ return 'direct';
448
+ }
280
449
  if (mode === 'direct') {
281
450
  logTransportSelection(mode, config, options);
282
451
  }