Merge dependabot/npm_and_yarn/examples/typescript/http-server-pool/express-cluster...
[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: {
7d1fc6d3 23 project: './tsconfig.json'
b70e9c5e
JB
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',
fe2f6f84 42 'browserslist',
e4bc7a49 43 'builtins',
5c5a1fb7 44 'christopher',
7a6a0a96 45 'cjs',
e102732c 46 'cloneable',
74750c7f 47 'comparator',
23ff945a
JB
48 'cpu',
49 'cpus',
147be6fe 50 'cryptographically',
7a6a0a96 51 'ctx',
30eafb1e 52 'deprecations',
574b351d 53 'deque',
adc3c320 54 'dequeue',
a0d41544 55 'dequeued',
dad86fd8 56 'deregisters',
b40c4b06 57 'dts',
5c5a1fb7 58 'ecma',
62c15a68 59 'elu',
adc3c320 60 'enqueue',
3832ad95 61 'enum',
02706357 62 'errored',
e5a5c0fc 63 'esm',
a8706532 64 'fastify',
bdaf31cd 65 'fibonacci',
a8706532 66 'fp',
7a6a0a96 67 'fs',
e97e8563 68 'func',
a76fac14 69 'inheritDoc',
02999424 70 'javascript',
5c5a1fb7 71 'jsdoc',
72855e92 72 'localhost',
7a6a0a96 73 'microjob',
fe18768d 74 'mjs',
3c5dc3fb 75 'nodemailer',
2ab81545 76 'npx',
fe2f6f84 77 'num',
23ff945a 78 'os',
62c15a68 79 'perf',
7a6a0a96 80 'piscina',
8d75fd5f 81 'pnpm',
a35560ba 82 'poolifier',
574b351d
JB
83 'prepend',
84 'prepends',
02999424 85 'readdir',
5c5a1fb7 86 'readonly',
167c661c 87 'req',
d21911e6 88 'resize',
a3809289 89 'sinon',
9aef1431 90 'smtp',
7a6a0a96
JB
91 'threadjs',
92 'threadwork',
afd32690 93 'tinypool',
7d82d90e 94 'tsconfig',
38e795c1 95 'tsdoc',
fe2f6f84 96 'typedoc',
7a6a0a96 97 'unlink',
dcd9851c 98 'unref',
7a6a0a96 99 'utf8',
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: {
7d1fc6d3 115 project: './tsconfig.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: {
26bb464f
JB
134 'import/no-unresolved': [
135 'error',
136 {
137 ignore: [
138 '^axios$',
139 '^express$',
140 '^fastify$',
141 '^fastify-plugin$',
142 '^node-fetch$',
143 '^nodemailer$',
144 '^poolifier$',
145 '^ws$'
146 ]
147 }
148 ],
7288e334 149 '@typescript-eslint/no-unsafe-argument': 'off',
7a6a0a96 150 '@typescript-eslint/no-unsafe-call': 'off',
7288e334 151 '@typescript-eslint/no-unsafe-return': 'off',
95e50651 152 '@typescript-eslint/no-unsafe-assignment': 'off',
7288e334
JB
153 '@typescript-eslint/no-unsafe-member-access': 'off',
154 '@typescript-eslint/no-unnecessary-type-assertion': 'off',
417b3b41 155 '@typescript-eslint/no-redundant-type-constituents': 'off',
7288e334
JB
156 '@typescript-eslint/strict-boolean-expressions': 'off',
157 '@typescript-eslint/return-await': 'off'
7a6a0a96
JB
158 }
159 },
3c5eaeb9 160 {
30eafb1e 161 files: ['**/*.js', '**/*.mjs'],
38e795c1 162 plugins: ['jsdoc'],
3aa14de1 163 extends: ['plugin:n/recommended', 'plugin:jsdoc/recommended', 'standard']
fa699c42
JB
164 },
165 {
f58df60b 166 files: ['tests/**/*.js', 'tests/**/*.mjs'],
305aeaa7
JB
167 rules: {
168 'jsdoc/require-jsdoc': 'off'
169 }
170 },
171 {
c9577f2d 172 files: ['benchmarks/**/*.js', 'benchmarks/**/*.mjs'],
fa699c42 173 rules: {
a17cc27a 174 'jsdoc/require-jsdoc': 'off'
fa699c42 175 }
583a27ce
JB
176 },
177 {
7a923e5b 178 files: ['examples/javascript/**/*.js'],
583a27ce 179 rules: {
305aeaa7
JB
180 'jsdoc/require-jsdoc': 'off'
181 }
3c5eaeb9 182 }
38e795c1 183 ]
6a6e81d0 184})