@@ -15,23 +15,37 @@ export function getImportSource(t, callNode) {
1515}
1616
1717export function createDynamicImportTransform ( { template, types : t } ) {
18- const buildImport = template ( 'Promise.resolve(SOURCE).then(s => INTEROP(require(s)))' ) ;
19- const buildImportNoInterop = template ( 'Promise.resolve(SOURCE).then(s => require(s))' ) ;
18+ const builders = {
19+ static : {
20+ interop : template ( 'Promise.resolve().then(() => INTEROP(require(SOURCE)))' ) ,
21+ noInterop : template ( 'Promise.resolve().then(() => require(SOURCE))' ) ,
22+ } ,
23+ dynamic : {
24+ interop : template ( 'Promise.resolve(SOURCE).then(s => INTEROP(require(s)))' ) ,
25+ noInterop : template ( 'Promise.resolve(SOURCE).then(s => require(s))' ) ,
26+ } ,
27+ } ;
2028
2129 const visited = typeof WeakSet === 'function' && new WeakSet ( ) ;
2230
31+ const isString = ( node ) => t . isStringLiteral ( node )
32+ || ( t . isTemplateLiteral ( node ) && node . expressions . length === 0 ) ;
33+
2334 return ( context , path ) => {
2435 if ( visited ) {
2536 if ( visited . has ( path ) ) {
2637 return ;
2738 }
2839 visited . add ( path ) ;
2940 }
41+
3042 const SOURCE = getImportSource ( t , path . parent ) ;
3143
44+ const builder = isString ( SOURCE ) ? builders . static : builders . dynamic ;
45+
3246 const newImport = context . opts . noInterop
33- ? buildImportNoInterop ( { SOURCE } )
34- : buildImport ( { SOURCE , INTEROP : context . addHelper ( 'interopRequireWildcard' ) } ) ;
47+ ? builder . noInterop ( { SOURCE } )
48+ : builder . interop ( { SOURCE , INTEROP : context . addHelper ( 'interopRequireWildcard' ) } ) ;
3549
3650 path . parentPath . replaceWith ( newImport ) ;
3751 } ;
0 commit comments