ts-ioc-container
Version:
Typescript IoC container
25 lines (24 loc) • 832 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProxyInjector = void 0;
function getProp(target, key) {
// @ts-ignore
return target[key];
}
class ProxyInjector {
resolve(container, 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
? container.resolveMany(prop)
: container.resolveOne(prop);
},
});
return new Target(proxy);
}
}
exports.ProxyInjector = ProxyInjector;