"use strict"; require("@rushstack/eslint-patch/modern-module-resolution"); const config = { env: { browser: true, es2024: true, node: true, jest: true, }, extends: [ "plugin:eslint-comments/recommended", "plugin:jsdoc/recommended-typescript", "plugin:jsonc/recommended-with-json", "plugin:prettier/recommended", "plugin:promise/recommended", "plugin:security/recommended", ], ignorePatterns: ["reports"], overrides: [ { files: ["*.ts", "*.tsx"], parser: "@typescript-eslint/parser", parserOptions: { ecmaVersion: "latest", project: ["**/**/tsconfig?(.*).json"], sourceType: "module", }, plugins: ["@typescript-eslint"], extends: [ "plugin:@typescript-eslint/recommended", "plugin:@typescript-eslint/recommended-requiring-type-checking", ], rules: { "@typescript-eslint/interface-name-prefix": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-namespace": [ "error", { allowDeclarations: true }, ], "@typescript-eslint/no-unused-vars": [ "error", { argsIgnorePattern: "^_", varsIgnorePattern: "^_" }, ], "@typescript-eslint/no-this-alias": [ "error", { allowedNames: ["self"] }, ], "@typescript-eslint/restrict-template-expressions": [ "error", { allowBoolean: true }, ], "@typescript-eslint/unbound-method": ["error", { ignoreStatic: true }], }, }, { files: "**/*.@(test|spec).@(t|j)s?(x)", plugins: ["jest", "jest-formatting"], extends: [ "plugin:jest/recommended", "plugin:jest/style", "plugin:jest-formatting/strict", ], rules: { "jest/expect-expect": [ "error", { assertFunctionNames: ["expect", "(*.)?assert*"] }, ], }, }, { files: ["*.jsx", "*.tsx"], plugins: ["react", "react-hooks", "react-redux"], extends: [ "plugin:react/recommended", "plugin:react-redux/recommended", "plugin:react-hooks/recommended", ], rules: { "react/prop-types": "off", "react/no-unescaped-entities": ["error", { forbid: [">", "}"] }], "react/display-name": "warn", "react-redux/prefer-separate-component-file": "off", }, settings: { react: { version: "detect", }, }, }, { files: ["*.cy.@(t|j)s?"], env: { "cypress/globals": true, }, plugins: ["cypress"], extends: ["plugin:cypress/recommended"], }, { files: ["*.yaml", "*.yml"], parser: "yaml-eslint-parser", extends: ["plugin:yml/standard", "plugin:yml/prettier"], }, { files: ["**/**/tsconfig?(.*).json"], rules: { "jsonc/no-comments": "off", }, }, { files: ["package.json"], extends: ["plugin:package-json/recommended"], plugins: ["package-json"], parser: "espree", rules: { "prettier/prettier": "off", "package-json/order-properties": "error", "package-json/sort-collections": [ "error", [ "config", "dependencies", "dependenciesComments", "devDependencies", "peerDependencies", "peerDependenciesComments", "scripts", ], ], }, }, { files: ["*.js", "*.jsx", "*.ts", "*.tsx"], plugins: ["unicorn"], extends: ["plugin:unicorn/recommended"], rules: { "unicorn/filename-case": [ "error", { cases: { camelCase: true, pascalCase: true }, ignore: ["docker-compose.yml", "package-lock.json"], }, ], "unicorn/prefer-module": "off", "unicorn/prevent-abbreviations": "off", }, }, ], plugins: ["jsdoc", "prettier", "promise", "simple-import-sort"], rules: { "jsdoc/no-blank-blocks": "error", "jsdoc/require-jsdoc": [ "warn", { enableFixer: false, }, ], "jsdoc/require-throws": "warn", "no-console": [ "error", { allow: ["warn", "error"], }, ], "prettier/prettier": [ "error", { singleQuote: false, trailingComma: "all", }, ], "promise/catch-or-return": [ "error", { terminationMethod: ["catch", "finally"] }, ], "simple-import-sort/exports": "error", "simple-import-sort/imports": [ "error", { groups: [ ["^\\u0000"], ["^@?\\w"], ["^\\."], ["^"], ], }, ], }, settings: { jsdoc: { mode: "typescript", }, }, }; module.exports = config; //# sourceMappingURL=.eslintrc.js.map