forked from pixijs/pixijs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
eslint.config.mjs
120 lines (118 loc) · 4.31 KB
/
eslint.config.mjs
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
import pluginJest from 'eslint-plugin-jest';
import jsdoc from 'eslint-plugin-jsdoc';
import noMixed from 'eslint-plugin-no-mixed-operators';
import tseslint from 'typescript-eslint';
import config from '@pixi/eslint-config';
export default tseslint.config(
...config,
{
ignores: ['.s3_uploads', 'out', 'docs', 'dist', 'lib', 'transcoders', 'node_modules', 'src/*/**/index.ts'],
},
{
files: ['**/*'],
plugins: {
jsdoc,
'no-mixed-operators': noMixed,
},
settings: {
jsdoc: {
tagNamePreference: {
method: 'method',
function: 'function',
extends: 'extends',
typeParam: 'typeParam',
api: 'api',
},
},
},
rules: {
'no-mixed-operators': 'off',
'no-mixed-operators/no-mixed-operators': 1,
'jsdoc/multiline-blocks': [1, { noMultilineBlocks: true, minimumLengthForMultiline: 115 }],
'jsdoc/check-access': 1,
'jsdoc/check-alignment': 1,
'jsdoc/check-param-names': 1,
'jsdoc/check-property-names': 1,
'jsdoc/check-tag-names': 1,
'jsdoc/check-types': 1,
'jsdoc/check-values': 1,
'jsdoc/empty-tags': 1,
'jsdoc/implements-on-classes': 1,
'jsdoc/tag-lines': 1,
'jsdoc/no-multi-asterisks': [1, { allowWhitespace: true }],
'jsdoc/require-param': 1,
'jsdoc/require-param-description': 0,
'jsdoc/require-param-name': 1,
'jsdoc/require-param-type': ['warn', { contexts: ['TSMethodSignature'] }],
'jsdoc/require-property': 1,
'jsdoc/require-property-description': 1,
'jsdoc/require-property-name': 1,
'jsdoc/require-property-type': 1,
'jsdoc/require-returns-description': 1,
'jsdoc/require-hyphen-before-param-description': 1,
'jsdoc/valid-types': 1,
},
},
{
files: ['**/*.{ts,tsx,mts,cts}'],
rules: {
'@typescript-eslint/triple-slash-reference': [1, { path: 'always' }],
'@typescript-eslint/prefer-readonly': 'error',
'@typescript-eslint/explicit-member-accessibility': [
'error',
{
accessibility: 'explicit',
overrides: {
accessors: 'off',
constructors: 'no-public',
methods: 'explicit',
properties: 'explicit',
parameterProperties: 'explicit',
},
},
],
'@typescript-eslint/naming-convention': [
'error',
{
selector: 'memberLike',
modifiers: ['private'],
format: ['camelCase'],
leadingUnderscore: 'require',
},
],
'@typescript-eslint/no-unsafe-declaration-merging': 0,
'@typescript-eslint/no-duplicate-enum-values': 0,
},
},
{
// update this to match your test files
files: ['**/*.test.ts'],
plugins: { jest: pluginJest },
languageOptions: {
globals: pluginJest.environments.globals.globals,
},
rules: {
...pluginJest.configs['flat/recommended'].rules,
'@typescript-eslint/explicit-member-accessibility': 0,
'@typescript-eslint/no-unused-expressions': 0,
'@typescript-eslint/dot-notation': [
0,
{
allowPrivateClassPropertyAccess: true,
allowProtectedClassPropertyAccess: true,
allowIndexSignaturePropertyAccess: true,
},
],
'dot-notation': 0,
'jest/no-conditional-expect': 'off',
'jest/no-standalone-expect': 'off',
'jest/expect-expect': [
'error',
{
assertFunctionNames: ['expect', 'check32BitColorMatches', 'assertRemovedFromParent'],
additionalTestBlockFunctions: [''],
},
],
},
},
);