aboutsummaryrefslogtreecommitdiff
path: root/.eslintrc.json
diff options
context:
space:
mode:
Diffstat (limited to '.eslintrc.json')
-rw-r--r--.eslintrc.json279
1 files changed, 279 insertions, 0 deletions
diff --git a/.eslintrc.json b/.eslintrc.json
new file mode 100644
index 0000000..1060e25
--- /dev/null
+++ b/.eslintrc.json
@@ -0,0 +1,279 @@
+{
+ "env": {
+ "browser": true,
+ "es6": true,
+ "node": true
+ },
+ "extends": [
+ "airbnb-base",
+ "airbnb-base/legacy",
+ "eslint:all",
+ "plugin:@typescript-eslint/eslint-recommended",
+ "plugin:@typescript-eslint/recommended",
+ "plugin:@typescript-eslint/recommended-requiring-type-checking",
+ "plugin:import/errors",
+ "plugin:import/recommended",
+ "plugin:import/typescript",
+ "plugin:import/warnings",
+ "plugin:prettier/recommended",
+ "plugin:unicorn/recommended",
+ "prettier",
+ "prettier/@typescript-eslint",
+ "prettier/unicorn",
+ "xo",
+ "xo-typescript",
+ "xo/browser",
+ "xo/esnext"
+ ],
+ "globals": {
+ "Atomics": "readonly",
+ "SharedArrayBuffer": "readonly"
+ },
+ "parser": "@typescript-eslint/parser",
+ "parserOptions": {
+ "ecmaVersion": 2020,
+ "project": "tsconfig.json",
+ "sourceType": "module",
+ "tsconfigRootDir": "."
+ },
+ "plugins": [
+ "@typescript-eslint",
+ "import",
+ "prettier",
+ "unicorn"
+ ],
+ "rules": {
+ "@typescript-eslint/explicit-function-return-type": [
+ "error",
+ {
+ "allowExpressions": false,
+ "allowHigherOrderFunctions": false,
+ "allowTypedFunctionExpressions": false
+ }
+ ],
+ "@typescript-eslint/explicit-member-accessibility": "error",
+ "@typescript-eslint/indent": [
+ "error",
+ 2,
+ {
+ "SwitchCase": 1
+ }
+ ],
+ "@typescript-eslint/interface-name-prefix": [
+ "error",
+ {
+ "allowUnderscorePrefix": false,
+ "prefixWithI": "always"
+ }
+ ],
+ "@typescript-eslint/no-empty-interface": "warn",
+ "@typescript-eslint/no-explicit-any": "warn",
+ "@typescript-eslint/no-inferrable-types": "off",
+ "@typescript-eslint/no-magic-numbers": "off",
+ "@typescript-eslint/no-namespace": "off",
+ "@typescript-eslint/no-type-alias": [
+ "error",
+ {
+ "allowAliases": "in-unions",
+ "allowCallbacks": "always",
+ "allowConditionalTypes": "always",
+ "allowConstructors": "never",
+ "allowLiterals": "never",
+ "allowMappedTypes": "never",
+ "allowTupleTypes": "in-unions"
+ }
+ ],
+ "@typescript-eslint/no-untyped-public-signature": [
+ "error",
+ {
+ "ignoredMethods": [
+ "constructor"
+ ]
+ }
+ ],
+ "@typescript-eslint/quotes": [
+ "error",
+ "double"
+ ],
+ "@typescript-eslint/require-await": "warn",
+ "@typescript-eslint/semi": [
+ "error",
+ "always"
+ ],
+ "@typescript-eslint/strict-boolean-expressions": [
+ "error",
+ {
+ "ignoreRhs": true
+ }
+ ],
+ "@typescript-eslint/typedef": [
+ "error",
+ {
+ "arrayDestructuring": true,
+ "arrowParameter": true,
+ "memberVariableDeclaration": true,
+ "objectDestructuring": true,
+ "parameter": true,
+ "propertyDeclaration": true,
+ "variableDeclaration": true
+ }
+ ],
+ "arrow-parens": [
+ "error",
+ "always"
+ ],
+ "camelcase": "off",
+ "capitalized-comments": "off",
+ "class-methods-use-this": "off",
+ "comma-dangle": [
+ "error",
+ {
+ "arrays": "always-multiline",
+ "exports": "always-multiline",
+ "functions": "never",
+ "imports": "always-multiline",
+ "objects": "always-multiline"
+ }
+ ],
+ "comma-spacing": [
+ "error",
+ {
+ "after": true,
+ "before": false
+ }
+ ],
+ "eslint-comments/disable-enable-pair": "off",
+ "eslint-comments/no-unused-disable": "off",
+ "eslint-comments/no-use": "off",
+ "function-call-argument-newline": "off",
+ "id-length": "warn",
+ "import/default": "off",
+ "import/extensions": [
+ "error",
+ "ignorePackages",
+ {
+ "js": "never",
+ "jsx": "never",
+ "ts": "never",
+ "tsx": "never",
+ "vue": "never"
+ }
+ ],
+ "import/named": "off",
+ "import/namespace": "off",
+ "import/no-cycle": [
+ "error",
+ {
+ "maxDepth": 2
+ }
+ ],
+ "import/no-extraneous-dependencies": [
+ "error",
+ {
+ "devDependencies": true
+ }
+ ],
+ "import/no-named-as-default-member": "off",
+ "import/order": [
+ "error",
+ {
+ "groups": [
+ [
+ "builtin",
+ "external"
+ ],
+ [
+ "internal",
+ "parent",
+ "sibling",
+ "index"
+ ],
+ "unknown"
+ ],
+ "newlines-between": "always"
+ }
+ ],
+ "indent": "off",
+ "linebreak-style": [
+ "error",
+ "unix"
+ ],
+ "lines-around-comment": "off",
+ "lines-between-class-members": [
+ "error",
+ "always"
+ ],
+ "max-len": [
+ "error",
+ {
+ "code": 180
+ }
+ ],
+ "max-lines": [
+ "error",
+ 450
+ ],
+ "max-lines-per-function": [
+ "error",
+ {
+ "IIFEs": false,
+ "max": 100,
+ "skipBlankLines": false,
+ "skipComments": true
+ }
+ ],
+ "max-statements": "off",
+ "multiline-comment-style": "off",
+ "new-cap": "warn",
+ "no-console": "warn",
+ "no-magic-numbers": "off",
+ "no-multiple-empty-lines": [
+ "error",
+ {
+ "max": 1,
+ "maxEOF": 1
+ }
+ ],
+ "no-process-env": "off",
+ "no-tabs": "off",
+ "no-ternary": "off",
+ "no-undefined": "off",
+ "no-underscore-dangle": [
+ "error",
+ {
+ "allowAfterSuper": false,
+ "allowAfterThis": true,
+ "enforceInMethodNames": false
+ }
+ ],
+ "no-unused-vars": "off",
+ "object-curly-newline": "off",
+ "object-curly-spacing": [
+ "error",
+ "always"
+ ],
+ "prettier/prettier": "error",
+ "quotes": "off",
+ "semi": "off",
+ "sort-imports": [
+ "error",
+ {
+ "ignoreCase": false,
+ "ignoreDeclarationSort": true,
+ "ignoreMemberSort": false
+ }
+ ],
+ "sort-keys": "warn",
+ "space-before-function-paren": "off",
+ "unicorn/filename-case": [
+ "error",
+ {
+ "cases": {
+ "kebabCase": true,
+ "pascalCase": true
+ }
+ }
+ ],
+ "unicorn/prevent-abbreviations": "off"
+ }
+}