From 182f9affda32b5907968106c17b97ec724d56bb9 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Sun, 4 Aug 2019 17:54:14 +1200 Subject: [PATCH 1/8] chore(index): convert to typescript --- .../{rules.test.js => rules.test.ts} | 4 ++- src/{index.js => index.ts} | 26 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) rename src/__tests__/{rules.test.js => rules.test.ts} (93%) rename src/{index.js => index.ts} (75%) diff --git a/src/__tests__/rules.test.js b/src/__tests__/rules.test.ts similarity index 93% rename from src/__tests__/rules.test.js rename to src/__tests__/rules.test.ts index 1167b20fb..676a4bedb 100644 --- a/src/__tests__/rules.test.js +++ b/src/__tests__/rules.test.ts @@ -1,6 +1,8 @@ import { existsSync } from 'fs'; import { resolve } from 'path'; -import { rules } from '../'; +import plugin from '../'; + +const { rules } = plugin; const ruleNames = Object.keys(rules); const numberOfRules = 37; diff --git a/src/index.js b/src/index.ts similarity index 75% rename from src/index.js rename to src/index.ts index 0e76d4da3..b242433a3 100644 --- a/src/index.js +++ b/src/index.ts @@ -5,15 +5,16 @@ import * as snapshotProcessor from './processors/snapshot-processor'; // copied from https://github.com/babel/babel/blob/d8da63c929f2d28c401571e2a43166678c555bc4/packages/babel-helpers/src/helpers.js#L602-L606 /* istanbul ignore next */ -function interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; -} +const interopRequireDefault = (obj: any): { default: any } => + obj && obj.__esModule ? obj : { default: obj }; -function importDefault(moduleName) { - return interopRequireDefault(require(moduleName)).default; -} +const importDefault = (moduleName: string) => + // eslint-disable-next-line @typescript-eslint/no-require-imports + interopRequireDefault(require(moduleName)).default; -const rules = readdirSync(join(__dirname, 'rules')) +const rulesDir = join(__dirname, 'rules'); + +const rules = readdirSync(rulesDir) .filter( rule => rule !== '__tests__' && @@ -26,16 +27,13 @@ const rules = readdirSync(join(__dirname, 'rules')) ) .reduce( (acc, curr) => - Object.assign(acc, { [curr]: importDefault(`./rules/${curr}`) }), + Object.assign(acc, { [curr]: importDefault(join(rulesDir, curr)) }), {}, ); -let allRules = {}; -Object.keys(rules).forEach(function(key) { - allRules[`jest/${key}`] = 'error'; -}); +const allRules: Record = {}; +Object.keys(rules).forEach(key => (allRules[`jest/${key}`] = 'error')); -// eslint-disable-next-line import/no-commonjs -module.exports = { +export default { configs: { all: { plugins: ['jest'], From 02ec3fac3aa1a71df807d4b495be99fdb0a98396 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Tue, 6 Aug 2019 22:02:05 +1200 Subject: [PATCH 2/8] chore(index): use `module.exports` --- src/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index b242433a3..da12203bb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -33,7 +33,8 @@ const rules = readdirSync(rulesDir) const allRules: Record = {}; Object.keys(rules).forEach(key => (allRules[`jest/${key}`] = 'error')); -export default { +// eslint-disable-next-line import/no-commonjs +module.exports = { configs: { all: { plugins: ['jest'], From 59ec9d777bcd6bdc2e9c7a818cf4078d1b57e86b Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 6 Aug 2019 12:08:32 +0200 Subject: [PATCH 3/8] chore: use reduce --- src/index.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/index.ts b/src/index.ts index da12203bb..e02f338ff 100644 --- a/src/index.ts +++ b/src/index.ts @@ -30,8 +30,15 @@ const rules = readdirSync(rulesDir) Object.assign(acc, { [curr]: importDefault(join(rulesDir, curr)) }), {}, ); -const allRules: Record = {}; -Object.keys(rules).forEach(key => (allRules[`jest/${key}`] = 'error')); + +const allRules = Object.keys(rules).reduce>( + (rules, key) => { + rules[`jest/${key}`] = 'error'; + + return rules; + }, + {}, +); // eslint-disable-next-line import/no-commonjs module.exports = { From e244b55a81740099b5fab9f115033b44ea91af66 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Tue, 6 Aug 2019 22:36:22 +1200 Subject: [PATCH 4/8] chore(index): use `parse` instead of `basename` --- src/index.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/index.ts b/src/index.ts index e02f338ff..afc1d86b4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,5 @@ import { readdirSync } from 'fs'; -import { basename, join } from 'path'; +import { join, parse } from 'path'; import globals from './globals.json'; import * as snapshotProcessor from './processors/snapshot-processor'; @@ -22,9 +22,7 @@ const rules = readdirSync(rulesDir) rule !== 'tsUtils.ts' && rule !== 'tsUtils.js', ) - .map(rule => - rule.endsWith('js') ? basename(rule, '.js') : basename(rule, '.ts'), - ) + .map(rule => parse(rule).name) .reduce( (acc, curr) => Object.assign(acc, { [curr]: importDefault(join(rulesDir, curr)) }), From 0b922f3affb8b4cbe61b3d092ead48610cedf21c Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Tue, 6 Aug 2019 22:46:00 +1200 Subject: [PATCH 5/8] chore(index): `parse` rule files before `filter`ing --- src/index.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/index.ts b/src/index.ts index afc1d86b4..7fe98452f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -13,16 +13,11 @@ const importDefault = (moduleName: string) => interopRequireDefault(require(moduleName)).default; const rulesDir = join(__dirname, 'rules'); +const excludedFiles = ['__tests__', 'util', 'tsUtils']; const rules = readdirSync(rulesDir) - .filter( - rule => - rule !== '__tests__' && - rule !== 'util.js' && - rule !== 'tsUtils.ts' && - rule !== 'tsUtils.js', - ) .map(rule => parse(rule).name) + .filter(rule => excludedFiles.includes(rule)) .reduce( (acc, curr) => Object.assign(acc, { [curr]: importDefault(join(rulesDir, curr)) }), From 4955d0b99b3d84b30371b75ee40eba1106617e35 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 6 Aug 2019 21:55:35 +0200 Subject: [PATCH 6/8] chore: remove files not rules --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 7fe98452f..9a9fdf322 100644 --- a/src/index.ts +++ b/src/index.ts @@ -17,7 +17,7 @@ const excludedFiles = ['__tests__', 'util', 'tsUtils']; const rules = readdirSync(rulesDir) .map(rule => parse(rule).name) - .filter(rule => excludedFiles.includes(rule)) + .filter(rule => !excludedFiles.includes(rule)) .reduce( (acc, curr) => Object.assign(acc, { [curr]: importDefault(join(rulesDir, curr)) }), From 8021495aee255e2bbc72225c907c30a91ae31a8b Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 6 Aug 2019 21:58:09 +0200 Subject: [PATCH 7/8] chore: "fix" type error --- src/__tests__/rules.test.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/__tests__/rules.test.ts b/src/__tests__/rules.test.ts index 676a4bedb..7eaaed181 100644 --- a/src/__tests__/rules.test.ts +++ b/src/__tests__/rules.test.ts @@ -1,8 +1,7 @@ import { existsSync } from 'fs'; import { resolve } from 'path'; -import plugin from '../'; - -const { rules } = plugin; +// @ts-ignore +import { rules } from '../'; const ruleNames = Object.keys(rules); const numberOfRules = 37; From 1f3c447ac0e9dfd6331e217cbaa268659728cf94 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 6 Aug 2019 22:01:38 +0200 Subject: [PATCH 8/8] chore: purify reduce --- src/index.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/index.ts b/src/index.ts index 9a9fdf322..984b0c702 100644 --- a/src/index.ts +++ b/src/index.ts @@ -25,11 +25,7 @@ const rules = readdirSync(rulesDir) ); const allRules = Object.keys(rules).reduce>( - (rules, key) => { - rules[`jest/${key}`] = 'error'; - - return rules; - }, + (rules, key) => ({ ...rules, [`jest/${key}`]: 'error' }), {}, );