agent-orchestrator/eslint.config.js

78 lines
1.9 KiB
JavaScript

import eslint from "@eslint/js";
import tseslint from "typescript-eslint";
import eslintConfigPrettier from "eslint-config-prettier";
export default tseslint.config(
// Global ignores
{
ignores: [
"**/dist/**",
"**/node_modules/**",
"**/.next/**",
"**/coverage/**",
"packages/web/next.config.js",
"packages/web/postcss.config.mjs",
],
},
// Base JS rules
eslint.configs.recommended,
// TypeScript strict rules
...tseslint.configs.strict,
// Prettier compat (disables formatting rules)
eslintConfigPrettier,
// Project-wide rules
{
languageOptions: {
ecmaVersion: 2022,
sourceType: "module",
},
rules: {
// Security: prevent shell injection patterns
"no-eval": "error",
"no-implied-eval": "error",
"no-new-func": "error",
// Code quality
"no-console": "warn",
"no-debugger": "error",
"no-duplicate-imports": "error",
"no-template-curly-in-string": "warn",
"prefer-const": "error",
"no-var": "error",
eqeqeq: ["error", "always"],
// TypeScript
"@typescript-eslint/no-unused-vars": [
"error",
{ argsIgnorePattern: "^_", varsIgnorePattern: "^_" },
],
"@typescript-eslint/no-explicit-any": "error",
"@typescript-eslint/consistent-type-imports": ["error", { prefer: "type-imports" }],
"@typescript-eslint/no-non-null-assertion": "warn",
"@typescript-eslint/no-require-imports": "error",
},
},
// Relaxed rules for test files
{
files: ["**/*.test.ts", "**/__tests__/**"],
rules: {
"no-console": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-non-null-assertion": "off",
},
},
// Relaxed rules for Next.js pages/components
{
files: ["packages/web/**/*.tsx", "packages/web/**/*.ts"],
rules: {
"no-console": "off", // Next.js uses console for server logs
},
},
);