-
Notifications
You must be signed in to change notification settings - Fork 24
Expand file tree
/
Copy path.oxlintrc.json
More file actions
942 lines (940 loc) · 40.8 KB
/
Copy path.oxlintrc.json
File metadata and controls
942 lines (940 loc) · 40.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"plugins": [],
"categories": {
"correctness": "off"
},
"options": {
"typeAware": true
},
"env": {
"builtin": true
},
"ignorePatterns": [
"node_modules",
"dist",
// Automatically generated code
"src/routeTree.gen.ts",
"src/hooks/use-mobile.ts",
// Shadcn/ui components
"src/components/ui",
"!src/components/ui/theme-provider.tsx",
"!src/components/ui/carousel.tsx",
"!src/components/ui/data-table.tsx",
"!src/components/ui/date-picker.tsx"
],
"overrides": [
{
"files": ["**/*.{ts,tsx}"],
"rules": {
"constructor-super": "error",
"for-direction": "error",
"getter-return": "error",
"no-async-promise-executor": "error",
"no-case-declarations": "error",
"no-class-assign": "error",
"no-compare-neg-zero": "error",
"no-cond-assign": "error",
"no-const-assign": "error",
"no-constant-binary-expression": "error",
"no-constant-condition": "error",
"no-control-regex": "error",
"no-debugger": "error",
"no-delete-var": "error",
"no-dupe-class-members": "error",
"no-dupe-else-if": "error",
"no-dupe-keys": "error",
"no-duplicate-case": "error",
"no-empty": "error",
"no-empty-character-class": "error",
"no-empty-pattern": "error",
"no-empty-static-block": "error",
"no-ex-assign": "error",
"no-extra-boolean-cast": "error",
"no-fallthrough": "error",
"no-func-assign": "error",
"no-global-assign": "error",
"no-import-assign": "error",
"no-invalid-regexp": "error",
"no-irregular-whitespace": "error",
"no-loss-of-precision": "error",
"no-misleading-character-class": "error",
"no-new-native-nonconstructor": "error",
"no-nonoctal-decimal-escape": "error",
"no-obj-calls": "error",
"no-prototype-builtins": "error",
"no-redeclare": "error",
"no-regex-spaces": "error",
"no-self-assign": "error",
"no-setter-return": "error",
"no-shadow-restricted-names": "error",
"no-sparse-arrays": "error",
"no-this-before-super": "error",
"no-unassigned-vars": "error",
"no-undef": "error",
"no-unexpected-multiline": "error",
"no-unreachable": "error",
"no-unsafe-finally": "error",
"no-unsafe-negation": "error",
"no-unsafe-optional-chaining": "error",
"no-unused-labels": "error",
"no-unused-private-class-members": "error",
"no-unused-vars": "error",
"no-useless-assignment": "error",
"no-useless-backreference": "error",
"no-useless-catch": "error",
"no-useless-escape": "error",
"no-with": "error",
"preserve-caught-error": "error",
"require-yield": "error",
"use-isnan": "error",
"valid-typeof": "error",
"no-array-constructor": "error",
"no-implied-eval": "off",
"no-unused-expressions": "error",
"no-useless-constructor": "error",
"no-throw-literal": "off",
"prefer-promise-reject-errors": "off",
"require-await": "off",
"typescript/await-thenable": "error",
"typescript/ban-ts-comment": [
"error",
{
"minimumDescriptionLength": 10
}
],
"typescript/no-array-delete": "error",
"typescript/no-base-to-string": "error",
"typescript/no-confusing-void-expression": "error",
"typescript/no-deprecated": "error",
"typescript/no-duplicate-enum-values": "error",
"typescript/no-duplicate-type-constituents": "error",
"typescript/no-dynamic-delete": "error",
"typescript/no-empty-object-type": "error",
"typescript/no-explicit-any": "error",
"typescript/no-extra-non-null-assertion": "error",
"typescript/no-extraneous-class": "error",
"typescript/no-floating-promises": "error",
"typescript/no-for-in-array": "error",
"typescript/no-implied-eval": "error",
"typescript/no-invalid-void-type": "error",
"typescript/no-meaningless-void-operator": "error",
"typescript/no-misused-new": "error",
"typescript/no-misused-promises": "error",
"typescript/no-misused-spread": "error",
"typescript/no-mixed-enums": "error",
"typescript/no-namespace": "error",
"typescript/no-non-null-asserted-nullish-coalescing": "error",
"typescript/no-non-null-asserted-optional-chain": "error",
"typescript/no-non-null-assertion": "error",
"typescript/no-redundant-type-constituents": "error",
"typescript/no-require-imports": "error",
"typescript/no-this-alias": "error",
"typescript/no-unnecessary-boolean-literal-compare": "error",
"typescript/no-unnecessary-condition": "error",
"typescript/no-unnecessary-template-expression": "error",
"typescript/no-unnecessary-type-arguments": "error",
"typescript/no-unnecessary-type-assertion": "error",
"typescript/no-unnecessary-type-constraint": "error",
"typescript/no-unnecessary-type-conversion": "error",
"typescript/no-unnecessary-type-parameters": "error",
"typescript/no-unsafe-argument": "error",
"typescript/no-unsafe-assignment": "error",
"typescript/no-unsafe-call": "error",
"typescript/no-unsafe-declaration-merging": "error",
"typescript/no-unsafe-enum-comparison": "error",
"typescript/no-unsafe-function-type": "error",
"typescript/no-unsafe-member-access": "error",
"typescript/no-unsafe-return": "error",
"typescript/no-unsafe-unary-minus": "error",
"typescript/no-useless-default-assignment": "error",
"typescript/no-wrapper-object-types": "error",
"typescript/only-throw-error": "error",
"typescript/prefer-as-const": "error",
"typescript/prefer-literal-enum-member": "error",
"typescript/prefer-namespace-keyword": "error",
"typescript/prefer-promise-reject-errors": "error",
"typescript/prefer-reduce-type-parameter": "error",
"typescript/prefer-return-this-type": "error",
"typescript/related-getter-setter-pairs": "error",
"typescript/require-await": "error",
"typescript/restrict-plus-operands": [
"error",
{
"allowAny": false,
"allowBoolean": false,
"allowNullish": false,
"allowNumberAndString": false,
"allowRegExp": false
}
],
"typescript/restrict-template-expressions": [
"error",
{
"allowAny": false,
"allowBoolean": false,
"allowNever": false,
"allowNullish": false,
"allowNumber": false,
"allowRegExp": false
}
],
"typescript/return-await": ["error", "error-handling-correctness-only"],
"typescript/triple-slash-reference": "error",
"typescript/unbound-method": "error",
"typescript/unified-signatures": "error",
"typescript/use-unknown-in-catch-callback-variable": "error",
"no-empty-function": "off",
"typescript/adjacent-overload-signatures": "error",
"typescript/array-type": "error",
"typescript/ban-tslint-comment": "error",
"typescript/class-literal-property-style": "error",
"typescript/consistent-generic-constructors": "error",
"typescript/consistent-indexed-object-style": "error",
"typescript/consistent-type-assertions": "error",
"typescript/consistent-type-definitions": "error",
"typescript/dot-notation": "error",
"typescript/no-confusing-non-null-assertion": "error",
"typescript/no-inferrable-types": "error",
"typescript/non-nullable-type-assertion-style": "error",
"typescript/prefer-find": "error",
"typescript/prefer-for-of": "error",
"typescript/prefer-function-type": "error",
"typescript/prefer-includes": "error",
"typescript/prefer-nullish-coalescing": "error",
"typescript/prefer-optional-chain": "error",
"typescript/prefer-regexp-exec": "error",
"typescript/prefer-string-starts-ends-with": "error",
"react-x/error-boundaries": "error",
"react-x/exhaustive-deps": "warn",
"react-x/no-access-state-in-setstate": "error",
"react-x/no-array-index-key": "warn",
"react-x/no-children-count": "warn",
"react-x/no-children-for-each": "warn",
"react-x/no-children-map": "warn",
"react-x/no-children-only": "warn",
"react-x/no-children-to-array": "warn",
"react-x/no-clone-element": "warn",
"react-x/no-component-will-mount": "error",
"react-x/no-component-will-receive-props": "error",
"react-x/no-component-will-update": "error",
"react-x/no-context-provider": "warn",
"react-x/no-create-ref": "error",
"react-x/no-direct-mutation-state": "error",
"react-x/no-forward-ref": "warn",
"react-x/no-missing-key": "error",
"react-x/no-nested-component-definitions": "error",
"react-x/no-nested-lazy-component-declarations": "error",
"react-x/no-set-state-in-component-did-mount": "warn",
"react-x/no-set-state-in-component-did-update": "warn",
"react-x/no-set-state-in-component-will-update": "warn",
"react-x/no-unnecessary-use-prefix": "warn",
"react-x/no-unsafe-component-will-mount": "warn",
"react-x/no-unsafe-component-will-receive-props": "warn",
"react-x/no-unsafe-component-will-update": "warn",
"react-x/no-unused-class-component-members": "warn",
"react-x/no-use-context": "warn",
"react-x/purity": "warn",
"react-x/rules-of-hooks": "error",
"react-x/set-state-in-effect": "warn",
"react-x/set-state-in-render": "error",
"react-x/static-components": "error",
"react-x/unsupported-syntax": "error",
"react-x/use-memo": "error",
"react-x/use-state": "warn",
"react-x/no-class-component": "error",
"react-x/no-misused-capture-owner-stack": "error",
"react-x/no-unstable-context-value": "warn",
"react-x/no-unstable-default-props": "warn",
"react-dom/no-dangerously-set-innerhtml": "warn",
"react-dom/no-dangerously-set-innerhtml-with-children": "error",
"react-dom/no-find-dom-node": "error",
"react-dom/no-flush-sync": "error",
"react-dom/no-hydrate": "error",
"react-dom/no-render": "error",
"react-dom/no-render-return-value": "error",
"react-dom/no-script-url": "warn",
"react-dom/no-unsafe-iframe-sandbox": "warn",
"react-dom/no-use-form-state": "error",
"react-dom/no-void-elements-with-children": "error",
"react-dom/no-missing-button-type": "warn",
"react-dom/no-missing-iframe-sandbox": "warn",
"react-dom/no-unsafe-target-blank": "warn",
"react-jsx/no-children-prop": "error",
"react-jsx/no-children-prop-with-children": "error",
"react-jsx/no-comment-textnodes": "warn",
"react-jsx/no-key-after-spread": "error",
"react-jsx/no-leaked-dollar": "warn",
"react-jsx/no-leaked-semicolon": "warn",
"react-jsx/no-namespace": "error",
"react-jsx/no-useless-fragment": "warn",
"react-naming-convention/context-name": "warn",
"react-naming-convention/id-name": "warn",
"react-naming-convention/ref-name": "warn",
"react-perf/jsx-no-new-object-as-prop": "error",
"react-perf/jsx-no-new-array-as-prop": "error",
"react-perf/jsx-no-new-function-as-prop": "error",
"import/named": "off",
"import/namespace": "error",
"import/default": "error",
"import/export": "error",
"import/no-named-as-default": "warn",
"import/no-named-as-default-member": "warn",
"import/no-duplicates": "warn",
"jsx-a11y/alt-text": "error",
"jsx-a11y/anchor-has-content": "error",
"jsx-a11y/anchor-is-valid": "error",
"jsx-a11y/aria-activedescendant-has-tabindex": "error",
"jsx-a11y/aria-props": "error",
"jsx-a11y/aria-proptypes": "error",
"jsx-a11y/aria-role": "error",
"jsx-a11y/aria-unsupported-elements": "error",
"jsx-a11y/autocomplete-valid": "error",
"jsx-a11y/click-events-have-key-events": "error",
"jsx-a11y/control-has-associated-label": "off",
"jsx-a11y/heading-has-content": "error",
"jsx-a11y/html-has-lang": "error",
"jsx-a11y/iframe-has-title": "error",
"jsx-a11y/img-redundant-alt": "error",
"jsx-a11y/interactive-supports-focus": [
"error",
{
"tabbable": [
"button",
"checkbox",
"link",
"progressbar",
"searchbox",
"slider",
"spinbutton",
"switch",
"textbox"
]
}
],
"jsx-a11y/label-has-associated-control": "error",
"jsx-a11y/media-has-caption": "error",
"jsx-a11y/mouse-events-have-key-events": "error",
"jsx-a11y/no-access-key": "error",
"jsx-a11y/no-autofocus": "error",
"jsx-a11y/no-distracting-elements": "error",
"jsx-a11y/no-interactive-element-to-noninteractive-role": "error",
"jsx-a11y/no-noninteractive-element-interactions": [
"error",
{
"body": ["onError", "onLoad"],
"iframe": ["onError", "onLoad"],
"img": ["onError", "onLoad"]
}
],
"jsx-a11y/no-noninteractive-element-to-interactive-role": "error",
"jsx-a11y/no-noninteractive-tabindex": "error",
"jsx-a11y/no-redundant-roles": "error",
"jsx-a11y/no-static-element-interactions": "error",
"jsx-a11y/role-has-required-aria-props": "error",
"jsx-a11y/role-supports-aria-props": "error",
"jsx-a11y/scope": "error",
"jsx-a11y/tabindex-no-positive": "error",
"logical-assignment-operators": "off",
"no-negated-condition": "off",
"no-nested-ternary": "off",
"unicorn/catch-error-name": "error",
"unicorn/consistent-assert": "error",
"unicorn/consistent-date-clone": "error",
"unicorn/consistent-empty-array-spread": "error",
"unicorn/consistent-existence-index-check": "error",
"unicorn/consistent-function-scoping": "error",
"unicorn/consistent-template-literal-escape": "error",
"unicorn/custom-error-definition": "off",
"unicorn/empty-brace-spaces": "error",
"unicorn/error-message": "error",
"unicorn/escape-case": "error",
"unicorn/explicit-length-check": "error",
"unicorn/explicit-timer-delay": "error",
"unicorn/filename-case": [
"error",
{
"ignore": ["\\$.*[A-Z]"]
}
],
"unicorn/import-style": "error",
"unicorn/max-nested-calls": "error",
"unicorn/new-for-builtins": "error",
"unicorn/no-abusive-eslint-disable": "error",
"unicorn/no-accessor-recursion": "error",
"unicorn/no-anonymous-default-export": "error",
"unicorn/no-array-callback-reference": "error",
"unicorn/no-array-fill-with-reference-type": "error",
"unicorn/no-array-method-this-argument": "error",
"unicorn/no-array-reduce": "error",
"unicorn/no-array-reverse": "error",
"unicorn/no-array-sort": "error",
"unicorn/no-await-expression-member": "error",
"unicorn/no-await-in-promise-methods": "error",
"unicorn/no-confusing-array-with": "error",
"unicorn/no-console-spaces": "error",
"unicorn/no-document-cookie": "error",
"unicorn/no-empty-file": "error",
"unicorn/no-immediate-mutation": "error",
"unicorn/no-instanceof-builtins": "error",
"unicorn/no-invalid-fetch-options": "error",
"unicorn/no-invalid-remove-event-listener": "error",
"unicorn/no-lonely-if": "error",
"unicorn/no-magic-array-flat-depth": "error",
"unicorn/no-negated-condition": "error",
"unicorn/no-negation-in-equality-check": "error",
"unicorn/no-nested-ternary": "error",
"unicorn/no-new-array": "error",
"unicorn/no-new-buffer": "error",
"unicorn/no-null": "error",
"unicorn/no-object-as-default-parameter": "error",
"unicorn/no-process-exit": "error",
"unicorn/no-single-promise-in-promise-methods": "error",
"unicorn/no-static-only-class": "error",
"unicorn/no-thenable": "error",
"unicorn/no-this-assignment": "error",
"unicorn/no-typeof-undefined": "error",
"unicorn/no-unnecessary-array-flat-depth": "error",
"unicorn/no-unnecessary-array-splice-count": "error",
"unicorn/no-unnecessary-await": "error",
"unicorn/no-unnecessary-slice-end": "error",
"unicorn/no-unreadable-array-destructuring": "error",
"unicorn/no-unreadable-iife": "error",
"unicorn/no-useless-collection-argument": "error",
"unicorn/no-useless-error-capture-stack-trace": "error",
"unicorn/no-useless-fallback-in-spread": "error",
"unicorn/no-useless-iterator-to-array": "error",
"unicorn/no-useless-length-check": "error",
"unicorn/no-useless-promise-resolve-reject": "error",
"unicorn/no-useless-spread": "error",
"unicorn/no-useless-switch-case": "error",
"unicorn/no-useless-undefined": "error",
"unicorn/no-zero-fractions": "error",
"unicorn/number-literal-case": "error",
"unicorn/numeric-separators-style": "error",
"unicorn/prefer-add-event-listener": "error",
"unicorn/prefer-array-find": "error",
"unicorn/prefer-array-flat": "error",
"unicorn/prefer-array-flat-map": "error",
"unicorn/prefer-array-index-of": "error",
"unicorn/prefer-array-some": "error",
"unicorn/prefer-at": "error",
"unicorn/prefer-bigint-literals": "error",
"unicorn/prefer-blob-reading-methods": "error",
"unicorn/prefer-class-fields": "error",
"unicorn/prefer-classlist-toggle": "error",
"unicorn/prefer-code-point": "error",
"unicorn/prefer-date-now": "error",
"unicorn/prefer-default-parameters": "error",
"unicorn/prefer-dom-node-append": "error",
"unicorn/prefer-dom-node-remove": "error",
"unicorn/prefer-dom-node-text-content": "error",
"unicorn/prefer-event-target": "error",
"unicorn/prefer-export-from": "error",
"unicorn/prefer-global-this": "error",
"unicorn/prefer-import-meta-properties": "off",
"unicorn/prefer-includes": "error",
"unicorn/prefer-keyboard-event-key": "error",
"unicorn/prefer-logical-operator-over-ternary": "error",
"unicorn/prefer-math-min-max": "error",
"unicorn/prefer-math-trunc": "error",
"unicorn/prefer-modern-dom-apis": "error",
"unicorn/prefer-modern-math-apis": "error",
"unicorn/prefer-module": "error",
"unicorn/prefer-native-coercion-functions": "error",
"unicorn/prefer-negative-index": "error",
"unicorn/prefer-node-protocol": "error",
"unicorn/prefer-number-coercion": "error",
"unicorn/prefer-number-properties": "error",
"unicorn/prefer-object-from-entries": "error",
"unicorn/prefer-optional-catch-binding": "error",
"unicorn/prefer-prototype-methods": "error",
"unicorn/prefer-query-selector": "error",
"unicorn/prefer-reflect-apply": "error",
"unicorn/prefer-regexp-test": "error",
"unicorn/prefer-response-static-json": "error",
"unicorn/prefer-set-has": "error",
"unicorn/prefer-set-size": "error",
"unicorn/prefer-single-call": "error",
"unicorn/prefer-spread": "error",
"unicorn/prefer-string-raw": "error",
"unicorn/prefer-string-replace-all": "error",
"unicorn/prefer-string-slice": "error",
"unicorn/prefer-string-starts-ends-with": "error",
"unicorn/prefer-string-trim-start-end": "error",
"unicorn/prefer-structured-clone": "error",
"unicorn/prefer-ternary": "error",
"unicorn/prefer-top-level-await": "error",
"unicorn/prefer-type-error": "error",
"unicorn/relative-url-style": "error",
"unicorn/require-array-join-separator": "error",
"unicorn/require-module-attributes": "error",
"unicorn/require-module-specifiers": "error",
"unicorn/require-number-to-fixed-digits-argument": "error",
"unicorn/require-post-message-target-origin": "off",
"unicorn/switch-case-braces": "error",
"unicorn/switch-case-break-position": "error",
"unicorn/text-encoding-identifier-case": "error",
"unicorn/throw-new-error": "error",
"react/rules-of-hooks": "error",
"react/exhaustive-deps": "warn",
"sonarjs/function-name": "off",
"sonarjs/class-name": "error",
"sonarjs/max-lines": "off",
"sonarjs/no-tab": "off",
"sonarjs/variable-name": "off",
"sonarjs/comment-regex": "off",
"sonarjs/no-commented-code": "off",
"sonarjs/elseif-without-else": "off",
"sonarjs/no-fallthrough": "error",
"sonarjs/nested-control-flow": "off",
"sonarjs/too-many-break-or-continue-in-loop": "off",
"sonarjs/max-lines-per-function": "off",
"sonarjs/no-nested-incdec": "off",
"sonarjs/no-equals-in-for-termination": "error",
"sonarjs/no-extra-arguments": "error",
"sonarjs/no-collapsible-if": "off",
"sonarjs/expression-complexity": "off",
"sonarjs/no-redundant-parentheses": "off",
"sonarjs/no-labels": "error",
"sonarjs/no-nested-assignment": "error",
"sonarjs/no-redundant-boolean": "error",
"sonarjs/prefer-single-boolean-return": "error",
"sonarjs/unused-import": "error",
"sonarjs/fixme-tag": "error",
"sonarjs/todo-tag": "error",
"sonarjs/useless-string-operation": "off",
"sonarjs/no-unused-function-argument": "off",
"sonarjs/no-duplicate-string": "off",
"sonarjs/no-case-label-in-switch": "error",
"sonarjs/no-parameter-reassignment": "error",
"sonarjs/no-floating-point-equality": "error",
"sonarjs/prefer-while": "error",
"sonarjs/no-sonar-comments": "off",
"sonarjs/no-small-switch": "error",
"sonarjs/no-hardcoded-ip": "error",
"sonarjs/label-position": "error",
"sonarjs/public-static-readonly": "error",
"sonarjs/file-header": "off",
"sonarjs/call-argument-line": "error",
"sonarjs/max-switch-cases": "error",
"sonarjs/no-unused-vars": "error",
"sonarjs/prefer-immediate-return": "off",
"sonarjs/function-inside-loop": "error",
"sonarjs/code-eval": "error",
"sonarjs/no-variable-usage-before-declaration": "off",
"sonarjs/future-reserved-words": "error",
"sonarjs/array-constructor": "off",
"sonarjs/bitwise-operators": "error",
"sonarjs/no-function-declaration-in-block": "off",
"sonarjs/no-primitive-wrappers": "error",
"sonarjs/for-in": "off",
"sonarjs/cyclomatic-complexity": "off",
"sonarjs/no-skipped-tests": "error",
"sonarjs/no-identical-expressions": "error",
"sonarjs/no-nested-switch": "off",
"sonarjs/constructor-for-side-effects": "error",
"sonarjs/no-dead-store": "error",
"sonarjs/no-identical-conditions": "error",
"sonarjs/no-duplicated-branches": "error",
"sonarjs/deprecation": "error",
"sonarjs/no-inverted-boolean-check": "error",
"sonarjs/misplaced-loop-counter": "error",
"sonarjs/no-nested-functions": "error",
"sonarjs/no-hardcoded-passwords": "error",
"sonarjs/sql-queries": "error",
"sonarjs/insecure-cookie": "error",
"sonarjs/no-useless-increment": "error",
"sonarjs/no-globals-shadowing": "error",
"sonarjs/no-undefined-assignment": "off",
"sonarjs/no-empty-test-file": "error",
"sonarjs/no-ignored-return": "error",
"sonarjs/no-wildcard-import": "off",
"sonarjs/arguments-order": "error",
"sonarjs/pseudo-random": "error",
"sonarjs/for-loop-increment-sign": "error",
"sonarjs/null-dereference": "error",
"sonarjs/no-selector-parameter": "error",
"sonarjs/updated-loop-counter": "error",
"sonarjs/block-scoped-var": "error",
"sonarjs/no-built-in-override": "off",
"sonarjs/prefer-object-literal": "off",
"sonarjs/no-ignored-exceptions": "error",
"sonarjs/no-gratuitous-expressions": "error",
"sonarjs/file-uploads": "error",
"sonarjs/file-permissions": "error",
"sonarjs/no-empty-character-class": "error",
"sonarjs/no-unenclosed-multiline-block": "error",
"sonarjs/index-of-compare-to-positive-number": "error",
"sonarjs/assertions-in-tests": "error",
"sonarjs/no-implicit-global": "error",
"sonarjs/no-useless-catch": "error",
"sonarjs/xml-parser-xxe": "error",
"sonarjs/non-existent-operator": "error",
"sonarjs/web-sql-database": "off",
"sonarjs/post-message": "error",
"sonarjs/no-array-delete": "error",
"sonarjs/no-alphabetical-sort": "error",
"sonarjs/no-incomplete-assertions": "error",
"sonarjs/no-global-this": "error",
"sonarjs/new-operator-misuse": "error",
"sonarjs/no-delete-var": "error",
"sonarjs/strings-comparison": "off",
"sonarjs/file-name-differ-from-class": "off",
"sonarjs/cookie-no-httponly": "error",
"sonarjs/no-nested-conditional": "error",
"sonarjs/no-incorrect-string-concat": "off",
"sonarjs/different-types-comparison": "error",
"sonarjs/inverted-assertion-arguments": "error",
"sonarjs/shorthand-property-grouping": "off",
"sonarjs/updated-const-var": "error",
"sonarjs/arguments-usage": "off",
"sonarjs/destructuring-assignment-syntax": "off",
"sonarjs/no-invariant-returns": "error",
"sonarjs/arrow-function-convention": "off",
"sonarjs/class-prototype": "off",
"sonarjs/generator-without-yield": "error",
"sonarjs/no-require-or-define": "off",
"sonarjs/no-associative-arrays": "error",
"sonarjs/comma-or-logical-or-case": "error",
"sonarjs/no-redundant-jump": "error",
"sonarjs/inconsistent-function-call": "error",
"sonarjs/no-use-of-empty-return-value": "error",
"sonarjs/void-use": "off",
"sonarjs/operation-returning-nan": "off",
"sonarjs/values-not-convertible-to-numbers": "off",
"sonarjs/non-number-in-arithmetic-expression": "off",
"sonarjs/cognitive-complexity": "off",
"sonarjs/argument-type": "error",
"sonarjs/in-operator-type-error": "error",
"sonarjs/array-callback-without-return": "error",
"sonarjs/declarations-in-global-scope": "off",
"sonarjs/function-return-type": "error",
"sonarjs/no-inconsistent-returns": "off",
"sonarjs/no-reference-error": "off",
"sonarjs/no-all-duplicated-branches": "error",
"sonarjs/no-same-line-conditional": "error",
"sonarjs/conditional-indentation": "off",
"sonarjs/no-collection-size-mischeck": "error",
"sonarjs/no-unthrown-error": "error",
"sonarjs/no-unused-collection": "error",
"sonarjs/no-os-command-from-path": "error",
"sonarjs/no-misleading-array-reverse": "error",
"sonarjs/no-for-in-iterable": "off",
"sonarjs/no-element-overwrite": "error",
"sonarjs/no-identical-functions": "error",
"sonarjs/no-empty-collection": "error",
"sonarjs/no-redundant-assignments": "error",
"sonarjs/prefer-type-guard": "error",
"sonarjs/use-type-alias": "error",
"sonarjs/no-return-type-any": "off",
"sonarjs/no-implicit-dependencies": "off",
"sonarjs/no-useless-intersection": "error",
"sonarjs/weak-ssl": "error",
"sonarjs/no-weak-keys": "error",
"sonarjs/csrf": "error",
"sonarjs/production-debug": "error",
"sonarjs/prefer-default-last": "error",
"sonarjs/no-in-misuse": "error",
"sonarjs/no-duplicate-in-composite": "error",
"sonarjs/max-union-size": "off",
"sonarjs/no-undefined-argument": "error",
"sonarjs/no-nested-template-literals": "error",
"sonarjs/prefer-promise-shorthand": "error",
"sonarjs/os-command": "off",
"sonarjs/no-redundant-optional": "error",
"sonarjs/hashing": "error",
"sonarjs/bool-param-default": "off",
"sonarjs/no-try-promise": "error",
"sonarjs/unverified-certificate": "error",
"sonarjs/no-unsafe-unzip": "off",
"sonarjs/cors": "error",
"sonarjs/link-with-target-blank": "error",
"sonarjs/disabled-auto-escaping": "error",
"sonarjs/table-header": "error",
"sonarjs/no-table-as-layout": "error",
"sonarjs/table-header-reference": "error",
"sonarjs/object-alt-content": "error",
"sonarjs/no-clear-text-protocols": "error",
"sonarjs/publicly-writable-directories": "error",
"sonarjs/unverified-hostname": "error",
"sonarjs/encryption-secure-mode": "error",
"sonarjs/no-weak-cipher": "error",
"sonarjs/no-intrusive-permissions": "off",
"sonarjs/insecure-jwt-token": "error",
"sonarjs/x-powered-by": "error",
"sonarjs/hidden-files": "off",
"sonarjs/content-length": "error",
"sonarjs/disabled-resource-integrity": "error",
"sonarjs/content-security-policy": "error",
"sonarjs/no-mixed-content": "off",
"sonarjs/frame-ancestors": "off",
"sonarjs/no-mime-sniff": "error",
"sonarjs/no-referrer-policy": "error",
"sonarjs/strict-transport-security": "error",
"sonarjs/confidential-information-logging": "off",
"sonarjs/no-ip-forward": "off",
"sonarjs/empty-string-repetition": "error",
"sonarjs/regex-complexity": "error",
"sonarjs/no-incompatible-assertion-types": "error",
"sonarjs/anchor-precedence": "error",
"sonarjs/slow-regex": "error",
"sonarjs/no-invalid-regexp": "error",
"sonarjs/unused-named-groups": "error",
"sonarjs/no-same-argument-assert": "error",
"sonarjs/unicode-aware-regex": "off",
"sonarjs/no-misleading-character-class": "error",
"sonarjs/duplicates-in-character-class": "error",
"sonarjs/session-regeneration": "error",
"sonarjs/prefer-specific-assertions": "error",
"sonarjs/no-trivial-assertions": "error",
"sonarjs/test-check-exception": "error",
"sonarjs/stable-tests": "error",
"sonarjs/no-empty-after-reluctant": "error",
"sonarjs/single-character-alternation": "error",
"sonarjs/no-code-after-done": "error",
"sonarjs/disabled-timeout": "error",
"sonarjs/chai-determinate-assertion": "error",
"sonarjs/aws-s3-bucket-insecure-http": "error",
"sonarjs/aws-s3-bucket-versioning": "error",
"sonarjs/aws-s3-bucket-granted-access": "error",
"sonarjs/no-angular-bypass-sanitization": "error",
"sonarjs/aws-iam-public-access": "error",
"sonarjs/aws-ec2-unencrypted-ebs-volume": "error",
"sonarjs/aws-s3-bucket-public-access": "error",
"sonarjs/aws-iam-all-privileges": "error",
"sonarjs/aws-rds-unencrypted-databases": "error",
"sonarjs/aws-iam-all-resources-accessible": "off",
"sonarjs/aws-opensearchservice-domain": "error",
"sonarjs/aws-iam-privilege-escalation": "error",
"sonarjs/aws-sagemaker-unencrypted-notebook": "error",
"sonarjs/aws-restricted-ip-admin-access": "error",
"sonarjs/no-empty-alternatives": "error",
"sonarjs/no-control-regex": "error",
"sonarjs/no-regex-spaces": "error",
"sonarjs/aws-sns-unencrypted-topics": "error",
"sonarjs/existing-groups": "error",
"sonarjs/aws-ec2-rds-dms-public": "error",
"sonarjs/aws-sqs-unencrypted-queue": "error",
"sonarjs/no-empty-group": "error",
"sonarjs/aws-efs-unencrypted": "error",
"sonarjs/aws-apigateway-public-api": "error",
"sonarjs/stateful-regex": "error",
"sonarjs/concise-regex": "error",
"sonarjs/single-char-in-character-classes": "error",
"sonarjs/no-hardcoded-secrets": "error",
"sonarjs/no-exclusive-tests": "error",
"sonarjs/hardcoded-secret-signatures": "error",
"sonarjs/jsx-no-leaked-render": "error",
"sonarjs/no-hook-setter-in-body": "error",
"sonarjs/no-useless-react-setstate": "error",
"sonarjs/no-uniq-key": "error",
"sonarjs/redundant-type-aliases": "error",
"sonarjs/prefer-regexp-exec": "error",
"sonarjs/no-internal-api-use": "error",
"sonarjs/prefer-read-only-props": "error",
"sonarjs/no-literal-call": "error",
"sonarjs/reduce-initial-value": "error",
"sonarjs/no-async-constructor": "error",
"sonarjs/review-blockchain-mnemonic": "error",
"sonarjs/dynamically-constructed-templates": "error",
"sonarjs/no-session-cookies-on-static-assets": "error",
"sonarjs/dompurify-unsafe-config": "error",
"sonarjs/no-duplicate-test-title": "error",
"sonarjs/async-test-assertions": "error",
"sonarjs/no-empty-test-title": "error",
"sonarjs/hooks-before-test-cases": "error",
"sonarjs/no-forced-browser-interaction": "error",
"sonarjs/super-linear-regex": "error",
"react-doctor/no-fetch-in-effect": "error",
"react-doctor/no-async-effect-callback": "error",
"react-doctor/effect-needs-cleanup": "error",
"react-doctor/effect-listener-cleanup-mismatch": "error",
"react-doctor/no-effect-chain": "error",
"react-doctor/no-self-updating-effect": "error",
"react-doctor/no-effect-with-fresh-deps": "error",
"react-doctor/no-effect-event-in-deps": "error",
"react-doctor/no-stale-timer-ref": "error",
"react-doctor/no-mirror-prop-effect": "error",
"react-doctor/hooks-no-nan-in-deps": "error",
"react-doctor/no-mutable-in-deps": "error",
"react-doctor/no-impure-state-updater": "error",
"react-doctor/no-derived-state": "error",
"react-doctor/no-derived-state-effect": "error",
"react-doctor/no-chain-state-updates": "error",
"react-doctor/no-event-handler": "error",
"react-doctor/no-adjust-state-on-prop-change": "error",
"react-doctor/no-reset-all-state-on-prop-change": "error",
"react-doctor/no-pass-live-state-to-parent": "error",
"react-doctor/no-pass-data-to-parent": "error",
"react-doctor/no-initialize-state": "error",
"react-doctor/no-create-context-in-render": "error",
"react-doctor/no-create-store-in-render": "error",
"react-doctor/no-render-in-render": "error",
"react-doctor/no-ref-current-in-render": "error",
"react-doctor/no-json-parse-stringify-clone": "error",
"react-doctor/no-call-component-as-function": "error",
"react-doctor/no-full-lodash-import": "error",
"react-doctor/no-moment": "error",
"react-doctor/no-barrel-import": "error",
"react-doctor/prefer-dynamic-import": "error",
"react-doctor/no-dynamic-import-path": "error",
"react-doctor/no-layout-property-animation": "error",
"react-doctor/no-transition-all": "error",
"react-doctor/no-permanent-will-change": "error",
"react-doctor/no-large-animated-blur": "error",
"react-doctor/no-long-transition-duration": "error",
"react-doctor/no-global-css-variable-animation": "error",
"react-doctor/no-inline-bounce-easing": "error",
"react-doctor/no-scale-from-zero": "error",
"react-doctor/no-layout-transition-inline": "error",
"react-doctor/client-passive-event-listeners": "error",
"react-doctor/no-img-lazy-with-high-fetchpriority": "error",
"react-doctor/no-undeferred-third-party": "error",
"react-doctor/rendering-script-defer-async": "error",
"react-doctor/activity-wraps-effect-heavy-subtree": "error",
"react-doctor/no-eval": "error",
"react-doctor/no-sync-xhr": "error",
"react-doctor/no-document-write": "error",
"react-doctor/auth-token-in-web-storage": "error",
"react-doctor/zod-v4-no-deprecated-schema-apis": "error",
"react-doctor/zod-v4-no-deprecated-error-apis": "error",
"react-doctor/zod-v4-no-deprecated-error-customization": "error",
"react-doctor/zod-v4-prefer-top-level-string-formats": "error",
"react-doctor/no-react19-deprecated-apis": "error",
"react-doctor/no-react-dom-deprecated-apis": "error",
"react-doctor/dialog-has-accessible-name": "error",
"react-doctor/html-no-invalid-table-nesting": "error",
"react-doctor/html-no-nested-interactive": "error",
"react-doctor/html-no-invalid-paragraph-child": "error",
"react-doctor/no-aria-hidden-on-focusable": "error",
"perfectionist/sort-variable-declarations": [
"error",
{
"type": "natural",
"order": "asc"
}
],
"perfectionist/sort-intersection-types": [
"error",
{
"type": "natural",
"order": "asc"
}
],
"perfectionist/sort-import-attributes": [
"error",
{
"type": "natural",
"order": "asc"
}
],
"perfectionist/sort-export-attributes": [
"error",
{
"type": "natural",
"order": "asc"
}
],
"perfectionist/sort-heritage-clauses": [
"error",
{
"type": "natural",
"order": "asc"
}
],
"perfectionist/sort-array-includes": [
"error",
{
"type": "natural",
"order": "asc"
}
],
"perfectionist/sort-named-imports": "off",
"perfectionist/sort-named-exports": "off",
"perfectionist/sort-object-types": [
"error",
{
"type": "natural",
"order": "asc"
}
],
"perfectionist/sort-union-types": "off",
"perfectionist/sort-switch-case": [
"error",
{
"type": "natural",
"order": "asc"
}
],
"perfectionist/sort-decorators": [
"error",
{
"type": "natural",
"order": "asc"
}
],
"perfectionist/sort-interfaces": "off",
"perfectionist/sort-jsx-props": "off",
"perfectionist/sort-modules": "off",
"perfectionist/sort-classes": [
"error",
{
"type": "natural",
"order": "asc"
}
],
"perfectionist/sort-exports": "off",
"perfectionist/sort-objects": "off",
"perfectionist/sort-enums": [
"error",
{
"type": "natural",
"order": "asc"
}
],
"perfectionist/sort-sets": [
"error",
{
"type": "natural",
"order": "asc"
}
],
"perfectionist/sort-maps": [
"error",
{
"type": "natural",
"order": "asc"
}
],
"@tanstack/query/exhaustive-deps": "error",
"@tanstack/query/no-rest-destructuring": "warn",
"@tanstack/query/stable-query-client": "error",
"@tanstack/query/no-unstable-deps": "error",
"@tanstack/query/infinite-query-property-order": "error",
"@tanstack/query/no-void-query-fn": "error",
"@tanstack/query/mutation-property-order": "error",
"@tanstack/query/prefer-query-options": "error",
"@tanstack/router/create-route-property-order": "warn",
"@tanstack/router/route-param-names": "error"
},
"plugins": ["typescript", "react-perf", "import", "jsx-a11y", "unicorn", "react"],
"jsPlugins": [
"eslint-plugin-react-x",
"eslint-plugin-react-dom",
"eslint-plugin-react-jsx",
"eslint-plugin-react-naming-convention",
"eslint-plugin-sonarjs",
"eslint-plugin-perfectionist",
"@tanstack/eslint-plugin-query",
"@tanstack/eslint-plugin-router",
{ "name": "react-doctor", "specifier": "oxlint-plugin-react-doctor" }
],
"env": {
"es2026": true,
"es2020": true,
"browser": true
}
}
]
}