ts-ioc-container
Version:
Typescript IoC container
18 lines (17 loc) • 1.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.asKey = exports.asAlias = exports.register = exports.getTransformers = exports.scope = void 0;
const IContainer_1 = require("../container/IContainer");
const metadata_1 = require("../metadata");
const ProviderPipe_1 = require("../provider/ProviderPipe");
const scope = (...predicates) => (r) => r.when(...predicates);
exports.scope = scope;
const METADATA_KEY = 'registration';
const getTransformers = (Target) => (0, metadata_1.getMetadata)(Target, METADATA_KEY) ?? [];
exports.getTransformers = getTransformers;
const register = (...mappers) => (0, metadata_1.setMetadata)(METADATA_KEY, mappers.map((m) => ((0, ProviderPipe_1.isProviderPipe)(m) ? (r) => m.mapRegistration(r) : m)));
exports.register = register;
const asAlias = (target) => (r) => r.bindToAlias((0, IContainer_1.isDependencyKey)(target) ? target : target.key);
exports.asAlias = asAlias;
const asKey = (key) => (r) => r.bindToKey(key);
exports.asKey = asKey;