@biomejs/biome 2.0.0-beta.1 → 2.0.0-beta.3

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.
@@ -134,13 +134,6 @@
134
134
  { "type": "null" }
135
135
  ]
136
136
  },
137
- "noBlankTarget": {
138
- "description": "Disallow target=\"_blank\" attribute without rel=\"noreferrer\"",
139
- "anyOf": [
140
- { "$ref": "#/definitions/AllowDomainConfiguration" },
141
- { "type": "null" }
142
- ]
143
- },
144
137
  "noDistractingElements": {
145
138
  "description": "Enforces that no distracting elements are used.",
146
139
  "anyOf": [
@@ -204,6 +197,13 @@
204
197
  { "type": "null" }
205
198
  ]
206
199
  },
200
+ "noStaticElementInteractions": {
201
+ "description": "Enforce that static, visible elements (such as \\<div>) that have click handlers use the valid role attribute.",
202
+ "anyOf": [
203
+ { "$ref": "#/definitions/RuleConfiguration" },
204
+ { "type": "null" }
205
+ ]
206
+ },
207
207
  "noSvgWithoutTitle": {
208
208
  "description": "Enforces the usage of the title element for the svg element.",
209
209
  "anyOf": [
@@ -243,6 +243,13 @@
243
243
  { "type": "null" }
244
244
  ]
245
245
  },
246
+ "useAriaPropsSupportedByRole": {
247
+ "description": "Enforce that ARIA properties are valid for the roles that are supported by the element.",
248
+ "anyOf": [
249
+ { "$ref": "#/definitions/RuleConfiguration" },
250
+ { "type": "null" }
251
+ ]
252
+ },
246
253
  "useButtonType": {
247
254
  "description": "Enforces the usage of the attribute type for the element button",
248
255
  "anyOf": [
@@ -341,6 +348,13 @@
341
348
  { "type": "null" }
342
349
  ]
343
350
  },
351
+ "useValidAutocomplete": {
352
+ "description": "Use valid values for the autocomplete attribute on input elements.",
353
+ "anyOf": [
354
+ { "$ref": "#/definitions/UseValidAutocompleteConfiguration" },
355
+ { "type": "null" }
356
+ ]
357
+ },
344
358
  "useValidLang": {
345
359
  "description": "Ensure that the attribute passed to the lang attribute is a correct ISO language and/or country.",
346
360
  "anyOf": [
@@ -368,23 +382,6 @@
368
382
  },
369
383
  "additionalProperties": false
370
384
  },
371
- "AllowDomainConfiguration": {
372
- "anyOf": [
373
- { "$ref": "#/definitions/RulePlainConfiguration" },
374
- { "$ref": "#/definitions/RuleWithAllowDomainOptions" }
375
- ]
376
- },
377
- "AllowDomainOptions": {
378
- "type": "object",
379
- "properties": {
380
- "allowDomains": {
381
- "description": "List of domains to allow `target=\"_blank\"` without `rel=\"noreferrer\"`",
382
- "type": "array",
383
- "items": { "type": "string" }
384
- }
385
- },
386
- "additionalProperties": false
387
- },
388
385
  "ArrowParentheses": { "type": "string", "enum": ["always", "asNeeded"] },
389
386
  "AssistConfiguration": {
390
387
  "type": "object",
@@ -394,13 +391,13 @@
394
391
  "anyOf": [{ "$ref": "#/definitions/Actions" }, { "type": "null" }]
395
392
  },
396
393
  "enabled": {
397
- "description": "Whether Biome should enable assist via LSP.",
394
+ "description": "Whether Biome should enable assist via LSP and CLI.",
398
395
  "anyOf": [{ "$ref": "#/definitions/Bool" }, { "type": "null" }]
399
396
  },
400
397
  "includes": {
401
398
  "description": "A list of glob patterns. Biome will include files/folders that will match these patterns.",
402
399
  "type": ["array", "null"],
403
- "items": { "$ref": "#/definitions/Glob" }
400
+ "items": { "$ref": "#/definitions/NormalizedGlob" }
404
401
  }
405
402
  },
406
403
  "additionalProperties": false
@@ -500,6 +497,13 @@
500
497
  { "type": "null" }
501
498
  ]
502
499
  },
500
+ "noUselessEscapeInRegex": {
501
+ "description": "Disallow unnecessary escape sequence in regular expression literals.",
502
+ "anyOf": [
503
+ { "$ref": "#/definitions/RuleFixConfiguration" },
504
+ { "type": "null" }
505
+ ]
506
+ },
503
507
  "noUselessFragments": {
504
508
  "description": "Disallow unnecessary fragments",
505
509
  "anyOf": [
@@ -535,6 +539,13 @@
535
539
  { "type": "null" }
536
540
  ]
537
541
  },
542
+ "noUselessStringRaw": {
543
+ "description": "Disallow unnecessary String.raw function in template string literals without any escape sequence.",
544
+ "anyOf": [
545
+ { "$ref": "#/definitions/RuleConfiguration" },
546
+ { "type": "null" }
547
+ ]
548
+ },
538
549
  "noUselessSwitchCase": {
539
550
  "description": "Disallow useless case in switch statements.",
540
551
  "anyOf": [
@@ -631,7 +642,7 @@
631
642
  ]
632
643
  },
633
644
  "useSimpleNumberKeys": {
634
- "description": "Disallow number literal object member names which are not base10 or uses underscore as separator",
645
+ "description": "Disallow number literal object member names which are not base 10 or use underscore as separator.",
635
646
  "anyOf": [
636
647
  { "$ref": "#/definitions/RuleFixConfiguration" },
637
648
  { "type": "null" }
@@ -840,13 +851,6 @@
840
851
  { "type": "null" }
841
852
  ]
842
853
  },
843
- "noInvalidNewBuiltin": {
844
- "description": "Disallow new operators with global non-constructor functions.",
845
- "anyOf": [
846
- { "$ref": "#/definitions/RuleFixConfiguration" },
847
- { "type": "null" }
848
- ]
849
- },
850
854
  "noInvalidPositionAtImportRule": {
851
855
  "description": "Disallow the use of @import at-rules in invalid positions.",
852
856
  "anyOf": [
@@ -861,10 +865,10 @@
861
865
  { "type": "null" }
862
866
  ]
863
867
  },
864
- "noNewSymbol": {
865
- "description": "Disallow new operators with the Symbol object.",
868
+ "noMissingVarFunction": {
869
+ "description": "Disallow missing var function for css variables.",
866
870
  "anyOf": [
867
- { "$ref": "#/definitions/RuleFixConfiguration" },
871
+ { "$ref": "#/definitions/RuleConfiguration" },
868
872
  { "type": "null" }
869
873
  ]
870
874
  },
@@ -890,7 +894,7 @@
890
894
  ]
891
895
  },
892
896
  "noPrivateImports": {
893
- "description": "Restricts imports of private exports.",
897
+ "description": "Restrict imports of private exports.",
894
898
  "anyOf": [
895
899
  { "$ref": "#/definitions/NoPrivateImportsConfiguration" },
896
900
  { "type": "null" }
@@ -966,6 +970,27 @@
966
970
  { "type": "null" }
967
971
  ]
968
972
  },
973
+ "noUnknownPseudoClass": {
974
+ "description": "Disallow unknown pseudo-class selectors.",
975
+ "anyOf": [
976
+ { "$ref": "#/definitions/RuleConfiguration" },
977
+ { "type": "null" }
978
+ ]
979
+ },
980
+ "noUnknownPseudoElement": {
981
+ "description": "Disallow unknown pseudo-element selectors.",
982
+ "anyOf": [
983
+ { "$ref": "#/definitions/RuleConfiguration" },
984
+ { "type": "null" }
985
+ ]
986
+ },
987
+ "noUnknownTypeSelector": {
988
+ "description": "Disallow unknown type selectors.",
989
+ "anyOf": [
990
+ { "$ref": "#/definitions/RuleConfiguration" },
991
+ { "type": "null" }
992
+ ]
993
+ },
969
994
  "noUnknownUnit": {
970
995
  "description": "Disallow unknown CSS units.",
971
996
  "anyOf": [
@@ -1106,7 +1131,7 @@
1106
1131
  "useJsxKeyInIterable": {
1107
1132
  "description": "Disallow missing key props in iterators/collection literals.",
1108
1133
  "anyOf": [
1109
- { "$ref": "#/definitions/RuleConfiguration" },
1134
+ { "$ref": "#/definitions/UseJsxKeyInIterableConfiguration" },
1110
1135
  { "type": "null" }
1111
1136
  ]
1112
1137
  },
@@ -1242,6 +1267,11 @@
1242
1267
  },
1243
1268
  "additionalProperties": false
1244
1269
  },
1270
+ "CustomRestrictedElements": {
1271
+ "type": "object",
1272
+ "minProperties": 1,
1273
+ "additionalProperties": { "type": "string" }
1274
+ },
1245
1275
  "CustomRestrictedImport": {
1246
1276
  "anyOf": [
1247
1277
  {
@@ -1403,7 +1433,7 @@
1403
1433
  "includes": {
1404
1434
  "description": "A list of glob patterns. Biome will handle only those files/folders that will match these patterns.",
1405
1435
  "type": ["array", "null"],
1406
- "items": { "$ref": "#/definitions/Glob" }
1436
+ "items": { "$ref": "#/definitions/NormalizedGlob" }
1407
1437
  },
1408
1438
  "maxSize": {
1409
1439
  "description": "The maximum allowed size for source code files in bytes. Files above this limit will be ignored for performance reasons. Defaults to 1 MiB",
@@ -1481,7 +1511,7 @@
1481
1511
  "includes": {
1482
1512
  "description": "A list of glob patterns. The formatter will include files/folders that will match these patterns.",
1483
1513
  "type": ["array", "null"],
1484
- "items": { "$ref": "#/definitions/Glob" }
1514
+ "items": { "$ref": "#/definitions/NormalizedGlob" }
1485
1515
  },
1486
1516
  "indentStyle": {
1487
1517
  "description": "The indent style.",
@@ -1677,6 +1707,12 @@
1677
1707
  },
1678
1708
  "additionalProperties": false
1679
1709
  },
1710
+ "GroupMatcher": {
1711
+ "anyOf": [
1712
+ { "$ref": "#/definitions/ImportMatcher" },
1713
+ { "$ref": "#/definitions/SourceMatcher" }
1714
+ ]
1715
+ },
1680
1716
  "GroupPlainConfiguration": {
1681
1717
  "oneOf": [
1682
1718
  {
@@ -1805,6 +1841,13 @@
1805
1841
  "description": "What's the max width of a line applied to HTML (and its super languages) files. Defaults to 80.",
1806
1842
  "anyOf": [{ "$ref": "#/definitions/LineWidth" }, { "type": "null" }]
1807
1843
  },
1844
+ "selfCloseVoidElements": {
1845
+ "description": "Whether void elements should be self-closed. Defaults to never.",
1846
+ "anyOf": [
1847
+ { "$ref": "#/definitions/SelfCloseVoidElements" },
1848
+ { "type": "null" }
1849
+ ]
1850
+ },
1808
1851
  "whitespaceSensitivity": {
1809
1852
  "description": "Whether to account for whitespace sensitivity when formatting HTML (and its super languages). Defaults to \"css\".",
1810
1853
  "anyOf": [
@@ -1821,22 +1864,44 @@
1821
1864
  },
1822
1865
  "ImportGroup": {
1823
1866
  "anyOf": [
1824
- { "$ref": "#/definitions/PredefinedImportGroup" },
1825
- { "$ref": "#/definitions/ImportSourceGlob" },
1826
- {
1827
- "type": "array",
1828
- "items": { "$ref": "#/definitions/ImportSourceGlob" }
1829
- }
1867
+ { "type": "null" },
1868
+ { "$ref": "#/definitions/GroupMatcher" },
1869
+ { "type": "array", "items": { "$ref": "#/definitions/GroupMatcher" } }
1830
1870
  ]
1831
1871
  },
1832
1872
  "ImportGroups": {
1833
1873
  "type": "array",
1834
1874
  "items": { "$ref": "#/definitions/ImportGroup" }
1835
1875
  },
1876
+ "ImportMatcher": {
1877
+ "type": "object",
1878
+ "properties": {
1879
+ "source": {
1880
+ "anyOf": [
1881
+ { "$ref": "#/definitions/SourcesMatcher" },
1882
+ { "type": "null" }
1883
+ ]
1884
+ },
1885
+ "type": { "type": ["boolean", "null"] }
1886
+ }
1887
+ },
1836
1888
  "ImportSourceGlob": {
1837
1889
  "description": "Glob to match against import sources.",
1838
1890
  "allOf": [{ "$ref": "#/definitions/Glob" }]
1839
1891
  },
1892
+ "ImportTypeConfiguration": {
1893
+ "anyOf": [
1894
+ { "$ref": "#/definitions/RulePlainConfiguration" },
1895
+ { "$ref": "#/definitions/RuleWithImportTypeOptions" }
1896
+ ]
1897
+ },
1898
+ "ImportTypeOptions": {
1899
+ "description": "Rule's options.",
1900
+ "type": "object",
1901
+ "required": ["style"],
1902
+ "properties": { "style": { "$ref": "#/definitions/Style2" } },
1903
+ "additionalProperties": false
1904
+ },
1840
1905
  "IndentScriptAndStyle": {
1841
1906
  "description": "Whether to indent the content of `<script>` and `<style>` tags for HTML-ish templating languages (Vue, Svelte, etc.).\n\nWhen true, the content of `<script>` and `<style>` tags will be indented one level.",
1842
1907
  "type": "boolean"
@@ -2292,7 +2357,7 @@
2292
2357
  "includes": {
2293
2358
  "description": "A list of glob patterns. The analyzer will handle only those files/folders that will match these patterns.",
2294
2359
  "type": ["array", "null"],
2295
- "items": { "$ref": "#/definitions/Glob" }
2360
+ "items": { "$ref": "#/definitions/NormalizedGlob" }
2296
2361
  },
2297
2362
  "rules": {
2298
2363
  "description": "List of rules",
@@ -2333,6 +2398,25 @@
2333
2398
  },
2334
2399
  "additionalProperties": false
2335
2400
  },
2401
+ "NegatablePredefinedSourceMatcher": {
2402
+ "type": "string",
2403
+ "enum": [
2404
+ ":ALIAS:",
2405
+ ":BUN:",
2406
+ ":NODE:",
2407
+ ":PACKAGE:",
2408
+ ":PACKAGE_WITH_PROTOCOL:",
2409
+ ":PATH:",
2410
+ ":URL:",
2411
+ "!:ALIAS:",
2412
+ "!:BUN:",
2413
+ "!:NODE:",
2414
+ "!:PACKAGE:",
2415
+ "!:PACKAGE_WITH_PROTOCOL:",
2416
+ "!:PATH:",
2417
+ "!:URL:"
2418
+ ]
2419
+ },
2336
2420
  "NoBitwiseOperatorsConfiguration": {
2337
2421
  "anyOf": [
2338
2422
  { "$ref": "#/definitions/RulePlainConfiguration" },
@@ -2351,6 +2435,28 @@
2351
2435
  },
2352
2436
  "additionalProperties": false
2353
2437
  },
2438
+ "NoBlankTargetConfiguration": {
2439
+ "anyOf": [
2440
+ { "$ref": "#/definitions/RulePlainConfiguration" },
2441
+ { "$ref": "#/definitions/RuleWithNoBlankTargetOptions" }
2442
+ ]
2443
+ },
2444
+ "NoBlankTargetOptions": {
2445
+ "type": "object",
2446
+ "properties": {
2447
+ "allowDomains": {
2448
+ "description": "List of domains where `target=\"_blank\"` is allowed without `rel=\"noopener\"`.",
2449
+ "type": "array",
2450
+ "items": { "type": "string" }
2451
+ },
2452
+ "allowNoReferrer": {
2453
+ "description": "Whether `noreferrer` is allowed in addition to `noopener`.",
2454
+ "default": true,
2455
+ "type": "boolean"
2456
+ }
2457
+ },
2458
+ "additionalProperties": false
2459
+ },
2354
2460
  "NoConfusingLabelsConfiguration": {
2355
2461
  "anyOf": [
2356
2462
  { "$ref": "#/definitions/RulePlainConfiguration" },
@@ -2469,6 +2575,22 @@
2469
2575
  },
2470
2576
  "additionalProperties": false
2471
2577
  },
2578
+ "NoRestrictedElementsConfiguration": {
2579
+ "anyOf": [
2580
+ { "$ref": "#/definitions/RulePlainConfiguration" },
2581
+ { "$ref": "#/definitions/RuleWithNoRestrictedElementsOptions" }
2582
+ ]
2583
+ },
2584
+ "NoRestrictedElementsOptions": {
2585
+ "type": "object",
2586
+ "properties": {
2587
+ "elements": {
2588
+ "description": "Elements to restrict. Each key is the element name, and the value is the message to show when the element is used.",
2589
+ "allOf": [{ "$ref": "#/definitions/CustomRestrictedElements" }]
2590
+ }
2591
+ },
2592
+ "additionalProperties": false
2593
+ },
2472
2594
  "NoRestrictedTypesConfiguration": {
2473
2595
  "anyOf": [
2474
2596
  { "$ref": "#/definitions/RulePlainConfiguration" },
@@ -2551,6 +2673,10 @@
2551
2673
  },
2552
2674
  "additionalProperties": false
2553
2675
  },
2676
+ "NormalizedGlob": {
2677
+ "description": "Normalized Biome glob pattern that strips `./` from the pattern.",
2678
+ "allOf": [{ "$ref": "#/definitions/Glob" }]
2679
+ },
2554
2680
  "Nursery": {
2555
2681
  "description": "A list of rules that belong to this group",
2556
2682
  "type": "object",
@@ -2569,13 +2695,6 @@
2569
2695
  { "type": "null" }
2570
2696
  ]
2571
2697
  },
2572
- "noCommonJs": {
2573
- "description": "Disallow use of CommonJs module system in favor of ESM style imports.",
2574
- "anyOf": [
2575
- { "$ref": "#/definitions/RuleConfiguration" },
2576
- { "type": "null" }
2577
- ]
2578
- },
2579
2698
  "noConstantBinaryExpression": {
2580
2699
  "description": "Disallow expressions where the operation doesn't affect the value",
2581
2700
  "anyOf": [
@@ -2583,13 +2702,6 @@
2583
2702
  { "type": "null" }
2584
2703
  ]
2585
2704
  },
2586
- "noDescendingSpecificity": {
2587
- "description": "Disallow a lower specificity selector from coming after a higher specificity selector.",
2588
- "anyOf": [
2589
- { "$ref": "#/definitions/RuleConfiguration" },
2590
- { "type": "null" }
2591
- ]
2592
- },
2593
2705
  "noDestructuredProps": {
2594
2706
  "description": "Disallow destructuring props inside JSX components in Solid projects.",
2595
2707
  "anyOf": [
@@ -2597,354 +2709,140 @@
2597
2709
  { "type": "null" }
2598
2710
  ]
2599
2711
  },
2600
- "noDocumentCookie": {
2601
- "description": "Disallow direct assignments to document.cookie.",
2712
+ "noFloatingPromises": {
2713
+ "description": "Require Promise-like statements to be handled appropriately.",
2602
2714
  "anyOf": [
2603
- { "$ref": "#/definitions/RuleConfiguration" },
2715
+ { "$ref": "#/definitions/RuleFixConfiguration" },
2604
2716
  { "type": "null" }
2605
2717
  ]
2606
2718
  },
2607
- "noDocumentImportInPage": {
2608
- "description": "Prevents importing next/document outside of pages/_document.jsx in Next.js projects.",
2719
+ "noGlobalDirnameFilename": {
2720
+ "description": "Disallow the use of __dirname and __filename in the global scope.",
2609
2721
  "anyOf": [
2610
- { "$ref": "#/definitions/RuleConfiguration" },
2722
+ { "$ref": "#/definitions/RuleFixConfiguration" },
2611
2723
  { "type": "null" }
2612
2724
  ]
2613
2725
  },
2614
- "noDuplicateCustomProperties": {
2615
- "description": "Disallow duplicate custom properties within declaration blocks.",
2726
+ "noImportCycles": {
2727
+ "description": "Prevent import cycles.",
2616
2728
  "anyOf": [
2617
2729
  { "$ref": "#/definitions/RuleConfiguration" },
2618
2730
  { "type": "null" }
2619
2731
  ]
2620
2732
  },
2621
- "noDuplicateElseIf": {
2622
- "description": "Disallow duplicate conditions in if-else-if chains",
2733
+ "noImportantStyles": {
2734
+ "description": "Disallow the use of the !important style.",
2623
2735
  "anyOf": [
2624
- { "$ref": "#/definitions/RuleConfiguration" },
2736
+ { "$ref": "#/definitions/RuleFixConfiguration" },
2625
2737
  { "type": "null" }
2626
2738
  ]
2627
2739
  },
2628
- "noDuplicateFields": {
2629
- "description": "No duplicated fields in GraphQL operations.",
2740
+ "noNoninteractiveElementInteractions": {
2741
+ "description": "Disallow use event handlers on non-interactive elements.",
2630
2742
  "anyOf": [
2631
2743
  { "$ref": "#/definitions/RuleConfiguration" },
2632
2744
  { "type": "null" }
2633
2745
  ]
2634
2746
  },
2635
- "noDuplicateProperties": {
2636
- "description": "Disallow duplicate properties within declaration blocks.",
2747
+ "noProcessGlobal": {
2748
+ "description": "Disallow the use of process global.",
2637
2749
  "anyOf": [
2638
- { "$ref": "#/definitions/RuleConfiguration" },
2750
+ { "$ref": "#/definitions/RuleFixConfiguration" },
2639
2751
  { "type": "null" }
2640
2752
  ]
2641
2753
  },
2642
- "noDynamicNamespaceImportAccess": {
2643
- "description": "Disallow accessing namespace imports dynamically.",
2754
+ "noRestrictedElements": {
2755
+ "description": "Disallow the use of configured elements.",
2644
2756
  "anyOf": [
2645
- { "$ref": "#/definitions/RuleConfiguration" },
2757
+ { "$ref": "#/definitions/NoRestrictedElementsConfiguration" },
2646
2758
  { "type": "null" }
2647
2759
  ]
2648
2760
  },
2649
- "noEnum": {
2650
- "description": "Disallow TypeScript enum.",
2761
+ "noSecrets": {
2762
+ "description": "Disallow usage of sensitive data such as API keys and tokens.",
2651
2763
  "anyOf": [
2652
- { "$ref": "#/definitions/RuleConfiguration" },
2764
+ { "$ref": "#/definitions/NoSecretsConfiguration" },
2653
2765
  { "type": "null" }
2654
2766
  ]
2655
2767
  },
2656
- "noExportedImports": {
2657
- "description": "Disallow exporting an imported variable.",
2768
+ "noShadow": {
2769
+ "description": "Disallow variable declarations from shadowing variables declared in the outer scope.",
2658
2770
  "anyOf": [
2659
2771
  { "$ref": "#/definitions/RuleConfiguration" },
2660
2772
  { "type": "null" }
2661
2773
  ]
2662
2774
  },
2663
- "noFloatingPromises": {
2664
- "description": "Require Promise-like statements to be handled appropriately.",
2775
+ "noTsIgnore": {
2776
+ "description": "Prevents the use of the TypeScript directive @ts-ignore.",
2665
2777
  "anyOf": [
2666
2778
  { "$ref": "#/definitions/RuleFixConfiguration" },
2667
2779
  { "type": "null" }
2668
2780
  ]
2669
2781
  },
2670
- "noGlobalDirnameFilename": {
2671
- "description": "Disallow the use of __dirname and __filename in the global scope.",
2782
+ "noUnknownAtRule": {
2783
+ "description": "Disallow unknown at-rules.",
2672
2784
  "anyOf": [
2673
- { "$ref": "#/definitions/RuleFixConfiguration" },
2785
+ { "$ref": "#/definitions/RuleConfiguration" },
2674
2786
  { "type": "null" }
2675
2787
  ]
2676
2788
  },
2677
- "noHeadElement": {
2678
- "description": "Prevent usage of \\<head> element in a Next.js project.",
2789
+ "noUnresolvedImports": {
2790
+ "description": "Warn when importing non-existing exports.",
2679
2791
  "anyOf": [
2680
2792
  { "$ref": "#/definitions/RuleConfiguration" },
2681
2793
  { "type": "null" }
2682
2794
  ]
2683
2795
  },
2684
- "noHeadImportInDocument": {
2685
- "description": "Prevent using the next/head module in pages/_document.js on Next.js projects.",
2796
+ "noUnwantedPolyfillio": {
2797
+ "description": "Prevent duplicate polyfills from Polyfill.io.",
2686
2798
  "anyOf": [
2687
2799
  { "$ref": "#/definitions/RuleConfiguration" },
2688
2800
  { "type": "null" }
2689
2801
  ]
2690
2802
  },
2691
- "noImgElement": {
2692
- "description": "Prevent usage of \\<img> element in a Next.js project.",
2803
+ "noUselessBackrefInRegex": {
2804
+ "description": "Disallow useless backreferences in regular expression literals that always match an empty string.",
2693
2805
  "anyOf": [
2694
2806
  { "$ref": "#/definitions/RuleConfiguration" },
2695
2807
  { "type": "null" }
2696
2808
  ]
2697
2809
  },
2698
- "noImportCycles": {
2699
- "description": "Prevent import cycles.",
2810
+ "noUselessEscapeInString": {
2811
+ "description": "Disallow unnecessary escapes in string literals.",
2700
2812
  "anyOf": [
2701
- { "$ref": "#/definitions/RuleConfiguration" },
2813
+ { "$ref": "#/definitions/RuleFixConfiguration" },
2702
2814
  { "type": "null" }
2703
2815
  ]
2704
2816
  },
2705
- "noIrregularWhitespace": {
2706
- "description": "Disallows the use of irregular whitespace characters.",
2817
+ "noUselessUndefined": {
2818
+ "description": "Disallow the use of useless undefined.",
2707
2819
  "anyOf": [
2708
- { "$ref": "#/definitions/RuleConfiguration" },
2820
+ { "$ref": "#/definitions/RuleFixConfiguration" },
2709
2821
  { "type": "null" }
2710
2822
  ]
2711
2823
  },
2712
- "noMissingVarFunction": {
2713
- "description": "Disallow missing var function for css variables.",
2824
+ "recommended": {
2825
+ "description": "It enables the recommended rules for this group",
2826
+ "type": ["boolean", "null"]
2827
+ },
2828
+ "useConsistentObjectDefinition": {
2829
+ "description": "Require the consistent declaration of object literals. Defaults to explicit definitions.",
2714
2830
  "anyOf": [
2715
- { "$ref": "#/definitions/RuleConfiguration" },
2831
+ {
2832
+ "$ref": "#/definitions/UseConsistentObjectDefinitionConfiguration"
2833
+ },
2716
2834
  { "type": "null" }
2717
2835
  ]
2718
2836
  },
2719
- "noNestedTernary": {
2720
- "description": "Disallow nested ternary expressions.",
2837
+ "useExhaustiveSwitchCases": {
2838
+ "description": "Require switch-case statements to be exhaustive.",
2721
2839
  "anyOf": [
2722
- { "$ref": "#/definitions/RuleConfiguration" },
2840
+ { "$ref": "#/definitions/RuleFixConfiguration" },
2723
2841
  { "type": "null" }
2724
2842
  ]
2725
2843
  },
2726
- "noNoninteractiveElementInteractions": {
2727
- "description": "Disallow use event handlers on non-interactive elements.",
2728
- "anyOf": [
2729
- { "$ref": "#/definitions/RuleConfiguration" },
2730
- { "type": "null" }
2731
- ]
2732
- },
2733
- "noOctalEscape": {
2734
- "description": "Disallow octal escape sequences in string literals",
2735
- "anyOf": [
2736
- { "$ref": "#/definitions/RuleFixConfiguration" },
2737
- { "type": "null" }
2738
- ]
2739
- },
2740
- "noProcessEnv": {
2741
- "description": "Disallow the use of process.env.",
2742
- "anyOf": [
2743
- { "$ref": "#/definitions/RuleConfiguration" },
2744
- { "type": "null" }
2745
- ]
2746
- },
2747
- "noProcessGlobal": {
2748
- "description": "Disallow the use of process global.",
2749
- "anyOf": [
2750
- { "$ref": "#/definitions/RuleFixConfiguration" },
2751
- { "type": "null" }
2752
- ]
2753
- },
2754
- "noRestrictedImports": {
2755
- "description": "Disallow specified modules when loaded by import or require.",
2756
- "anyOf": [
2757
- { "$ref": "#/definitions/RestrictedImportsConfiguration" },
2758
- { "type": "null" }
2759
- ]
2760
- },
2761
- "noRestrictedTypes": {
2762
- "description": "Disallow user defined types.",
2763
- "anyOf": [
2764
- { "$ref": "#/definitions/NoRestrictedTypesConfiguration" },
2765
- { "type": "null" }
2766
- ]
2767
- },
2768
- "noSecrets": {
2769
- "description": "Disallow usage of sensitive data such as API keys and tokens.",
2770
- "anyOf": [
2771
- { "$ref": "#/definitions/NoSecretsConfiguration" },
2772
- { "type": "null" }
2773
- ]
2774
- },
2775
- "noStaticElementInteractions": {
2776
- "description": "Enforce that static, visible elements (such as \\<div>) that have click handlers use the valid role attribute.",
2777
- "anyOf": [
2778
- { "$ref": "#/definitions/RuleConfiguration" },
2779
- { "type": "null" }
2780
- ]
2781
- },
2782
- "noSubstr": {
2783
- "description": "Enforce the use of String.slice() over String.substr() and String.substring().",
2784
- "anyOf": [
2785
- { "$ref": "#/definitions/RuleFixConfiguration" },
2786
- { "type": "null" }
2787
- ]
2788
- },
2789
- "noTemplateCurlyInString": {
2790
- "description": "Disallow template literal placeholder syntax in regular strings.",
2791
- "anyOf": [
2792
- { "$ref": "#/definitions/RuleConfiguration" },
2793
- { "type": "null" }
2794
- ]
2795
- },
2796
- "noTsIgnore": {
2797
- "description": "Prevents the use of the TypeScript directive @ts-ignore.",
2798
- "anyOf": [
2799
- { "$ref": "#/definitions/RuleFixConfiguration" },
2800
- { "type": "null" }
2801
- ]
2802
- },
2803
- "noUnknownAtRule": {
2804
- "description": "Disallow unknown at-rules.",
2805
- "anyOf": [
2806
- { "$ref": "#/definitions/RuleConfiguration" },
2807
- { "type": "null" }
2808
- ]
2809
- },
2810
- "noUnknownPseudoClass": {
2811
- "description": "Disallow unknown pseudo-class selectors.",
2812
- "anyOf": [
2813
- { "$ref": "#/definitions/RuleConfiguration" },
2814
- { "type": "null" }
2815
- ]
2816
- },
2817
- "noUnknownPseudoElement": {
2818
- "description": "Disallow unknown pseudo-element selectors.",
2819
- "anyOf": [
2820
- { "$ref": "#/definitions/RuleConfiguration" },
2821
- { "type": "null" }
2822
- ]
2823
- },
2824
- "noUnknownTypeSelector": {
2825
- "description": "Disallow unknown type selectors.",
2826
- "anyOf": [
2827
- { "$ref": "#/definitions/RuleConfiguration" },
2828
- { "type": "null" }
2829
- ]
2830
- },
2831
- "noUnwantedPolyfillio": {
2832
- "description": "Prevent duplicate polyfills from Polyfill.io.",
2833
- "anyOf": [
2834
- { "$ref": "#/definitions/RuleConfiguration" },
2835
- { "type": "null" }
2836
- ]
2837
- },
2838
- "noUselessEscapeInRegex": {
2839
- "description": "Disallow unnecessary escape sequence in regular expression literals.",
2840
- "anyOf": [
2841
- { "$ref": "#/definitions/RuleFixConfiguration" },
2842
- { "type": "null" }
2843
- ]
2844
- },
2845
- "noUselessEscapeInString": {
2846
- "description": "Disallow unnecessary escapes in string literals.",
2847
- "anyOf": [
2848
- { "$ref": "#/definitions/RuleFixConfiguration" },
2849
- { "type": "null" }
2850
- ]
2851
- },
2852
- "noUselessStringRaw": {
2853
- "description": "Disallow unnecessary String.raw function in template string literals without any escape sequence.",
2854
- "anyOf": [
2855
- { "$ref": "#/definitions/RuleConfiguration" },
2856
- { "type": "null" }
2857
- ]
2858
- },
2859
- "noUselessUndefined": {
2860
- "description": "Disallow the use of useless undefined.",
2861
- "anyOf": [
2862
- { "$ref": "#/definitions/RuleFixConfiguration" },
2863
- { "type": "null" }
2864
- ]
2865
- },
2866
- "noValueAtRule": {
2867
- "description": "Disallow use of @value rule in css modules.",
2868
- "anyOf": [
2869
- { "$ref": "#/definitions/RuleConfiguration" },
2870
- { "type": "null" }
2871
- ]
2872
- },
2873
- "recommended": {
2874
- "description": "It enables the recommended rules for this group",
2875
- "type": ["boolean", "null"]
2876
- },
2877
- "useAdjacentOverloadSignatures": {
2878
- "description": "Disallow the use of overload signatures that are not next to each other.",
2879
- "anyOf": [
2880
- { "$ref": "#/definitions/RuleConfiguration" },
2881
- { "type": "null" }
2882
- ]
2883
- },
2884
- "useAriaPropsSupportedByRole": {
2885
- "description": "Enforce that ARIA properties are valid for the roles that are supported by the element.",
2886
- "anyOf": [
2887
- { "$ref": "#/definitions/RuleConfiguration" },
2888
- { "type": "null" }
2889
- ]
2890
- },
2891
- "useAtIndex": {
2892
- "description": "Use at() instead of integer index access.",
2893
- "anyOf": [
2894
- { "$ref": "#/definitions/RuleFixConfiguration" },
2895
- { "type": "null" }
2896
- ]
2897
- },
2898
- "useCollapsedIf": {
2899
- "description": "Enforce using single if instead of nested if clauses.",
2900
- "anyOf": [
2901
- { "$ref": "#/definitions/RuleFixConfiguration" },
2902
- { "type": "null" }
2903
- ]
2904
- },
2905
- "useComponentExportOnlyModules": {
2906
- "description": "Enforce declaring components only within modules that export React Components exclusively.",
2907
- "anyOf": [
2908
- {
2909
- "$ref": "#/definitions/UseComponentExportOnlyModulesConfiguration"
2910
- },
2911
- { "type": "null" }
2912
- ]
2913
- },
2914
- "useConsistentCurlyBraces": {
2915
- "description": "This rule enforces consistent use of curly braces inside JSX attributes and JSX children.",
2916
- "anyOf": [
2917
- { "$ref": "#/definitions/RuleFixConfiguration" },
2918
- { "type": "null" }
2919
- ]
2920
- },
2921
- "useConsistentMemberAccessibility": {
2922
- "description": "Require consistent accessibility modifiers on class properties and methods.",
2923
- "anyOf": [
2924
- {
2925
- "$ref": "#/definitions/ConsistentMemberAccessibilityConfiguration"
2926
- },
2927
- { "type": "null" }
2928
- ]
2929
- },
2930
- "useConsistentObjectDefinition": {
2931
- "description": "Require the consistent declaration of object literals. Defaults to explicit definitions.",
2932
- "anyOf": [
2933
- {
2934
- "$ref": "#/definitions/UseConsistentObjectDefinitionConfiguration"
2935
- },
2936
- { "type": "null" }
2937
- ]
2938
- },
2939
- "useDeprecatedReason": {
2940
- "description": "Require specifying the reason argument when using @deprecated directive",
2941
- "anyOf": [
2942
- { "$ref": "#/definitions/RuleConfiguration" },
2943
- { "type": "null" }
2944
- ]
2945
- },
2946
- "useExplicitType": {
2947
- "description": "Require explicit return types on functions and class methods.",
2844
+ "useExplicitType": {
2845
+ "description": "Enforce types in functions, methods, variables, and parameters.",
2948
2846
  "anyOf": [
2949
2847
  { "$ref": "#/definitions/RuleConfiguration" },
2950
2848
  { "type": "null" }
@@ -2964,13 +2862,6 @@
2964
2862
  { "type": "null" }
2965
2863
  ]
2966
2864
  },
2967
- "useGoogleFontDisplay": {
2968
- "description": "Enforces the use of a recommended display strategy with Google Fonts.",
2969
- "anyOf": [
2970
- { "$ref": "#/definitions/RuleConfiguration" },
2971
- { "type": "null" }
2972
- ]
2973
- },
2974
2865
  "useGoogleFontPreconnect": {
2975
2866
  "description": "Ensure the preconnect attribute is used when using Google Fonts.",
2976
2867
  "anyOf": [
@@ -2978,8 +2869,8 @@
2978
2869
  { "type": "null" }
2979
2870
  ]
2980
2871
  },
2981
- "useGuardForIn": {
2982
- "description": "Require for-in loops to include an if statement.",
2872
+ "useIterableCallbackReturn": {
2873
+ "description": "Enforce consistent return values in iterable callbacks.",
2983
2874
  "anyOf": [
2984
2875
  { "$ref": "#/definitions/RuleConfiguration" },
2985
2876
  { "type": "null" }
@@ -2999,45 +2890,38 @@
2999
2890
  { "type": "null" }
3000
2891
  ]
3001
2892
  },
3002
- "useParseIntRadix": {
3003
- "description": "Enforce the consistent use of the radix argument when using parseInt().",
2893
+ "useNumericSeparators": {
2894
+ "description": "Enforce the use of numeric separators in numeric literals.",
3004
2895
  "anyOf": [
3005
2896
  { "$ref": "#/definitions/RuleFixConfiguration" },
3006
2897
  { "type": "null" }
3007
2898
  ]
3008
2899
  },
3009
- "useSortedClasses": {
3010
- "description": "Enforce the sorting of CSS utility classes.",
3011
- "anyOf": [
3012
- { "$ref": "#/definitions/UtilityClassSortingConfiguration" },
3013
- { "type": "null" }
3014
- ]
3015
- },
3016
- "useStrictMode": {
3017
- "description": "Enforce the use of the directive \"use strict\" in script files.",
2900
+ "useParseIntRadix": {
2901
+ "description": "Enforce the consistent use of the radix argument when using parseInt().",
3018
2902
  "anyOf": [
3019
2903
  { "$ref": "#/definitions/RuleFixConfiguration" },
3020
2904
  { "type": "null" }
3021
2905
  ]
3022
2906
  },
3023
- "useSymbolDescription": {
3024
- "description": "Require a description parameter for the Symbol().",
2907
+ "useSingleJsDocAsterisk": {
2908
+ "description": "Enforce JSDoc comment lines to start with a single asterisk, except for the first one.",
3025
2909
  "anyOf": [
3026
- { "$ref": "#/definitions/RuleConfiguration" },
2910
+ { "$ref": "#/definitions/RuleFixConfiguration" },
3027
2911
  { "type": "null" }
3028
2912
  ]
3029
2913
  },
3030
- "useTrimStartEnd": {
3031
- "description": "Enforce the use of String.trimStart() and String.trimEnd() over String.trimLeft() and String.trimRight().",
2914
+ "useSortedClasses": {
2915
+ "description": "Enforce the sorting of CSS utility classes.",
3032
2916
  "anyOf": [
3033
- { "$ref": "#/definitions/RuleFixConfiguration" },
2917
+ { "$ref": "#/definitions/UtilityClassSortingConfiguration" },
3034
2918
  { "type": "null" }
3035
2919
  ]
3036
2920
  },
3037
- "useValidAutocomplete": {
3038
- "description": "Use valid values for the autocomplete attribute on input elements.",
2921
+ "useSymbolDescription": {
2922
+ "description": "Require a description parameter for the Symbol().",
3039
2923
  "anyOf": [
3040
- { "$ref": "#/definitions/UseValidAutocompleteConfiguration" },
2924
+ { "$ref": "#/definitions/RuleConfiguration" },
3041
2925
  { "type": "null" }
3042
2926
  ]
3043
2927
  }
@@ -3263,6 +3147,20 @@
3263
3147
  { "type": "null" }
3264
3148
  ]
3265
3149
  },
3150
+ "noDynamicNamespaceImportAccess": {
3151
+ "description": "Disallow accessing namespace imports dynamically.",
3152
+ "anyOf": [
3153
+ { "$ref": "#/definitions/RuleConfiguration" },
3154
+ { "type": "null" }
3155
+ ]
3156
+ },
3157
+ "noImgElement": {
3158
+ "description": "Prevent usage of \\<img> element in a Next.js project.",
3159
+ "anyOf": [
3160
+ { "$ref": "#/definitions/RuleConfiguration" },
3161
+ { "type": "null" }
3162
+ ]
3163
+ },
3266
3164
  "noReExportAll": {
3267
3165
  "description": "Avoid re-export all.",
3268
3166
  "anyOf": [
@@ -3289,19 +3187,6 @@
3289
3187
  "type": "array",
3290
3188
  "items": { "$ref": "#/definitions/PluginConfiguration" }
3291
3189
  },
3292
- "PredefinedImportGroup": {
3293
- "type": "string",
3294
- "enum": [
3295
- ":BLANK_LINE:",
3296
- ":ALIAS:",
3297
- ":BUN:",
3298
- ":NODE:",
3299
- ":PACKAGE:",
3300
- ":PACKAGE_WITH_PROTOCOL:",
3301
- ":PATH:",
3302
- ":URL:"
3303
- ]
3304
- },
3305
3190
  "QuoteProperties": { "type": "string", "enum": ["asNeeded", "preserve"] },
3306
3191
  "QuoteStyle": { "type": "string", "enum": ["double", "single"] },
3307
3192
  "Regex": { "type": "string" },
@@ -3317,8 +3202,8 @@
3317
3202
  "properties": {
3318
3203
  "deniedGlobals": {
3319
3204
  "description": "A list of names that should trigger the rule",
3320
- "type": "array",
3321
- "items": { "type": "string" }
3205
+ "type": "object",
3206
+ "additionalProperties": { "type": "string" }
3322
3207
  }
3323
3208
  },
3324
3209
  "additionalProperties": false
@@ -3411,6 +3296,11 @@
3411
3296
  "description": "Next.js framework rules",
3412
3297
  "type": "string",
3413
3298
  "enum": ["next"]
3299
+ },
3300
+ {
3301
+ "description": "For rules that require querying multiple files inside a project",
3302
+ "type": "string",
3303
+ "enum": ["project"]
3414
3304
  }
3415
3305
  ]
3416
3306
  },
@@ -3469,25 +3359,6 @@
3469
3359
  }
3470
3360
  ]
3471
3361
  },
3472
- "RuleWithAllowDomainOptions": {
3473
- "type": "object",
3474
- "required": ["level"],
3475
- "properties": {
3476
- "fix": {
3477
- "description": "The kind of the code actions emitted by the rule",
3478
- "anyOf": [{ "$ref": "#/definitions/FixKind" }, { "type": "null" }]
3479
- },
3480
- "level": {
3481
- "description": "The severity of the emitted diagnostics by the rule",
3482
- "allOf": [{ "$ref": "#/definitions/RulePlainConfiguration" }]
3483
- },
3484
- "options": {
3485
- "description": "Rule's options",
3486
- "allOf": [{ "$ref": "#/definitions/AllowDomainOptions" }]
3487
- }
3488
- },
3489
- "additionalProperties": false
3490
- },
3491
3362
  "RuleWithComplexityOptions": {
3492
3363
  "type": "object",
3493
3364
  "required": ["level"],
@@ -3584,6 +3455,25 @@
3584
3455
  },
3585
3456
  "additionalProperties": false
3586
3457
  },
3458
+ "RuleWithImportTypeOptions": {
3459
+ "type": "object",
3460
+ "required": ["level"],
3461
+ "properties": {
3462
+ "fix": {
3463
+ "description": "The kind of the code actions emitted by the rule",
3464
+ "anyOf": [{ "$ref": "#/definitions/FixKind" }, { "type": "null" }]
3465
+ },
3466
+ "level": {
3467
+ "description": "The severity of the emitted diagnostics by the rule",
3468
+ "allOf": [{ "$ref": "#/definitions/RulePlainConfiguration" }]
3469
+ },
3470
+ "options": {
3471
+ "description": "Rule's options",
3472
+ "allOf": [{ "$ref": "#/definitions/ImportTypeOptions" }]
3473
+ }
3474
+ },
3475
+ "additionalProperties": false
3476
+ },
3587
3477
  "RuleWithNamingConventionOptions": {
3588
3478
  "type": "object",
3589
3479
  "required": ["level"],
@@ -3618,6 +3508,25 @@
3618
3508
  },
3619
3509
  "additionalProperties": false
3620
3510
  },
3511
+ "RuleWithNoBlankTargetOptions": {
3512
+ "type": "object",
3513
+ "required": ["level"],
3514
+ "properties": {
3515
+ "fix": {
3516
+ "description": "The kind of the code actions emitted by the rule",
3517
+ "anyOf": [{ "$ref": "#/definitions/FixKind" }, { "type": "null" }]
3518
+ },
3519
+ "level": {
3520
+ "description": "The severity of the emitted diagnostics by the rule",
3521
+ "allOf": [{ "$ref": "#/definitions/RulePlainConfiguration" }]
3522
+ },
3523
+ "options": {
3524
+ "description": "Rule's options",
3525
+ "allOf": [{ "$ref": "#/definitions/NoBlankTargetOptions" }]
3526
+ }
3527
+ },
3528
+ "additionalProperties": false
3529
+ },
3621
3530
  "RuleWithNoConfusingLabelsOptions": {
3622
3531
  "type": "object",
3623
3532
  "required": ["level"],
@@ -3727,6 +3636,21 @@
3727
3636
  },
3728
3637
  "additionalProperties": false
3729
3638
  },
3639
+ "RuleWithNoRestrictedElementsOptions": {
3640
+ "type": "object",
3641
+ "required": ["level"],
3642
+ "properties": {
3643
+ "level": {
3644
+ "description": "The severity of the emitted diagnostics by the rule",
3645
+ "allOf": [{ "$ref": "#/definitions/RulePlainConfiguration" }]
3646
+ },
3647
+ "options": {
3648
+ "description": "Rule's options",
3649
+ "allOf": [{ "$ref": "#/definitions/NoRestrictedElementsOptions" }]
3650
+ }
3651
+ },
3652
+ "additionalProperties": false
3653
+ },
3730
3654
  "RuleWithNoRestrictedTypesOptions": {
3731
3655
  "type": "object",
3732
3656
  "required": ["level"],
@@ -3861,6 +3785,10 @@
3861
3785
  "type": "object",
3862
3786
  "required": ["level"],
3863
3787
  "properties": {
3788
+ "fix": {
3789
+ "description": "The kind of the code actions emitted by the rule",
3790
+ "anyOf": [{ "$ref": "#/definitions/FixKind" }, { "type": "null" }]
3791
+ },
3864
3792
  "level": {
3865
3793
  "description": "The severity of the emitted diagnostics by the rule",
3866
3794
  "allOf": [{ "$ref": "#/definitions/RulePlainConfiguration" }]
@@ -3914,6 +3842,21 @@
3914
3842
  },
3915
3843
  "additionalProperties": false
3916
3844
  },
3845
+ "RuleWithUseJsxKeyInIterableOptions": {
3846
+ "type": "object",
3847
+ "required": ["level"],
3848
+ "properties": {
3849
+ "level": {
3850
+ "description": "The severity of the emitted diagnostics by the rule",
3851
+ "allOf": [{ "$ref": "#/definitions/RulePlainConfiguration" }]
3852
+ },
3853
+ "options": {
3854
+ "description": "Rule's options",
3855
+ "allOf": [{ "$ref": "#/definitions/UseJsxKeyInIterableOptions" }]
3856
+ }
3857
+ },
3858
+ "additionalProperties": false
3859
+ },
3917
3860
  "RuleWithUseSelfClosingElementsOptions": {
3918
3861
  "type": "object",
3919
3862
  "required": ["level"],
@@ -4050,6 +3993,13 @@
4050
3993
  "description": "A list of rules that belong to this group",
4051
3994
  "type": "object",
4052
3995
  "properties": {
3996
+ "noBlankTarget": {
3997
+ "description": "Disallow target=\"_blank\" attribute without rel=\"noopener\".",
3998
+ "anyOf": [
3999
+ { "$ref": "#/definitions/NoBlankTargetConfiguration" },
4000
+ { "type": "null" }
4001
+ ]
4002
+ },
4053
4003
  "noDangerouslySetInnerHtml": {
4054
4004
  "description": "Prevent the usage of dangerous JSX props",
4055
4005
  "anyOf": [
@@ -4096,6 +4046,21 @@
4096
4046
  },
4097
4047
  "additionalProperties": false
4098
4048
  },
4049
+ "SelfCloseVoidElements": {
4050
+ "description": "Controls whether void-elements should be self closed",
4051
+ "oneOf": [
4052
+ {
4053
+ "description": "The `/` inside void elements is removed by the formatter",
4054
+ "type": "string",
4055
+ "enum": ["never"]
4056
+ },
4057
+ {
4058
+ "description": "The `/` inside void elements is always added",
4059
+ "type": "string",
4060
+ "enum": ["always"]
4061
+ }
4062
+ ]
4063
+ },
4099
4064
  "Semicolons": { "type": "string", "enum": ["always", "asNeeded"] },
4100
4065
  "SeverityOrGroup_for_A11y": {
4101
4066
  "anyOf": [
@@ -4184,6 +4149,18 @@
4184
4149
  },
4185
4150
  "additionalProperties": false
4186
4151
  },
4152
+ "SourceMatcher": {
4153
+ "anyOf": [
4154
+ { "$ref": "#/definitions/NegatablePredefinedSourceMatcher" },
4155
+ { "$ref": "#/definitions/ImportSourceGlob" }
4156
+ ]
4157
+ },
4158
+ "SourcesMatcher": {
4159
+ "anyOf": [
4160
+ { "$ref": "#/definitions/SourceMatcher" },
4161
+ { "type": "array", "items": { "$ref": "#/definitions/SourceMatcher" } }
4162
+ ]
4163
+ },
4187
4164
  "StableHookResult": {
4188
4165
  "oneOf": [
4189
4166
  {
@@ -4214,22 +4191,57 @@
4214
4191
  { "type": "null" }
4215
4192
  ]
4216
4193
  },
4217
- "noCommaOperator": {
4218
- "description": "Disallow comma operator.",
4194
+ "noCommaOperator": {
4195
+ "description": "Disallow comma operator.",
4196
+ "anyOf": [
4197
+ { "$ref": "#/definitions/RuleConfiguration" },
4198
+ { "type": "null" }
4199
+ ]
4200
+ },
4201
+ "noCommonJs": {
4202
+ "description": "Disallow use of CommonJs module system in favor of ESM style imports.",
4203
+ "anyOf": [
4204
+ { "$ref": "#/definitions/RuleConfiguration" },
4205
+ { "type": "null" }
4206
+ ]
4207
+ },
4208
+ "noDefaultExport": {
4209
+ "description": "Disallow default exports.",
4210
+ "anyOf": [
4211
+ { "$ref": "#/definitions/RuleConfiguration" },
4212
+ { "type": "null" }
4213
+ ]
4214
+ },
4215
+ "noDescendingSpecificity": {
4216
+ "description": "Disallow a lower specificity selector from coming after a higher specificity selector.",
4219
4217
  "anyOf": [
4220
4218
  { "$ref": "#/definitions/RuleConfiguration" },
4221
4219
  { "type": "null" }
4222
4220
  ]
4223
4221
  },
4224
- "noDefaultExport": {
4225
- "description": "Disallow default exports.",
4222
+ "noDoneCallback": {
4223
+ "description": "Disallow using a callback in asynchronous tests and hooks.",
4226
4224
  "anyOf": [
4227
4225
  { "$ref": "#/definitions/RuleConfiguration" },
4228
4226
  { "type": "null" }
4229
4227
  ]
4230
4228
  },
4231
- "noDoneCallback": {
4232
- "description": "Disallow using a callback in asynchronous tests and hooks.",
4229
+ "noEnum": {
4230
+ "description": "Disallow TypeScript enum.",
4231
+ "anyOf": [
4232
+ { "$ref": "#/definitions/RuleConfiguration" },
4233
+ { "type": "null" }
4234
+ ]
4235
+ },
4236
+ "noExportedImports": {
4237
+ "description": "Disallow exporting an imported variable.",
4238
+ "anyOf": [
4239
+ { "$ref": "#/definitions/RuleConfiguration" },
4240
+ { "type": "null" }
4241
+ ]
4242
+ },
4243
+ "noHeadElement": {
4244
+ "description": "Prevent usage of \\<head> element in a Next.js project.",
4233
4245
  "anyOf": [
4234
4246
  { "$ref": "#/definitions/RuleConfiguration" },
4235
4247
  { "type": "null" }
@@ -4270,6 +4282,13 @@
4270
4282
  { "type": "null" }
4271
4283
  ]
4272
4284
  },
4285
+ "noNestedTernary": {
4286
+ "description": "Disallow nested ternary expressions.",
4287
+ "anyOf": [
4288
+ { "$ref": "#/definitions/RuleConfiguration" },
4289
+ { "type": "null" }
4290
+ ]
4291
+ },
4273
4292
  "noNonNullAssertion": {
4274
4293
  "description": "Disallow non-null assertions using the ! postfix operator.",
4275
4294
  "anyOf": [
@@ -4291,6 +4310,13 @@
4291
4310
  { "type": "null" }
4292
4311
  ]
4293
4312
  },
4313
+ "noProcessEnv": {
4314
+ "description": "Disallow the use of process.env.",
4315
+ "anyOf": [
4316
+ { "$ref": "#/definitions/RuleConfiguration" },
4317
+ { "type": "null" }
4318
+ ]
4319
+ },
4294
4320
  "noRestrictedGlobals": {
4295
4321
  "description": "This rule allows you to specify global variable names that you don’t want to use in your application.",
4296
4322
  "anyOf": [
@@ -4298,6 +4324,20 @@
4298
4324
  { "type": "null" }
4299
4325
  ]
4300
4326
  },
4327
+ "noRestrictedImports": {
4328
+ "description": "Disallow specified modules when loaded by import or require.",
4329
+ "anyOf": [
4330
+ { "$ref": "#/definitions/RestrictedImportsConfiguration" },
4331
+ { "type": "null" }
4332
+ ]
4333
+ },
4334
+ "noRestrictedTypes": {
4335
+ "description": "Disallow user defined types.",
4336
+ "anyOf": [
4337
+ { "$ref": "#/definitions/NoRestrictedTypesConfiguration" },
4338
+ { "type": "null" }
4339
+ ]
4340
+ },
4301
4341
  "noShoutyConstants": {
4302
4342
  "description": "Disallow the use of constants which its value is the upper-case version of its name.",
4303
4343
  "anyOf": [
@@ -4305,6 +4345,13 @@
4305
4345
  { "type": "null" }
4306
4346
  ]
4307
4347
  },
4348
+ "noSubstr": {
4349
+ "description": "Enforce the use of String.slice() over String.substr() and String.substring().",
4350
+ "anyOf": [
4351
+ { "$ref": "#/definitions/RuleFixConfiguration" },
4352
+ { "type": "null" }
4353
+ ]
4354
+ },
4308
4355
  "noUnusedTemplateLiteral": {
4309
4356
  "description": "Disallow template literals if interpolation and special-character handling are not needed",
4310
4357
  "anyOf": [
@@ -4319,6 +4366,13 @@
4319
4366
  { "type": "null" }
4320
4367
  ]
4321
4368
  },
4369
+ "noValueAtRule": {
4370
+ "description": "Disallow use of @value rule in css modules.",
4371
+ "anyOf": [
4372
+ { "$ref": "#/definitions/RuleConfiguration" },
4373
+ { "type": "null" }
4374
+ ]
4375
+ },
4322
4376
  "noYodaExpression": {
4323
4377
  "description": "Disallow the use of yoda expressions.",
4324
4378
  "anyOf": [
@@ -4337,6 +4391,13 @@
4337
4391
  { "type": "null" }
4338
4392
  ]
4339
4393
  },
4394
+ "useAtIndex": {
4395
+ "description": "Use at() instead of integer index access.",
4396
+ "anyOf": [
4397
+ { "$ref": "#/definitions/RuleFixConfiguration" },
4398
+ { "type": "null" }
4399
+ ]
4400
+ },
4340
4401
  "useBlockStatements": {
4341
4402
  "description": "Requires following curly brace conventions.",
4342
4403
  "anyOf": [
@@ -4351,6 +4412,22 @@
4351
4412
  { "type": "null" }
4352
4413
  ]
4353
4414
  },
4415
+ "useCollapsedIf": {
4416
+ "description": "Enforce using single if instead of nested if clauses.",
4417
+ "anyOf": [
4418
+ { "$ref": "#/definitions/RuleFixConfiguration" },
4419
+ { "type": "null" }
4420
+ ]
4421
+ },
4422
+ "useComponentExportOnlyModules": {
4423
+ "description": "Enforce declaring components only within modules that export React Components exclusively.",
4424
+ "anyOf": [
4425
+ {
4426
+ "$ref": "#/definitions/UseComponentExportOnlyModulesConfiguration"
4427
+ },
4428
+ { "type": "null" }
4429
+ ]
4430
+ },
4354
4431
  "useConsistentArrayType": {
4355
4432
  "description": "Require consistently using either T\\[] or Array\\<T>",
4356
4433
  "anyOf": [
@@ -4365,6 +4442,22 @@
4365
4442
  { "type": "null" }
4366
4443
  ]
4367
4444
  },
4445
+ "useConsistentCurlyBraces": {
4446
+ "description": "This rule enforces consistent use of curly braces inside JSX attributes and JSX children.",
4447
+ "anyOf": [
4448
+ { "$ref": "#/definitions/RuleFixConfiguration" },
4449
+ { "type": "null" }
4450
+ ]
4451
+ },
4452
+ "useConsistentMemberAccessibility": {
4453
+ "description": "Require consistent accessibility modifiers on class properties and methods.",
4454
+ "anyOf": [
4455
+ {
4456
+ "$ref": "#/definitions/ConsistentMemberAccessibilityConfiguration"
4457
+ },
4458
+ { "type": "null" }
4459
+ ]
4460
+ },
4368
4461
  "useConst": {
4369
4462
  "description": "Require const declarations for variables that are only assigned once.",
4370
4463
  "anyOf": [
@@ -4386,6 +4479,13 @@
4386
4479
  { "type": "null" }
4387
4480
  ]
4388
4481
  },
4482
+ "useDeprecatedReason": {
4483
+ "description": "Require specifying the reason argument when using @deprecated directive",
4484
+ "anyOf": [
4485
+ { "$ref": "#/definitions/RuleConfiguration" },
4486
+ { "type": "null" }
4487
+ ]
4488
+ },
4389
4489
  "useEnumInitializers": {
4390
4490
  "description": "Require that each enum member value be explicitly initialized.",
4391
4491
  "anyOf": [
@@ -4438,7 +4538,7 @@
4438
4538
  "useImportType": {
4439
4539
  "description": "Promotes the use of import type for types.",
4440
4540
  "anyOf": [
4441
- { "$ref": "#/definitions/RuleFixConfiguration" },
4541
+ { "$ref": "#/definitions/ImportTypeConfiguration" },
4442
4542
  { "type": "null" }
4443
4543
  ]
4444
4544
  },
@@ -4485,19 +4585,12 @@
4485
4585
  ]
4486
4586
  },
4487
4587
  "useSelfClosingElements": {
4488
- "description": "Prevent extra closing tags for components without children",
4588
+ "description": "Prevent extra closing tags for components without children.",
4489
4589
  "anyOf": [
4490
4590
  { "$ref": "#/definitions/UseSelfClosingElementsConfiguration" },
4491
4591
  { "type": "null" }
4492
4592
  ]
4493
4593
  },
4494
- "useShorthandArrayType": {
4495
- "description": "When expressing array types, this rule promotes the usage of T\\[] shorthand instead of Array\\<T>.",
4496
- "anyOf": [
4497
- { "$ref": "#/definitions/RuleFixConfiguration" },
4498
- { "type": "null" }
4499
- ]
4500
- },
4501
4594
  "useShorthandAssign": {
4502
4595
  "description": "Require assignment operator shorthand where possible.",
4503
4596
  "anyOf": [
@@ -4512,13 +4605,6 @@
4512
4605
  { "type": "null" }
4513
4606
  ]
4514
4607
  },
4515
- "useSingleCaseStatement": {
4516
- "description": "Enforces switch clauses have a single statement, emits a quick fix wrapping the statements in a block.",
4517
- "anyOf": [
4518
- { "$ref": "#/definitions/RuleFixConfiguration" },
4519
- { "type": "null" }
4520
- ]
4521
- },
4522
4608
  "useSingleVarDeclarator": {
4523
4609
  "description": "Disallow multiple variable declarations in the same variable statement",
4524
4610
  "anyOf": [
@@ -4546,10 +4632,37 @@
4546
4632
  { "$ref": "#/definitions/RuleConfiguration" },
4547
4633
  { "type": "null" }
4548
4634
  ]
4635
+ },
4636
+ "useTrimStartEnd": {
4637
+ "description": "Enforce the use of String.trimStart() and String.trimEnd() over String.trimLeft() and String.trimRight().",
4638
+ "anyOf": [
4639
+ { "$ref": "#/definitions/RuleFixConfiguration" },
4640
+ { "type": "null" }
4641
+ ]
4549
4642
  }
4550
4643
  },
4551
4644
  "additionalProperties": false
4552
4645
  },
4646
+ "Style2": {
4647
+ "description": "Rule's options.",
4648
+ "oneOf": [
4649
+ {
4650
+ "description": "Use the best fitting style according to the situation",
4651
+ "type": "string",
4652
+ "enum": ["auto"]
4653
+ },
4654
+ {
4655
+ "description": "Always use inline type keywords",
4656
+ "type": "string",
4657
+ "enum": ["inlineType"]
4658
+ },
4659
+ {
4660
+ "description": "Always separate types in a dedicated `import type`",
4661
+ "type": "string",
4662
+ "enum": ["separatedType"]
4663
+ }
4664
+ ]
4665
+ },
4553
4666
  "Suspicious": {
4554
4667
  "description": "A list of rules that belong to this group",
4555
4668
  "type": "object",
@@ -4652,6 +4765,20 @@
4652
4765
  { "type": "null" }
4653
4766
  ]
4654
4767
  },
4768
+ "noDocumentCookie": {
4769
+ "description": "Disallow direct assignments to document.cookie.",
4770
+ "anyOf": [
4771
+ { "$ref": "#/definitions/RuleConfiguration" },
4772
+ { "type": "null" }
4773
+ ]
4774
+ },
4775
+ "noDocumentImportInPage": {
4776
+ "description": "Prevents importing next/document outside of pages/_document.jsx in Next.js projects.",
4777
+ "anyOf": [
4778
+ { "$ref": "#/definitions/RuleConfiguration" },
4779
+ { "type": "null" }
4780
+ ]
4781
+ },
4655
4782
  "noDoubleEquals": {
4656
4783
  "description": "Require the use of === and !==.",
4657
4784
  "anyOf": [
@@ -4680,6 +4807,27 @@
4680
4807
  { "type": "null" }
4681
4808
  ]
4682
4809
  },
4810
+ "noDuplicateCustomProperties": {
4811
+ "description": "Disallow duplicate custom properties within declaration blocks.",
4812
+ "anyOf": [
4813
+ { "$ref": "#/definitions/RuleConfiguration" },
4814
+ { "type": "null" }
4815
+ ]
4816
+ },
4817
+ "noDuplicateElseIf": {
4818
+ "description": "Disallow duplicate conditions in if-else-if chains",
4819
+ "anyOf": [
4820
+ { "$ref": "#/definitions/RuleConfiguration" },
4821
+ { "type": "null" }
4822
+ ]
4823
+ },
4824
+ "noDuplicateFields": {
4825
+ "description": "No duplicated fields in GraphQL operations.",
4826
+ "anyOf": [
4827
+ { "$ref": "#/definitions/RuleConfiguration" },
4828
+ { "type": "null" }
4829
+ ]
4830
+ },
4683
4831
  "noDuplicateFontNames": {
4684
4832
  "description": "Disallow duplicate names within font families.",
4685
4833
  "anyOf": [
@@ -4708,6 +4856,13 @@
4708
4856
  { "type": "null" }
4709
4857
  ]
4710
4858
  },
4859
+ "noDuplicateProperties": {
4860
+ "description": "Disallow duplicate properties within declaration blocks.",
4861
+ "anyOf": [
4862
+ { "$ref": "#/definitions/RuleConfiguration" },
4863
+ { "type": "null" }
4864
+ ]
4865
+ },
4711
4866
  "noDuplicateSelectorsKeyframeBlock": {
4712
4867
  "description": "Disallow duplicate selectors within keyframe blocks.",
4713
4868
  "anyOf": [
@@ -4813,6 +4968,13 @@
4813
4968
  { "type": "null" }
4814
4969
  ]
4815
4970
  },
4971
+ "noHeadImportInDocument": {
4972
+ "description": "Prevent using the next/head module in pages/_document.js on Next.js projects.",
4973
+ "anyOf": [
4974
+ { "$ref": "#/definitions/RuleConfiguration" },
4975
+ { "type": "null" }
4976
+ ]
4977
+ },
4816
4978
  "noImplicitAnyLet": {
4817
4979
  "description": "Disallow use of implicit any type on variable declarations.",
4818
4980
  "anyOf": [
@@ -4834,6 +4996,13 @@
4834
4996
  { "type": "null" }
4835
4997
  ]
4836
4998
  },
4999
+ "noIrregularWhitespace": {
5000
+ "description": "Disallows the use of irregular whitespace characters.",
5001
+ "anyOf": [
5002
+ { "$ref": "#/definitions/RuleConfiguration" },
5003
+ { "type": "null" }
5004
+ ]
5005
+ },
4837
5006
  "noLabelVar": {
4838
5007
  "description": "Disallow labels that share a name with a variable",
4839
5008
  "anyOf": [
@@ -4869,6 +5038,13 @@
4869
5038
  { "type": "null" }
4870
5039
  ]
4871
5040
  },
5041
+ "noOctalEscape": {
5042
+ "description": "Disallow octal escape sequences in string literals",
5043
+ "anyOf": [
5044
+ { "$ref": "#/definitions/RuleFixConfiguration" },
5045
+ { "type": "null" }
5046
+ ]
5047
+ },
4872
5048
  "noPrototypeBuiltins": {
4873
5049
  "description": "Disallow direct use of Object.prototype builtins.",
4874
5050
  "anyOf": [
@@ -4939,6 +5115,13 @@
4939
5115
  { "type": "null" }
4940
5116
  ]
4941
5117
  },
5118
+ "noTemplateCurlyInString": {
5119
+ "description": "Disallow template literal placeholder syntax in regular strings.",
5120
+ "anyOf": [
5121
+ { "$ref": "#/definitions/RuleConfiguration" },
5122
+ { "type": "null" }
5123
+ ]
5124
+ },
4942
5125
  "noThenProperty": {
4943
5126
  "description": "Disallow then property.",
4944
5127
  "anyOf": [
@@ -4971,6 +5154,13 @@
4971
5154
  "description": "It enables the recommended rules for this group",
4972
5155
  "type": ["boolean", "null"]
4973
5156
  },
5157
+ "useAdjacentOverloadSignatures": {
5158
+ "description": "Disallow the use of overload signatures that are not next to each other.",
5159
+ "anyOf": [
5160
+ { "$ref": "#/definitions/RuleConfiguration" },
5161
+ { "type": "null" }
5162
+ ]
5163
+ },
4974
5164
  "useAwait": {
4975
5165
  "description": "Ensure async functions utilize await.",
4976
5166
  "anyOf": [
@@ -4999,6 +5189,20 @@
4999
5189
  { "type": "null" }
5000
5190
  ]
5001
5191
  },
5192
+ "useGoogleFontDisplay": {
5193
+ "description": "Enforces the use of a recommended display strategy with Google Fonts.",
5194
+ "anyOf": [
5195
+ { "$ref": "#/definitions/RuleConfiguration" },
5196
+ { "type": "null" }
5197
+ ]
5198
+ },
5199
+ "useGuardForIn": {
5200
+ "description": "Require for-in loops to include an if statement.",
5201
+ "anyOf": [
5202
+ { "$ref": "#/definitions/RuleConfiguration" },
5203
+ { "type": "null" }
5204
+ ]
5205
+ },
5002
5206
  "useIsArray": {
5003
5207
  "description": "Use Array.isArray() instead of instanceof Array.",
5004
5208
  "anyOf": [
@@ -5020,6 +5224,13 @@
5020
5224
  { "type": "null" }
5021
5225
  ]
5022
5226
  },
5227
+ "useStrictMode": {
5228
+ "description": "Enforce the use of the directive \"use strict\" in script files.",
5229
+ "anyOf": [
5230
+ { "$ref": "#/definitions/RuleFixConfiguration" },
5231
+ { "type": "null" }
5232
+ ]
5233
+ },
5023
5234
  "useValidTypeof": {
5024
5235
  "description": "This rule checks that the result of a typeof expression is compared to a valid value.",
5025
5236
  "anyOf": [
@@ -5165,6 +5376,23 @@
5165
5376
  },
5166
5377
  "additionalProperties": false
5167
5378
  },
5379
+ "UseJsxKeyInIterableConfiguration": {
5380
+ "anyOf": [
5381
+ { "$ref": "#/definitions/RulePlainConfiguration" },
5382
+ { "$ref": "#/definitions/RuleWithUseJsxKeyInIterableOptions" }
5383
+ ]
5384
+ },
5385
+ "UseJsxKeyInIterableOptions": {
5386
+ "type": "object",
5387
+ "properties": {
5388
+ "checkShorthandFragments": {
5389
+ "description": "Set to `true` to check shorthand fragments (`<></>`)",
5390
+ "default": false,
5391
+ "type": "boolean"
5392
+ }
5393
+ },
5394
+ "additionalProperties": false
5395
+ },
5168
5396
  "UseSelfClosingElementsConfiguration": {
5169
5397
  "anyOf": [
5170
5398
  { "$ref": "#/definitions/RulePlainConfiguration" },