eslint 9.12.0 → 9.13.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 CHANGED
@@ -289,23 +289,22 @@ Percy Ma
289
289
 
290
290
  <!--teamend-->
291
291
 
292
+ <!-- NOTE: This section is autogenerated. Do not manually edit.-->
293
+ <!--sponsorsstart-->
292
294
  ## Sponsors
293
295
 
294
- The following companies, organizations, and individuals support ESLint's ongoing maintenance and development. [Become a Sponsor](https://eslint.org/donate) to get your logo on our README and website.
296
+ The following companies, organizations, and individuals support ESLint's ongoing maintenance and development. [Become a Sponsor](https://eslint.org/donate)
297
+ to get your logo on our READMEs and [website](https://eslint.org/sponsors).
295
298
 
296
- <!-- NOTE: This section is autogenerated. Do not manually edit.-->
297
- <!--sponsorsstart-->
298
299
  <h3>Platinum Sponsors</h3>
299
300
  <p><a href="https://automattic.com"><img src="https://images.opencollective.com/automattic/d0ef3e1/logo.png" alt="Automattic" height="128"></a> <a href="https://www.airbnb.com/"><img src="https://images.opencollective.com/airbnb/d327d66/logo.png" alt="Airbnb" height="128"></a></p><h3>Gold Sponsors</h3>
300
301
  <p><a href="https://trunk.io/"><img src="https://images.opencollective.com/trunkio/fb92d60/avatar.png" alt="trunk.io" height="96"></a></p><h3>Silver Sponsors</h3>
301
302
  <p><a href="https://www.jetbrains.com/"><img src="https://images.opencollective.com/jetbrains/fe76f99/logo.png" alt="JetBrains" height="64"></a> <a href="https://liftoff.io/"><img src="https://images.opencollective.com/liftoff/5c4fa84/logo.png" alt="Liftoff" height="64"></a> <a href="https://americanexpress.io"><img src="https://avatars.githubusercontent.com/u/3853301?v=4" alt="American Express" height="64"></a> <a href="https://www.workleap.com"><img src="https://avatars.githubusercontent.com/u/53535748?u=d1e55d7661d724bf2281c1bfd33cb8f99fe2465f&v=4" alt="Workleap" height="64"></a></p><h3>Bronze Sponsors</h3>
302
303
  <p><a href="https://www.wordhint.net/"><img src="https://images.opencollective.com/wordhint/be86813/avatar.png" alt="WordHint" 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://icons8.com/"><img src="https://images.opencollective.com/icons8/7fa1641/logo.png" alt="Icons8" height="32"></a> <a href="https://discord.com"><img src="https://images.opencollective.com/discordapp/f9645d9/logo.png" alt="Discord" height="32"></a> <a href="https://www.gitbook.com"><img src="https://avatars.githubusercontent.com/u/7111340?v=4" alt="GitBook" height="32"></a> <a href="https://nx.dev"><img src="https://avatars.githubusercontent.com/u/23692104?v=4" alt="Nx" height="32"></a> <a href="https://herocoders.com"><img src="https://avatars.githubusercontent.com/u/37549774?v=4" alt="HeroCoders" height="32"></a> <a href="https://usenextbase.com"><img src="https://avatars.githubusercontent.com/u/145838380?v=4" alt="Nextbase Starter Kit" height="32"></a></p>
303
- <!--sponsorsend-->
304
-
305
- <!--techsponsorsstart-->
306
- <h2>Technology Sponsors</h2>
304
+ <h3>Technology Sponsors</h3>
305
+ Technology sponsors allow us to use their products and services for free as part of a contribution to the open source ecosystem and our work.
307
306
  <p><a href="https://netlify.com"><img src="https://raw.githubusercontent.com/eslint/eslint.org/main/src/assets/images/techsponsors/netlify-icon.svg" alt="Netlify" height="32"></a> <a href="https://algolia.com"><img src="https://raw.githubusercontent.com/eslint/eslint.org/main/src/assets/images/techsponsors/algolia-icon.svg" alt="Algolia" height="32"></a> <a href="https://1password.com"><img src="https://raw.githubusercontent.com/eslint/eslint.org/main/src/assets/images/techsponsors/1password-icon.svg" alt="1Password" height="32"></a></p>
308
- <!--techsponsorsend-->
307
+ <!--sponsorsend-->
309
308
 
310
309
  [tidelift]: https://tidelift.com/funding/github/npm/eslint
311
310
  [herodevs]: https://www.herodevs.com/support/eslint-nes?utm_source=ESLintWebsite&utm_medium=ESLintWebsite&utm_campaign=ESLintNES&utm_id=ESLintNES
package/bin/eslint.js CHANGED
@@ -9,6 +9,11 @@
9
9
 
10
10
  "use strict";
11
11
 
12
+ const mod = require("node:module");
13
+
14
+ // to use V8's code cache to speed up instantiation time
15
+ mod.enableCompileCache?.();
16
+
12
17
  // must do this initialization *before* other requires in order to work
13
18
  if (process.argv.includes("--debug")) {
14
19
  require("debug").enable("eslint:*,-eslint:code-path,eslintrc:*");
package/lib/cli.js CHANGED
@@ -146,24 +146,29 @@ async function translateOptions({
146
146
  overrideConfigFile = void 0;
147
147
  }
148
148
 
149
- let globals = {};
149
+ const languageOptions = {};
150
150
 
151
151
  if (global) {
152
- globals = global.reduce((obj, name) => {
152
+ languageOptions.globals = global.reduce((obj, name) => {
153
153
  if (name.endsWith(":true")) {
154
154
  obj[name.slice(0, -5)] = "writable";
155
155
  } else {
156
156
  obj[name] = "readonly";
157
157
  }
158
158
  return obj;
159
- }, globals);
159
+ }, {});
160
+ }
161
+
162
+ if (parserOptions) {
163
+ languageOptions.parserOptions = parserOptions;
164
+ }
165
+
166
+ if (parser) {
167
+ languageOptions.parser = await importer.import(parser);
160
168
  }
161
169
 
162
170
  overrideConfig = [{
163
- languageOptions: {
164
- globals,
165
- parserOptions: parserOptions || {}
166
- },
171
+ ...Object.keys(languageOptions).length > 0 ? { languageOptions } : {},
167
172
  rules: rule ? rule : {}
168
173
  }];
169
174
 
@@ -175,10 +180,6 @@ async function translateOptions({
175
180
  };
176
181
  }
177
182
 
178
- if (parser) {
179
- overrideConfig[0].languageOptions.parser = await importer.import(parser);
180
- }
181
-
182
183
  if (plugin) {
183
184
  overrideConfig[0].plugins = await loadPlugins(importer, plugin);
184
185
  }
@@ -378,7 +379,7 @@ const cli = {
378
379
  debug("Using flat config?", usingFlatConfig);
379
380
 
380
381
  if (allowFlatConfig && !usingFlatConfig) {
381
- process.emitWarning("You are using an eslintrc configuration file, which is deprecated and support will be removed in v10.0.0. Please migrate to an eslint.config.js file. See https://eslint.org/docs/latest/use/configure/migration-guide for details.", "ESLintRCWarning");
382
+ process.emitWarning("You are using an eslintrc configuration file, which is deprecated and support will be removed in v10.0.0. Please migrate to an eslint.config.js file. See https://eslint.org/docs/latest/use/configure/migration-guide for details. An eslintrc configuration file is used because you have the ESLINT_USE_FLAT_CONFIG environment variable set to false. If you want to use an eslint.config.js file, remove the environment variable. If you want to find the location of the eslintrc configuration file, use the --debug flag.", "ESLintRCWarning");
382
383
  }
383
384
 
384
385
  const CLIOptions = createCLIOptions(usingFlatConfig);
@@ -173,21 +173,22 @@ async function loadConfigFile(filePath, allowTS) {
173
173
  */
174
174
  if (allowTS && isTS && !isDeno && !isBun) {
175
175
 
176
- const createJiti = await import("jiti").then(jitiModule => (typeof jitiModule?.createJiti === "function" ? jitiModule.createJiti : jitiModule.default), () => {
176
+ // eslint-disable-next-line no-use-before-define -- `ConfigLoader.loadJiti` can be overwritten for testing
177
+ const { createJiti } = await ConfigLoader.loadJiti().catch(() => {
177
178
  throw new Error("The 'jiti' library is required for loading TypeScript configuration files. Make sure to install it.");
178
179
  });
179
180
 
181
+ // `createJiti` was added in jiti v2.
182
+ if (typeof createJiti !== "function") {
183
+ throw new Error("You are using an outdated version of the 'jiti' library. Please update to the latest version of 'jiti' to ensure compatibility and access to the latest features.");
184
+ }
185
+
180
186
  /*
181
187
  * Disabling `moduleCache` allows us to reload a
182
188
  * config file when the last modified timestamp changes.
183
189
  */
184
190
 
185
191
  const jiti = createJiti(__filename, { moduleCache: false, interopDefault: false });
186
-
187
- if (typeof jiti?.import !== "function") {
188
- throw new Error("You are using an outdated version of the 'jiti' library. Please update to the latest version of 'jiti' to ensure compatibility and access to the latest features.");
189
- }
190
-
191
192
  const config = await jiti.import(fileURL.href);
192
193
 
193
194
  importedConfigFileModificationTime.set(filePath, mtime);
@@ -294,7 +295,6 @@ async function calculateConfigArray(configFilePath, basePath, options) {
294
295
  return configs;
295
296
  }
296
297
 
297
-
298
298
  //-----------------------------------------------------------------------------
299
299
  // Exports
300
300
  //-----------------------------------------------------------------------------
@@ -517,6 +517,15 @@ class ConfigLoader {
517
517
  return this.#configArrays.get(configFilePath);
518
518
  }
519
519
 
520
+ /**
521
+ * Used to import the jiti dependency. This method is exposed internally for testing purposes.
522
+ * @returns {Promise<Record<string, unknown>>} A promise that fulfills with a module object
523
+ * or rejects with an error if jiti is not found.
524
+ */
525
+ static loadJiti() {
526
+ return import("jiti");
527
+ }
528
+
520
529
  }
521
530
 
522
531
  /**
@@ -188,10 +188,6 @@ class Config {
188
188
  this.plugins = plugins;
189
189
  this.language = language;
190
190
 
191
- if (languageOptions) {
192
- this.languageOptions = languageOptions;
193
- }
194
-
195
191
  // Check language value
196
192
  const { pluginName: languagePluginName, objectName: localLanguageName } = splitPluginIdentifier(language);
197
193
 
@@ -203,13 +199,20 @@ class Config {
203
199
 
204
200
  this.language = plugins[languagePluginName].languages[localLanguageName];
205
201
 
202
+ if (this.language.defaultLanguageOptions ?? languageOptions) {
203
+ this.languageOptions = flatConfigSchema.languageOptions.merge(
204
+ this.language.defaultLanguageOptions,
205
+ languageOptions
206
+ );
207
+ } else {
208
+ this.languageOptions = {};
209
+ }
210
+
206
211
  // Validate language options
207
- if (this.languageOptions) {
208
- try {
209
- this.language.validateLanguageOptions(this.languageOptions);
210
- } catch (error) {
211
- throw new TypeError(`Key "languageOptions": ${error.message}`, { cause: error });
212
- }
212
+ try {
213
+ this.language.validateLanguageOptions(this.languageOptions);
214
+ } catch (error) {
215
+ throw new TypeError(`Key "languageOptions": ${error.message}`, { cause: error });
213
216
  }
214
217
 
215
218
  // Check processor value
@@ -15,7 +15,7 @@ const Rules = require("../rules");
15
15
  // Helpers
16
16
  //-----------------------------------------------------------------------------
17
17
 
18
- exports.defaultConfig = [
18
+ exports.defaultConfig = Object.freeze([
19
19
  {
20
20
  plugins: {
21
21
  "@": {
@@ -42,12 +42,6 @@ exports.defaultConfig = [
42
42
  }
43
43
  },
44
44
  language: "@/js",
45
- languageOptions: {
46
- sourceType: "module",
47
- ecmaVersion: "latest",
48
- parser: require("espree"),
49
- parserOptions: {}
50
- },
51
45
  linterOptions: {
52
46
  reportUnusedDisableDirectives: 1
53
47
  }
@@ -72,4 +66,4 @@ exports.defaultConfig = [
72
66
  ecmaVersion: "latest"
73
67
  }
74
68
  }
75
- ];
69
+ ]);
@@ -15,6 +15,7 @@ const path = require("node:path");
15
15
  const { version } = require("../../package.json");
16
16
  const { Linter } = require("../linter");
17
17
  const { getRuleFromConfig } = require("../config/flat-config-helpers");
18
+ const { defaultConfig } = require("../config/default-config");
18
19
  const {
19
20
  Legacy: {
20
21
  ConfigOps: {
@@ -52,6 +53,7 @@ const { ConfigLoader, LegacyConfigLoader } = require("../config/config-loader");
52
53
  //------------------------------------------------------------------------------
53
54
 
54
55
  // For VSCode IntelliSense
56
+ /** @typedef {import("../cli-engine/cli-engine").ConfigArray} ConfigArray */
55
57
  /** @typedef {import("../shared/types").ConfigData} ConfigData */
56
58
  /** @typedef {import("../shared/types").DeprecatedRuleInfo} DeprecatedRuleInfo */
57
59
  /** @typedef {import("../shared/types").LintMessage} LintMessage */
@@ -522,6 +524,15 @@ class ESLint {
522
524
  return version;
523
525
  }
524
526
 
527
+ /**
528
+ * The default configuration that ESLint uses internally. This is provided for tooling that wants to calculate configurations using the same defaults as ESLint.
529
+ * Keep in mind that the default configuration may change from version to version, so you shouldn't rely on any particular keys or values to be present.
530
+ * @type {ConfigArray}
531
+ */
532
+ static get defaultConfig() {
533
+ return defaultConfig;
534
+ }
535
+
525
536
  /**
526
537
  * Outputs fixes from the given results to files.
527
538
  * @param {LintResult[]} results The lint results.
@@ -12,6 +12,7 @@
12
12
  const { SourceCode } = require("./source-code");
13
13
  const createDebug = require("debug");
14
14
  const astUtils = require("../../shared/ast-utils");
15
+ const espree = require("espree");
15
16
  const eslintScope = require("eslint-scope");
16
17
  const evk = require("eslint-visitor-keys");
17
18
  const { validateLanguageOptions } = require("./validate-language-options");
@@ -69,6 +70,13 @@ module.exports = {
69
70
  nodeTypeKey: "type",
70
71
  visitorKeys: evk.KEYS,
71
72
 
73
+ defaultLanguageOptions: {
74
+ sourceType: "module",
75
+ ecmaVersion: "latest",
76
+ parser: espree,
77
+ parserOptions: {}
78
+ },
79
+
72
80
  validateLanguageOptions,
73
81
 
74
82
  /**
@@ -1643,29 +1643,26 @@ class Linter {
1643
1643
  const options = normalizeVerifyOptions(providedOptions, config);
1644
1644
  const languageOptions = config.languageOptions;
1645
1645
 
1646
- languageOptions.ecmaVersion = normalizeEcmaVersionForLanguageOptions(
1647
- languageOptions.ecmaVersion
1648
- );
1649
-
1650
- // double check that there is a parser to avoid mysterious error messages
1651
- if (!languageOptions.parser) {
1652
- throw new TypeError(`No parser specified for ${options.filename}`);
1653
- }
1646
+ if (config.language === jslang) {
1647
+ languageOptions.ecmaVersion = normalizeEcmaVersionForLanguageOptions(
1648
+ languageOptions.ecmaVersion
1649
+ );
1654
1650
 
1655
- // Espree expects this information to be passed in
1656
- if (isEspree(languageOptions.parser)) {
1657
- const parserOptions = languageOptions.parserOptions;
1651
+ // Espree expects this information to be passed in
1652
+ if (isEspree(languageOptions.parser)) {
1653
+ const parserOptions = languageOptions.parserOptions;
1658
1654
 
1659
- if (languageOptions.sourceType) {
1655
+ if (languageOptions.sourceType) {
1660
1656
 
1661
- parserOptions.sourceType = languageOptions.sourceType;
1657
+ parserOptions.sourceType = languageOptions.sourceType;
1662
1658
 
1663
- if (
1664
- parserOptions.sourceType === "module" &&
1665
- parserOptions.ecmaFeatures &&
1666
- parserOptions.ecmaFeatures.globalReturn
1667
- ) {
1668
- parserOptions.ecmaFeatures.globalReturn = false;
1659
+ if (
1660
+ parserOptions.sourceType === "module" &&
1661
+ parserOptions.ecmaFeatures &&
1662
+ parserOptions.ecmaFeatures.globalReturn
1663
+ ) {
1664
+ parserOptions.ecmaFeatures.globalReturn = false;
1665
+ }
1669
1666
  }
1670
1667
  }
1671
1668
  }
@@ -30,6 +30,7 @@ const parserSymbol = Symbol.for("eslint.RuleTester.parser");
30
30
  const { ConfigArraySymbol } = require("@eslint/config-array");
31
31
  const { isSerializable } = require("../shared/serialization");
32
32
 
33
+ const jslang = require("../languages/js");
33
34
  const { SourceCode } = require("../languages/js/source-code");
34
35
 
35
36
  //------------------------------------------------------------------------------
@@ -619,10 +620,7 @@ class RuleTester {
619
620
  }
620
621
  }
621
622
  },
622
- language: defaultConfig[0].language,
623
- languageOptions: {
624
- ...defaultConfig[0].languageOptions
625
- }
623
+ language: defaultConfig[0].language
626
624
  },
627
625
  ...defaultConfig.slice(1)
628
626
  ];
@@ -673,7 +671,10 @@ class RuleTester {
673
671
  const calculatedConfig = proto[ConfigArraySymbol.finalizeConfig].apply(this, args);
674
672
 
675
673
  // wrap the parser to catch start/end property access
676
- calculatedConfig.languageOptions.parser = wrapParser(calculatedConfig.languageOptions.parser);
674
+ if (calculatedConfig.language === jslang) {
675
+ calculatedConfig.languageOptions.parser = wrapParser(calculatedConfig.languageOptions.parser);
676
+ }
677
+
677
678
  return calculatedConfig;
678
679
  };
679
680
 
@@ -694,17 +695,6 @@ class RuleTester {
694
695
  delete itemConfig[parameter];
695
696
  }
696
697
 
697
- // wrap any parsers
698
- if (itemConfig.languageOptions && itemConfig.languageOptions.parser) {
699
-
700
- const parser = itemConfig.languageOptions.parser;
701
-
702
- if (parser && typeof parser !== "object") {
703
- throw new Error("Parser must be an object with a parse() or parseForESLint() method.");
704
- }
705
-
706
- }
707
-
708
698
  /*
709
699
  * Create the config object from the tester config and this item
710
700
  * specific configurations.
@@ -1179,6 +1179,9 @@ export namespace Linter {
1179
1179
  ruleId: string | null;
1180
1180
  message: string;
1181
1181
  messageId?: string | undefined;
1182
+ /**
1183
+ * @deprecated `nodeType` is deprecated and will be removed in the next major version.
1184
+ */
1182
1185
  nodeType?: string | undefined;
1183
1186
  fatal?: true | undefined;
1184
1187
  severity: Exclude<Severity, 0>;
@@ -1396,6 +1399,12 @@ export class ESLint {
1396
1399
 
1397
1400
  static readonly version: string;
1398
1401
 
1402
+ /**
1403
+ * The default configuration that ESLint uses internally. This is provided for tooling that wants to calculate configurations using the same defaults as ESLint.
1404
+ * Keep in mind that the default configuration may change from version to version, so you shouldn't rely on any particular keys or values to be present.
1405
+ */
1406
+ static readonly defaultConfig: Linter.Config[];
1407
+
1399
1408
  static outputFixes(results: ESLint.LintResult[]): Promise<void>;
1400
1409
 
1401
1410
  static getErrorResults(results: ESLint.LintResult[]): ESLint.LintResult[];
@@ -1655,6 +1664,9 @@ export namespace RuleTester {
1655
1664
  interface TestCaseError {
1656
1665
  message?: string | RegExp;
1657
1666
  messageId?: string;
1667
+ /**
1668
+ * @deprecated `type` is deprecated and will be removed in the next major version.
1669
+ */
1658
1670
  type?: string | undefined;
1659
1671
  data?: any;
1660
1672
  line?: number | undefined;
@@ -118,6 +118,11 @@ export interface BestPractices extends Linter.RulesRecord {
118
118
  * @default 20
119
119
  */
120
120
  maximum: number;
121
+ /**
122
+ * @default "classic"
123
+ * @since 9.12.0
124
+ */
125
+ variant: "classic" | "modified";
121
126
  }>
122
127
  | number,
123
128
  ]
@@ -185,6 +190,7 @@ export interface BestPractices extends Linter.RulesRecord {
185
190
  * Rule to enforce consistent newlines before and after dots.
186
191
  *
187
192
  * @since 0.21.0
193
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/dot-location) in `@stylistic/eslint-plugin-js`.
188
194
  * @see https://eslint.org/docs/rules/dot-location
189
195
  */
190
196
  "dot-location": Linter.RuleEntry<["object" | "property"]>;
@@ -417,6 +423,10 @@ export interface BestPractices extends Linter.RulesRecord {
417
423
  * @default false
418
424
  */
419
425
  allowEmptyCase: boolean;
426
+ /**
427
+ * @default false
428
+ */
429
+ reportUnusedFallthroughComment: boolean;
420
430
  }>,
421
431
  ]
422
432
  >;
@@ -425,6 +435,7 @@ export interface BestPractices extends Linter.RulesRecord {
425
435
  * Rule to disallow leading or trailing decimal points in numeric literals.
426
436
  *
427
437
  * @since 0.0.6
438
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/no-floating-decimal) in `@stylistic/eslint-plugin-js`.
428
439
  * @see https://eslint.org/docs/rules/no-floating-decimal
429
440
  */
430
441
  "no-floating-decimal": Linter.RuleEntry<[]>;
@@ -601,6 +612,7 @@ export interface BestPractices extends Linter.RulesRecord {
601
612
  * Rule to disallow multiple spaces.
602
613
  *
603
614
  * @since 0.9.0
615
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/no-multi-spaces) in `@stylistic/eslint-plugin-js`.
604
616
  * @see https://eslint.org/docs/rules/no-multi-spaces
605
617
  */
606
618
  "no-multi-spaces": Linter.RuleEntry<
@@ -872,6 +884,15 @@ export interface BestPractices extends Linter.RulesRecord {
872
884
  */
873
885
  "no-unused-labels": Linter.RuleEntry<[]>;
874
886
 
887
+ /**
888
+ * Disallow variable assignments when the value is not used
889
+ *
890
+ *
891
+ * @since 9.0.0-alpha.1
892
+ * @see https://eslint.org/docs/latest/rules/no-useless-assignment
893
+ */
894
+ "no-useless-assignment": Linter.RuleEntry<[]>;
895
+
875
896
  /**
876
897
  * Disallow useless backreferences in regular expressions
877
898
  *
@@ -1045,12 +1066,21 @@ export interface BestPractices extends Linter.RulesRecord {
1045
1066
  "require-await": Linter.RuleEntry<[]>;
1046
1067
 
1047
1068
  /**
1048
- * Rule to enforce the use of `u` flag on RegExp.
1069
+ * Enforce the use of `u` or `v` flag on RegExp
1049
1070
  *
1050
1071
  * @since 5.3.0
1051
1072
  * @see https://eslint.org/docs/rules/require-unicode-regexp
1052
1073
  */
1053
- "require-unicode-regexp": Linter.RuleEntry<[]>;
1074
+ "require-unicode-regexp": Linter.RuleEntry<
1075
+ [
1076
+ Partial<{
1077
+ /**
1078
+ * @default false
1079
+ */
1080
+ requireFlag: "u" | "v";
1081
+ }>,
1082
+ ]
1083
+ >;
1054
1084
 
1055
1085
  /**
1056
1086
  * Rule to require `var` declarations be placed at the top of their containing scope.
@@ -1064,6 +1094,7 @@ export interface BestPractices extends Linter.RulesRecord {
1064
1094
  * Rule to require parentheses around immediate `function` invocations.
1065
1095
  *
1066
1096
  * @since 0.0.9
1097
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/wrap-iife) in `@stylistic/eslint-plugin-js`.
1067
1098
  * @see https://eslint.org/docs/rules/wrap-iife
1068
1099
  */
1069
1100
  "wrap-iife": Linter.RuleEntry<
@@ -191,6 +191,24 @@ export interface Deprecated extends Linter.RulesRecord {
191
191
  */
192
192
  "no-negated-in-lhs": Linter.RuleEntry<[]>;
193
193
 
194
+ /**
195
+ * Rule to disallow `Object` constructors.
196
+ *
197
+ * @since 0.0.9
198
+ * @deprecated since 8.50.0, use [`no-object-constructor`](https://eslint.org/docs/rules/no-object-constructor) instead.
199
+ * @see https://eslint.org/docs/rules/no-object-constructor
200
+ */
201
+ "no-new-object": Linter.RuleEntry<[]>;
202
+
203
+ /**
204
+ * Rule to disallow `new` operators with the `Symbol` object.
205
+ *
206
+ * @since 2.0.0-beta.1
207
+ * @deprecated since 8.27.0, use [`no-new-native-nonconstructor`](https://eslint.org/docs/rules/no-new-native-nonconstructor) instead.
208
+ * @see https://eslint.org/docs/rules/no-new-symbol
209
+ */
210
+ "no-new-symbol": Linter.RuleEntry<[]>;
211
+
194
212
  /**
195
213
  * Rule to disallow spacing between function identifiers and their applications.
196
214
  *
@@ -214,81 +232,4 @@ export interface Deprecated extends Linter.RulesRecord {
214
232
  }>,
215
233
  ]
216
234
  >;
217
-
218
- /**
219
- * Rule to require JSDoc comments.
220
- *
221
- * @since 1.4.0
222
- * @deprecated since 5.10.0
223
- * @see https://eslint.org/docs/rules/require-jsdoc
224
- */
225
- "require-jsdoc": Linter.RuleEntry<
226
- [
227
- Partial<{
228
- require: Partial<{
229
- /**
230
- * @default true
231
- */
232
- FunctionDeclaration: boolean;
233
- /**
234
- * @default false
235
- */
236
- MethodDefinition: boolean;
237
- /**
238
- * @default false
239
- */
240
- ClassDeclaration: boolean;
241
- /**
242
- * @default false
243
- */
244
- ArrowFunctionExpression: boolean;
245
- /**
246
- * @default false
247
- */
248
- FunctionExpression: boolean;
249
- }>;
250
- }>,
251
- ]
252
- >;
253
-
254
- /**
255
- * Rule to enforce valid JSDoc comments.
256
- *
257
- * @since 0.4.0
258
- * @deprecated since 5.10.0
259
- * @see https://eslint.org/docs/rules/valid-jsdoc
260
- */
261
- "valid-jsdoc": Linter.RuleEntry<
262
- [
263
- Partial<{
264
- prefer: Record<string, string>;
265
- preferType: Record<string, string>;
266
- /**
267
- * @default true
268
- */
269
- requireReturn: boolean;
270
- /**
271
- * @default true
272
- */
273
- requireReturnType: boolean;
274
- /**
275
- * @remarks
276
- * Also accept for regular expression pattern
277
- */
278
- matchDescription: string;
279
- /**
280
- * @default true
281
- */
282
- requireParamDescription: boolean;
283
- /**
284
- * @default true
285
- */
286
- requireReturnDescription: boolean;
287
- /**
288
- * @default true
289
- */
290
- requireParamType: boolean;
291
- }>,
292
- ]
293
- >;
294
235
  }
@@ -52,6 +52,7 @@ export interface ECMAScript6 extends Linter.RulesRecord {
52
52
  * Rule to require parentheses around arrow function arguments.
53
53
  *
54
54
  * @since 1.0.0-rc-1
55
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/arrow-parens) in `@stylistic/eslint-plugin-js`.
55
56
  * @see https://eslint.org/docs/rules/arrow-parens
56
57
  */
57
58
  "arrow-parens":
@@ -72,6 +73,7 @@ export interface ECMAScript6 extends Linter.RulesRecord {
72
73
  * Rule to enforce consistent spacing before and after the arrow in arrow functions.
73
74
  *
74
75
  * @since 1.0.0-rc-1
76
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/arrow-spacing) in `@stylistic/eslint-plugin-js`.
75
77
  * @see https://eslint.org/docs/rules/arrow-spacing
76
78
  */
77
79
  "arrow-spacing": Linter.RuleEntry<[]>;
@@ -91,6 +93,7 @@ export interface ECMAScript6 extends Linter.RulesRecord {
91
93
  * Rule to enforce consistent spacing around `*` operators in generator functions.
92
94
  *
93
95
  * @since 0.17.0
96
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/generator-star-spacing) in `@stylistic/eslint-plugin-js`.
94
97
  * @see https://eslint.org/docs/rules/generator-star-spacing
95
98
  */
96
99
  "generator-star-spacing": Linter.RuleEntry<
@@ -168,6 +171,7 @@ export interface ECMAScript6 extends Linter.RulesRecord {
168
171
  * Rule to disallow arrow functions where they could be confused with comparisons.
169
172
  *
170
173
  * @since 2.0.0-alpha-2
174
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/no-confusing-arrow) in `@stylistic/eslint-plugin-js`.
171
175
  * @see https://eslint.org/docs/rules/no-confusing-arrow
172
176
  */
173
177
  "no-confusing-arrow": Linter.RuleEntry<
@@ -221,15 +225,15 @@ export interface ECMAScript6 extends Linter.RulesRecord {
221
225
  >;
222
226
 
223
227
  /**
224
- * Rule to disallow `new` operators with the `Symbol` object.
225
- *
228
+ * Rule to disallow `new` operator with global non-constructor functions
229
+ *
226
230
  * @remarks
227
231
  * Recommended by ESLint, the rule was enabled in `eslint:recommended`.
228
232
  *
229
- * @since 2.0.0-beta.1
230
- * @see https://eslint.org/docs/rules/no-new-symbol
233
+ * @since 8.27.0
234
+ * @see https://eslint.org/docs/rules/no-new-native-nonconstructor
231
235
  */
232
- "no-new-symbol": Linter.RuleEntry<[]>;
236
+ "no-new-native-nonconstructor": Linter.RuleEntry<[]>;
233
237
 
234
238
  /**
235
239
  * Rule to disallow specified names in exports.
@@ -324,7 +328,16 @@ export interface ECMAScript6 extends Linter.RulesRecord {
324
328
  * @since 2.9.0
325
329
  * @see https://eslint.org/docs/rules/no-useless-computed-key
326
330
  */
327
- "no-useless-computed-key": Linter.RuleEntry<[]>;
331
+ "no-useless-computed-key": Linter.RuleEntry<
332
+ [
333
+ Partial<{
334
+ /**
335
+ * @default true
336
+ */
337
+ enforceForClassMembers: boolean;
338
+ }>,
339
+ ]
340
+ >;
328
341
 
329
342
  /**
330
343
  * Rule to disallow unnecessary constructors.
@@ -537,6 +550,7 @@ export interface ECMAScript6 extends Linter.RulesRecord {
537
550
  * Rule to enforce spacing between rest and spread operators and their expressions.
538
551
  *
539
552
  * @since 2.12.0
553
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/rest-spread-spacing) in `@stylistic/eslint-plugin-js`.
540
554
  * @see https://eslint.org/docs/rules/rest-spread-spacing
541
555
  */
542
556
  "rest-spread-spacing": Linter.RuleEntry<["never" | "always"]>;
@@ -586,6 +600,7 @@ export interface ECMAScript6 extends Linter.RulesRecord {
586
600
  * Rule to require or disallow spacing around embedded expressions of template strings.
587
601
  *
588
602
  * @since 2.0.0-rc.0
603
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/template-curly-spacing) in `@stylistic/eslint-plugin-js`.
589
604
  * @see https://eslint.org/docs/rules/template-curly-spacing
590
605
  */
591
606
  "template-curly-spacing": Linter.RuleEntry<["never" | "always"]>;
@@ -594,6 +609,7 @@ export interface ECMAScript6 extends Linter.RulesRecord {
594
609
  * Rule to require or disallow spacing around the `*` in `yield*` expressions.
595
610
  *
596
611
  * @since 2.0.0-alpha-1
612
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/yield-star-spacing) in `@stylistic/eslint-plugin-js`.
597
613
  * @see https://eslint.org/docs/rules/yield-star-spacing
598
614
  */
599
615
  "yield-star-spacing": Linter.RuleEntry<
@@ -280,6 +280,7 @@ export interface PossibleErrors extends Linter.RulesRecord {
280
280
  * Rule to disallow unnecessary parentheses.
281
281
  *
282
282
  * @since 0.1.4
283
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/no-extra-parens) in `@stylistic/eslint-plugin-js`.
283
284
  * @see https://eslint.org/docs/rules/no-extra-parens
284
285
  */
285
286
  "no-extra-parens":
@@ -319,6 +320,7 @@ export interface PossibleErrors extends Linter.RulesRecord {
319
320
  * Recommended by ESLint, the rule was enabled in `eslint:recommended`.
320
321
  *
321
322
  * @since 0.0.9
323
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/no-extra-semi) in `@stylistic/eslint-plugin-js`.
322
324
  * @see https://eslint.org/docs/rules/no-extra-semi
323
325
  */
324
326
  "no-extra-semi": Linter.RuleEntry<[]>;
@@ -32,6 +32,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
32
32
  * Rule to enforce linebreaks after opening and before closing array brackets.
33
33
  *
34
34
  * @since 4.0.0-alpha.1
35
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/array-bracket-newline) in `@stylistic/eslint-plugin-js`.
35
36
  * @see https://eslint.org/docs/rules/array-bracket-newline
36
37
  */
37
38
  "array-bracket-newline": Linter.RuleEntry<
@@ -56,6 +57,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
56
57
  * Rule to enforce consistent spacing inside array brackets.
57
58
  *
58
59
  * @since 0.24.0
60
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/array-bracket-spacing) in `@stylistic/eslint-plugin-js`.
59
61
  * @see https://eslint.org/docs/rules/array-bracket-spacing
60
62
  */
61
63
  "array-bracket-spacing":
@@ -102,6 +104,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
102
104
  * Rule to enforce line breaks after each array element.
103
105
  *
104
106
  * @since 4.0.0-rc.0
107
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/array-element-newline) in `@stylistic/eslint-plugin-js`.
105
108
  * @see https://eslint.org/docs/rules/array-element-newline
106
109
  */
107
110
  "array-element-newline": Linter.RuleEntry<
@@ -126,6 +129,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
126
129
  * Rule to disallow or enforce spaces inside of blocks after opening block and before closing block.
127
130
  *
128
131
  * @since 1.2.0
132
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/block-spacing) in `@stylistic/eslint-plugin-js`.
129
133
  * @see https://eslint.org/docs/rules/block-spacing
130
134
  */
131
135
  "block-spacing": Linter.RuleEntry<["always" | "never"]>;
@@ -134,6 +138,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
134
138
  * Rule to enforce consistent brace style for blocks.
135
139
  *
136
140
  * @since 0.0.7
141
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/brace-style) in `@stylistic/eslint-plugin-js`.
137
142
  * @see https://eslint.org/docs/rules/brace-style
138
143
  */
139
144
  "brace-style": Linter.RuleEntry<
@@ -211,6 +216,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
211
216
  * Rule to require or disallow trailing commas.
212
217
  *
213
218
  * @since 0.16.0
219
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/comma-dangle) in `@stylistic/eslint-plugin-js`.
214
220
  * @see https://eslint.org/docs/rules/comma-dangle
215
221
  */
216
222
  "comma-dangle": Linter.RuleEntry<
@@ -248,6 +254,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
248
254
  * Rule to enforce consistent spacing before and after commas.
249
255
  *
250
256
  * @since 0.9.0
257
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/comma-spacing) in `@stylistic/eslint-plugin-js`.
251
258
  * @see https://eslint.org/docs/rules/comma-spacing
252
259
  */
253
260
  "comma-spacing": Linter.RuleEntry<
@@ -269,6 +276,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
269
276
  * Rule to enforce consistent comma style.
270
277
  *
271
278
  * @since 0.9.0
279
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/comma-style) in `@stylistic/eslint-plugin-js`.
272
280
  * @see https://eslint.org/docs/rules/comma-style
273
281
  */
274
282
  "comma-style": Linter.RuleEntry<
@@ -284,6 +292,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
284
292
  * Rule to enforce consistent spacing inside computed property brackets.
285
293
  *
286
294
  * @since 0.23.0
295
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/computed-property-spacing) in `@stylistic/eslint-plugin-js`.
287
296
  * @see https://eslint.org/docs/rules/computed-property-spacing
288
297
  */
289
298
  "computed-property-spacing": Linter.RuleEntry<["never" | "always"]>;
@@ -300,6 +309,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
300
309
  * Rule to require or disallow newline at the end of files.
301
310
  *
302
311
  * @since 0.7.1
312
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/eol-last) in `@stylistic/eslint-plugin-js`.
303
313
  * @see https://eslint.org/docs/rules/eol-last
304
314
  */
305
315
  "eol-last": Linter.RuleEntry<
@@ -312,6 +322,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
312
322
  * Rule to require or disallow spacing between function identifiers and their invocations.
313
323
  *
314
324
  * @since 3.3.0
325
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/function-call-spacing) in `@stylistic/eslint-plugin-js`.
315
326
  * @see https://eslint.org/docs/rules/func-call-spacing
316
327
  */
317
328
  "func-call-spacing": Linter.RuleEntry<["never" | "always"]>;
@@ -382,6 +393,9 @@ export interface StylisticIssues extends Linter.RulesRecord {
382
393
  * @default false
383
394
  */
384
395
  allowArrowFunctions: boolean;
396
+ overrides: {
397
+ namedExports: "declaration" | "expression" | "ignore";
398
+ }
385
399
  }>,
386
400
  ]
387
401
  >;
@@ -390,6 +404,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
390
404
  * Rule to enforce consistent line breaks inside function parentheses.
391
405
  *
392
406
  * @since 4.6.0
407
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/function-paren-newline) in `@stylistic/eslint-plugin-js`.
393
408
  * @see https://eslint.org/docs/rules/function-paren-newline
394
409
  */
395
410
  "function-paren-newline": Linter.RuleEntry<
@@ -469,6 +484,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
469
484
  * Rule to enforce the location of arrow function bodies.
470
485
  *
471
486
  * @since 4.12.0
487
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/implicit-arrow-linebreak) in `@stylistic/eslint-plugin-js`.
472
488
  * @see https://eslint.org/docs/rules/implicit-arrow-linebreak
473
489
  */
474
490
  "implicit-arrow-linebreak": Linter.RuleEntry<["beside" | "below"]>;
@@ -579,6 +595,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
579
595
  * Rule to enforce the consistent use of either double or single quotes in JSX attributes.
580
596
  *
581
597
  * @since 1.4.0
598
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/jsx-quotes) in `@stylistic/eslint-plugin-js`.
582
599
  * @see https://eslint.org/docs/rules/jsx-quotes
583
600
  */
584
601
  "jsx-quotes": Linter.RuleEntry<["prefer-double" | "prefer-single"]>;
@@ -587,6 +604,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
587
604
  * Rule to enforce consistent spacing between keys and values in object literal properties.
588
605
  *
589
606
  * @since 0.9.0
607
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/key-spacing) in `@stylistic/eslint-plugin-js`.
590
608
  * @see https://eslint.org/docs/rules/key-spacing
591
609
  */
592
610
  "key-spacing": Linter.RuleEntry<
@@ -742,6 +760,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
742
760
  * Rule to enforce consistent spacing before and after keywords.
743
761
  *
744
762
  * @since 2.0.0-beta.1
763
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/keyword-spacing) in `@stylistic/eslint-plugin-js`.
745
764
  * @see https://eslint.org/docs/rules/keyword-spacing
746
765
  */
747
766
  "keyword-spacing": Linter.RuleEntry<
@@ -770,6 +789,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
770
789
  * Rule to enforce position of line comments.
771
790
  *
772
791
  * @since 3.5.0
792
+ * @deprecated since 9.3.0, please use the [corresponding rule](https://eslint.style/rules/js/line-comment-position) in `@stylistic/eslint-plugin-js`.
773
793
  * @see https://eslint.org/docs/rules/line-comment-position
774
794
  */
775
795
  "line-comment-position": Linter.RuleEntry<
@@ -792,6 +812,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
792
812
  * Rule to enforce consistent linebreak style.
793
813
  *
794
814
  * @since 0.21.0
815
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/linebreak-style) in `@stylistic/eslint-plugin-js`.
795
816
  * @see https://eslint.org/docs/rules/linebreak-style
796
817
  */
797
818
  "linebreak-style": Linter.RuleEntry<["unix" | "windows"]>;
@@ -800,6 +821,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
800
821
  * Rule to require empty lines around comments.
801
822
  *
802
823
  * @since 0.22.0
824
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/lines-around-comment) in `@stylistic/eslint-plugin-js`.
803
825
  * @see https://eslint.org/docs/rules/lines-around-comment
804
826
  */
805
827
  "lines-around-comment": Linter.RuleEntry<
@@ -866,11 +888,20 @@ export interface StylisticIssues extends Linter.RulesRecord {
866
888
  * Rule to require or disallow an empty line between class members.
867
889
  *
868
890
  * @since 4.9.0
891
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/lines-between-class-members) in `@stylistic/eslint-plugin-js`.
869
892
  * @see https://eslint.org/docs/rules/lines-between-class-members
870
893
  */
871
894
  "lines-between-class-members": Linter.RuleEntry<
872
895
  [
873
- "always" | "never",
896
+ "always" | "never" | {
897
+ enforce: Array<
898
+ {
899
+ blankLine: "always" | "never";
900
+ prev: "method" | "field" | "*";
901
+ next: "method" | "field" | "*";
902
+ }
903
+ >
904
+ },
874
905
  Partial<{
875
906
  /**
876
907
  * @default false
@@ -901,6 +932,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
901
932
  * Rule to enforce a maximum line length.
902
933
  *
903
934
  * @since 0.0.9
935
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/max-len) in `@stylistic/eslint-plugin-js`.
904
936
  * @see https://eslint.org/docs/rules/max-len
905
937
  */
906
938
  "max-len": Linter.RuleEntry<
@@ -1061,6 +1093,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1061
1093
  * Rule to enforce a maximum number of statements allowed per line.
1062
1094
  *
1063
1095
  * @since 2.5.0
1096
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/max-statements-per-line) in `@stylistic/eslint-plugin-js`.
1064
1097
  * @see https://eslint.org/docs/rules/max-statements-per-line
1065
1098
  */
1066
1099
  "max-statements-per-line": Linter.RuleEntry<
@@ -1079,6 +1112,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1079
1112
  * Rule to enforce a particular style for multiline comments.
1080
1113
  *
1081
1114
  * @since 4.10.0
1115
+ * @deprecated since 9.3.0, please use the [corresponding rule](https://eslint.style/rules/js/multiline-comment-style) in `@stylistic/eslint-plugin-js`.
1082
1116
  * @see https://eslint.org/docs/rules/multiline-comment-style
1083
1117
  */
1084
1118
  "multiline-comment-style": Linter.RuleEntry<["starred-block" | "bare-block" | "separate-lines"]>;
@@ -1087,6 +1121,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1087
1121
  * Rule to enforce newlines between operands of ternary expressions.
1088
1122
  *
1089
1123
  * @since 3.1.0
1124
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/multiline-ternary) in `@stylistic/eslint-plugin-js`.
1090
1125
  * @see https://eslint.org/docs/rules/multiline-ternary
1091
1126
  */
1092
1127
  "multiline-ternary": Linter.RuleEntry<["always" | "always-multiline" | "never"]>;
@@ -1124,6 +1159,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1124
1159
  * Rule to enforce or disallow parentheses when invoking a constructor with no arguments.
1125
1160
  *
1126
1161
  * @since 0.0.6
1162
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/new-parens) in `@stylistic/eslint-plugin-js`.
1127
1163
  * @see https://eslint.org/docs/rules/new-parens
1128
1164
  */
1129
1165
  "new-parens": Linter.RuleEntry<["always" | "never"]>;
@@ -1132,6 +1168,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1132
1168
  * Rule to require a newline after each call in a method chain.
1133
1169
  *
1134
1170
  * @since 2.0.0-rc.0
1171
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/newline-per-chained-call) in `@stylistic/eslint-plugin-js`.
1135
1172
  * @see https://eslint.org/docs/rules/newline-per-chained-call
1136
1173
  */
1137
1174
  "newline-per-chained-call": Linter.RuleEntry<
@@ -1199,6 +1236,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1199
1236
  * Rule to disallow mixed binary operators.
1200
1237
  *
1201
1238
  * @since 2.12.0
1239
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/no-mixed-operators) in `@stylistic/eslint-plugin-js`.
1202
1240
  * @see https://eslint.org/docs/rules/no-mixed-operators
1203
1241
  */
1204
1242
  "no-mixed-operators": Linter.RuleEntry<
@@ -1230,6 +1268,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1230
1268
  * Recommended by ESLint, the rule was enabled in `eslint:recommended`.
1231
1269
  *
1232
1270
  * @since 0.7.1
1271
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/no-mixed-spaces-and-tabs) in `@stylistic/eslint-plugin-js`.
1233
1272
  * @see https://eslint.org/docs/rules/no-mixed-spaces-and-tabs
1234
1273
  */
1235
1274
  "no-mixed-spaces-and-tabs": Linter.RuleEntry<["smart-tabs"]>;
@@ -1246,6 +1285,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1246
1285
  * Rule to disallow multiple empty lines.
1247
1286
  *
1248
1287
  * @since 0.9.0
1288
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/no-multiple-empty-lines) in `@stylistic/eslint-plugin-js`.
1249
1289
  * @see https://eslint.org/docs/rules/no-multiple-empty-lines
1250
1290
  */
1251
1291
  "no-multiple-empty-lines": Linter.RuleEntry<
@@ -1279,12 +1319,12 @@ export interface StylisticIssues extends Linter.RulesRecord {
1279
1319
  "no-nested-ternary": Linter.RuleEntry<[]>;
1280
1320
 
1281
1321
  /**
1282
- * Rule to disallow `Object` constructors.
1322
+ * Rule to disallow calls to the `Object` constructor without an argument
1283
1323
  *
1284
- * @since 0.0.9
1285
- * @see https://eslint.org/docs/rules/no-new-object
1324
+ * @since 8.50.0
1325
+ * @see https://eslint.org/docs/rules/no-object-constructor
1286
1326
  */
1287
- "no-new-object": Linter.RuleEntry<[]>;
1327
+ "no-object-constructor": Linter.RuleEntry<[]>;
1288
1328
 
1289
1329
  /**
1290
1330
  * Rule to disallow the unary operators `++` and `--`.
@@ -1325,6 +1365,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1325
1365
  * Rule to disallow all tabs.
1326
1366
  *
1327
1367
  * @since 3.2.0
1368
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/no-tabs) in `@stylistic/eslint-plugin-js`.
1328
1369
  * @see https://eslint.org/docs/rules/no-tabs
1329
1370
  */
1330
1371
  "no-tabs": Linter.RuleEntry<
@@ -1350,6 +1391,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1350
1391
  * Rule to disallow trailing whitespace at the end of lines.
1351
1392
  *
1352
1393
  * @since 0.7.1
1394
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/no-trailing-spaces) in `@stylistic/eslint-plugin-js`.
1353
1395
  * @see https://eslint.org/docs/rules/no-trailing-spaces
1354
1396
  */
1355
1397
  "no-trailing-spaces": Linter.RuleEntry<
@@ -1439,6 +1481,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1439
1481
  * Rule to disallow whitespace before properties.
1440
1482
  *
1441
1483
  * @since 2.0.0-beta.1
1484
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/no-whitespace-before-property) in `@stylistic/eslint-plugin-js`.
1442
1485
  * @see https://eslint.org/docs/rules/no-whitespace-before-property
1443
1486
  */
1444
1487
  "no-whitespace-before-property": Linter.RuleEntry<[]>;
@@ -1447,6 +1490,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1447
1490
  * Rule to enforce the location of single-line statements.
1448
1491
  *
1449
1492
  * @since 3.17.0
1493
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/nonblock-statement-body-position) in `@stylistic/eslint-plugin-js`.
1450
1494
  * @see https://eslint.org/docs/rules/nonblock-statement-body-position
1451
1495
  */
1452
1496
  "nonblock-statement-body-position": Linter.RuleEntry<
@@ -1462,6 +1506,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1462
1506
  * Rule to enforce consistent line breaks inside braces.
1463
1507
  *
1464
1508
  * @since 2.12.0
1509
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/object-curly-newline) in `@stylistic/eslint-plugin-js`.
1465
1510
  * @see https://eslint.org/docs/rules/object-curly-newline
1466
1511
  */
1467
1512
  "object-curly-newline": Linter.RuleEntry<
@@ -1504,6 +1549,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1504
1549
  * Rule to enforce consistent spacing inside braces.
1505
1550
  *
1506
1551
  * @since 0.22.0
1552
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/object-curly-spacing) in `@stylistic/eslint-plugin-js`.
1507
1553
  * @see https://eslint.org/docs/rules/object-curly-spacing
1508
1554
  */
1509
1555
  "object-curly-spacing":
@@ -1542,6 +1588,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1542
1588
  * Rule to enforce placing object properties on separate lines.
1543
1589
  *
1544
1590
  * @since 2.10.0
1591
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/object-property-newline) in `@stylistic/eslint-plugin-js`.
1545
1592
  * @see https://eslint.org/docs/rules/object-property-newline
1546
1593
  */
1547
1594
  "object-property-newline": Linter.RuleEntry<
@@ -1582,6 +1629,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1582
1629
  * Rule to require or disallow newlines around variable declarations.
1583
1630
  *
1584
1631
  * @since 2.0.0-beta.3
1632
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/one-var-declaration-per-line) in `@stylistic/eslint-plugin-js`.
1585
1633
  * @see https://eslint.org/docs/rules/one-var-declaration-per-line
1586
1634
  */
1587
1635
  "one-var-declaration-per-line": Linter.RuleEntry<["initializations" | "always"]>;
@@ -1598,6 +1646,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1598
1646
  * Rule to enforce consistent linebreak style for operators.
1599
1647
  *
1600
1648
  * @since 0.19.0
1649
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/operator-linebreak) in `@stylistic/eslint-plugin-js`.
1601
1650
  * @see https://eslint.org/docs/rules/operator-linebreak
1602
1651
  */
1603
1652
  "operator-linebreak": Linter.RuleEntry<
@@ -1613,6 +1662,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1613
1662
  * Rule to require or disallow padding within blocks.
1614
1663
  *
1615
1664
  * @since 0.9.0
1665
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/padded-blocks) in `@stylistic/eslint-plugin-js`.
1616
1666
  * @see https://eslint.org/docs/rules/padded-blocks
1617
1667
  */
1618
1668
  "padded-blocks": Linter.RuleEntry<
@@ -1631,6 +1681,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1631
1681
  * Rule to require or disallow padding lines between statements.
1632
1682
  *
1633
1683
  * @since 4.0.0-beta.0
1684
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/padding-line-between-statements) in `@stylistic/eslint-plugin-js`.
1634
1685
  * @see https://eslint.org/docs/rules/padding-line-between-statements
1635
1686
  */
1636
1687
  "padding-line-between-statements": Linter.RuleEntry<
@@ -1655,6 +1706,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1655
1706
  * Rule to require quotes around object literal property names.
1656
1707
  *
1657
1708
  * @since 0.0.6
1709
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/quote-props) in `@stylistic/eslint-plugin-js`.
1658
1710
  * @see https://eslint.org/docs/rules/quote-props
1659
1711
  */
1660
1712
  "quote-props":
@@ -1746,6 +1798,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1746
1798
  * Rule to enforce consistent spacing before and after semicolons.
1747
1799
  *
1748
1800
  * @since 0.16.0
1801
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/semi-spacing) in `@stylistic/eslint-plugin-js`.
1749
1802
  * @see https://eslint.org/docs/rules/semi-spacing
1750
1803
  */
1751
1804
  "semi-spacing": Linter.RuleEntry<
@@ -1767,6 +1820,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1767
1820
  * Rule to enforce location of semicolons.
1768
1821
  *
1769
1822
  * @since 4.0.0-beta.0
1823
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/semi-style) in `@stylistic/eslint-plugin-js`.
1770
1824
  * @see https://eslint.org/docs/rules/semi-style
1771
1825
  */
1772
1826
  "semi-style": Linter.RuleEntry<["last" | "first"]>;
@@ -1822,6 +1876,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1822
1876
  * Rule to enforce consistent spacing before blocks.
1823
1877
  *
1824
1878
  * @since 0.9.0
1879
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/space-before-blocks) in `@stylistic/eslint-plugin-js`.
1825
1880
  * @see https://eslint.org/docs/rules/space-before-blocks
1826
1881
  */
1827
1882
  "space-before-blocks": Linter.RuleEntry<
@@ -1832,6 +1887,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1832
1887
  * Rule to enforce consistent spacing before `function` definition opening parenthesis.
1833
1888
  *
1834
1889
  * @since 0.18.0
1890
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/space-before-function-paren) in `@stylistic/eslint-plugin-js`.
1835
1891
  * @see https://eslint.org/docs/rules/space-before-function-paren
1836
1892
  */
1837
1893
  "space-before-function-paren": Linter.RuleEntry<
@@ -1842,6 +1898,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1842
1898
  * Rule to enforce consistent spacing inside parentheses.
1843
1899
  *
1844
1900
  * @since 0.8.0
1901
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/space-in-parens) in `@stylistic/eslint-plugin-js`.
1845
1902
  * @see https://eslint.org/docs/rules/space-in-parens
1846
1903
  */
1847
1904
  "space-in-parens": Linter.RuleEntry<
@@ -1857,6 +1914,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1857
1914
  * Rule to require spacing around infix operators.
1858
1915
  *
1859
1916
  * @since 0.2.0
1917
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/space-infix-ops) in `@stylistic/eslint-plugin-js`.
1860
1918
  * @see https://eslint.org/docs/rules/space-infix-ops
1861
1919
  */
1862
1920
  "space-infix-ops": Linter.RuleEntry<
@@ -1874,6 +1932,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1874
1932
  * Rule to enforce consistent spacing before or after unary operators.
1875
1933
  *
1876
1934
  * @since 0.10.0
1935
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/space-unary-ops) in `@stylistic/eslint-plugin-js`.
1877
1936
  * @see https://eslint.org/docs/rules/space-unary-ops
1878
1937
  */
1879
1938
  "space-unary-ops": Linter.RuleEntry<
@@ -1896,6 +1955,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1896
1955
  * Rule to enforce consistent spacing after the `//` or `/*` in a comment.
1897
1956
  *
1898
1957
  * @since 0.23.0
1958
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/spaced-comment) in `@stylistic/eslint-plugin-js`.
1899
1959
  * @see https://eslint.org/docs/rules/spaced-comment
1900
1960
  */
1901
1961
  "spaced-comment": Linter.RuleEntry<
@@ -1924,6 +1984,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1924
1984
  * Rule to enforce spacing around colons of switch statements.
1925
1985
  *
1926
1986
  * @since 4.0.0-beta.0
1987
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/switch-colon-spacing) in `@stylistic/eslint-plugin-js`.
1927
1988
  * @see https://eslint.org/docs/rules/switch-colon-spacing
1928
1989
  */
1929
1990
  "switch-colon-spacing": Linter.RuleEntry<
@@ -1945,6 +2006,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1945
2006
  * Rule to require or disallow spacing between template tags and their literals.
1946
2007
  *
1947
2008
  * @since 3.15.0
2009
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/template-tag-spacing) in `@stylistic/eslint-plugin-js`.
1948
2010
  * @see https://eslint.org/docs/rules/template-tag-spacing
1949
2011
  */
1950
2012
  "template-tag-spacing": Linter.RuleEntry<["never" | "always"]>;
@@ -1961,6 +2023,7 @@ export interface StylisticIssues extends Linter.RulesRecord {
1961
2023
  * Rule to require parenthesis around regex literals.
1962
2024
  *
1963
2025
  * @since 0.1.0
2026
+ * @deprecated since 8.53.0, please use the [corresponding rule](https://eslint.style/rules/js/wrap-regex) in `@stylistic/eslint-plugin-js`.
1964
2027
  * @see https://eslint.org/docs/rules/wrap-regex
1965
2028
  */
1966
2029
  "wrap-regex": Linter.RuleEntry<[]>;
@@ -185,11 +185,19 @@ export interface Variables extends Linter.RulesRecord {
185
185
  ignoreRestSiblings: boolean;
186
186
  argsIgnorePattern: string;
187
187
  /**
188
- * @default 'none'
188
+ * @default 'all'
189
189
  */
190
190
  caughtErrors: "none" | "all";
191
191
  caughtErrorsIgnorePattern: string;
192
192
  destructuredArrayIgnorePattern: string;
193
+ /**
194
+ * @default false
195
+ */
196
+ ignoreClassWithStaticInitBlock: boolean;
197
+ /**
198
+ * @default false
199
+ */
200
+ reportUsedIgnorePattern: boolean;
193
201
  }>,
194
202
  ]
195
203
  >;
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "eslint",
3
- "version": "9.12.0",
3
+ "version": "9.13.0",
4
4
  "author": "Nicholas C. Zakas <nicholas+npm@nczconsulting.com>",
5
5
  "description": "An AST-based pattern checker for JavaScript.",
6
+ "type": "commonjs",
6
7
  "bin": {
7
8
  "eslint": "./bin/eslint.js"
8
9
  },
@@ -99,9 +100,9 @@
99
100
  "@eslint-community/eslint-utils": "^4.2.0",
100
101
  "@eslint-community/regexpp": "^4.11.0",
101
102
  "@eslint/config-array": "^0.18.0",
102
- "@eslint/core": "^0.6.0",
103
+ "@eslint/core": "^0.7.0",
103
104
  "@eslint/eslintrc": "^3.1.0",
104
- "@eslint/js": "9.12.0",
105
+ "@eslint/js": "9.13.0",
105
106
  "@eslint/plugin-kit": "^0.2.0",
106
107
  "@humanfs/node": "^0.16.5",
107
108
  "@humanwhocodes/module-importer": "^1.0.1",
@@ -167,7 +168,7 @@
167
168
  "got": "^11.8.3",
168
169
  "gray-matter": "^4.0.3",
169
170
  "jiti": "^2.1.0",
170
- "knip": "^5.21.0",
171
+ "knip": "^5.32.0",
171
172
  "lint-staged": "^11.0.0",
172
173
  "load-perf": "^0.2.0",
173
174
  "markdown-it": "^12.2.0",