MCPcopy Create free account
hub / github.com/cafebazaar/blacksmith / createInjector

Function createInjector

web/static/bower_components/angular/angular.js:4268–4501  ·  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, strictDi)

Source from the content-addressed store, hash-verified

4266
4267
4268function createInjector(modulesToLoad, strictDi) {
4269 strictDi = (strictDi === true);
4270 var INSTANTIATING = {},
4271 providerSuffix = 'Provider',
4272 path = [],
4273 loadedModules = new HashMap([], true),
4274 providerCache = {
4275 $provide: {
4276 provider: supportObject(provider),
4277 factory: supportObject(factory),
4278 service: supportObject(service),
4279 value: supportObject(value),
4280 constant: supportObject(constant),
4281 decorator: decorator
4282 }
4283 },
4284 providerInjector = (providerCache.$injector =
4285 createInternalInjector(providerCache, function(serviceName, caller) {
4286 if (angular.isString(caller)) {
4287 path.push(caller);
4288 }
4289 throw $injectorMinErr('unpr', "Unknown provider: {0}", path.join(' <- '));
4290 })),
4291 instanceCache = {},
4292 instanceInjector = (instanceCache.$injector =
4293 createInternalInjector(instanceCache, function(serviceName, caller) {
4294 var provider = providerInjector.get(serviceName + providerSuffix, caller);
4295 return instanceInjector.invoke(provider.$get, provider, undefined, serviceName);
4296 }));
4297
4298
4299 forEach(loadModules(modulesToLoad), function(fn) { if (fn) instanceInjector.invoke(fn); });
4300
4301 return instanceInjector;
4302
4303 ////////////////////////////////////
4304 // $provider
4305 ////////////////////////////////////
4306
4307 function supportObject(delegate) {
4308 return function(key, value) {
4309 if (isObject(key)) {
4310 forEach(key, reverseParams(delegate));
4311 } else {
4312 return delegate(key, value);
4313 }
4314 };
4315 }
4316
4317 function provider(name, provider_) {
4318 assertNotHasOwnProperty(name, 'service');
4319 if (isFunction(provider_) || isArray(provider_)) {
4320 provider_ = providerInjector.instantiate(provider_);
4321 }
4322 if (!provider_.$get) {
4323 throw $injectorMinErr('pget', "Provider '{0}' must define $get factory method.", name);
4324 }
4325 return providerCache[name + providerSuffix] = provider_;

Callers 1

doBootstrapFunction · 0.85

Calls 5

supportObjectFunction · 0.85
createInternalInjectorFunction · 0.85
forEachFunction · 0.85
loadModulesFunction · 0.85
getMethod · 0.80

Tested by

no test coverage detected