@@ -50,13 +50,14 @@ export function getLastNode(sourceFile: ts.SourceFile): ts.Node | null {
5050// Test transform helpers.
5151const basePath = '/project/src/' ;
5252const fileName = basePath + 'test-file.ts' ;
53+ const typeScriptLibFiles = loadTypeScriptLibFiles ( ) ;
5354const tsLibFiles = loadTsLibFiles ( ) ;
5455
5556export function createTypescriptContext (
5657 content : string ,
5758 additionalFiles ?: Record < string , string > ,
5859 useLibs = false ,
59- importHelpers = true ,
60+ extraCompilerOptions : ts . CompilerOptions = { } ,
6061) {
6162 // Set compiler options.
6263 const compilerOptions : ts . CompilerOptions = {
@@ -68,7 +69,9 @@ export function createTypescriptContext(
6869 target : ts . ScriptTarget . ESNext ,
6970 skipLibCheck : true ,
7071 sourceMap : false ,
71- importHelpers,
72+ importHelpers : true ,
73+ experimentalDecorators : true ,
74+ ...extraCompilerOptions ,
7275 } ;
7376
7477 // Create compiler host.
@@ -86,11 +89,17 @@ export function createTypescriptContext(
8689 // Write the default libs.
8790 // These are needed for tests that use import(), because it relies on a Promise being there.
8891 const compilerLibFolder = dirname ( compilerHost . getDefaultLibFileName ( compilerOptions ) ) ;
89- for ( const [ k , v ] of Object . entries ( tsLibFiles ) ) {
92+ for ( const [ k , v ] of Object . entries ( typeScriptLibFiles ) ) {
9093 compilerHost . writeFile ( join ( compilerLibFolder , k ) , v , false ) ;
9194 }
9295 }
9396
97+ if ( compilerOptions . importHelpers ) {
98+ for ( const [ k , v ] of Object . entries ( tsLibFiles ) ) {
99+ compilerHost . writeFile ( k , v , false ) ;
100+ }
101+ }
102+
94103 if ( additionalFiles ) {
95104 for ( const key in additionalFiles ) {
96105 compilerHost . writeFile ( basePath + key , additionalFiles [ key ] , false ) ;
@@ -108,8 +117,7 @@ export function transformTypescript(
108117 transformers : ts . TransformerFactory < ts . SourceFile > [ ] ,
109118 program ?: ts . Program ,
110119 compilerHost ?: WebpackCompilerHost ,
111- ) {
112-
120+ ) : string | undefined {
113121 // Use given context or create a new one.
114122 if ( content !== undefined ) {
115123 const typescriptContext = createTypescriptContext ( content ) ;
@@ -137,18 +145,29 @@ export function transformTypescript(
137145 return compilerHost . readFile ( fileName . replace ( / \. t s x ? $ / , '.js' ) ) ;
138146}
139147
140- function loadTsLibFiles ( ) {
148+ function loadTypeScriptLibFiles ( ) : Record < string , string > {
141149 const libFolderPath = dirname ( require . resolve ( 'typescript/lib/lib.d.ts' ) ) ;
142150 const libFolderFiles = readdirSync ( libFolderPath ) ;
143151 const libFileNames = libFolderFiles . filter ( f => f . startsWith ( 'lib.' ) && f . endsWith ( '.d.ts' ) ) ;
144152
145153 // Return a map of the lib names to their content.
146- return libFileNames . reduce (
147- ( map , f ) => {
148- map [ f ] = readFileSync ( join ( libFolderPath , f ) , 'utf-8' ) ;
154+ const libs : Record < string , string > = { } ;
155+ for ( const f of libFileNames ) {
156+ libs [ f ] = readFileSync ( join ( libFolderPath , f ) , 'utf-8' ) ;
157+ }
158+
159+ return libs ;
160+ }
161+
162+ function loadTsLibFiles ( ) : Record < string , string > {
163+ const libFolderPath = dirname ( require . resolve ( 'tslib/package.json' ) ) ;
164+ const libFolderFiles = readdirSync ( libFolderPath ) ;
165+
166+ // Return a map of the lib names to their content.
167+ const libs : Record < string , string > = { } ;
168+ for ( const f of libFolderFiles ) {
169+ libs [ join ( 'node_modules/tslib' , f ) ] = readFileSync ( join ( libFolderPath , f ) , 'utf-8' ) ;
170+ }
149171
150- return map ;
151- } ,
152- { } as { [ k : string ] : string } ,
153- ) ;
172+ return libs ;
154173}
0 commit comments