@zod-to-form/vite 0.1.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/LICENSE +21 -0
- package/README.md +40 -0
- package/dist/cache.d.ts +39 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +56 -0
- package/dist/cache.js.map +1 -0
- package/dist/config/load.d.ts +59 -0
- package/dist/config/load.d.ts.map +1 -0
- package/dist/config/load.js +117 -0
- package/dist/config/load.js.map +1 -0
- package/dist/errors.d.ts +50 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +62 -0
- package/dist/errors.js.map +1 -0
- package/dist/generate-mode/babel-traverse.d.ts +5 -0
- package/dist/generate-mode/babel-traverse.d.ts.map +1 -0
- package/dist/generate-mode/babel-traverse.js +16 -0
- package/dist/generate-mode/babel-traverse.js.map +1 -0
- package/dist/generate-mode/generate-source.d.ts +51 -0
- package/dist/generate-mode/generate-source.d.ts.map +1 -0
- package/dist/generate-mode/generate-source.js +187 -0
- package/dist/generate-mode/generate-source.js.map +1 -0
- package/dist/generate-mode/resolve-schema.d.ts +43 -0
- package/dist/generate-mode/resolve-schema.d.ts.map +1 -0
- package/dist/generate-mode/resolve-schema.js +182 -0
- package/dist/generate-mode/resolve-schema.js.map +1 -0
- package/dist/generate-mode/scan-jsx.d.ts +86 -0
- package/dist/generate-mode/scan-jsx.d.ts.map +1 -0
- package/dist/generate-mode/scan-jsx.js +161 -0
- package/dist/generate-mode/scan-jsx.js.map +1 -0
- package/dist/hmr.d.ts +44 -0
- package/dist/hmr.d.ts.map +1 -0
- package/dist/hmr.js +28 -0
- package/dist/hmr.js.map +1 -0
- package/dist/index.d.ts +61 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +27 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +46 -0
- package/dist/logger.js.map +1 -0
- package/dist/plugin.d.ts +61 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +650 -0
- package/dist/plugin.js.map +1 -0
- package/dist/query-mode/parse-specifier.d.ts +23 -0
- package/dist/query-mode/parse-specifier.d.ts.map +1 -0
- package/dist/query-mode/parse-specifier.js +83 -0
- package/dist/query-mode/parse-specifier.js.map +1 -0
- package/dist/query-mode/resolve-id.d.ts +12 -0
- package/dist/query-mode/resolve-id.d.ts.map +1 -0
- package/dist/query-mode/resolve-id.js +61 -0
- package/dist/query-mode/resolve-id.js.map +1 -0
- package/dist/query-mode/transform.d.ts +33 -0
- package/dist/query-mode/transform.d.ts.map +1 -0
- package/dist/query-mode/transform.js +90 -0
- package/dist/query-mode/transform.js.map +1 -0
- package/dist/resolver-strip.d.ts +58 -0
- package/dist/resolver-strip.d.ts.map +1 -0
- package/dist/resolver-strip.js +141 -0
- package/dist/resolver-strip.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types.d.ts +242 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/write-guard.d.ts +26 -0
- package/dist/write-guard.d.ts.map +1 -0
- package/dist/write-guard.js +32 -0
- package/dist/write-guard.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface ParsedSpecifier {
|
|
2
|
+
kind: 'z2f';
|
|
3
|
+
/** The path portion without the query suffix. */
|
|
4
|
+
path: string;
|
|
5
|
+
/** Variant name (`''` for the bare `?z2f` default). */
|
|
6
|
+
variant: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Parse a Vite import specifier and decide whether the plugin handles it.
|
|
10
|
+
*
|
|
11
|
+
* Returns:
|
|
12
|
+
* - A {@link ParsedSpecifier} when the specifier carries a `?z2f` query
|
|
13
|
+
* that is well-formed
|
|
14
|
+
* - `null` when the specifier doesn't reference z2f at all (so other
|
|
15
|
+
* Vite plugins get their turn via the standard `resolveId` chain)
|
|
16
|
+
*
|
|
17
|
+
* Throws {@link Z2FViteError} when the specifier *intends* to use z2f
|
|
18
|
+
* (contains `z2f` as a query token) but is malformed — composed with
|
|
19
|
+
* other known queries, has an invalid variant name, or uses a reserved
|
|
20
|
+
* internal prefix.
|
|
21
|
+
*/
|
|
22
|
+
export declare function parseSpecifier(specifier: string): ParsedSpecifier | null;
|
|
23
|
+
//# sourceMappingURL=parse-specifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-specifier.d.ts","sourceRoot":"","sources":["../../src/query-mode/parse-specifier.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,KAAK,CAAC;IACZ,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;CACjB;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CA6ExE"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* parseSpecifier — recognize `?z2f` and `?z2f=<variant>` query-suffix
|
|
3
|
+
* imports, return null for everything else.
|
|
4
|
+
*
|
|
5
|
+
* Single source of truth for what counts as a z2f-handled specifier.
|
|
6
|
+
* Every Vite hook delegates here. Grammar table lives in
|
|
7
|
+
* `contracts/query-specifier.md`.
|
|
8
|
+
*/
|
|
9
|
+
import { Z2FViteError } from '../errors.js';
|
|
10
|
+
const VARIANT_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
11
|
+
/**
|
|
12
|
+
* Parse a Vite import specifier and decide whether the plugin handles it.
|
|
13
|
+
*
|
|
14
|
+
* Returns:
|
|
15
|
+
* - A {@link ParsedSpecifier} when the specifier carries a `?z2f` query
|
|
16
|
+
* that is well-formed
|
|
17
|
+
* - `null` when the specifier doesn't reference z2f at all (so other
|
|
18
|
+
* Vite plugins get their turn via the standard `resolveId` chain)
|
|
19
|
+
*
|
|
20
|
+
* Throws {@link Z2FViteError} when the specifier *intends* to use z2f
|
|
21
|
+
* (contains `z2f` as a query token) but is malformed — composed with
|
|
22
|
+
* other known queries, has an invalid variant name, or uses a reserved
|
|
23
|
+
* internal prefix.
|
|
24
|
+
*/
|
|
25
|
+
export function parseSpecifier(specifier) {
|
|
26
|
+
// Empty / no query / no path before `?` → not ours
|
|
27
|
+
const queryIndex = specifier.indexOf('?');
|
|
28
|
+
if (queryIndex <= 0)
|
|
29
|
+
return null;
|
|
30
|
+
const path = specifier.slice(0, queryIndex);
|
|
31
|
+
const query = specifier.slice(queryIndex + 1);
|
|
32
|
+
// Tokenize the query string by `&`. We're looking for `z2f` as a
|
|
33
|
+
// standalone key (or `z2f=value`), NOT a substring of a different key.
|
|
34
|
+
const tokens = query.split('&');
|
|
35
|
+
let z2fToken;
|
|
36
|
+
const otherTokens = [];
|
|
37
|
+
for (const token of tokens) {
|
|
38
|
+
const eqIndex = token.indexOf('=');
|
|
39
|
+
const key = eqIndex === -1 ? token : token.slice(0, eqIndex);
|
|
40
|
+
if (key === 'z2f') {
|
|
41
|
+
z2fToken = token;
|
|
42
|
+
}
|
|
43
|
+
else if (key.length > 0) {
|
|
44
|
+
otherTokens.push(key);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// No `z2f` token → not ours
|
|
48
|
+
if (z2fToken === undefined)
|
|
49
|
+
return null;
|
|
50
|
+
// `z2f` combined with other tokens → unsupported composition.
|
|
51
|
+
// The plugin refuses rather than silently picking one to honor.
|
|
52
|
+
if (otherTokens.length > 0) {
|
|
53
|
+
throw new Z2FViteError('Z2F_VITE_QUERY_COMPOSITION_UNSUPPORTED', `Specifier '${specifier}' combines '?z2f' with other query keys (${otherTokens.join(', ')}). Combine queries on the same import is not supported — use a separate import statement instead.`);
|
|
54
|
+
}
|
|
55
|
+
// Parse the variant value (or empty for bare `?z2f`)
|
|
56
|
+
const eqIndex = z2fToken.indexOf('=');
|
|
57
|
+
if (eqIndex === -1) {
|
|
58
|
+
return { kind: 'z2f', path, variant: '' };
|
|
59
|
+
}
|
|
60
|
+
const variant = z2fToken.slice(eqIndex + 1);
|
|
61
|
+
// Empty variant value (`?z2f=`) is malformed
|
|
62
|
+
if (variant.length === 0) {
|
|
63
|
+
throw new Z2FViteError('Z2F_VITE_INVALID_VARIANT_NAME', `Specifier '${specifier}' uses '?z2f=' with an empty variant value. Either drop the '=' to use the default variant, or supply a name matching ${VARIANT_NAME}.`);
|
|
64
|
+
}
|
|
65
|
+
// `__generate_` prefix is reserved for generate mode's internal use.
|
|
66
|
+
// The plugin's own generate-mode emitter produces ids of the form
|
|
67
|
+
// `__generate_<positive-int>` (counter scoped per source file), and
|
|
68
|
+
// those round-trip back through this parser when the synthesized
|
|
69
|
+
// import hits the load hook. Allow the strict `__generate_<digits>`
|
|
70
|
+
// form, reject anything else with the prefix as a user-collision
|
|
71
|
+
// attempt.
|
|
72
|
+
if (variant.startsWith('__generate_')) {
|
|
73
|
+
if (!/^__generate_\d+$/.test(variant)) {
|
|
74
|
+
throw new Z2FViteError('Z2F_VITE_INVALID_VARIANT_NAME', `Variant name '${variant}' uses the reserved '__generate_' prefix. The '__generate_<n>' form is plugin-internal — pick a different name.`);
|
|
75
|
+
}
|
|
76
|
+
return { kind: 'z2f', path, variant };
|
|
77
|
+
}
|
|
78
|
+
if (!VARIANT_NAME.test(variant)) {
|
|
79
|
+
throw new Z2FViteError('Z2F_VITE_INVALID_VARIANT_NAME', `Variant name '${variant}' is invalid. Variant names must match ${VARIANT_NAME} (JavaScript identifier rules: starts with letter or underscore, then alphanumerics or underscores).`);
|
|
80
|
+
}
|
|
81
|
+
return { kind: 'z2f', path, variant };
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=parse-specifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-specifier.js","sourceRoot":"","sources":["../../src/query-mode/parse-specifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function resolveZ2FId(specifier: string, resolvedAbsolutePath: string, viteRoot: string): string | null;
|
|
2
|
+
/**
|
|
3
|
+
* Inverse of `resolveZ2FId`: parse a normalized virtual module id back into
|
|
4
|
+
* `(schemaFile, variant)`. Used by the load and HMR hooks.
|
|
5
|
+
*
|
|
6
|
+
* Returns `null` if the id is not a z2f virtual id.
|
|
7
|
+
*/
|
|
8
|
+
export declare function parseZ2FId(id: string): {
|
|
9
|
+
schemaFile: string;
|
|
10
|
+
variant: string;
|
|
11
|
+
} | null;
|
|
12
|
+
//# sourceMappingURL=resolve-id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-id.d.ts","sourceRoot":"","sources":["../../src/query-mode/resolve-id.ts"],"names":[],"mappings":"AAmCA,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,oBAAoB,EAAE,MAAM,EAC5B,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,IAAI,CAgBf;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAMrF"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* resolveZ2FId — pure helper for the resolveId Vite hook.
|
|
3
|
+
*
|
|
4
|
+
* Given an import specifier and the absolute resolved path that Vite's
|
|
5
|
+
* standard resolver returned for the path portion, decide whether this
|
|
6
|
+
* is a z2f-handled import and produce the normalized virtual module id.
|
|
7
|
+
*
|
|
8
|
+
* Returns:
|
|
9
|
+
* - `null` if the specifier doesn't carry `?z2f` (so other Vite plugins
|
|
10
|
+
* get their turn via the standard resolveId chain)
|
|
11
|
+
* - The normalized id `<absolutePath>?z2f[=variant]` when the import is
|
|
12
|
+
* handled
|
|
13
|
+
*
|
|
14
|
+
* Throws:
|
|
15
|
+
* - `Z2F_VITE_SCHEMA_OUTSIDE_ROOT` when the resolved path is outside the
|
|
16
|
+
* Vite root (FR-021 — schemas must live in project source)
|
|
17
|
+
* - Any error parseSpecifier throws (composition errors, invalid variants)
|
|
18
|
+
*/
|
|
19
|
+
import { parseSpecifier } from './parse-specifier.js';
|
|
20
|
+
import { Z2FViteError } from '../errors.js';
|
|
21
|
+
/**
|
|
22
|
+
* Check if a child path lives inside a parent root. Both must be
|
|
23
|
+
* absolute. We normalize backslashes to forward slashes on both sides
|
|
24
|
+
* so mixed separators on Windows compare correctly — Vite itself exposes
|
|
25
|
+
* forward-slash ids in most code paths, but `this.resolve()` sometimes
|
|
26
|
+
* returns OS-native paths, so the guard needs to survive either shape.
|
|
27
|
+
*/
|
|
28
|
+
function isInsideRoot(child, root) {
|
|
29
|
+
const c = child.replace(/\\/g, '/');
|
|
30
|
+
const r = root.replace(/\\/g, '/');
|
|
31
|
+
const normalizedRoot = r.endsWith('/') ? r : r + '/';
|
|
32
|
+
return c === r || c.startsWith(normalizedRoot);
|
|
33
|
+
}
|
|
34
|
+
export function resolveZ2FId(specifier, resolvedAbsolutePath, viteRoot) {
|
|
35
|
+
const parsed = parseSpecifier(specifier);
|
|
36
|
+
if (parsed === null)
|
|
37
|
+
return null;
|
|
38
|
+
if (!isInsideRoot(resolvedAbsolutePath, viteRoot)) {
|
|
39
|
+
throw new Z2FViteError('Z2F_VITE_SCHEMA_OUTSIDE_ROOT', `Schema '${resolvedAbsolutePath}' is outside the Vite root '${viteRoot}'. The plugin only compiles schemas in your project's own source. Move the schema into the project, or use the codegen CLI for cross-project schemas.`, { file: resolvedAbsolutePath });
|
|
40
|
+
}
|
|
41
|
+
// Re-attach the query so each (schema, variant) pair has its own
|
|
42
|
+
// stable virtual module id in Vite's graph.
|
|
43
|
+
const query = parsed.variant === '' ? '?z2f' : `?z2f=${parsed.variant}`;
|
|
44
|
+
return `${resolvedAbsolutePath}${query}`;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Inverse of `resolveZ2FId`: parse a normalized virtual module id back into
|
|
48
|
+
* `(schemaFile, variant)`. Used by the load and HMR hooks.
|
|
49
|
+
*
|
|
50
|
+
* Returns `null` if the id is not a z2f virtual id.
|
|
51
|
+
*/
|
|
52
|
+
export function parseZ2FId(id) {
|
|
53
|
+
// Cheap check before invoking parseSpecifier
|
|
54
|
+
if (!id.includes('?z2f'))
|
|
55
|
+
return null;
|
|
56
|
+
const parsed = parseSpecifier(id);
|
|
57
|
+
if (parsed === null)
|
|
58
|
+
return null;
|
|
59
|
+
return { schemaFile: parsed.path, variant: parsed.variant };
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=resolve-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-id.js","sourceRoot":"","sources":["../../src/query-mode/resolve-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,KAAa,EAAE,IAAY;IAC/C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACnC,MAAM,cAAc,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACrD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,SAAiB,EACjB,oBAA4B,EAC5B,QAAgB;IAEhB,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEjC,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,QAAQ,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,YAAY,CACpB,8BAA8B,EAC9B,WAAW,oBAAoB,+BAA+B,QAAQ,uJAAuJ,EAC7N,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAC/B,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,4CAA4C;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;IACxE,OAAO,GAAG,oBAAoB,GAAG,KAAK,EAAE,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,EAAU;IACnC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IAClC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { CodegenConfig } from '@zod-to-form/core';
|
|
2
|
+
import type { ModuleNamespace } from '../config/load.js';
|
|
3
|
+
import type { Z2FViteConfig } from '../types.js';
|
|
4
|
+
export interface CompileTargetInput {
|
|
5
|
+
/** The module namespace returned by `ssrLoadModule` / `this.load`. */
|
|
6
|
+
namespace: ModuleNamespace;
|
|
7
|
+
/** Absolute path to the schema source file (used in error messages). */
|
|
8
|
+
schemaFile: string;
|
|
9
|
+
/** Variant name (`''` for the default target). */
|
|
10
|
+
variant: string;
|
|
11
|
+
/** The full plugin-side config, before variant merging. */
|
|
12
|
+
config: Z2FViteConfig;
|
|
13
|
+
}
|
|
14
|
+
export interface CompileTargetResult {
|
|
15
|
+
/** The generated `.tsx` source string. */
|
|
16
|
+
generatedSource: string;
|
|
17
|
+
/** The companion `.lite.ts` source, or `null` if no top-level effects. */
|
|
18
|
+
schemaLiteSource: string | null;
|
|
19
|
+
/** The effective config used for this compilation (post variant merge). */
|
|
20
|
+
effectiveConfig: CodegenConfig;
|
|
21
|
+
/** The selected export name from the schema module namespace. */
|
|
22
|
+
exportName: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Pick the schema, walk it, generate the form. This is the function every
|
|
26
|
+
* other entry point (load hook, build pipeline, integration tests) calls.
|
|
27
|
+
*
|
|
28
|
+
* Note on the type cast for `walkSchema`: `walkSchema` accepts a `$ZodType`
|
|
29
|
+
* and we just verified the value structurally has `_zod`, so the cast is
|
|
30
|
+
* sound. The structural check happens inside `selectExport`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function compileTarget(input: CompileTargetInput): CompileTargetResult;
|
|
33
|
+
//# sourceMappingURL=transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/query-mode/transform.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAA8B,MAAM,mBAAmB,CAAC;AAInF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAejD,MAAM,WAAW,kBAAkB;IACjC,sEAAsE;IACtE,SAAS,EAAE,eAAe,CAAC;IAC3B,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,eAAe,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,2EAA2E;IAC3E,eAAe,EAAE,aAAa,CAAC;IAC/B,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CA+D5E"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* compileTarget — pure side of the `load` hook.
|
|
3
|
+
*
|
|
4
|
+
* Given an already-loaded schema module namespace (whoever's calling this
|
|
5
|
+
* is responsible for getting it via `ssrLoadModule` or `this.load`),
|
|
6
|
+
* produces the generated form source string and optional `.lite.ts` source.
|
|
7
|
+
*
|
|
8
|
+
* No I/O. No Vite context. No caching. The dispatching `load` hook in
|
|
9
|
+
* `plugin.ts` handles all of that.
|
|
10
|
+
*/
|
|
11
|
+
import path from 'node:path';
|
|
12
|
+
import { walkSchema } from '@zod-to-form/core';
|
|
13
|
+
import { generateFormComponent, generateSchemaLiteFile } from '@zod-to-form/codegen';
|
|
14
|
+
import { buildEffectiveConfig, selectExport } from '../config/load.js';
|
|
15
|
+
/**
|
|
16
|
+
* Default `schemaImportPath` for query-mode targets when the user did not
|
|
17
|
+
* configure one explicitly. The generated module's id is
|
|
18
|
+
* `<schemaFile>?z2f`, so a relative import to the schema file's full
|
|
19
|
+
* basename (WITH extension) unambiguously points back at the original
|
|
20
|
+
* schema. We deliberately keep the extension to avoid the `signup.ts`
|
|
21
|
+
* vs `signup.tsx` vs `signup/index.ts` ambiguity that would arise from
|
|
22
|
+
* stripping it and relying on Vite's `resolve.extensions` auto-resolution.
|
|
23
|
+
*/
|
|
24
|
+
function defaultSchemaImportPath(schemaFile) {
|
|
25
|
+
return `./${path.basename(schemaFile)}`;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Pick the schema, walk it, generate the form. This is the function every
|
|
29
|
+
* other entry point (load hook, build pipeline, integration tests) calls.
|
|
30
|
+
*
|
|
31
|
+
* Note on the type cast for `walkSchema`: `walkSchema` accepts a `$ZodType`
|
|
32
|
+
* and we just verified the value structurally has `_zod`, so the cast is
|
|
33
|
+
* sound. The structural check happens inside `selectExport`.
|
|
34
|
+
*/
|
|
35
|
+
export function compileTarget(input) {
|
|
36
|
+
const { namespace, schemaFile, variant, config } = input;
|
|
37
|
+
const effectiveConfig = buildEffectiveConfig(config, variant);
|
|
38
|
+
const expectedName = effectiveConfig.exportName || undefined;
|
|
39
|
+
const { name, schema } = selectExport(namespace, schemaFile, expectedName);
|
|
40
|
+
// Walk the schema, optionally with the optimization level the user
|
|
41
|
+
// configured. The result type depends on whether optimization is set.
|
|
42
|
+
const optimization = effectiveConfig.validationLevel
|
|
43
|
+
? { optimization: { level: effectiveConfig.validationLevel } }
|
|
44
|
+
: undefined;
|
|
45
|
+
let fields;
|
|
46
|
+
let schemaLite = null;
|
|
47
|
+
let schemaLiteInfo = null;
|
|
48
|
+
if (optimization) {
|
|
49
|
+
const result = walkSchema(schema, optimization);
|
|
50
|
+
fields = result.fields;
|
|
51
|
+
schemaLite = result.schemaLite;
|
|
52
|
+
schemaLiteInfo = result.schemaLiteInfo;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
fields = walkSchema(schema);
|
|
56
|
+
}
|
|
57
|
+
// Build the codegen-facing config: take the effective config but
|
|
58
|
+
// overwrite exportName with the actually-selected name (so auto-detect
|
|
59
|
+
// mode produces the right import statements), inject the default
|
|
60
|
+
// schemaImportPath when the user didn't supply one, and inject
|
|
61
|
+
// schemaLite info if optimization produced any effects.
|
|
62
|
+
//
|
|
63
|
+
// Generate-mode variants always emit under the fixed component name
|
|
64
|
+
// `Form` regardless of `componentName`. The synthesized generate-mode
|
|
65
|
+
// import (`import { Form as _z2fGeneratedForm_<n> }`) is decoupled
|
|
66
|
+
// from the user's chosen name this way — the generate emitter can hard-
|
|
67
|
+
// code `Form` instead of threading the user's configured name through
|
|
68
|
+
// the AST visitor.
|
|
69
|
+
const isGenerateVariant = /^__generate_\d+$/.test(variant);
|
|
70
|
+
const codegenConfig = {
|
|
71
|
+
...effectiveConfig,
|
|
72
|
+
exportName: name,
|
|
73
|
+
componentName: isGenerateVariant ? 'Form' : (effectiveConfig.componentName ?? 'Form'),
|
|
74
|
+
schemaImportPath: effectiveConfig.schemaImportPath ?? defaultSchemaImportPath(schemaFile),
|
|
75
|
+
schemaLite: schemaLite ?? undefined,
|
|
76
|
+
schemaLiteInfo: schemaLiteInfo ?? undefined
|
|
77
|
+
};
|
|
78
|
+
const generatedSource = generateFormComponent(fields, codegenConfig);
|
|
79
|
+
// Generate the companion .lite.ts file if optimization produced effects.
|
|
80
|
+
const schemaLiteSource = schemaLiteInfo !== null
|
|
81
|
+
? generateSchemaLiteFile(codegenConfig.schemaImportPath ?? './schema', name, schemaLiteInfo)
|
|
82
|
+
: null;
|
|
83
|
+
return {
|
|
84
|
+
generatedSource,
|
|
85
|
+
schemaLiteSource,
|
|
86
|
+
effectiveConfig: codegenConfig,
|
|
87
|
+
exportName: name
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../src/query-mode/transform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIvE;;;;;;;;GAQG;AACH,SAAS,uBAAuB,CAAC,UAAkB;IACjD,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;AAC1C,CAAC;AAwBD;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEzD,MAAM,eAAe,GAAG,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,IAAI,SAAS,CAAC;IAE7D,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IAE3E,mEAAmE;IACnE,sEAAsE;IACtE,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe;QAClD,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,eAAe,CAAC,eAAe,EAAE,EAAE;QAC9D,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,MAAM,CAAC;IACX,IAAI,UAAU,GAAoB,IAAI,CAAC;IACvC,IAAI,cAAc,GAAmB,IAAI,CAAC;IAE1C,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,YAAY,CAAe,CAAC;QAC9D,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACvB,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAC/B,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,iEAAiE;IACjE,uEAAuE;IACvE,iEAAiE;IACjE,+DAA+D;IAC/D,wDAAwD;IACxD,EAAE;IACF,oEAAoE;IACpE,sEAAsE;IACtE,mEAAmE;IACnE,wEAAwE;IACxE,sEAAsE;IACtE,mBAAmB;IACnB,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAkB;QACnC,GAAG,eAAe;QAClB,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,aAAa,IAAI,MAAM,CAAC;QACrF,gBAAgB,EAAE,eAAe,CAAC,gBAAgB,IAAI,uBAAuB,CAAC,UAAU,CAAC;QACzF,UAAU,EAAE,UAAU,IAAI,SAAS;QACnC,cAAc,EAAE,cAAc,IAAI,SAAS;KAC5C,CAAC;IAEF,MAAM,eAAe,GAAG,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAErE,yEAAyE;IACzE,MAAM,gBAAgB,GACpB,cAAc,KAAK,IAAI;QACrB,CAAC,CAAC,sBAAsB,CAAC,aAAa,CAAC,gBAAgB,IAAI,UAAU,EAAE,IAAI,EAAE,cAAc,CAAC;QAC5F,CAAC,CAAC,IAAI,CAAC;IAEX,OAAO;QACL,eAAe;QACf,gBAAgB;QAChB,eAAe,EAAE,aAAa;QAC9B,UAAU,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* resolver-strip — build-mode pass that eliminates `zodResolver` from the
|
|
3
|
+
* `@zod-to-form/react` `useZodForm` hook when the user has validation
|
|
4
|
+
* optimization enabled (FR-013).
|
|
5
|
+
*
|
|
6
|
+
* The runtime hook keeps a static `import { zodResolver } from
|
|
7
|
+
* '@hookform/resolvers/zod'` so non-optimized users get the resolver via
|
|
8
|
+
* normal ESM evaluation. When optimization is on, every call site sits
|
|
9
|
+
* inside an `isOptimized ? undefined : zodResolver(...)` ternary, and
|
|
10
|
+
* the call is dead code — but Rollup's tree-shaker can't prove that
|
|
11
|
+
* statically because the ternary's condition is a runtime value.
|
|
12
|
+
*
|
|
13
|
+
* This pure helper rewrites every `zodResolver(rhfCast(schema))` call
|
|
14
|
+
* in `useZodForm` source to a literal `undefined`. After the rewrite
|
|
15
|
+
* the import has zero remaining references, and Rollup eliminates the
|
|
16
|
+
* import statement automatically — closing the gzipped delta the
|
|
17
|
+
* benchmark page asserts.
|
|
18
|
+
*
|
|
19
|
+
* Pure: takes source + a "should-strip" flag, returns transformed source
|
|
20
|
+
* + sourcemap. No I/O, no plugin context. The plugin's `transform` hook
|
|
21
|
+
* decides WHEN to call it based on file id + config.
|
|
22
|
+
*/
|
|
23
|
+
import MagicString from 'magic-string';
|
|
24
|
+
export interface ResolverStripInput {
|
|
25
|
+
/** The source code of the file (typically `useZodForm.{ts,js}`). */
|
|
26
|
+
source: string;
|
|
27
|
+
}
|
|
28
|
+
export interface ResolverStripOutput {
|
|
29
|
+
/** Transformed code (or original if there was nothing to strip). */
|
|
30
|
+
code: string;
|
|
31
|
+
/** Magic-string sourcemap (hires). */
|
|
32
|
+
map: ReturnType<MagicString['generateMap']>;
|
|
33
|
+
/** Number of `zodResolver(...)` call sites the strip replaced. */
|
|
34
|
+
rewritten: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Detect whether a Vite/Rollup module id refers to the `useZodForm` hook
|
|
38
|
+
* source. We accept any extension (.ts / .tsx / .js / .mjs / .cjs) so
|
|
39
|
+
* the strip works equally well in dev (raw .ts) and build (transpiled .js).
|
|
40
|
+
*/
|
|
41
|
+
export declare function isUseZodFormId(id: string): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Rewrite every `zodResolver(...)` call expression in `source` to
|
|
44
|
+
* `undefined` AND remove the now-unused
|
|
45
|
+
* `import { zodResolver } from '@hookform/resolvers/zod'` statement.
|
|
46
|
+
*
|
|
47
|
+
* Two-pass: first locate every call site (validates balanced parens
|
|
48
|
+
* across the whole file), then apply edits via magic-string. If the
|
|
49
|
+
* scan reports unbalanced parens we throw `Z2F_VITE_RESOLVER_STRIP_FAILED`
|
|
50
|
+
* — partial rewrites would corrupt the file silently.
|
|
51
|
+
*
|
|
52
|
+
* Uses a regex sweep + manual paren balancing rather than an AST visitor
|
|
53
|
+
* because the call shape in `useZodForm` is fixed and the strip is a
|
|
54
|
+
* one-shot source-level rewrite — pulling Babel back in just for two
|
|
55
|
+
* replacements would be massively over-engineered.
|
|
56
|
+
*/
|
|
57
|
+
export declare function stripResolver(input: ResolverStripInput): ResolverStripOutput;
|
|
58
|
+
//# sourceMappingURL=resolver-strip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver-strip.d.ts","sourceRoot":"","sources":["../src/resolver-strip.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,WAAW,MAAM,cAAc,CAAC;AAGvC,MAAM,WAAW,kBAAkB;IACjC,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;IAC5C,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAMlD;AA+DD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CAiD5E"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* resolver-strip — build-mode pass that eliminates `zodResolver` from the
|
|
3
|
+
* `@zod-to-form/react` `useZodForm` hook when the user has validation
|
|
4
|
+
* optimization enabled (FR-013).
|
|
5
|
+
*
|
|
6
|
+
* The runtime hook keeps a static `import { zodResolver } from
|
|
7
|
+
* '@hookform/resolvers/zod'` so non-optimized users get the resolver via
|
|
8
|
+
* normal ESM evaluation. When optimization is on, every call site sits
|
|
9
|
+
* inside an `isOptimized ? undefined : zodResolver(...)` ternary, and
|
|
10
|
+
* the call is dead code — but Rollup's tree-shaker can't prove that
|
|
11
|
+
* statically because the ternary's condition is a runtime value.
|
|
12
|
+
*
|
|
13
|
+
* This pure helper rewrites every `zodResolver(rhfCast(schema))` call
|
|
14
|
+
* in `useZodForm` source to a literal `undefined`. After the rewrite
|
|
15
|
+
* the import has zero remaining references, and Rollup eliminates the
|
|
16
|
+
* import statement automatically — closing the gzipped delta the
|
|
17
|
+
* benchmark page asserts.
|
|
18
|
+
*
|
|
19
|
+
* Pure: takes source + a "should-strip" flag, returns transformed source
|
|
20
|
+
* + sourcemap. No I/O, no plugin context. The plugin's `transform` hook
|
|
21
|
+
* decides WHEN to call it based on file id + config.
|
|
22
|
+
*/
|
|
23
|
+
import MagicString from 'magic-string';
|
|
24
|
+
import { Z2FViteError } from './errors.js';
|
|
25
|
+
/**
|
|
26
|
+
* Detect whether a Vite/Rollup module id refers to the `useZodForm` hook
|
|
27
|
+
* source. We accept any extension (.ts / .tsx / .js / .mjs / .cjs) so
|
|
28
|
+
* the strip works equally well in dev (raw .ts) and build (transpiled .js).
|
|
29
|
+
*/
|
|
30
|
+
export function isUseZodFormId(id) {
|
|
31
|
+
// Strip query string and normalize separators so the basename check
|
|
32
|
+
// survives on Windows.
|
|
33
|
+
const queryIdx = id.indexOf('?');
|
|
34
|
+
const path = (queryIdx === -1 ? id : id.slice(0, queryIdx)).replace(/\\/g, '/');
|
|
35
|
+
return /(^|\/)useZodForm\.(?:ts|tsx|js|jsx|mjs|cjs)$/.test(path);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Locate every `zodResolver(...)` call expression in `source`. Returns
|
|
39
|
+
* the call sites in source order, or `null` if any candidate is unbalanced
|
|
40
|
+
* — callers MUST treat `null` as "do not rewrite this file" (we can't
|
|
41
|
+
* partially rewrite without leaving a corrupt half-edited result).
|
|
42
|
+
*
|
|
43
|
+
* The scanner is kept separate from the rewriter so we can run a full
|
|
44
|
+
* pass before any `magic-string` mutation. That's the contract that
|
|
45
|
+
* prevents the unbalanced-paren bail from leaving the file half-stripped.
|
|
46
|
+
*/
|
|
47
|
+
function scanCallSites(source) {
|
|
48
|
+
const sites = [];
|
|
49
|
+
let cursor = 0;
|
|
50
|
+
const NEEDLE = 'zodResolver(';
|
|
51
|
+
while (cursor < source.length) {
|
|
52
|
+
const start = source.indexOf(NEEDLE, cursor);
|
|
53
|
+
if (start === -1)
|
|
54
|
+
break;
|
|
55
|
+
// Word-boundary guard: reject when the preceding character is part
|
|
56
|
+
// of an identifier (so `myzodResolver(`, `_zodResolver(`, etc. are
|
|
57
|
+
// not matched). The previous character is checked DIRECTLY (no
|
|
58
|
+
// whitespace skip) — `foozodResolver(` should fail even though
|
|
59
|
+
// there's no whitespace separator.
|
|
60
|
+
const prev = start === 0 ? '' : source[start - 1];
|
|
61
|
+
const isIdentifierContinuation = prev !== '' && /[A-Za-z0-9_$]/.test(prev);
|
|
62
|
+
if (isIdentifierContinuation) {
|
|
63
|
+
cursor = start + NEEDLE.length;
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
// Find the matching close-paren via single-pass depth tracking.
|
|
67
|
+
let depth = 1;
|
|
68
|
+
let i = start + NEEDLE.length;
|
|
69
|
+
while (i < source.length && depth > 0) {
|
|
70
|
+
const c = source[i];
|
|
71
|
+
if (c === '(')
|
|
72
|
+
depth += 1;
|
|
73
|
+
else if (c === ')')
|
|
74
|
+
depth -= 1;
|
|
75
|
+
i += 1;
|
|
76
|
+
}
|
|
77
|
+
if (depth !== 0) {
|
|
78
|
+
// Unbalanced. Bail with `null` so the caller refuses to rewrite
|
|
79
|
+
// anything in this file rather than leaving a half-edited result.
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
sites.push({ start, end: i });
|
|
83
|
+
cursor = i;
|
|
84
|
+
}
|
|
85
|
+
return sites;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Rewrite every `zodResolver(...)` call expression in `source` to
|
|
89
|
+
* `undefined` AND remove the now-unused
|
|
90
|
+
* `import { zodResolver } from '@hookform/resolvers/zod'` statement.
|
|
91
|
+
*
|
|
92
|
+
* Two-pass: first locate every call site (validates balanced parens
|
|
93
|
+
* across the whole file), then apply edits via magic-string. If the
|
|
94
|
+
* scan reports unbalanced parens we throw `Z2F_VITE_RESOLVER_STRIP_FAILED`
|
|
95
|
+
* — partial rewrites would corrupt the file silently.
|
|
96
|
+
*
|
|
97
|
+
* Uses a regex sweep + manual paren balancing rather than an AST visitor
|
|
98
|
+
* because the call shape in `useZodForm` is fixed and the strip is a
|
|
99
|
+
* one-shot source-level rewrite — pulling Babel back in just for two
|
|
100
|
+
* replacements would be massively over-engineered.
|
|
101
|
+
*/
|
|
102
|
+
export function stripResolver(input) {
|
|
103
|
+
const { source } = input;
|
|
104
|
+
// Substring fast-path — most files don't contain `zodResolver`, and
|
|
105
|
+
// even useZodForm is small enough that re-scanning the source is fine.
|
|
106
|
+
if (!source.includes('zodResolver(')) {
|
|
107
|
+
const ms = new MagicString(source);
|
|
108
|
+
return { code: source, map: ms.generateMap({ hires: true }), rewritten: 0 };
|
|
109
|
+
}
|
|
110
|
+
// Pass 1: locate every call site. Bail BEFORE any magic-string mutation
|
|
111
|
+
// if the scan can't find a matching close-paren.
|
|
112
|
+
const sites = scanCallSites(source);
|
|
113
|
+
if (sites === null) {
|
|
114
|
+
throw new Z2FViteError('Z2F_VITE_RESOLVER_STRIP_FAILED', 'resolver-strip aborted: an unbalanced zodResolver(...) call was encountered. Refusing to apply a partial rewrite. Check the source for syntax errors.');
|
|
115
|
+
}
|
|
116
|
+
if (sites.length === 0) {
|
|
117
|
+
const ms = new MagicString(source);
|
|
118
|
+
return { code: source, map: ms.generateMap({ hires: true }), rewritten: 0 };
|
|
119
|
+
}
|
|
120
|
+
// Pass 2: apply edits.
|
|
121
|
+
const ms = new MagicString(source);
|
|
122
|
+
// Drop the `import { zodResolver } from '@hookform/resolvers/zod'`
|
|
123
|
+
// line entirely. Rollup is conservative about side-effect-only
|
|
124
|
+
// imports — even after every call site becomes `undefined`, the
|
|
125
|
+
// bare `import '@hookform/resolvers/zod'` survives in the bundle
|
|
126
|
+
// unless we remove it ourselves.
|
|
127
|
+
const importRegex = /^\s*import\s*\{\s*zodResolver\s*\}\s*from\s*['"]@hookform\/resolvers\/zod['"]\s*;?\s*\n?/m;
|
|
128
|
+
const importMatch = importRegex.exec(source);
|
|
129
|
+
if (importMatch !== null) {
|
|
130
|
+
ms.remove(importMatch.index, importMatch.index + importMatch[0].length);
|
|
131
|
+
}
|
|
132
|
+
for (const site of sites) {
|
|
133
|
+
ms.overwrite(site.start, site.end, 'undefined');
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
code: ms.toString(),
|
|
137
|
+
map: ms.generateMap({ hires: true }),
|
|
138
|
+
rewritten: sites.length
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=resolver-strip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver-strip.js","sourceRoot":"","sources":["../src/resolver-strip.ts"],"names":[],"mappings":"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"}
|