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