Fix busy event emission on fixed pool: (#332)
[poolifier.git] / .eslintrc.js
index 6c8063c8a5dcb3da31ee2f12a826b4017263bdfb..bd96a47107386e767d85e5ea058b7f6e010dc7c1 100644 (file)
@@ -1,4 +1,7 @@
-module.exports = {
+// @ts-check
+const { defineConfig } = require('eslint-define-config')
+
+module.exports = defineConfig({
   env: {
     es2021: true,
     node: true,
@@ -7,7 +10,8 @@ module.exports = {
   parser: '@typescript-eslint/parser',
   parserOptions: {
     ecmaVersion: 2020,
-    sourceType: 'module'
+    sourceType: 'module',
+    warnOnUnsupportedTypeScriptVersion: false
   },
   plugins: [
     '@typescript-eslint',
@@ -50,11 +54,14 @@ module.exports = {
       'warn',
       {
         skipWords: [
-          'poolifier',
-          'pioardi',
           'christopher',
+          'comparator',
           'ecma',
+          'enum',
+          'inheritdoc',
           'jsdoc',
+          'pioardi',
+          'poolifier',
           'readonly',
           'serializable',
           'unregister',
@@ -69,7 +76,39 @@ module.exports = {
       files: ['src/**/*.ts'],
       extends: 'plugin:jsdoc/recommended',
       rules: {
+        'no-useless-constructor': 'off',
+
+        'jsdoc/match-description': [
+          'warn',
+          {
+            mainDescription:
+              '/^[A-Z`].+?(\\.|:)(\\n\\n.*((\\n{1,2}- .+)|(_.+_)|`.+`|\\n\\n---))?$/us',
+            matchDescription: '^[A-Z`].+(\\.|`.+`)$',
+            contexts: ['any'],
+            tags: {
+              param: true,
+              returns: true
+            }
+          }
+        ],
         'jsdoc/no-types': 'error',
+        'jsdoc/require-jsdoc': [
+          'warn',
+          {
+            contexts: [
+              'ClassDeclaration',
+              'ClassProperty:not([accessibility=/(private|protected)/])',
+              'ExportNamedDeclaration:has(VariableDeclaration)',
+              'FunctionExpression',
+              'MethodDefinition:not([accessibility=/(private|protected)/]) > FunctionExpression',
+              'TSEnumDeclaration',
+              'TSInterfaceDeclaration',
+              'TSMethodSignature',
+              // 'TSPropertySignature',
+              'TSTypeAliasDeclaration'
+            ]
+          }
+        ],
         'jsdoc/require-param-type': 'off',
         'jsdoc/require-returns-type': 'off'
       }
@@ -94,5 +133,10 @@ module.exports = {
         'node/no-missing-require': 'off'
       }
     }
-  ]
-}
+  ],
+  settings: {
+    jsdoc: {
+      mode: 'typescript'
+    }
+  }
+})