13af6ab5fSopenharmony_ci{ 23af6ab5fSopenharmony_ci "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"], 33af6ab5fSopenharmony_ci "parser": "@typescript-eslint/parser", 43af6ab5fSopenharmony_ci "parserOptions": { 53af6ab5fSopenharmony_ci "ecmaVersion": "latest", 63af6ab5fSopenharmony_ci "sourceType": "module", 73af6ab5fSopenharmony_ci "project": true 83af6ab5fSopenharmony_ci }, 93af6ab5fSopenharmony_ci "plugins": ["@typescript-eslint", "@stylistic", "import", "n"], 103af6ab5fSopenharmony_ci "rules": { 113af6ab5fSopenharmony_ci // suggestions 123af6ab5fSopenharmony_ci "accessor-pairs": "error", 133af6ab5fSopenharmony_ci "arrow-body-style": ["error", "always"], 143af6ab5fSopenharmony_ci "camelcase": "off", // we use naming-convention rule to enforce naming scheme 153af6ab5fSopenharmony_ci "class-methods-use-this": ["error", { "exceptMethods": [], "enforceForClassFields": true }], 163af6ab5fSopenharmony_ci "complexity": ["error", { "max": 15 }], 173af6ab5fSopenharmony_ci "consistent-return": ["error", { "treatUndefinedAsUnspecified": false }], 183af6ab5fSopenharmony_ci "curly": ["error", "all"], 193af6ab5fSopenharmony_ci "default-case": "error", 203af6ab5fSopenharmony_ci "default-param-last": "warn", 213af6ab5fSopenharmony_ci "dot-notation": "error", 223af6ab5fSopenharmony_ci "eqeqeq": ["error", "smart"], 233af6ab5fSopenharmony_ci "func-style": ["error", "declaration", {"allowArrowFunctions": true}], 243af6ab5fSopenharmony_ci "max-depth": ["error", { "max": 4 }], 253af6ab5fSopenharmony_ci "max-lines-per-function": ["error", { "max": 50 }], 263af6ab5fSopenharmony_ci "max-params": ["error", 5], 273af6ab5fSopenharmony_ci "multiline-comment-style": ["error", "starred-block"], 283af6ab5fSopenharmony_ci "no-else-return": ["error", { "allowElseIf": true }], 293af6ab5fSopenharmony_ci "no-eval": ["error", {"allowIndirect": false} ], 303af6ab5fSopenharmony_ci "no-extra-bind": "error", 313af6ab5fSopenharmony_ci "no-implied-eval": "error", 323af6ab5fSopenharmony_ci "no-lonely-if": "error", 333af6ab5fSopenharmony_ci "no-nested-ternary": "warn", 343af6ab5fSopenharmony_ci "no-param-reassign": "warn", 353af6ab5fSopenharmony_ci "no-prototype-builtins": "error", 363af6ab5fSopenharmony_ci "no-regex-spaces": "error", 373af6ab5fSopenharmony_ci "no-return-await": "error", 383af6ab5fSopenharmony_ci "no-throw-literal": "error", 393af6ab5fSopenharmony_ci "no-undef-init": "error", 403af6ab5fSopenharmony_ci "no-unneeded-ternary": "error", 413af6ab5fSopenharmony_ci "no-useless-return": "error", 423af6ab5fSopenharmony_ci "no-var": "error", 433af6ab5fSopenharmony_ci "one-var": ["error", "never"], 443af6ab5fSopenharmony_ci "one-var-declaration-per-line": "error", 453af6ab5fSopenharmony_ci "prefer-const": "error", 463af6ab5fSopenharmony_ci "prefer-named-capture-group": "warn", 473af6ab5fSopenharmony_ci "prefer-rest-params": "error", 483af6ab5fSopenharmony_ci "strict": "error", 493af6ab5fSopenharmony_ci "spaced-comment": ["error", "always"], 503af6ab5fSopenharmony_ci "vars-on-top": "error", 513af6ab5fSopenharmony_ci 523af6ab5fSopenharmony_ci // imports 533af6ab5fSopenharmony_ci "import/no-absolute-path": "error", 543af6ab5fSopenharmony_ci "n/file-extension-in-import": ["error", "never"], 553af6ab5fSopenharmony_ci 563af6ab5fSopenharmony_ci // style 573af6ab5fSopenharmony_ci "@stylistic/array-bracket-newline": ["error", "consistent"], 583af6ab5fSopenharmony_ci "@stylistic/array-bracket-spacing": ["error", "never"], 593af6ab5fSopenharmony_ci "@stylistic/array-element-newline": ["error", "consistent"], 603af6ab5fSopenharmony_ci "@stylistic/arrow-parens": ["error", "always"], 613af6ab5fSopenharmony_ci "@stylistic/arrow-spacing": ["error", { "before": true, "after": true }], 623af6ab5fSopenharmony_ci "@stylistic/block-spacing": ["error", "always"], 633af6ab5fSopenharmony_ci "@stylistic/brace-style": ["error", "1tbs", { "allowSingleLine": true }], 643af6ab5fSopenharmony_ci "@stylistic/comma-dangle": [ 653af6ab5fSopenharmony_ci "error", 663af6ab5fSopenharmony_ci { 673af6ab5fSopenharmony_ci "arrays": "never", 683af6ab5fSopenharmony_ci "objects": "never", 693af6ab5fSopenharmony_ci "imports": "never", 703af6ab5fSopenharmony_ci "exports": "never", 713af6ab5fSopenharmony_ci "functions": "never" 723af6ab5fSopenharmony_ci } 733af6ab5fSopenharmony_ci ], 743af6ab5fSopenharmony_ci "@stylistic/comma-spacing": ["error", { "before": false, "after": true }], 753af6ab5fSopenharmony_ci "@stylistic/comma-style": ["error", "last"], 763af6ab5fSopenharmony_ci "@stylistic/computed-property-spacing": ["error", "never", { "enforceForClassMembers": true }], 773af6ab5fSopenharmony_ci "@stylistic/dot-location": ["error", "object"], 783af6ab5fSopenharmony_ci "@stylistic/eol-last": ["error", "always"], 793af6ab5fSopenharmony_ci "@stylistic/no-confusing-arrow": "error", 803af6ab5fSopenharmony_ci "@stylistic/no-floating-decimal": "error", 813af6ab5fSopenharmony_ci "@stylistic/func-call-spacing": ["error", "never"], 823af6ab5fSopenharmony_ci "@stylistic/function-call-argument-newline": ["error", "consistent"], 833af6ab5fSopenharmony_ci "@stylistic/function-paren-newline": ["error", "consistent"], 843af6ab5fSopenharmony_ci "@stylistic/generator-star-spacing": ["error", { "before": true, "after": false }], 853af6ab5fSopenharmony_ci "@stylistic/implicit-arrow-linebreak": ["error", "beside"], 863af6ab5fSopenharmony_ci "@stylistic/indent": [ 873af6ab5fSopenharmony_ci "error", 883af6ab5fSopenharmony_ci 2, 893af6ab5fSopenharmony_ci { 903af6ab5fSopenharmony_ci "ignoredNodes": [], 913af6ab5fSopenharmony_ci "SwitchCase": 1, 923af6ab5fSopenharmony_ci "VariableDeclarator": 1, 933af6ab5fSopenharmony_ci "outerIIFEBody": 1, 943af6ab5fSopenharmony_ci "MemberExpression": 1, 953af6ab5fSopenharmony_ci "FunctionDeclaration": { 963af6ab5fSopenharmony_ci "parameters": 1, 973af6ab5fSopenharmony_ci "body": 1 983af6ab5fSopenharmony_ci }, 993af6ab5fSopenharmony_ci "FunctionExpression": { 1003af6ab5fSopenharmony_ci "parameters": 1, 1013af6ab5fSopenharmony_ci "body": 1 1023af6ab5fSopenharmony_ci }, 1033af6ab5fSopenharmony_ci "CallExpression": { 1043af6ab5fSopenharmony_ci "arguments": 1 1053af6ab5fSopenharmony_ci }, 1063af6ab5fSopenharmony_ci "ArrayExpression": 1, 1073af6ab5fSopenharmony_ci "ObjectExpression": 1, 1083af6ab5fSopenharmony_ci "ImportDeclaration": 1, 1093af6ab5fSopenharmony_ci "flatTernaryExpressions": true, 1103af6ab5fSopenharmony_ci "offsetTernaryExpressions": false, 1113af6ab5fSopenharmony_ci "ignoreComments": false 1123af6ab5fSopenharmony_ci } 1133af6ab5fSopenharmony_ci ], 1143af6ab5fSopenharmony_ci "@stylistic/jsx-quotes": ["error", "prefer-double"], 1153af6ab5fSopenharmony_ci "@stylistic/keyword-spacing": ["error", { "before": true, "after": true }], 1163af6ab5fSopenharmony_ci "line-comment-position": ["error", { "position": "above" }], 1173af6ab5fSopenharmony_ci "@stylistic/linebreak-style": ["error", "unix"], 1183af6ab5fSopenharmony_ci "@stylistic/lines-around-comment": ["error", { "beforeBlockComment": true }], 1193af6ab5fSopenharmony_ci "@stylistic/lines-between-class-members": [ 1203af6ab5fSopenharmony_ci "error", 1213af6ab5fSopenharmony_ci { 1223af6ab5fSopenharmony_ci "enforce": [ 1233af6ab5fSopenharmony_ci { "blankLine": "always", "prev": "*", "next": "method" }, 1243af6ab5fSopenharmony_ci { "blankLine": "always", "prev": "method", "next": "*" } 1253af6ab5fSopenharmony_ci ] 1263af6ab5fSopenharmony_ci } 1273af6ab5fSopenharmony_ci ], 1283af6ab5fSopenharmony_ci "@stylistic/max-len": ["error", { "code": 120, "tabWidth": 2, "ignoreComments": true, "ignoreStrings": true }], 1293af6ab5fSopenharmony_ci "@stylistic/max-statements-per-line": ["error", { "max": 1 }], 1303af6ab5fSopenharmony_ci "@stylistic/multiline-ternary": ["error", "always-multiline"], 1313af6ab5fSopenharmony_ci "@stylistic/new-parens": ["error", "always"], 1323af6ab5fSopenharmony_ci "@stylistic/newline-per-chained-call": ["error", { "ignoreChainWithDepth": 2 }], 1333af6ab5fSopenharmony_ci "@stylistic/no-extra-parens": ["error", "all"], 1343af6ab5fSopenharmony_ci "@stylistic/no-mixed-spaces-and-tabs": "error", 1353af6ab5fSopenharmony_ci "@stylistic/no-multi-spaces": "error", 1363af6ab5fSopenharmony_ci "@stylistic/no-multiple-empty-lines": ["error", { "max": 2, "maxEOF": 1 }], 1373af6ab5fSopenharmony_ci "@stylistic/no-tabs": "error", 1383af6ab5fSopenharmony_ci "@stylistic/no-trailing-spaces": ["error", { "skipBlankLines": false, "ignoreComments": false }], 1393af6ab5fSopenharmony_ci "@stylistic/no-whitespace-before-property": "error", 1403af6ab5fSopenharmony_ci "@stylistic/nonblock-statement-body-position": ["error", "beside"], 1413af6ab5fSopenharmony_ci "@stylistic/object-curly-newline": ["error", { "consistent": true }], 1423af6ab5fSopenharmony_ci "@stylistic/object-curly-spacing": ["error", "always"], 1433af6ab5fSopenharmony_ci "@stylistic/operator-linebreak": ["error", "after"], 1443af6ab5fSopenharmony_ci // disable due to conflict with required rule 'lines-around-comment' 1453af6ab5fSopenharmony_ci "@stylistic/padded-blocks": "off", 1463af6ab5fSopenharmony_ci "@stylistic/quotes": ["error", "single"], 1473af6ab5fSopenharmony_ci "@stylistic/rest-spread-spacing": ["error", "never"], 1483af6ab5fSopenharmony_ci "@stylistic/semi": ["error", "always"], 1493af6ab5fSopenharmony_ci "@stylistic/semi-spacing": ["error", { "before": false, "after": true }], 1503af6ab5fSopenharmony_ci "@stylistic/semi-style": ["error", "last"], 1513af6ab5fSopenharmony_ci "@stylistic/space-before-blocks": ["error", "always"], 1523af6ab5fSopenharmony_ci "@stylistic/space-before-function-paren": ["error", "never"], 1533af6ab5fSopenharmony_ci "@stylistic/space-in-parens": ["error", "never"], 1543af6ab5fSopenharmony_ci "@stylistic/space-infix-ops": ["error"], 1553af6ab5fSopenharmony_ci "@stylistic/space-unary-ops": ["error", { "words": true, "nonwords": false, "overrides": {} }], 1563af6ab5fSopenharmony_ci "@stylistic/switch-colon-spacing": ["error", { "after": true, "before": false }], 1573af6ab5fSopenharmony_ci "@stylistic/template-curly-spacing": ["error", "never"], 1583af6ab5fSopenharmony_ci "@stylistic/template-tag-spacing": ["error", "never"], 1593af6ab5fSopenharmony_ci "unicode-bom": ["error", "never"], 1603af6ab5fSopenharmony_ci "@stylistic/wrap-iife": ["error", "outside"], 1613af6ab5fSopenharmony_ci "@stylistic/wrap-regex": "error", 1623af6ab5fSopenharmony_ci "@stylistic/yield-star-spacing": ["error", { "before": true, "after": false }], 1633af6ab5fSopenharmony_ci 1643af6ab5fSopenharmony_ci // typescript 1653af6ab5fSopenharmony_ci "@typescript-eslint/explicit-function-return-type": "error", 1663af6ab5fSopenharmony_ci "@typescript-eslint/adjacent-overload-signatures": "error", 1673af6ab5fSopenharmony_ci "@typescript-eslint/consistent-type-exports": "error", 1683af6ab5fSopenharmony_ci "@typescript-eslint/await-thenable": "error", 1693af6ab5fSopenharmony_ci "@typescript-eslint/no-dynamic-delete": "error", 1703af6ab5fSopenharmony_ci "@typescript-eslint/no-this-alias": "error", 1713af6ab5fSopenharmony_ci "@typescript-eslint/explicit-member-accessibility": [ 1723af6ab5fSopenharmony_ci "error", 1733af6ab5fSopenharmony_ci { 1743af6ab5fSopenharmony_ci "accessibility": "no-public" 1753af6ab5fSopenharmony_ci } 1763af6ab5fSopenharmony_ci ], 1773af6ab5fSopenharmony_ci "@typescript-eslint/method-signature-style": "error", 1783af6ab5fSopenharmony_ci "@typescript-eslint/no-confusing-non-null-assertion": "error", 1793af6ab5fSopenharmony_ci "@typescript-eslint/no-confusing-void-expression": "error", 1803af6ab5fSopenharmony_ci // FIXME(knazarov) 1813af6ab5fSopenharmony_ci // need to do something about this 1823af6ab5fSopenharmony_ci "@typescript-eslint/no-explicit-any": "warn", 1833af6ab5fSopenharmony_ci // Produce too many warning caused by 'any' usage 1843af6ab5fSopenharmony_ci// "@typescript-eslint/no-unsafe-member-access": "warn", 1853af6ab5fSopenharmony_ci// "@typescript-eslint/no-unsafe-assignment": "warn", 1863af6ab5fSopenharmony_ci "@typescript-eslint/no-unsafe-call": "warn", 1873af6ab5fSopenharmony_ci "@typescript-eslint/no-unsafe-argument": "warn", 1883af6ab5fSopenharmony_ci "@typescript-eslint/no-unsafe-return": "warn", 1893af6ab5fSopenharmony_ci "no-unsafe-finally": "error", 1903af6ab5fSopenharmony_ci "@typescript-eslint/no-extra-non-null-assertion": "error", 1913af6ab5fSopenharmony_ci "@typescript-eslint/no-meaningless-void-operator": "error", 1923af6ab5fSopenharmony_ci "@typescript-eslint/no-unnecessary-boolean-literal-compare": "error", 1933af6ab5fSopenharmony_ci // FIXME(knazarov) 1943af6ab5fSopenharmony_ci // disabled due to many cases, where typescript deduces non-undefined value, but we can recieve one from the api 1953af6ab5fSopenharmony_ci "@typescript-eslint/no-unnecessary-condition": "off", 1963af6ab5fSopenharmony_ci "@typescript-eslint/no-unnecessary-type-assertion": "error", 1973af6ab5fSopenharmony_ci "@typescript-eslint/prefer-as-const": "error", 1983af6ab5fSopenharmony_ci "@typescript-eslint/prefer-optional-chain": "error", 1993af6ab5fSopenharmony_ci "@typescript-eslint/prefer-readonly": "error", 2003af6ab5fSopenharmony_ci "@typescript-eslint/consistent-type-imports": "error", 2013af6ab5fSopenharmony_ci // FIXME(knazarov) 2023af6ab5fSopenharmony_ci // need to change metadata in cookbook accordingle. so do it later 2033af6ab5fSopenharmony_ci "@typescript-eslint/naming-convention": [ 2043af6ab5fSopenharmony_ci "off", 2053af6ab5fSopenharmony_ci { 2063af6ab5fSopenharmony_ci "selector": "default", 2073af6ab5fSopenharmony_ci "format": ["camelCase"] 2083af6ab5fSopenharmony_ci }, 2093af6ab5fSopenharmony_ci { 2103af6ab5fSopenharmony_ci "selector": "enumMember", 2113af6ab5fSopenharmony_ci "format": ["UPPER_CASE"] 2123af6ab5fSopenharmony_ci }, 2133af6ab5fSopenharmony_ci { 2143af6ab5fSopenharmony_ci "selector": "variable", 2153af6ab5fSopenharmony_ci "format": ["camelCase", "UPPER_CASE"] 2163af6ab5fSopenharmony_ci }, 2173af6ab5fSopenharmony_ci { 2183af6ab5fSopenharmony_ci "selector": "typeLike", 2193af6ab5fSopenharmony_ci "format": ["PascalCase"] 2203af6ab5fSopenharmony_ci }, 2213af6ab5fSopenharmony_ci { 2223af6ab5fSopenharmony_ci "selector": "memberLike", 2233af6ab5fSopenharmony_ci "format": ["camelCase"] 2243af6ab5fSopenharmony_ci } 2253af6ab5fSopenharmony_ci ] 2263af6ab5fSopenharmony_ci } 2273af6ab5fSopenharmony_ci} 228