UNPKG

n8n

Version:

n8n Workflow Automation Tool

59 lines 2.31 kB
"use strict"; 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