From 5aee9fc89c6dcf341a461ca162a40d0650ef160c Mon Sep 17 00:00:00 2001 From: patrick Date: Mon, 11 Mar 2024 10:29:53 +0100 Subject: [PATCH 1/2] typescript recommended rules turn off eslint rules that do not work for ts/gts but they only to that for known extensions, therefore we need to reapply them in our recommended config see issue https://github.com/typescript-eslint/typescript-eslint/issues/8607 --- lib/config/recommended-gts.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/config/recommended-gts.js b/lib/config/recommended-gts.js index d35deb4296..fe5de7b33d 100644 --- a/lib/config/recommended-gts.js +++ b/lib/config/recommended-gts.js @@ -1,4 +1,17 @@ const base = require('./base'); const gtsRules = require('../recommended-rules-gts'); -module.exports = [...base, { rules: gtsRules }]; +let typescriptRecommendedRules = {}; +try { + // typescript recommended rules turn off eslint rules that do not work for ts/gts + // but they only to that for known extensions, therefore we need to reapply them in our + // recommended config + // see issue https://github.com/typescript-eslint/typescript-eslint/issues/8607 + const recommended = // eslint-disable-next-line n/no-extraneous-require + require('@typescript-eslint/eslint-plugin').configs['eslint-recommended']; + typescriptRecommendedRules = recommended.overrides[0].rules; +} catch { + // not available +} + +module.exports = [...base, { rules: { ...gtsRules, ...typescriptRecommendedRules } }]; From 00f1ed3834e05664d38d52b3c8dbbf15b97d6fb4 Mon Sep 17 00:00:00 2001 From: Patrick Pircher Date: Tue, 26 Mar 2024 23:15:42 +0100 Subject: [PATCH 2/2] copy rules --- lib/config/recommended-gts.js | 38 +++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/lib/config/recommended-gts.js b/lib/config/recommended-gts.js index fe5de7b33d..47f25dce30 100644 --- a/lib/config/recommended-gts.js +++ b/lib/config/recommended-gts.js @@ -1,17 +1,29 @@ const base = require('./base'); const gtsRules = require('../recommended-rules-gts'); -let typescriptRecommendedRules = {}; -try { - // typescript recommended rules turn off eslint rules that do not work for ts/gts - // but they only to that for known extensions, therefore we need to reapply them in our - // recommended config - // see issue https://github.com/typescript-eslint/typescript-eslint/issues/8607 - const recommended = // eslint-disable-next-line n/no-extraneous-require - require('@typescript-eslint/eslint-plugin').configs['eslint-recommended']; - typescriptRecommendedRules = recommended.overrides[0].rules; -} catch { - // not available -} +// see https://github.com/typescript-eslint/typescript-eslint/issues/8607 +// https://github.com/typescript-eslint/typescript-eslint/blob/v7.4.0/packages/eslint-plugin/src/configs/eslint-recommended-raw.ts +const tsRecommended = { + 'constructor-super': 'off', // ts(2335) & ts(2377) + 'getter-return': 'off', // ts(2378) + 'no-const-assign': 'off', // ts(2588) + 'no-dupe-args': 'off', // ts(2300) + 'no-dupe-class-members': 'off', // ts(2393) & ts(2300) + 'no-dupe-keys': 'off', // ts(1117) + 'no-func-assign': 'off', // ts(2630) + 'no-import-assign': 'off', // ts(2632) & ts(2540) + 'no-new-symbol': 'off', // ts(7009) + 'no-obj-calls': 'off', // ts(2349) + 'no-redeclare': 'off', // ts(2451) + 'no-setter-return': 'off', // ts(2408) + 'no-this-before-super': 'off', // ts(2376) & ts(17009) + 'no-undef': 'off', // ts(2304) & ts(2552) + 'no-unreachable': 'off', // ts(7027) + 'no-unsafe-negation': 'off', // ts(2365) & ts(2322) & ts(2358) + 'no-var': 'error', // ts transpiles let/const to var, so no need for vars any more + 'prefer-const': 'error', // ts provides better types with const + 'prefer-rest-params': 'error', // ts provides better types with rest args over arguments + 'prefer-spread': 'error', // ts transpiles spread to apply, so no need for manual apply +}; -module.exports = [...base, { rules: { ...gtsRules, ...typescriptRecommendedRules } }]; +module.exports = [...base, { rules: { ...gtsRules, ...tsRecommended } }];