@cubejs-backend/linter 1.7.36 → 1.7.38

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.
@@ -0,0 +1,917 @@
1
+ // eslint-config-airbnb (the React flavour) ported to oxlint, expressed as the delta from
2
+ // the repo-root config. Extended by every React package in the repo: cubejs-client-react
3
+ // and cubejs-playground.
4
+ //
5
+ // Rules with no oxlint equivalent and not carried over: react/sort-comp,
6
+ // react/no-deprecated, react/no-typos, react/no-unused-state,
7
+ // react/no-access-state-in-setstate, and the PropTypes family (no-unused-prop-types,
8
+ // require-default-props, forbid-foreign-prop-types, default-props-match-prop-types) --
9
+ // all legacy class-component rules, and both consumers are TS + hooks.
10
+ {
11
+ "$schema": "../../node_modules/oxlint/configuration_schema.json",
12
+ "plugins": [
13
+ "eslint",
14
+ "import",
15
+ "jsx-a11y",
16
+ "node",
17
+ "react",
18
+ "typescript",
19
+ "unicorn"
20
+ ],
21
+ "jsPlugins": [
22
+ "@stylistic/eslint-plugin"
23
+ ],
24
+ "rules": {
25
+ "@stylistic/jsx-closing-bracket-location": [
26
+ "error",
27
+ "line-aligned"
28
+ ],
29
+ "@stylistic/jsx-closing-tag-location": "error",
30
+ "@stylistic/jsx-curly-newline": [
31
+ "error",
32
+ {
33
+ "multiline": "consistent",
34
+ "singleline": "consistent"
35
+ }
36
+ ],
37
+ "@stylistic/jsx-curly-spacing": [
38
+ "error",
39
+ "never",
40
+ {
41
+ "allowMultiline": true
42
+ }
43
+ ],
44
+ "@stylistic/jsx-equals-spacing": [
45
+ "error",
46
+ "never"
47
+ ],
48
+ "@stylistic/jsx-max-props-per-line": [
49
+ "error",
50
+ {
51
+ "maximum": 1,
52
+ "when": "multiline"
53
+ }
54
+ ],
55
+ "@stylistic/jsx-one-expression-per-line": [
56
+ "error",
57
+ {
58
+ "allow": "single-child"
59
+ }
60
+ ],
61
+ "@stylistic/jsx-quotes": [
62
+ "error",
63
+ "prefer-double"
64
+ ],
65
+ "@stylistic/jsx-wrap-multilines": [
66
+ "error",
67
+ {
68
+ "declaration": "parens-new-line",
69
+ "assignment": "parens-new-line",
70
+ "return": "parens-new-line",
71
+ "arrow": "parens-new-line",
72
+ "condition": "parens-new-line",
73
+ "logical": "parens-new-line",
74
+ "prop": "parens-new-line"
75
+ }
76
+ ],
77
+ "@stylistic/max-len": [
78
+ "error",
79
+ 120,
80
+ 2,
81
+ {
82
+ "ignoreUrls": true,
83
+ "ignoreComments": true,
84
+ "ignoreRegExpLiterals": true,
85
+ "ignoreStrings": true,
86
+ "ignoreTemplateLiterals": true
87
+ }
88
+ ],
89
+ "@stylistic/no-trailing-spaces": [
90
+ "error",
91
+ {
92
+ "skipBlankLines": true,
93
+ "ignoreComments": false
94
+ }
95
+ ],
96
+ "@stylistic/operator-linebreak": [
97
+ "error",
98
+ "before",
99
+ {
100
+ "overrides": {
101
+ "=": "none"
102
+ }
103
+ }
104
+ ],
105
+ "@stylistic/type-annotation-spacing": "off",
106
+ "import/no-named-as-default": "off",
107
+ "import/no-named-as-default-member": "off",
108
+ "jsx-a11y/alt-text": [
109
+ "error",
110
+ {
111
+ "elements": [
112
+ "img",
113
+ "object",
114
+ "area",
115
+ "input[type=\"image\"]"
116
+ ],
117
+ "img": [],
118
+ "object": [],
119
+ "area": [],
120
+ "input[type=\"image\"]": []
121
+ }
122
+ ],
123
+ "jsx-a11y/anchor-has-content": [
124
+ "error",
125
+ {
126
+ "components": []
127
+ }
128
+ ],
129
+ "jsx-a11y/anchor-is-valid": [
130
+ "error",
131
+ {
132
+ "components": [
133
+ "Link"
134
+ ],
135
+ "specialLink": [
136
+ "to"
137
+ ],
138
+ "aspects": [
139
+ "noHref",
140
+ "invalidHref",
141
+ "preferButton"
142
+ ]
143
+ }
144
+ ],
145
+ "jsx-a11y/aria-activedescendant-has-tabindex": "error",
146
+ "jsx-a11y/aria-props": "error",
147
+ "jsx-a11y/aria-proptypes": "error",
148
+ "jsx-a11y/aria-role": [
149
+ "error",
150
+ {
151
+ "ignoreNonDOM": false
152
+ }
153
+ ],
154
+ "jsx-a11y/aria-unsupported-elements": "error",
155
+ "jsx-a11y/click-events-have-key-events": "error",
156
+ "jsx-a11y/control-has-associated-label": [
157
+ "error",
158
+ {
159
+ "labelAttributes": [
160
+ "label"
161
+ ],
162
+ "controlComponents": [],
163
+ "ignoreElements": [
164
+ "audio",
165
+ "canvas",
166
+ "embed",
167
+ "input",
168
+ "textarea",
169
+ "tr",
170
+ "video"
171
+ ],
172
+ "ignoreRoles": [
173
+ "grid",
174
+ "listbox",
175
+ "menu",
176
+ "menubar",
177
+ "radiogroup",
178
+ "row",
179
+ "tablist",
180
+ "toolbar",
181
+ "tree",
182
+ "treegrid"
183
+ ],
184
+ "depth": 5
185
+ }
186
+ ],
187
+ "jsx-a11y/heading-has-content": [
188
+ "error",
189
+ {
190
+ "components": [
191
+ ""
192
+ ]
193
+ }
194
+ ],
195
+ "jsx-a11y/html-has-lang": "error",
196
+ "jsx-a11y/iframe-has-title": "error",
197
+ "jsx-a11y/img-redundant-alt": "error",
198
+ "jsx-a11y/interactive-supports-focus": "error",
199
+ "jsx-a11y/label-has-associated-control": [
200
+ "error",
201
+ {
202
+ "labelComponents": [],
203
+ "labelAttributes": [],
204
+ "controlComponents": [],
205
+ "assert": "both",
206
+ "depth": 25
207
+ }
208
+ ],
209
+ "jsx-a11y/lang": "error",
210
+ "jsx-a11y/media-has-caption": [
211
+ "error",
212
+ {
213
+ "audio": [],
214
+ "video": [],
215
+ "track": []
216
+ }
217
+ ],
218
+ "jsx-a11y/mouse-events-have-key-events": "error",
219
+ "jsx-a11y/no-access-key": "error",
220
+ "jsx-a11y/no-autofocus": [
221
+ "error",
222
+ {
223
+ "ignoreNonDOM": true
224
+ }
225
+ ],
226
+ "jsx-a11y/no-distracting-elements": [
227
+ "error",
228
+ {
229
+ "elements": [
230
+ "marquee",
231
+ "blink"
232
+ ]
233
+ }
234
+ ],
235
+ "jsx-a11y/no-interactive-element-to-noninteractive-role": [
236
+ "error",
237
+ {
238
+ "tr": [
239
+ "none",
240
+ "presentation"
241
+ ]
242
+ }
243
+ ],
244
+ "jsx-a11y/no-noninteractive-element-interactions": [
245
+ "error",
246
+ {
247
+ "handlers": [
248
+ "onClick",
249
+ "onMouseDown",
250
+ "onMouseUp",
251
+ "onKeyPress",
252
+ "onKeyDown",
253
+ "onKeyUp"
254
+ ]
255
+ }
256
+ ],
257
+ "jsx-a11y/no-noninteractive-element-to-interactive-role": [
258
+ "error",
259
+ {
260
+ "ul": [
261
+ "listbox",
262
+ "menu",
263
+ "menubar",
264
+ "radiogroup",
265
+ "tablist",
266
+ "tree",
267
+ "treegrid"
268
+ ],
269
+ "ol": [
270
+ "listbox",
271
+ "menu",
272
+ "menubar",
273
+ "radiogroup",
274
+ "tablist",
275
+ "tree",
276
+ "treegrid"
277
+ ],
278
+ "li": [
279
+ "menuitem",
280
+ "option",
281
+ "row",
282
+ "tab",
283
+ "treeitem"
284
+ ],
285
+ "table": [
286
+ "grid"
287
+ ],
288
+ "td": [
289
+ "gridcell"
290
+ ]
291
+ }
292
+ ],
293
+ "jsx-a11y/no-noninteractive-tabindex": [
294
+ "error",
295
+ {
296
+ "tags": [],
297
+ "roles": [
298
+ "tabpanel"
299
+ ]
300
+ }
301
+ ],
302
+ "jsx-a11y/no-redundant-roles": "error",
303
+ "jsx-a11y/no-static-element-interactions": [
304
+ "error",
305
+ {
306
+ "handlers": [
307
+ "onClick",
308
+ "onMouseDown",
309
+ "onMouseUp",
310
+ "onKeyPress",
311
+ "onKeyDown",
312
+ "onKeyUp"
313
+ ]
314
+ }
315
+ ],
316
+ "jsx-a11y/role-has-required-aria-props": "error",
317
+ "jsx-a11y/role-supports-aria-props": "error",
318
+ "jsx-a11y/scope": "error",
319
+ "jsx-a11y/tabindex-no-positive": "error",
320
+ "max-classes-per-file": [
321
+ "error",
322
+ 1
323
+ ],
324
+ "no-await-in-loop": "error",
325
+ "no-empty-function": [
326
+ "error",
327
+ {
328
+ "allow": [
329
+ "arrowFunctions",
330
+ "functions",
331
+ "methods"
332
+ ]
333
+ }
334
+ ],
335
+ "no-undef": "off",
336
+ "no-underscore-dangle": [
337
+ "error",
338
+ {
339
+ "allow": [
340
+ "__REDUX_DEVTOOLS_EXTENSION_COMPOSE__"
341
+ ],
342
+ "allowAfterThis": false,
343
+ "allowAfterSuper": false,
344
+ "enforceInMethodNames": true,
345
+ "allowAfterThisConstructor": false,
346
+ "allowFunctionParams": true,
347
+ "enforceInClassFields": false,
348
+ "allowInArrayDestructuring": true,
349
+ "allowInObjectDestructuring": true
350
+ }
351
+ ],
352
+ "no-unused-vars": [
353
+ "error",
354
+ {
355
+ "args": "none",
356
+ "ignoreRestSiblings": true
357
+ }
358
+ ],
359
+ "no-use-before-define": "error",
360
+ "no-useless-constructor": "error",
361
+ "prefer-object-spread": "error",
362
+ "prefer-promise-reject-errors": [
363
+ "error",
364
+ {
365
+ "allowEmptyReject": true
366
+ }
367
+ ],
368
+ "react/button-has-type": [
369
+ "error",
370
+ {
371
+ "button": true,
372
+ "submit": true,
373
+ "reset": false
374
+ }
375
+ ],
376
+ "react/jsx-boolean-value": [
377
+ "error",
378
+ "never",
379
+ {
380
+ "always": []
381
+ }
382
+ ],
383
+ "react/jsx-curly-brace-presence": [
384
+ "error",
385
+ {
386
+ "props": "never",
387
+ "children": "never"
388
+ }
389
+ ],
390
+ "react/jsx-fragments": [
391
+ "error",
392
+ "syntax"
393
+ ],
394
+ "react/jsx-no-comment-textnodes": "error",
395
+ "react/jsx-no-duplicate-props": "error",
396
+ "react/jsx-no-target-blank": [
397
+ "error",
398
+ {
399
+ "enforceDynamicLinks": "always",
400
+ "links": true,
401
+ "forms": false
402
+ }
403
+ ],
404
+ "react/jsx-pascal-case": [
405
+ "error",
406
+ {
407
+ "allowAllCaps": true,
408
+ "ignore": []
409
+ }
410
+ ],
411
+ "react/no-array-index-key": "error",
412
+ "react/no-children-prop": "error",
413
+ "react/no-danger": "warn",
414
+ "react/no-danger-with-children": "error",
415
+ "react/no-did-update-set-state": "error",
416
+ "react/no-find-dom-node": "error",
417
+ "react/no-is-mounted": "error",
418
+ "react/no-redundant-should-component-update": "error",
419
+ "react/no-render-return-value": "error",
420
+ "react/no-string-refs": "error",
421
+ "react/no-this-in-sfc": "error",
422
+ "react/no-unescaped-entities": "error",
423
+ "react/no-unknown-property": "error",
424
+ "react/no-will-update-set-state": "error",
425
+ "react/prefer-es6-class": [
426
+ "error",
427
+ "always"
428
+ ],
429
+ "react/require-render-return": "error",
430
+ "react/self-closing-comp": "error",
431
+ "react/state-in-constructor": [
432
+ "error",
433
+ "always"
434
+ ],
435
+ "react/style-prop-object": "error",
436
+ "react/void-dom-elements-no-children": "error",
437
+ "typescript/prefer-as-const": "off",
438
+ "typescript/prefer-namespace-keyword": "off",
439
+ "typescript/triple-slash-reference": "off",
440
+ "@stylistic/indent": [
441
+ "error",
442
+ 2,
443
+ {
444
+ "SwitchCase": 1,
445
+ "VariableDeclarator": 1,
446
+ "outerIIFEBody": 1,
447
+ "FunctionDeclaration": {
448
+ "parameters": 1,
449
+ "body": 1
450
+ },
451
+ "FunctionExpression": {
452
+ "parameters": 1,
453
+ "body": 1
454
+ },
455
+ "CallExpression": {
456
+ "arguments": 1
457
+ },
458
+ "ArrayExpression": 1,
459
+ "ObjectExpression": 1,
460
+ "ImportDeclaration": 1,
461
+ "flatTernaryExpressions": false,
462
+ "ignoredNodes": [],
463
+ "ignoreComments": false,
464
+ "offsetTernaryExpressions": false
465
+ }
466
+ ]
467
+ },
468
+ "overrides": [
469
+ {
470
+ "files": [
471
+ "**/*.ts",
472
+ "**/*.tsx"
473
+ ],
474
+ "rules": {
475
+ "@stylistic/jsx-closing-bracket-location": [
476
+ "error",
477
+ "line-aligned"
478
+ ],
479
+ "@stylistic/jsx-closing-tag-location": "error",
480
+ "@stylistic/jsx-curly-newline": [
481
+ "error",
482
+ {
483
+ "multiline": "consistent",
484
+ "singleline": "consistent"
485
+ }
486
+ ],
487
+ "@stylistic/jsx-curly-spacing": [
488
+ "error",
489
+ "never",
490
+ {
491
+ "allowMultiline": true
492
+ }
493
+ ],
494
+ "@stylistic/jsx-equals-spacing": [
495
+ "error",
496
+ "never"
497
+ ],
498
+ "@stylistic/jsx-max-props-per-line": [
499
+ "error",
500
+ {
501
+ "maximum": 1,
502
+ "when": "multiline"
503
+ }
504
+ ],
505
+ "@stylistic/jsx-one-expression-per-line": [
506
+ "error",
507
+ {
508
+ "allow": "single-child"
509
+ }
510
+ ],
511
+ "@stylistic/jsx-quotes": [
512
+ "error",
513
+ "prefer-double"
514
+ ],
515
+ "@stylistic/jsx-wrap-multilines": [
516
+ "error",
517
+ {
518
+ "declaration": "parens-new-line",
519
+ "assignment": "parens-new-line",
520
+ "return": "parens-new-line",
521
+ "arrow": "parens-new-line",
522
+ "condition": "parens-new-line",
523
+ "logical": "parens-new-line",
524
+ "prop": "parens-new-line"
525
+ }
526
+ ],
527
+ "@stylistic/max-len": [
528
+ "error",
529
+ 120,
530
+ 2,
531
+ {
532
+ "ignoreUrls": true,
533
+ "ignoreComments": true,
534
+ "ignoreRegExpLiterals": true,
535
+ "ignoreStrings": true,
536
+ "ignoreTemplateLiterals": true
537
+ }
538
+ ],
539
+ "@stylistic/no-trailing-spaces": [
540
+ "error",
541
+ {
542
+ "skipBlankLines": true,
543
+ "ignoreComments": false
544
+ }
545
+ ],
546
+ "@stylistic/operator-linebreak": [
547
+ "error",
548
+ "before",
549
+ {
550
+ "overrides": {
551
+ "=": "none"
552
+ }
553
+ }
554
+ ],
555
+ "@stylistic/type-annotation-spacing": "off",
556
+ "constructor-super": "error",
557
+ "getter-return": [
558
+ "error",
559
+ {
560
+ "allowImplicit": true
561
+ }
562
+ ],
563
+ "import/no-named-as-default": "off",
564
+ "import/no-named-as-default-member": "off",
565
+ "jsx-a11y/alt-text": [
566
+ "error",
567
+ {
568
+ "elements": [
569
+ "img",
570
+ "object",
571
+ "area",
572
+ "input[type=\"image\"]"
573
+ ],
574
+ "img": [],
575
+ "object": [],
576
+ "area": [],
577
+ "input[type=\"image\"]": []
578
+ }
579
+ ],
580
+ "jsx-a11y/anchor-has-content": [
581
+ "error",
582
+ {
583
+ "components": []
584
+ }
585
+ ],
586
+ "jsx-a11y/anchor-is-valid": [
587
+ "error",
588
+ {
589
+ "components": [
590
+ "Link"
591
+ ],
592
+ "specialLink": [
593
+ "to"
594
+ ],
595
+ "aspects": [
596
+ "noHref",
597
+ "invalidHref",
598
+ "preferButton"
599
+ ]
600
+ }
601
+ ],
602
+ "jsx-a11y/aria-activedescendant-has-tabindex": "error",
603
+ "jsx-a11y/aria-props": "error",
604
+ "jsx-a11y/aria-proptypes": "error",
605
+ "jsx-a11y/aria-role": [
606
+ "error",
607
+ {
608
+ "ignoreNonDOM": false
609
+ }
610
+ ],
611
+ "jsx-a11y/aria-unsupported-elements": "error",
612
+ "jsx-a11y/click-events-have-key-events": "error",
613
+ "jsx-a11y/control-has-associated-label": [
614
+ "error",
615
+ {
616
+ "labelAttributes": [
617
+ "label"
618
+ ],
619
+ "controlComponents": [],
620
+ "ignoreElements": [
621
+ "audio",
622
+ "canvas",
623
+ "embed",
624
+ "input",
625
+ "textarea",
626
+ "tr",
627
+ "video"
628
+ ],
629
+ "ignoreRoles": [
630
+ "grid",
631
+ "listbox",
632
+ "menu",
633
+ "menubar",
634
+ "radiogroup",
635
+ "row",
636
+ "tablist",
637
+ "toolbar",
638
+ "tree",
639
+ "treegrid"
640
+ ],
641
+ "depth": 5
642
+ }
643
+ ],
644
+ "jsx-a11y/heading-has-content": [
645
+ "error",
646
+ {
647
+ "components": [
648
+ ""
649
+ ]
650
+ }
651
+ ],
652
+ "jsx-a11y/html-has-lang": "error",
653
+ "jsx-a11y/iframe-has-title": "error",
654
+ "jsx-a11y/img-redundant-alt": "error",
655
+ "jsx-a11y/interactive-supports-focus": "error",
656
+ "jsx-a11y/label-has-associated-control": [
657
+ "error",
658
+ {
659
+ "labelComponents": [],
660
+ "labelAttributes": [],
661
+ "controlComponents": [],
662
+ "assert": "both",
663
+ "depth": 25
664
+ }
665
+ ],
666
+ "jsx-a11y/lang": "error",
667
+ "jsx-a11y/media-has-caption": [
668
+ "error",
669
+ {
670
+ "audio": [],
671
+ "video": [],
672
+ "track": []
673
+ }
674
+ ],
675
+ "jsx-a11y/mouse-events-have-key-events": "error",
676
+ "jsx-a11y/no-access-key": "error",
677
+ "jsx-a11y/no-autofocus": [
678
+ "error",
679
+ {
680
+ "ignoreNonDOM": true
681
+ }
682
+ ],
683
+ "jsx-a11y/no-distracting-elements": [
684
+ "error",
685
+ {
686
+ "elements": [
687
+ "marquee",
688
+ "blink"
689
+ ]
690
+ }
691
+ ],
692
+ "jsx-a11y/no-interactive-element-to-noninteractive-role": [
693
+ "error",
694
+ {
695
+ "tr": [
696
+ "none",
697
+ "presentation"
698
+ ]
699
+ }
700
+ ],
701
+ "jsx-a11y/no-noninteractive-element-interactions": [
702
+ "error",
703
+ {
704
+ "handlers": [
705
+ "onClick",
706
+ "onMouseDown",
707
+ "onMouseUp",
708
+ "onKeyPress",
709
+ "onKeyDown",
710
+ "onKeyUp"
711
+ ]
712
+ }
713
+ ],
714
+ "jsx-a11y/no-noninteractive-element-to-interactive-role": [
715
+ "error",
716
+ {
717
+ "ul": [
718
+ "listbox",
719
+ "menu",
720
+ "menubar",
721
+ "radiogroup",
722
+ "tablist",
723
+ "tree",
724
+ "treegrid"
725
+ ],
726
+ "ol": [
727
+ "listbox",
728
+ "menu",
729
+ "menubar",
730
+ "radiogroup",
731
+ "tablist",
732
+ "tree",
733
+ "treegrid"
734
+ ],
735
+ "li": [
736
+ "menuitem",
737
+ "option",
738
+ "row",
739
+ "tab",
740
+ "treeitem"
741
+ ],
742
+ "table": [
743
+ "grid"
744
+ ],
745
+ "td": [
746
+ "gridcell"
747
+ ]
748
+ }
749
+ ],
750
+ "jsx-a11y/no-noninteractive-tabindex": [
751
+ "error",
752
+ {
753
+ "tags": [],
754
+ "roles": [
755
+ "tabpanel"
756
+ ]
757
+ }
758
+ ],
759
+ "jsx-a11y/no-redundant-roles": "error",
760
+ "jsx-a11y/no-static-element-interactions": [
761
+ "error",
762
+ {
763
+ "handlers": [
764
+ "onClick",
765
+ "onMouseDown",
766
+ "onMouseUp",
767
+ "onKeyPress",
768
+ "onKeyDown",
769
+ "onKeyUp"
770
+ ]
771
+ }
772
+ ],
773
+ "jsx-a11y/role-has-required-aria-props": "error",
774
+ "jsx-a11y/role-supports-aria-props": "error",
775
+ "jsx-a11y/scope": "error",
776
+ "jsx-a11y/tabindex-no-positive": "error",
777
+ "max-classes-per-file": [
778
+ "error",
779
+ 1
780
+ ],
781
+ "no-await-in-loop": "error",
782
+ "no-const-assign": "error",
783
+ "no-dupe-class-members": "error",
784
+ "no-dupe-keys": "error",
785
+ "no-empty-function": [
786
+ "error",
787
+ {
788
+ "allow": [
789
+ "arrowFunctions",
790
+ "functions",
791
+ "methods"
792
+ ]
793
+ }
794
+ ],
795
+ "no-func-assign": "error",
796
+ "no-new-native-nonconstructor": "error",
797
+ "no-obj-calls": "error",
798
+ "no-redeclare": "error",
799
+ "no-this-before-super": "error",
800
+ "no-undef": "off",
801
+ "no-underscore-dangle": [
802
+ "error",
803
+ {
804
+ "allow": [
805
+ "__REDUX_DEVTOOLS_EXTENSION_COMPOSE__"
806
+ ],
807
+ "allowAfterThis": false,
808
+ "allowAfterSuper": false,
809
+ "enforceInMethodNames": true,
810
+ "allowAfterThisConstructor": false,
811
+ "allowFunctionParams": true,
812
+ "enforceInClassFields": false,
813
+ "allowInArrayDestructuring": true,
814
+ "allowInObjectDestructuring": true
815
+ }
816
+ ],
817
+ "no-unreachable": "error",
818
+ "no-unsafe-negation": "error",
819
+ "no-unused-vars": [
820
+ "error",
821
+ {
822
+ "args": "none",
823
+ "ignoreRestSiblings": true
824
+ }
825
+ ],
826
+ "no-use-before-define": "error",
827
+ "no-useless-constructor": "error",
828
+ "prefer-object-spread": "error",
829
+ "prefer-promise-reject-errors": [
830
+ "error",
831
+ {
832
+ "allowEmptyReject": true
833
+ }
834
+ ],
835
+ "react/button-has-type": [
836
+ "error",
837
+ {
838
+ "button": true,
839
+ "submit": true,
840
+ "reset": false
841
+ }
842
+ ],
843
+ "react/jsx-boolean-value": [
844
+ "error",
845
+ "never",
846
+ {
847
+ "always": []
848
+ }
849
+ ],
850
+ "react/jsx-curly-brace-presence": [
851
+ "error",
852
+ {
853
+ "props": "never",
854
+ "children": "never"
855
+ }
856
+ ],
857
+ "react/jsx-fragments": [
858
+ "error",
859
+ "syntax"
860
+ ],
861
+ "react/jsx-no-comment-textnodes": "error",
862
+ "react/jsx-no-duplicate-props": "error",
863
+ "react/jsx-no-target-blank": [
864
+ "error",
865
+ {
866
+ "enforceDynamicLinks": "always",
867
+ "links": true,
868
+ "forms": false
869
+ }
870
+ ],
871
+ "react/jsx-pascal-case": [
872
+ "error",
873
+ {
874
+ "allowAllCaps": true,
875
+ "ignore": []
876
+ }
877
+ ],
878
+ "react/no-array-index-key": "error",
879
+ "react/no-children-prop": "error",
880
+ "react/no-danger": "warn",
881
+ "react/no-danger-with-children": "error",
882
+ "react/no-did-update-set-state": "error",
883
+ "react/no-find-dom-node": "error",
884
+ "react/no-is-mounted": "error",
885
+ "react/no-redundant-should-component-update": "error",
886
+ "react/no-render-return-value": "error",
887
+ "react/no-string-refs": "error",
888
+ "react/no-this-in-sfc": "error",
889
+ "react/no-unescaped-entities": "error",
890
+ "react/no-unknown-property": "error",
891
+ "react/no-will-update-set-state": "error",
892
+ "react/prefer-es6-class": [
893
+ "error",
894
+ "always"
895
+ ],
896
+ "react/require-render-return": "error",
897
+ "react/self-closing-comp": "error",
898
+ "react/state-in-constructor": [
899
+ "error",
900
+ "always"
901
+ ],
902
+ "react/style-prop-object": "error",
903
+ "react/void-dom-elements-no-children": "error",
904
+ "typescript/explicit-member-accessibility": "off",
905
+ "typescript/prefer-as-const": "off",
906
+ "typescript/prefer-namespace-keyword": "off",
907
+ "typescript/triple-slash-reference": "off",
908
+ "valid-typeof": [
909
+ "error",
910
+ {
911
+ "requireStringLiterals": true
912
+ }
913
+ ]
914
+ }
915
+ }
916
+ ]
917
+ }