/** * Created by nhu on 15.06.15. */ import Intravenous from 'intravenous' import DependencyResolver from './dependencyResolver' class IntravenousDependencyResolver extends DependencyResolver { constructor() { super(); this.container = Intravenous.create(); this.container.facilities.factory.suffixes = ['!']; } initialize(injectionModules){ return super.initialize(injectionModules).then(() => { return new Promise((resolve) => { if(injectionModules != null) { if(Array.isArray(injectionModules)) { this.modules.forEach(this._initializeModules.bind(this)); this.modules.forEach(this._loadModule.bind(this)); } else { this._initializeModules(injectionModules); this._loadModule(injectionModules); } } resolve(this); }); }); } get(type){ return this.container.get(type); } _initializeModules (module){ module.initialize(); } _loadModule (module){ let bindings = module.getBindings(); bindings.forEach(this._registerBinding.bind(this)); } _registerBinding(binding){ let bindingType = null; switch(binding.bindingType){ case 1: bindingType = null; break; case 2: bindingType = 'singleton'; break; case 3: bindingType = 'unique'; break; case 3: bindingType = 'perRequest'; break; } if(bindingType === null) this.container.register(binding.name,binding.type); else this.container.register(binding.name,binding.type,bindingType); } } export default IntravenousDependencyResolver;