eslint 9.35.0 → 9.37.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 (88) hide show
  1. package/README.md +7 -2
  2. package/lib/cli-engine/lint-result-cache.js +47 -29
  3. package/lib/eslint/eslint-helpers.js +6 -3
  4. package/lib/eslint/eslint.js +151 -37
  5. package/lib/eslint/worker.js +1 -3
  6. package/lib/linter/esquery.js +1 -1
  7. package/lib/rules/array-bracket-newline.js +1 -1
  8. package/lib/rules/array-bracket-spacing.js +1 -1
  9. package/lib/rules/array-element-newline.js +1 -1
  10. package/lib/rules/arrow-parens.js +1 -1
  11. package/lib/rules/arrow-spacing.js +1 -1
  12. package/lib/rules/block-spacing.js +1 -1
  13. package/lib/rules/brace-style.js +1 -1
  14. package/lib/rules/comma-dangle.js +1 -1
  15. package/lib/rules/comma-spacing.js +1 -1
  16. package/lib/rules/comma-style.js +1 -1
  17. package/lib/rules/computed-property-spacing.js +1 -1
  18. package/lib/rules/dot-location.js +1 -1
  19. package/lib/rules/eol-last.js +1 -1
  20. package/lib/rules/func-call-spacing.js +2 -2
  21. package/lib/rules/function-call-argument-newline.js +1 -1
  22. package/lib/rules/function-paren-newline.js +1 -1
  23. package/lib/rules/generator-star-spacing.js +1 -1
  24. package/lib/rules/implicit-arrow-linebreak.js +1 -1
  25. package/lib/rules/indent-legacy.js +1 -0
  26. package/lib/rules/indent.js +1 -1
  27. package/lib/rules/jsx-quotes.js +1 -1
  28. package/lib/rules/key-spacing.js +1 -1
  29. package/lib/rules/keyword-spacing.js +1 -1
  30. package/lib/rules/line-comment-position.js +1 -1
  31. package/lib/rules/linebreak-style.js +1 -1
  32. package/lib/rules/lines-around-comment.js +1 -1
  33. package/lib/rules/lines-around-directive.js +1 -1
  34. package/lib/rules/lines-between-class-members.js +1 -1
  35. package/lib/rules/max-len.js +1 -1
  36. package/lib/rules/max-statements-per-line.js +1 -1
  37. package/lib/rules/multiline-comment-style.js +1 -1
  38. package/lib/rules/multiline-ternary.js +1 -1
  39. package/lib/rules/new-parens.js +1 -1
  40. package/lib/rules/newline-after-var.js +1 -1
  41. package/lib/rules/newline-before-return.js +1 -1
  42. package/lib/rules/newline-per-chained-call.js +1 -1
  43. package/lib/rules/no-confusing-arrow.js +1 -1
  44. package/lib/rules/no-extra-parens.js +1 -1
  45. package/lib/rules/no-extra-semi.js +1 -1
  46. package/lib/rules/no-floating-decimal.js +1 -1
  47. package/lib/rules/no-loss-of-precision.js +5 -8
  48. package/lib/rules/no-misleading-character-class.js +7 -2
  49. package/lib/rules/no-mixed-operators.js +1 -1
  50. package/lib/rules/no-mixed-spaces-and-tabs.js +1 -1
  51. package/lib/rules/no-multi-spaces.js +1 -1
  52. package/lib/rules/no-multiple-empty-lines.js +1 -1
  53. package/lib/rules/no-restricted-imports.js +171 -4
  54. package/lib/rules/no-spaced-func.js +1 -1
  55. package/lib/rules/no-tabs.js +1 -1
  56. package/lib/rules/no-trailing-spaces.js +1 -1
  57. package/lib/rules/no-whitespace-before-property.js +1 -1
  58. package/lib/rules/nonblock-statement-body-position.js +1 -1
  59. package/lib/rules/object-curly-newline.js +1 -1
  60. package/lib/rules/object-curly-spacing.js +1 -1
  61. package/lib/rules/object-property-newline.js +1 -1
  62. package/lib/rules/one-var-declaration-per-line.js +1 -1
  63. package/lib/rules/operator-linebreak.js +1 -1
  64. package/lib/rules/padded-blocks.js +1 -1
  65. package/lib/rules/padding-line-between-statements.js +1 -1
  66. package/lib/rules/preserve-caught-error.js +70 -44
  67. package/lib/rules/quote-props.js +1 -1
  68. package/lib/rules/quotes.js +1 -1
  69. package/lib/rules/require-unicode-regexp.js +3 -1
  70. package/lib/rules/rest-spread-spacing.js +1 -1
  71. package/lib/rules/semi-spacing.js +1 -1
  72. package/lib/rules/semi-style.js +1 -1
  73. package/lib/rules/semi.js +1 -1
  74. package/lib/rules/space-before-blocks.js +1 -1
  75. package/lib/rules/space-before-function-paren.js +1 -1
  76. package/lib/rules/space-in-parens.js +1 -1
  77. package/lib/rules/space-infix-ops.js +1 -1
  78. package/lib/rules/space-unary-ops.js +1 -1
  79. package/lib/rules/spaced-comment.js +1 -1
  80. package/lib/rules/switch-colon-spacing.js +1 -1
  81. package/lib/rules/template-curly-spacing.js +1 -1
  82. package/lib/rules/template-tag-spacing.js +1 -1
  83. package/lib/rules/wrap-iife.js +1 -1
  84. package/lib/rules/wrap-regex.js +1 -1
  85. package/lib/rules/yield-star-spacing.js +1 -1
  86. package/lib/types/index.d.ts +10 -5
  87. package/lib/types/rules.d.ts +207 -66
  88. package/package.json +6 -6
@@ -38,6 +38,7 @@ import { Linter } from "./index";
38
38
  interface NoRestrictedImportPathCommonOptions {
39
39
  name: string;
40
40
  message?: string;
41
+ allowTypeImports?: boolean;
41
42
  }
42
43
 
43
44
  type EitherImportNamesOrAllowImportName =
@@ -50,6 +51,7 @@ type ValidNoRestrictedImportPathOptions = NoRestrictedImportPathCommonOptions &
50
51
  interface NoRestrictedImportPatternCommonOptions {
51
52
  message?: string;
52
53
  caseSensitive?: boolean;
54
+ allowTypeImports?: boolean;
53
55
  }
54
56
 
55
57
  // Base type for group or regex constraint, ensuring mutual exclusivity
@@ -84,6 +86,18 @@ type ValidNoRestrictedImportPatternOptions =
84
86
  EitherGroupOrRegEx &
85
87
  EitherNameSpecifiers;
86
88
 
89
+ interface CapitalizedCommentsCommonOptions {
90
+ ignorePattern?: string;
91
+ /**
92
+ * @default false
93
+ */
94
+ ignoreInlineComments?: boolean;
95
+ /**
96
+ * @default false
97
+ */
98
+ ignoreConsecutiveComments?: boolean;
99
+ }
100
+
87
101
  //-----------------------------------------------------------------------------
88
102
  // Public types
89
103
  //-----------------------------------------------------------------------------
@@ -396,17 +410,13 @@ export interface ESLintRules extends Linter.RulesRecord {
396
410
  "capitalized-comments": Linter.RuleEntry<
397
411
  [
398
412
  "always" | "never",
399
- Partial<{
400
- ignorePattern: string;
401
- /**
402
- * @default false
403
- */
404
- ignoreInlineComments: boolean;
405
- /**
406
- * @default false
407
- */
408
- ignoreConsecutiveComments: boolean;
409
- }>,
413
+ (
414
+ | CapitalizedCommentsCommonOptions
415
+ | Partial<{
416
+ line: CapitalizedCommentsCommonOptions;
417
+ block: CapitalizedCommentsCommonOptions;
418
+ }>
419
+ ),
410
420
  ]
411
421
  >;
412
422
 
@@ -1014,6 +1024,7 @@ export interface ESLintRules extends Linter.RulesRecord {
1014
1024
  */
1015
1025
  properties: "always" | "never";
1016
1026
  exceptions: string[];
1027
+ exceptionPatterns: string[];
1017
1028
  }>,
1018
1029
  ]
1019
1030
  >;
@@ -1032,6 +1043,10 @@ export interface ESLintRules extends Linter.RulesRecord {
1032
1043
  * @default false
1033
1044
  */
1034
1045
  properties: boolean;
1046
+ /**
1047
+ * @default false
1048
+ */
1049
+ classFields: boolean;
1035
1050
  /**
1036
1051
  * @default false
1037
1052
  */
@@ -1655,7 +1670,21 @@ export interface ESLintRules extends Linter.RulesRecord {
1655
1670
  * @since 5.0.0-alpha.3
1656
1671
  * @see https://eslint.org/docs/latest/rules/max-classes-per-file
1657
1672
  */
1658
- "max-classes-per-file": Linter.RuleEntry<[number]>;
1673
+ "max-classes-per-file": Linter.RuleEntry<
1674
+ [
1675
+ | number
1676
+ | Partial<{
1677
+ /**
1678
+ * @default false
1679
+ */
1680
+ ignoreExpressions: boolean;
1681
+ /**
1682
+ * @default 1
1683
+ */
1684
+ max: number;
1685
+ }>,
1686
+ ]
1687
+ >;
1659
1688
 
1660
1689
  /**
1661
1690
  * Rule to enforce a maximum depth that blocks can be nested.
@@ -1665,12 +1694,18 @@ export interface ESLintRules extends Linter.RulesRecord {
1665
1694
  */
1666
1695
  "max-depth": Linter.RuleEntry<
1667
1696
  [
1668
- Partial<{
1669
- /**
1670
- * @default 4
1671
- */
1672
- max: number;
1673
- }>,
1697
+ | number
1698
+ | Partial<{
1699
+ /**
1700
+ * @deprecated
1701
+ * @default 4
1702
+ */
1703
+ maximum: number;
1704
+ /**
1705
+ * @default 4
1706
+ */
1707
+ max: number;
1708
+ }>,
1674
1709
  ]
1675
1710
  >;
1676
1711
 
@@ -1758,24 +1793,25 @@ export interface ESLintRules extends Linter.RulesRecord {
1758
1793
  */
1759
1794
  "max-lines-per-function": Linter.RuleEntry<
1760
1795
  [
1761
- Partial<{
1762
- /**
1763
- * @default 50
1764
- */
1765
- max: number;
1766
- /**
1767
- * @default false
1768
- */
1769
- skipBlankLines: boolean;
1770
- /**
1771
- * @default false
1772
- */
1773
- skipComments: boolean;
1774
- /**
1775
- * @default false
1776
- */
1777
- IIFEs: boolean;
1778
- }>,
1796
+ | number
1797
+ | Partial<{
1798
+ /**
1799
+ * @default 50
1800
+ */
1801
+ max: number;
1802
+ /**
1803
+ * @default false
1804
+ */
1805
+ skipBlankLines: boolean;
1806
+ /**
1807
+ * @default false
1808
+ */
1809
+ skipComments: boolean;
1810
+ /**
1811
+ * @default false
1812
+ */
1813
+ IIFEs: boolean;
1814
+ }>,
1779
1815
  ]
1780
1816
  >;
1781
1817
 
@@ -1787,13 +1823,18 @@ export interface ESLintRules extends Linter.RulesRecord {
1787
1823
  */
1788
1824
  "max-nested-callbacks": Linter.RuleEntry<
1789
1825
  [
1826
+ | number
1790
1827
  | Partial<{
1828
+ /**
1829
+ * @deprecated
1830
+ * @default 10
1831
+ */
1832
+ maximum: number;
1791
1833
  /**
1792
1834
  * @default 10
1793
1835
  */
1794
1836
  max: number;
1795
- }>
1796
- | number,
1837
+ }>,
1797
1838
  ]
1798
1839
  >;
1799
1840
 
@@ -1805,7 +1846,13 @@ export interface ESLintRules extends Linter.RulesRecord {
1805
1846
  */
1806
1847
  "max-params": Linter.RuleEntry<
1807
1848
  [
1849
+ | number
1808
1850
  | Partial<{
1851
+ /**
1852
+ * @deprecated
1853
+ * @default 3
1854
+ */
1855
+ maximum: number;
1809
1856
  /**
1810
1857
  * @default 3
1811
1858
  */
@@ -1814,8 +1861,7 @@ export interface ESLintRules extends Linter.RulesRecord {
1814
1861
  * @default false
1815
1862
  */
1816
1863
  countVoidThis: boolean;
1817
- }>
1818
- | number,
1864
+ }>,
1819
1865
  ]
1820
1866
  >;
1821
1867
 
@@ -1827,17 +1873,26 @@ export interface ESLintRules extends Linter.RulesRecord {
1827
1873
  */
1828
1874
  "max-statements": Linter.RuleEntry<
1829
1875
  [
1830
- | Partial<{
1831
- /**
1832
- * @default 10
1833
- */
1834
- max: number;
1835
- /**
1836
- * @default false
1837
- */
1838
- ignoreTopLevelFunctions: boolean;
1839
- }>
1840
- | number,
1876
+ (
1877
+ | number
1878
+ | Partial<{
1879
+ /**
1880
+ * @deprecated
1881
+ * @default 10
1882
+ */
1883
+ maximum: number;
1884
+ /**
1885
+ * @default 10
1886
+ */
1887
+ max: number;
1888
+ }>
1889
+ ),
1890
+ Partial<{
1891
+ /**
1892
+ * @default false
1893
+ */
1894
+ ignoreTopLevelFunctions: boolean;
1895
+ }>,
1841
1896
  ]
1842
1897
  >;
1843
1898
 
@@ -2014,7 +2069,24 @@ export interface ESLintRules extends Linter.RulesRecord {
2014
2069
  "no-bitwise": Linter.RuleEntry<
2015
2070
  [
2016
2071
  Partial<{
2017
- allow: string[];
2072
+ /**
2073
+ * @default []
2074
+ */
2075
+ allow: Array<
2076
+ | "^"
2077
+ | "|"
2078
+ | "&"
2079
+ | "<<"
2080
+ | ">>"
2081
+ | ">>>"
2082
+ | "^="
2083
+ | "|="
2084
+ | "&="
2085
+ | "<<="
2086
+ | ">>="
2087
+ | ">>>="
2088
+ | "~"
2089
+ >;
2018
2090
  /**
2019
2091
  * @default false
2020
2092
  */
@@ -2166,9 +2238,9 @@ export interface ESLintRules extends Linter.RulesRecord {
2166
2238
  [
2167
2239
  {
2168
2240
  /**
2169
- * @default true
2241
+ * @default "allExceptWhileTrue"
2170
2242
  */
2171
- checkLoops: boolean;
2243
+ checkLoops: "all" | "allExceptWhileTrue" | "none" | boolean;
2172
2244
  },
2173
2245
  ]
2174
2246
  >;
@@ -2395,7 +2467,16 @@ export interface ESLintRules extends Linter.RulesRecord {
2395
2467
  * @since 1.7.0
2396
2468
  * @see https://eslint.org/docs/latest/rules/no-empty-pattern
2397
2469
  */
2398
- "no-empty-pattern": Linter.RuleEntry<[]>;
2470
+ "no-empty-pattern": Linter.RuleEntry<
2471
+ [
2472
+ Partial<{
2473
+ /**
2474
+ * @default false
2475
+ */
2476
+ allowObjectPatternsAsParameters: boolean;
2477
+ }>,
2478
+ ]
2479
+ >;
2399
2480
 
2400
2481
  /**
2401
2482
  * Rule to disallow empty static blocks.
@@ -2668,7 +2749,16 @@ export interface ESLintRules extends Linter.RulesRecord {
2668
2749
  * @since 2.0.0-alpha-1
2669
2750
  * @see https://eslint.org/docs/latest/rules/no-implicit-globals
2670
2751
  */
2671
- "no-implicit-globals": Linter.RuleEntry<[]>;
2752
+ "no-implicit-globals": Linter.RuleEntry<
2753
+ [
2754
+ Partial<{
2755
+ /**
2756
+ * @default false
2757
+ */
2758
+ lexicalBindings: boolean;
2759
+ }>,
2760
+ ]
2761
+ >;
2672
2762
 
2673
2763
  /**
2674
2764
  * Rule to disallow the use of `eval()`-like methods.
@@ -2695,7 +2785,13 @@ export interface ESLintRules extends Linter.RulesRecord {
2695
2785
  * @since 0.10.0
2696
2786
  * @see https://eslint.org/docs/latest/rules/no-inline-comments
2697
2787
  */
2698
- "no-inline-comments": Linter.RuleEntry<[]>;
2788
+ "no-inline-comments": Linter.RuleEntry<
2789
+ [
2790
+ Partial<{
2791
+ ignorePattern: string;
2792
+ }>,
2793
+ ]
2794
+ >;
2699
2795
 
2700
2796
  /**
2701
2797
  * Rule to disallow variable or `function` declarations in nested blocks.
@@ -2703,7 +2799,17 @@ export interface ESLintRules extends Linter.RulesRecord {
2703
2799
  * @since 0.6.0
2704
2800
  * @see https://eslint.org/docs/latest/rules/no-inner-declarations
2705
2801
  */
2706
- "no-inner-declarations": Linter.RuleEntry<["functions" | "both"]>;
2802
+ "no-inner-declarations": Linter.RuleEntry<
2803
+ [
2804
+ "functions" | "both",
2805
+ Partial<{
2806
+ /**
2807
+ * @default "allow"
2808
+ */
2809
+ blockScopedFunctions: "allow" | "disallow";
2810
+ }>,
2811
+ ]
2812
+ >;
2707
2813
 
2708
2814
  /**
2709
2815
  * Rule to disallow invalid regular expression strings in `RegExp` constructors.
@@ -2767,6 +2873,10 @@ export interface ESLintRules extends Linter.RulesRecord {
2767
2873
  * @default false
2768
2874
  */
2769
2875
  skipTemplates: boolean;
2876
+ /**
2877
+ * @default false
2878
+ */
2879
+ skipJSXText: boolean;
2770
2880
  }>,
2771
2881
  ]
2772
2882
  >;
@@ -2855,11 +2965,19 @@ export interface ESLintRules extends Linter.RulesRecord {
2855
2965
  /**
2856
2966
  * @default []
2857
2967
  */
2858
- ignore: number[];
2968
+ ignore: Array<number | string>;
2859
2969
  /**
2860
2970
  * @default false
2861
2971
  */
2862
2972
  ignoreArrayIndexes: boolean;
2973
+ /**
2974
+ * @default false
2975
+ */
2976
+ ignoreDefaultValues: boolean;
2977
+ /**
2978
+ * @default false
2979
+ */
2980
+ ignoreClassFieldInitialValues: boolean;
2863
2981
  /**
2864
2982
  * @default false
2865
2983
  */
@@ -2981,7 +3099,16 @@ export interface ESLintRules extends Linter.RulesRecord {
2981
3099
  * @since 3.14.0
2982
3100
  * @see https://eslint.org/docs/latest/rules/no-multi-assign
2983
3101
  */
2984
- "no-multi-assign": Linter.RuleEntry<[]>;
3102
+ "no-multi-assign": Linter.RuleEntry<
3103
+ [
3104
+ Partial<{
3105
+ /**
3106
+ * @default false
3107
+ */
3108
+ ignoreNonDeclaration: boolean;
3109
+ }>,
3110
+ ]
3111
+ >;
2985
3112
 
2986
3113
  /**
2987
3114
  * Rule to disallow multiple spaces.
@@ -3555,7 +3682,16 @@ export interface ESLintRules extends Linter.RulesRecord {
3555
3682
  * @since 2.0.0-rc.0
3556
3683
  * @see https://eslint.org/docs/latest/rules/no-self-assign
3557
3684
  */
3558
- "no-self-assign": Linter.RuleEntry<[]>;
3685
+ "no-self-assign": Linter.RuleEntry<
3686
+ [
3687
+ Partial<{
3688
+ /**
3689
+ * @default true
3690
+ */
3691
+ props: boolean;
3692
+ }>,
3693
+ ]
3694
+ >;
3559
3695
 
3560
3696
  /**
3561
3697
  * Rule to disallow comparisons where both sides are exactly the same.
@@ -3929,12 +4065,13 @@ export interface ESLintRules extends Linter.RulesRecord {
3929
4065
  /**
3930
4066
  * @default []
3931
4067
  */
3932
- ignore:
4068
+ ignore: Array<
3933
4069
  | "WhileStatement"
3934
4070
  | "DoWhileStatement"
3935
4071
  | "ForStatement"
3936
4072
  | "ForInStatement"
3937
- | "ForOfStatement";
4073
+ | "ForOfStatement"
4074
+ >;
3938
4075
  }>,
3939
4076
  ]
3940
4077
  >;
@@ -4293,7 +4430,7 @@ export interface ESLintRules extends Linter.RulesRecord {
4293
4430
  */
4294
4431
  "no-warning-comments": Linter.RuleEntry<
4295
4432
  [
4296
- {
4433
+ Partial<{
4297
4434
  /**
4298
4435
  * @default ["todo", "fixme", "xxx"]
4299
4436
  */
@@ -4302,7 +4439,8 @@ export interface ESLintRules extends Linter.RulesRecord {
4302
4439
  * @default 'start'
4303
4440
  */
4304
4441
  location: "start" | "anywhere";
4305
- },
4442
+ decoration: string[];
4443
+ }>,
4306
4444
  ]
4307
4445
  >;
4308
4446
 
@@ -4812,6 +4950,9 @@ export interface ESLintRules extends Linter.RulesRecord {
4812
4950
  "preserve-caught-error": Linter.RuleEntry<
4813
4951
  [
4814
4952
  Partial<{
4953
+ /**
4954
+ * @default false
4955
+ */
4815
4956
  requireCatchParameter: boolean;
4816
4957
  }>,
4817
4958
  ]
@@ -5339,7 +5480,7 @@ export interface ESLintRules extends Linter.RulesRecord {
5339
5480
  */
5340
5481
  enforceForSwitchCase: boolean;
5341
5482
  /**
5342
- * @default true
5483
+ * @default false
5343
5484
  */
5344
5485
  enforceForIndexOf: boolean;
5345
5486
  }>,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint",
3
- "version": "9.35.0",
3
+ "version": "9.37.0",
4
4
  "author": "Nicholas C. Zakas <nicholas+npm@nczconsulting.com>",
5
5
  "description": "An AST-based pattern checker for JavaScript.",
6
6
  "type": "commonjs",
@@ -107,11 +107,11 @@
107
107
  "@eslint-community/eslint-utils": "^4.8.0",
108
108
  "@eslint-community/regexpp": "^4.12.1",
109
109
  "@eslint/config-array": "^0.21.0",
110
- "@eslint/config-helpers": "^0.3.1",
111
- "@eslint/core": "^0.15.2",
110
+ "@eslint/config-helpers": "^0.4.0",
111
+ "@eslint/core": "^0.16.0",
112
112
  "@eslint/eslintrc": "^3.3.1",
113
- "@eslint/js": "9.35.0",
114
- "@eslint/plugin-kit": "^0.3.5",
113
+ "@eslint/js": "9.37.0",
114
+ "@eslint/plugin-kit": "^0.4.0",
115
115
  "@humanfs/node": "^0.16.6",
116
116
  "@humanwhocodes/module-importer": "^1.0.1",
117
117
  "@humanwhocodes/retry": "^0.4.2",
@@ -173,7 +173,7 @@
173
173
  "globals": "^16.2.0",
174
174
  "got": "^11.8.3",
175
175
  "gray-matter": "^4.0.3",
176
- "jiti": "^2.5.1",
176
+ "jiti": "^2.6.1",
177
177
  "jiti-v2.0": "npm:jiti@2.0.x",
178
178
  "jiti-v2.1": "npm:jiti@2.1.x",
179
179
  "knip": "^5.60.2",