@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 +1 -1
- package/src/config/workers.js +1 -1
- package/src/index.js +3 -3
- package/src/orm/DatabaseRuntimeRegistration.d.ts.map +1 -1
- package/src/orm/DatabaseRuntimeRegistration.js +4 -30
- package/src/tools/queue/QueueRuntimeRegistration.d.ts.map +1 -1
- package/src/tools/queue/QueueRuntimeRegistration.js +43 -31
- package/src/tools/redis/RedisTransport.d.ts.map +1 -1
- package/src/tools/redis/RedisTransport.js +0 -10
- package/src/worker-runtime/rpc-client.d.ts.map +1 -1
- package/src/worker-runtime/rpc-client.js +24 -4
package/package.json
CHANGED
package/src/config/workers.js
CHANGED
|
@@ -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.
|
|
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-
|
|
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-
|
|
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;
|
|
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:
|
|
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: '
|
|
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;
|
|
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
|
-
|
|
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
|
|
55
|
-
if (
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
|
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
|
|
93
|
-
if (
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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;
|
|
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 });
|