X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=eslint.config.js;h=19a2957d2af4edc5bdb9dea8e7a8306d0227e365;hb=42ae5f0f226a52eb5ac97400a24b3eaa101ca46b;hp=fd2c801dd36585798bcacf355817100ee61f3403;hpb=147d7c422fc8ba900126ff50097dc2b00494dfff;p=poolifier.git diff --git a/eslint.config.js b/eslint.config.js index fd2c801d..19a2957d 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -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 nodePlugin from 'eslint-plugin-n' 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' @@ -15,10 +15,24 @@ export default defineFlatConfig([ }, 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'], - // ...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: { @@ -26,11 +40,37 @@ export default defineFlatConfig([ ...globals.mocha, }, }), + { + languageOptions: { + parserOptions: { + project: true, + tsconfigRootDir: import.meta.dirname, + }, + }, + }, { plugins: { 'simple-import-sort': simpleImportSort, }, rules: { + '@cspell/spellchecker': [ + 'warn', + { + autoFix: true, + cspell: { + words: [ + 'Alessandro', + 'Ardizio', + 'Benoit', + 'IWRR', + 'Quadflieg', + 'neostandard', + 'poolifier', + 'tseslint', + ], + }, + }, + ], 'simple-import-sort/imports': 'error', 'simple-import-sort/exports': 'error', }, @@ -44,14 +84,46 @@ export default defineFlatConfig([ }, }, { - files: ['tests/**/*.cjs', 'benchmarks/**/*.cjs', 'examples/**/*.cjs'], + files: ['**/*.js', '**/*.mjs', '**/*.cjs'], + ...tseslint.configs.disableTypeChecked, + }, + // examples specific configuration + { + files: ['examples/**/*.ts'], rules: { + '@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', + }, + }, + { + files: ['examples/**/*.js', 'examples/**/*.cjs'], + rules: { + 'n/no-missing-import': [ + 'error', + { + allowModules: ['ws'], + }, + ], '@typescript-eslint/no-require-imports': 'off', }, }, + // benchmarks specific configuration { - files: ['tests/**/*.cjs', 'tests/**/*.js', 'tests/**/*.mjs'], + files: ['benchmarks/**/*.cjs'], rules: { + '@typescript-eslint/no-require-imports': 'off', + }, + }, + // tests specific configuration + { + files: ['tests/**/*.js', 'tests/**/*.mjs', 'tests/**/*.cjs'], + rules: { + '@typescript-eslint/no-require-imports': 'off', '@typescript-eslint/no-empty-function': 'off', }, },