1- import js from '@eslint/js' ;
21import globals from 'globals' ;
32import typescriptEslint from '@typescript-eslint/eslint-plugin' ;
43import typescriptParser from '@typescript-eslint/parser' ;
54import unicorn from 'eslint-plugin-unicorn' ;
65import importPlugin from 'eslint-plugin-import' ;
7- import prettierConfig from 'eslint-config-prettier/flat' ;
86
97export default [
10- js . configs . recommended ,
11- typescriptEslint . configs . recommended ,
12- unicorn . configs . recommended ,
13- prettierConfig ,
148 {
15- files : [ '**/*.ts ' , '**/*.js ' ] ,
9+ files : [ 'packages/neovim/bin/cli.js ' , '**/*.ts ' ] ,
1610 ignores : [
11+ '**/*.d.ts' ,
1712 '.eslintrc.js' ,
18- 'packages/*/lib/' ,
19- 'packages/*/bin/' ,
13+ 'packages/*/lib/** ' ,
14+ 'packages/*/bin/** ' ,
2015 'packages/neovim/scripts/' ,
2116 '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/**' ,
2521 ] ,
2622 languageOptions : {
2723 parser : typescriptParser ,
@@ -37,15 +33,16 @@ export default [
3733 } ,
3834 } ,
3935 plugins : {
36+ '@typescript-eslint' : typescriptEslint ,
37+ unicorn,
4038 import : importPlugin ,
4139 } ,
42- settings : {
43- 'import/resolver' : { node : { extensions : [ '.js' , '.jsx' , '.ts' ] } } ,
40+ linterOptions : {
41+ reportUnusedDisableDirectives : true ,
4442 } ,
45- reportUnusedDisableDirectives : true ,
4643 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 "===".
4946 eqeqeq : 'error' ,
5047 camelcase : [ 'error' , { properties : 'never' } ] ,
5148 'class-methods-use-this' : 'off' ,
@@ -68,21 +65,30 @@ export default [
6865 'max-classes-per-file' : 'off' ,
6966 'operator-assignment' : [ 'error' , 'never' ] ,
7067
71- // For overloading (and typescript throws when dupe members anyway)
68+ // For overloading (and typescript throws when dupe members anyway)
7269 'no-dupe-class-members' : 'off' ,
7370
74- // Causes issues with enums
71+ // Causes issues with enums
7572 'no-shadow' : 'off' ,
76- 'prefer-destructuring' : 'off' , // Intentionally disabled trash.
73+ 'prefer-destructuring' : 'off' , // Intentionally disabled trash.
7774
7875 'import/extensions' : 'off' ,
7976 'import/prefer-default-export' : 'off' ,
8077
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' ,
8187 '@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',
8692 '@typescript-eslint/no-explicit-any' : 'off' ,
8793 '@typescript-eslint/explicit-member-accessibility' : 'off' ,
8894 '@typescript-eslint/no-unused-vars' : 'error' ,
@@ -91,15 +97,15 @@ export default [
9197 '@typescript-eslint/ban-types' : 'off' ,
9298 '@typescript-eslint/explicit-module-boundary-types' : 'off' ,
9399
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',
103109 'unicorn/no-abusive-eslint-disable' : 'error' ,
104110 'unicorn/prefer-at' : 'error' ,
105111 'unicorn/prefer-negative-index' : 'error' ,
@@ -134,6 +140,7 @@ export default [
134140 // `jest` against the compiled .js results (would require compiling
135141 // the test files as well)?
136142 'unicorn/prefer-at' : 'off' ,
143+ 'new-cap' : 'off' ,
137144 'import/no-extraneous-dependencies' : [
138145 'error' ,
139146 { devDependencies : true , optionalDependencies : false , peerDependencies : false } ,
0 commit comments