Merge pull request #839 from poolifier/dependabot/npm_and_yarn/examples/typescript...
[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',
2ab81545 71 'npx',
fe2f6f84 72 'num',
23ff945a 73 'os',
62c15a68 74 'perf',
7a6a0a96 75 'piscina',
8d75fd5f 76 'pnpm',
a35560ba 77 'poolifier',
7a6a0a96 78 'poolify',
02999424 79 'readdir',
5c5a1fb7 80 'readonly',
167c661c 81 'req',
d21911e6 82 'resize',
a3809289 83 'sinon',
7a6a0a96
JB
84 'threadjs',
85 'threadwork',
afd32690 86 'tinypool',
7d82d90e 87 'tsconfig',
38e795c1 88 'tsdoc',
fe2f6f84 89 'typedoc',
7a6a0a96 90 'unlink',
dcd9851c 91 'unref',
5c5a1fb7 92 'unregister',
7a6a0a96 93 'utf8',
2fc5cae3 94 'workerpool',
72855e92
JB
95 'ws',
96 'wss',
2fc5cae3 97 'wwr'
5c5a1fb7
S
98 ],
99 skipIfMatch: ['^@.*', '^plugin:.*']
100 }
777b7824 101 ]
3c5eaeb9
JB
102 },
103 overrides: [
50eceb07 104 {
a17cc27a 105 files: ['**/*.ts'],
38e795c1 106 plugins: ['@typescript-eslint', 'eslint-plugin-tsdoc'],
815d4289 107 parser: '@typescript-eslint/parser',
f3636726 108 parserOptions: {
2092c35f 109 project: './tsconfig.eslint.json'
f3636726 110 },
a17cc27a 111 extends: [
a17cc27a 112 'plugin:@typescript-eslint/recommended',
f3636726 113 'plugin:@typescript-eslint/recommended-requiring-type-checking',
3aa14de1
JB
114 'plugin:import/typescript',
115 'standard-with-typescript'
a17cc27a 116 ],
50eceb07 117 rules: {
a17cc27a
JB
118 '@typescript-eslint/no-inferrable-types': [
119 'error',
120 { ignoreProperties: true }
121 ],
afc003b2 122 'tsdoc/syntax': 'warn'
50eceb07
S
123 }
124 },
7a6a0a96
JB
125 {
126 files: ['examples/typescript/**/*.ts'],
127 rules: {
7288e334
JB
128 'import/no-unresolved': 'off',
129 '@typescript-eslint/no-unsafe-argument': 'off',
7a6a0a96 130 '@typescript-eslint/no-unsafe-call': 'off',
7288e334 131 '@typescript-eslint/no-unsafe-return': 'off',
95e50651 132 '@typescript-eslint/no-unsafe-assignment': 'off',
7288e334
JB
133 '@typescript-eslint/no-unsafe-member-access': 'off',
134 '@typescript-eslint/no-unnecessary-type-assertion': 'off',
135 '@typescript-eslint/strict-boolean-expressions': 'off',
136 '@typescript-eslint/return-await': 'off'
7a6a0a96
JB
137 }
138 },
3c5eaeb9 139 {
30eafb1e 140 files: ['**/*.js', '**/*.mjs'],
38e795c1 141 plugins: ['jsdoc'],
3aa14de1 142 extends: ['plugin:n/recommended', 'plugin:jsdoc/recommended', 'standard']
fa699c42
JB
143 },
144 {
305aeaa7
JB
145 files: ['tests/**/*.js'],
146 rules: {
147 'jsdoc/require-jsdoc': 'off'
148 }
149 },
4bf99d51
JB
150 {
151 files: ['tests/pools/selection-strategies/**/*.js'],
152 rules: {
2f8c5b5c 153 'n/no-missing-require': 'off'
4bf99d51
JB
154 }
155 },
305aeaa7 156 {
c9577f2d 157 files: ['benchmarks/**/*.js', 'benchmarks/**/*.mjs'],
fa699c42 158 rules: {
a17cc27a 159 'jsdoc/require-jsdoc': 'off'
fa699c42 160 }
583a27ce 161 },
d44e66fc
JB
162 {
163 files: ['benchmarks/versus-external-pools/**/*.js'],
164 rules: {
2f8c5b5c 165 'n/no-missing-require': 'off'
d44e66fc
JB
166 }
167 },
c9577f2d
JB
168 {
169 files: ['benchmarks/versus-external-pools/**/*.mjs'],
170 rules: {
6056130c
JB
171 'n/no-missing-import': 'off',
172 'import/no-unresolved': 'off'
c9577f2d
JB
173 }
174 },
583a27ce 175 {
7a923e5b 176 files: ['examples/javascript/**/*.js'],
583a27ce 177 rules: {
2f8c5b5c 178 'n/no-missing-require': 'off',
305aeaa7
JB
179 'jsdoc/require-jsdoc': 'off'
180 }
3c5eaeb9 181 }
38e795c1 182 ]
6a6e81d0 183})