eslint 5.14.1 → 5.15.3
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/CHANGELOG.md +51 -0
- package/README.md +2 -2
- package/lib/built-in-rules-index.js +1 -0
- package/lib/cli-engine.js +2 -2
- package/lib/config/config-file.js +3 -3
- package/lib/config/config-initializer.js +1 -1
- package/lib/config/config-validator.js +13 -13
- package/lib/config/plugins.js +1 -1
- package/lib/formatters/codeframe.js +1 -1
- package/lib/formatters/stylish.js +2 -2
- package/lib/linter.js +23 -8
- package/lib/rules/array-bracket-newline.js +2 -4
- package/lib/rules/array-callback-return.js +2 -2
- package/lib/rules/array-element-newline.js +2 -4
- package/lib/rules/arrow-body-style.js +2 -2
- package/lib/rules/camelcase.js +2 -2
- package/lib/rules/capitalized-comments.js +12 -17
- package/lib/rules/complexity.js +6 -5
- package/lib/rules/curly.js +1 -1
- package/lib/rules/default-case.js +2 -2
- package/lib/rules/dot-notation.js +2 -2
- package/lib/rules/eol-last.js +1 -1
- package/lib/rules/eqeqeq.js +1 -2
- package/lib/rules/func-call-spacing.js +3 -4
- package/lib/rules/getter-return.js +1 -1
- package/lib/rules/handle-callback-err.js +1 -1
- package/lib/rules/id-match.js +1 -1
- package/lib/rules/implicit-arrow-linebreak.js +17 -172
- package/lib/rules/indent-legacy.js +1 -1
- package/lib/rules/indent.js +2 -2
- package/lib/rules/init-declarations.js +1 -2
- package/lib/rules/jsx-quotes.js +2 -2
- package/lib/rules/key-spacing.js +28 -55
- package/lib/rules/keyword-spacing.js +7 -7
- package/lib/rules/line-comment-position.js +5 -7
- package/lib/rules/lines-around-comment.js +1 -1
- package/lib/rules/max-depth.js +6 -5
- package/lib/rules/max-len.js +4 -4
- package/lib/rules/max-lines-per-function.js +1 -1
- package/lib/rules/max-lines.js +4 -7
- package/lib/rules/max-nested-callbacks.js +6 -5
- package/lib/rules/max-params.js +6 -5
- package/lib/rules/max-statements-per-line.js +1 -1
- package/lib/rules/max-statements.js +6 -5
- package/lib/rules/multiline-comment-style.js +9 -9
- package/lib/rules/new-cap.js +2 -2
- package/lib/rules/no-alert.js +1 -1
- package/lib/rules/no-caller.js +1 -1
- package/lib/rules/no-dupe-keys.js +2 -2
- package/lib/rules/no-else-return.js +2 -2
- package/lib/rules/no-empty-character-class.js +1 -1
- package/lib/rules/no-extra-parens.js +11 -5
- package/lib/rules/no-fallthrough.js +2 -2
- package/lib/rules/no-implicit-coercion.js +1 -1
- package/lib/rules/no-implied-eval.js +1 -1
- package/lib/rules/no-invalid-regexp.js +2 -2
- package/lib/rules/no-irregular-whitespace.js +3 -3
- package/lib/rules/no-lonely-if.js +1 -1
- package/lib/rules/no-mixed-operators.js +1 -1
- package/lib/rules/no-mixed-requires.js +3 -5
- package/lib/rules/no-mixed-spaces-and-tabs.js +2 -2
- package/lib/rules/no-octal-escape.js +1 -1
- package/lib/rules/no-octal.js +1 -1
- package/lib/rules/no-param-reassign.js +1 -1
- package/lib/rules/no-path-concat.js +1 -1
- package/lib/rules/no-regex-spaces.js +1 -1
- package/lib/rules/no-return-assign.js +1 -1
- package/lib/rules/no-self-assign.js +1 -1
- package/lib/rules/no-tabs.js +2 -2
- package/lib/rules/no-template-curly-in-string.js +1 -1
- package/lib/rules/no-trailing-spaces.js +2 -2
- package/lib/rules/no-unexpected-multiline.js +1 -1
- package/lib/rules/no-unmodified-loop-condition.js +5 -5
- package/lib/rules/no-unsafe-finally.js +3 -3
- package/lib/rules/no-unused-expressions.js +2 -2
- package/lib/rules/no-unused-vars.js +10 -14
- package/lib/rules/no-use-before-define.js +5 -5
- package/lib/rules/no-useless-escape.js +1 -1
- package/lib/rules/no-var.js +1 -1
- package/lib/rules/no-warning-comments.js +6 -6
- package/lib/rules/object-curly-newline.js +4 -6
- package/lib/rules/object-shorthand.js +4 -8
- package/lib/rules/one-var.js +3 -6
- package/lib/rules/padding-line-between-statements.js +4 -3
- package/lib/rules/prefer-const.js +3 -3
- package/lib/rules/prefer-destructuring.js +7 -14
- package/lib/rules/prefer-named-capture-group.js +123 -0
- package/lib/rules/prefer-object-spread.js +1 -1
- package/lib/rules/prefer-template.js +3 -3
- package/lib/rules/quote-props.js +5 -10
- package/lib/rules/quotes.js +4 -6
- package/lib/rules/semi.js +7 -8
- package/lib/rules/space-before-function-paren.js +3 -6
- package/lib/rules/spaced-comment.js +4 -4
- package/lib/rules/template-curly-spacing.js +2 -2
- package/lib/rules/use-isnan.js +1 -1
- package/lib/rules/valid-jsdoc.js +2 -2
- package/lib/rules/vars-on-top.js +1 -1
- package/lib/rules/yield-star-spacing.js +2 -2
- package/lib/rules/yoda.js +2 -2
- package/lib/testers/rule-tester.js +1 -1
- package/lib/util/ast-utils.js +12 -12
- package/lib/util/config-comment-parser.js +4 -4
- package/lib/util/glob-utils.js +15 -4
- package/lib/util/ignored-paths.js +4 -4
- package/lib/util/interpolate.js +1 -1
- package/lib/util/naming.js +6 -6
- package/lib/util/node-event-generator.js +1 -1
- package/lib/util/path-utils.js +2 -2
- package/lib/util/patterns/letters.js +1 -1
- package/lib/util/source-code.js +2 -2
- package/lib/util/xml-escape.js +1 -1
- package/package.json +10 -9
@@ -126,7 +126,7 @@ function createAlwaysStylePattern(markers, exceptions) {
|
|
126
126
|
pattern += "?"; // or nothing.
|
127
127
|
pattern += createExceptionsPattern(exceptions);
|
128
128
|
|
129
|
-
return new RegExp(pattern);
|
129
|
+
return new RegExp(pattern); // eslint-disable-line require-unicode-regexp
|
130
130
|
}
|
131
131
|
|
132
132
|
/**
|
@@ -142,7 +142,7 @@ function createAlwaysStylePattern(markers, exceptions) {
|
|
142
142
|
function createNeverStylePattern(markers) {
|
143
143
|
const pattern = `^(${markers.map(escape).join("|")})?[ \t]+`;
|
144
144
|
|
145
|
-
return new RegExp(pattern);
|
145
|
+
return new RegExp(pattern); // eslint-disable-line require-unicode-regexp
|
146
146
|
}
|
147
147
|
|
148
148
|
//------------------------------------------------------------------------------
|
@@ -250,9 +250,9 @@ module.exports = {
|
|
250
250
|
// Create RegExp object for valid patterns.
|
251
251
|
rule[type] = {
|
252
252
|
beginRegex: requireSpace ? createAlwaysStylePattern(markers, exceptions) : createNeverStylePattern(markers),
|
253
|
-
endRegex: balanced && requireSpace ? new RegExp(`${createExceptionsPattern(exceptions)}$`) : new RegExp(endNeverPattern),
|
253
|
+
endRegex: balanced && requireSpace ? new RegExp(`${createExceptionsPattern(exceptions)}$`) : new RegExp(endNeverPattern), // eslint-disable-line require-unicode-regexp
|
254
254
|
hasExceptions: exceptions.length > 0,
|
255
|
-
markers: new RegExp(`^(${markers.map(escape).join("|")})`)
|
255
|
+
markers: new RegExp(`^(${markers.map(escape).join("|")})`) // eslint-disable-line require-unicode-regexp
|
256
256
|
};
|
257
257
|
|
258
258
|
return rule;
|
@@ -15,8 +15,8 @@ const astUtils = require("../util/ast-utils");
|
|
15
15
|
// Helpers
|
16
16
|
//------------------------------------------------------------------------------
|
17
17
|
|
18
|
-
const OPEN_PAREN = /\$\{
|
19
|
-
const CLOSE_PAREN = /^\}
|
18
|
+
const OPEN_PAREN = /\$\{$/u;
|
19
|
+
const CLOSE_PAREN = /^\}/u;
|
20
20
|
|
21
21
|
//------------------------------------------------------------------------------
|
22
22
|
// Rule Definition
|
package/lib/rules/use-isnan.js
CHANGED
@@ -30,7 +30,7 @@ module.exports = {
|
|
30
30
|
|
31
31
|
return {
|
32
32
|
BinaryExpression(node) {
|
33
|
-
if (/^(?:[<>]|[!=]=)
|
33
|
+
if (/^(?:[<>]|[!=]=)=?$/u.test(node.operator) && (node.left.name === "NaN" || node.right.name === "NaN")) {
|
34
34
|
context.report({ node, messageId: "useIsNaN" });
|
35
35
|
}
|
36
36
|
}
|
package/lib/rules/valid-jsdoc.js
CHANGED
@@ -300,7 +300,7 @@ module.exports = {
|
|
300
300
|
});
|
301
301
|
} catch (ex) {
|
302
302
|
|
303
|
-
if (/braces/
|
303
|
+
if (/braces/iu.test(ex.message)) {
|
304
304
|
context.report({ node: jsdocNode, messageId: "missingBrace" });
|
305
305
|
} else {
|
306
306
|
context.report({ node: jsdocNode, messageId: "syntaxError" });
|
@@ -482,7 +482,7 @@ module.exports = {
|
|
482
482
|
}
|
483
483
|
|
484
484
|
if (options.matchDescription) {
|
485
|
-
const regex = new RegExp(options.matchDescription);
|
485
|
+
const regex = new RegExp(options.matchDescription); // eslint-disable-line require-unicode-regexp
|
486
486
|
|
487
487
|
if (!regex.test(jsdoc.description)) {
|
488
488
|
context.report({ node: jsdocNode, messageId: "unsatisfiedDesc" });
|
package/lib/rules/vars-on-top.js
CHANGED
@@ -117,7 +117,7 @@ module.exports = {
|
|
117
117
|
* @returns {void}
|
118
118
|
*/
|
119
119
|
function blockScopeVarCheck(node, parent, grandParent) {
|
120
|
-
if (!(/Function
|
120
|
+
if (!(/Function/u.test(grandParent.type) &&
|
121
121
|
parent.type === "BlockStatement" &&
|
122
122
|
isVarOnTop(node, parent.body))) {
|
123
123
|
context.report({ node, messageId: "top" });
|
@@ -31,8 +31,8 @@ module.exports = {
|
|
31
31
|
{
|
32
32
|
type: "object",
|
33
33
|
properties: {
|
34
|
-
before: { type: "boolean"
|
35
|
-
after: { type: "boolean"
|
34
|
+
before: { type: "boolean" },
|
35
|
+
after: { type: "boolean" }
|
36
36
|
},
|
37
37
|
additionalProperties: false
|
38
38
|
}
|
package/lib/rules/yoda.js
CHANGED
@@ -20,7 +20,7 @@ const astUtils = require("../util/ast-utils");
|
|
20
20
|
* @returns {boolean} Whether or not it is a comparison operator.
|
21
21
|
*/
|
22
22
|
function isComparisonOperator(operator) {
|
23
|
-
return (/^(==|===|!=|!==|<|>|<=|>=)$/).test(operator);
|
23
|
+
return (/^(==|===|!=|!==|<|>|<=|>=)$/u).test(operator);
|
24
24
|
}
|
25
25
|
|
26
26
|
/**
|
@@ -29,7 +29,7 @@ function isComparisonOperator(operator) {
|
|
29
29
|
* @returns {boolean} Whether or not it is an equality operator.
|
30
30
|
*/
|
31
31
|
function isEqualityOperator(operator) {
|
32
|
-
return (/^(==|===)$/).test(operator);
|
32
|
+
return (/^(==|===)$/u).test(operator);
|
33
33
|
}
|
34
34
|
|
35
35
|
/**
|
@@ -379,7 +379,7 @@ class RuleTester {
|
|
379
379
|
}
|
380
380
|
}
|
381
381
|
|
382
|
-
validator.validate(config,
|
382
|
+
validator.validate(config, ruleMap.get.bind(ruleMap), new Environments(), "rule-tester");
|
383
383
|
|
384
384
|
return {
|
385
385
|
messages: linter.verify(code, config, filename, true),
|
package/lib/util/ast-utils.js
CHANGED
@@ -16,19 +16,19 @@ const espree = require("espree");
|
|
16
16
|
// Helpers
|
17
17
|
//------------------------------------------------------------------------------
|
18
18
|
|
19
|
-
const anyFunctionPattern = /^(?:Function(?:Declaration|Expression)|ArrowFunctionExpression)
|
20
|
-
const anyLoopPattern = /^(?:DoWhile|For|ForIn|ForOf|While)Statement
|
21
|
-
const arrayOrTypedArrayPattern = /Array
|
22
|
-
const arrayMethodPattern = /^(?:every|filter|find|findIndex|forEach|map|some)
|
23
|
-
const bindOrCallOrApplyPattern = /^(?:bind|call|apply)
|
24
|
-
const breakableTypePattern = /^(?:(?:Do)?While|For(?:In|Of)?|Switch)Statement
|
25
|
-
const thisTagPattern = /^[\s*]*@this/
|
19
|
+
const anyFunctionPattern = /^(?:Function(?:Declaration|Expression)|ArrowFunctionExpression)$/u;
|
20
|
+
const anyLoopPattern = /^(?:DoWhile|For|ForIn|ForOf|While)Statement$/u;
|
21
|
+
const arrayOrTypedArrayPattern = /Array$/u;
|
22
|
+
const arrayMethodPattern = /^(?:every|filter|find|findIndex|forEach|map|some)$/u;
|
23
|
+
const bindOrCallOrApplyPattern = /^(?:bind|call|apply)$/u;
|
24
|
+
const breakableTypePattern = /^(?:(?:Do)?While|For(?:In|Of)?|Switch)Statement$/u;
|
25
|
+
const thisTagPattern = /^[\s*]*@this/mu;
|
26
26
|
|
27
27
|
|
28
|
-
const COMMENTS_IGNORE_PATTERN = /^\s*(?:eslint|jshint\s+|jslint\s+|istanbul\s+|globals?\s+|exported\s+|jscs)
|
28
|
+
const COMMENTS_IGNORE_PATTERN = /^\s*(?:eslint|jshint\s+|jslint\s+|istanbul\s+|globals?\s+|exported\s+|jscs)/u;
|
29
29
|
const LINEBREAKS = new Set(["\r\n", "\r", "\n", "\u2028", "\u2029"]);
|
30
|
-
const LINEBREAK_MATCHER = /\r\n|[\r\n\u2028\u2029]
|
31
|
-
const SHEBANG_MATCHER = /^#!([^\r\n]+)
|
30
|
+
const LINEBREAK_MATCHER = /\r\n|[\r\n\u2028\u2029]/u;
|
31
|
+
const SHEBANG_MATCHER = /^#!([^\r\n]+)/u;
|
32
32
|
|
33
33
|
// A set of node types that can contain a list of statements
|
34
34
|
const STATEMENT_LIST_PARENTS = new Set(["Program", "BlockStatement", "SwitchCase"]);
|
@@ -398,7 +398,7 @@ function getOpeningParenOfParams(node, sourceCode) {
|
|
398
398
|
* @returns {RegExp} A global regular expression that matches line terminators
|
399
399
|
*/
|
400
400
|
function createGlobalLinebreakMatcher() {
|
401
|
-
return new RegExp(LINEBREAK_MATCHER.source, "
|
401
|
+
return new RegExp(LINEBREAK_MATCHER.source, "gu");
|
402
402
|
}
|
403
403
|
|
404
404
|
/**
|
@@ -1006,7 +1006,7 @@ module.exports = {
|
|
1006
1006
|
* '5' // false
|
1007
1007
|
*/
|
1008
1008
|
isDecimalInteger(node) {
|
1009
|
-
return node.type === "Literal" && typeof node.value === "number" && /^(0|[1-9]\d*)
|
1009
|
+
return node.type === "Literal" && typeof node.value === "number" && /^(0|[1-9]\d*)$/u.test(node.raw);
|
1010
1010
|
},
|
1011
1011
|
|
1012
1012
|
/**
|
@@ -38,9 +38,9 @@ module.exports = class ConfigCommentParser {
|
|
38
38
|
const items = {};
|
39
39
|
|
40
40
|
// Collapse whitespace around `:` and `,` to make parsing easier
|
41
|
-
const trimmedString = string.replace(/\s*([:,])\s*/
|
41
|
+
const trimmedString = string.replace(/\s*([:,])\s*/gu, "$1");
|
42
42
|
|
43
|
-
trimmedString.split(/\s|,+/).forEach(name => {
|
43
|
+
trimmedString.split(/\s|,+/u).forEach(name => {
|
44
44
|
if (!name) {
|
45
45
|
return;
|
46
46
|
}
|
@@ -90,7 +90,7 @@ module.exports = class ConfigCommentParser {
|
|
90
90
|
* But we are supporting that. So this is a fallback for that.
|
91
91
|
*/
|
92
92
|
items = {};
|
93
|
-
const normalizedString = string.replace(/([a-zA-Z0-9\-/]+):/
|
93
|
+
const normalizedString = string.replace(/([a-zA-Z0-9\-/]+):/gu, "\"$1\":").replace(/(\]|[0-9])\s+(?=")/u, "$1,");
|
94
94
|
|
95
95
|
try {
|
96
96
|
items = JSON.parse(`{${normalizedString}}`);
|
@@ -128,7 +128,7 @@ module.exports = class ConfigCommentParser {
|
|
128
128
|
const items = {};
|
129
129
|
|
130
130
|
// Collapse whitespace around commas
|
131
|
-
string.replace(/\s*,\s*/
|
131
|
+
string.replace(/\s*,\s*/gu, ",").split(/,+/u).forEach(name => {
|
132
132
|
const trimmedName = name.trim();
|
133
133
|
|
134
134
|
if (trimmedName) {
|
package/lib/util/glob-utils.js
CHANGED
@@ -52,7 +52,7 @@ function processPath(options) {
|
|
52
52
|
const cwd = (options && options.cwd) || process.cwd();
|
53
53
|
let extensions = (options && options.extensions) || [".js"];
|
54
54
|
|
55
|
-
extensions = extensions.map(ext => ext.replace(
|
55
|
+
extensions = extensions.map(ext => ext.replace(/^\./u, ""));
|
56
56
|
|
57
57
|
let suffix = "/**";
|
58
58
|
|
@@ -70,11 +70,15 @@ function processPath(options) {
|
|
70
70
|
* @private
|
71
71
|
*/
|
72
72
|
return function(pathname) {
|
73
|
+
if (pathname === "") {
|
74
|
+
return "";
|
75
|
+
}
|
76
|
+
|
73
77
|
let newPath = pathname;
|
74
78
|
const resolvedPath = path.resolve(cwd, pathname);
|
75
79
|
|
76
80
|
if (directoryExists(resolvedPath)) {
|
77
|
-
newPath = pathname.replace(/[/\\]
|
81
|
+
newPath = pathname.replace(/[/\\]$/u, "") + suffix;
|
78
82
|
}
|
79
83
|
|
80
84
|
return pathUtils.convertPathToPosix(newPath);
|
@@ -169,7 +173,7 @@ function resolveFileGlobPatterns(patterns, options) {
|
|
169
173
|
return patterns.map(processPathExtensions);
|
170
174
|
}
|
171
175
|
|
172
|
-
const dotfilesPattern = /(?:(?:^\.)|(?:[/\\]\.))[^/\\.]
|
176
|
+
const dotfilesPattern = /(?:(?:^\.)|(?:[/\\]\.))[^/\\.].*/u;
|
173
177
|
|
174
178
|
/**
|
175
179
|
* Build a list of absolute filesnames on which ESLint will act.
|
@@ -201,6 +205,13 @@ function listFilesToProcess(globPatterns, providedOptions) {
|
|
201
205
|
|
202
206
|
debug("Creating list of files to process.");
|
203
207
|
const resolvedPathsByGlobPattern = resolvedGlobPatterns.map(pattern => {
|
208
|
+
if (pattern === "") {
|
209
|
+
return [{
|
210
|
+
filename: "",
|
211
|
+
behavior: SILENTLY_IGNORE
|
212
|
+
}];
|
213
|
+
}
|
214
|
+
|
204
215
|
const file = path.resolve(cwd, pattern);
|
205
216
|
|
206
217
|
if (options.globInputPaths === false || (fs.existsSync(file) && fs.statSync(file).isFile())) {
|
@@ -240,7 +251,7 @@ function listFilesToProcess(globPatterns, providedOptions) {
|
|
240
251
|
});
|
241
252
|
|
242
253
|
const allPathDescriptors = resolvedPathsByGlobPattern.reduce((pathsForAllGlobs, pathsForCurrentGlob, index) => {
|
243
|
-
if (pathsForCurrentGlob.every(pathDescriptor => pathDescriptor.behavior === SILENTLY_IGNORE)) {
|
254
|
+
if (pathsForCurrentGlob.every(pathDescriptor => pathDescriptor.behavior === SILENTLY_IGNORE && pathDescriptor.filename !== "")) {
|
244
255
|
throw new (pathsForCurrentGlob.length ? AllFilesIgnoredError : NoFilesFoundError)(globPatterns[index]);
|
245
256
|
}
|
246
257
|
|
@@ -89,7 +89,7 @@ function mergeDefaultOptions(options) {
|
|
89
89
|
*/
|
90
90
|
const normalizePathSeps = path.sep === "/"
|
91
91
|
? (str => str)
|
92
|
-
: ((seps, str) => str.replace(seps, "/")).bind(null, new RegExp(`\\${path.sep}`, "
|
92
|
+
: ((seps, str) => str.replace(seps, "/")).bind(null, new RegExp(`\\${path.sep}`, "gu"));
|
93
93
|
/* eslint-enable valid-jsdoc */
|
94
94
|
|
95
95
|
/**
|
@@ -104,7 +104,7 @@ function relativize(globPattern, relativePathToOldBaseDir) {
|
|
104
104
|
}
|
105
105
|
|
106
106
|
const prefix = globPattern.startsWith("!") ? "!" : "";
|
107
|
-
const globWithoutPrefix = globPattern.replace(
|
107
|
+
const globWithoutPrefix = globPattern.replace(/^!/u, "");
|
108
108
|
|
109
109
|
if (globWithoutPrefix.startsWith("/")) {
|
110
110
|
return `${prefix}/${normalizePathSeps(relativePathToOldBaseDir)}${globWithoutPrefix}`;
|
@@ -284,7 +284,7 @@ class IgnoredPaths {
|
|
284
284
|
}
|
285
285
|
|
286
286
|
// If it's only Windows drive letter, it needs \
|
287
|
-
if (/^[A-Z]
|
287
|
+
if (/^[A-Z]:$/u.test(this._baseDir)) {
|
288
288
|
this._baseDir += "\\";
|
289
289
|
}
|
290
290
|
|
@@ -300,7 +300,7 @@ class IgnoredPaths {
|
|
300
300
|
*/
|
301
301
|
readIgnoreFile(filePath) {
|
302
302
|
if (typeof this.cache[filePath] === "undefined") {
|
303
|
-
this.cache[filePath] = fs.readFileSync(filePath, "utf8").split(/\r?\n/
|
303
|
+
this.cache[filePath] = fs.readFileSync(filePath, "utf8").split(/\r?\n/gu).filter(Boolean);
|
304
304
|
}
|
305
305
|
return this.cache[filePath];
|
306
306
|
}
|
package/lib/util/interpolate.js
CHANGED
@@ -15,7 +15,7 @@ module.exports = (text, data) => {
|
|
15
15
|
}
|
16
16
|
|
17
17
|
// Substitution content for any {{ }} markers.
|
18
|
-
return text.replace(/\{\{([^{}]+?)\}\}/
|
18
|
+
return text.replace(/\{\{([^{}]+?)\}\}/gu, (fullMatch, termWithWhitespace) => {
|
19
19
|
const term = termWithWhitespace.trim();
|
20
20
|
|
21
21
|
if (term in data) {
|
package/lib/util/naming.js
CHANGED
@@ -13,7 +13,7 @@ const pathUtils = require("../util/path-utils");
|
|
13
13
|
// Private
|
14
14
|
//------------------------------------------------------------------------------
|
15
15
|
|
16
|
-
const NAMESPACE_REGEX = /^@.*\//
|
16
|
+
const NAMESPACE_REGEX = /^@.*\//iu;
|
17
17
|
|
18
18
|
/**
|
19
19
|
* Brings package name to correct format based on prefix
|
@@ -40,8 +40,8 @@ function normalizePackageName(name, prefix) {
|
|
40
40
|
* it's a scoped package
|
41
41
|
* package name is the prefix, or just a username
|
42
42
|
*/
|
43
|
-
const scopedPackageShortcutRegex = new RegExp(`^(@[^/]+)(?:/(?:${prefix})?)
|
44
|
-
scopedPackageNameRegex = new RegExp(`^${prefix}(-|$)
|
43
|
+
const scopedPackageShortcutRegex = new RegExp(`^(@[^/]+)(?:/(?:${prefix})?)?$`, "u"),
|
44
|
+
scopedPackageNameRegex = new RegExp(`^${prefix}(-|$)`, "u");
|
45
45
|
|
46
46
|
if (scopedPackageShortcutRegex.test(normalizedName)) {
|
47
47
|
normalizedName = normalizedName.replace(scopedPackageShortcutRegex, `$1/${prefix}`);
|
@@ -51,7 +51,7 @@ function normalizePackageName(name, prefix) {
|
|
51
51
|
* for scoped packages, insert the prefix after the first / unless
|
52
52
|
* the path is already @scope/eslint or @scope/eslint-xxx-yyy
|
53
53
|
*/
|
54
|
-
normalizedName = normalizedName.replace(/^@([^/]+)\/(.*)
|
54
|
+
normalizedName = normalizedName.replace(/^@([^/]+)\/(.*)$/u, `@$1/${prefix}-$2`);
|
55
55
|
}
|
56
56
|
} else if (normalizedName.indexOf(`${prefix}-`) !== 0) {
|
57
57
|
normalizedName = `${prefix}-${normalizedName}`;
|
@@ -68,13 +68,13 @@ function normalizePackageName(name, prefix) {
|
|
68
68
|
*/
|
69
69
|
function getShorthandName(fullname, prefix) {
|
70
70
|
if (fullname[0] === "@") {
|
71
|
-
let matchResult = new RegExp(`^(@[^/]+)/${prefix}
|
71
|
+
let matchResult = new RegExp(`^(@[^/]+)/${prefix}$`, "u").exec(fullname);
|
72
72
|
|
73
73
|
if (matchResult) {
|
74
74
|
return matchResult[1];
|
75
75
|
}
|
76
76
|
|
77
|
-
matchResult = new RegExp(`^(@[^/]+)/${prefix}-(.+)
|
77
|
+
matchResult = new RegExp(`^(@[^/]+)/${prefix}-(.+)$`, "u").exec(fullname);
|
78
78
|
if (matchResult) {
|
79
79
|
return `${matchResult[1]}/${matchResult[2]}`;
|
80
80
|
}
|
@@ -157,7 +157,7 @@ function compareSpecificity(selectorA, selectorB) {
|
|
157
157
|
*/
|
158
158
|
function tryParseSelector(rawSelector) {
|
159
159
|
try {
|
160
|
-
return esquery.parse(rawSelector.replace(/:exit
|
160
|
+
return esquery.parse(rawSelector.replace(/:exit$/u, ""));
|
161
161
|
} catch (err) {
|
162
162
|
if (typeof err.offset === "number") {
|
163
163
|
throw new SyntaxError(`Syntax error in selector "${rawSelector}" at position ${err.offset}: ${err.message}`);
|
package/lib/util/path-utils.js
CHANGED
@@ -22,7 +22,7 @@ const path = require("path");
|
|
22
22
|
*/
|
23
23
|
function convertPathToPosix(filepath) {
|
24
24
|
const normalizedFilepath = path.normalize(filepath);
|
25
|
-
const posixFilepath = normalizedFilepath.replace(/\\/
|
25
|
+
const posixFilepath = normalizedFilepath.replace(/\\/gu, "/");
|
26
26
|
|
27
27
|
return posixFilepath;
|
28
28
|
}
|
@@ -58,7 +58,7 @@ function getRelativePath(filepath, baseDir) {
|
|
58
58
|
}
|
59
59
|
return path.relative(baseDir, absolutePath);
|
60
60
|
}
|
61
|
-
return absolutePath.replace(
|
61
|
+
return absolutePath.replace(/^\//u, "");
|
62
62
|
|
63
63
|
}
|
64
64
|
|
@@ -33,4 +33,4 @@
|
|
33
33
|
|
34
34
|
"use strict";
|
35
35
|
|
36
|
-
module.exports = /[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDE00-\uDE11\uDE13-\uDE2B\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDE00-\uDE2F\uDE44\uDE80-\uDEAA]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]
|
36
|
+
module.exports = /[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDE00-\uDE11\uDE13-\uDE2B\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDE00-\uDE2F\uDE44\uDE80-\uDEAA]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]/u;
|
package/lib/util/source-code.js
CHANGED
@@ -357,7 +357,7 @@ class SourceCode extends TokenStore {
|
|
357
357
|
if (parent.type !== "CallExpression" && parent.type !== "NewExpression") {
|
358
358
|
while (
|
359
359
|
!this.getCommentsBefore(parent).length &&
|
360
|
-
!/Function
|
360
|
+
!/Function/u.test(parent.type) &&
|
361
361
|
parent.type !== "MethodDefinition" &&
|
362
362
|
parent.type !== "Property"
|
363
363
|
) {
|
@@ -422,7 +422,7 @@ class SourceCode extends TokenStore {
|
|
422
422
|
isSpaceBetweenTokens(first, second) {
|
423
423
|
const text = this.text.slice(first.range[1], second.range[0]);
|
424
424
|
|
425
|
-
return /\s
|
425
|
+
return /\s/u.test(text.replace(/\/\*.*?\*\//gu, ""));
|
426
426
|
}
|
427
427
|
|
428
428
|
/**
|
package/lib/util/xml-escape.js
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
* @private
|
16
16
|
*/
|
17
17
|
module.exports = function(s) {
|
18
|
-
return (`${s}`).replace(/[<>&"'\x00-\x1F\x7F\u0080-\uFFFF]/
|
18
|
+
return (`${s}`).replace(/[<>&"'\x00-\x1F\x7F\u0080-\uFFFF]/gu, c => { // eslint-disable-line no-control-regex
|
19
19
|
switch (c) {
|
20
20
|
case "<":
|
21
21
|
return "<";
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "eslint",
|
3
|
-
"version": "5.
|
3
|
+
"version": "5.15.3",
|
4
4
|
"author": "Nicholas C. Zakas <nicholas+npm@nczconsulting.com>",
|
5
5
|
"description": "An AST-based pattern checker for JavaScript.",
|
6
6
|
"bin": {
|
@@ -18,7 +18,7 @@
|
|
18
18
|
"publish-release": "node Makefile.js publishRelease",
|
19
19
|
"docs": "node Makefile.js docs",
|
20
20
|
"gensite": "node Makefile.js gensite",
|
21
|
-
"
|
21
|
+
"webpack": "node Makefile.js webpack",
|
22
22
|
"perf": "node Makefile.js perf",
|
23
23
|
"profile": "beefy tests/bench/bench.js --open -- -t brfs -t ./tests/bench/xform-rules.js -r espree",
|
24
24
|
"coveralls": "cat ./coverage/lcov.info | coveralls"
|
@@ -41,7 +41,7 @@
|
|
41
41
|
"cross-spawn": "^6.0.5",
|
42
42
|
"debug": "^4.0.1",
|
43
43
|
"doctrine": "^3.0.0",
|
44
|
-
"eslint-scope": "^4.0.
|
44
|
+
"eslint-scope": "^4.0.3",
|
45
45
|
"eslint-utils": "^1.3.1",
|
46
46
|
"eslint-visitor-keys": "^1.0.0",
|
47
47
|
"espree": "^5.0.1",
|
@@ -76,30 +76,29 @@
|
|
76
76
|
"@babel/core": "^7.2.2",
|
77
77
|
"@babel/polyfill": "^7.2.5",
|
78
78
|
"@babel/preset-env": "^7.3.1",
|
79
|
-
"
|
79
|
+
"babel-loader": "^8.0.5",
|
80
80
|
"beefy": "^2.1.8",
|
81
81
|
"brfs": "^2.0.0",
|
82
|
-
"browserify": "^16.2.2",
|
83
82
|
"chai": "^4.0.1",
|
84
83
|
"cheerio": "^0.22.0",
|
85
84
|
"common-tags": "^1.8.0",
|
86
85
|
"coveralls": "^3.0.1",
|
87
86
|
"dateformat": "^3.0.3",
|
88
87
|
"ejs": "^2.6.1",
|
88
|
+
"eslint-config-eslint": "file:packages/eslint-config-eslint",
|
89
89
|
"eslint-plugin-eslint-plugin": "^2.0.1",
|
90
|
+
"eslint-plugin-internal-rules": "file:tools/internal-rules",
|
90
91
|
"eslint-plugin-node": "^8.0.0",
|
91
|
-
"eslint-plugin-rulesdir": "^0.1.0",
|
92
92
|
"eslint-release": "^1.2.0",
|
93
|
-
"eslint-rule-composer": "^0.3.0",
|
94
93
|
"eslump": "^2.0.0",
|
95
94
|
"esprima": "^4.0.1",
|
96
95
|
"istanbul": "^0.4.5",
|
97
96
|
"jsdoc": "^3.5.5",
|
98
97
|
"karma": "^3.1.4",
|
99
|
-
"karma-babel-preprocessor": "^8.0.0",
|
100
98
|
"karma-chrome-launcher": "^2.2.0",
|
101
99
|
"karma-mocha": "^1.3.0",
|
102
100
|
"karma-mocha-reporter": "^2.2.3",
|
101
|
+
"karma-webpack": "^4.0.0-rc.6",
|
103
102
|
"leche": "^2.2.3",
|
104
103
|
"load-perf": "^0.2.0",
|
105
104
|
"markdownlint": "^0.12.0",
|
@@ -111,7 +110,9 @@
|
|
111
110
|
"shelljs": "^0.8.2",
|
112
111
|
"sinon": "^3.3.0",
|
113
112
|
"temp": "^0.9.0",
|
114
|
-
"through": "^2.3.8"
|
113
|
+
"through": "^2.3.8",
|
114
|
+
"webpack": "^4.29.3",
|
115
|
+
"webpack-cli": "^3.2.3"
|
115
116
|
},
|
116
117
|
"keywords": [
|
117
118
|
"ast",
|