Skip to content

Commit d84f11c

Browse files
chore(deps): update nuxt (major) (#2738)
This PR contains the following updates: | Package | Change | Age | Confidence | |---|---|---|---| | [@nuxt/icon](https://redirect.github.com/nuxt/icon) | [`1.15.0` -> `2.1.0`](https://renovatebot.com/diffs/npm/@nuxt%2ficon/1.15.0/2.1.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nuxt%2ficon/2.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nuxt%2ficon/1.15.0/2.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [zod](https://zod.dev) ([source](https://redirect.github.com/colinhacks/zod)) | [`3.25.76` -> `4.1.12`](https://renovatebot.com/diffs/npm/zod/3.25.76/4.1.12) | [![age](https://developer.mend.io/api/mc/badges/age/npm/zod/4.1.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/zod/3.25.76/4.1.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>nuxt/icon (@&#8203;nuxt/icon)</summary> ### [`v2.1.0`](https://redirect.github.com/nuxt/icon/releases/tag/v2.1.0) [Compare Source](https://redirect.github.com/nuxt/icon/compare/v2.0.0...v2.1.0) #####    🚀 Features - Scan nested subfolders for custom collections  -  by [@&#8203;svifty7](https://redirect.github.com/svifty7) and [@&#8203;antfu](https://redirect.github.com/antfu) in [#&#8203;407](https://redirect.github.com/nuxt/icon/issues/407) [<samp>(f9f5b)</samp>](https://redirect.github.com/nuxt/icon/commit/f9f5ba1) #####    🐞 Bug Fixes - Clean up debug code  -  by [@&#8203;okj579](https://redirect.github.com/okj579) in [#&#8203;421](https://redirect.github.com/nuxt/icon/issues/421) [<samp>(7e8f8)</samp>](https://redirect.github.com/nuxt/icon/commit/7e8f87b) #####     [View changes on GitHub](https://redirect.github.com/nuxt/icon/compare/v2.0.0...v2.1.0) ### [`v2.0.0`](https://redirect.github.com/nuxt/icon/releases/tag/v2.0.0) [Compare Source](https://redirect.github.com/nuxt/icon/compare/v1.15.0...v2.0.0) #####    🚨 Breaking Changes - Upgrade to nuxt v4  -  by [@&#8203;DerYeger](https://redirect.github.com/DerYeger) in [#&#8203;419](https://redirect.github.com/nuxt/icon/issues/419) [<samp>(6f236)</samp>](https://redirect.github.com/nuxt/icon/commit/6f2369d) #####     [View changes on GitHub](https://redirect.github.com/nuxt/icon/compare/v1.15.0...v2.0.0) </details> <details> <summary>colinhacks/zod (zod)</summary> ### [`v4.1.12`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.1.12) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.1.11...v4.1.12) #### Commits: - [`0b109c3`](https://redirect.github.com/colinhacks/zod/commit/0b109c37c6b0b10e3901b56bcccb72e29a0b846f) docs(ecosystem): add bupkis to the ecosystem section ([#&#8203;5237](https://redirect.github.com/colinhacks/zod/issues/5237)) - [`d22ec0d`](https://redirect.github.com/colinhacks/zod/commit/d22ec0d26fab27151b0f1d1f98bffeaf8b011f57) docs(ecosystem): add upfetch ([#&#8203;5238](https://redirect.github.com/colinhacks/zod/issues/5238)) - [`c56a4f6`](https://redirect.github.com/colinhacks/zod/commit/c56a4f6fab42c542b191228af61974b2328dc52f) docs(ecosystem): add `eslint-plugin-zod-x` ([#&#8203;5261](https://redirect.github.com/colinhacks/zod/issues/5261)) - [`a0abcc0`](https://redirect.github.com/colinhacks/zod/commit/a0abcc02900a4293dd4f30cd81580efcdd5230bb) docs(metadata.mdx): fix a mistake in an example output ([#&#8203;5248](https://redirect.github.com/colinhacks/zod/issues/5248)) - [`62bf4e4`](https://redirect.github.com/colinhacks/zod/commit/62bf4e439e287e55c843245b49f8d34b1ad024ee) fix(ZodError): prevent flatten() from crashing on 'toString' key ([#&#8203;5266](https://redirect.github.com/colinhacks/zod/issues/5266)) - [`02a5840`](https://redirect.github.com/colinhacks/zod/commit/02a584010ac92ac8a351632ae5aea3983a6f17d8) refac(errors): Unify code structure and improve types ([#&#8203;5278](https://redirect.github.com/colinhacks/zod/issues/5278)) - [`4b1922a`](https://redirect.github.com/colinhacks/zod/commit/4b1922ad714e12dafaa83a40ec03275a39ac980c) docs(content/v4/index): fix zod version ([#&#8203;5289](https://redirect.github.com/colinhacks/zod/issues/5289)) - [`3fcb20f`](https://redirect.github.com/colinhacks/zod/commit/3fcb20ff348e49aec70f45e0dca3de8a61450e77) Add frrm to ecosystem ([#&#8203;5292](https://redirect.github.com/colinhacks/zod/issues/5292)) - [`fda4c7c`](https://redirect.github.com/colinhacks/zod/commit/fda4c7c2afbd7649261be1e7954f8c4d4de24a07) Make docs work without token - [`af44738`](https://redirect.github.com/colinhacks/zod/commit/af447384379faef28aa857fb53ef1da702c6d408) Fix lint - [`77c3c9f`](https://redirect.github.com/colinhacks/zod/commit/77c3c9f069a4cf168c0cbc58432803de887a6b1b) Export bg.ts - [`3b94610`](https://redirect.github.com/colinhacks/zod/commit/3b946107b6c94b2ac8ff9fb451160c34dc4dd794) v4.1.12 ### [`v4.1.11`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.1.11) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.1.10...v4.1.11) #### Commits: - [`2bed4b3`](https://redirect.github.com/colinhacks/zod/commit/2bed4b39760d8e4d678203b5c8fcaf24c182fc9f) 4.1.11 ### [`v4.1.10`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.1.10) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.1.9...v4.1.10) #### Commits: - [`7ffedd0`](https://redirect.github.com/colinhacks/zod/commit/7ffedd00169d8dc2e7cb7c6d878f29b03e05b3a3) Fix shape caching ([#&#8203;5263](https://redirect.github.com/colinhacks/zod/issues/5263)) - [`82cd717`](https://redirect.github.com/colinhacks/zod/commit/82cd717a0e7ee4e1737a783c7be278fa93fd8104) v4.1.10 ### [`v4.1.9`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.1.9) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.1.8...v4.1.9) #### Commits: - [`a78716d`](https://redirect.github.com/colinhacks/zod/commit/a78716d91da7649a61016b81c27f49fd9e79a81e) Update zshy ([#&#8203;5249](https://redirect.github.com/colinhacks/zod/issues/5249)) - [`923af80`](https://redirect.github.com/colinhacks/zod/commit/923af801fde9f033cfd7e0e753b421a554fe3be8) Publish zod\@&#8203;4.1.9 ### [`v4.1.8`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.1.8) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.1.7...v4.1.8) #### Commits: - [`36c4ee3`](https://redirect.github.com/colinhacks/zod/commit/36c4ee354d0c1f47b7311e49f6dd4b7a11de04f5) Switch back to weakmap - [`a1726d5`](https://redirect.github.com/colinhacks/zod/commit/a1726d53172ba52ecf90999df73778cf416264fd) 4.1.8 ### [`v4.1.7`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.1.7) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/976b43657d4aff6d47c73c1c86125623ea08752d...v4.1.7) #### Commits: - [`0cca351`](https://redirect.github.com/colinhacks/zod/commit/0cca351c8b152d7c4113ab7c2a44675efb060677) Fix variable name inconsistency in coercion documentation ([#&#8203;5188](https://redirect.github.com/colinhacks/zod/issues/5188)) - [`aa78c27`](https://redirect.github.com/colinhacks/zod/commit/aa78c270f1b43f4665339f4b61e7cb88037b8c84) Add copy/edit buttons - [`76452d4`](https://redirect.github.com/colinhacks/zod/commit/76452d4119d800a722b692755c1168627bc95f0f) Update button txt - [`937f73c`](https://redirect.github.com/colinhacks/zod/commit/937f73c90cac90bd3b99b12c792c289b50416510) Fix tsconfig issue in bench - [`976b436`](https://redirect.github.com/colinhacks/zod/commit/976b43657d4aff6d47c73c1c86125623ea08752d) v4.1.6 ([#&#8203;5222](https://redirect.github.com/colinhacks/zod/issues/5222)) - [`4309c61`](https://redirect.github.com/colinhacks/zod/commit/4309c61304daf40aab2124b5f513abe2b4df8637) Fix cidrv6 validation - cidrv6 should reject invalid strings with multiple slashes ([#&#8203;5196](https://redirect.github.com/colinhacks/zod/issues/5196)) - [`ef95a73`](https://redirect.github.com/colinhacks/zod/commit/ef95a73b6d33299743e5ff4f0645b98c1b0d6f72) feat(locales): Add Lithuanian (lt) locale ([#&#8203;5210](https://redirect.github.com/colinhacks/zod/issues/5210)) - [`3803f3f`](https://redirect.github.com/colinhacks/zod/commit/3803f3f37168212f2178e8b8deceb7bad78ed904) docs: update wrong contents in codeblocks in `api.mdx` ([#&#8203;5209](https://redirect.github.com/colinhacks/zod/issues/5209)) - [`8a47d5c`](https://redirect.github.com/colinhacks/zod/commit/8a47d5c6ba8e4fe2f934a8e55d0cba4d81d821de) docs: update coerce example in `api.mdx` ([#&#8203;5207](https://redirect.github.com/colinhacks/zod/issues/5207)) - [`e87db13`](https://redirect.github.com/colinhacks/zod/commit/e87db1322f11ff6907e1789da28933d258ab75fd) feat(locales): Add Georgian (ka) locale ([#&#8203;5203](https://redirect.github.com/colinhacks/zod/issues/5203)) - [`c54b123`](https://redirect.github.com/colinhacks/zod/commit/c54b123e399a6ab266504eb1389c724af31d5998) docs: adds `@traversable/zod` and `@traversable/zod-test` to v4 ecosystem ([#&#8203;5194](https://redirect.github.com/colinhacks/zod/issues/5194)) - [`c27a294`](https://redirect.github.com/colinhacks/zod/commit/c27a294f5b792f47b8e9dbb293a8ff8cfb287a3a) Fix two tiny grammatical errors in the docs. ([#&#8203;5193](https://redirect.github.com/colinhacks/zod/issues/5193)) - [`23a2d66`](https://redirect.github.com/colinhacks/zod/commit/23a2d6692398e3dd1ad1cdb0491b271a9f989380) docs: fix broken links in async refinements and transforms references ([#&#8203;5190](https://redirect.github.com/colinhacks/zod/issues/5190)) - [`845a230`](https://redirect.github.com/colinhacks/zod/commit/845a230bb06bff679b5f00e10153f4dbbd50d2b6) fix(locales): Add type name translations to Spanish locale ([#&#8203;5187](https://redirect.github.com/colinhacks/zod/issues/5187)) - [`27f13d6`](https://redirect.github.com/colinhacks/zod/commit/27f13d62b98cf5c501b828ba8837ff73cd6263d2) Improve regex precision and eliminate duplicates in regexes.ts ([#&#8203;5181](https://redirect.github.com/colinhacks/zod/issues/5181)) - [`a8a52b3`](https://redirect.github.com/colinhacks/zod/commit/a8a52b3ba370b761be76953fa3986aa43c4172a4) fix(v4): fix Khmer and Ukrainian locales ([#&#8203;5177](https://redirect.github.com/colinhacks/zod/issues/5177)) - [`887e37c`](https://redirect.github.com/colinhacks/zod/commit/887e37cd7568219c54f9c2f71bbfe0300ce48376) Update slugs - [`e1f1948`](https://redirect.github.com/colinhacks/zod/commit/e1f19482bbed3fbaa563a0d8e09f1a577cc58ac7) fix(v4): ensure array defaults are shallow-cloned ([#&#8203;5173](https://redirect.github.com/colinhacks/zod/issues/5173)) - [`9f65038`](https://redirect.github.com/colinhacks/zod/commit/9f650385644ae319f806a965b83f79ebd252e497) docs(ecosystem): add DRZL; fix Prisma Zod Generator placement ([#&#8203;5215](https://redirect.github.com/colinhacks/zod/issues/5215)) - [`aa6f0f0`](https://redirect.github.com/colinhacks/zod/commit/aa6f0f02c2a92a266ff1495a8d2541ae46012fcb) More fixes ([#&#8203;5223](https://redirect.github.com/colinhacks/zod/issues/5223)) - [`aab3356`](https://redirect.github.com/colinhacks/zod/commit/aab33566bdb44a651cc3e27fde729285e4312419) 4.1.7 ### [`v4.1.6`](https://redirect.github.com/colinhacks/zod/compare/v4.1.5...976b43657d4aff6d47c73c1c86125623ea08752d) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.1.5...976b43657d4aff6d47c73c1c86125623ea08752d) ### [`v4.1.5`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.1.5) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.1.4...v4.1.5) #### Commits: - [`530415f`](https://redirect.github.com/colinhacks/zod/commit/530415f927a8f7fa474c96b667efdad6e771ce4d) Update docs - [`b7b081d`](https://redirect.github.com/colinhacks/zod/commit/b7b081d5cfd6fc19aeb71f9dc1b07bb333c37f9d) Update z.function() type to support array input ([#&#8203;5170](https://redirect.github.com/colinhacks/zod/issues/5170)) - [`780cf57`](https://redirect.github.com/colinhacks/zod/commit/780cf57167cbf3902efab68f19fa21ca09cb9dd6) 4.1.5 ### [`v4.1.4`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.1.4) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.1.3...v4.1.4) #### Commits: - [`3291c61`](https://redirect.github.com/colinhacks/zod/commit/3291c61fe4bc893901027ea5d50dfc6274e49caa) fix(v4): toJSONSchema - wrong tuple with `null` output when targeting `openapi-3.0` ([#&#8203;5156](https://redirect.github.com/colinhacks/zod/issues/5156)) - [`23f41c7`](https://redirect.github.com/colinhacks/zod/commit/23f41c7e0af107026bb1732af6b4c368d82be8d2) test(v4): toJSONSchema - use `validateOpenAPI30Schema` in all relevant scenarios ([#&#8203;5163](https://redirect.github.com/colinhacks/zod/issues/5163)) - [`0a09fd2`](https://redirect.github.com/colinhacks/zod/commit/0a09fd21336202e50565a3e22baaab9a7047fcc9) Update installation instructions - [`4ea5fec`](https://redirect.github.com/colinhacks/zod/commit/4ea5fec6988eb7260bc63e0eb8b4a6a0b238c414) 4.1.4 ### [`v4.1.3`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.1.3) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.1.2...v4.1.3) #### Commits: - [`98ff675`](https://redirect.github.com/colinhacks/zod/commit/98ff675c313c15d3fa18b2bd01f844b1e817ee79) Drop stringToBoolean - [`a410616`](https://redirect.github.com/colinhacks/zod/commit/a410616b39eedf3b4654c0c791b0ab1868996bfb) Fix typo - [`0cf4589`](https://redirect.github.com/colinhacks/zod/commit/0cf45896edf8728b57c8e7f2b5a56536760afac1) fix(v4): toJSONSchema - add missing oneOf inside items in tuple conversion ([#&#8203;5146](https://redirect.github.com/colinhacks/zod/issues/5146)) - [`8bf0c16`](https://redirect.github.com/colinhacks/zod/commit/8bf0c1639f0d3700f01fa8aaee2d8fa5d0abbe10) fix(v4): toJSONSchema tuple path handling for draft-7 with metadata IDs ([#&#8203;5152](https://redirect.github.com/colinhacks/zod/issues/5152)) - [`5c5fa90`](https://redirect.github.com/colinhacks/zod/commit/5c5fa90e47df934acf6051a3ec30516baeef2eac) fix(v4): toJSONSchema - wrong record output when targeting `openapi-3.0` ([#&#8203;5141](https://redirect.github.com/colinhacks/zod/issues/5141)) - [`87b97cc`](https://redirect.github.com/colinhacks/zod/commit/87b97ccd556e6d8dc6b4f4455762cc7405b0abc9) docs(codecs): update example to use payloadSchema ([#&#8203;5150](https://redirect.github.com/colinhacks/zod/issues/5150)) - [`309f358`](https://redirect.github.com/colinhacks/zod/commit/309f3584fd9a3856c3e0c813196210ba4b11d2a9) fix(v4): toJSONSchema - output numbers with exclusive range correctly when targeting `openapi-3.0` ([#&#8203;5139](https://redirect.github.com/colinhacks/zod/issues/5139)) - [`1e71ca9`](https://redirect.github.com/colinhacks/zod/commit/1e71ca99b92b94aac8ca45694f28864ae1654135) docs: fix refine fn to encode works properly ([#&#8203;5148](https://redirect.github.com/colinhacks/zod/issues/5148)) - [`a85ec3c`](https://redirect.github.com/colinhacks/zod/commit/a85ec3c73c6a98a496f5dd3b6fb19ebe07e227f9) fix(docs): correct example to use `LooseDog` instead of `Dog` ([#&#8203;5136](https://redirect.github.com/colinhacks/zod/issues/5136)) - [`3e98274`](https://redirect.github.com/colinhacks/zod/commit/3e982743f3abba6a421abb899670f70e49284af4) 4.1.3 ### [`v4.1.2`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.1.2) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.1.1...v4.1.2) #### Commits: - [`e45e61b`](https://redirect.github.com/colinhacks/zod/commit/e45e61b675baf055f4a3ef2ddead21715a1e4fe3) Improve codec docs - [`25a4c37`](https://redirect.github.com/colinhacks/zod/commit/25a4c376834db90d3bb3e70d4154e3eb6d4feb7a) fix(v4): toJSONSchema - wrong record tuple output when targeting `openapi-3.0` ([#&#8203;5145](https://redirect.github.com/colinhacks/zod/issues/5145)) - [`0fa4f46`](https://redirect.github.com/colinhacks/zod/commit/0fa4f464e0e679d71b183e8811ef1e4f30aaa06a) Use method form in codecs.mdx - [`940383d`](https://redirect.github.com/colinhacks/zod/commit/940383d0523da41c4e2422b76455da39dddd6c4f) Update JSON codec and docs - [`3009fa8`](https://redirect.github.com/colinhacks/zod/commit/3009fa8aeb90e00bfc35c7124f3e6f8cad11d290) 4.1.2 ### [`v4.1.1`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.1.1) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.1.0...v4.1.1) #### Commits: - [`648eb43`](https://redirect.github.com/colinhacks/zod/commit/648eb43c23e31f7d69ef09baba46aef4e9493b13) Remove codecs from sidebare - [`7e39a99`](https://redirect.github.com/colinhacks/zod/commit/7e39a99a88a9b7f0c9c3d5fd40fbbab494365c9a) Improve codec docs - [`e5085be`](https://redirect.github.com/colinhacks/zod/commit/e5085beb2653f1d05a14c07c79b6f3707daf09f6) Add images - [`028b289`](https://redirect.github.com/colinhacks/zod/commit/028b289a48f5589dca58b0b813a5a9f9e363a40b) Add methods - [`10cc994`](https://redirect.github.com/colinhacks/zod/commit/10cc9941daeb28b6be5be7327e034c3388d8e60b) 4.1.1 ### [`v4.1.0`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.1.0) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.0.17...v4.1.0) The first minor version since the introduction of Zod 4 back in May. This version contains a number of features that barely missed the cut for the 4.0 release. With Zod 4 stable and widely adopted, there's more time to resume feature development. #### Codecs This is the flagship feature of this release. Codecs are a new API & schema type that encapsulates a *bi-directional transformation*. It's a huge missing piece in Zod that's finally filled, and it unlocks some totally new ways to use Zod. ```ts const stringToDate = z.codec( z.iso.datetime(), // input schema: ISO date string z.date(), // output schema: Date object { decode: (isoString) => new Date(isoString), encode: (date) => date.toISOString(), } ); ``` New top-level functions are added for processing inputs in the *forward* direction ("decoding") and *backward* direction ("encoding"). ```ts stringToDate.decode("2025-08-21T20:59:45.500Z") // => Date stringToDate.encode(new Date()) // => "2025-08-21T20:59:45.500Z" ``` > **Note** — For bundle size reasons, these new methods have not added to Zod Mini schemas. Instead, this functionality is available via equivalent top-level functions. > > ```ts > // equivalent at runtime > z.decode(stringToDate, "2024-01-15T10:30:00.000Z"); > z.encode(stringToDate, new Date()); > ``` ##### `.parse()` vs `.decode()` Both `.parse()` and `decode()` process data in the "forward" direction. They behave identically at runtime. ```ts stringToDate.parse("2025-08-21T20:59:45.500Z"); stringToDate.decode("2025-08-21T20:59:45.500Z"); ``` There is an important difference however. While `.parse()` accepts any input, `.decode()` expects a *strongly typed* input. That is, it expects an input of type `string`, whereas `.parse()` accepts `unknown`. ```ts stringToDate.parse(Symbol('not-a-string')); // => fails at runtime, but no TypeScript error stringToDate.decode(Symbol("not-a-string")); // ^ ❌ Argument of type 'symbol' is not assignable to parameter of type 'Date'. ts(2345) ``` > This is a highly requested feature unto itself: > > - [#&#8203;3860](https://redirect.github.com/colinhacks/zod/issues/3860) > - [#&#8203;1748](https://redirect.github.com/colinhacks/zod/issues/1748) > - [#&#8203;3978](https://redirect.github.com/colinhacks/zod/issues/3978) > - [#&#8203;1892](https://redirect.github.com/colinhacks/zod/issues/1892) ##### Encoding You can use any Zod schema with `.encode()`. The vast majority of Zod schemas are *non-transforming* (the input and output types are identical) so `.decode()` and `.encode()` behave identically. Only certain schema types change their behavior: - **Codecs** — runs from `B->A` and executes the `encode` transform during encoding - **Pipes** — these execute `B->A` instead of `A->B` - **Defaults and prefaults** — Only applied in the forward direction - **Catch** — Only applied in the forward direction > **Note** — To avoid increasing bundle size unnecessarily, these new methods are not available on Zod Mini schemas. For those schemas, equivalent top-level functions are provided. The usual *async* and *safe* variants exist as well: ```ts // decode methods stringToDate.decode("2024-01-15T10:30:00.000Z") await stringToDate.decodeAsync("2024-01-15T10:30:00.000Z") stringToDate.safeDecode("2024-01-15T10:30:00.000Z") await stringToDate.safeDecodeAsync("2024-01-15T10:30:00.000Z") // encode methods stringToDate.encode(new Date()) await stringToDate.encodeAsync(new Date()) stringToDate.safeEncode(new Date()) await stringToDate.safeEncodeAsync(new Date()) ``` ##### Example codecs Below are some "worked examples" for some commonly-needed codecs. These examples are all tested internally for correctness. Just copy/paste them into your project as needed. There is a more comprehensive set available at [zod.dev/codecs](https://zod.dev/codecs). ##### `stringToBigInt` Converts `bigint` into a serializable form. ``` const stringToBigInt = z.codec(z.string(), z.bigint(), { decode: (str) => BigInt(str), encode: (bigint) => bigint.toString(), }); stringToBigInt.decode("12345"); // => 12345n stringToBigInt.encode(12345n); // => "12345" ``` ##### `json` Parses/stringifies JSON data. ```ts const jsonCodec = z.codec(z.string(), z.json(), { decode: (jsonString, ctx) => { try { return JSON.parse(jsonString); } catch (err: any) { ctx.issues.push({ code: "invalid_format", format: "json_string", input: jsonString, message: err.message, }); return z.NEVER; } }, encode: (value) => JSON.stringify(value), }); ``` To further validate the data, `.pipe()` the result of this codec into another schema. ```ts const Params = z.object({ name: z.string(), age: z.number() }); const JsonToParams = jsonCodec.pipe(Params); JsonToParams.decode('{"name":"Alice","age":30}'); // => { name: "Alice", age: 30 } JsonToParams.encode({ name: "Bob", age: 25 }); // => '{"name":"Bob","age":25}' ``` ##### Further reading **For more examples and a technical breakdown of how encoding works, reads the[announcement blog post](https://colinhacks.com/essays/introducing-zod-codecs) and [new Codecs docs page](https://zod.dev/codecs)**. The docs page contains implementations for several other commonly-needed codecs: - [`stringToNumber`](https://zod.dev/codecs?id=stringtonumber) - [`stringToInt`](https://zod.dev/codecs?id=stringtoint) - [`stringToBigInt`](https://zod.dev/codecs?id=stringtobigint) - [`numberToBigInt`](https://zod.dev/codecs?id=numbertobigint) - [`isoDatetimeToDate`](https://zod.dev/codecs?id=isodatetimetodate) - [`epochSecondsToDate`](https://zod.dev/codecs?id=epochsecondstodate) - [`epochMillisToDate`](https://zod.dev/codecs?id=epochmillistodate) - [`jsonCodec`](https://zod.dev/codecs?id=jsoncodec) - [`utf8ToBytes`](https://zod.dev/codecs?id=utf8tobytes) - [`bytesToUtf8`](https://zod.dev/codecs?id=bytestoutf8) - [`base64ToBytes`](https://zod.dev/codecs?id=base64tobytes) - [`base64urlToBytes`](https://zod.dev/codecs?id=base64urltobytes) - [`hexToBytes`](https://zod.dev/codecs?id=hextobytes) - [`stringToURL`](https://zod.dev/codecs?id=stringtourl) - [`stringToHttpURL`](https://zod.dev/codecs?id=stringtohttpurl) - [`uriComponent`](https://zod.dev/codecs?id=uricomponent) - [`stringToBoolean`](https://zod.dev/codecs?id=stringtoboolean) #### `.safeExtend()` The existing way to add additional fields to an object is to use `.extend()`. ```ts const A = z.object({ a: z.string() }) const B = A.extend({ b: z.string() }) ``` Unfortunately this is a bit of a misnomer, as it allows you to overwrite existing fields. This means the result of `.extend()` may not literally `extend` the original type (in the TypeScript sense). ```ts const A = z.object({ a: z.string() }) // { a: string } const B = A.extend({ a: z.number() }) // { a: number } ``` To enforce true `extends` logic, Zod 4.1 introduces a new `.safeExtend()` method. This statically enforces that the newly added properties conform to the existing ones. ```ts z.object({ a: z.string() }).safeExtend({ a: z.number().min(5) }); // ✅ z.object({ a: z.string() }).safeExtend({ a: z.any() }); // ✅ z.object({ a: z.string() }).safeExtend({ a: z.number() }); // ^ ❌ ZodNumber is not assignable ``` Importantly, this new API allows you to safely extend objects containing refinements. ```ts const AB = z.object({ a: z.string(), b: z.string() }).refine(val => val.a === val.b); const ABC = AB.safeExtend({ c: z.string() }); // ABC includes the refinements defined on AB ``` Previously (in Zod 4.x) any refinements attached to the base schema were dropped in the extended result. This was too unexpected. It now throws an error. (Zod 3 did not support extension of refined objects either.) #### `z.hash()` A new top-level string format for validating hashes produced using various common algorithms & encodings. ```ts const md5Schema = z.hash("md5"); // => ZodCustomStringFormat<"md5_hex"> const sha256Base64 = z.hash("sha256", { enc: "base64" }); // => ZodCustomStringFormat<"sha256_base64"> ``` The following hash algorithms and encodings are supported. Each cell provides information about the expected number of characters/padding. | Algorithm / Encoding | `"hex"` | `"base64"` | `"base64url"` | | -------------------- | ------- | --------------- | ------------- | | `"md5"` | 32 | 24 (22 + "==") | 22 | | `"sha1"` | 40 | 28 (27 + "=") | 27 | | `"sha256"` | 64 | 44 (43 + "=") | 43 | | `"sha384"` | 96 | 64 (no padding) | 64 | | `"sha512"` | 128 | 88 (86 + "==") | 86 | #### `z.hex()` To validate hexadecimal strings of any length. ```ts const hexSchema = z.hex(); hexSchema.parse("123abc"); // ✅ "123abc" hexSchema.parse("DEADBEEF"); // ✅ "DEADBEEF" hexSchema.parse("xyz"); // ❌ ZodError ``` #### Additional changes 1. **z.uuid()** now supports the "Max UUID" (`FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF`) per the [RFC](https://www.rfc-editor.org/rfc/rfc9562.html) 2. `$ZodFunction` is now a subtype of `$ZodType` *** #### Commits - [`edd4fea`](https://redirect.github.com/colinhacks/zod/commit/edd4feaa) - Closes [#&#8203;5127](https://redirect.github.com/colinhacks/zod/issues/5127) - [`5d4a315`](https://redirect.github.com/colinhacks/zod/commit/5d4a3159) - Closes [#&#8203;5116](https://redirect.github.com/colinhacks/zod/issues/5116) - [`f3f0955`](https://redirect.github.com/colinhacks/zod/commit/f3f09556) - Closes [#&#8203;5108](https://redirect.github.com/colinhacks/zod/issues/5108) - [`0114d5b`](https://redirect.github.com/colinhacks/zod/commit/0114d5bd) - [#&#8203;5122](https://redirect.github.com/colinhacks/zod/issues/5122) - [`3b077c3`](https://redirect.github.com/colinhacks/zod/commit/3b077c3a) - [#&#8203;5121](https://redirect.github.com/colinhacks/zod/issues/5121) - [`1e06af8`](https://redirect.github.com/colinhacks/zod/commit/1e06af8e) - [#&#8203;5113](https://redirect.github.com/colinhacks/zod/issues/5113) - [`b01b6f3`](https://redirect.github.com/colinhacks/zod/commit/b01b6f39) — [#&#8203;5052](https://redirect.github.com/colinhacks/zod/issues/5052) - [`571ab0c`](https://redirect.github.com/colinhacks/zod/commit/571ab0c3) — [#&#8203;5051](https://redirect.github.com/colinhacks/zod/issues/5051) - [`d3ea111`](https://redirect.github.com/colinhacks/zod/commit/d3ea1119) — [#&#8203;5049](https://redirect.github.com/colinhacks/zod/issues/5049) - [`b8e3f87`](https://redirect.github.com/colinhacks/zod/commit/b8e3f877) — [#&#8203;4865](https://redirect.github.com/colinhacks/zod/issues/4865) ### [`v4.0.17`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.0.17) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.0.16...v4.0.17) #### Commits: - [`1cebf33`](https://redirect.github.com/colinhacks/zod/commit/1cebf336c560c87e6f806b9d02106fb623049f21) Add blog ([#&#8203;5074](https://redirect.github.com/colinhacks/zod/issues/5074)) - [`fc1e556`](https://redirect.github.com/colinhacks/zod/commit/fc1e556318159b4740ba3d6b37660e783d2a3cb7) Fixes [#&#8203;5073](https://redirect.github.com/colinhacks/zod/issues/5073) - [`cc63f95`](https://redirect.github.com/colinhacks/zod/commit/cc63f950158db212c5e9b75e7d22faca851ea624) v4.0.17 ### [`v4.0.16`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.0.16) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.0.15...v4.0.16) #### Commits: - [`d589186`](https://redirect.github.com/colinhacks/zod/commit/d589186c20c3dc112f5a5fda23cccd4d1f74420e) fix: ensure keyof returns enum ([#&#8203;5045](https://redirect.github.com/colinhacks/zod/issues/5045)) - [`4975f3a`](https://redirect.github.com/colinhacks/zod/commit/4975f3a0e9c9f0b241499d936a02f1998c66dc01) feat: add discriminator generic ([#&#8203;5044](https://redirect.github.com/colinhacks/zod/issues/5044)) - [`0a463e3`](https://redirect.github.com/colinhacks/zod/commit/0a463e38e7f77b8036628ff911de515f9f9f6662) Update speakeasy files - [`12658af`](https://redirect.github.com/colinhacks/zod/commit/12658aff60349a87972a782b64802ec901c5ebf2) Fix Edit page buttons - [`47e6604`](https://redirect.github.com/colinhacks/zod/commit/47e6604a3555811115d05bf41e50de54192e2e14) fix: `edit this page` button, now redirects to correct url using the new path ([#&#8203;5056](https://redirect.github.com/colinhacks/zod/issues/5056)) - [`7207a2d`](https://redirect.github.com/colinhacks/zod/commit/7207a2df38caaae910551b7ecf04941b00fc10c8) Update Hey API link to Zod v3 plugin ([#&#8203;5060](https://redirect.github.com/colinhacks/zod/issues/5060)) - [`6887ff3`](https://redirect.github.com/colinhacks/zod/commit/6887ff34fb9bf5f6769152cf62ba9b69fa378aac) Update Hey API link to Zod plugin ([#&#8203;5059](https://redirect.github.com/colinhacks/zod/issues/5059)) - [`ffff1aa`](https://redirect.github.com/colinhacks/zod/commit/ffff1aac6a9a88fe6e7ad2659dbc7743275ea052) Clone POJO objects during defaulting/prefaulting - [`a227cb3`](https://redirect.github.com/colinhacks/zod/commit/a227cb3bd22aba48412a0129650b86277adc3545) v4.0.16 ### [`v4.0.15`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.0.15) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.0.14...v4.0.15) #### Commits: - [`7e7e346`](https://redirect.github.com/colinhacks/zod/commit/7e7e3461aceecf3633e158df50d6bc852e7cdf45) Clean up docs - [`f2949a8`](https://redirect.github.com/colinhacks/zod/commit/f2949a81a06fe197c53e47c1fab024cebbd7f1f1) \[docs] Fix migration guide upgrade command ([#&#8203;5021](https://redirect.github.com/colinhacks/zod/issues/5021)) - [`d43cf19`](https://redirect.github.com/colinhacks/zod/commit/d43cf19d5cafd505f2f8e76f13e18564470f0696) Fix recursive object initialization errors with check() and other methods ([#&#8203;5018](https://redirect.github.com/colinhacks/zod/issues/5018)) - [`3de2b63`](https://redirect.github.com/colinhacks/zod/commit/3de2b6389a57a093f11ecf1820f31e5b4452c7e9) fix: remove redundant Required<> from input and output type definitions ([#&#8203;5033](https://redirect.github.com/colinhacks/zod/issues/5033)) - [`93553bd`](https://redirect.github.com/colinhacks/zod/commit/93553bd48aeac27fdeb7dcbee5b7e37628572aff) Add needs info - [`03cfa8d`](https://redirect.github.com/colinhacks/zod/commit/03cfa8d9367c56d8c29870a83af10edc91eba34a) 4.0.15 ### [`v4.0.14`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.0.14) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.0.13...v4.0.14) #### Commits: - [`99391a8`](https://redirect.github.com/colinhacks/zod/commit/99391a844271558e0f1736c9550375e82e630bbd) Docs: Fix typo ([#&#8203;5005](https://redirect.github.com/colinhacks/zod/issues/5005)) - [`e25303e`](https://redirect.github.com/colinhacks/zod/commit/e25303e98c8d13ea96c3296507c564011f403ffe) Docs: fix typo ([#&#8203;5008](https://redirect.github.com/colinhacks/zod/issues/5008)) - [`dbb05ef`](https://redirect.github.com/colinhacks/zod/commit/dbb05ef990c86ec6b1f6eac11b91ec7572e29c89) Add JSON Schema draft-04 output ([#&#8203;4811](https://redirect.github.com/colinhacks/zod/issues/4811)) - [`b8257d7`](https://redirect.github.com/colinhacks/zod/commit/b8257d7d1f51dd3cb4033a58271bb6ac8e3678c7) Improve tuple recursive inference. - [`9bdbc2f`](https://redirect.github.com/colinhacks/zod/commit/9bdbc2f10d466050421a8e28c4b95a8a5776d150) Avoid infinite loops in defineLazy. Fixes [#&#8203;4994](https://redirect.github.com/colinhacks/zod/issues/4994). - [`af96ad4`](https://redirect.github.com/colinhacks/zod/commit/af96ad4700879b0d6e390a0c65ded4e700049cb9) 4.0.14 ### [`v4.0.13`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.0.13) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.0.12...v4.0.13) #### Commits: - [`362eb33`](https://redirect.github.com/colinhacks/zod/commit/362eb33093e9c5f306eeec95e36985a99aba8fc7) Fix optional + pipe handling. Closes [#&#8203;5002](https://redirect.github.com/colinhacks/zod/issues/5002). v4.0.13 ### [`v4.0.12`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.0.12) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.0.11...v4.0.12) #### Commits: - [`ff83fc9`](https://redirect.github.com/colinhacks/zod/commit/ff83fc916ec2b35c0008a48782fa14f84293149d) Add eslint-plugin-import-zod ([#&#8203;4848](https://redirect.github.com/colinhacks/zod/issues/4848)) - [`7c9ce38`](https://redirect.github.com/colinhacks/zod/commit/7c9ce388ae39b2324c5ad05420ecf4732ebca6fe) Update docs for z.property check ([#&#8203;4863](https://redirect.github.com/colinhacks/zod/issues/4863)) - [`c432577`](https://redirect.github.com/colinhacks/zod/commit/c432577ad1a7201631ae0a4d80e945fc4937bcc9) docs: add jwt schema docs ([#&#8203;4867](https://redirect.github.com/colinhacks/zod/issues/4867)) - [`35e6a6f`](https://redirect.github.com/colinhacks/zod/commit/35e6a6f6d64d7d5ba58c4cb8c80105759b977c9b) Add llms.txt ([#&#8203;4915](https://redirect.github.com/colinhacks/zod/issues/4915)) - [`3ac7bf0`](https://redirect.github.com/colinhacks/zod/commit/3ac7bf00d0d924d1afa1031b798bdd72b59117db) Clean up Edit this Page - [`60a9372`](https://redirect.github.com/colinhacks/zod/commit/60a9372414955094b84aae2f30b491a039780b7c) Implement `llms-full.txt` ([#&#8203;5004](https://redirect.github.com/colinhacks/zod/issues/5004)) - [`73a1970`](https://redirect.github.com/colinhacks/zod/commit/73a1970e7fd0cdcb2ffac3f6f7db85da849ee3d8) 4.0.12 ### [`v4.0.11`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.0.11) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.0.10...v4.0.11) #### Commits: - [`8e6a5f8`](https://redirect.github.com/colinhacks/zod/commit/8e6a5f8e48837fb403deb4025935e97a758ad6ca) Fix “Edit on Github” link ([#&#8203;4997](https://redirect.github.com/colinhacks/zod/issues/4997)) - [`930a2f6`](https://redirect.github.com/colinhacks/zod/commit/930a2f68d799889df4c1f662dfe61934db84fdd1) Fix number of errors in doc ([#&#8203;4993](https://redirect.github.com/colinhacks/zod/issues/4993)) - [`c762dbb`](https://redirect.github.com/colinhacks/zod/commit/c762dbb4fdb249cfddccdd69812da3f4b659df67) feat(locale): Add Yoruba (yo) locale ([#&#8203;4996](https://redirect.github.com/colinhacks/zod/issues/4996)) - [`9a34a3a`](https://redirect.github.com/colinhacks/zod/commit/9a34a3a60d92c44f695b08e4c665209aa7160e24) Zod 4.0.11 ([#&#8203;4981](https://redirect.github.com/colinhacks/zod/issues/4981)) ### [`v4.0.10`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.0.10) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.0.9...v4.0.10) #### Commits: - [`291c1ca`](https://redirect.github.com/colinhacks/zod/commit/291c1ca9864570e68a6c104d869de467f665da86) Add should-build script - [`e32d99b`](https://redirect.github.com/colinhacks/zod/commit/e32d99b54fff920c4b0b451e9099b472d20a3c4b) Move should-build script - [`d4faf71`](https://redirect.github.com/colinhacks/zod/commit/d4faf71b8cc156a49bae23fc09c4d54b88f22bd5) Add v3 docs ([#&#8203;4972](https://redirect.github.com/colinhacks/zod/issues/4972)) - [`dfae371`](https://redirect.github.com/colinhacks/zod/commit/dfae37195bed15dce84af0b17ef04cdc3704ef5e) Update Jazz img on v3 docs - [`d6cd30d`](https://redirect.github.com/colinhacks/zod/commit/d6cd30d3898aaf592c6077464c1a45fd0f6f66d3) fix [#&#8203;4973](https://redirect.github.com/colinhacks/zod/issues/4973) ([#&#8203;4974](https://redirect.github.com/colinhacks/zod/issues/4974)) - [`1850496`](https://redirect.github.com/colinhacks/zod/commit/18504960cdce29529e37415b87fed1732facf1ef) Fix typo in `valype` ([#&#8203;4960](https://redirect.github.com/colinhacks/zod/issues/4960)) - [`4ec2f87`](https://redirect.github.com/colinhacks/zod/commit/4ec2f8776193642d91814521d8a4c22bbb766cb1) Add Zod Playground to zod 4 ecosystem ([#&#8203;4975](https://redirect.github.com/colinhacks/zod/issues/4975)) - [`2b571a2`](https://redirect.github.com/colinhacks/zod/commit/2b571a21875e9e3299de261e512dad300878c3a1) Update docs z.enum with object literal example ([#&#8203;4967](https://redirect.github.com/colinhacks/zod/issues/4967)) - [`813451d`](https://redirect.github.com/colinhacks/zod/commit/813451db7fcf64c5322835984eded9bfe95be1da) v4.0.10 ([#&#8203;4978](https://redirect.github.com/colinhacks/zod/issues/4978)) ### [`v4.0.9`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.0.9) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.0.8...v4.0.9) #### Commits: - [`4e7a3ef`](https://redirect.github.com/colinhacks/zod/commit/4e7a3ef180f6a5525d9021638e9df20b3ca50456) v4.0.9 ([#&#8203;4970](https://redirect.github.com/colinhacks/zod/issues/4970)) ### [`v4.0.8`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.0.8) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.0.7...v4.0.8) #### Commits: - [`3048d14`](https://redirect.github.com/colinhacks/zod/commit/3048d14bc7b803507302b8ee3cd1eeeffbd27396) Fix [#&#8203;4961](https://redirect.github.com/colinhacks/zod/issues/4961) ### [`v4.0.7`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.0.7) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.0.6...v4.0.7) #### Commits: - [`7ab1b3c`](https://redirect.github.com/colinhacks/zod/commit/7ab1b3cd2e272a74c0f7c5cde70ee23c2ef288d6) Do not continue parsing in ZodPipe if issues exists. Closes [#&#8203;4926](https://redirect.github.com/colinhacks/zod/issues/4926). - [`34b400a`](https://redirect.github.com/colinhacks/zod/commit/34b400a5422bc30b48395cdd44007ff4e811fb71) 4.0.7 ### [`v4.0.6`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.0.6) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.0.5...v4.0.6) #### Commits: - [`a3e4391`](https://redirect.github.com/colinhacks/zod/commit/a3e43911abb980f1830b68a440c231ae52eacec0) Unwiden catch input type ([#&#8203;4870](https://redirect.github.com/colinhacks/zod/issues/4870)) - [`499df78`](https://redirect.github.com/colinhacks/zod/commit/499df780b10dfcce29afba3e811757f7eade9570) Add RFC 9562 mentions. Closes [#&#8203;4872](https://redirect.github.com/colinhacks/zod/issues/4872) - [`d0493f3`](https://redirect.github.com/colinhacks/zod/commit/d0493f3dceb117972464f01cb0765262a5ffed70) Doc tweak - spread vs destructuring ([#&#8203;4919](https://redirect.github.com/colinhacks/zod/issues/4919)) - [`8dad394`](https://redirect.github.com/colinhacks/zod/commit/8dad394b805fd18cee8e44a37dab983916e0d92c) feat: Icelandic translation ([#&#8203;4920](https://redirect.github.com/colinhacks/zod/issues/4920)) - [`2ffdae1`](https://redirect.github.com/colinhacks/zod/commit/2ffdae1faafcc34639a7a846a55776c2a886a644) Bulgarian (bg) translation ([#&#8203;4928](https://redirect.github.com/colinhacks/zod/issues/4928)) - [`0973135`](https://redirect.github.com/colinhacks/zod/commit/09731358f69bb1238f6e00e0ca82e28c095b800f) docs: add valype to xToZodConverts ([#&#8203;4930](https://redirect.github.com/colinhacks/zod/issues/4930)) - [`d257340`](https://redirect.github.com/colinhacks/zod/commit/d2573409ab02e5d0c2a644315798999d619e4c89) Remove moduleResolution callout ([#&#8203;4932](https://redirect.github.com/colinhacks/zod/issues/4932)) - [`075970d`](https://redirect.github.com/colinhacks/zod/commit/075970d2aeb50c840840cc44559b31b16d7b6504) docs: add coercion note to fix compile errors ([#&#8203;4940](https://redirect.github.com/colinhacks/zod/issues/4940)) - [`b9e8a60`](https://redirect.github.com/colinhacks/zod/commit/b9e8a60ff44aa5fffc39617eec894117132fbbac) Add `@hey-api/openapi-ts` to Zod 3 ecosystem ([#&#8203;4949](https://redirect.github.com/colinhacks/zod/issues/4949)) - [`ad7b0ff`](https://redirect.github.com/colinhacks/zod/commit/ad7b0ffd91da4f0466c97b7b5e6b60f376ae4f33) Add `@hey-api/openapi-ts` to Zod 3 ecosystem ([#&#8203;4942](https://redirect.github.com/colinhacks/zod/issues/4942)) - [`4619109`](https://redirect.github.com/colinhacks/zod/commit/4619109e7927019837a3a13d4ab8bba5c72989de) feat(locales): add Danish translations ([#&#8203;4953](https://redirect.github.com/colinhacks/zod/issues/4953)) - [`cb84a57`](https://redirect.github.com/colinhacks/zod/commit/cb84a5711b83d25c7dcf218c4c01097cf036c1f5) Point to zod-v3-to-v4 codemod in Zod 4 migration guide ([#&#8203;4954](https://redirect.github.com/colinhacks/zod/issues/4954)) - [`28a5091`](https://redirect.github.com/colinhacks/zod/commit/28a5091092b22146a26f8a4e7c18e2943f53a86a) Update api.mdx ([#&#8203;4955](https://redirect.github.com/colinhacks/zod/issues/4955)) - [`7f3cf94`](https://redirect.github.com/colinhacks/zod/commit/7f3cf946ca9aa90031cb954d6f683cb09de4d894) Fix URL sup example ([#&#8203;4959](https://redirect.github.com/colinhacks/zod/issues/4959)) - [`17e7f3b`](https://redirect.github.com/colinhacks/zod/commit/17e7f3b4e1c2c97b3c9487c97ac6703a16ed1cfb) Add `@hey-api/openapi-ts` to Zod 4 ecosystem ([#&#8203;4950](https://redirect.github.com/colinhacks/zod/issues/4950)) - [`f75d852`](https://redirect.github.com/colinhacks/zod/commit/f75d85294df2ff4ccea056e8eeb7c14750fa929f) fix: escapes decimal place in `z.literal` ([#&#8203;4895](https://redirect.github.com/colinhacks/zod/issues/4895)) - [`7dd7484`](https://redirect.github.com/colinhacks/zod/commit/7dd7484802b1351c8b81d3d523aadd876fcdf73e) v4.0.6 ([#&#8203;4941](https://redirect.github.com/colinhacks/zod/issues/4941)) ### [`v4.0.5`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.0.5) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.0.4...v4.0.5) #### Commits: - [`f91a73e`](https://redirect.github.com/colinhacks/zod/commit/f91a73ec23f9ec28d908af2caa643a54088516c5) Support pipes in discriminated unions. Closes [#&#8203;4856](https://redirect.github.com/colinhacks/zod/issues/4856) ([#&#8203;4861](https://redirect.github.com/colinhacks/zod/issues/4861)) - [`45afab0`](https://redirect.github.com/colinhacks/zod/commit/45afab0f846dffd591362b6f770017507eb185b5) 4.0.5 ### [`v4.0.4`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.0.4) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.0.3...v4.0.4) #### Commits: - [`9335f05`](https://redirect.github.com/colinhacks/zod/commit/9335f0543d6359f9236e3e33b78cc5b2788dbe0f) Adds `ZodFirstPartyTypeKind` stub to fix module resolution failure inside `zod-to-json-schema` ### [`v4.0.3`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.0.3) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/44a936cb77961e57a0988d8a3c63d9c71fce69ac...v4.0.3) #### Commits: - [`5905a8d`](https://redirect.github.com/colinhacks/zod/commit/5905a8d810eff6f4677e6aa9e557f92a676805cf) Improve check-versions script - [`f3e749b`](https://redirect.github.com/colinhacks/zod/commit/f3e749b1b057a2cf0a0bce7e07abec4e0520e0f8) Remove global File interface - [`44a936c`](https://redirect.github.com/colinhacks/zod/commit/44a936cb77961e57a0988d8a3c63d9c71fce69ac) 4.0.2 - [`74006ed`](https://redirect.github.com/colinhacks/zod/commit/74006edd49e3fe8d74010090462859593c2bd1e2) Fix JSR provenance - [`ff4af5e`](https://redirect.github.com/colinhacks/zod/commit/ff4af5e889d4ad7136a9cde7202b16261db5c83c) 4.0.3 - [`ce573e8`](https://redirect.github.com/colinhacks/zod/commit/ce573e8799f86e2f68307eba95c2d40fc92617b7) Update test badge - [`9a7161a`](https://redirect.github.com/colinhacks/zod/commit/9a7161a976d6349f738c00cb6d6528c0407a65e8) Fix versions ### [`v4.0.2`](https://redirect.github.com/colinhacks/zod/compare/v4.0.1...44a936cb77961e57a0988d8a3c63d9c71fce69ac) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v4.0.1...44a936cb77961e57a0988d8a3c63d9c71fce69ac) ### [`v4.0.1`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.0.1): v4.0.0 [Compare Source](https://redirect.github.com/colinhacks/zod/compare/79d4d80e3b47f04752c5c281077b53f889551441...v4.0.1) With this release, `[email protected]` has been published to `npm`. There were no code changes between 3.25.76 and 4.0.0! Zod 4 has been stable for the past 6 weeks, but it was published inside <[email protected]> on npm. this transitionary window gave the ecosystem time to incrementally support for Zod 4 (without dropping support for Zod 3). As there is now near-universal support for Zod 4 in the ecosystem, ths time feels right to finally put a bow on things 🎀 To upgrade to Zod 4: ``` npm upgrade zod@^4.0.0 ``` If you’ve already migrated to Zod 4 using the subpaths, there are no changes required. however you can optionally simplify your imports (recommended) ```ts // after upgrading to [email protected]: import * as z from "zod"; // Zod 4 (regular) import * as z from "zod/mini" // Zod 4 Mini // these still work, but are no longer needed import * as z from "zod/v4"; import * as z from "zod/v4-mini": // if you still need Zod 3 import * as z from "zod/v3"; // Zod 3 ``` **Library authors** — if you've already implemented Zod 4 support according to the best practices outlined in the [Library authors](/library-authors) guide, bump your peer dependency to include `zod@^4.0.0`: ```json // package.json { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } } ``` *There should be no other code changes necessary.* No code changes were made between the latest `3.25.x` release and `4.0.0`. This does not require a major version bump. ### [`v4.0.0`](https://redirect.github.com/colinhacks/zod/compare/v3.25.76...79d4d80e3b47f04752c5c281077b53f889551441) [Compare Source](https://redirect.github.com/colinhacks/zod/compare/v3.25.76...79d4d80e3b47f04752c5c281077b53f889551441) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "on the 2nd through 5th day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/JabRef/JabRefOnline). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS40Ni4zIiwidXBkYXRlZEluVmVyIjoiNDEuMTU5LjQiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Tobias Diez <[email protected]>
1 parent 38ad48e commit d84f11c

File tree

7 files changed

+57
-61
lines changed

7 files changed

+57
-61
lines changed

apollo/validation.ts

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,19 @@
11
import { z } from 'zod'
2-
import type { LoginInput, SignupInput } from './graphql'
32
import {
43
LoginInputSchema as InternalLoginInputSchema,
54
SignupInputSchema as InternalSignupInputSchema,
65
} from './validation.internal'
76

8-
type Properties<T> = Required<{
9-
[K in keyof T]: z.ZodType<T[K], any, T[K]>
10-
}>
11-
127
const passwordSchema = z
138
.string()
149
.min(8, { message: 'The password must be at least 8 characters long' })
1510

16-
export const SignupInputSchema: z.ZodObject<Properties<SignupInput>> =
17-
InternalSignupInputSchema.extend({
18-
email: z.string().email(),
19-
password: passwordSchema,
20-
})
11+
export const SignupInputSchema = InternalSignupInputSchema.extend({
12+
email: z.email(),
13+
password: passwordSchema,
14+
})
2115

22-
export const LoginInputSchema: z.ZodObject<Properties<LoginInput>> =
23-
InternalLoginInputSchema.extend({
24-
email: z.string().email(),
25-
password: passwordSchema,
26-
})
16+
export const LoginInputSchema = InternalLoginInputSchema.extend({
17+
email: z.email(),
18+
password: passwordSchema,
19+
})

graphql.config.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@
3939
"typescript-validation-schema"
4040
],
4141
"config": {
42-
"schema": "zod",
42+
"schema": "zodv4",
4343
"scalarSchemas": {
4444
"Date": "z.date()",
4545
"DateTime": "z.date()",
46-
"EmailAddress": "z.string().email()",
46+
"EmailAddress": "z.email()",
4747
"BigInt": "z.bigint()"
4848
},
4949
"importFrom": "~/apollo/graphql",

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
"vee-validate": "4.15.1",
7979
"vue": "3.5.22",
8080
"vue-router": "4.6.3",
81-
"zod": "3.25.76"
81+
"zod": "4.1.12"
8282
},
8383
"devDependencies": {
8484
"@adonisjs/hash": "9.1.1",
@@ -100,7 +100,7 @@
100100
"@graphql-typed-document-node/core": "3.2.0",
101101
"@nuxt/content": "3.8.0",
102102
"@nuxt/eslint": "1.10.0",
103-
"@nuxt/icon": "1.15.0",
103+
"@nuxt/icon": "2.1.0",
104104
"@nuxt/kit": "4.2.0",
105105
"@nuxt/test-utils": "3.20.1",
106106
"@nuxtjs/seo": "3.2.2",

pnpm-lock.yaml

Lines changed: 39 additions & 34 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/user/resolvers.spec.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,13 @@ describe('mutation', () => {
3232
"problems": [
3333
{
3434
"code": "too_small",
35-
"exact": false,
3635
"inclusive": true,
3736
"message": "The password must be at least 8 characters long",
3837
"minimum": 8,
38+
"origin": "string",
3939
"path": [
4040
"password",
4141
],
42-
"type": "string",
4342
},
4443
],
4544
}

server/utils/validation.spec.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,13 @@ describe('validated resolver', () => {
8989
"problems": [
9090
{
9191
"code": "too_small",
92-
"exact": false,
9392
"inclusive": true,
94-
"message": "Number must be greater than or equal to 18",
93+
"message": "Too small: expected number to be >=18",
9594
"minimum": 18,
95+
"origin": "number",
9696
"path": [
9797
"age",
9898
],
99-
"type": "number",
10099
},
101100
],
102101
}

server/utils/validation.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* eslint-disable @typescript-eslint/no-explicit-any */
22
import type { ResolverFn } from '#graphql/resolver'
3-
import type { AnyZodObject, TypeOf, ZodType } from 'zod'
3+
import type { TypeOf, ZodObject, ZodType } from 'zod'
44

55
type MethodDecorator<T> = <S extends T>(
66
target: any,
@@ -16,7 +16,7 @@ type MethodDecorator<T> = <S extends T>(
1616
* @param {T} arg The zod schema used for the validation.
1717
* @return {MethodDecorator} A {@link MethodDecorator}.
1818
*/
19-
export function validation<T extends AnyZodObject>(
19+
export function validation<T extends ZodObject<any>>(
2020
arg: T | (() => T),
2121
): MethodDecorator<(input: TypeOf<T>) => any> {
2222
return function (_target, _propertyKey, descriptor) {
@@ -47,7 +47,7 @@ type ZodResolver<T extends ZodType<any, any, any>> = ResolverFn<
4747
* @param {T} arg The zod schema used for the validation.
4848
* @return {MethodDecorator} A {@link MethodDecorator}.
4949
*/
50-
export function validateInput<T extends AnyZodObject>(
50+
export function validateInput<T extends ZodObject<any>>(
5151
arg: T | (() => T),
5252
): MethodDecorator<ZodResolver<T>> {
5353
return function (_target, _propertyKey, descriptor) {

0 commit comments

Comments
 (0)