{ "plugins": [ "prettier", "import", "babel", "react", "@typescript-eslint" ], "extends": [ "standard", "eslint:recommended", "plugin:prettier/recommended" ], "rules": { "semi": [ "error", "always" ], "one-var": "off", "space-before-function-paren": "off", "no-throw-literal": "off", "camelcase": [ "error", { "properties": "always" } ], "no-console": "error", "no-alert": "error", "no-debugger": "error", "prefer-arrow-callback": "error", "object-property-newline": "off", "no-useless-escape": "off", "no-var": "error", "prefer-const": "error", "no-unused-expressions": "off", "strict": [ "error", "never" ], "no-mixed-operators": "off", "prefer-promise-reject-errors": "off", "standard/no-callback-literal": "off", "object-curly-spacing": "off", "quote-props": "off", "no-new-object": "error", "object-shorthand": "error", "no-array-constructor": "error", "array-callback-return": "error", "no-eval": "error", "no-new-func": "error", "prefer-rest-params": "error", "prefer-spread": "error", "no-useless-constructor": "error", "no-dupe-class-members": "error", "no-duplicate-imports": "error", "eqeqeq": "error", "no-unneeded-ternary": "error", "curly": "error", "prettier/prettier": "error", "no-empty": "off", "no-restricted-syntax": [ "error", { "selector": "ExportDefaultDeclaration", "message": "Prefer named exports" } ], "import/no-webpack-loader-syntax": "off", "import/no-relative-parent-imports": "error", "import/first": "error", "import/no-default-export": "error", "babel/no-unused-expressions": "error", "node/no-callback-literal": "off" }, "parserOptions": { "sourceType": "module", "ecmaFeatures": { "impliedStrict": true } }, "parser": "babel-eslint", "overrides": [ { "files": [ "*.ts", "*.tsx" ], "extends": [ "standard", "eslint:recommended", "preact", "plugin:prettier/recommended", "plugin:@typescript-eslint/recommended", "plugin:@typescript-eslint/recommended-requiring-type-checking", "plugin:import/typescript" ], "rules": { "semi": [ "error", "always" ], "one-var": "off", "space-before-function-paren": "off", "no-throw-literal": "error", "camelcase": [ "error", { "properties": "always" } ], "no-console": "error", "no-alert": "error", "no-debugger": "error", "prefer-arrow-callback": "error", "object-property-newline": "off", "no-useless-escape": "off", "no-var": "error", "prefer-const": "error", "no-unused-expressions": "off", "strict": [ "error", "never" ], "no-mixed-operators": "off", "prefer-promise-reject-errors": "off", "standard/no-callback-literal": "off", "object-curly-spacing": "off", "quote-props": "off", "no-new-object": "error", "object-shorthand": "error", "no-array-constructor": "error", "array-callback-return": "error", "no-eval": "error", "no-new-func": "error", "prefer-rest-params": "error", "prefer-spread": "error", "no-useless-constructor": "error", "no-dupe-class-members": "off", "no-duplicate-imports": "error", "eqeqeq": "error", "no-unneeded-ternary": "error", "curly": "error", "prettier/prettier": "error", "no-empty": "off", "no-restricted-syntax": [ "error", { "selector": "ExportDefaultDeclaration", "message": "Prefer named exports" } ], "import/no-webpack-loader-syntax": "off", "import/no-relative-parent-imports": "error", "import/first": "error", "import/no-default-export": "error", "babel/no-unused-expressions": "error", "node/no-callback-literal": "off", "import/no-commonjs": "off", "prefer-template": "off", "no-else-return": "off", "jest/valid-expect": "off", "jest/expect-expect": "off", "react-hooks/exhaustive-deps": "off", "@typescript-eslint/no-explicit-any": "error", "@typescript-eslint/no-unused-vars": "error", "@typescript-eslint/explicit-module-boundary-types": "error", "@typescript-eslint/no-non-null-assertion": "error", "@typescript-eslint/no-var-requires": "off", "@typescript-eslint/naming-convention": [ "error", { "selector": ["objectLiteralProperty", "classProperty", "typeProperty"], "modifiers": ["private", "protected"], "format": ["camelCase"], "leadingUnderscore": "require", "trailingUnderscore": "forbid" }, { "selector": ["classProperty", "typeProperty"], "modifiers": ["public"], "format": ["camelCase", "PascalCase", "UPPER_CASE", "snake_case"], "leadingUnderscore": "forbid", "trailingUnderscore": "forbid" }, { "selector": ["method"], "format": ["camelCase"], "leadingUnderscore": "forbid", "trailingUnderscore": "forbid" }, { "selector": ["class", "enum"], "format": ["PascalCase"], "leadingUnderscore": "forbid", "trailingUnderscore": "forbid" }, { "selector": ["enumMember"], "format": ["PascalCase", "UPPER_CASE"], "leadingUnderscore": "forbid", "trailingUnderscore": "forbid" }, { "selector": ["variable"], "format": ["camelCase", "PascalCase", "UPPER_CASE"], "leadingUnderscore": "forbid", "trailingUnderscore": "forbid" } ] }, "parser": "@typescript-eslint/parser", "parserOptions": { "ecmaFeatures": { "jsx": true }, "ecmaVersion": 11, "sourceType": "module", "project": [ "tsconfig.json", "jsconfig.json" ] } } ], "settings": { "import/parsers": { "@typescript-eslint/parser": [ ".ts", ".tsx" ] } }, "globals": { "_": true, "$": true }, "env": { "browser": true, "node": true, "es2020": true } }