zod 4.0.15 → 4.0.17
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/package.json +1 -1
- package/src/v4/classic/schemas.ts +14 -11
- package/src/v4/classic/tests/default.test.ts +12 -0
- package/src/v4/classic/tests/object.test.ts +15 -0
- package/src/v4/classic/tests/prefault.test.ts +12 -0
- package/src/v4/core/api.ts +7 -4
- package/src/v4/core/schemas.ts +18 -10
- package/src/v4/core/util.ts +5 -0
- package/src/v4/core/versions.ts +1 -1
- package/src/v4/mini/schemas.ts +13 -10
- package/src/v4/mini/tests/index.test.ts +13 -0
- package/src/v4/mini/tests/object.test.ts +6 -0
- package/v4/classic/schemas.cjs +3 -3
- package/v4/classic/schemas.d.cts +5 -5
- package/v4/classic/schemas.d.ts +5 -5
- package/v4/classic/schemas.js +3 -3
- package/v4/core/api.cjs +1 -1
- package/v4/core/api.d.cts +1 -1
- package/v4/core/api.d.ts +1 -1
- package/v4/core/api.js +1 -1
- package/v4/core/schemas.cjs +3 -2
- package/v4/core/schemas.d.cts +6 -6
- package/v4/core/schemas.d.ts +6 -6
- package/v4/core/schemas.js +3 -2
- package/v4/core/util.cjs +6 -0
- package/v4/core/util.d.cts +1 -0
- package/v4/core/util.d.ts +1 -0
- package/v4/core/util.js +5 -0
- package/v4/core/versions.cjs +1 -1
- package/v4/core/versions.js +1 -1
- package/v4/mini/schemas.cjs +3 -3
- package/v4/mini/schemas.d.cts +4 -4
- package/v4/mini/schemas.d.ts +4 -4
- package/v4/mini/schemas.js +3 -3
package/package.json
CHANGED
|
@@ -1038,9 +1038,9 @@ export function array<T extends core.SomeType>(element: T, params?: string | cor
|
|
|
1038
1038
|
}
|
|
1039
1039
|
|
|
1040
1040
|
// .keyof
|
|
1041
|
-
export function keyof<T extends ZodObject>(schema: T):
|
|
1041
|
+
export function keyof<T extends ZodObject>(schema: T): ZodEnum<util.KeysEnum<T["_zod"]["output"]>> {
|
|
1042
1042
|
const shape = schema._zod.def.shape;
|
|
1043
|
-
return
|
|
1043
|
+
return _enum(Object.keys(shape)) as any;
|
|
1044
1044
|
}
|
|
1045
1045
|
|
|
1046
1046
|
// ZodObject
|
|
@@ -1215,11 +1215,13 @@ export function union<const T extends readonly core.SomeType[]>(
|
|
|
1215
1215
|
}
|
|
1216
1216
|
|
|
1217
1217
|
// ZodDiscriminatedUnion
|
|
1218
|
-
export interface ZodDiscriminatedUnion<
|
|
1219
|
-
extends
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1218
|
+
export interface ZodDiscriminatedUnion<
|
|
1219
|
+
Options extends readonly core.SomeType[] = readonly core.$ZodType[],
|
|
1220
|
+
Disc extends string = string,
|
|
1221
|
+
> extends ZodUnion<Options>,
|
|
1222
|
+
core.$ZodDiscriminatedUnion<Options, Disc> {
|
|
1223
|
+
_zod: core.$ZodDiscriminatedUnionInternals<Options, Disc>;
|
|
1224
|
+
def: core.$ZodDiscriminatedUnionDef<Options, Disc>;
|
|
1223
1225
|
}
|
|
1224
1226
|
export const ZodDiscriminatedUnion: core.$constructor<ZodDiscriminatedUnion> = /*@__PURE__*/ core.$constructor(
|
|
1225
1227
|
"ZodDiscriminatedUnion",
|
|
@@ -1231,11 +1233,12 @@ export const ZodDiscriminatedUnion: core.$constructor<ZodDiscriminatedUnion> = /
|
|
|
1231
1233
|
|
|
1232
1234
|
export function discriminatedUnion<
|
|
1233
1235
|
Types extends readonly [core.$ZodTypeDiscriminable, ...core.$ZodTypeDiscriminable[]],
|
|
1236
|
+
Disc extends string,
|
|
1234
1237
|
>(
|
|
1235
|
-
discriminator:
|
|
1238
|
+
discriminator: Disc,
|
|
1236
1239
|
options: Types,
|
|
1237
1240
|
params?: string | core.$ZodDiscriminatedUnionParams
|
|
1238
|
-
): ZodDiscriminatedUnion<Types> {
|
|
1241
|
+
): ZodDiscriminatedUnion<Types, Disc> {
|
|
1239
1242
|
// const [options, params] = args;
|
|
1240
1243
|
return new ZodDiscriminatedUnion({
|
|
1241
1244
|
type: "union",
|
|
@@ -1685,7 +1688,7 @@ export function _default<T extends core.SomeType>(
|
|
|
1685
1688
|
type: "default",
|
|
1686
1689
|
innerType: innerType as any as core.$ZodType,
|
|
1687
1690
|
get defaultValue() {
|
|
1688
|
-
return typeof defaultValue === "function" ? (defaultValue as Function)() : defaultValue;
|
|
1691
|
+
return typeof defaultValue === "function" ? (defaultValue as Function)() : util.shallowClone(defaultValue);
|
|
1689
1692
|
},
|
|
1690
1693
|
}) as any;
|
|
1691
1694
|
}
|
|
@@ -1713,7 +1716,7 @@ export function prefault<T extends core.SomeType>(
|
|
|
1713
1716
|
type: "prefault",
|
|
1714
1717
|
innerType: innerType as any as core.$ZodType,
|
|
1715
1718
|
get defaultValue() {
|
|
1716
|
-
return typeof defaultValue === "function" ? (defaultValue as Function)() : defaultValue;
|
|
1719
|
+
return typeof defaultValue === "function" ? (defaultValue as Function)() : util.shallowClone(defaultValue);
|
|
1717
1720
|
},
|
|
1718
1721
|
}) as any;
|
|
1719
1722
|
}
|
|
@@ -311,3 +311,15 @@ test("partial should not clobber defaults", () => {
|
|
|
311
311
|
}
|
|
312
312
|
`);
|
|
313
313
|
});
|
|
314
|
+
|
|
315
|
+
test("defaulted object schema returns shallow clone", () => {
|
|
316
|
+
const schema = z
|
|
317
|
+
.object({
|
|
318
|
+
a: z.string(),
|
|
319
|
+
})
|
|
320
|
+
.default({ a: "x" });
|
|
321
|
+
const result1 = schema.parse(undefined);
|
|
322
|
+
const result2 = schema.parse(undefined);
|
|
323
|
+
expect(result1).not.toBe(result2);
|
|
324
|
+
expect(result1).toEqual(result2);
|
|
325
|
+
});
|
|
@@ -261,6 +261,21 @@ test("inferred enum type", async () => {
|
|
|
261
261
|
expectTypeOf<Enum>().toEqualTypeOf<"a" | "b">();
|
|
262
262
|
});
|
|
263
263
|
|
|
264
|
+
test("z.keyof returns enum", () => {
|
|
265
|
+
const User = z.object({ name: z.string(), age: z.number() });
|
|
266
|
+
const keysSchema = z.keyof(User);
|
|
267
|
+
expect(keysSchema.enum).toEqual({
|
|
268
|
+
name: "name",
|
|
269
|
+
age: "age",
|
|
270
|
+
});
|
|
271
|
+
expect(keysSchema._zod.def.entries).toEqual({
|
|
272
|
+
name: "name",
|
|
273
|
+
age: "age",
|
|
274
|
+
});
|
|
275
|
+
type Keys = z.infer<typeof keysSchema>;
|
|
276
|
+
expectTypeOf<Keys>().toEqualTypeOf<"name" | "age">();
|
|
277
|
+
});
|
|
278
|
+
|
|
264
279
|
test("inferred partial object type with optional properties", async () => {
|
|
265
280
|
const Partial = z.object({ a: z.string(), b: z.string().optional() }).partial();
|
|
266
281
|
type Partial = z.infer<typeof Partial>;
|
|
@@ -35,3 +35,15 @@ test("prefault inside object", () => {
|
|
|
35
35
|
email: string;
|
|
36
36
|
}>();
|
|
37
37
|
});
|
|
38
|
+
|
|
39
|
+
test("object schema with prefault should return shallow clone", () => {
|
|
40
|
+
const schema = z
|
|
41
|
+
.object({
|
|
42
|
+
a: z.string(),
|
|
43
|
+
})
|
|
44
|
+
.default({ a: "x" });
|
|
45
|
+
const result1 = schema.parse(undefined);
|
|
46
|
+
const result2 = schema.parse(undefined);
|
|
47
|
+
expect(result1).not.toBe(result2);
|
|
48
|
+
expect(result1).toEqual(result2);
|
|
49
|
+
});
|
package/src/v4/core/api.ts
CHANGED
|
@@ -1081,12 +1081,15 @@ export interface $ZodTypeDiscriminable extends schemas.$ZodType {
|
|
|
1081
1081
|
_zod: $ZodTypeDiscriminableInternals;
|
|
1082
1082
|
}
|
|
1083
1083
|
export type $ZodDiscriminatedUnionParams = TypeParams<schemas.$ZodDiscriminatedUnion, "options" | "discriminator">;
|
|
1084
|
-
export function _discriminatedUnion<
|
|
1084
|
+
export function _discriminatedUnion<
|
|
1085
|
+
Types extends [$ZodTypeDiscriminable, ...$ZodTypeDiscriminable[]],
|
|
1086
|
+
Disc extends string,
|
|
1087
|
+
>(
|
|
1085
1088
|
Class: util.SchemaClass<schemas.$ZodDiscriminatedUnion>,
|
|
1086
|
-
discriminator:
|
|
1089
|
+
discriminator: Disc,
|
|
1087
1090
|
options: Types,
|
|
1088
1091
|
params?: string | $ZodDiscriminatedUnionParams
|
|
1089
|
-
): schemas.$ZodDiscriminatedUnion<Types> {
|
|
1092
|
+
): schemas.$ZodDiscriminatedUnion<Types, Disc> {
|
|
1090
1093
|
return new Class({
|
|
1091
1094
|
type: "union",
|
|
1092
1095
|
options,
|
|
@@ -1318,7 +1321,7 @@ export function _default<T extends schemas.$ZodObject>(
|
|
|
1318
1321
|
type: "default",
|
|
1319
1322
|
innerType,
|
|
1320
1323
|
get defaultValue() {
|
|
1321
|
-
return typeof defaultValue === "function" ? (defaultValue as Function)() : defaultValue;
|
|
1324
|
+
return typeof defaultValue === "function" ? (defaultValue as Function)() : util.shallowClone(defaultValue);
|
|
1322
1325
|
},
|
|
1323
1326
|
}) as any;
|
|
1324
1327
|
}
|
package/src/v4/core/schemas.ts
CHANGED
|
@@ -1721,7 +1721,7 @@ export const $ZodObject: core.$constructor<$ZodObject> = /*@__PURE__*/ core.$con
|
|
|
1721
1721
|
const _normalized = util.cached(() => {
|
|
1722
1722
|
const keys = Object.keys(def.shape);
|
|
1723
1723
|
for (const k of keys) {
|
|
1724
|
-
if (!
|
|
1724
|
+
if (!def.shape[k]._zod.traits.has("$ZodType")) {
|
|
1725
1725
|
throw new Error(`Invalid element at key "${k}": expected a Zod schema`);
|
|
1726
1726
|
}
|
|
1727
1727
|
}
|
|
@@ -2010,20 +2010,27 @@ export const $ZodUnion: core.$constructor<$ZodUnion> = /*@__PURE__*/ core.$const
|
|
|
2010
2010
|
//////////////////////////////////////////////////////
|
|
2011
2011
|
//////////////////////////////////////////////////////
|
|
2012
2012
|
|
|
2013
|
-
export interface $ZodDiscriminatedUnionDef<
|
|
2014
|
-
extends $
|
|
2015
|
-
|
|
2013
|
+
export interface $ZodDiscriminatedUnionDef<
|
|
2014
|
+
Options extends readonly SomeType[] = readonly $ZodType[],
|
|
2015
|
+
Disc extends string = string,
|
|
2016
|
+
> extends $ZodUnionDef<Options> {
|
|
2017
|
+
discriminator: Disc;
|
|
2016
2018
|
unionFallback?: boolean;
|
|
2017
2019
|
}
|
|
2018
2020
|
|
|
2019
|
-
export interface $ZodDiscriminatedUnionInternals<
|
|
2020
|
-
extends $
|
|
2021
|
-
|
|
2021
|
+
export interface $ZodDiscriminatedUnionInternals<
|
|
2022
|
+
Options extends readonly SomeType[] = readonly $ZodType[],
|
|
2023
|
+
Disc extends string = string,
|
|
2024
|
+
> extends $ZodUnionInternals<Options> {
|
|
2025
|
+
def: $ZodDiscriminatedUnionDef<Options, Disc>;
|
|
2022
2026
|
propValues: util.PropValues;
|
|
2023
2027
|
}
|
|
2024
2028
|
|
|
2025
|
-
export interface $ZodDiscriminatedUnion<
|
|
2026
|
-
|
|
2029
|
+
export interface $ZodDiscriminatedUnion<
|
|
2030
|
+
Options extends readonly SomeType[] = readonly $ZodType[],
|
|
2031
|
+
Disc extends string = string,
|
|
2032
|
+
> extends $ZodType {
|
|
2033
|
+
_zod: $ZodDiscriminatedUnionInternals<Options, Disc>;
|
|
2027
2034
|
}
|
|
2028
2035
|
|
|
2029
2036
|
export const $ZodDiscriminatedUnion: core.$constructor<$ZodDiscriminatedUnion> =
|
|
@@ -3635,7 +3642,8 @@ export const $ZodTemplateLiteral: core.$constructor<$ZodTemplateLiteral> = /*@__
|
|
|
3635
3642
|
$ZodType.init(inst, def);
|
|
3636
3643
|
const regexParts: string[] = [];
|
|
3637
3644
|
for (const part of def.parts) {
|
|
3638
|
-
if (part
|
|
3645
|
+
if (typeof part === "object" && part !== null) {
|
|
3646
|
+
// is Zod schema
|
|
3639
3647
|
if (!part._zod.pattern) {
|
|
3640
3648
|
// if (!source)
|
|
3641
3649
|
throw new Error(`Invalid template literal part, no pattern found: ${[...(part as any)._zod.traits].shift()}`);
|
package/src/v4/core/util.ts
CHANGED
|
@@ -389,6 +389,11 @@ export function isPlainObject(o: any): o is Record<PropertyKey, unknown> {
|
|
|
389
389
|
return true;
|
|
390
390
|
}
|
|
391
391
|
|
|
392
|
+
export function shallowClone(o: any): any {
|
|
393
|
+
if (isPlainObject(o)) return { ...o };
|
|
394
|
+
return o;
|
|
395
|
+
}
|
|
396
|
+
|
|
392
397
|
export function numKeys(data: any): number {
|
|
393
398
|
let keyCount = 0;
|
|
394
399
|
for (const key in data) {
|
package/src/v4/core/versions.ts
CHANGED
package/src/v4/mini/schemas.ts
CHANGED
|
@@ -712,9 +712,9 @@ export function array<T extends SomeType>(element: SomeType, params?: any): ZodM
|
|
|
712
712
|
}
|
|
713
713
|
|
|
714
714
|
// .keyof
|
|
715
|
-
export function keyof<T extends ZodMiniObject>(schema: T):
|
|
715
|
+
export function keyof<T extends ZodMiniObject>(schema: T): ZodMiniEnum<util.KeysEnum<T["shape"]>> {
|
|
716
716
|
const shape = schema._zod.def.shape;
|
|
717
|
-
return
|
|
717
|
+
return _enum(Object.keys(shape)) as any;
|
|
718
718
|
}
|
|
719
719
|
|
|
720
720
|
// ZodMiniObject
|
|
@@ -907,9 +907,11 @@ export function union<const T extends readonly SomeType[]>(
|
|
|
907
907
|
}
|
|
908
908
|
|
|
909
909
|
// ZodMiniDiscriminatedUnion
|
|
910
|
-
export interface ZodMiniDiscriminatedUnion<
|
|
911
|
-
extends
|
|
912
|
-
|
|
910
|
+
export interface ZodMiniDiscriminatedUnion<
|
|
911
|
+
Options extends readonly SomeType[] = readonly core.$ZodType[],
|
|
912
|
+
Disc extends string = string,
|
|
913
|
+
> extends ZodMiniUnion<Options> {
|
|
914
|
+
_zod: core.$ZodDiscriminatedUnionInternals<Options, Disc>;
|
|
913
915
|
}
|
|
914
916
|
export const ZodMiniDiscriminatedUnion: core.$constructor<ZodMiniDiscriminatedUnion> = /*@__PURE__*/ core.$constructor(
|
|
915
917
|
"ZodMiniDiscriminatedUnion",
|
|
@@ -921,17 +923,18 @@ export const ZodMiniDiscriminatedUnion: core.$constructor<ZodMiniDiscriminatedUn
|
|
|
921
923
|
|
|
922
924
|
export function discriminatedUnion<
|
|
923
925
|
Types extends readonly [core.$ZodTypeDiscriminable, ...core.$ZodTypeDiscriminable[]],
|
|
926
|
+
Disc extends string,
|
|
924
927
|
>(
|
|
925
|
-
discriminator:
|
|
928
|
+
discriminator: Disc,
|
|
926
929
|
options: Types,
|
|
927
930
|
params?: string | core.$ZodDiscriminatedUnionParams
|
|
928
|
-
): ZodMiniDiscriminatedUnion<Types> {
|
|
931
|
+
): ZodMiniDiscriminatedUnion<Types, Disc> {
|
|
929
932
|
return new ZodMiniDiscriminatedUnion({
|
|
930
933
|
type: "union",
|
|
931
934
|
options,
|
|
932
935
|
discriminator,
|
|
933
936
|
...util.normalizeParams(params),
|
|
934
|
-
}) as ZodMiniDiscriminatedUnion<Types>;
|
|
937
|
+
}) as ZodMiniDiscriminatedUnion<Types, Disc>;
|
|
935
938
|
}
|
|
936
939
|
|
|
937
940
|
// ZodMiniIntersection
|
|
@@ -1253,7 +1256,7 @@ export function _default<T extends SomeType>(
|
|
|
1253
1256
|
type: "default",
|
|
1254
1257
|
innerType: innerType as any as core.$ZodType,
|
|
1255
1258
|
get defaultValue() {
|
|
1256
|
-
return typeof defaultValue === "function" ? (defaultValue as Function)() : defaultValue;
|
|
1259
|
+
return typeof defaultValue === "function" ? (defaultValue as Function)() : util.shallowClone(defaultValue);
|
|
1257
1260
|
},
|
|
1258
1261
|
}) as any;
|
|
1259
1262
|
}
|
|
@@ -1278,7 +1281,7 @@ export function prefault<T extends SomeType>(
|
|
|
1278
1281
|
type: "prefault",
|
|
1279
1282
|
innerType: innerType as any as core.$ZodType,
|
|
1280
1283
|
get defaultValue() {
|
|
1281
|
-
return typeof defaultValue === "function" ? (defaultValue as Function)() : defaultValue;
|
|
1284
|
+
return typeof defaultValue === "function" ? (defaultValue as Function)() : util.shallowClone(defaultValue);
|
|
1282
1285
|
},
|
|
1283
1286
|
}) as any;
|
|
1284
1287
|
}
|
|
@@ -869,3 +869,16 @@ test("def typing", () => {
|
|
|
869
869
|
z.catch(z.string(), "fallback").def.type satisfies "catch";
|
|
870
870
|
z.file().def.type satisfies "file";
|
|
871
871
|
});
|
|
872
|
+
|
|
873
|
+
test("defaulted object schema returns shallow clone", () => {
|
|
874
|
+
const schema = z._default(
|
|
875
|
+
z.object({
|
|
876
|
+
a: z.string(),
|
|
877
|
+
}),
|
|
878
|
+
{ a: "x" }
|
|
879
|
+
);
|
|
880
|
+
const result1 = schema.parse(undefined);
|
|
881
|
+
const result2 = schema.parse(undefined);
|
|
882
|
+
expect(result1).not.toBe(result2);
|
|
883
|
+
expect(result1).toEqual(result2);
|
|
884
|
+
});
|
|
@@ -89,6 +89,12 @@ test("z.keyof", () => {
|
|
|
89
89
|
type UserKeys = z.infer<typeof userKeysSchema>;
|
|
90
90
|
expectTypeOf<UserKeys>().toEqualTypeOf<"name" | "age" | "email">();
|
|
91
91
|
expect(userKeysSchema).toBeDefined();
|
|
92
|
+
expect(userKeysSchema._zod.def.type).toBe("enum");
|
|
93
|
+
expect(userKeysSchema._zod.def.entries).toEqual({
|
|
94
|
+
name: "name",
|
|
95
|
+
age: "age",
|
|
96
|
+
email: "email",
|
|
97
|
+
});
|
|
92
98
|
expect(z.safeParse(userKeysSchema, "name").success).toBe(true);
|
|
93
99
|
expect(z.safeParse(userKeysSchema, "age").success).toBe(true);
|
|
94
100
|
expect(z.safeParse(userKeysSchema, "email").success).toBe(true);
|
package/v4/classic/schemas.cjs
CHANGED
|
@@ -590,7 +590,7 @@ function array(element, params) {
|
|
|
590
590
|
// .keyof
|
|
591
591
|
function keyof(schema) {
|
|
592
592
|
const shape = schema._zod.def.shape;
|
|
593
|
-
return
|
|
593
|
+
return _enum(Object.keys(shape));
|
|
594
594
|
}
|
|
595
595
|
exports.ZodObject = core.$constructor("ZodObject", (inst, def) => {
|
|
596
596
|
core.$ZodObject.init(inst, def);
|
|
@@ -920,7 +920,7 @@ function _default(innerType, defaultValue) {
|
|
|
920
920
|
type: "default",
|
|
921
921
|
innerType: innerType,
|
|
922
922
|
get defaultValue() {
|
|
923
|
-
return typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
923
|
+
return typeof defaultValue === "function" ? defaultValue() : index_js_1.util.shallowClone(defaultValue);
|
|
924
924
|
},
|
|
925
925
|
});
|
|
926
926
|
}
|
|
@@ -934,7 +934,7 @@ function prefault(innerType, defaultValue) {
|
|
|
934
934
|
type: "prefault",
|
|
935
935
|
innerType: innerType,
|
|
936
936
|
get defaultValue() {
|
|
937
|
-
return typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
937
|
+
return typeof defaultValue === "function" ? defaultValue() : index_js_1.util.shallowClone(defaultValue);
|
|
938
938
|
},
|
|
939
939
|
});
|
|
940
940
|
}
|
package/v4/classic/schemas.d.cts
CHANGED
|
@@ -395,7 +395,7 @@ export interface ZodArray<T extends core.SomeType = core.$ZodType> extends _ZodT
|
|
|
395
395
|
}
|
|
396
396
|
export declare const ZodArray: core.$constructor<ZodArray>;
|
|
397
397
|
export declare function array<T extends core.SomeType>(element: T, params?: string | core.$ZodArrayParams): ZodArray<T>;
|
|
398
|
-
export declare function keyof<T extends ZodObject>(schema: T):
|
|
398
|
+
export declare function keyof<T extends ZodObject>(schema: T): ZodEnum<util.KeysEnum<T["_zod"]["output"]>>;
|
|
399
399
|
export interface ZodObject<
|
|
400
400
|
/** @ts-ignore Cast variance */
|
|
401
401
|
out Shape extends core.$ZodShape = core.$ZodLooseShape, out Config extends core.$ZodObjectConfig = core.$strip> extends _ZodType<core.$ZodObjectInternals<Shape, Config>>, core.$ZodObject<Shape, Config> {
|
|
@@ -440,12 +440,12 @@ export interface ZodUnion<T extends readonly core.SomeType[] = readonly core.$Zo
|
|
|
440
440
|
}
|
|
441
441
|
export declare const ZodUnion: core.$constructor<ZodUnion>;
|
|
442
442
|
export declare function union<const T extends readonly core.SomeType[]>(options: T, params?: string | core.$ZodUnionParams): ZodUnion<T>;
|
|
443
|
-
export interface ZodDiscriminatedUnion<Options extends readonly core.SomeType[] = readonly core.$ZodType[]> extends ZodUnion<Options>, core.$ZodDiscriminatedUnion<Options> {
|
|
444
|
-
_zod: core.$ZodDiscriminatedUnionInternals<Options>;
|
|
445
|
-
def: core.$ZodDiscriminatedUnionDef<Options>;
|
|
443
|
+
export interface ZodDiscriminatedUnion<Options extends readonly core.SomeType[] = readonly core.$ZodType[], Disc extends string = string> extends ZodUnion<Options>, core.$ZodDiscriminatedUnion<Options, Disc> {
|
|
444
|
+
_zod: core.$ZodDiscriminatedUnionInternals<Options, Disc>;
|
|
445
|
+
def: core.$ZodDiscriminatedUnionDef<Options, Disc>;
|
|
446
446
|
}
|
|
447
447
|
export declare const ZodDiscriminatedUnion: core.$constructor<ZodDiscriminatedUnion>;
|
|
448
|
-
export declare function discriminatedUnion<Types extends readonly [core.$ZodTypeDiscriminable, ...core.$ZodTypeDiscriminable[]]>(discriminator:
|
|
448
|
+
export declare function discriminatedUnion<Types extends readonly [core.$ZodTypeDiscriminable, ...core.$ZodTypeDiscriminable[]], Disc extends string>(discriminator: Disc, options: Types, params?: string | core.$ZodDiscriminatedUnionParams): ZodDiscriminatedUnion<Types, Disc>;
|
|
449
449
|
export interface ZodIntersection<A extends core.SomeType = core.$ZodType, B extends core.SomeType = core.$ZodType> extends _ZodType<core.$ZodIntersectionInternals<A, B>>, core.$ZodIntersection<A, B> {
|
|
450
450
|
}
|
|
451
451
|
export declare const ZodIntersection: core.$constructor<ZodIntersection>;
|
package/v4/classic/schemas.d.ts
CHANGED
|
@@ -395,7 +395,7 @@ export interface ZodArray<T extends core.SomeType = core.$ZodType> extends _ZodT
|
|
|
395
395
|
}
|
|
396
396
|
export declare const ZodArray: core.$constructor<ZodArray>;
|
|
397
397
|
export declare function array<T extends core.SomeType>(element: T, params?: string | core.$ZodArrayParams): ZodArray<T>;
|
|
398
|
-
export declare function keyof<T extends ZodObject>(schema: T):
|
|
398
|
+
export declare function keyof<T extends ZodObject>(schema: T): ZodEnum<util.KeysEnum<T["_zod"]["output"]>>;
|
|
399
399
|
export interface ZodObject<
|
|
400
400
|
/** @ts-ignore Cast variance */
|
|
401
401
|
out Shape extends core.$ZodShape = core.$ZodLooseShape, out Config extends core.$ZodObjectConfig = core.$strip> extends _ZodType<core.$ZodObjectInternals<Shape, Config>>, core.$ZodObject<Shape, Config> {
|
|
@@ -440,12 +440,12 @@ export interface ZodUnion<T extends readonly core.SomeType[] = readonly core.$Zo
|
|
|
440
440
|
}
|
|
441
441
|
export declare const ZodUnion: core.$constructor<ZodUnion>;
|
|
442
442
|
export declare function union<const T extends readonly core.SomeType[]>(options: T, params?: string | core.$ZodUnionParams): ZodUnion<T>;
|
|
443
|
-
export interface ZodDiscriminatedUnion<Options extends readonly core.SomeType[] = readonly core.$ZodType[]> extends ZodUnion<Options>, core.$ZodDiscriminatedUnion<Options> {
|
|
444
|
-
_zod: core.$ZodDiscriminatedUnionInternals<Options>;
|
|
445
|
-
def: core.$ZodDiscriminatedUnionDef<Options>;
|
|
443
|
+
export interface ZodDiscriminatedUnion<Options extends readonly core.SomeType[] = readonly core.$ZodType[], Disc extends string = string> extends ZodUnion<Options>, core.$ZodDiscriminatedUnion<Options, Disc> {
|
|
444
|
+
_zod: core.$ZodDiscriminatedUnionInternals<Options, Disc>;
|
|
445
|
+
def: core.$ZodDiscriminatedUnionDef<Options, Disc>;
|
|
446
446
|
}
|
|
447
447
|
export declare const ZodDiscriminatedUnion: core.$constructor<ZodDiscriminatedUnion>;
|
|
448
|
-
export declare function discriminatedUnion<Types extends readonly [core.$ZodTypeDiscriminable, ...core.$ZodTypeDiscriminable[]]>(discriminator:
|
|
448
|
+
export declare function discriminatedUnion<Types extends readonly [core.$ZodTypeDiscriminable, ...core.$ZodTypeDiscriminable[]], Disc extends string>(discriminator: Disc, options: Types, params?: string | core.$ZodDiscriminatedUnionParams): ZodDiscriminatedUnion<Types, Disc>;
|
|
449
449
|
export interface ZodIntersection<A extends core.SomeType = core.$ZodType, B extends core.SomeType = core.$ZodType> extends _ZodType<core.$ZodIntersectionInternals<A, B>>, core.$ZodIntersection<A, B> {
|
|
450
450
|
}
|
|
451
451
|
export declare const ZodIntersection: core.$constructor<ZodIntersection>;
|
package/v4/classic/schemas.js
CHANGED
|
@@ -484,7 +484,7 @@ export function array(element, params) {
|
|
|
484
484
|
// .keyof
|
|
485
485
|
export function keyof(schema) {
|
|
486
486
|
const shape = schema._zod.def.shape;
|
|
487
|
-
return
|
|
487
|
+
return _enum(Object.keys(shape));
|
|
488
488
|
}
|
|
489
489
|
export const ZodObject = /*@__PURE__*/ core.$constructor("ZodObject", (inst, def) => {
|
|
490
490
|
core.$ZodObject.init(inst, def);
|
|
@@ -815,7 +815,7 @@ export function _default(innerType, defaultValue) {
|
|
|
815
815
|
type: "default",
|
|
816
816
|
innerType: innerType,
|
|
817
817
|
get defaultValue() {
|
|
818
|
-
return typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
818
|
+
return typeof defaultValue === "function" ? defaultValue() : util.shallowClone(defaultValue);
|
|
819
819
|
},
|
|
820
820
|
});
|
|
821
821
|
}
|
|
@@ -829,7 +829,7 @@ export function prefault(innerType, defaultValue) {
|
|
|
829
829
|
type: "prefault",
|
|
830
830
|
innerType: innerType,
|
|
831
831
|
get defaultValue() {
|
|
832
|
-
return typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
832
|
+
return typeof defaultValue === "function" ? defaultValue() : util.shallowClone(defaultValue);
|
|
833
833
|
},
|
|
834
834
|
});
|
|
835
835
|
}
|
package/v4/core/api.cjs
CHANGED
|
@@ -882,7 +882,7 @@ function _default(Class, innerType, defaultValue) {
|
|
|
882
882
|
type: "default",
|
|
883
883
|
innerType,
|
|
884
884
|
get defaultValue() {
|
|
885
|
-
return typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
885
|
+
return typeof defaultValue === "function" ? defaultValue() : util.shallowClone(defaultValue);
|
|
886
886
|
},
|
|
887
887
|
});
|
|
888
888
|
}
|
package/v4/core/api.d.cts
CHANGED
|
@@ -210,7 +210,7 @@ export interface $ZodTypeDiscriminable extends schemas.$ZodType {
|
|
|
210
210
|
_zod: $ZodTypeDiscriminableInternals;
|
|
211
211
|
}
|
|
212
212
|
export type $ZodDiscriminatedUnionParams = TypeParams<schemas.$ZodDiscriminatedUnion, "options" | "discriminator">;
|
|
213
|
-
export declare function _discriminatedUnion<Types extends [$ZodTypeDiscriminable, ...$ZodTypeDiscriminable[]]>(Class: util.SchemaClass<schemas.$ZodDiscriminatedUnion>, discriminator:
|
|
213
|
+
export declare function _discriminatedUnion<Types extends [$ZodTypeDiscriminable, ...$ZodTypeDiscriminable[]], Disc extends string>(Class: util.SchemaClass<schemas.$ZodDiscriminatedUnion>, discriminator: Disc, options: Types, params?: string | $ZodDiscriminatedUnionParams): schemas.$ZodDiscriminatedUnion<Types, Disc>;
|
|
214
214
|
export type $ZodIntersectionParams = TypeParams<schemas.$ZodIntersection, "left" | "right">;
|
|
215
215
|
export declare function _intersection<T extends schemas.$ZodObject, U extends schemas.$ZodObject>(Class: util.SchemaClass<schemas.$ZodIntersection>, left: T, right: U): schemas.$ZodIntersection<T, U>;
|
|
216
216
|
export type $ZodTupleParams = TypeParams<schemas.$ZodTuple, "items" | "rest">;
|
package/v4/core/api.d.ts
CHANGED
|
@@ -210,7 +210,7 @@ export interface $ZodTypeDiscriminable extends schemas.$ZodType {
|
|
|
210
210
|
_zod: $ZodTypeDiscriminableInternals;
|
|
211
211
|
}
|
|
212
212
|
export type $ZodDiscriminatedUnionParams = TypeParams<schemas.$ZodDiscriminatedUnion, "options" | "discriminator">;
|
|
213
|
-
export declare function _discriminatedUnion<Types extends [$ZodTypeDiscriminable, ...$ZodTypeDiscriminable[]]>(Class: util.SchemaClass<schemas.$ZodDiscriminatedUnion>, discriminator:
|
|
213
|
+
export declare function _discriminatedUnion<Types extends [$ZodTypeDiscriminable, ...$ZodTypeDiscriminable[]], Disc extends string>(Class: util.SchemaClass<schemas.$ZodDiscriminatedUnion>, discriminator: Disc, options: Types, params?: string | $ZodDiscriminatedUnionParams): schemas.$ZodDiscriminatedUnion<Types, Disc>;
|
|
214
214
|
export type $ZodIntersectionParams = TypeParams<schemas.$ZodIntersection, "left" | "right">;
|
|
215
215
|
export declare function _intersection<T extends schemas.$ZodObject, U extends schemas.$ZodObject>(Class: util.SchemaClass<schemas.$ZodIntersection>, left: T, right: U): schemas.$ZodIntersection<T, U>;
|
|
216
216
|
export type $ZodTupleParams = TypeParams<schemas.$ZodTuple, "items" | "rest">;
|
package/v4/core/api.js
CHANGED
|
@@ -747,7 +747,7 @@ export function _default(Class, innerType, defaultValue) {
|
|
|
747
747
|
type: "default",
|
|
748
748
|
innerType,
|
|
749
749
|
get defaultValue() {
|
|
750
|
-
return typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
750
|
+
return typeof defaultValue === "function" ? defaultValue() : util.shallowClone(defaultValue);
|
|
751
751
|
},
|
|
752
752
|
});
|
|
753
753
|
}
|
package/v4/core/schemas.cjs
CHANGED
|
@@ -710,7 +710,7 @@ exports.$ZodObject = core.$constructor("$ZodObject", (inst, def) => {
|
|
|
710
710
|
const _normalized = util.cached(() => {
|
|
711
711
|
const keys = Object.keys(def.shape);
|
|
712
712
|
for (const k of keys) {
|
|
713
|
-
if (!
|
|
713
|
+
if (!def.shape[k]._zod.traits.has("$ZodType")) {
|
|
714
714
|
throw new Error(`Invalid element at key "${k}": expected a Zod schema`);
|
|
715
715
|
}
|
|
716
716
|
}
|
|
@@ -1632,7 +1632,8 @@ exports.$ZodTemplateLiteral = core.$constructor("$ZodTemplateLiteral", (inst, de
|
|
|
1632
1632
|
exports.$ZodType.init(inst, def);
|
|
1633
1633
|
const regexParts = [];
|
|
1634
1634
|
for (const part of def.parts) {
|
|
1635
|
-
if (part
|
|
1635
|
+
if (typeof part === "object" && part !== null) {
|
|
1636
|
+
// is Zod schema
|
|
1636
1637
|
if (!part._zod.pattern) {
|
|
1637
1638
|
// if (!source)
|
|
1638
1639
|
throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);
|
package/v4/core/schemas.d.cts
CHANGED
|
@@ -619,16 +619,16 @@ export interface $ZodUnion<T extends readonly SomeType[] = readonly $ZodType[]>
|
|
|
619
619
|
_zod: $ZodUnionInternals<T>;
|
|
620
620
|
}
|
|
621
621
|
export declare const $ZodUnion: core.$constructor<$ZodUnion>;
|
|
622
|
-
export interface $ZodDiscriminatedUnionDef<Options extends readonly SomeType[] = readonly $ZodType[]> extends $ZodUnionDef<Options> {
|
|
623
|
-
discriminator:
|
|
622
|
+
export interface $ZodDiscriminatedUnionDef<Options extends readonly SomeType[] = readonly $ZodType[], Disc extends string = string> extends $ZodUnionDef<Options> {
|
|
623
|
+
discriminator: Disc;
|
|
624
624
|
unionFallback?: boolean;
|
|
625
625
|
}
|
|
626
|
-
export interface $ZodDiscriminatedUnionInternals<Options extends readonly SomeType[] = readonly $ZodType[]> extends $ZodUnionInternals<Options> {
|
|
627
|
-
def: $ZodDiscriminatedUnionDef<Options>;
|
|
626
|
+
export interface $ZodDiscriminatedUnionInternals<Options extends readonly SomeType[] = readonly $ZodType[], Disc extends string = string> extends $ZodUnionInternals<Options> {
|
|
627
|
+
def: $ZodDiscriminatedUnionDef<Options, Disc>;
|
|
628
628
|
propValues: util.PropValues;
|
|
629
629
|
}
|
|
630
|
-
export interface $ZodDiscriminatedUnion<
|
|
631
|
-
_zod: $ZodDiscriminatedUnionInternals<
|
|
630
|
+
export interface $ZodDiscriminatedUnion<Options extends readonly SomeType[] = readonly $ZodType[], Disc extends string = string> extends $ZodType {
|
|
631
|
+
_zod: $ZodDiscriminatedUnionInternals<Options, Disc>;
|
|
632
632
|
}
|
|
633
633
|
export declare const $ZodDiscriminatedUnion: core.$constructor<$ZodDiscriminatedUnion>;
|
|
634
634
|
export interface $ZodIntersectionDef<Left extends SomeType = $ZodType, Right extends SomeType = $ZodType> extends $ZodTypeDef {
|
package/v4/core/schemas.d.ts
CHANGED
|
@@ -619,16 +619,16 @@ export interface $ZodUnion<T extends readonly SomeType[] = readonly $ZodType[]>
|
|
|
619
619
|
_zod: $ZodUnionInternals<T>;
|
|
620
620
|
}
|
|
621
621
|
export declare const $ZodUnion: core.$constructor<$ZodUnion>;
|
|
622
|
-
export interface $ZodDiscriminatedUnionDef<Options extends readonly SomeType[] = readonly $ZodType[]> extends $ZodUnionDef<Options> {
|
|
623
|
-
discriminator:
|
|
622
|
+
export interface $ZodDiscriminatedUnionDef<Options extends readonly SomeType[] = readonly $ZodType[], Disc extends string = string> extends $ZodUnionDef<Options> {
|
|
623
|
+
discriminator: Disc;
|
|
624
624
|
unionFallback?: boolean;
|
|
625
625
|
}
|
|
626
|
-
export interface $ZodDiscriminatedUnionInternals<Options extends readonly SomeType[] = readonly $ZodType[]> extends $ZodUnionInternals<Options> {
|
|
627
|
-
def: $ZodDiscriminatedUnionDef<Options>;
|
|
626
|
+
export interface $ZodDiscriminatedUnionInternals<Options extends readonly SomeType[] = readonly $ZodType[], Disc extends string = string> extends $ZodUnionInternals<Options> {
|
|
627
|
+
def: $ZodDiscriminatedUnionDef<Options, Disc>;
|
|
628
628
|
propValues: util.PropValues;
|
|
629
629
|
}
|
|
630
|
-
export interface $ZodDiscriminatedUnion<
|
|
631
|
-
_zod: $ZodDiscriminatedUnionInternals<
|
|
630
|
+
export interface $ZodDiscriminatedUnion<Options extends readonly SomeType[] = readonly $ZodType[], Disc extends string = string> extends $ZodType {
|
|
631
|
+
_zod: $ZodDiscriminatedUnionInternals<Options, Disc>;
|
|
632
632
|
}
|
|
633
633
|
export declare const $ZodDiscriminatedUnion: core.$constructor<$ZodDiscriminatedUnion>;
|
|
634
634
|
export interface $ZodIntersectionDef<Left extends SomeType = $ZodType, Right extends SomeType = $ZodType> extends $ZodTypeDef {
|
package/v4/core/schemas.js
CHANGED
|
@@ -679,7 +679,7 @@ export const $ZodObject = /*@__PURE__*/ core.$constructor("$ZodObject", (inst, d
|
|
|
679
679
|
const _normalized = util.cached(() => {
|
|
680
680
|
const keys = Object.keys(def.shape);
|
|
681
681
|
for (const k of keys) {
|
|
682
|
-
if (!
|
|
682
|
+
if (!def.shape[k]._zod.traits.has("$ZodType")) {
|
|
683
683
|
throw new Error(`Invalid element at key "${k}": expected a Zod schema`);
|
|
684
684
|
}
|
|
685
685
|
}
|
|
@@ -1601,7 +1601,8 @@ export const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor("$ZodTemplate
|
|
|
1601
1601
|
$ZodType.init(inst, def);
|
|
1602
1602
|
const regexParts = [];
|
|
1603
1603
|
for (const part of def.parts) {
|
|
1604
|
-
if (part
|
|
1604
|
+
if (typeof part === "object" && part !== null) {
|
|
1605
|
+
// is Zod schema
|
|
1605
1606
|
if (!part._zod.pattern) {
|
|
1606
1607
|
// if (!source)
|
|
1607
1608
|
throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);
|
package/v4/core/util.cjs
CHANGED
|
@@ -24,6 +24,7 @@ exports.randomString = randomString;
|
|
|
24
24
|
exports.esc = esc;
|
|
25
25
|
exports.isObject = isObject;
|
|
26
26
|
exports.isPlainObject = isPlainObject;
|
|
27
|
+
exports.shallowClone = shallowClone;
|
|
27
28
|
exports.numKeys = numKeys;
|
|
28
29
|
exports.escapeRegex = escapeRegex;
|
|
29
30
|
exports.clone = clone;
|
|
@@ -217,6 +218,11 @@ function isPlainObject(o) {
|
|
|
217
218
|
}
|
|
218
219
|
return true;
|
|
219
220
|
}
|
|
221
|
+
function shallowClone(o) {
|
|
222
|
+
if (isPlainObject(o))
|
|
223
|
+
return { ...o };
|
|
224
|
+
return o;
|
|
225
|
+
}
|
|
220
226
|
function numKeys(data) {
|
|
221
227
|
let keyCount = 0;
|
|
222
228
|
for (const key in data) {
|
package/v4/core/util.d.cts
CHANGED
|
@@ -136,6 +136,7 @@ export declare const allowsEval: {
|
|
|
136
136
|
value: boolean;
|
|
137
137
|
};
|
|
138
138
|
export declare function isPlainObject(o: any): o is Record<PropertyKey, unknown>;
|
|
139
|
+
export declare function shallowClone(o: any): any;
|
|
139
140
|
export declare function numKeys(data: any): number;
|
|
140
141
|
export declare const getParsedType: (data: any) => ParsedTypes;
|
|
141
142
|
export declare const propertyKeyTypes: Set<string>;
|
package/v4/core/util.d.ts
CHANGED
|
@@ -136,6 +136,7 @@ export declare const allowsEval: {
|
|
|
136
136
|
value: boolean;
|
|
137
137
|
};
|
|
138
138
|
export declare function isPlainObject(o: any): o is Record<PropertyKey, unknown>;
|
|
139
|
+
export declare function shallowClone(o: any): any;
|
|
139
140
|
export declare function numKeys(data: any): number;
|
|
140
141
|
export declare const getParsedType: (data: any) => ParsedTypes;
|
|
141
142
|
export declare const propertyKeyTypes: Set<string>;
|
package/v4/core/util.js
CHANGED
|
@@ -170,6 +170,11 @@ export function isPlainObject(o) {
|
|
|
170
170
|
}
|
|
171
171
|
return true;
|
|
172
172
|
}
|
|
173
|
+
export function shallowClone(o) {
|
|
174
|
+
if (isPlainObject(o))
|
|
175
|
+
return { ...o };
|
|
176
|
+
return o;
|
|
177
|
+
}
|
|
173
178
|
export function numKeys(data) {
|
|
174
179
|
let keyCount = 0;
|
|
175
180
|
for (const key in data) {
|
package/v4/core/versions.cjs
CHANGED
package/v4/core/versions.js
CHANGED
package/v4/mini/schemas.cjs
CHANGED
|
@@ -435,7 +435,7 @@ function array(element, params) {
|
|
|
435
435
|
// .keyof
|
|
436
436
|
function keyof(schema) {
|
|
437
437
|
const shape = schema._zod.def.shape;
|
|
438
|
-
return
|
|
438
|
+
return _enum(Object.keys(shape));
|
|
439
439
|
}
|
|
440
440
|
exports.ZodMiniObject = core.$constructor("ZodMiniObject", (inst, def) => {
|
|
441
441
|
core.$ZodObject.init(inst, def);
|
|
@@ -686,7 +686,7 @@ function _default(innerType, defaultValue) {
|
|
|
686
686
|
type: "default",
|
|
687
687
|
innerType: innerType,
|
|
688
688
|
get defaultValue() {
|
|
689
|
-
return typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
689
|
+
return typeof defaultValue === "function" ? defaultValue() : index_js_1.util.shallowClone(defaultValue);
|
|
690
690
|
},
|
|
691
691
|
});
|
|
692
692
|
}
|
|
@@ -699,7 +699,7 @@ function prefault(innerType, defaultValue) {
|
|
|
699
699
|
type: "prefault",
|
|
700
700
|
innerType: innerType,
|
|
701
701
|
get defaultValue() {
|
|
702
|
-
return typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
702
|
+
return typeof defaultValue === "function" ? defaultValue() : index_js_1.util.shallowClone(defaultValue);
|
|
703
703
|
},
|
|
704
704
|
});
|
|
705
705
|
}
|
package/v4/mini/schemas.d.cts
CHANGED
|
@@ -179,7 +179,7 @@ export interface ZodMiniArray<T extends SomeType = core.$ZodType> extends _ZodMi
|
|
|
179
179
|
}
|
|
180
180
|
export declare const ZodMiniArray: core.$constructor<ZodMiniArray>;
|
|
181
181
|
export declare function array<T extends SomeType>(element: T, params?: string | core.$ZodArrayParams): ZodMiniArray<T>;
|
|
182
|
-
export declare function keyof<T extends ZodMiniObject>(schema: T):
|
|
182
|
+
export declare function keyof<T extends ZodMiniObject>(schema: T): ZodMiniEnum<util.KeysEnum<T["shape"]>>;
|
|
183
183
|
export interface ZodMiniObject<
|
|
184
184
|
/** @ts-ignore Cast variance */
|
|
185
185
|
out Shape extends core.$ZodShape = core.$ZodShape, out Config extends core.$ZodObjectConfig = core.$strip> extends ZodMiniType<any, any, core.$ZodObjectInternals<Shape, Config>>, core.$ZodObject<Shape, Config> {
|
|
@@ -216,11 +216,11 @@ export interface ZodMiniUnion<T extends readonly SomeType[] = readonly core.$Zod
|
|
|
216
216
|
}
|
|
217
217
|
export declare const ZodMiniUnion: core.$constructor<ZodMiniUnion>;
|
|
218
218
|
export declare function union<const T extends readonly SomeType[]>(options: T, params?: string | core.$ZodUnionParams): ZodMiniUnion<T>;
|
|
219
|
-
export interface ZodMiniDiscriminatedUnion<Options extends readonly SomeType[] = readonly core.$ZodType[]> extends ZodMiniUnion<Options> {
|
|
220
|
-
_zod: core.$ZodDiscriminatedUnionInternals<Options>;
|
|
219
|
+
export interface ZodMiniDiscriminatedUnion<Options extends readonly SomeType[] = readonly core.$ZodType[], Disc extends string = string> extends ZodMiniUnion<Options> {
|
|
220
|
+
_zod: core.$ZodDiscriminatedUnionInternals<Options, Disc>;
|
|
221
221
|
}
|
|
222
222
|
export declare const ZodMiniDiscriminatedUnion: core.$constructor<ZodMiniDiscriminatedUnion>;
|
|
223
|
-
export declare function discriminatedUnion<Types extends readonly [core.$ZodTypeDiscriminable, ...core.$ZodTypeDiscriminable[]]>(discriminator:
|
|
223
|
+
export declare function discriminatedUnion<Types extends readonly [core.$ZodTypeDiscriminable, ...core.$ZodTypeDiscriminable[]], Disc extends string>(discriminator: Disc, options: Types, params?: string | core.$ZodDiscriminatedUnionParams): ZodMiniDiscriminatedUnion<Types, Disc>;
|
|
224
224
|
export interface ZodMiniIntersection<A extends SomeType = core.$ZodType, B extends SomeType = core.$ZodType> extends _ZodMiniType<core.$ZodIntersectionInternals<A, B>> {
|
|
225
225
|
}
|
|
226
226
|
export declare const ZodMiniIntersection: core.$constructor<ZodMiniIntersection>;
|
package/v4/mini/schemas.d.ts
CHANGED
|
@@ -179,7 +179,7 @@ export interface ZodMiniArray<T extends SomeType = core.$ZodType> extends _ZodMi
|
|
|
179
179
|
}
|
|
180
180
|
export declare const ZodMiniArray: core.$constructor<ZodMiniArray>;
|
|
181
181
|
export declare function array<T extends SomeType>(element: T, params?: string | core.$ZodArrayParams): ZodMiniArray<T>;
|
|
182
|
-
export declare function keyof<T extends ZodMiniObject>(schema: T):
|
|
182
|
+
export declare function keyof<T extends ZodMiniObject>(schema: T): ZodMiniEnum<util.KeysEnum<T["shape"]>>;
|
|
183
183
|
export interface ZodMiniObject<
|
|
184
184
|
/** @ts-ignore Cast variance */
|
|
185
185
|
out Shape extends core.$ZodShape = core.$ZodShape, out Config extends core.$ZodObjectConfig = core.$strip> extends ZodMiniType<any, any, core.$ZodObjectInternals<Shape, Config>>, core.$ZodObject<Shape, Config> {
|
|
@@ -216,11 +216,11 @@ export interface ZodMiniUnion<T extends readonly SomeType[] = readonly core.$Zod
|
|
|
216
216
|
}
|
|
217
217
|
export declare const ZodMiniUnion: core.$constructor<ZodMiniUnion>;
|
|
218
218
|
export declare function union<const T extends readonly SomeType[]>(options: T, params?: string | core.$ZodUnionParams): ZodMiniUnion<T>;
|
|
219
|
-
export interface ZodMiniDiscriminatedUnion<Options extends readonly SomeType[] = readonly core.$ZodType[]> extends ZodMiniUnion<Options> {
|
|
220
|
-
_zod: core.$ZodDiscriminatedUnionInternals<Options>;
|
|
219
|
+
export interface ZodMiniDiscriminatedUnion<Options extends readonly SomeType[] = readonly core.$ZodType[], Disc extends string = string> extends ZodMiniUnion<Options> {
|
|
220
|
+
_zod: core.$ZodDiscriminatedUnionInternals<Options, Disc>;
|
|
221
221
|
}
|
|
222
222
|
export declare const ZodMiniDiscriminatedUnion: core.$constructor<ZodMiniDiscriminatedUnion>;
|
|
223
|
-
export declare function discriminatedUnion<Types extends readonly [core.$ZodTypeDiscriminable, ...core.$ZodTypeDiscriminable[]]>(discriminator:
|
|
223
|
+
export declare function discriminatedUnion<Types extends readonly [core.$ZodTypeDiscriminable, ...core.$ZodTypeDiscriminable[]], Disc extends string>(discriminator: Disc, options: Types, params?: string | core.$ZodDiscriminatedUnionParams): ZodMiniDiscriminatedUnion<Types, Disc>;
|
|
224
224
|
export interface ZodMiniIntersection<A extends SomeType = core.$ZodType, B extends SomeType = core.$ZodType> extends _ZodMiniType<core.$ZodIntersectionInternals<A, B>> {
|
|
225
225
|
}
|
|
226
226
|
export declare const ZodMiniIntersection: core.$constructor<ZodMiniIntersection>;
|
package/v4/mini/schemas.js
CHANGED
|
@@ -323,7 +323,7 @@ export function array(element, params) {
|
|
|
323
323
|
// .keyof
|
|
324
324
|
export function keyof(schema) {
|
|
325
325
|
const shape = schema._zod.def.shape;
|
|
326
|
-
return
|
|
326
|
+
return _enum(Object.keys(shape));
|
|
327
327
|
}
|
|
328
328
|
export const ZodMiniObject = /*@__PURE__*/ core.$constructor("ZodMiniObject", (inst, def) => {
|
|
329
329
|
core.$ZodObject.init(inst, def);
|
|
@@ -575,7 +575,7 @@ export function _default(innerType, defaultValue) {
|
|
|
575
575
|
type: "default",
|
|
576
576
|
innerType: innerType,
|
|
577
577
|
get defaultValue() {
|
|
578
|
-
return typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
578
|
+
return typeof defaultValue === "function" ? defaultValue() : util.shallowClone(defaultValue);
|
|
579
579
|
},
|
|
580
580
|
});
|
|
581
581
|
}
|
|
@@ -588,7 +588,7 @@ export function prefault(innerType, defaultValue) {
|
|
|
588
588
|
type: "prefault",
|
|
589
589
|
innerType: innerType,
|
|
590
590
|
get defaultValue() {
|
|
591
|
-
return typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
591
|
+
return typeof defaultValue === "function" ? defaultValue() : util.shallowClone(defaultValue);
|
|
592
592
|
},
|
|
593
593
|
});
|
|
594
594
|
}
|