bahlint 28.58.6934-dev-002 → 28.58.6934-dev-003
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/bin/bahlint.js +9 -9
- package/lib/cli-engine/formatters/html.js +1 -1
- package/lib/config/config-loader.js +1 -1
- package/lib/config/flat-config-array.js +1 -2
- package/lib/config/flat-config-schema.js +4 -4
- package/lib/eslint/eslint-helpers.js +7 -7
- package/lib/eslint/eslint.js +1 -1
- package/lib/eslint/worker.js +2 -2
- package/lib/languages/js/source-code/source-code.js +0 -3
- package/lib/languages/js/source-code/token-store/cursor.js +1 -1
- package/lib/languages/js/validate-language-options.js +6 -6
- package/lib/linter/code-path-analysis/debug-helpers.js +7 -8
- package/lib/linter/linter.js +3 -3
- package/lib/linter/timing.js +1 -1
- package/lib/rule-tester/rule-tester.js +4 -6
- package/lib/rules/jsx-quotes.js +2 -2
- package/lib/rules/keyword-spacing.js +4 -4
- package/lib/rules/lines-around-directive.js +2 -2
- package/lib/rules/logical-assignment-operators.js +1 -1
- package/lib/rules/no-misleading-character-class.js +2 -2
- package/lib/rules/no-unused-vars.js +2 -2
- package/lib/rules/no-void.js +1 -1
- package/lib/rules/quotes.js +3 -3
- package/lib/rules/valid-typeof.js +2 -2
- package/lib/rules/yoda.js +1 -1
- package/lib/services/warning-service.js +1 -1
- package/lib/shared/ajv.js +1 -1
- package/lib/shared/string-utils.js +0 -1
- package/lib/shared/traverser.js +1 -1
- package/package.json +1 -1
package/bin/bahlint.js
CHANGED
|
@@ -142,11 +142,11 @@ ${getErrorMessage(error)}`;
|
|
|
142
142
|
process.on("unhandledRejection", onFatalError);
|
|
143
143
|
|
|
144
144
|
// Define ANSI color codes
|
|
145
|
-
const RED =
|
|
146
|
-
const ORANGE =
|
|
147
|
-
const GREEN =
|
|
148
|
-
const GRAY =
|
|
149
|
-
const RESET =
|
|
145
|
+
const RED = "\x1b[31m";
|
|
146
|
+
const ORANGE = "\x1b[33m"; // or yellow
|
|
147
|
+
const GREEN = "\x1b[32m";
|
|
148
|
+
const GRAY = "\x1b[90m";
|
|
149
|
+
const RESET = "\x1b[0m"; // Reset to default color
|
|
150
150
|
|
|
151
151
|
// Show the custom startup message in red
|
|
152
152
|
const { version } = require("../package.json");
|
|
@@ -154,7 +154,7 @@ ${getErrorMessage(error)}`;
|
|
|
154
154
|
|
|
155
155
|
// Parse command line arguments to determine if we're running in fix mode
|
|
156
156
|
const args = process.argv.slice(2);
|
|
157
|
-
const isFixMode = args.includes(
|
|
157
|
+
const isFixMode = args.includes("--fix") || args.some(arg => arg.startsWith("--fix="));
|
|
158
158
|
|
|
159
159
|
/*
|
|
160
160
|
* Create ESLint instance with the provided options
|
|
@@ -201,9 +201,9 @@ ${getErrorMessage(error)}`;
|
|
|
201
201
|
const eslint = new ESLint(eslintOptions);
|
|
202
202
|
|
|
203
203
|
// Determine files to lint
|
|
204
|
-
let files = args.filter(arg => !arg.startsWith(
|
|
204
|
+
let files = args.filter(arg => !arg.startsWith("-"));
|
|
205
205
|
if (files.length === 0) {
|
|
206
|
-
files = [
|
|
206
|
+
files = ["."]; // Default to current directory if no files specified
|
|
207
207
|
}
|
|
208
208
|
|
|
209
209
|
// Lint the files
|
|
@@ -264,4 +264,4 @@ ${getErrorMessage(error)}`;
|
|
|
264
264
|
} else {
|
|
265
265
|
process.exitCode = 0;
|
|
266
266
|
}
|
|
267
|
-
})().catch(onFatalError);
|
|
267
|
+
})().catch(onFatalError);
|
|
@@ -140,7 +140,7 @@ function isNativeTypeScriptSupportEnabled() {
|
|
|
140
140
|
*/
|
|
141
141
|
async function loadTypeScriptConfigFileWithJiti(filePath, fileURL, mtime) {
|
|
142
142
|
const { createJiti, version: jitiVersion } =
|
|
143
|
-
|
|
143
|
+
|
|
144
144
|
await ConfigLoader.loadJiti().catch(() => {
|
|
145
145
|
throw new Error(
|
|
146
146
|
"The 'jiti' library is required for loading TypeScript configuration files. Make sure to install it.",
|
|
@@ -171,7 +171,6 @@ class FlatConfigArray extends ConfigArray {
|
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
173
|
|
|
174
|
-
|
|
175
174
|
/**
|
|
176
175
|
* Replaces a config with another config to allow us to put strings
|
|
177
176
|
* in the config array that will be replaced by objects before
|
|
@@ -211,7 +210,7 @@ class FlatConfigArray extends ConfigArray {
|
|
|
211
210
|
[ConfigArraySymbol.finalizeConfig](config) {
|
|
212
211
|
return new Config(config);
|
|
213
212
|
}
|
|
214
|
-
|
|
213
|
+
|
|
215
214
|
}
|
|
216
215
|
|
|
217
216
|
exports.FlatConfigArray = FlatConfigArray;
|
|
@@ -96,7 +96,7 @@ function deepMerge(first, second, mergeMap = new Map()) {
|
|
|
96
96
|
...second,
|
|
97
97
|
};
|
|
98
98
|
|
|
99
|
-
delete result.__proto__;
|
|
99
|
+
delete result.__proto__;
|
|
100
100
|
|
|
101
101
|
// Store the pending result for this combination of first and second arguments.
|
|
102
102
|
secondMergeMap.set(second, result);
|
|
@@ -308,7 +308,7 @@ const disableDirectiveSeveritySchema = {
|
|
|
308
308
|
validate(value) {
|
|
309
309
|
if (!(ALLOWED_SEVERITIES.has(value) || typeof value === "boolean")) {
|
|
310
310
|
throw new TypeError(
|
|
311
|
-
|
|
311
|
+
"Expected one of: \"error\", \"warn\", \"off\", 0, 1, 2, or a boolean.",
|
|
312
312
|
);
|
|
313
313
|
}
|
|
314
314
|
},
|
|
@@ -324,7 +324,7 @@ const unusedInlineConfigsSeveritySchema = {
|
|
|
324
324
|
validate(value) {
|
|
325
325
|
if (!ALLOWED_SEVERITIES.has(value)) {
|
|
326
326
|
throw new TypeError(
|
|
327
|
-
|
|
327
|
+
"Expected one of: \"error\", \"warn\", \"off\", 0, 1, or 2.",
|
|
328
328
|
);
|
|
329
329
|
}
|
|
330
330
|
},
|
|
@@ -458,7 +458,7 @@ const rulesSchema = {
|
|
|
458
458
|
try {
|
|
459
459
|
// avoid hairy edge case
|
|
460
460
|
if (ruleId === "__proto__") {
|
|
461
|
-
|
|
461
|
+
|
|
462
462
|
delete result.__proto__;
|
|
463
463
|
continue;
|
|
464
464
|
}
|
|
@@ -691,10 +691,10 @@ function createIgnoreResult(filePath, baseDir, configStatus) {
|
|
|
691
691
|
|
|
692
692
|
if (isInNodeModules) {
|
|
693
693
|
message =
|
|
694
|
-
|
|
694
|
+
"File ignored by default because it is located under the node_modules directory. Use ignore pattern \"!**/node_modules/\" to disable file ignore settings or use \"--no-warn-ignored\" to suppress this warning.";
|
|
695
695
|
} else {
|
|
696
696
|
message =
|
|
697
|
-
|
|
697
|
+
"File ignored because of a matching ignore pattern. Use \"--no-ignore\" to disable file ignore settings or use \"--no-warn-ignored\" to suppress this warning.";
|
|
698
698
|
}
|
|
699
699
|
}
|
|
700
700
|
break;
|
|
@@ -899,7 +899,7 @@ function processOptions({
|
|
|
899
899
|
errors.push("'cacheLocation' must be a non-empty string.");
|
|
900
900
|
}
|
|
901
901
|
if (cacheStrategy !== "metadata" && cacheStrategy !== "content") {
|
|
902
|
-
errors.push('
|
|
902
|
+
errors.push("'cacheStrategy' must be any of \"metadata\", \"content\".");
|
|
903
903
|
}
|
|
904
904
|
if (
|
|
905
905
|
concurrency !== "off" &&
|
|
@@ -907,7 +907,7 @@ function processOptions({
|
|
|
907
907
|
!isPositiveInteger(concurrency)
|
|
908
908
|
) {
|
|
909
909
|
errors.push(
|
|
910
|
-
'
|
|
910
|
+
"'concurrency' must be a positive integer, \"auto\", or \"off\".",
|
|
911
911
|
);
|
|
912
912
|
}
|
|
913
913
|
if (!isNonEmptyString(cwd) || !path.isAbsolute(cwd)) {
|
|
@@ -921,7 +921,7 @@ function processOptions({
|
|
|
921
921
|
}
|
|
922
922
|
if (fixTypes !== null && !isFixTypeArray(fixTypes)) {
|
|
923
923
|
errors.push(
|
|
924
|
-
'
|
|
924
|
+
"'fixTypes' must be an array of any of \"directive\", \"problem\", \"suggestion\", and \"layout\".",
|
|
925
925
|
);
|
|
926
926
|
}
|
|
927
927
|
if (!isEmptyArrayOrArrayOfNonEmptyString(flags)) {
|
|
@@ -1220,7 +1220,7 @@ function verifyText({
|
|
|
1220
1220
|
}
|
|
1221
1221
|
|
|
1222
1222
|
const endTime = hrtimeBigint();
|
|
1223
|
-
debug(
|
|
1223
|
+
debug("File \"%s\" linted in %t", filePath, endTime - startTime);
|
|
1224
1224
|
|
|
1225
1225
|
return result;
|
|
1226
1226
|
}
|
|
@@ -1308,7 +1308,7 @@ async function lintFile(
|
|
|
1308
1308
|
});
|
|
1309
1309
|
const readFileExitTime = hrtimeBigint();
|
|
1310
1310
|
const readFileDuration = readFileExitTime - readFileEnterTime;
|
|
1311
|
-
debug(
|
|
1311
|
+
debug("File \"%s\" read in %t", filePath, readFileDuration);
|
|
1312
1312
|
if (readFileCounter) {
|
|
1313
1313
|
readFileCounter.duration += readFileDuration;
|
|
1314
1314
|
}
|
package/lib/eslint/eslint.js
CHANGED
package/lib/eslint/worker.js
CHANGED
|
@@ -128,7 +128,7 @@ debug("Dependencies loaded in %t", depsLoadedTime - startTime);
|
|
|
128
128
|
const loadConfigExitTime = hrtimeBigint();
|
|
129
129
|
const loadConfigDuration = loadConfigExitTime - loadConfigEnterTime;
|
|
130
130
|
debug(
|
|
131
|
-
|
|
131
|
+
"Config array for file \"%s\" loaded in %t",
|
|
132
132
|
filePath,
|
|
133
133
|
loadConfigDuration,
|
|
134
134
|
);
|
|
@@ -150,7 +150,7 @@ debug("Dependencies loaded in %t", depsLoadedTime - startTime);
|
|
|
150
150
|
|
|
151
151
|
const fileLintingEndTime = hrtimeBigint();
|
|
152
152
|
debug(
|
|
153
|
-
|
|
153
|
+
"File \"%s\" processed in %t",
|
|
154
154
|
filePath,
|
|
155
155
|
fileLintingEndTime - fileLintingStartTime,
|
|
156
156
|
);
|
|
@@ -700,7 +700,6 @@ class SourceCode extends TokenStore {
|
|
|
700
700
|
return this.scopeManager.getDeclaredVariables(node);
|
|
701
701
|
}
|
|
702
702
|
|
|
703
|
-
|
|
704
703
|
/**
|
|
705
704
|
* Gets all the ancestors of a given node
|
|
706
705
|
* @param {ASTNode} node The node
|
|
@@ -775,8 +774,6 @@ class SourceCode extends TokenStore {
|
|
|
775
774
|
return nodeOrToken.range;
|
|
776
775
|
}
|
|
777
776
|
|
|
778
|
-
|
|
779
|
-
|
|
780
777
|
/**
|
|
781
778
|
* Marks a variable as used in the current scope
|
|
782
779
|
* @param {string} name The name of the variable to mark as used.
|
|
@@ -66,13 +66,13 @@ function isUndefined(value) {
|
|
|
66
66
|
function validateEcmaVersion(ecmaVersion) {
|
|
67
67
|
if (isUndefined(ecmaVersion)) {
|
|
68
68
|
throw new TypeError(
|
|
69
|
-
|
|
69
|
+
"Key \"ecmaVersion\": Expected an \"ecmaVersion\" property.",
|
|
70
70
|
);
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
if (typeof ecmaVersion !== "number" && ecmaVersion !== "latest") {
|
|
74
74
|
throw new TypeError(
|
|
75
|
-
|
|
75
|
+
"Key \"ecmaVersion\": Expected a number or \"latest\".",
|
|
76
76
|
);
|
|
77
77
|
}
|
|
78
78
|
}
|
|
@@ -89,7 +89,7 @@ function validateSourceType(sourceType) {
|
|
|
89
89
|
!/^(?:script|module|commonjs)$/u.test(sourceType)
|
|
90
90
|
) {
|
|
91
91
|
throw new TypeError(
|
|
92
|
-
|
|
92
|
+
"Key \"sourceType\": Expected \"script\", \"module\", or \"commonjs\".",
|
|
93
93
|
);
|
|
94
94
|
}
|
|
95
95
|
}
|
|
@@ -102,7 +102,7 @@ function validateSourceType(sourceType) {
|
|
|
102
102
|
*/
|
|
103
103
|
function validateGlobals(globals) {
|
|
104
104
|
if (!isNonArrayObject(globals)) {
|
|
105
|
-
throw new TypeError(
|
|
105
|
+
throw new TypeError("Key \"globals\": Expected an object.");
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
for (const key of Object.keys(globals)) {
|
|
@@ -139,7 +139,7 @@ function validateParser(parser) {
|
|
|
139
139
|
typeof parser.parseForESLint !== "function")
|
|
140
140
|
) {
|
|
141
141
|
throw new TypeError(
|
|
142
|
-
|
|
142
|
+
"Key \"parser\": Expected object with parse() or parseForESLint() method.",
|
|
143
143
|
);
|
|
144
144
|
}
|
|
145
145
|
}
|
|
@@ -182,7 +182,7 @@ function validateLanguageOptions(languageOptions) {
|
|
|
182
182
|
|
|
183
183
|
if ("parserOptions" in languageOptions) {
|
|
184
184
|
if (!isNonArrayObject(parserOptions)) {
|
|
185
|
-
throw new TypeError(
|
|
185
|
+
throw new TypeError("Key \"parserOptions\": Expected an object.");
|
|
186
186
|
}
|
|
187
187
|
}
|
|
188
188
|
|
|
@@ -118,32 +118,31 @@ module.exports = {
|
|
|
118
118
|
let text =
|
|
119
119
|
"\n" +
|
|
120
120
|
"digraph {\n" +
|
|
121
|
-
|
|
122
|
-
|
|
121
|
+
"node[shape=box,style=\"rounded,filled\",fillcolor=white];\n" +
|
|
122
|
+
"initial[label=\"\",shape=circle,style=filled,fillcolor=black,width=0.25,height=0.25];\n";
|
|
123
123
|
|
|
124
124
|
if (codePath.returnedSegments.length > 0) {
|
|
125
125
|
text +=
|
|
126
|
-
|
|
126
|
+
"final[label=\"\",shape=doublecircle,style=filled,fillcolor=black,width=0.25,height=0.25];\n";
|
|
127
127
|
}
|
|
128
128
|
if (codePath.thrownSegments.length > 0) {
|
|
129
129
|
text +=
|
|
130
|
-
|
|
130
|
+
"thrown[label=\"✘\",shape=circle,width=0.3,height=0.3,fixedsize=true];\n";
|
|
131
131
|
}
|
|
132
132
|
|
|
133
133
|
const traceMap = Object.create(null);
|
|
134
134
|
const arrows = this.makeDotArrows(codePath, traceMap);
|
|
135
135
|
|
|
136
|
-
|
|
137
136
|
for (const id in traceMap) {
|
|
138
137
|
const segment = traceMap[id];
|
|
139
138
|
|
|
140
139
|
text += `${id}[`;
|
|
141
140
|
|
|
142
141
|
if (segment.reachable) {
|
|
143
|
-
text +=
|
|
142
|
+
text += "label=\"";
|
|
144
143
|
} else {
|
|
145
144
|
text +=
|
|
146
|
-
|
|
145
|
+
"style=\"rounded,dashed,filled\",fillcolor=\"#FF9800\",label=\"<<unreachable>>\\n";
|
|
147
146
|
}
|
|
148
147
|
|
|
149
148
|
if (segment.internal.nodes.length > 0) {
|
|
@@ -152,7 +151,7 @@ module.exports = {
|
|
|
152
151
|
text += "????";
|
|
153
152
|
}
|
|
154
153
|
|
|
155
|
-
text +=
|
|
154
|
+
text += "\"];\n";
|
|
156
155
|
}
|
|
157
156
|
|
|
158
157
|
text += `${arrows}\n`;
|
package/lib/linter/linter.js
CHANGED
|
@@ -588,7 +588,7 @@ function runRules(
|
|
|
588
588
|
|
|
589
589
|
if (problem.fix && !(rule.meta && rule.meta.fixable)) {
|
|
590
590
|
throw new Error(
|
|
591
|
-
|
|
591
|
+
"Fixable rules must set the `meta.fixable` property to \"code\" or \"whitespace\".",
|
|
592
592
|
);
|
|
593
593
|
}
|
|
594
594
|
|
|
@@ -718,7 +718,7 @@ function normalizeCwd(cwd) {
|
|
|
718
718
|
}
|
|
719
719
|
|
|
720
720
|
// It's more explicit to assign the undefined
|
|
721
|
-
|
|
721
|
+
|
|
722
722
|
return undefined;
|
|
723
723
|
}
|
|
724
724
|
|
|
@@ -1204,7 +1204,7 @@ class Linter {
|
|
|
1204
1204
|
|
|
1205
1205
|
let baseMessage = err.message
|
|
1206
1206
|
.slice(
|
|
1207
|
-
err.message.startsWith(
|
|
1207
|
+
err.message.startsWith("Key \"rules\":")
|
|
1208
1208
|
? err.message.indexOf(":", 12) + 1
|
|
1209
1209
|
: err.message.indexOf(":") + 1,
|
|
1210
1210
|
)
|
package/lib/linter/timing.js
CHANGED
|
@@ -221,7 +221,7 @@ function sanitize(text) {
|
|
|
221
221
|
return "";
|
|
222
222
|
}
|
|
223
223
|
return text.replace(
|
|
224
|
-
/[\u0000-\u0009\u000b-\u001a]/gu,
|
|
224
|
+
/[\u0000-\u0009\u000b-\u001a]/gu,
|
|
225
225
|
c => `\\u${c.codePointAt(0).toString(16).padStart(4, "0")}`,
|
|
226
226
|
);
|
|
227
227
|
}
|
|
@@ -312,13 +312,11 @@ function throwForbiddenMethodError(methodName, prototype) {
|
|
|
312
312
|
return function (...args) {
|
|
313
313
|
const called = forbiddenMethodCalls.get(methodName);
|
|
314
314
|
|
|
315
|
-
|
|
316
315
|
if (!called.has(this)) {
|
|
317
316
|
called.add(this);
|
|
318
317
|
|
|
319
318
|
return original.apply(this, args);
|
|
320
319
|
}
|
|
321
|
-
|
|
322
320
|
|
|
323
321
|
throw new Error(
|
|
324
322
|
`\`SourceCode#${methodName}()\` cannot be called inside a rule.`,
|
|
@@ -762,7 +760,7 @@ function buildLazyTestLocationEstimator(invoker) {
|
|
|
762
760
|
Object.assign(
|
|
763
761
|
testLocations,
|
|
764
762
|
{
|
|
765
|
-
[
|
|
763
|
+
["valid[0]"]: `${sourceFile}:${
|
|
766
764
|
sourceLine + validStartIndex
|
|
767
765
|
}`,
|
|
768
766
|
},
|
|
@@ -1423,7 +1421,7 @@ class RuleTester {
|
|
|
1423
1421
|
|
|
1424
1422
|
assert.ok(
|
|
1425
1423
|
ruleHasMetaMessages || requireMessage !== "messageId",
|
|
1426
|
-
|
|
1424
|
+
"Assertion options can not use 'requireMessage: \"messageId\"' if rule under test doesn't define 'meta.messages'.",
|
|
1427
1425
|
);
|
|
1428
1426
|
|
|
1429
1427
|
const result = runRuleForItem(item);
|
|
@@ -1574,7 +1572,7 @@ class RuleTester {
|
|
|
1574
1572
|
assert.ok(
|
|
1575
1573
|
!requiresDataProperty ||
|
|
1576
1574
|
!hasPlaceholders,
|
|
1577
|
-
|
|
1575
|
+
"Error should specify the 'data' property as the referenced message has placeholders.",
|
|
1578
1576
|
);
|
|
1579
1577
|
}
|
|
1580
1578
|
}
|
package/lib/rules/jsx-quotes.js
CHANGED
|
@@ -18,10 +18,10 @@ const astUtils = require("./utils/ast-utils");
|
|
|
18
18
|
|
|
19
19
|
const QUOTE_SETTINGS = {
|
|
20
20
|
"prefer-double": {
|
|
21
|
-
quote:
|
|
21
|
+
quote: "\"",
|
|
22
22
|
description: "singlequote",
|
|
23
23
|
convert(str) {
|
|
24
|
-
return str.replace(/'/gu,
|
|
24
|
+
return str.replace(/'/gu, "\"");
|
|
25
25
|
},
|
|
26
26
|
},
|
|
27
27
|
"prefer-single": {
|
|
@@ -135,10 +135,10 @@ module.exports = {
|
|
|
135
135
|
},
|
|
136
136
|
],
|
|
137
137
|
messages: {
|
|
138
|
-
expectedBefore:
|
|
139
|
-
expectedAfter:
|
|
140
|
-
unexpectedBefore:
|
|
141
|
-
unexpectedAfter:
|
|
138
|
+
expectedBefore: "Expected space(s) before \"{{value}}\".",
|
|
139
|
+
expectedAfter: "Expected space(s) after \"{{value}}\".",
|
|
140
|
+
unexpectedBefore: "Unexpected space(s) before \"{{value}}\".",
|
|
141
|
+
unexpectedAfter: "Unexpected space(s) after \"{{value}}\".",
|
|
142
142
|
},
|
|
143
143
|
},
|
|
144
144
|
|
|
@@ -48,9 +48,9 @@ module.exports = {
|
|
|
48
48
|
|
|
49
49
|
fixable: "whitespace",
|
|
50
50
|
messages: {
|
|
51
|
-
expected:
|
|
51
|
+
expected: "Expected newline {{location}} \"{{value}}\" directive.",
|
|
52
52
|
unexpected:
|
|
53
|
-
|
|
53
|
+
"Unexpected newline {{location}} \"{{value}}\" directive.",
|
|
54
54
|
},
|
|
55
55
|
deprecated: {
|
|
56
56
|
message: "The rule was replaced with a more general rule.",
|
|
@@ -503,7 +503,7 @@ module.exports = {
|
|
|
503
503
|
},
|
|
504
504
|
|
|
505
505
|
// foo || (foo = bar)
|
|
506
|
-
|
|
506
|
+
"LogicalExpression[right.type=\"AssignmentExpression\"][right.operator=\"=\"]"(
|
|
507
507
|
logical,
|
|
508
508
|
) {
|
|
509
509
|
// Right side has to be parenthesized, otherwise would be parsed as (foo || foo) = bar which is illegal
|
|
@@ -1152,7 +1152,7 @@ module.exports = {
|
|
|
1152
1152
|
// fixes [{a: {k}}], [{a: [k]}]
|
|
1153
1153
|
if (getTokenBeforeValue(node) === ":") {
|
|
1154
1154
|
if (parentNode.parent.type === "ObjectPattern") {
|
|
1155
|
-
|
|
1155
|
+
|
|
1156
1156
|
return fixObjectWithValueSeparator(node);
|
|
1157
1157
|
}
|
|
1158
1158
|
}
|
|
@@ -1226,7 +1226,7 @@ module.exports = {
|
|
|
1226
1226
|
|
|
1227
1227
|
// fixes [a, ...[[ b ]]] or [a, ...[{ b }]]
|
|
1228
1228
|
if (parentNode.parent.type === "RestElement") {
|
|
1229
|
-
|
|
1229
|
+
|
|
1230
1230
|
return fixRestInPattern(parentNode.parent);
|
|
1231
1231
|
}
|
|
1232
1232
|
|
package/lib/rules/no-void.js
CHANGED
package/lib/rules/quotes.js
CHANGED
|
@@ -18,18 +18,18 @@ const astUtils = require("./utils/ast-utils");
|
|
|
18
18
|
|
|
19
19
|
const QUOTE_SETTINGS = {
|
|
20
20
|
double: {
|
|
21
|
-
quote:
|
|
21
|
+
quote: "\"",
|
|
22
22
|
alternateQuote: "'",
|
|
23
23
|
description: "doublequote",
|
|
24
24
|
},
|
|
25
25
|
single: {
|
|
26
26
|
quote: "'",
|
|
27
|
-
alternateQuote:
|
|
27
|
+
alternateQuote: "\"",
|
|
28
28
|
description: "singlequote",
|
|
29
29
|
},
|
|
30
30
|
backtick: {
|
|
31
31
|
quote: "`",
|
|
32
|
-
alternateQuote:
|
|
32
|
+
alternateQuote: "\"",
|
|
33
33
|
description: "backtick",
|
|
34
34
|
},
|
|
35
35
|
};
|
|
@@ -48,7 +48,7 @@ module.exports = {
|
|
|
48
48
|
messages: {
|
|
49
49
|
invalidValue: "Invalid typeof comparison value.",
|
|
50
50
|
notString: "Typeof comparisons should be to string literals.",
|
|
51
|
-
suggestString:
|
|
51
|
+
suggestString: "Use `\"{{type}}\"` instead of `{{type}}`.",
|
|
52
52
|
},
|
|
53
53
|
},
|
|
54
54
|
|
|
@@ -148,7 +148,7 @@ module.exports = {
|
|
|
148
148
|
fix(fixer) {
|
|
149
149
|
return fixer.replaceText(
|
|
150
150
|
sibling,
|
|
151
|
-
|
|
151
|
+
"\"undefined\"",
|
|
152
152
|
);
|
|
153
153
|
},
|
|
154
154
|
},
|
package/lib/rules/yoda.js
CHANGED
|
@@ -122,7 +122,7 @@ module.exports = {
|
|
|
122
122
|
],
|
|
123
123
|
|
|
124
124
|
docs: {
|
|
125
|
-
description:
|
|
125
|
+
description: "Require or disallow \"Yoda\" conditions",
|
|
126
126
|
recommended: false,
|
|
127
127
|
frozen: true,
|
|
128
128
|
url: "https://eslint.org/docs/latest/rules/yoda",
|
|
@@ -54,7 +54,7 @@ class WarningService {
|
|
|
54
54
|
*/
|
|
55
55
|
emitESLintIgnoreWarning() {
|
|
56
56
|
this.emitWarning(
|
|
57
|
-
|
|
57
|
+
"The \".eslintignore\" file is no longer supported. Switch to using the \"ignores\" property in \"eslint.config.js\": https://eslint.org/docs/latest/use/configure/migration-guide#ignoring-files",
|
|
58
58
|
"ESLintIgnoreWarning",
|
|
59
59
|
);
|
|
60
60
|
}
|
package/lib/shared/ajv.js
CHANGED
package/lib/shared/traverser.js
CHANGED
package/package.json
CHANGED