MCPcopy Create free account
hub / github.com/bclinkinbeard/angular / createInjector

Function createInjector

test/fixtures/foo.js:3785–3992  ·  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)

Source from the content-addressed store, hash-verified

3783
3784
3785function createInjector(modulesToLoad) {
3786 var INSTANTIATING = {},
3787 providerSuffix = 'Provider',
3788 path = [],
3789 loadedModules = new HashMap([], true),
3790 providerCache = {
3791 $provide: {
3792 provider: supportObject(provider),
3793 factory: supportObject(factory),
3794 service: supportObject(service),
3795 value: supportObject(value),
3796 constant: supportObject(constant),
3797 decorator: decorator
3798 }
3799 },
3800 providerInjector = (providerCache.$injector =
3801 createInternalInjector(providerCache, function() {
3802 throw $injectorMinErr('unpr', "Unknown provider: {0}", path.join(' <- '));
3803 })),
3804 instanceCache = {},
3805 instanceInjector = (instanceCache.$injector =
3806 createInternalInjector(instanceCache, function(servicename) {
3807 var provider = providerInjector.get(servicename + providerSuffix);
3808 return instanceInjector.invoke(provider.$get, provider);
3809 }));
3810
3811
3812 forEach(loadModules(modulesToLoad), function(fn) { instanceInjector.invoke(fn || noop); });
3813
3814 return instanceInjector;
3815
3816 ////////////////////////////////////
3817 // $provider
3818 ////////////////////////////////////
3819
3820 function supportObject(delegate) {
3821 return function(key, value) {
3822 if (isObject(key)) {
3823 forEach(key, reverseParams(delegate));
3824 } else {
3825 return delegate(key, value);
3826 }
3827 };
3828 }
3829
3830 function provider(name, provider_) {
3831 assertNotHasOwnProperty(name, 'service');
3832 if (isFunction(provider_) || isArray(provider_)) {
3833 provider_ = providerInjector.instantiate(provider_);
3834 }
3835 if (!provider_.$get) {
3836 throw $injectorMinErr('pget', "Provider '{0}' must define $get factory method.", name);
3837 }
3838 return providerCache[name + providerSuffix] = provider_;
3839 }
3840
3841 function factory(name, factoryFn) { return provider(name, { $get: factoryFn }); }
3842

Callers 1

doBootstrapFunction · 0.85

Calls 4

supportObjectFunction · 0.85
createInternalInjectorFunction · 0.85
forEachFunction · 0.85
loadModulesFunction · 0.85

Tested by

no test coverage detected