@zintrust/core 0.4.55 → 0.4.57

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/README.md CHANGED
@@ -21,6 +21,8 @@ zin start
21
21
 
22
22
  Your API is now running at `http://localhost:7777`
23
23
 
24
+ Fresh projects also include a default flat ESLint setup through `@zintrust/governance/eslint`, so `npm run lint` works immediately after scaffolding.
25
+
24
26
  If you’re targeting a different runtime:
25
27
 
26
28
  - Cloudflare Workers (Wrangler): `zin start --wg`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zintrust/core",
3
- "version": "0.4.55",
3
+ "version": "0.4.57",
4
4
  "description": "Production-grade TypeScript backend framework for JavaScript",
5
5
  "homepage": "https://zintrust.com",
6
6
  "repository": {
@@ -57,6 +57,8 @@
57
57
  "./package.json": "./package.json"
58
58
  },
59
59
  "dependencies": {
60
+ "@cloudflare/containers": "^0.2.0",
61
+ "@zintrust/workers": "0.4.50",
60
62
  "bcryptjs": "^3.0.3",
61
63
  "bullmq": "^5.71.1",
62
64
  "chalk": "^5.6.2",
@@ -1 +1 @@
1
- {"version":3,"file":"registerRoute.d.ts","sourceRoot":"","sources":["../../../../src/boot/registry/registerRoute.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAc3D,eAAO,MAAM,kBAAkB,QAAO,OAKrC,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAU,CAAC,EAAE,YAAY,MAAM,KAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAMpF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,CAAC,EAAE,YAAY,MAAM,KAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAOrF,CAAC;AA2LF,eAAO,MAAM,oBAAoB,GAC/B,kBAAkB,MAAM,EACxB,QAAQ,OAAO,KACd,OAAO,CAAC,IAAI,CAqBd,CAAC"}
1
+ {"version":3,"file":"registerRoute.d.ts","sourceRoot":"","sources":["../../../../src/boot/registry/registerRoute.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAc3D,eAAO,MAAM,kBAAkB,QAAO,OAKrC,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAU,CAAC,EAAE,YAAY,MAAM,KAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAMpF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,CAAC,EAAE,YAAY,MAAM,KAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAOrF,CAAC;AAoMF,eAAO,MAAM,oBAAoB,GAC/B,kBAAkB,MAAM,EACxB,QAAQ,OAAO,KACd,OAAO,CAAC,IAAI,CAqBd,CAAC"}
@@ -86,6 +86,13 @@ const resolveServicePrefix = (entry) => {
86
86
  }
87
87
  return `/${entry.domain}/${entry.name}`;
88
88
  };
89
+ const shouldPreferRootEnvInMonolith = () => {
90
+ if (typeof process === 'undefined' || process.env === undefined)
91
+ return false;
92
+ const raw = process.env['RUN_AS_MONOLITH'] ?? '';
93
+ const normalized = raw.trim().toLowerCase();
94
+ return normalized === '1' || normalized === 'true' || normalized === 'yes' || normalized === 'on';
95
+ };
89
96
  const ensureManifestServiceEnvLoaded = async (entry) => {
90
97
  if (isCloudflare)
91
98
  return;
@@ -98,6 +105,7 @@ const ensureManifestServiceEnvLoaded = async (entry) => {
98
105
  cwd: projectRoot,
99
106
  includeCwd: true,
100
107
  envPaths: [envPath],
108
+ envPathsOverrideExisting: !shouldPreferRootEnvInMonolith(),
101
109
  });
102
110
  };
103
111
  const shouldRegisterManifestEntry = (entry, activeService) => {
@@ -1 +1 @@
1
- {"version":3,"file":"StartCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/StartCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAggCvF,eAAO,MAAM,YAAY;cACb,YAAY;;mCAp8BU,MAAM,KAAG,OAAO;4CAaP,MAAM,KAAG,MAAM;4CA4Bf,MAAM,KAAG,OAAO;sCAetB,MAAM,WAAW,MAAM,KAAG,OAAO;oCAmBnC,MAAM,KAAG,OAAO;;EAo6BjD,CAAC"}
1
+ {"version":3,"file":"StartCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/StartCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAsgCvF,eAAO,MAAM,YAAY;cACb,YAAY;;mCA18BU,MAAM,KAAG,OAAO;4CAaP,MAAM,KAAG,MAAM;4CA4Bf,MAAM,KAAG,OAAO;sCAetB,MAAM,WAAW,MAAM,KAAG,OAAO;oCAmBnC,MAAM,KAAG,OAAO;;EA06BjD,CAAC"}
@@ -337,6 +337,10 @@ const buildStartEnv = (projectRoot) => ({
337
337
  ...process.env,
338
338
  ZINTRUST_PROJECT_ROOT: projectRoot,
339
339
  });
340
+ const shouldPreferRootEnvInMonolith = () => {
341
+ const raw = readEnvString('RUN_AS_MONOLITH').trim().toLowerCase();
342
+ return raw === '1' || raw === 'true' || raw === 'yes' || raw === 'on';
343
+ };
340
344
  const resolveManifestServiceEnvDir = (projectRoot, entry) => {
341
345
  const configRoot = entry.configRoot;
342
346
  if (isNonEmptyString(configRoot)) {
@@ -375,6 +379,7 @@ const preloadManifestServiceEnv = async (context, options) => {
375
379
  cwd: context.projectRoot,
376
380
  includeCwd: resolveRootEnvPreference(options),
377
381
  envPaths,
382
+ envPathsOverrideExisting: !shouldPreferRootEnvInMonolith(),
378
383
  });
379
384
  };
380
385
  const isFrameworkRepo = (packageJson) => packageJson.name === '@zintrust/core';
@@ -65,7 +65,7 @@ const inferGovernanceVersion = (pkg) => {
65
65
  };
66
66
  const writeEslintConfig = (projectRoot) => {
67
67
  const eslintConfigPath = path.join(projectRoot, 'eslint.config.mjs');
68
- const content = `import { zintrustAppEslintConfig } from '@zintrust/governance';
68
+ const content = `import { zintrustAppEslintConfig } from '@zintrust/governance/eslint';
69
69
 
70
70
  export default zintrustAppEslintConfig({
71
71
  tsconfigRootDir: import.meta.dirname,
@@ -4,6 +4,7 @@ type LoadOptions = {
4
4
  includeCwd?: boolean;
5
5
  extraCwds?: string[];
6
6
  envPaths?: string[];
7
+ envPathsOverrideExisting?: boolean;
7
8
  overrideExisting?: boolean;
8
9
  };
9
10
  type LoadState = {
@@ -1 +1 @@
1
- {"version":3,"file":"EnvFileLoader.d.ts","sourceRoot":"","sources":["../../../../src/cli/utils/EnvFileLoader.ts"],"names":[],"mappings":"AASA,KAAK,QAAQ,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,CAAC;AA8IzD,KAAK,WAAW,GAAG;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAaF,KAAK,YAAY,GAAG;IAClB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAwMF,eAAO,MAAM,aAAa;qBAjDH,WAAW,KAAQ,SAAS;6BAapB,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,KAAQ,SAAS;mCAG/C,YAAY,KAAG,IAAI;oBA+BpC,SAAS;EAO5B,CAAC"}
1
+ {"version":3,"file":"EnvFileLoader.d.ts","sourceRoot":"","sources":["../../../../src/cli/utils/EnvFileLoader.ts"],"names":[],"mappings":"AASA,KAAK,QAAQ,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,CAAC;AA8IzD,KAAK,WAAW,GAAG;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAaF,KAAK,YAAY,GAAG;IAClB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAyMF,eAAO,MAAM,aAAa;qBAjDH,WAAW,KAAQ,SAAS;6BAapB,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,KAAQ,SAAS;mCAG/C,YAAY,KAAG,IAAI;oBA+BpC,SAAS;EAO5B,CAAC"}
@@ -207,6 +207,7 @@ const createLoadPlan = (options) => {
207
207
  const extraCwds = normalizeCwdList(options.extraCwds);
208
208
  const envPaths = normalizeEnvPathList(options.envPaths);
209
209
  const overrideExisting = options.overrideExisting ?? true;
210
+ const envPathsOverrideExisting = options.envPathsOverrideExisting ?? true;
210
211
  const sources = [];
211
212
  if (includeCwd) {
212
213
  sources.push({
@@ -230,7 +231,7 @@ const createLoadPlan = (options) => {
230
231
  key: `${looksLikeFile ? 'file' : 'cwd'}:${envPath}`,
231
232
  path: envPath,
232
233
  kind: looksLikeFile ? 'file' : 'cwd',
233
- overrideExisting: true,
234
+ overrideExisting: envPathsOverrideExisting,
234
235
  });
235
236
  }
236
237
  return sources.filter((source, index, items) => items.findIndex((item) => item.key === source.key) === index);
package/src/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @zintrust/core v0.4.55
2
+ * @zintrust/core v0.4.57
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-04-04T15:47:44.856Z
8
+ * Built: 2026-04-04T17:45:26.813Z
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-04-04T15:47:44.824Z'; // Replaced during build
24
+ export const ZINTRUST_BUILD_DATE = '2026-04-04T17:45:26.774Z'; // 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":"SecurityMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/SecurityMiddleware.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,UAAU,CAAC,EAAE;QACX,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;KAChC,CAAC;IACF,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KACvC,CAAC;CACH;AAwID,eAAO,MAAM,kBAAkB;IAC7B;;OAEG;qBACa,eAAe,GAAQ,UAAU;EAgBjD,CAAC"}
1
+ {"version":3,"file":"SecurityMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/SecurityMiddleware.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,UAAU,CAAC,EAAE;QACX,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;KAChC,CAAC;IACF,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KACvC,CAAC;CACH;AAyID,eAAO,MAAM,kBAAkB;IAC7B;;OAEG;qBACa,eAAe,GAAQ,UAAU;EAgBjD,CAAC"}
@@ -116,6 +116,7 @@ function applyCors(req, res, cors) {
116
116
  // Handle Preflight
117
117
  if (req.getMethod() === 'OPTIONS') {
118
118
  res.setStatus(204);
119
+ res.send('');
119
120
  return true;
120
121
  }
121
122
  return false;
package/src/start.d.ts CHANGED
@@ -8,17 +8,22 @@ export declare const bootStandaloneService: (importMetaUrl: string, activeServic
8
8
  * This uses a non-literal dynamic import so Worker bundlers don't pull Node-only modules.
9
9
  */
10
10
  export declare const start: () => Promise<void>;
11
+ declare const cloudflareWorker: Readonly<{
12
+ fetch: (request: Request, env: unknown, ctx: unknown) => Promise<Response>;
13
+ }>;
14
+ declare const deno: (request: Request) => Promise<Response>;
15
+ declare const handler: (event: unknown, context: unknown) => Promise<unknown>;
11
16
  /**
12
17
  * Cloudflare Workers entry (module worker style).
13
18
  */
14
- export { default } from './functions/cloudflare';
15
- export { default as cloudflareWorker } from './functions/cloudflare';
19
+ export default cloudflareWorker;
20
+ export { cloudflareWorker };
16
21
  /**
17
22
  * Deno fetch handler.
18
23
  */
19
- export { default as deno } from './functions/deno';
24
+ export { deno };
20
25
  /**
21
26
  * AWS Lambda handler.
22
27
  */
23
- export { handler } from './functions/lambda';
28
+ export { handler };
24
29
  //# sourceMappingURL=start.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/start.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,gCAAgC,CAAC;AAyBxC,eAAO,MAAM,UAAU,GAAI,eAAe,MAAM,KAAG,OAYlD,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,eAAe,OAAO,KAAG,oBASnE,CAAC;AAoEF,eAAO,MAAM,qBAAqB,GAChC,eAAe,MAAM,EACrB,eAAe,OAAO,KACrB,OAAO,CAAC,oBAAoB,CAS9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,KAAK,QAAa,OAAO,CAAC,IAAI,CAW1C,CAAC;AAEF;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEpE;;GAEG;AACH,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/start.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,gCAAgC,CAAC;AAqExC,eAAO,MAAM,UAAU,GAAI,eAAe,MAAM,KAAG,OAYlD,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,eAAe,OAAO,KAAG,oBAOnE,CAAC;AAoEF,eAAO,MAAM,qBAAqB,GAChC,eAAe,MAAM,EACrB,eAAe,OAAO,KACrB,OAAO,CAAC,oBAAoB,CAS9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,KAAK,QAAa,OAAO,CAAC,IAAI,CAW1C,CAAC;AAiBF,QAAA,MAAM,gBAAgB;qBAfkB,OAAO,OAAO,OAAO,OAAO,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;EAiB7F,CAAC;AAEH,QAAA,MAAM,IAAI,GAAU,SAAS,OAAO,KAAG,OAAO,CAAC,QAAQ,CAKtD,CAAC;AAEF,QAAA,MAAM,OAAO,GAAU,OAAO,OAAO,EAAE,SAAS,OAAO,KAAG,OAAO,CAAC,OAAO,CAKxE,CAAC;AAEF;;GAEG;AACH,eAAe,gBAAgB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,CAAC"}
package/src/start.js CHANGED
@@ -1,11 +1,35 @@
1
- import { ErrorFactory } from './exceptions/ZintrustError.js';
2
1
  import { isArray, isNonEmptyString, isObject } from './helper/index.js';
3
2
  import { ZintrustLang } from './lang/lang.js';
4
3
  import { normalizeActiveServiceRuntime, } from './microservices/ServiceManifest.js';
5
4
  import { ensureNodeStartupEnvLoaded } from './runtime/NodeStartup.js';
6
- import { ProjectRuntime } from './runtime/ProjectRuntime.js';
7
5
  import { resolveNodeProjectRoot } from './runtime/resolveNodeProjectRoot.js';
8
6
  import { isNodeRuntime } from './runtime/detectRuntime.js';
7
+ const getProjectRuntimeGlobal = () => globalThis;
8
+ const getCachedProjectRuntime = () => {
9
+ return getProjectRuntimeGlobal().__zintrustProjectRuntime;
10
+ };
11
+ const setCachedProjectRuntime = (value) => {
12
+ const current = getCachedProjectRuntime();
13
+ const next = Object.freeze({
14
+ ...(current?.serviceManifest === undefined ? {} : { serviceManifest: current.serviceManifest }),
15
+ ...(current?.activeService === undefined ? {} : { activeService: current.activeService }),
16
+ ...(value.serviceManifest === undefined ? {} : { serviceManifest: value.serviceManifest }),
17
+ ...(value.activeService === undefined ? {} : { activeService: value.activeService }),
18
+ });
19
+ getProjectRuntimeGlobal().__zintrustProjectRuntime = next;
20
+ return next;
21
+ };
22
+ const createValidationError = (message) => {
23
+ // eslint-disable-next-line no-restricted-syntax
24
+ const error = new Error(message);
25
+ error.name = 'ValidationError';
26
+ error.statusCode = 400;
27
+ error.code = 'VALIDATION_ERROR';
28
+ return error;
29
+ };
30
+ const loadCloudflareWorker = async () => {
31
+ return (await import('./functions/cloudflare.js'));
32
+ };
9
33
  const isAbsolutePath = (value) => value.startsWith('/') || /^[A-Za-z]:[\\/]/.test(value);
10
34
  const fileUrlToPathLike = (value) => {
11
35
  if (!value.startsWith(ZintrustLang.FILE_PROTOCOL))
@@ -34,9 +58,9 @@ export const isNodeMain = (importMetaUrl) => {
34
58
  export const configureStandaloneService = (activeService) => {
35
59
  const normalized = normalizeActiveServiceRuntime(activeService);
36
60
  if (normalized === undefined) {
37
- throw ErrorFactory.createValidationError('Standalone service runtime requires at least domain and name.');
61
+ throw createValidationError('Standalone service runtime requires at least domain and name.');
38
62
  }
39
- return ProjectRuntime.set({ activeService: normalized }).activeService ?? normalized;
63
+ return setCachedProjectRuntime({ activeService: normalized }).activeService ?? normalized;
40
64
  };
41
65
  const normalizeStandaloneEnvPaths = (value) => {
42
66
  if (isNonEmptyString(value)) {
@@ -104,16 +128,35 @@ export const start = async () => {
104
128
  const projectBootstrapModule = (await import('./runtime/ProjectBootstrap.js'));
105
129
  await projectBootstrapModule.loadProjectBootstrap();
106
130
  };
131
+ const cloudflareFetch = async (request, env, ctx) => {
132
+ const worker = await loadCloudflareWorker();
133
+ if (typeof worker.fetch === 'function') {
134
+ return worker.fetch(request, env, ctx);
135
+ }
136
+ const callable = worker;
137
+ return callable(request, env, ctx);
138
+ };
139
+ const cloudflareWorker = Object.freeze({
140
+ fetch: cloudflareFetch,
141
+ });
142
+ const deno = async (request) => {
143
+ const module = (await import('./functions/deno.js'));
144
+ return module.default(request);
145
+ };
146
+ const handler = async (event, context) => {
147
+ const module = (await import('./functions/lambda.js'));
148
+ return module.handler(event, context);
149
+ };
107
150
  /**
108
151
  * Cloudflare Workers entry (module worker style).
109
152
  */
110
- export { default } from './functions/cloudflare.js';
111
- export { default as cloudflareWorker } from './functions/cloudflare.js';
153
+ export default cloudflareWorker;
154
+ export { cloudflareWorker };
112
155
  /**
113
156
  * Deno fetch handler.
114
157
  */
115
- export { default as deno } from './functions/deno.js';
158
+ export { deno };
116
159
  /**
117
160
  * AWS Lambda handler.
118
161
  */
119
- export { handler } from './functions/lambda.js';
162
+ export { handler };
@@ -0,0 +1,5 @@
1
+ import { zintrustAppEslintConfig } from '@zintrust/governance/eslint';
2
+
3
+ export default zintrustAppEslintConfig({
4
+ tsconfigRootDir: import.meta.dirname,
5
+ });
@@ -6,17 +6,19 @@
6
6
  "scripts": {
7
7
  "dev": "zin s",
8
8
  "build": "tsc && tsc-alias",
9
+ "lint": "eslint .",
9
10
  "start": "zin s --mode production --no-watch",
10
11
  "test": "vitest run",
11
12
  "type-check": "tsc --noEmit"
12
13
  },
13
14
  "dependencies": {
14
15
  "@zintrust/core": "^{{coreVersion}}",
15
- "@zintrust/d1-migrator": "^0.4.6",
16
- "@zintrust/governance": "{{governanceVersion}}"
16
+ "@zintrust/d1-migrator": "^0.4.6"
17
17
  },
18
18
  "devDependencies": {
19
+ "@zintrust/governance": "{{governanceVersion}}",
19
20
  "@types/node": "^25.0.3",
21
+ "eslint": "^10.0.0",
20
22
  "tsx": "^4.21.0",
21
23
  "tsc-alias": "^1.8.16",
22
24
  "typescript": "^5.9.3",