integreat-adapter-form
Version:
application/x-www-form-urlencoded adapter for Integreat
33 lines • 1.33 kB
JavaScript
import parseFormData from './utils/parseFormData.js';
import stringifyFormData from './utils/stringifyFormData.js';
const firstIfArray = (data) => (Array.isArray(data) ? data[0] : data);
const setActionData = (action, payloadData, responseData) => ({
...action,
payload: {
...action.payload,
...(payloadData === undefined ? {} : { data: payloadData }),
},
...(action.response && {
response: {
...action.response,
...(responseData === undefined ? {} : { data: responseData }),
},
}),
});
const adapter = {
prepareOptions({ setStructureInKeys = false }, _serviceId) {
return { setStructureInKeys };
},
async normalize(action, _options) {
const payloadData = parseFormData(action.payload.data);
const responseData = parseFormData(action.response?.data);
return setActionData(action, payloadData, responseData);
},
async serialize(action, { setStructureInKeys }) {
const payloadData = stringifyFormData(firstIfArray(action.payload.data), setStructureInKeys);
const responseData = stringifyFormData(firstIfArray(action.response?.data), setStructureInKeys);
return setActionData(action, payloadData, responseData);
},
};
export default adapter;
//# sourceMappingURL=index.js.map