UNPKG

@nestjsx/crud

Version:

NestJs CRUD for RESTful APIs

64 lines 3.08 kB
"use strict"; 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; }; Object.defineProperty(exports, "__esModule", { value: true }); const common_1 = require("@nestjs/common"); const util_1 = require("@nestjsx/util"); const class_transformer_1 = require("class-transformer"); const operators_1 = require("rxjs/operators"); const enums_1 = require("../enums"); const crud_base_interceptor_1 = require("./crud-base.interceptor"); const actionToDtoNameMap = { [enums_1.CrudActions.ReadAll]: 'getMany', [enums_1.CrudActions.ReadOne]: 'get', [enums_1.CrudActions.CreateMany]: 'createMany', [enums_1.CrudActions.CreateOne]: 'create', [enums_1.CrudActions.UpdateOne]: 'update', [enums_1.CrudActions.ReplaceOne]: 'replace', [enums_1.CrudActions.DeleteAll]: 'delete', [enums_1.CrudActions.DeleteOne]: 'delete', [enums_1.CrudActions.RecoverOne]: 'recover', }; let CrudResponseInterceptor = class CrudResponseInterceptor extends crud_base_interceptor_1.CrudBaseInterceptor { intercept(context, next) { return next.handle().pipe(operators_1.map((data) => this.serialize(context, data))); } transform(dto, data) { if (!util_1.isObject(data) || util_1.isFalse(dto)) { return data; } if (!util_1.isFunction(dto)) { return data.constructor !== Object ? class_transformer_1.classToPlain(data) : data; } return data instanceof dto ? class_transformer_1.classToPlain(data) : class_transformer_1.classToPlain(class_transformer_1.classToPlainFromExist(data, new dto())); } serialize(context, data) { const { crudOptions, action } = this.getCrudInfo(context); const { serialize } = crudOptions; const dto = serialize[actionToDtoNameMap[action]]; const isArray = Array.isArray(data); switch (action) { case enums_1.CrudActions.ReadAll: return isArray ? data.map((item) => this.transform(serialize.get, item)) : this.transform(dto, data); case enums_1.CrudActions.CreateMany: return isArray ? data.map((item) => this.transform(dto, item)) : this.transform(dto, data); default: return this.transform(dto, data); } } }; CrudResponseInterceptor = __decorate([ common_1.Injectable() ], CrudResponseInterceptor); exports.CrudResponseInterceptor = CrudResponseInterceptor; //# sourceMappingURL=crud-response.interceptor.js.map