-
Notifications
You must be signed in to change notification settings - Fork 290
/
.eslintrc.json
148 lines (144 loc) · 3.74 KB
/
.eslintrc.json
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
// This config is a little messy because it needs to work
// for both our library and our example app in /examples.
// A good "@TODO" item would be to separate the linting/bundling
// for them.
{
"root": true,
"parser": "@typescript-eslint/parser",
// eslint-plugin-prettier
// - prettier
//
// @typescript-eslint/eslint-plugin
// - @typescript-eslint
//
//
// - import
"plugins": [
"@typescript-eslint",
"import",
"eslint-plugin-tsdoc",
"prettier"
],
// Order matters here. Last will override
// eslint-config-prettier (only turns rules off)
// - prettier # eslint conflicts
// - prettier/react # react conflicts
// - prettier/@typescript-eslint # typescript conflicts
//
// eslint-plugin-prettier
// - plugin:prettier/recommended
//
// eslint-plugin-react
// - plugin:react/recommended
//
// eslint-plugin-react-hooks
// - plugin:react-hooks/recommended
//
// @typescript-eslint/eslint-plugin
// -
"extends": [
"eslint:recommended",
"plugin:import/errors",
"plugin:import/warnings",
"plugin:import/typescript",
"plugin:@typescript-eslint/recommended",
// sets up the plugin AND eslint-config-prettier
"plugin:prettier/recommended"
],
"parserOptions": {
"ecmaVersion": 2022,
"sourceType": "module",
"project": "./tsconfig.json",
"tsconfigRootDir": "./",
"warnOnUnsupportedTypeScriptVersion": false
},
"ignorePatterns": ["packages/docs", "dist", "**/*_test.js", "**/*_jest.js", "**/*babel*", "**/*.d.ts", "**/*_types.ts"],
"rules": {
"import/no-cycle": ["error", { "maxDepth": 15 }],
// Enforce consistent brace style for all control statements for readability
"curly": "error",
"tsdoc/syntax": "off",
"@typescript-eslint/ban-ts-comment": "off",
"no-console": "off",
"no-unused-vars": "off",
"@typescript-eslint/no-unused-vars": "off",
"@typescript-eslint/consistent-type-exports": "error",
"@typescript-eslint/no-unsafe-function-type": "off",
"@typescript-eslint/no-empty-object-type": "off",
"@typescript-eslint/no-unused-expressions": "warn",
"@typescript-eslint/consistent-type-imports": [
"error",
{
"prefer": "type-imports",
"disallowTypeAnnotations": true
}
],
"@typescript-eslint/no-import-type-side-effects": "error",
"import/extensions": [
"error",
"ignorePackages",
{
"js": "never",
"jsx": "never",
"ts": "never",
"tsx": "never"
}
],
"import/prefer-default-export": "off",
"prettier/prettier": [
"error",
{
"endOfLine": "auto",
"printWidth": 80
}
],
"no-undef": "warn",
"import/no-named-as-default": "off",
"import/no-named-as-default-member": "off"
},
"overrides": [
{
"files": ["*.ts", "*.tsx"], // Apply the rules to TypeScript files
"rules": {
"import/no-cycle": ["error", { "maxDepth": 15 }]
}
},
{
"files": ["**/examples/**"],
"rules": {
"@typescript-eslint/no-explicit-any": "off" // Disable the rule for files in the examples directory
}
}
],
"env": {
"es6": true,
"browser": true,
"node": true
},
"settings": {
"import/resolver": {
"node": {
"extensions": [".js", ".jsx", ".ts", ".tsx"]
},
"typescript": {
"project": "./tsconfig.json"
}
}
},
"globals": {
"context": true,
"jasmine": true,
"es6": true,
"browser": true,
"node": true,
"afterEach": true,
"beforeEach": true,
"done": true,
"describe": "readonly",
"beforeAll": "readonly",
"it": "readonly",
"jest": "readonly",
"expect": "readonly",
"assert": true
}
}