eslint 8.47.0 → 8.57.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/README.md +18 -13
- package/bin/eslint.js +38 -5
- package/conf/rule-type-list.json +25 -33
- package/lib/api.js +29 -1
- package/lib/cli-engine/cli-engine.js +2 -2
- package/lib/cli-engine/lint-result-cache.js +18 -6
- package/lib/cli.js +36 -6
- package/lib/config/flat-config-schema.js +124 -61
- package/lib/config/rule-validator.js +2 -1
- package/lib/eslint/eslint-helpers.js +9 -11
- package/lib/eslint/eslint.js +7 -0
- package/lib/eslint/flat-eslint.js +33 -18
- package/lib/linter/apply-disable-directives.js +127 -13
- package/lib/linter/code-path-analysis/code-path-analyzer.js +32 -24
- package/lib/linter/code-path-analysis/code-path-segment.js +52 -24
- package/lib/linter/code-path-analysis/code-path-state.js +1108 -243
- package/lib/linter/code-path-analysis/code-path.js +128 -33
- package/lib/linter/code-path-analysis/fork-context.js +173 -72
- package/lib/linter/config-comment-parser.js +36 -2
- package/lib/linter/linter.js +183 -82
- package/lib/options.js +24 -3
- package/lib/rule-tester/flat-rule-tester.js +113 -25
- package/lib/rule-tester/rule-tester.js +176 -23
- package/lib/rules/array-bracket-newline.js +3 -0
- package/lib/rules/array-bracket-spacing.js +3 -0
- package/lib/rules/array-callback-return.js +175 -25
- package/lib/rules/array-element-newline.js +3 -0
- package/lib/rules/arrow-parens.js +3 -0
- package/lib/rules/arrow-spacing.js +3 -0
- package/lib/rules/block-spacing.js +3 -0
- package/lib/rules/brace-style.js +3 -0
- package/lib/rules/comma-dangle.js +3 -0
- package/lib/rules/comma-spacing.js +3 -0
- package/lib/rules/comma-style.js +3 -0
- package/lib/rules/computed-property-spacing.js +3 -0
- package/lib/rules/consistent-return.js +32 -7
- package/lib/rules/constructor-super.js +37 -14
- package/lib/rules/dot-location.js +3 -0
- package/lib/rules/eol-last.js +3 -0
- package/lib/rules/for-direction.js +38 -24
- package/lib/rules/func-call-spacing.js +3 -0
- package/lib/rules/function-call-argument-newline.js +3 -0
- package/lib/rules/function-paren-newline.js +3 -0
- package/lib/rules/generator-star-spacing.js +3 -0
- package/lib/rules/getter-return.js +33 -8
- package/lib/rules/implicit-arrow-linebreak.js +3 -0
- package/lib/rules/indent.js +3 -0
- package/lib/rules/index.js +1 -0
- package/lib/rules/jsx-quotes.js +3 -0
- package/lib/rules/key-spacing.js +3 -0
- package/lib/rules/keyword-spacing.js +3 -0
- package/lib/rules/linebreak-style.js +3 -0
- package/lib/rules/lines-around-comment.js +3 -0
- package/lib/rules/lines-between-class-members.js +95 -7
- package/lib/rules/logical-assignment-operators.js +31 -3
- package/lib/rules/max-len.js +3 -0
- package/lib/rules/max-statements-per-line.js +3 -0
- package/lib/rules/multiline-ternary.js +3 -0
- package/lib/rules/new-parens.js +3 -0
- package/lib/rules/newline-per-chained-call.js +3 -0
- package/lib/rules/no-array-constructor.js +85 -6
- package/lib/rules/no-confusing-arrow.js +3 -0
- package/lib/rules/no-console.js +74 -2
- package/lib/rules/no-extra-parens.js +3 -0
- package/lib/rules/no-extra-semi.js +3 -0
- package/lib/rules/no-fallthrough.js +42 -14
- package/lib/rules/no-floating-decimal.js +3 -0
- package/lib/rules/no-invalid-this.js +1 -1
- package/lib/rules/no-misleading-character-class.js +65 -15
- package/lib/rules/no-mixed-operators.js +3 -0
- package/lib/rules/no-mixed-spaces-and-tabs.js +3 -0
- package/lib/rules/no-multi-spaces.js +3 -0
- package/lib/rules/no-multiple-empty-lines.js +3 -0
- package/lib/rules/no-new-object.js +7 -0
- package/lib/rules/no-object-constructor.js +117 -0
- package/lib/rules/no-promise-executor-return.js +157 -16
- package/lib/rules/no-prototype-builtins.js +90 -2
- package/lib/rules/no-restricted-imports.js +54 -31
- package/lib/rules/no-restricted-properties.js +15 -28
- package/lib/rules/no-tabs.js +3 -0
- package/lib/rules/no-this-before-super.js +38 -11
- package/lib/rules/no-trailing-spaces.js +3 -0
- package/lib/rules/no-unreachable-loop.js +47 -12
- package/lib/rules/no-unreachable.js +39 -10
- package/lib/rules/no-useless-return.js +35 -4
- package/lib/rules/no-whitespace-before-property.js +3 -0
- package/lib/rules/nonblock-statement-body-position.js +3 -0
- package/lib/rules/object-curly-newline.js +3 -0
- package/lib/rules/object-curly-spacing.js +3 -0
- package/lib/rules/object-property-newline.js +3 -0
- package/lib/rules/one-var-declaration-per-line.js +3 -0
- package/lib/rules/operator-linebreak.js +3 -0
- package/lib/rules/padded-blocks.js +3 -0
- package/lib/rules/padding-line-between-statements.js +3 -0
- package/lib/rules/quote-props.js +3 -0
- package/lib/rules/quotes.js +3 -0
- package/lib/rules/require-atomic-updates.js +21 -7
- package/lib/rules/rest-spread-spacing.js +3 -0
- package/lib/rules/semi-spacing.js +3 -0
- package/lib/rules/semi-style.js +3 -0
- package/lib/rules/semi.js +3 -0
- package/lib/rules/space-before-blocks.js +3 -0
- package/lib/rules/space-before-function-paren.js +3 -0
- package/lib/rules/space-in-parens.js +3 -0
- package/lib/rules/space-infix-ops.js +3 -0
- package/lib/rules/space-unary-ops.js +3 -0
- package/lib/rules/spaced-comment.js +3 -0
- package/lib/rules/switch-colon-spacing.js +3 -0
- package/lib/rules/template-curly-spacing.js +3 -0
- package/lib/rules/template-tag-spacing.js +3 -0
- package/lib/rules/utils/ast-utils.js +111 -1
- package/lib/rules/wrap-iife.js +3 -0
- package/lib/rules/wrap-regex.js +3 -0
- package/lib/rules/yield-star-spacing.js +3 -0
- package/lib/shared/severity.js +49 -0
- package/lib/source-code/source-code.js +329 -3
- package/messages/eslintrc-incompat.js +1 -1
- package/package.json +24 -17
@@ -12,7 +12,15 @@ const
|
|
12
12
|
{ isCommentToken } = require("@eslint-community/eslint-utils"),
|
13
13
|
TokenStore = require("./token-store"),
|
14
14
|
astUtils = require("../shared/ast-utils"),
|
15
|
-
Traverser = require("../shared/traverser")
|
15
|
+
Traverser = require("../shared/traverser"),
|
16
|
+
globals = require("../../conf/globals"),
|
17
|
+
{
|
18
|
+
directivesPattern
|
19
|
+
} = require("../shared/directives"),
|
20
|
+
|
21
|
+
/* eslint-disable-next-line n/no-restricted-require -- Too messy to figure out right now. */
|
22
|
+
ConfigCommentParser = require("../linter/config-comment-parser"),
|
23
|
+
eslintScope = require("eslint-scope");
|
16
24
|
|
17
25
|
//------------------------------------------------------------------------------
|
18
26
|
// Type Definitions
|
@@ -24,6 +32,8 @@ const
|
|
24
32
|
// Private
|
25
33
|
//------------------------------------------------------------------------------
|
26
34
|
|
35
|
+
const commentParser = new ConfigCommentParser();
|
36
|
+
|
27
37
|
/**
|
28
38
|
* Validates that the given AST has the required information.
|
29
39
|
* @param {ASTNode} ast The Program node of the AST to check.
|
@@ -49,6 +59,29 @@ function validate(ast) {
|
|
49
59
|
}
|
50
60
|
}
|
51
61
|
|
62
|
+
/**
|
63
|
+
* Retrieves globals for the given ecmaVersion.
|
64
|
+
* @param {number} ecmaVersion The version to retrieve globals for.
|
65
|
+
* @returns {Object} The globals for the given ecmaVersion.
|
66
|
+
*/
|
67
|
+
function getGlobalsForEcmaVersion(ecmaVersion) {
|
68
|
+
|
69
|
+
switch (ecmaVersion) {
|
70
|
+
case 3:
|
71
|
+
return globals.es3;
|
72
|
+
|
73
|
+
case 5:
|
74
|
+
return globals.es5;
|
75
|
+
|
76
|
+
default:
|
77
|
+
if (ecmaVersion < 2015) {
|
78
|
+
return globals[`es${ecmaVersion + 2009}`];
|
79
|
+
}
|
80
|
+
|
81
|
+
return globals[`es${ecmaVersion}`];
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
52
85
|
/**
|
53
86
|
* Check to see if its a ES6 export declaration.
|
54
87
|
* @param {ASTNode} astNode An AST node.
|
@@ -83,6 +116,36 @@ function sortedMerge(tokens, comments) {
|
|
83
116
|
return result;
|
84
117
|
}
|
85
118
|
|
119
|
+
/**
|
120
|
+
* Normalizes a value for a global in a config
|
121
|
+
* @param {(boolean|string|null)} configuredValue The value given for a global in configuration or in
|
122
|
+
* a global directive comment
|
123
|
+
* @returns {("readable"|"writeable"|"off")} The value normalized as a string
|
124
|
+
* @throws Error if global value is invalid
|
125
|
+
*/
|
126
|
+
function normalizeConfigGlobal(configuredValue) {
|
127
|
+
switch (configuredValue) {
|
128
|
+
case "off":
|
129
|
+
return "off";
|
130
|
+
|
131
|
+
case true:
|
132
|
+
case "true":
|
133
|
+
case "writeable":
|
134
|
+
case "writable":
|
135
|
+
return "writable";
|
136
|
+
|
137
|
+
case null:
|
138
|
+
case false:
|
139
|
+
case "false":
|
140
|
+
case "readable":
|
141
|
+
case "readonly":
|
142
|
+
return "readonly";
|
143
|
+
|
144
|
+
default:
|
145
|
+
throw new Error(`'${configuredValue}' is not a valid configuration for a global (use 'readonly', 'writable', or 'off')`);
|
146
|
+
}
|
147
|
+
}
|
148
|
+
|
86
149
|
/**
|
87
150
|
* Determines if two nodes or tokens overlap.
|
88
151
|
* @param {ASTNode|Token} first The first node or token to check.
|
@@ -145,6 +208,98 @@ function isSpaceBetween(sourceCode, first, second, checkInsideOfJSXText) {
|
|
145
208
|
return false;
|
146
209
|
}
|
147
210
|
|
211
|
+
//-----------------------------------------------------------------------------
|
212
|
+
// Directive Comments
|
213
|
+
//-----------------------------------------------------------------------------
|
214
|
+
|
215
|
+
/**
|
216
|
+
* Ensures that variables representing built-in properties of the Global Object,
|
217
|
+
* and any globals declared by special block comments, are present in the global
|
218
|
+
* scope.
|
219
|
+
* @param {Scope} globalScope The global scope.
|
220
|
+
* @param {Object|undefined} configGlobals The globals declared in configuration
|
221
|
+
* @param {Object|undefined} inlineGlobals The globals declared in the source code
|
222
|
+
* @returns {void}
|
223
|
+
*/
|
224
|
+
function addDeclaredGlobals(globalScope, configGlobals = {}, inlineGlobals = {}) {
|
225
|
+
|
226
|
+
// Define configured global variables.
|
227
|
+
for (const id of new Set([...Object.keys(configGlobals), ...Object.keys(inlineGlobals)])) {
|
228
|
+
|
229
|
+
/*
|
230
|
+
* `normalizeConfigGlobal` will throw an error if a configured global value is invalid. However, these errors would
|
231
|
+
* typically be caught when validating a config anyway (validity for inline global comments is checked separately).
|
232
|
+
*/
|
233
|
+
const configValue = configGlobals[id] === void 0 ? void 0 : normalizeConfigGlobal(configGlobals[id]);
|
234
|
+
const commentValue = inlineGlobals[id] && inlineGlobals[id].value;
|
235
|
+
const value = commentValue || configValue;
|
236
|
+
const sourceComments = inlineGlobals[id] && inlineGlobals[id].comments;
|
237
|
+
|
238
|
+
if (value === "off") {
|
239
|
+
continue;
|
240
|
+
}
|
241
|
+
|
242
|
+
let variable = globalScope.set.get(id);
|
243
|
+
|
244
|
+
if (!variable) {
|
245
|
+
variable = new eslintScope.Variable(id, globalScope);
|
246
|
+
|
247
|
+
globalScope.variables.push(variable);
|
248
|
+
globalScope.set.set(id, variable);
|
249
|
+
}
|
250
|
+
|
251
|
+
variable.eslintImplicitGlobalSetting = configValue;
|
252
|
+
variable.eslintExplicitGlobal = sourceComments !== void 0;
|
253
|
+
variable.eslintExplicitGlobalComments = sourceComments;
|
254
|
+
variable.writeable = (value === "writable");
|
255
|
+
}
|
256
|
+
|
257
|
+
/*
|
258
|
+
* "through" contains all references which definitions cannot be found.
|
259
|
+
* Since we augment the global scope using configuration, we need to update
|
260
|
+
* references and remove the ones that were added by configuration.
|
261
|
+
*/
|
262
|
+
globalScope.through = globalScope.through.filter(reference => {
|
263
|
+
const name = reference.identifier.name;
|
264
|
+
const variable = globalScope.set.get(name);
|
265
|
+
|
266
|
+
if (variable) {
|
267
|
+
|
268
|
+
/*
|
269
|
+
* Links the variable and the reference.
|
270
|
+
* And this reference is removed from `Scope#through`.
|
271
|
+
*/
|
272
|
+
reference.resolved = variable;
|
273
|
+
variable.references.push(reference);
|
274
|
+
|
275
|
+
return false;
|
276
|
+
}
|
277
|
+
|
278
|
+
return true;
|
279
|
+
});
|
280
|
+
}
|
281
|
+
|
282
|
+
/**
|
283
|
+
* Sets the given variable names as exported so they won't be triggered by
|
284
|
+
* the `no-unused-vars` rule.
|
285
|
+
* @param {eslint.Scope} globalScope The global scope to define exports in.
|
286
|
+
* @param {Record<string,string>} variables An object whose keys are the variable
|
287
|
+
* names to export.
|
288
|
+
* @returns {void}
|
289
|
+
*/
|
290
|
+
function markExportedVariables(globalScope, variables) {
|
291
|
+
|
292
|
+
Object.keys(variables).forEach(name => {
|
293
|
+
const variable = globalScope.set.get(name);
|
294
|
+
|
295
|
+
if (variable) {
|
296
|
+
variable.eslintUsed = true;
|
297
|
+
variable.eslintExported = true;
|
298
|
+
}
|
299
|
+
});
|
300
|
+
|
301
|
+
}
|
302
|
+
|
148
303
|
//------------------------------------------------------------------------------
|
149
304
|
// Public Interface
|
150
305
|
//------------------------------------------------------------------------------
|
@@ -187,7 +342,9 @@ class SourceCode extends TokenStore {
|
|
187
342
|
* General purpose caching for the class.
|
188
343
|
*/
|
189
344
|
this[caches] = new Map([
|
190
|
-
["scopes", new WeakMap()]
|
345
|
+
["scopes", new WeakMap()],
|
346
|
+
["vars", new Map()],
|
347
|
+
["configNodes", void 0]
|
191
348
|
]);
|
192
349
|
|
193
350
|
/**
|
@@ -266,7 +423,7 @@ class SourceCode extends TokenStore {
|
|
266
423
|
// Cache for comments found using getComments().
|
267
424
|
this._commentCache = new WeakMap();
|
268
425
|
|
269
|
-
// don't allow modification of this object
|
426
|
+
// don't allow further modification of this object
|
270
427
|
Object.freeze(this);
|
271
428
|
Object.freeze(this.lines);
|
272
429
|
}
|
@@ -724,6 +881,175 @@ class SourceCode extends TokenStore {
|
|
724
881
|
}
|
725
882
|
|
726
883
|
|
884
|
+
/**
|
885
|
+
* Returns an array of all inline configuration nodes found in the
|
886
|
+
* source code.
|
887
|
+
* @returns {Array<Token>} An array of all inline configuration nodes.
|
888
|
+
*/
|
889
|
+
getInlineConfigNodes() {
|
890
|
+
|
891
|
+
// check the cache first
|
892
|
+
let configNodes = this[caches].get("configNodes");
|
893
|
+
|
894
|
+
if (configNodes) {
|
895
|
+
return configNodes;
|
896
|
+
}
|
897
|
+
|
898
|
+
// calculate fresh config nodes
|
899
|
+
configNodes = this.ast.comments.filter(comment => {
|
900
|
+
|
901
|
+
// shebang comments are never directives
|
902
|
+
if (comment.type === "Shebang") {
|
903
|
+
return false;
|
904
|
+
}
|
905
|
+
|
906
|
+
const { directivePart } = commentParser.extractDirectiveComment(comment.value);
|
907
|
+
|
908
|
+
const directiveMatch = directivesPattern.exec(directivePart);
|
909
|
+
|
910
|
+
if (!directiveMatch) {
|
911
|
+
return false;
|
912
|
+
}
|
913
|
+
|
914
|
+
// only certain comment types are supported as line comments
|
915
|
+
return comment.type !== "Line" || !!/^eslint-disable-(next-)?line$/u.test(directiveMatch[1]);
|
916
|
+
});
|
917
|
+
|
918
|
+
this[caches].set("configNodes", configNodes);
|
919
|
+
|
920
|
+
return configNodes;
|
921
|
+
}
|
922
|
+
|
923
|
+
/**
|
924
|
+
* Applies language options sent in from the core.
|
925
|
+
* @param {Object} languageOptions The language options for this run.
|
926
|
+
* @returns {void}
|
927
|
+
*/
|
928
|
+
applyLanguageOptions(languageOptions) {
|
929
|
+
|
930
|
+
/*
|
931
|
+
* Add configured globals and language globals
|
932
|
+
*
|
933
|
+
* Using Object.assign instead of object spread for performance reasons
|
934
|
+
* https://github.com/eslint/eslint/issues/16302
|
935
|
+
*/
|
936
|
+
const configGlobals = Object.assign(
|
937
|
+
{},
|
938
|
+
getGlobalsForEcmaVersion(languageOptions.ecmaVersion),
|
939
|
+
languageOptions.sourceType === "commonjs" ? globals.commonjs : void 0,
|
940
|
+
languageOptions.globals
|
941
|
+
);
|
942
|
+
const varsCache = this[caches].get("vars");
|
943
|
+
|
944
|
+
varsCache.set("configGlobals", configGlobals);
|
945
|
+
}
|
946
|
+
|
947
|
+
/**
|
948
|
+
* Applies configuration found inside of the source code. This method is only
|
949
|
+
* called when ESLint is running with inline configuration allowed.
|
950
|
+
* @returns {{problems:Array<Problem>,configs:{config:FlatConfigArray,node:ASTNode}}} Information
|
951
|
+
* that ESLint needs to further process the inline configuration.
|
952
|
+
*/
|
953
|
+
applyInlineConfig() {
|
954
|
+
|
955
|
+
const problems = [];
|
956
|
+
const configs = [];
|
957
|
+
const exportedVariables = {};
|
958
|
+
const inlineGlobals = Object.create(null);
|
959
|
+
|
960
|
+
this.getInlineConfigNodes().forEach(comment => {
|
961
|
+
|
962
|
+
const { directiveText, directiveValue } = commentParser.parseDirective(comment);
|
963
|
+
|
964
|
+
switch (directiveText) {
|
965
|
+
case "exported":
|
966
|
+
Object.assign(exportedVariables, commentParser.parseStringConfig(directiveValue, comment));
|
967
|
+
break;
|
968
|
+
|
969
|
+
case "globals":
|
970
|
+
case "global":
|
971
|
+
for (const [id, { value }] of Object.entries(commentParser.parseStringConfig(directiveValue, comment))) {
|
972
|
+
let normalizedValue;
|
973
|
+
|
974
|
+
try {
|
975
|
+
normalizedValue = normalizeConfigGlobal(value);
|
976
|
+
} catch (err) {
|
977
|
+
problems.push({
|
978
|
+
ruleId: null,
|
979
|
+
loc: comment.loc,
|
980
|
+
message: err.message
|
981
|
+
});
|
982
|
+
continue;
|
983
|
+
}
|
984
|
+
|
985
|
+
if (inlineGlobals[id]) {
|
986
|
+
inlineGlobals[id].comments.push(comment);
|
987
|
+
inlineGlobals[id].value = normalizedValue;
|
988
|
+
} else {
|
989
|
+
inlineGlobals[id] = {
|
990
|
+
comments: [comment],
|
991
|
+
value: normalizedValue
|
992
|
+
};
|
993
|
+
}
|
994
|
+
}
|
995
|
+
break;
|
996
|
+
|
997
|
+
case "eslint": {
|
998
|
+
const parseResult = commentParser.parseJsonConfig(directiveValue, comment.loc);
|
999
|
+
|
1000
|
+
if (parseResult.success) {
|
1001
|
+
configs.push({
|
1002
|
+
config: {
|
1003
|
+
rules: parseResult.config
|
1004
|
+
},
|
1005
|
+
node: comment
|
1006
|
+
});
|
1007
|
+
} else {
|
1008
|
+
problems.push(parseResult.error);
|
1009
|
+
}
|
1010
|
+
|
1011
|
+
break;
|
1012
|
+
}
|
1013
|
+
|
1014
|
+
// no default
|
1015
|
+
}
|
1016
|
+
});
|
1017
|
+
|
1018
|
+
// save all the new variables for later
|
1019
|
+
const varsCache = this[caches].get("vars");
|
1020
|
+
|
1021
|
+
varsCache.set("inlineGlobals", inlineGlobals);
|
1022
|
+
varsCache.set("exportedVariables", exportedVariables);
|
1023
|
+
|
1024
|
+
return {
|
1025
|
+
configs,
|
1026
|
+
problems
|
1027
|
+
};
|
1028
|
+
}
|
1029
|
+
|
1030
|
+
/**
|
1031
|
+
* Called by ESLint core to indicate that it has finished providing
|
1032
|
+
* information. We now add in all the missing variables and ensure that
|
1033
|
+
* state-changing methods cannot be called by rules.
|
1034
|
+
* @returns {void}
|
1035
|
+
*/
|
1036
|
+
finalize() {
|
1037
|
+
|
1038
|
+
// Step 1: ensure that all of the necessary variables are up to date
|
1039
|
+
const varsCache = this[caches].get("vars");
|
1040
|
+
const globalScope = this.scopeManager.scopes[0];
|
1041
|
+
const configGlobals = varsCache.get("configGlobals");
|
1042
|
+
const inlineGlobals = varsCache.get("inlineGlobals");
|
1043
|
+
const exportedVariables = varsCache.get("exportedVariables");
|
1044
|
+
|
1045
|
+
addDeclaredGlobals(globalScope, configGlobals, inlineGlobals);
|
1046
|
+
|
1047
|
+
if (exportedVariables) {
|
1048
|
+
markExportedVariables(globalScope, exportedVariables);
|
1049
|
+
}
|
1050
|
+
|
1051
|
+
}
|
1052
|
+
|
727
1053
|
}
|
728
1054
|
|
729
1055
|
module.exports = SourceCode;
|
@@ -19,7 +19,7 @@ A config object is using the "extends" key, which is not supported in flat confi
|
|
19
19
|
Instead of "extends", you can include config objects that you'd like to extend from directly in the flat config array.
|
20
20
|
|
21
21
|
Please see the following page for more information:
|
22
|
-
https://eslint.org/docs/latest/use/configure/migration-guide#predefined-configs
|
22
|
+
https://eslint.org/docs/latest/use/configure/migration-guide#predefined-and-shareable-configs
|
23
23
|
`,
|
24
24
|
|
25
25
|
globals: `
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "eslint",
|
3
|
-
"version": "8.
|
3
|
+
"version": "8.57.0",
|
4
4
|
"author": "Nicholas C. Zakas <nicholas+npm@nczconsulting.com>",
|
5
5
|
"description": "An AST-based pattern checker for JavaScript.",
|
6
6
|
"bin": {
|
@@ -19,6 +19,7 @@
|
|
19
19
|
"build:readme": "node tools/update-readme.js",
|
20
20
|
"lint": "node Makefile.js lint",
|
21
21
|
"lint:docs:js": "node Makefile.js lintDocsJS",
|
22
|
+
"lint:docs:rule-examples": "node Makefile.js checkRuleExamples",
|
22
23
|
"lint:fix": "node Makefile.js lint -- fix",
|
23
24
|
"lint:fix:docs:js": "node Makefile.js lintDocsJS -- fix",
|
24
25
|
"release:generate:alpha": "node Makefile.js generatePrerelease -- alpha",
|
@@ -42,6 +43,7 @@
|
|
42
43
|
"git add packages/js/src/configs/eslint-all.js"
|
43
44
|
],
|
44
45
|
"docs/src/rules/*.md": [
|
46
|
+
"node tools/check-rule-examples.js",
|
45
47
|
"node tools/fetch-docs-links.js",
|
46
48
|
"git add docs/src/_data/further_reading_links.json"
|
47
49
|
],
|
@@ -62,11 +64,12 @@
|
|
62
64
|
"dependencies": {
|
63
65
|
"@eslint-community/eslint-utils": "^4.2.0",
|
64
66
|
"@eslint-community/regexpp": "^4.6.1",
|
65
|
-
"@eslint/eslintrc": "^2.1.
|
66
|
-
"@eslint/js": "
|
67
|
-
"@humanwhocodes/config-array": "^0.11.
|
67
|
+
"@eslint/eslintrc": "^2.1.4",
|
68
|
+
"@eslint/js": "8.57.0",
|
69
|
+
"@humanwhocodes/config-array": "^0.11.14",
|
68
70
|
"@humanwhocodes/module-importer": "^1.0.1",
|
69
71
|
"@nodelib/fs.walk": "^1.2.8",
|
72
|
+
"@ungap/structured-clone": "^1.2.0",
|
70
73
|
"ajv": "^6.12.4",
|
71
74
|
"chalk": "^4.0.0",
|
72
75
|
"cross-spawn": "^7.0.2",
|
@@ -101,6 +104,11 @@
|
|
101
104
|
"devDependencies": {
|
102
105
|
"@babel/core": "^7.4.3",
|
103
106
|
"@babel/preset-env": "^7.4.3",
|
107
|
+
"@wdio/browser-runner": "^8.14.6",
|
108
|
+
"@wdio/cli": "^8.14.6",
|
109
|
+
"@wdio/concise-reporter": "^8.14.0",
|
110
|
+
"@wdio/globals": "^8.14.6",
|
111
|
+
"@wdio/mocha-framework": "^8.14.0",
|
104
112
|
"babel-loader": "^8.0.5",
|
105
113
|
"c8": "^7.12.0",
|
106
114
|
"chai": "^4.0.1",
|
@@ -111,11 +119,11 @@
|
|
111
119
|
"eslint": "file:.",
|
112
120
|
"eslint-config-eslint": "file:packages/eslint-config-eslint",
|
113
121
|
"eslint-plugin-eslint-comments": "^3.2.0",
|
114
|
-
"eslint-plugin-eslint-plugin": "^5.1
|
122
|
+
"eslint-plugin-eslint-plugin": "^5.2.1",
|
115
123
|
"eslint-plugin-internal-rules": "file:tools/internal-rules",
|
116
124
|
"eslint-plugin-jsdoc": "^46.2.5",
|
117
|
-
"eslint-plugin-n": "^16.
|
118
|
-
"eslint-plugin-unicorn": "^
|
125
|
+
"eslint-plugin-n": "^16.6.0",
|
126
|
+
"eslint-plugin-unicorn": "^49.0.0",
|
119
127
|
"eslint-release": "^3.2.0",
|
120
128
|
"eslump": "^3.0.0",
|
121
129
|
"esprima": "^4.0.1",
|
@@ -124,15 +132,12 @@
|
|
124
132
|
"glob": "^7.1.6",
|
125
133
|
"got": "^11.8.3",
|
126
134
|
"gray-matter": "^4.0.3",
|
127
|
-
"karma": "^6.1.1",
|
128
|
-
"karma-chrome-launcher": "^3.1.0",
|
129
|
-
"karma-mocha": "^2.0.1",
|
130
|
-
"karma-mocha-reporter": "^2.2.5",
|
131
|
-
"karma-webpack": "^5.0.0",
|
132
135
|
"lint-staged": "^11.0.0",
|
133
136
|
"load-perf": "^0.2.0",
|
134
|
-
"
|
135
|
-
"
|
137
|
+
"markdown-it": "^12.2.0",
|
138
|
+
"markdown-it-container": "^3.0.0",
|
139
|
+
"markdownlint": "^0.32.0",
|
140
|
+
"markdownlint-cli": "^0.37.0",
|
136
141
|
"marked": "^4.0.8",
|
137
142
|
"memfs": "^3.0.1",
|
138
143
|
"metascraper": "^5.25.7",
|
@@ -148,12 +153,14 @@
|
|
148
153
|
"pirates": "^4.0.5",
|
149
154
|
"progress": "^2.0.3",
|
150
155
|
"proxyquire": "^2.0.1",
|
151
|
-
"
|
152
|
-
"
|
153
|
-
"
|
156
|
+
"recast": "^0.23.0",
|
157
|
+
"regenerator-runtime": "^0.14.0",
|
158
|
+
"rollup-plugin-node-polyfills": "^0.2.1",
|
154
159
|
"semver": "^7.5.3",
|
155
160
|
"shelljs": "^0.8.2",
|
156
161
|
"sinon": "^11.0.0",
|
162
|
+
"vite-plugin-commonjs": "^0.10.0",
|
163
|
+
"webdriverio": "^8.14.6",
|
157
164
|
"webpack": "^5.23.0",
|
158
165
|
"webpack-cli": "^4.5.0",
|
159
166
|
"yorkie": "^2.0.0"
|