@tsclean/core
Version:
Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.
90 lines • 9.95 kB
JavaScript
;
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 __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.FileInterceptor = void 0;
const multer_1 = __importDefault(require("multer"));
const interfaces_1 = require("../interfaces");
const multer_utils_1 = require("../multer.utils");
const decorators_1 = require("../../decorators");
let FileInterceptor = class FileInterceptor {
constructor(options = {}, fieldName = '') {
this.multer = multer_1.default(Object.assign({}, options));
// this.options = options;
this.fieldName = fieldName;
}
async intercept(context, next) {
const ctx = context.getHttp();
await new Promise((resolve, reject) => this.multer.single(this.fieldName)(ctx.getRequest(), ctx.getResponse(), (err) => {
if (err) {
const error = (0, multer_utils_1.transformException)(err);
return reject(error);
}
resolve();
}));
return next.handle();
}
};
exports.FileInterceptor = FileInterceptor;
exports.FileInterceptor = FileInterceptor = __decorate([
__param(0, (0, decorators_1.Optional)()),
__param(0, (0, decorators_1.Inject)(interfaces_1.MULTER_MODULE_OPTIONS)),
__metadata("design:paramtypes", [Object, Object])
], FileInterceptor);
// export function FileInterceptor(
// fieldName: string,
// localOptions?: MulterOptions,
// ): Type<InterceptorInterface> {
// class MixinInterceptor implements InterceptorInterface {
// protected multer: MulterInstance;
//
// constructor(
// @Optional()
// @Inject(MULTER_MODULE_OPTIONS)
// options: MulterOptions = {},
// ) {
// this.multer = (multer as any)({
// ...options,
// ...localOptions,
// });
// }
//
// async intercept(
// context: ExecutionContextInterface,
// next: CallHandlerInterface,
// ): Promise<Observable<any>> {
// const ctx = context.getHttp();
//
// await new Promise<void>((resolve, reject) =>
// this.multer.single(fieldName)(
// ctx.getRequest(),
// ctx.getResponse(),
// (err: any) => {
// if (err) {
// const error = transformException(err);
// return reject(error);
// }
// resolve();
// },
// ),
// );
// return next.handle();
// }
// }
//
// return mixin(MixinInterceptor);
// }
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91cGxvYWQvaW50ZXJjZXB0b3JzL2ZpbGUuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLDhDQUFtRTtBQUNuRSxrREFBbUQ7QUFPbkQsaURBQWtFO0FBSWxFLElBQWEsZUFBZSxHQUE1QixNQUFhLGVBQWU7SUFJeEIsWUFHUSxVQUF5QixFQUFFLEVBQy9CLFNBQVMsR0FBRyxFQUFFO1FBRWQsSUFBSSxDQUFDLE1BQU0sR0FBSSxnQkFBYyxtQkFDdEIsT0FBTyxFQUVaLENBQUM7UUFDSCwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDL0IsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQ1gsT0FBa0MsRUFDbEMsSUFBMEI7UUFFMUIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRTlCLE1BQU0sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUM5QixHQUFHLENBQUMsVUFBVSxFQUFFLEVBQ2hCLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFDakIsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNULElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ04sTUFBTSxLQUFLLEdBQUcsSUFBQSxpQ0FBa0IsRUFBQyxHQUFHLENBQUMsQ0FBQztnQkFDdEMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsQ0FBQztZQUNELE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQyxDQUNKLENBQ0osQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FDSixDQUFBO0FBdkNZLDBDQUFlOzBCQUFmLGVBQWU7SUFLbkIsV0FBQSxJQUFBLHFCQUFRLEdBQUUsQ0FBQTtJQUNWLFdBQUEsSUFBQSxtQkFBTSxFQUFDLGtDQUFxQixDQUFDLENBQUE7O0dBTnpCLGVBQWUsQ0F1QzNCO0FBRUQsbUNBQW1DO0FBQ25DLHlCQUF5QjtBQUN6QixvQ0FBb0M7QUFDcEMsa0NBQWtDO0FBQ2xDLCtEQUErRDtBQUMvRCw0Q0FBNEM7QUFDNUMsRUFBRTtBQUNGLHVCQUF1QjtBQUN2QiwwQkFBMEI7QUFDMUIsNkNBQTZDO0FBQzdDLCtDQUErQztBQUMvQyxjQUFjO0FBQ2QsOENBQThDO0FBQzlDLDhCQUE4QjtBQUM5QixtQ0FBbUM7QUFDbkMsa0JBQWtCO0FBQ2xCLFlBQVk7QUFDWixFQUFFO0FBQ0YsMkJBQTJCO0FBQzNCLGtEQUFrRDtBQUNsRCwwQ0FBMEM7QUFDMUMsd0NBQXdDO0FBQ3hDLDZDQUE2QztBQUM3QyxFQUFFO0FBQ0YsMkRBQTJEO0FBQzNELGlEQUFpRDtBQUNqRCx3Q0FBd0M7QUFDeEMseUNBQXlDO0FBQ3pDLHNDQUFzQztBQUN0QyxxQ0FBcUM7QUFDckMscUVBQXFFO0FBQ3JFLG9EQUFvRDtBQUNwRCw0QkFBNEI7QUFDNUIscUNBQXFDO0FBQ3JDLHlCQUF5QjtBQUN6QixxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCLG9DQUFvQztBQUNwQyxZQUFZO0FBQ1osUUFBUTtBQUNSLEVBQUU7QUFDRixzQ0FBc0M7QUFDdEMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtdWx0ZXIgZnJvbSAnbXVsdGVyJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge011bHRlck9wdGlvbnMsIE1VTFRFUl9NT0RVTEVfT1BUSU9OU30gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQge3RyYW5zZm9ybUV4Y2VwdGlvbn0gZnJvbSAnLi4vbXVsdGVyLnV0aWxzJztcbmltcG9ydCB7XG4gICAgQ2FsbEhhbmRsZXJJbnRlcmZhY2UsXG4gICAgRXhlY3V0aW9uQ29udGV4dEludGVyZmFjZSxcbiAgICBJbnRlcmNlcHRvckludGVyZmFjZSxcbiAgICBUeXBlXG59IGZyb20gXCIuLi8uLi9jb250cmFjdHNcIjtcbmltcG9ydCB7QWRhcHRlciwgSW5qZWN0LCBtaXhpbiwgT3B0aW9uYWx9IGZyb20gXCIuLi8uLi9kZWNvcmF0b3JzXCI7XG5cbnR5cGUgTXVsdGVySW5zdGFuY2UgPSBhbnk7XG5cbmV4cG9ydCBjbGFzcyBGaWxlSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBJbnRlcmNlcHRvckludGVyZmFjZSB7XG4gICAgcHJvdGVjdGVkIG11bHRlcjogTXVsdGVySW5zdGFuY2U7XG4gICAgcHJvdGVjdGVkIG9wdGlvbnM7XG4gICAgcHJvdGVjdGVkIGZpZWxkTmFtZTogc3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KE1VTFRFUl9NT0RVTEVfT1BUSU9OUylcbiAgICAgICAgICAgIG9wdGlvbnM6IE11bHRlck9wdGlvbnMgPSB7fSxcbiAgICAgICAgZmllbGROYW1lID0gJydcbiAgICApIHtcbiAgICAgICAgdGhpcy5tdWx0ZXIgPSAobXVsdGVyIGFzIGFueSkoe1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIC8vIC4uLmxvY2FsT3B0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuZmllbGROYW1lID0gZmllbGROYW1lO1xuICAgIH1cblxuICAgIGFzeW5jIGludGVyY2VwdChcbiAgICAgICAgY29udGV4dDogRXhlY3V0aW9uQ29udGV4dEludGVyZmFjZSxcbiAgICAgICAgbmV4dDogQ2FsbEhhbmRsZXJJbnRlcmZhY2UsXG4gICAgKTogUHJvbWlzZTxPYnNlcnZhYmxlPGFueT4+IHtcbiAgICAgICAgY29uc3QgY3R4ID0gY29udGV4dC5nZXRIdHRwKCk7XG5cbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT5cbiAgICAgICAgICAgIHRoaXMubXVsdGVyLnNpbmdsZSh0aGlzLmZpZWxkTmFtZSkoXG4gICAgICAgICAgICAgICAgY3R4LmdldFJlcXVlc3QoKSxcbiAgICAgICAgICAgICAgICBjdHguZ2V0UmVzcG9uc2UoKSxcbiAgICAgICAgICAgICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSB0cmFuc2Zvcm1FeGNlcHRpb24oZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKCk7XG4gICAgfVxufVxuXG4vLyBleHBvcnQgZnVuY3Rpb24gRmlsZUludGVyY2VwdG9yKFxuLy8gICAgIGZpZWxkTmFtZTogc3RyaW5nLFxuLy8gICAgIGxvY2FsT3B0aW9ucz86IE11bHRlck9wdGlvbnMsXG4vLyApOiBUeXBlPEludGVyY2VwdG9ySW50ZXJmYWNlPiB7XG4vLyAgICAgY2xhc3MgTWl4aW5JbnRlcmNlcHRvciBpbXBsZW1lbnRzIEludGVyY2VwdG9ySW50ZXJmYWNlIHtcbi8vICAgICAgICAgcHJvdGVjdGVkIG11bHRlcjogTXVsdGVySW5zdGFuY2U7XG4vL1xuLy8gICAgICAgICBjb25zdHJ1Y3Rvcihcbi8vICAgICAgICAgICAgIEBPcHRpb25hbCgpXG4vLyAgICAgICAgICAgICBASW5qZWN0KE1VTFRFUl9NT0RVTEVfT1BUSU9OUylcbi8vICAgICAgICAgICAgICAgICBvcHRpb25zOiBNdWx0ZXJPcHRpb25zID0ge30sXG4vLyAgICAgICAgICkge1xuLy8gICAgICAgICAgICAgdGhpcy5tdWx0ZXIgPSAobXVsdGVyIGFzIGFueSkoe1xuLy8gICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4vLyAgICAgICAgICAgICAgICAgLi4ubG9jYWxPcHRpb25zLFxuLy8gICAgICAgICAgICAgfSk7XG4vLyAgICAgICAgIH1cbi8vXG4vLyAgICAgICAgIGFzeW5jIGludGVyY2VwdChcbi8vICAgICAgICAgICAgIGNvbnRleHQ6IEV4ZWN1dGlvbkNvbnRleHRJbnRlcmZhY2UsXG4vLyAgICAgICAgICAgICBuZXh0OiBDYWxsSGFuZGxlckludGVyZmFjZSxcbi8vICAgICAgICAgKTogUHJvbWlzZTxPYnNlcnZhYmxlPGFueT4+IHtcbi8vICAgICAgICAgICAgIGNvbnN0IGN0eCA9IGNvbnRleHQuZ2V0SHR0cCgpO1xuLy9cbi8vICAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+XG4vLyAgICAgICAgICAgICAgICAgdGhpcy5tdWx0ZXIuc2luZ2xlKGZpZWxkTmFtZSkoXG4vLyAgICAgICAgICAgICAgICAgICAgIGN0eC5nZXRSZXF1ZXN0KCksXG4vLyAgICAgICAgICAgICAgICAgICAgIGN0eC5nZXRSZXNwb25zZSgpLFxuLy8gICAgICAgICAgICAgICAgICAgICAoZXJyOiBhbnkpID0+IHtcbi8vICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IHRyYW5zZm9ybUV4Y2VwdGlvbihlcnIpO1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgfVxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuLy8gICAgICAgICAgICAgICAgICAgICB9LFxuLy8gICAgICAgICAgICAgICAgICksXG4vLyAgICAgICAgICAgICApO1xuLy8gICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKCk7XG4vLyAgICAgICAgIH1cbi8vICAgICB9XG4vL1xuLy8gICAgIHJldHVybiBtaXhpbihNaXhpbkludGVyY2VwdG9yKTtcbi8vIH1cbiJdfQ==