UNPKG

web-ui-pack

Version:
43 lines (42 loc) 1.3 kB
export default function objectToFormData(fromObj, toForm, opts) { toForm ||= new FormData(); const canNulls = opts?.includeNulls ?? false; const isBracketNotation = opts?.bracketNotation ?? false; function map(v, prop) { if (Array.isArray(v)) { v.forEach((val, index) => { map(val, `${prop}[${index}]`); }); } else if (v == null) { if (canNulls) { toForm.append(prop, ""); } } else if (typeof v === "object") { if (v instanceof Date) { toForm.append(prop, v.toJSON()); } else if (v instanceof File) { toForm.append(prop, v, v.name); } else if (isBracketNotation) { Object.keys(v).forEach((key) => { const s = prop ? `${prop}[${key}]` : key; map(v[key], s); }); } else { Object.keys(v).forEach((key) => { const s = `${prop ? `${prop}.` : ""}${key}`; map(v[key], s); }); } } else { toForm.append(prop, v); } } map(fromObj, ""); return toForm; }