UNPKG

@multiversx/sdk-nestjs-http

Version:
48 lines 1.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExcludeFieldsInterceptor = void 0; const tslib_1 = require("tslib"); const common_1 = require("@nestjs/common"); const operators_1 = require("rxjs/operators"); let ExcludeFieldsInterceptor = class ExcludeFieldsInterceptor { intercept(context, next) { const contextType = context.getType(); if (!["http", "https"].includes(contextType)) { return next.handle(); } const request = context.getArgByIndex(0); return next .handle() .pipe((0, operators_1.map)((resultRef) => { if (typeof resultRef !== 'object' || resultRef === null) { return resultRef; } const result = JSON.parse(JSON.stringify(resultRef)); const excludeFieldsArgument = request.query.excludeFields; if (excludeFieldsArgument) { const excludeFields = Array.isArray(excludeFieldsArgument) ? excludeFieldsArgument : excludeFieldsArgument.split(','); if (Array.isArray(result)) { for (const item of result) { this.transformItem(item, excludeFields); } } else { this.transformItem(result, excludeFields); } } return result; })); } transformItem(item, excludeFields) { for (const key of Object.keys(item)) { if (excludeFields.includes(key)) { delete item[key]; } } } }; ExcludeFieldsInterceptor = tslib_1.__decorate([ (0, common_1.Injectable)() ], ExcludeFieldsInterceptor); exports.ExcludeFieldsInterceptor = ExcludeFieldsInterceptor; //# sourceMappingURL=exclude.fields.interceptor.js.map