MCPcopy
hub / github.com/angular-ui/ui-router / createInjector

Function createInjector

test/angular/1.2/angular.js:3786–3993  ·  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

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

Callers 1

doBootstrapFunction · 0.70

Calls 4

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

Tested by

no test coverage detected