From 0e6684983b9b24660a8fef83fe401ec1d567378a Mon Sep 17 00:00:00 2001 From: Fugi Date: Wed, 17 Jul 2024 05:23:30 -0700 Subject: [PATCH] Fix action form parsing for .nullish (#11452) --- .changeset/new-mails-prove.md | 5 +++++ packages/astro/src/actions/runtime/virtual/server.ts | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changeset/new-mails-prove.md diff --git a/.changeset/new-mails-prove.md b/.changeset/new-mails-prove.md new file mode 100644 index 0000000000..06c5a36521 --- /dev/null +++ b/.changeset/new-mails-prove.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes an issue where using .nullish() in a formdata Astro action would always parse as a string diff --git a/packages/astro/src/actions/runtime/virtual/server.ts b/packages/astro/src/actions/runtime/virtual/server.ts index 326bbf4f9b..3efa7ca149 100644 --- a/packages/astro/src/actions/runtime/virtual/server.ts +++ b/packages/astro/src/actions/runtime/virtual/server.ts @@ -124,8 +124,8 @@ export function formDataToObject( const obj: Record = {}; for (const [key, baseValidator] of Object.entries(schema.shape)) { let validator = baseValidator; - if (baseValidator instanceof z.ZodOptional || baseValidator instanceof z.ZodNullable) { - validator = baseValidator._def.innerType; + while (validator instanceof z.ZodOptional || validator instanceof z.ZodNullable) { + validator = validator._def.innerType; } if (validator instanceof z.ZodBoolean) { obj[key] = formData.has(key);