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

Function createInjector

test/angular/1.5/angular.js:4542–4800  ·  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

4540
4541
4542function createInjector(modulesToLoad, strictDi) {
4543 strictDi = (strictDi === true);
4544 var INSTANTIATING = {},
4545 providerSuffix = 'Provider',
4546 path = [],
4547 loadedModules = new HashMap([], true),
4548 providerCache = {
4549 $provide: {
4550 provider: supportObject(provider),
4551 factory: supportObject(factory),
4552 service: supportObject(service),
4553 value: supportObject(value),
4554 constant: supportObject(constant),
4555 decorator: decorator
4556 }
4557 },
4558 providerInjector = (providerCache.$injector =
4559 createInternalInjector(providerCache, function(serviceName, caller) {
4560 if (angular.isString(caller)) {
4561 path.push(caller);
4562 }
4563 throw $injectorMinErr('unpr', 'Unknown provider: {0}', path.join(' <- '));
4564 })),
4565 instanceCache = {},
4566 protoInstanceInjector =
4567 createInternalInjector(instanceCache, function(serviceName, caller) {
4568 var provider = providerInjector.get(serviceName + providerSuffix, caller);
4569 return instanceInjector.invoke(
4570 provider.$get, provider, undefined, serviceName);
4571 }),
4572 instanceInjector = protoInstanceInjector;
4573
4574 providerCache['$injector' + providerSuffix] = { $get: valueFn(protoInstanceInjector) };
4575 var runBlocks = loadModules(modulesToLoad);
4576 instanceInjector = protoInstanceInjector.get('$injector');
4577 instanceInjector.strictDi = strictDi;
4578 forEach(runBlocks, function(fn) { if (fn) instanceInjector.invoke(fn); });
4579
4580 return instanceInjector;
4581
4582 ////////////////////////////////////
4583 // $provider
4584 ////////////////////////////////////
4585
4586 function supportObject(delegate) {
4587 return function(key, value) {
4588 if (isObject(key)) {
4589 forEach(key, reverseParams(delegate));
4590 } else {
4591 return delegate(key, value);
4592 }
4593 };
4594 }
4595
4596 function provider(name, provider_) {
4597 assertNotHasOwnProperty(name, 'service');
4598 if (isFunction(provider_) || isArray(provider_)) {
4599 provider_ = providerInjector.instantiate(provider_);

Callers 1

doBootstrapFunction · 0.70

Calls 5

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

Tested by

no test coverage detected