nestjs-auto-reflect-metadata-emitter
Version:
[](https://github.com/Codibre/nestjs-auto-reflect-metadata-emitter/actions) [;
exports.removeUnknownProperties = removeUnknownProperties;
const fluent_iterable_1 = require("@codibre/fluent-iterable");
const meta_info_1 = require("../meta-info");
const noKeys = new Set();
function removeUnknownProperties(obj, prohibitedKeyList = noKeys) {
if (Array.isArray(obj)) {
return obj.map((x) => removeUnknownProperties(x, prohibitedKeyList));
}
if (typeof obj !== 'object' || obj === null) {
return obj;
}
const meta = (0, meta_info_1.getClassMetadata)(obj.constructor);
const result = (0, fluent_iterable_1.fluentObject)(obj)
.filter(([k]) => !prohibitedKeyList.has(k) &&
(meta?.properties.has(k) ?? true))
.toObject(0, (x) => removeUnknownProperties(x[1], prohibitedKeyList));
Object.setPrototypeOf(result, obj.constructor);
return result;
}
//# sourceMappingURL=remove-unknown-properties.js.map