Skip to content

Commit 62a169a

Browse files
committed
Update config to work with ESLint 9
1 parent a08f932 commit 62a169a

File tree

9 files changed

+2356
-504
lines changed

9 files changed

+2356
-504
lines changed

eslint.config.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import index from './index.js';
2+
3+
export default [...index];

examples/base/.eslintrc

Lines changed: 0 additions & 3 deletions
This file was deleted.

index.js

Lines changed: 151 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -1,123 +1,157 @@
1-
module.exports = {
2-
env: {
3-
es6: true,
4-
node: true,
5-
browser: true,
6-
},
7-
parserOptions: {
8-
sourceType: 'module',
9-
ecmaVersion: 'latest',
10-
},
11-
plugins: ['import', 'sort-imports-es6-autofix', 'prettier', 'jsdoc'],
1+
import importPlugin from 'eslint-plugin-import';
2+
import jsdoc from 'eslint-plugin-jsdoc';
3+
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended';
4+
import globals from 'globals';
5+
import noExclusiveTests from './rules/no-exclusive-tests.js';
6+
7+
export const plugin = {
128
rules: {
13-
'block-scoped-var': 'error',
14-
curly: 'error',
15-
'default-case': 'error',
16-
'import/no-unresolved': ['error', {commonjs: true}],
17-
'import/no-duplicates': 'error',
18-
'import/named': 'error',
19-
'import/default': 'error',
20-
'import/extensions': ['error', 'always', {ignorePackages: true}],
21-
'jsdoc/check-access': 'error',
22-
'jsdoc/check-alignment': 'error',
23-
// 'jsdoc/check-examples': 'error', // blocked by https://github.com/eslint/eslint/issues/14745
24-
'jsdoc/check-param-names': 'error',
25-
'jsdoc/check-property-names': 'error',
26-
'jsdoc/check-syntax': 'error',
27-
'jsdoc/check-tag-names': [
28-
'error',
29-
{
30-
definedTags: ['api', 'observable'],
31-
},
32-
],
33-
'jsdoc/check-types': 'error',
34-
'jsdoc/empty-tags': 'error',
35-
'jsdoc/implements-on-classes': 'error',
36-
'jsdoc/no-bad-blocks': 'error',
37-
// 'jsdoc/no-undefined-types': ['error', {'definedTypes': ['ol']}], // blocked by https://github.com/gajus/eslint-plugin-jsdoc/issues/887
38-
'jsdoc/require-hyphen-before-param-description': ['error', 'never'],
39-
'jsdoc/require-param': 'error',
40-
'jsdoc/require-param-description': 'error',
41-
'jsdoc/require-param-name': 'error',
42-
'jsdoc/require-param-type': 'error',
43-
'jsdoc/require-property': 'error',
44-
'jsdoc/require-property-description': 'error',
45-
'jsdoc/require-property-name': 'error',
46-
'jsdoc/require-property-type': 'error',
47-
'jsdoc/require-returns': 'error',
48-
'jsdoc/require-returns-check': 'error',
49-
'jsdoc/require-returns-description': 'error',
50-
'jsdoc/require-returns-type': 'error',
51-
// 'jsdoc/valid-types': 'error', // blocked by https://github.com/jsdoctypeparser/jsdoctypeparser/issues/133
52-
'no-cond-assign': 'error',
53-
'no-console': 'error',
54-
'no-const-assign': 'error',
55-
'no-constant-binary-expression': 'error',
56-
'no-control-regex': 'error',
57-
'no-debugger': 'error',
58-
'no-delete-var': 'error',
59-
'no-dupe-args': 'error',
60-
'no-dupe-class-members': 'error',
61-
'no-dupe-keys': 'error',
62-
'no-duplicate-case': 'error',
63-
'no-else-return': ['error', {allowElseIf: false}],
64-
'no-empty': 'error',
65-
'no-empty-character-class': 'error',
66-
'no-eq-null': 'error',
67-
'no-ex-assign': 'error',
68-
'no-extra-boolean-cast': 'error',
69-
'no-fallthrough': 'error',
70-
'no-func-assign': 'error',
71-
'no-inner-declarations': ['error', 'functions'],
72-
'no-invalid-regexp': 'error',
73-
'no-irregular-whitespace': 'error',
74-
'no-multi-assign': 'error',
75-
'no-negated-in-lhs': 'error',
76-
'no-obj-calls': 'error',
77-
'no-octal': 'error',
78-
'no-redeclare': 'error',
79-
'no-regex-spaces': 'error',
80-
'no-sparse-arrays': 'error',
81-
'no-this-before-super': 'error',
82-
'no-undef': 'error',
83-
'no-unreachable': 'error',
84-
'no-unused-vars': ['error', {vars: 'all', args: 'none'}],
85-
'no-use-before-define': ['error', 'nofunc'],
86-
'no-var': 'error',
87-
'prefer-const': 'error',
88-
'prettier/prettier': [
89-
'error',
90-
{
91-
singleQuote: true,
92-
bracketSpacing: false,
93-
quoteProps: 'preserve',
94-
},
95-
],
96-
'sort-imports-es6-autofix/sort-imports-es6': [
97-
'error',
98-
{
99-
ignoreCase: false,
100-
ignoreMemberSort: false,
101-
memberSyntaxSortOrder: ['none', 'all', 'single', 'multiple'],
102-
},
103-
],
104-
'use-isnan': 'error',
105-
'valid-typeof': 'error',
9+
'no-exclusive-tests': noExclusiveTests,
10610
},
107-
settings: {
108-
jsdoc: {
109-
mode: 'typescript',
110-
preferredTypes: {
111-
'[]': 'Array<>',
112-
'.<>': '<>',
113-
'object': 'Object',
11+
};
12+
13+
export default [
14+
importPlugin.flatConfigs.recommended,
15+
jsdoc.configs['flat/recommended'],
16+
eslintPluginPrettierRecommended,
17+
{
18+
languageOptions: {
19+
globals: {
20+
...globals.node,
21+
...globals.browser,
11422
},
115-
tagNamePreference: {
116-
'returns': 'return',
117-
'file': 'fileoverview',
118-
'constant': 'const',
119-
'augments': 'extends',
23+
24+
ecmaVersion: 'latest',
25+
sourceType: 'module',
26+
},
27+
28+
plugins: {
29+
openlayers: plugin,
30+
},
31+
32+
settings: {
33+
jsdoc: {
34+
mode: 'typescript',
35+
preferredTypes: {
36+
'[]': 'Array<>',
37+
'.<>': '<>',
38+
'object': 'Object',
39+
},
40+
tagNamePreference: {
41+
returns: 'return',
42+
file: 'fileoverview',
43+
constant: 'const',
44+
augments: 'extends',
45+
},
12046
},
12147
},
48+
rules: {
49+
// core rules
50+
'block-scoped-var': 'error',
51+
'curly': 'error',
52+
'default-case': 'error',
53+
'no-cond-assign': 'error',
54+
'no-console': 'error',
55+
'no-const-assign': 'error',
56+
'no-constant-binary-expression': 'error',
57+
'no-control-regex': 'error',
58+
'no-debugger': 'error',
59+
'no-delete-var': 'error',
60+
'no-dupe-args': 'error',
61+
'no-dupe-class-members': 'error',
62+
'no-dupe-keys': 'error',
63+
'no-duplicate-case': 'error',
64+
'no-else-return': ['error', {allowElseIf: false}],
65+
'no-empty': 'error',
66+
'no-empty-character-class': 'error',
67+
'no-eq-null': 'error',
68+
'no-ex-assign': 'error',
69+
'no-extra-boolean-cast': 'error',
70+
'no-fallthrough': 'error',
71+
'no-func-assign': 'error',
72+
'no-inner-declarations': ['error', 'functions'],
73+
'no-invalid-regexp': 'error',
74+
'no-irregular-whitespace': 'error',
75+
'no-multi-assign': 'error',
76+
'no-negated-in-lhs': 'error',
77+
'no-obj-calls': 'error',
78+
'no-octal': 'error',
79+
'no-redeclare': 'error',
80+
'no-regex-spaces': 'error',
81+
'no-sparse-arrays': 'error',
82+
'no-this-before-super': 'error',
83+
'no-undef': 'error',
84+
'no-unreachable': 'error',
85+
'no-unused-vars': ['error', {vars: 'all', args: 'none'}],
86+
'no-use-before-define': ['error', 'nofunc'],
87+
'no-var': 'error',
88+
'prefer-const': 'error',
89+
'use-isnan': 'error',
90+
'valid-typeof': 'error',
91+
92+
// import plugin
93+
'import/no-unresolved': ['error', {commonjs: true}],
94+
'import/no-duplicates': 'error',
95+
'import/named': 'error',
96+
'import/order': [
97+
'error',
98+
{
99+
named: true,
100+
alphabetize: {
101+
order: 'asc',
102+
},
103+
},
104+
],
105+
'import/default': 'error',
106+
'import/extensions': ['error', 'always', {ignorePackages: true}],
107+
108+
// jsdoc plugin
109+
'jsdoc/check-access': 'error',
110+
'jsdoc/check-alignment': 'error',
111+
'jsdoc/check-param-names': 'error',
112+
'jsdoc/check-property-names': 'error',
113+
'jsdoc/check-syntax': 'error',
114+
'jsdoc/check-tag-names': [
115+
'error',
116+
{
117+
definedTags: ['api', 'observable'],
118+
},
119+
],
120+
'jsdoc/check-types': 'error',
121+
'jsdoc/empty-tags': 'error',
122+
'jsdoc/implements-on-classes': 'error',
123+
'jsdoc/no-bad-blocks': 'off',
124+
'jsdoc/no-multi-asterisks': 'off',
125+
'jsdoc/no-undefined-types': 'off', // allow tsc to handle this
126+
'jsdoc/require-hyphen-before-param-description': ['error', 'never'],
127+
'jsdoc/require-jsdoc': 'off',
128+
'jsdoc/require-param': 'error',
129+
'jsdoc/require-param-description': 'error',
130+
'jsdoc/require-param-name': 'error',
131+
'jsdoc/require-param-type': 'error',
132+
'jsdoc/require-property': 'error',
133+
'jsdoc/require-property-description': 'error',
134+
'jsdoc/require-property-name': 'error',
135+
'jsdoc/require-property-type': 'error',
136+
'jsdoc/require-returns': 'error',
137+
'jsdoc/require-returns-check': 'error',
138+
'jsdoc/require-returns-description': 'error',
139+
'jsdoc/require-returns-type': 'error',
140+
'jsdoc/tag-lines': 'off',
141+
'jsdoc/valid-types': 'off',
142+
143+
// openlayers plugin
144+
'openlayers/no-exclusive-tests': 'error',
145+
146+
// prettier plugin
147+
'prettier/prettier': [
148+
'error',
149+
{
150+
singleQuote: true,
151+
bracketSpacing: false,
152+
quoteProps: 'preserve',
153+
},
154+
],
155+
},
122156
},
123-
};
157+
];

0 commit comments

Comments
 (0)