@agentuity/migrate 3.0.0-beta.2 → 3.0.0-beta.3
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-to-zod.d.ts","sourceRoot":"","sources":["../../../src/transforms/v3/schema-to-zod.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CAClB;AAwBD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"schema-to-zod.d.ts","sourceRoot":"","sources":["../../../src/transforms/v3/schema-to-zod.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CAClB;AAwBD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CA4F7D"}
|
|
@@ -94,8 +94,45 @@ export function schemaToZod(source) {
|
|
|
94
94
|
if (output !== unionBefore) {
|
|
95
95
|
changes.push('Rewrote z.union(a, b, c) → z.union([a, b, c])');
|
|
96
96
|
}
|
|
97
|
+
// 6. @agentuity/schema's `.pick(['a', 'b'])` / `.omit(['a', 'b'])` use
|
|
98
|
+
// the array form; zod 4 only accepts the object/mask form
|
|
99
|
+
// (`{ a: true, b: true }`). Rewrite call sites where the sole
|
|
100
|
+
// argument is a string-array literal.
|
|
101
|
+
const maskBefore = output;
|
|
102
|
+
output = rewritePickOmitCalls(output);
|
|
103
|
+
if (output !== maskBefore) {
|
|
104
|
+
changes.push("Rewrote .pick(['a']) / .omit(['a']) to .pick({a: true}) / .omit({a: true})");
|
|
105
|
+
}
|
|
97
106
|
return { source: output, changed: changes.length > 0, changes };
|
|
98
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Walk `.pick([...])` / `.omit([...])` call sites and rewrite the
|
|
110
|
+
* string-array argument as a `{ key: true, ... }` mask, which is the
|
|
111
|
+
* only form zod 4 accepts. We only transform calls whose single
|
|
112
|
+
* argument is a literal array of string literals — anything more
|
|
113
|
+
* complex (a variable, a spread, mixed types) is left alone with a
|
|
114
|
+
* TODO comment so the user can hand-translate it.
|
|
115
|
+
*/
|
|
116
|
+
function rewritePickOmitCalls(source) {
|
|
117
|
+
const pattern = /\.(pick|omit)\s*\(\s*\[([^\]]*)\]\s*\)/g;
|
|
118
|
+
return source.replace(pattern, (match, method, body) => {
|
|
119
|
+
const keys = [];
|
|
120
|
+
const keyPattern = /['"`]([^'"`]+)['"`]/g;
|
|
121
|
+
let m;
|
|
122
|
+
// biome-ignore lint/suspicious/noAssignInExpressions: standard global-regex drain pattern
|
|
123
|
+
while ((m = keyPattern.exec(body)) !== null) {
|
|
124
|
+
keys.push(m[1]);
|
|
125
|
+
}
|
|
126
|
+
// If the array contained anything other than string literals, leave
|
|
127
|
+
// the call alone with a TODO so the user can hand-translate.
|
|
128
|
+
const stripped = body.replace(/['"`][^'"`]+['"`]/g, '').replace(/[\s,]+/g, '');
|
|
129
|
+
if (stripped.length > 0 || keys.length === 0) {
|
|
130
|
+
return `/* TODO: rewrite as zod 4 mask: ${match} */ ${match}`;
|
|
131
|
+
}
|
|
132
|
+
const mask = keys.map((k) => `${k}: true`).join(', ');
|
|
133
|
+
return `.${method}({ ${mask} })`;
|
|
134
|
+
});
|
|
135
|
+
}
|
|
99
136
|
/**
|
|
100
137
|
* Walk `z.union(…)` call sites and wrap the args in an array literal unless
|
|
101
138
|
* they already are one. We scan with a brace-depth counter so nested parens
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-to-zod.js","sourceRoot":"","sources":["../../../src/transforms/v3/schema-to-zod.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema-to-zod.js","sourceRoot":"","sources":["../../../src/transforms/v3/schema-to-zod.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -119,9 +119,48 @@ export function schemaToZod(source: string): SchemaToZodResult {
|
|
|
119
119
|
changes.push('Rewrote z.union(a, b, c) → z.union([a, b, c])');
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
+
// 6. @agentuity/schema's `.pick(['a', 'b'])` / `.omit(['a', 'b'])` use
|
|
123
|
+
// the array form; zod 4 only accepts the object/mask form
|
|
124
|
+
// (`{ a: true, b: true }`). Rewrite call sites where the sole
|
|
125
|
+
// argument is a string-array literal.
|
|
126
|
+
const maskBefore = output;
|
|
127
|
+
output = rewritePickOmitCalls(output);
|
|
128
|
+
if (output !== maskBefore) {
|
|
129
|
+
changes.push("Rewrote .pick(['a']) / .omit(['a']) to .pick({a: true}) / .omit({a: true})");
|
|
130
|
+
}
|
|
131
|
+
|
|
122
132
|
return { source: output, changed: changes.length > 0, changes };
|
|
123
133
|
}
|
|
124
134
|
|
|
135
|
+
/**
|
|
136
|
+
* Walk `.pick([...])` / `.omit([...])` call sites and rewrite the
|
|
137
|
+
* string-array argument as a `{ key: true, ... }` mask, which is the
|
|
138
|
+
* only form zod 4 accepts. We only transform calls whose single
|
|
139
|
+
* argument is a literal array of string literals — anything more
|
|
140
|
+
* complex (a variable, a spread, mixed types) is left alone with a
|
|
141
|
+
* TODO comment so the user can hand-translate it.
|
|
142
|
+
*/
|
|
143
|
+
function rewritePickOmitCalls(source: string): string {
|
|
144
|
+
const pattern = /\.(pick|omit)\s*\(\s*\[([^\]]*)\]\s*\)/g;
|
|
145
|
+
return source.replace(pattern, (match, method: string, body: string) => {
|
|
146
|
+
const keys: string[] = [];
|
|
147
|
+
const keyPattern = /['"`]([^'"`]+)['"`]/g;
|
|
148
|
+
let m: RegExpExecArray | null;
|
|
149
|
+
// biome-ignore lint/suspicious/noAssignInExpressions: standard global-regex drain pattern
|
|
150
|
+
while ((m = keyPattern.exec(body)) !== null) {
|
|
151
|
+
keys.push(m[1]!);
|
|
152
|
+
}
|
|
153
|
+
// If the array contained anything other than string literals, leave
|
|
154
|
+
// the call alone with a TODO so the user can hand-translate.
|
|
155
|
+
const stripped = body.replace(/['"`][^'"`]+['"`]/g, '').replace(/[\s,]+/g, '');
|
|
156
|
+
if (stripped.length > 0 || keys.length === 0) {
|
|
157
|
+
return `/* TODO: rewrite as zod 4 mask: ${match} */ ${match}`;
|
|
158
|
+
}
|
|
159
|
+
const mask = keys.map((k) => `${k}: true`).join(', ');
|
|
160
|
+
return `.${method}({ ${mask} })`;
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
|
|
125
164
|
/**
|
|
126
165
|
* Walk `z.union(…)` call sites and wrap the args in an array literal unless
|
|
127
166
|
* they already are one. We scan with a brace-depth counter so nested parens
|