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,62 +1,62 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to flag when re-assigning native objects
|
3
|
-
* @author Ilya Volodin
|
4
|
-
*/
|
5
|
-
|
6
|
-
"use strict";
|
7
|
-
|
8
|
-
//------------------------------------------------------------------------------
|
9
|
-
// Rule Definition
|
10
|
-
//------------------------------------------------------------------------------
|
11
|
-
|
12
|
-
module.exports = function(context) {
|
13
|
-
|
14
|
-
var NATIVE_OBJECTS = ["Array", "Boolean", "Date", "decodeURI",
|
15
|
-
"decodeURIComponent", "encodeURI", "encodeURIComponent",
|
16
|
-
"Error", "eval", "EvalError", "Function", "isFinite",
|
17
|
-
"isNaN", "JSON", "Math", "Number", "Object", "parseInt",
|
18
|
-
"parseFloat", "RangeError", "ReferenceError", "RegExp",
|
19
|
-
"String", "SyntaxError", "TypeError", "URIError",
|
20
|
-
"Map", "NaN", "Set", "WeakMap", "Infinity", "undefined"];
|
21
|
-
var config = context.options[0] || {};
|
22
|
-
var exceptions = config.exceptions || [];
|
23
|
-
var modifiedNativeObjects = NATIVE_OBJECTS;
|
24
|
-
|
25
|
-
if (exceptions.length) {
|
26
|
-
modifiedNativeObjects = NATIVE_OBJECTS.filter(function(builtIn) {
|
27
|
-
return exceptions.indexOf(builtIn) === -1;
|
28
|
-
});
|
29
|
-
}
|
30
|
-
|
31
|
-
return {
|
32
|
-
|
33
|
-
"AssignmentExpression": function(node) {
|
34
|
-
if (modifiedNativeObjects.indexOf(node.left.name) >= 0) {
|
35
|
-
context.report(node, node.left.name + " is a read-only native object.");
|
36
|
-
}
|
37
|
-
},
|
38
|
-
|
39
|
-
"VariableDeclarator": function(node) {
|
40
|
-
if (modifiedNativeObjects.indexOf(node.id.name) >= 0) {
|
41
|
-
context.report(node, "Redefinition of '{{nativeObject}}'.", { nativeObject: node.id.name });
|
42
|
-
}
|
43
|
-
}
|
44
|
-
};
|
45
|
-
|
46
|
-
};
|
47
|
-
|
48
|
-
module.exports.schema = [
|
49
|
-
{
|
50
|
-
"type": "object",
|
51
|
-
"properties": {
|
52
|
-
"exceptions": {
|
53
|
-
"type": "array",
|
54
|
-
"items": {
|
55
|
-
"type": "string"
|
56
|
-
},
|
57
|
-
"uniqueItems": true
|
58
|
-
}
|
59
|
-
},
|
60
|
-
"additionalProperties": false
|
61
|
-
}
|
62
|
-
];
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to flag when re-assigning native objects
|
3
|
+
* @author Ilya Volodin
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
//------------------------------------------------------------------------------
|
9
|
+
// Rule Definition
|
10
|
+
//------------------------------------------------------------------------------
|
11
|
+
|
12
|
+
module.exports = function(context) {
|
13
|
+
|
14
|
+
var NATIVE_OBJECTS = ["Array", "Boolean", "Date", "decodeURI",
|
15
|
+
"decodeURIComponent", "encodeURI", "encodeURIComponent",
|
16
|
+
"Error", "eval", "EvalError", "Function", "isFinite",
|
17
|
+
"isNaN", "JSON", "Math", "Number", "Object", "parseInt",
|
18
|
+
"parseFloat", "RangeError", "ReferenceError", "RegExp",
|
19
|
+
"String", "SyntaxError", "TypeError", "URIError",
|
20
|
+
"Map", "NaN", "Set", "WeakMap", "Infinity", "undefined"];
|
21
|
+
var config = context.options[0] || {};
|
22
|
+
var exceptions = config.exceptions || [];
|
23
|
+
var modifiedNativeObjects = NATIVE_OBJECTS;
|
24
|
+
|
25
|
+
if (exceptions.length) {
|
26
|
+
modifiedNativeObjects = NATIVE_OBJECTS.filter(function(builtIn) {
|
27
|
+
return exceptions.indexOf(builtIn) === -1;
|
28
|
+
});
|
29
|
+
}
|
30
|
+
|
31
|
+
return {
|
32
|
+
|
33
|
+
"AssignmentExpression": function(node) {
|
34
|
+
if (modifiedNativeObjects.indexOf(node.left.name) >= 0) {
|
35
|
+
context.report(node, node.left.name + " is a read-only native object.");
|
36
|
+
}
|
37
|
+
},
|
38
|
+
|
39
|
+
"VariableDeclarator": function(node) {
|
40
|
+
if (modifiedNativeObjects.indexOf(node.id.name) >= 0) {
|
41
|
+
context.report(node, "Redefinition of '{{nativeObject}}'.", { nativeObject: node.id.name });
|
42
|
+
}
|
43
|
+
}
|
44
|
+
};
|
45
|
+
|
46
|
+
};
|
47
|
+
|
48
|
+
module.exports.schema = [
|
49
|
+
{
|
50
|
+
"type": "object",
|
51
|
+
"properties": {
|
52
|
+
"exceptions": {
|
53
|
+
"type": "array",
|
54
|
+
"items": {
|
55
|
+
"type": "string"
|
56
|
+
},
|
57
|
+
"uniqueItems": true
|
58
|
+
}
|
59
|
+
},
|
60
|
+
"additionalProperties": false
|
61
|
+
}
|
62
|
+
];
|
@@ -1,25 +1,25 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview A rule to disallow negated left operands of the `in` operator
|
3
|
-
* @author Michael Ficarra
|
4
|
-
*/
|
5
|
-
|
6
|
-
"use strict";
|
7
|
-
|
8
|
-
//------------------------------------------------------------------------------
|
9
|
-
// Rule Definition
|
10
|
-
//------------------------------------------------------------------------------
|
11
|
-
|
12
|
-
module.exports = function(context) {
|
13
|
-
|
14
|
-
return {
|
15
|
-
|
16
|
-
"BinaryExpression": function(node) {
|
17
|
-
if (node.operator === "in" && node.left.type === "UnaryExpression" && node.left.operator === "!") {
|
18
|
-
context.report(node, "The `in` expression's left operand is negated");
|
19
|
-
}
|
20
|
-
}
|
21
|
-
};
|
22
|
-
|
23
|
-
};
|
24
|
-
|
25
|
-
module.exports.schema = [];
|
1
|
+
/**
|
2
|
+
* @fileoverview A rule to disallow negated left operands of the `in` operator
|
3
|
+
* @author Michael Ficarra
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
//------------------------------------------------------------------------------
|
9
|
+
// Rule Definition
|
10
|
+
//------------------------------------------------------------------------------
|
11
|
+
|
12
|
+
module.exports = function(context) {
|
13
|
+
|
14
|
+
return {
|
15
|
+
|
16
|
+
"BinaryExpression": function(node) {
|
17
|
+
if (node.operator === "in" && node.left.type === "UnaryExpression" && node.left.operator === "!") {
|
18
|
+
context.report(node, "The `in` expression's left operand is negated");
|
19
|
+
}
|
20
|
+
}
|
21
|
+
};
|
22
|
+
|
23
|
+
};
|
24
|
+
|
25
|
+
module.exports.schema = [];
|
@@ -1,24 +1,24 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to flag nested ternary expressions
|
3
|
-
* @author Ian Christian Myers
|
4
|
-
*/
|
5
|
-
|
6
|
-
"use strict";
|
7
|
-
|
8
|
-
//------------------------------------------------------------------------------
|
9
|
-
// Rule Definition
|
10
|
-
//------------------------------------------------------------------------------
|
11
|
-
|
12
|
-
module.exports = function(context) {
|
13
|
-
|
14
|
-
return {
|
15
|
-
"ConditionalExpression": function(node) {
|
16
|
-
if (node.alternate.type === "ConditionalExpression" ||
|
17
|
-
node.consequent.type === "ConditionalExpression") {
|
18
|
-
context.report(node, "Do not nest ternary expressions");
|
19
|
-
}
|
20
|
-
}
|
21
|
-
};
|
22
|
-
};
|
23
|
-
|
24
|
-
module.exports.schema = [];
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to flag nested ternary expressions
|
3
|
+
* @author Ian Christian Myers
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
//------------------------------------------------------------------------------
|
9
|
+
// Rule Definition
|
10
|
+
//------------------------------------------------------------------------------
|
11
|
+
|
12
|
+
module.exports = function(context) {
|
13
|
+
|
14
|
+
return {
|
15
|
+
"ConditionalExpression": function(node) {
|
16
|
+
if (node.alternate.type === "ConditionalExpression" ||
|
17
|
+
node.consequent.type === "ConditionalExpression") {
|
18
|
+
context.report(node, "Do not nest ternary expressions");
|
19
|
+
}
|
20
|
+
}
|
21
|
+
};
|
22
|
+
};
|
23
|
+
|
24
|
+
module.exports.schema = [];
|
package/lib/rules/no-new-func.js
CHANGED
@@ -1,25 +1,25 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to flag when using new Function
|
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
|
-
"NewExpression": function(node) {
|
17
|
-
if (node.callee.name === "Function") {
|
18
|
-
context.report(node, "The Function constructor is eval.");
|
19
|
-
}
|
20
|
-
}
|
21
|
-
};
|
22
|
-
|
23
|
-
};
|
24
|
-
|
25
|
-
module.exports.schema = [];
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to flag when using new Function
|
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
|
+
"NewExpression": function(node) {
|
17
|
+
if (node.callee.name === "Function") {
|
18
|
+
context.report(node, "The Function constructor is eval.");
|
19
|
+
}
|
20
|
+
}
|
21
|
+
};
|
22
|
+
|
23
|
+
};
|
24
|
+
|
25
|
+
module.exports.schema = [];
|
@@ -1,25 +1,25 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview A rule to disallow calls to the Object constructor
|
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
|
-
"NewExpression": function(node) {
|
17
|
-
if (node.callee.name === "Object") {
|
18
|
-
context.report(node, "The object literal notation {} is preferrable.");
|
19
|
-
}
|
20
|
-
}
|
21
|
-
};
|
22
|
-
|
23
|
-
};
|
24
|
-
|
25
|
-
module.exports.schema = [];
|
1
|
+
/**
|
2
|
+
* @fileoverview A rule to disallow calls to the Object constructor
|
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
|
+
"NewExpression": function(node) {
|
17
|
+
if (node.callee.name === "Object") {
|
18
|
+
context.report(node, "The object literal notation {} is preferrable.");
|
19
|
+
}
|
20
|
+
}
|
21
|
+
};
|
22
|
+
|
23
|
+
};
|
24
|
+
|
25
|
+
module.exports.schema = [];
|
@@ -1,25 +1,25 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to disallow use of new operator with the `require` function
|
3
|
-
* @author Wil Moore III
|
4
|
-
*/
|
5
|
-
|
6
|
-
"use strict";
|
7
|
-
|
8
|
-
//------------------------------------------------------------------------------
|
9
|
-
// Rule Definition
|
10
|
-
//------------------------------------------------------------------------------
|
11
|
-
|
12
|
-
module.exports = function(context) {
|
13
|
-
|
14
|
-
return {
|
15
|
-
|
16
|
-
"NewExpression": function(node) {
|
17
|
-
if (node.callee.type === "Identifier" && node.callee.name === "require") {
|
18
|
-
context.report(node, "Unexpected use of new with require.");
|
19
|
-
}
|
20
|
-
}
|
21
|
-
};
|
22
|
-
|
23
|
-
};
|
24
|
-
|
25
|
-
module.exports.schema = [];
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to disallow use of new operator with the `require` function
|
3
|
+
* @author Wil Moore III
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
//------------------------------------------------------------------------------
|
9
|
+
// Rule Definition
|
10
|
+
//------------------------------------------------------------------------------
|
11
|
+
|
12
|
+
module.exports = function(context) {
|
13
|
+
|
14
|
+
return {
|
15
|
+
|
16
|
+
"NewExpression": function(node) {
|
17
|
+
if (node.callee.type === "Identifier" && node.callee.name === "require") {
|
18
|
+
context.report(node, "Unexpected use of new with require.");
|
19
|
+
}
|
20
|
+
}
|
21
|
+
};
|
22
|
+
|
23
|
+
};
|
24
|
+
|
25
|
+
module.exports.schema = [];
|
@@ -1,26 +1,26 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to flag when using constructor for wrapper objects
|
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
|
-
"NewExpression": function(node) {
|
17
|
-
var wrapperObjects = ["String", "Number", "Boolean", "Math", "JSON"];
|
18
|
-
if (wrapperObjects.indexOf(node.callee.name) > -1) {
|
19
|
-
context.report(node, "Do not use {{fn}} as a constructor.", { fn: node.callee.name });
|
20
|
-
}
|
21
|
-
}
|
22
|
-
};
|
23
|
-
|
24
|
-
};
|
25
|
-
|
26
|
-
module.exports.schema = [];
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to flag when using constructor for wrapper objects
|
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
|
+
"NewExpression": function(node) {
|
17
|
+
var wrapperObjects = ["String", "Number", "Boolean", "Math", "JSON"];
|
18
|
+
if (wrapperObjects.indexOf(node.callee.name) > -1) {
|
19
|
+
context.report(node, "Do not use {{fn}} as a constructor.", { fn: node.callee.name });
|
20
|
+
}
|
21
|
+
}
|
22
|
+
};
|
23
|
+
|
24
|
+
};
|
25
|
+
|
26
|
+
module.exports.schema = [];
|
package/lib/rules/no-new.js
CHANGED
@@ -1,27 +1,27 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to flag statements with function invocation preceded by
|
3
|
-
* "new" and not part of assignment
|
4
|
-
* @author Ilya Volodin
|
5
|
-
*/
|
6
|
-
|
7
|
-
"use strict";
|
8
|
-
|
9
|
-
//------------------------------------------------------------------------------
|
10
|
-
// Rule Definition
|
11
|
-
//------------------------------------------------------------------------------
|
12
|
-
|
13
|
-
module.exports = function(context) {
|
14
|
-
|
15
|
-
return {
|
16
|
-
|
17
|
-
"ExpressionStatement": function(node) {
|
18
|
-
|
19
|
-
if (node.expression.type === "NewExpression") {
|
20
|
-
context.report(node, "Do not use 'new' for side effects.");
|
21
|
-
}
|
22
|
-
}
|
23
|
-
};
|
24
|
-
|
25
|
-
};
|
26
|
-
|
27
|
-
module.exports.schema = [];
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to flag statements with function invocation preceded by
|
3
|
+
* "new" and not part of assignment
|
4
|
+
* @author Ilya Volodin
|
5
|
+
*/
|
6
|
+
|
7
|
+
"use strict";
|
8
|
+
|
9
|
+
//------------------------------------------------------------------------------
|
10
|
+
// Rule Definition
|
11
|
+
//------------------------------------------------------------------------------
|
12
|
+
|
13
|
+
module.exports = function(context) {
|
14
|
+
|
15
|
+
return {
|
16
|
+
|
17
|
+
"ExpressionStatement": function(node) {
|
18
|
+
|
19
|
+
if (node.expression.type === "NewExpression") {
|
20
|
+
context.report(node, "Do not use 'new' for side effects.");
|
21
|
+
}
|
22
|
+
}
|
23
|
+
};
|
24
|
+
|
25
|
+
};
|
26
|
+
|
27
|
+
module.exports.schema = [];
|
@@ -1,28 +1,28 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to flag use of an object property of the global object (Math and JSON) as a function
|
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
|
-
if (node.callee.type === "Identifier") {
|
18
|
-
var name = node.callee.name;
|
19
|
-
if (name === "Math" || name === "JSON") {
|
20
|
-
context.report(node, "'{{name}}' is not a function.", { name: name });
|
21
|
-
}
|
22
|
-
}
|
23
|
-
}
|
24
|
-
};
|
25
|
-
|
26
|
-
};
|
27
|
-
|
28
|
-
module.exports.schema = [];
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to flag use of an object property of the global object (Math and JSON) as a function
|
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
|
+
if (node.callee.type === "Identifier") {
|
18
|
+
var name = node.callee.name;
|
19
|
+
if (name === "Math" || name === "JSON") {
|
20
|
+
context.report(node, "'{{name}}' is not a function.", { name: name });
|
21
|
+
}
|
22
|
+
}
|
23
|
+
}
|
24
|
+
};
|
25
|
+
|
26
|
+
};
|
27
|
+
|
28
|
+
module.exports.schema = [];
|
@@ -1,39 +1,39 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to flag octal escape sequences in string literals.
|
3
|
-
* @author Ian Christian Myers
|
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
|
-
if (typeof node.value !== "string") {
|
18
|
-
return;
|
19
|
-
}
|
20
|
-
|
21
|
-
var match = node.raw.match(/^([^\\]|\\[^0-7])*\\([0-3][0-7]{1,2}|[4-7][0-7]|[0-7])/),
|
22
|
-
octalDigit;
|
23
|
-
|
24
|
-
if (match) {
|
25
|
-
octalDigit = match[2];
|
26
|
-
|
27
|
-
// \0 is actually not considered an octal
|
28
|
-
if (match[2] !== "0" || typeof match[3] !== "undefined") {
|
29
|
-
context.report(node, "Don't use octal: '\\{{octalDigit}}'. Use '\\u....' instead.",
|
30
|
-
{ octalDigit: octalDigit });
|
31
|
-
}
|
32
|
-
}
|
33
|
-
}
|
34
|
-
|
35
|
-
};
|
36
|
-
|
37
|
-
};
|
38
|
-
|
39
|
-
module.exports.schema = [];
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to flag octal escape sequences in string literals.
|
3
|
+
* @author Ian Christian Myers
|
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
|
+
if (typeof node.value !== "string") {
|
18
|
+
return;
|
19
|
+
}
|
20
|
+
|
21
|
+
var match = node.raw.match(/^([^\\]|\\[^0-7])*\\([0-3][0-7]{1,2}|[4-7][0-7]|[0-7])/),
|
22
|
+
octalDigit;
|
23
|
+
|
24
|
+
if (match) {
|
25
|
+
octalDigit = match[2];
|
26
|
+
|
27
|
+
// \0 is actually not considered an octal
|
28
|
+
if (match[2] !== "0" || typeof match[3] !== "undefined") {
|
29
|
+
context.report(node, "Don't use octal: '\\{{octalDigit}}'. Use '\\u....' instead.",
|
30
|
+
{ octalDigit: octalDigit });
|
31
|
+
}
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
};
|
36
|
+
|
37
|
+
};
|
38
|
+
|
39
|
+
module.exports.schema = [];
|