11module . exports = {
2- extends : [ 'airbnb' , 'prettier' , 'prettier/react' ] ,
3- parser : 'babel-eslint' ,
4- plugins : [ 'react' , 'jest' , 'flowtype' , 'react-hooks' ] ,
2+ extends : [
3+ 'airbnb' ,
4+ 'plugin:prettier/recommended' ,
5+ 'eslint:recommended' ,
6+ 'plugin:@typescript-eslint/recommended' ,
7+ 'plugin:@typescript-eslint/eslint-recommended' ,
8+ ] ,
9+ parser : '@typescript-eslint/parser' ,
10+ plugins : [ 'react' , 'jest' , 'react-hooks' , '@typescript-eslint' ] ,
511 env : {
612 browser : true ,
713 node : true ,
@@ -10,10 +16,10 @@ module.exports = {
1016 jest : true ,
1117 } ,
1218 settings : {
13- ecmascript : 6 ,
14- jsx : true ,
15- flowtype : {
16- onlyFilesWithFlowAnnotation : true ,
19+ 'import/resolver' : {
20+ node : {
21+ extensions : [ '.js' , '.jsx' , '.ts' , '.tsx' ] ,
22+ } ,
1723 } ,
1824 } ,
1925 rules : {
@@ -29,7 +35,8 @@ module.exports = {
2935 'no-debugger' : 0 ,
3036 'no-underscore-dangle' : 0 ,
3137 'no-shadow' : 0 ,
32- 'no-unused-vars' : [
38+ 'no-useless-constructor' : 1 ,
39+ '@typescript-eslint/no-unused-vars' : [
3340 2 ,
3441 {
3542 vars : 'all' ,
@@ -39,7 +46,16 @@ module.exports = {
3946 } ,
4047 ] ,
4148 'import/first' : 0 ,
42- 'import/extensions' : [ 2 , 'always' , { js : 'never' , json : 'never' } ] ,
49+ 'import/extensions' : [
50+ 'error' ,
51+ 'ignorePackages' ,
52+ {
53+ js : 'never' ,
54+ jsx : 'never' ,
55+ ts : 'never' ,
56+ tsx : 'never' ,
57+ } ,
58+ ] ,
4359 'import/no-named-as-default' : 0 ,
4460 'arrow-body-style' : 0 ,
4561 'no-else-return' : 0 ,
@@ -52,7 +68,6 @@ module.exports = {
5268 'no-restricted-syntax' : 0 ,
5369 'no-nested-ternary' : 0 ,
5470 'import/prefer-default-export' : 0 ,
55- 'import/no-named-as-default' : 0 ,
5671 curly : [ 2 , 'all' ] ,
5772
5873 // React
@@ -94,36 +109,39 @@ module.exports = {
94109 'jest/no-identical-title' : 'error' ,
95110 'jest/valid-expect' : 'error' ,
96111
112+ // Typescript
113+ '@typescript-eslint/explicit-module-boundary-types' : 'off' ,
114+
97115 // Flow
98- 'flowtype/boolean-style' : [ 2 , 'boolean' ] ,
99- 'flowtype/define-flow-type' : 1 ,
100- 'flowtype/delimiter-dangle' : 0 ,
101- 'flowtype/generic-spacing' : [ 2 , 'never' ] ,
102- 'flowtype/no-primitive-constructor-types' : 2 ,
103- 'flowtype/no-types-missing-file-annotation' : 2 ,
104- 'flowtype/no-weak-types' : [
105- 2 ,
106- { Function : false , Object : false , any : false } ,
107- ] ,
108- 'flowtype/object-type-delimiter' : [ 2 , 'comma' ] ,
109- 'flowtype/require-parameter-type' : 0 ,
110- 'flowtype/require-return-type' : [
111- 0 ,
112- 'always' ,
113- {
114- annotateUndefined : 'never' ,
115- } ,
116- ] ,
117- 'flowtype/require-valid-file-annotation' : 2 ,
118- 'flowtype/semi' : [ 2 , 'always' ] ,
119- 'flowtype/space-after-type-colon' : [ 2 , 'always' ] ,
120- 'flowtype/space-before-generic-bracket' : [ 2 , 'never' ] ,
121- 'flowtype/space-before-type-colon' : [ 2 , 'never' ] ,
122- 'flowtype/type-id-match' : 0 ,
123- 'flowtype/union-intersection-spacing' : [ 2 , 'always' ] ,
124- 'flowtype/use-flow-type' : 1 ,
125- 'flowtype/valid-syntax' : 1 ,
126- 'react-hooks/rules-of-hooks' : 'error' ,
127- 'react-hooks/exhaustive-deps' : 'warn' ,
116+ // 'flowtype/boolean-style': [2, 'boolean'],
117+ // 'flowtype/define-flow-type': 1,
118+ // 'flowtype/delimiter-dangle': 0,
119+ // 'flowtype/generic-spacing': [2, 'never'],
120+ // 'flowtype/no-primitive-constructor-types': 2,
121+ // 'flowtype/no-types-missing-file-annotation': 2,
122+ // 'flowtype/no-weak-types': [
123+ // 2,
124+ // { Function: false, Object: false, any: false },
125+ // ],
126+ // 'flowtype/object-type-delimiter': [2, 'comma'],
127+ // 'flowtype/require-parameter-type': 0,
128+ // 'flowtype/require-return-type': [
129+ // 0,
130+ // 'always',
131+ // {
132+ // annotateUndefined: 'never',
133+ // },
134+ // ],
135+ // 'flowtype/require-valid-file-annotation': 2,
136+ // 'flowtype/semi': [2, 'always'],
137+ // 'flowtype/space-after-type-colon': [2, 'always'],
138+ // 'flowtype/space-before-generic-bracket': [2, 'never'],
139+ // 'flowtype/space-before-type-colon': [2, 'never'],
140+ // 'flowtype/type-id-match': 0,
141+ // 'flowtype/union-intersection-spacing': [2, 'always'],
142+ // 'flowtype/use-flow-type': 1,
143+ // 'flowtype/valid-syntax': 1,
144+ // 'react-hooks/rules-of-hooks': 'error',
145+ // 'react-hooks/exhaustive-deps': 'warn',
128146 } ,
129147} ;
0 commit comments