Upgraded three TypeScript rules from "warn" to "error": - explicit-function-return-type: Functions must declare return types - prefer-nullish-coalescing: Enforce ?? over || for null checks - prefer-optional-chain: Enforce ?. over && chains This tightens pre-commit enforcement to catch more issues mechanically before code review, reducing agent iteration cycles. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
58 lines
2.1 KiB
JavaScript
58 lines
2.1 KiB
JavaScript
import eslint from "@eslint/js";
|
|
import tseslint from "typescript-eslint";
|
|
import prettierConfig from "eslint-config-prettier";
|
|
import prettierPlugin from "eslint-plugin-prettier";
|
|
// @ts-expect-error - security plugin doesn't have types
|
|
import securityPlugin from "eslint-plugin-security";
|
|
|
|
export default tseslint.config(
|
|
eslint.configs.recommended,
|
|
...tseslint.configs.strictTypeChecked,
|
|
...tseslint.configs.stylisticTypeChecked,
|
|
prettierConfig,
|
|
{
|
|
plugins: {
|
|
prettier: prettierPlugin,
|
|
security: securityPlugin,
|
|
},
|
|
rules: {
|
|
// Prettier
|
|
"prettier/prettier": "error",
|
|
|
|
// Type Safety - STRICT (Quality Rails)
|
|
"@typescript-eslint/no-explicit-any": "error",
|
|
"@typescript-eslint/explicit-function-return-type": "error",
|
|
"@typescript-eslint/explicit-module-boundary-types": "error",
|
|
"@typescript-eslint/no-unused-vars": [
|
|
"error",
|
|
{ argsIgnorePattern: "^_", varsIgnorePattern: "^_" },
|
|
],
|
|
"@typescript-eslint/consistent-type-imports": ["error", { prefer: "type-imports" }],
|
|
|
|
// Promise/Async Safety (Quality Rails)
|
|
"@typescript-eslint/no-floating-promises": "error",
|
|
"@typescript-eslint/no-misused-promises": "error",
|
|
"@typescript-eslint/await-thenable": "error",
|
|
|
|
// Code Quality (Quality Rails)
|
|
"@typescript-eslint/no-var-requires": "error",
|
|
"@typescript-eslint/prefer-nullish-coalescing": "error",
|
|
"@typescript-eslint/prefer-optional-chain": "error",
|
|
|
|
// Security (Quality Rails)
|
|
"security/detect-object-injection": "off", // Too many false positives
|
|
"security/detect-non-literal-fs-filename": "warn",
|
|
"security/detect-non-literal-regexp": "warn",
|
|
"security/detect-unsafe-regex": "error",
|
|
"security/detect-buffer-noassert": "error",
|
|
"security/detect-eval-with-expression": "error",
|
|
"security/detect-no-csrf-before-method-override": "error",
|
|
"security/detect-possible-timing-attacks": "warn",
|
|
"security/detect-pseudoRandomBytes": "error",
|
|
},
|
|
},
|
|
{
|
|
ignores: ["**/node_modules/**", "**/dist/**", "**/.next/**", "**/coverage/**"],
|
|
}
|
|
);
|