UNPKG

nhb-toolbox

Version:

A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.

78 lines (77 loc) 2.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.serializeForm = serializeForm; exports.parseFormData = parseFormData; const query_1 = require("../dom/query"); const primitives_1 = require("../guards/primitives"); const sanitize_1 = require("../object/sanitize"); function serializeForm(form, toQueryString = false) { const formData = new FormData(form); const data = {}; formData?.forEach((value, key) => { if (data[key]) { data[key] = Array.isArray(data[key]) ? [...data[key], value.toString()] : [data[key], value.toString()]; } else { data[key] = value.toString(); } }); if (toQueryString) { const queryString = (0, query_1.generateQueryParams)(data); return queryString; } return data; } function parseFormData(data, parsePrimitives = true) { const parsed = {}; if ((0, primitives_1.isString)(data)) { const params = new URLSearchParams(data); params?.forEach((value, key) => { const existing = parsed[key]; if ((0, primitives_1.isString)(existing)) { parsed[key] = [existing, value]; } else if (Array.isArray(existing)) { parsed[key] = [...existing, value]; } else { parsed[key] = value; } }); } else { data?.forEach((value, key) => { const existing = parsed[key]; if (value instanceof File) { if (Array.isArray(existing)) { parsed[key] = [...existing, value]; } else if (existing instanceof File) { parsed[key] = [existing, value]; } else { parsed[key] = value; } } else { if ((0, primitives_1.isString)(existing)) { parsed[key] = [existing, value]; } else if (Array.isArray(existing)) { parsed[key] = [...existing, value]; } else { parsed[key] = value; } } }); } if (parsePrimitives) { return (0, sanitize_1.parseObjectValues)(parsed); } else { return parsed; } }