zod 3.12.1 → 3.13.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.
Files changed (60) hide show
  1. package/README.md +44 -33
  2. package/lib/ZodError.d.ts +0 -1
  3. package/lib/ZodError.js +0 -1
  4. package/lib/benchmarks/discriminatedUnion.d.ts +0 -1
  5. package/lib/benchmarks/discriminatedUnion.js +0 -1
  6. package/lib/benchmarks/index.d.ts +0 -1
  7. package/lib/benchmarks/index.js +0 -1
  8. package/lib/benchmarks/object.d.ts +0 -1
  9. package/lib/benchmarks/object.js +0 -1
  10. package/lib/benchmarks/string.d.ts +0 -1
  11. package/lib/benchmarks/string.js +0 -1
  12. package/lib/benchmarks/union.d.ts +0 -1
  13. package/lib/benchmarks/union.js +0 -1
  14. package/lib/external.d.ts +0 -1
  15. package/lib/external.js +5 -2
  16. package/lib/helpers/errorUtil.d.ts +0 -1
  17. package/lib/helpers/errorUtil.js +0 -1
  18. package/lib/helpers/parseUtil.d.ts +0 -1
  19. package/lib/helpers/parseUtil.js +0 -1
  20. package/lib/helpers/partialUtil.d.ts +0 -1
  21. package/lib/helpers/partialUtil.js +0 -1
  22. package/lib/helpers/typeAliases.d.ts +0 -1
  23. package/lib/helpers/typeAliases.js +0 -1
  24. package/lib/helpers/util.d.ts +0 -1
  25. package/lib/helpers/util.js +0 -1
  26. package/lib/index.d.ts +0 -1
  27. package/lib/index.js +5 -2
  28. package/lib/index.mjs +3415 -2
  29. package/lib/types.d.ts +19 -7
  30. package/lib/types.js +37 -6
  31. package/package.json +4 -4
  32. package/lib/ZodError.d.ts.map +0 -1
  33. package/lib/ZodError.js.map +0 -1
  34. package/lib/benchmarks/discriminatedUnion.d.ts.map +0 -1
  35. package/lib/benchmarks/discriminatedUnion.js.map +0 -1
  36. package/lib/benchmarks/index.d.ts.map +0 -1
  37. package/lib/benchmarks/index.js.map +0 -1
  38. package/lib/benchmarks/object.d.ts.map +0 -1
  39. package/lib/benchmarks/object.js.map +0 -1
  40. package/lib/benchmarks/string.d.ts.map +0 -1
  41. package/lib/benchmarks/string.js.map +0 -1
  42. package/lib/benchmarks/union.d.ts.map +0 -1
  43. package/lib/benchmarks/union.js.map +0 -1
  44. package/lib/external.d.ts.map +0 -1
  45. package/lib/external.js.map +0 -1
  46. package/lib/helpers/errorUtil.d.ts.map +0 -1
  47. package/lib/helpers/errorUtil.js.map +0 -1
  48. package/lib/helpers/parseUtil.d.ts.map +0 -1
  49. package/lib/helpers/parseUtil.js.map +0 -1
  50. package/lib/helpers/partialUtil.d.ts.map +0 -1
  51. package/lib/helpers/partialUtil.js.map +0 -1
  52. package/lib/helpers/typeAliases.d.ts.map +0 -1
  53. package/lib/helpers/typeAliases.js.map +0 -1
  54. package/lib/helpers/util.d.ts.map +0 -1
  55. package/lib/helpers/util.js.map +0 -1
  56. package/lib/index.d.ts.map +0 -1
  57. package/lib/index.js.map +0 -1
  58. package/lib/index.mjs.map +0 -1
  59. package/lib/types.d.ts.map +0 -1
  60. package/lib/types.js.map +0 -1
package/README.md CHANGED
@@ -10,23 +10,19 @@
10
10
  <a href="./src/__tests__" rel="nofollow"><img src="./coverage.svg" alt="coverage"></a>
11
11
  <a href="https://discord.gg/KaSRdyX2vc" rel="nofollow"><img src="https://img.shields.io/discord/893487829802418277?label=Discord&logo=discord&logoColor=white" alt="discord server"></a>
12
12
  </p>
13
- <p align="center">
14
- by <a href="https://twitter.com/colinhacks">@colinhacks</a>
15
- </p>
16
13
 
17
- > Hi! Colin here, creator of Zod. I hope you find it easy to use and powerful enough for all your use cases. If you have any issues or suggestions, please [open an issue](https://github.com/colinhacks/zod/issues/new)!
18
- >
19
- > If you like typesafety, check out my other library [tRPC](https://trpc.io). It works in concert with Zod to provide a seamless way to build end-to-end typesafe APIs without GraphQL or code generation — just TypeScript.
20
- >
21
- > Colin (AKA [@colinhacks](https://twitter.com/colinhacks))
22
-
23
- <h3 align="center">
24
- <a href="https://discord.gg/RcG33DQJdf">💬 Chat on Discord</a>
25
- ·
26
- <a href="https://zod.js.org/">📝 Explore the Docs</a>
27
- ·
28
- <a href="https://www.npmjs.com/package/zod">✨ Install Zod</a>
29
- </h3>
14
+ <div align="center">
15
+ <a href="https://discord.gg/RcG33DQJdf">Discord</a>
16
+ <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>
17
+ <a href="https://www.npmjs.com/package/zod">NPM</a>
18
+ <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>
19
+ <a href="https://github.com/colinhacks/zod/issues/new">Issues</a>
20
+ <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>
21
+ <a href="https://twitter.com/colinhacks">@colinhacks</a>
22
+ <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>
23
+ <a href="https://trpc.io">tRPC</a>
24
+ <br />
25
+ </div>
30
26
 
31
27
  <br/>
32
28
 
@@ -34,6 +30,10 @@ These docs have been translated into [Chinese](./README_ZH.md).
34
30
 
35
31
  # Table of contents
36
32
 
33
+ The full documentation is available both on the [official documentation site](https://zod.js.org/) (recommended) and in `README.md`.
34
+
35
+ ### Go to [zod.js.org](https://zod.js.org) >>
36
+
37
37
  - [What is Zod](#what-is-zod)
38
38
  - [Installation](#installation)
39
39
  - [Ecosystem](#ecosystem)
@@ -43,6 +43,7 @@ These docs have been translated into [Chinese](./README_ZH.md).
43
43
  - [Literals](#literals)
44
44
  - [Strings](#strings)
45
45
  - [Numbers](#numbers)
46
+ - [NaNs](#nans)
46
47
  - [Booleans](#booleans)
47
48
  - [Dates](#dates)
48
49
  - [Zod enums](#zod-enums)
@@ -244,7 +245,7 @@ There are a growing number of tools that are built atop or support Zod natively!
244
245
  ### Form integrations
245
246
 
246
247
  - [`react-hook-form`](https://github.com/react-hook-form/resolvers#zod): A first-party Zod resolver for React Hook Form
247
- - [`formik`](https://github.com/robertLichtnow/zod-formik-adapter): A community-maintained Formik adapter for Zod
248
+ - [`zod-formik-adapter`](https://github.com/robertLichtnow/zod-formik-adapter): A community-maintained Formik adapter for Zod
248
249
 
249
250
  # Basic usage
250
251
 
@@ -403,6 +404,17 @@ Optionally, you can pass in a second argument to provide a custom error message.
403
404
  z.number().lte(5, { message: "this👏is👏too👏big" });
404
405
  ```
405
406
 
407
+ ## NaNs
408
+
409
+ You can customize certain error messages when creating a nan schema.
410
+
411
+ ```ts
412
+ const isNaN = z.nan({
413
+ required_error: "isNaN is required",
414
+ invalid_type_error: "isNaN must be not a number",
415
+ });
416
+ ```
417
+
406
418
  ## Booleans
407
419
 
408
420
  You can customize certain error messages when creating a boolean schema.
@@ -415,26 +427,25 @@ const isActive = z.boolean({
415
427
  ```
416
428
 
417
429
  ## Dates
430
+
418
431
  z.date() accepts a date, not a date string
432
+
419
433
  ```ts
420
- z.date().safeParse( new Date() ) // success: true
421
- z.date().safeParse( '2022-01-12T00:00:00.000Z' ) // success: false
434
+ z.date().safeParse(new Date()); // success: true
435
+ z.date().safeParse("2022-01-12T00:00:00.000Z"); // success: false
422
436
  ```
423
437
 
424
438
  To allow for dates or date strings, you can use preprocess
439
+
425
440
  ```ts
426
- const dateSchema = z.preprocess(
427
- arg => {
428
- if ( typeof arg == 'string' || arg instanceof Date )
429
- return new Date( arg )
430
- },
431
- z.date()
432
- )
433
- type DateSchema = z.infer<typeof dateSchema>
441
+ const dateSchema = z.preprocess((arg) => {
442
+ if (typeof arg == "string" || arg instanceof Date) return new Date(arg);
443
+ }, z.date());
444
+ type DateSchema = z.infer<typeof dateSchema>;
434
445
  // type DateSchema = Date
435
446
 
436
- dateSchema.safeParse( new Date( '1/12/22' ) ) // success: true
437
- dateSchema.safeParse( '2022-01-12T00:00:00.000Z' ) // success: true
447
+ dateSchema.safeParse(new Date("1/12/22")); // success: true
448
+ dateSchema.safeParse("2022-01-12T00:00:00.000Z"); // success: true
438
449
  ```
439
450
 
440
451
  ## Zod enums
@@ -1066,8 +1077,8 @@ interface Category {
1066
1077
  subcategories: Category[];
1067
1078
  }
1068
1079
 
1069
- // cast to z.ZodSchema<Category>
1070
- const Category: z.ZodSchema<Category> = z.lazy(() =>
1080
+ // cast to z.ZodType<Category>
1081
+ const Category: z.ZodType<Category> = z.lazy(() =>
1071
1082
  z.object({
1072
1083
  name: z.string(),
1073
1084
  subcategories: z.array(Category),
@@ -1104,7 +1115,7 @@ interface Category extends z.infer<typeof BaseCategory> {
1104
1115
 
1105
1116
  // merge the base schema with
1106
1117
  // a new Zod schema containing relations
1107
- const Category: z.ZodSchema<Category> = BaseCategory.merge(
1118
+ const Category: z.ZodType<Category> = BaseCategory.merge(
1108
1119
  z.object({
1109
1120
  subcategories: z.lazy(() => z.array(Category)),
1110
1121
  })
@@ -1119,7 +1130,7 @@ If you want to validate any JSON value, you can use the snippet below.
1119
1130
  type Literal = boolean | null | number | string;
1120
1131
  type Json = Literal | { [key: string]: Json } | Json[];
1121
1132
  const literalSchema = z.union([z.string(), z.number(), z.boolean(), z.null()]);
1122
- const jsonSchema: z.ZodSchema<Json> = z.lazy(() =>
1133
+ const jsonSchema: z.ZodType<Json> = z.lazy(() =>
1123
1134
  z.union([literalSchema, z.array(jsonSchema), z.record(jsonSchema)])
1124
1135
  );
1125
1136
 
package/lib/ZodError.d.ts CHANGED
@@ -148,4 +148,3 @@ export declare let overrideErrorMap: (issue: ZodIssueOptionalMessage, _ctx: Erro
148
148
  };
149
149
  export declare const setErrorMap: (map: ZodErrorMap) => void;
150
150
  export {};
151
- //# sourceMappingURL=ZodError.d.ts.map
package/lib/ZodError.js CHANGED
@@ -304,4 +304,3 @@ var setErrorMap = function (map) {
304
304
  exports.overrideErrorMap = map;
305
305
  };
306
306
  exports.setErrorMap = setErrorMap;
307
- //# sourceMappingURL=ZodError.js.map
@@ -3,4 +3,3 @@ declare const _default: {
3
3
  suites: Benchmark.Suite[];
4
4
  };
5
5
  export default _default;
6
- //# sourceMappingURL=discriminatedUnion.d.ts.map
@@ -77,4 +77,3 @@ manySuite
77
77
  exports.default = {
78
78
  suites: [doubleSuite, manySuite],
79
79
  };
80
- //# sourceMappingURL=discriminatedUnion.js.map
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=index.d.ts.map
@@ -57,4 +57,3 @@ finally {
57
57
  }
58
58
  finally { if (e_1) throw e_1.error; }
59
59
  }
60
- //# sourceMappingURL=index.js.map
@@ -3,4 +3,3 @@ declare const _default: {
3
3
  suites: Benchmark.Suite[];
4
4
  };
5
5
  export default _default;
6
- //# sourceMappingURL=object.d.ts.map
@@ -68,4 +68,3 @@ longSuite
68
68
  exports.default = {
69
69
  suites: [emptySuite, shortSuite, longSuite],
70
70
  };
71
- //# sourceMappingURL=object.js.map
@@ -3,4 +3,3 @@ declare const _default: {
3
3
  suites: Benchmark.Suite[];
4
4
  };
5
5
  export default _default;
6
- //# sourceMappingURL=string.d.ts.map
@@ -42,4 +42,3 @@ suite
42
42
  exports.default = {
43
43
  suites: [suite],
44
44
  };
45
- //# sourceMappingURL=string.js.map
@@ -3,4 +3,3 @@ declare const _default: {
3
3
  suites: Benchmark.Suite[];
4
4
  };
5
5
  export default _default;
6
- //# sourceMappingURL=union.d.ts.map
@@ -77,4 +77,3 @@ manySuite
77
77
  exports.default = {
78
78
  suites: [doubleSuite, manySuite],
79
79
  };
80
- //# sourceMappingURL=union.js.map
package/lib/external.d.ts CHANGED
@@ -2,4 +2,3 @@ export * from "./helpers/parseUtil";
2
2
  export * from "./helpers/typeAliases";
3
3
  export * from "./types";
4
4
  export * from "./ZodError";
5
- //# sourceMappingURL=external.d.ts.map
package/lib/external.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -14,4 +18,3 @@ __exportStar(require("./helpers/parseUtil"), exports);
14
18
  __exportStar(require("./helpers/typeAliases"), exports);
15
19
  __exportStar(require("./types"), exports);
16
20
  __exportStar(require("./ZodError"), exports);
17
- //# sourceMappingURL=external.js.map
@@ -7,4 +7,3 @@ export declare namespace errorUtil {
7
7
  };
8
8
  const toString: (message?: ErrMessage | undefined) => string | undefined;
9
9
  }
10
- //# sourceMappingURL=errorUtil.d.ts.map
@@ -10,4 +10,3 @@ var errorUtil;
10
10
  return typeof message === "string" ? message : message === null || message === void 0 ? void 0 : message.message;
11
11
  };
12
12
  })(errorUtil = exports.errorUtil || (exports.errorUtil = {}));
13
- //# sourceMappingURL=errorUtil.js.map
@@ -98,4 +98,3 @@ export declare const isAborted: (x: ParseReturnType<any>) => x is INVALID;
98
98
  export declare const isDirty: <T>(x: ParseReturnType<T>) => x is OK<T> | DIRTY<T>;
99
99
  export declare const isValid: <T>(x: ParseReturnType<T>) => x is OK<T> | DIRTY<T>;
100
100
  export declare const isAsync: <T>(x: ParseReturnType<T>) => x is AsyncParseReturnType<T>;
101
- //# sourceMappingURL=parseUtil.d.ts.map
@@ -334,4 +334,3 @@ var isAsync = function (x) {
334
334
  return typeof Promise !== undefined && x instanceof Promise;
335
335
  };
336
336
  exports.isAsync = isAsync;
337
- //# sourceMappingURL=parseUtil.js.map
@@ -6,4 +6,3 @@ export declare namespace partialUtil {
6
6
  [k in keyof Items]: Items[k] extends ZodTypeAny ? DeepPartial<Items[k]> : never;
7
7
  } extends infer PI ? PI extends ZodTupleItems ? ZodTuple<PI> : never : never : T;
8
8
  }
9
- //# sourceMappingURL=partialUtil.d.ts.map
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=partialUtil.js.map
@@ -1,3 +1,2 @@
1
1
  export declare type Primitive = string | number | bigint | boolean | null | undefined;
2
2
  export declare type Scalars = Primitive | Primitive[];
3
- //# sourceMappingURL=typeAliases.d.ts.map
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=typeAliases.js.map
@@ -16,4 +16,3 @@ export declare namespace util {
16
16
  type noUndefined<T> = T extends undefined ? never : T;
17
17
  const isInteger: NumberConstructor["isInteger"];
18
18
  }
19
- //# sourceMappingURL=util.d.ts.map
@@ -95,4 +95,3 @@ var util;
95
95
  return typeof val === "number" && isFinite(val) && Math.floor(val) === val;
96
96
  };
97
97
  })(util = exports.util || (exports.util = {}));
98
- //# sourceMappingURL=util.js.map
package/lib/index.d.ts CHANGED
@@ -2,4 +2,3 @@ import * as mod from "./external";
2
2
  export * from "./external";
3
3
  export { mod as z };
4
4
  export default mod;
5
- //# sourceMappingURL=index.d.ts.map
package/lib/index.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -27,4 +31,3 @@ var mod = __importStar(require("./external"));
27
31
  exports.z = mod;
28
32
  __exportStar(require("./external"), exports);
29
33
  exports.default = mod;
30
- //# sourceMappingURL=index.js.map