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
package/lib/ignored-paths.js
CHANGED
@@ -1,137 +1,137 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Responsible for loading ignore config files and managing ignore patterns
|
3
|
-
* @author Jonathan Rajavuori
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
//------------------------------------------------------------------------------
|
8
|
-
// Requirements
|
9
|
-
//------------------------------------------------------------------------------
|
10
|
-
|
11
|
-
var fs = require("fs"),
|
12
|
-
debug = require("debug"),
|
13
|
-
minimatch = require("minimatch"),
|
14
|
-
FileFinder = require("./file-finder");
|
15
|
-
|
16
|
-
debug = debug("eslint:ignored-paths");
|
17
|
-
|
18
|
-
|
19
|
-
//------------------------------------------------------------------------------
|
20
|
-
// Constants
|
21
|
-
//------------------------------------------------------------------------------
|
22
|
-
|
23
|
-
var ESLINT_IGNORE_FILENAME = ".eslintignore";
|
24
|
-
|
25
|
-
|
26
|
-
//------------------------------------------------------------------------------
|
27
|
-
// Helpers
|
28
|
-
//------------------------------------------------------------------------------
|
29
|
-
|
30
|
-
/**
|
31
|
-
* Load and parse ignore patterns from the file at the given path
|
32
|
-
* @param {string} filepath Path to the ignore file.
|
33
|
-
* @returns {string[]} An array of ignore patterns or an empty array if no ignore file.
|
34
|
-
*/
|
35
|
-
function loadIgnoreFile(filepath) {
|
36
|
-
var ignorePatterns = [];
|
37
|
-
|
38
|
-
function nonEmpty(line) {
|
39
|
-
return line.trim() !== "" && line[0] !== "#";
|
40
|
-
}
|
41
|
-
|
42
|
-
if (filepath) {
|
43
|
-
try {
|
44
|
-
ignorePatterns = fs.readFileSync(filepath, "utf8").split(/\r?\n/).filter(nonEmpty);
|
45
|
-
} catch (e) {
|
46
|
-
e.message = "Cannot read ignore file: " + filepath + "\nError: " + e.message;
|
47
|
-
throw e;
|
48
|
-
}
|
49
|
-
}
|
50
|
-
|
51
|
-
return ["node_modules/**"].concat(ignorePatterns);
|
52
|
-
}
|
53
|
-
|
54
|
-
var ignoreFileFinder;
|
55
|
-
|
56
|
-
/**
|
57
|
-
* Find an ignore file in the current directory or a parent directory.
|
58
|
-
* @returns {string} Path of ignore file or an empty string.
|
59
|
-
*/
|
60
|
-
function findIgnoreFile() {
|
61
|
-
if (!ignoreFileFinder) {
|
62
|
-
ignoreFileFinder = new FileFinder(ESLINT_IGNORE_FILENAME);
|
63
|
-
}
|
64
|
-
|
65
|
-
return ignoreFileFinder.findInDirectoryOrParents();
|
66
|
-
}
|
67
|
-
|
68
|
-
|
69
|
-
//------------------------------------------------------------------------------
|
70
|
-
// Public Interface
|
71
|
-
//------------------------------------------------------------------------------
|
72
|
-
|
73
|
-
/**
|
74
|
-
* IgnoredPaths
|
75
|
-
* @constructor
|
76
|
-
* @class IgnoredPaths
|
77
|
-
* @param {Array} patterns to be matched against file paths
|
78
|
-
*/
|
79
|
-
function IgnoredPaths(patterns) {
|
80
|
-
this.patterns = patterns;
|
81
|
-
}
|
82
|
-
|
83
|
-
/**
|
84
|
-
* IgnoredPaths initializer
|
85
|
-
* @param {Object} options object containing 'ignore' and 'ignorePath' properties
|
86
|
-
* @returns {IgnoredPaths} object, with patterns loaded from the ignore file
|
87
|
-
*/
|
88
|
-
IgnoredPaths.load = function (options) {
|
89
|
-
var patterns;
|
90
|
-
|
91
|
-
options = options || {};
|
92
|
-
|
93
|
-
if (options.ignore) {
|
94
|
-
patterns = loadIgnoreFile(options.ignorePath || findIgnoreFile());
|
95
|
-
} else {
|
96
|
-
patterns = [];
|
97
|
-
}
|
98
|
-
|
99
|
-
if (options.ignorePattern) {
|
100
|
-
patterns.push(options.ignorePattern);
|
101
|
-
}
|
102
|
-
|
103
|
-
return new IgnoredPaths(patterns);
|
104
|
-
};
|
105
|
-
|
106
|
-
/**
|
107
|
-
* Determine whether a file path is included in the configured ignore patterns
|
108
|
-
* @param {string} filepath Path to check
|
109
|
-
* @returns {boolean} true if the file path matches one or more patterns, false otherwise
|
110
|
-
*/
|
111
|
-
IgnoredPaths.prototype.contains = function (filepath) {
|
112
|
-
if (this.patterns === null) {
|
113
|
-
throw new Error("No ignore patterns loaded, call 'load' first");
|
114
|
-
}
|
115
|
-
|
116
|
-
filepath = filepath.replace("\\", "/");
|
117
|
-
filepath = filepath.replace(/^\.\//, "");
|
118
|
-
return this.patterns.reduce(function(ignored, pattern) {
|
119
|
-
var negated = pattern[0] === "!",
|
120
|
-
matches;
|
121
|
-
|
122
|
-
if (negated) {
|
123
|
-
pattern = pattern.slice(1);
|
124
|
-
}
|
125
|
-
|
126
|
-
// Remove leading "current folder" prefix
|
127
|
-
if (pattern.indexOf("./") === 0) {
|
128
|
-
pattern = pattern.slice(2);
|
129
|
-
}
|
130
|
-
|
131
|
-
matches = minimatch(filepath, pattern) || minimatch(filepath, pattern + "/**");
|
132
|
-
|
133
|
-
return matches ? !negated : ignored;
|
134
|
-
}, false);
|
135
|
-
};
|
136
|
-
|
137
|
-
module.exports = IgnoredPaths;
|
1
|
+
/**
|
2
|
+
* @fileoverview Responsible for loading ignore config files and managing ignore patterns
|
3
|
+
* @author Jonathan Rajavuori
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
//------------------------------------------------------------------------------
|
8
|
+
// Requirements
|
9
|
+
//------------------------------------------------------------------------------
|
10
|
+
|
11
|
+
var fs = require("fs"),
|
12
|
+
debug = require("debug"),
|
13
|
+
minimatch = require("minimatch"),
|
14
|
+
FileFinder = require("./file-finder");
|
15
|
+
|
16
|
+
debug = debug("eslint:ignored-paths");
|
17
|
+
|
18
|
+
|
19
|
+
//------------------------------------------------------------------------------
|
20
|
+
// Constants
|
21
|
+
//------------------------------------------------------------------------------
|
22
|
+
|
23
|
+
var ESLINT_IGNORE_FILENAME = ".eslintignore";
|
24
|
+
|
25
|
+
|
26
|
+
//------------------------------------------------------------------------------
|
27
|
+
// Helpers
|
28
|
+
//------------------------------------------------------------------------------
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Load and parse ignore patterns from the file at the given path
|
32
|
+
* @param {string} filepath Path to the ignore file.
|
33
|
+
* @returns {string[]} An array of ignore patterns or an empty array if no ignore file.
|
34
|
+
*/
|
35
|
+
function loadIgnoreFile(filepath) {
|
36
|
+
var ignorePatterns = [];
|
37
|
+
|
38
|
+
function nonEmpty(line) {
|
39
|
+
return line.trim() !== "" && line[0] !== "#";
|
40
|
+
}
|
41
|
+
|
42
|
+
if (filepath) {
|
43
|
+
try {
|
44
|
+
ignorePatterns = fs.readFileSync(filepath, "utf8").split(/\r?\n/).filter(nonEmpty);
|
45
|
+
} catch (e) {
|
46
|
+
e.message = "Cannot read ignore file: " + filepath + "\nError: " + e.message;
|
47
|
+
throw e;
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
return ["node_modules/**"].concat(ignorePatterns);
|
52
|
+
}
|
53
|
+
|
54
|
+
var ignoreFileFinder;
|
55
|
+
|
56
|
+
/**
|
57
|
+
* Find an ignore file in the current directory or a parent directory.
|
58
|
+
* @returns {string} Path of ignore file or an empty string.
|
59
|
+
*/
|
60
|
+
function findIgnoreFile() {
|
61
|
+
if (!ignoreFileFinder) {
|
62
|
+
ignoreFileFinder = new FileFinder(ESLINT_IGNORE_FILENAME);
|
63
|
+
}
|
64
|
+
|
65
|
+
return ignoreFileFinder.findInDirectoryOrParents();
|
66
|
+
}
|
67
|
+
|
68
|
+
|
69
|
+
//------------------------------------------------------------------------------
|
70
|
+
// Public Interface
|
71
|
+
//------------------------------------------------------------------------------
|
72
|
+
|
73
|
+
/**
|
74
|
+
* IgnoredPaths
|
75
|
+
* @constructor
|
76
|
+
* @class IgnoredPaths
|
77
|
+
* @param {Array} patterns to be matched against file paths
|
78
|
+
*/
|
79
|
+
function IgnoredPaths(patterns) {
|
80
|
+
this.patterns = patterns;
|
81
|
+
}
|
82
|
+
|
83
|
+
/**
|
84
|
+
* IgnoredPaths initializer
|
85
|
+
* @param {Object} options object containing 'ignore' and 'ignorePath' properties
|
86
|
+
* @returns {IgnoredPaths} object, with patterns loaded from the ignore file
|
87
|
+
*/
|
88
|
+
IgnoredPaths.load = function (options) {
|
89
|
+
var patterns;
|
90
|
+
|
91
|
+
options = options || {};
|
92
|
+
|
93
|
+
if (options.ignore) {
|
94
|
+
patterns = loadIgnoreFile(options.ignorePath || findIgnoreFile());
|
95
|
+
} else {
|
96
|
+
patterns = [];
|
97
|
+
}
|
98
|
+
|
99
|
+
if (options.ignorePattern) {
|
100
|
+
patterns.push(options.ignorePattern);
|
101
|
+
}
|
102
|
+
|
103
|
+
return new IgnoredPaths(patterns);
|
104
|
+
};
|
105
|
+
|
106
|
+
/**
|
107
|
+
* Determine whether a file path is included in the configured ignore patterns
|
108
|
+
* @param {string} filepath Path to check
|
109
|
+
* @returns {boolean} true if the file path matches one or more patterns, false otherwise
|
110
|
+
*/
|
111
|
+
IgnoredPaths.prototype.contains = function (filepath) {
|
112
|
+
if (this.patterns === null) {
|
113
|
+
throw new Error("No ignore patterns loaded, call 'load' first");
|
114
|
+
}
|
115
|
+
|
116
|
+
filepath = filepath.replace("\\", "/");
|
117
|
+
filepath = filepath.replace(/^\.\//, "");
|
118
|
+
return this.patterns.reduce(function(ignored, pattern) {
|
119
|
+
var negated = pattern[0] === "!",
|
120
|
+
matches;
|
121
|
+
|
122
|
+
if (negated) {
|
123
|
+
pattern = pattern.slice(1);
|
124
|
+
}
|
125
|
+
|
126
|
+
// Remove leading "current folder" prefix
|
127
|
+
if (pattern.indexOf("./") === 0) {
|
128
|
+
pattern = pattern.slice(2);
|
129
|
+
}
|
130
|
+
|
131
|
+
matches = minimatch(filepath, pattern) || minimatch(filepath, pattern + "/**");
|
132
|
+
|
133
|
+
return matches ? !negated : ignored;
|
134
|
+
}, false);
|
135
|
+
};
|
136
|
+
|
137
|
+
module.exports = IgnoredPaths;
|
package/lib/load-rules.js
CHANGED
@@ -1,39 +1,39 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Module for loading rules from files and directories.
|
3
|
-
* @author Michael Ficarra
|
4
|
-
*/
|
5
|
-
|
6
|
-
"use strict";
|
7
|
-
|
8
|
-
//------------------------------------------------------------------------------
|
9
|
-
// Requirements
|
10
|
-
//------------------------------------------------------------------------------
|
11
|
-
|
12
|
-
var fs = require("fs"),
|
13
|
-
path = require("path");
|
14
|
-
|
15
|
-
//------------------------------------------------------------------------------
|
16
|
-
// Public Interface
|
17
|
-
//------------------------------------------------------------------------------
|
18
|
-
|
19
|
-
/**
|
20
|
-
* Load all rule modules from specified directory.
|
21
|
-
* @param {String} [rulesDir] Path to rules directory, may be relative. Defaults to `lib/rules`.
|
22
|
-
* @returns {Object} Loaded rule modules by rule ids (file names).
|
23
|
-
*/
|
24
|
-
module.exports = function(rulesDir) {
|
25
|
-
if (!rulesDir) {
|
26
|
-
rulesDir = path.join(__dirname, "rules");
|
27
|
-
} else {
|
28
|
-
rulesDir = path.resolve(process.cwd(), rulesDir);
|
29
|
-
}
|
30
|
-
|
31
|
-
var rules = Object.create(null);
|
32
|
-
fs.readdirSync(rulesDir).forEach(function(file) {
|
33
|
-
if (path.extname(file) !== ".js") {
|
34
|
-
return;
|
35
|
-
}
|
36
|
-
rules[file.slice(0, -3)] = require(path.join(rulesDir, file));
|
37
|
-
});
|
38
|
-
return rules;
|
39
|
-
};
|
1
|
+
/**
|
2
|
+
* @fileoverview Module for loading rules from files and directories.
|
3
|
+
* @author Michael Ficarra
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
//------------------------------------------------------------------------------
|
9
|
+
// Requirements
|
10
|
+
//------------------------------------------------------------------------------
|
11
|
+
|
12
|
+
var fs = require("fs"),
|
13
|
+
path = require("path");
|
14
|
+
|
15
|
+
//------------------------------------------------------------------------------
|
16
|
+
// Public Interface
|
17
|
+
//------------------------------------------------------------------------------
|
18
|
+
|
19
|
+
/**
|
20
|
+
* Load all rule modules from specified directory.
|
21
|
+
* @param {String} [rulesDir] Path to rules directory, may be relative. Defaults to `lib/rules`.
|
22
|
+
* @returns {Object} Loaded rule modules by rule ids (file names).
|
23
|
+
*/
|
24
|
+
module.exports = function(rulesDir) {
|
25
|
+
if (!rulesDir) {
|
26
|
+
rulesDir = path.join(__dirname, "rules");
|
27
|
+
} else {
|
28
|
+
rulesDir = path.resolve(process.cwd(), rulesDir);
|
29
|
+
}
|
30
|
+
|
31
|
+
var rules = Object.create(null);
|
32
|
+
fs.readdirSync(rulesDir).forEach(function(file) {
|
33
|
+
if (path.extname(file) !== ".js") {
|
34
|
+
return;
|
35
|
+
}
|
36
|
+
rules[file.slice(0, -3)] = require(path.join(rulesDir, file));
|
37
|
+
});
|
38
|
+
return rules;
|
39
|
+
};
|
package/lib/options.js
CHANGED
@@ -1,126 +1,132 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Options configuration for optionator.
|
3
|
-
* @author George Zahariev
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
//------------------------------------------------------------------------------
|
8
|
-
// Requirements
|
9
|
-
//------------------------------------------------------------------------------
|
10
|
-
|
11
|
-
var optionator = require("optionator");
|
12
|
-
|
13
|
-
//------------------------------------------------------------------------------
|
14
|
-
// Initialization and Public Interface
|
15
|
-
//------------------------------------------------------------------------------
|
16
|
-
|
17
|
-
// exports "parse(args)", "generateHelp()", and "generateHelpForOption(optionName)"
|
18
|
-
module.exports = optionator({
|
19
|
-
prepend: "eslint [options] file.js [file.js] [dir]",
|
20
|
-
concatRepeatedArrays: true,
|
21
|
-
mergeRepeatedObjects: true,
|
22
|
-
options: [{
|
23
|
-
heading: "Options"
|
24
|
-
}, {
|
25
|
-
option: "help",
|
26
|
-
alias: "h",
|
27
|
-
type: "Boolean",
|
28
|
-
description: "Show help"
|
29
|
-
}, {
|
30
|
-
option: "config",
|
31
|
-
alias: "c",
|
32
|
-
type: "path::String",
|
33
|
-
description: "Use configuration from this file"
|
34
|
-
}, {
|
35
|
-
option: "rulesdir",
|
36
|
-
type: "[path::String]",
|
37
|
-
description: "Use additional rules from this directory"
|
38
|
-
}, {
|
39
|
-
option: "format",
|
40
|
-
alias: "f",
|
41
|
-
type: "String",
|
42
|
-
default: "stylish",
|
43
|
-
description: "Use a specific output format"
|
44
|
-
}, {
|
45
|
-
option: "version",
|
46
|
-
alias: "v",
|
47
|
-
type: "Boolean",
|
48
|
-
description: "Outputs the version number"
|
49
|
-
}, {
|
50
|
-
option: "reset",
|
51
|
-
type: "Boolean",
|
52
|
-
default: "false",
|
53
|
-
description: "Set all default rules to off"
|
54
|
-
}, {
|
55
|
-
option: "eslintrc",
|
56
|
-
type: "Boolean",
|
57
|
-
default: "true",
|
58
|
-
description: "Disable use of configuration from .eslintrc"
|
59
|
-
}, {
|
60
|
-
option: "env",
|
61
|
-
type: "[String]",
|
62
|
-
description: "Specify environments"
|
63
|
-
}, {
|
64
|
-
option: "ext",
|
65
|
-
type: "[String]",
|
66
|
-
default: ".js",
|
67
|
-
description: "Specify JavaScript file extensions"
|
68
|
-
}, {
|
69
|
-
option: "plugin",
|
70
|
-
type: "[String]",
|
71
|
-
description: "Specify plugins"
|
72
|
-
}, {
|
73
|
-
option: "global",
|
74
|
-
type: "[String]",
|
75
|
-
description: "Define global variables"
|
76
|
-
}, {
|
77
|
-
option: "rule",
|
78
|
-
type: "Object",
|
79
|
-
description: "Specify rules"
|
80
|
-
},
|
81
|
-
{
|
82
|
-
option: "ignore-path",
|
83
|
-
type: "path::String",
|
84
|
-
description: "Specify path of ignore file"
|
85
|
-
},
|
86
|
-
{
|
87
|
-
option: "ignore",
|
88
|
-
type: "Boolean",
|
89
|
-
default: "true",
|
90
|
-
description: "Disable use of .eslintignore"
|
91
|
-
},
|
92
|
-
{
|
93
|
-
option: "ignore-pattern",
|
94
|
-
type: "String",
|
95
|
-
description: "Pattern of files to ignore (in addition to those in .eslintignore)"
|
96
|
-
},
|
97
|
-
{
|
98
|
-
option: "color",
|
99
|
-
type: "Boolean",
|
100
|
-
default: "true",
|
101
|
-
description: "Disable color in piped output"
|
102
|
-
},
|
103
|
-
{
|
104
|
-
option: "output-file",
|
105
|
-
alias: "o",
|
106
|
-
type: "path::String",
|
107
|
-
description: "Specify file to write report to"
|
108
|
-
},
|
109
|
-
{
|
110
|
-
option: "quiet",
|
111
|
-
type: "Boolean",
|
112
|
-
default: "false",
|
113
|
-
description: "Report errors only"
|
114
|
-
},
|
115
|
-
{
|
116
|
-
option: "stdin",
|
117
|
-
type: "Boolean",
|
118
|
-
default: "false",
|
119
|
-
description: "Lint code provided on <STDIN>"
|
120
|
-
},
|
121
|
-
{
|
122
|
-
option: "stdin-filename",
|
123
|
-
type: "String",
|
124
|
-
description: "Specify filename to process STDIN as"
|
125
|
-
}
|
126
|
-
|
1
|
+
/**
|
2
|
+
* @fileoverview Options configuration for optionator.
|
3
|
+
* @author George Zahariev
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
//------------------------------------------------------------------------------
|
8
|
+
// Requirements
|
9
|
+
//------------------------------------------------------------------------------
|
10
|
+
|
11
|
+
var optionator = require("optionator");
|
12
|
+
|
13
|
+
//------------------------------------------------------------------------------
|
14
|
+
// Initialization and Public Interface
|
15
|
+
//------------------------------------------------------------------------------
|
16
|
+
|
17
|
+
// exports "parse(args)", "generateHelp()", and "generateHelpForOption(optionName)"
|
18
|
+
module.exports = optionator({
|
19
|
+
prepend: "eslint [options] file.js [file.js] [dir]",
|
20
|
+
concatRepeatedArrays: true,
|
21
|
+
mergeRepeatedObjects: true,
|
22
|
+
options: [{
|
23
|
+
heading: "Options"
|
24
|
+
}, {
|
25
|
+
option: "help",
|
26
|
+
alias: "h",
|
27
|
+
type: "Boolean",
|
28
|
+
description: "Show help"
|
29
|
+
}, {
|
30
|
+
option: "config",
|
31
|
+
alias: "c",
|
32
|
+
type: "path::String",
|
33
|
+
description: "Use configuration from this file"
|
34
|
+
}, {
|
35
|
+
option: "rulesdir",
|
36
|
+
type: "[path::String]",
|
37
|
+
description: "Use additional rules from this directory"
|
38
|
+
}, {
|
39
|
+
option: "format",
|
40
|
+
alias: "f",
|
41
|
+
type: "String",
|
42
|
+
default: "stylish",
|
43
|
+
description: "Use a specific output format"
|
44
|
+
}, {
|
45
|
+
option: "version",
|
46
|
+
alias: "v",
|
47
|
+
type: "Boolean",
|
48
|
+
description: "Outputs the version number"
|
49
|
+
}, {
|
50
|
+
option: "reset",
|
51
|
+
type: "Boolean",
|
52
|
+
default: "false",
|
53
|
+
description: "Set all default rules to off"
|
54
|
+
}, {
|
55
|
+
option: "eslintrc",
|
56
|
+
type: "Boolean",
|
57
|
+
default: "true",
|
58
|
+
description: "Disable use of configuration from .eslintrc"
|
59
|
+
}, {
|
60
|
+
option: "env",
|
61
|
+
type: "[String]",
|
62
|
+
description: "Specify environments"
|
63
|
+
}, {
|
64
|
+
option: "ext",
|
65
|
+
type: "[String]",
|
66
|
+
default: ".js",
|
67
|
+
description: "Specify JavaScript file extensions"
|
68
|
+
}, {
|
69
|
+
option: "plugin",
|
70
|
+
type: "[String]",
|
71
|
+
description: "Specify plugins"
|
72
|
+
}, {
|
73
|
+
option: "global",
|
74
|
+
type: "[String]",
|
75
|
+
description: "Define global variables"
|
76
|
+
}, {
|
77
|
+
option: "rule",
|
78
|
+
type: "Object",
|
79
|
+
description: "Specify rules"
|
80
|
+
},
|
81
|
+
{
|
82
|
+
option: "ignore-path",
|
83
|
+
type: "path::String",
|
84
|
+
description: "Specify path of ignore file"
|
85
|
+
},
|
86
|
+
{
|
87
|
+
option: "ignore",
|
88
|
+
type: "Boolean",
|
89
|
+
default: "true",
|
90
|
+
description: "Disable use of .eslintignore"
|
91
|
+
},
|
92
|
+
{
|
93
|
+
option: "ignore-pattern",
|
94
|
+
type: "String",
|
95
|
+
description: "Pattern of files to ignore (in addition to those in .eslintignore)"
|
96
|
+
},
|
97
|
+
{
|
98
|
+
option: "color",
|
99
|
+
type: "Boolean",
|
100
|
+
default: "true",
|
101
|
+
description: "Disable color in piped output"
|
102
|
+
},
|
103
|
+
{
|
104
|
+
option: "output-file",
|
105
|
+
alias: "o",
|
106
|
+
type: "path::String",
|
107
|
+
description: "Specify file to write report to"
|
108
|
+
},
|
109
|
+
{
|
110
|
+
option: "quiet",
|
111
|
+
type: "Boolean",
|
112
|
+
default: "false",
|
113
|
+
description: "Report errors only"
|
114
|
+
},
|
115
|
+
{
|
116
|
+
option: "stdin",
|
117
|
+
type: "Boolean",
|
118
|
+
default: "false",
|
119
|
+
description: "Lint code provided on <STDIN>"
|
120
|
+
},
|
121
|
+
{
|
122
|
+
option: "stdin-filename",
|
123
|
+
type: "String",
|
124
|
+
description: "Specify filename to process STDIN as"
|
125
|
+
},
|
126
|
+
{
|
127
|
+
option: "init",
|
128
|
+
type: "Boolean",
|
129
|
+
default: "false",
|
130
|
+
description: "Run config initialization wizard"
|
131
|
+
}]
|
132
|
+
});
|