import nextjsConfig from "@nexus/eslint-config/nextjs";

/** @type {import("eslint").Linter.FlatConfig[]} */
export default [
  ...nextjsConfig,
  {
    ignores: ["e2e/**"],
  },
  {
    // Temporary overrides for pre-existing violations surfaced by switching
    // from `next lint` to the shared eslint config. Each rule should be
    // upgraded back to "error" as the violations are resolved:
    //   - no-explicit-any: Phase 2 (reduce `as any` casts)
    //   - no-unused-vars: Phase 2 (remove dead code)
    //   - no-misused-promises: Phase 2 (fix async event handlers)
    //   - no-unsafe-function-type: Phase 2 (replace `Function` type)
    //   - no-unused-expressions: Phase 2
    rules: {
      "@typescript-eslint/no-explicit-any": "warn",
      "@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_" }],
      "@typescript-eslint/no-misused-promises": "warn",
      "@typescript-eslint/no-unsafe-function-type": "warn",
      "@typescript-eslint/no-unused-expressions": "warn",
      "@typescript-eslint/consistent-type-imports": ["error", {
        fixStyle: "separate-type-imports",
        disallowTypeAnnotations: false,
      }],
    },
  },
];
