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.

13 lines (12 loc) 712 B
import { resolveConstructor } from '../utils/basic'; export const addClassMeta = (key, mapFn) => (target) => { const value = Reflect.getOwnMetadata(key, target); Reflect.defineMetadata(key, mapFn(value), target); }; export function getClassMeta(target, key) { return Reflect.getOwnMetadata(key, resolveConstructor(target)); } export const addClassLabel = (key, label) => addClassMeta('label', (prev = new Map()) => prev.set(key, label)); export const getClassLabels = (target) => getClassMeta(target, 'label') ?? new Map(); export const addClassTag = (tag) => addClassMeta('tag', (prev = new Set()) => prev.add(tag)); export const getClassTags = (target) => getClassMeta(target, 'tag') ?? new Set();