@tsed/platform-multer
Version:
Multer adapter package for Ts.ED framework
40 lines (39 loc) • 1.42 kB
JavaScript
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);