UNPKG

ts-ioc-container

Version:
26 lines (25 loc) 910 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProxyInjector = void 0; const IInjector_1 = require("./IInjector"); function getProp(target, key) { // @ts-ignore return target[key]; } class ProxyInjector extends IInjector_1.Injector { createInstance(scope, Target, { args: deps = [] } = {}) { const args = deps.reduce((acc, it) => ({ ...acc, ...it }), {}); const proxy = new Proxy({}, { get(target, prop) { // eslint-disable-next-line no-prototype-builtins return args.hasOwnProperty(prop) ? getProp(args, prop) : prop.toString().search(/array/gi) >= 0 ? scope.resolveMany(prop) : scope.resolveOne(prop); }, }); return new Target(proxy); } } exports.ProxyInjector = ProxyInjector;