@dxspring/formdata
Version:
React FormData Generator
103 lines • 6.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MasterProvider = void 0;
// Providers
const ObjectProvider_1 = require("./ObjectProvider");
const ArrayProvider_1 = require("./ArrayProvider");
// Master Provider
const MasterProvider = ({ data, key, json }) => {
var _a, _b;
const FinalJSONData = {};
const FinalFormData = new FormData();
// Check Data If Not Exists
if (!data) {
return json ? FinalJSONData : FinalFormData;
}
// If Data Is Object
if (data instanceof Object && !(data instanceof Array) && !!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 = (0, ObjectProvider_1.ObjectProvider)({ data: data[Object.keys(data)[Index]], key: Object.keys(data)[Index] });
if (ObjectData && Object.keys(ObjectData).length) {
for (let Index = 0; Index < Object.keys(ObjectData).length; Index++) {
FinalJSONData[Object.keys(ObjectData)[Index]] = ObjectData[Object.keys(ObjectData)[Index]];
FinalFormData.append(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 = (0, ArrayProvider_1.ArrayProvider)({ data: data[Object.keys(data)[Index]], key: Object.keys(data)[Index] });
if (ArrayData && Object.keys(ArrayData).length) {
for (let Index = 0; Index < Object.keys(ArrayData).length; Index++) {
FinalJSONData[Object.keys(ArrayData)[Index]] = ArrayData[Object.keys(ArrayData)[Index]];
FinalFormData.append(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) {
FinalJSONData[Object.keys(data)[Index]] = data[Object.keys(data)[Index]][0];
FinalFormData.append(Object.keys(data)[Index], 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)) {
FinalJSONData[Object.keys(data)[Index]] = data[Object.keys(data)[Index]];
FinalFormData.append(Object.keys(data)[Index], data[Object.keys(data)[Index]]);
}
}
}
// If Data Is Array
if (data instanceof Array && !!data.length) {
for (let Index = 0; Index < data.length; Index++) {
// Value Is Object
if (data[Index] instanceof Object && !(data[Index] instanceof Array) && !!Object.keys(data[Index]).length) {
const ObjectData = (0, ObjectProvider_1.ObjectProvider)({ data: data[Index], key: `${key ? key : 'object'}[${Index}]` });
if (ObjectData && Object.keys(ObjectData).length) {
for (let Index = 0; Index < Object.keys(ObjectData).length; Index++) {
FinalJSONData[Object.keys(ObjectData)[Index]] = ObjectData[Object.keys(ObjectData)[Index]];
FinalFormData.append(Object.keys(ObjectData)[Index], ObjectData[Object.keys(ObjectData)[Index]]);
}
}
}
// Value Is Array
if (data[Index] instanceof Array && !!data[Index].length) {
const ArrayData = (0, ArrayProvider_1.ArrayProvider)({ data: data[Index], key: `${key ? key : 'array'}[${Index}]`, customKey: key ? key : 'array' });
if (ArrayData && Object.keys(ArrayData).length) {
for (let Index = 0; Index < Object.keys(ArrayData).length; Index++) {
FinalJSONData[Object.keys(ArrayData)[Index]] = ArrayData[Object.keys(ArrayData)[Index]];
FinalFormData.append(Object.keys(ArrayData)[Index], ArrayData[Object.keys(ArrayData)[Index]]);
}
}
}
// Value Is File
if (data[Index] instanceof FileList && ((_b = data[Index]) === null || _b === void 0 ? void 0 : _b.length) === 1) {
FinalJSONData[`${key ? key : 'file'}[${Index}]`] = data[Index][0];
FinalFormData.append(`${key ? key : 'file'}[${Index}]`, data[Index][0]);
}
// Value Is String, Number Or Boolean
if (data[Index] && !(data[Index] instanceof Array) && !(data[Index] instanceof Object) && !(data[Index] instanceof FileList)) {
FinalJSONData[`${key ? key : 'value'}[${Index}]`] = data[Index];
FinalFormData.append(`${key ? key : 'value'}[${Index}]`, data[Index]);
}
}
}
// If Data Is File
if (data instanceof FileList && data.length === 1) {
FinalJSONData[key ? key : 'file'] = data[0];
FinalFormData.append(key ? key : 'file', data[0]);
}
// If Data Is String, Number Or Boolean
if (!(data instanceof Object) && !(data instanceof Array) && !(data instanceof FileList)) {
FinalJSONData[key ? key : 'value'] = data;
FinalFormData.append(key ? key : 'value', data);
}
// OutPut
return json ? FinalJSONData : FinalFormData;
};
exports.MasterProvider = MasterProvider;
//# sourceMappingURL=MasterProvider.js.map