eslint 0.22.0 → 0.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +111 -95
  3. package/bin/eslint.js +41 -41
  4. package/conf/environments.js +87 -81
  5. package/conf/eslint.json +186 -179
  6. package/lib/api.js +13 -12
  7. package/lib/cli-engine.js +441 -451
  8. package/lib/cli.js +196 -196
  9. package/lib/config-initializer.js +145 -145
  10. package/lib/config-validator.js +110 -110
  11. package/lib/config.js +428 -416
  12. package/lib/eslint.js +1072 -1073
  13. package/lib/file-finder.js +167 -167
  14. package/lib/formatters/checkstyle.js +68 -68
  15. package/lib/formatters/compact.js +53 -53
  16. package/lib/formatters/jslint-xml.js +40 -40
  17. package/lib/formatters/junit.js +63 -63
  18. package/lib/formatters/stylish.js +90 -90
  19. package/lib/formatters/tap.js +86 -86
  20. package/lib/ignored-paths.js +137 -137
  21. package/lib/load-rules.js +39 -39
  22. package/lib/options.js +132 -126
  23. package/lib/rule-context.js +107 -107
  24. package/lib/rules/accessor-pairs.js +65 -65
  25. package/lib/rules/array-bracket-spacing.js +180 -0
  26. package/lib/rules/block-scoped-var.js +339 -320
  27. package/lib/rules/brace-style.js +228 -228
  28. package/lib/rules/camelcase.js +111 -111
  29. package/lib/rules/comma-dangle.js +67 -64
  30. package/lib/rules/comma-spacing.js +191 -191
  31. package/lib/rules/comma-style.js +195 -195
  32. package/lib/rules/complexity.js +94 -94
  33. package/lib/rules/computed-property-spacing.js +144 -0
  34. package/lib/rules/consistent-return.js +75 -75
  35. package/lib/rules/consistent-this.js +119 -119
  36. package/lib/rules/constructor-super.js +108 -0
  37. package/lib/rules/curly.js +109 -109
  38. package/lib/rules/default-case.js +66 -66
  39. package/lib/rules/dot-location.js +63 -63
  40. package/lib/rules/dot-notation.js +119 -119
  41. package/lib/rules/eol-last.js +38 -38
  42. package/lib/rules/eqeqeq.js +96 -96
  43. package/lib/rules/func-names.js +45 -45
  44. package/lib/rules/func-style.js +49 -49
  45. package/lib/rules/generator-star-spacing.js +104 -87
  46. package/lib/rules/generator-star.js +76 -76
  47. package/lib/rules/global-strict.js +49 -49
  48. package/lib/rules/guard-for-in.js +32 -32
  49. package/lib/rules/handle-callback-err.js +81 -124
  50. package/lib/rules/indent.js +486 -486
  51. package/lib/rules/key-spacing.js +325 -325
  52. package/lib/rules/linebreak-style.js +44 -44
  53. package/lib/rules/lines-around-comment.js +228 -160
  54. package/lib/rules/max-depth.js +89 -89
  55. package/lib/rules/max-len.js +76 -76
  56. package/lib/rules/max-nested-callbacks.js +73 -73
  57. package/lib/rules/max-params.js +45 -45
  58. package/lib/rules/max-statements.js +61 -61
  59. package/lib/rules/new-cap.js +224 -224
  60. package/lib/rules/new-parens.js +29 -29
  61. package/lib/rules/newline-after-var.js +127 -127
  62. package/lib/rules/no-alert.js +153 -153
  63. package/lib/rules/no-array-constructor.js +31 -31
  64. package/lib/rules/no-bitwise.js +57 -57
  65. package/lib/rules/no-caller.js +29 -29
  66. package/lib/rules/no-catch-shadow.js +52 -52
  67. package/lib/rules/no-comma-dangle.js +45 -45
  68. package/lib/rules/no-cond-assign.js +123 -123
  69. package/lib/rules/no-console.js +27 -27
  70. package/lib/rules/no-constant-condition.js +73 -73
  71. package/lib/rules/no-continue.js +23 -23
  72. package/lib/rules/no-control-regex.js +58 -58
  73. package/lib/rules/no-debugger.js +22 -22
  74. package/lib/rules/no-delete-var.js +25 -25
  75. package/lib/rules/no-div-regex.js +27 -27
  76. package/lib/rules/no-dupe-args.js +89 -85
  77. package/lib/rules/no-dupe-keys.js +43 -43
  78. package/lib/rules/no-duplicate-case.js +67 -67
  79. package/lib/rules/no-else-return.js +125 -125
  80. package/lib/rules/no-empty-character-class.js +43 -43
  81. package/lib/rules/no-empty-class.js +45 -45
  82. package/lib/rules/no-empty-label.js +27 -27
  83. package/lib/rules/no-empty.js +49 -49
  84. package/lib/rules/no-eq-null.js +29 -29
  85. package/lib/rules/no-eval.js +26 -26
  86. package/lib/rules/no-ex-assign.js +42 -42
  87. package/lib/rules/no-extend-native.js +103 -103
  88. package/lib/rules/no-extra-bind.js +81 -81
  89. package/lib/rules/no-extra-boolean-cast.js +71 -71
  90. package/lib/rules/no-extra-parens.js +368 -355
  91. package/lib/rules/no-extra-semi.js +70 -23
  92. package/lib/rules/no-extra-strict.js +86 -86
  93. package/lib/rules/no-fallthrough.js +97 -97
  94. package/lib/rules/no-floating-decimal.js +30 -30
  95. package/lib/rules/no-func-assign.js +83 -83
  96. package/lib/rules/no-implied-eval.js +76 -76
  97. package/lib/rules/no-inline-comments.js +49 -49
  98. package/lib/rules/no-inner-declarations.js +78 -78
  99. package/lib/rules/no-invalid-regexp.js +53 -53
  100. package/lib/rules/no-irregular-whitespace.js +135 -135
  101. package/lib/rules/no-iterator.js +28 -28
  102. package/lib/rules/no-label-var.js +64 -64
  103. package/lib/rules/no-labels.js +44 -44
  104. package/lib/rules/no-lone-blocks.js +106 -27
  105. package/lib/rules/no-lonely-if.js +30 -30
  106. package/lib/rules/no-loop-func.js +58 -58
  107. package/lib/rules/no-mixed-requires.js +165 -165
  108. package/lib/rules/no-mixed-spaces-and-tabs.js +74 -74
  109. package/lib/rules/no-multi-spaces.js +119 -119
  110. package/lib/rules/no-multi-str.js +43 -43
  111. package/lib/rules/no-multiple-empty-lines.js +98 -98
  112. package/lib/rules/no-native-reassign.js +62 -62
  113. package/lib/rules/no-negated-in-lhs.js +25 -25
  114. package/lib/rules/no-nested-ternary.js +24 -24
  115. package/lib/rules/no-new-func.js +25 -25
  116. package/lib/rules/no-new-object.js +25 -25
  117. package/lib/rules/no-new-require.js +25 -25
  118. package/lib/rules/no-new-wrappers.js +26 -26
  119. package/lib/rules/no-new.js +27 -27
  120. package/lib/rules/no-obj-calls.js +28 -28
  121. package/lib/rules/no-octal-escape.js +39 -39
  122. package/lib/rules/no-octal.js +25 -25
  123. package/lib/rules/no-param-reassign.js +87 -87
  124. package/lib/rules/no-path-concat.js +39 -39
  125. package/lib/rules/no-plusplus.js +24 -24
  126. package/lib/rules/no-process-env.js +30 -30
  127. package/lib/rules/no-process-exit.js +33 -33
  128. package/lib/rules/no-proto.js +28 -28
  129. package/lib/rules/no-redeclare.js +68 -68
  130. package/lib/rules/no-regex-spaces.js +35 -35
  131. package/lib/rules/no-reserved-keys.js +56 -56
  132. package/lib/rules/no-restricted-modules.js +85 -85
  133. package/lib/rules/no-return-assign.js +53 -24
  134. package/lib/rules/no-script-url.js +34 -34
  135. package/lib/rules/no-self-compare.js +29 -29
  136. package/lib/rules/no-sequences.js +94 -94
  137. package/lib/rules/no-shadow-restricted-names.js +51 -51
  138. package/lib/rules/no-shadow.js +181 -136
  139. package/lib/rules/no-space-before-semi.js +98 -98
  140. package/lib/rules/no-spaced-func.js +37 -37
  141. package/lib/rules/no-sparse-arrays.js +33 -33
  142. package/lib/rules/no-sync.js +30 -30
  143. package/lib/rules/no-ternary.js +24 -24
  144. package/lib/rules/no-this-before-super.js +144 -0
  145. package/lib/rules/no-throw-literal.js +33 -33
  146. package/lib/rules/no-trailing-spaces.js +74 -63
  147. package/lib/rules/no-undef-init.js +28 -28
  148. package/lib/rules/no-undef.js +92 -92
  149. package/lib/rules/no-undefined.js +27 -27
  150. package/lib/rules/no-underscore-dangle.js +73 -73
  151. package/lib/rules/no-unexpected-multiline.js +58 -0
  152. package/lib/rules/no-unneeded-ternary.js +48 -48
  153. package/lib/rules/no-unreachable.js +98 -98
  154. package/lib/rules/no-unused-expressions.js +76 -76
  155. package/lib/rules/no-unused-vars.js +252 -250
  156. package/lib/rules/no-use-before-define.js +105 -105
  157. package/lib/rules/no-var.js +26 -26
  158. package/lib/rules/no-void.js +28 -28
  159. package/lib/rules/no-warning-comments.js +102 -102
  160. package/lib/rules/no-with.js +22 -22
  161. package/lib/rules/no-wrap-func.js +65 -65
  162. package/lib/rules/object-curly-spacing.js +231 -206
  163. package/lib/rules/object-shorthand.js +74 -73
  164. package/lib/rules/one-var.js +311 -304
  165. package/lib/rules/operator-assignment.js +118 -118
  166. package/lib/rules/operator-linebreak.js +114 -114
  167. package/lib/rules/padded-blocks.js +98 -98
  168. package/lib/rules/prefer-const.js +91 -0
  169. package/lib/rules/quote-props.js +72 -72
  170. package/lib/rules/quotes.js +92 -92
  171. package/lib/rules/radix.js +41 -41
  172. package/lib/rules/semi-spacing.js +167 -167
  173. package/lib/rules/semi.js +136 -136
  174. package/lib/rules/sort-vars.js +49 -49
  175. package/lib/rules/space-after-function-name.js +49 -49
  176. package/lib/rules/space-after-keywords.js +82 -82
  177. package/lib/rules/space-before-blocks.js +91 -91
  178. package/lib/rules/space-before-function-paren.js +139 -139
  179. package/lib/rules/space-before-function-parentheses.js +139 -139
  180. package/lib/rules/space-in-brackets.js +305 -305
  181. package/lib/rules/space-in-parens.js +281 -281
  182. package/lib/rules/space-infix-ops.js +106 -106
  183. package/lib/rules/space-return-throw-case.js +38 -38
  184. package/lib/rules/space-unary-ops.js +124 -133
  185. package/lib/rules/spaced-comment.js +143 -0
  186. package/lib/rules/spaced-line-comment.js +89 -89
  187. package/lib/rules/strict.js +242 -242
  188. package/lib/rules/use-isnan.js +26 -26
  189. package/lib/rules/valid-jsdoc.js +215 -215
  190. package/lib/rules/valid-typeof.js +42 -42
  191. package/lib/rules/vars-on-top.js +115 -115
  192. package/lib/rules/wrap-iife.js +48 -48
  193. package/lib/rules/wrap-regex.js +38 -38
  194. package/lib/rules/yoda.js +242 -225
  195. package/lib/rules.js +88 -88
  196. package/lib/timing.js +109 -109
  197. package/lib/token-store.js +201 -201
  198. package/lib/util/traverse.js +105 -105
  199. package/lib/util.js +125 -85
  200. package/package.json +6 -6
  201. package/CHANGELOG.md +0 -1638
@@ -1,49 +1,49 @@
1
- /**
2
- * @fileoverview Rule to enforce a particular function style
3
- * @author Nicholas C. Zakas
4
- * @copyright 2013 Nicholas C. Zakas. All rights reserved.
5
- */
6
- "use strict";
7
-
8
- //------------------------------------------------------------------------------
9
- // Rule Definition
10
- //------------------------------------------------------------------------------
11
-
12
- module.exports = function(context) {
13
-
14
- var style = context.options[0],
15
- enforceDeclarations = (style === "declaration");
16
-
17
- return {
18
-
19
- "FunctionDeclaration": function(node) {
20
- if (!enforceDeclarations) {
21
- context.report(node, "Expected a function expression.");
22
- }
23
- },
24
-
25
- "FunctionExpression": function() {
26
- var parent = context.getAncestors().pop();
27
-
28
- if (enforceDeclarations && parent.type === "VariableDeclarator") {
29
- context.report(parent, "Expected a function declaration.");
30
- }
31
- },
32
-
33
- "ArrowFunctionExpression": function() {
34
- var parent = context.getAncestors().pop();
35
-
36
- if (enforceDeclarations && parent.type === "VariableDeclarator") {
37
- context.report(parent, "Expected a function declaration.");
38
- }
39
- }
40
-
41
- };
42
-
43
- };
44
-
45
- module.exports.schema = [
46
- {
47
- "enum": ["declaration", "expression"]
48
- }
49
- ];
1
+ /**
2
+ * @fileoverview Rule to enforce a particular function style
3
+ * @author Nicholas C. Zakas
4
+ * @copyright 2013 Nicholas C. Zakas. All rights reserved.
5
+ */
6
+ "use strict";
7
+
8
+ //------------------------------------------------------------------------------
9
+ // Rule Definition
10
+ //------------------------------------------------------------------------------
11
+
12
+ module.exports = function(context) {
13
+
14
+ var style = context.options[0],
15
+ enforceDeclarations = (style === "declaration");
16
+
17
+ return {
18
+
19
+ "FunctionDeclaration": function(node) {
20
+ if (!enforceDeclarations) {
21
+ context.report(node, "Expected a function expression.");
22
+ }
23
+ },
24
+
25
+ "FunctionExpression": function() {
26
+ var parent = context.getAncestors().pop();
27
+
28
+ if (enforceDeclarations && parent.type === "VariableDeclarator") {
29
+ context.report(parent, "Expected a function declaration.");
30
+ }
31
+ },
32
+
33
+ "ArrowFunctionExpression": function() {
34
+ var parent = context.getAncestors().pop();
35
+
36
+ if (enforceDeclarations && parent.type === "VariableDeclarator") {
37
+ context.report(parent, "Expected a function declaration.");
38
+ }
39
+ }
40
+
41
+ };
42
+
43
+ };
44
+
45
+ module.exports.schema = [
46
+ {
47
+ "enum": ["declaration", "expression"]
48
+ }
49
+ ];
@@ -1,87 +1,104 @@
1
- /**
2
- * @fileoverview Rule to check the spacing around the * in generator functions.
3
- * @author Jamund Ferguson
4
- * @copyright 2015 Brandon Mills. All rights reserved.
5
- * @copyright 2014 Jamund Ferguson. All rights reserved.
6
- */
7
-
8
- "use strict";
9
-
10
- //------------------------------------------------------------------------------
11
- // Rule Definition
12
- //------------------------------------------------------------------------------
13
-
14
- module.exports = function(context) {
15
-
16
- var mode = {
17
- before: { before: true, after: false },
18
- after: { before: false, after: true },
19
- both: { before: true, after: true },
20
- neither: { before: false, after: false }
21
- }[context.options[0] || "before"];
22
-
23
- /**
24
- * Checks the spacing between two tokens before or after the star token.
25
- * @param {string} side Either "before" or "after".
26
- * @param {Token} leftToken `function` keyword token if side is "before", or
27
- * star token if side is "after".
28
- * @param {Token} rightToken Star token if side is "before", or identifier
29
- * token if side is "after".
30
- * @returns {void}
31
- */
32
- function checkSpacing(side, leftToken, rightToken) {
33
- if (!!(rightToken.range[0] - leftToken.range[1]) !== mode[side]) {
34
- context.report(
35
- leftToken.value === "*" ? leftToken : rightToken,
36
- "{{type}} space {{side}} *.",
37
- {
38
- type: mode[side] ? "Missing" : "Unexpected",
39
- side: side
40
- }
41
- );
42
- }
43
- }
44
-
45
- /**
46
- * Enforces the spacing around the star if node is a generator function.
47
- * @param {ASTNode} node A function expression or declaration node.
48
- * @returns {void}
49
- */
50
- function checkFunction(node) {
51
- var prevToken, starToken, nextToken;
52
-
53
- if (!node.generator) {
54
- return;
55
- }
56
-
57
- if (node.parent.method || node.parent.type === "MethodDefinition") {
58
- starToken = context.getTokenBefore(node, 1);
59
- } else {
60
- starToken = context.getFirstToken(node, 1);
61
- }
62
-
63
- // Only check before when preceded by `function` keyword
64
- prevToken = context.getTokenBefore(starToken);
65
- if (prevToken.value === "function" || prevToken.value === "static") {
66
- checkSpacing("before", prevToken, starToken);
67
- }
68
-
69
- // Only check after when followed by an identifier
70
- nextToken = context.getTokenAfter(starToken);
71
- if (nextToken.type === "Identifier") {
72
- checkSpacing("after", starToken, nextToken);
73
- }
74
- }
75
-
76
- return {
77
- "FunctionDeclaration": checkFunction,
78
- "FunctionExpression": checkFunction
79
- };
80
-
81
- };
82
-
83
- module.exports.schema = [
84
- {
85
- "enum": ["before", "after", "both", "neither"]
86
- }
87
- ];
1
+ /**
2
+ * @fileoverview Rule to check the spacing around the * in generator functions.
3
+ * @author Jamund Ferguson
4
+ * @copyright 2015 Brandon Mills. All rights reserved.
5
+ * @copyright 2014 Jamund Ferguson. All rights reserved.
6
+ */
7
+
8
+ "use strict";
9
+
10
+ //------------------------------------------------------------------------------
11
+ // Rule Definition
12
+ //------------------------------------------------------------------------------
13
+
14
+ module.exports = function(context) {
15
+
16
+ var mode = (function(option) {
17
+ if (option == null || typeof option === "string") {
18
+ return {
19
+ before: { before: true, after: false },
20
+ after: { before: false, after: true },
21
+ both: { before: true, after: true },
22
+ neither: { before: false, after: false }
23
+ }[option || "before"];
24
+ }
25
+ return option;
26
+ }(context.options[0]));
27
+
28
+ /**
29
+ * Checks the spacing between two tokens before or after the star token.
30
+ * @param {string} side Either "before" or "after".
31
+ * @param {Token} leftToken `function` keyword token if side is "before", or
32
+ * star token if side is "after".
33
+ * @param {Token} rightToken Star token if side is "before", or identifier
34
+ * token if side is "after".
35
+ * @returns {void}
36
+ */
37
+ function checkSpacing(side, leftToken, rightToken) {
38
+ if (!!(rightToken.range[0] - leftToken.range[1]) !== mode[side]) {
39
+ context.report(
40
+ leftToken.value === "*" ? leftToken : rightToken,
41
+ "{{type}} space {{side}} *.",
42
+ {
43
+ type: mode[side] ? "Missing" : "Unexpected",
44
+ side: side
45
+ }
46
+ );
47
+ }
48
+ }
49
+
50
+ /**
51
+ * Enforces the spacing around the star if node is a generator function.
52
+ * @param {ASTNode} node A function expression or declaration node.
53
+ * @returns {void}
54
+ */
55
+ function checkFunction(node) {
56
+ var prevToken, starToken, nextToken;
57
+
58
+ if (!node.generator) {
59
+ return;
60
+ }
61
+
62
+ if (node.parent.method || node.parent.type === "MethodDefinition") {
63
+ starToken = context.getTokenBefore(node, 1);
64
+ } else {
65
+ starToken = context.getFirstToken(node, 1);
66
+ }
67
+
68
+ // Only check before when preceded by `function` keyword
69
+ prevToken = context.getTokenBefore(starToken);
70
+ if (prevToken.value === "function" || prevToken.value === "static") {
71
+ checkSpacing("before", prevToken, starToken);
72
+ }
73
+
74
+ // Only check after when followed by an identifier
75
+ nextToken = context.getTokenAfter(starToken);
76
+ if (nextToken.type === "Identifier") {
77
+ checkSpacing("after", starToken, nextToken);
78
+ }
79
+ }
80
+
81
+ return {
82
+ "FunctionDeclaration": checkFunction,
83
+ "FunctionExpression": checkFunction
84
+ };
85
+
86
+ };
87
+
88
+ module.exports.schema = [
89
+ {
90
+ "oneOf": [
91
+ {
92
+ "enum": ["before", "after", "both", "neither"]
93
+ },
94
+ {
95
+ "type": "object",
96
+ "properties": {
97
+ "before": {"type": "boolean"},
98
+ "after": {"type": "boolean"}
99
+ },
100
+ "additionalProperties": false
101
+ }
102
+ ]
103
+ }
104
+ ];
@@ -1,76 +1,76 @@
1
- /**
2
- * @fileoverview Rule to check for the position of the * in your generator functions
3
- * @author Jamund Ferguson
4
- * @copyright 2014 Jamund Ferguson. All rights reserved.
5
- */
6
-
7
- "use strict";
8
-
9
- //------------------------------------------------------------------------------
10
- // Rule Definition
11
- //------------------------------------------------------------------------------
12
-
13
- module.exports = function(context) {
14
-
15
- var position = context.options[0] || "end";
16
-
17
- /**
18
- * Check the position of the star compared to the expected position.
19
- * @param {ASTNode} node - the entire function node
20
- * @returns {void}
21
- */
22
- function checkStarPosition(node) {
23
- var starToken;
24
-
25
- if (!node.generator) {
26
- return;
27
- }
28
-
29
- // Blocked, pending decision to fix or work around in eslint/espree#36
30
- if (context.getAncestors().pop().method) {
31
- return;
32
- }
33
-
34
- starToken = context.getFirstToken(node, 1);
35
-
36
- // check for function *name() {}
37
- if (position === "end") {
38
-
39
- // * starts where the next identifier begins
40
- if (starToken.range[1] !== context.getTokenAfter(starToken).range[0]) {
41
- context.report(node, "Expected a space before *.");
42
- }
43
- }
44
-
45
- // check for function* name() {}
46
- if (position === "start") {
47
-
48
- // * begins where the previous identifier ends
49
- if (starToken.range[0] !== context.getTokenBefore(starToken).range[1]) {
50
- context.report(node, "Expected no space before *.");
51
- }
52
- }
53
-
54
- // check for function * name() {}
55
- if (position === "middle") {
56
-
57
- // must be a space before and afer the *
58
- if (starToken.range[0] <= context.getTokenBefore(starToken).range[1] ||
59
- starToken.range[1] >= context.getTokenAfter(starToken).range[0]) {
60
- context.report(node, "Expected spaces around *.");
61
- }
62
- }
63
- }
64
-
65
- return {
66
- "FunctionDeclaration": checkStarPosition,
67
- "FunctionExpression": checkStarPosition
68
- };
69
-
70
- };
71
-
72
- module.exports.schema = [
73
- {
74
- "enum": ["start", "middle", "end"]
75
- }
76
- ];
1
+ /**
2
+ * @fileoverview Rule to check for the position of the * in your generator functions
3
+ * @author Jamund Ferguson
4
+ * @copyright 2014 Jamund Ferguson. All rights reserved.
5
+ */
6
+
7
+ "use strict";
8
+
9
+ //------------------------------------------------------------------------------
10
+ // Rule Definition
11
+ //------------------------------------------------------------------------------
12
+
13
+ module.exports = function(context) {
14
+
15
+ var position = context.options[0] || "end";
16
+
17
+ /**
18
+ * Check the position of the star compared to the expected position.
19
+ * @param {ASTNode} node - the entire function node
20
+ * @returns {void}
21
+ */
22
+ function checkStarPosition(node) {
23
+ var starToken;
24
+
25
+ if (!node.generator) {
26
+ return;
27
+ }
28
+
29
+ // Blocked, pending decision to fix or work around in eslint/espree#36
30
+ if (context.getAncestors().pop().method) {
31
+ return;
32
+ }
33
+
34
+ starToken = context.getFirstToken(node, 1);
35
+
36
+ // check for function *name() {}
37
+ if (position === "end") {
38
+
39
+ // * starts where the next identifier begins
40
+ if (starToken.range[1] !== context.getTokenAfter(starToken).range[0]) {
41
+ context.report(node, "Expected a space before *.");
42
+ }
43
+ }
44
+
45
+ // check for function* name() {}
46
+ if (position === "start") {
47
+
48
+ // * begins where the previous identifier ends
49
+ if (starToken.range[0] !== context.getTokenBefore(starToken).range[1]) {
50
+ context.report(node, "Expected no space before *.");
51
+ }
52
+ }
53
+
54
+ // check for function * name() {}
55
+ if (position === "middle") {
56
+
57
+ // must be a space before and afer the *
58
+ if (starToken.range[0] <= context.getTokenBefore(starToken).range[1] ||
59
+ starToken.range[1] >= context.getTokenAfter(starToken).range[0]) {
60
+ context.report(node, "Expected spaces around *.");
61
+ }
62
+ }
63
+ }
64
+
65
+ return {
66
+ "FunctionDeclaration": checkStarPosition,
67
+ "FunctionExpression": checkStarPosition
68
+ };
69
+
70
+ };
71
+
72
+ module.exports.schema = [
73
+ {
74
+ "enum": ["start", "middle", "end"]
75
+ }
76
+ ];
@@ -1,49 +1,49 @@
1
- /**
2
- * @fileoverview Rule to flag or require global strict mode.
3
- * @author Nicholas C. Zakas
4
- */
5
- "use strict";
6
-
7
- //------------------------------------------------------------------------------
8
- // Rule Definition
9
- //------------------------------------------------------------------------------
10
-
11
- module.exports = function(context) {
12
-
13
- var mode = context.options[0];
14
-
15
- if (mode === "always") {
16
-
17
- return {
18
- "Program": function(node) {
19
- if (node.body.length > 0) {
20
- var statement = node.body[0];
21
-
22
- if (!(statement.type === "ExpressionStatement" && statement.expression.value === "use strict")) {
23
- context.report(node, "Use the global form of \"use strict\".");
24
- }
25
- }
26
- }
27
- };
28
-
29
- } else { // mode = "never"
30
-
31
- return {
32
- "ExpressionStatement": function(node) {
33
- var parent = context.getAncestors().pop();
34
-
35
- if (node.expression.value === "use strict" && parent.type === "Program") {
36
- context.report(node, "Use the function form of \"use strict\".");
37
- }
38
- }
39
- };
40
-
41
- }
42
-
43
- };
44
-
45
- module.exports.schema = [
46
- {
47
- "enum": ["always", "never"]
48
- }
49
- ];
1
+ /**
2
+ * @fileoverview Rule to flag or require global strict mode.
3
+ * @author Nicholas C. Zakas
4
+ */
5
+ "use strict";
6
+
7
+ //------------------------------------------------------------------------------
8
+ // Rule Definition
9
+ //------------------------------------------------------------------------------
10
+
11
+ module.exports = function(context) {
12
+
13
+ var mode = context.options[0];
14
+
15
+ if (mode === "always") {
16
+
17
+ return {
18
+ "Program": function(node) {
19
+ if (node.body.length > 0) {
20
+ var statement = node.body[0];
21
+
22
+ if (!(statement.type === "ExpressionStatement" && statement.expression.value === "use strict")) {
23
+ context.report(node, "Use the global form of \"use strict\".");
24
+ }
25
+ }
26
+ }
27
+ };
28
+
29
+ } else { // mode = "never"
30
+
31
+ return {
32
+ "ExpressionStatement": function(node) {
33
+ var parent = context.getAncestors().pop();
34
+
35
+ if (node.expression.value === "use strict" && parent.type === "Program") {
36
+ context.report(node, "Use the function form of \"use strict\".");
37
+ }
38
+ }
39
+ };
40
+
41
+ }
42
+
43
+ };
44
+
45
+ module.exports.schema = [
46
+ {
47
+ "enum": ["always", "never"]
48
+ }
49
+ ];
@@ -1,32 +1,32 @@
1
- /**
2
- * @fileoverview Rule to flag for-in loops without if statements inside
3
- * @author Nicholas C. Zakas
4
- */
5
-
6
- "use strict";
7
-
8
- //------------------------------------------------------------------------------
9
- // Rule Definition
10
- //------------------------------------------------------------------------------
11
-
12
- module.exports = function(context) {
13
-
14
- return {
15
-
16
- "ForInStatement": function(node) {
17
-
18
- /*
19
- * If the for-in statement has {}, then the real body is the body
20
- * of the BlockStatement. Otherwise, just use body as provided.
21
- */
22
- var body = node.body.type === "BlockStatement" ? node.body.body[0] : node.body;
23
-
24
- if (body && body.type !== "IfStatement") {
25
- context.report(node, "The body of a for-in should be wrapped in an if statement to filter unwanted properties from the prototype.");
26
- }
27
- }
28
- };
29
-
30
- };
31
-
32
- module.exports.schema = [];
1
+ /**
2
+ * @fileoverview Rule to flag for-in loops without if statements inside
3
+ * @author Nicholas C. Zakas
4
+ */
5
+
6
+ "use strict";
7
+
8
+ //------------------------------------------------------------------------------
9
+ // Rule Definition
10
+ //------------------------------------------------------------------------------
11
+
12
+ module.exports = function(context) {
13
+
14
+ return {
15
+
16
+ "ForInStatement": function(node) {
17
+
18
+ /*
19
+ * If the for-in statement has {}, then the real body is the body
20
+ * of the BlockStatement. Otherwise, just use body as provided.
21
+ */
22
+ var body = node.body.type === "BlockStatement" ? node.body.body[0] : node.body;
23
+
24
+ if (body && body.type !== "IfStatement") {
25
+ context.report(node, "The body of a for-in should be wrapped in an if statement to filter unwanted properties from the prototype.");
26
+ }
27
+ }
28
+ };
29
+
30
+ };
31
+
32
+ module.exports.schema = [];