diff --git a/config/eslintrc.base.js b/config/eslintrc.base.js index 01def02eeb..3f65d4967c 100644 --- a/config/eslintrc.base.js +++ b/config/eslintrc.base.js @@ -1,49 +1,53 @@ -const typescriptEslintEslintPlugin = require('@typescript-eslint/eslint-plugin'); +const jsRules = { + 'object-curly-spacing': [2, 'always'], + 'no-empty-function': 0, + 'valid-jsdoc': 0, + 'react/sort-comp': 0, // does not seem work as expected with typescript + 'mocha/no-skipped-tests': 1, + 'mocha/no-exclusive-tests': 2, + 'semi': [2, 'always'], + 'no-console': [1, { allow: ['warn', 'error', 'info'] }], + 'no-shadow': 0, + 'no-use-before-define': 0, + 'no-cond-assign': [2, 'except-parens'] +} -// ovrerrides do not work with extends -const ruleOverridesForJs = Object.keys(typescriptEslintEslintPlugin.rules).reduce( - (overrides, rule) => ({ ...overrides, [`@typescript-eslint/${rule}`]: 0 }), {} -); +const tsRules = { + '@typescript-eslint/no-empty-function': 0, + '@typescript-eslint/no-use-before-define': 0, + '@typescript-eslint/no-explicit-any': 0, + '@typescript-eslint/no-var-requires': 0, // seems necessary to import less files + '@typescript-eslint/no-unused-vars': 2, + '@typescript-eslint/no-floating-promises': 2, + '@typescript-eslint/await-thenable': 2, + '@typescript-eslint/require-await': 2, + '@typescript-eslint/explicit-module-boundary-types': 0, + '@typescript-eslint/ban-types': 0, + 'semi': 0, + '@typescript-eslint/semi': [2, 'always'] +}; module.exports = { plugins: ['mocha'], - parser: '@typescript-eslint/parser', - parserOptions: { - project: './tsconfig.lint.json' - }, - extends: [ - 'eslint-config-mongodb-js/react', - 'plugin:@typescript-eslint/recommended' - ], - rules: { - 'object-curly-spacing': [2, 'always'], - 'no-empty-function': 0, - 'valid-jsdoc': 0, - 'react/sort-comp': 0, // does not seem work as expected with typescript - '@typescript-eslint/no-empty-function': 0, - '@typescript-eslint/no-use-before-define': 0, - '@typescript-eslint/no-explicit-any': 0, - '@typescript-eslint/no-var-requires': 0, // seems necessary to import less files - '@typescript-eslint/no-unused-vars': 2, - '@typescript-eslint/no-floating-promises': 2, - '@typescript-eslint/await-thenable': 2, - '@typescript-eslint/require-await': 2, - '@typescript-eslint/explicit-module-boundary-types': 0, - '@typescript-eslint/ban-types': 0, - 'mocha/no-skipped-tests': 1, - 'mocha/no-exclusive-tests': 2, - 'semi': 0, - '@typescript-eslint/semi': [2, 'always'], - 'no-console': [1, { allow: ['warn', 'error', 'info'] }], - 'no-shadow': 0, - 'no-use-before-define': 0, - 'no-cond-assign': [2, 'except-parens'] - }, overrides: [{ - files: ['**/*.js'], + files: ['**/*.js', '**/*.jsx'], + extends: [ + 'eslint-config-mongodb-js/react' + ], + rules: { + ...jsRules + } + }, + { + files: ['**/*.ts', '**/*.tsx'], + parser: '@typescript-eslint/parser', + extends: [ + 'eslint-config-mongodb-js/react', + 'plugin:@typescript-eslint/recommended' + ], rules: { - ...ruleOverridesForJs, - semi: [2, 'always'] + ...jsRules, + ...tsRules } }] }; diff --git a/packages/async-rewriter2/.eslintrc.js b/packages/async-rewriter2/.eslintrc.js index 4a958b44bd..cfead3afb4 100644 --- a/packages/async-rewriter2/.eslintrc.js +++ b/packages/async-rewriter2/.eslintrc.js @@ -1 +1,8 @@ -module.exports = require('../../config/eslintrc.base'); +module.exports = { + ...require('../../config/eslintrc.base'), + root: true, + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.lint.json' + } +}; diff --git a/packages/autocomplete/.eslintrc.js b/packages/autocomplete/.eslintrc.js index adb60be8a3..cfead3afb4 100644 --- a/packages/autocomplete/.eslintrc.js +++ b/packages/autocomplete/.eslintrc.js @@ -1 +1,8 @@ -module.exports = require('../../config/eslintrc.base'); \ No newline at end of file +module.exports = { + ...require('../../config/eslintrc.base'), + root: true, + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.lint.json' + } +}; diff --git a/packages/browser-repl/.eslintrc.js b/packages/browser-repl/.eslintrc.js index 4a958b44bd..cfead3afb4 100644 --- a/packages/browser-repl/.eslintrc.js +++ b/packages/browser-repl/.eslintrc.js @@ -1 +1,8 @@ -module.exports = require('../../config/eslintrc.base'); +module.exports = { + ...require('../../config/eslintrc.base'), + root: true, + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.lint.json' + } +}; diff --git a/packages/browser-runtime-core/.eslintrc.js b/packages/browser-runtime-core/.eslintrc.js index 4a958b44bd..cfead3afb4 100644 --- a/packages/browser-runtime-core/.eslintrc.js +++ b/packages/browser-runtime-core/.eslintrc.js @@ -1 +1,8 @@ -module.exports = require('../../config/eslintrc.base'); +module.exports = { + ...require('../../config/eslintrc.base'), + root: true, + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.lint.json' + } +}; diff --git a/packages/browser-runtime-electron/.eslintrc.js b/packages/browser-runtime-electron/.eslintrc.js index 4a958b44bd..cfead3afb4 100644 --- a/packages/browser-runtime-electron/.eslintrc.js +++ b/packages/browser-runtime-electron/.eslintrc.js @@ -1 +1,8 @@ -module.exports = require('../../config/eslintrc.base'); +module.exports = { + ...require('../../config/eslintrc.base'), + root: true, + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.lint.json' + } +}; diff --git a/packages/build/.eslintrc.js b/packages/build/.eslintrc.js index 4a958b44bd..cfead3afb4 100644 --- a/packages/build/.eslintrc.js +++ b/packages/build/.eslintrc.js @@ -1 +1,8 @@ -module.exports = require('../../config/eslintrc.base'); +module.exports = { + ...require('../../config/eslintrc.base'), + root: true, + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.lint.json' + } +}; diff --git a/packages/cli-repl/.eslintrc.js b/packages/cli-repl/.eslintrc.js index 4a958b44bd..cfead3afb4 100644 --- a/packages/cli-repl/.eslintrc.js +++ b/packages/cli-repl/.eslintrc.js @@ -1 +1,8 @@ -module.exports = require('../../config/eslintrc.base'); +module.exports = { + ...require('../../config/eslintrc.base'), + root: true, + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.lint.json' + } +}; diff --git a/packages/errors/.eslintrc.js b/packages/errors/.eslintrc.js index 4a958b44bd..cfead3afb4 100644 --- a/packages/errors/.eslintrc.js +++ b/packages/errors/.eslintrc.js @@ -1 +1,8 @@ -module.exports = require('../../config/eslintrc.base'); +module.exports = { + ...require('../../config/eslintrc.base'), + root: true, + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.lint.json' + } +}; diff --git a/packages/history/.eslintrc.js b/packages/history/.eslintrc.js index 4a958b44bd..cfead3afb4 100644 --- a/packages/history/.eslintrc.js +++ b/packages/history/.eslintrc.js @@ -1 +1,8 @@ -module.exports = require('../../config/eslintrc.base'); +module.exports = { + ...require('../../config/eslintrc.base'), + root: true, + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.lint.json' + } +}; diff --git a/packages/i18n/.eslintrc.js b/packages/i18n/.eslintrc.js index 4a958b44bd..cfead3afb4 100644 --- a/packages/i18n/.eslintrc.js +++ b/packages/i18n/.eslintrc.js @@ -1 +1,8 @@ -module.exports = require('../../config/eslintrc.base'); +module.exports = { + ...require('../../config/eslintrc.base'), + root: true, + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.lint.json' + } +}; diff --git a/packages/node-runtime-worker-thread/.eslintrc.js b/packages/node-runtime-worker-thread/.eslintrc.js index adb60be8a3..cfead3afb4 100644 --- a/packages/node-runtime-worker-thread/.eslintrc.js +++ b/packages/node-runtime-worker-thread/.eslintrc.js @@ -1 +1,8 @@ -module.exports = require('../../config/eslintrc.base'); \ No newline at end of file +module.exports = { + ...require('../../config/eslintrc.base'), + root: true, + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.lint.json' + } +}; diff --git a/packages/service-provider-core/.eslintrc.js b/packages/service-provider-core/.eslintrc.js index 4a958b44bd..cfead3afb4 100644 --- a/packages/service-provider-core/.eslintrc.js +++ b/packages/service-provider-core/.eslintrc.js @@ -1 +1,8 @@ -module.exports = require('../../config/eslintrc.base'); +module.exports = { + ...require('../../config/eslintrc.base'), + root: true, + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.lint.json' + } +}; diff --git a/packages/service-provider-server/.eslintrc.js b/packages/service-provider-server/.eslintrc.js index 4a958b44bd..cfead3afb4 100644 --- a/packages/service-provider-server/.eslintrc.js +++ b/packages/service-provider-server/.eslintrc.js @@ -1 +1,8 @@ -module.exports = require('../../config/eslintrc.base'); +module.exports = { + ...require('../../config/eslintrc.base'), + root: true, + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.lint.json' + } +}; diff --git a/packages/shell-api/.eslintrc.js b/packages/shell-api/.eslintrc.js index 4a958b44bd..cfead3afb4 100644 --- a/packages/shell-api/.eslintrc.js +++ b/packages/shell-api/.eslintrc.js @@ -1 +1,8 @@ -module.exports = require('../../config/eslintrc.base'); +module.exports = { + ...require('../../config/eslintrc.base'), + root: true, + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.lint.json' + } +}; diff --git a/packages/shell-evaluator/.eslintrc.js b/packages/shell-evaluator/.eslintrc.js index 4a958b44bd..cfead3afb4 100644 --- a/packages/shell-evaluator/.eslintrc.js +++ b/packages/shell-evaluator/.eslintrc.js @@ -1 +1,8 @@ -module.exports = require('../../config/eslintrc.base'); +module.exports = { + ...require('../../config/eslintrc.base'), + root: true, + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.lint.json' + } +}; diff --git a/packages/snippet-manager/.eslintrc.js b/packages/snippet-manager/.eslintrc.js index 4a958b44bd..cfead3afb4 100644 --- a/packages/snippet-manager/.eslintrc.js +++ b/packages/snippet-manager/.eslintrc.js @@ -1 +1,8 @@ -module.exports = require('../../config/eslintrc.base'); +module.exports = { + ...require('../../config/eslintrc.base'), + root: true, + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.lint.json' + } +}; diff --git a/packages/types/.eslintrc.js b/packages/types/.eslintrc.js index 4a958b44bd..cfead3afb4 100644 --- a/packages/types/.eslintrc.js +++ b/packages/types/.eslintrc.js @@ -1 +1,8 @@ -module.exports = require('../../config/eslintrc.base'); +module.exports = { + ...require('../../config/eslintrc.base'), + root: true, + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.lint.json' + } +};