import js from "@eslint/js";
import prettier from "eslint-config-prettier";
import { fileURLToPath } from "node:url";
import { dirname } from "node:path";
import tseslint from "typescript-eslint";
const tsconfigRootDir = dirname(fileURLToPath(import.meta.url));
const typeCheckedTsConfigs = tseslint.configs.recommendedTypeChecked.map((config) => ({
...config,
files: ["**/*.ts"],
}));
export default [
{
ignores: ["dist/**", "node_modules/**"],
},
js.configs.recommended,
...typeCheckedTsConfigs,
prettier,
{
files: ["**/*.test.ts"],
languageOptions: {
globals: {
describe: "readonly",
expect: "readonly",
it: "readonly",
},
},
},
{
files: ["**/*.ts"],
languageOptions: {
parserOptions: {
project: ["./tsconfig.eslint.json"],
tsconfigRootDir,
},
},
rules: {
"@typescript-eslint/consistent-type-imports": ["error", { prefer: "type-imports" }],
"@typescript-eslint/no-explicit-any": "error",
"@typescript-eslint/no-floating-promises": "error",
"@typescript-eslint/no-misused-promises": "error",
"@typescript-eslint/no-unused-vars": ["error", { argsIgnorePattern: "^_" }],
},
},
];