@zintrust/core 2.4.2 → 2.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zintrust/core",
3
- "version": "2.4.2",
3
+ "version": "2.4.3",
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":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/boot/registry/runtime.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAQnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAsRvD,eAAO,MAAM,8BAA8B,GAAI,iBAAiB,gBAAgB,KAAG,IA6BlF,CAAC;AAyVF,KAAK,eAAe,GAAG;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,gBAAgB,CAAC;IAClC,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC,CAAC;AA4HF,eAAO,MAAM,eAAe,GAC1B,QAAQ,eAAe,KACtB;IAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAK5D,CAAC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/boot/registry/runtime.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAQnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AA6SvD,eAAO,MAAM,8BAA8B,GAAI,iBAAiB,gBAAgB,KAAG,IA6BlF,CAAC;AA2WF,KAAK,eAAe,GAAG;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,gBAAgB,CAAC;IAClC,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC,CAAC;AAqIF,eAAO,MAAM,eAAe,GAC1B,QAAQ,eAAe,KACtB;IAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAK5D,CAAC"}
@@ -124,6 +124,16 @@ const appConfig = readRuntimeConfig('appConfig', {
124
124
  dockerWorker: false,
125
125
  worker: false,
126
126
  });
127
+ const readRuntimeBool = (key, fallback) => {
128
+ const value = readEnvString(key).trim().toLowerCase();
129
+ if (value === '')
130
+ return fallback;
131
+ return value === '1' || value === 'true' || value === 'yes' || value === 'on';
132
+ };
133
+ const isRedisRpcRuntimeEnabled = () => readRuntimeBool('USE_REDIS_PROXY', false) && readEnvString('REDIS_RPC_URL').trim() !== '';
134
+ const isWorkerRuntimeEnabled = () => readRuntimeBool('WORKER_ENABLED', appConfig.worker === true);
135
+ const isDockerWorkerRuntime = () => readRuntimeBool('DOCKER_WORKER', appConfig.dockerWorker === true);
136
+ const shouldUseAppRegisteredWorkerDashboards = () => Cloudflare.getWorkersEnv() !== null && isRedisRpcRuntimeEnabled();
127
137
  // exported solely for tests to exercise the default detectRuntime handler
128
138
  const cacheConfig = readRuntimeConfig('cacheConfig', RuntimeConfig.cacheConfig);
129
139
  const getStorageConfig = () => {
@@ -485,11 +495,28 @@ const initializeSystemTrace = async (router) => {
485
495
  Logger.warn('System Trace runtime disabled for this boot. Application startup will continue.');
486
496
  }
487
497
  };
488
- const initializeSockets = (router) => {
498
+ const ensureSocketRuntimeRegistered = async () => {
499
+ if (SocketRuntimeRegistry.getRuntime() !== undefined)
500
+ return;
501
+ try {
502
+ const socketModule = await tryImportOptional('@zintrust/socket');
503
+ if (socketModule?.socketRuntime !== undefined) {
504
+ SocketRuntimeRegistry.registerRuntime(socketModule.socketRuntime);
505
+ }
506
+ if (socketModule?.socketRouteRegistrar !== undefined) {
507
+ SocketRuntimeRegistry.registerRoutes(socketModule.socketRouteRegistrar);
508
+ }
509
+ }
510
+ catch {
511
+ // Optional socket package may not be installed in projects that do not use sockets.
512
+ }
513
+ };
514
+ const initializeSockets = async (router) => {
489
515
  const settings = SocketFeature.getSettings();
490
516
  if (!settings.enabled) {
491
517
  return;
492
518
  }
519
+ await ensureSocketRuntimeRegistered();
493
520
  const runtime = SocketRuntimeRegistry.getRuntime();
494
521
  if (runtime === undefined || runtime.isEnabled() === false) {
495
522
  Logger.warn('SOCKET_ENABLED=true but no socket runtime is registered. Install @zintrust/socket to activate unified socket transport.');
@@ -516,17 +543,17 @@ const initializeSockets = (router) => {
516
543
  const initializeRuntimeRoutes = async (params) => {
517
544
  await initializeArtifactDirectories(params.resolvedBasePath);
518
545
  await registerMasterRoutes(params.resolvedBasePath, params.router);
519
- initializeSockets(params.router);
546
+ await initializeSockets(params.router);
520
547
  await initializeSystemTrace(params.router);
521
- if (Cloudflare.getWorkersEnv() === null && appConfig.dockerWorker === false) {
522
- if (appConfig.worker === true) {
548
+ if (Cloudflare.getWorkersEnv() === null && !isDockerWorkerRuntime()) {
549
+ if (isWorkerRuntimeEnabled()) {
523
550
  await initializeWorkers(params.router);
524
551
  }
525
552
  else {
526
553
  Logger.info('Skipping worker route registration (WORKER_ENABLED=false).');
527
554
  }
528
555
  await initializeQueueMonitor(params.router);
529
- if (appConfig.worker === true) {
556
+ if (isWorkerRuntimeEnabled()) {
530
557
  await initializeQueueHttpGateway(params.router);
531
558
  await initializeScheduleHttpGateway(params.router);
532
559
  }
@@ -535,7 +562,13 @@ const initializeRuntimeRoutes = async (params) => {
535
562
  }
536
563
  return;
537
564
  }
538
- if (!appConfig.dockerWorker) {
565
+ if (!isDockerWorkerRuntime()) {
566
+ if (shouldUseAppRegisteredWorkerDashboards()) {
567
+ Logger.info('Skipping core optional worker dashboard imports in Cloudflare; app routes own Redis RPC dashboards.');
568
+ await initializeQueueHttpGateway(params.router);
569
+ await initializeScheduleHttpGateway(params.router);
570
+ return;
571
+ }
539
572
  Logger.info('Skipping local worker dashboards in Cloudflare Workers runtime.');
540
573
  }
541
574
  };
package/src/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @zintrust/core v2.4.2
2
+ * @zintrust/core v2.4.3
3
3
  *
4
4
  * ZinTrust Framework - Production-Grade TypeScript Backend
5
5
  * Built for performance, type safety, and exceptional developer experience
6
6
  *
7
7
  * Build Information:
8
- * Built: 2026-05-31T12:25:06.738Z
8
+ * Built: 2026-06-01T09:39:36.110Z
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-05-31T12:25:06.703Z'; // Replaced during build
24
+ export const ZINTRUST_BUILD_DATE = '2026-06-01T09:39:36.070Z'; // 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":"Queue.d.ts","sourceRoot":"","sources":["../../../../src/tools/queue/Queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Queue.d.ts","sourceRoot":"","sources":["../../../../src/tools/queue/Queue.ts"],"names":[],"mappings":"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"}
@@ -81,6 +81,17 @@ const markFailedEnqueue = async (input) => {
81
81
  });
82
82
  return fallbackJobId;
83
83
  };
84
+ const runPostEnqueueHook = async (queueName, jobId, driverName) => {
85
+ const enqueueHook = globalThis.__zintrustQueueEnqueueHook;
86
+ if (typeof enqueueHook !== 'function')
87
+ return;
88
+ try {
89
+ await enqueueHook(queueName, jobId, driverName);
90
+ }
91
+ catch (hookError) {
92
+ Logger.debug('Queue enqueue hook failed', { queue: queueName, jobId, error: hookError });
93
+ }
94
+ };
84
95
  export const Queue = Object.freeze({
85
96
  register(name, driver) {
86
97
  drivers.set(name.toLowerCase(), driver);
@@ -138,6 +149,7 @@ export const Queue = Object.freeze({
138
149
  requestedUniqueId,
139
150
  });
140
151
  SystemTraceBridge.emitJobDispatch(queue, queue, resolvedDriver, payload);
152
+ await runPostEnqueueHook(queue, jobId, resolvedDriver);
141
153
  return jobId;
142
154
  }
143
155
  catch (error) {