import globals from "globals"; import pluginJs from "@eslint/js"; import mochaPlugin from "eslint-plugin-mocha"; import tseslint from "typescript-eslint"; /* Please do not forget to look at the latest eslint configurations and rules. ESlint v9 configuration is different than v8. "https://eslint.org/docs/latest/use/configure/" */ /** @type {import('eslint').Linter.Config[]} */ export default [ { ignores: ["dist/**", "node_modules/**", "coverage/**", "test/**"], }, { languageOptions: { globals: { ...globals.node, // Add Node.js globals ...globals.chai, // Add Chai globals }, ecmaVersion: 2023, sourceType: "module", }, }, pluginJs.configs.recommended, // Core JS rules ...tseslint.configs.recommended, // TypeScript recommended rules mochaPlugin.configs.flat.recommended, // Mocha rules { files: ["**/*.ts", "**/*.tsx"], languageOptions: { parser: tseslint.parser, parserOptions: { projectService: { allowDefaultProject: ["jest.config.ts"], }, tsconfigRootDir: import.meta.dirname, }, }, rules: { "@typescript-eslint/no-unused-vars": ["error", { argsIgnorePattern: "^_", varsIgnorePattern: "^_" }], // Ignore unused variables that start with '_' "@typescript-eslint/no-explicit-any": "warn", // Warn on 'any' types "mocha/max-top-level-suites": "warn", // Warn if there are too many top-level suites instead of failing }, }, ];