UNPKG

@multiversx/sdk-nestjs-http

Version:
58 lines 2.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FieldsInterceptor = void 0; const tslib_1 = require("tslib"); const sdk_nestjs_common_1 = require("@multiversx/sdk-nestjs-common"); const common_1 = require("@nestjs/common"); const operators_1 = require("rxjs/operators"); const entities_1 = require("./entities"); let FieldsInterceptor = class FieldsInterceptor { intercept(context, next) { const contextType = context.getType(); if (!["http", "https"].includes(contextType)) { return next.handle(); } const disableFieldsInterceptorMethodMetadata = sdk_nestjs_common_1.DecoratorUtils.getMethodDecorator(entities_1.DisableFieldsInterceptorOptions, context.getHandler()); if (disableFieldsInterceptorMethodMetadata) { return next.handle(); } const disableFieldsInterceptorClassMetadata = sdk_nestjs_common_1.DecoratorUtils.getClassDecorator(entities_1.DisableFieldsInterceptorOnControllerOptions, context.getClass()); if (disableFieldsInterceptorClassMetadata) { return next.handle(); } const request = context.getArgByIndex(0); return next .handle() .pipe((0, operators_1.map)((resultRef) => { if (typeof resultRef !== 'object') { return resultRef; } const result = JSON.parse(JSON.stringify(resultRef)); const fieldsArgument = request.query.fields; if (fieldsArgument) { const fields = Array.isArray(fieldsArgument) ? fieldsArgument : fieldsArgument.split(','); if (Array.isArray(result)) { for (const item of result) { this.transformItem(item, fields); } } else { this.transformItem(result, fields); } } return result; })); } transformItem(item, fields) { for (const key of Object.keys(item)) { if (!fields.includes(key)) { delete item[key]; } } } }; FieldsInterceptor = tslib_1.__decorate([ (0, common_1.Injectable)() ], FieldsInterceptor); exports.FieldsInterceptor = FieldsInterceptor; //# sourceMappingURL=fields.interceptor.js.map