UNPKG

@zerooneit/expressive-tea

Version:
69 lines (68 loc) 2.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /* istanbul ignore file */ require("reflect-metadata"); const object_helper_1 = require("../helpers/object-helper"); function get(key, target, propertyKey, own = false) { return own ? Reflect.getOwnMetadata(key, (0, object_helper_1.getClass)(target), propertyKey) : Reflect.getMetadata(key, (0, object_helper_1.getClass)(target), propertyKey); } class Metadata { static get(key, target, propertyKey) { return get(key, (0, object_helper_1.getClass)(target), propertyKey); } static getOwn(key, target, propertyKey) { return get(key, (0, object_helper_1.getClass)(target), propertyKey, true); } static getType(target, propertyKey) { return Reflect.getMetadata(DESIGN_TYPE, target, propertyKey); } static getOwnType(target, propertyKey) { return Reflect.getMetadata(DESIGN_TYPE, target, propertyKey); } static getReturnType(target, propertyKey) { return Reflect.getMetadata(DESIGN_RETURN_TYPE, target, propertyKey); } static getOwnReturnType(target, propertyKey) { return Reflect.getOwnMetadata(DESIGN_RETURN_TYPE, target, propertyKey); } static has(key, target, propertyKey) { try { return Reflect.hasMetadata(key, (0, object_helper_1.getClass)(target), propertyKey); } catch (er) { } return false; } static hasOwn(key, target, propertyKey) { return Reflect.hasOwnMetadata(key, (0, object_helper_1.getClass)(target), propertyKey); } static setParamTypes(target, propertyKey, value) { return this.set(DESIGN_PARAM_TYPES, value, target.prototype, propertyKey); } static delete(key, target, propertyKey) { return Reflect.deleteMetadata(key, (0, object_helper_1.getClass)(target), propertyKey); } static set(key, value, target, propertyKey) { const targets = PROPERTIES.has(key) ? PROPERTIES.get(key) || [] : []; const classConstructor = (0, object_helper_1.getClass)(target); if (targets.indexOf(classConstructor) === -1) { targets.push(classConstructor); PROPERTIES.set(key, targets); } Reflect.defineMetadata(key, value, (0, object_helper_1.getClass)(target), propertyKey); } static getParamTypes(targetPrototype, propertyKey) { return get(DESIGN_PARAM_TYPES, targetPrototype, propertyKey) || []; } static getOwnParamTypes(target, propertyKey) { return get(DESIGN_PARAM_TYPES, target, propertyKey, true) || []; } } exports.default = Metadata; Metadata.getTargetsFromPropertyKey = (metadataKey) => PROPERTIES.has(metadataKey) ? PROPERTIES.get(metadataKey) || [] : []; const DESIGN_PARAM_TYPES = 'design:paramtypes'; const DESIGN_TYPE = 'design:type'; const DESIGN_RETURN_TYPE = 'design:returntype'; const PROPERTIES = new Map();