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.
Files changed (118) hide show
  1. package/README.md +18 -13
  2. package/bin/eslint.js +38 -5
  3. package/conf/rule-type-list.json +25 -33
  4. package/lib/api.js +29 -1
  5. package/lib/cli-engine/cli-engine.js +2 -2
  6. package/lib/cli-engine/lint-result-cache.js +18 -6
  7. package/lib/cli.js +36 -6
  8. package/lib/config/flat-config-schema.js +124 -61
  9. package/lib/config/rule-validator.js +2 -1
  10. package/lib/eslint/eslint-helpers.js +9 -11
  11. package/lib/eslint/eslint.js +7 -0
  12. package/lib/eslint/flat-eslint.js +33 -18
  13. package/lib/linter/apply-disable-directives.js +127 -13
  14. package/lib/linter/code-path-analysis/code-path-analyzer.js +32 -24
  15. package/lib/linter/code-path-analysis/code-path-segment.js +52 -24
  16. package/lib/linter/code-path-analysis/code-path-state.js +1108 -243
  17. package/lib/linter/code-path-analysis/code-path.js +128 -33
  18. package/lib/linter/code-path-analysis/fork-context.js +173 -72
  19. package/lib/linter/config-comment-parser.js +36 -2
  20. package/lib/linter/linter.js +183 -82
  21. package/lib/options.js +24 -3
  22. package/lib/rule-tester/flat-rule-tester.js +113 -25
  23. package/lib/rule-tester/rule-tester.js +176 -23
  24. package/lib/rules/array-bracket-newline.js +3 -0
  25. package/lib/rules/array-bracket-spacing.js +3 -0
  26. package/lib/rules/array-callback-return.js +175 -25
  27. package/lib/rules/array-element-newline.js +3 -0
  28. package/lib/rules/arrow-parens.js +3 -0
  29. package/lib/rules/arrow-spacing.js +3 -0
  30. package/lib/rules/block-spacing.js +3 -0
  31. package/lib/rules/brace-style.js +3 -0
  32. package/lib/rules/comma-dangle.js +3 -0
  33. package/lib/rules/comma-spacing.js +3 -0
  34. package/lib/rules/comma-style.js +3 -0
  35. package/lib/rules/computed-property-spacing.js +3 -0
  36. package/lib/rules/consistent-return.js +32 -7
  37. package/lib/rules/constructor-super.js +37 -14
  38. package/lib/rules/dot-location.js +3 -0
  39. package/lib/rules/eol-last.js +3 -0
  40. package/lib/rules/for-direction.js +38 -24
  41. package/lib/rules/func-call-spacing.js +3 -0
  42. package/lib/rules/function-call-argument-newline.js +3 -0
  43. package/lib/rules/function-paren-newline.js +3 -0
  44. package/lib/rules/generator-star-spacing.js +3 -0
  45. package/lib/rules/getter-return.js +33 -8
  46. package/lib/rules/implicit-arrow-linebreak.js +3 -0
  47. package/lib/rules/indent.js +3 -0
  48. package/lib/rules/index.js +1 -0
  49. package/lib/rules/jsx-quotes.js +3 -0
  50. package/lib/rules/key-spacing.js +3 -0
  51. package/lib/rules/keyword-spacing.js +3 -0
  52. package/lib/rules/linebreak-style.js +3 -0
  53. package/lib/rules/lines-around-comment.js +3 -0
  54. package/lib/rules/lines-between-class-members.js +95 -7
  55. package/lib/rules/logical-assignment-operators.js +31 -3
  56. package/lib/rules/max-len.js +3 -0
  57. package/lib/rules/max-statements-per-line.js +3 -0
  58. package/lib/rules/multiline-ternary.js +3 -0
  59. package/lib/rules/new-parens.js +3 -0
  60. package/lib/rules/newline-per-chained-call.js +3 -0
  61. package/lib/rules/no-array-constructor.js +85 -6
  62. package/lib/rules/no-confusing-arrow.js +3 -0
  63. package/lib/rules/no-console.js +74 -2
  64. package/lib/rules/no-extra-parens.js +3 -0
  65. package/lib/rules/no-extra-semi.js +3 -0
  66. package/lib/rules/no-fallthrough.js +42 -14
  67. package/lib/rules/no-floating-decimal.js +3 -0
  68. package/lib/rules/no-invalid-this.js +1 -1
  69. package/lib/rules/no-misleading-character-class.js +65 -15
  70. package/lib/rules/no-mixed-operators.js +3 -0
  71. package/lib/rules/no-mixed-spaces-and-tabs.js +3 -0
  72. package/lib/rules/no-multi-spaces.js +3 -0
  73. package/lib/rules/no-multiple-empty-lines.js +3 -0
  74. package/lib/rules/no-new-object.js +7 -0
  75. package/lib/rules/no-object-constructor.js +117 -0
  76. package/lib/rules/no-promise-executor-return.js +157 -16
  77. package/lib/rules/no-prototype-builtins.js +90 -2
  78. package/lib/rules/no-restricted-imports.js +54 -31
  79. package/lib/rules/no-restricted-properties.js +15 -28
  80. package/lib/rules/no-tabs.js +3 -0
  81. package/lib/rules/no-this-before-super.js +38 -11
  82. package/lib/rules/no-trailing-spaces.js +3 -0
  83. package/lib/rules/no-unreachable-loop.js +47 -12
  84. package/lib/rules/no-unreachable.js +39 -10
  85. package/lib/rules/no-useless-return.js +35 -4
  86. package/lib/rules/no-whitespace-before-property.js +3 -0
  87. package/lib/rules/nonblock-statement-body-position.js +3 -0
  88. package/lib/rules/object-curly-newline.js +3 -0
  89. package/lib/rules/object-curly-spacing.js +3 -0
  90. package/lib/rules/object-property-newline.js +3 -0
  91. package/lib/rules/one-var-declaration-per-line.js +3 -0
  92. package/lib/rules/operator-linebreak.js +3 -0
  93. package/lib/rules/padded-blocks.js +3 -0
  94. package/lib/rules/padding-line-between-statements.js +3 -0
  95. package/lib/rules/quote-props.js +3 -0
  96. package/lib/rules/quotes.js +3 -0
  97. package/lib/rules/require-atomic-updates.js +21 -7
  98. package/lib/rules/rest-spread-spacing.js +3 -0
  99. package/lib/rules/semi-spacing.js +3 -0
  100. package/lib/rules/semi-style.js +3 -0
  101. package/lib/rules/semi.js +3 -0
  102. package/lib/rules/space-before-blocks.js +3 -0
  103. package/lib/rules/space-before-function-paren.js +3 -0
  104. package/lib/rules/space-in-parens.js +3 -0
  105. package/lib/rules/space-infix-ops.js +3 -0
  106. package/lib/rules/space-unary-ops.js +3 -0
  107. package/lib/rules/spaced-comment.js +3 -0
  108. package/lib/rules/switch-colon-spacing.js +3 -0
  109. package/lib/rules/template-curly-spacing.js +3 -0
  110. package/lib/rules/template-tag-spacing.js +3 -0
  111. package/lib/rules/utils/ast-utils.js +111 -1
  112. package/lib/rules/wrap-iife.js +3 -0
  113. package/lib/rules/wrap-regex.js +3 -0
  114. package/lib/rules/yield-star-spacing.js +3 -0
  115. package/lib/shared/severity.js +49 -0
  116. package/lib/source-code/source-code.js +329 -3
  117. package/messages/eslintrc-incompat.js +1 -1
  118. 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.47.0",
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.2",
66
- "@eslint/js": "^8.47.0",
67
- "@humanwhocodes/config-array": "^0.11.10",
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.0",
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.0.0",
118
- "eslint-plugin-unicorn": "^42.0.0",
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
- "markdownlint": "^0.25.1",
135
- "markdownlint-cli": "^0.31.1",
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
- "puppeteer": "^13.7.0",
152
- "recast": "^0.20.4",
153
- "regenerator-runtime": "^0.13.2",
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"