zod-aot 0.14.1 → 0.15.0

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/dist/loader.d.ts CHANGED
@@ -6,7 +6,7 @@ export interface LoadOptions {
6
6
  * Dynamically import a source file (.ts or .js).
7
7
  * - Bun/Deno: native TypeScript support, direct import
8
8
  * - Node.js: uses jiti for reliable TypeScript transpilation
9
- * (handles extensionless imports, enums, and all TS syntax)
9
+ * (handles extensionless imports, enums, path aliases, and all TS syntax)
10
10
  */
11
11
  export declare function loadSourceFile(filePath: string, options?: LoadOptions): Promise<Record<string, unknown>>;
12
12
  //# sourceMappingURL=loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,WAAW;IAC1B,8FAA8F;IAC9F,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAelC"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAC1B,8FAA8F;IAC9F,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AA+CD;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAmBlC"}
package/dist/loader.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import path from "node:path";
2
2
  import { pathToFileURL } from "node:url";
3
+ import { getTsconfig } from "get-tsconfig";
3
4
  function detectRuntime() {
4
5
  if ("Bun" in globalThis)
5
6
  return "bun";
@@ -7,11 +8,53 @@ function detectRuntime() {
7
8
  return "deno";
8
9
  return "node";
9
10
  }
11
+ /** Cache: tsconfig.json absolute path → resolved jiti alias map */
12
+ const aliasCache = new Map();
13
+ /**
14
+ * Resolve tsconfig.json path aliases into the format jiti expects.
15
+ * Returns an empty object if no tsconfig.json is found or no paths are configured.
16
+ *
17
+ * tsconfig paths use wildcards: { "@/*": ["./src/*"] }
18
+ * jiti uses prefix matching: { "@": "/absolute/path/to/src" }
19
+ *
20
+ * The trailing "/*" is stripped from both key and value before passing to jiti.
21
+ */
22
+ function resolveTsconfigAliases(fromDir) {
23
+ const tsconfig = getTsconfig(fromDir);
24
+ if (!tsconfig)
25
+ return {};
26
+ const cached = aliasCache.get(tsconfig.path);
27
+ if (cached)
28
+ return cached;
29
+ const paths = tsconfig.config.compilerOptions?.paths;
30
+ if (!paths || Object.keys(paths).length === 0) {
31
+ const empty = {};
32
+ aliasCache.set(tsconfig.path, empty);
33
+ return empty;
34
+ }
35
+ const tsconfigDir = path.dirname(tsconfig.path);
36
+ const baseUrl = tsconfig.config.compilerOptions?.baseUrl;
37
+ const baseDir = baseUrl ? path.resolve(tsconfigDir, baseUrl) : tsconfigDir;
38
+ const alias = {};
39
+ for (const [pattern, targets] of Object.entries(paths)) {
40
+ if (!targets || targets.length === 0)
41
+ continue;
42
+ const target = targets[0];
43
+ if (!target)
44
+ continue;
45
+ // Strip trailing "/*" — jiti uses prefix matching, not glob wildcards
46
+ const key = pattern.endsWith("/*") ? pattern.slice(0, -2) : pattern;
47
+ const val = target.endsWith("/*") ? target.slice(0, -2) : target;
48
+ alias[key] = path.resolve(baseDir, val);
49
+ }
50
+ aliasCache.set(tsconfig.path, alias);
51
+ return alias;
52
+ }
10
53
  /**
11
54
  * Dynamically import a source file (.ts or .js).
12
55
  * - Bun/Deno: native TypeScript support, direct import
13
56
  * - Node.js: uses jiti for reliable TypeScript transpilation
14
- * (handles extensionless imports, enums, and all TS syntax)
57
+ * (handles extensionless imports, enums, path aliases, and all TS syntax)
15
58
  */
16
59
  export async function loadSourceFile(filePath, options) {
17
60
  const absPath = path.resolve(filePath);
@@ -21,9 +64,12 @@ export async function loadSourceFile(filePath, options) {
21
64
  if (runtime === "bun" || runtime === "deno") {
22
65
  return (await import(pathToFileURL(absPath).href + suffix));
23
66
  }
67
+ const alias = resolveTsconfigAliases(path.dirname(absPath));
24
68
  const { createJiti } = await import("jiti");
25
69
  const jiti = createJiti(pathToFileURL(absPath).href, {
26
70
  moduleCache: !options?.cacheBust,
71
+ alias,
72
+ jsx: true,
27
73
  });
28
74
  return (await jiti.import(absPath));
29
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,SAAS,aAAa;IACpB,IAAI,KAAK,IAAI,UAAU;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,MAAM,IAAI,UAAU;QAAE,OAAO,MAAM,CAAC;IACxC,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,OAAqB;IAErB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5D,0CAA0C;IAC1C,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC5C,OAAO,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAA4B,CAAC;IACzF,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE;QACnD,WAAW,EAAE,CAAC,OAAO,EAAE,SAAS;KACjC,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAA4B,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zod-aot",
3
- "version": "0.14.1",
3
+ "version": "0.15.0",
4
4
  "description": "Compile Zod schemas into zero-overhead validation functions at build time",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -84,6 +84,7 @@
84
84
  },
85
85
  "dependencies": {
86
86
  "acorn": "^8.16.0",
87
+ "get-tsconfig": "^4.13.0",
87
88
  "jiti": "^2.6.1",
88
89
  "unplugin": "^3.0.0"
89
90
  },