zod-compiler 1.0.9 → 1.0.10
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/core/compile.d.ts +3 -2
- package/dist/core/compile.d.ts.map +1 -1
- package/dist/core/compile.js +18 -10
- package/dist/core/compile.js.map +1 -1
- package/dist/core/iife.d.ts +16 -2
- package/dist/core/iife.d.ts.map +1 -1
- package/dist/core/iife.js +16 -2
- package/dist/core/iife.js.map +1 -1
- package/dist/loader.d.ts +6 -0
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +8 -0
- package/dist/loader.js.map +1 -1
- package/dist/unplugin/dep-graph.d.ts +38 -0
- package/dist/unplugin/dep-graph.d.ts.map +1 -0
- package/dist/unplugin/dep-graph.js +206 -0
- package/dist/unplugin/dep-graph.js.map +1 -0
- package/dist/unplugin/index.d.ts.map +1 -1
- package/dist/unplugin/index.js +27 -5
- package/dist/unplugin/index.js.map +1 -1
- package/package.json +1 -1
package/dist/core/compile.d.ts
CHANGED
|
@@ -3,8 +3,9 @@ import type { CompiledSchema } from "./types.js";
|
|
|
3
3
|
/**
|
|
4
4
|
* Compile a Zod schema into an optimized validator.
|
|
5
5
|
*
|
|
6
|
-
* At dev-time, falls back to Zod's runtime validation
|
|
7
|
-
* preserving
|
|
6
|
+
* At dev-time, falls back to Zod's runtime validation: the schema itself is
|
|
7
|
+
* returned (identity-preserving for toJSONSchema/.meta()), tagged with the
|
|
8
|
+
* compiled marker so build-time discovery can find it.
|
|
8
9
|
* After `npx zod-compiler generate`, import from the `.compiled.ts` file instead.
|
|
9
10
|
*
|
|
10
11
|
* The return type is `T & CompiledSchema<output<T>>`, preserving the original
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/core/compile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/core/compile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAuBjD;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAMtF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAAC,OAAO,CAAC,CAEjF"}
|
package/dist/core/compile.js
CHANGED
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
const COMPILED_MARKER = Symbol.for("zod-compiler:compiled");
|
|
2
2
|
/**
|
|
3
|
-
* Dev-time fallback:
|
|
4
|
-
*
|
|
3
|
+
* Dev-time fallback: returns the ORIGINAL schema object, augmented with a
|
|
4
|
+
* non-enumerable `schema` self-reference (CLI emitter discovery reads
|
|
5
|
+
* `(__src_X as any).schema`) and the compiled marker.
|
|
5
6
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
7
|
+
* Identity preservation is load-bearing: zod v4 keys toJSONSchema's
|
|
8
|
+
* processing context and globalRegistry/.meta() on schema object identity —
|
|
9
|
+
* an Object.create facade crashes toJSONSchema the moment the compiled
|
|
10
|
+
* schema is composed into another schema, and silently loses .meta()
|
|
11
|
+
* metadata. parse/safeParse/... remain the schema's own zod methods.
|
|
8
12
|
*/
|
|
9
13
|
function createFallback(zodSchema) {
|
|
10
|
-
const facade =
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
const facade = zodSchema;
|
|
15
|
+
if (!("schema" in facade)) {
|
|
16
|
+
Object.defineProperty(facade, "schema", { value: zodSchema, enumerable: false });
|
|
17
|
+
}
|
|
13
18
|
return facade;
|
|
14
19
|
}
|
|
15
20
|
/**
|
|
16
21
|
* Compile a Zod schema into an optimized validator.
|
|
17
22
|
*
|
|
18
|
-
* At dev-time, falls back to Zod's runtime validation
|
|
19
|
-
* preserving
|
|
23
|
+
* At dev-time, falls back to Zod's runtime validation: the schema itself is
|
|
24
|
+
* returned (identity-preserving for toJSONSchema/.meta()), tagged with the
|
|
25
|
+
* compiled marker so build-time discovery can find it.
|
|
20
26
|
* After `npx zod-compiler generate`, import from the `.compiled.ts` file instead.
|
|
21
27
|
*
|
|
22
28
|
* The return type is `T & CompiledSchema<output<T>>`, preserving the original
|
|
@@ -24,7 +30,9 @@ function createFallback(zodSchema) {
|
|
|
24
30
|
*/
|
|
25
31
|
export function compile(zodSchema) {
|
|
26
32
|
const result = createFallback(zodSchema);
|
|
27
|
-
|
|
33
|
+
if (!(COMPILED_MARKER in result)) {
|
|
34
|
+
Object.defineProperty(result, COMPILED_MARKER, { value: true, enumerable: false });
|
|
35
|
+
}
|
|
28
36
|
return result;
|
|
29
37
|
}
|
|
30
38
|
/**
|
package/dist/core/compile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/core/compile.ts"],"names":[],"mappings":"AAGA,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAE5D
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/core/compile.ts"],"names":[],"mappings":"AAGA,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAE5D;;;;;;;;;;GAUG;AACH,SAAS,cAAc,CAAI,SAAkB;IAC3C,MAAM,MAAM,GAAG,SAA8B,CAAC;IAC9C,IAAI,CAAC,CAAC,QAAQ,IAAK,MAAiB,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CAAoB,SAAY;IACrD,MAAM,MAAM,GAAG,cAAc,CAAY,SAAS,CAAC,CAAC;IACpD,IAAI,CAAC,CAAC,eAAe,IAAK,MAAiB,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,MAAuC,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,eAAe,IAAI,KAAK,CAAC;AACjF,CAAC"}
|
package/dist/core/iife.d.ts
CHANGED
|
@@ -51,7 +51,21 @@ export declare const FIN_DEFERRED_DECL = "function __finD(collect){var c;return{
|
|
|
51
51
|
* the zod-compiler package itself, so zod-compiler stays a devDependency and
|
|
52
52
|
* the helper set is always version-locked to the codegen that calls it.
|
|
53
53
|
* Wraps a safeParse function into the CompiledSchema interface.
|
|
54
|
-
*
|
|
54
|
+
*
|
|
55
|
+
* IDENTITY-PRESERVING: with zodCompat (schema != null) the compiled
|
|
56
|
+
* parse/safeParse/parseAsync/safeParseAsync are installed as OWN properties
|
|
57
|
+
* on the original schema object, which is returned as-is. zod v4 keys
|
|
58
|
+
* several APIs on object identity — toJSONSchema's ctx.seen registers the
|
|
59
|
+
* object it is handed while each processor closure captures the original
|
|
60
|
+
* inst (a wrapper crashes `optionalProcessor` with "Cannot set properties
|
|
61
|
+
* of undefined (setting 'ref')" the moment a compiled schema is composed
|
|
62
|
+
* into another schema), and globalRegistry/.meta() is a WeakMap keyed by
|
|
63
|
+
* the schema instance (a wrapper silently loses OpenAPI titles/ids). An
|
|
64
|
+
* Object.create wrapper breaks both; mutating the original breaks neither
|
|
65
|
+
* (zod's internal parsing flows through _zod.run, never the public
|
|
66
|
+
* methods, and derived schemas — .optional(), .extend() — are fresh
|
|
67
|
+
* instances that fall back to plain zod). schema=null (zodCompat: false)
|
|
68
|
+
* still produces a plain method-bag object.
|
|
55
69
|
*
|
|
56
70
|
* fc is the schema's hosted fast-check boolean function (null when no Fast
|
|
57
71
|
* Path exists). parse()/parseAsync() try it first and return the input
|
|
@@ -60,7 +74,7 @@ export declare const FIN_DEFERRED_DECL = "function __finD(collect){var c;return{
|
|
|
60
74
|
* SafeParseResult that escape analysis cannot remove (fn never inlines).
|
|
61
75
|
* Fast-path-eligible schemas never mutate, so fc(input) ⟹ data === input.
|
|
62
76
|
*/
|
|
63
|
-
export declare const MK_VALIDATOR_DECL = "function __mkv(fn,schema,fc){var w=schema
|
|
77
|
+
export declare const MK_VALIDATOR_DECL = "function __mkv(fn,schema,fc){var w=schema||{};w.parse=fc?function(input){if(fc(input))return input;var r=fn(input);if(r.success)return r.data;throw r.error;}:function(input){var r=fn(input);if(r.success)return r.data;throw r.error;};w.safeParse=fn;w.safeParseAsync=function(input){return Promise.resolve(fn(input));};w.parseAsync=fc?function(input){if(fc(input))return Promise.resolve(input);var r=fn(input);if(r.success)return Promise.resolve(r.data);return Promise.reject(r.error);}:function(input){var r=fn(input);if(r.success)return Promise.resolve(r.data);return Promise.reject(r.error);};return w;}";
|
|
64
78
|
/**
|
|
65
79
|
* Generate a `/* @__PURE__ * /` IIFE wrapping a compiled validator.
|
|
66
80
|
*
|
package/dist/core/iife.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iife.d.ts","sourceRoot":"","sources":["../../src/core/iife.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,yFAAyF;AACzF,eAAO,MAAM,iBAAiB,uFACsD,CAAC;AAErF,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,iDAAiD,CAAC;AAElF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,QAAQ,0RACkQ,CAAC;AAExR;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,sQACqO,CAAC;AAEpQ
|
|
1
|
+
{"version":3,"file":"iife.d.ts","sourceRoot":"","sources":["../../src/core/iife.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,yFAAyF;AACzF,eAAO,MAAM,iBAAiB,uFACsD,CAAC;AAErF,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,iDAAiD,CAAC;AAElF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,QAAQ,0RACkQ,CAAC;AAExR;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,sQACqO,CAAC;AAEpQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,iBAAiB,imBACkkB,CAAC;AAUjmB;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,kBAAkB,EAC1B,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,GAC5C,MAAM,CAmBR"}
|
package/dist/core/iife.js
CHANGED
|
@@ -50,7 +50,21 @@ export const FIN_DEFERRED_DECL = 'function __finD(collect){var c;return{success:
|
|
|
50
50
|
* the zod-compiler package itself, so zod-compiler stays a devDependency and
|
|
51
51
|
* the helper set is always version-locked to the codegen that calls it.
|
|
52
52
|
* Wraps a safeParse function into the CompiledSchema interface.
|
|
53
|
-
*
|
|
53
|
+
*
|
|
54
|
+
* IDENTITY-PRESERVING: with zodCompat (schema != null) the compiled
|
|
55
|
+
* parse/safeParse/parseAsync/safeParseAsync are installed as OWN properties
|
|
56
|
+
* on the original schema object, which is returned as-is. zod v4 keys
|
|
57
|
+
* several APIs on object identity — toJSONSchema's ctx.seen registers the
|
|
58
|
+
* object it is handed while each processor closure captures the original
|
|
59
|
+
* inst (a wrapper crashes `optionalProcessor` with "Cannot set properties
|
|
60
|
+
* of undefined (setting 'ref')" the moment a compiled schema is composed
|
|
61
|
+
* into another schema), and globalRegistry/.meta() is a WeakMap keyed by
|
|
62
|
+
* the schema instance (a wrapper silently loses OpenAPI titles/ids). An
|
|
63
|
+
* Object.create wrapper breaks both; mutating the original breaks neither
|
|
64
|
+
* (zod's internal parsing flows through _zod.run, never the public
|
|
65
|
+
* methods, and derived schemas — .optional(), .extend() — are fresh
|
|
66
|
+
* instances that fall back to plain zod). schema=null (zodCompat: false)
|
|
67
|
+
* still produces a plain method-bag object.
|
|
54
68
|
*
|
|
55
69
|
* fc is the schema's hosted fast-check boolean function (null when no Fast
|
|
56
70
|
* Path exists). parse()/parseAsync() try it first and return the input
|
|
@@ -59,7 +73,7 @@ export const FIN_DEFERRED_DECL = 'function __finD(collect){var c;return{success:
|
|
|
59
73
|
* SafeParseResult that escape analysis cannot remove (fn never inlines).
|
|
60
74
|
* Fast-path-eligible schemas never mutate, so fc(input) ⟹ data === input.
|
|
61
75
|
*/
|
|
62
|
-
export const MK_VALIDATOR_DECL = "function __mkv(fn,schema,fc){var w=schema
|
|
76
|
+
export const MK_VALIDATOR_DECL = "function __mkv(fn,schema,fc){var w=schema||{};w.parse=fc?function(input){if(fc(input))return input;var r=fn(input);if(r.success)return r.data;throw r.error;}:function(input){var r=fn(input);if(r.success)return r.data;throw r.error;};w.safeParse=fn;w.safeParseAsync=function(input){return Promise.resolve(fn(input));};w.parseAsync=fc?function(input){if(fc(input))return Promise.resolve(input);var r=fn(input);if(r.success)return Promise.resolve(r.data);return Promise.reject(r.error);}:function(input){var r=fn(input);if(r.success)return Promise.resolve(r.data);return Promise.reject(r.error);};return w;}";
|
|
63
77
|
function extractFunctionName(functionDef) {
|
|
64
78
|
const match = /^function\s+(\w+)\s*\(/.exec(functionDef);
|
|
65
79
|
if (!match?.[1]) {
|
package/dist/core/iife.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iife.js","sourceRoot":"","sources":["../../src/core/iife.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,yFAAyF;AACzF,MAAM,CAAC,MAAM,iBAAiB,GAC5B,kFAAkF,CAAC;AAErF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,8CAA8C,CAAC;AAElF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,QAAQ,GACnB,qRAAqR,CAAC;AAExR;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAC5B,iQAAiQ,CAAC;AAEpQ
|
|
1
|
+
{"version":3,"file":"iife.js","sourceRoot":"","sources":["../../src/core/iife.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,yFAAyF;AACzF,MAAM,CAAC,MAAM,iBAAiB,GAC5B,kFAAkF,CAAC;AAErF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,8CAA8C,CAAC;AAElF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,QAAQ,GACnB,qRAAqR,CAAC;AAExR;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAC5B,iQAAiQ,CAAC;AAEpQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAC5B,8lBAA8lB,CAAC;AAEjmB,SAAS,mBAAmB,CAAC,WAAmB;IAC9C,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,UAAkB,EAClB,MAA0B,EAC1B,OAA6C;IAE7C,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAC7C,MAAM,MAAM,GAAG,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,KAAK,KAAK,CAAC;IAC/C,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;IAClD,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,IAAI,MAAM,CAAC;IAEjD,OAAO;QACL,0BAA0B;QAC1B,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YACvB,CAAC,CAAC,CAAC,aAAa,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YACtF,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,aAAa,CAAC,IAAI;aAClB,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,oBAAoB,CAAC;QACtE,aAAa,CAAC,WAAW;QACzB,gBAAgB,MAAM,IAAI,SAAS,IAAI,KAAK,IAAI;QAChD,MAAM;KACP,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
package/dist/loader.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tsconfig path aliases visible from a directory, in jiti's prefix-match
|
|
3
|
+
* format. Used by the static dependency crawler (unplugin/dep-graph.ts) so
|
|
4
|
+
* alias imports resolve the same way the loader resolves them.
|
|
5
|
+
*/
|
|
6
|
+
export declare function resolveTsconfigAliases(fromDir: string): Record<string, string>;
|
|
1
7
|
/**
|
|
2
8
|
* Drop every first-party (non-node_modules) module from the shared loader
|
|
3
9
|
* caches. Called on watch/HMR file changes so the next discovery re-executes
|
package/dist/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AA+DA;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE9E;AAuBD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAS5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,GAAG,IAAI,CAW1D;AAiBD;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAmBvF;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAkBlC"}
|
package/dist/loader.js
CHANGED
|
@@ -49,6 +49,14 @@ function resolveLoaderConfig(fromDir) {
|
|
|
49
49
|
aliasCache.set(tsconfig.path, alias);
|
|
50
50
|
return { key: tsconfig.path, alias };
|
|
51
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* tsconfig path aliases visible from a directory, in jiti's prefix-match
|
|
54
|
+
* format. Used by the static dependency crawler (unplugin/dep-graph.ts) so
|
|
55
|
+
* alias imports resolve the same way the loader resolves them.
|
|
56
|
+
*/
|
|
57
|
+
export function resolveTsconfigAliases(fromDir) {
|
|
58
|
+
return resolveLoaderConfig(fromDir).alias;
|
|
59
|
+
}
|
|
52
60
|
/**
|
|
53
61
|
* Shared jiti instances, keyed by tsconfig identity (the alias config).
|
|
54
62
|
* Sharing one instance with `moduleCache: true` across the whole build means
|
package/dist/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static per-file dependency graphs for disk-cache invalidation.
|
|
3
|
+
*
|
|
4
|
+
* The disk cache used to record `getFirstPartyModulePaths()` — the superset
|
|
5
|
+
* of EVERY first-party module the loader had executed so far — as each
|
|
6
|
+
* entry's dependency set. Supersets never serve stale results, but in a
|
|
7
|
+
* large codebase every entry ends up recording the whole project (~1,900
|
|
8
|
+
* deps, ~400KB JSON per entry in the field report), so ANY commit
|
|
9
|
+
* invalidates essentially the entire cache and CI re-pays full discovery
|
|
10
|
+
* every run.
|
|
11
|
+
*
|
|
12
|
+
* This module computes the file's ACTUAL import graph statically: scan
|
|
13
|
+
* import/export/require specifiers, resolve them (relative paths with
|
|
14
|
+
* extension probing, tsconfig path aliases via the loader's config, bare
|
|
15
|
+
* specifiers through node resolution), and BFS across first-party files.
|
|
16
|
+
* No file is executed. Type-only imports are included (over-approximation
|
|
17
|
+
* only over-invalidates).
|
|
18
|
+
*
|
|
19
|
+
* Soundness rule: when anything cannot be analyzed — a non-literal dynamic
|
|
20
|
+
* import, an unresolvable relative specifier — the crawl reports
|
|
21
|
+
* `complete: false` and the caller falls back to the superset. A static
|
|
22
|
+
* crawl may only replace the superset when it provably covers everything
|
|
23
|
+
* the file can load.
|
|
24
|
+
*/
|
|
25
|
+
export interface StaticDeps {
|
|
26
|
+
/** Absolute real paths of first-party files reachable from the entry. */
|
|
27
|
+
deps: string[];
|
|
28
|
+
/** False when the graph could not be fully analyzed — use the superset. */
|
|
29
|
+
complete: boolean;
|
|
30
|
+
}
|
|
31
|
+
/** Reset the per-process scan memo (watch-mode file changes). */
|
|
32
|
+
export declare function resetDepGraphMemo(): void;
|
|
33
|
+
/**
|
|
34
|
+
* Compute the static first-party dependency closure of `entryFile`.
|
|
35
|
+
* The entry itself is excluded (its content is part of the cache key).
|
|
36
|
+
*/
|
|
37
|
+
export declare function collectStaticDeps(entryFile: string): StaticDeps;
|
|
38
|
+
//# sourceMappingURL=dep-graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dep-graph.d.ts","sourceRoot":"","sources":["../../src/unplugin/dep-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAOH,MAAM,WAAW,UAAU;IACzB,yEAAyE;IACzE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,2EAA2E;IAC3E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAmBD,iEAAiE;AACjE,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAiID;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAgC/D"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static per-file dependency graphs for disk-cache invalidation.
|
|
3
|
+
*
|
|
4
|
+
* The disk cache used to record `getFirstPartyModulePaths()` — the superset
|
|
5
|
+
* of EVERY first-party module the loader had executed so far — as each
|
|
6
|
+
* entry's dependency set. Supersets never serve stale results, but in a
|
|
7
|
+
* large codebase every entry ends up recording the whole project (~1,900
|
|
8
|
+
* deps, ~400KB JSON per entry in the field report), so ANY commit
|
|
9
|
+
* invalidates essentially the entire cache and CI re-pays full discovery
|
|
10
|
+
* every run.
|
|
11
|
+
*
|
|
12
|
+
* This module computes the file's ACTUAL import graph statically: scan
|
|
13
|
+
* import/export/require specifiers, resolve them (relative paths with
|
|
14
|
+
* extension probing, tsconfig path aliases via the loader's config, bare
|
|
15
|
+
* specifiers through node resolution), and BFS across first-party files.
|
|
16
|
+
* No file is executed. Type-only imports are included (over-approximation
|
|
17
|
+
* only over-invalidates).
|
|
18
|
+
*
|
|
19
|
+
* Soundness rule: when anything cannot be analyzed — a non-literal dynamic
|
|
20
|
+
* import, an unresolvable relative specifier — the crawl reports
|
|
21
|
+
* `complete: false` and the caller falls back to the superset. A static
|
|
22
|
+
* crawl may only replace the superset when it provably covers everything
|
|
23
|
+
* the file can load.
|
|
24
|
+
*/
|
|
25
|
+
import * as fs from "node:fs";
|
|
26
|
+
import { createRequire } from "node:module";
|
|
27
|
+
import * as path from "node:path";
|
|
28
|
+
import { resolveTsconfigAliases } from "#src/loader.js";
|
|
29
|
+
const SOURCE_EXTENSIONS = [".ts", ".tsx", ".mts", ".cts", ".js", ".jsx", ".mjs", ".cjs"];
|
|
30
|
+
const NODE_MODULES_SEGMENT = `${path.sep}node_modules${path.sep}`;
|
|
31
|
+
/** Specifier schemes that never resolve to project files. */
|
|
32
|
+
const SKIP_SPECIFIER = /^(?:node:|data:|virtual:|\0)/;
|
|
33
|
+
/** Runaway guard — graphs larger than this fall back to the superset. */
|
|
34
|
+
const MAX_FILES = 10_000;
|
|
35
|
+
/** Per-process scan memo, revalidated by mtime. */
|
|
36
|
+
const scanMemo = new Map();
|
|
37
|
+
/** Reset the per-process scan memo (watch-mode file changes). */
|
|
38
|
+
export function resetDepGraphMemo() {
|
|
39
|
+
scanMemo.clear();
|
|
40
|
+
}
|
|
41
|
+
const STATIC_SPECIFIER = /(?:\bfrom\s*|\bimport\s+|\bimport\s*\(\s*|\brequire\s*\(\s*)["']([^"'\n]+)["']/g;
|
|
42
|
+
const DYNAMIC_CALL = /\b(?:import|require)\s*\(\s*(?!["'])[^)\s]/g;
|
|
43
|
+
function scanFile(filePath) {
|
|
44
|
+
let mtimeMs;
|
|
45
|
+
try {
|
|
46
|
+
mtimeMs = fs.statSync(filePath).mtimeMs;
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
scanMemo.set(filePath, null);
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
const memo = scanMemo.get(filePath);
|
|
53
|
+
if (memo !== undefined && memo !== null && memo.mtimeMs === mtimeMs)
|
|
54
|
+
return memo;
|
|
55
|
+
let source;
|
|
56
|
+
try {
|
|
57
|
+
source = fs.readFileSync(filePath, "utf8");
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
scanMemo.set(filePath, null);
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
const specifiers = [];
|
|
64
|
+
for (const m of source.matchAll(STATIC_SPECIFIER)) {
|
|
65
|
+
const spec = m[1];
|
|
66
|
+
if (spec)
|
|
67
|
+
specifiers.push(spec);
|
|
68
|
+
}
|
|
69
|
+
// String/comment contents can false-positive both patterns; extra
|
|
70
|
+
// specifiers only add deps (safe), a false `hasDynamic` only falls back
|
|
71
|
+
// to the superset (safe).
|
|
72
|
+
const scan = {
|
|
73
|
+
mtimeMs,
|
|
74
|
+
specifiers,
|
|
75
|
+
hasDynamic: DYNAMIC_CALL.test(source),
|
|
76
|
+
};
|
|
77
|
+
scanMemo.set(filePath, scan);
|
|
78
|
+
return scan;
|
|
79
|
+
}
|
|
80
|
+
/** Probe a path (possibly extensionless) to an existing file. */
|
|
81
|
+
function probeFile(base) {
|
|
82
|
+
const tryStat = (p) => {
|
|
83
|
+
try {
|
|
84
|
+
return fs.statSync(p).isFile() ? p : null;
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
if (path.extname(base) !== "" && tryStat(base))
|
|
91
|
+
return base;
|
|
92
|
+
for (const ext of SOURCE_EXTENSIONS) {
|
|
93
|
+
const hit = tryStat(base + ext);
|
|
94
|
+
if (hit)
|
|
95
|
+
return hit;
|
|
96
|
+
}
|
|
97
|
+
for (const ext of SOURCE_EXTENSIONS) {
|
|
98
|
+
const hit = tryStat(path.join(base, `index${ext}`));
|
|
99
|
+
if (hit)
|
|
100
|
+
return hit;
|
|
101
|
+
}
|
|
102
|
+
// extensioned path that doesn't exist as-is: TS source referenced with a
|
|
103
|
+
// .js specifier (nodenext style) — swap the extension family.
|
|
104
|
+
if (/\.[cm]?js$/.test(base)) {
|
|
105
|
+
const stripped = base.replace(/\.([cm]?)js$/, ".$1ts");
|
|
106
|
+
const hit = tryStat(stripped) ?? tryStat(base.replace(/\.[cm]?js$/, ".tsx"));
|
|
107
|
+
if (hit)
|
|
108
|
+
return hit;
|
|
109
|
+
}
|
|
110
|
+
return tryStat(base);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Resolve one specifier from a file. Returns:
|
|
114
|
+
* - an absolute path (first-party file to record + crawl)
|
|
115
|
+
* - null when the dep is intentionally out of scope (node_modules, builtins)
|
|
116
|
+
* - "incomplete" when resolution failed and the graph cannot be trusted
|
|
117
|
+
*/
|
|
118
|
+
function resolveSpecifier(rawSpec, fromFile, aliases) {
|
|
119
|
+
if (SKIP_SPECIFIER.test(rawSpec))
|
|
120
|
+
return null;
|
|
121
|
+
// Vite-style resource queries (./logo.svg?url, ./shader.glsl?raw) resolve
|
|
122
|
+
// to the underlying file.
|
|
123
|
+
const q = rawSpec.indexOf("?");
|
|
124
|
+
const spec = q === -1 ? rawSpec : rawSpec.slice(0, q);
|
|
125
|
+
if (spec === "")
|
|
126
|
+
return null;
|
|
127
|
+
if (spec.startsWith("./") || spec.startsWith("../")) {
|
|
128
|
+
const hit = probeFile(path.resolve(path.dirname(fromFile), spec));
|
|
129
|
+
return hit === null ? "incomplete" : firstPartyOrNull(hit);
|
|
130
|
+
}
|
|
131
|
+
for (const [prefix, target] of Object.entries(aliases)) {
|
|
132
|
+
if (spec === prefix || spec.startsWith(`${prefix}/`)) {
|
|
133
|
+
const rest = spec === prefix ? "" : spec.slice(prefix.length + 1);
|
|
134
|
+
const hit = probeFile(path.join(target, rest));
|
|
135
|
+
return hit === null ? "incomplete" : firstPartyOrNull(hit);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// Bare specifier (package) or package.json "imports" (#...): node
|
|
139
|
+
// resolution from the importing file. node_modules results are out of
|
|
140
|
+
// scope (zod's version is part of the cache key); symlinked workspace
|
|
141
|
+
// packages realpath outside node_modules and are crawled as first-party.
|
|
142
|
+
try {
|
|
143
|
+
const resolved = createRequire(fromFile).resolve(spec);
|
|
144
|
+
if (!path.isAbsolute(resolved))
|
|
145
|
+
return null; // node builtin
|
|
146
|
+
return firstPartyOrNull(resolved);
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
// Unresolvable from Node's algorithm. jiti may still resolve it (e.g.
|
|
150
|
+
// ESM-only packages without CJS entries) — the file itself stays a dep
|
|
151
|
+
// through the entry, but its subtree is unknown for bare packages.
|
|
152
|
+
// Treat unresolvable BARE specifiers as out-of-scope third-party
|
|
153
|
+
// (caught by the zod-version/plugin key when relevant) only when they
|
|
154
|
+
// cannot be project files; '#' subpath imports stay strict.
|
|
155
|
+
return spec.startsWith("#") ? "incomplete" : null;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
function firstPartyOrNull(resolved) {
|
|
159
|
+
let real = resolved;
|
|
160
|
+
try {
|
|
161
|
+
real = fs.realpathSync(resolved);
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
// keep the unresolved path
|
|
165
|
+
}
|
|
166
|
+
return real.includes(NODE_MODULES_SEGMENT) ? null : real;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Compute the static first-party dependency closure of `entryFile`.
|
|
170
|
+
* The entry itself is excluded (its content is part of the cache key).
|
|
171
|
+
*/
|
|
172
|
+
export function collectStaticDeps(entryFile) {
|
|
173
|
+
const entry = firstPartyOrNull(path.resolve(entryFile));
|
|
174
|
+
if (entry === null)
|
|
175
|
+
return { deps: [], complete: false };
|
|
176
|
+
const visited = new Set([entry]);
|
|
177
|
+
const queue = [entry];
|
|
178
|
+
let complete = true;
|
|
179
|
+
while (queue.length > 0) {
|
|
180
|
+
if (visited.size > MAX_FILES)
|
|
181
|
+
return { deps: [], complete: false };
|
|
182
|
+
const file = queue.pop();
|
|
183
|
+
const scan = scanFile(file);
|
|
184
|
+
if (scan === null) {
|
|
185
|
+
// Unreadable first-party file in the graph — cannot trust the crawl.
|
|
186
|
+
complete = false;
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
if (scan.hasDynamic)
|
|
190
|
+
complete = false;
|
|
191
|
+
const aliases = resolveTsconfigAliases(path.dirname(file));
|
|
192
|
+
for (const spec of scan.specifiers) {
|
|
193
|
+
const resolved = resolveSpecifier(spec, file, aliases);
|
|
194
|
+
if (resolved === "incomplete") {
|
|
195
|
+
complete = false;
|
|
196
|
+
}
|
|
197
|
+
else if (resolved !== null && !visited.has(resolved)) {
|
|
198
|
+
visited.add(resolved);
|
|
199
|
+
queue.push(resolved);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
visited.delete(entry);
|
|
204
|
+
return { deps: [...visited], complete };
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=dep-graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dep-graph.js","sourceRoot":"","sources":["../../src/unplugin/dep-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/unplugin/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/unplugin/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAc,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAiCvE,eAAO,MAAM,QAAQ,oFA8LpB,CAAC;AAEF,YAAY,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/unplugin/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import process from "node:process";
|
|
2
2
|
import { createUnplugin } from "unplugin";
|
|
3
3
|
import { getFirstPartyModulePaths, invalidateModuleCache } from "#src/loader.js";
|
|
4
|
+
import { collectStaticDeps, resetDepGraphMemo } from "./dep-graph.js";
|
|
4
5
|
import { DiskCache, resetDepValidationMemo } from "./disk-cache.js";
|
|
5
6
|
import { log, shouldTransform, transformCode } from "./transform.js";
|
|
6
7
|
import { BuildStatsAccumulator } from "./types.js";
|
|
@@ -130,11 +131,24 @@ export const unplugin = createUnplugin((options, meta) => {
|
|
|
130
131
|
// discovery (whose cost is what the cache exists to avoid). Textual
|
|
131
132
|
// bail-outs are cheaper than a cache probe — never persisted.
|
|
132
133
|
if (diskCache !== null && diskKey !== null && (result !== null || discoveryRan)) {
|
|
133
|
-
//
|
|
134
|
-
//
|
|
135
|
-
//
|
|
136
|
-
//
|
|
137
|
-
|
|
134
|
+
// Per-file dependency sets: the file's static first-party import
|
|
135
|
+
// graph, so editing an unrelated file no longer invalidates this
|
|
136
|
+
// entry (the global superset recorded the whole project — in large
|
|
137
|
+
// codebases every commit wiped the entire cache). When the graph
|
|
138
|
+
// cannot be fully analyzed (non-literal dynamic imports,
|
|
139
|
+
// unresolvable relative specifiers), fall back to the loader's
|
|
140
|
+
// executed-modules superset, which only over-invalidates.
|
|
141
|
+
// Discovery-free results (hoist-only rewrites) are pure functions
|
|
142
|
+
// of the file content: no deps.
|
|
143
|
+
let deps = [];
|
|
144
|
+
if (discoveryRan) {
|
|
145
|
+
// The entry file itself is always a dep: the cache key hashes the
|
|
146
|
+
// content the BUNDLER passed, but discovery executed the file
|
|
147
|
+
// from DISK — recording it guards the (rare) divergence between
|
|
148
|
+
// the two.
|
|
149
|
+
const staticDeps = collectStaticDeps(id);
|
|
150
|
+
deps = staticDeps.complete ? [id, ...staticDeps.deps] : getFirstPartyModulePaths();
|
|
151
|
+
}
|
|
138
152
|
if (deps !== null) {
|
|
139
153
|
// TS narrows fileStats to null here (assignment happens inside a
|
|
140
154
|
// callback it cannot track) — widen back.
|
|
@@ -144,6 +158,13 @@ export const unplugin = createUnplugin((options, meta) => {
|
|
|
144
158
|
}
|
|
145
159
|
if (!result)
|
|
146
160
|
return;
|
|
161
|
+
// KNOWN LIMITATION: map:null means stack traces inside transformed
|
|
162
|
+
// files shift by the prepended lines (hoisted decls, runtime
|
|
163
|
+
// helpers) and expanded IIFEs — a vitest assertion can be reported
|
|
164
|
+
// dozens of lines off. The fix is threading MagicString through
|
|
165
|
+
// hoist → hoisted-compile → rewrite → injectRuntime with
|
|
166
|
+
// @ampproject/remapping to compose the per-stage maps; the rewrites
|
|
167
|
+
// search intermediate text, so each stage needs its own map.
|
|
147
168
|
return { code: result, map: null };
|
|
148
169
|
},
|
|
149
170
|
watchChange(id) {
|
|
@@ -158,6 +179,7 @@ export const unplugin = createUnplugin((options, meta) => {
|
|
|
158
179
|
// stat memo needs resetting so changed files re-hash.
|
|
159
180
|
invalidateModuleCache();
|
|
160
181
|
resetDepValidationMemo();
|
|
182
|
+
resetDepGraphMemo();
|
|
161
183
|
cache.clear();
|
|
162
184
|
},
|
|
163
185
|
buildEnd() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/unplugin/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/unplugin/index.ts"],"names":[],"mappings":"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"}
|