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,81 +1,81 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to flag unnecessary bind calls
|
3
|
-
* @author Bence Dányi <bence@danyi.me>
|
4
|
-
* @copyright 2014 Bence Dányi. All rights reserved.
|
5
|
-
*/
|
6
|
-
"use strict";
|
7
|
-
|
8
|
-
//------------------------------------------------------------------------------
|
9
|
-
// Rule Definition
|
10
|
-
//------------------------------------------------------------------------------
|
11
|
-
|
12
|
-
module.exports = function(context) {
|
13
|
-
|
14
|
-
var scope = [{
|
15
|
-
depth: -1,
|
16
|
-
found: 0
|
17
|
-
}];
|
18
|
-
|
19
|
-
/**
|
20
|
-
* Get the topmost scope
|
21
|
-
* @returns {Object} The topmost scope
|
22
|
-
*/
|
23
|
-
function getTopScope() {
|
24
|
-
return scope[scope.length - 1];
|
25
|
-
}
|
26
|
-
|
27
|
-
/**
|
28
|
-
* Increment the depth of the top scope
|
29
|
-
* @returns {void}
|
30
|
-
*/
|
31
|
-
function incrementScopeDepth() {
|
32
|
-
var top = getTopScope();
|
33
|
-
top.depth++;
|
34
|
-
}
|
35
|
-
|
36
|
-
/**
|
37
|
-
* Decrement the depth of the top scope
|
38
|
-
* @returns {void}
|
39
|
-
*/
|
40
|
-
function decrementScopeDepth() {
|
41
|
-
var top = getTopScope();
|
42
|
-
top.depth--;
|
43
|
-
}
|
44
|
-
|
45
|
-
return {
|
46
|
-
"CallExpression": function(node) {
|
47
|
-
if (node.arguments.length === 1 &&
|
48
|
-
node.callee.type === "MemberExpression" &&
|
49
|
-
node.callee.property.name === "bind" &&
|
50
|
-
/FunctionExpression$/.test(node.callee.object.type)) {
|
51
|
-
scope.push({
|
52
|
-
call: node,
|
53
|
-
depth: -1,
|
54
|
-
found: 0
|
55
|
-
});
|
56
|
-
}
|
57
|
-
},
|
58
|
-
"CallExpression:exit": function(node) {
|
59
|
-
var top = getTopScope();
|
60
|
-
if (top.call === node && top.found === 0) {
|
61
|
-
context.report(node, "The function binding is unnecessary.");
|
62
|
-
scope.pop();
|
63
|
-
}
|
64
|
-
},
|
65
|
-
"ArrowFunctionExpression": incrementScopeDepth,
|
66
|
-
"ArrowFunctionExpression:exit": decrementScopeDepth,
|
67
|
-
"FunctionExpression": incrementScopeDepth,
|
68
|
-
"FunctionExpression:exit": decrementScopeDepth,
|
69
|
-
"FunctionDeclaration": incrementScopeDepth,
|
70
|
-
"FunctionDeclaration:exit": decrementScopeDepth,
|
71
|
-
"ThisExpression": function() {
|
72
|
-
var top = getTopScope();
|
73
|
-
if (top.depth === 0) {
|
74
|
-
top.found++;
|
75
|
-
}
|
76
|
-
}
|
77
|
-
};
|
78
|
-
|
79
|
-
};
|
80
|
-
|
81
|
-
module.exports.schema = [];
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to flag unnecessary bind calls
|
3
|
+
* @author Bence Dányi <bence@danyi.me>
|
4
|
+
* @copyright 2014 Bence Dányi. All rights reserved.
|
5
|
+
*/
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
//------------------------------------------------------------------------------
|
9
|
+
// Rule Definition
|
10
|
+
//------------------------------------------------------------------------------
|
11
|
+
|
12
|
+
module.exports = function(context) {
|
13
|
+
|
14
|
+
var scope = [{
|
15
|
+
depth: -1,
|
16
|
+
found: 0
|
17
|
+
}];
|
18
|
+
|
19
|
+
/**
|
20
|
+
* Get the topmost scope
|
21
|
+
* @returns {Object} The topmost scope
|
22
|
+
*/
|
23
|
+
function getTopScope() {
|
24
|
+
return scope[scope.length - 1];
|
25
|
+
}
|
26
|
+
|
27
|
+
/**
|
28
|
+
* Increment the depth of the top scope
|
29
|
+
* @returns {void}
|
30
|
+
*/
|
31
|
+
function incrementScopeDepth() {
|
32
|
+
var top = getTopScope();
|
33
|
+
top.depth++;
|
34
|
+
}
|
35
|
+
|
36
|
+
/**
|
37
|
+
* Decrement the depth of the top scope
|
38
|
+
* @returns {void}
|
39
|
+
*/
|
40
|
+
function decrementScopeDepth() {
|
41
|
+
var top = getTopScope();
|
42
|
+
top.depth--;
|
43
|
+
}
|
44
|
+
|
45
|
+
return {
|
46
|
+
"CallExpression": function(node) {
|
47
|
+
if (node.arguments.length === 1 &&
|
48
|
+
node.callee.type === "MemberExpression" &&
|
49
|
+
node.callee.property.name === "bind" &&
|
50
|
+
/FunctionExpression$/.test(node.callee.object.type)) {
|
51
|
+
scope.push({
|
52
|
+
call: node,
|
53
|
+
depth: -1,
|
54
|
+
found: 0
|
55
|
+
});
|
56
|
+
}
|
57
|
+
},
|
58
|
+
"CallExpression:exit": function(node) {
|
59
|
+
var top = getTopScope();
|
60
|
+
if (top.call === node && top.found === 0) {
|
61
|
+
context.report(node, "The function binding is unnecessary.");
|
62
|
+
scope.pop();
|
63
|
+
}
|
64
|
+
},
|
65
|
+
"ArrowFunctionExpression": incrementScopeDepth,
|
66
|
+
"ArrowFunctionExpression:exit": decrementScopeDepth,
|
67
|
+
"FunctionExpression": incrementScopeDepth,
|
68
|
+
"FunctionExpression:exit": decrementScopeDepth,
|
69
|
+
"FunctionDeclaration": incrementScopeDepth,
|
70
|
+
"FunctionDeclaration:exit": decrementScopeDepth,
|
71
|
+
"ThisExpression": function() {
|
72
|
+
var top = getTopScope();
|
73
|
+
if (top.depth === 0) {
|
74
|
+
top.found++;
|
75
|
+
}
|
76
|
+
}
|
77
|
+
};
|
78
|
+
|
79
|
+
};
|
80
|
+
|
81
|
+
module.exports.schema = [];
|
@@ -1,71 +1,71 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to flag unnecessary double negation in Boolean contexts
|
3
|
-
* @author Brandon Mills
|
4
|
-
*/
|
5
|
-
|
6
|
-
"use strict";
|
7
|
-
|
8
|
-
//------------------------------------------------------------------------------
|
9
|
-
// Rule Definition
|
10
|
-
//------------------------------------------------------------------------------
|
11
|
-
|
12
|
-
module.exports = function(context) {
|
13
|
-
|
14
|
-
return {
|
15
|
-
"UnaryExpression": function (node) {
|
16
|
-
var ancestors = context.getAncestors(),
|
17
|
-
parent = ancestors.pop(),
|
18
|
-
grandparent = ancestors.pop();
|
19
|
-
|
20
|
-
// Exit early if it's guaranteed not to match
|
21
|
-
if (node.operator !== "!" ||
|
22
|
-
parent.type !== "UnaryExpression" ||
|
23
|
-
parent.operator !== "!") {
|
24
|
-
return;
|
25
|
-
}
|
26
|
-
|
27
|
-
// if (<bool>) ...
|
28
|
-
if (grandparent.type === "IfStatement") {
|
29
|
-
context.report(node, "Redundant double negation in an if statement condition.");
|
30
|
-
|
31
|
-
// do ... while (<bool>)
|
32
|
-
} else if (grandparent.type === "DoWhileStatement") {
|
33
|
-
context.report(node, "Redundant double negation in a do while loop condition.");
|
34
|
-
|
35
|
-
// while (<bool>) ...
|
36
|
-
} else if (grandparent.type === "WhileStatement") {
|
37
|
-
context.report(node, "Redundant double negation in a while loop condition.");
|
38
|
-
|
39
|
-
// <bool> ? ... : ...
|
40
|
-
} else if ((grandparent.type === "ConditionalExpression" &&
|
41
|
-
parent === grandparent.test)) {
|
42
|
-
context.report(node, "Redundant double negation in a ternary condition.");
|
43
|
-
|
44
|
-
// for (...; <bool>; ...) ...
|
45
|
-
} else if ((grandparent.type === "ForStatement" &&
|
46
|
-
parent === grandparent.test)) {
|
47
|
-
context.report(node, "Redundant double negation in a for loop condition.");
|
48
|
-
|
49
|
-
// !<bool>
|
50
|
-
} else if ((grandparent.type === "UnaryExpression" &&
|
51
|
-
grandparent.operator === "!")) {
|
52
|
-
context.report(node, "Redundant multiple negation.");
|
53
|
-
|
54
|
-
// Boolean(<bool>)
|
55
|
-
} else if ((grandparent.type === "CallExpression" &&
|
56
|
-
grandparent.callee.type === "Identifier" &&
|
57
|
-
grandparent.callee.name === "Boolean")) {
|
58
|
-
context.report(node, "Redundant double negation in call to Boolean().");
|
59
|
-
|
60
|
-
// new Boolean(<bool>)
|
61
|
-
} else if ((grandparent.type === "NewExpression" &&
|
62
|
-
grandparent.callee.type === "Identifier" &&
|
63
|
-
grandparent.callee.name === "Boolean")) {
|
64
|
-
context.report(node, "Redundant double negation in Boolean constructor call.");
|
65
|
-
}
|
66
|
-
}
|
67
|
-
};
|
68
|
-
|
69
|
-
};
|
70
|
-
|
71
|
-
module.exports.schema = [];
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to flag unnecessary double negation in Boolean contexts
|
3
|
+
* @author Brandon Mills
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
//------------------------------------------------------------------------------
|
9
|
+
// Rule Definition
|
10
|
+
//------------------------------------------------------------------------------
|
11
|
+
|
12
|
+
module.exports = function(context) {
|
13
|
+
|
14
|
+
return {
|
15
|
+
"UnaryExpression": function (node) {
|
16
|
+
var ancestors = context.getAncestors(),
|
17
|
+
parent = ancestors.pop(),
|
18
|
+
grandparent = ancestors.pop();
|
19
|
+
|
20
|
+
// Exit early if it's guaranteed not to match
|
21
|
+
if (node.operator !== "!" ||
|
22
|
+
parent.type !== "UnaryExpression" ||
|
23
|
+
parent.operator !== "!") {
|
24
|
+
return;
|
25
|
+
}
|
26
|
+
|
27
|
+
// if (<bool>) ...
|
28
|
+
if (grandparent.type === "IfStatement") {
|
29
|
+
context.report(node, "Redundant double negation in an if statement condition.");
|
30
|
+
|
31
|
+
// do ... while (<bool>)
|
32
|
+
} else if (grandparent.type === "DoWhileStatement") {
|
33
|
+
context.report(node, "Redundant double negation in a do while loop condition.");
|
34
|
+
|
35
|
+
// while (<bool>) ...
|
36
|
+
} else if (grandparent.type === "WhileStatement") {
|
37
|
+
context.report(node, "Redundant double negation in a while loop condition.");
|
38
|
+
|
39
|
+
// <bool> ? ... : ...
|
40
|
+
} else if ((grandparent.type === "ConditionalExpression" &&
|
41
|
+
parent === grandparent.test)) {
|
42
|
+
context.report(node, "Redundant double negation in a ternary condition.");
|
43
|
+
|
44
|
+
// for (...; <bool>; ...) ...
|
45
|
+
} else if ((grandparent.type === "ForStatement" &&
|
46
|
+
parent === grandparent.test)) {
|
47
|
+
context.report(node, "Redundant double negation in a for loop condition.");
|
48
|
+
|
49
|
+
// !<bool>
|
50
|
+
} else if ((grandparent.type === "UnaryExpression" &&
|
51
|
+
grandparent.operator === "!")) {
|
52
|
+
context.report(node, "Redundant multiple negation.");
|
53
|
+
|
54
|
+
// Boolean(<bool>)
|
55
|
+
} else if ((grandparent.type === "CallExpression" &&
|
56
|
+
grandparent.callee.type === "Identifier" &&
|
57
|
+
grandparent.callee.name === "Boolean")) {
|
58
|
+
context.report(node, "Redundant double negation in call to Boolean().");
|
59
|
+
|
60
|
+
// new Boolean(<bool>)
|
61
|
+
} else if ((grandparent.type === "NewExpression" &&
|
62
|
+
grandparent.callee.type === "Identifier" &&
|
63
|
+
grandparent.callee.name === "Boolean")) {
|
64
|
+
context.report(node, "Redundant double negation in Boolean constructor call.");
|
65
|
+
}
|
66
|
+
}
|
67
|
+
};
|
68
|
+
|
69
|
+
};
|
70
|
+
|
71
|
+
module.exports.schema = [];
|