import js from "@eslint/js"; import prettierConfig from "eslint-config-prettier"; import globals from "globals"; import jsxA11y from "eslint-plugin-jsx-a11y"; import react from "eslint-plugin-react"; import reactHooks from "eslint-plugin-react-hooks"; import tseslint from "typescript-eslint"; export default tseslint.config( { ignores: ["dist/**", "node_modules/**"], }, { files: ["src/**/*.{ts,tsx}"], extends: [ js.configs.recommended, ...tseslint.configs.recommendedTypeChecked, react.configs.flat.recommended, react.configs.flat["jsx-runtime"], reactHooks.configs.flat["recommended-latest"], jsxA11y.flatConfigs.recommended, prettierConfig, ], languageOptions: { ecmaVersion: 2022, sourceType: "module", globals: { ...globals.browser, ...globals.es2022, }, parserOptions: { projectService: true, tsconfigRootDir: import.meta.dirname, }, }, settings: { react: { version: "detect", }, }, rules: { "@typescript-eslint/no-base-to-string": "off", "@typescript-eslint/no-floating-promises": "error", "@typescript-eslint/no-misused-promises": [ "error", { checksVoidReturn: false, }, ], "@typescript-eslint/no-redundant-type-constituents": "off", "@typescript-eslint/no-unnecessary-type-assertion": "off", "@typescript-eslint/no-unsafe-argument": "off", "@typescript-eslint/no-unsafe-assignment": "off", "@typescript-eslint/no-unsafe-member-access": "off", "@typescript-eslint/no-unsafe-return": "off", "@typescript-eslint/require-await": "off", "jsx-a11y/no-autofocus": "off", "jsx-a11y/label-has-associated-control": "off", "react-hooks/set-state-in-effect": "off", }, }, );