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
|