eslint 7.8.1 → 7.9.0
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 +19 -0
- package/README.md +1 -1
- package/lib/cli-engine/config-array-factory.js +11 -5
- package/lib/rules/id-length.js +2 -7
- package/lib/rules/prefer-destructuring.js +5 -0
- package/lib/rules/utils/ast-utils.js +3 -1
- package/messages/plugin-invalid.txt +8 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
v7.9.0 - September 12, 2020
|
2
|
+
|
3
|
+
* [`3ca2700`](https://github.com/eslint/eslint/commit/3ca27004ece5016ba7aed775f01ad13bc9282296) Fix: Corrected notice for invalid (:) plugin names (#13473) (Josh Goldberg)
|
4
|
+
* [`fc5783d`](https://github.com/eslint/eslint/commit/fc5783d2ff9e3b0d7a1f9664928d49270b4a6c01) Docs: Fix leaky anchors in v4 migration page (#13635) (Timo Tijhof)
|
5
|
+
* [`f1d07f1`](https://github.com/eslint/eslint/commit/f1d07f112be96c64dfdaa154aa9ac81985b16238) Docs: Provide install commands for Yarn (#13661) (Nikita Baksalyar)
|
6
|
+
* [`29d1cdc`](https://github.com/eslint/eslint/commit/29d1cdceedd6c056a39149723cf9ff2fbb260cbf) Fix: prefer-destructuring removes comments (refs #13678) (#13682) (Milos Djermanovic)
|
7
|
+
* [`b4da0a7`](https://github.com/eslint/eslint/commit/b4da0a7ca7995435bdfc116fd374eb0649470131) Docs: fix typo in working with plugins docs (#13683) (啸生)
|
8
|
+
* [`6f87db7`](https://github.com/eslint/eslint/commit/6f87db7c318225e48ccbbf0bec8b3758ea839b82) Update: fix id-length false negatives on Object.prototype property names (#13670) (Milos Djermanovic)
|
9
|
+
* [`361ac4d`](https://github.com/eslint/eslint/commit/361ac4d895c15086fb4351d4dca1405b2fdc4bd5) Fix: NonOctalDecimalIntegerLiteral is decimal integer (fixes #13588) (#13664) (Milos Djermanovic)
|
10
|
+
* [`f260716`](https://github.com/eslint/eslint/commit/f260716695064e4b4193337107b60401bd4b3f20) Docs: update outdated link (#13677) (klkhan)
|
11
|
+
* [`5138c91`](https://github.com/eslint/eslint/commit/5138c913c256e4266ffb68278783af45bf70af84) Docs: add missing eslint directive comments in no-await-in-loop (#13673) (Milos Djermanovic)
|
12
|
+
* [`17b58b5`](https://github.com/eslint/eslint/commit/17b58b528df62bf96813d50c087cafdf83306810) Docs: clarify correct example in no-return-await (fixes #13656) (#13657) (Milos Djermanovic)
|
13
|
+
* [`9171f0a`](https://github.com/eslint/eslint/commit/9171f0a99bb4d7c53f109b1c2b215004a7c27713) Chore: fix typo (#13660) (Nitin Kumar)
|
14
|
+
* [`6d9f8fb`](https://github.com/eslint/eslint/commit/6d9f8fbb7ed4361b475fb50d04e6d25744d5b1a2) Sponsors: Sync README with website (ESLint Jenkins)
|
15
|
+
* [`97b0dd9`](https://github.com/eslint/eslint/commit/97b0dd9a1af1ae4ae3857adcfe6eeac7837101ed) Sponsors: Sync README with website (ESLint Jenkins)
|
16
|
+
* [`deab125`](https://github.com/eslint/eslint/commit/deab125fc9220dab43baeb32c6cf78942ad25a83) Sponsors: Sync README with website (ESLint Jenkins)
|
17
|
+
* [`bf2e367`](https://github.com/eslint/eslint/commit/bf2e367bf4f6fde9930af9de8b8d8bc3d8b5782f) Sponsors: Sync README with website (ESLint Jenkins)
|
18
|
+
* [`8929208`](https://github.com/eslint/eslint/commit/89292084bf91ba5ae5bf966c6c56fa3da139ce57) Sponsors: Sync README with website (ESLint Jenkins)
|
19
|
+
|
1
20
|
v7.8.1 - September 1, 2020
|
2
21
|
|
3
22
|
* [`f542b5d`](https://github.com/eslint/eslint/commit/f542b5d0679b73326ad249fc44a54c3f848bd3e6) Fix: Update broken @eslint/eslintrc version (fixes #13641) (#13647) (Nicholas C. Zakas)
|
package/README.md
CHANGED
@@ -266,7 +266,7 @@ The following companies, organizations, and individuals support ESLint's ongoing
|
|
266
266
|
<h3>Gold Sponsors</h3>
|
267
267
|
<p><a href="https://www.salesforce.com"><img src="https://images.opencollective.com/salesforce/ca8f997/logo.png" alt="Salesforce" height="96"></a> <a href="https://www.airbnb.com/"><img src="https://images.opencollective.com/airbnb/d327d66/logo.png" alt="Airbnb" height="96"></a> <a href="https://aka.ms/microsoftfossfund"><img src="https://avatars1.githubusercontent.com/u/67931232?u=7fddc652a464d7151b97e8f108392af7d54fa3e8&v=4" alt="Microsoft FOSS Fund Sponsorships" height="96"></a></p><h3>Silver Sponsors</h3>
|
268
268
|
<p><a href="https://liftoff.io/"><img src="https://images.opencollective.com/liftoff/5c4fa84/logo.png" alt="Liftoff" height="64"></a> <a href="https://www.ampproject.org/"><img src="https://images.opencollective.com/amp/c8a3b25/logo.png" alt="AMP Project" height="64"></a></p><h3>Bronze Sponsors</h3>
|
269
|
-
<p><a href="https://www.veikkaajat.com"><img src="https://images.opencollective.com/veikkaajat/b92b427/logo.png" alt="Veikkaajat.com" height="32"></a> <a href="https://www.nettikasinot.media/"><img src="https://images.opencollective.com/nettikasinot-media/2dba7da/logo.png" alt="Nettikasinot.media" height="32"></a> <a href="https://mytruemedia.com/"><img src="https://images.opencollective.com/my-true-media/03e2168/logo.png" alt="My True Media" height="32"></a> <a href="https://www.norgekasino.com"><img src="https://images.opencollective.com/norgekasino/ecfd57a/logo.png" alt="Norgekasino" height="32"></a> <a href="https://www.japanesecasino.com/"><img src="https://images.opencollective.com/japanesecasino/b0ffe3c/logo.png" alt="Japanesecasino" height="32"></a> <a href="https://www.casinotop.com/"><img src="https://images.opencollective.com/casinotop-com/10fd95b/logo.png" alt="CasinoTop.com" height="32"></a> <a href="https://www.casinotopp.net/"><img src="https://images.opencollective.com/casino-topp/1dd399a/logo.png" alt="Casino Topp" height="32"></a> <a href="https://
|
269
|
+
<p><a href="https://buy.fineproxy.org/eng/"><img src="https://images.opencollective.com/buy-fineproxy-org/2002c40/logo.png" alt="Buy.Fineproxy.Org" height="32"></a> <a href="https://www.veikkaajat.com"><img src="https://images.opencollective.com/veikkaajat/b92b427/logo.png" alt="Veikkaajat.com" height="32"></a> <a href="https://www.nettikasinot.media/"><img src="https://images.opencollective.com/nettikasinot-media/2dba7da/logo.png" alt="Nettikasinot.media" height="32"></a> <a href="https://mytruemedia.com/"><img src="https://images.opencollective.com/my-true-media/03e2168/logo.png" alt="My True Media" height="32"></a> <a href="https://www.norgekasino.com"><img src="https://images.opencollective.com/norgekasino/ecfd57a/logo.png" alt="Norgekasino" height="32"></a> <a href="https://www.japanesecasino.com/"><img src="https://images.opencollective.com/japanesecasino/b0ffe3c/logo.png" alt="Japanesecasino" height="32"></a> <a href="https://www.casinotop.com/"><img src="https://images.opencollective.com/casinotop-com/10fd95b/logo.png" alt="CasinoTop.com" height="32"></a> <a href="https://www.casinotopp.net/"><img src="https://images.opencollective.com/casino-topp/1dd399a/logo.png" alt="Casino Topp" height="32"></a> <a href="https://www.crosswordsolver.org/anagram-solver/"><img src="https://images.opencollective.com/anagram-solver/2666271/logo.png" alt="Anagram Solver" height="32"></a> <a href="https://www.kasinot.fi"><img src="https://images.opencollective.com/kasinot-fi/e09aa2e/logo.png" alt="Kasinot.fi" height="32"></a> <a href="https://www.pelisivut.com"><img src="https://images.opencollective.com/pelisivut/04f08f2/logo.png" alt="Pelisivut" height="32"></a> <a href="https://www.nettikasinot.org"><img src="https://images.opencollective.com/nettikasinot-org/53a4b44/logo.png" alt="Nettikasinot.org" height="32"></a> <a href="https://www.bonus.com.de/freispiele"><img src="https://images.opencollective.com/bonusfinder-deutschland/646169e/logo.png" alt="BonusFinder Deutschland" height="32"></a> <a href="null"><img src="https://images.opencollective.com/bugsnag-stability-monitoring/c2cef36/logo.png" alt="Bugsnag Stability Monitoring" height="32"></a> <a href="https://mixpanel.com"><img src="https://images.opencollective.com/mixpanel/cd682f7/logo.png" alt="Mixpanel" height="32"></a> <a href="https://www.vpsserver.com"><img src="https://images.opencollective.com/vpsservercom/logo.png" alt="VPS Server" height="32"></a> <a href="https://icons8.com"><img src="https://images.opencollective.com/icons8/7fa1641/logo.png" alt="Icons8: free icons, photos, illustrations, and music" height="32"></a> <a href="https://discordapp.com"><img src="https://images.opencollective.com/discordapp/7e3d9a9/logo.png" alt="Discord" height="32"></a> <a href="https://themeisle.com"><img src="https://images.opencollective.com/themeisle/d5592fe/logo.png" alt="ThemeIsle" height="32"></a> <a href="https://www.marfeel.com/"><img src="https://images.opencollective.com/marfeel/4b88e30/logo.png" alt="Marfeel" height="32"></a> <a href="https://www.firesticktricks.com"><img src="https://images.opencollective.com/fire-stick-tricks/b8fbe2c/logo.png" alt="Fire Stick Tricks" height="32"></a></p>
|
270
270
|
<!--sponsorsend-->
|
271
271
|
|
272
272
|
## <a name="technology-sponsors"></a>Technology Sponsors
|
@@ -286,14 +286,15 @@ function loadESLintIgnoreFile(filePath) {
|
|
286
286
|
* Creates an error to notify about a missing config to extend from.
|
287
287
|
* @param {string} configName The name of the missing config.
|
288
288
|
* @param {string} importerName The name of the config that imported the missing config
|
289
|
+
* @param {string} messageTemplate The text template to source error strings from.
|
289
290
|
* @returns {Error} The error object to throw
|
290
291
|
* @private
|
291
292
|
*/
|
292
|
-
function
|
293
|
+
function configInvalidError(configName, importerName, messageTemplate) {
|
293
294
|
return Object.assign(
|
294
295
|
new Error(`Failed to load config "${configName}" to extend from.`),
|
295
296
|
{
|
296
|
-
messageTemplate
|
297
|
+
messageTemplate,
|
297
298
|
messageData: { configName, importerName }
|
298
299
|
}
|
299
300
|
);
|
@@ -802,7 +803,7 @@ class ConfigArrayFactory {
|
|
802
803
|
});
|
803
804
|
}
|
804
805
|
|
805
|
-
throw
|
806
|
+
throw configInvalidError(extendName, ctx.name, "extend-config-missing");
|
806
807
|
}
|
807
808
|
|
808
809
|
/**
|
@@ -814,6 +815,11 @@ class ConfigArrayFactory {
|
|
814
815
|
*/
|
815
816
|
_loadExtendedPluginConfig(extendName, ctx) {
|
816
817
|
const slashIndex = extendName.lastIndexOf("/");
|
818
|
+
|
819
|
+
if (slashIndex === -1) {
|
820
|
+
throw configInvalidError(extendName, ctx.filePath, "plugin-invalid");
|
821
|
+
}
|
822
|
+
|
817
823
|
const pluginName = extendName.slice("plugin:".length, slashIndex);
|
818
824
|
const configName = extendName.slice(slashIndex + 1);
|
819
825
|
|
@@ -834,7 +840,7 @@ class ConfigArrayFactory {
|
|
834
840
|
});
|
835
841
|
}
|
836
842
|
|
837
|
-
throw plugin.error ||
|
843
|
+
throw plugin.error || configInvalidError(extendName, ctx.filePath, "extend-config-missing");
|
838
844
|
}
|
839
845
|
|
840
846
|
/**
|
@@ -867,7 +873,7 @@ class ConfigArrayFactory {
|
|
867
873
|
} catch (error) {
|
868
874
|
/* istanbul ignore else */
|
869
875
|
if (error && error.code === "MODULE_NOT_FOUND") {
|
870
|
-
throw
|
876
|
+
throw configInvalidError(extendName, ctx.filePath, "extend-config-missing");
|
871
877
|
}
|
872
878
|
throw error;
|
873
879
|
}
|
package/lib/rules/id-length.js
CHANGED
@@ -64,12 +64,7 @@ module.exports = {
|
|
64
64
|
const minLength = typeof options.min !== "undefined" ? options.min : 2;
|
65
65
|
const maxLength = typeof options.max !== "undefined" ? options.max : Infinity;
|
66
66
|
const properties = options.properties !== "never";
|
67
|
-
const exceptions = (options.exceptions
|
68
|
-
.reduce((obj, item) => {
|
69
|
-
obj[item] = true;
|
70
|
-
|
71
|
-
return obj;
|
72
|
-
}, {});
|
67
|
+
const exceptions = new Set(options.exceptions);
|
73
68
|
const exceptionPatterns = (options.exceptionPatterns || []).map(pattern => new RegExp(pattern, "u"));
|
74
69
|
const reportedNode = new Set();
|
75
70
|
|
@@ -130,7 +125,7 @@ module.exports = {
|
|
130
125
|
const isShort = name.length < minLength;
|
131
126
|
const isLong = name.length > maxLength;
|
132
127
|
|
133
|
-
if (!(isShort || isLong) || exceptions
|
128
|
+
if (!(isShort || isLong) || exceptions.has(name) || matchesExceptionPattern(name)) {
|
134
129
|
return; // Nothing to report
|
135
130
|
}
|
136
131
|
|
@@ -178,6 +178,11 @@ module.exports = {
|
|
178
178
|
const rightNode = node.init;
|
179
179
|
const sourceCode = context.getSourceCode();
|
180
180
|
|
181
|
+
// Don't fix if that would remove any comments. Only comments inside `rightNode.object` can be preserved.
|
182
|
+
if (sourceCode.getCommentsInside(node).length > sourceCode.getCommentsInside(rightNode.object).length) {
|
183
|
+
return null;
|
184
|
+
}
|
185
|
+
|
181
186
|
return fixer.replaceText(
|
182
187
|
node,
|
183
188
|
`{${rightNode.property.name}} = ${sourceCode.getText(rightNode.object)}`
|
@@ -37,7 +37,7 @@ const LINEBREAKS = new Set(["\r\n", "\r", "\n", "\u2028", "\u2029"]);
|
|
37
37
|
// A set of node types that can contain a list of statements
|
38
38
|
const STATEMENT_LIST_PARENTS = new Set(["Program", "BlockStatement", "SwitchCase"]);
|
39
39
|
|
40
|
-
const DECIMAL_INTEGER_PATTERN = /^(0|[1-9](?:_?\d)*)$/u;
|
40
|
+
const DECIMAL_INTEGER_PATTERN = /^(?:0|0[0-7]*[89]\d*|[1-9](?:_?\d)*)$/u;
|
41
41
|
const OCTAL_ESCAPE_PATTERN = /^(?:[^\\]|\\[^0-7]|\\0(?![0-9]))*\\(?:[1-7]|0[0-9])/u;
|
42
42
|
|
43
43
|
const LOGICAL_ASSIGNMENT_OPERATORS = new Set(["&&=", "||=", "??="]);
|
@@ -1244,6 +1244,8 @@ module.exports = {
|
|
1244
1244
|
* 50 // true
|
1245
1245
|
* 5_000 // true
|
1246
1246
|
* 1_234_56 // true
|
1247
|
+
* 08 // true
|
1248
|
+
* 0192 // true
|
1247
1249
|
* 5. // false
|
1248
1250
|
* .5 // false
|
1249
1251
|
* 5.0 // false
|
@@ -0,0 +1,8 @@
|
|
1
|
+
"<%- configName %>" is invalid syntax for a config specifier.
|
2
|
+
|
3
|
+
* If your intention is to extend from a configuration exported from the plugin, add the configuration name after a slash: e.g. "<%- configName %>/myConfig".
|
4
|
+
* If this is the name of a shareable config instead of a plugin, remove the "plugin:" prefix: i.e. "<%- configName.slice("plugin:".length) %>".
|
5
|
+
|
6
|
+
"<%- configName %>" was referenced from the config file in "<%- importerName %>".
|
7
|
+
|
8
|
+
If you still can't figure out the problem, please stop by https://eslint.org/chat/help to chat with the team.
|