diff --git a/src/config/ts-node.ts b/src/config/ts-node.ts index 8bd84ee49..c3fb2c735 100644 --- a/src/config/ts-node.ts +++ b/src/config/ts-node.ts @@ -2,6 +2,7 @@ import * as fs from 'fs' import * as path from 'path' import * as TSNode from 'ts-node' +import {TSConfig} from '../interfaces/ts-config' import {Debug} from './util' // eslint-disable-next-line new-cap const debug = Debug() @@ -10,18 +11,6 @@ const tsconfigs: {[root: string]: TSConfig} = {} const rootDirs: string[] = [] const typeRoots = [`${__dirname}/../node_modules/@types`] -export interface TSConfig { - compilerOptions: { - rootDir?: string; - rootDirs?: string[]; - outDir?: string; - target?: string; - esModuleInterop?: boolean; - experimentalDecorators?: boolean; - emitDecoratorMetadata?: boolean; - }; -} - function loadTSConfig(root: string): TSConfig | undefined { const tsconfigPath = path.join(root, 'tsconfig.json') let typescript: typeof import('typescript') | undefined diff --git a/src/interfaces/index.ts b/src/interfaces/index.ts index 1aebac214..1d1ce08c2 100644 --- a/src/interfaces/index.ts +++ b/src/interfaces/index.ts @@ -5,3 +5,4 @@ export {Manifest} from './manifest' export {PJSON} from './pjson' export {Plugin, PluginOptions, Options} from './plugin' export {Topic} from './topic' +export {TSConfig} from './ts-config' diff --git a/src/interfaces/ts-config.ts b/src/interfaces/ts-config.ts new file mode 100644 index 000000000..b65654178 --- /dev/null +++ b/src/interfaces/ts-config.ts @@ -0,0 +1,11 @@ +export interface TSConfig { + compilerOptions: { + rootDir?: string; + rootDirs?: string[]; + outDir?: string; + target?: string; + esModuleInterop?: boolean; + experimentalDecorators?: boolean; + emitDecoratorMetadata?: boolean; + }; +} diff --git a/test/config/ts-node.test.ts b/test/config/ts-node.test.ts index 6d5ea8123..157fadd91 100644 --- a/test/config/ts-node.test.ts +++ b/test/config/ts-node.test.ts @@ -2,7 +2,7 @@ import * as path from 'path' import * as proxyquire from 'proxyquire' import * as tsNode from 'ts-node' -import {TSConfig} from '../../src/config/ts-node' +import {Interfaces} from '../../src' import {expect, fancy} from './test' @@ -10,18 +10,18 @@ const root = path.resolve(__dirname, 'fixtures/typescript') const orig = 'src/hooks/init.ts' let tsNodeRegisterCallArguments: any[] = [] -const DEFAULT_TS_CONFIG: TSConfig = { +const DEFAULT_TS_CONFIG: Interfaces.TSConfig = { compilerOptions: {}, } -const withMockTsConfig = (config: TSConfig = DEFAULT_TS_CONFIG) => { +const withMockTsConfig = (config: Interfaces.TSConfig = DEFAULT_TS_CONFIG) => { const tsNodePlugin = proxyquire('../../src/config/ts-node', {fs: { existsSync: () => true, readFileSync: () => JSON.stringify(config), }}) - // This prints "loadTSConfig unstubbed" not "loadTSConfig proxyquire"! - tsNodePlugin.tsPath('poop', 'asdf') + // This prints "loadInterfaces.TSConfig unstubbed" not "loadInterfaces.TSConfig proxyquire"! + tsNodePlugin.tsPath('qwerty', 'asdf') return fancy .add('tsNodePlugin', () => tsNodePlugin)