-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy patheslint.config.js
More file actions
37 lines (36 loc) · 1.44 KB
/
Copy patheslint.config.js
File metadata and controls
37 lines (36 loc) · 1.44 KB
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
import js from '@eslint/js';
import globals from 'globals';
import reactHooks from 'eslint-plugin-react-hooks';
import tseslint from 'typescript-eslint';
export default tseslint.config(
{ ignores: ['dist', 'coverage', 'docs/.vitepress/cache', 'electron/dist', 'api/build', 'release', 'node_modules', '.claude', 'scratch'] },
{
extends: [js.configs.recommended, ...tseslint.configs.recommended],
files: ['**/*.{ts,tsx}'],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
},
plugins: {
'react-hooks': reactHooks,
},
rules: {
...reactHooks.configs.recommended.rules,
'react-hooks/exhaustive-deps': 'error',
// Visible-but-non-blocking. We have ~130 existing `any` at browser-API
// boundaries (WebMIDI, WebGPU, native addon). New uses should justify
// themselves; the `npm run lint` ceiling prevents net regression.
'@typescript-eslint/no-explicit-any': 'warn',
// ts-ignore is banned outright; ts-expect-error must carry a reason.
'@typescript-eslint/ban-ts-comment': ['error', {
'ts-ignore': true,
'ts-nocheck': true,
'ts-check': false,
'ts-expect-error': 'allow-with-description',
minimumDescriptionLength: 8,
}],
'react-hooks/set-state-in-effect': 'off',
'@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_', varsIgnorePattern: '^_', caughtErrorsIgnorePattern: '^_' }]
},
}
);