MCPcopy Index your code
hub / github.com/angular-ui/ui-router / createInjector

Function createInjector

test/angular/1.6/angular.js:4877–5146  ·  view source on GitHub ↗

* @ngdoc method * @name $provide#decorator * @description * * Register a **decorator function** with the auto.$injector $injector. A decorator function * intercepts the creation of a service, allowing it to override or modify the behavior of the * service. The return value of the decor

(modulesToLoad, strictDi)

Source from the content-addressed store, hash-verified

4875
4876
4877function createInjector(modulesToLoad, strictDi) {
4878 strictDi = (strictDi === true);
4879 var INSTANTIATING = {},
4880 providerSuffix = 'Provider',
4881 path = [],
4882 loadedModules = new NgMap(),
4883 providerCache = {
4884 $provide: {
4885 provider: supportObject(provider),
4886 factory: supportObject(factory),
4887 service: supportObject(service),
4888 value: supportObject(value),
4889 constant: supportObject(constant),
4890 decorator: decorator
4891 }
4892 },
4893 providerInjector = (providerCache.$injector =
4894 createInternalInjector(providerCache, function(serviceName, caller) {
4895 if (angular.isString(caller)) {
4896 path.push(caller);
4897 }
4898 throw $injectorMinErr('unpr', 'Unknown provider: {0}', path.join(' <- '));
4899 })),
4900 instanceCache = {},
4901 protoInstanceInjector =
4902 createInternalInjector(instanceCache, function(serviceName, caller) {
4903 var provider = providerInjector.get(serviceName + providerSuffix, caller);
4904 return instanceInjector.invoke(
4905 provider.$get, provider, undefined, serviceName);
4906 }),
4907 instanceInjector = protoInstanceInjector;
4908
4909 providerCache['$injector' + providerSuffix] = { $get: valueFn(protoInstanceInjector) };
4910 instanceInjector.modules = providerInjector.modules = createMap();
4911 var runBlocks = loadModules(modulesToLoad);
4912 instanceInjector = protoInstanceInjector.get('$injector');
4913 instanceInjector.strictDi = strictDi;
4914 forEach(runBlocks, function(fn) { if (fn) instanceInjector.invoke(fn); });
4915
4916 instanceInjector.loadNewModules = function(mods) {
4917 forEach(loadModules(mods), function(fn) { if (fn) instanceInjector.invoke(fn); });
4918 };
4919
4920
4921 return instanceInjector;
4922
4923 ////////////////////////////////////
4924 // $provider
4925 ////////////////////////////////////
4926
4927 function supportObject(delegate) {
4928 return function(key, value) {
4929 if (isObject(key)) {
4930 forEach(key, reverseParams(delegate));
4931 } else {
4932 return delegate(key, value);
4933 }
4934 };

Callers 1

doBootstrapFunction · 0.70

Calls 6

supportObjectFunction · 0.70
createInternalInjectorFunction · 0.70
valueFnFunction · 0.70
createMapFunction · 0.70
loadModulesFunction · 0.70
forEachFunction · 0.70

Tested by

no test coverage detected