11/** vim: et:ts=4:sw=4:sts=4
2- * @license RequireJS 2.1.19 Copyright (c) 2010-2015, The Dojo Foundation All Rights Reserved.
2+ * @license RequireJS 2.1.22 Copyright (c) 2010-2015, The Dojo Foundation All Rights Reserved.
33 * Available via the MIT or new BSD license.
44 * see: http://github.com/jrburke/requirejs for details
55 */
@@ -12,7 +12,7 @@ var requirejs, require, define;
1212( function ( global ) {
1313 var req , s , head , baseElement , dataMain , src ,
1414 interactiveScript , currentlyAddingScript , mainScript , subPath ,
15- version = '2.1.19 ' ,
15+ version = '2.1.22 ' ,
1616 commentRegExp = / ( \/ \* ( [ \s \S ] * ?) \* \/ | ( [ ^ : ] | ^ ) \/ \/ ( .* ) $ ) / mg,
1717 cjsRequireRegExp = / [ ^ . ] \s * r e q u i r e \s * \( \s * [ " ' ] ( [ ^ ' " \s ] + ) [ " ' ] \s * \) / g,
1818 jsSuffixRegExp = / \. j s $ / ,
@@ -21,7 +21,6 @@ var requirejs, require, define;
2121 ostring = op . toString ,
2222 hasOwn = op . hasOwnProperty ,
2323 ap = Array . prototype ,
24- apsp = ap . splice ,
2524 isBrowser = ! ! ( typeof window !== 'undefined' && typeof navigator !== 'undefined' && window . document ) ,
2625 isWebWorker = ! isBrowser && typeof importScripts !== 'undefined' ,
2726 //PS3 indicates loaded and complete, but need to wait for complete
@@ -554,11 +553,13 @@ var requirejs, require, define;
554553 function takeGlobalQueue ( ) {
555554 //Push all the globalDefQueue items into the context's defQueue
556555 if ( globalDefQueue . length ) {
557- //Array splice in the values since the context code has a
558- //local var ref to defQueue, so cannot just reassign the one
559- //on context.
560- apsp . apply ( defQueue ,
561- [ defQueue . length , 0 ] . concat ( globalDefQueue ) ) ;
556+ each ( globalDefQueue , function ( queueItem ) {
557+ var id = queueItem [ 0 ] ;
558+ if ( typeof id === 'string' ) {
559+ context . defQueueMap [ id ] = true ;
560+ }
561+ defQueue . push ( queueItem ) ;
562+ } ) ;
562563 globalDefQueue = [ ] ;
563564 }
564565 }
@@ -845,7 +846,10 @@ var requirejs, require, define;
845846 factory = this . factory ;
846847
847848 if ( ! this . inited ) {
848- this . fetch ( ) ;
849+ // Only fetch if not already in the defQueue.
850+ if ( ! hasProp ( context . defQueueMap , id ) ) {
851+ this . fetch ( ) ;
852+ }
849853 } else if ( this . error ) {
850854 this . emit ( 'error' , this . error ) ;
851855 } else if ( ! this . defining ) {
@@ -857,21 +861,10 @@ var requirejs, require, define;
857861
858862 if ( this . depCount < 1 && ! this . defined ) {
859863 if ( isFunction ( factory ) ) {
860- //If there is an error listener, favor passing
861- //to that instead of throwing an error. However,
862- //only do it for define()'d modules. require
863- //errbacks should not be called for failures in
864- //their callbacks (#699). However if a global
865- //onError is set, use that.
866- if ( ( this . events . error && this . map . isDefine ) ||
867- req . onError !== defaultOnError ) {
868- try {
869- exports = context . execCb ( id , factory , depExports , exports ) ;
870- } catch ( e ) {
871- err = e ;
872- }
873- } else {
864+ try {
874865 exports = context . execCb ( id , factory , depExports , exports ) ;
866+ } catch ( e ) {
867+ err = e ;
875868 }
876869
877870 // Favor return value over exports. If node/cjs in play,
@@ -888,12 +881,30 @@ var requirejs, require, define;
888881 }
889882
890883 if ( err ) {
891- err . requireMap = this . map ;
892- err . requireModules = this . map . isDefine ? [ this . map . id ] : null ;
893- err . requireType = this . map . isDefine ? 'define' : 'require' ;
894- return onError ( ( this . error = err ) ) ;
884+ // If there is an error listener, favor passing
885+ // to that instead of throwing an error. However,
886+ // only do it for define()'d modules. require
887+ // errbacks should not be called for failures in
888+ // their callbacks (#699). However if a global
889+ // onError is set, use that.
890+ if ( ( this . events . error && this . map . isDefine ) ||
891+ req . onError !== defaultOnError ) {
892+ err . requireMap = this . map ;
893+ err . requireModules = this . map . isDefine ? [ this . map . id ] : null ;
894+ err . requireType = this . map . isDefine ? 'define' : 'require' ;
895+ return onError ( ( this . error = err ) ) ;
896+ } else if ( typeof console !== 'undefined' &&
897+ console . error ) {
898+ // Log the error for debugging. If promises could be
899+ // used, this would be different, but making do.
900+ console . error ( err ) ;
901+ } else {
902+ // Do not want to completely lose the error. While this
903+ // will mess up processing and lead to similar results
904+ // as bug 1440, it at least surfaces the error.
905+ req . onError ( err ) ;
906+ }
895907 }
896-
897908 } else {
898909 //Just a literal value
899910 exports = factory ;
@@ -905,7 +916,11 @@ var requirejs, require, define;
905916 defined [ id ] = exports ;
906917
907918 if ( req . onResourceLoad ) {
908- req . onResourceLoad ( context , this . map , this . depMaps ) ;
919+ var resLoadMaps = [ ] ;
920+ each ( this . depMaps , function ( depMap ) {
921+ resLoadMaps . push ( depMap . normalizedMap || depMap ) ;
922+ } ) ;
923+ req . onResourceLoad ( context , this . map , resLoadMaps ) ;
909924 }
910925 }
911926
@@ -964,6 +979,7 @@ var requirejs, require, define;
964979 this . map . parentMap ) ;
965980 on ( normalizedMap ,
966981 'defined' , bind ( this , function ( value ) {
982+ this . map . normalizedMap = normalizedMap ;
967983 this . init ( [ ] , function ( ) { return value ; } , null , {
968984 enabled : true ,
969985 ignore : true
@@ -1244,6 +1260,7 @@ var requirejs, require, define;
12441260 callGetModule ( args ) ;
12451261 }
12461262 }
1263+ context . defQueueMap = { } ;
12471264 }
12481265
12491266 context = {
@@ -1253,6 +1270,7 @@ var requirejs, require, define;
12531270 defined : defined ,
12541271 urlFetched : urlFetched ,
12551272 defQueue : defQueue ,
1273+ defQueueMap : { } ,
12561274 Module : Module ,
12571275 makeModuleMap : makeModuleMap ,
12581276 nextTick : req . nextTick ,
@@ -1502,6 +1520,7 @@ var requirejs, require, define;
15021520 defQueue . splice ( i , 1 ) ;
15031521 }
15041522 } ) ;
1523+ delete context . defQueueMap [ id ] ;
15051524
15061525 if ( mod ) {
15071526 //Hold on to listeners in case the
@@ -1563,6 +1582,7 @@ var requirejs, require, define;
15631582
15641583 callGetModule ( args ) ;
15651584 }
1585+ context . defQueueMap = { } ;
15661586
15671587 //Do this after the cycle of callGetModule in case the result
15681588 //of those calls/init calls changes the registry.
@@ -1698,7 +1718,21 @@ var requirejs, require, define;
16981718 onScriptError : function ( evt ) {
16991719 var data = getScriptData ( evt ) ;
17001720 if ( ! hasPathFallback ( data . id ) ) {
1701- return onError ( makeError ( 'scripterror' , 'Script error for: ' + data . id , evt , [ data . id ] ) ) ;
1721+ var parents = [ ] ;
1722+ eachProp ( registry , function ( value , key ) {
1723+ if ( key . indexOf ( '_@r' ) !== 0 ) {
1724+ each ( value . depMaps , function ( depMap ) {
1725+ if ( depMap . id === data . id ) {
1726+ parents . push ( key ) ;
1727+ }
1728+ return true ;
1729+ } ) ;
1730+ }
1731+ } ) ;
1732+ return onError ( makeError ( 'scripterror' , 'Script error for "' + data . id +
1733+ ( parents . length ?
1734+ '", needed by: ' + parents . join ( ', ' ) :
1735+ '"' ) , evt , [ data . id ] ) ) ;
17021736 }
17031737 }
17041738 } ;
@@ -1925,9 +1959,9 @@ var requirejs, require, define;
19251959 //In a web worker, use importScripts. This is not a very
19261960 //efficient use of importScripts, importScripts will block until
19271961 //its script is downloaded and evaluated. However, if web workers
1928- //are in play, the expectation that a build has been done so that
1929- //only one script needs to be loaded anyway. This may need to be
1930- //reevaluated if other use cases become common.
1962+ //are in play, the expectation is that a build has been done so
1963+ //that only one script needs to be loaded anyway. This may need
1964+ //to be reevaluated if other use cases become common.
19311965 importScripts ( url ) ;
19321966
19331967 //Account for anonymous modules
@@ -2067,7 +2101,12 @@ var requirejs, require, define;
20672101 //where the module name is not known until the script onload event
20682102 //occurs. If no context, use the global queue, and get it processed
20692103 //in the onscript load callback.
2070- ( context ? context . defQueue : globalDefQueue ) . push ( [ name , deps , callback ] ) ;
2104+ if ( context ) {
2105+ context . defQueue . push ( [ name , deps , callback ] ) ;
2106+ context . defQueueMap [ name ] = true ;
2107+ } else {
2108+ globalDefQueue . push ( [ name , deps , callback ] ) ;
2109+ }
20712110 } ;
20722111
20732112 define . amd = {
0 commit comments