@dxspring/formdata
Version:
React FormData Generator
45 lines • 2.6 kB
JavaScript
// Services
import { ObjectService } from '../Services/ObjectService';
// Providers
import { ArrayProvider } from './ArrayProvider';
// Object Provider
export const ObjectProvider = ({ data, key }) => {
var _a;
const FinalData = {};
// Looping On Object Data
if (data && !!Object.keys(data).length) {
for (let Index = 0; Index < Object.keys(data).length; Index++) {
// Value Is Object
if (data[Object.keys(data)[Index]] instanceof Object && !(data[Object.keys(data)[Index]] instanceof Array) && !!Object.keys(data[Object.keys(data)[Index]]).length) {
const ObjectData = ObjectService({ data: data[Object.keys(data)[Index]], key: `${key ? key + '[' : ''}${Object.keys(data)[Index]}${key ? ']' : ''}` });
if (ObjectData && Object.keys(ObjectData).length) {
for (let Index = 0; Index < Object.keys(ObjectData).length; Index++) {
FinalData[Object.keys(ObjectData)[Index]] = ObjectData[Object.keys(ObjectData)[Index]];
}
}
}
// Value Is Array
if (data[Object.keys(data)[Index]] instanceof Array && data[Object.keys(data)[Index]].length) {
const ArrayData = ArrayProvider({ data: data[Object.keys(data)[Index]], key: `${key ? key + '[' : ''}${Object.keys(data)[Index]}${key ? ']' : ''}` });
if (ArrayData && Object.keys(ArrayData).length) {
for (let Index = 0; Index < Object.keys(ArrayData).length; Index++) {
FinalData[Object.keys(ArrayData)[Index]] = ArrayData[Object.keys(ArrayData)[Index]];
}
}
}
// Value Is File
if (data[Object.keys(data)[Index]] instanceof FileList && ((_a = data[Object.keys(data)[Index]]) === null || _a === void 0 ? void 0 : _a.length) === 1) {
FinalData[`${key ? key + '[' : ''}${Object.keys(data)[Index]}${key ? ']' : ''}`] = data[Object.keys(data)[Index]][0];
}
// Value Is String, Number Or Boolean
if (data[Object.keys(data)[Index]] &&
!(data[Object.keys(data)[Index]] instanceof Array) &&
!(data[Object.keys(data)[Index]] instanceof Object) &&
!(data[Object.keys(data)[Index]] instanceof FileList)) {
FinalData[`${key ? key + '[' : ''}${Object.keys(data)[Index]}${key ? ']' : ''}`] = data[Object.keys(data)[Index]];
}
}
}
return FinalData;
};
//# sourceMappingURL=ObjectProvider.js.map