@@ -414,6 +414,39 @@ ExportMap.parse = function (path, content, context) {
414
414
return object ;
415
415
}
416
416
417
+ function processSpecifier ( s , n , m ) {
418
+ const nsource = n . source && n . source . value ;
419
+ const exportMeta = { } ;
420
+ let local ;
421
+
422
+ switch ( s . type ) {
423
+ case 'ExportDefaultSpecifier' :
424
+ if ( ! n . source ) return ;
425
+ local = 'default' ;
426
+ break ;
427
+ case 'ExportNamespaceSpecifier' :
428
+ m . namespace . set ( s . exported . name , Object . defineProperty ( exportMeta , 'namespace' , {
429
+ get ( ) { return resolveImport ( nsource ) ; } ,
430
+ } ) ) ;
431
+ return ;
432
+ case 'ExportAllDeclaration' :
433
+ local = s . exported ? s . exported . name : s . local . name ;
434
+ break ;
435
+ case 'ExportSpecifier' :
436
+ if ( ! n . source ) {
437
+ m . namespace . set ( s . exported . name , addNamespace ( exportMeta , s . local ) ) ;
438
+ return ;
439
+ }
440
+ // else falls through
441
+ default :
442
+ local = s . local . name ;
443
+ break ;
444
+ }
445
+
446
+ // todo: JSDoc
447
+ m . reexports . set ( s . exported . name , { local, getImport : ( ) => resolveImport ( nsource ) } ) ;
448
+ }
449
+
417
450
function captureDependency ( { source } , isOnlyImportingTypes , importedSpecifiers = new Set ( ) ) {
418
451
if ( source == null ) return null ;
419
452
@@ -489,6 +522,9 @@ ExportMap.parse = function (path, content, context) {
489
522
if ( n . type === 'ExportAllDeclaration' ) {
490
523
const getter = captureDependency ( n , n . exportKind === 'type' ) ;
491
524
if ( getter ) m . dependencies . add ( getter ) ;
525
+ if ( n . exported ) {
526
+ processSpecifier ( n , n . exported , m ) ;
527
+ }
492
528
return ;
493
529
}
494
530
@@ -546,35 +582,7 @@ ExportMap.parse = function (path, content, context) {
546
582
}
547
583
}
548
584
549
- const nsource = n . source && n . source . value ;
550
- n . specifiers . forEach ( ( s ) => {
551
- const exportMeta = { } ;
552
- let local ;
553
-
554
- switch ( s . type ) {
555
- case 'ExportDefaultSpecifier' :
556
- if ( ! n . source ) return ;
557
- local = 'default' ;
558
- break ;
559
- case 'ExportNamespaceSpecifier' :
560
- m . namespace . set ( s . exported . name , Object . defineProperty ( exportMeta , 'namespace' , {
561
- get ( ) { return resolveImport ( nsource ) ; } ,
562
- } ) ) ;
563
- return ;
564
- case 'ExportSpecifier' :
565
- if ( ! n . source ) {
566
- m . namespace . set ( s . exported . name , addNamespace ( exportMeta , s . local ) ) ;
567
- return ;
568
- }
569
- // else falls through
570
- default :
571
- local = s . local . name ;
572
- break ;
573
- }
574
-
575
- // todo: JSDoc
576
- m . reexports . set ( s . exported . name , { local, getImport : ( ) => resolveImport ( nsource ) } ) ;
577
- } ) ;
585
+ n . specifiers . forEach ( ( s ) => processSpecifier ( s , n , m ) ) ;
578
586
}
579
587
580
588
const exports = [ 'TSExportAssignment' ] ;
0 commit comments