@@ -5,6 +5,7 @@ import { addToError, global, createSymbol, baseURI, toStringTag } from './common
55export default RegisterLoader ;
66
77var resolvedPromise = Promise . resolve ( ) ;
8+ var emptyArray = [ ] ;
89
910/*
1011 * Register Loader
@@ -354,7 +355,7 @@ function registerDeclarative (loader, load, link, declare) {
354355 return value ;
355356 } , new ContextualLoader ( loader , load . key ) ) ;
356357
357- link . setters = declared . setters ;
358+ link . setters = declared . setters || [ ] ;
358359 link . execute = declared . execute ;
359360 if ( declared . exports ) {
360361 link . moduleObj = moduleObj = declared . exports ;
@@ -428,13 +429,16 @@ function deepInstantiateDeps (loader, load, link, registry, state) {
428429
429430 return instantiateDeps ( loader , load , link , registry , state )
430431 . then ( function ( ) {
431- var depPromises = [ ] ;
432+ var depPromises ;
432433 for ( let i = 0 ; i < link . dependencies . length ; i ++ ) {
433434 var depLoad = link . dependencyInstantiations [ i ] ;
434- if ( ! ( depLoad instanceof ModuleNamespace || depLoad [ toStringTag ] === 'module' ) )
435+ if ( ! ( depLoad instanceof ModuleNamespace || depLoad [ toStringTag ] === 'module' ) ) {
436+ depPromises = depPromises || [ ] ;
435437 depPromises . push ( addDeps ( depLoad , depLoad . linkRecord ) ) ;
438+ }
436439 }
437- return Promise . all ( depPromises ) ;
440+ if ( depPromises )
441+ return Promise . all ( depPromises ) ;
438442 } ) ;
439443 } ;
440444
@@ -604,7 +608,7 @@ function doEvaluateDeclarative (loader, load, link, registry, state, seen) {
604608 }
605609
606610 if ( depLoadPromises )
607- return Promise . all ( depLoadPromises )
611+ return link . evaluatePromise = Promise . all ( depLoadPromises )
608612 . then ( function ( ) {
609613 if ( link . execute ) {
610614 // ES System.register execute
@@ -618,6 +622,10 @@ function doEvaluateDeclarative (loader, load, link, registry, state, seen) {
618622 if ( execPromise )
619623 return execPromise . catch ( function ( e ) {
620624 evalError ( load , e ) ;
625+ } )
626+ . then ( function ( ) {
627+ load . linkRecord = undefined ;
628+ return registry [ load . key ] = load . module = new ModuleNamespace ( link . moduleObj ) ;
621629 } ) ;
622630 }
623631
@@ -636,8 +644,12 @@ function doEvaluateDeclarative (loader, load, link, registry, state, seen) {
636644 evalError ( load , e ) ;
637645 }
638646 if ( execPromise )
639- return execPromise . catch ( function ( e ) {
647+ return link . evaluatePromise = execPromise . catch ( function ( e ) {
640648 evalError ( load , e ) ;
649+ } )
650+ . then ( function ( ) {
651+ load . linkRecord = undefined ;
652+ return registry [ load . key ] = load . module = new ModuleNamespace ( link . moduleObj ) ;
641653 } ) ;
642654 }
643655
0 commit comments