UNPKG

ts-ioc-container

Version:

Fast, lightweight TypeScript dependency injection container with a clean API, scoped lifecycles, decorators, tokens, hooks, lazy injection, customizable providers, and no global container objects.

22 lines (21 loc) 1.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getClassTags = exports.addClassTag = exports.getClassLabels = exports.addClassLabel = exports.addClassMeta = void 0; exports.getClassMeta = getClassMeta; const basic_1 = require("../utils/basic"); const addClassMeta = (key, mapFn) => (target) => { const value = Reflect.getOwnMetadata(key, target); Reflect.defineMetadata(key, mapFn(value), target); }; exports.addClassMeta = addClassMeta; function getClassMeta(target, key) { return Reflect.getOwnMetadata(key, (0, basic_1.resolveConstructor)(target)); } const addClassLabel = (key, label) => (0, exports.addClassMeta)('label', (prev = new Map()) => prev.set(key, label)); exports.addClassLabel = addClassLabel; const getClassLabels = (target) => getClassMeta(target, 'label') ?? new Map(); exports.getClassLabels = getClassLabels; const addClassTag = (tag) => (0, exports.addClassMeta)('tag', (prev = new Set()) => prev.add(tag)); exports.addClassTag = addClassTag; const getClassTags = (target) => getClassMeta(target, 'tag') ?? new Set(); exports.getClassTags = getClassTags;