@zuu/owl
Version:
Zuu's Experimental GraphQL Implementation
51 lines • 1.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
class DefaultContainer {
constructor() {
this.instances = [];
}
get(someClass) {
let instance = this.instances.find(it => it.type === someClass);
if (!instance) {
instance = { type: someClass, object: new someClass() };
this.instances.push(instance);
}
return instance.object;
}
}
class IOCContainer {
static restoreDefault() {
this.userContainer = undefined;
this.userContainerOptions = {};
}
static useContainer(iocContainer, options = {}) {
this.userContainer = iocContainer;
this.userContainerOptions = options;
}
static getInstance(someClass) {
if (this.userContainer) {
try {
const instance = this.userContainer.get(someClass);
if (instance) {
return instance;
}
if (!this.userContainerOptions || !this.userContainerOptions.fallback) {
return instance;
}
}
catch (error) {
if (!this.userContainerOptions || !this.userContainerOptions.fallbackOnErrors) {
throw error;
}
}
}
return this.defaultContainer.get(someClass);
}
}
IOCContainer.defaultContainer = new DefaultContainer();
exports.IOCContainer = IOCContainer;
function useContainer(iocContainer, options = {}) {
IOCContainer.useContainer(iocContainer, options);
}
exports.useContainer = useContainer;
//# sourceMappingURL=container.js.map