From a334368f03e4fa629b65f1bb036d39e7febcde28 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Wed, 7 Aug 2019 08:06:21 +1200 Subject: [PATCH] chore: convert index file to typescript (#372) --- .../{rules.test.js => rules.test.ts} | 1 + src/{index.js => index.ts} | 41 ++++++++----------- 2 files changed, 19 insertions(+), 23 deletions(-) rename src/__tests__/{rules.test.js => rules.test.ts} (98%) rename src/{index.js => index.ts} (67%) diff --git a/src/__tests__/rules.test.js b/src/__tests__/rules.test.ts similarity index 98% rename from src/__tests__/rules.test.js rename to src/__tests__/rules.test.ts index 1167b20fb..7eaaed181 100644 --- a/src/__tests__/rules.test.js +++ b/src/__tests__/rules.test.ts @@ -1,5 +1,6 @@ import { existsSync } from 'fs'; import { resolve } from 'path'; +// @ts-ignore import { rules } from '../'; const ruleNames = Object.keys(rules); diff --git a/src/index.js b/src/index.ts similarity index 67% rename from src/index.js rename to src/index.ts index 0e76d4da3..984b0c702 100644 --- a/src/index.js +++ b/src/index.ts @@ -1,38 +1,33 @@ 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'; // 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')) - .filter( - rule => - rule !== '__tests__' && - rule !== 'util.js' && - rule !== 'tsUtils.ts' && - rule !== 'tsUtils.js', - ) - .map(rule => - rule.endsWith('js') ? basename(rule, '.js') : basename(rule, '.ts'), - ) +const rulesDir = join(__dirname, 'rules'); +const excludedFiles = ['__tests__', 'util', 'tsUtils']; + +const rules = readdirSync(rulesDir) + .map(rule => parse(rule).name) + .filter(rule => !excludedFiles.includes(rule)) .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 = Object.keys(rules).reduce>( + (rules, key) => ({ ...rules, [`jest/${key}`]: 'error' }), + {}, +); // eslint-disable-next-line import/no-commonjs module.exports = {