1
- import js from '@eslint/js' ;
2
1
import globals from 'globals' ;
3
2
import typescriptEslint from '@typescript-eslint/eslint-plugin' ;
4
3
import typescriptParser from '@typescript-eslint/parser' ;
5
4
import unicorn from 'eslint-plugin-unicorn' ;
6
5
import importPlugin from 'eslint-plugin-import' ;
7
- import prettierConfig from 'eslint-config-prettier/flat' ;
8
6
9
7
export default [
10
- js . configs . recommended ,
11
- typescriptEslint . configs . recommended ,
12
- unicorn . configs . recommended ,
13
- prettierConfig ,
14
8
{
15
- files : [ '**/*.ts ' , '**/*.js ' ] ,
9
+ files : [ 'packages/neovim/bin/cli.js ' , '**/*.ts ' ] ,
16
10
ignores : [
11
+ '**/*.d.ts' ,
17
12
'.eslintrc.js' ,
18
- 'packages/*/lib/' ,
19
- 'packages/*/bin/' ,
13
+ 'packages/*/lib/** ' ,
14
+ 'packages/*/bin/** ' ,
20
15
'packages/neovim/scripts/' ,
21
16
'packages/integration-tests/__tests__/' ,
22
- 'examples/rplugin/node/' ,
23
- 'packages/example-plugin/' ,
24
- 'packages/example-plugin-decorators/' ,
17
+ '__tests__/integration/rplugin/node/' ,
18
+ 'examples/rplugin/node/**' ,
19
+ 'packages/example-plugin/**' ,
20
+ 'packages/example-plugin-decorators/**' ,
25
21
] ,
26
22
languageOptions : {
27
23
parser : typescriptParser ,
@@ -37,15 +33,16 @@ export default [
37
33
} ,
38
34
} ,
39
35
plugins : {
36
+ '@typescript-eslint' : typescriptEslint ,
37
+ unicorn,
40
38
import : importPlugin ,
41
39
} ,
42
- settings : {
43
- 'import/resolver' : { node : { extensions : [ '.js' , '.jsx' , '.ts' ] } } ,
40
+ linterOptions : {
41
+ reportUnusedDisableDirectives : true ,
44
42
} ,
45
- reportUnusedDisableDirectives : true ,
46
43
rules : {
47
- curly : 'error' , // Enforce braces on "if"/"for"/etc.
48
- // Avoid accidental use of "==" instead of "===".
44
+ curly : 'error' , // Enforce braces on "if"/"for"/etc.
45
+ // Avoid accidental use of "==" instead of "===".
49
46
eqeqeq : 'error' ,
50
47
camelcase : [ 'error' , { properties : 'never' } ] ,
51
48
'class-methods-use-this' : 'off' ,
@@ -68,21 +65,30 @@ export default [
68
65
'max-classes-per-file' : 'off' ,
69
66
'operator-assignment' : [ 'error' , 'never' ] ,
70
67
71
- // For overloading (and typescript throws when dupe members anyway)
68
+ // For overloading (and typescript throws when dupe members anyway)
72
69
'no-dupe-class-members' : 'off' ,
73
70
74
- // Causes issues with enums
71
+ // Causes issues with enums
75
72
'no-shadow' : 'off' ,
76
- 'prefer-destructuring' : 'off' , // Intentionally disabled trash.
73
+ 'prefer-destructuring' : 'off' , // Intentionally disabled trash.
77
74
78
75
'import/extensions' : 'off' ,
79
76
'import/prefer-default-export' : 'off' ,
80
77
78
+ 'global-require' : 'error' ,
79
+ 'import/no-extraneous-dependencies' : 'error' ,
80
+ 'import/no-mutable-exports' : 'error' ,
81
+ 'new-cap' : 'error' ,
82
+ 'no-console' : 'error' ,
83
+ 'no-param-reassign' : [ 'error' , { props : true } ] ,
84
+ 'no-void' : 'error' ,
85
+
86
+ '@typescript-eslint/no-misused-new' : 'error' ,
81
87
'@typescript-eslint/no-namespace' : 'error' ,
82
- // TODO: '@typescript-eslint/no-floating-promises': 'error', // Promises must catch errors or be awaited.
83
- // TODO? '@typescript-eslint/no-unsafe-assignment': 'error',
84
- // TODO? '@typescript-eslint/no-unsafe-return': 'error',
85
- // TODO? '@typescript-eslint/no-unsafe-call': 'error',
88
+ // TODO: '@typescript-eslint/no-floating-promises': 'error', // Promises must catch errors or be awaited.
89
+ // TODO? '@typescript-eslint/no-unsafe-assignment': 'error',
90
+ // TODO? '@typescript-eslint/no-unsafe-return': 'error',
91
+ // TODO? '@typescript-eslint/no-unsafe-call': 'error',
86
92
'@typescript-eslint/no-explicit-any' : 'off' ,
87
93
'@typescript-eslint/explicit-member-accessibility' : 'off' ,
88
94
'@typescript-eslint/no-unused-vars' : 'error' ,
@@ -91,15 +97,15 @@ export default [
91
97
'@typescript-eslint/ban-types' : 'off' ,
92
98
'@typescript-eslint/explicit-module-boundary-types' : 'off' ,
93
99
94
- // Rules from https://github.com/sindresorhus/eslint-plugin-unicorn
95
- // TODO: 'unicorn/no-useless-promise-resolve-reject': 'error',
96
- // TODO: 'unicorn/prefer-event-target': 'error',
97
- // TODO: 'unicorn/prefer-string-slice': 'error',
98
- // TODO? 'unicorn/custom-error-definition': 'error',
99
- // TODO? 'unicorn/prefer-json-parse-buffer': 'error',
100
- // TODO? ESM modules https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-module.md
101
- // 'unicorn/prefer-module': 'error',
102
- // 'unicorn/no-null': 'error',
100
+ // Rules from https://github.com/sindresorhus/eslint-plugin-unicorn
101
+ // TODO: 'unicorn/no-useless-promise-resolve-reject': 'error',
102
+ // TODO: 'unicorn/prefer-event-target': 'error',
103
+ // TODO: 'unicorn/prefer-string-slice': 'error',
104
+ // TODO? 'unicorn/custom-error-definition': 'error',
105
+ // TODO? 'unicorn/prefer-json-parse-buffer': 'error',
106
+ // TODO? ESM modules https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-module.md
107
+ // 'unicorn/prefer-module': 'error',
108
+ // 'unicorn/no-null': 'error',
103
109
'unicorn/no-abusive-eslint-disable' : 'error' ,
104
110
'unicorn/prefer-at' : 'error' ,
105
111
'unicorn/prefer-negative-index' : 'error' ,
@@ -134,6 +140,7 @@ export default [
134
140
// `jest` against the compiled .js results (would require compiling
135
141
// the test files as well)?
136
142
'unicorn/prefer-at' : 'off' ,
143
+ 'new-cap' : 'off' ,
137
144
'import/no-extraneous-dependencies' : [
138
145
'error' ,
139
146
{ devDependencies : true , optionalDependencies : false , peerDependencies : false } ,
0 commit comments