From 1c216723a0fe11e6f8fc91f3bac3c5cea886d56f Mon Sep 17 00:00:00 2001 From: Avior Date: Mon, 31 Mar 2025 11:16:19 +0200 Subject: [PATCH] fix: allow parsing other types than SchemaObject --- src/helpers.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/helpers.ts b/src/helpers.ts index 65ad671..47560c2 100644 --- a/src/helpers.ts +++ b/src/helpers.ts @@ -18,14 +18,12 @@ export function parseQuery(model: T, query: URLSearchParam return model.parse(record, opts) as ReturnType } -export function parseFormData(model: T, data: FormData, opts?: Parameters[1]): ReturnType { +export function parseFormData(model: T, data: FormData, opts?: Parameters[1]): ReturnType { const record: Record = {} // console.log('VALIDATE FORM DATA data', data) for (const [key, value] of data) { - // console.log('parse', key, value) - const isArray = model.model[key].isOfType([]) ?? false - // record[key] = isArray ? data.getAll(key) : value - objectSet(record, key.split('.').map((it) => /^\d+$/g.test(it) ? parseInt(it, 10) : it), isArray ? data.getAll(key) : value) + const hasMultipleValues = data.getAll(key).length > 1 + objectSet(record, key.split('.').map((it) => /^\d+$/g.test(it) ? parseInt(it, 10) : it), hasMultipleValues ? data.getAll(key) : value) } // quick hack to handle FormData not returning Checkboxes @@ -54,11 +52,13 @@ export function parseFormData(model: T, data: FormData, handleBoolean(value as unknown as SchemaItem, [...keys, key]) }) } - handleSchemaForBoolean(model.model) - // console.log(JSON.stringify(record, undefined, 2)) + + if (model instanceof SchemaObject) { + handleSchemaForBoolean(model.model) + } return model.parse(record, opts) as ReturnType } -export function parseForm(model: T, form: HTMLFormElement, opts?: Parameters[1]): ReturnType { +export function parseForm(model: T, form: HTMLFormElement, opts?: Parameters[1]): ReturnType { return parseFormData(model, new FormData(form), opts) }