Files
stack/packages/config/eslint/base.js
Jason Woltje c6699908e4 chore: upgrade ESLint warnings to errors for stricter quality-rails
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>
2026-01-31 12:16:57 -06:00

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/**"],
}
);