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.
- package/LICENSE +20 -20
- package/README.md +111 -95
- package/bin/eslint.js +41 -41
- package/conf/environments.js +87 -81
- package/conf/eslint.json +186 -179
- package/lib/api.js +13 -12
- package/lib/cli-engine.js +441 -451
- package/lib/cli.js +196 -196
- package/lib/config-initializer.js +145 -145
- package/lib/config-validator.js +110 -110
- package/lib/config.js +428 -416
- package/lib/eslint.js +1072 -1073
- package/lib/file-finder.js +167 -167
- package/lib/formatters/checkstyle.js +68 -68
- package/lib/formatters/compact.js +53 -53
- package/lib/formatters/jslint-xml.js +40 -40
- package/lib/formatters/junit.js +63 -63
- package/lib/formatters/stylish.js +90 -90
- package/lib/formatters/tap.js +86 -86
- package/lib/ignored-paths.js +137 -137
- package/lib/load-rules.js +39 -39
- package/lib/options.js +132 -126
- package/lib/rule-context.js +107 -107
- package/lib/rules/accessor-pairs.js +65 -65
- package/lib/rules/array-bracket-spacing.js +180 -0
- package/lib/rules/block-scoped-var.js +339 -320
- package/lib/rules/brace-style.js +228 -228
- package/lib/rules/camelcase.js +111 -111
- package/lib/rules/comma-dangle.js +67 -64
- package/lib/rules/comma-spacing.js +191 -191
- package/lib/rules/comma-style.js +195 -195
- package/lib/rules/complexity.js +94 -94
- package/lib/rules/computed-property-spacing.js +144 -0
- package/lib/rules/consistent-return.js +75 -75
- package/lib/rules/consistent-this.js +119 -119
- package/lib/rules/constructor-super.js +108 -0
- package/lib/rules/curly.js +109 -109
- package/lib/rules/default-case.js +66 -66
- package/lib/rules/dot-location.js +63 -63
- package/lib/rules/dot-notation.js +119 -119
- package/lib/rules/eol-last.js +38 -38
- package/lib/rules/eqeqeq.js +96 -96
- package/lib/rules/func-names.js +45 -45
- package/lib/rules/func-style.js +49 -49
- package/lib/rules/generator-star-spacing.js +104 -87
- package/lib/rules/generator-star.js +76 -76
- package/lib/rules/global-strict.js +49 -49
- package/lib/rules/guard-for-in.js +32 -32
- package/lib/rules/handle-callback-err.js +81 -124
- package/lib/rules/indent.js +486 -486
- package/lib/rules/key-spacing.js +325 -325
- package/lib/rules/linebreak-style.js +44 -44
- package/lib/rules/lines-around-comment.js +228 -160
- package/lib/rules/max-depth.js +89 -89
- package/lib/rules/max-len.js +76 -76
- package/lib/rules/max-nested-callbacks.js +73 -73
- package/lib/rules/max-params.js +45 -45
- package/lib/rules/max-statements.js +61 -61
- package/lib/rules/new-cap.js +224 -224
- package/lib/rules/new-parens.js +29 -29
- package/lib/rules/newline-after-var.js +127 -127
- package/lib/rules/no-alert.js +153 -153
- package/lib/rules/no-array-constructor.js +31 -31
- package/lib/rules/no-bitwise.js +57 -57
- package/lib/rules/no-caller.js +29 -29
- package/lib/rules/no-catch-shadow.js +52 -52
- package/lib/rules/no-comma-dangle.js +45 -45
- package/lib/rules/no-cond-assign.js +123 -123
- package/lib/rules/no-console.js +27 -27
- package/lib/rules/no-constant-condition.js +73 -73
- package/lib/rules/no-continue.js +23 -23
- package/lib/rules/no-control-regex.js +58 -58
- package/lib/rules/no-debugger.js +22 -22
- package/lib/rules/no-delete-var.js +25 -25
- package/lib/rules/no-div-regex.js +27 -27
- package/lib/rules/no-dupe-args.js +89 -85
- package/lib/rules/no-dupe-keys.js +43 -43
- package/lib/rules/no-duplicate-case.js +67 -67
- package/lib/rules/no-else-return.js +125 -125
- package/lib/rules/no-empty-character-class.js +43 -43
- package/lib/rules/no-empty-class.js +45 -45
- package/lib/rules/no-empty-label.js +27 -27
- package/lib/rules/no-empty.js +49 -49
- package/lib/rules/no-eq-null.js +29 -29
- package/lib/rules/no-eval.js +26 -26
- package/lib/rules/no-ex-assign.js +42 -42
- package/lib/rules/no-extend-native.js +103 -103
- package/lib/rules/no-extra-bind.js +81 -81
- package/lib/rules/no-extra-boolean-cast.js +71 -71
- package/lib/rules/no-extra-parens.js +368 -355
- package/lib/rules/no-extra-semi.js +70 -23
- package/lib/rules/no-extra-strict.js +86 -86
- package/lib/rules/no-fallthrough.js +97 -97
- package/lib/rules/no-floating-decimal.js +30 -30
- package/lib/rules/no-func-assign.js +83 -83
- package/lib/rules/no-implied-eval.js +76 -76
- package/lib/rules/no-inline-comments.js +49 -49
- package/lib/rules/no-inner-declarations.js +78 -78
- package/lib/rules/no-invalid-regexp.js +53 -53
- package/lib/rules/no-irregular-whitespace.js +135 -135
- package/lib/rules/no-iterator.js +28 -28
- package/lib/rules/no-label-var.js +64 -64
- package/lib/rules/no-labels.js +44 -44
- package/lib/rules/no-lone-blocks.js +106 -27
- package/lib/rules/no-lonely-if.js +30 -30
- package/lib/rules/no-loop-func.js +58 -58
- package/lib/rules/no-mixed-requires.js +165 -165
- package/lib/rules/no-mixed-spaces-and-tabs.js +74 -74
- package/lib/rules/no-multi-spaces.js +119 -119
- package/lib/rules/no-multi-str.js +43 -43
- package/lib/rules/no-multiple-empty-lines.js +98 -98
- package/lib/rules/no-native-reassign.js +62 -62
- package/lib/rules/no-negated-in-lhs.js +25 -25
- package/lib/rules/no-nested-ternary.js +24 -24
- package/lib/rules/no-new-func.js +25 -25
- package/lib/rules/no-new-object.js +25 -25
- package/lib/rules/no-new-require.js +25 -25
- package/lib/rules/no-new-wrappers.js +26 -26
- package/lib/rules/no-new.js +27 -27
- package/lib/rules/no-obj-calls.js +28 -28
- package/lib/rules/no-octal-escape.js +39 -39
- package/lib/rules/no-octal.js +25 -25
- package/lib/rules/no-param-reassign.js +87 -87
- package/lib/rules/no-path-concat.js +39 -39
- package/lib/rules/no-plusplus.js +24 -24
- package/lib/rules/no-process-env.js +30 -30
- package/lib/rules/no-process-exit.js +33 -33
- package/lib/rules/no-proto.js +28 -28
- package/lib/rules/no-redeclare.js +68 -68
- package/lib/rules/no-regex-spaces.js +35 -35
- package/lib/rules/no-reserved-keys.js +56 -56
- package/lib/rules/no-restricted-modules.js +85 -85
- package/lib/rules/no-return-assign.js +53 -24
- package/lib/rules/no-script-url.js +34 -34
- package/lib/rules/no-self-compare.js +29 -29
- package/lib/rules/no-sequences.js +94 -94
- package/lib/rules/no-shadow-restricted-names.js +51 -51
- package/lib/rules/no-shadow.js +181 -136
- package/lib/rules/no-space-before-semi.js +98 -98
- package/lib/rules/no-spaced-func.js +37 -37
- package/lib/rules/no-sparse-arrays.js +33 -33
- package/lib/rules/no-sync.js +30 -30
- package/lib/rules/no-ternary.js +24 -24
- package/lib/rules/no-this-before-super.js +144 -0
- package/lib/rules/no-throw-literal.js +33 -33
- package/lib/rules/no-trailing-spaces.js +74 -63
- package/lib/rules/no-undef-init.js +28 -28
- package/lib/rules/no-undef.js +92 -92
- package/lib/rules/no-undefined.js +27 -27
- package/lib/rules/no-underscore-dangle.js +73 -73
- package/lib/rules/no-unexpected-multiline.js +58 -0
- package/lib/rules/no-unneeded-ternary.js +48 -48
- package/lib/rules/no-unreachable.js +98 -98
- package/lib/rules/no-unused-expressions.js +76 -76
- package/lib/rules/no-unused-vars.js +252 -250
- package/lib/rules/no-use-before-define.js +105 -105
- package/lib/rules/no-var.js +26 -26
- package/lib/rules/no-void.js +28 -28
- package/lib/rules/no-warning-comments.js +102 -102
- package/lib/rules/no-with.js +22 -22
- package/lib/rules/no-wrap-func.js +65 -65
- package/lib/rules/object-curly-spacing.js +231 -206
- package/lib/rules/object-shorthand.js +74 -73
- package/lib/rules/one-var.js +311 -304
- package/lib/rules/operator-assignment.js +118 -118
- package/lib/rules/operator-linebreak.js +114 -114
- package/lib/rules/padded-blocks.js +98 -98
- package/lib/rules/prefer-const.js +91 -0
- package/lib/rules/quote-props.js +72 -72
- package/lib/rules/quotes.js +92 -92
- package/lib/rules/radix.js +41 -41
- package/lib/rules/semi-spacing.js +167 -167
- package/lib/rules/semi.js +136 -136
- package/lib/rules/sort-vars.js +49 -49
- package/lib/rules/space-after-function-name.js +49 -49
- package/lib/rules/space-after-keywords.js +82 -82
- package/lib/rules/space-before-blocks.js +91 -91
- package/lib/rules/space-before-function-paren.js +139 -139
- package/lib/rules/space-before-function-parentheses.js +139 -139
- package/lib/rules/space-in-brackets.js +305 -305
- package/lib/rules/space-in-parens.js +281 -281
- package/lib/rules/space-infix-ops.js +106 -106
- package/lib/rules/space-return-throw-case.js +38 -38
- package/lib/rules/space-unary-ops.js +124 -133
- package/lib/rules/spaced-comment.js +143 -0
- package/lib/rules/spaced-line-comment.js +89 -89
- package/lib/rules/strict.js +242 -242
- package/lib/rules/use-isnan.js +26 -26
- package/lib/rules/valid-jsdoc.js +215 -215
- package/lib/rules/valid-typeof.js +42 -42
- package/lib/rules/vars-on-top.js +115 -115
- package/lib/rules/wrap-iife.js +48 -48
- package/lib/rules/wrap-regex.js +38 -38
- package/lib/rules/yoda.js +242 -225
- package/lib/rules.js +88 -88
- package/lib/timing.js +109 -109
- package/lib/token-store.js +201 -201
- package/lib/util/traverse.js +105 -105
- package/lib/util.js +125 -85
- package/package.json +6 -6
- package/CHANGELOG.md +0 -1638
@@ -1,73 +1,73 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to flag use constant conditions
|
3
|
-
* @author Christian Schulz <http://rndm.de>
|
4
|
-
* @copyright 2014 Christian Schulz. All rights reserved.
|
5
|
-
*/
|
6
|
-
|
7
|
-
"use strict";
|
8
|
-
|
9
|
-
//------------------------------------------------------------------------------
|
10
|
-
// Rule Definition
|
11
|
-
//------------------------------------------------------------------------------
|
12
|
-
|
13
|
-
module.exports = function(context) {
|
14
|
-
|
15
|
-
//--------------------------------------------------------------------------
|
16
|
-
// Helpers
|
17
|
-
//--------------------------------------------------------------------------
|
18
|
-
|
19
|
-
/**
|
20
|
-
* Checks if a node has a constant truthiness value.
|
21
|
-
* @param {ASTNode} node The AST node to check.
|
22
|
-
* @returns {Bool} true when node's truthiness is constant
|
23
|
-
* @private
|
24
|
-
*/
|
25
|
-
function isConstant(node) {
|
26
|
-
switch (node.type) {
|
27
|
-
case "Literal":
|
28
|
-
case "ArrowFunctionExpression":
|
29
|
-
case "FunctionExpression":
|
30
|
-
case "ObjectExpression":
|
31
|
-
case "ArrayExpression":
|
32
|
-
return true;
|
33
|
-
case "UnaryExpression":
|
34
|
-
return isConstant(node.argument);
|
35
|
-
case "BinaryExpression":
|
36
|
-
case "LogicalExpression":
|
37
|
-
return isConstant(node.left) && isConstant(node.right);
|
38
|
-
case "AssignmentExpression":
|
39
|
-
return (node.operator === "=") && isConstant(node.right);
|
40
|
-
case "SequenceExpression":
|
41
|
-
return isConstant(node.expressions[node.expressions.length - 1]);
|
42
|
-
// no default
|
43
|
-
}
|
44
|
-
return false;
|
45
|
-
}
|
46
|
-
|
47
|
-
/**
|
48
|
-
* Reports when the given node contains a constant condition.
|
49
|
-
* @param {ASTNode} node The AST node to check.
|
50
|
-
* @returns {void}
|
51
|
-
* @private
|
52
|
-
*/
|
53
|
-
function checkConstantCondition(node) {
|
54
|
-
if (node.test && isConstant(node.test)) {
|
55
|
-
context.report(node, "Unexpected constant condition.");
|
56
|
-
}
|
57
|
-
}
|
58
|
-
|
59
|
-
//--------------------------------------------------------------------------
|
60
|
-
// Public
|
61
|
-
//--------------------------------------------------------------------------
|
62
|
-
|
63
|
-
return {
|
64
|
-
"ConditionalExpression": checkConstantCondition,
|
65
|
-
"IfStatement": checkConstantCondition,
|
66
|
-
"WhileStatement": checkConstantCondition,
|
67
|
-
"DoWhileStatement": checkConstantCondition,
|
68
|
-
"ForStatement": checkConstantCondition
|
69
|
-
};
|
70
|
-
|
71
|
-
};
|
72
|
-
|
73
|
-
module.exports.schema = [];
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to flag use constant conditions
|
3
|
+
* @author Christian Schulz <http://rndm.de>
|
4
|
+
* @copyright 2014 Christian Schulz. All rights reserved.
|
5
|
+
*/
|
6
|
+
|
7
|
+
"use strict";
|
8
|
+
|
9
|
+
//------------------------------------------------------------------------------
|
10
|
+
// Rule Definition
|
11
|
+
//------------------------------------------------------------------------------
|
12
|
+
|
13
|
+
module.exports = function(context) {
|
14
|
+
|
15
|
+
//--------------------------------------------------------------------------
|
16
|
+
// Helpers
|
17
|
+
//--------------------------------------------------------------------------
|
18
|
+
|
19
|
+
/**
|
20
|
+
* Checks if a node has a constant truthiness value.
|
21
|
+
* @param {ASTNode} node The AST node to check.
|
22
|
+
* @returns {Bool} true when node's truthiness is constant
|
23
|
+
* @private
|
24
|
+
*/
|
25
|
+
function isConstant(node) {
|
26
|
+
switch (node.type) {
|
27
|
+
case "Literal":
|
28
|
+
case "ArrowFunctionExpression":
|
29
|
+
case "FunctionExpression":
|
30
|
+
case "ObjectExpression":
|
31
|
+
case "ArrayExpression":
|
32
|
+
return true;
|
33
|
+
case "UnaryExpression":
|
34
|
+
return isConstant(node.argument);
|
35
|
+
case "BinaryExpression":
|
36
|
+
case "LogicalExpression":
|
37
|
+
return isConstant(node.left) && isConstant(node.right);
|
38
|
+
case "AssignmentExpression":
|
39
|
+
return (node.operator === "=") && isConstant(node.right);
|
40
|
+
case "SequenceExpression":
|
41
|
+
return isConstant(node.expressions[node.expressions.length - 1]);
|
42
|
+
// no default
|
43
|
+
}
|
44
|
+
return false;
|
45
|
+
}
|
46
|
+
|
47
|
+
/**
|
48
|
+
* Reports when the given node contains a constant condition.
|
49
|
+
* @param {ASTNode} node The AST node to check.
|
50
|
+
* @returns {void}
|
51
|
+
* @private
|
52
|
+
*/
|
53
|
+
function checkConstantCondition(node) {
|
54
|
+
if (node.test && isConstant(node.test)) {
|
55
|
+
context.report(node, "Unexpected constant condition.");
|
56
|
+
}
|
57
|
+
}
|
58
|
+
|
59
|
+
//--------------------------------------------------------------------------
|
60
|
+
// Public
|
61
|
+
//--------------------------------------------------------------------------
|
62
|
+
|
63
|
+
return {
|
64
|
+
"ConditionalExpression": checkConstantCondition,
|
65
|
+
"IfStatement": checkConstantCondition,
|
66
|
+
"WhileStatement": checkConstantCondition,
|
67
|
+
"DoWhileStatement": checkConstantCondition,
|
68
|
+
"ForStatement": checkConstantCondition
|
69
|
+
};
|
70
|
+
|
71
|
+
};
|
72
|
+
|
73
|
+
module.exports.schema = [];
|
package/lib/rules/no-continue.js
CHANGED
@@ -1,23 +1,23 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to flag use of continue statement
|
3
|
-
* @author Borislav Zhivkov
|
4
|
-
* @copyright 2015 Borislav Zhivkov. All rights reserved.
|
5
|
-
*/
|
6
|
-
|
7
|
-
"use strict";
|
8
|
-
|
9
|
-
//------------------------------------------------------------------------------
|
10
|
-
// Rule Definition
|
11
|
-
//------------------------------------------------------------------------------
|
12
|
-
|
13
|
-
module.exports = function(context) {
|
14
|
-
|
15
|
-
return {
|
16
|
-
"ContinueStatement": function(node) {
|
17
|
-
context.report(node, "Unexpected use of continue statement");
|
18
|
-
}
|
19
|
-
};
|
20
|
-
|
21
|
-
};
|
22
|
-
|
23
|
-
module.exports.schema = [];
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to flag use of continue statement
|
3
|
+
* @author Borislav Zhivkov
|
4
|
+
* @copyright 2015 Borislav Zhivkov. All rights reserved.
|
5
|
+
*/
|
6
|
+
|
7
|
+
"use strict";
|
8
|
+
|
9
|
+
//------------------------------------------------------------------------------
|
10
|
+
// Rule Definition
|
11
|
+
//------------------------------------------------------------------------------
|
12
|
+
|
13
|
+
module.exports = function(context) {
|
14
|
+
|
15
|
+
return {
|
16
|
+
"ContinueStatement": function(node) {
|
17
|
+
context.report(node, "Unexpected use of continue statement");
|
18
|
+
}
|
19
|
+
};
|
20
|
+
|
21
|
+
};
|
22
|
+
|
23
|
+
module.exports.schema = [];
|
@@ -1,58 +1,58 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to forbid control charactes from regular expressions.
|
3
|
-
* @author Nicholas C. Zakas
|
4
|
-
*/
|
5
|
-
|
6
|
-
"use strict";
|
7
|
-
|
8
|
-
//------------------------------------------------------------------------------
|
9
|
-
// Rule Definition
|
10
|
-
//------------------------------------------------------------------------------
|
11
|
-
|
12
|
-
module.exports = function(context) {
|
13
|
-
|
14
|
-
function getRegExp(node) {
|
15
|
-
|
16
|
-
if (node.value instanceof RegExp) {
|
17
|
-
return node.value;
|
18
|
-
} else if (typeof node.value === "string") {
|
19
|
-
|
20
|
-
var parent = context.getAncestors().pop();
|
21
|
-
if ((parent.type === "NewExpression" || parent.type === "CallExpression") &&
|
22
|
-
parent.callee.type === "Identifier" && parent.callee.name === "RegExp") {
|
23
|
-
|
24
|
-
// there could be an invalid regular expression string
|
25
|
-
try {
|
26
|
-
return new RegExp(node.value);
|
27
|
-
} catch (ex) {
|
28
|
-
return null;
|
29
|
-
}
|
30
|
-
|
31
|
-
}
|
32
|
-
} else {
|
33
|
-
return null;
|
34
|
-
}
|
35
|
-
|
36
|
-
}
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
return {
|
41
|
-
|
42
|
-
"Literal": function(node) {
|
43
|
-
|
44
|
-
var computedValue,
|
45
|
-
regex = getRegExp(node);
|
46
|
-
|
47
|
-
if (regex) {
|
48
|
-
computedValue = regex.toString();
|
49
|
-
if (/[\x00-\x1f]/.test(computedValue)) {
|
50
|
-
context.report(node, "Unexpected control character in regular expression.");
|
51
|
-
}
|
52
|
-
}
|
53
|
-
}
|
54
|
-
};
|
55
|
-
|
56
|
-
};
|
57
|
-
|
58
|
-
module.exports.schema = [];
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to forbid control charactes from regular expressions.
|
3
|
+
* @author Nicholas C. Zakas
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
//------------------------------------------------------------------------------
|
9
|
+
// Rule Definition
|
10
|
+
//------------------------------------------------------------------------------
|
11
|
+
|
12
|
+
module.exports = function(context) {
|
13
|
+
|
14
|
+
function getRegExp(node) {
|
15
|
+
|
16
|
+
if (node.value instanceof RegExp) {
|
17
|
+
return node.value;
|
18
|
+
} else if (typeof node.value === "string") {
|
19
|
+
|
20
|
+
var parent = context.getAncestors().pop();
|
21
|
+
if ((parent.type === "NewExpression" || parent.type === "CallExpression") &&
|
22
|
+
parent.callee.type === "Identifier" && parent.callee.name === "RegExp") {
|
23
|
+
|
24
|
+
// there could be an invalid regular expression string
|
25
|
+
try {
|
26
|
+
return new RegExp(node.value);
|
27
|
+
} catch (ex) {
|
28
|
+
return null;
|
29
|
+
}
|
30
|
+
|
31
|
+
}
|
32
|
+
} else {
|
33
|
+
return null;
|
34
|
+
}
|
35
|
+
|
36
|
+
}
|
37
|
+
|
38
|
+
|
39
|
+
|
40
|
+
return {
|
41
|
+
|
42
|
+
"Literal": function(node) {
|
43
|
+
|
44
|
+
var computedValue,
|
45
|
+
regex = getRegExp(node);
|
46
|
+
|
47
|
+
if (regex) {
|
48
|
+
computedValue = regex.toString();
|
49
|
+
if (/[\x00-\x1f]/.test(computedValue)) {
|
50
|
+
context.report(node, "Unexpected control character in regular expression.");
|
51
|
+
}
|
52
|
+
}
|
53
|
+
}
|
54
|
+
};
|
55
|
+
|
56
|
+
};
|
57
|
+
|
58
|
+
module.exports.schema = [];
|
package/lib/rules/no-debugger.js
CHANGED
@@ -1,22 +1,22 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to flag use of a debugger statement
|
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
|
-
"DebuggerStatement": function(node) {
|
16
|
-
context.report(node, "Unexpected 'debugger' statement.");
|
17
|
-
}
|
18
|
-
};
|
19
|
-
|
20
|
-
};
|
21
|
-
|
22
|
-
module.exports.schema = [];
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to flag use of a debugger statement
|
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
|
+
"DebuggerStatement": function(node) {
|
16
|
+
context.report(node, "Unexpected 'debugger' statement.");
|
17
|
+
}
|
18
|
+
};
|
19
|
+
|
20
|
+
};
|
21
|
+
|
22
|
+
module.exports.schema = [];
|
@@ -1,25 +1,25 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to flag when deleting variables
|
3
|
-
* @author Ilya Volodin
|
4
|
-
*/
|
5
|
-
|
6
|
-
"use strict";
|
7
|
-
|
8
|
-
//------------------------------------------------------------------------------
|
9
|
-
// Rule Definition
|
10
|
-
//------------------------------------------------------------------------------
|
11
|
-
|
12
|
-
module.exports = function(context) {
|
13
|
-
|
14
|
-
return {
|
15
|
-
|
16
|
-
"UnaryExpression": function(node) {
|
17
|
-
if (node.operator === "delete" && node.argument.type === "Identifier") {
|
18
|
-
context.report(node, "Variables should not be deleted.");
|
19
|
-
}
|
20
|
-
}
|
21
|
-
};
|
22
|
-
|
23
|
-
};
|
24
|
-
|
25
|
-
module.exports.schema = [];
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to flag when deleting variables
|
3
|
+
* @author Ilya Volodin
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
//------------------------------------------------------------------------------
|
9
|
+
// Rule Definition
|
10
|
+
//------------------------------------------------------------------------------
|
11
|
+
|
12
|
+
module.exports = function(context) {
|
13
|
+
|
14
|
+
return {
|
15
|
+
|
16
|
+
"UnaryExpression": function(node) {
|
17
|
+
if (node.operator === "delete" && node.argument.type === "Identifier") {
|
18
|
+
context.report(node, "Variables should not be deleted.");
|
19
|
+
}
|
20
|
+
}
|
21
|
+
};
|
22
|
+
|
23
|
+
};
|
24
|
+
|
25
|
+
module.exports.schema = [];
|
@@ -1,27 +1,27 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to check for ambiguous div operator in regexes
|
3
|
-
* @author Matt DuVall <http://www.mattduvall.com>
|
4
|
-
*/
|
5
|
-
|
6
|
-
"use strict";
|
7
|
-
|
8
|
-
//------------------------------------------------------------------------------
|
9
|
-
// Rule Definition
|
10
|
-
//------------------------------------------------------------------------------
|
11
|
-
|
12
|
-
module.exports = function(context) {
|
13
|
-
|
14
|
-
return {
|
15
|
-
|
16
|
-
"Literal": function(node) {
|
17
|
-
var token = context.getFirstToken(node);
|
18
|
-
|
19
|
-
if (token.type === "RegularExpression" && token.value[1] === "=") {
|
20
|
-
context.report(node, "A regular expression literal can be confused with '/='.");
|
21
|
-
}
|
22
|
-
}
|
23
|
-
};
|
24
|
-
|
25
|
-
};
|
26
|
-
|
27
|
-
module.exports.schema = [];
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to check for ambiguous div operator in regexes
|
3
|
+
* @author Matt DuVall <http://www.mattduvall.com>
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
//------------------------------------------------------------------------------
|
9
|
+
// Rule Definition
|
10
|
+
//------------------------------------------------------------------------------
|
11
|
+
|
12
|
+
module.exports = function(context) {
|
13
|
+
|
14
|
+
return {
|
15
|
+
|
16
|
+
"Literal": function(node) {
|
17
|
+
var token = context.getFirstToken(node);
|
18
|
+
|
19
|
+
if (token.type === "RegularExpression" && token.value[1] === "=") {
|
20
|
+
context.report(node, "A regular expression literal can be confused with '/='.");
|
21
|
+
}
|
22
|
+
}
|
23
|
+
};
|
24
|
+
|
25
|
+
};
|
26
|
+
|
27
|
+
module.exports.schema = [];
|
@@ -1,85 +1,89 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to flag duplicate arguments
|
3
|
-
* @author Jamund Ferguson
|
4
|
-
* @copyright 2015 Jamund Ferguson. All rights reserved.
|
5
|
-
*/
|
6
|
-
|
7
|
-
"use strict";
|
8
|
-
|
9
|
-
//------------------------------------------------------------------------------
|
10
|
-
// Rule Definition
|
11
|
-
//------------------------------------------------------------------------------
|
12
|
-
|
13
|
-
module.exports = function(context) {
|
14
|
-
|
15
|
-
//--------------------------------------------------------------------------
|
16
|
-
// Helpers
|
17
|
-
//--------------------------------------------------------------------------
|
18
|
-
|
19
|
-
/**
|
20
|
-
* Determines if a given node has duplicate parameters.
|
21
|
-
* @param {ASTNode} node The node to check.
|
22
|
-
* @returns {void}
|
23
|
-
* @private
|
24
|
-
*/
|
25
|
-
function checkParams(node) {
|
26
|
-
var params = {},
|
27
|
-
dups = {};
|
28
|
-
|
29
|
-
|
30
|
-
/**
|
31
|
-
* Marks a given param as either seen or duplicated.
|
32
|
-
* @param {string} name The name of the param to mark.
|
33
|
-
* @returns {void}
|
34
|
-
* @private
|
35
|
-
*/
|
36
|
-
function markParam(name) {
|
37
|
-
if (params.hasOwnProperty(name)) {
|
38
|
-
dups[name] = 1;
|
39
|
-
} else {
|
40
|
-
params[name] = 1;
|
41
|
-
}
|
42
|
-
}
|
43
|
-
|
44
|
-
// loop through and find each duplicate param
|
45
|
-
node.params.forEach(function(param) {
|
46
|
-
|
47
|
-
switch (param.type) {
|
48
|
-
case "Identifier":
|
49
|
-
markParam(param.name);
|
50
|
-
break;
|
51
|
-
|
52
|
-
case "ObjectPattern":
|
53
|
-
param.properties.forEach(function(property) {
|
54
|
-
markParam(property.key.name);
|
55
|
-
});
|
56
|
-
break;
|
57
|
-
|
58
|
-
case "ArrayPattern":
|
59
|
-
param.elements.forEach(function(element) {
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to flag duplicate arguments
|
3
|
+
* @author Jamund Ferguson
|
4
|
+
* @copyright 2015 Jamund Ferguson. All rights reserved.
|
5
|
+
*/
|
6
|
+
|
7
|
+
"use strict";
|
8
|
+
|
9
|
+
//------------------------------------------------------------------------------
|
10
|
+
// Rule Definition
|
11
|
+
//------------------------------------------------------------------------------
|
12
|
+
|
13
|
+
module.exports = function(context) {
|
14
|
+
|
15
|
+
//--------------------------------------------------------------------------
|
16
|
+
// Helpers
|
17
|
+
//--------------------------------------------------------------------------
|
18
|
+
|
19
|
+
/**
|
20
|
+
* Determines if a given node has duplicate parameters.
|
21
|
+
* @param {ASTNode} node The node to check.
|
22
|
+
* @returns {void}
|
23
|
+
* @private
|
24
|
+
*/
|
25
|
+
function checkParams(node) {
|
26
|
+
var params = {},
|
27
|
+
dups = {};
|
28
|
+
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Marks a given param as either seen or duplicated.
|
32
|
+
* @param {string} name The name of the param to mark.
|
33
|
+
* @returns {void}
|
34
|
+
* @private
|
35
|
+
*/
|
36
|
+
function markParam(name) {
|
37
|
+
if (params.hasOwnProperty(name)) {
|
38
|
+
dups[name] = 1;
|
39
|
+
} else {
|
40
|
+
params[name] = 1;
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
44
|
+
// loop through and find each duplicate param
|
45
|
+
node.params.forEach(function(param) {
|
46
|
+
|
47
|
+
switch (param.type) {
|
48
|
+
case "Identifier":
|
49
|
+
markParam(param.name);
|
50
|
+
break;
|
51
|
+
|
52
|
+
case "ObjectPattern":
|
53
|
+
param.properties.forEach(function(property) {
|
54
|
+
markParam(property.key.name);
|
55
|
+
});
|
56
|
+
break;
|
57
|
+
|
58
|
+
case "ArrayPattern":
|
59
|
+
param.elements.forEach(function(element) {
|
60
|
+
|
61
|
+
// Arrays can be sparse (unwanted arguments)
|
62
|
+
if (element !== null) {
|
63
|
+
markParam(element.name);
|
64
|
+
}
|
65
|
+
});
|
66
|
+
break;
|
67
|
+
|
68
|
+
// no default
|
69
|
+
}
|
70
|
+
});
|
71
|
+
|
72
|
+
// log an error for each duplicate (not 2 for each)
|
73
|
+
Object.keys(dups).forEach(function(currentParam) {
|
74
|
+
context.report(node, "Duplicate param '{{key}}'.", { key: currentParam });
|
75
|
+
});
|
76
|
+
}
|
77
|
+
|
78
|
+
//--------------------------------------------------------------------------
|
79
|
+
// Public API
|
80
|
+
//--------------------------------------------------------------------------
|
81
|
+
|
82
|
+
return {
|
83
|
+
"FunctionDeclaration": checkParams,
|
84
|
+
"FunctionExpression": checkParams
|
85
|
+
};
|
86
|
+
|
87
|
+
};
|
88
|
+
|
89
|
+
module.exports.schema = [];
|