amd.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. (function () {
  2. function errMsg(errCode, msg) {
  3. return (msg || "") + " (SystemJS Error#" + errCode + " " + "https://github.com/systemjs/systemjs/blob/main/docs/errors.md#" + errCode + ")";
  4. }
  5. /*
  6. * Support for AMD loading
  7. */
  8. (function (global) {
  9. function unsupportedRequire () {
  10. throw Error(errMsg(5, 'AMD require not supported.'));
  11. }
  12. var requireExportsModule = ['require', 'exports', 'module'];
  13. function createAMDRegister (amdDefineDeps, amdDefineExec) {
  14. var exports = {};
  15. var module = { exports: exports };
  16. var depModules = [];
  17. var setters = [];
  18. var splice = 0;
  19. for (var i = 0; i < amdDefineDeps.length; i++) {
  20. var id = amdDefineDeps[i];
  21. var index = setters.length;
  22. if (id === 'require') {
  23. depModules[i] = unsupportedRequire;
  24. splice++;
  25. }
  26. else if (id === 'module') {
  27. depModules[i] = module;
  28. splice++;
  29. }
  30. else if (id === 'exports') {
  31. depModules[i] = exports;
  32. splice++;
  33. }
  34. else {
  35. createSetter(i);
  36. }
  37. if (splice)
  38. amdDefineDeps[index] = id;
  39. }
  40. if (splice)
  41. amdDefineDeps.length -= splice;
  42. var amdExec = amdDefineExec;
  43. return [amdDefineDeps, function (_export, _context) {
  44. _export({ default: exports, __useDefault: true });
  45. return {
  46. setters: setters,
  47. execute: function () {
  48. module.uri = _context.meta.url;
  49. var amdResult = amdExec.apply(exports, depModules);
  50. if (amdResult !== undefined)
  51. module.exports = amdResult;
  52. _export(module.exports);
  53. _export('default', module.exports);
  54. }
  55. };
  56. }];
  57. // needed to avoid iteration scope issues
  58. function createSetter(idx) {
  59. setters.push(function (ns) {
  60. depModules[idx] = ns.__useDefault ? ns.default : ns;
  61. });
  62. }
  63. }
  64. global.define = function (arg1, arg2, arg3) {
  65. var isNamedRegister = typeof arg1 === 'string';
  66. var name = isNamedRegister ? arg1 : null;
  67. var depArg = isNamedRegister ? arg2 : arg1;
  68. var execArg = isNamedRegister ? arg3 : arg2;
  69. // The System.register(deps, exec) arguments
  70. var deps, exec;
  71. // define([], function () {})
  72. if (Array.isArray(depArg)) {
  73. deps = depArg;
  74. exec = execArg;
  75. }
  76. // define({})
  77. else if (typeof depArg === 'object') {
  78. deps = [];
  79. exec = function () { return depArg };
  80. }
  81. // define(function () {})
  82. else if (typeof depArg === 'function') {
  83. deps = requireExportsModule;
  84. exec = depArg;
  85. } else {
  86. throw Error(errMsg(9, 'Invalid call to AMD define()'));
  87. }
  88. var amdRegister = createAMDRegister(deps, exec);
  89. if (isNamedRegister) {
  90. if (System.registerRegistry) {
  91. System.registerRegistry[name] = amdRegister;
  92. System.register(name, amdRegister[0], amdRegister[1]);
  93. } else
  94. console.warn(errMsg('W6', 'Include named-register.js for full named define support'));
  95. // TODO: create new warning number and documentation for using named define without named-register extra
  96. System.register(amdRegister[0], amdRegister[1]);
  97. } else
  98. System.register(amdRegister[0], amdRegister[1]);
  99. };
  100. global.define.amd = {};
  101. })(typeof self !== 'undefined' ? self : global);
  102. })();