UNPKG

2.85 kBJavaScriptView Raw
1function(exports, global, doEval){ // jshint ignore:line
2 var origDefine = global.define;
3
4 var get = function(name){
5 var parts = name.split("."),
6 cur = global,
7 i;
8 for(i = 0 ; i < parts.length; i++){
9 if(!cur) {
10 break;
11 }
12 cur = cur[parts[i]];
13 }
14 return cur;
15 };
16 var set = function(name, val){
17 var parts = name.split("."),
18 cur = global,
19 i, part, next;
20 for(i = 0; i < parts.length - 1; i++) {
21 part = parts[i];
22 next = cur[part];
23 if(!next) {
24 next = cur[part] = {};
25 }
26 cur = next;
27 }
28 part = parts[parts.length - 1];
29 cur[part] = val;
30 };
31 var useDefault = function(mod){
32 if(!mod || !mod.__esModule) return false;
33 var esProps = { __esModule: true, "default": true };
34 for(var p in mod) {
35 if(!esProps[p]) return false;
36 }
37 return true;
38 };
39
40 var hasCjsDependencies = function(deps) {
41 return (
42 deps[0] === "require" &&
43 deps[1] === "exports" &&
44 deps[2] === "module"
45 );
46 };
47
48 var modules = (global.define && global.define.modules) ||
49 (global._define && global._define.modules) || {};
50 var ourDefine = global.define = function(moduleName, deps, callback){
51 var module;
52 if(typeof deps === "function") {
53 callback = deps;
54 deps = [];
55 }
56 var args = [],
57 i;
58 for(i =0; i < deps.length; i++) {
59 args.push( exports[deps[i]] ? get(exports[deps[i]]) : ( modules[deps[i]] || get(deps[i]) ) );
60 }
61 // CJS has no dependencies but 3 callback arguments
62 if (hasCjsDependencies(deps) || (!deps.length && callback.length)) {
63 module = { exports: {} };
64 args[0] = function(name) {
65 return exports[name] ? get(exports[name]) : modules[name];
66 };
67 args[1] = module.exports;
68 args[2] = module;
69 }
70 // Babel uses the exports and module object.
71 else if(!args[0] && deps[0] === "exports") {
72 module = { exports: {} };
73 args[0] = module.exports;
74 if(deps[1] === "module") {
75 args[1] = module;
76 }
77 } else if(!args[0] && deps[0] === "module") {
78 args[0] = { id: moduleName };
79 }
80
81 global.define = origDefine;
82 var result = callback ? callback.apply(null, args) : undefined;
83 global.define = ourDefine;
84
85 // Favor CJS module.exports over the return value
86 result = module && module.exports ? module.exports : result;
87 modules[moduleName] = result;
88
89 // Set global exports
90 var globalExport = exports[moduleName];
91 if(globalExport && !get(globalExport)) {
92 if(useDefault(result)) {
93 result = result["default"];
94 }
95 set(globalExport, result);
96 }
97 };
98 global.define.orig = origDefine;
99 global.define.modules = modules;
100 global.define.amd = true;
101 ourDefine("@loader", [], function(){
102 // shim for @@global-helpers
103 var noop = function(){};
104 return {
105 get: function(){
106 return { prepareGlobal: noop, retrieveGlobal: noop };
107 },
108 global: global,
109 __exec: function(__load){
110 doEval(__load.source, global);
111 }
112 };
113 });
114}