-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path.eslintrc.js
110 lines (110 loc) · 3.63 KB
/
.eslintrc.js
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
module.exports = {
globals: {
graphql: true,
__PATH_PREFIX__: true,
__BASE_PATH__: true, // this will rarely, if ever, be used by consumers
},
extends: ["react-app", "plugin:prettier/recommended", "prettier/react"],
plugins: [`graphql`],
rules: {
// New versions of react use a special jsx runtime that remove the requirement
// for having react in scope for jsx. Once the jsx runtime is backported to all
// versions of react we can make this always be `off`.
// I would also assume that eslint-config-react-app will switch their flag to `off`
// when jsx runtime is stable in all common versions of React.
"react/react-in-jsx-scope": `off`, // Conditionally apply for reactRuntime?
"import/no-webpack-loader-syntax": [0],
"react/jsx-pascal-case": `off`, // Prevents errors with Theme-UI and Styled component
// https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/master/docs/rules
"jsx-a11y/accessible-emoji": `warn`,
"jsx-a11y/alt-text": `warn`,
"jsx-a11y/anchor-has-content": `warn`,
"jsx-a11y/anchor-is-valid": `warn`,
"jsx-a11y/aria-activedescendant-has-tabindex": `warn`,
"jsx-a11y/aria-props": `warn`,
"jsx-a11y/aria-proptypes": `warn`,
"jsx-a11y/aria-role": `warn`,
"jsx-a11y/aria-unsupported-elements": `warn`,
// TODO: It looks like the `autocomplete-valid` rule hasn't been published yet
// "jsx-a11y/autocomplete-valid": [
// "warn",
// {
// inputComponents: [],
// },
// ],
"jsx-a11y/click-events-have-key-events": `warn`,
"jsx-a11y/control-has-associated-label": [
`warn`,
{
ignoreElements: [
`audio`,
`canvas`,
`embed`,
`input`,
`textarea`,
`tr`,
`video`,
],
ignoreRoles: [
`grid`,
`listbox`,
`menu`,
`menubar`,
`radiogroup`,
`row`,
`tablist`,
`toolbar`,
`tree`,
`treegrid`,
],
includeRoles: [`alert`, `dialog`],
},
],
"jsx-a11y/heading-has-content": `warn`,
"jsx-a11y/html-has-lang": `warn`,
"jsx-a11y/iframe-has-title": `warn`,
"jsx-a11y/img-redundant-alt": `warn`,
"jsx-a11y/interactive-supports-focus": [
`warn`,
{
tabbable: [
`button`,
`checkbox`,
`link`,
`progressbar`,
`searchbox`,
`slider`,
`spinbutton`,
`switch`,
`textbox`,
],
},
],
//"jsx-a11y/label-has-for": `warn`, was deprecated and replaced with jsx-a11y/has-associated-control in v6.1.0
"jsx-a11y/label-has-associated-control": `warn`,
"jsx-a11y/lang": `warn`,
"jsx-a11y/media-has-caption": `warn`,
"jsx-a11y/mouse-events-have-key-events": `warn`,
"jsx-a11y/no-access-key": `warn`,
"jsx-a11y/no-autofocus": `warn`,
"jsx-a11y/no-distracting-elements": `warn`,
"jsx-a11y/no-interactive-element-to-noninteractive-role": `warn`,
"jsx-a11y/no-noninteractive-element-interactions": [
`warn`,
{
body: [`onError`, `onLoad`],
iframe: [`onError`, `onLoad`],
img: [`onError`, `onLoad`],
},
],
"jsx-a11y/no-noninteractive-element-to-interactive-role": `warn`,
"jsx-a11y/no-noninteractive-tabindex": `warn`,
"jsx-a11y/no-onchange": `warn`,
"jsx-a11y/no-redundant-roles": `warn`,
"jsx-a11y/no-static-element-interactions": `warn`,
"jsx-a11y/role-has-required-aria-props": `warn`,
"jsx-a11y/role-supports-aria-props": `warn`,
"jsx-a11y/scope": `warn`,
"jsx-a11y/tabindex-no-positive": `warn`,
},
}