@@ -57,39 +57,62 @@ describe('transpileModules', () => {
57
57
const mtsFilePath = path . join ( workspaceRoot , 'foo.mts' )
58
58
const tsFilePathInCjsModernNode = path . join ( workspaceRoot , 'cjs-node-modern' , 'foo.ts' )
59
59
const ctsFilePath = path . join ( workspaceRoot , 'foo.cts' )
60
- vol . fromJSON (
61
- {
62
- './esm-node-modern/package.json' : JSON . stringify ( {
63
- name : 'test-package-1' ,
64
- type : 'module' ,
65
- } as PackageJson ) ,
66
- './esm-node-modern/foo.ts' : `
60
+ beforeEach ( ( ) => {
61
+ vol . reset ( )
62
+ vol . fromJSON (
63
+ {
64
+ './esm-node-modern/package.json' : JSON . stringify ( {
65
+ name : 'test-package-1' ,
66
+ type : 'module' ,
67
+ } as PackageJson ) ,
68
+ './esm-node-modern/foo.ts' : `
67
69
import { foo } from 'foo';
68
70
69
71
console.log(foo);
72
+ const loadFooAsync = async () => {
73
+ const fooDefault = await import('foo');
74
+ console.log(fooDefault);
75
+ }
76
+ console.log(loadFooAsync());
70
77
` ,
71
- './foo.mts' : `
78
+ './foo.mts' : `
72
79
import { foo } from 'foo';
73
80
74
81
console.log(foo);
82
+ const loadFooAsync = async () => {
83
+ const fooDefault = await import('foo');
84
+ console.log(fooDefault);
85
+ }
86
+ console.log(loadFooAsync());
75
87
` ,
76
- './cjs-node-modern/package.json' : JSON . stringify ( {
77
- name : 'test-package-1' ,
78
- type : 'commonjs' ,
79
- } as PackageJson ) ,
80
- './cjs-node-modern/foo.ts' : `
88
+ './cjs-node-modern/package.json' : JSON . stringify ( {
89
+ name : 'test-package-1' ,
90
+ type : 'commonjs' ,
91
+ } as PackageJson ) ,
92
+ './cjs-node-modern/foo.ts' : `
81
93
import { foo } from 'foo';
82
94
83
95
console.log(foo);
96
+ const loadFooAsync = async () => {
97
+ const fooDefault = await import('foo');
98
+ console.log(fooDefault);
99
+ }
100
+ console.log(loadFooAsync());
84
101
` ,
85
- './foo.cts' : `
102
+ './foo.cts' : `
86
103
import { foo } from 'foo';
87
104
88
105
console.log(foo);
106
+ const loadFooAsync = async () => {
107
+ const fooDefault = await import('foo');
108
+ console.log(fooDefault);
109
+ }
110
+ console.log(loadFooAsync());
89
111
` ,
90
- } ,
91
- workspaceRoot ,
92
- )
112
+ } ,
113
+ workspaceRoot ,
114
+ )
115
+ } )
93
116
94
117
it . each ( [
95
118
{
@@ -110,6 +133,12 @@ describe('transpileModules', () => {
110
133
111
134
expect ( omitLeadingWhitespace ( result . outputText ) ) . toContain ( dedent `
112
135
const foo_1 = require("foo");
136
+ console.log(foo_1.foo);
137
+ const loadFooAsync = async () => {
138
+ const fooDefault = await import('foo');
139
+ console.log(fooDefault);
140
+ };
141
+ console.log(loadFooAsync());
113
142
` )
114
143
} )
115
144
@@ -131,32 +160,50 @@ describe('transpileModules', () => {
131
160
132
161
expect ( omitLeadingWhitespace ( result . outputText ) ) . toContain ( dedent `
133
162
import { foo } from 'foo';
163
+ console.log(foo);
164
+ const loadFooAsync = async () => {
165
+ const fooDefault = await import('foo');
166
+ console.log(fooDefault);
167
+ };
168
+ console.log(loadFooAsync());
134
169
` )
135
170
} )
136
171
137
172
it . each ( [
138
- {
139
- module : ts . ModuleKind . CommonJS ,
140
- expectedResult : dedent `
141
- const foo_1 = require("foo");
142
- ` ,
143
- } ,
144
173
{
145
174
module : ts . ModuleKind . Node16 ,
146
175
expectedResult : dedent `
147
176
import { foo } from 'foo';
177
+ console.log(foo);
178
+ const loadFooAsync = async () => {
179
+ const fooDefault = await import('foo');
180
+ console.log(fooDefault);
181
+ };
182
+ console.log(loadFooAsync());
148
183
` ,
149
184
} ,
150
185
{
151
186
module : ts . ModuleKind . ES2020 ,
152
187
expectedResult : dedent `
153
188
import { foo } from 'foo';
189
+ console.log(foo);
190
+ const loadFooAsync = async () => {
191
+ const fooDefault = await import('foo');
192
+ console.log(fooDefault);
193
+ };
194
+ console.log(loadFooAsync());
154
195
` ,
155
196
} ,
156
197
{
157
198
module : undefined ,
158
199
expectedResult : dedent `
159
200
import { foo } from 'foo';
201
+ console.log(foo);
202
+ const loadFooAsync = async () => {
203
+ const fooDefault = await import('foo');
204
+ console.log(fooDefault);
205
+ };
206
+ console.log(loadFooAsync());
160
207
` ,
161
208
} ,
162
209
] ) ( 'should emit code with ".mts" extension respecting module option' , ( { module, expectedResult } ) => {
@@ -172,28 +219,40 @@ describe('transpileModules', () => {
172
219
} )
173
220
174
221
it . each ( [
175
- {
176
- module : ts . ModuleKind . CommonJS ,
177
- expectedResult : dedent `
178
- const foo_1 = require("foo");
179
- ` ,
180
- } ,
181
222
{
182
223
module : ts . ModuleKind . Node16 ,
183
224
expectedResult : dedent `
184
225
const foo_1 = require("foo");
226
+ console.log(foo_1.foo);
227
+ const loadFooAsync = async () => {
228
+ const fooDefault = await import('foo');
229
+ console.log(fooDefault);
230
+ };
231
+ console.log(loadFooAsync());
185
232
` ,
186
233
} ,
187
234
{
188
235
module : ts . ModuleKind . ES2020 ,
189
236
expectedResult : dedent `
190
237
import { foo } from 'foo';
238
+ console.log(foo);
239
+ const loadFooAsync = async () => {
240
+ const fooDefault = await import('foo');
241
+ console.log(fooDefault);
242
+ };
243
+ console.log(loadFooAsync());
191
244
` ,
192
245
} ,
193
246
{
194
247
module : undefined ,
195
248
expectedResult : dedent `
196
249
import { foo } from 'foo';
250
+ console.log(foo);
251
+ const loadFooAsync = async () => {
252
+ const fooDefault = await import('foo');
253
+ console.log(fooDefault);
254
+ };
255
+ console.log(loadFooAsync());
197
256
` ,
198
257
} ,
199
258
] ) ( 'should emit code with ".cts" extension respecting module option' , ( { module, expectedResult } ) => {
@@ -210,19 +269,28 @@ describe('transpileModules', () => {
210
269
} )
211
270
212
271
describe ( 'with classic CommonJS module and ES module kind' , ( ) => {
213
- vol . fromJSON (
214
- {
215
- './foo.ts' : `
272
+ const filePath = path . join ( workspaceRoot , 'bar.ts' )
273
+
274
+ beforeEach ( ( ) => {
275
+ vol . reset ( )
276
+ vol . fromJSON (
277
+ {
278
+ './bar.ts' : `
216
279
import { foo } from 'foo';
217
280
218
281
console.log(foo);
282
+ const loadFooAsync = async () => {
283
+ const fooDefault = await import('foo');
284
+ console.log(fooDefault);
285
+ }
286
+ console.log(loadFooAsync());
219
287
` ,
220
- } ,
221
- workspaceRoot ,
222
- )
288
+ } ,
289
+ workspaceRoot ,
290
+ )
291
+ } )
223
292
224
293
it ( 'should emit CJS code with module kind set to CommonJS' , ( ) => {
225
- const filePath = path . join ( workspaceRoot , 'foo.ts' )
226
294
const result = tsTranspileModule ( vol . readFileSync ( filePath , 'utf-8' ) . toString ( ) , {
227
295
fileName : filePath ,
228
296
compilerOptions : {
@@ -232,12 +300,17 @@ describe('transpileModules', () => {
232
300
} )
233
301
234
302
expect ( omitLeadingWhitespace ( result . outputText ) ) . toContain ( dedent `
235
- const foo_1 = require("foo");
303
+ const foo_1 = require("foo");
304
+ console.log(foo_1.foo);
305
+ const loadFooAsync = async () => {
306
+ const fooDefault = await Promise.resolve().then(() => require('foo'));
307
+ console.log(fooDefault);
308
+ };
309
+ console.log(loadFooAsync());
236
310
` )
237
311
} )
238
312
239
313
it ( 'should emit ESM code with module kind set to one of ES module value' , ( ) => {
240
- const filePath = path . join ( workspaceRoot , 'foo.ts' )
241
314
const result = tsTranspileModule ( vol . readFileSync ( filePath , 'utf-8' ) . toString ( ) , {
242
315
fileName : filePath ,
243
316
compilerOptions : {
@@ -247,23 +320,32 @@ describe('transpileModules', () => {
247
320
} )
248
321
249
322
expect ( omitLeadingWhitespace ( result . outputText ) ) . toContain ( dedent `
250
- import { foo } from 'foo';
323
+ import { foo } from 'foo';
324
+ console.log(foo);
325
+ const loadFooAsync = async () => {
326
+ const fooDefault = await import('foo');
327
+ console.log(fooDefault);
328
+ };
329
+ console.log(loadFooAsync());
251
330
` )
252
331
} )
253
332
} )
254
333
255
334
describe ( 'with diagnostics' , ( ) => {
256
335
const testFilePath = path . join ( workspaceRoot , 'foo.ts' )
257
- vol . fromJSON (
258
- {
259
- './foo.ts' : `
336
+ beforeEach ( ( ) => {
337
+ vol . reset ( )
338
+ vol . fromJSON (
339
+ {
340
+ './foo.ts' : `
260
341
import { foo } from 'foo';
261
342
262
343
console.log(foo);
263
344
` ,
264
- } ,
265
- workspaceRoot ,
266
- )
345
+ } ,
346
+ workspaceRoot ,
347
+ )
348
+ } )
267
349
268
350
it ( 'should return diagnostics for invalid combination of compiler options' , ( ) => {
269
351
const result = tsTranspileModule ( vol . readFileSync ( testFilePath , 'utf-8' ) . toString ( ) , {
0 commit comments