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.
Files changed (113) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/README.md +2 -2
  3. package/lib/built-in-rules-index.js +1 -0
  4. package/lib/cli-engine.js +2 -2
  5. package/lib/config/config-file.js +3 -3
  6. package/lib/config/config-initializer.js +1 -1
  7. package/lib/config/config-validator.js +13 -13
  8. package/lib/config/plugins.js +1 -1
  9. package/lib/formatters/codeframe.js +1 -1
  10. package/lib/formatters/stylish.js +2 -2
  11. package/lib/linter.js +23 -8
  12. package/lib/rules/array-bracket-newline.js +2 -4
  13. package/lib/rules/array-callback-return.js +2 -2
  14. package/lib/rules/array-element-newline.js +2 -4
  15. package/lib/rules/arrow-body-style.js +2 -2
  16. package/lib/rules/camelcase.js +2 -2
  17. package/lib/rules/capitalized-comments.js +12 -17
  18. package/lib/rules/complexity.js +6 -5
  19. package/lib/rules/curly.js +1 -1
  20. package/lib/rules/default-case.js +2 -2
  21. package/lib/rules/dot-notation.js +2 -2
  22. package/lib/rules/eol-last.js +1 -1
  23. package/lib/rules/eqeqeq.js +1 -2
  24. package/lib/rules/func-call-spacing.js +3 -4
  25. package/lib/rules/getter-return.js +1 -1
  26. package/lib/rules/handle-callback-err.js +1 -1
  27. package/lib/rules/id-match.js +1 -1
  28. package/lib/rules/implicit-arrow-linebreak.js +17 -172
  29. package/lib/rules/indent-legacy.js +1 -1
  30. package/lib/rules/indent.js +2 -2
  31. package/lib/rules/init-declarations.js +1 -2
  32. package/lib/rules/jsx-quotes.js +2 -2
  33. package/lib/rules/key-spacing.js +28 -55
  34. package/lib/rules/keyword-spacing.js +7 -7
  35. package/lib/rules/line-comment-position.js +5 -7
  36. package/lib/rules/lines-around-comment.js +1 -1
  37. package/lib/rules/max-depth.js +6 -5
  38. package/lib/rules/max-len.js +4 -4
  39. package/lib/rules/max-lines-per-function.js +1 -1
  40. package/lib/rules/max-lines.js +4 -7
  41. package/lib/rules/max-nested-callbacks.js +6 -5
  42. package/lib/rules/max-params.js +6 -5
  43. package/lib/rules/max-statements-per-line.js +1 -1
  44. package/lib/rules/max-statements.js +6 -5
  45. package/lib/rules/multiline-comment-style.js +9 -9
  46. package/lib/rules/new-cap.js +2 -2
  47. package/lib/rules/no-alert.js +1 -1
  48. package/lib/rules/no-caller.js +1 -1
  49. package/lib/rules/no-dupe-keys.js +2 -2
  50. package/lib/rules/no-else-return.js +2 -2
  51. package/lib/rules/no-empty-character-class.js +1 -1
  52. package/lib/rules/no-extra-parens.js +11 -5
  53. package/lib/rules/no-fallthrough.js +2 -2
  54. package/lib/rules/no-implicit-coercion.js +1 -1
  55. package/lib/rules/no-implied-eval.js +1 -1
  56. package/lib/rules/no-invalid-regexp.js +2 -2
  57. package/lib/rules/no-irregular-whitespace.js +3 -3
  58. package/lib/rules/no-lonely-if.js +1 -1
  59. package/lib/rules/no-mixed-operators.js +1 -1
  60. package/lib/rules/no-mixed-requires.js +3 -5
  61. package/lib/rules/no-mixed-spaces-and-tabs.js +2 -2
  62. package/lib/rules/no-octal-escape.js +1 -1
  63. package/lib/rules/no-octal.js +1 -1
  64. package/lib/rules/no-param-reassign.js +1 -1
  65. package/lib/rules/no-path-concat.js +1 -1
  66. package/lib/rules/no-regex-spaces.js +1 -1
  67. package/lib/rules/no-return-assign.js +1 -1
  68. package/lib/rules/no-self-assign.js +1 -1
  69. package/lib/rules/no-tabs.js +2 -2
  70. package/lib/rules/no-template-curly-in-string.js +1 -1
  71. package/lib/rules/no-trailing-spaces.js +2 -2
  72. package/lib/rules/no-unexpected-multiline.js +1 -1
  73. package/lib/rules/no-unmodified-loop-condition.js +5 -5
  74. package/lib/rules/no-unsafe-finally.js +3 -3
  75. package/lib/rules/no-unused-expressions.js +2 -2
  76. package/lib/rules/no-unused-vars.js +10 -14
  77. package/lib/rules/no-use-before-define.js +5 -5
  78. package/lib/rules/no-useless-escape.js +1 -1
  79. package/lib/rules/no-var.js +1 -1
  80. package/lib/rules/no-warning-comments.js +6 -6
  81. package/lib/rules/object-curly-newline.js +4 -6
  82. package/lib/rules/object-shorthand.js +4 -8
  83. package/lib/rules/one-var.js +3 -6
  84. package/lib/rules/padding-line-between-statements.js +4 -3
  85. package/lib/rules/prefer-const.js +3 -3
  86. package/lib/rules/prefer-destructuring.js +7 -14
  87. package/lib/rules/prefer-named-capture-group.js +123 -0
  88. package/lib/rules/prefer-object-spread.js +1 -1
  89. package/lib/rules/prefer-template.js +3 -3
  90. package/lib/rules/quote-props.js +5 -10
  91. package/lib/rules/quotes.js +4 -6
  92. package/lib/rules/semi.js +7 -8
  93. package/lib/rules/space-before-function-paren.js +3 -6
  94. package/lib/rules/spaced-comment.js +4 -4
  95. package/lib/rules/template-curly-spacing.js +2 -2
  96. package/lib/rules/use-isnan.js +1 -1
  97. package/lib/rules/valid-jsdoc.js +2 -2
  98. package/lib/rules/vars-on-top.js +1 -1
  99. package/lib/rules/yield-star-spacing.js +2 -2
  100. package/lib/rules/yoda.js +2 -2
  101. package/lib/testers/rule-tester.js +1 -1
  102. package/lib/util/ast-utils.js +12 -12
  103. package/lib/util/config-comment-parser.js +4 -4
  104. package/lib/util/glob-utils.js +15 -4
  105. package/lib/util/ignored-paths.js +4 -4
  106. package/lib/util/interpolate.js +1 -1
  107. package/lib/util/naming.js +6 -6
  108. package/lib/util/node-event-generator.js +1 -1
  109. package/lib/util/path-utils.js +2 -2
  110. package/lib/util/patterns/letters.js +1 -1
  111. package/lib/util/source-code.js +2 -2
  112. package/lib/util/xml-escape.js +1 -1
  113. 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
@@ -30,7 +30,7 @@ module.exports = {
30
30
 
31
31
  return {
32
32
  BinaryExpression(node) {
33
- if (/^(?:[<>]|[!=]=)=?$/.test(node.operator) && (node.left.name === "NaN" || node.right.name === "NaN")) {
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
  }
@@ -300,7 +300,7 @@ module.exports = {
300
300
  });
301
301
  } catch (ex) {
302
302
 
303
- if (/braces/i.test(ex.message)) {
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" });
@@ -117,7 +117,7 @@ module.exports = {
117
117
  * @returns {void}
118
118
  */
119
119
  function blockScopeVarCheck(node, parent, grandParent) {
120
- if (!(/Function/.test(grandParent.type) &&
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", default: false },
35
- after: { type: "boolean", default: true }
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, "rule-tester", ruleMap.get.bind(ruleMap), new Environments());
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),
@@ -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/m;
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, "g");
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*)$/.test(node.raw);
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*/g, "$1");
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\-/]+):/g, "\"$1\":").replace(/(]|[0-9])\s+(?=")/, "$1,");
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*/g, ",").split(/,+/).forEach(name => {
131
+ string.replace(/\s*,\s*/gu, ",").split(/,+/u).forEach(name => {
132
132
  const trimmedName = name.trim();
133
133
 
134
134
  if (trimmedName) {
@@ -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(/[/\\]$/, "") + suffix;
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}`, "g"));
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]:$/.test(this._baseDir)) {
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/g).filter(Boolean);
303
+ this.cache[filePath] = fs.readFileSync(filePath, "utf8").split(/\r?\n/gu).filter(Boolean);
304
304
  }
305
305
  return this.cache[filePath];
306
306
  }
@@ -15,7 +15,7 @@ module.exports = (text, data) => {
15
15
  }
16
16
 
17
17
  // Substitution content for any {{ }} markers.
18
- return text.replace(/\{\{([^{}]+?)\}\}/g, (fullMatch, termWithWhitespace) => {
18
+ return text.replace(/\{\{([^{}]+?)\}\}/gu, (fullMatch, termWithWhitespace) => {
19
19
  const term = termWithWhitespace.trim();
20
20
 
21
21
  if (term in data) {
@@ -13,7 +13,7 @@ const pathUtils = require("../util/path-utils");
13
13
  // Private
14
14
  //------------------------------------------------------------------------------
15
15
 
16
- const NAMESPACE_REGEX = /^@.*\//i;
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(/^@([^/]+)\/(.*)$/, `@$1/${prefix}-$2`);
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}$`).exec(fullname);
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}-(.+)$`).exec(fullname);
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}`);
@@ -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(/\\/g, "/");
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;
@@ -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/.test(parent.type) &&
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/.test(text.replace(/\/\*.*?\*\//g, ""));
425
+ return /\s/u.test(text.replace(/\/\*.*?\*\//gu, ""));
426
426
  }
427
427
 
428
428
  /**
@@ -15,7 +15,7 @@
15
15
  * @private
16
16
  */
17
17
  module.exports = function(s) {
18
- return (`${s}`).replace(/[<>&"'\x00-\x1F\x7F\u0080-\uFFFF]/g, c => { // eslint-disable-line no-control-regex
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 "&lt;";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint",
3
- "version": "5.14.1",
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
- "browserify": "node Makefile.js browserify",
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.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
- "babelify": "^10.0.0",
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",