@nova-ts/context
Version:
A TypeScript library for Dependency Injection
51 lines (49 loc) • 1.46 kB
JavaScript
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