@zintrust/core 2.8.7 → 2.9.1

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.8.7",
3
+ "version": "2.9.1",
4
4
  "description": "Production-grade TypeScript backend framework for JavaScript",
5
5
  "homepage": "https://zintrust.com",
6
6
  "repository": {
@@ -328,7 +328,7 @@ const createDirectRedisConnection = (config, maxRetries, options) => {
328
328
  export const createRedisConnection = (config, maxRetries = 3, options) => {
329
329
  const subsystem = options?.subsystem ?? '';
330
330
  const skipProxy = BULLMQ_SUBSYSTEMS.has(subsystem);
331
- const mode = skipProxy ? 'direct' : ensureRedisTransportMode(config, options);
331
+ const mode = skipProxy && subsystem !== 'queue-monitor' ? 'direct' : ensureRedisTransportMode(config, options);
332
332
  // In zedgi mode, allow proxy connection for queue-monitor since we have a Zedgi-native driver
333
333
  const allowProxyForZedgi = mode === 'zedgi' && subsystem === 'queue-monitor';
334
334
  if (mode === 'proxy' || mode === 'rpc' || mode === 'zedgi') {
package/src/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @zintrust/core v2.8.7
2
+ * @zintrust/core v2.9.1
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-07-01T08:12:40.260Z
8
+ * Built: 2026-07-08T17:47:02.976Z
9
9
  * Node: >=20.0.0
10
10
  * License: MIT
11
11
  *
@@ -21,7 +21,7 @@
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-07-01T08:12:40.225Z'; // Replaced during build
24
+ export const ZINTRUST_BUILD_DATE = '2026-07-08T17:47:02.938Z'; // 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';
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseRuntimeRegistration.d.ts","sourceRoot":"","sources":["../../../src/orm/DatabaseRuntimeRegistration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,mBAAmB,EAGpB,MAAM,cAAc,CAAC;AA6EtB;;;;;;;GAOG;AACH,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAsBpF"}
1
+ {"version":3,"file":"DatabaseRuntimeRegistration.d.ts","sourceRoot":"","sources":["../../../src/orm/DatabaseRuntimeRegistration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,mBAAmB,EAGpB,MAAM,cAAc,CAAC;AAmDtB;;;;;;;GAOG;AACH,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAsBpF"}
@@ -17,8 +17,10 @@ const toOrmConfig = (cfg) => {
17
17
  case 'd1-remote':
18
18
  return { driver: 'd1-remote' };
19
19
  case 'postgresql':
20
+ case 'mysql':
21
+ case 'sqlserver':
20
22
  return {
21
- driver: 'postgresql',
23
+ driver: cfg.driver,
22
24
  host: cfg.host,
23
25
  port: cfg.port,
24
26
  database: cfg.database,
@@ -28,43 +30,15 @@ const toOrmConfig = (cfg) => {
28
30
  };
29
31
  case 'postgres-zedgi':
30
32
  case 'pg-zedgi':
31
- return {
32
- driver: 'postgres-zedgi',
33
- database: cfg.database,
34
- username: cfg.username,
35
- password: cfg.password,
36
- ssl: cfg.ssl,
37
- ...(cfg.header === undefined ? {} : { header: cfg.header }),
38
- };
39
- case 'mysql':
40
- return {
41
- driver: 'mysql',
42
- host: cfg.host,
43
- port: cfg.port,
44
- database: cfg.database,
45
- username: cfg.username,
46
- password: cfg.password,
47
- readHosts: cfg.readHosts,
48
- };
49
33
  case 'mysql-zedgi':
50
34
  return {
51
- driver: 'mysql-zedgi',
35
+ driver: cfg.driver === 'pg-zedgi' ? 'postgres-zedgi' : cfg.driver,
52
36
  database: cfg.database,
53
37
  username: cfg.username,
54
38
  password: cfg.password,
55
39
  ssl: cfg.ssl,
56
40
  ...(cfg.header === undefined ? {} : { header: cfg.header }),
57
41
  };
58
- case 'sqlserver':
59
- return {
60
- driver: 'sqlserver',
61
- host: cfg.host,
62
- port: cfg.port,
63
- database: cfg.database,
64
- username: cfg.username,
65
- password: cfg.password,
66
- readHosts: cfg.readHosts,
67
- };
68
42
  default:
69
43
  // Exhaustive check (kept for future driver additions)
70
44
  return cfg;
@@ -1 +1 @@
1
- {"version":3,"file":"QueueRuntimeRegistration.d.ts","sourceRoot":"","sources":["../../../../src/tools/queue/QueueRuntimeRegistration.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAuJjD,wBAAsB,+BAA+B,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDxF"}
1
+ {"version":3,"file":"QueueRuntimeRegistration.d.ts","sourceRoot":"","sources":["../../../../src/tools/queue/QueueRuntimeRegistration.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AA8JjD,wBAAsB,+BAA+B,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDxF"}
@@ -30,13 +30,25 @@ const isDriverRegistered = (name) => {
30
30
  return false;
31
31
  }
32
32
  };
33
+ const getLocalPackageUrl = (pkgFolder) => {
34
+ try {
35
+ const cwd = typeof process !== 'undefined' && typeof process.cwd === 'function' ? process.cwd() : '';
36
+ if (cwd.trim() === '')
37
+ return null;
38
+ const localEntry = path.join(cwd, 'dist', 'packages', pkgFolder, 'src', 'index.js');
39
+ if (!existsSync(localEntry))
40
+ return null;
41
+ return pathToFileURL(localEntry).href;
42
+ }
43
+ catch {
44
+ return null;
45
+ }
46
+ };
33
47
  const registerRedisDriverIfAvailable = async () => {
34
48
  if (isDriverRegistered('redis')) {
35
49
  return true;
36
50
  }
37
- // Fall back to dynamic import only if not already registered
38
- try {
39
- const mod = (await import(/* @vite-ignore */ QUEUE_REDIS_PACKAGE));
51
+ const tryRegister = (mod) => {
40
52
  if (mod.RedisQueue !== undefined) {
41
53
  Queue.register('redis', mod.RedisQueue);
42
54
  return true;
@@ -45,27 +57,26 @@ const registerRedisDriverIfAvailable = async () => {
45
57
  Queue.register('redis', mod.BullMQRedisQueue);
46
58
  return true;
47
59
  }
60
+ return false;
61
+ };
62
+ // Fall back to dynamic import only if not already registered
63
+ try {
64
+ const mod = (await import(/* @vite-ignore */ QUEUE_REDIS_PACKAGE));
65
+ if (tryRegister(mod)) {
66
+ return true;
67
+ }
48
68
  }
49
69
  catch {
50
70
  // Fall back to local dist build output when running inside the core repo Docker image.
51
71
  // In that environment, `@zintrust/queue-redis` is not installed in node_modules,
52
72
  // but the compiled package is available at `dist/packages/queue-redis`.
53
73
  try {
54
- const cwd = typeof process !== 'undefined' && typeof process.cwd === 'function' ? process.cwd() : '';
55
- if (cwd.trim() === '')
56
- return false;
57
- const localEntry = path.join(cwd, 'dist', 'packages', 'queue-redis', 'src', 'index.js');
58
- if (!existsSync(localEntry))
59
- return false;
60
- const url = pathToFileURL(localEntry).href;
61
- const localMod = (await import(url));
62
- if (localMod.RedisQueue !== undefined) {
63
- Queue.register('redis', localMod.RedisQueue);
64
- return true;
65
- }
66
- if (localMod.BullMQRedisQueue !== undefined) {
67
- Queue.register('redis', localMod.BullMQRedisQueue);
68
- return true;
74
+ const url = getLocalPackageUrl('queue-redis');
75
+ if (url !== null) {
76
+ const localMod = (await import(url));
77
+ if (tryRegister(localMod)) {
78
+ return true;
79
+ }
69
80
  }
70
81
  }
71
82
  catch {
@@ -79,27 +90,28 @@ const registerZedgiQueueDriverIfAvailable = async (config) => {
79
90
  if (isDriverRegistered('queue-zedgi')) {
80
91
  return true;
81
92
  }
93
+ const tryRegister = (mod) => {
94
+ if (mod.ZedgiQueueDriver !== undefined) {
95
+ Queue.register('queue-zedgi', mod.ZedgiQueueDriver.create(config.drivers['queue-zedgi']));
96
+ return true;
97
+ }
98
+ return false;
99
+ };
82
100
  // Fall back to dynamic import only if not already registered
83
101
  try {
84
102
  const mod = (await import(/* @vite-ignore */ ZEDGI_PACKAGE));
85
- if (mod.ZedgiQueueDriver !== undefined) {
86
- Queue.register('queue-zedgi', mod.ZedgiQueueDriver.create(config.drivers['queue-zedgi']));
103
+ if (tryRegister(mod)) {
87
104
  return true;
88
105
  }
89
106
  }
90
107
  catch {
91
108
  try {
92
- const cwd = typeof process !== 'undefined' && typeof process.cwd === 'function' ? process.cwd() : '';
93
- if (cwd.trim() === '')
94
- return false;
95
- const localEntry = path.join(cwd, 'dist', 'packages', 'zedgi', 'src', 'index.js');
96
- if (!existsSync(localEntry))
97
- return false;
98
- const url = pathToFileURL(localEntry).href;
99
- const localMod = (await import(url));
100
- if (localMod.ZedgiQueueDriver !== undefined) {
101
- Queue.register('queue-zedgi', localMod.ZedgiQueueDriver.create(config.drivers['queue-zedgi']));
102
- return true;
109
+ const url = getLocalPackageUrl('zedgi');
110
+ if (url !== null) {
111
+ const localMod = (await import(url));
112
+ if (tryRegister(localMod)) {
113
+ return true;
114
+ }
103
115
  }
104
116
  }
105
117
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"RedisTransport.d.ts","sourceRoot":"","sources":["../../../../src/tools/redis/RedisTransport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RedisTransport.d.ts","sourceRoot":"","sources":["../../../../src/tools/redis/RedisTransport.ts"],"names":[],"mappings":"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"}
@@ -358,16 +358,6 @@ export const createRedisProxyConnection = (config, options) => {
358
358
  return Reflect.get(obj, prop);
359
359
  if (prop === 'then')
360
360
  return undefined;
361
- if (prop === 'setMaxListeners') {
362
- return function (_count) {
363
- return client;
364
- };
365
- }
366
- if (prop === 'getMaxListeners') {
367
- return function () {
368
- return Infinity;
369
- };
370
- }
371
361
  if (prop in obj)
372
362
  return Reflect.get(obj, prop);
373
363
  return async (...args) => requestRedisCommand(mode, settings, prop.toUpperCase(), args);
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-client.d.ts","sourceRoot":"","sources":["../../../src/worker-runtime/rpc-client.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAOF,eAAO,MAAM,oBAAoB,QAAO,OAAkC,CAAC;AA6B3E,wFAAwF;AACxF,eAAO,MAAM,OAAO,GAClB,WAAW,MAAM,EACjB,qBAAqB,MAAM,KAC1B,OAAO,CAAC,SAAS,GAAG,SAAS,CAM/B,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,MAAM,GACjB,WAAW,MAAM,EACjB,OAAO,MAAM,EACb,cAAc,OAAO,KACpB,OAAO,CAAC,IAAI,CAEd,CAAC;AAEF,gCAAgC;AAChC,eAAO,MAAM,OAAO,GAAU,WAAW,MAAM,EAAE,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAM5F,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,gBAAgB,EAAE,CAG9D,CAAC"}
1
+ {"version":3,"file":"rpc-client.d.ts","sourceRoot":"","sources":["../../../src/worker-runtime/rpc-client.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAOF,eAAO,MAAM,oBAAoB,QAAO,OAAkC,CAAC;AAiD3E,wFAAwF;AACxF,eAAO,MAAM,OAAO,GAClB,WAAW,MAAM,EACjB,qBAAqB,MAAM,KAC1B,OAAO,CAAC,SAAS,GAAG,SAAS,CAU/B,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,MAAM,GACjB,WAAW,MAAM,EACjB,OAAO,MAAM,EACb,cAAc,OAAO,KACpB,OAAO,CAAC,IAAI,CAEd,CAAC;AAEF,gCAAgC;AAChC,eAAO,MAAM,OAAO,GAAU,WAAW,MAAM,EAAE,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAM5F,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,gBAAgB,EAAE,CAG9D,CAAC"}
@@ -11,6 +11,26 @@ import { ErrorFactory } from '../exceptions/ZintrustError.js';
11
11
  const getBaseUrl = () => Env.get('REDIS_RPC_URL', '').trim();
12
12
  const getSecret = () => Env.get('REDIS_RPC_SECRET', Env.get('REDIS_PROXY_SECRET', Env.get('APP_KEY', ''))).trim();
13
13
  export const isRedisRpcConfigured = () => getBaseUrl().length > 0;
14
+ /**
15
+ * Resolve the target Redis database index from env
16
+ * (REDIS_QUEUE_DB → REDIS_DB → undefined).
17
+ * Returns undefined when no explicit DB is configured,
18
+ * which means the RPC backend uses its own server default.
19
+ */
20
+ const getQueueDb = () => {
21
+ const queueDb = Env.getInt('REDIS_QUEUE_DB', -1);
22
+ if (queueDb >= 0)
23
+ return queueDb;
24
+ const redisDb = Env.getInt('REDIS_DB', -1);
25
+ if (redisDb >= 0)
26
+ return redisDb;
27
+ return undefined;
28
+ };
29
+ /** Merge target DB into any queue RPC payload when configured. */
30
+ const queuePayload = (extra) => {
31
+ const db = getQueueDb();
32
+ return db === undefined ? extra : { db, ...extra };
33
+ };
14
34
  const call = async (service, method, payload = {}) => {
15
35
  const baseUrl = getBaseUrl();
16
36
  if (baseUrl.length === 0) {
@@ -33,20 +53,20 @@ const call = async (service, method, payload = {}) => {
33
53
  };
34
54
  /** Atomically claim and pull the next waiting job for a queue, or undefined if none. */
35
55
  export const pullJob = async (queueName, visibilityTimeoutMs) => {
36
- const result = await call('queue', 'dequeue', {
56
+ const result = await call('queue', 'dequeue', queuePayload({
37
57
  queueName,
38
58
  visibilityTimeoutMs,
39
- });
59
+ }));
40
60
  return result ?? undefined;
41
61
  };
42
62
  /** Mark a pulled job completed. */
43
63
  export const ackJob = async (queueName, jobId, returnValue) => {
44
- await call('queue', 'ack', { queueName, jobId, returnValue });
64
+ await call('queue', 'ack', queuePayload({ queueName, jobId, returnValue }));
45
65
  };
46
66
  /** Mark a pulled job failed. */
47
67
  export const failJob = async (queueName, jobId, reason) => {
48
68
  try {
49
- await call('queue', 'fail', { queueName, jobId, reason });
69
+ await call('queue', 'fail', queuePayload({ queueName, jobId, reason }));
50
70
  }
51
71
  catch (error) {
52
72
  Logger.warn('[worker-runtime] failJob RPC failed', { queueName, jobId, error });