Home / Function/ formDataToObject() — astro Function Reference

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

Called By

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