formDataToObject() — astro Function Reference
Architecture documentation for the formDataToObject() function in server.ts from the astro codebase.
Entity Profile
Dependency Diagram
graph TD b164aaea_5db8_98a9_78e8_32d7e3924805["formDataToObject()"] 12df90c3_b0fe_d858_b821_5011b6067fdb["server.ts"] b164aaea_5db8_98a9_78e8_32d7e3924805 -->|defined in| 12df90c3_b0fe_d858_b821_5011b6067fdb 258b6bef_aced_8d2a_aea4_de1c127c32ab["parseFormInput()"] 258b6bef_aced_8d2a_aea4_de1c127c32ab -->|calls| b164aaea_5db8_98a9_78e8_32d7e3924805 8b209b98_2e04_af0e_ef8c_e0c3e52e5c24["handleFormDataGetAll()"] b164aaea_5db8_98a9_78e8_32d7e3924805 -->|calls| 8b209b98_2e04_af0e_ef8c_e0c3e52e5c24 07a1bdc5_5131_3487_6224_449145a04259["handleFormDataGet()"] b164aaea_5db8_98a9_78e8_32d7e3924805 -->|calls| 07a1bdc5_5131_3487_6224_449145a04259 style b164aaea_5db8_98a9_78e8_32d7e3924805 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/astro/src/actions/runtime/server.ts lines 285–323
export function formDataToObject<T extends z.$ZodObject>(
formData: FormData,
schema: T,
): Record<string, unknown> {
const obj: Record<string, unknown> = schema._zod.def.catchall
? Object.fromEntries(formData.entries())
: {};
for (const [key, baseValidator] of Object.entries(schema._zod.def.shape)) {
let validator = baseValidator;
while (
validator instanceof z.$ZodOptional ||
validator instanceof z.$ZodNullable ||
validator instanceof z.$ZodDefault
) {
// use default value when key is undefined
if (validator instanceof z.$ZodDefault && !formData.has(key)) {
obj[key] =
validator._zod.def.defaultValue instanceof Function
? validator._zod.def.defaultValue()
: validator._zod.def.defaultValue;
}
validator = validator._zod.def.innerType;
}
if (!formData.has(key) && key in obj) {
// continue loop if form input is not found and default value is set
continue;
} else if (validator instanceof z.$ZodBoolean) {
const val = formData.get(key);
obj[key] = val === 'true' ? true : val === 'false' ? false : formData.has(key);
} else if (validator instanceof z.$ZodArray) {
obj[key] = handleFormDataGetAll(key, formData, validator);
} else {
obj[key] = handleFormDataGet(key, formData, validator, baseValidator);
}
}
return obj;
}
Domain
Subdomains
Defined In
Called By
Source
Frequently Asked Questions
What does formDataToObject() do?
formDataToObject() is a function in the astro codebase, defined in packages/astro/src/actions/runtime/server.ts.
Where is formDataToObject() defined?
formDataToObject() is defined in packages/astro/src/actions/runtime/server.ts at line 285.
What does formDataToObject() call?
formDataToObject() calls 2 function(s): handleFormDataGet, handleFormDataGetAll.
What calls formDataToObject()?
formDataToObject() is called by 1 function(s): parseFormInput.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free