import js from "@eslint/js"; import tsPlugin from "@typescript-eslint/eslint-plugin"; import tsParser from "@typescript-eslint/parser"; import prettierConfig from "eslint-config-prettier/flat"; import importPlugin from "eslint-plugin-import"; import * as mdx from "eslint-plugin-mdx"; import globals from "globals"; export default [ { ignores: [ "node_modules/", ".next/", "out/", "build/", ".source/", "next-env.d.ts", ], }, js.configs.recommended, { files: ["**/*.{js,mjs,cjs}"], languageOptions: { globals: { ...globals.browser, ...globals.node, }, }, }, { files: ["**/*.jsx"], languageOptions: { globals: { ...globals.browser, ...globals.node, }, parserOptions: { ecmaFeatures: { jsx: true }, }, }, rules: { "no-unused-vars": ["warn", { argsIgnorePattern: "^_", varsIgnorePattern: "^React$" }], }, }, { files: ["**/*.{ts,tsx}"], plugins: { "@typescript-eslint": tsPlugin, import: importPlugin, }, languageOptions: { parser: tsParser, parserOptions: { ecmaVersion: "latest", sourceType: "module", ecmaFeatures: { jsx: true }, }, globals: { ...globals.browser, ...globals.node, }, }, settings: { "import/resolver": { typescript: true, }, }, rules: { ...tsPlugin.configs.recommended.rules, ...importPlugin.configs.recommended.rules, "no-unused-vars": "off", "@typescript-eslint/no-unused-vars": [ "warn", { argsIgnorePattern: "^_" }, ], "no-undef": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/ban-ts-comment": "off", }, }, { files: ["**/*.mdx"], ...mdx.flat, processor: mdx.createRemarkProcessor({ lintCodeBlocks: false, }), languageOptions: { ...mdx.flat.languageOptions, globals: { ...globals.browser, ...globals.node, props: "readonly", }, ecmaVersion: "latest", sourceType: "module", }, rules: { "no-unused-vars": "off", "no-irregular-whitespace": "off", "no-useless-escape": "off", }, }, { files: ["**/*.mdx/*.{js,jsx,ts,tsx}"], plugins: { import: importPlugin, }, languageOptions: { globals: { ...globals.browser, ...globals.node, props: "readonly", }, }, rules: { "no-unused-vars": "off", }, }, prettierConfig, ];