diff options
Diffstat (limited to '.eslintrc.json')
-rw-r--r-- | .eslintrc.json | 279 |
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" + } +} |