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
@@ -0,0 +1,91 @@
1
+ /**
2
+ * @fileoverview A rule to suggest using of const declaration for variables that are never modified after declared.
3
+ * @author Toru Nagashima
4
+ * @copyright 2015 Toru Nagashima. All rights reserved.
5
+ */
6
+
7
+ "use strict";
8
+
9
+ //------------------------------------------------------------------------------
10
+ // Rule Definition
11
+ //------------------------------------------------------------------------------
12
+
13
+ module.exports = function(context) {
14
+
15
+ /**
16
+ * Checks whether a reference is the initializer.
17
+ * @param {Reference} reference - A reference to check.
18
+ * @returns {boolean} Whether or not the reference is the initializer.
19
+ */
20
+ function isInitializer(reference) {
21
+ return reference.init === true;
22
+ }
23
+
24
+ /**
25
+ * Checks whether a reference is read-only or the initializer.
26
+ * @param {Reference} reference - A reference to check.
27
+ * @returns {boolean} Whether or not the reference is read-only or the initializer.
28
+ */
29
+ function isReadOnlyOrInitializer(reference) {
30
+ return reference.isReadOnly() || reference.init === true;
31
+ }
32
+
33
+ /**
34
+ * Searches and reports variables that are never modified after declared.
35
+ * @param {Scope} scope - A scope of the search domain.
36
+ * @returns {void}
37
+ */
38
+ function checkForVariables(scope) {
39
+ // Skip the TDZ type.
40
+ if (scope.type === "TDZ") {
41
+ return;
42
+ }
43
+
44
+ var variables = scope.variables;
45
+ for (var i = 0, end = variables.length; i < end; ++i) {
46
+ var variable = variables[i];
47
+ var def = variable.defs[0];
48
+ var declaration = def && def.parent;
49
+ var statement = declaration && declaration.parent;
50
+ var references = variable.references;
51
+ var identifier = variable.identifiers[0];
52
+
53
+ if (statement != null &&
54
+ identifier != null &&
55
+ declaration.type === "VariableDeclaration" &&
56
+ declaration.kind === "let" &&
57
+ (statement.type !== "ForStatement" || statement.init !== declaration) &&
58
+ references.some(isInitializer) &&
59
+ references.every(isReadOnlyOrInitializer)
60
+ ) {
61
+ context.report(
62
+ identifier,
63
+ "`{{name}}` is never modified, use `const` instead.",
64
+ {name: identifier.name});
65
+ }
66
+ }
67
+ }
68
+
69
+ /**
70
+ * Adds multiple items to the tail of an array.
71
+ * @param {any[]} array - A destination to add.
72
+ * @param {any[]} values - Items to be added.
73
+ * @returns {void}
74
+ */
75
+ var pushAll = Function.apply.bind(Array.prototype.push);
76
+
77
+ return {
78
+ "Program:exit": function () {
79
+ var stack = [context.getScope()];
80
+ while (stack.length) {
81
+ var scope = stack.pop();
82
+ pushAll(stack, scope.childScopes);
83
+
84
+ checkForVariables(scope);
85
+ }
86
+ }
87
+ };
88
+
89
+ };
90
+
91
+ module.exports.schema = [];
@@ -1,72 +1,72 @@
1
- /**
2
- * @fileoverview Rule to flag non-quoted property names in object literals.
3
- * @author Mathias Bynens <http://mathiasbynens.be/>
4
- * @copyright 2014 Brandon Mills. All rights reserved.
5
- */
6
- "use strict";
7
-
8
- //------------------------------------------------------------------------------
9
- // Requirements
10
- //------------------------------------------------------------------------------
11
-
12
- var espree = require("espree");
13
-
14
- //------------------------------------------------------------------------------
15
- // Rule Definition
16
- //------------------------------------------------------------------------------
17
-
18
- module.exports = function(context) {
19
-
20
- var MODE = context.options[0];
21
-
22
- /**
23
- * Ensures that a property's key is quoted only when necessary
24
- * @param {ASTNode} node Property AST node
25
- * @returns {void}
26
- */
27
- function asNeeded(node) {
28
- var key = node.key,
29
- tokens;
30
-
31
- if (key.type === "Literal" && typeof key.value === "string") {
32
- try {
33
- tokens = espree.tokenize(key.value);
34
- } catch (e) {
35
- return;
36
- }
37
-
38
- if (tokens.length === 1 &&
39
- (["Identifier", "Null", "Boolean"].indexOf(tokens[0].type) >= 0 ||
40
- (tokens[0].type === "Numeric" && "" + +tokens[0].value === tokens[0].value))
41
- ) {
42
- context.report(node, "Unnecessarily quoted property `{{value}}` found.", key);
43
- }
44
- }
45
- }
46
-
47
- /**
48
- * Ensures that a property's key is quoted
49
- * @param {ASTNode} node Property AST node
50
- * @returns {void}
51
- */
52
- function always(node) {
53
- var key = node.key;
54
-
55
- if (!node.method && !(key.type === "Literal" && typeof key.value === "string")) {
56
- context.report(node, "Unquoted property `{{key}}` found.", {
57
- key: key.name || key.value
58
- });
59
- }
60
- }
61
-
62
- return {
63
- "Property": MODE === "as-needed" ? asNeeded : always
64
- };
65
-
66
- };
67
-
68
- module.exports.schema = [
69
- {
70
- "enum": ["always", "as-needed"]
71
- }
72
- ];
1
+ /**
2
+ * @fileoverview Rule to flag non-quoted property names in object literals.
3
+ * @author Mathias Bynens <http://mathiasbynens.be/>
4
+ * @copyright 2014 Brandon Mills. All rights reserved.
5
+ */
6
+ "use strict";
7
+
8
+ //------------------------------------------------------------------------------
9
+ // Requirements
10
+ //------------------------------------------------------------------------------
11
+
12
+ var espree = require("espree");
13
+
14
+ //------------------------------------------------------------------------------
15
+ // Rule Definition
16
+ //------------------------------------------------------------------------------
17
+
18
+ module.exports = function(context) {
19
+
20
+ var MODE = context.options[0];
21
+
22
+ /**
23
+ * Ensures that a property's key is quoted only when necessary
24
+ * @param {ASTNode} node Property AST node
25
+ * @returns {void}
26
+ */
27
+ function asNeeded(node) {
28
+ var key = node.key,
29
+ tokens;
30
+
31
+ if (key.type === "Literal" && typeof key.value === "string") {
32
+ try {
33
+ tokens = espree.tokenize(key.value);
34
+ } catch (e) {
35
+ return;
36
+ }
37
+
38
+ if (tokens.length === 1 &&
39
+ (["Identifier", "Null", "Boolean"].indexOf(tokens[0].type) >= 0 ||
40
+ (tokens[0].type === "Numeric" && "" + +tokens[0].value === tokens[0].value))
41
+ ) {
42
+ context.report(node, "Unnecessarily quoted property `{{value}}` found.", key);
43
+ }
44
+ }
45
+ }
46
+
47
+ /**
48
+ * Ensures that a property's key is quoted
49
+ * @param {ASTNode} node Property AST node
50
+ * @returns {void}
51
+ */
52
+ function always(node) {
53
+ var key = node.key;
54
+
55
+ if (!node.method && !(key.type === "Literal" && typeof key.value === "string")) {
56
+ context.report(node, "Unquoted property `{{key}}` found.", {
57
+ key: key.name || key.value
58
+ });
59
+ }
60
+ }
61
+
62
+ return {
63
+ "Property": MODE === "as-needed" ? asNeeded : always
64
+ };
65
+
66
+ };
67
+
68
+ module.exports.schema = [
69
+ {
70
+ "enum": ["always", "as-needed"]
71
+ }
72
+ ];
@@ -1,92 +1,92 @@
1
- /**
2
- * @fileoverview A rule to choose between single and double quote marks
3
- * @author Matt DuVall <http://www.mattduvall.com/>, Brandon Payton
4
- */
5
-
6
- "use strict";
7
-
8
- //------------------------------------------------------------------------------
9
- // Constants
10
- //------------------------------------------------------------------------------
11
-
12
- var QUOTE_SETTINGS = {
13
- "double": {
14
- quote: "\"",
15
- alternateQuote: "'",
16
- description: "doublequote"
17
- },
18
- "single": {
19
- quote: "'",
20
- alternateQuote: "\"",
21
- description: "singlequote"
22
- },
23
- "backtick": {
24
- quote: "`",
25
- alternateQuote: "\"",
26
- description: "backtick"
27
- }
28
- };
29
-
30
- var AVOID_ESCAPE = "avoid-escape";
31
-
32
- //------------------------------------------------------------------------------
33
- // Rule Definition
34
- //------------------------------------------------------------------------------
35
-
36
- module.exports = function(context) {
37
-
38
- /**
39
- * Validate that a string passed in is surrounded by the specified character
40
- * @param {string} val The text to check.
41
- * @param {string} character The character to see if it's surrounded by.
42
- * @returns {boolean} True if the text is surrounded by the character, false if not.
43
- * @private
44
- */
45
- function isSurroundedBy(val, character) {
46
- return val[0] === character && val[val.length - 1] === character;
47
- }
48
-
49
- /**
50
- * Determines if a given node is part of JSX syntax.
51
- * @param {ASTNode} node The node to check.
52
- * @returns {boolean} True if the node is a JSX node, false if not.
53
- * @private
54
- */
55
- function isJSXElement(node) {
56
- return node.type.indexOf("JSX") === 0;
57
- }
58
-
59
- return {
60
-
61
- "Literal": function(node) {
62
- var val = node.value,
63
- rawVal = node.raw,
64
- quoteOption = context.options[0],
65
- settings = QUOTE_SETTINGS[quoteOption || "double"],
66
- avoidEscape = context.options[1] === AVOID_ESCAPE,
67
- isValid;
68
-
69
- if (settings && typeof val === "string") {
70
- isValid = isJSXElement(node.parent) || isSurroundedBy(rawVal, settings.quote);
71
-
72
- if (!isValid && avoidEscape) {
73
- isValid = isSurroundedBy(rawVal, settings.alternateQuote) && rawVal.indexOf(settings.quote) >= 0;
74
- }
75
-
76
- if (!isValid) {
77
- context.report(node, "Strings must use " + settings.description + ".");
78
- }
79
- }
80
- }
81
- };
82
-
83
- };
84
-
85
- module.exports.schema = [
86
- {
87
- "enum": ["single", "double", "backtick"]
88
- },
89
- {
90
- "enum": ["avoid-escape"]
91
- }
92
- ];
1
+ /**
2
+ * @fileoverview A rule to choose between single and double quote marks
3
+ * @author Matt DuVall <http://www.mattduvall.com/>, Brandon Payton
4
+ */
5
+
6
+ "use strict";
7
+
8
+ //------------------------------------------------------------------------------
9
+ // Constants
10
+ //------------------------------------------------------------------------------
11
+
12
+ var QUOTE_SETTINGS = {
13
+ "double": {
14
+ quote: "\"",
15
+ alternateQuote: "'",
16
+ description: "doublequote"
17
+ },
18
+ "single": {
19
+ quote: "'",
20
+ alternateQuote: "\"",
21
+ description: "singlequote"
22
+ },
23
+ "backtick": {
24
+ quote: "`",
25
+ alternateQuote: "\"",
26
+ description: "backtick"
27
+ }
28
+ };
29
+
30
+ var AVOID_ESCAPE = "avoid-escape";
31
+
32
+ //------------------------------------------------------------------------------
33
+ // Rule Definition
34
+ //------------------------------------------------------------------------------
35
+
36
+ module.exports = function(context) {
37
+
38
+ /**
39
+ * Validate that a string passed in is surrounded by the specified character
40
+ * @param {string} val The text to check.
41
+ * @param {string} character The character to see if it's surrounded by.
42
+ * @returns {boolean} True if the text is surrounded by the character, false if not.
43
+ * @private
44
+ */
45
+ function isSurroundedBy(val, character) {
46
+ return val[0] === character && val[val.length - 1] === character;
47
+ }
48
+
49
+ /**
50
+ * Determines if a given node is part of JSX syntax.
51
+ * @param {ASTNode} node The node to check.
52
+ * @returns {boolean} True if the node is a JSX node, false if not.
53
+ * @private
54
+ */
55
+ function isJSXElement(node) {
56
+ return node.type.indexOf("JSX") === 0;
57
+ }
58
+
59
+ return {
60
+
61
+ "Literal": function(node) {
62
+ var val = node.value,
63
+ rawVal = node.raw,
64
+ quoteOption = context.options[0],
65
+ settings = QUOTE_SETTINGS[quoteOption || "double"],
66
+ avoidEscape = context.options[1] === AVOID_ESCAPE,
67
+ isValid;
68
+
69
+ if (settings && typeof val === "string") {
70
+ isValid = isJSXElement(node.parent) || isSurroundedBy(rawVal, settings.quote);
71
+
72
+ if (!isValid && avoidEscape) {
73
+ isValid = isSurroundedBy(rawVal, settings.alternateQuote) && rawVal.indexOf(settings.quote) >= 0;
74
+ }
75
+
76
+ if (!isValid) {
77
+ context.report(node, "Strings must use " + settings.description + ".");
78
+ }
79
+ }
80
+ }
81
+ };
82
+
83
+ };
84
+
85
+ module.exports.schema = [
86
+ {
87
+ "enum": ["single", "double", "backtick"]
88
+ },
89
+ {
90
+ "enum": ["avoid-escape"]
91
+ }
92
+ ];
@@ -1,41 +1,41 @@
1
- /**
2
- * @fileoverview Rule to flag use of parseInt without a radix argument
3
- * @author James Allardice
4
- */
5
-
6
- "use strict";
7
-
8
- //------------------------------------------------------------------------------
9
- // Rule Definition
10
- //------------------------------------------------------------------------------
11
-
12
- module.exports = function(context) {
13
-
14
- return {
15
- "CallExpression": function(node) {
16
-
17
- var radix;
18
-
19
- if (node.callee.name === "parseInt") {
20
-
21
- if (node.arguments.length < 2) {
22
- context.report(node, "Missing radix parameter.");
23
- } else {
24
-
25
- radix = node.arguments[1];
26
-
27
- // don't allow non-numeric literals or undefined
28
- if ((radix.type === "Literal" && typeof radix.value !== "number") ||
29
- (radix.type === "Identifier" && radix.name === "undefined")
30
- ) {
31
- context.report(node, "Invalid radix parameter.");
32
- }
33
- }
34
-
35
- }
36
- }
37
- };
38
-
39
- };
40
-
41
- module.exports.schema = [];
1
+ /**
2
+ * @fileoverview Rule to flag use of parseInt without a radix argument
3
+ * @author James Allardice
4
+ */
5
+
6
+ "use strict";
7
+
8
+ //------------------------------------------------------------------------------
9
+ // Rule Definition
10
+ //------------------------------------------------------------------------------
11
+
12
+ module.exports = function(context) {
13
+
14
+ return {
15
+ "CallExpression": function(node) {
16
+
17
+ var radix;
18
+
19
+ if (node.callee.name === "parseInt") {
20
+
21
+ if (node.arguments.length < 2) {
22
+ context.report(node, "Missing radix parameter.");
23
+ } else {
24
+
25
+ radix = node.arguments[1];
26
+
27
+ // don't allow non-numeric literals or undefined
28
+ if ((radix.type === "Literal" && typeof radix.value !== "number") ||
29
+ (radix.type === "Identifier" && radix.name === "undefined")
30
+ ) {
31
+ context.report(node, "Invalid radix parameter.");
32
+ }
33
+ }
34
+
35
+ }
36
+ }
37
+ };
38
+
39
+ };
40
+
41
+ module.exports.schema = [];