formflux
Version:
A package to upload files to a server and parsing multipart-formData requests
486 lines (464 loc) • 20.3 kB
JavaScript
;
exports.__esModule = true;
exports.default = void 0;
var _FormFlux = require("./FormFlux.Types");
exports.options = _FormFlux.options;
exports.optionFields = _FormFlux.optionFields;
exports.optionSingle = _FormFlux.optionSingle;
exports.File = _FormFlux.File;
var _ExtractContent = _interopRequireDefault(require("./ExtractContent"));
var _WriteFileContent = _interopRequireDefault(require("./WriteFileContent"));
var _SetBodyContentToReq = _interopRequireDefault(require("./SetBodyContentToReq"));
var _setFileNameToBody = _interopRequireDefault(require("./setFileNameToBody"));
var _setDatatoReqobj = _interopRequireDefault(require("./setDatatoReqobj"));
var _EventHandlers = _interopRequireDefault(require("./EventHandlers"));
var _FormFluxError = _interopRequireDefault(require("./FormFluxError"));
exports.FormfluxError = _FormFluxError.default;
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
class Formflux {
static diskStorage(options) {
return {
any() {
return async function (req, res, next) {
var _req$headers$content;
let obj = {
"originalReq": "",
"modifiedReq": Buffer.from(""),
"data": [],
"content": [],
"metaData": [],
"mimeType": [],
"fieldNameBody": [],
"fileName": [],
"modifiedFileName": [],
"contentBody": [],
"fieldNameFile": [],
"filePath": [],
"filesize": [],
"streams": []
};
let buff = [];
let reqType = req.headers["content-type"];
if (reqType && !reqType.includes("multipart/form-data")) throw new _FormFluxError.default("Invalid Request Type.Expected multipart/form-data", 400);
let boundary = (_req$headers$content = req.headers["content-type"]) == null ? void 0 : _req$headers$content.split("boundary=")[1];
req.on("data", chunk => {
buff.push(chunk);
});
req.on("end", () => {
try {
var _obj$modifiedReq$toSt;
obj.modifiedReq = Buffer.concat(buff); // holding the concatinated buffer
obj.data = (_obj$modifiedReq$toSt = obj.modifiedReq.toString("binary")) == null ? void 0 : _obj$modifiedReq$toSt.split(`--${boundary}`); // separating the boundary
obj.data.pop();
obj.data.shift();
//*****Defaults*****
//To*********extract content
new _ExtractContent.default(obj, options, null, null).extraction();
//To*********SetFileDataToReqObj
new _setDatatoReqobj.default(obj).populate();
let writeBool = false;
let parseBool = false;
let checkCompletion = (writeComplete, parsecomplete) => {
if (writeComplete && parsecomplete) next();
};
_EventHandlers.default.on("parseEnd", message => {
parseBool = true;
checkCompletion(writeBool, parseBool);
});
_EventHandlers.default.on("writeEnd", message => {
writeBool = true;
checkCompletion(writeBool, parseBool);
});
new _WriteFileContent.default(req, obj, options, "any", "disk").writeContent();
if (options.attachFileToReqBody && options.attachFileToReqBody == true) new _setFileNameToBody.default(obj).setFileNames(req);
new _SetBodyContentToReq.default(obj).setBody(req);
} catch (err) {
next(err);
}
});
req.on("error", () => {
next(new _FormFluxError.default("Error in recieving request", 500));
});
};
},
fields(optionFields) {
return async function (req, res, next) {
var _req$headers$content2;
let obj = {
"originalReq": "",
"modifiedReq": Buffer.from(""),
"data": [],
"content": [],
"metaData": [],
"mimeType": [],
"fieldNameBody": [],
"fileName": [],
"modifiedFileName": [],
"contentBody": [],
"fieldNameFile": [],
"filePath": [],
"filesize": [],
"streams": []
};
let buff = [];
let reqType = req.headers["content-type"];
if (reqType && !reqType.includes("multipart/form-data")) throw new _FormFluxError.default("Invalid Request Type.Expected multipart/form-data", 400);
let boundary = (_req$headers$content2 = req.headers["content-type"]) == null ? void 0 : _req$headers$content2.split("boundary=")[1];
req.on("data", chunk => {
buff.push(chunk);
});
req.on("end", () => {
try {
var _obj$modifiedReq$toSt2;
obj.modifiedReq = Buffer.concat(buff); // holding the concatinated buffer
obj.data = (_obj$modifiedReq$toSt2 = obj.modifiedReq.toString("binary")) == null ? void 0 : _obj$modifiedReq$toSt2.split(`--${boundary}`); // separating the boundary
obj.data.pop();
obj.data.shift();
//*****Defaults*****
//To*********extract content
new _ExtractContent.default(obj, options, optionFields, null).extraction();
//To*********SetFileDataToReqObj
new _setDatatoReqobj.default(obj).populate();
let writeBool = false;
let parseBool = false;
let checkCompletion = (writeComplete, parsecomplete) => {
if (writeComplete && parsecomplete) next();
};
_EventHandlers.default.on("parseEnd", message => {
parseBool = true;
checkCompletion(writeBool, parseBool);
});
_EventHandlers.default.on("writeEnd", message => {
writeBool = true;
checkCompletion(writeBool, parseBool);
});
new _WriteFileContent.default(req, obj, options, "fields", "disk").writeContent();
// new setFileContentToReq(obj).setFileNames(req);
if (options.attachFileToReqBody && options.attachFileToReqBody == true) new _setFileNameToBody.default(obj).setFileNames(req);
new _SetBodyContentToReq.default(obj).setBody(req);
} catch (err) {
next(err);
}
});
req.on("error", () => {
next(new _FormFluxError.default("Error in recieving request", 500));
});
};
},
single(field) {
return async function (req, res, next) {
var _req$headers$content3;
let obj = {
"originalReq": "",
"modifiedReq": Buffer.from(""),
"data": [],
"content": [],
"metaData": [],
"mimeType": [],
"fieldNameBody": [],
"fileName": [],
"modifiedFileName": [],
"contentBody": [],
"fieldNameFile": [],
"filePath": [],
"filesize": [],
"streams": []
};
let buff = [];
let reqType = req.headers["content-type"];
if (reqType && !reqType.includes("multipart/form-data")) throw new _FormFluxError.default("Invalid Request Type.Expected multipart/form-data", 400);
let boundary = (_req$headers$content3 = req.headers["content-type"]) == null ? void 0 : _req$headers$content3.split("boundary=")[1];
req.on("data", chunk => {
buff.push(chunk);
});
req.on("end", () => {
try {
var _obj$modifiedReq$toSt3;
obj.modifiedReq = Buffer.concat(buff); // holding the concatinated buffer
obj.data = (_obj$modifiedReq$toSt3 = obj.modifiedReq.toString("binary")) == null ? void 0 : _obj$modifiedReq$toSt3.split(`--${boundary}`); // separating the boundary
obj.data.pop();
obj.data.shift();
//*****Defaults*****
//To*********extract content
new _ExtractContent.default(obj, options, null, field).extraction();
//To*********SetFileDataToReqObj
new _setDatatoReqobj.default(obj).populate();
let writeBool = false;
let parseBool = false;
let checkCompletion = (writeComplete, parsecomplete) => {
if (writeComplete && parsecomplete) next();
};
_EventHandlers.default.on("parseEnd", message => {
parseBool = true;
checkCompletion(writeBool, parseBool);
});
_EventHandlers.default.on("writeEnd", message => {
writeBool = true;
checkCompletion(writeBool, parseBool);
});
new _WriteFileContent.default(req, obj, options, "single", "disk").writeContent();
if (options.attachFileToReqBody && options.attachFileToReqBody == true) new _setFileNameToBody.default(obj).setFileNames(req);
new _SetBodyContentToReq.default(obj).setBody(req);
} catch (err) {
next(err);
}
});
req.on("error", () => {
next(new _FormFluxError.default("Error in recieving request", 500));
});
};
}
};
}
static memoryStorage(options) {
return {
any() {
return async function (req, res, next) {
var _req$headers$content4;
let obj = {
"originalReq": "",
"modifiedReq": Buffer.from(""),
"data": [],
"content": [],
"metaData": [],
"mimeType": [],
"fieldNameBody": [],
"fileName": [],
"modifiedFileName": [],
"contentBody": [],
"fieldNameFile": [],
"filePath": [],
"filesize": [],
"streams": []
};
let buff = [];
let reqType = req.headers["content-type"];
if (reqType && !reqType.includes("multipart/form-data")) throw new _FormFluxError.default("Invalid Request Type.Expected multipart/form-data", 400);
let boundary = (_req$headers$content4 = req.headers["content-type"]) == null ? void 0 : _req$headers$content4.split("boundary=")[1];
req.on("data", chunk => {
buff.push(chunk);
});
req.on("end", () => {
try {
var _obj$modifiedReq$toSt4;
obj.modifiedReq = Buffer.concat(buff); // holding the concatinated buffer
obj.data = (_obj$modifiedReq$toSt4 = obj.modifiedReq.toString("binary")) == null ? void 0 : _obj$modifiedReq$toSt4.split(`--${boundary}`); // separating the boundary
obj.data.pop();
obj.data.shift();
//*****Defaults*****
//To*********extract content
new _ExtractContent.default(obj, options, null, null).extraction();
//To*********SetFileDataToReqObj
new _setDatatoReqobj.default(obj).populate();
let writeBool = false;
let parseBool = false;
let checkCompletion = (writeComplete, parsecomplete) => {
if (writeComplete && parsecomplete) next();
};
_EventHandlers.default.on("parseEnd", message => {
parseBool = true;
checkCompletion(writeBool, parseBool);
});
_EventHandlers.default.on("writeEnd", message => {
writeBool = true;
checkCompletion(writeBool, parseBool);
});
new _WriteFileContent.default(req, obj, options, "any", "memory").writeContent();
if (options.attachFileToReqBody && options.attachFileToReqBody == true) new _setFileNameToBody.default(obj).setFileNames(req);
new _SetBodyContentToReq.default(obj).setBody(req);
} catch (err) {
next(err);
}
});
req.on("error", () => {
next(new _FormFluxError.default("Error in recieving request", 500));
});
};
},
fields(optionFields) {
return async function (req, res, next) {
var _req$headers$content5;
let obj = {
"originalReq": "",
"modifiedReq": Buffer.from(""),
"data": [],
"content": [],
"metaData": [],
"mimeType": [],
"fieldNameBody": [],
"fileName": [],
"modifiedFileName": [],
"contentBody": [],
"fieldNameFile": [],
"filePath": [],
"filesize": [],
"streams": []
};
let buff = [];
let reqType = req.headers["content-type"];
if (reqType && !reqType.includes("multipart/form-data")) throw new _FormFluxError.default("Invalid Request Type.Expected multipart/form-data", 400);
let boundary = (_req$headers$content5 = req.headers["content-type"]) == null ? void 0 : _req$headers$content5.split("boundary=")[1];
req.on("data", chunk => {
buff.push(chunk);
});
req.on("end", () => {
try {
var _obj$modifiedReq$toSt5;
obj.modifiedReq = Buffer.concat(buff); // holding the concatinated buffer
obj.data = (_obj$modifiedReq$toSt5 = obj.modifiedReq.toString("binary")) == null ? void 0 : _obj$modifiedReq$toSt5.split(`--${boundary}`); // separating the boundary
obj.data.pop();
obj.data.shift();
//*****Defaults*****
//To*********extract content
new _ExtractContent.default(obj, options, optionFields, null).extraction();
//To*********SetFileDataToReqObj
new _setDatatoReqobj.default(obj).populate();
let writeBool = false;
let parseBool = false;
let checkCompletion = (writeComplete, parsecomplete) => {
if (writeComplete && parsecomplete) next();
};
_EventHandlers.default.on("parseEnd", message => {
parseBool = true;
checkCompletion(writeBool, parseBool);
});
_EventHandlers.default.on("writeEnd", message => {
writeBool = true;
checkCompletion(writeBool, parseBool);
});
new _WriteFileContent.default(req, obj, options, "fields", "memory").writeContent();
if (options.attachFileToReqBody && options.attachFileToReqBody == true) new _setFileNameToBody.default(obj).setFileNames(req);
new _SetBodyContentToReq.default(obj).setBody(req);
} catch (err) {
next(err);
}
});
req.on("error", () => {
next(new _FormFluxError.default("Error in recieving request", 500));
});
};
},
single(field) {
return async function (req, res, next) {
var _req$headers$content6;
let obj = {
"originalReq": "",
"modifiedReq": Buffer.from(""),
"data": [],
"content": [],
"metaData": [],
"mimeType": [],
"fieldNameBody": [],
"fileName": [],
"modifiedFileName": [],
"contentBody": [],
"fieldNameFile": [],
"filePath": [],
"filesize": [],
"streams": []
};
let buff = [];
let reqType = req.headers["content-type"];
if (reqType && !reqType.includes("multipart/form-data")) throw new _FormFluxError.default("Invalid Request Type.Expected multipart/form-data", 400);
let boundary = (_req$headers$content6 = req.headers["content-type"]) == null ? void 0 : _req$headers$content6.split("boundary=")[1];
req.on("data", chunk => {
buff.push(chunk);
});
req.on("end", () => {
try {
var _obj$modifiedReq$toSt6;
obj.modifiedReq = Buffer.concat(buff); // holding the concatinated buffer
obj.data = (_obj$modifiedReq$toSt6 = obj.modifiedReq.toString("binary")) == null ? void 0 : _obj$modifiedReq$toSt6.split(`--${boundary}`); // separating the boundary
obj.data.pop();
obj.data.shift();
//*****Defaults*****
//To*********extract content
new _ExtractContent.default(obj, options, null, field).extraction();
//To*********SetFileDataToReqObj
new _setDatatoReqobj.default(obj).populate();
let writeBool = false;
let parseBool = false;
let checkCompletion = (writeComplete, parsecomplete) => {
if (writeComplete && parsecomplete) next();
};
_EventHandlers.default.on("parseEnd", message => {
parseBool = true;
checkCompletion(writeBool, parseBool);
});
_EventHandlers.default.on("writeEnd", message => {
writeBool = true;
checkCompletion(writeBool, parseBool);
});
new _WriteFileContent.default(req, obj, options, "single", "memory").writeContent();
if (options.attachFileToReqBody && options.attachFileToReqBody == true) new _setFileNameToBody.default(obj).setFileNames(req);
new _SetBodyContentToReq.default(obj).setBody(req);
} catch (err) {
next(err);
}
});
req.on("error", () => {
next(new _FormFluxError.default("Error in recieving request", 500));
});
};
}
};
}
bodyParser() {
return async function (req, res, next) {
var _req$headers$content7;
let obj = {
"originalReq": "",
"modifiedReq": Buffer.from(""),
"data": [],
"content": [],
"metaData": [],
"mimeType": [],
"fieldNameBody": [],
"fileName": [],
"modifiedFileName": [],
"contentBody": [],
"fieldNameFile": [],
"filePath": [],
"filesize": [],
"streams": []
};
let buff = [];
let reqType = req.headers["content-type"];
if (reqType && !reqType.includes("multipart/form-data")) throw new _FormFluxError.default("Invalid Request Type.Expected multipart/form-data", 400);
let boundary = (_req$headers$content7 = req.headers["content-type"]) == null ? void 0 : _req$headers$content7.split("boundary=")[1];
req.on("data", chunk => {
buff.push(chunk);
});
req.on("end", () => {
try {
var _obj$modifiedReq$toSt7;
obj.modifiedReq = Buffer.concat(buff); // holding the concatinated buffer
obj.data = (_obj$modifiedReq$toSt7 = obj.modifiedReq.toString("binary")) == null ? void 0 : _obj$modifiedReq$toSt7.split(`--${boundary}`); // separating the boundary
obj.data.pop();
obj.data.shift();
//*****Defaults*****
//To*********extract content
new _ExtractContent.default(obj, null, null, null).extraction();
//To*********SetFileDataToReqObj
let writeBool = false;
let parseBool = false;
let checkCompletion = (writeComplete, parsecomplete) => {
if (writeComplete && parsecomplete) next();
};
_EventHandlers.default.on("parseEnd", message => {
parseBool = true;
next();
});
new _SetBodyContentToReq.default(obj).setBody(req);
} catch (err) {
next(err);
}
});
req.on("error", () => {
next(new _FormFluxError.default("Error in recieving request", 500));
});
};
}
}
var _default = exports.default = Formflux;
//# sourceMappingURL=FormFlux.js.map