mirror of
https://github.com/zhom/donutbrowser.git
synced 2026-04-23 20:36:09 +02:00
134 lines
5.8 KiB
JavaScript
134 lines
5.8 KiB
JavaScript
import { FlatCompat } from "@eslint/eslintrc";
|
|
import eslint from "@eslint/js";
|
|
import tseslint from "typescript-eslint";
|
|
|
|
const compat = new FlatCompat({
|
|
baseDirectory: import.meta.dirname,
|
|
});
|
|
|
|
const eslintConfig = tseslint.config(
|
|
eslint.configs.recommended,
|
|
tseslint.configs.strictTypeChecked,
|
|
tseslint.configs.stylisticTypeChecked,
|
|
...compat.extends("next/core-web-vitals"),
|
|
{
|
|
// Disabled rules taken from https://biomejs.dev/linter/rules-sources for ones that
|
|
// are already handled by Prettier and TypeScript or are not needed
|
|
rules: {
|
|
// eslint-plugin-jsx-a11y rules - some disabled for performance/specific project needs
|
|
"jsx-a11y/alt-text": "off",
|
|
"jsx-a11y/anchor-has-content": "off",
|
|
"jsx-a11y/anchor-is-valid": "off",
|
|
"jsx-a11y/aria-activedescendant-has-tabindex": "off",
|
|
"jsx-a11y/aria-props": "off",
|
|
"jsx-a11y/aria-proptypes": "off",
|
|
"jsx-a11y/aria-role": "off",
|
|
"jsx-a11y/aria-unsupported-elements": "off",
|
|
"jsx-a11y/autocomplete-valid": "off",
|
|
"jsx-a11y/click-events-have-key-events": "off",
|
|
"jsx-a11y/heading-has-content": "off",
|
|
"jsx-a11y/html-has-lang": "off",
|
|
"jsx-a11y/iframe-has-title": "off",
|
|
"jsx-a11y/img-redundant-alt": "off",
|
|
"jsx-a11y/interactive-supports-focus": "off",
|
|
"jsx-a11y/label-has-associated-control": "off",
|
|
"jsx-a11y/lang": "off",
|
|
"jsx-a11y/media-has-caption": "off",
|
|
"jsx-a11y/mouse-events-have-key-events": "off",
|
|
"jsx-a11y/no-access-key": "off",
|
|
"jsx-a11y/no-aria-hidden-on-focusable": "off",
|
|
"jsx-a11y/no-autofocus": "off",
|
|
"jsx-a11y/no-distracting-elements": "off",
|
|
"jsx-a11y/no-interactive-element-to-noninteractive-role": "off",
|
|
"jsx-a11y/no-noninteractive-element-to-interactive-role": "off",
|
|
"jsx-a11y/no-noninteractive-tabindex": "off",
|
|
"jsx-a11y/no-redundant-roles": "off",
|
|
"jsx-a11y/no-static-element-interactions": "off",
|
|
"jsx-a11y/prefer-tag-over-role": "off",
|
|
"jsx-a11y/role-has-required-aria-props": "off",
|
|
"jsx-a11y/role-supports-aria-props": "off",
|
|
"jsx-a11y/scope": "off",
|
|
"jsx-a11y/tabindex-no-positive": "off",
|
|
// eslint-plugin-react rules - some disabled for performance/specific project needs
|
|
"react/button-has-type": "off",
|
|
"react/jsx-boolean-value": "off",
|
|
"react/jsx-curly-brace-presence": "off",
|
|
"react/jsx-fragments": "off",
|
|
"react/jsx-key": "off",
|
|
"react/jsx-no-comment-textnodes": "off",
|
|
"react/jsx-no-duplicate-props": "off",
|
|
"react/jsx-no-target-blank": "off",
|
|
"react/jsx-no-useless-fragment": "off",
|
|
"react/no-array-index-key": "off",
|
|
"react/no-children-prop": "off",
|
|
"react/no-danger": "off",
|
|
"react/no-danger-with-children": "off",
|
|
"react/void-dom-elements-no-children": "off",
|
|
// eslint-plugin-react-hooks rules - disabled for specific project needs
|
|
"react-hooks/exhaustive-deps": "off",
|
|
"react-hooks/rules-of-hooks": "off",
|
|
// typescript-eslint rules - some handled by TypeScript compiler or disabled for project needs
|
|
"@typescript-eslint/adjacent-overload-signatures": "off",
|
|
"@typescript-eslint/array-type": "off",
|
|
"@typescript-eslint/ban-types": "off",
|
|
"@typescript-eslint/consistent-type-exports": "off",
|
|
"@typescript-eslint/consistent-type-imports": "off",
|
|
"@typescript-eslint/default-param-last": "off",
|
|
"@typescript-eslint/dot-notation": "off",
|
|
"@typescript-eslint/explicit-function-return-type": "off",
|
|
"@typescript-eslint/explicit-member-accessibility": "off",
|
|
"@typescript-eslint/naming-convention": "off",
|
|
"@typescript-eslint/no-dupe-class-members": "off",
|
|
"@typescript-eslint/no-empty-function": "off",
|
|
"@typescript-eslint/no-empty-interface": "off",
|
|
"@typescript-eslint/no-explicit-any": "off",
|
|
"@typescript-eslint/no-extra-non-null-assertion": "off",
|
|
"@typescript-eslint/no-extraneous-class": "off",
|
|
"@typescript-eslint/no-inferrable-types": "off",
|
|
"@typescript-eslint/no-invalid-void-type": "off",
|
|
"@typescript-eslint/no-loss-of-precision": "off",
|
|
"@typescript-eslint/no-misused-new": "off",
|
|
"@typescript-eslint/no-namespace": "off",
|
|
"@typescript-eslint/no-non-null-assertion": "off",
|
|
"@typescript-eslint/no-redeclare": "off",
|
|
"@typescript-eslint/no-require-imports": "off",
|
|
"@typescript-eslint/no-restricted-imports": "off",
|
|
"@typescript-eslint/no-restricted-types": "off",
|
|
"@typescript-eslint/no-this-alias": "off",
|
|
"@typescript-eslint/no-unnecessary-type-constraint": "off",
|
|
"@typescript-eslint/no-unsafe-declaration-merging": "off",
|
|
"@typescript-eslint/no-unused-vars": "off",
|
|
"@typescript-eslint/no-use-before-define": "off",
|
|
"@typescript-eslint/no-useless-constructor": "off",
|
|
"@typescript-eslint/no-useless-empty-export": "off",
|
|
"@typescript-eslint/only-throw-error": "off",
|
|
"@typescript-eslint/parameter-properties": "off",
|
|
"@typescript-eslint/prefer-as-const": "off",
|
|
"@typescript-eslint/prefer-enum-initializers": "off",
|
|
"@typescript-eslint/prefer-for-of": "off",
|
|
"@typescript-eslint/prefer-function-type": "off",
|
|
"@typescript-eslint/prefer-literal-enum-member": "off",
|
|
"@typescript-eslint/prefer-namespace-keyword": "off",
|
|
"@typescript-eslint/prefer-optional-chain": "off",
|
|
"@typescript-eslint/require-await": "off",
|
|
// Custom rules
|
|
"@typescript-eslint/restrict-template-expressions": [
|
|
"error",
|
|
{
|
|
allowNumber: true,
|
|
allowBoolean: true,
|
|
allowNever: true,
|
|
},
|
|
],
|
|
},
|
|
languageOptions: {
|
|
parserOptions: {
|
|
projectService: true,
|
|
tsconfigRootDir: import.meta.dirname,
|
|
},
|
|
},
|
|
},
|
|
);
|
|
|
|
export default eslintConfig;
|