UNPKG

@zuu/owl

Version:

Zuu's Experimental GraphQL Implementation

51 lines 1.66 kB
"use strict"; 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