@@ -51,9 +51,9 @@ function logloads(loads) {
5151 return log;
5252} */
5353
54- ( function ( global ) {
54+ ( function ( __global ) {
5555 ( function ( ) {
56- var Promise = global . Promise || require ( 'es6-promise' ) . Promise ;
56+ var Promise = __global . Promise || require ( 'es6-promise' ) . Promise ;
5757
5858 var traceur ;
5959
@@ -210,55 +210,66 @@ function logloads(loads) {
210210
211211 var depsList ;
212212 if ( instantiateResult === undefined ) {
213- if ( ! global . traceur )
213+ if ( ! __global . traceur )
214214 throw new TypeError ( 'Include Traceur for module syntax support' ) ;
215215
216- traceur = traceur || global . traceur ;
216+ traceur = traceur || __global . traceur ;
217217 load . address = load . address || 'anon' + ++ anonCnt ;
218218
219219 console . assert ( load . source , 'Non-empty source' ) ;
220220
221- var parser = new traceur . syntax . Parser ( new traceur . syntax . SourceFile ( load . address , load . source ) ) ;
222- var body = parser . parseModule ( ) ;
221+ try {
222+ var parser = new traceur . syntax . Parser ( new traceur . syntax . SourceFile ( load . address , load . source ) ) ;
223+ var body = parser . parseModule ( ) ;
223224
224- load . kind = 'declarative' ;
225- depsList = getImports ( body ) ;
225+ load . kind = 'declarative' ;
226+ depsList = getImports ( body ) ;
226227
227- traceur . options . sourceMaps = true ;
228- traceur . options . modules = 'instantiate' ;
228+ traceur . options . sourceMaps = true ;
229+ traceur . options . modules = 'instantiate' ;
229230
230- var reporter = new traceur . util . ErrorReporter ( ) ;
231+ var reporter = new traceur . util . ErrorReporter ( ) ;
231232
232- reporter . reportMessageInternal = function ( location , kind , format , args ) {
233- throw kind + '\n' + location ;
234- }
233+ reporter . reportMessageInternal = function ( location , kind , format , args ) {
234+ throw new SyntaxError ( kind , location . start && location . start . line_ , location . start && location . start . column_ ) ;
235+ }
235236
236- // traceur expects its version of System
237- var sys = global . System ;
238- global . System = global . traceurSystem ;
237+ // traceur expects its version of System
238+ var curSystem = __global . System ;
239+ __global . System = __global . traceurSystem ;
239240
240- var tree = ( new traceur . codegeneration . module . AttachModuleNameTransformer ( load . name ) ) . transformAny ( body ) ;
241- tree = ( new traceur . codegeneration . FromOptionsTransformer ( reporter ) ) . transform ( tree ) ;
241+ var tree = ( new traceur . codegeneration . module . AttachModuleNameTransformer ( load . name ) ) . transformAny ( body ) ;
242+ tree = ( new traceur . codegeneration . FromOptionsTransformer ( reporter ) ) . transform ( tree ) ;
242243
243- var sourceMapGenerator = new traceur . outputgeneration . SourceMapGenerator ( { file : load . address } ) ;
244- var options = { sourceMapGenerator : sourceMapGenerator } ;
244+ var sourceMapGenerator = new traceur . outputgeneration . SourceMapGenerator ( { file : load . address } ) ;
245+ var options = { sourceMapGenerator : sourceMapGenerator } ;
245246
246- var source = traceur . outputgeneration . TreeWriter . write ( tree , options ) ;
247+ var source = traceur . outputgeneration . TreeWriter . write ( tree , options ) ;
247248
248- if ( global . btoa )
249- source += '\n//# sourceMappingURL=data:application/json;base64,' + btoa ( unescape ( encodeURIComponent ( options . sourceMap ) ) ) + '\n' ;
249+ if ( __global . btoa )
250+ source += '\n//# sourceMappingURL=data:application/json;base64,' + btoa ( unescape ( encodeURIComponent ( options . sourceMap ) ) ) + '\n' ;
250251
251- // now run System.register
252- var sysRegister = System . register ;
253-
254- System . register = function ( name , deps , declare ) {
255- // store the registered declaration as load.declare
256- load . declare = declare ;
257- }
258- __eval ( source , global , load . name ) ;
252+ // now run System.register
253+ var curRegister = System . register ;
254+
255+ System . register = function ( name , deps , declare ) {
256+ // store the registered declaration as load.declare
257+ load . declare = declare ;
258+ }
259259
260- System . register = sysRegister ;
261- global . System = sys ;
260+ __eval ( source , __global , load . name ) ;
261+ }
262+ catch ( e ) {
263+ if ( e . name == 'SyntaxError' || e . name == 'TypeError' )
264+ e . message = 'Evaluating ' + ( load . name || load . address ) + '\n\t' + e . message ;
265+ if ( curRegister )
266+ System . register = curRegister ;
267+ if ( curSystem )
268+ __global . System = curSystem ;
269+ throw e ;
270+ }
271+ System . register = curRegister ;
272+ __global . System = curSystem ;
262273 }
263274 else if ( typeof instantiateResult == 'object' ) {
264275 depsList = instantiateResult . deps || [ ] ;
@@ -567,13 +578,13 @@ function logloads(loads) {
567578 // 15.2.5.6 LinkDynamicModules adjusted
568579 else {
569580 var module = load . execute ( ) ;
570- if ( ! ( module instanceof Module ) )
581+ if ( ! ( module . __esModule ) )
571582 throw new TypeError ( 'Execution must define a Module instance' ) ;
572583 load . module = {
573584 module : module
574585 } ;
586+ load . status = 'linked' ;
575587 }
576- load . status = 'linked' ;
577588 finishLoad ( loader , load ) ;
578589 }
579590
@@ -584,33 +595,30 @@ function logloads(loads) {
584595
585596 // custom declarative linking function
586597 function linkDeclarativeModule ( load , loads , loader ) {
598+ // only link if already not already started linking (stops at circular)
587599 if ( load . module )
588600 return ;
589601
590- < << << << HEAD
591- for ( var i = 0 ; i < loads . length ; i ++ ) {
592- var load = loads [ i ] ;
593- if ( load . kind == 'declarative' ) {
594- // To Support Circular references:
595- // parse the body to read out the export values
596- // use these export values to create a module shell
597- // create an empty underlying exports object to be populated
598- === === =
599602 // declare the module with an empty depMap
600- var depMap = { } ;
601- var sys = global . System ;
602- global . System = loader ;
603- var registryEntry = load . declare . call ( global , depMap ) ;
603+ var depMap = [ ] ;
604+ var sys = __global . System ;
605+ __global . System = loader ;
606+ var registryEntry = load . declare . call ( __global , depMap ) ;
604607
605- global . System = sys ;
606- > >>> >>> circular references support
608+ __global . System = sys ;
607609
608610 var moduleDependencies = [ ] ;
609611
612+ // module is just a plain object, until we evaluate it
613+ var module = registryEntry . exports ;
614+
615+ console . assert ( ! load . module , 'Load module already declared!' ) ;
616+
610617 load . module = {
611618 name : load . name ,
612619 dependencies : moduleDependencies ,
613620 execute : registryEntry . execute ,
621+ exports : module ,
614622 evaluated : false
615623 } ;
616624
@@ -629,41 +637,38 @@ function logloads(loads) {
629637 if ( loads [ j ] . name != depName )
630638 continue ;
631639
632- // link if already not already linked (stops at circular)
633- if ( ! loads [ j ] . module )
634- linkDeclarativeModule ( loads [ j ] , loads , loader ) ;
640+ linkDeclarativeModule ( loads [ j ] , loads , loader ) ;
635641
636- depModule = loads [ j ] . module ;
642+ depModule = loads [ j ] . exports || loads [ j ] . module ;
637643 }
638644 }
639645
640- var depModuleModule = depModule . module ;
646+ console . assert ( depModule , 'Dependency module not found!' ) ;
647+ console . assert ( depModule . exports , 'Dependency module not found!' ) ;
641648
642649 if ( registryEntry . exportStar && indexOf . call ( registryEntry . exportStar , load . dependencies [ i ] . key ) != - 1 ) {
643650 // we are exporting * from this dependency
644- for ( var p in depModule . module ) ( function ( p ) {
645- // if the property is already defined throw?
646- defineProperty ( registryEntry . exports , p , {
647- enumerable : true ,
648- get : function ( ) {
649- return depModuleModule [ p ] ;
650- } ,
651- set : function ( value ) {
652- depModuleModule [ p ] = value ;
653- }
654- } ) ;
655- } ) ( p ) ;
651+ ( function ( depModuleModule ) {
652+ for ( var p in depModuleModule ) ( function ( p ) {
653+ // if the property is already defined throw?
654+ defineProperty ( module , p , {
655+ enumerable : true ,
656+ get : function ( ) {
657+ return depModuleModule [ p ] ;
658+ } ,
659+ set : function ( value ) {
660+ depModuleModule [ p ] = value ;
661+ }
662+ } ) ;
663+ } ) ( p ) ;
664+ } ) ( depModule . exports ) ;
656665 }
657666
658- console . assert ( depModule , 'Dependency module not found!' ) ;
659- console . assert ( depModuleModule , 'Dependency module not found!' ) ;
660-
661667 moduleDependencies . push ( depModule ) ;
662- depMap [ load . dependencies [ i ] . key ] = depModuleModule ;
668+ depMap [ i ] = depModule . exports ;
663669 }
664670
665- // at this point we define the module object
666- load . module . module = Module ( registryEntry . exports ) ;
671+ load . status = 'linked' ;
667672 }
668673
669674
@@ -692,7 +697,7 @@ function logloads(loads) {
692697
693698 // 15.2.6.2 EnsureEvaluated adjusted
694699 function ensureEvaluated ( module , seen , loader ) {
695- if ( module . evaluated )
700+ if ( module . evaluated || ! module . dependencies )
696701 return ;
697702
698703 seen . push ( module ) ;
@@ -709,7 +714,8 @@ function logloads(loads) {
709714 return ;
710715
711716 module . evaluated = true ;
712- module . execute . call ( global ) ;
717+ module . execute . call ( __global ) ;
718+ module . module = Module ( module . exports ) ;
713719 delete module . execute ;
714720 }
715721
@@ -788,11 +794,13 @@ function logloads(loads) {
788794 'import' : function ( name , options ) {
789795 // run normalize first
790796 var loaderObj = this ;
797+
791798 return new Promise ( function ( resolve ) {
792799 resolve ( loaderObj . normalize . call ( this , name , options && options . name , options && options . address ) )
793800 } )
794801 . then ( function ( name ) {
795802 var loader = loaderObj . _loader ;
803+
796804 if ( loader . modules [ name ] ) {
797805 ensureEvaluated ( loader . modules [ name ] , [ ] , loader . _loader ) ;
798806 return Promise . resolve ( loader . modules [ name ] . module ) ;
@@ -818,7 +826,7 @@ function logloads(loads) {
818826 return ! ! this . _loader . modules [ name ] ;
819827 } ,
820828 set : function ( name , module ) {
821- if ( ! ( module instanceof Module ) )
829+ if ( ! ( module . __esModule ) )
822830 throw new TypeError ( 'Set must be a module' ) ;
823831 this . _loader . modules [ name ] = {
824832 module : module
@@ -901,10 +909,10 @@ function logloads(loads) {
901909 if ( typeof obj != 'object' )
902910 throw new TypeError ( 'Expected object' ) ;
903911
904- if ( ! ( this instanceof Module ) )
905- return new Module ( obj ) ;
912+ var self = {
913+ __esModule : true
914+ } ;
906915
907- var self = this ;
908916 for ( var key in obj ) {
909917 ( function ( key ) {
910918 defineProperty ( self , key , {
@@ -916,31 +924,26 @@ function logloads(loads) {
916924 } ) ;
917925 } ) ( key ) ;
918926 }
927+
919928 if ( Object . preventExtensions )
920- Object . preventExtensions ( this ) ;
929+ Object . preventExtensions ( self ) ;
930+
931+ return self ;
921932 }
922- // Module.prototype = null;
923933
924934
925935 if ( typeof exports === 'object' )
926936 module . exports = Loader ;
927937
928- global . Reflect = global . Reflect || { } ;
929- global . Reflect . Loader = global . Reflect . Loader || Loader ;
930- global . LoaderPolyfill = Loader ;
931- global . Module = Module ;
938+ __global . Reflect = __global . Reflect || { } ;
939+ __global . Reflect . Loader = __global . Reflect . Loader || Loader ;
940+ __global . LoaderPolyfill = Loader ;
941+ __global . Module = Module ;
932942
933943 } ) ( ) ;
934944
935- function __eval ( __source , global , __moduleName ) {
936- try {
937- eval ( 'var __moduleName = "' + ( __moduleName || '' ) . replace ( '"' , '\"' ) + '"; with(global) { (function() { ' + __source + ' \n }).call(global); }' ) ;
938- }
939- catch ( e ) {
940- if ( e . name == 'SyntaxError' )
941- e . message = 'Evaluating ' + ( __sourceURL || __moduleName ) + '\n\t' + e . message ;
942- throw e ;
943- }
945+ function __eval ( __source , __global , __moduleName ) {
946+ eval ( 'var __moduleName = "' + ( __moduleName || '' ) . replace ( '"' , '\"' ) + '"; with(__global) { (function() { ' + __source + ' \n }).call(__global); }' ) ;
944947 }
945948
946949} ) ( typeof global !== 'undefined' ? global : this ) ;
0 commit comments