UNPKG

@nestjs/swagger

Version:

Nest - modern, fast, powerful node.js web framework (@swagger)

32 lines (31 loc) 1.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OmitType = void 0; const mapped_types_1 = require("@nestjs/mapped-types"); const lodash_1 = require("lodash"); const constants_1 = require("../constants"); const decorators_1 = require("../decorators"); const model_properties_accessor_1 = require("../services/model-properties-accessor"); const mapped_types_utils_1 = require("./mapped-types.utils"); const modelPropertiesAccessor = new model_properties_accessor_1.ModelPropertiesAccessor(); function OmitType(classRef, keys) { const fields = modelPropertiesAccessor .getModelProperties(classRef.prototype) .filter((item) => !keys.includes(item)); const isInheritedPredicate = (propertyKey) => !keys.includes(propertyKey); class OmitTypeClass { constructor() { mapped_types_1.inheritPropertyInitializers(this, classRef, isInheritedPredicate); } } mapped_types_1.inheritValidationMetadata(classRef, OmitTypeClass, isInheritedPredicate); mapped_types_1.inheritTransformationMetadata(classRef, OmitTypeClass, isInheritedPredicate); mapped_types_utils_1.clonePluginMetadataFactory(OmitTypeClass, classRef.prototype, (metadata) => lodash_1.omit(metadata, keys)); fields.forEach((propertyKey) => { const metadata = Reflect.getMetadata(constants_1.DECORATORS.API_MODEL_PROPERTIES, classRef.prototype, propertyKey); const decoratorFactory = decorators_1.ApiProperty(metadata); decoratorFactory(OmitTypeClass.prototype, propertyKey); }); return OmitTypeClass; } exports.OmitType = OmitType;