koa-body
Version:
A Koa body parser middleware. Supports multipart, urlencoded and JSON request bodies.
43 lines • 1.48 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = parseWithFormidable;
const formidable_1 = __importDefault(require("formidable"));
function convertFormidableFields(fields) {
const result = {};
for (const key in fields) {
const value = fields[key];
if (value !== undefined) {
result[key] = value.length === 1 ? value[0] : value;
}
}
return result;
}
function convertFormidableFiles(files) {
const result = {};
for (const key in files) {
const value = files[key];
if (value !== undefined) {
result[key] = value.length === 1 ? value[0] : value;
}
}
return result;
}
async function parseWithFormidable(ctx, options) {
const { onFileBegin, onPart, ...directOptions } = options;
const form = (0, formidable_1.default)({ multiples: true, ...directOptions });
if (onPart) {
const delegate = form._handlePart.bind(form);
form.onPart = (part) => {
onPart(part, delegate);
};
}
if (onFileBegin) {
form.on('fileBegin', onFileBegin);
}
const [fields, files] = await form.parse(ctx.req);
return { fields: convertFormidableFields(fields), files: convertFormidableFiles(files) };
}
//# sourceMappingURL=parse-with-formidable.js.map