43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
|
/*
|
||
|
SystemJS AMD Format
|
||
|
*/
|
||
|
(function() {
|
||
|
// AMD Module Format Detection RegEx
|
||
|
// define([.., .., ..], ...)
|
||
|
// define(varName); || define(function(require, exports) {}); || define({})
|
||
|
var amdRegEx = /(?:^\uFEFF?|[^$_a-zA-Z\xA0-\uFFFF.])define\s*\(\s*("[^"]+"\s*,\s*|'[^']+'\s*,\s*)?\s*(\[(\s*(("[^"]+"|'[^']+')\s*,|\/\/.*\r?\n|\/\*(.|\s)*?\*\/))*(\s*("[^"]+"|'[^']+')\s*,?)?(\s*(\/\/.*\r?\n|\/\*(.|\s)*?\*\/))*\s*\]|function\s*|{|[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*\))/;
|
||
|
|
||
|
hook('instantiate', function(instantiate) {
|
||
|
return function(load) {
|
||
|
var loader = this;
|
||
|
|
||
|
if (load.metadata.format == 'amd' || !load.metadata.format && load.source.match(amdRegEx)) {
|
||
|
load.metadata.format = 'amd';
|
||
|
|
||
|
if (!loader.builder && loader.execute !== false) {
|
||
|
var curDefine = __global.define;
|
||
|
__global.define = this.amdDefine;
|
||
|
|
||
|
try {
|
||
|
__exec.call(loader, load);
|
||
|
}
|
||
|
finally {
|
||
|
__global.define = curDefine;
|
||
|
}
|
||
|
|
||
|
if (!load.metadata.entry && !load.metadata.bundle)
|
||
|
throw new TypeError('AMD module ' + load.name + ' did not define');
|
||
|
}
|
||
|
else {
|
||
|
load.metadata.execute = function() {
|
||
|
return load.metadata.builderExecute.apply(this, arguments);
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return instantiate.call(loader, load);
|
||
|
};
|
||
|
});
|
||
|
|
||
|
})();
|