From e7ac65bb393b818399245f68fb0b562740f10ade Mon Sep 17 00:00:00 2001 From: Rodney Ebanks Date: Wed, 11 Mar 2015 16:26:51 -0500 Subject: [PATCH 1/5] Add provider.$decorator to angular.Module Allow for decorators to be added prior to the angular.config process. Use case: I am working on a project using ui.router and would like to modify the $stateProvide.state service and would like to ensure that my modification will always be applied prior to any angular.config blocks which could contain $stateProvide.state requests. This would also allow any decorators to be clearly delineated in your code and not lost in a config block. --- src/loader.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/loader.js b/src/loader.js index 15ab4bcaa172..3b6b504cfa85 100644 --- a/src/loader.js +++ b/src/loader.js @@ -192,6 +192,18 @@ function setupModuleLoader(window) { * See {@link auto.$provide#constant $provide.constant()}. */ constant: invokeLater('$provide', 'constant', 'unshift'), + + /** + * @ngdoc method + * @name angular.Module#decorator + * @module ng + * @param {string} name service name + * @param {Function} providerType Construction function for creating new instance of the + * service. + * @description + * See {@link auto.$provide#decorator $provide.decorator()}. + */ + decorator: invokeLater('$provide', 'decorator'), /** * @ngdoc method From 87af0dbcbbbf35a02d4f290496b3eac42861c263 Mon Sep 17 00:00:00 2001 From: Rodney Ebanks Date: Wed, 11 Mar 2015 20:57:34 -0500 Subject: [PATCH 2/5] Correct style issue --- src/loader.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/loader.js b/src/loader.js index 3b6b504cfa85..5bccf3340bc6 100644 --- a/src/loader.js +++ b/src/loader.js @@ -192,7 +192,7 @@ function setupModuleLoader(window) { * See {@link auto.$provide#constant $provide.constant()}. */ constant: invokeLater('$provide', 'constant', 'unshift'), - + /** * @ngdoc method * @name angular.Module#decorator From a07c1b89eea5f5c5ff48182ec9742cf3043b0007 Mon Sep 17 00:00:00 2001 From: Rodney Ebanks Date: Wed, 11 Mar 2015 21:08:31 -0500 Subject: [PATCH 3/5] Add test for provider.$decorator to angular.Module --- test/loaderSpec.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/loaderSpec.js b/test/loaderSpec.js index 6faa4db91940..0d446749e585 100644 --- a/test/loaderSpec.js +++ b/test/loaderSpec.js @@ -41,10 +41,12 @@ describe('module loader', function() { controller('ctrl', 'ccc'). config('init2'). constant('abc', 123). + decorator('dk', 'dv'). run('runBlock')).toBe(myModule); expect(myModule.requires).toEqual(['other']); expect(myModule._invokeQueue).toEqual([ + ['$provide', 'decorator', ['dk', 'dv']], ['$provide', 'constant', ['abc', 123]], ['$provide', 'provider', ['sk', 'sv']], ['$provide', 'factory', ['fk', 'fv']], From c70d04f6a7518f695f177f22471b1c0bd8420021 Mon Sep 17 00:00:00 2001 From: Rodney Ebanks Date: Wed, 11 Mar 2015 21:31:37 -0500 Subject: [PATCH 4/5] Test addition fix --- test/loaderSpec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/loaderSpec.js b/test/loaderSpec.js index 0d446749e585..38449ad4edb0 100644 --- a/test/loaderSpec.js +++ b/test/loaderSpec.js @@ -32,6 +32,7 @@ describe('module loader', function() { var myModule = window.angular.module('my', ['other'], 'config'); expect(myModule. + decorator('dk', 'dv'). provider('sk', 'sv'). factory('fk', 'fv'). service('a', 'aa'). @@ -41,7 +42,6 @@ describe('module loader', function() { controller('ctrl', 'ccc'). config('init2'). constant('abc', 123). - decorator('dk', 'dv'). run('runBlock')).toBe(myModule); expect(myModule.requires).toEqual(['other']); From bd9f2f34c21b6366baa6d3058e3775f5243f658a Mon Sep 17 00:00:00 2001 From: Rodney Ebanks Date: Wed, 11 Mar 2015 21:43:10 -0500 Subject: [PATCH 5/5] Test fix 2 --- test/loaderSpec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/loaderSpec.js b/test/loaderSpec.js index 38449ad4edb0..1c4d0bb45d84 100644 --- a/test/loaderSpec.js +++ b/test/loaderSpec.js @@ -46,8 +46,8 @@ describe('module loader', function() { expect(myModule.requires).toEqual(['other']); expect(myModule._invokeQueue).toEqual([ - ['$provide', 'decorator', ['dk', 'dv']], ['$provide', 'constant', ['abc', 123]], + ['$provide', 'decorator', ['dk', 'dv']], ['$provide', 'provider', ['sk', 'sv']], ['$provide', 'factory', ['fk', 'fv']], ['$provide', 'service', ['a', 'aa']],