@@ -50,13 +50,14 @@ export function getLastNode(sourceFile: ts.SourceFile): ts.Node | null {
50
50
// Test transform helpers.
51
51
const basePath = '/project/src/' ;
52
52
const fileName = basePath + 'test-file.ts' ;
53
+ const typeScriptLibFiles = loadTypeScriptLibFiles ( ) ;
53
54
const tsLibFiles = loadTsLibFiles ( ) ;
54
55
55
56
export function createTypescriptContext (
56
57
content : string ,
57
58
additionalFiles ?: Record < string , string > ,
58
59
useLibs = false ,
59
- importHelpers = true ,
60
+ extraCompilerOptions : ts . CompilerOptions = { } ,
60
61
) {
61
62
// Set compiler options.
62
63
const compilerOptions : ts . CompilerOptions = {
@@ -68,7 +69,9 @@ export function createTypescriptContext(
68
69
target : ts . ScriptTarget . ESNext ,
69
70
skipLibCheck : true ,
70
71
sourceMap : false ,
71
- importHelpers,
72
+ importHelpers : true ,
73
+ experimentalDecorators : true ,
74
+ ...extraCompilerOptions ,
72
75
} ;
73
76
74
77
// Create compiler host.
@@ -86,11 +89,17 @@ export function createTypescriptContext(
86
89
// Write the default libs.
87
90
// These are needed for tests that use import(), because it relies on a Promise being there.
88
91
const compilerLibFolder = dirname ( compilerHost . getDefaultLibFileName ( compilerOptions ) ) ;
89
- for ( const [ k , v ] of Object . entries ( tsLibFiles ) ) {
92
+ for ( const [ k , v ] of Object . entries ( typeScriptLibFiles ) ) {
90
93
compilerHost . writeFile ( join ( compilerLibFolder , k ) , v , false ) ;
91
94
}
92
95
}
93
96
97
+ if ( compilerOptions . importHelpers ) {
98
+ for ( const [ k , v ] of Object . entries ( tsLibFiles ) ) {
99
+ compilerHost . writeFile ( k , v , false ) ;
100
+ }
101
+ }
102
+
94
103
if ( additionalFiles ) {
95
104
for ( const key in additionalFiles ) {
96
105
compilerHost . writeFile ( basePath + key , additionalFiles [ key ] , false ) ;
@@ -108,8 +117,7 @@ export function transformTypescript(
108
117
transformers : ts . TransformerFactory < ts . SourceFile > [ ] ,
109
118
program ?: ts . Program ,
110
119
compilerHost ?: WebpackCompilerHost ,
111
- ) {
112
-
120
+ ) : string | undefined {
113
121
// Use given context or create a new one.
114
122
if ( content !== undefined ) {
115
123
const typescriptContext = createTypescriptContext ( content ) ;
@@ -137,18 +145,29 @@ export function transformTypescript(
137
145
return compilerHost . readFile ( fileName . replace ( / \. t s x ? $ / , '.js' ) ) ;
138
146
}
139
147
140
- function loadTsLibFiles ( ) {
148
+ function loadTypeScriptLibFiles ( ) : Record < string , string > {
141
149
const libFolderPath = dirname ( require . resolve ( 'typescript/lib/lib.d.ts' ) ) ;
142
150
const libFolderFiles = readdirSync ( libFolderPath ) ;
143
151
const libFileNames = libFolderFiles . filter ( f => f . startsWith ( 'lib.' ) && f . endsWith ( '.d.ts' ) ) ;
144
152
145
153
// 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
+ }
149
171
150
- return map ;
151
- } ,
152
- { } as { [ k : string ] : string } ,
153
- ) ;
172
+ return libs ;
154
173
}
0 commit comments