Skip to content
This repository was archived by the owner on Mar 23, 2024. It is now read-only.

Commit 663dd3b

Browse files
committed
Update require.js and r.js to 2.1.22
1 parent afe13fd commit 663dd3b

File tree

1 file changed

+73
-34
lines changed

1 file changed

+73
-34
lines changed

vendor/assets/javascripts/require.js

Lines changed: 73 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
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*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,
1818
jsSuffixRegExp = /\.js$/,
@@ -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

Comments
 (0)