UNPKG

nestjs-auto-reflect-metadata-emitter

Version:

[![Actions Status](https://github.com/Codibre/nestjs-auto-reflect-metadata-emitter/workflows/build/badge.svg)](https://github.com/Codibre/nestjs-auto-reflect-metadata-emitter/actions) [![Actions Status](https://github.com/Codibre/nestjs-auto-reflect-metad

62 lines 1.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isMetadata = isMetadata; exports.registerClassMetadata = registerClassMetadata; exports.registerPropertyMetadata = registerPropertyMetadata; exports.registerMethodMetadata = registerMethodMetadata; const internal_1 = require("../internal"); const metadata = (0, internal_1.getMetadataStorage)(); const metadataSymbol = Symbol('metadataSymbol'); const metadataMarker = { [metadataSymbol]: true }; function getMeta(prototype) { let ref = metadata.get(prototype); if (!ref) { ref = { ctor: undefined, properties: new Map(), methods: new Map(), }; Object.assign(ref, metadataMarker); metadata.set(prototype, ref); } return ref; } function isMetadata(ref) { return typeof ref === 'object' && !!ref && metadataSymbol in ref; } function registerClassMetadata(modifiers) { return (cls) => { const { prototype } = cls; const ref = getMeta(prototype); ref.ctor = { cls, args: Reflect.getMetadata('design:paramtypes', cls), modifiers, }; }; } function registerPropertyMetadata(modifiers) { return (prototype, key) => { const ref = getMeta(prototype); const type = Reflect.getMetadata('design:type', prototype, key); ref.properties.set(key, { name: key, type, modifiers, }); }; } function registerMethodMetadata(modifiers) { return (prototype, key, propertyDescriptor) => { const ref = getMeta(prototype); const returnType = Reflect.getMetadata('design:returntype', prototype, key); ref.methods.set(key, { name: key, args: Reflect.getMetadata('design:paramtypes', prototype, key), returnType, propertyDescriptor, modifiers, }); }; } //# sourceMappingURL=decorators.js.map