UNPKG

system

Version:

Flexible module and resource system

63 lines (56 loc) 1.86 kB
/*eslint semi:[0], no-native-reassign:[0]*/ global = this; (function (modules) { // Bundle allows the run-time to extract already-loaded modules from the // boot bundle. var bundle = {}; var main; // Unpack module tuples into module objects. for (var i = 0; i < modules.length; i++) { var module = modules[i]; module = modules[i] = new Module( module[0], module[1], module[2], module[3], module[4] ); bundle[module.filename] = module; } function Module(id, dirname, basename, dependencies, factory) { this.id = id; this.dirname = dirname; this.filename = dirname + "/" + basename; // Dependency map and factory are used to instantiate bundled modules. this.dependencies = dependencies; this.factory = factory; } Module.prototype._require = function () { var module = this; if (module.exports === void 0) { module.exports = {}; var require = function (id) { var index = module.dependencies[id]; var dependency = modules[index]; if (!dependency) throw new Error("Bundle is missing a dependency: " + id); return dependency._require(); }; require.main = main; module.exports = module.factory( require, module.exports, module, module.filename, module.dirname ) || module.exports; } return module.exports; }; // Communicate the bundle to all bundled modules Module.prototype.modules = bundle; return function require(filename) { main = bundle[filename]; main._require(); } })