// @ts-check import tseslint from "@typescript-eslint/eslint-plugin"; import tsparser from "@typescript-eslint/parser"; export default [ { files: ["src/**/*.ts", "src/**/*.tsx"], languageOptions: { parser: tsparser, parserOptions: { ecmaVersion: "latest", sourceType: "module", }, }, plugins: { "@typescript-eslint": tseslint, }, rules: { // TypeScript recommended rules (subset) "@typescript-eslint/no-explicit-any": "warn", // Warn, not error for gradual migration "@typescript-eslint/no-unused-vars": [ "error", { argsIgnorePattern: "^_", varsIgnorePattern: "^_", }, ], "@typescript-eslint/explicit-function-return-type": "off", "@typescript-eslint/no-non-null-assertion": "warn", // General code quality "no-console": "off", // Game dev needs console "prefer-const": "error", "no-var": "error", }, }, { files: ["src/**/*.test.ts", "src/**/__tests__/**/*.ts"], rules: { // More lenient for tests "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-non-null-assertion": "off", }, }, { ignores: [ "node_modules/**", "dist/**", "coverage/**", "*.config.js", "*.config.ts", ], }, ];