UNPKG

react-server-actions

Version:

A package for working with actions in React and Next.js

42 lines 1.38 kB
// ** Decode form helper export const decodeFormData = (formData) => { const data = {}; formData.forEach((value, key) => { // Reflect.has in favor of: object.hasOwnProperty(key) if (!Reflect.has(data, key)) { if (value && value.toString().length) { data[key] = value; } else { data[key] = undefined; } return; } // For grouped fields like multi-selects and checkboxes, we need to // store the values in an array. if (!Array.isArray(data[key])) { data[key] = [data[key]]; } data[key].push(value); }); // if in data there are fields with dot i assume that they are nested objects // and i transform them in nested objects for (const [key, value] of Object.entries(data)) { if (key.includes('.')) { const keys = key.split('.'); const lastKey = keys.pop(); let obj = data; for (const k of keys) { if (!obj[k]) { obj[k] = {}; } obj = obj[k]; } obj[lastKey] = value; delete data[key]; } } return data; }; export const serialize = (data) => JSON.parse(JSON.stringify(data)); //# sourceMappingURL=decode_form.js.map