UNPKG

inversify

Version:

A powerful and lightweight inversion of control container for JavaScript and Node.js apps powered by TypeScript.

54 lines (53 loc) 2.17 kB
import { getServiceIdentifierAsString } from '../utils/serialization'; import * as ERROR_MSGS from '../constants/error_msgs'; import { BindingTypeEnum } from '../constants/literal_types'; import { FactoryType } from './factory_type'; export var multiBindToService = function (container) { return function (service) { return function () { var types = []; for (var _i = 0; _i < arguments.length; _i++) { types[_i] = arguments[_i]; } return types.forEach(function (t) { return container.bind(t).toService(service); }); }; }; }; export var ensureFullyBound = function (binding) { var boundValue = null; switch (binding.type) { case BindingTypeEnum.ConstantValue: case BindingTypeEnum.Function: boundValue = binding.cache; break; case BindingTypeEnum.Constructor: case BindingTypeEnum.Instance: boundValue = binding.implementationType; break; case BindingTypeEnum.DynamicValue: boundValue = binding.dynamicValue; break; case BindingTypeEnum.Provider: boundValue = binding.provider; break; case BindingTypeEnum.Factory: boundValue = binding.factory; break; } if (boundValue === null) { var serviceIdentifierAsString = getServiceIdentifierAsString(binding.serviceIdentifier); throw new Error(ERROR_MSGS.INVALID_BINDING_TYPE + " " + serviceIdentifierAsString); } }; export var getFactoryDetails = function (binding) { switch (binding.type) { case BindingTypeEnum.Factory: return { factory: binding.factory, factoryType: FactoryType.Factory }; case BindingTypeEnum.Provider: return { factory: binding.provider, factoryType: FactoryType.Provider }; case BindingTypeEnum.DynamicValue: return { factory: binding.dynamicValue, factoryType: FactoryType.DynamicValue }; default: throw new Error("Unexpected factory type " + binding.type); } };