import eslint from "@eslint/js"; import tsEslint from "typescript-eslint"; import prettierEslintRecommended from "eslint-plugin-prettier/recommended"; export default tsEslint.config( eslint.configs.recommended, ...tsEslint.configs.strictTypeChecked, ...tsEslint.configs.stylisticTypeChecked, prettierEslintRecommended, { languageOptions: { parserOptions: { projectService: true, tsconfigRootDir: import.meta.dirname, }, }, }, { rules: { "@typescript-eslint/consistent-type-definitions": ["error", "type"], "@typescript-eslint/restrict-template-expressions": [ "error", { allowNumber: true, allowNever: true }, ], }, }, { files: ["**/*.spec.*"], rules: { // To make it easier to pass incorrect data to functions under test "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-unsafe-argument": "off", "@typescript-eslint/no-unsafe-assignment": "off", // With async test suites in TAP, we don't have to explicitly call t.end // (because TAP automatically determines that all assertions are done when the promise is settled), // so using async functions even when they don't have any awaits in them "@typescript-eslint/require-await": "off", }, }, );