mirrored from https://skia.googlesource.com/buildbot
-
Notifications
You must be signed in to change notification settings - Fork 67
/
Copy path.eslintrc.js
150 lines (136 loc) · 4.48 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
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
// To make use of this eslint config file run:
//
// npm ci
//
// Then install eslint support in your IDE of choice.
module.exports = {
root: true,
env: {
browser: true,
es6: true,
},
extends: ['prettier'],
globals: {
Atomics: 'readonly',
SharedArrayBuffer: 'readonly',
},
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module',
},
ignorePatterns: ['dist/', 'build/', '_bazel*', 'new_element/templates/'],
rules: {
camelcase: ['off'],
'class-methods-use-this': ['off'],
'func-names': ['off'],
'import/prefer-default-export': ['off'],
'max-classes-per-file': ['off'],
'max-len': ['off'],
'no-alert': ['off'],
'no-bitwise': ['warn'],
'no-continue': ['off'],
'no-lone-blocks': ['off'],
'no-param-reassign': ['off'],
'no-plusplus': ['off'],
'no-restricted-syntax': ['off'],
'no-return-assign': ['off'],
'no-shadow': ['warn'],
'no-underscore-dangle': ['off'],
'no-use-before-define': ['warn', { functions: false, variables: false }],
'object-shorthand': ['off'],
'prefer-destructuring': ['off'],
'prefer-object-spread': ['off'],
'space-before-function-paren': ['off'],
eqeqeq: ['error'],
// All of these should be turned back to errors once all the instances are
// found and fixed.
'prefer-promise-reject-errors': ['warn'],
radix: ['warn'],
'no-nested-ternary': ['warn'],
'no-restricted-properties': ['warn'],
'no-throw-literal': ['warn'],
'guard-for-in': ['warn'],
},
overrides: [
{
files: ['*.ts', '*.tsx'],
parser: '@typescript-eslint/parser',
// Start with the recommended rules, but turn some of them off in the
// 'rules' section below.
extends: ['plugin:@typescript-eslint/recommended', 'plugin:lit/recommended'],
settings: {
'import/resolver': {
node: {
extensions: ['.js', '.jsx', '.ts', '.tsx'],
},
},
},
plugins: ['@stylistic/eslint-plugin', '@typescript-eslint', 'eslint-plugin-import'],
rules: {
// Allow ! non-null assertions.
'@typescript-eslint/no-non-null-assertion': 'off',
// go2ts will generate empty interfaces.
'@typescript-eslint/no-empty-interface': 'off',
// Require a consistent member declaration order
'@typescript-eslint/member-ordering': 'off',
// Don't require the .ts extension for imports.
'import/extensions': 'off',
// Sometimes we need to import an interface, but also we need the
// side-effects to run, e.g. to register an element, which requires two
// import statements.
//
// https://github.com/Microsoft/TypeScript/wiki/FAQ#why-are-imports-being-elided-in-my-emit
// https://github.com/microsoft/TypeScript/issues/9191
'import/no-duplicates': 'off',
// a: string = 'foo' might be redundant, but it's not harmful.
'@typescript-eslint/no-inferrable-types': 'off',
'@typescript-eslint/no-empty-function': 'off',
'@stylistic/type-annotation-spacing': [
'error',
{
before: false,
after: true,
overrides: {
arrow: {
before: true,
after: true,
},
},
},
],
'@stylistic/lines-between-class-members': [
'error',
'always',
{ exceptAfterOverload: true },
],
'space-before-function-paren': 'off',
'@typescript-eslint/space-before-function-paren': ['off'],
// We already disallow implicit-any, explicit is fine.
'@typescript-eslint/no-explicit-any': 'off',
// All of these should be turned back to errors once all the instances are
// found and fixed.
'@typescript-eslint/ban-types': 'off',
'@typescript-eslint/no-unused-vars': [
'error',
{
args: 'all',
argsIgnorePattern: '^_',
caughtErrors: 'all',
caughtErrorsIgnorePattern: '^_',
destructuredArrayIgnorePattern: '^_',
varsIgnorePattern: '^_',
ignoreRestSiblings: true,
},
],
},
},
{
files: ['*_test.ts'],
rules: {
// Prevents Chai.js assertions such as expect(foo).to.be.true from causing "Expected an
// assignment or function call and instead saw an expression." linting errors.
'no-unused-expressions': 'off',
},
},
],
};