19ce3a3fcSopenharmony_ci{
29ce3a3fcSopenharmony_ci    "parser": "@typescript-eslint/parser",
39ce3a3fcSopenharmony_ci    "parserOptions": {
49ce3a3fcSopenharmony_ci        "warnOnUnsupportedTypeScriptVersion": false,
59ce3a3fcSopenharmony_ci        "ecmaVersion": 6,
69ce3a3fcSopenharmony_ci        "sourceType": "module"
79ce3a3fcSopenharmony_ci    },
89ce3a3fcSopenharmony_ci    "env": {
99ce3a3fcSopenharmony_ci        "browser": false,
109ce3a3fcSopenharmony_ci        "node": true,
119ce3a3fcSopenharmony_ci        "es6": true
129ce3a3fcSopenharmony_ci    },
139ce3a3fcSopenharmony_ci    "plugins": [
149ce3a3fcSopenharmony_ci        "@typescript-eslint", "jsdoc", "no-null", "import"
159ce3a3fcSopenharmony_ci    ],
169ce3a3fcSopenharmony_ci    "rules": {
179ce3a3fcSopenharmony_ci        "@typescript-eslint/adjacent-overload-signatures": "error",
189ce3a3fcSopenharmony_ci        "@typescript-eslint/array-type": "error",
199ce3a3fcSopenharmony_ci
209ce3a3fcSopenharmony_ci        "brace-style": "off",
219ce3a3fcSopenharmony_ci        "@typescript-eslint/brace-style": ["error", "stroustrup", { "allowSingleLine": true }],
229ce3a3fcSopenharmony_ci
239ce3a3fcSopenharmony_ci        "@typescript-eslint/naming-convention": [
249ce3a3fcSopenharmony_ci            "error",
259ce3a3fcSopenharmony_ci            { "selector": "typeLike", "format": ["PascalCase"], "filter": { "regex": "^(__String|[A-Za-z]+_[A-Za-z]+)$", "match": false } },
269ce3a3fcSopenharmony_ci            { "selector": "interface", "format": ["PascalCase"], "custom": { "regex": "^I[A-Z]", "match": false }, "filter": { "regex": "^I(Arguments|TextWriter|O([A-Z][a-z]+[A-Za-z]*)?)$", "match": false } },
279ce3a3fcSopenharmony_ci            { "selector": "variable", "format": ["camelCase", "PascalCase", "UPPER_CASE"], "leadingUnderscore": "allow", "filter": { "regex": "^(_{1,2}filename|_{1,2}dirname|_+|[A-Za-z]+_[A-Za-z]+)$", "match": false } },
289ce3a3fcSopenharmony_ci            { "selector": "function", "format": ["camelCase", "PascalCase"], "leadingUnderscore": "allow", "filter": { "regex": "^[A-Za-z]+_[A-Za-z]+$", "match": false } },
299ce3a3fcSopenharmony_ci            { "selector": "parameter", "format": ["camelCase"], "leadingUnderscore": "allow", "filter": { "regex": "^(_+|[A-Za-z]+_[A-Z][a-z]+)$", "match": false } },
309ce3a3fcSopenharmony_ci            { "selector": "method", "format": ["camelCase", "PascalCase"], "leadingUnderscore": "allow", "filter": { "regex": "^[A-Za-z]+_[A-Za-z]+$", "match": false } },
319ce3a3fcSopenharmony_ci            { "selector": "memberLike", "format": ["camelCase"], "leadingUnderscore": "allow", "filter": { "regex": "^[A-Za-z]+_[A-Za-z]+$", "match": false } },
329ce3a3fcSopenharmony_ci            { "selector": "enumMember", "format": ["camelCase", "PascalCase"], "leadingUnderscore": "allow", "filter": { "regex": "^[A-Za-z]+_[A-Za-z]+$", "match": false } },
339ce3a3fcSopenharmony_ci            { "selector": "property", "format": null }
349ce3a3fcSopenharmony_ci        ],
359ce3a3fcSopenharmony_ci
369ce3a3fcSopenharmony_ci        "@typescript-eslint/consistent-type-definitions": ["error", "interface"],
379ce3a3fcSopenharmony_ci
389ce3a3fcSopenharmony_ci        "no-duplicate-imports": "off",
399ce3a3fcSopenharmony_ci        "@typescript-eslint/no-duplicate-imports": "error",
409ce3a3fcSopenharmony_ci
419ce3a3fcSopenharmony_ci        "@typescript-eslint/no-inferrable-types": "error",
429ce3a3fcSopenharmony_ci        "@typescript-eslint/no-misused-new": "error",
439ce3a3fcSopenharmony_ci        "@typescript-eslint/no-this-alias": "error",
449ce3a3fcSopenharmony_ci
459ce3a3fcSopenharmony_ci        "no-unused-expressions": "off",
469ce3a3fcSopenharmony_ci        "@typescript-eslint/no-unused-expressions": ["error", { "allowTernary": true }],
479ce3a3fcSopenharmony_ci
489ce3a3fcSopenharmony_ci        "@typescript-eslint/prefer-for-of": "error",
499ce3a3fcSopenharmony_ci        "@typescript-eslint/prefer-function-type": "error",
509ce3a3fcSopenharmony_ci        "@typescript-eslint/prefer-namespace-keyword": "error",
519ce3a3fcSopenharmony_ci
529ce3a3fcSopenharmony_ci        "quotes": "off",
539ce3a3fcSopenharmony_ci        "@typescript-eslint/quotes": ["error", "double", { "avoidEscape": true, "allowTemplateLiterals": true }],
549ce3a3fcSopenharmony_ci
559ce3a3fcSopenharmony_ci        "semi": "off",
569ce3a3fcSopenharmony_ci        "@typescript-eslint/semi": "error",
579ce3a3fcSopenharmony_ci
589ce3a3fcSopenharmony_ci        "space-before-function-paren": "off",
599ce3a3fcSopenharmony_ci        "@typescript-eslint/space-before-function-paren": ["error", {
609ce3a3fcSopenharmony_ci            "asyncArrow": "always",
619ce3a3fcSopenharmony_ci            "anonymous": "always",
629ce3a3fcSopenharmony_ci            "named": "never"
639ce3a3fcSopenharmony_ci        }],
649ce3a3fcSopenharmony_ci
659ce3a3fcSopenharmony_ci        "@typescript-eslint/triple-slash-reference": "error",
669ce3a3fcSopenharmony_ci        "@typescript-eslint/type-annotation-spacing": "error",
679ce3a3fcSopenharmony_ci        "@typescript-eslint/unified-signatures": "error",
689ce3a3fcSopenharmony_ci
699ce3a3fcSopenharmony_ci        // scripts/eslint/rules
709ce3a3fcSopenharmony_ci        "object-literal-surrounding-space": "error",
719ce3a3fcSopenharmony_ci        "no-type-assertion-whitespace": "error",
729ce3a3fcSopenharmony_ci        "type-operator-spacing": "error",
739ce3a3fcSopenharmony_ci        "only-arrow-functions": ["error", {
749ce3a3fcSopenharmony_ci            "allowNamedFunctions": true ,
759ce3a3fcSopenharmony_ci            "allowDeclarations": true
769ce3a3fcSopenharmony_ci        }],
779ce3a3fcSopenharmony_ci        "no-double-space": "error",
789ce3a3fcSopenharmony_ci        "boolean-trivia": "error",
799ce3a3fcSopenharmony_ci        "no-in-operator": "error",
809ce3a3fcSopenharmony_ci        "simple-indent": "error",
819ce3a3fcSopenharmony_ci        "debug-assert": "error",
829ce3a3fcSopenharmony_ci        "no-keywords": "error",
839ce3a3fcSopenharmony_ci        "one-namespace-per-file": "error",
849ce3a3fcSopenharmony_ci
859ce3a3fcSopenharmony_ci        // eslint-plugin-import
869ce3a3fcSopenharmony_ci        "import/no-extraneous-dependencies": ["error", { "optionalDependencies": false }],
879ce3a3fcSopenharmony_ci
889ce3a3fcSopenharmony_ci        // eslint-plugin-no-null
899ce3a3fcSopenharmony_ci        "no-null/no-null": "error",
909ce3a3fcSopenharmony_ci
919ce3a3fcSopenharmony_ci        // eslint-plugin-jsdoc
929ce3a3fcSopenharmony_ci        "jsdoc/check-alignment": "error",
939ce3a3fcSopenharmony_ci
949ce3a3fcSopenharmony_ci        // eslint
959ce3a3fcSopenharmony_ci        "constructor-super": "error",
969ce3a3fcSopenharmony_ci        "curly": ["error", "multi-line"],
979ce3a3fcSopenharmony_ci        "dot-notation": "error",
989ce3a3fcSopenharmony_ci        "eqeqeq": "error",
999ce3a3fcSopenharmony_ci        "linebreak-style": ["error", "windows"],
1009ce3a3fcSopenharmony_ci        "new-parens": "error",
1019ce3a3fcSopenharmony_ci        "no-caller": "error",
1029ce3a3fcSopenharmony_ci        "no-duplicate-case": "error",
1039ce3a3fcSopenharmony_ci        "no-empty": "error",
1049ce3a3fcSopenharmony_ci        "no-eval": "error",
1059ce3a3fcSopenharmony_ci        "no-extra-bind": "error",
1069ce3a3fcSopenharmony_ci        "no-fallthrough": "error",
1079ce3a3fcSopenharmony_ci        "no-new-func": "error",
1089ce3a3fcSopenharmony_ci        "no-new-wrappers": "error",
1099ce3a3fcSopenharmony_ci        "no-return-await": "error",
1109ce3a3fcSopenharmony_ci        "no-restricted-globals": ["error",
1119ce3a3fcSopenharmony_ci            { "name": "setTimeout" },
1129ce3a3fcSopenharmony_ci            { "name": "clearTimeout" },
1139ce3a3fcSopenharmony_ci            { "name": "setInterval" },
1149ce3a3fcSopenharmony_ci            { "name": "clearInterval" },
1159ce3a3fcSopenharmony_ci            { "name": "setImmediate" },
1169ce3a3fcSopenharmony_ci            { "name": "clearImmediate" }
1179ce3a3fcSopenharmony_ci        ],
1189ce3a3fcSopenharmony_ci        "no-sparse-arrays": "error",
1199ce3a3fcSopenharmony_ci        "no-template-curly-in-string": "error",
1209ce3a3fcSopenharmony_ci        "no-throw-literal": "error",
1219ce3a3fcSopenharmony_ci        "no-trailing-spaces": "error",
1229ce3a3fcSopenharmony_ci        "no-undef-init": "error",
1239ce3a3fcSopenharmony_ci        "no-unsafe-finally": "error",
1249ce3a3fcSopenharmony_ci        "no-unused-labels": "error",
1259ce3a3fcSopenharmony_ci        "no-var": "error",
1269ce3a3fcSopenharmony_ci        "object-shorthand": "error",
1279ce3a3fcSopenharmony_ci        "prefer-const": "error",
1289ce3a3fcSopenharmony_ci        "prefer-object-spread": "error",
1299ce3a3fcSopenharmony_ci        "quote-props": ["error", "consistent-as-needed"],
1309ce3a3fcSopenharmony_ci        "space-in-parens": "error",
1319ce3a3fcSopenharmony_ci        "unicode-bom": ["error", "never"],
1329ce3a3fcSopenharmony_ci        "use-isnan": "error"
1339ce3a3fcSopenharmony_ci    }
1349ce3a3fcSopenharmony_ci}
135