MCPcopy
hub / github.com/Postcatlab/postcat / createInjector

Function createInjector

src/workbench/browser/src/ng1/lib/angular/angular.js:5068–5346  ·  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 r

(modulesToLoad, strictDi)

Source from the content-addressed store, hash-verified

5066
5067
5068 function createInjector(modulesToLoad, strictDi) {
5069 strictDi = (strictDi === true);
5070 var INSTANTIATING = {},
5071 providerSuffix = 'Provider',
5072 path = [],
5073 loadedModules = new NgMap(),
5074 providerCache = {
5075 $provide: {
5076 provider: supportObject(provider),
5077 factory: supportObject(factory),
5078 service: supportObject(service),
5079 value: supportObject(value),
5080 constant: supportObject(constant),
5081 decorator: decorator
5082 }
5083 },
5084 providerInjector = (providerCache.$injector =
5085 createInternalInjector(providerCache, function (serviceName, caller) {
5086 if (angular.isString(caller)) {
5087 path.push(caller);
5088 }
5089 throw $injectorMinErr('unpr', 'Unknown provider: {0}', path.join(' <- '));
5090 })),
5091 instanceCache = {},
5092 protoInstanceInjector =
5093 createInternalInjector(instanceCache, function (serviceName, caller) {
5094 var provider = providerInjector.get(serviceName + providerSuffix, caller);
5095 return instanceInjector.invoke(
5096 provider.$get, provider, undefined, serviceName);
5097 }),
5098 instanceInjector = protoInstanceInjector;
5099
5100 providerCache['$injector' + providerSuffix] = {
5101 $get: valueFn(protoInstanceInjector)
5102 };
5103 instanceInjector.modules = providerInjector.modules = createMap();
5104 var runBlocks = loadModules(modulesToLoad);
5105 instanceInjector = protoInstanceInjector.get('$injector');
5106 instanceInjector.strictDi = strictDi;
5107 forEach(runBlocks, function (fn) {
5108 if (fn) instanceInjector.invoke(fn);
5109 });
5110
5111 instanceInjector.loadNewModules = function (mods) {
5112 forEach(loadModules(mods), function (fn) {
5113 if (fn) instanceInjector.invoke(fn);
5114 });
5115 };
5116
5117
5118 return instanceInjector;
5119
5120 ////////////////////////////////////
5121 // $provider
5122 ////////////////////////////////////
5123
5124 function supportObject(delegate) {
5125 return function (key, value) {

Callers 1

doBootstrapFunction · 0.85

Calls 7

supportObjectFunction · 0.85
createInternalInjectorFunction · 0.85
valueFnFunction · 0.85
createMapFunction · 0.85
loadModulesFunction · 0.85
forEachFunction · 0.85
getMethod · 0.45

Tested by

no test coverage detected