UNPKG

n8n

Version:

n8n Workflow Automation Tool

46 lines 1.9 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createMultiFormDataParser = void 0; const formidable_1 = __importDefault(require("formidable")); const content_too_large_error_1 = require("../errors/response-errors/content-too-large.error"); const isPayloadTooLargeError = (error) => typeof error === 'object' && error !== null && 'httpCode' in error && error.httpCode === 413; const mapFormParseError = (error) => { if (isPayloadTooLargeError(error)) { return new content_too_large_error_1.ContentTooLargeError('The submitted form data exceeds the allowed size.'); } return error instanceof Error ? error : new Error(String(error)); }; const normalizeFormData = (values) => { for (const key in values) { const value = values[key]; if (Array.isArray(value) && value.length === 1) { values[key] = value[0]; } } }; const createMultiFormDataParser = (maxFormDataSizeInMb) => { return async function parseMultipartFormData(req) { const { encoding } = req; const form = (0, formidable_1.default)({ multiples: true, encoding: encoding, maxFileSize: maxFormDataSizeInMb * 1024 * 1024, }); return await new Promise((resolve, reject) => { form.parse(req, (error, data, files) => { if (error) { reject(mapFormParseError(error)); return; } normalizeFormData(data); normalizeFormData(files); resolve({ data, files }); }); }); }; }; exports.createMultiFormDataParser = createMultiFormDataParser; //# sourceMappingURL=webhook-form-data.js.map