55 lines
1.4 KiB
JavaScript
55 lines
1.4 KiB
JavaScript
// @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",
|
|
],
|
|
},
|
|
];
|