{
"root": true,
- "parser": "@typescript-eslint/parser",
+ "env": {
+ "es2020": true,
+ "node": true,
+ "mocha": true
+ },
"parserOptions": {
- "project": "./tsconfig.json"
+ "ecmaVersion": 2020,
+ "sourceType": "module"
},
"extends": [
"eslint:recommended",
- "plugin:@typescript-eslint/recommended",
- "plugin:@typescript-eslint/recommended-requiring-type-checking",
- "plugin:jsdoc/recommended"
- ],
- "plugins": [
- "@typescript-eslint",
- "jsdoc"
+ "plugin:import/errors",
+ "plugin:import/warnings",
+ "plugin:jsdoc/recommended",
+ "plugin:prettier/recommended"
],
+ "plugins": ["import", "jsdoc"],
"settings": {
"jsdoc": {
"mode": "typescript"
}
},
"rules": {
- "indent": "off",
- "@typescript-eslint/indent": [
- "error",
- 2,
- {
- "SwitchCase": 1
- }
- ],
- "@typescript-eslint/array-type": "off",
- "semi": "off",
- "@typescript-eslint/semi": [
- "error",
- "always"
- ],
- "space-before-blocks": [
- "error",
- "always"
- ],
- "@typescript-eslint/no-empty-function": [
- "warn",
- {
- "allow": [
- "arrowFunctions",
- "methods"
- ]
- }
- ],
- "@typescript-eslint/member-ordering": "error",
- "@typescript-eslint/await-thenable": "error",
- "@typescript-eslint/no-floating-promises": "error",
- "@typescript-eslint/promise-function-async": "error",
- "@typescript-eslint/no-misused-promises": "error",
- "curly": "error",
+ "space-before-blocks": ["error", "always"],
+ "curly": ["error", "all"],
"brace-style": "error",
- "eqeqeq": [
- "error",
- "always"
- ],
+ "eqeqeq": ["error", "always"],
"no-else-return": "error",
"no-eq-null": "error",
- "no-undefined": "error",
"no-extra-bind": "error",
"no-lone-blocks": "error",
"no-multi-spaces": "error",
"no-empty": "error",
- "no-return-assign": [
- "error",
- "always"
- ],
+ "no-return-assign": ["error", "always"],
"no-useless-catch": "error",
"no-useless-return": "error",
- "no-shadow": "error",
"no-multiple-empty-lines": [
"error",
{
// "ignorePattern": "pragma|ignored"
// }
// ],
- "eol-last": [
- "error",
- "always"
- ],
- "consistent-this": [
- "error",
- "self"
- ],
- "func-call-spacing": [
- "error",
- "never"
- ],
- "keyword-spacing": [
- "error"
- ],
- "linebreak-style": [
- "error",
- "unix"
- ],
+ "eol-last": ["error", "always"],
+ "consistent-this": ["error", "self"],
+ "func-call-spacing": ["error", "never"],
+ "keyword-spacing": ["error"],
+ "id-blacklist": [
+ "error",
+ "any",
+ "Number",
+ "number",
+ "String",
+ "string",
+ "Boolean",
+ "boolean",
+ "Undefined",
+ "undefined",
+ "Symbol",
+ "symbol"
+ ],
+ "linebreak-style": ["error", "unix"],
"max-len": [
"warn",
{
- "code": 180,
- "ignoreComments": true,
- "ignoreUrls": true,
- "ignoreStrings": true,
- "ignoreTemplateLiterals": true,
- "ignoreRegExpLiterals": true,
- "ignorePattern": "(^(import|export)|(public|private))\\s.+;"
+ "code": 100,
+ "ignoreUrls": true
}
],
"no-lonely-if": "error",
"no-trailing-spaces": "error",
"no-whitespace-before-property": "error",
- "space-before-function-paren": [
- "error",
- {
- "anonymous": "never",
- "named": "never",
- "asyncArrow": "always"
- }
- ],
- "space-in-parens": [
- "error",
- "never"
- ],
+ "space-in-parens": ["error", "never"],
"space-infix-ops": "error",
"space-unary-ops": "error",
- "spaced-comment": [
- "error",
- "always"
- ],
+ "spaced-comment": ["error", "always"],
"switch-colon-spacing": "error",
- "arrow-body-style": [
- "error",
- "as-needed"
- ],
- "arrow-parens": [
- "error",
- "always"
- ],
+ "arrow-body-style": ["error", "as-needed"],
+ "arrow-parens": ["error", "always"],
"arrow-spacing": "error",
"no-duplicate-imports": "error",
"no-var": "error",
"ignoreCase": false,
"ignoreDeclarationSort": false,
"ignoreMemberSort": false,
- "memberSyntaxSortOrder": [
- "none",
- "all",
- "multiple",
- "single"
- ]
+ "memberSyntaxSortOrder": ["none", "all", "multiple", "single"]
}
],
- "object-curly-spacing": [
- "error",
- "always"
- ],
+ "object-curly-spacing": ["error", "always"],
"lines-between-class-members": [
"error",
"always",
],
"quotes": [
"error",
- "single"
+ "single",
+ {
+ "avoidEscape": true,
+ "allowTemplateLiterals": false
+ }
]
- }
+ },
+ "overrides": [
+ {
+ "files": ["**/*.ts"],
+ "parser": "@typescript-eslint/parser",
+ "parserOptions": {
+ "ecmaVersion": 2020,
+ "sourceType": "module",
+ "project": "./tsconfig.json"
+ },
+ "extends": [
+ "plugin:@typescript-eslint/recommended",
+ "plugin:@typescript-eslint/recommended-requiring-type-checking",
+ "plugin:import/typescript"
+ ],
+ "plugins": ["@typescript-eslint"],
+ "rules": {
+ "@typescript-eslint/array-type": "off",
+ "semi": "off",
+ "@typescript-eslint/semi": ["error", "always"],
+ "@typescript-eslint/no-empty-function": "warn",
+ "@typescript-eslint/member-ordering": "error",
+ "@typescript-eslint/await-thenable": "error",
+ "@typescript-eslint/no-floating-promises": "error",
+ "@typescript-eslint/promise-function-async": "error",
+ "@typescript-eslint/no-misused-promises": "error",
+ "no-shadow": "off", // This one is generating false positive no-shadow errors on exported/const enums
+ "@typescript-eslint/no-shadow": "error"
+ }
+ },
+ {
+ "files": ["**/*.js"],
+ "extends": "plugin:node/recommended",
+ "rules": {
+ "node/shebang": "off"
+ }
+ }
+ ]
}