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