From f55d8953300283df4d713960c08330fb583ebf9b Mon Sep 17 00:00:00 2001 From: Huafu Gandon Date: Tue, 25 Sep 2018 07:48:10 +0200 Subject: [PATCH] feat(preset): adds presets typings and export all presets All presets are now accessible with typings by importing `ts-jest/presets` --- presets/default/jest-preset.js | 4 +--- presets/index.d.ts | 5 +++++ presets/index.js | 13 +++++++++++++ presets/js-with-babel/jest-preset.js | 8 +------- presets/js-with-ts/jest-preset.js | 4 +--- src/config/create-jest-preset.ts | 7 +++++-- src/types.ts | 6 ++++++ 7 files changed, 32 insertions(+), 15 deletions(-) create mode 100644 presets/index.d.ts create mode 100644 presets/index.js diff --git a/presets/default/jest-preset.js b/presets/default/jest-preset.js index 83a038128f..bdbaf701a1 100644 --- a/presets/default/jest-preset.js +++ b/presets/default/jest-preset.js @@ -1,3 +1 @@ -const create = require('../create') - -module.exports = create() +module.exports = require('..').defaults diff --git a/presets/index.d.ts b/presets/index.d.ts new file mode 100644 index 0000000000..2d63d8e167 --- /dev/null +++ b/presets/index.d.ts @@ -0,0 +1,5 @@ +import { TsJestPresets } from '../dist/types' + +export const defaults: TsJesPresets +export const jsWithTs: TsJesPresets +export const jsWithBabel: TsJesPresets diff --git a/presets/index.js b/presets/index.js new file mode 100644 index 0000000000..73195684d3 --- /dev/null +++ b/presets/index.js @@ -0,0 +1,13 @@ +const create = './create' + +module.exports = { + get defaults() { return create() }, + get jsWithTs() { return create({ allowJs: true }) }, + get jsWithBabel() { + return create({ allowJs: false }, { + transform: { + '^.+\\.jsx?$': 'babel-jest', + }, + }) + }, +} diff --git a/presets/js-with-babel/jest-preset.js b/presets/js-with-babel/jest-preset.js index 3248730a45..7e252420ad 100644 --- a/presets/js-with-babel/jest-preset.js +++ b/presets/js-with-babel/jest-preset.js @@ -1,7 +1 @@ -const create = require('../create') - -module.exports = create({ allowJs: false }, { - transform: { - '^.+\\.jsx?$': 'babel-jest', - }, -}) +module.exports = require('..').jsWithBabel diff --git a/presets/js-with-ts/jest-preset.js b/presets/js-with-ts/jest-preset.js index 639e6567be..d549de07eb 100644 --- a/presets/js-with-ts/jest-preset.js +++ b/presets/js-with-ts/jest-preset.js @@ -1,3 +1 @@ -const create = require('../create') - -module.exports = create({allowJs: true}) +module.exports = require('..').jsWithTs diff --git a/src/config/create-jest-preset.ts b/src/config/create-jest-preset.ts index 01334190c7..999c500c20 100644 --- a/src/config/create-jest-preset.ts +++ b/src/config/create-jest-preset.ts @@ -1,6 +1,6 @@ import * as jestConfig from 'jest-config' -import { CreateJestPresetOptions } from '../types' +import { CreateJestPresetOptions, TsJestPresets } from '../types' import { rootLogger } from '../util/logger' const logger = rootLogger.child({ namespace: 'jest-preset' }) @@ -12,7 +12,10 @@ const defaults = jestConfig.defaults || { moduleFileExtensions: ['js', 'json', 'jsx', 'node'], } -export function createJestPreset({ allowJs = false }: CreateJestPresetOptions = {}, from?: jest.InitialOptions) { +export function createJestPreset( + { allowJs = false }: CreateJestPresetOptions = {}, + from?: jest.InitialOptions, +): TsJestPresets { logger.debug({ allowJs }, 'creating jest presets', allowJs ? 'handling' : 'not handling', 'JavaScript files') from = { ...defaults, ...from } return { diff --git a/src/types.ts b/src/types.ts index 7e9b84081a..6feff23c1c 100644 --- a/src/types.ts +++ b/src/types.ts @@ -69,6 +69,12 @@ export interface TsJestGlobalOptions { stringifyContentPathRegex?: string | RegExp } +export interface TsJestPresets { + transform: Record + testMatch: string[] + moduleFileExtensions: string[] +} + interface TsJestConfig$tsConfig$file { kind: 'file' value: string | undefined