build(ci): test TS configuration support in sonar cloud action
[poolifier.git] / .eslintrc.js
CommitLineData
6a6e81d0
S
1const { defineConfig } = require('eslint-define-config')
2
3module.exports = defineConfig({
97c16550 4 root: true,
777b7824 5 env: {
54541487 6 es2022: true,
777b7824
S
7 node: true,
8 mocha: true
9 },
6d0425b4 10 parserOptions: {
54541487 11 ecmaVersion: 2022,
6d0425b4
JB
12 sourceType: 'module'
13 },
38e795c1 14 plugins: ['promise', 'spellcheck'],
777b7824 15 extends: [
777b7824 16 'eslint:recommended',
305aeaa7 17 'plugin:import/recommended',
78cea37e 18 'plugin:promise/recommended'
777b7824 19 ],
b70e9c5e
JB
20 settings: {
21 'import/resolver': {
22 typescript: {
23 project: './tsconfig.eslint.json'
24 }
25 }
26 },
777b7824 27 rules: {
fa699c42 28 'sort-imports': [
65d7a1c9 29 'error',
fa699c42 30 {
50aa7901 31 ignoreDeclarationSort: true
fa699c42 32 }
5c5a1fb7 33 ],
65d7a1c9 34 'import/order': 'error',
5c5a1fb7
S
35
36 'spellcheck/spell-checker': [
37 'warn',
38 {
39 skipWords: [
d68ce4c6 40 'axios',
494d9576 41 'benoit',
ca6c7d70 42 'benny',
fe2f6f84 43 'browserslist',
e4bc7a49 44 'builtins',
5c5a1fb7 45 'christopher',
7a6a0a96 46 'cjs',
e102732c 47 'cloneable',
74750c7f 48 'comparator',
23ff945a
JB
49 'cpu',
50 'cpus',
147be6fe 51 'cryptographically',
7a6a0a96 52 'ctx',
30eafb1e 53 'deprecations',
574b351d 54 'deque',
adc3c320 55 'dequeue',
a0d41544 56 'dequeued',
5c5a1fb7 57 'ecma',
62c15a68 58 'elu',
adc3c320 59 'enqueue',
3832ad95 60 'enum',
02706357 61 'errored',
e5a5c0fc 62 'esm',
a8706532 63 'fastify',
bdaf31cd 64 'fibonacci',
a8706532 65 'fp',
7a6a0a96 66 'fs',
a76fac14 67 'inheritDoc',
02999424 68 'javascript',
5c5a1fb7 69 'jsdoc',
72855e92 70 'localhost',
7a6a0a96 71 'microjob',
fe18768d 72 'mjs',
3c5dc3fb 73 'nodemailer',
2ab81545 74 'npx',
fe2f6f84 75 'num',
23ff945a 76 'os',
62c15a68 77 'perf',
7a6a0a96 78 'piscina',
8d75fd5f 79 'pnpm',
a35560ba 80 'poolifier',
574b351d
JB
81 'prepend',
82 'prepends',
02999424 83 'readdir',
5c5a1fb7 84 'readonly',
167c661c 85 'req',
d21911e6 86 'resize',
a3809289 87 'sinon',
9aef1431 88 'smtp',
7a6a0a96
JB
89 'threadjs',
90 'threadwork',
afd32690 91 'tinypool',
7d82d90e 92 'tsconfig',
38e795c1 93 'tsdoc',
fe2f6f84 94 'typedoc',
7a6a0a96 95 'unlink',
dcd9851c 96 'unref',
5c5a1fb7 97 'unregister',
7a6a0a96 98 'utf8',
98446b39 99 'webcrypto',
2fc5cae3 100 'workerpool',
72855e92
JB
101 'ws',
102 'wss',
2fc5cae3 103 'wwr'
5c5a1fb7
S
104 ],
105 skipIfMatch: ['^@.*', '^plugin:.*']
106 }
777b7824 107 ]
3c5eaeb9
JB
108 },
109 overrides: [
50eceb07 110 {
a17cc27a 111 files: ['**/*.ts'],
38e795c1 112 plugins: ['@typescript-eslint', 'eslint-plugin-tsdoc'],
815d4289 113 parser: '@typescript-eslint/parser',
f3636726 114 parserOptions: {
2092c35f 115 project: './tsconfig.eslint.json'
f3636726 116 },
a17cc27a 117 extends: [
a17cc27a 118 'plugin:@typescript-eslint/recommended',
f3636726 119 'plugin:@typescript-eslint/recommended-requiring-type-checking',
3aa14de1
JB
120 'plugin:import/typescript',
121 'standard-with-typescript'
a17cc27a 122 ],
50eceb07 123 rules: {
a17cc27a
JB
124 '@typescript-eslint/no-inferrable-types': [
125 'error',
126 { ignoreProperties: true }
127 ],
afc003b2 128 'tsdoc/syntax': 'warn'
50eceb07
S
129 }
130 },
7a6a0a96
JB
131 {
132 files: ['examples/typescript/**/*.ts'],
133 rules: {
7288e334
JB
134 'import/no-unresolved': 'off',
135 '@typescript-eslint/no-unsafe-argument': 'off',
7a6a0a96 136 '@typescript-eslint/no-unsafe-call': 'off',
7288e334 137 '@typescript-eslint/no-unsafe-return': 'off',
95e50651 138 '@typescript-eslint/no-unsafe-assignment': 'off',
7288e334
JB
139 '@typescript-eslint/no-unsafe-member-access': 'off',
140 '@typescript-eslint/no-unnecessary-type-assertion': 'off',
417b3b41 141 '@typescript-eslint/no-redundant-type-constituents': 'off',
7288e334
JB
142 '@typescript-eslint/strict-boolean-expressions': 'off',
143 '@typescript-eslint/return-await': 'off'
7a6a0a96
JB
144 }
145 },
3c5eaeb9 146 {
30eafb1e 147 files: ['**/*.js', '**/*.mjs'],
38e795c1 148 plugins: ['jsdoc'],
3aa14de1 149 extends: ['plugin:n/recommended', 'plugin:jsdoc/recommended', 'standard']
fa699c42
JB
150 },
151 {
305aeaa7
JB
152 files: ['tests/**/*.js'],
153 rules: {
154 'jsdoc/require-jsdoc': 'off'
155 }
156 },
4bf99d51
JB
157 {
158 files: ['tests/pools/selection-strategies/**/*.js'],
159 rules: {
2f8c5b5c 160 'n/no-missing-require': 'off'
4bf99d51
JB
161 }
162 },
305aeaa7 163 {
c9577f2d 164 files: ['benchmarks/**/*.js', 'benchmarks/**/*.mjs'],
fa699c42 165 rules: {
a17cc27a 166 'jsdoc/require-jsdoc': 'off'
fa699c42 167 }
583a27ce 168 },
d44e66fc
JB
169 {
170 files: ['benchmarks/versus-external-pools/**/*.js'],
171 rules: {
2f8c5b5c 172 'n/no-missing-require': 'off'
d44e66fc
JB
173 }
174 },
c9577f2d
JB
175 {
176 files: ['benchmarks/versus-external-pools/**/*.mjs'],
177 rules: {
6056130c
JB
178 'n/no-missing-import': 'off',
179 'import/no-unresolved': 'off'
c9577f2d
JB
180 }
181 },
583a27ce 182 {
7a923e5b 183 files: ['examples/javascript/**/*.js'],
583a27ce 184 rules: {
2f8c5b5c 185 'n/no-missing-require': 'off',
305aeaa7
JB
186 'jsdoc/require-jsdoc': 'off'
187 }
3c5eaeb9 188 }
38e795c1 189 ]
6a6e81d0 190})