Compare commits
2 Commits
35e67bd63a
...
a0cc29169d
Author | SHA1 | Date | |
---|---|---|---|
a0cc29169d | |||
1c216723a0 |
4
package-lock.json
generated
4
package-lock.json
generated
@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@dzeio/schema",
|
||||
"version": "0.0.5",
|
||||
"version": "0.0.6",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@dzeio/schema",
|
||||
"version": "0.0.5",
|
||||
"version": "0.0.6",
|
||||
"dependencies": {
|
||||
"@dzeio/object-util": "^1.8.3",
|
||||
"@standard-schema/spec": "^1.0.0",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@dzeio/schema",
|
||||
"version": "0.0.5",
|
||||
"version": "0.0.6",
|
||||
"dependencies": {
|
||||
"@dzeio/object-util": "^1.8.3"
|
||||
},
|
||||
|
@ -18,14 +18,12 @@ export function parseQuery<T extends SchemaItem>(model: T, query: URLSearchParam
|
||||
return model.parse(record, opts) as ReturnType<T['parse']>
|
||||
}
|
||||
|
||||
export function parseFormData<T extends SchemaObject>(model: T, data: FormData, opts?: Parameters<T['parse']>[1]): ReturnType<T['parse']> {
|
||||
export function parseFormData<T extends SchemaItem>(model: T, data: FormData, opts?: Parameters<T['parse']>[1]): ReturnType<T['parse']> {
|
||||
const record: Record<string, unknown> = {}
|
||||
// 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<T extends SchemaObject>(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<T['parse']>
|
||||
}
|
||||
|
||||
export function parseForm<T extends SchemaObject>(model: T, form: HTMLFormElement, opts?: Parameters<T['parse']>[1]): ReturnType<T['parse']> {
|
||||
export function parseForm<T extends SchemaItem>(model: T, form: HTMLFormElement, opts?: Parameters<T['parse']>[1]): ReturnType<T['parse']> {
|
||||
return parseFormData(model, new FormData(form), opts)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user