UNPKG

custom-automapper

Version:

A powerful, type-safe object mapping library for TypeScript and NestJS

59 lines 2.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MAPPER_DESTINATION = exports.MAPPER_SOURCE = exports.USE_MAPPER = void 0; exports.UseMapper = UseMapper; exports.MapFrom = MapFrom; exports.MapTo = MapTo; exports.AutoMap = AutoMap; exports.getMapperMetadata = getMapperMetadata; exports.getAutoMapMetadata = getAutoMapMetadata; require("reflect-metadata"); exports.USE_MAPPER = Symbol.for('USE_MAPPER'); exports.MAPPER_SOURCE = Symbol('MAPPER_SOURCE'); exports.MAPPER_DESTINATION = Symbol('MAPPER_DESTINATION'); function UseMapper(mapperClass) { return target => { Reflect.defineMetadata(exports.USE_MAPPER, mapperClass, target); }; } function MapFrom(sourcePropertyOrType) { return (target, propertyKey) => { if (!sourcePropertyOrType) { throw new Error('@MapFrom requires a source property or class type'); } Reflect.defineMetadata('mapper:source', sourcePropertyOrType, target, propertyKey); }; } function MapTo(destinationPropertyOrType) { return (target, propertyKey) => { if (!destinationPropertyOrType) { throw new Error('@MapTo requires a destination property or class type'); } Reflect.defineMetadata('mapper:destination', destinationPropertyOrType, target, propertyKey); }; } function AutoMap(destination) { return (target, propertyKey) => { const METADATA_KEY = Symbol.for('AUTO_MAP_METADATA'); if (propertyKey) { const existingProps = Reflect.getMetadata(METADATA_KEY, target.constructor) || {}; existingProps[propertyKey] = destination; Reflect.defineMetadata(METADATA_KEY, existingProps, target.constructor); } else { Reflect.defineMetadata(METADATA_KEY, { __class__: destination || target }, target); } }; } function getMapperMetadata(target) { return { useMapper: Reflect.getMetadata(exports.USE_MAPPER, target), sources: Reflect.getMetadata(exports.MAPPER_SOURCE, target) || {}, destinations: Reflect.getMetadata(exports.MAPPER_DESTINATION, target) || {} }; } function getAutoMapMetadata(target) { const METADATA_KEY = Symbol.for('AUTO_MAP_METADATA'); return Reflect.getMetadata(METADATA_KEY, target) || {}; } //# sourceMappingURL=decorators.js.map