agent_patch
runs/2026-02-27__21-30-28__gpt-5-4/flux-pr-4970/flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/agent-logs/agent.patch
5948 bytes
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/docs/content/api.mdx b/app/packages/docs/content/api.mdx
index 1bcb69d..6a32ee0 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/docs/content/api.mdx
+++ b/app/packages/docs/content/api.mdx
@@ -207,6 +207,7 @@ To perform some simple string transforms:
z.string().trim(); // trim whitespace
z.string().toLowerCase(); // toLowerCase
z.string().toUpperCase(); // toUpperCase
+z.string().normalize(); // Unicode normalization (NFC by default)
```
</Tab>
<Tab value="Zod Mini">
@@ -214,6 +215,7 @@ z.string().toUpperCase(); // toUpperCase
z.string().check(z.trim()); // trim whitespace
z.string().check(z.toLowerCase()); // toLowerCase
z.string().check(z.toUpperCase()); // toUpperCase
+z.string().check(z.normalize()); // Unicode normalization (NFC by default)
```
</Tab>
</Tabs>
@@ -2742,4 +2744,3 @@ const MyFunction = z.function({
const computeTrimmedLength = MyFunction.implement((input) => input.trim.length);
```
-
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/jsr.json b/app/packages/zod/jsr.json
index 4005c45..20e6e2a 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/jsr.json
+++ b/app/packages/zod/jsr.json
@@ -1,6 +1,6 @@
{
"name": "@zod/zod",
- "version": "4.0.8",
+ "version": "4.0.9",
"exports": {
"./package.json": "./package.json",
".": "./src/index.ts",
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/package.json b/app/packages/zod/package.json
index d079aab..751c4e0 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/package.json
+++ b/app/packages/zod/package.json
@@ -1,6 +1,6 @@
{
"name": "zod",
- "version": "4.0.8",
+ "version": "4.0.9",
"type": "module",
"author": "Colin McDonnell <zod@colinhacks.com>",
"description": "TypeScript-first schema declaration and validation library with static type inference",
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/src/v4/classic/tests/literal.test.ts b/app/packages/zod/src/v4/classic/tests/literal.test.ts
index 8c48b20..f65b323 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/src/v4/classic/tests/literal.test.ts
+++ b/app/packages/zod/src/v4/classic/tests/literal.test.ts
@@ -91,6 +91,10 @@ test("readonly", () => {
z.literal(a);
});
+test("empty literal arrays are rejected", () => {
+ expect(() => z.literal([])).toThrow("Literal schema must define at least one value.");
+});
+
test("literal pattern", () => {
expect(z.literal(1.1)._zod.pattern).toMatchInlineSnapshot(`/\\^\\(1\\\\\\.1\\)\\$/`);
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/src/v4/classic/tests/union.test.ts b/app/packages/zod/src/v4/classic/tests/union.test.ts
index f787693..59c2490 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/src/v4/classic/tests/union.test.ts
+++ b/app/packages/zod/src/v4/classic/tests/union.test.ts
@@ -8,6 +8,44 @@ test("function parsing", () => {
expect(result.success).toEqual(false);
});
+test("multiple non-aborted union branches report invalid_union", () => {
+ const result = z
+ .union([
+ z.string().refine(() => false, { error: "first" }),
+ z.string().refine(() => false, { error: "second" }),
+ ])
+ .safeParse("asdf");
+
+ expect(result.success).toEqual(false);
+ if (!result.success) {
+ expect(result.error.issues).toMatchInlineSnapshot(`
+ [
+ {
+ "code": "invalid_union",
+ "errors": [
+ [
+ {
+ "code": "custom",
+ "message": "first",
+ "path": [],
+ },
+ ],
+ [
+ {
+ "code": "custom",
+ "message": "second",
+ "path": [],
+ },
+ ],
+ ],
+ "message": "Invalid input",
+ "path": [],
+ },
+ ]
+ `);
+ }
+});
+
test("union 2", () => {
const result = z.union([z.number(), z.string().refine(() => false)]).safeParse("a");
expect(result.success).toEqual(false);
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/src/v4/core/schemas.ts b/app/packages/zod/src/v4/core/schemas.ts
index 0622c5d..b998898 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/src/v4/core/schemas.ts
+++ b/app/packages/zod/src/v4/core/schemas.ts
@@ -1911,7 +1911,7 @@ function handleUnionResults(results: ParsePayload[], final: ParsePayload, inst:
}
const nonaborted = results.filter((r) => !util.aborted(r));
- if (nonaborted.length > 0) {
+ if (nonaborted.length === 1) {
final.value = nonaborted[0].value;
return nonaborted[0];
}
@@ -2781,6 +2781,9 @@ export const $ZodLiteral: core.$constructor<$ZodLiteral> = /*@__PURE__*/ core.$c
"$ZodLiteral",
(inst, def) => {
$ZodType.init(inst, def);
+ if (def.values.length === 0) {
+ throw new Error("Literal schema must define at least one value.");
+ }
inst._zod.values = new Set<util.Literal>(def.values);
inst._zod.pattern = new RegExp(
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/src/v4/core/versions.ts b/app/packages/zod/src/v4/core/versions.ts
index ce46253..c2f6e4d 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/packages/zod/src/v4/core/versions.ts
+++ b/app/packages/zod/src/v4/core/versions.ts
@@ -1,5 +1,5 @@
export const version = {
major: 4,
minor: 0,
- patch: 8 as number,
+ patch: 9 as number,
} as const;