UNPKG

1.65 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.PickType = void 0;
4const mapped_types_1 = require("@nestjs/mapped-types");
5const lodash_1 = require("lodash");
6const constants_1 = require("../constants");
7const decorators_1 = require("../decorators");
8const model_properties_accessor_1 = require("../services/model-properties-accessor");
9const mapped_types_utils_1 = require("./mapped-types.utils");
10const modelPropertiesAccessor = new model_properties_accessor_1.ModelPropertiesAccessor();
11function PickType(classRef, keys) {
12 const fields = modelPropertiesAccessor
13 .getModelProperties(classRef.prototype)
14 .filter((item) => keys.includes(item));
15 const isInheritedPredicate = (propertyKey) => keys.includes(propertyKey);
16 class PickTypeClass {
17 constructor() {
18 (0, mapped_types_1.inheritPropertyInitializers)(this, classRef, isInheritedPredicate);
19 }
20 }
21 (0, mapped_types_1.inheritValidationMetadata)(classRef, PickTypeClass, isInheritedPredicate);
22 (0, mapped_types_1.inheritTransformationMetadata)(classRef, PickTypeClass, isInheritedPredicate);
23 (0, mapped_types_utils_1.clonePluginMetadataFactory)(PickTypeClass, classRef.prototype, (metadata) => (0, lodash_1.pick)(metadata, keys));
24 fields.forEach((propertyKey) => {
25 const metadata = Reflect.getMetadata(constants_1.DECORATORS.API_MODEL_PROPERTIES, classRef.prototype, propertyKey);
26 const decoratorFactory = (0, decorators_1.ApiProperty)(metadata);
27 decoratorFactory(PickTypeClass.prototype, propertyKey);
28 });
29 return PickTypeClass;
30}
31exports.PickType = PickType;