@@ -2,7 +2,7 @@ import * as path from 'path';
22
33import { createFilter } from '@rollup/pluginutils' ;
44
5- import type { Plugin , PluginContext , SourceDescription } from 'rollup' ;
5+ import type { Plugin , SourceDescription } from 'rollup' ;
66import type { Watch } from 'typescript' ;
77
88import type { RollupTypescriptOptions } from '../types' ;
@@ -37,31 +37,6 @@ export default function typescript(options: RollupTypescriptOptions = {}): Plugi
3737 tslib,
3838 typescript : ts
3939 } = getPluginOptions ( options ) ;
40- const createProgram = ( context : PluginContext ) =>
41- createWatchProgram ( ts , context , {
42- formatHost,
43- resolveModule,
44- parsedOptions,
45- writeFile ( fileName , data , _writeByteOrderMark , _onError , sourceFiles ) {
46- if ( sourceFiles ) {
47- for ( const sourceFile of sourceFiles ) {
48- if ( ! parsedOptions . fileNames . includes ( sourceFile . fileName ) ) {
49- parsedOptions . fileNames . push ( sourceFile . fileName ) ;
50- }
51- }
52- }
53-
54- if ( parsedOptions . options . composite || parsedOptions . options . incremental ) {
55- tsCache . cacheCode ( fileName , data ) ;
56- }
57- emittedFiles . set ( fileName , data ) ;
58- } ,
59- status ( diagnostic ) {
60- watchProgramHelper . handleStatus ( diagnostic ) ;
61- } ,
62- transformers
63- } ) ;
64-
6540 const tsCache = new TSCache ( cacheDir ) ;
6641 const emittedFiles = new Map < string , string > ( ) ;
6742 const watchProgramHelper = new WatchProgramHelper ( ) ;
@@ -81,14 +56,6 @@ export default function typescript(options: RollupTypescriptOptions = {}): Plugi
8156 name : 'typescript' ,
8257
8358 buildStart ( rollupOptions ) {
84- if ( typeof rollupOptions . input === 'string' ) {
85- rollupOptions . input = [ rollupOptions . input ] ;
86- }
87-
88- if ( Array . isArray ( rollupOptions . input ) ) {
89- parsedOptions . fileNames = rollupOptions . input . map ( ( fileName ) => path . resolve ( fileName ) ) ;
90- }
91-
9259 emitParsedOptionsErrors ( ts , this , parsedOptions ) ;
9360
9461 preflight ( {
@@ -107,7 +74,21 @@ export default function typescript(options: RollupTypescriptOptions = {}): Plugi
10774 program = null ;
10875 }
10976 if ( ! program ) {
110- program = createProgram ( this ) ;
77+ program = createWatchProgram ( ts , this , {
78+ formatHost,
79+ resolveModule,
80+ parsedOptions,
81+ writeFile ( fileName , data ) {
82+ if ( parsedOptions . options . composite || parsedOptions . options . incremental ) {
83+ tsCache . cacheCode ( fileName , data ) ;
84+ }
85+ emittedFiles . set ( fileName , data ) ;
86+ } ,
87+ status ( diagnostic ) {
88+ watchProgramHelper . handleStatus ( diagnostic ) ;
89+ } ,
90+ transformers
91+ } ) ;
11192 }
11293 } ,
11394
@@ -158,6 +139,7 @@ export default function typescript(options: RollupTypescriptOptions = {}): Plugi
158139
159140 if ( resolved ) {
160141 if ( / \. d \. [ c m ] ? t s / . test ( resolved . extension ) ) return null ;
142+ if ( ! filter ( resolved . resolvedFileName ) ) return null ;
161143 return path . normalize ( resolved . resolvedFileName ) ;
162144 }
163145
@@ -167,20 +149,16 @@ export default function typescript(options: RollupTypescriptOptions = {}): Plugi
167149 async load ( id ) {
168150 if ( ! filter ( id ) ) return null ;
169151
170- const resolvedId = path . resolve ( id ) ;
171-
172- this . addWatchFile ( resolvedId ) ;
152+ this . addWatchFile ( id ) ;
173153 await watchProgramHelper . wait ( ) ;
174154
175- const fileName = normalizePath ( resolvedId ) ;
155+ const fileName = normalizePath ( id ) ;
176156 if ( ! parsedOptions . fileNames . includes ( fileName ) ) {
177157 // Discovered new file that was not known when originally parsing the TypeScript config
178- parsedOptions . fileNames . push ( path . resolve ( fileName ) ) ;
179-
180- createProgram ( this ) . close ( ) ;
158+ parsedOptions . fileNames . push ( fileName ) ;
181159 }
182160
183- const output = findTypescriptOutput ( ts , parsedOptions , resolvedId , emittedFiles , tsCache ) ;
161+ const output = findTypescriptOutput ( ts , parsedOptions , id , emittedFiles , tsCache ) ;
184162
185163 return output . code != null ? ( output as SourceDescription ) : null ;
186164 } ,
0 commit comments