UNPKG

@tsed/platform-multer

Version:
40 lines (39 loc) 1.42 kB
import { __decorate, __metadata, __param } from "tslib"; import { constant, inject, injectable, ProviderType } from "@tsed/di"; import { Context } from "@tsed/platform-params"; import { MULTER_MODULE, PLATFORM_MULTER_OPTIONS } from "../constants/constants.js"; import { MulterException } from "../errors/MulterException.js"; /** * @middleware */ export class PlatformMulterMiddleware { async use(ctx) { try { const { fields, options = {} } = ctx.endpoint.get(PLATFORM_MULTER_OPTIONS); const settings = { ...constant("multer", {}), ...options }; /* istanbul ignore next */ if (settings.storage) { settings.dest = undefined; } const { get } = await inject(MULTER_MODULE); const middleware = get(settings).fields(fields); return await middleware(ctx.getRequest(), ctx.getResponse()); } catch (er) { if (er.code) { throw new MulterException(er); } throw er; } } } __decorate([ __param(0, Context()), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", Promise) ], PlatformMulterMiddleware.prototype, "use", null); injectable(PlatformMulterMiddleware).type(ProviderType.MIDDLEWARE).priority(-10);