You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							96 lines
						
					
					
						
							3.3 KiB
						
					
					
				
			
		
		
	
	
							96 lines
						
					
					
						
							3.3 KiB
						
					
					
				"use strict";
 | 
						|
var __importDefault = (this && this.__importDefault) || function (mod) {
 | 
						|
    return (mod && mod.__esModule) ? mod : { "default": mod };
 | 
						|
};
 | 
						|
const make_prehandler_1 = __importDefault(require("./lib/make-prehandler"));
 | 
						|
const disk_1 = __importDefault(require("./storage/disk"));
 | 
						|
const memory_1 = __importDefault(require("./storage/memory"));
 | 
						|
const multer_error_1 = __importDefault(require("./lib/multer-error"));
 | 
						|
const content_parser_1 = __importDefault(require("./lib/content-parser"));
 | 
						|
function allowAll(_req, _file, cb) {
 | 
						|
    cb(null, true);
 | 
						|
}
 | 
						|
class Multer {
 | 
						|
    constructor(options) {
 | 
						|
        if (options.storage) {
 | 
						|
            this.storage = options.storage;
 | 
						|
        }
 | 
						|
        else if (options.dest) {
 | 
						|
            this.storage = (0, disk_1.default)({ destination: options.dest });
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            this.storage = (0, memory_1.default)();
 | 
						|
        }
 | 
						|
        this.limits = options.limits;
 | 
						|
        this.preservePath = options.preservePath;
 | 
						|
        this.fileFilter = options.fileFilter || allowAll;
 | 
						|
        this.contentParser = content_parser_1.default;
 | 
						|
    }
 | 
						|
    _makePreHandler(fields, fileStrategy) {
 | 
						|
        const setup = () => {
 | 
						|
            const fileFilter = this.fileFilter;
 | 
						|
            const filesLeft = Object.create(null);
 | 
						|
            fields.forEach(function (field) {
 | 
						|
                if (typeof field.maxCount === 'number') {
 | 
						|
                    filesLeft[field.name] = field.maxCount;
 | 
						|
                }
 | 
						|
                else {
 | 
						|
                    filesLeft[field.name] = Infinity;
 | 
						|
                }
 | 
						|
            });
 | 
						|
            function wrappedFileFilter(req, file, cb) {
 | 
						|
                if ((filesLeft[file.fieldname] || 0) <= 0) {
 | 
						|
                    return cb(new multer_error_1.default('LIMIT_UNEXPECTED_FILE', file.fieldname));
 | 
						|
                }
 | 
						|
                filesLeft[file.fieldname] -= 1;
 | 
						|
                fileFilter(req, file, cb);
 | 
						|
            }
 | 
						|
            return {
 | 
						|
                limits: this.limits,
 | 
						|
                preservePath: this.preservePath,
 | 
						|
                storage: this.storage,
 | 
						|
                fileFilter: wrappedFileFilter,
 | 
						|
                fileStrategy,
 | 
						|
            };
 | 
						|
        };
 | 
						|
        return (0, make_prehandler_1.default)(setup);
 | 
						|
    }
 | 
						|
    single(name) {
 | 
						|
        return this._makePreHandler([{ name, maxCount: 1 }], 'VALUE');
 | 
						|
    }
 | 
						|
    array(name, maxCount) {
 | 
						|
        return this._makePreHandler([{ name, maxCount }], 'ARRAY');
 | 
						|
    }
 | 
						|
    fields(fields) {
 | 
						|
        return this._makePreHandler(fields, 'OBJECT');
 | 
						|
    }
 | 
						|
    none() {
 | 
						|
        return this._makePreHandler([], 'NONE');
 | 
						|
    }
 | 
						|
    any() {
 | 
						|
        const setup = () => ({
 | 
						|
            limits: this.limits,
 | 
						|
            preservePath: this.preservePath,
 | 
						|
            storage: this.storage,
 | 
						|
            fileFilter: this.fileFilter,
 | 
						|
            fileStrategy: 'ARRAY',
 | 
						|
        });
 | 
						|
        return (0, make_prehandler_1.default)(setup);
 | 
						|
    }
 | 
						|
}
 | 
						|
const multer = function (options) {
 | 
						|
    if (options === undefined) {
 | 
						|
        return new Multer({});
 | 
						|
    }
 | 
						|
    if (typeof options === 'object' && options !== null) {
 | 
						|
        return new Multer(options);
 | 
						|
    }
 | 
						|
    throw new TypeError('Expected object for argument options');
 | 
						|
};
 | 
						|
multer.contentParser = content_parser_1.default;
 | 
						|
multer.diskStorage = disk_1.default;
 | 
						|
multer.memoryStorage = memory_1.default;
 | 
						|
multer.MulterError = multer_error_1.default;
 | 
						|
multer.default = multer;
 | 
						|
module.exports = multer;
 | 
						|
//# sourceMappingURL=index.js.map
 |