UNPKG

n8n

Version:

n8n Workflow Automation Tool

62 lines 2.88 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AgentUploadMiddleware = void 0; exports.isAllowedAgentFile = isAllowedAgentFile; exports.cleanupUploadedTempFiles = cleanupUploadedTempFiles; const api_types_1 = require("@n8n/api-types"); const di_1 = require("@n8n/di"); const multer_1 = __importDefault(require("multer")); const promises_1 = require("node:fs/promises"); const node_path_1 = __importDefault(require("node:path")); const bad_request_error_1 = require("../../errors/response-errors/bad-request.error"); const allowedAgentFileExtensions = new Set(api_types_1.ALLOWED_AGENT_FILE_EXTENSIONS); function isAllowedAgentFile(file) { const extension = node_path_1.default.extname(file.originalname).toLowerCase(); return allowedAgentFileExtensions.has(extension); } async function cleanupUploadedTempFiles(files) { await Promise.all(files.map(async (file) => { if (!file.path) return; await (0, promises_1.unlink)(file.path).catch(() => { }); })); } let AgentUploadMiddleware = class AgentUploadMiddleware { constructor() { this.upload = (0, multer_1.default)({ storage: multer_1.default.diskStorage({}), limits: { fileSize: api_types_1.MAX_AGENT_FILE_SIZE_BYTES }, fileFilter: (_req, file, done) => { if (!isAllowedAgentFile(file)) { done(new bad_request_error_1.BadRequestError('Only CSV, PDF, Markdown, and TXT files are allowed')); return; } done(null, true); }, }); } array(fieldName) { return (req, res, next) => { void this.upload.array(fieldName, api_types_1.MAX_AGENT_FILES_PER_UPLOAD)(req, res, (error) => { if (error) { req.fileUploadError = error; } next(); }); }; } }; exports.AgentUploadMiddleware = AgentUploadMiddleware; exports.AgentUploadMiddleware = AgentUploadMiddleware = __decorate([ (0, di_1.Service)() ], AgentUploadMiddleware); //# sourceMappingURL=agent-upload.middleware.js.map