UNPKG

ts-ioc-container

Version:
59 lines (58 loc) 1.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProviderDecorator = exports.lazy = exports.scopeAccess = exports.resolveByArgs = exports.argsFn = exports.args = void 0; const utils_1 = require("../utils"); const ProviderPipe_1 = require("./ProviderPipe"); const args = (...extraArgs) => (0, ProviderPipe_1.registerPipe)((p) => p.setArgs(() => extraArgs)); exports.args = args; const argsFn = (fn) => (0, ProviderPipe_1.registerPipe)((p) => p.setArgs(fn)); exports.argsFn = argsFn; const resolveByArgs = (s, ...deps) => deps.map((d) => { if (utils_1.Is.injectBuilder(d)) { return d.resolve(s); } if (utils_1.Is.constructor(d)) { return s.resolveClass(d); } return d; }); exports.resolveByArgs = resolveByArgs; const scopeAccess = (predicate) => (0, ProviderPipe_1.registerPipe)((p) => p.setAccessPredicate(predicate)); exports.scopeAccess = scopeAccess; const lazy = () => (0, ProviderPipe_1.registerPipe)((p) => p.lazy()); exports.lazy = lazy; class ProviderDecorator { decorated; constructor(decorated) { this.decorated = decorated; } setAccessPredicate(predicate) { this.decorated.setAccessPredicate(predicate); return this; } hasAccess(options) { return this.decorated.hasAccess(options); } resolve(container, options) { return this.decorated.resolve(container, options); } pipe(...mappers) { const fns = mappers.map((m) => { if ((0, ProviderPipe_1.isProviderPipe)(m)) { return m.mapProvider.bind(m); } return m; }); this.decorated = this.decorated.pipe(...fns); return this; } setArgs(argsFn) { this.decorated.setArgs(argsFn); return this; } lazy() { this.decorated.lazy(); return this; } } exports.ProviderDecorator = ProviderDecorator;