From ba14e1139e2af3899fd3586c5ea393b7e55bbee2 Mon Sep 17 00:00:00 2001 From: Alex Pollan Migueles Date: Tue, 15 Aug 2017 16:49:40 +0100 Subject: [PATCH 1/6] Enhance directive restrict rule to allow split statement for directive registration --- rules/directive-restrict.js | 46 +++++++++++++++++++++++++++++++++++++ test/directive-restrict.js | 40 ++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) diff --git a/rules/directive-restrict.js b/rules/directive-restrict.js index 7311e6c6..66268fbd 100644 --- a/rules/directive-restrict.js +++ b/rules/directive-restrict.js @@ -53,6 +53,24 @@ module.exports = { return true; } }); + + if (!directiveNode) { + // Try to find an ancestor function used as definition for one of the found directives + context.getAncestors().some(function(ancestor) { + if (isFunctionDeclaration(ancestor)) { + var fnName = ancestor.id.name; + + var correspondingDirective = foundDirectives.find(function(directive) { + var directiveFnName = getDirectiveFunctionName(directive); + return directiveFnName === fnName; + }); + + directiveNode = correspondingDirective; + return true; + } + }); + } + // The restrict property was not defined inside of a directive. if (!directiveNode) { return; @@ -71,6 +89,34 @@ module.exports = { checkedDirectives.push(directiveNode); } + function isFunctionDeclaration(node) { + return node.type === 'FunctionDeclaration'; + } + + function getDirectiveFunctionName(node) { + var directiveArg = node.arguments[1]; + + // Three ways of creating a directive function: function expression, + // variable name that references a function, and an array with a function + // as the last item + if (utils.isFunctionType(directiveArg)) { + return directiveArg.id.name; + } + + if (utils.isArrayType(directiveArg)) { + directiveArg = directiveArg.elements[directiveArg.elements.length - 1]; + + if (utils.isIdentifierType(directiveArg)) { + return directiveArg.name; + } + return directiveArg.id.name; + } + + if (utils.isIdentifierType(directiveArg)) { + return directiveArg.name; + } + } + return { CallExpression: function(node) { if (utils.isAngularDirectiveDeclaration(node)) { diff --git a/test/directive-restrict.js b/test/directive-restrict.js index 669e5b69..f26d7194 100644 --- a/test/directive-restrict.js +++ b/test/directive-restrict.js @@ -40,6 +40,25 @@ eslintTester.run('directive-restrict', rule, { }, { code: 'app.directive("", function() {return {restrict:"E"}})', options: [{restrict: 'EA'}] + }, { + code: `app.directive("snapContainer", ['$scope', myDirective]); + function myDirective($scope) { + return { + restrict: "A" + } + } + `, + options: [{restrict: 'A'}] + }, { + code: `app.directive("snapContainer", myDirective); + /* @ngInject */ + function myDirective($rootScope) { + return { + restrict: "A" + } + } + `, + options: [{restrict: 'A'}] }, // Allowed with explicit restrict { @@ -87,6 +106,27 @@ eslintTester.run('directive-restrict', rule, { code: 'app.directive("", function() {return {restrict:"E"}})', options: [{restrict: 'A'}], errors: [{message: 'Disallowed directive restriction. It must be one of A in that order'}] + }, { + code: `app.directive("snapContainer", ['$scope', myDirective]); + function myDirective($scope) { + return { + restrict: "A" + } + } + `, + options: [{restrict: 'E'}], + errors: [{message: 'Disallowed directive restriction. It must be one of E in that order'}] + }, { + code: `app.directive("snapContainer", myDirective); + /* @ngInject */ + function myDirective($rootScope) { + return { + restrict: "A" + } + } + `, + options: [{restrict: 'E'}], + errors: [{message: 'Disallowed directive restriction. It must be one of E in that order'}] }, // Disallowed with wrong order { From 145d43c89b5754cf104f1b204b6b70d726dc4786 Mon Sep 17 00:00:00 2001 From: Jed Fox Date: Tue, 15 Aug 2017 12:17:37 -0400 Subject: [PATCH 2/6] Move the rule docs --- docs/{ => rules}/angularelement.md | 0 docs/{ => rules}/avoid-scope-typos.md | 0 docs/{ => rules}/component-limit.md | 0 docs/{ => rules}/component-name.md | 0 docs/{ => rules}/constant-name.md | 0 docs/{ => rules}/controller-as-route.md | 0 docs/{ => rules}/controller-as-vm.md | 0 docs/{ => rules}/controller-as.md | 0 docs/{ => rules}/controller-name.md | 0 docs/{ => rules}/deferred.md | 0 docs/{ => rules}/definedundefined.md | 0 docs/{ => rules}/di-order.md | 0 docs/{ => rules}/di-unused.md | 0 docs/{ => rules}/di.md | 0 docs/{ => rules}/directive-name.md | 0 docs/{ => rules}/directive-restrict.md | 0 docs/{ => rules}/document-service.md | 0 docs/{ => rules}/dumb-inject.md | 0 docs/{ => rules}/empty-controller.md | 0 docs/{ => rules}/factory-name.md | 0 docs/{ => rules}/file-name.md | 0 docs/{ => rules}/filter-name.md | 0 docs/{ => rules}/foreach.md | 0 docs/{ => rules}/function-type.md | 0 docs/{ => rules}/interval-service.md | 0 docs/{ => rules}/json-functions.md | 0 docs/{ => rules}/log.md | 0 docs/{ => rules}/module-dependency-order.md | 0 docs/{ => rules}/module-getter.md | 0 docs/{ => rules}/module-name.md | 0 docs/{ => rules}/module-setter.md | 0 docs/{ => rules}/no-angular-mock.md | 0 docs/{ => rules}/no-controller.md | 0 docs/{ => rules}/no-cookiestore.md | 0 docs/{ => rules}/no-directive-replace.md | 0 docs/{ => rules}/no-http-callback.md | 0 docs/{ => rules}/no-inline-template.md | 0 docs/{ => rules}/no-jquery-angularelement.md | 0 docs/{ => rules}/no-private-call.md | 0 docs/{ => rules}/no-run-logic.md | 0 docs/{ => rules}/no-service-method.md | 0 docs/{ => rules}/no-services.md | 0 docs/{ => rules}/on-destroy.md | 0 docs/{ => rules}/on-watch.md | 0 docs/{ => rules}/one-dependency-per-line.md | 0 docs/{ => rules}/prefer-component.md | 0 docs/{ => rules}/provider-name.md | 0 docs/{ => rules}/rest-service.md | 0 docs/{ => rules}/service-name.md | 0 docs/{ => rules}/timeout-service.md | 0 docs/{ => rules}/typecheck-array.md | 0 docs/{ => rules}/typecheck-date.md | 0 docs/{ => rules}/typecheck-function.md | 0 docs/{ => rules}/typecheck-number.md | 0 docs/{ => rules}/typecheck-object.md | 0 docs/{ => rules}/typecheck-string.md | 0 docs/{ => rules}/value-name.md | 0 docs/{ => rules}/watchers-execution.md | 0 docs/{ => rules}/window-service.md | 0 59 files changed, 0 insertions(+), 0 deletions(-) rename docs/{ => rules}/angularelement.md (100%) rename docs/{ => rules}/avoid-scope-typos.md (100%) rename docs/{ => rules}/component-limit.md (100%) rename docs/{ => rules}/component-name.md (100%) rename docs/{ => rules}/constant-name.md (100%) rename docs/{ => rules}/controller-as-route.md (100%) rename docs/{ => rules}/controller-as-vm.md (100%) rename docs/{ => rules}/controller-as.md (100%) rename docs/{ => rules}/controller-name.md (100%) rename docs/{ => rules}/deferred.md (100%) rename docs/{ => rules}/definedundefined.md (100%) rename docs/{ => rules}/di-order.md (100%) rename docs/{ => rules}/di-unused.md (100%) rename docs/{ => rules}/di.md (100%) rename docs/{ => rules}/directive-name.md (100%) rename docs/{ => rules}/directive-restrict.md (100%) rename docs/{ => rules}/document-service.md (100%) rename docs/{ => rules}/dumb-inject.md (100%) rename docs/{ => rules}/empty-controller.md (100%) rename docs/{ => rules}/factory-name.md (100%) rename docs/{ => rules}/file-name.md (100%) rename docs/{ => rules}/filter-name.md (100%) rename docs/{ => rules}/foreach.md (100%) rename docs/{ => rules}/function-type.md (100%) rename docs/{ => rules}/interval-service.md (100%) rename docs/{ => rules}/json-functions.md (100%) rename docs/{ => rules}/log.md (100%) rename docs/{ => rules}/module-dependency-order.md (100%) rename docs/{ => rules}/module-getter.md (100%) rename docs/{ => rules}/module-name.md (100%) rename docs/{ => rules}/module-setter.md (100%) rename docs/{ => rules}/no-angular-mock.md (100%) rename docs/{ => rules}/no-controller.md (100%) rename docs/{ => rules}/no-cookiestore.md (100%) rename docs/{ => rules}/no-directive-replace.md (100%) rename docs/{ => rules}/no-http-callback.md (100%) rename docs/{ => rules}/no-inline-template.md (100%) rename docs/{ => rules}/no-jquery-angularelement.md (100%) rename docs/{ => rules}/no-private-call.md (100%) rename docs/{ => rules}/no-run-logic.md (100%) rename docs/{ => rules}/no-service-method.md (100%) rename docs/{ => rules}/no-services.md (100%) rename docs/{ => rules}/on-destroy.md (100%) rename docs/{ => rules}/on-watch.md (100%) rename docs/{ => rules}/one-dependency-per-line.md (100%) rename docs/{ => rules}/prefer-component.md (100%) rename docs/{ => rules}/provider-name.md (100%) rename docs/{ => rules}/rest-service.md (100%) rename docs/{ => rules}/service-name.md (100%) rename docs/{ => rules}/timeout-service.md (100%) rename docs/{ => rules}/typecheck-array.md (100%) rename docs/{ => rules}/typecheck-date.md (100%) rename docs/{ => rules}/typecheck-function.md (100%) rename docs/{ => rules}/typecheck-number.md (100%) rename docs/{ => rules}/typecheck-object.md (100%) rename docs/{ => rules}/typecheck-string.md (100%) rename docs/{ => rules}/value-name.md (100%) rename docs/{ => rules}/watchers-execution.md (100%) rename docs/{ => rules}/window-service.md (100%) diff --git a/docs/angularelement.md b/docs/rules/angularelement.md similarity index 100% rename from docs/angularelement.md rename to docs/rules/angularelement.md diff --git a/docs/avoid-scope-typos.md b/docs/rules/avoid-scope-typos.md similarity index 100% rename from docs/avoid-scope-typos.md rename to docs/rules/avoid-scope-typos.md diff --git a/docs/component-limit.md b/docs/rules/component-limit.md similarity index 100% rename from docs/component-limit.md rename to docs/rules/component-limit.md diff --git a/docs/component-name.md b/docs/rules/component-name.md similarity index 100% rename from docs/component-name.md rename to docs/rules/component-name.md diff --git a/docs/constant-name.md b/docs/rules/constant-name.md similarity index 100% rename from docs/constant-name.md rename to docs/rules/constant-name.md diff --git a/docs/controller-as-route.md b/docs/rules/controller-as-route.md similarity index 100% rename from docs/controller-as-route.md rename to docs/rules/controller-as-route.md diff --git a/docs/controller-as-vm.md b/docs/rules/controller-as-vm.md similarity index 100% rename from docs/controller-as-vm.md rename to docs/rules/controller-as-vm.md diff --git a/docs/controller-as.md b/docs/rules/controller-as.md similarity index 100% rename from docs/controller-as.md rename to docs/rules/controller-as.md diff --git a/docs/controller-name.md b/docs/rules/controller-name.md similarity index 100% rename from docs/controller-name.md rename to docs/rules/controller-name.md diff --git a/docs/deferred.md b/docs/rules/deferred.md similarity index 100% rename from docs/deferred.md rename to docs/rules/deferred.md diff --git a/docs/definedundefined.md b/docs/rules/definedundefined.md similarity index 100% rename from docs/definedundefined.md rename to docs/rules/definedundefined.md diff --git a/docs/di-order.md b/docs/rules/di-order.md similarity index 100% rename from docs/di-order.md rename to docs/rules/di-order.md diff --git a/docs/di-unused.md b/docs/rules/di-unused.md similarity index 100% rename from docs/di-unused.md rename to docs/rules/di-unused.md diff --git a/docs/di.md b/docs/rules/di.md similarity index 100% rename from docs/di.md rename to docs/rules/di.md diff --git a/docs/directive-name.md b/docs/rules/directive-name.md similarity index 100% rename from docs/directive-name.md rename to docs/rules/directive-name.md diff --git a/docs/directive-restrict.md b/docs/rules/directive-restrict.md similarity index 100% rename from docs/directive-restrict.md rename to docs/rules/directive-restrict.md diff --git a/docs/document-service.md b/docs/rules/document-service.md similarity index 100% rename from docs/document-service.md rename to docs/rules/document-service.md diff --git a/docs/dumb-inject.md b/docs/rules/dumb-inject.md similarity index 100% rename from docs/dumb-inject.md rename to docs/rules/dumb-inject.md diff --git a/docs/empty-controller.md b/docs/rules/empty-controller.md similarity index 100% rename from docs/empty-controller.md rename to docs/rules/empty-controller.md diff --git a/docs/factory-name.md b/docs/rules/factory-name.md similarity index 100% rename from docs/factory-name.md rename to docs/rules/factory-name.md diff --git a/docs/file-name.md b/docs/rules/file-name.md similarity index 100% rename from docs/file-name.md rename to docs/rules/file-name.md diff --git a/docs/filter-name.md b/docs/rules/filter-name.md similarity index 100% rename from docs/filter-name.md rename to docs/rules/filter-name.md diff --git a/docs/foreach.md b/docs/rules/foreach.md similarity index 100% rename from docs/foreach.md rename to docs/rules/foreach.md diff --git a/docs/function-type.md b/docs/rules/function-type.md similarity index 100% rename from docs/function-type.md rename to docs/rules/function-type.md diff --git a/docs/interval-service.md b/docs/rules/interval-service.md similarity index 100% rename from docs/interval-service.md rename to docs/rules/interval-service.md diff --git a/docs/json-functions.md b/docs/rules/json-functions.md similarity index 100% rename from docs/json-functions.md rename to docs/rules/json-functions.md diff --git a/docs/log.md b/docs/rules/log.md similarity index 100% rename from docs/log.md rename to docs/rules/log.md diff --git a/docs/module-dependency-order.md b/docs/rules/module-dependency-order.md similarity index 100% rename from docs/module-dependency-order.md rename to docs/rules/module-dependency-order.md diff --git a/docs/module-getter.md b/docs/rules/module-getter.md similarity index 100% rename from docs/module-getter.md rename to docs/rules/module-getter.md diff --git a/docs/module-name.md b/docs/rules/module-name.md similarity index 100% rename from docs/module-name.md rename to docs/rules/module-name.md diff --git a/docs/module-setter.md b/docs/rules/module-setter.md similarity index 100% rename from docs/module-setter.md rename to docs/rules/module-setter.md diff --git a/docs/no-angular-mock.md b/docs/rules/no-angular-mock.md similarity index 100% rename from docs/no-angular-mock.md rename to docs/rules/no-angular-mock.md diff --git a/docs/no-controller.md b/docs/rules/no-controller.md similarity index 100% rename from docs/no-controller.md rename to docs/rules/no-controller.md diff --git a/docs/no-cookiestore.md b/docs/rules/no-cookiestore.md similarity index 100% rename from docs/no-cookiestore.md rename to docs/rules/no-cookiestore.md diff --git a/docs/no-directive-replace.md b/docs/rules/no-directive-replace.md similarity index 100% rename from docs/no-directive-replace.md rename to docs/rules/no-directive-replace.md diff --git a/docs/no-http-callback.md b/docs/rules/no-http-callback.md similarity index 100% rename from docs/no-http-callback.md rename to docs/rules/no-http-callback.md diff --git a/docs/no-inline-template.md b/docs/rules/no-inline-template.md similarity index 100% rename from docs/no-inline-template.md rename to docs/rules/no-inline-template.md diff --git a/docs/no-jquery-angularelement.md b/docs/rules/no-jquery-angularelement.md similarity index 100% rename from docs/no-jquery-angularelement.md rename to docs/rules/no-jquery-angularelement.md diff --git a/docs/no-private-call.md b/docs/rules/no-private-call.md similarity index 100% rename from docs/no-private-call.md rename to docs/rules/no-private-call.md diff --git a/docs/no-run-logic.md b/docs/rules/no-run-logic.md similarity index 100% rename from docs/no-run-logic.md rename to docs/rules/no-run-logic.md diff --git a/docs/no-service-method.md b/docs/rules/no-service-method.md similarity index 100% rename from docs/no-service-method.md rename to docs/rules/no-service-method.md diff --git a/docs/no-services.md b/docs/rules/no-services.md similarity index 100% rename from docs/no-services.md rename to docs/rules/no-services.md diff --git a/docs/on-destroy.md b/docs/rules/on-destroy.md similarity index 100% rename from docs/on-destroy.md rename to docs/rules/on-destroy.md diff --git a/docs/on-watch.md b/docs/rules/on-watch.md similarity index 100% rename from docs/on-watch.md rename to docs/rules/on-watch.md diff --git a/docs/one-dependency-per-line.md b/docs/rules/one-dependency-per-line.md similarity index 100% rename from docs/one-dependency-per-line.md rename to docs/rules/one-dependency-per-line.md diff --git a/docs/prefer-component.md b/docs/rules/prefer-component.md similarity index 100% rename from docs/prefer-component.md rename to docs/rules/prefer-component.md diff --git a/docs/provider-name.md b/docs/rules/provider-name.md similarity index 100% rename from docs/provider-name.md rename to docs/rules/provider-name.md diff --git a/docs/rest-service.md b/docs/rules/rest-service.md similarity index 100% rename from docs/rest-service.md rename to docs/rules/rest-service.md diff --git a/docs/service-name.md b/docs/rules/service-name.md similarity index 100% rename from docs/service-name.md rename to docs/rules/service-name.md diff --git a/docs/timeout-service.md b/docs/rules/timeout-service.md similarity index 100% rename from docs/timeout-service.md rename to docs/rules/timeout-service.md diff --git a/docs/typecheck-array.md b/docs/rules/typecheck-array.md similarity index 100% rename from docs/typecheck-array.md rename to docs/rules/typecheck-array.md diff --git a/docs/typecheck-date.md b/docs/rules/typecheck-date.md similarity index 100% rename from docs/typecheck-date.md rename to docs/rules/typecheck-date.md diff --git a/docs/typecheck-function.md b/docs/rules/typecheck-function.md similarity index 100% rename from docs/typecheck-function.md rename to docs/rules/typecheck-function.md diff --git a/docs/typecheck-number.md b/docs/rules/typecheck-number.md similarity index 100% rename from docs/typecheck-number.md rename to docs/rules/typecheck-number.md diff --git a/docs/typecheck-object.md b/docs/rules/typecheck-object.md similarity index 100% rename from docs/typecheck-object.md rename to docs/rules/typecheck-object.md diff --git a/docs/typecheck-string.md b/docs/rules/typecheck-string.md similarity index 100% rename from docs/typecheck-string.md rename to docs/rules/typecheck-string.md diff --git a/docs/value-name.md b/docs/rules/value-name.md similarity index 100% rename from docs/value-name.md rename to docs/rules/value-name.md diff --git a/docs/watchers-execution.md b/docs/rules/watchers-execution.md similarity index 100% rename from docs/watchers-execution.md rename to docs/rules/watchers-execution.md diff --git a/docs/window-service.md b/docs/rules/window-service.md similarity index 100% rename from docs/window-service.md rename to docs/rules/window-service.md From c798271c22783973d09e246bb0a21d519717b093 Mon Sep 17 00:00:00 2001 From: Jed Fox Date: Tue, 15 Aug 2017 12:17:55 -0400 Subject: [PATCH 3/6] Add a README to explain where the docs went --- docs/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 docs/README.md diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000..a4ff0a6b --- /dev/null +++ b/docs/README.md @@ -0,0 +1,3 @@ +# Looking for the rule documentation? + +It’s over in [`docs/rules`](./rules). From fed7ed02f2adbe1ff54c1f1ae46636474bb2f218 Mon Sep 17 00:00:00 2001 From: Emmanuel DEMEY Date: Wed, 16 Aug 2017 15:07:02 +0200 Subject: [PATCH 4/6] Revert "Enhance directive restrict rule to allow split statement for directive registration" --- rules/directive-restrict.js | 46 ------------------------------------- test/directive-restrict.js | 40 -------------------------------- 2 files changed, 86 deletions(-) diff --git a/rules/directive-restrict.js b/rules/directive-restrict.js index 66268fbd..7311e6c6 100644 --- a/rules/directive-restrict.js +++ b/rules/directive-restrict.js @@ -53,24 +53,6 @@ module.exports = { return true; } }); - - if (!directiveNode) { - // Try to find an ancestor function used as definition for one of the found directives - context.getAncestors().some(function(ancestor) { - if (isFunctionDeclaration(ancestor)) { - var fnName = ancestor.id.name; - - var correspondingDirective = foundDirectives.find(function(directive) { - var directiveFnName = getDirectiveFunctionName(directive); - return directiveFnName === fnName; - }); - - directiveNode = correspondingDirective; - return true; - } - }); - } - // The restrict property was not defined inside of a directive. if (!directiveNode) { return; @@ -89,34 +71,6 @@ module.exports = { checkedDirectives.push(directiveNode); } - function isFunctionDeclaration(node) { - return node.type === 'FunctionDeclaration'; - } - - function getDirectiveFunctionName(node) { - var directiveArg = node.arguments[1]; - - // Three ways of creating a directive function: function expression, - // variable name that references a function, and an array with a function - // as the last item - if (utils.isFunctionType(directiveArg)) { - return directiveArg.id.name; - } - - if (utils.isArrayType(directiveArg)) { - directiveArg = directiveArg.elements[directiveArg.elements.length - 1]; - - if (utils.isIdentifierType(directiveArg)) { - return directiveArg.name; - } - return directiveArg.id.name; - } - - if (utils.isIdentifierType(directiveArg)) { - return directiveArg.name; - } - } - return { CallExpression: function(node) { if (utils.isAngularDirectiveDeclaration(node)) { diff --git a/test/directive-restrict.js b/test/directive-restrict.js index f26d7194..669e5b69 100644 --- a/test/directive-restrict.js +++ b/test/directive-restrict.js @@ -40,25 +40,6 @@ eslintTester.run('directive-restrict', rule, { }, { code: 'app.directive("", function() {return {restrict:"E"}})', options: [{restrict: 'EA'}] - }, { - code: `app.directive("snapContainer", ['$scope', myDirective]); - function myDirective($scope) { - return { - restrict: "A" - } - } - `, - options: [{restrict: 'A'}] - }, { - code: `app.directive("snapContainer", myDirective); - /* @ngInject */ - function myDirective($rootScope) { - return { - restrict: "A" - } - } - `, - options: [{restrict: 'A'}] }, // Allowed with explicit restrict { @@ -106,27 +87,6 @@ eslintTester.run('directive-restrict', rule, { code: 'app.directive("", function() {return {restrict:"E"}})', options: [{restrict: 'A'}], errors: [{message: 'Disallowed directive restriction. It must be one of A in that order'}] - }, { - code: `app.directive("snapContainer", ['$scope', myDirective]); - function myDirective($scope) { - return { - restrict: "A" - } - } - `, - options: [{restrict: 'E'}], - errors: [{message: 'Disallowed directive restriction. It must be one of E in that order'}] - }, { - code: `app.directive("snapContainer", myDirective); - /* @ngInject */ - function myDirective($rootScope) { - return { - restrict: "A" - } - } - `, - options: [{restrict: 'E'}], - errors: [{message: 'Disallowed directive restriction. It must be one of E in that order'}] }, // Disallowed with wrong order { From 82074857359759384c39d05b82f63d2e49b64a94 Mon Sep 17 00:00:00 2001 From: Emmanuel DEMEY Date: Wed, 16 Aug 2017 15:07:29 +0200 Subject: [PATCH 5/6] Revert "Move docs to docs/rules" --- docs/README.md | 3 --- docs/{rules => }/angularelement.md | 0 docs/{rules => }/avoid-scope-typos.md | 0 docs/{rules => }/component-limit.md | 0 docs/{rules => }/component-name.md | 0 docs/{rules => }/constant-name.md | 0 docs/{rules => }/controller-as-route.md | 0 docs/{rules => }/controller-as-vm.md | 0 docs/{rules => }/controller-as.md | 0 docs/{rules => }/controller-name.md | 0 docs/{rules => }/deferred.md | 0 docs/{rules => }/definedundefined.md | 0 docs/{rules => }/di-order.md | 0 docs/{rules => }/di-unused.md | 0 docs/{rules => }/di.md | 0 docs/{rules => }/directive-name.md | 0 docs/{rules => }/directive-restrict.md | 0 docs/{rules => }/document-service.md | 0 docs/{rules => }/dumb-inject.md | 0 docs/{rules => }/empty-controller.md | 0 docs/{rules => }/factory-name.md | 0 docs/{rules => }/file-name.md | 0 docs/{rules => }/filter-name.md | 0 docs/{rules => }/foreach.md | 0 docs/{rules => }/function-type.md | 0 docs/{rules => }/interval-service.md | 0 docs/{rules => }/json-functions.md | 0 docs/{rules => }/log.md | 0 docs/{rules => }/module-dependency-order.md | 0 docs/{rules => }/module-getter.md | 0 docs/{rules => }/module-name.md | 0 docs/{rules => }/module-setter.md | 0 docs/{rules => }/no-angular-mock.md | 0 docs/{rules => }/no-controller.md | 0 docs/{rules => }/no-cookiestore.md | 0 docs/{rules => }/no-directive-replace.md | 0 docs/{rules => }/no-http-callback.md | 0 docs/{rules => }/no-inline-template.md | 0 docs/{rules => }/no-jquery-angularelement.md | 0 docs/{rules => }/no-private-call.md | 0 docs/{rules => }/no-run-logic.md | 0 docs/{rules => }/no-service-method.md | 0 docs/{rules => }/no-services.md | 0 docs/{rules => }/on-destroy.md | 0 docs/{rules => }/on-watch.md | 0 docs/{rules => }/one-dependency-per-line.md | 0 docs/{rules => }/prefer-component.md | 0 docs/{rules => }/provider-name.md | 0 docs/{rules => }/rest-service.md | 0 docs/{rules => }/service-name.md | 0 docs/{rules => }/timeout-service.md | 0 docs/{rules => }/typecheck-array.md | 0 docs/{rules => }/typecheck-date.md | 0 docs/{rules => }/typecheck-function.md | 0 docs/{rules => }/typecheck-number.md | 0 docs/{rules => }/typecheck-object.md | 0 docs/{rules => }/typecheck-string.md | 0 docs/{rules => }/value-name.md | 0 docs/{rules => }/watchers-execution.md | 0 docs/{rules => }/window-service.md | 0 60 files changed, 3 deletions(-) delete mode 100644 docs/README.md rename docs/{rules => }/angularelement.md (100%) rename docs/{rules => }/avoid-scope-typos.md (100%) rename docs/{rules => }/component-limit.md (100%) rename docs/{rules => }/component-name.md (100%) rename docs/{rules => }/constant-name.md (100%) rename docs/{rules => }/controller-as-route.md (100%) rename docs/{rules => }/controller-as-vm.md (100%) rename docs/{rules => }/controller-as.md (100%) rename docs/{rules => }/controller-name.md (100%) rename docs/{rules => }/deferred.md (100%) rename docs/{rules => }/definedundefined.md (100%) rename docs/{rules => }/di-order.md (100%) rename docs/{rules => }/di-unused.md (100%) rename docs/{rules => }/di.md (100%) rename docs/{rules => }/directive-name.md (100%) rename docs/{rules => }/directive-restrict.md (100%) rename docs/{rules => }/document-service.md (100%) rename docs/{rules => }/dumb-inject.md (100%) rename docs/{rules => }/empty-controller.md (100%) rename docs/{rules => }/factory-name.md (100%) rename docs/{rules => }/file-name.md (100%) rename docs/{rules => }/filter-name.md (100%) rename docs/{rules => }/foreach.md (100%) rename docs/{rules => }/function-type.md (100%) rename docs/{rules => }/interval-service.md (100%) rename docs/{rules => }/json-functions.md (100%) rename docs/{rules => }/log.md (100%) rename docs/{rules => }/module-dependency-order.md (100%) rename docs/{rules => }/module-getter.md (100%) rename docs/{rules => }/module-name.md (100%) rename docs/{rules => }/module-setter.md (100%) rename docs/{rules => }/no-angular-mock.md (100%) rename docs/{rules => }/no-controller.md (100%) rename docs/{rules => }/no-cookiestore.md (100%) rename docs/{rules => }/no-directive-replace.md (100%) rename docs/{rules => }/no-http-callback.md (100%) rename docs/{rules => }/no-inline-template.md (100%) rename docs/{rules => }/no-jquery-angularelement.md (100%) rename docs/{rules => }/no-private-call.md (100%) rename docs/{rules => }/no-run-logic.md (100%) rename docs/{rules => }/no-service-method.md (100%) rename docs/{rules => }/no-services.md (100%) rename docs/{rules => }/on-destroy.md (100%) rename docs/{rules => }/on-watch.md (100%) rename docs/{rules => }/one-dependency-per-line.md (100%) rename docs/{rules => }/prefer-component.md (100%) rename docs/{rules => }/provider-name.md (100%) rename docs/{rules => }/rest-service.md (100%) rename docs/{rules => }/service-name.md (100%) rename docs/{rules => }/timeout-service.md (100%) rename docs/{rules => }/typecheck-array.md (100%) rename docs/{rules => }/typecheck-date.md (100%) rename docs/{rules => }/typecheck-function.md (100%) rename docs/{rules => }/typecheck-number.md (100%) rename docs/{rules => }/typecheck-object.md (100%) rename docs/{rules => }/typecheck-string.md (100%) rename docs/{rules => }/value-name.md (100%) rename docs/{rules => }/watchers-execution.md (100%) rename docs/{rules => }/window-service.md (100%) diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index a4ff0a6b..00000000 --- a/docs/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Looking for the rule documentation? - -It’s over in [`docs/rules`](./rules). diff --git a/docs/rules/angularelement.md b/docs/angularelement.md similarity index 100% rename from docs/rules/angularelement.md rename to docs/angularelement.md diff --git a/docs/rules/avoid-scope-typos.md b/docs/avoid-scope-typos.md similarity index 100% rename from docs/rules/avoid-scope-typos.md rename to docs/avoid-scope-typos.md diff --git a/docs/rules/component-limit.md b/docs/component-limit.md similarity index 100% rename from docs/rules/component-limit.md rename to docs/component-limit.md diff --git a/docs/rules/component-name.md b/docs/component-name.md similarity index 100% rename from docs/rules/component-name.md rename to docs/component-name.md diff --git a/docs/rules/constant-name.md b/docs/constant-name.md similarity index 100% rename from docs/rules/constant-name.md rename to docs/constant-name.md diff --git a/docs/rules/controller-as-route.md b/docs/controller-as-route.md similarity index 100% rename from docs/rules/controller-as-route.md rename to docs/controller-as-route.md diff --git a/docs/rules/controller-as-vm.md b/docs/controller-as-vm.md similarity index 100% rename from docs/rules/controller-as-vm.md rename to docs/controller-as-vm.md diff --git a/docs/rules/controller-as.md b/docs/controller-as.md similarity index 100% rename from docs/rules/controller-as.md rename to docs/controller-as.md diff --git a/docs/rules/controller-name.md b/docs/controller-name.md similarity index 100% rename from docs/rules/controller-name.md rename to docs/controller-name.md diff --git a/docs/rules/deferred.md b/docs/deferred.md similarity index 100% rename from docs/rules/deferred.md rename to docs/deferred.md diff --git a/docs/rules/definedundefined.md b/docs/definedundefined.md similarity index 100% rename from docs/rules/definedundefined.md rename to docs/definedundefined.md diff --git a/docs/rules/di-order.md b/docs/di-order.md similarity index 100% rename from docs/rules/di-order.md rename to docs/di-order.md diff --git a/docs/rules/di-unused.md b/docs/di-unused.md similarity index 100% rename from docs/rules/di-unused.md rename to docs/di-unused.md diff --git a/docs/rules/di.md b/docs/di.md similarity index 100% rename from docs/rules/di.md rename to docs/di.md diff --git a/docs/rules/directive-name.md b/docs/directive-name.md similarity index 100% rename from docs/rules/directive-name.md rename to docs/directive-name.md diff --git a/docs/rules/directive-restrict.md b/docs/directive-restrict.md similarity index 100% rename from docs/rules/directive-restrict.md rename to docs/directive-restrict.md diff --git a/docs/rules/document-service.md b/docs/document-service.md similarity index 100% rename from docs/rules/document-service.md rename to docs/document-service.md diff --git a/docs/rules/dumb-inject.md b/docs/dumb-inject.md similarity index 100% rename from docs/rules/dumb-inject.md rename to docs/dumb-inject.md diff --git a/docs/rules/empty-controller.md b/docs/empty-controller.md similarity index 100% rename from docs/rules/empty-controller.md rename to docs/empty-controller.md diff --git a/docs/rules/factory-name.md b/docs/factory-name.md similarity index 100% rename from docs/rules/factory-name.md rename to docs/factory-name.md diff --git a/docs/rules/file-name.md b/docs/file-name.md similarity index 100% rename from docs/rules/file-name.md rename to docs/file-name.md diff --git a/docs/rules/filter-name.md b/docs/filter-name.md similarity index 100% rename from docs/rules/filter-name.md rename to docs/filter-name.md diff --git a/docs/rules/foreach.md b/docs/foreach.md similarity index 100% rename from docs/rules/foreach.md rename to docs/foreach.md diff --git a/docs/rules/function-type.md b/docs/function-type.md similarity index 100% rename from docs/rules/function-type.md rename to docs/function-type.md diff --git a/docs/rules/interval-service.md b/docs/interval-service.md similarity index 100% rename from docs/rules/interval-service.md rename to docs/interval-service.md diff --git a/docs/rules/json-functions.md b/docs/json-functions.md similarity index 100% rename from docs/rules/json-functions.md rename to docs/json-functions.md diff --git a/docs/rules/log.md b/docs/log.md similarity index 100% rename from docs/rules/log.md rename to docs/log.md diff --git a/docs/rules/module-dependency-order.md b/docs/module-dependency-order.md similarity index 100% rename from docs/rules/module-dependency-order.md rename to docs/module-dependency-order.md diff --git a/docs/rules/module-getter.md b/docs/module-getter.md similarity index 100% rename from docs/rules/module-getter.md rename to docs/module-getter.md diff --git a/docs/rules/module-name.md b/docs/module-name.md similarity index 100% rename from docs/rules/module-name.md rename to docs/module-name.md diff --git a/docs/rules/module-setter.md b/docs/module-setter.md similarity index 100% rename from docs/rules/module-setter.md rename to docs/module-setter.md diff --git a/docs/rules/no-angular-mock.md b/docs/no-angular-mock.md similarity index 100% rename from docs/rules/no-angular-mock.md rename to docs/no-angular-mock.md diff --git a/docs/rules/no-controller.md b/docs/no-controller.md similarity index 100% rename from docs/rules/no-controller.md rename to docs/no-controller.md diff --git a/docs/rules/no-cookiestore.md b/docs/no-cookiestore.md similarity index 100% rename from docs/rules/no-cookiestore.md rename to docs/no-cookiestore.md diff --git a/docs/rules/no-directive-replace.md b/docs/no-directive-replace.md similarity index 100% rename from docs/rules/no-directive-replace.md rename to docs/no-directive-replace.md diff --git a/docs/rules/no-http-callback.md b/docs/no-http-callback.md similarity index 100% rename from docs/rules/no-http-callback.md rename to docs/no-http-callback.md diff --git a/docs/rules/no-inline-template.md b/docs/no-inline-template.md similarity index 100% rename from docs/rules/no-inline-template.md rename to docs/no-inline-template.md diff --git a/docs/rules/no-jquery-angularelement.md b/docs/no-jquery-angularelement.md similarity index 100% rename from docs/rules/no-jquery-angularelement.md rename to docs/no-jquery-angularelement.md diff --git a/docs/rules/no-private-call.md b/docs/no-private-call.md similarity index 100% rename from docs/rules/no-private-call.md rename to docs/no-private-call.md diff --git a/docs/rules/no-run-logic.md b/docs/no-run-logic.md similarity index 100% rename from docs/rules/no-run-logic.md rename to docs/no-run-logic.md diff --git a/docs/rules/no-service-method.md b/docs/no-service-method.md similarity index 100% rename from docs/rules/no-service-method.md rename to docs/no-service-method.md diff --git a/docs/rules/no-services.md b/docs/no-services.md similarity index 100% rename from docs/rules/no-services.md rename to docs/no-services.md diff --git a/docs/rules/on-destroy.md b/docs/on-destroy.md similarity index 100% rename from docs/rules/on-destroy.md rename to docs/on-destroy.md diff --git a/docs/rules/on-watch.md b/docs/on-watch.md similarity index 100% rename from docs/rules/on-watch.md rename to docs/on-watch.md diff --git a/docs/rules/one-dependency-per-line.md b/docs/one-dependency-per-line.md similarity index 100% rename from docs/rules/one-dependency-per-line.md rename to docs/one-dependency-per-line.md diff --git a/docs/rules/prefer-component.md b/docs/prefer-component.md similarity index 100% rename from docs/rules/prefer-component.md rename to docs/prefer-component.md diff --git a/docs/rules/provider-name.md b/docs/provider-name.md similarity index 100% rename from docs/rules/provider-name.md rename to docs/provider-name.md diff --git a/docs/rules/rest-service.md b/docs/rest-service.md similarity index 100% rename from docs/rules/rest-service.md rename to docs/rest-service.md diff --git a/docs/rules/service-name.md b/docs/service-name.md similarity index 100% rename from docs/rules/service-name.md rename to docs/service-name.md diff --git a/docs/rules/timeout-service.md b/docs/timeout-service.md similarity index 100% rename from docs/rules/timeout-service.md rename to docs/timeout-service.md diff --git a/docs/rules/typecheck-array.md b/docs/typecheck-array.md similarity index 100% rename from docs/rules/typecheck-array.md rename to docs/typecheck-array.md diff --git a/docs/rules/typecheck-date.md b/docs/typecheck-date.md similarity index 100% rename from docs/rules/typecheck-date.md rename to docs/typecheck-date.md diff --git a/docs/rules/typecheck-function.md b/docs/typecheck-function.md similarity index 100% rename from docs/rules/typecheck-function.md rename to docs/typecheck-function.md diff --git a/docs/rules/typecheck-number.md b/docs/typecheck-number.md similarity index 100% rename from docs/rules/typecheck-number.md rename to docs/typecheck-number.md diff --git a/docs/rules/typecheck-object.md b/docs/typecheck-object.md similarity index 100% rename from docs/rules/typecheck-object.md rename to docs/typecheck-object.md diff --git a/docs/rules/typecheck-string.md b/docs/typecheck-string.md similarity index 100% rename from docs/rules/typecheck-string.md rename to docs/typecheck-string.md diff --git a/docs/rules/value-name.md b/docs/value-name.md similarity index 100% rename from docs/rules/value-name.md rename to docs/value-name.md diff --git a/docs/rules/watchers-execution.md b/docs/watchers-execution.md similarity index 100% rename from docs/rules/watchers-execution.md rename to docs/watchers-execution.md diff --git a/docs/rules/window-service.md b/docs/window-service.md similarity index 100% rename from docs/rules/window-service.md rename to docs/window-service.md From b7db9a50c07ef7a160dbc6cd004ad9470d00d995 Mon Sep 17 00:00:00 2001 From: dphengsiaroun Date: Tue, 29 Aug 2017 15:04:20 +0200 Subject: [PATCH 6/6] add: consolidate test --- rules/file-name.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rules/file-name.js b/rules/file-name.js index 64576ae8..d5d47f8c 100644 --- a/rules/file-name.js +++ b/rules/file-name.js @@ -46,7 +46,7 @@ function handleModuleCase(node, context, defaultFilename) { }); // Check that the definition is an import declaration. - if (variable.defs[0].parent.type !== 'ImportDeclaration') { + if (!(variable && variable.defs && variable.defs[0] && variable.defs[0].parent && variable.defs[0].parent.type === 'ImportDeclaration')) { return defaultFilename; }