n8n
Version:
n8n Workflow Automation Tool
59 lines • 2.31 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createN8nPackageMulterOptions = createN8nPackageMulterOptions;
exports.listUploadFiles = listUploadFiles;
exports.getPackageUploadFile = getPackageUploadFile;
exports.resolveImportPackageUpload = resolveImportPackageUpload;
const multer_1 = __importDefault(require("multer"));
const api_types_1 = require("@n8n/api-types");
const bad_request_error_1 = require("../../../errors/response-errors/bad-request.error");
const IMPORT_PACKAGE_BODY_FIELD_SET = new Set([
...api_types_1.IMPORT_PACKAGE_REQUEST_FORM_FIELDS,
'package',
]);
const IMPORT_PACKAGE_FIELD_SIZE_BYTES = 128;
const IMPORT_PACKAGE_MAX_PARTS = 5;
function createN8nPackageMulterOptions(globalConfig) {
const maxFileSizeBytes = globalConfig.endpoints.payloadSizeMax * 1024 * 1024;
return {
storage: multer_1.default.memoryStorage(),
limits: {
fileSize: maxFileSizeBytes,
files: 1,
parts: IMPORT_PACKAGE_MAX_PARTS,
fieldSize: IMPORT_PACKAGE_FIELD_SIZE_BYTES,
},
};
}
function listUploadFiles(req) {
if (!req.files)
return [];
if (Array.isArray(req.files))
return req.files;
return Object.values(req.files).flat();
}
function getPackageUploadFile(req) {
const files = listUploadFiles(req);
return files.find((file) => file.fieldname === 'package');
}
function resolveImportPackageUpload(req) {
const packageFile = getPackageUploadFile(req);
if (!packageFile?.buffer?.length) {
throw new bad_request_error_1.BadRequestError('Multipart field "package" is required');
}
for (const file of listUploadFiles(req)) {
if (file.fieldname !== 'package') {
throw new bad_request_error_1.BadRequestError('Unexpected file upload field; only "package" is allowed');
}
}
for (const key of Object.keys(req.body ?? {})) {
if (!IMPORT_PACKAGE_BODY_FIELD_SET.has(key)) {
throw new bad_request_error_1.BadRequestError(`Unexpected form field "${key}"`);
}
}
return packageFile;
}
//# sourceMappingURL=import-package-upload.js.map