{ "plugins": [ "unicorn", "mysticatea", "promise", "import", "node" ], "parserOptions": { "ecmaVersion": 2017, "sourceType": "module" }, "extends": [ "eslint:recommended", "plugin:unicorn/recommended", "plugin:node/recommended" ], "settings": { "import/resolver": { "node": { "extensions": [ ".js", ".ts", ".vue" ] } }, "node": { "convertPath": { "src/**/*.ts": ["^src/(.+?)\\.ts$", "dist/$1.js"] }, "tryExtensions": [".ts", ".js"] } }, "rules": { "unicorn/filename-case": "off", "no-underscore-dangle": "off", "no-inner-declarations": "off", "no-shadow": "off", "no-console": "off", "arrow-parens": "off", "block-scoped-var": "off", "no-redeclare": "off", "unicorn/no-process-exit": "off", "unicorn/no-fn-reference-in-iterator": "off", "unicorn/explicit-length-check": "off", "unicorn/import-index": "off", "promise/no-native": "off", "prefer-const": "error", "eol-last": "warn", "curly": [ "error", "multi-line" ], "camelcase": [ "error", { "properties": "never" } ], "guard-for-in": "error", "no-else-return": "error", "radix": "error", "indent": [ "error", 4, { "SwitchCase": 1 } ], "semi": [ "error", "always" ], "brace-style": [ "error", "1tbs", { "allowSingleLine": true } ], "comma-style": "error", "consistent-this": [ "error", "this" ], "func-style": [ "error", "declaration" ], "no-useless-escape": "error", "no-duplicate-imports": "error", "max-nested-callbacks": [ "warn", 6 ], "for-direction": "error", "semi-style": "error", "no-buffer-constructor": "error", "switch-colon-spacing": [ "error", { "after": true, "before": false } ], "padding-line-between-statements": [ "warn", { "blankLine": "always", "prev": "*", "next": "return" }, { "blankLine": "always", "prev": [ "const", "let", "var" ], "next": "*" }, { "blankLine": "any", "prev": [ "const", "let", "var" ], "next": [ "const", "let", "var" ] }, { "blankLine": "always", "prev": "directive", "next": "*" }, { "blankLine": "any", "prev": "directive", "next": "directive" } ], "no-multiple-empty-lines": [ "error", { "max": 2 } ], "no-ternary": "error", "func-names": [ "error", "as-needed" ], "one-var": [ "error", "never" ], "operator-assignment": [ "error", "always" ], "quotes": [ "error", "double", { "avoidEscape": true } ], "eqeqeq": [ "error", "always" ], "operator-linebreak": "error", "keyword-spacing": "error", "no-return-await": "error", "no-case-declarations": "warn", "space-before-blocks": "error", "space-before-function-paren": [ "error", { "anonymous": "always", "named": "never" } ], "space-in-parens": "error", "no-multi-assign": "error", "prefer-promise-reject-errors": "error", "prefer-destructuring": "error", "no-var": "error", "constructor-super": "error", "no-dupe-class-members": "error", "prefer-arrow-callback": "error", "no-class-assign": "error", "no-const-assign": "error", "no-this-before-super": "error", "no-useless-constructor": "error", "object-shorthand": "error", "prefer-rest-params": "error", "prefer-spread": "error", "require-yield": "error", "template-curly-spacing": "error", "no-new-symbol": "error", "prefer-template": "error", "generator-star-spacing": "error", "object-property-newline": "error", "no-useless-rename": "error", "no-prototype-builtins": "error", "no-mixed-operators": "error", "symbol-description": "error", "class-methods-use-this": "error", "prefer-numeric-literals": "error", "no-compare-neg-zero": "error", "nonblock-statement-body-position": "error", "no-misleading-character-class": "error", "require-atomic-updates": "error", "no-async-promise-executor": "error", "require-unicode-regexp": "error", "mysticatea/block-scoped-var": "error", "mysticatea/no-instanceof-array": "error", "mysticatea/no-instanceof-wrapper": "error", "mysticatea/no-literal-call": "error", "mysticatea/no-this-in-static": "error", "mysticatea/no-use-ignored-vars": "error", "mysticatea/no-useless-rest-spread": "error", "promise/always-return": "error", "promise/no-return-wrap": "error", "promise/param-names": "error", "promise/catch-or-return": "error", "promise/no-nesting": "error", "promise/prefer-await-to-then": "error", "promise/no-promise-in-callback": "warn", "promise/no-callback-in-promise": "warn", "promise/prefer-await-to-callbacks": "warn", "promise/avoid-new": "warn", "import/no-unresolved": "error", "import/named": "error", "import/default": "error", "import/namespace": "error", "import/no-absolute-path": "error", "import/no-dynamic-require": "error", "import/no-webpack-loader-syntax": "error", "import/export": "error", "import/no-duplicates": "error", "import/no-mutable-exports": "error", "import/no-amd": "error", "import/first": "error", "import/no-extraneous-dependencies": "error", "import/no-named-as-default": "error", "import/no-named-as-default-member": "error", "import/no-deprecated": "error", "import/extensions": [ "error", "never", { "json": "always" } ], "import/order": [ "warn", { "newlines-between": "always" } ], "import/no-named-default": "error", "import/newline-after-import": "error", "import/no-unassigned-import": "error", "no-process-exit": "off" } }