build(deps-dev): apply updates
[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',
7a6a0a96 51 'ctx',
30eafb1e 52 'deprecations',
adc3c320 53 'dequeue',
a0d41544 54 'dequeued',
5c5a1fb7 55 'ecma',
62c15a68 56 'elu',
adc3c320 57 'enqueue',
3832ad95 58 'enum',
02706357 59 'errored',
e5a5c0fc 60 'esm',
a8706532 61 'fastify',
bdaf31cd 62 'fibonacci',
a8706532 63 'fp',
7a6a0a96 64 'fs',
a76fac14 65 'inheritDoc',
02999424 66 'javascript',
5c5a1fb7 67 'jsdoc',
72855e92 68 'localhost',
7a6a0a96 69 'microjob',
fe18768d 70 'mjs',
3c5dc3fb 71 'nodemailer',
2ab81545 72 'npx',
fe2f6f84 73 'num',
23ff945a 74 'os',
62c15a68 75 'perf',
7a6a0a96 76 'piscina',
8d75fd5f 77 'pnpm',
a35560ba 78 'poolifier',
7a6a0a96 79 'poolify',
02999424 80 'readdir',
5c5a1fb7 81 'readonly',
167c661c 82 'req',
d21911e6 83 'resize',
a3809289 84 'sinon',
9aef1431 85 'smtp',
7a6a0a96
JB
86 'threadjs',
87 'threadwork',
afd32690 88 'tinypool',
7d82d90e 89 'tsconfig',
38e795c1 90 'tsdoc',
fe2f6f84 91 'typedoc',
7a6a0a96 92 'unlink',
dcd9851c 93 'unref',
5c5a1fb7 94 'unregister',
7a6a0a96 95 'utf8',
2fc5cae3 96 'workerpool',
72855e92
JB
97 'ws',
98 'wss',
2fc5cae3 99 'wwr'
5c5a1fb7
S
100 ],
101 skipIfMatch: ['^@.*', '^plugin:.*']
102 }
777b7824 103 ]
3c5eaeb9
JB
104 },
105 overrides: [
50eceb07 106 {
a17cc27a 107 files: ['**/*.ts'],
38e795c1 108 plugins: ['@typescript-eslint', 'eslint-plugin-tsdoc'],
815d4289 109 parser: '@typescript-eslint/parser',
f3636726 110 parserOptions: {
2092c35f 111 project: './tsconfig.eslint.json'
f3636726 112 },
a17cc27a 113 extends: [
a17cc27a 114 'plugin:@typescript-eslint/recommended',
f3636726 115 'plugin:@typescript-eslint/recommended-requiring-type-checking',
3aa14de1
JB
116 'plugin:import/typescript',
117 'standard-with-typescript'
a17cc27a 118 ],
50eceb07 119 rules: {
a17cc27a
JB
120 '@typescript-eslint/no-inferrable-types': [
121 'error',
122 { ignoreProperties: true }
123 ],
afc003b2 124 'tsdoc/syntax': 'warn'
50eceb07
S
125 }
126 },
7a6a0a96
JB
127 {
128 files: ['examples/typescript/**/*.ts'],
129 rules: {
7288e334
JB
130 'import/no-unresolved': 'off',
131 '@typescript-eslint/no-unsafe-argument': 'off',
7a6a0a96 132 '@typescript-eslint/no-unsafe-call': 'off',
7288e334 133 '@typescript-eslint/no-unsafe-return': 'off',
95e50651 134 '@typescript-eslint/no-unsafe-assignment': 'off',
7288e334
JB
135 '@typescript-eslint/no-unsafe-member-access': 'off',
136 '@typescript-eslint/no-unnecessary-type-assertion': 'off',
417b3b41 137 '@typescript-eslint/no-redundant-type-constituents': 'off',
7288e334
JB
138 '@typescript-eslint/strict-boolean-expressions': 'off',
139 '@typescript-eslint/return-await': 'off'
7a6a0a96
JB
140 }
141 },
3c5eaeb9 142 {
30eafb1e 143 files: ['**/*.js', '**/*.mjs'],
38e795c1 144 plugins: ['jsdoc'],
3aa14de1 145 extends: ['plugin:n/recommended', 'plugin:jsdoc/recommended', 'standard']
fa699c42
JB
146 },
147 {
305aeaa7
JB
148 files: ['tests/**/*.js'],
149 rules: {
150 'jsdoc/require-jsdoc': 'off'
151 }
152 },
4bf99d51
JB
153 {
154 files: ['tests/pools/selection-strategies/**/*.js'],
155 rules: {
2f8c5b5c 156 'n/no-missing-require': 'off'
4bf99d51
JB
157 }
158 },
305aeaa7 159 {
c9577f2d 160 files: ['benchmarks/**/*.js', 'benchmarks/**/*.mjs'],
fa699c42 161 rules: {
a17cc27a 162 'jsdoc/require-jsdoc': 'off'
fa699c42 163 }
583a27ce 164 },
d44e66fc
JB
165 {
166 files: ['benchmarks/versus-external-pools/**/*.js'],
167 rules: {
2f8c5b5c 168 'n/no-missing-require': 'off'
d44e66fc
JB
169 }
170 },
c9577f2d
JB
171 {
172 files: ['benchmarks/versus-external-pools/**/*.mjs'],
173 rules: {
6056130c
JB
174 'n/no-missing-import': 'off',
175 'import/no-unresolved': 'off'
c9577f2d
JB
176 }
177 },
583a27ce 178 {
7a923e5b 179 files: ['examples/javascript/**/*.js'],
583a27ce 180 rules: {
2f8c5b5c 181 'n/no-missing-require': 'off',
305aeaa7
JB
182 'jsdoc/require-jsdoc': 'off'
183 }
3c5eaeb9 184 }
38e795c1 185 ]
6a6e81d0 186})