eslint.config.mjs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import typescriptEslint from "@typescript-eslint/eslint-plugin";
  2. import reactHooks from "eslint-plugin-react-hooks";
  3. import tsdoc from "eslint-plugin-tsdoc";
  4. import { fixupPluginRules } from "@eslint/compat";
  5. import tsParser from "@typescript-eslint/parser";
  6. import path from "node:path";
  7. import { fileURLToPath } from "node:url";
  8. import js from "@eslint/js";
  9. import { FlatCompat } from "@eslint/eslintrc";
  10. const __filename = fileURLToPath(import.meta.url);
  11. const __dirname = path.dirname(__filename);
  12. const compat = new FlatCompat({
  13. baseDirectory: __dirname,
  14. recommendedConfig: js.configs.recommended,
  15. allConfig: js.configs.all
  16. });
  17. export default [
  18. ...compat.extends("plugin:react/recommended", "plugin:@typescript-eslint/recommended"),
  19. {
  20. plugins: {
  21. "@typescript-eslint": typescriptEslint,
  22. "react-hooks": fixupPluginRules(reactHooks),
  23. tsdoc,
  24. },
  25. languageOptions: {
  26. parser: tsParser,
  27. ecmaVersion: 2018,
  28. sourceType: "module",
  29. parserOptions: {
  30. ecmaFeatures: {
  31. jsx: true,
  32. },
  33. },
  34. },
  35. settings: {
  36. react: {
  37. version: "detect",
  38. },
  39. },
  40. rules: {
  41. "@typescript-eslint/explicit-function-return-type": "off",
  42. "@typescript-eslint/explicit-module-boundary-types": "off",
  43. "@typescript-eslint/no-unused-expressions": "off",
  44. "react-hooks/rules-of-hooks": "error",
  45. "react-hooks/exhaustive-deps": "error",
  46. "tsdoc/syntax": "off",
  47. },
  48. },
  49. ];