diff --git a/packages/typescript/src/options/interfaces.ts b/packages/typescript/src/options/interfaces.ts index 5e3cd6041..17733d6fe 100644 --- a/packages/typescript/src/options/interfaces.ts +++ b/packages/typescript/src/options/interfaces.ts @@ -1,21 +1,12 @@ -/** Properties of `CompilerOptions` that are normally enums */ -export interface EnumCompilerOptions { - module: string; - moduleResolution: string; - newLine: string; - jsx: string; - target: string; -} +import { PartialCompilerOptions } from '../../types'; + +export { EnumCompilerOptions, JsonCompilerOptions } from '../../types'; +export { PartialCompilerOptions }; /** Typescript compiler options */ export type CompilerOptions = import('typescript').CompilerOptions; -/** JSON representation of Typescript compiler options */ -export type JsonCompilerOptions = Omit & - EnumCompilerOptions; -/** Compiler options set by the plugin user. */ -export type PartialCustomOptions = Partial | Partial; -export const DEFAULT_COMPILER_OPTIONS: PartialCustomOptions = { +export const DEFAULT_COMPILER_OPTIONS: PartialCompilerOptions = { module: 'esnext', noEmitOnError: true, skipLibCheck: true diff --git a/packages/typescript/src/options/normalize.ts b/packages/typescript/src/options/normalize.ts index 625a36ec3..f2f1e5ef7 100644 --- a/packages/typescript/src/options/normalize.ts +++ b/packages/typescript/src/options/normalize.ts @@ -1,7 +1,7 @@ /* eslint-disable no-param-reassign */ import { resolve } from 'path'; -import { CompilerOptions, PartialCustomOptions } from './interfaces'; +import { CompilerOptions, PartialCompilerOptions } from './interfaces'; export const DIRECTORY_PROPS = ['outDir', 'declarationDir'] as const; @@ -12,7 +12,7 @@ export const DIRECTORY_PROPS = ['outDir', 'declarationDir'] as const; * @param compilerOptions Compiler options to _mutate_. * @param relativeTo Paths are resolved relative to this path. */ -export function makePathsAbsolute(compilerOptions: PartialCustomOptions, relativeTo: string) { +export function makePathsAbsolute(compilerOptions: PartialCompilerOptions, relativeTo: string) { for (const pathProp of DIRECTORY_PROPS) { if (compilerOptions[pathProp]) { compilerOptions[pathProp] = resolve(relativeTo, compilerOptions[pathProp] as string); diff --git a/packages/typescript/src/options/plugin.ts b/packages/typescript/src/options/plugin.ts index 6af361596..c28c54d92 100644 --- a/packages/typescript/src/options/plugin.ts +++ b/packages/typescript/src/options/plugin.ts @@ -1,11 +1,9 @@ import { createFilter } from '@rollup/pluginutils'; import * as defaultTs from 'typescript'; -import { RollupTypescriptOptions } from '../../types'; +import { RollupTypescriptOptions, PartialCompilerOptions } from '../../types'; import getTsLibPath from '../tslib'; -import { PartialCustomOptions } from './interfaces'; - /** * Separate the Rollup plugin options from the Typescript compiler options, * and normalize the Rollup options. @@ -24,7 +22,7 @@ export default function getPluginOptions(options: RollupTypescriptOptions) { return { filter, tsconfig, - compilerOptions: compilerOptions as PartialCustomOptions, + compilerOptions: compilerOptions as PartialCompilerOptions, typescript: typescript || defaultTs, tslib: tslib || getTsLibPath() }; diff --git a/packages/typescript/src/options/tsconfig.ts b/packages/typescript/src/options/tsconfig.ts index 2c2ba511d..638b54473 100644 --- a/packages/typescript/src/options/tsconfig.ts +++ b/packages/typescript/src/options/tsconfig.ts @@ -11,7 +11,7 @@ import { DEFAULT_COMPILER_OPTIONS, EnumCompilerOptions, FORCED_COMPILER_OPTIONS, - PartialCustomOptions + PartialCompilerOptions } from './interfaces'; import { normalizeCompilerOptions, makePathsAbsolute } from './normalize'; @@ -59,9 +59,9 @@ function readTsConfigFile(ts: typeof import('typescript'), tsConfigPath: string) * This indicates that the internal CompilerOptions type is used rather than the JsonCompilerOptions. */ function containsEnumOptions( - compilerOptions: PartialCustomOptions + compilerOptions: PartialCompilerOptions ): compilerOptions is Partial { - const enums: Array = [ + const enums: Array = [ 'module', 'target', 'jsx', @@ -89,7 +89,7 @@ const configCache = new Map() as import('typescript').Map< export function parseTypescriptConfig( ts: typeof import('typescript'), tsconfig: RollupTypescriptOptions['tsconfig'], - compilerOptions: PartialCustomOptions + compilerOptions: PartialCompilerOptions ) { /* eslint-disable no-undefined */ const cwd = process.cwd(); diff --git a/packages/typescript/types/index.d.ts b/packages/typescript/types/index.d.ts index 76050f291..adffe1e71 100644 --- a/packages/typescript/types/index.d.ts +++ b/packages/typescript/types/index.d.ts @@ -1,19 +1,8 @@ import { FilterPattern } from '@rollup/pluginutils'; import { Plugin } from 'rollup'; -import { CompilerOptionsValue, TsConfigSourceFile } from 'typescript'; - -export interface RollupTypescriptOptions { - /** - * Other Typescript compiler options. - */ - [option: string]: - | CompilerOptionsValue - | TsConfigSourceFile - | RollupTypescriptOptions['include'] - | RollupTypescriptOptions['typescript'] - | RollupTypescriptOptions['tslib'] - | undefined; +import { CompilerOptions } from 'typescript'; +export interface RollupTypescriptPluginOptions { /** * Determine which files are transpiled by Typescript (all `.ts` and * `.tsx` files by default). @@ -40,6 +29,18 @@ export interface RollupTypescriptOptions { tslib?: Promise | string; } +/** Properties of `CompilerOptions` that are normally enums */ +export type EnumCompilerOptions = 'module' | 'moduleResolution' | 'newLine' | 'jsx' | 'target'; + +/** JSON representation of Typescript compiler options */ +export type JsonCompilerOptions = Omit & + Record; + +/** Compiler options set by the plugin user. */ +export type PartialCompilerOptions = Partial | Partial; + +export type RollupTypescriptOptions = RollupTypescriptPluginOptions & PartialCompilerOptions; + /** * Seamless integration between Rollup and Typescript. */