Advertisement
Guest User

Untitled

a guest
Oct 13th, 2019
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JSON 16.37 KB | None | 0 0
  1. {
  2.   "env": {
  3.     "browser": true,
  4.     "es6": true,
  5.     "node": true
  6.   },
  7.   "globals": {
  8.     "__static": "readonly",
  9.     "$": "readonly",
  10.     "Svelto": "readonly"
  11.   },
  12.   "parser": "@typescript-eslint/parser",
  13.   "parserOptions": {
  14.     "ecmaFeatures": {
  15.       "jsx": true
  16.     },
  17.     "ecmaVersion": 2020,
  18.     "project": "tsconfig.json",
  19.     "sourceType": "module",
  20.     "useJSXTextNode": true
  21.   },
  22.   "settings": {
  23.     "react": {
  24.       "pragma": "React",
  25.       "version": "detect"
  26.     }
  27.   },
  28.   "plugins": [
  29.     "@typescript-eslint",
  30.     "react",
  31.     "react-hooks",
  32.     "unicorn"
  33.   ],
  34.   "rules": {
  35.     /* ESLINT STYLE */
  36.     "array-bracket-spacing": ["error", "never"],
  37.     "array-element-newline": ["error", "consistent"],
  38.     "arrow-parens": ["error", "as-needed"],
  39.     "arrow-spacing": "error",
  40.     "block-spacing": ["error", "always"],
  41.     "comma-dangle": ["error", "never"],
  42.     "comma-spacing": ["error", { "before": false, "after": true }],
  43.     "comma-style": ["error", "last"],
  44.     "computed-property-spacing": ["error", "never"],
  45.     "consistent-this": ["error", "self"],
  46.     "curly": ["error", "multi-line"],
  47.     "dot-notation": "error",
  48.     "eol-last": ["error", "always"],
  49.     "func-name-matching": ["error", "always"],
  50.     "func-names": ["error", "always"],
  51.     "func-style": ["error", "declaration", { "allowArrowFunctions": true }],
  52.     "function-paren-newline": ["error", "consistent"],
  53.     "generator-star-spacing": ["error", { "before": false, "after": false }],
  54.     "id-blacklist": ["error", "e", "cb"],
  55.     "implicit-arrow-linebreak": ["error", "beside"],
  56.     "jsx-quotes": ["error", "prefer-double"],
  57.     "key-spacing": ["error", { "beforeColon": false, "afterColon": true, "mode": "strict" }],
  58.     "keyword-spacing": ["error", { "before": true, "after": true }],
  59.     "linebreak-style": ["error", "unix"],
  60.     "max-depth": ["error", 5],
  61.     "max-nested-callbacks": ["error", 3],
  62.     "new-cap": "error",
  63.     "new-parens": "error",
  64.     "no-mixed-operators": ["error", { "groups": [["+", "-", "*", "/", "%", "**"], ["&", "|", "^", "~", "<<", ">>", ">>>"], ["==", "!=", "===", "!==", ">", ">=", "<", "<="], ["&&", "||"], ["in", "instanceof"]], "allowSamePrecedence": true }],
  65.     "no-mixed-spaces-and-tabs": "error",
  66.     "no-multiple-empty-lines": "error",
  67.     "no-new-object": "error",
  68.     "no-tabs": "error",
  69.     "no-trailing-spaces": "error",
  70.     "no-unneeded-ternary": "error",
  71.     "no-whitespace-before-property": "error",
  72.     "nonblock-statement-body-position": ["error", "beside"],
  73.     "object-curly-newline": ["error", { "consistent": true }],
  74.     "one-var-declaration-per-line": ["error", "always"],
  75.     "prefer-object-spread": "error",
  76.     "quote-props": ["error", "consistent-as-needed"],
  77.     "rest-spread-spacing": ["error", "never"],
  78.     "semi-spacing": ["error", { "before": false, "after": true }],
  79.     "semi-style": ["error", "last"],
  80.     "space-before-blocks": "error",
  81.     "space-before-function-paren": "error",
  82.     "space-unary-ops": ["error", { "words": false, "nonwords": false }],
  83.     "switch-colon-spacing": ["error", { "after": true, "before": false }],
  84.     "template-curly-spacing": ["error", "never"],
  85.     "template-tag-spacing": ["error", "never"],
  86.     "unicode-bom": ["error", "never"],
  87.     "yield-star-spacing": ["error", "after"],
  88.     /* ESLINT */
  89.     "accessor-pairs": ["error", { "enforceForClassMembers": true }],
  90.     "array-callback-return": ["error", { "allowImplicit": true }],
  91.     "block-scoped-var": "error",
  92.     "callback-return": ["error", ["callback", "cb", "next"]],
  93.     "constructor-super": "error",
  94.     "default-case": "error",
  95.     "eqeqeq": ["error", "always"],
  96.     "for-direction": "warn",
  97.     "getter-return": ["error", { "allowImplicit": true }],
  98.     "handle-callback-err": "error",
  99.     "no-async-promise-executor": "error",
  100.     "no-buffer-constructor": "error",
  101.     "no-caller": "error",
  102.     "no-case-declarations": "error",
  103.     "no-class-assign": "error",
  104.     "no-compare-neg-zero": "error",
  105.     "no-cond-assign": "error",
  106.     "no-const-assign": "error",
  107.     "no-constant-condition": ["error", { "checkLoops": false }],
  108.     "no-control-regex": "error",
  109.     "no-debugger": "error",
  110.     "no-delete-var": "error",
  111.     "no-dupe-args": "error",
  112.     "no-dupe-class-members": "error",
  113.     "no-dupe-keys": "error",
  114.     "no-duplicate-case": "error",
  115.     "no-empty-character-class": "error",
  116.     "no-empty-pattern": "error",
  117.     "no-empty": ["error", { "allowEmptyCatch": true }],
  118.     "no-eq-null": "error",
  119.     "no-eval": ["error", { "allowIndirect": false }],
  120.     "no-ex-assign": "error",
  121.     "no-extend-native": "error",
  122.     "no-extra-bind":"error",
  123.     "no-extra-boolean-cast": "error",
  124.     "no-extra-label": "error",
  125.     "no-fallthrough": "error",
  126.     "no-func-assign": "error",
  127.     "no-global-assign": "error",
  128.     "no-implicit-globals": "error",
  129.     "no-implied-eval": "error",
  130.     "no-import-assign": "error",
  131.     "no-inner-declarations": "error",
  132.     "no-invalid-regexp": "error",
  133.     "no-irregular-whitespace": ["error", { "skipRegExps": true }],
  134.     "no-iterator": "error",
  135.     "no-label-var": "error",
  136.     "no-labels": "error",
  137.     "no-lone-blocks": "error",
  138.     "no-loop-func": "error",
  139.     "no-misleading-character-class": "error",
  140.     "no-mixed-requires": ["error", { "allowCall": true }],
  141.     "no-multi-spaces": "error",
  142.     "no-multi-str": "error",
  143.     "no-new-func": "error",
  144.     "no-new-require": "error",
  145.     "no-new-symbol": "error",
  146.     "no-new-wrappers": "error",
  147.     "no-obj-calls": "error",
  148.     "no-octal-escape": "error",
  149.     "no-octal": "error",
  150.     "no-path-concat": "error",
  151.     "no-plusplus": ["error", { "allowForLoopAfterthoughts": true }],
  152.     "no-process-exit": "error",
  153.     "no-proto": "error",
  154.     "no-redeclare": "error",
  155.     "no-regex-spaces": "error",
  156.     "no-return-await": "error",
  157.     "no-script-url": "error",
  158.     "no-self-assign": "error",
  159.     "no-self-compare": "error",
  160.     "no-sequences": "error",
  161.     "no-shadow-restricted-names": "error",
  162.     "no-sparse-arrays": "error",
  163.     "no-template-curly-in-string": "error",
  164.     "no-this-before-super": "error",
  165.     "no-throw-literal": "error",
  166.     "no-undef-init": "error",
  167.     "no-unexpected-multiline": "error",
  168.     "no-unmodified-loop-condition": "error",
  169.     "no-unreachable": "error",
  170.     "no-unsafe-finally": "error",
  171.     "no-unsafe-negation": "error",
  172.     "no-unused-expressions": ["error", { "allowShortCircuit": true, "allowTernary": true }],
  173.     "no-unused-labels": "error",
  174.     "no-useless-call": "error",
  175.     "no-useless-catch": "error",
  176.     "no-useless-computed-key": "error",
  177.     "no-useless-concat": "error",
  178.     "no-useless-escape": "error",
  179.     "no-useless-rename": "error",
  180.     "no-var": "error",
  181.     "no-void": "error",
  182.     "no-with": "error",
  183.     "object-shorthand": ["error", "always"],
  184.     "operator-linebreak": ["error", "none", { "overrides": { "||": "after", "&&": "after", "?": "before", ":": "before" } }],
  185.     "prefer-arrow-callback": "error",
  186.     "prefer-const": ["error", { "destructuring": "all" }],
  187.     "prefer-promise-reject-errors": "error",
  188.     "prefer-regex-literals": "error",
  189.     "prefer-template": "error",
  190.     "radix": ["error", "as-needed"],
  191.     "require-yield": "error",
  192.     "symbol-description": "error",
  193.     "use-isnan": ["error", { "enforceForSwitchCase": true }],
  194.     "valid-typeof": "error",
  195.     "wrap-iife": ["error", "inside"],
  196.     "yoda": "error",
  197.     /* TYPESCRIPT STYLE */
  198.     "@typescript-eslint/adjacent-overload-signatures": "error",
  199.     "@typescript-eslint/array-type": ["error", { "default": "array" }],
  200.     "@typescript-eslint/ban-ts-ignore": "error",
  201.     "@typescript-eslint/brace-style": ["error", "1tbs", { "allowSingleLine": true }],
  202.     "@typescript-eslint/camelcase": ["error", { "allow": ["^UNSAFE_", "^__"] }],
  203.     "@typescript-eslint/class-name-casing": "error",
  204.     "@typescript-eslint/consistent-type-assertions": ["error", { "assertionStyle": "as", "objectLiteralTypeAssertions": "allow" }],
  205.     "@typescript-eslint/consistent-type-definitions": ["error", "type"],
  206.     "@typescript-eslint/indent": ["error", 2, { "SwitchCase": 1, "VariableDeclarator": "first", "ignoredNodes": ["ConditionalExpression"] }],
  207.     "@typescript-eslint/interface-name-prefix": ["error", { "prefixWithI": "always" }],
  208.     "@typescript-eslint/member-delimiter-style": ["error", { "singleline": { "delimiter": "comma", "requireLast": false }, "multiline": { "delimiter": "comma", "requireLast": false }}],
  209.     "@typescript-eslint/quotes": ["error", "single", { "avoidEscape": false }],
  210.     "@typescript-eslint/semi": ["error", "always"],
  211.     "@typescript-eslint/type-annotation-spacing": ["error", { "before": true, "after": true, "overrides": { "colon": { "before": false, "after": true } } }],
  212.     /* TYPESCRIPT */
  213.     "@typescript-eslint/await-thenable": "error",
  214.     "@typescript-eslint/explicit-function-return-type": ["error", { "allowExpressions": true, "allowTypedFunctionExpressions": true, "allowHigherOrderFunctions": true }],
  215.     "@typescript-eslint/no-extraneous-class": "error",
  216.     "@typescript-eslint/no-for-in-array": "error",
  217.     "@typescript-eslint/no-inferrable-types": ["error", { "ignoreParameters": true, "ignoreProperties": true }],
  218.     "@typescript-eslint/no-misused-new": "error",
  219.     "@typescript-eslint/no-misused-promises": ["error", { "checksVoidReturn": false }],
  220.     "@typescript-eslint/no-namespace": "error",
  221.     "@typescript-eslint/no-non-null-assertion": "error",
  222.     "@typescript-eslint/no-this-alias": "error",
  223.     "@typescript-eslint/no-unnecessary-qualifier": "error",
  224.     "@typescript-eslint/no-unnecessary-type-assertion": "error",
  225.     "@typescript-eslint/no-unused-vars": ["error", { "args": "none", "ignoreRestSiblings": true }],
  226.     "@typescript-eslint/no-use-before-define": "error",
  227.     "@typescript-eslint/no-useless-constructor": "error",
  228.     "@typescript-eslint/no-var-requires": "error",
  229.     "@typescript-eslint/prefer-includes": "error",
  230.     "@typescript-eslint/prefer-string-starts-ends-with": "error",
  231.     "@typescript-eslint/unified-signatures": "error",
  232.     /* REACT */
  233.     "react/boolean-prop-naming": ["error", { "rule": "^(is|has)[A-Z]([A-Za-z0-9]?)+" }],
  234.     "react/button-has-type": "error",
  235.     "react/display-name": "error",
  236.     "react/no-access-state-in-setstate": "error", // It shouldn't analyze Overstated stores
  237.     "react/no-array-index-key": "error",
  238.     "react/no-children-prop": "error",
  239.     "react/no-danger-with-children": "error",
  240.     "react/no-danger": "warn",
  241.     "react/no-deprecated": "warn",
  242.     "react/no-did-mount-set-state": "error",
  243.     "react/no-did-update-set-state": "error",
  244.     "react/no-direct-mutation-state": "error",
  245.     "react/no-find-dom-node": "error",
  246.     "react/no-is-mounted": "error",
  247.     "react/no-multi-comp": ["error", { "ignoreStateless": true }],
  248.     "react/no-redundant-should-component-update": "error",
  249.     "react/no-render-return-value": "error",
  250.     "react/no-set-state": "warn",
  251.     "react/no-string-refs": ["error", { "noTemplateLiterals": true }],
  252.     "react/no-this-in-sfc": "error",
  253.     "react/no-typos": "error",
  254.     "react/no-unescaped-entities": "error",
  255.     "react/no-unknown-property": "error",
  256.     "react/no-unsafe": ["warn", { "checkAliases": true }],
  257.     "react/no-unused-state": "error",
  258.     "react/no-will-update-set-state": "error",
  259.     "react/prefer-stateless-function": "error",
  260.     "react/react-in-jsx-scope": "error",
  261.     "react/require-render-return": "error",
  262.     "react/self-closing-comp": "error",
  263.     "react/style-prop-object": "error",
  264.     "react/void-dom-elements-no-children": "error",
  265.     /* REACT HOOKS */
  266.     "react-hooks/exhaustive-deps": "warn",
  267.     "react-hooks/rules-of-hooks": "error",
  268.     /* JSX STYLE */
  269.     "react/jsx-child-element-spacing": "error",
  270.     "react/jsx-closing-bracket-location": ["error", "tag-aligned"],
  271.     "react/jsx-closing-tag-location": "error",
  272.     "react/jsx-curly-brace-presence": ["error", "never"],
  273.     "react/jsx-curly-newline": "error",
  274.     "react/jsx-curly-spacing": ["error", { "when": "never" }],
  275.     "react/jsx-equals-spacing": ["error", "never"],
  276.     "react/jsx-first-prop-new-line": ["error", "multiline-multiprop"],
  277.     "react/jsx-indent-props": ["error", 2],
  278.     "react/jsx-indent": ["error", 2],
  279.     "react/jsx-one-expression-per-line": ["error", { "allow": "single-child" }],
  280.     "react/jsx-pascal-case": ["error", { "allowAllCaps": true }],
  281.     "react/jsx-props-no-multi-spaces": "error",
  282.     "react/jsx-tag-spacing": ["error", { "closingSlash": "never", "beforeSelfClosing": "always", "afterOpening": "never", "beforeClosing": "never" }],
  283.     "react/jsx-wrap-multilines": "error",
  284.     /* JSX */
  285.     "react/jsx-boolean-value": ["error", "always"],
  286.     "react/jsx-filename-extension": ["error", { "extensions": [".tsx"] }],
  287.     "react/jsx-fragments": ["error", "syntax"],
  288.     "react/jsx-handler-names": "error",
  289.     "react/jsx-key": ["error", { "checkFragmentShorthand": true }],
  290.     "react/jsx-max-depth": ["warn", { "max": 5 }],
  291.     "react/jsx-no-bind": ["error", { "allowArrowFunctions": true }],
  292.     "react/jsx-no-comment-textnodes": "error",
  293.     "react/jsx-no-duplicate-props": "error",
  294.     "react/jsx-no-target-blank": ["error", { "enforceDynamicLinks": "always" }],
  295.     "react/jsx-no-undef": "error",
  296.     "react/jsx-no-useless-fragment": "error",
  297.     "react/jsx-uses-react": "error",
  298.     "react/jsx-uses-vars": "error",
  299.     /* UNICORN */
  300.     "unicorn/catch-error-name": ["error", { "name": "err" }],
  301.     "unicorn/custom-error-definition": "error",
  302.     "unicorn/error-message": "error",
  303.     "unicorn/escape-case": "error",
  304.     "unicorn/filename-case": ["error", { "case": "snakeCase" }],
  305.     "unicorn/import-index": "error",
  306.     "unicorn/new-for-builtins": "error",
  307.     "unicorn/no-abusive-eslint-disable": "error",
  308.     "unicorn/no-array-instanceof": "error",
  309.     "unicorn/no-console-spaces": "error",
  310.     "unicorn/no-hex-escape": "error",
  311.     "unicorn/no-unreadable-array-destructuring": "error",
  312.     "unicorn/no-zero-fractions": "error",
  313.     "unicorn/number-literal-case": "error",
  314.     "unicorn/prefer-add-event-listener": "error",
  315.     "unicorn/prefer-exponentiation-operator": "error",
  316.     "unicorn/prefer-string-slice": "error",
  317.     "unicorn/prefer-type-error": "error",
  318.     "unicorn/throw-new-error": "error"
  319.     /* BROKEN */
  320.     // "no-invalid-this": "error" // It doesn't properly detect classes
  321.     // "no-undef": "warn" //  It doesn't work when exporting types
  322.     // "@typescript-eslint/no-unnecessary-type-arguments": "error" // It throws
  323.     // "@typescript-eslint/require-await": "error" // It throws
  324.     /* TOO SIMPLISTIC */
  325.     // "array-bracket-newline": ["error", "consistent"] // Comments count as array elements
  326.     // "arrow-body-style": ["error", "as-needed"], // It shouldn't analyze class arrow methods too
  327.     // "@typescript-eslint/func-call-spacing": ["error", "always"] // Exception for jQuery
  328.     // "function-call-argument-newline": ["error", "consistent"] // Multi-line arrow function argument triggers it
  329.     // "lines-between-class-members": ["error", "always"] // It should work only for methods
  330.     // "multiline-ternary": ["error", "always-multiline"], // It doesn't allow common ternary operators in React
  331.     // "object-curly-spacing": ["error", "always"] // Make exception for object destructuring
  332.     // "require-atomic-updates": "warn" // It seems to have a lot of false positivies
  333.     // "sort-imports" "error" // It doesn't support custom member syntaxes
  334.     // "space-in-parens": ["error", "always", { "exceptions": ["{}"] }] // Doesn't work great with arrow functions returning objects
  335.     /* OPTIONAL */ //TODO: Periodially enable these
  336.     // "no-await-in-loop": "warn"
  337.     // "no-new": "warn"
  338.     // "no-sync": ["warn", { "allowAtRootLevel": true }]
  339.     // "@typescript-eslint/no-floating-promises": "warn"
  340.     // "@typescript-eslint/no-unnecessary-condition": ["warn", { "ignoreRhs": true }]
  341.   },
  342.   "overrides": [
  343.     //TODO: Set-up more overrides
  344.     //TODO: Sort imports with my rule
  345.     // "no-restricted-modules": ["error", "assert", "buffer", "child_process", "cluster", "crypto", "dgram", "dns", "domain", "events", "freelist", "fs", "http", "https", "module", "net", "os", "path", "punycode", "querystring", "readline", "repl", "smalloc", "stream", "string_decoder", "sys", "timers", "tls", "tracing", "tty", "url", "util", "vm", "zlib"],
  346.     {
  347.       "files": "**/*.tsx",
  348.       "rules": {
  349.         "@typescript-eslint/explicit-function-return-type": "off"
  350.       }
  351.     }
  352.   ]
  353. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement