@zintrust/core 2.5.0 → 2.5.2

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.5.0",
3
+ "version": "2.5.2",
4
4
  "description": "Production-grade TypeScript backend framework for JavaScript",
5
5
  "homepage": "https://zintrust.com",
6
6
  "repository": {
@@ -1 +1 @@
1
- {"version":3,"file":"OptionalCliExtensions.d.ts","sourceRoot":"","sources":["../../../src/cli/OptionalCliExtensions.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF,KAAK,8BAA8B,GAAG,SAAS,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAE3F,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,8BAA8B,CAAC;CACxC,CAAC,CAAC;AAEH,KAAK,+BAA+B,GAAG,QAAQ,CAAC;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC,CAAC;AAoUH,eAAO,MAAM,qBAAqB;oCACM,OAAO,CAAC,0BAA0B,EAAE,CAAC;sBAKnD,MAAM,EAAE,GAAG,OAAO,CAAC,0BAA0B,EAAE,CAAC;sCAmBhE,MAAM,EAAE,YACJ,aAAa,CAAC,0BAA0B,CAAC,GAClD,0BAA0B,GAAG,SAAS;uCASN,0BAA0B,GAAG,MAAM;mCAlDlC,MAAM,EAAE,KAAG,oBAAoB,GAAG,SAAS;EA2D/E,CAAC;AAEH,eAAO,MAAM,6BAA6B;sCAlFG,OAAO,CAAC,0BAA0B,EAAE,CAAC;yBA5RxD,MAAM;8BAoBD,MAAM;wCA+G5B,oBAAoB,YACjB,+BAA+B,KACxC,MAAM,GAAG,IAAI;kCAzGqB,+BAA+B,KAAG,OAAO;4BAMnE,MAAM,QACT,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YACnB,+BAA+B,KACxC,IAAI;8CAsHE,oBAAoB,YACjB,+BAA+B,KACxC,OAAO,CAAC,OAAO,CAAC;qCA0BV,oBAAoB,YACjB,+BAA+B,KACxC,OAAO,CAAC,OAAO,CAAC;uCAgCV,oBAAoB,YACjB,+BAA+B,KACxC,OAAO,CAAC,OAAO,CAAC;gCAuBV,oBAAoB,YACjB,+BAA+B,KACxC,OAAO,CAAC,0BAA0B,CAAC;gCAmDH,MAAM,EAAE,KAAG,MAAM,GAAG,SAAS;mCAU1B,MAAM,EAAE,KAAG,oBAAoB,GAAG,SAAS;8BAOhD,MAAM,EAAE,KAAG,OAAO;uCAlNT,oBAAoB,KAAG,MAAM,EAAE;gCAwBtC,oBAAoB,KAAG,MAAM,EAAE;EAgQhE,CAAC"}
1
+ {"version":3,"file":"OptionalCliExtensions.d.ts","sourceRoot":"","sources":["../../../src/cli/OptionalCliExtensions.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF,KAAK,8BAA8B,GAAG,SAAS,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAE3F,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,8BAA8B,CAAC;CACxC,CAAC,CAAC;AAEH,KAAK,+BAA+B,GAAG,QAAQ,CAAC;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC,CAAC;AAgVH,eAAO,MAAM,qBAAqB;oCACM,OAAO,CAAC,0BAA0B,EAAE,CAAC;sBAKnD,MAAM,EAAE,GAAG,OAAO,CAAC,0BAA0B,EAAE,CAAC;sCAmBhE,MAAM,EAAE,YACJ,aAAa,CAAC,0BAA0B,CAAC,GAClD,0BAA0B,GAAG,SAAS;uCASN,0BAA0B,GAAG,MAAM;mCAlDlC,MAAM,EAAE,KAAG,oBAAoB,GAAG,SAAS;EA2D/E,CAAC;AAEH,eAAO,MAAM,6BAA6B;sCAlFG,OAAO,CAAC,0BAA0B,EAAE,CAAC;yBAxSxD,MAAM;8BAoBD,MAAM;wCA2H5B,oBAAoB,YACjB,+BAA+B,KACxC,MAAM,GAAG,IAAI;kCArHqB,+BAA+B,KAAG,OAAO;4BAMnE,MAAM,QACT,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YACnB,+BAA+B,KACxC,IAAI;8CAkIE,oBAAoB,YACjB,+BAA+B,KACxC,OAAO,CAAC,OAAO,CAAC;qCA0BV,oBAAoB,YACjB,+BAA+B,KACxC,OAAO,CAAC,OAAO,CAAC;uCAgCV,oBAAoB,YACjB,+BAA+B,KACxC,OAAO,CAAC,OAAO,CAAC;gCAuBV,oBAAoB,YACjB,+BAA+B,KACxC,OAAO,CAAC,0BAA0B,CAAC;gCAmDH,MAAM,EAAE,KAAG,MAAM,GAAG,SAAS;mCAU1B,MAAM,EAAE,KAAG,oBAAoB,GAAG,SAAS;8BAOhD,MAAM,EAAE,KAAG,OAAO;uCAlNT,oBAAoB,KAAG,MAAM,EAAE;gCAwBtC,oBAAoB,KAAG,MAAM,EAAE;EAgQhE,CAAC"}
@@ -87,6 +87,18 @@ const OPTIONAL_CLI_EXTENSIONS = Object.freeze([
87
87
  path.join(packageRoot, 'dist', 'packages', 'trace', 'src', 'cli-register.js'),
88
88
  ],
89
89
  },
90
+ {
91
+ packageName: '@zintrust/queue-cloudflare',
92
+ specifier: '@zintrust/queue-cloudflare/cli-register',
93
+ commands: ['migrate:queue-cloudflare', 'queue-cloudflare:migrate'],
94
+ installCommand: 'npm install @zintrust/queue-cloudflare',
95
+ localCandidates: [
96
+ path.join(packageRoot, 'packages', 'queue-cloudflare', 'src', 'cli-register.ts'),
97
+ path.join(packageRoot, 'packages', 'queue-cloudflare', 'src', 'cli-register.js'),
98
+ path.join(packageRoot, 'packages', 'queue-cloudflare', 'dist', 'cli-register.js'),
99
+ path.join(packageRoot, 'dist', 'packages', 'queue-cloudflare', 'src', 'cli-register.js'),
100
+ ],
101
+ },
90
102
  {
91
103
  packageName: '@zintrust/expose',
92
104
  specifier: '@zintrust/expose/register',
@@ -1 +1 @@
1
- {"version":3,"file":"D1MigrateCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/D1MigrateCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA2HrE;;;GAGG;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B;;OAEG;cACO,YAAY;EAyBtB,CAAC"}
1
+ {"version":3,"file":"D1MigrateCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/D1MigrateCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAuIrE;;;GAGG;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B;;OAEG;cACO,YAAY;EA2BtB,CAAC"}
@@ -35,6 +35,8 @@ const buildExecutionContext = (options) => {
35
35
  const isLocal = options['local'] === true || options['remote'] !== true;
36
36
  const projectRoot = process.cwd();
37
37
  const dbName = getDbName(projectRoot, options);
38
+ const env = typeof options['env'] === 'string' ? options['env'].trim() : undefined;
39
+ const config = typeof options['config'] === 'string' ? options['config'].trim() : undefined;
38
40
  const migrationsRelDir = isWorkerCommand
39
41
  ? path.join('database', 'migrations', 'd1')
40
42
  : WranglerConfig.getD1MigrationsDir(projectRoot, dbName);
@@ -48,6 +50,8 @@ const buildExecutionContext = (options) => {
48
50
  migrationsRelDir,
49
51
  sourceMigrationsDir,
50
52
  outputDir: path.join(projectRoot, migrationsRelDir),
53
+ env,
54
+ config,
51
55
  };
52
56
  };
53
57
  const handleMigrationError = (cmd, error) => {
@@ -77,7 +81,13 @@ const executeD1Migrate = async (cmd, options) => {
77
81
  outputDir: ctx.outputDir,
78
82
  });
79
83
  cmd.info(`Generated ${generated.length} SQL migration file(s).`);
80
- const output = WranglerD1.applyMigrations({ cmd, dbName: ctx.dbName, isLocal: ctx.isLocal });
84
+ const output = WranglerD1.applyMigrations({
85
+ cmd,
86
+ dbName: ctx.dbName,
87
+ isLocal: ctx.isLocal,
88
+ env: ctx.env,
89
+ config: ctx.config,
90
+ });
81
91
  if (output !== '')
82
92
  cmd.info(output);
83
93
  cmd.info('✓ D1 migrations completed successfully');
@@ -102,7 +112,9 @@ export const D1MigrateCommand = Object.freeze({
102
112
  command
103
113
  .option('--local', 'Run against local D1 database (via wrangler dev)')
104
114
  .option('--remote', 'Run against remote D1 database (production)')
105
- .option('--database <name>', 'Wrangler D1 identifier. Accepts database_name or binding; defaults to the configured wrangler d1_databases entry when available.');
115
+ .option('--database <name>', 'Wrangler D1 identifier. Accepts database_name or binding; defaults to the configured wrangler d1_databases entry when available.')
116
+ .option('--env <name>', 'Wrangler environment to use (e.g., staging, production)')
117
+ .option('--config <path>', 'Path to wrangler config file (e.g., wrangler.dev.jsonc)');
106
118
  };
107
119
  const cmd = BaseCommand.create({
108
120
  name: 'd1:migrate',
@@ -3,6 +3,8 @@ type ApplyOptions = {
3
3
  cmd: IBaseCommand;
4
4
  dbName: string;
5
5
  isLocal: boolean;
6
+ env?: string;
7
+ config?: string;
6
8
  };
7
9
  type ExecuteSqlOptions = {
8
10
  dbName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"WranglerD1.d.ts","sourceRoot":"","sources":["../../../../src/cli/d1/WranglerD1.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,KAAK,YAAY,GAAG;IAClB,GAAG,EAAE,YAAY,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,YAAY,CAAC;CACpB,CAAC;AAmCF,eAAO,MAAM,UAAU;0BACC,YAAY,GAAG,MAAM;qBAK1B,iBAAiB,GAAG,MAAM;EAe3C,CAAC"}
1
+ {"version":3,"file":"WranglerD1.d.ts","sourceRoot":"","sources":["../../../../src/cli/d1/WranglerD1.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,KAAK,YAAY,GAAG;IAClB,GAAG,EAAE,YAAY,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,YAAY,CAAC;CACpB,CAAC;AAmCF,eAAO,MAAM,UAAU;0BACC,YAAY,GAAG,MAAM;qBAc1B,iBAAiB,GAAG,MAAM;EAe3C,CAAC"}
@@ -35,6 +35,12 @@ const runWrangler = (args, cmd) => {
35
35
  export const WranglerD1 = Object.freeze({
36
36
  applyMigrations(opts) {
37
37
  const args = ['d1', 'migrations', 'apply', opts.dbName, opts.isLocal ? '--local' : '--remote'];
38
+ if (opts.env !== undefined && opts.env !== null && opts.env.trim() !== '') {
39
+ args.push('--env', opts.env);
40
+ }
41
+ if (opts.config !== undefined && opts.config !== null && opts.config.trim() !== '') {
42
+ args.push('--config', opts.config);
43
+ }
38
44
  return runWrangler(args, opts.cmd);
39
45
  },
40
46
  executeSql(opts) {
package/src/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @zintrust/core v2.5.0
2
+ * @zintrust/core v2.5.2
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-03T09:20:31.193Z
8
+ * Built: 2026-06-11T16:05:23.053Z
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-03T09:20:31.141Z'; // Replaced during build
24
+ export const ZINTRUST_BUILD_DATE = '2026-06-11T16:05:23.018Z'; // 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":"OfficialPlugins.d.ts","sourceRoot":"","sources":["../../../src/runtime/OfficialPlugins.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAwJxD,eAAO,MAAM,eAAe;;;;;uBAKR,uBAAuB,GAAY,aAAa,CAAC,MAAM,CAAC;0BAGrD,uBAAuB,GAAY,aAAa,CAAC,MAAM,CAAC;EAG7E,CAAC"}
1
+ {"version":3,"file":"OfficialPlugins.d.ts","sourceRoot":"","sources":["../../../src/runtime/OfficialPlugins.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,QAAQ,CAAC;AA8JxD,eAAO,MAAM,eAAe;;;;;uBAKR,uBAAuB,GAAY,aAAa,CAAC,MAAM,CAAC;0BAGrD,uBAAuB,GAAY,aAAa,CAAC,MAAM,CAAC;EAG7E,CAAC"}
@@ -62,6 +62,11 @@ const baseRegistrations = Object.freeze([
62
62
  specifier: '@zintrust/queue-sqs/register',
63
63
  isEnabled: () => isSelected(['QUEUE_DRIVER'], ['sqs']),
64
64
  },
65
+ {
66
+ packageName: '@zintrust/queue-cloudflare',
67
+ specifier: '@zintrust/queue-cloudflare/register',
68
+ isEnabled: () => isSelected(['QUEUE_DRIVER'], ['cloudflare', 'cloudflare-queues', 'cf-queues']),
69
+ },
65
70
  {
66
71
  packageName: '@zintrust/cache-redis',
67
72
  specifier: '@zintrust/cache-redis/register',
@@ -1 +1 @@
1
- {"version":3,"file":"PluginRegistry.d.ts","sourceRoot":"","sources":["../../../src/runtime/PluginRegistry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,kBAAkB,GAAG,SAAS,GAAG,QAAQ,CAAC;IAChD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;KACrB,EAAE,CAAC;IACJ,WAAW,CAAC,EAAE;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AA2DD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAmJ3D,CAAC"}
1
+ {"version":3,"file":"PluginRegistry.d.ts","sourceRoot":"","sources":["../../../src/runtime/PluginRegistry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,kBAAkB,GAAG,SAAS,GAAG,QAAQ,CAAC;IAChD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;KACrB,EAAE,CAAC;IACJ,WAAW,CAAC,EAAE;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AA2DD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CA0J3D,CAAC"}
@@ -83,6 +83,13 @@ export const PluginRegistry = {
83
83
  dependencies: ['@zintrust/queue-sqs', '@aws-sdk/client-sqs'],
84
84
  autoImports: ['@zintrust/queue-sqs/register'],
85
85
  }),
86
+ 'driver:queue-cloudflare': driver({
87
+ name: 'Cloudflare Queues Driver',
88
+ description: 'Cloudflare Queues driver (installs @zintrust/queue-cloudflare)',
89
+ aliases: ['queue:cloudflare', 'queue:cloudflare-queues', 'queue:cf'],
90
+ dependencies: ['@zintrust/queue-cloudflare'],
91
+ autoImports: ['@zintrust/queue-cloudflare/register'],
92
+ }),
86
93
  'driver:broadcast-redis': driver({
87
94
  name: 'Redis Broadcast Driver',
88
95
  description: 'Redis-backed broadcast driver (installs redis client dependency)',
@@ -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 { DatabaseConfig, IDatabaseAdapter, QueryResult } from '@zintrust/core';
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(`Raw SQL Query executed: ${sql}`, { parameters });
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(): string {
85
- return 'mysql';
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 { DatabaseConfig, IDatabaseAdapter, QueryResult } from '@zintrust/core';
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(): string {
63
- return 'sqlserver';
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(`Raw SQL Query executed: ${sql}`, { parameters });
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 { fs, path, performance } from '@zintrust/core/node';
11
- import { DatabaseConfig, IDatabaseAdapter, QueryResult } from '@zintrust/core';
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
- return value.length > 0 ? value : ':memory:';
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
- return sql.trimStart().toLowerCase().startsWith('select');
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
- Logger.debug('SQLite query executed', { durationMs: performance.now() - start, sql });
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
- Logger.debug('SQLite query executed', { durationMs: performance.now() - start, sql });
111
- return { rows: [], rowCount: info.changes };
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
- Logger.warn(`Raw SQL Query executed: ${sql}`);
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(): string {
289
- return 'sqlite';
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 * as bcrypt from 'bcrypt';
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 jwt.sign(payload, secret, options);
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 jwt.verify(token, secret) as T;
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;AAoyBH,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"}
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
- if (autoTransportResult.lastTransportError instanceof Error) {
548
- throw autoTransportResult.lastTransportError;
549
- }
550
- throw ErrorFactory.createConfigError('Socket publish delivery is not available.');
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
- removeOnFail?: number | boolean;
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;IACpC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,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
+ {"version":3,"file":"Queue.d.ts","sourceRoot":"","sources":["../../../../src/tools/queue/Queue.ts"],"names":[],"mappings":"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"}
@@ -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,CA+Bd,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"}
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 (!Env.getBool('WORKER_ENABLED', false) || !isRedisRpcConfigured()) {
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 in the background.
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
  }