@zintrust/core 1.8.0 → 1.8.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/bin/z.js CHANGED
@@ -3,5 +3,6 @@
3
3
  * ZinTrust CLI Shortcut - 'z'
4
4
  * Mirrors bin/zintrust.ts for convenience
5
5
  */
6
- import { runCliWrapper } from './launcher.js';
6
+ const { runCliWrapper } = await import(new URL('./launcher.ts', import.meta.url).href);
7
7
  await runCliWrapper();
8
+ export {};
package/bin/zin.js CHANGED
@@ -3,5 +3,6 @@
3
3
  * ZinTrust CLI Shortcut - 'zin'
4
4
  * Mirrors bin/zintrust.ts for convenience
5
5
  */
6
- import { runCliWrapper } from './launcher.js';
6
+ const { runCliWrapper } = await import(new URL('./launcher.ts', import.meta.url).href);
7
7
  await runCliWrapper({ traceName: 'cli-wrapper' });
8
+ export {};
@@ -1 +1 @@
1
- {"version":3,"file":"zintrust-main.d.ts","sourceRoot":"","sources":["../../bin/zintrust-main.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,KAAK,qBAAqB,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAiYF,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAMzC;AAED,eAAO,MAAM,mBAAmB;;qCAhWQ,MAAM,KAAG,qBAAqB,GAAG,SAAS;mCA6C5C,MAAM,GAAG,IAAI,UAAU,MAAM,CAAC,OAAO,GAAG,IAAI,KAAG,MAAM;iCAnEzD,MAAM;8BAIP,MAAM,KAAG,MAAM;uCAoGtC,qBAAqB,WACpB,MAAM,EAAE,KAChB,OAAO,CAAC,KAAK,CAAC;oCA9FsB,MAAM,sBAAsB,MAAM,KAAG,OAAO;6CAkI7B,MAAM,EAAE,KAAG,OAAO,CAAC,OAAO,CAAC;yCA7F1E,MAAM,sBACS,MAAM,QACrB,MAAM,CAAC,UAAU,KACrB,qBAAqB,GAAG,SAAS;EA4UlC,CAAC;AAaH,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"zintrust-main.d.ts","sourceRoot":"","sources":["../../bin/zintrust-main.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,KAAK,qBAAqB,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAmaF,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAMzC;AAED,eAAO,MAAM,mBAAmB;;qCAlYQ,MAAM,KAAG,qBAAqB,GAAG,SAAS;mCA6C5C,MAAM,GAAG,IAAI,UAAU,MAAM,CAAC,OAAO,GAAG,IAAI,KAAG,MAAM;iCAnEzD,MAAM;8BAIP,MAAM,KAAG,MAAM;uCAoGtC,qBAAqB,WACpB,MAAM,EAAE,KAChB,OAAO,CAAC,KAAK,CAAC;oCA9FsB,MAAM,sBAAsB,MAAM,KAAG,OAAO;6CAkI7B,MAAM,EAAE,KAAG,OAAO,CAAC,OAAO,CAAC;yCA7F1E,MAAM,sBACS,MAAM,QACrB,MAAM,CAAC,UAAU,KACrB,qBAAqB,GAAG,SAAS;EA8WlC,CAAC;AAaH,OAAO,EAAE,CAAC"}
@@ -253,7 +253,33 @@ const handleCliFatal = async (error, context) => {
253
253
  }
254
254
  process.exit(1);
255
255
  };
256
+ const maybeRunVersionCheckChild = async () => {
257
+ if (process.env['ZINTRUST_VERSION_CHECK_CHILD'] !== 'true') {
258
+ return false;
259
+ }
260
+ const { VersionChecker } = await import('../src/cli/services/VersionChecker.js');
261
+ await VersionChecker.runVersionCheckInline();
262
+ return true;
263
+ };
264
+ const loadOptionalCliExtensionsForArgs = async (args) => {
265
+ let optionalCliExtensions;
266
+ let optionalCliStatuses = [];
267
+ try {
268
+ ({ OptionalCliExtensions: optionalCliExtensions } = await import('../src/cli/OptionalCliExtensions.js'));
269
+ optionalCliStatuses = await optionalCliExtensions.loadForArgs(args);
270
+ }
271
+ catch {
272
+ // best-effort; missing optional extensions must not block the CLI
273
+ }
274
+ return {
275
+ optionalCliExtensions,
276
+ optionalCliStatuses,
277
+ };
278
+ };
256
279
  const runCliInternal = async () => {
280
+ if (await maybeRunVersionCheckChild()) {
281
+ return;
282
+ }
257
283
  const { rawArgs: rawArgs0, args: args0 } = getArgsFromProcess();
258
284
  if (await maybeHandoffToProjectLocalCli(rawArgs0)) {
259
285
  return;
@@ -266,15 +292,7 @@ const runCliInternal = async () => {
266
292
  const { EnvFileLoader } = await import('../src/cli/utils/EnvFileLoader.js');
267
293
  EnvFileLoader.ensureLoaded();
268
294
  // Auto-load install-only CLI extension packages that self-register commands.
269
- let optionalCliExtensions;
270
- let optionalCliStatuses = [];
271
- try {
272
- ({ OptionalCliExtensions: optionalCliExtensions } = await import('../src/cli/OptionalCliExtensions.js'));
273
- optionalCliStatuses = await optionalCliExtensions.loadForArgs(args0);
274
- }
275
- catch {
276
- // best-effort; missing optional extensions must not block the CLI
277
- }
295
+ const { optionalCliExtensions, optionalCliStatuses } = await loadOptionalCliExtensionsForArgs(args0);
278
296
  const missingOptionalExtension = optionalCliExtensions?.findMissingExtensionForArgs(args0, optionalCliStatuses);
279
297
  if (missingOptionalExtension !== undefined) {
280
298
  const { ErrorFactory } = await import('../src/exceptions/ZintrustError.js');
package/bin/zintrust.js CHANGED
@@ -6,5 +6,6 @@
6
6
  * bin/zintrust-main.ts. Keeping the implementation hashbang-free allows other
7
7
  * shortcuts (zin/z/zt) to reuse the same launcher behavior.
8
8
  */
9
- import { runCliWrapper } from './launcher.js';
9
+ const { runCliWrapper } = await import(new URL('./launcher.ts', import.meta.url).href);
10
10
  await runCliWrapper();
11
+ export {};
package/bin/zt.js CHANGED
@@ -3,5 +3,6 @@
3
3
  * ZinTrust CLI Shortcut - 'zt'
4
4
  * Mirrors bin/zintrust.ts for convenience
5
5
  */
6
- import { runCliWrapper } from './launcher.js';
6
+ const { runCliWrapper } = await import(new URL('./launcher.ts', import.meta.url).href);
7
7
  await runCliWrapper();
8
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zintrust/core",
3
- "version": "1.8.0",
3
+ "version": "1.8.1",
4
4
  "description": "Production-grade TypeScript backend framework for JavaScript",
5
5
  "homepage": "https://zintrust.com",
6
6
  "repository": {
@@ -17,6 +17,9 @@ interface VersionCheckConfig {
17
17
  skipVersionCheck: boolean;
18
18
  }
19
19
  export declare const VersionChecker: Readonly<{
20
+ isDetachedChildProcess(): boolean;
21
+ shouldSkipVersionCheckForArgs(args: Set<string>): boolean;
22
+ hasFreshVersionCheck(checkInterval: number): boolean;
20
23
  /**
21
24
  * Resolve the nearest package.json from a starting directory.
22
25
  */
@@ -81,6 +84,8 @@ export declare const VersionChecker: Readonly<{
81
84
  * Display update notification to user
82
85
  */
83
86
  displayUpdateNotification(result: VersionCheckResult): void;
87
+ spawnDetachedVersionCheck(): void;
88
+ runVersionCheckInline(): Promise<void>;
84
89
  /**
85
90
  * Run version check and display notification if needed
86
91
  */
@@ -1 +1 @@
1
- {"version":3,"file":"VersionChecker.d.ts","sourceRoot":"","sources":["../../../../src/cli/services/VersionChecker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKlE,UAAU,kBAAkB;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc;IACzB;;OAEG;qCAC8B,MAAM,GAAG,MAAM,GAAG,IAAI;IAcvD;;OAEG;yBACkB,MAAM;IAkB3B;;OAEG;iBACU,kBAAkB;IAQ/B;;OAEG;0BACmB,OAAO;IAyC7B;;OAEG;oCAC6B,MAAM,GAAG,MAAM,GAAG,IAAI;IAwBtD;;OAEG;gCACyB,MAAM,GAAG,IAAI;IAezC;;OAEG;0BACyB,OAAO,CAAC,MAAM,CAAC;IA6B3C;;OAEG;4BAC2B,OAAO,CAAC,aAAa,CAAC;IAQpD;;OAEG;uBACgB,MAAM;IAIzB;;OAEG;qCAC8B,OAAO,GAAG,MAAM;IAuBjD;;OAEG;8BACuB,OAAO,GAAG,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAInE;;OAEG;uCACgC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAY1E;;OAEG;oCAC6B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAQvE;;OAEG;6BACsB,MAAM,UAAU,MAAM,GAAG,MAAM;IAuBxD;;OAEG;oBACmB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAyBxD;;OAEG;sCAC+B,kBAAkB,GAAG,IAAI;IA4B3D;;OAEG;uBACsB,OAAO,CAAC,IAAI,CAAC;EAUtC,CAAC"}
1
+ {"version":3,"file":"VersionChecker.d.ts","sourceRoot":"","sources":["../../../../src/cli/services/VersionChecker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMlE,UAAU,kBAAkB;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAID,eAAO,MAAM,cAAc;8BACC,OAAO;wCAIG,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO;wCAYrB,MAAM,GAAG,OAAO;IAapD;;OAEG;qCAC8B,MAAM,GAAG,MAAM,GAAG,IAAI;IAcvD;;OAEG;yBACkB,MAAM;IAkB3B;;OAEG;iBACU,kBAAkB;IAQ/B;;OAEG;0BACmB,OAAO;IA0B7B;;OAEG;oCAC6B,MAAM,GAAG,MAAM,GAAG,IAAI;IAwBtD;;OAEG;gCACyB,MAAM,GAAG,IAAI;IAezC;;OAEG;0BACyB,OAAO,CAAC,MAAM,CAAC;IA6B3C;;OAEG;4BAC2B,OAAO,CAAC,aAAa,CAAC;IAQpD;;OAEG;uBACgB,MAAM;IAIzB;;OAEG;qCAC8B,OAAO,GAAG,MAAM;IAuBjD;;OAEG;8BACuB,OAAO,GAAG,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAInE;;OAEG;uCACgC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAY1E;;OAEG;oCAC6B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAQvE;;OAEG;6BACsB,MAAM,UAAU,MAAM,GAAG,MAAM;IAuBxD;;OAEG;oBACmB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAyBxD;;OAEG;sCAC+B,kBAAkB,GAAG,IAAI;iCA4B9B,IAAI;6BAkCF,OAAO,CAAC,IAAI,CAAC;IAW5C;;OAEG;uBACsB,OAAO,CAAC,IAAI,CAAC;EAQtC,CAAC"}
@@ -4,11 +4,35 @@
4
4
  * Checks if the current CLI version is outdated and warns users
5
5
  * when a newer version is available from npm registry.
6
6
  */
7
+ import { Logger } from '../../config/logger.js';
7
8
  import { HttpClient } from '../../tools/http/Http.js';
9
+ import { spawn } from '../../node-singletons/child-process.js';
8
10
  import { existsSync, readFileSync } from '../../node-singletons/fs.js';
9
11
  import { dirname, join } from '../../node-singletons/path.js';
10
12
  import { fileURLToPath } from '../../node-singletons/url.js';
13
+ const VERSION_CHECK_CHILD_ENV = 'ZINTRUST_VERSION_CHECK_CHILD';
11
14
  export const VersionChecker = Object.freeze({
15
+ isDetachedChildProcess() {
16
+ return process.env[VERSION_CHECK_CHILD_ENV] === 'true';
17
+ },
18
+ shouldSkipVersionCheckForArgs(args) {
19
+ return (args.has('-v') ||
20
+ args.has('--version') ||
21
+ args.has('help') ||
22
+ args.has('new') ||
23
+ args.has('migrate') ||
24
+ args.has('schedule:run') ||
25
+ args.has('schedule:list'));
26
+ },
27
+ hasFreshVersionCheck(checkInterval) {
28
+ const lastCheck = globalThis.localStorage?.getItem?.('zintrust_last_version_check');
29
+ if (lastCheck === null || lastCheck === undefined) {
30
+ return false;
31
+ }
32
+ const lastCheckTime = Number.parseInt(lastCheck, 10);
33
+ const hoursSinceLastCheck = (Date.now() - lastCheckTime) / (1000 * 60 * 60);
34
+ return hoursSinceLastCheck < checkInterval;
35
+ },
12
36
  /**
13
37
  * Resolve the nearest package.json from a starting directory.
14
38
  */
@@ -57,6 +81,9 @@ export const VersionChecker = Object.freeze({
57
81
  * Check if version check should be performed
58
82
  */
59
83
  shouldCheckVersion() {
84
+ if (this.isDetachedChildProcess()) {
85
+ return true;
86
+ }
60
87
  const config = this.getConfig();
61
88
  // Skip if disabled
62
89
  if (!config.enabled || config.skipVersionCheck) {
@@ -64,27 +91,12 @@ export const VersionChecker = Object.freeze({
64
91
  }
65
92
  // Skip for version commands
66
93
  const args = new Set(process.argv.slice(2));
67
- if (args.has('-v') ||
68
- args.has('--version') ||
69
- args.has('help') ||
70
- args.has('new') ||
71
- args.has('migrate') ||
72
- // One-shot schedule commands should exit cleanly and not keep the event loop alive
73
- // due to background network requests/keep-alive sockets.
74
- args.has('schedule:run') ||
75
- args.has('schedule:list')) {
94
+ if (this.shouldSkipVersionCheckForArgs(args)) {
76
95
  return false;
77
96
  }
78
97
  // Check last check time
79
- const lastCheckKey = 'zintrust_last_version_check';
80
- const lastCheck = globalThis.localStorage?.getItem?.(lastCheckKey);
81
- if (lastCheck !== null && lastCheck !== undefined) {
82
- const lastCheckTime = Number.parseInt(lastCheck, 10);
83
- const now = Date.now();
84
- const hoursSinceLastCheck = (now - lastCheckTime) / (1000 * 60 * 60);
85
- if (hoursSinceLastCheck < config.checkInterval) {
86
- return false;
87
- }
98
+ if (this.hasFreshVersionCheck(config.checkInterval)) {
99
+ return false;
88
100
  }
89
101
  return true;
90
102
  },
@@ -298,10 +310,33 @@ export const VersionChecker = Object.freeze({
298
310
  ].join('\n');
299
311
  process.stdout.write(output);
300
312
  },
301
- /**
302
- * Run version check and display notification if needed
303
- */
304
- async runVersionCheck() {
313
+ spawnDetachedVersionCheck() {
314
+ if (!this.shouldCheckVersion()) {
315
+ return;
316
+ }
317
+ const entrypoint = process.argv[1];
318
+ if (typeof entrypoint !== 'string' || entrypoint.trim() === '') {
319
+ return;
320
+ }
321
+ try {
322
+ const child = spawn(process.execPath, [...process.execArgv, entrypoint, ...process.argv.slice(2)], {
323
+ detached: true,
324
+ env: {
325
+ ...process.env,
326
+ [VERSION_CHECK_CHILD_ENV]: 'true',
327
+ },
328
+ stdio: 'ignore',
329
+ });
330
+ child.once('error', (error) => {
331
+ Logger.debug('Detached version check failed to start', error);
332
+ });
333
+ child.unref();
334
+ }
335
+ catch (error) {
336
+ Logger.debug('Detached version check spawn failed', error);
337
+ }
338
+ },
339
+ async runVersionCheckInline() {
305
340
  try {
306
341
  const result = await this.checkVersion();
307
342
  if (result) {
@@ -312,4 +347,14 @@ export const VersionChecker = Object.freeze({
312
347
  // Version check should never crash the CLI
313
348
  }
314
349
  },
350
+ /**
351
+ * Run version check and display notification if needed
352
+ */
353
+ async runVersionCheck() {
354
+ if (this.isDetachedChildProcess()) {
355
+ await this.runVersionCheckInline();
356
+ return;
357
+ }
358
+ this.spawnDetachedVersionCheck();
359
+ },
315
360
  });
package/src/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @zintrust/core v1.8.0
2
+ * @zintrust/core v1.8.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-05-04T17:50:45.702Z
8
+ * Built: 2026-05-06T10:16:32.881Z
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-04T17:50:45.666Z'; // Replaced during build
24
+ export const ZINTRUST_BUILD_DATE = '2026-05-06T10:16:32.847Z'; // 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,7 +1,10 @@
1
1
  /**
2
- * Auto-generated fallback module.
3
- * This file is created by scripts/ensure-worker-plugins.mjs when missing.
4
- * It allows optional runtime plugin imports to resolve in CI/scaffolded setups.
2
+ * ZinTrust plugin auto-imports
3
+ *
4
+ * In real projects, this file is managed by `zin plugin install` and contains
5
+ * side-effect imports (e.g. `@zintrust/db-sqlite/register`) that register
6
+ * optional adapters/drivers into core registries.
7
+ *
5
8
  */
6
9
  export type {};
7
10
  export declare const __zintrustGeneratedPluginStub = "zintrust.plugins.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"zintrust.plugins.d.ts","sourceRoot":"","sources":["../../src/zintrust.plugins.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,YAAY,EAAE,CAAC;AAgBf,eAAO,MAAM,6BAA6B,wBAAwB,CAAC;;AACnE,wBAAkB"}
1
+ {"version":3,"file":"zintrust.plugins.d.ts","sourceRoot":"","sources":["../../src/zintrust.plugins.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,YAAY,EAAE,CAAC;AAgBf,eAAO,MAAM,6BAA6B,wBAAwB,CAAC;;AACnE,wBAAkB"}
@@ -1,7 +1,10 @@
1
1
  /**
2
- * Auto-generated fallback module.
3
- * This file is created by scripts/ensure-worker-plugins.mjs when missing.
4
- * It allows optional runtime plugin imports to resolve in CI/scaffolded setups.
2
+ * ZinTrust plugin auto-imports
3
+ *
4
+ * In real projects, this file is managed by `zin plugin install` and contains
5
+ * side-effect imports (e.g. `@zintrust/db-sqlite/register`) that register
6
+ * optional adapters/drivers into core registries.
7
+ *
5
8
  */
6
9
  import * as TraceRuntime from './runtime/plugins/trace-runtime.js';
7
10
  globalThis.__zintrust_system_trace_plugin_requested__ = true;