@zintrust/core 2.4.9 → 2.5.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/features.d.ts +8 -0
- package/src/config/features.d.ts.map +1 -1
- package/src/config/features.js +15 -0
- package/src/config/index.d.ts +1 -0
- package/src/config/index.d.ts.map +1 -1
- package/src/config/index.js +1 -0
- package/src/index.js +3 -3
- package/src/observability/PrometheusMetrics.js +1 -1
- package/src/runtime/adapters/CloudflareAdapter.d.ts.map +1 -1
- package/src/runtime/adapters/CloudflareAdapter.js +6 -1
- package/src/templates/adapters/MySQLAdapter.ts.tpl +8 -4
- package/src/templates/adapters/PostgreSQLAdapter.ts.tpl +2 -2
- package/src/templates/adapters/SQLServerAdapter.ts.tpl +8 -4
- package/src/templates/adapters/SQLiteAdapter.ts.tpl +46 -11
- package/src/templates/auth/Auth.ts.tpl +7 -5
- package/src/tools/broadcast/Broadcast.d.ts.map +1 -1
- package/src/tools/broadcast/Broadcast.js +11 -4
- package/src/tools/queue/Queue.d.ts +8 -2
- package/src/tools/queue/Queue.d.ts.map +1 -1
- package/src/worker-runtime/ping.d.ts.map +1 -1
- package/src/worker-runtime/ping.js +4 -2
package/package.json
CHANGED
package/src/config/features.d.ts
CHANGED
|
@@ -24,6 +24,10 @@ export declare const FeatureFlags: Readonly<{
|
|
|
24
24
|
* does not specify one.
|
|
25
25
|
*/
|
|
26
26
|
getD1ReadDefaultConstraint(): D1ReadConstraint;
|
|
27
|
+
/**
|
|
28
|
+
* Whether worker details should attempt a live in-process health lookup.
|
|
29
|
+
*/
|
|
30
|
+
isWorkerDetailsLiveHealthEnabled(): boolean;
|
|
27
31
|
/**
|
|
28
32
|
* Reset flags (primarily for testing)
|
|
29
33
|
*/
|
|
@@ -41,6 +45,10 @@ export declare const FeatureFlags: Readonly<{
|
|
|
41
45
|
* Set the default D1 read constraint (primarily for testing).
|
|
42
46
|
*/
|
|
43
47
|
setD1ReadDefaultConstraint(constraint: D1ReadConstraint): void;
|
|
48
|
+
/**
|
|
49
|
+
* Set worker-details live health enabled state (primarily for testing).
|
|
50
|
+
*/
|
|
51
|
+
setWorkerDetailsLiveHealthEnabled(enabled: boolean): void;
|
|
44
52
|
}>;
|
|
45
53
|
export default FeatureFlags;
|
|
46
54
|
//# sourceMappingURL=features.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../../src/config/features.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../../src/config/features.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAkB7D;;;GAGG;AACH,eAAO,MAAM,YAAY;IACvB;;;OAGG;kBACW,IAAI;IA0BlB;;;OAGG;yBACkB,OAAO;IAI5B;;;OAGG;kCAC2B,OAAO;IAIrC;;;OAGG;kCAC2B,gBAAgB;IAI9C;;OAEG;wCACiC,OAAO;IAI3C;;OAEG;aACM,IAAI;IAOb;;;OAGG;gCACyB,OAAO,GAAG,IAAI;IAI1C;;OAEG;yCACkC,OAAO,GAAG,IAAI;IAInD;;OAEG;2CACoC,gBAAgB,GAAG,IAAI;IAI9D;;OAEG;+CACwC,OAAO,GAAG,IAAI;EAGzD,CAAC;AAEH,eAAe,YAAY,CAAC"}
|
package/src/config/features.js
CHANGED
|
@@ -8,6 +8,7 @@ let _rawQueryEnabled = false;
|
|
|
8
8
|
const D1_READ_DEFAULT_CONSTRAINT = 'first-unconstrained';
|
|
9
9
|
let _d1ReadReplicationEnabled = false;
|
|
10
10
|
let _d1ReadDefaultConstraint = D1_READ_DEFAULT_CONSTRAINT;
|
|
11
|
+
let _workerDetailsLiveHealthEnabled = true;
|
|
11
12
|
const normalizeReadConstraint = (raw) => {
|
|
12
13
|
const value = raw.trim().toLowerCase();
|
|
13
14
|
return value === 'first-primary' ? 'first-primary' : 'first-unconstrained';
|
|
@@ -25,6 +26,7 @@ export const FeatureFlags = Object.freeze({
|
|
|
25
26
|
_rawQueryEnabled = Env.get('USE_RAW_QRY') === 'true';
|
|
26
27
|
_d1ReadReplicationEnabled = Env.getBool('D1_READ_REPLICATION', false);
|
|
27
28
|
_d1ReadDefaultConstraint = normalizeReadConstraint(Env.get('D1_READ_DEFAULT_CONSTRAINT', D1_READ_DEFAULT_CONSTRAINT));
|
|
29
|
+
_workerDetailsLiveHealthEnabled = Env.getBool('WORKER_DETAILS_LIVE_HEALTH_ENABLED', true);
|
|
28
30
|
if (_d1ReadReplicationEnabled) {
|
|
29
31
|
Logger.info(`✓ D1 read replication ENABLED (default constraint: ${_d1ReadDefaultConstraint})`);
|
|
30
32
|
}
|
|
@@ -58,6 +60,12 @@ export const FeatureFlags = Object.freeze({
|
|
|
58
60
|
getD1ReadDefaultConstraint() {
|
|
59
61
|
return _d1ReadDefaultConstraint;
|
|
60
62
|
},
|
|
63
|
+
/**
|
|
64
|
+
* Whether worker details should attempt a live in-process health lookup.
|
|
65
|
+
*/
|
|
66
|
+
isWorkerDetailsLiveHealthEnabled() {
|
|
67
|
+
return _workerDetailsLiveHealthEnabled;
|
|
68
|
+
},
|
|
61
69
|
/**
|
|
62
70
|
* Reset flags (primarily for testing)
|
|
63
71
|
*/
|
|
@@ -65,6 +73,7 @@ export const FeatureFlags = Object.freeze({
|
|
|
65
73
|
_rawQueryEnabled = false;
|
|
66
74
|
_d1ReadReplicationEnabled = false;
|
|
67
75
|
_d1ReadDefaultConstraint = D1_READ_DEFAULT_CONSTRAINT;
|
|
76
|
+
_workerDetailsLiveHealthEnabled = true;
|
|
68
77
|
},
|
|
69
78
|
/**
|
|
70
79
|
* Set raw query enabled state
|
|
@@ -85,5 +94,11 @@ export const FeatureFlags = Object.freeze({
|
|
|
85
94
|
setD1ReadDefaultConstraint(constraint) {
|
|
86
95
|
_d1ReadDefaultConstraint = constraint;
|
|
87
96
|
},
|
|
97
|
+
/**
|
|
98
|
+
* Set worker-details live health enabled state (primarily for testing).
|
|
99
|
+
*/
|
|
100
|
+
setWorkerDetailsLiveHealthEnabled(enabled) {
|
|
101
|
+
_workerDetailsLiveHealthEnabled = enabled;
|
|
102
|
+
},
|
|
88
103
|
});
|
|
89
104
|
export default FeatureFlags;
|
package/src/config/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export { appConfig, type AppConfig } from './app';
|
|
|
6
6
|
export { default as broadcastConfig } from './broadcast';
|
|
7
7
|
export { cacheConfig, type CacheConfig } from './cache';
|
|
8
8
|
export { databaseConfig, type DatabaseConfig } from './database';
|
|
9
|
+
export { default as FeatureFlags } from './features';
|
|
9
10
|
export { microservicesConfig, type MicroservicesConfig } from './microservices';
|
|
10
11
|
export { middlewareConfig } from './middleware';
|
|
11
12
|
export { notificationConfig, type NotificationConfig } from './notification';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACpE,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACpE,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;8BAkCoY,CAAC;;;;;;;;;;;;;;;;;;;;iFAhDrX,CAAA;;;;;;;;;;;;;;;;;;;;8BAD2B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAiD4uF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;EAHjyF,CAAC;AAEZ,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC"}
|
package/src/config/index.js
CHANGED
|
@@ -16,6 +16,7 @@ export { appConfig } from './app.js';
|
|
|
16
16
|
export { default as broadcastConfig } from './broadcast.js';
|
|
17
17
|
export { cacheConfig } from './cache.js';
|
|
18
18
|
export { databaseConfig } from './database.js';
|
|
19
|
+
export { default as FeatureFlags } from './features.js';
|
|
19
20
|
export { microservicesConfig } from './microservices.js';
|
|
20
21
|
export { middlewareConfig } from './middleware.js';
|
|
21
22
|
export { notificationConfig } from './notification.js';
|
package/src/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @zintrust/core v2.
|
|
2
|
+
* @zintrust/core v2.5.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-06-
|
|
8
|
+
* Built: 2026-06-08T07:46:32.026Z
|
|
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-06-
|
|
24
|
+
export const ZINTRUST_BUILD_DATE = '2026-06-08T07:46:31.977Z'; // 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';
|
|
@@ -30,7 +30,7 @@ async function ensureState() {
|
|
|
30
30
|
try {
|
|
31
31
|
// Variable specifier so bundlers do not inline prom-client into the Workers bundle.
|
|
32
32
|
const promClientPkg = 'prom-client';
|
|
33
|
-
client = await import(promClientPkg);
|
|
33
|
+
client = (await import(promClientPkg));
|
|
34
34
|
}
|
|
35
35
|
catch {
|
|
36
36
|
// prom-client is intentionally optional at runtime.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CloudflareAdapter.d.ts","sourceRoot":"","sources":["../../../../src/runtime/adapters/CloudflareAdapter.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,aAAa,EAGb,cAAc,EACf,MAAM,yBAAyB,CAAC;AAIjC;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;OAEG;mBACY,aAAa,GAAG,cAAc;IA8D7C;;;OAGG;qBACc,OAAO;IAKxB;;;OAGG;qBACc,MAAM,GAAG,OAAO;EAIjC,CAAC;
|
|
1
|
+
{"version":3,"file":"CloudflareAdapter.d.ts","sourceRoot":"","sources":["../../../../src/runtime/adapters/CloudflareAdapter.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,aAAa,EAGb,cAAc,EACf,MAAM,yBAAyB,CAAC;AAIjC;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;OAEG;mBACY,aAAa,GAAG,cAAc;IA8D7C;;;OAGG;qBACc,OAAO;IAKxB;;;OAGG;qBACc,MAAM,GAAG,OAAO;EAIjC,CAAC;AA8KH;;;;GAIG;AACH,MAAM,WAAW,iBAAkB,SAAQ,OAAO;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACjC,EAAE,CAAC,EAAE;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH"}
|
|
@@ -172,8 +172,13 @@ function formatCloudflareResponse(response) {
|
|
|
172
172
|
headers.set(key, value);
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
|
+
// Null body status codes per Fetch spec
|
|
176
|
+
// These statuses must not have a body; Workers runtime warns if body is non-null
|
|
177
|
+
const NULL_BODY_STATUS_CODES = new Set([101, 204, 205, 304]);
|
|
175
178
|
let body = null;
|
|
176
|
-
if (
|
|
179
|
+
if (!NULL_BODY_STATUS_CODES.has(response.statusCode) &&
|
|
180
|
+
response.body !== null &&
|
|
181
|
+
response.body !== undefined) {
|
|
177
182
|
if (typeof response.body === 'string') {
|
|
178
183
|
body = response.body;
|
|
179
184
|
}
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
import { FeatureFlags } from '@zintrust/core';
|
|
7
7
|
import { Logger } from '@zintrust/core';
|
|
8
8
|
import { ErrorFactory } from '@zintrust/core';
|
|
9
|
-
import {
|
|
9
|
+
import { AdaptersEnum, type SupportedDriver } from '@migrations/enum';
|
|
10
|
+
import type { DatabaseConfig, IDatabaseAdapter, QueryResult } from '@zintrust/core';
|
|
10
11
|
import { QueryBuilder } from '@zintrust/core';
|
|
11
12
|
|
|
12
13
|
type AdapterState = {
|
|
@@ -24,7 +25,10 @@ function createRawQuery(state: AdapterState) {
|
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
try {
|
|
27
|
-
Logger.warn(
|
|
28
|
+
Logger.warn(
|
|
29
|
+
`Raw SQL Query executed: ${sql}`,
|
|
30
|
+
Logger.withTraceSkipContext({ sql, parameters })
|
|
31
|
+
);
|
|
28
32
|
// Mock implementation for tests
|
|
29
33
|
if (sql.includes('INVALID')) {
|
|
30
34
|
throw ErrorFactory.createDatabaseError('Invalid SQL syntax');
|
|
@@ -81,8 +85,8 @@ function createMySQLAdapterInstance(config: DatabaseConfig, state: AdapterState)
|
|
|
81
85
|
}
|
|
82
86
|
},
|
|
83
87
|
|
|
84
|
-
getType():
|
|
85
|
-
return
|
|
88
|
+
getType(): SupportedDriver {
|
|
89
|
+
return AdaptersEnum.mysql;
|
|
86
90
|
},
|
|
87
91
|
isConnected(): boolean {
|
|
88
92
|
return state.connected;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { FeatureFlags } from '@zintrust/core';
|
|
7
7
|
import { Logger } from '@zintrust/core';
|
|
8
8
|
import { ErrorFactory } from '@zintrust/core';
|
|
9
|
-
import { DatabaseConfig, IDatabaseAdapter, QueryResult } from '@zintrust/core';
|
|
9
|
+
import type { DatabaseConfig, IDatabaseAdapter, QueryResult } from '@zintrust/core';
|
|
10
10
|
import { QueryBuilder } from '@zintrust/core';
|
|
11
11
|
|
|
12
12
|
type AdapterState = {
|
|
@@ -83,7 +83,7 @@ async function pgRawQuery<T = unknown>(
|
|
|
83
83
|
|
|
84
84
|
assertConnected(state);
|
|
85
85
|
|
|
86
|
-
Logger.warn(`Raw SQL Query executed: ${sql}`, { parameters });
|
|
86
|
+
Logger.warn(`Raw SQL Query executed: ${sql}`, Logger.withTraceSkipContext({ sql, parameters }));
|
|
87
87
|
|
|
88
88
|
try {
|
|
89
89
|
if (sql.toUpperCase().includes('INVALID')) {
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
import { FeatureFlags } from '@zintrust/core';
|
|
7
7
|
import { Logger } from '@zintrust/core';
|
|
8
8
|
import { ErrorFactory } from '@zintrust/core';
|
|
9
|
-
import {
|
|
9
|
+
import { AdaptersEnum, type SupportedDriver } from '@migrations/enum';
|
|
10
|
+
import type { DatabaseConfig, IDatabaseAdapter, QueryResult } from '@zintrust/core';
|
|
10
11
|
import { QueryBuilder } from '@zintrust/core';
|
|
11
12
|
|
|
12
13
|
/**
|
|
@@ -59,8 +60,8 @@ export const SQLServerAdapter = Object.freeze({
|
|
|
59
60
|
}
|
|
60
61
|
},
|
|
61
62
|
|
|
62
|
-
getType():
|
|
63
|
-
return
|
|
63
|
+
getType(): SupportedDriver {
|
|
64
|
+
return AdaptersEnum.sqlserver;
|
|
64
65
|
},
|
|
65
66
|
isConnected(): boolean {
|
|
66
67
|
return connected;
|
|
@@ -76,7 +77,10 @@ export const SQLServerAdapter = Object.freeze({
|
|
|
76
77
|
throw ErrorFactory.createConnectionError('Database not connected');
|
|
77
78
|
}
|
|
78
79
|
|
|
79
|
-
Logger.warn(
|
|
80
|
+
Logger.warn(
|
|
81
|
+
`Raw SQL Query executed: ${sql}`,
|
|
82
|
+
Logger.withTraceSkipContext({ sql, parameters })
|
|
83
|
+
);
|
|
80
84
|
|
|
81
85
|
try {
|
|
82
86
|
if (sql.toUpperCase().includes('INVALID')) {
|
|
@@ -4,14 +4,19 @@
|
|
|
4
4
|
* Production Implementation
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import { databaseConfig } from '@config/database';
|
|
8
|
+
import { Env } from '@config/env';
|
|
7
9
|
import { FeatureFlags } from '@zintrust/core';
|
|
8
10
|
import { Logger } from '@zintrust/core';
|
|
9
11
|
import { ErrorFactory } from '@zintrust/core';
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
12
|
+
import { AdaptersEnum, type SupportedDriver } from '@migrations/enum';
|
|
13
|
+
import fs from 'node:fs';
|
|
14
|
+
import * as path from 'node:path';
|
|
15
|
+
import { performance } from 'node:perf_hooks';
|
|
16
|
+
import type { DatabaseConfig, IDatabaseAdapter, QueryResult } from '@zintrust/core';
|
|
12
17
|
import { QueryBuilder } from '@zintrust/core';
|
|
13
18
|
|
|
14
|
-
type SqliteRunInfo = { changes: number };
|
|
19
|
+
type SqliteRunInfo = { changes: number; lastInsertRowid: number | bigint };
|
|
15
20
|
type SqliteStatement = {
|
|
16
21
|
all: (params?: readonly unknown[]) => unknown[];
|
|
17
22
|
run: (params?: readonly unknown[]) => SqliteRunInfo;
|
|
@@ -80,11 +85,35 @@ async function importSqliteDatabaseConstructor(): Promise<
|
|
|
80
85
|
|
|
81
86
|
function normalizeFilename(database: string | null | undefined): string {
|
|
82
87
|
const value = (database ?? '').trim();
|
|
83
|
-
|
|
88
|
+
if (value.length === 0) return ':memory:';
|
|
89
|
+
if (value === ':memory:' || value.startsWith('/') || /^[A-Za-z]:[\\/]/.test(value)) {
|
|
90
|
+
return value;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const configuredProjectRoot = Env.ZINTRUST_PROJECT_ROOT.trim();
|
|
94
|
+
if (configuredProjectRoot !== '') return path.join(configuredProjectRoot, value);
|
|
95
|
+
|
|
96
|
+
return value;
|
|
84
97
|
}
|
|
85
98
|
|
|
86
99
|
function isSelectQuery(sql: string): boolean {
|
|
87
|
-
|
|
100
|
+
const normalized = sql.trimStart().toLowerCase();
|
|
101
|
+
return normalized.startsWith('select') || normalized.startsWith('pragma');
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const TRACE_STORAGE_TABLE_NAMES = [
|
|
105
|
+
'zin_trace_entries',
|
|
106
|
+
'zin_trace_entries_tags',
|
|
107
|
+
'zin_trace_monitoring',
|
|
108
|
+
];
|
|
109
|
+
|
|
110
|
+
function isTraceStorageQuery(sql: string): boolean {
|
|
111
|
+
const normalized = sql.toLowerCase();
|
|
112
|
+
return TRACE_STORAGE_TABLE_NAMES.some((tableName) => normalized.includes(tableName));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function shouldLogQuery(sql: string): boolean {
|
|
116
|
+
return databaseConfig.logging.enabled && !isTraceStorageQuery(sql);
|
|
88
117
|
}
|
|
89
118
|
|
|
90
119
|
function requireDb(db: SqliteDatabase | null): SqliteDatabase {
|
|
@@ -102,13 +131,17 @@ function executeQuery(
|
|
|
102
131
|
const stmt = db.prepare(sql);
|
|
103
132
|
if (isSelectQuery(sql)) {
|
|
104
133
|
const rows = stmt.all(parameters) as Record<string, unknown>[];
|
|
105
|
-
|
|
134
|
+
if (shouldLogQuery(sql)) {
|
|
135
|
+
Logger.debug('SQLite query executed', { durationMs: performance.now() - start, sql });
|
|
136
|
+
}
|
|
106
137
|
return { rows, rowCount: rows.length };
|
|
107
138
|
}
|
|
108
139
|
|
|
109
140
|
const info = stmt.run(parameters);
|
|
110
|
-
|
|
111
|
-
|
|
141
|
+
if (shouldLogQuery(sql)) {
|
|
142
|
+
Logger.debug('SQLite query executed', { durationMs: performance.now() - start, sql });
|
|
143
|
+
}
|
|
144
|
+
return { rows: [], rowCount: info.changes, lastInsertId: info.lastInsertRowid };
|
|
112
145
|
}
|
|
113
146
|
|
|
114
147
|
function executeRawQuery<T>(db: SqliteDatabase, sql: string, parameters: readonly unknown[]): T[] {
|
|
@@ -182,7 +215,9 @@ async function rawQuerySQLite<T>(
|
|
|
182
215
|
|
|
183
216
|
const currentDb = requireDb(state.db);
|
|
184
217
|
|
|
185
|
-
|
|
218
|
+
if (!isTraceStorageQuery(sql)) {
|
|
219
|
+
Logger.warn(`Raw SQL Query executed: ${sql}`, Logger.withTraceSkipContext({ sql }));
|
|
220
|
+
}
|
|
186
221
|
|
|
187
222
|
try {
|
|
188
223
|
return executeRawQuery<T>(currentDb, sql, parameters);
|
|
@@ -285,8 +320,8 @@ function createSQLiteAdapter(config: DatabaseConfig): IDatabaseAdapter {
|
|
|
285
320
|
await adapter.query('PRAGMA foreign_keys = ON', []);
|
|
286
321
|
},
|
|
287
322
|
|
|
288
|
-
getType():
|
|
289
|
-
return
|
|
323
|
+
getType(): SupportedDriver {
|
|
324
|
+
return AdaptersEnum.sqlite;
|
|
290
325
|
},
|
|
291
326
|
|
|
292
327
|
isConnected(): boolean {
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
// TEMPLATE_START
|
|
2
|
-
import
|
|
2
|
+
import bcrypt from 'bcryptjs';
|
|
3
3
|
import jwt, { type Secret, type SignOptions } from 'jsonwebtoken';
|
|
4
4
|
|
|
5
|
+
const { sign, verify } = jwt;
|
|
6
|
+
|
|
5
7
|
export const Auth = Object.freeze({
|
|
6
8
|
/**
|
|
7
9
|
* Hash a password
|
|
8
10
|
*/
|
|
9
11
|
async hash(password: string): Promise<string> {
|
|
10
|
-
const salt = await bcrypt.genSalt(10);
|
|
12
|
+
const salt: string = await bcrypt.genSalt(10);
|
|
11
13
|
return bcrypt.hash(password, salt);
|
|
12
14
|
},
|
|
13
15
|
|
|
@@ -27,14 +29,14 @@ export const Auth = Object.freeze({
|
|
|
27
29
|
expiresIn: NonNullable<SignOptions['expiresIn']> = '1h'
|
|
28
30
|
): string {
|
|
29
31
|
const options: SignOptions = { expiresIn };
|
|
30
|
-
return
|
|
32
|
+
return sign(payload, secret, options);
|
|
31
33
|
},
|
|
32
34
|
|
|
33
35
|
/**
|
|
34
36
|
* Verify a JWT token
|
|
35
37
|
*/
|
|
36
38
|
verifyToken<T>(token: string, secret: Secret): T {
|
|
37
|
-
return
|
|
39
|
+
return verify(token, secret) as T;
|
|
38
40
|
},
|
|
39
41
|
});
|
|
40
|
-
// TEMPLATE_END
|
|
42
|
+
// TEMPLATE_END
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Broadcast.d.ts","sourceRoot":"","sources":["../../../../src/tools/broadcast/Broadcast.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,KAAK,WAAW,GAAG,QAAQ,CAAC;IAC1B,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,OAAO,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAC5E,CAAC,CAAC;AAEH,KAAK,qBAAqB,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;AAC9E,KAAK,qBAAqB,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC1D,KAAK,kBAAkB,GAAG,eAAe,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAShE,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC,CAAC;AA0BH,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAC5C,EAAE,EAAE,IAAI,CAAC;IACT,SAAS,EAAE,kBAAkB,CAAC;IAC9B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC9B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Broadcast.d.ts","sourceRoot":"","sources":["../../../../src/tools/broadcast/Broadcast.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,KAAK,WAAW,GAAG,QAAQ,CAAC;IAC1B,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,OAAO,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAC5E,CAAC,CAAC;AAEH,KAAK,qBAAqB,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;AAC9E,KAAK,qBAAqB,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC1D,KAAK,kBAAkB,GAAG,eAAe,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAShE,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC,CAAC;AA0BH,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAC5C,EAAE,EAAE,IAAI,CAAC;IACT,SAAS,EAAE,kBAAkB,CAAC;IAC9B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC9B,CAAC,CAAC;AA4yBH,eAAO,MAAM,SAAS;mBACC,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;kBAIxD,MAAM,SAAS,MAAM,QAAQ,OAAO;0BAU5B,MAAM,SAAS,MAAM,QAAQ,OAAO;wBAKvD,qBAAqB,YACnB;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;4BAO1C,MAAM,SACR,MAAM,QACP,OAAO,YACJ;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;qBAKpC,MAAM;8BAES,qBAAqB;kCAEjB,MAAM,SAAS,MAAM,QAAQ,OAAO;;uBAKrD,MAAM,GAAG,WAAW;EAmBvC,CAAC;AAEH,eAAe,SAAS,CAAC"}
|
|
@@ -544,10 +544,17 @@ const publishInternal = async (input) => {
|
|
|
544
544
|
};
|
|
545
545
|
}
|
|
546
546
|
if (normalized.delivery === 'socket') {
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
547
|
+
// Socket delivery was forced but the socket transport is unavailable
|
|
548
|
+
// (e.g. worker-runtime env missing SOCKET_ENABLED / PUSHER_APP_KEY).
|
|
549
|
+
// Fall through to the configured driver instead of dropping the event,
|
|
550
|
+
// matching the recoverable-error handling that auto mode already implements.
|
|
551
|
+
const socketError = autoTransportResult.lastTransportError instanceof Error
|
|
552
|
+
? autoTransportResult.lastTransportError
|
|
553
|
+
: undefined;
|
|
554
|
+
logTransportFallback('socket', {
|
|
555
|
+
error: describeError(socketError),
|
|
556
|
+
attemptedTransports: autoTransportResult.attemptedTransports,
|
|
557
|
+
});
|
|
551
558
|
}
|
|
552
559
|
const attemptedTransports = [
|
|
553
560
|
...autoTransportResult.attemptedTransports,
|
|
@@ -24,8 +24,14 @@ export interface BullMQPayload {
|
|
|
24
24
|
uniqueId?: string;
|
|
25
25
|
delay?: number;
|
|
26
26
|
priority?: number;
|
|
27
|
-
removeOnComplete?: number | boolean
|
|
28
|
-
|
|
27
|
+
removeOnComplete?: number | boolean | {
|
|
28
|
+
age: number;
|
|
29
|
+
count?: number;
|
|
30
|
+
};
|
|
31
|
+
removeOnFail?: number | boolean | {
|
|
32
|
+
age: number;
|
|
33
|
+
count?: number;
|
|
34
|
+
};
|
|
29
35
|
backoff?: {
|
|
30
36
|
type: 'fixed' | 'exponential';
|
|
31
37
|
delay: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Queue.d.ts","sourceRoot":"","sources":["../../../../src/tools/queue/Queue.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,OAAO,IAAI;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAErF,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjE,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC1E,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAE5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Queue.d.ts","sourceRoot":"","sources":["../../../../src/tools/queue/Queue.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,OAAO,IAAI;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAErF,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjE,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC1E,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAE5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,OAAO,CAAC,EAAE;QACR,IAAI,EAAE,OAAO,GAAG,aAAa,CAAC;QAC9B,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,IAAI,CAAC,EAAE,OAAO,CAAC;IAGf,aAAa,CAAC,EAAE;QACd,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QACtE,iBAAiB,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;KAC5C,CAAC;IAGF,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAID;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAAO,MAOpC,CAAC;AA+GF,eAAO,MAAM,KAAK;mBACD,MAAM,UAAU,YAAY;aAIlC,IAAI;eAIF,MAAM,GAAG,YAAY;mBASX,MAAM,WAAW,aAAa,eAAe,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YA2E5E,CAAC,mBACN,MAAM,eACA,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;eActB,MAAM,MAAM,MAAM,eAAe,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;kBAcpD,MAAM,eAAe,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;iBAc9C,MAAM,eAAe,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;EAa9D,CAAC;AAEH,eAAe,KAAK,CAAC;AAErB,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ping.d.ts","sourceRoot":"","sources":["../../../src/worker-runtime/ping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAA8B,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAGvE,KAAK,WAAW,GAAG;IACjB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;CAC7D,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;IACjC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,YAAY,CAAC;CAC7C,CAAC;AAcF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAC5B,sBAAsB,mBAAmB,EAAE,EAC3C,eAAe,aAAa,CAAC,YAAY,CAAC,KACzC,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"ping.d.ts","sourceRoot":"","sources":["../../../src/worker-runtime/ping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAA8B,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAGvE,KAAK,WAAW,GAAG;IACjB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;CAC7D,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;IACjC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,YAAY,CAAC;CAC7C,CAAC;AAcF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAC5B,sBAAsB,mBAAmB,EAAE,EAC3C,eAAe,aAAa,CAAC,YAAY,CAAC,KACzC,OAAO,CAAC,IAAI,CAgCd,CAAC;AAEF,8FAA8F;AAC9F,eAAO,MAAM,UAAU,GACrB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,sBAAsB,mBAAmB,EAAE,EAC3C,eAAe,aAAa,CAAC,YAAY,CAAC,KACzC,IAaF,CAAC"}
|
|
@@ -36,12 +36,14 @@ const headerValue = (req, name) => {
|
|
|
36
36
|
* worker service supplies its own definitions, so they are unused there.
|
|
37
37
|
*/
|
|
38
38
|
export const triggerWorkerPing = async (appWorkerDefinitions, workerModules) => {
|
|
39
|
-
if (!
|
|
39
|
+
if (!isRedisRpcConfigured()) {
|
|
40
40
|
return;
|
|
41
41
|
}
|
|
42
42
|
const url = Env.get('WORKER_PING_URL', '').trim();
|
|
43
43
|
if (url.length === 0) {
|
|
44
|
-
// Same isolate: wake the local drain loop
|
|
44
|
+
// Same isolate: wake the local drain loop only when this instance is the worker.
|
|
45
|
+
if (!Env.getBool('WORKER_ENABLED', false))
|
|
46
|
+
return;
|
|
45
47
|
BackgroundTaskScheduler.schedule(ensureDraining(appWorkerDefinitions, workerModules));
|
|
46
48
|
return;
|
|
47
49
|
}
|