.eslintrc.json•2.44 kB
{
"root": true,
"env": {
"browser": true,
"es2021": true,
"node": true
},
"parser": "@typescript-eslint/parser",
"parserOptions": {
"project": "./tsconfig.json",
"tsconfigRootDir": "./"
},
"plugins": ["@typescript-eslint", "import", "security"],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking",
"plugin:import/recommended",
"plugin:import/typescript",
"plugin:security/recommended"
],
"rules": {
// Type Safety (Gradual adoption - start with warnings)
"@typescript-eslint/no-unused-vars": ["warn", { "argsIgnorePattern": "^_" }],
"@typescript-eslint/no-explicit-any": "off", // Too many existing cases - enable gradually
"@typescript-eslint/explicit-module-boundary-types": "off",
"@typescript-eslint/no-unsafe-assignment": "off",
"@typescript-eslint/no-unsafe-member-access": "off",
"@typescript-eslint/no-unsafe-call": "off",
"@typescript-eslint/no-unsafe-return": "off",
// Code Quality
"@typescript-eslint/prefer-const": "error",
"@typescript-eslint/no-var-requires": "error",
"@typescript-eslint/prefer-as-const": "error",
"@typescript-eslint/prefer-nullish-coalescing": "error",
"@typescript-eslint/prefer-optional-chain": "error",
// Best Practices
"no-console": "warn",
"no-debugger": "error",
"prefer-const": "error",
"no-var": "error",
"eqeqeq": ["error", "always"],
"curly": "error",
// Import Organization
"import/order": ["error", {
"groups": [
"builtin",
"external",
"internal",
"parent",
"sibling",
"index"
],
"newlines-between": "always",
"alphabetize": {
"order": "asc",
"caseInsensitive": true
}
}],
"import/no-unresolved": "off",
"import/named": "off",
// Security Rules (Essential only)
"security/detect-object-injection": "warn",
"security/detect-non-literal-regexp": "off",
"security/detect-unsafe-regex": "warn"
},
"overrides": [
{
"files": ["**/*.test.ts", "**/*.spec.ts", "tests/**/*.ts"],
"rules": {
"@typescript-eslint/no-explicit-any": "off",
"no-console": "off"
}
},
{
"files": ["tools/**/*.ts", "scripts/**/*.ts"],
"rules": {
"no-console": "off"
}
}
]
}