MCPcopy
hub / github.com/angular-ui/ui-router / createInjector

Function createInjector

test/angular/1.3/angular.js:4010–4242  ·  view source on GitHub ↗

* @ngdoc method * @name $provide#decorator * @description * * Register a **service decorator** with the auto.$injector $injector. A service decorator * intercepts the creation of a service, allowing it to override or modify the behaviour of the * service. The object returned by the dec

(modulesToLoad, strictDi)

Source from the content-addressed store, hash-verified

4008
4009
4010function createInjector(modulesToLoad, strictDi) {
4011 strictDi = (strictDi === true);
4012 var INSTANTIATING = {},
4013 providerSuffix = 'Provider',
4014 path = [],
4015 loadedModules = new HashMap([], true),
4016 providerCache = {
4017 $provide: {
4018 provider: supportObject(provider),
4019 factory: supportObject(factory),
4020 service: supportObject(service),
4021 value: supportObject(value),
4022 constant: supportObject(constant),
4023 decorator: decorator
4024 }
4025 },
4026 providerInjector = (providerCache.$injector =
4027 createInternalInjector(providerCache, function(serviceName, caller) {
4028 if (angular.isString(caller)) {
4029 path.push(caller);
4030 }
4031 throw $injectorMinErr('unpr', "Unknown provider: {0}", path.join(' <- '));
4032 })),
4033 instanceCache = {},
4034 instanceInjector = (instanceCache.$injector =
4035 createInternalInjector(instanceCache, function(serviceName, caller) {
4036 var provider = providerInjector.get(serviceName + providerSuffix, caller);
4037 return instanceInjector.invoke(provider.$get, provider, undefined, serviceName);
4038 }));
4039
4040
4041 forEach(loadModules(modulesToLoad), function(fn) { instanceInjector.invoke(fn || noop); });
4042
4043 return instanceInjector;
4044
4045 ////////////////////////////////////
4046 // $provider
4047 ////////////////////////////////////
4048
4049 function supportObject(delegate) {
4050 return function(key, value) {
4051 if (isObject(key)) {
4052 forEach(key, reverseParams(delegate));
4053 } else {
4054 return delegate(key, value);
4055 }
4056 };
4057 }
4058
4059 function provider(name, provider_) {
4060 assertNotHasOwnProperty(name, 'service');
4061 if (isFunction(provider_) || isArray(provider_)) {
4062 provider_ = providerInjector.instantiate(provider_);
4063 }
4064 if (!provider_.$get) {
4065 throw $injectorMinErr('pget', "Provider '{0}' must define $get factory method.", name);
4066 }
4067 return providerCache[name + providerSuffix] = provider_;

Callers 1

doBootstrapFunction · 0.70

Calls 4

supportObjectFunction · 0.70
createInternalInjectorFunction · 0.70
forEachFunction · 0.70
loadModulesFunction · 0.70

Tested by

no test coverage detected