1
1
/** 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.
3
3
* Available via the MIT or new BSD license.
4
4
* see: http://github.com/jrburke/requirejs for details
5
5
*/
@@ -12,7 +12,7 @@ var requirejs, require, define;
12
12
( function ( global ) {
13
13
var req , s , head , baseElement , dataMain , src ,
14
14
interactiveScript , currentlyAddingScript , mainScript , subPath ,
15
- version = '2.1.19 ' ,
15
+ version = '2.1.22 ' ,
16
16
commentRegExp = / ( \/ \* ( [ \s \S ] * ?) \* \/ | ( [ ^ : ] | ^ ) \/ \/ ( .* ) $ ) / mg,
17
17
cjsRequireRegExp = / [ ^ . ] \s * r e q u i r e \s * \( \s * [ " ' ] ( [ ^ ' " \s ] + ) [ " ' ] \s * \) / g,
18
18
jsSuffixRegExp = / \. j s $ / ,
@@ -21,7 +21,6 @@ var requirejs, require, define;
21
21
ostring = op . toString ,
22
22
hasOwn = op . hasOwnProperty ,
23
23
ap = Array . prototype ,
24
- apsp = ap . splice ,
25
24
isBrowser = ! ! ( typeof window !== 'undefined' && typeof navigator !== 'undefined' && window . document ) ,
26
25
isWebWorker = ! isBrowser && typeof importScripts !== 'undefined' ,
27
26
//PS3 indicates loaded and complete, but need to wait for complete
@@ -554,11 +553,13 @@ var requirejs, require, define;
554
553
function takeGlobalQueue ( ) {
555
554
//Push all the globalDefQueue items into the context's defQueue
556
555
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
+ } ) ;
562
563
globalDefQueue = [ ] ;
563
564
}
564
565
}
@@ -845,7 +846,10 @@ var requirejs, require, define;
845
846
factory = this . factory ;
846
847
847
848
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
+ }
849
853
} else if ( this . error ) {
850
854
this . emit ( 'error' , this . error ) ;
851
855
} else if ( ! this . defining ) {
@@ -857,21 +861,10 @@ var requirejs, require, define;
857
861
858
862
if ( this . depCount < 1 && ! this . defined ) {
859
863
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 {
874
865
exports = context . execCb ( id , factory , depExports , exports ) ;
866
+ } catch ( e ) {
867
+ err = e ;
875
868
}
876
869
877
870
// Favor return value over exports. If node/cjs in play,
@@ -888,12 +881,30 @@ var requirejs, require, define;
888
881
}
889
882
890
883
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
+ }
895
907
}
896
-
897
908
} else {
898
909
//Just a literal value
899
910
exports = factory ;
@@ -905,7 +916,11 @@ var requirejs, require, define;
905
916
defined [ id ] = exports ;
906
917
907
918
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 ) ;
909
924
}
910
925
}
911
926
@@ -964,6 +979,7 @@ var requirejs, require, define;
964
979
this . map . parentMap ) ;
965
980
on ( normalizedMap ,
966
981
'defined' , bind ( this , function ( value ) {
982
+ this . map . normalizedMap = normalizedMap ;
967
983
this . init ( [ ] , function ( ) { return value ; } , null , {
968
984
enabled : true ,
969
985
ignore : true
@@ -1244,6 +1260,7 @@ var requirejs, require, define;
1244
1260
callGetModule ( args ) ;
1245
1261
}
1246
1262
}
1263
+ context . defQueueMap = { } ;
1247
1264
}
1248
1265
1249
1266
context = {
@@ -1253,6 +1270,7 @@ var requirejs, require, define;
1253
1270
defined : defined ,
1254
1271
urlFetched : urlFetched ,
1255
1272
defQueue : defQueue ,
1273
+ defQueueMap : { } ,
1256
1274
Module : Module ,
1257
1275
makeModuleMap : makeModuleMap ,
1258
1276
nextTick : req . nextTick ,
@@ -1502,6 +1520,7 @@ var requirejs, require, define;
1502
1520
defQueue . splice ( i , 1 ) ;
1503
1521
}
1504
1522
} ) ;
1523
+ delete context . defQueueMap [ id ] ;
1505
1524
1506
1525
if ( mod ) {
1507
1526
//Hold on to listeners in case the
@@ -1563,6 +1582,7 @@ var requirejs, require, define;
1563
1582
1564
1583
callGetModule ( args ) ;
1565
1584
}
1585
+ context . defQueueMap = { } ;
1566
1586
1567
1587
//Do this after the cycle of callGetModule in case the result
1568
1588
//of those calls/init calls changes the registry.
@@ -1698,7 +1718,21 @@ var requirejs, require, define;
1698
1718
onScriptError : function ( evt ) {
1699
1719
var data = getScriptData ( evt ) ;
1700
1720
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 ] ) ) ;
1702
1736
}
1703
1737
}
1704
1738
} ;
@@ -1925,9 +1959,9 @@ var requirejs, require, define;
1925
1959
//In a web worker, use importScripts. This is not a very
1926
1960
//efficient use of importScripts, importScripts will block until
1927
1961
//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.
1931
1965
importScripts ( url ) ;
1932
1966
1933
1967
//Account for anonymous modules
@@ -2067,7 +2101,12 @@ var requirejs, require, define;
2067
2101
//where the module name is not known until the script onload event
2068
2102
//occurs. If no context, use the global queue, and get it processed
2069
2103
//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
+ }
2071
2110
} ;
2072
2111
2073
2112
define . amd = {
0 commit comments