????
Current Path : C:/inetpub/vhost/binhdinhinvest.gdtvietnam.com/api/node_modules/class-transformer/ |
Current File : C:/inetpub/vhost/binhdinhinvest.gdtvietnam.com/api/node_modules/class-transformer/decorators.js |
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TransformPlainToClass = exports.TransformClassToClass = exports.TransformClassToPlain = exports.Exclude = exports.Expose = exports.Type = exports.Transform = void 0; const ClassTransformer_1 = require("./ClassTransformer"); const storage_1 = require("./storage"); const TypeMetadata_1 = require("./metadata/TypeMetadata"); const ExposeMetadata_1 = require("./metadata/ExposeMetadata"); const ExcludeMetadata_1 = require("./metadata/ExcludeMetadata"); const TransformMetadata_1 = require("./metadata/TransformMetadata"); /** * Defines a custom logic for value transformation. */ function Transform(transformFn, options) { return function (target, key) { const metadata = new TransformMetadata_1.TransformMetadata(target.constructor, key, transformFn, options); storage_1.defaultMetadataStorage.addTransformMetadata(metadata); }; } exports.Transform = Transform; /** * Specifies a type of the property. * The given TypeFunction can return a constructor. A discriminator can be given in the options. */ function Type(typeFunction, options) { return function (target, key) { const type = Reflect.getMetadata('design:type', target, key); const metadata = new TypeMetadata_1.TypeMetadata(target.constructor, key, type, typeFunction, options); storage_1.defaultMetadataStorage.addTypeMetadata(metadata); }; } exports.Type = Type; /** * Marks property as included in the process of transformation. By default it includes the property for both * constructorToPlain and plainToConstructor transformations, however you can specify on which of transformation types * you want to skip this property. */ function Expose(options) { return function (object, propertyName) { const metadata = new ExposeMetadata_1.ExposeMetadata(object instanceof Function ? object : object.constructor, propertyName, options || {}); storage_1.defaultMetadataStorage.addExposeMetadata(metadata); }; } exports.Expose = Expose; /** * Marks property as excluded from the process of transformation. By default it excludes the property for both * constructorToPlain and plainToConstructor transformations, however you can specify on which of transformation types * you want to skip this property. */ function Exclude(options) { return function (object, propertyName) { const metadata = new ExcludeMetadata_1.ExcludeMetadata(object instanceof Function ? object : object.constructor, propertyName, options || {}); storage_1.defaultMetadataStorage.addExcludeMetadata(metadata); }; } exports.Exclude = Exclude; /** * Transform the object from class to plain object and return only with the exposed properties. */ function TransformClassToPlain(params) { return function (target, propertyKey, descriptor) { const classTransformer = new ClassTransformer_1.ClassTransformer(); const originalMethod = descriptor.value; descriptor.value = function (...args) { const result = originalMethod.apply(this, args); const isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function'; return isPromise ? result.then((data) => classTransformer.classToPlain(data, params)) : classTransformer.classToPlain(result, params); }; }; } exports.TransformClassToPlain = TransformClassToPlain; /** * Return the class instance only with the exposed properties. */ function TransformClassToClass(params) { return function (target, propertyKey, descriptor) { const classTransformer = new ClassTransformer_1.ClassTransformer(); const originalMethod = descriptor.value; descriptor.value = function (...args) { const result = originalMethod.apply(this, args); const isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function'; return isPromise ? result.then((data) => classTransformer.classToClass(data, params)) : classTransformer.classToClass(result, params); }; }; } exports.TransformClassToClass = TransformClassToClass; /** * Return the class instance only with the exposed properties. */ function TransformPlainToClass(classType, params) { return function (target, propertyKey, descriptor) { const classTransformer = new ClassTransformer_1.ClassTransformer(); const originalMethod = descriptor.value; descriptor.value = function (...args) { const result = originalMethod.apply(this, args); const isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function'; return isPromise ? result.then((data) => classTransformer.plainToClass(classType, data, params)) : classTransformer.plainToClass(classType, result, params); }; }; } exports.TransformPlainToClass = TransformPlainToClass; //# sourceMappingURL=decorators.js.map