diff --git a/.changeset/happy-parts-search.md b/.changeset/happy-parts-search.md new file mode 100644 index 000000000000..65fb87b4fa5d --- /dev/null +++ b/.changeset/happy-parts-search.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: strip field prefix before erroring on duplicates diff --git a/packages/kit/src/runtime/form-utils.js b/packages/kit/src/runtime/form-utils.js index 862609c94555..3115f146deba 100644 --- a/packages/kit/src/runtime/form-utils.js +++ b/packages/kit/src/runtime/form-utils.js @@ -42,10 +42,6 @@ export function convert_formdata(data) { if (is_array) key = key.slice(0, -2); - if (values.length > 1 && !is_array) { - throw new Error(`Form cannot contain duplicated keys — "${key}" has ${values.length} values`); - } - // an empty `` will submit a non-existent file, bizarrely values = values.filter( (entry) => typeof entry === 'string' || entry.name !== '' || entry.size > 0 @@ -60,6 +56,10 @@ export function convert_formdata(data) { values = values.map((v) => v === 'on'); } + if (values.length > 1 && !is_array) { + throw new Error(`Form cannot contain duplicated keys — "${key}" has ${values.length} values`); + } + set_nested_value(result, key, is_array ? values : values[0]); }