(function() { 'use strict'; angular.module('shared') .provider('$advice', [function() { var middlewares = {}; var provider = { register: registerMiddleware, $get: ['$injector', factoryFn] }; return provider; function registerMiddleware(name, factoryFn) { middlewares[name] = factoryFn; return provider; } function factoryFn($injector) { return function(name, locals) { var middlewareFactory = angular.isString(name) ? middlewares[name] : name; return $injector.invoke(middlewareFactory, null, locals); } } }]) })();