{ "env": { "node": true, "es6": true }, "plugins": ["promise", "prettier", "jsdoc", "@typescript-eslint", "import"], "extends": ["plugin:jsdoc/recommended", "plugin:prettier/recommended"], "overrides": [ { "parser": "@typescript-eslint/parser", "files": ["**/*.ts"], "extends": ["plugin:@typescript-eslint/recommended"], "rules": { "@typescript-eslint/ban-types": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-inferrable-types": "off", "@typescript-eslint/no-unused-vars": [ "error", { "varsIgnorePattern": "^_", "argsIgnorePattern": "^_" } ], "@typescript-eslint/consistent-type-imports": [ "error", { "prefer": "type-imports", "disallowTypeAnnotations": true } ], "@typescript-eslint/no-use-before-define": ["error", "nofunc"], "jsdoc/require-param-type": "off", "jsdoc/require-returns-type": "off", "prefer-const": [ "error", { "destructuring": "all" } ] }, "settings": { "jsdoc": { "mode": "typescript" } } }, { "parser": "@typescript-eslint/parser", "files": ["packages/*/test/**/*.js", "packages/*/test/**/*.ts"], "rules": { "jsdoc/require-param": "off", "jsdoc/require-param-description": "off", "jsdoc/require-param-name": "off", "jsdoc/require-param-type": "off", "jsdoc/require-returns": "off", "jsdoc/require-returns-check": "off", "jsdoc/require-returns-description": "off", "jsdoc/require-returns-type": "off", "jsdoc/require-jsdoc": [ "off", { "require": { "ClassDeclaration": true, "MethodDefinition": true }, "exemptEmptyFunctions": true } ], "jsdoc/valid-types": "off", "jsdoc/check-types": "off", "jsdoc/check-tag-names": "off", "jsdoc/match-description": "off", "promise/param-names": "off", "promise/catch-or-return": "off", "@typescript-eslint/no-unused-vars": "off", "@typescript-eslint/consistent-type-imports": [ "error", { "prefer": "type-imports", "disallowTypeAnnotations": true } ], "@typescript-eslint/no-use-before-define": ["error", "nofunc"] } } ], "rules": { "comma-dangle": ["error", "never"], "jsdoc/require-param": "error", "jsdoc/require-param-description": "warn", "jsdoc/require-param-name": "error", "jsdoc/require-param-type": "warn", "jsdoc/require-returns": "error", "jsdoc/require-returns-check": "error", "jsdoc/require-returns-description": "warn", "jsdoc/require-returns-type": "error", "jsdoc/require-jsdoc": [ "warn", { "require": { "ClassDeclaration": true, "MethodDefinition": true }, "exemptEmptyFunctions": true } ], "jsdoc/valid-types": "error", "jsdoc/check-types": "error", "jsdoc/check-param-names": "error", "jsdoc/check-tag-names": [ "error", { "definedTags": ["ui5-restricted", "experimental", "final"] } ], "jsdoc/match-description": "error", "promise/always-return": "off", "promise/no-return-wrap": "off", "promise/param-names": "error", "promise/catch-or-return": "error", "promise/no-native": "off", "promise/no-nesting": "warn", "promise/no-promise-in-callback": "warn", "promise/no-callback-in-promise": "warn", "promise/avoid-new": "off", "promise/no-new-statics": "error", "promise/no-return-in-finally": "warn", "promise/valid-params": "warn", "no-cond-assign": "error", "no-console": "warn", "no-constant-condition": "error", "no-control-regex": "error", "no-debugger": "error", "no-dupe-args": "error", "no-dupe-keys": "error", "no-duplicate-case": "error", "no-empty-character-class": "error", "no-empty": "error", "no-ex-assign": "error", "no-extra-boolean-cast": "warn", "no-extra-parens": ["error", "functions"], "no-extra-semi": "error", "no-func-assign": "error", "no-inner-declarations": ["error", "functions"], "no-invalid-regexp": "error", "no-irregular-whitespace": "error", "no-negated-in-lhs": "error", "no-obj-calls": "error", "no-regex-spaces": "error", "no-sparse-arrays": "error", "no-unreachable": "error", "use-isnan": "error", "valid-typeof": "error", "accessor-pairs": "error", "block-scoped-var": "warn", "consistent-return": "warn", "curly": ["error", "all"], "default-case": "warn", "no-alert": "error", "no-caller": "error", "no-div-regex": "error", "no-eval": "error", "no-extend-native": "error", "no-extra-bind": "error", "no-fallthrough": "error", "no-floating-decimal": "error", "no-implied-eval": "error", "no-iterator": "error", "no-labels": "error", "no-lone-blocks": "error", "no-loop-func": "error", "no-native-reassign": "error", "no-new-func": "error", "no-new-wrappers": "warn", "no-new": "warn", "no-octal-escape": "error", "no-octal": "error", "no-proto": "error", "no-redeclare": "warn", "no-return-assign": "error", "no-script-url": "error", "no-self-compare": "error", "no-sequences": "error", "no-unused-expressions": "warn", "no-void": "error", "no-warning-comments": "warn", "no-with": "error", "radix": "error", "wrap-iife": ["error", "any"], "yoda": "error", "strict": ["error", "function"], "no-catch-shadow": "error", "no-delete-var": "error", "no-label-var": "error", "no-shadow-restricted-names": "error", "no-undef-init": "error", "no-undef": "error", "no-unused-vars": [ "error", { "vars": "all", "args": "none" } ], "no-use-before-define": "off", "camelcase": "warn", "consistent-this": ["warn", "that"], "max-nested-callbacks": ["warn", 3], "new-cap": "warn", "new-parens": "error", "no-array-constructor": "error", "no-lonely-if": "warn", "no-mixed-spaces-and-tabs": ["error", "smart-tabs"], "no-nested-ternary": "error", "no-new-object": "error", "no-spaced-func": "error", "quote-props": [ "error", "as-needed", { "keywords": true, "unnecessary": false } ], "semi-spacing": [ "warn", { "before": false, "after": true } ], "semi": "error", "keyword-spacing": [ "error", { "after": true } ], "space-before-function-paren": [ "error", { "anonymous": "always", "named": "never", "asyncArrow": "always" } ], "space-infix-ops": "error", "space-unary-ops": [ "error", { "words": true, "nonwords": false } ], // "sap-no-jquery": 2 // turn on errors for missing imports "import/no-unresolved": "error", "prettier/prettier": [ "error", { "endOfLine": "auto" } ] }, "settings": { "jsdoc": { "tagNamePreference": { "augments": { "message": "@extends is to be used over @augments as it is more evocative of classes than @augments", "replacement": "extends" } } }, "import/resolver": { "typescript": { "alwaysTryTypes": true, // always try to resolve types under `@types` directory even it doesn't contain any source code, like `@types/unist` "project": ["./packages/*/tsconfig.json", "./tsconfig.json"] } } } }