@multiversx/sdk-nestjs-http
Version:
Multiversx SDK Nestjs http package
58 lines • 2.37 kB
JavaScript
;
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