Commit 9b1c42b
authored
fix(deps): update dependency zod to v4 (#50)
> ℹ️ **Note**
>
> This PR body was truncated due to platform limits.
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [zod](https://zod.dev)
([source](https://redirect.github.com/colinhacks/zod)) | [`^3.24.0` →
`^4.0.0`](https://renovatebot.com/diffs/npm/zod/3.25.76/4.3.6) |

|

|
---
### Release Notes
<details>
<summary>colinhacks/zod (zod)</summary>
###
[`v4.3.6`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.3.6)
[Compare
Source](https://redirect.github.com/colinhacks/zod/compare/v4.3.5...v4.3.6)
##### Commits:
-
[`9977fb0`](https://redirect.github.com/colinhacks/zod/commit/9977fb0868432461de265a773319e80a90ba3e37)
Add brand.dev to sponsors
-
[`f4b7bae`](https://redirect.github.com/colinhacks/zod/commit/f4b7bae3468f6188b8f004e007d722148fc91d77)
Update pullfrog.yml
([#​5634](https://redirect.github.com/colinhacks/zod/issues/5634))
-
[`251d716`](https://redirect.github.com/colinhacks/zod/commit/251d7163a0ac7740fee741428d913e3c55702ace)
Clean up workflow\_call
-
[`edd4132`](https://redirect.github.com/colinhacks/zod/commit/edd4132466da0f5065a8e051b599d01fdd1081d8)
fix: add missing User-agent to robots.txt and allow all
([#​5646](https://redirect.github.com/colinhacks/zod/issues/5646))
-
[`85db85e`](https://redirect.github.com/colinhacks/zod/commit/85db85e9091d0706910d60c7eb2e9c181edd87bd)
fix: typo in codec.test.ts file
([#​5628](https://redirect.github.com/colinhacks/zod/issues/5628))
-
[`cbf77bb`](https://redirect.github.com/colinhacks/zod/commit/cbf77bb12bdfda2e054818e79001f5cb3798ce76)
Avoid non null assertion
([#​5638](https://redirect.github.com/colinhacks/zod/issues/5638))
-
[`dfbbf1c`](https://redirect.github.com/colinhacks/zod/commit/dfbbf1c1ae0c224b8131d80ddf0a264262144086)
Avoid re-exported star modules
([#​5656](https://redirect.github.com/colinhacks/zod/issues/5656))
-
[`762e911`](https://redirect.github.com/colinhacks/zod/commit/762e911e5773f949452fd6dd4e360f2362110e8e)
Generalize numeric key handling
-
[`ca3c862`](https://redirect.github.com/colinhacks/zod/commit/ca3c8629c0c2715571f70b44c2433cad3db7fe4e)
v4.3.6
###
[`v4.3.5`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.3.5)
[Compare
Source](https://redirect.github.com/colinhacks/zod/compare/v4.3.4...v4.3.5)
#### Commits:
-
[`21afffd`](https://redirect.github.com/colinhacks/zod/commit/21afffdb42ccab554036312e33fed0ea3cb8f982)
\[Docs] Update migration guide docs for deprecation of message
([#​5595](https://redirect.github.com/colinhacks/zod/issues/5595))
-
[`e36743e`](https://redirect.github.com/colinhacks/zod/commit/e36743e513aadb307b29949a80d6eb0dcc8fc278)
Improve mini treeshaking
-
[`0cdc0b8`](https://redirect.github.com/colinhacks/zod/commit/0cdc0b8597999fd9ca99767b912c1e82c1ff2d6c)
4.3.5
###
[`v4.3.4`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.3.4)
[Compare
Source](https://redirect.github.com/colinhacks/zod/compare/v4.3.3...v4.3.4)
#### Commits:
-
[`1a8bea3`](https://redirect.github.com/colinhacks/zod/commit/1a8bea3b474eada6f219c163d0d3ad09fadabe72)
Add integration tests
-
[`e01cd02`](https://redirect.github.com/colinhacks/zod/commit/e01cd02b2f23d7e9078d3813830b146f8a2258b4)
Support patternProperties for looserecord
([#​5592](https://redirect.github.com/colinhacks/zod/issues/5592))
-
[`089e5fb`](https://redirect.github.com/colinhacks/zod/commit/089e5fbb0f58ce96d2c4fb34cd91724c78df4af5)
Improve looseRecord docs
-
[`decef9c`](https://redirect.github.com/colinhacks/zod/commit/decef9c418d9a598c3f1bada06891ba5d922c5cd)
Fix lint
-
[`9443aab`](https://redirect.github.com/colinhacks/zod/commit/9443aab00d44d5d5f4a7eada65fc0fc851781042)
Drop iso time in fromJSONSchema
-
[`66bda74`](https://redirect.github.com/colinhacks/zod/commit/66bda7491a1b9eab83bdeec0c12f4efc7290bd48)
Remove .refine() from ZodMiniType
-
[`b4ab94c`](https://redirect.github.com/colinhacks/zod/commit/b4ab94ca608cd5b581bfc12b20dd8d95b35b3009)
4.3.4
###
[`v4.3.3`](https://redirect.github.com/colinhacks/zod/compare/v4.3.2...f3b2151959d215d405f54dff3c7ab3bf1fd887ca)
[Compare
Source](https://redirect.github.com/colinhacks/zod/compare/v4.3.2...v4.3.3)
###
[`v4.3.2`](https://redirect.github.com/colinhacks/zod/compare/v4.3.1...0f41e5a12a43e6913c9dcb501b2b5136ea86500d)
[Compare
Source](https://redirect.github.com/colinhacks/zod/compare/v4.3.1...v4.3.2)
###
[`v4.3.1`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.3.1)
[Compare
Source](https://redirect.github.com/colinhacks/zod/compare/v4.3.0...v4.3.1)
#### Commits:
-
[`0fe8840`](https://redirect.github.com/colinhacks/zod/commit/0fe88407a4149c907929b757dc6618d8afe998fc)
allow non-overwriting extends with refinements. 4.3.1
###
[`v4.3.0`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.3.0)
[Compare
Source](https://redirect.github.com/colinhacks/zod/compare/v4.2.1...v4.3.0)
This is Zod's biggest release since 4.0. It addresses several of Zod's
longest-standing feature requests.
#### `z.fromJSONSchema()`
Convert JSON Schema to Zod
([#​5534](https://redirect.github.com/colinhacks/zod/pull/5534),
[#​5586](https://redirect.github.com/colinhacks/zod/pull/5586))
You can now convert JSON Schema definitions directly into Zod schemas.
This function supports JSON Schema `"draft-2020-12"`, `"draft-7"`,
`"draft-4"`, and OpenAPI 3.0.
```typescript
import * as z from "zod";
const schema = z.fromJSONSchema({
type: "object",
properties: {
name: { type: "string", minLength: 1 },
age: { type: "integer", minimum: 0 },
},
required: ["name"],
});
schema.parse({ name: "Alice", age: 30 }); // ✅
```
The API should be considered experimental. There are no guarantees of
1:1 "round-trip soundness": `MySchema` > `z.toJSONSchema()` >
`z.fromJSONSchema()`. There are several features of Zod that don't exist
in JSON Schema and vice versa, which makes this virtually impossible.
Features supported:
- All primitive types (`string`, `number`, `integer`, `boolean`, `null`,
`object`, `array`)
- String formats (`email`, `uri`, `uuid`, `date-time`, `date`, `time`,
`ipv4`, `ipv6`, and more)
- Composition (`anyOf`, `oneOf`, `allOf`)
- Object constraints (`additionalProperties`, `patternProperties`,
`propertyNames`)
- Array constraints (`prefixItems`, `items`, `minItems`, `maxItems`)
- `$ref` for local references and circular schemas
- Custom metadata is preserved
#### `z.xor()` — exclusive union
([#​5534](https://redirect.github.com/colinhacks/zod/pull/5534))
A new exclusive union type that requires **exactly one** option to
match. Unlike `z.union()` which passes if *any* option matches,
`z.xor()` fails if zero or more than one option matches.
```typescript
const schema = z.xor([z.string(), z.number()]);
schema.parse("hello"); // ✅
schema.parse(42); // ✅
schema.parse(true); // ❌ zero matches
```
When converted to JSON Schema, `z.xor()` produces `oneOf` instead of
`anyOf`.
#### `z.looseRecord()` — partial record validation
([#​5534](https://redirect.github.com/colinhacks/zod/pull/5534))
A new record variant that only validates keys matching the key schema,
passing through non-matching keys unchanged. This is used to represent
`patternProperties` in JSON Schema.
```typescript
const schema = z.looseRecord(z.string().regex(/^S_/), z.string());
schema.parse({ S_name: "John", other: 123 });
// ✅ { S_name: "John", other: 123 }
// only S_name is validated, "other" passes through
```
#### `.exactOptional()` — strict optional properties
([#​5589](https://redirect.github.com/colinhacks/zod/pull/5589))
A new wrapper that makes a property *key-optional* (can be omitted) but
does **not** accept `undefined` as an explicit value.
```typescript
const schema = z.object({
a: z.string().optional(), // accepts `undefined`
b: z.string().exactOptional(), // does not accept `undefined`
});
schema.parse({}); // ✅
schema.parse({ a: undefined }); // ✅
schema.parse({ b: undefined }); // ❌
```
This makes it possible to accurately represent the full spectrum of
optionality expressible using
[`exactOptionalPropertyTypes`](https://www.typescriptlang.org/tsconfig/exactOptionalPropertyTypes.html).
#### `.apply()`
A utility method for applying arbitrary transformations to a schema,
enabling cleaner schema composition.
([#​5463](https://redirect.github.com/colinhacks/zod/pull/5463))
```typescript
const setCommonChecks = <T extends z.ZodNumber>(schema: T) => {
return schema.min(0).max(100);
};
const schema = z.number().apply(setCommonChecks).nullable();
```
#### `.brand()` cardinality
The `.brand()` method now accepts a second argument to control whether
the brand applies to input, output, or both. Closes
[#​4764](https://redirect.github.com/colinhacks/zod/issues/4764),
[#​4836](https://redirect.github.com/colinhacks/zod/issues/4836).
```typescript
// output only (default)
z.string().brand<"UserId">(); // output is branded (default)
z.string().brand<"UserId", "out">(); // output is branded
z.string().brand<"UserId", "in">(); // input is branded
z.string().brand<"UserId", "inout">(); // both are branded
```
#### Type predicates on `.refine()`
([#​5575](https://redirect.github.com/colinhacks/zod/pull/5575))
The `.refine()` method now supports type predicates to narrow the output
type:
```typescript
const schema = z.string().refine((s): s is "a" => s === "a");
type Input = z.input<typeof schema>; // string
type Output = z.output<typeof schema>; // "a"
```
#### `ZodMap` methods: `min`, `max`, `nonempty`, `size`
([#​5316](https://redirect.github.com/colinhacks/zod/pull/5316))
`ZodMap` now has parity with `ZodSet` and `ZodArray`:
```typescript
const schema = z.map(z.string(), z.number())
.min(1)
.max(10)
.nonempty();
schema.size; // access the size constraint
```
#### `.with()` alias for `.check()`
([359c0db](https://redirect.github.com/colinhacks/zod/commit/359c0db6))
A new `.with()` method has been added as a more readable alias for
`.check()`. Over time, more APIs have been added that don't qualify as
"checks". The new method provides a readable alternative that doesn't
muddy semantics.
```typescript
z.string().with(
z.minLength(5),
z.toLowerCase()
);
// equivalent to:
z.string().check(
z.minLength(5),
z.trim(),
z.toLowerCase()
);
```
##### `z.slugify()` transform
Transform strings into URL-friendly slugs. Works great with `.with()`:
```typescript
// Zod
z.string().slugify().parse("Hello World"); // "hello-world"
// Zod Mini
// using .with() for explicit check composition
z.string().with(z.slugify()).parse("Hello World"); // "hello-world"
```
#### `z.meta()` and `z.describe()` in Zod Mini
([947b4eb](https://redirect.github.com/colinhacks/zod/commit/947b4eb2))
Zod Mini now exports `z.meta()` and `z.describe()` as top-level
functions for adding metadata to schemas:
```typescript
import * as z from "zod/mini";
// add description
const schema = z.string().with(
z.describe("A user's name"),
);
// add arbitrary metadata
const schema2 = z.number().with(
z.meta({ deprecated: true })
);
```
#### New locales
- Armenian (`am`)
([#​5531](https://redirect.github.com/colinhacks/zod/pull/5531))
- Uzbek (`uz`)
([#​5519](https://redirect.github.com/colinhacks/zod/pull/5519))
```ts
import * as z from "zod";
import { uz } from "zod/locales";
z.config(uz());
```
<br/><br/>
***
<br/><br/>
#### Bug fixes
All of these changes fix soundness issues in Zod. As with any bug fix
there's some chance of breakage if you were intentionally or
unintentionally relying on this unsound behavior.
##### ⚠️ `.pick()` and `.omit()` disallowed on object schemas containing
refinements
([#​5317](https://redirect.github.com/colinhacks/zod/pull/5317))
Using `.pick()` or `.omit()` on object schemas with refinements now
throws an error. Previously, this would silently drop the refinements,
leading to unexpected behavior.
```typescript
const schema = z.object({
password: z.string(),
confirmPassword: z.string(),
}).refine(data => data.password === data.confirmPassword);
schema.pick({ password: true });
// 4.2: refinement silently dropped ⚠️
// 4.3: throws error ❌
```
**Migration**: The easiest way to migrate is to create a new schema
using the `shape` of the old one.
```ts
const newSchema = z.object(schema.shape).pick({ ... })
```
##### ⚠️ `.extend()` disallowed on refined schemas
([#​5317](https://redirect.github.com/colinhacks/zod/pull/5317))
Similarly, `.extend()` now throws on schemas with refinements. Use
`.safeExtend()` if you need to extend refined schemas.
```typescript
const schema = z.object({ a: z.string() }).refine(/* ... */);
// 4.2: refinement silently dropped ⚠️
// 4.3: throws error ✅
schema.extend({ b: z.number() });
// error: object schemas containing refinements cannot be extended. use `.safeExtend()` instead.
```
##### ⚠️ Stricter object masking methods
([#​5581](https://redirect.github.com/colinhacks/zod/pull/5581))
Object masking methods (`.pick()`, `.omit()`) now validate that the keys
provided actually exist in the schema:
```typescript
const schema = z.object({ a: z.string() });
// 4.3: throws error for unrecognized keys
schema.pick({ nonexistent: true });
// error: unrecognized key: "nonexistent"
```
#### Additional changes
- Fixed JSON Schema generation for `z.iso.time` with minute precision
([#​5557](https://redirect.github.com/colinhacks/zod/pull/5557))
- Fixed error details for tuples with extraneous elements
([#​5555](https://redirect.github.com/colinhacks/zod/pull/5555))
- Fixed `includes` method params typing to accept `string |
$ZodCheckIncludesParams`
([#​5556](https://redirect.github.com/colinhacks/zod/pull/5556))
- Fixed numeric formats error messages to be inclusive
([#​5485](https://redirect.github.com/colinhacks/zod/pull/5485))
- Fixed `implementAsync` inferred type to always be a promise
([#​5476](https://redirect.github.com/colinhacks/zod/pull/5476))
- Tightened E.164 regex to require a non-zero leading digit and 7–15
digits total
([#​5524](https://redirect.github.com/colinhacks/zod/pull/5524))
- Fixed Dutch (nl) error strings
([#​5529](https://redirect.github.com/colinhacks/zod/pull/5529))
- Convert `Date` instances to numbers in `minimum`/`maximum` checks
([#​5351](https://redirect.github.com/colinhacks/zod/pull/5351))
- Improved numeric keys handling in `z.record()`
([#​5585](https://redirect.github.com/colinhacks/zod/pull/5585))
- Lazy initialization of `~standard` schema property
([#​5363](https://redirect.github.com/colinhacks/zod/pull/5363))
- Functions marked as `@__NO_SIDE_EFFECTS__` for better tree-shaking
([#​5475](https://redirect.github.com/colinhacks/zod/pull/5475))
- Improved metadata tracking across child-parent relationships
([#​5578](https://redirect.github.com/colinhacks/zod/pull/5578))
- Improved locale translation approach
([#​5584](https://redirect.github.com/colinhacks/zod/pull/5584))
- Dropped id uniqueness enforcement at registry level
([#​5574](https://redirect.github.com/colinhacks/zod/pull/5574))
###
[`v4.2.1`](https://redirect.github.com/colinhacks/zod/compare/v4.2.0...5b5b129315fbc94a3b0d6244185eaeefcbe438d1)
[Compare
Source](https://redirect.github.com/colinhacks/zod/compare/v4.2.0...v4.2.1)
###
[`v4.2.0`](https://redirect.github.com/colinhacks/zod/releases/tag/v4.2.0)
[Compare
Source](https://redirect.github.com/colinhacks/zod/compare/v4.1.13...v4.2.0)
#### Features
##### Implement Standard JSON Schema
[standard-schema/standard-schema#134](https://redirect.github.com/standard-schema/standard-schema/pull/134)
##### Implement `z.fromJSONSchema()`
```typescript
const jsonSchema = {
type: "object",
properties: {
name: { type: "string" },
age: { type: "number" }
},
required: ["name"]
};
const schema = z.fromJSONSchema(jsonSchema);
```
##### Implement `z.xor()`
```typescript
const schema = z.xor(
z.object({ type: "user", name: z.string() }),
z.object({ type: "admin", role: z.string() })
);
// Exactly one of the schemas must match
```
##### Implement `z.looseRecord()`
```typescript
const schema = z.looseRecord(z.string(), z.number());
// Allows additional properties beyond those defined
```
#### Commits:
-
[`af49c08`](https://redirect.github.com/colinhacks/zod/commit/af49c084f66339110d00e37ff71dc7b3b9f2b7ef)
Update docs for JSON Schema conversion of `z.undefined()`
([#​5504](https://redirect.github.com/colinhacks/zod/issues/5504))
-
[`767f320`](https://redirect.github.com/colinhacks/zod/commit/767f320318986e422f524b939f1a7174544fda2e)
Add `.toJSONSchema()` method
([#​5477](https://redirect.github.com/colinhacks/zod/issues/5477))
-
[`e17dcb6`](https://redirect.github.com/colinhacks/zod/commit/e17dcb63573397063e87d7c7fe10a5a78968181a)
Add `z.fromJSONSchema()`, `z.looseRecord()`, `z.xor()`
([#​5534](https://redirect.github.com/colinhacks/zod/issues/5534))
###
[`v4.1.13`](https://redirect.github.com/colinhacks/zod/compare/v4.1.12...4063e802d539d04182fc3e66a543ae6d1ba5658e)
[Compare
Source](https://redirect.github.com/colinhacks/zod/compare/v4.1.12...v4.1.13)
###
[`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
([#​5237](https://redirect.github.com/colinhacks/zod/issues/5237))
-
[`d22ec0d`](https://redirect.github.com/colinhacks/zod/commit/d22ec0d26fab27151b0f1d1f98bffeaf8b011f57)
docs(ecosystem): add upfetch
([#​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`
([#​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
([#​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
([#​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
([#​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
([#​5289](https://redirect.github.com/colinhacks/zod/issues/5289))
-
[`3fcb20f`](https://redirect.github.com/colinhacks/zod/commit/3fcb20ff348e49aec70f45e0dca3de8a61450e77)
Add frrm to ecosystem
([#​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
([#​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
([#​5249](https://redirect.github.com/colinhacks/zod/issues/5249))
-
[`923af80`](https://redirect.github.com/colinhacks/zod/commit/923af801fde9f033cfd7e0e753b421a554fe3be8)
Publish zod\@​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
([#​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
([#​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
([#​5196](https://redirect.github.com/colinhacks/zod/issues/5196))
-
[`ef95a73`](https://redirect.github.com/colinhacks/zod/commit/ef95a73b6d33299743e5ff4f0645b98c1b0d6f72)
feat(locales): Add Lithuanian (lt) locale
([#​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`
([#​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`
([#​5207](https://redirect.github.com/colinhacks/zod/issues/5207))
-
[`e87db13`](https://redirect.github.com/colinhacks/zod/commit/e87db1322f11ff6907e1789da28933d258ab75fd)
feat(locales): Add Georgian (ka) locale
([#​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
([#​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.
([#​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
([#​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
([#​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
([#​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
([#​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
([#​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
([#​5215](https://redirect.github.com/colinhacks/zod/issues/5215))
-
[`aa6f0f0`](https://redirect.github.com/colinhacks/zod/commit/aa6f0f02c2a92a266ff1495a8d2541ae46012fcb)
More fixes
([#​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
([#​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`
([#​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
([#​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
([#​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
([#​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`
([#​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
([#​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`
([#​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
([#​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`
([#​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`
([#​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:
>
> -
[#​3860](https://redirect.github.com/colinhacks/zod/issues/3860)
> -
[#​1748](https://redirect.github.com/colinhacks/zod/issues/1748)
> -
[#​3978](https://redirect.github.com/colinhacks/zod/issues/3978)
> -
[#​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
[#​5127](https://redirect.github.com/colinhacks/zod/issues/5127)
-
[`5d4a315`](https://redirect.github.com/colinhacks/zod/commit/5d4a3159)
- Closes
[#​5116](https://redirect.github.com/colinhacks/zod/issues/5116)
-
[`f3f0955`](https://redirect.github.com/colinhacks/zod/commit/f3f09556)
- Closes
[#​5108](https://redirect.github.com/colinhacks/zod/issues/5108)
-
[`0114d5b`](https://redirect.github.com/colinhacks/zod/commit/0114d5bd)
- [#​5122](https://redirect.github.com/colinhacks/zod/issues/5122)
-
[`3b077c3`](https://redirect.github.com/colinhacks/zod/commit/3b077c3a)
- [#​5121](https://redirect.github.com/colinhacks/zod/issues/5121)
-
[`1e06af8`](https://redirect.github.com/colinhacks/zod/commit/1e06af8e)
- [#​5113](https://redirect.github.com/colinhacks/zod/issues/5113)
-
[`b01b6f3`](https://redirect.github.com/colinhacks/zod/commit/b01b6f39)
— [#​5052](https://redirect.github.com/colinhacks/zod/issues/5052)
-
[`571ab0c`](https://redirect.github.com/colinhacks/zod/commit/571ab0c3)
— [#​5051](https://redirect.github.com/colinhacks/zod/issues/5051)
-
[`d3ea111`](https://redirect.github.com/colinhacks/zod/commit/d3ea1119)
— [#​5049](https://redirect.github.com/colinhacks/zod/issues/5049)
-
[`b8e3f87`](https://redirect.github.com/colinhacks/zod/commit/b8e3f877)
— [#​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
([#​5074](https://redirect.github.com/colinhacks/zod/issues/5074))
-
[`fc1e556`](https://redirect.github.com/colinhacks/zod/commit/fc1e556318159b4740ba3d6b37660e783d2a3cb7)
Fixes
[#​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
([#​5045](https://redirect.github.com/colinhacks/zod/issues/5045))
-
[`4975f3a`](https://redirect.github.com/colinhacks/zod/commit/4975f3a0e9c9f0b241499d936a02f1998c66dc01)
feat: add discriminator generic
([#​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
([#​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
([#​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
([#​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
([#​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
([#​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
([#​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
([#​5005](https://redirect.github.com/colinhacks/zod/issues/5005))
-
[`e25303e`](https://redirect.github.com/colinhacks/zod/commit/e25303e98c8d13ea96c3296507c564011f403ffe)
Docs: fix typo
([#​5008](https://redirect.github.com/colinhacks/zod/issues/5008))
-
[`dbb05ef`](https://redirect.github.com/colinhacks/zod/commit/dbb05ef990c86ec6b1f6eac11b91ec7572e29c89)
Add JSON Schema draft-04 output
([#​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
[#​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
[#​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
([#​4848](https://redirect.github.com/colinhacks/zod/issues/4848))
-
[`7c9ce38`](https://redirect.github.com/colinhacks/zod/commit/7c9ce388ae39b2324c5ad05420ecf4732ebca6fe)
Update docs for z.property check
([#​4863](https://redirect.github.com/colinhacks/zod/issues/4863))
-
[`c432577`](https://redirect.github.com/colinhacks/zod/commit/c432577ad1a7201631ae0a4d80e945fc4937bcc9)
docs: add jwt schema docs
([#​4867](https://redirect.github.com/colinhacks/zod/issues/4867))
-
[`35e6a6f`](https://redirect.github.com/colinhacks/zod/commit/35e6a6f6d64d7d5ba58c4cb8c80105759b977c9b)
Add llms.txt
([#​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`
([#​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
([#​4997](https://redirect.github.com/colinhacks/zod/issues/4997))
-
[`930a2f6`](https://redirect.github.com/colinhacks/zod/commit/930a2f68d799889df4c1f662dfe61934db84fdd1)
Fix number of errors in doc
([#​4993](https://redirect.github.com/colinhacks/zod/issues/4993))
-
[`c762dbb`](https://redirect.github.com/colinhacks/zod/commit/c762dbb4fdb249cfddccdd69812da3f4b659df67)
feat(locale): Add Yoruba (yo) locale
([#​4996](https://redirect.github.com/colinhacks/zod/issues/4996))
-
[`9a34a3a`](https://redirect.github.com/colinhacks/zod/commit/9a34a3a60d92c44f695b08e4c665209aa7160e24)
Zod 4.0.11
([#​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
([#​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
[#​4973](https://redirect.github.com/colinhacks/zod/issues/4973)
([#​4974](https://redirect.github.com/colinhacks/zod/issues/4974))
-
[`1850496`](https://redirect.github.com/colinhacks/zod/commit/18504960cdce29529e37415b87fed1732facf1ef)
Fix typo in `valype`
([#​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
([#​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
([#​4967](https://redirect.github.com/colinhacks/zod/issues/4967))
-
[`813451d`](https://redirect.github.com/colinhacks/zod/commit/813451db7fcf64c5322835984eded9bfe95be1da)
v4.0.10
([#​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
([#​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
[#​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
[#​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
([#​4870](https://redirect.github.com/colinhacks/zod/issues/4870))
-
[`499df78`](https://redirect.github.com/colinhacks/zod/commit/499df780b10dfcce29afba3e811757f7eade9570)
Add RFC 9562 mentions. Closes
[#​4872](https://redirect.github.com/colinhacks/zod/issues/4872)
-
[`d0493f3`](https://redirect.github.com/colinhacks/zod/commit/d0493f3dceb117972464f01cb0765262a5ffed70)
Doc tweak - spread vs destructuring
([#​4919](https://redirect.github.com/colinhacks/zod/issues/4919))
-
[`8dad394`](https://redirect.github.com/colinhacks/zod/commit/8dad394b805fd18cee8e44a37dab983916e0d92c)
feat: Icelandic translation
([#​4920](https://redirect.github.com/colinhacks/zod/issues/4920))
-
[`2ffdae1`](https://redirect.github.com/colinhacks/zod/commit/2ffdae1faafcc34639a7a846a55776c2a886a644)
Bulgarian (bg) translation
([#​4928](https://redirect.github.com/colinhacks/zod/issues/4928))
-
[`0973135`](https://redirect.github.com/colinhacks/zod/commit/09731358f69bb1238f6e00e0ca82e28c095b800f)
docs: add valype to xToZodConverts
([#​4930](https://redirect.github.com/colinhacks/zod/issues/4930))
-
[`d257340`](https://redirect.github.com/colinhacks/zod/commit/d2573409ab02e5d0c2a644315798999d619e4c89)
Remove moduleResolution callout
([#​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
([#​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
([#​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
([#​4942](https://redirect.github.com/colinhacks/zod/issues/4942))
-
[`4619109`](https://redirect.github.com/colinhacks/zod/commit/4619109e7927019837a3a13d4ab8bba5c72989de)
feat(locales): add Danish translations
([#​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
([#​4954](https://redirect.github.com/colinhacks/zod/issues/4954))
-
[`28a5091`](https://redirect.github.com/colinhacks/zod/commit/28a5091092b22146a26f8a4e7c18e2943f53a86a)
Update api.mdx
([#​4955](https://redirect.github.com/colinhacks/zod/issues/4955))
-
[`7f3cf94`](https://redirect.github.com/colinhacks/zod/commit/7f3cf946ca9aa90031cb954d6f683cb09de4d894)
Fix URL sup example
([#​4959](https://redirect.github.com/colinhacks/zod/issues/4959))
-
[`17e7f3b`](https://redirect.github.com/colinhacks/zod/commit/17e7f3b4e1
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] <!-- 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/promptfoo/crabcode).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41NS40IiwidXBkYXRlZEluVmVyIjoiNDMuNTUuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>1 parent 1123bd8 commit 9b1c42b
2 files changed
+5
-5
lines changedSome generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
| 18 | + | |
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| |||
0 commit comments