MCPcopy Create free account
hub / github.com/EricSimons/ionic-course / createInjector

Function createInjector

code/songhop/www/lib/angular/angular.js:3960–4192  ·  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

3958
3959
3960function createInjector(modulesToLoad, strictDi) {
3961 strictDi = (strictDi === true);
3962 var INSTANTIATING = {},
3963 providerSuffix = 'Provider',
3964 path = [],
3965 loadedModules = new HashMap([], true),
3966 providerCache = {
3967 $provide: {
3968 provider: supportObject(provider),
3969 factory: supportObject(factory),
3970 service: supportObject(service),
3971 value: supportObject(value),
3972 constant: supportObject(constant),
3973 decorator: decorator
3974 }
3975 },
3976 providerInjector = (providerCache.$injector =
3977 createInternalInjector(providerCache, function(serviceName, caller) {
3978 if (angular.isString(caller)) {
3979 path.push(caller);
3980 }
3981 throw $injectorMinErr('unpr', "Unknown provider: {0}", path.join(' <- '));
3982 })),
3983 instanceCache = {},
3984 instanceInjector = (instanceCache.$injector =
3985 createInternalInjector(instanceCache, function(serviceName, caller) {
3986 var provider = providerInjector.get(serviceName + providerSuffix, caller);
3987 return instanceInjector.invoke(provider.$get, provider, undefined, serviceName);
3988 }));
3989
3990
3991 forEach(loadModules(modulesToLoad), function(fn) { instanceInjector.invoke(fn || noop); });
3992
3993 return instanceInjector;
3994
3995 ////////////////////////////////////
3996 // $provider
3997 ////////////////////////////////////
3998
3999 function supportObject(delegate) {
4000 return function(key, value) {
4001 if (isObject(key)) {
4002 forEach(key, reverseParams(delegate));
4003 } else {
4004 return delegate(key, value);
4005 }
4006 };
4007 }
4008
4009 function provider(name, provider_) {
4010 assertNotHasOwnProperty(name, 'service');
4011 if (isFunction(provider_) || isArray(provider_)) {
4012 provider_ = providerInjector.instantiate(provider_);
4013 }
4014 if (!provider_.$get) {
4015 throw $injectorMinErr('pget', "Provider '{0}' must define $get factory method.", name);
4016 }
4017 return providerCache[name + providerSuffix] = provider_;

Callers 1

doBootstrapFunction · 0.70

Calls 5

getMethod · 0.80
supportObjectFunction · 0.70
createInternalInjectorFunction · 0.70
forEachFunction · 0.70
loadModulesFunction · 0.70

Tested by

no test coverage detected