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.

26 lines (25 loc) 1.02 kB
import { resolveConstructor } from '../utils/basic'; export const addParamMeta = (key, mapFn) => (target, _, parameterIndex) => { const metadata = Reflect.getOwnMetadata(key, target) ?? []; metadata[parameterIndex] = mapFn(metadata[parameterIndex]); Reflect.defineMetadata(key, metadata, target); }; export const getParamMeta = (key, target) => { return Reflect.getOwnMetadata(key, resolveConstructor(target)) ?? []; }; export const addParamLabel = (key, label) => addParamMeta('label', (prev) => { const map = prev ?? new Map(); return map.set(key, label); }); export const getParamLabels = (target, parameterIndex) => { const all = getParamMeta('label', target); return all[parameterIndex] ?? new Map(); }; export const addParamTag = (tag) => addParamMeta('tag', (prev) => { const set = prev ?? new Set(); return set.add(tag); }); export const getParamTags = (target, parameterIndex) => { const all = getParamMeta('tag', target); return all[parameterIndex] ?? new Set(); };