UNPKG

@nova-ts/context

Version:

A TypeScript library for Dependency Injection

51 lines (49 loc) 1.46 kB
import { createHookedProxy } from "./chunk-5SUV5YGE.js"; import { ApplicationContext } from "./chunk-WIUZQ3FQ.js"; // src/Decorators/Component.ts import { injectable } from "inversify"; var scope = { SINGLETON: "singleton", TRANSIENT: "transient" }; function Component(options) { return function(target) { const isInjectable = Reflect.getMetadata("design:paramtypes", target); if (isInjectable) { injectable()(target); } let lifecycle = options?.lifecycleScope || { scope: "singleton" }; let InjectionKey = options?.key || target.name; let proxy = options?.proxy || false; const bindingScope = lifecycle?.scope || "singleton"; if (typeof InjectionKey === "string") { if (bindingScope == "transient") { ApplicationContext.bind(InjectionKey).to(target).inTransientScope(); return; } else { if (proxy === true) { const proxyInstance = createHookedProxy(new target()); ApplicationContext.bind(InjectionKey).toConstantValue(proxyInstance); } else { ApplicationContext.bind(InjectionKey).to(target); } } return; } if (proxy === true) { const proxyInstance = createHookedProxy(target); ApplicationContext.bind(InjectionKey).to(proxyInstance); } else { ApplicationContext.bind(InjectionKey).toSelf(); } }; } export { scope, Component }; //# sourceMappingURL=chunk-B2ADMYMT.js.map