chore: use neostandard exported plugins when possible
[poolifier.git] / eslint.config.js
index 8666f4c4a02ac7287b1a85bf448d62f9848d8cda..19a2957d2af4edc5bdb9dea8e7a8306d0227e365 100644 (file)
@@ -2,10 +2,10 @@ import cspellConfigs from '@cspell/eslint-plugin/configs'
 import js from '@eslint/js'
 import { defineFlatConfig } from 'eslint-define-config'
 import jsdoc from 'eslint-plugin-jsdoc'
 import js from '@eslint/js'
 import { defineFlatConfig } from 'eslint-define-config'
 import jsdoc from 'eslint-plugin-jsdoc'
-import nodePlugin from 'eslint-plugin-n'
 import simpleImportSort from 'eslint-plugin-simple-import-sort'
 import globals from 'globals'
 import simpleImportSort from 'eslint-plugin-simple-import-sort'
 import globals from 'globals'
-import neostandard from 'neostandard'
+import neostandard, { plugins } from 'neostandard'
+// FIXME: https://github.com/neostandard/neostandard/pull/88
 // eslint-disable-next-line n/no-extraneous-import
 import tseslint from 'typescript-eslint'
 
 // eslint-disable-next-line n/no-extraneous-import
 import tseslint from 'typescript-eslint'
 
@@ -15,10 +15,24 @@ export default defineFlatConfig([
   },
   cspellConfigs.recommended,
   js.configs.recommended,
   },
   cspellConfigs.recommended,
   js.configs.recommended,
-  ...nodePlugin.configs['flat/mixed-esm-and-cjs'],
+  plugins.promise.configs['flat/recommended'],
+  ...plugins.n.configs['flat/mixed-esm-and-cjs'],
   jsdoc.configs['flat/recommended-typescript'],
   jsdoc.configs['flat/recommended-typescript'],
-  // ...tseslint.config(...tseslint.configs.strictTypeChecked, ...tseslint.configs.stylisticTypeChecked),
-  ...tseslint.config(...tseslint.configs.strict, ...tseslint.configs.stylistic),
+  {
+    rules: {
+      'jsdoc/check-tag-names': [
+        'warn',
+        {
+          typed: true,
+          definedTags: ['defaultValue', 'experimental', 'typeParam'],
+        },
+      ],
+    },
+  },
+  // ...tseslint.config(
+  //   ...tseslint.configs.strictTypeChecked,
+  //   ...tseslint.configs.stylisticTypeChecked
+  // ),
   ...neostandard({
     ts: true,
     globals: {
   ...neostandard({
     ts: true,
     globals: {
@@ -26,6 +40,14 @@ export default defineFlatConfig([
       ...globals.mocha,
     },
   }),
       ...globals.mocha,
     },
   }),
+  {
+    languageOptions: {
+      parserOptions: {
+        project: true,
+        tsconfigRootDir: import.meta.dirname,
+      },
+    },
+  },
   {
     plugins: {
       'simple-import-sort': simpleImportSort,
   {
     plugins: {
       'simple-import-sort': simpleImportSort,
@@ -61,10 +83,21 @@ export default defineFlatConfig([
       '@stylistic/operator-linebreak': 'off',
     },
   },
       '@stylistic/operator-linebreak': 'off',
     },
   },
+  {
+    files: ['**/*.js', '**/*.mjs', '**/*.cjs'],
+    ...tseslint.configs.disableTypeChecked,
+  },
+  // examples specific configuration
   {
     files: ['examples/**/*.ts'],
     rules: {
   {
     files: ['examples/**/*.ts'],
     rules: {
-      'no-undef': 'off',
+      '@typescript-eslint/no-unsafe-argument': 'off',
+      '@typescript-eslint/no-unsafe-call': 'off',
+      '@typescript-eslint/no-unsafe-return': 'off',
+      '@typescript-eslint/no-unsafe-assignment': 'off',
+      '@typescript-eslint/no-unsafe-member-access': 'off',
+      '@typescript-eslint/no-unnecessary-type-assertion': 'off',
+      '@typescript-eslint/no-redundant-type-constituents': 'off',
     },
   },
   {
     },
   },
   {
@@ -79,12 +112,14 @@ export default defineFlatConfig([
       '@typescript-eslint/no-require-imports': 'off',
     },
   },
       '@typescript-eslint/no-require-imports': 'off',
     },
   },
+  // benchmarks specific configuration
   {
     files: ['benchmarks/**/*.cjs'],
     rules: {
       '@typescript-eslint/no-require-imports': 'off',
     },
   },
   {
     files: ['benchmarks/**/*.cjs'],
     rules: {
       '@typescript-eslint/no-require-imports': 'off',
     },
   },
+  // tests specific configuration
   {
     files: ['tests/**/*.js', 'tests/**/*.mjs', 'tests/**/*.cjs'],
     rules: {
   {
     files: ['tests/**/*.js', 'tests/**/*.mjs', 'tests/**/*.cjs'],
     rules: {