/* eslint-env node */
module.exports = {
  root: true,
  parser: "@typescript-eslint/parser",
  plugins: ["solid"],
  extends: [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "plugin:solid/recommended",
  ],
  overrides: [
    {
      files: ["**/*.tsx"],
      parserOptions: {
        ecmaFeatures: {
          jsx: true,
        },
      },
      settings: {
        solid: {
          noImportReact: true,
        },
      },
      rules: {
        // Rules valid in eslint-plugin-solid v0.14.5
        "solid/jsx-no-undef": "error",
        "solid/prefer-classlist": "error",
        "solid/prefer-for": "error",         // catches .map() in JSX — use <For> instead
        "solid/reactivity": "warn",           // catches signals used outside reactive context
        "solid/event-handlers": "warn",       // catches non-standard event handler props
        "solid/no-react-specific-props": "error",
        "solid/no-innerhtml": "warn",         // prefer children over innerHTML
        "solid/no-destructure": "warn",       // catches destructured props/signals
        "solid/self-closing-comp": "warn",
      },
    },
  ],
  rules: {
    "@typescript-eslint/explicit-function-return-type": "off",
    "@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_" }],
    "@typescript-eslint/no-explicit-any": "warn",
    "arrow-body-style": ["warn", "as-needed"],
    curly: ["error", "multi-line"],
    "no-console": "off",
    "no-debugger": "warn",
    "no-unused-vars": "off",
    "prefer-const": "error",
  },
  env: {
    browser: true,
  },
  ignorePatterns: [
    "dist",
    ".output",
    "node_modules",
    "coverage",
    "test-results",
    "playwright-report",
  ],
};
