ts-ioc-container
Version:
Typescript IoC container
31 lines (30 loc) • 1.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.hookMetaKey = exports.createHookContext = exports.HookContext = void 0;
const inject_1 = require("../injector/inject");
class HookContext {
instance;
scope;
methodName;
constructor(instance, scope, methodName) {
this.instance = instance;
this.scope = scope;
this.methodName = methodName;
}
resolveArgs(...args) {
return (0, inject_1.resolveArgs)(this.instance.constructor, this.methodName)(this.scope, ...args);
}
invokeMethod({ args = this.resolveArgs() }) {
// @ts-ignore
return this.instance[this.methodName](...args);
}
setProperty(fn) {
// @ts-ignore
this.instance[this.methodName] = fn(this.scope);
}
}
exports.HookContext = HookContext;
const createHookContext = (Target, scope, methodName = 'constructor') => new HookContext(Target, scope, methodName);
exports.createHookContext = createHookContext;
const hookMetaKey = (methodName = 'constructor') => `inject:${methodName}`;
exports.hookMetaKey = hookMetaKey;