build: fix linter configuraion for TS examples
[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: [
494d9576 40 'benoit',
ca6c7d70 41 'benny',
fe2f6f84 42 'browserslist',
e4bc7a49 43 'builtins',
5c5a1fb7 44 'christopher',
7a6a0a96 45 'cjs',
e102732c 46 'cloneable',
74750c7f 47 'comparator',
23ff945a
JB
48 'cpu',
49 'cpus',
7a6a0a96 50 'ctx',
30eafb1e 51 'deprecations',
adc3c320 52 'dequeue',
a0d41544 53 'dequeued',
5c5a1fb7 54 'ecma',
62c15a68 55 'elu',
adc3c320 56 'enqueue',
3832ad95 57 'enum',
02706357 58 'errored',
e5a5c0fc 59 'esm',
bdaf31cd 60 'fibonacci',
7a6a0a96 61 'fs',
a76fac14 62 'inheritDoc',
5c5a1fb7 63 'jsdoc',
7a6a0a96 64 'microjob',
fe18768d 65 'mjs',
fe2f6f84 66 'num',
23ff945a 67 'os',
62c15a68 68 'perf',
7a6a0a96 69 'piscina',
8d75fd5f 70 'pnpm',
a35560ba 71 'poolifier',
7a6a0a96 72 'poolify',
5c5a1fb7 73 'readonly',
d21911e6 74 'resize',
a3809289 75 'sinon',
7a6a0a96
JB
76 'threadjs',
77 'threadwork',
afd32690 78 'tinypool',
7d82d90e 79 'tsconfig',
38e795c1 80 'tsdoc',
fe2f6f84 81 'typedoc',
7a6a0a96 82 'unlink',
dcd9851c 83 'unref',
5c5a1fb7 84 'unregister',
7a6a0a96 85 'utf8',
2fc5cae3
JB
86 'workerpool',
87 'wwr'
5c5a1fb7
S
88 ],
89 skipIfMatch: ['^@.*', '^plugin:.*']
90 }
777b7824 91 ]
3c5eaeb9
JB
92 },
93 overrides: [
50eceb07 94 {
a17cc27a 95 files: ['**/*.ts'],
38e795c1 96 plugins: ['@typescript-eslint', 'eslint-plugin-tsdoc'],
815d4289 97 parser: '@typescript-eslint/parser',
f3636726 98 parserOptions: {
2092c35f 99 project: './tsconfig.eslint.json'
f3636726 100 },
a17cc27a 101 extends: [
a17cc27a 102 'plugin:@typescript-eslint/recommended',
f3636726 103 'plugin:@typescript-eslint/recommended-requiring-type-checking',
3aa14de1
JB
104 'plugin:import/typescript',
105 'standard-with-typescript'
a17cc27a 106 ],
50eceb07 107 rules: {
a17cc27a
JB
108 '@typescript-eslint/no-inferrable-types': [
109 'error',
110 { ignoreProperties: true }
111 ],
afc003b2 112 'tsdoc/syntax': 'warn'
50eceb07
S
113 }
114 },
7a6a0a96
JB
115 {
116 files: ['examples/typescript/**/*.ts'],
117 rules: {
95e50651
JB
118 'import/no-unresolved': 'off',
119 '@typescript-eslint/no-unsafe-argument': 'off',
7a6a0a96 120 '@typescript-eslint/no-unsafe-call': 'off',
95e50651
JB
121 '@typescript-eslint/no-unsafe-assignment': 'off',
122 '@typescript-eslint/no-unsafe-member-access': 'off',
123 '@typescript-eslint/no-unnecessary-type-assertion': 'off'
7a6a0a96
JB
124 }
125 },
3c5eaeb9 126 {
30eafb1e 127 files: ['**/*.js', '**/*.mjs'],
38e795c1 128 plugins: ['jsdoc'],
3aa14de1 129 extends: ['plugin:n/recommended', 'plugin:jsdoc/recommended', 'standard']
fa699c42
JB
130 },
131 {
305aeaa7
JB
132 files: ['tests/**/*.js'],
133 rules: {
134 'jsdoc/require-jsdoc': 'off'
135 }
136 },
4bf99d51
JB
137 {
138 files: ['tests/pools/selection-strategies/**/*.js'],
139 rules: {
2f8c5b5c 140 'n/no-missing-require': 'off'
4bf99d51
JB
141 }
142 },
305aeaa7 143 {
c9577f2d 144 files: ['benchmarks/**/*.js', 'benchmarks/**/*.mjs'],
fa699c42 145 rules: {
a17cc27a 146 'jsdoc/require-jsdoc': 'off'
fa699c42 147 }
583a27ce 148 },
d44e66fc
JB
149 {
150 files: ['benchmarks/versus-external-pools/**/*.js'],
151 rules: {
2f8c5b5c 152 'n/no-missing-require': 'off'
d44e66fc
JB
153 }
154 },
c9577f2d
JB
155 {
156 files: ['benchmarks/versus-external-pools/**/*.mjs'],
157 rules: {
6056130c
JB
158 'n/no-missing-import': 'off',
159 'import/no-unresolved': 'off'
c9577f2d
JB
160 }
161 },
583a27ce
JB
162 {
163 files: ['examples/**/*.js'],
164 rules: {
2f8c5b5c 165 'n/no-missing-require': 'off',
305aeaa7
JB
166 'jsdoc/require-jsdoc': 'off'
167 }
3c5eaeb9 168 }
38e795c1 169 ]
6a6e81d0 170})