1module.exports = {
2 parserOptions: {
3 ecmaVersion: 9,
4 sourceType: 'module',
5 ecmaFeatures: {
6 modules: true,
7 },
8 },
9 extends: ['prettier'],
10 plugins: ['prettier', 'jest'],
11 ignorePatterns: ['node_modules/', 'dist/', 'coverage/', 'perf/'],
12 rules: {
13 'sort-keys': 'off',
14 'no-console': ['error', { allow: ['warn', 'error'] }],
15 'prefer-arrow/prefer-arrow-functions': 'off',
16 'prefer-rest-params': 'off',
17
18 'prettier/prettier': [
19 'error',
20 {
21 singleQuote: true,
22 arrowParens: 'avoid',
23 trailingComma: 'es5',
24 },
25 ],
26 },
27
28 overrides: [
29 {
30 files: ['*.test.ts', '*.test.tsx', '*.spec.ts', '*.spec.tsx'],
31 rules: {
32 'jest/no-disabled-tests': 'error',
33 'jest/no-focused-tests': 'error',
34 'jest/no-identical-title': 'warn',
35 'jest/consistent-test-it': ['warn', { fn: 'it' }],
36 },
37 },
38 ],
39
40 overrides: [
41 {
42 files: ['*.ts'],
43 parser: '@typescript-eslint/parser',
44 extends: ['plugin:@typescript-eslint/recommended', 'prettier'],
45 rules: {
46 '@typescript-eslint/explicit-module-boundary-types': 'off',
47 '@typescript-eslint/no-use-before-define': 'off',
48 '@typescript-eslint/ban-types': 'off',
49 '@typescript-eslint/ban-ts-comment': 'off',
50 '@typescript-eslint/member-ordering': 'off',
51 '@typescript-eslint/explicit-member-accessibility': 'off',
52 '@typescript-eslint/no-object-literal-type-assertion': 'off',
53 '@typescript-eslint/explicit-function-return-type': 'off',
54 '@typescript-eslint/interface-name-prefix': 'off',
55 '@typescript-eslint/no-non-null-assertion': 'off',
56 '@typescript-eslint/no-misused-new': 'off',
57 '@typescript-eslint/no-explicit-any': 'off',
58 '@typescript-eslint/array-type': 'off',
59 '@typescript-eslint/no-empty-function': 'off',
60 '@typescript-eslint/no-unused-vars': 'off',
61 'prefer-rest-params': 'off',
62 },
63 },
64 ],
65};