let require;
let define;
(function() {
const modules = new Map();
function createOrLoadModule(name) {
let m = modules.get(name);
if (!m) {
m = { name, exports: {} };
modules.set(name, m);
}
return m;
}
require = name => {
return createOrLoadModule(name).exports;
};
define = (name, deps, factory) => {
const currentModule = createOrLoadModule(name);
const localExports = currentModule.exports;
const args = deps.map(dep => {
if (dep === "require") {
return require;
} else if (dep === "exports") {
return localExports;
} else {
const depModule = createOrLoadModule(dep);
return depModule.exports;
}
});
factory(...args);
};
})();