You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
3.1 KiB
106 lines
3.1 KiB
(function(){function errMsg(errCode, msg) { |
|
return (msg || "") + " (SystemJS Error#" + errCode + " " + "https://git.io/JvFET#" + errCode + ")"; |
|
}/* |
|
* Support for AMD loading |
|
*/ |
|
(function (global) { |
|
function unsupportedRequire () { |
|
throw Error(errMsg(5, 'AMD require not supported.')); |
|
} |
|
|
|
var requireExportsModule = ['require', 'exports', 'module']; |
|
|
|
function createAMDRegister (amdDefineDeps, amdDefineExec) { |
|
var exports = {}; |
|
var module = { exports: exports }; |
|
var depModules = []; |
|
var setters = []; |
|
var splice = 0; |
|
for (var i = 0; i < amdDefineDeps.length; i++) { |
|
var id = amdDefineDeps[i]; |
|
var index = setters.length; |
|
if (id === 'require') { |
|
depModules[i] = unsupportedRequire; |
|
splice++; |
|
} |
|
else if (id === 'module') { |
|
depModules[i] = module; |
|
splice++; |
|
} |
|
else if (id === 'exports') { |
|
depModules[i] = exports; |
|
splice++; |
|
} |
|
else { |
|
createSetter(i); |
|
} |
|
if (splice) |
|
amdDefineDeps[index] = id; |
|
} |
|
if (splice) |
|
amdDefineDeps.length -= splice; |
|
var amdExec = amdDefineExec; |
|
return [amdDefineDeps, function (_export) { |
|
_export({ default: exports, __useDefault: true }); |
|
return { |
|
setters: setters, |
|
execute: function () { |
|
var amdResult = amdExec.apply(exports, depModules); |
|
if (amdResult !== undefined) |
|
module.exports = amdResult; |
|
_export(module.exports); |
|
_export('default', module.exports); |
|
} |
|
}; |
|
}]; |
|
|
|
// needed to avoid iteration scope issues |
|
function createSetter(idx) { |
|
setters.push(function (ns) { |
|
depModules[idx] = ns.__useDefault ? ns.default : ns; |
|
}); |
|
} |
|
} |
|
|
|
global.define = function (arg1, arg2, arg3) { |
|
var isNamedRegister = typeof arg1 === 'string'; |
|
var name = isNamedRegister ? arg1 : null; |
|
var depArg = isNamedRegister ? arg2 : arg1; |
|
var execArg = isNamedRegister ? arg3 : arg2; |
|
|
|
// The System.register(deps, exec) arguments |
|
var deps, exec; |
|
|
|
// define([], function () {}) |
|
if (Array.isArray(depArg)) { |
|
deps = depArg; |
|
exec = execArg; |
|
} |
|
// define({}) |
|
else if (typeof depArg === 'object') { |
|
deps = []; |
|
exec = function () { return depArg }; |
|
} |
|
// define(function () {}) |
|
else if (typeof depArg === 'function') { |
|
deps = requireExportsModule; |
|
exec = depArg; |
|
} else { |
|
throw Error(errMsg(9, 'Invalid call to AMD define()')); |
|
} |
|
|
|
var amdRegister = createAMDRegister(deps, exec); |
|
|
|
if (isNamedRegister) { |
|
if (System.registerRegistry) { |
|
System.registerRegistry[name] = amdRegister; |
|
System.register(name, amdRegister[0], amdRegister[1]); |
|
} else |
|
console.warn(errMsg('W6', 'Include named-register.js for full named define support')); |
|
// TODO: create new warning number and documentation for using named define without named-register extra |
|
System.register(amdRegister[0], amdRegister[1]); |
|
} else |
|
System.register(amdRegister[0], amdRegister[1]); |
|
}; |
|
global.define.amd = {}; |
|
})(typeof self !== 'undefined' ? self : global);})(); |