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.

35 lines (34 loc) 1.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getParamTags = exports.addParamTag = exports.getParamLabels = exports.addParamLabel = exports.getParamMeta = exports.addParamMeta = void 0; const basic_1 = require("../utils/basic"); const addParamMeta = (key, mapFn) => (target, _, parameterIndex) => { const metadata = Reflect.getOwnMetadata(key, target) ?? []; metadata[parameterIndex] = mapFn(metadata[parameterIndex]); Reflect.defineMetadata(key, metadata, target); }; exports.addParamMeta = addParamMeta; const getParamMeta = (key, target) => { return Reflect.getOwnMetadata(key, (0, basic_1.resolveConstructor)(target)) ?? []; }; exports.getParamMeta = getParamMeta; const addParamLabel = (key, label) => (0, exports.addParamMeta)('label', (prev) => { const map = prev ?? new Map(); return map.set(key, label); }); exports.addParamLabel = addParamLabel; const getParamLabels = (target, parameterIndex) => { const all = (0, exports.getParamMeta)('label', target); return all[parameterIndex] ?? new Map(); }; exports.getParamLabels = getParamLabels; const addParamTag = (tag) => (0, exports.addParamMeta)('tag', (prev) => { const set = prev ?? new Set(); return set.add(tag); }); exports.addParamTag = addParamTag; const getParamTags = (target, parameterIndex) => { const all = (0, exports.getParamMeta)('tag', target); return all[parameterIndex] ?? new Set(); }; exports.getParamTags = getParamTags;