/** @type {import("@typescript-eslint/utils/dist/ts-eslint/Linter").Linter.Config} c */ module.exports = { root: true, parser: "@typescript-eslint/parser", parserOptions: { project: ["./tsconfig.json"], ecmaVersion: 2016, }, plugins: ["@typescript-eslint", "prefer-arrow"], extends: [ "eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:@typescript-eslint/recommended-requiring-type-checking", "plugin:security/recommended-legacy", "prettier", ], ignorePatterns: ["*.js"], env: { browser: true, es2016: true, node: true, }, rules: { "@typescript-eslint/no-misused-promises": [ "error", { checksVoidReturn: false }, ], "@typescript-eslint/no-unsafe-argument": "off", "@typescript-eslint/naming-convention": [ "error", { selector: "interface", format: ["PascalCase"], prefix: ["I"], }, { selector: "typeLike", format: ["PascalCase"], }, { selector: "variableLike", format: ["camelCase", "UPPER_CASE"], leadingUnderscore: "allow", }, ], "@typescript-eslint/prefer-ts-expect-error": "error", "prefer-arrow/prefer-arrow-functions": [ "error", { disallowPrototype: true, singleReturnOnly: false, classPropertiesAllowed: false, }, ], eqeqeq: "error", curly: ["error", "all"], "no-console": ["warn", { allow: ["warn", "error"] }], "no-eval": "error", "brace-style": ["error", "1tbs"], "arrow-body-style": ["error", "as-needed"], "object-shorthand": ["error", "always"], "no-lonely-if": "error", "prefer-const": "error", "prefer-arrow-callback": "error", "no-var": "error", "default-case-last": "warn", "no-nested-ternary": "warn", }, };