{ "root": true, "plugins": ["@typescript-eslint", "import", "header", "react"], "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:react/recommended", "plugin:react-hooks/recommended" ], "rules": { "react/jsx-no-target-blank": ["off"], "react/react-in-jsx-scope": "off", "@typescript-eslint/no-unused-vars": [ "error", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_", "caughtErrorsIgnorePattern": "^_" } ], "import/newline-after-import": "error", "import/order": [ "error", { "groups": [ "builtin", "external", "unknown", "index", "internal", "parent", "sibling" ], "newlines-between": "always", "alphabetize": { "order": "asc", "caseInsensitive": true } } ], "newline-after-var": "error", "newline-before-return": "error", "no-console": "error", "no-duplicate-imports": "error", "object-shorthand": "error", "padding-line-between-statements": [ "error", { "blankLine": "never", "prev": ["const"], "next": "const" } ], "react/jsx-curly-brace-presence": ["warn"], "react/self-closing-comp": ["error"], "header/header": [ 2, "block", [ "", { "pattern": "^ \\* Copyright © 20\\d{2} Hexastack. All rights reserved.$", "template": " * Copyright © 2025 Hexastack. All rights reserved." }, " *", " * Licensed under the GNU Affero General Public License v3.0 (AGPLv3) with the following additional terms:", " * 1. The name \"Hexabot\" is a trademark of Hexastack. You may not use this name in derivative works without express written permission.", " * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's \"About\" section, documentation, and README file).", " " ], 2 ] }, "settings": { "react": { "version": "detect" } } }