// Copyright (c) 2025 Bytedance Ltd. and/or its affiliates // SPDX-License-Identifier: MIT import { FlatCompat } from "@eslint/eslintrc"; import tseslint from "typescript-eslint"; const compat = new FlatCompat({ baseDirectory: import.meta.dirname, }); export default tseslint.config( { ignores: [".next", "src/components"], }, ...compat.extends("next/core-web-vitals"), { files: ["**/*.ts", "**/*.tsx"], extends: [ ...tseslint.configs.recommended, ...tseslint.configs.recommendedTypeChecked, ...tseslint.configs.stylisticTypeChecked, ], rules: { "@next/next/no-img-element": "off", "@typescript-eslint/array-type": "off", "@typescript-eslint/consistent-type-definitions": "off", "@typescript-eslint/consistent-type-imports": [ "warn", { prefer: "type-imports", fixStyle: "inline-type-imports" }, ], "@typescript-eslint/no-unused-vars": [ "warn", { argsIgnorePattern: "^_" }, ], "@typescript-eslint/require-await": "off", "@typescript-eslint/no-empty-object-type": "off", "@typescript-eslint/no-misused-promises": [ "error", { checksVoidReturn: { attributes: false } }, ], "@typescript-eslint/no-redundant-type-constituents": "off", "@typescript-eslint/no-unsafe-assignment": "off", "@typescript-eslint/no-unsafe-call": "off", "@typescript-eslint/no-unsafe-member-access": "off", "@typescript-eslint/no-unsafe-argument": "off", "@typescript-eslint/no-unsafe-return": "off", "import/order": [ "error", { distinctGroup: false, groups: [ "builtin", "external", "internal", "parent", "sibling", "index", "object", ], pathGroups: [ { pattern: "~/**", group: "internal", }, { pattern: "./**.css", group: "object", }, { pattern: "**.md", group: "object", }, ], "newlines-between": "always", alphabetize: { order: "asc", caseInsensitive: true, }, }, ], }, }, { linterOptions: { reportUnusedDisableDirectives: true, }, languageOptions: { parserOptions: { projectService: true, }, }, }, );