require-bro
Advanced tools
+32
-13
@@ -28,3 +28,2 @@ "use strict"; | ||
| var dependencies=['require']; | ||
| var createdModule; | ||
| if(argPos<arguments.length && typeof arguments[argPos] === "string"){ | ||
@@ -45,15 +44,10 @@ name=arguments[argPos]; | ||
| var factory=arguments[argPos]; | ||
| var exports={}; | ||
| createdModule = factory.apply(window, dependencies.map(function(moduleName){ | ||
| if(moduleName==='require'){ | ||
| return requireBro; | ||
| } | ||
| if(moduleName==='exports'){ | ||
| return exports || module.exports; | ||
| } | ||
| return requireBro(moduleName) | ||
| })); | ||
| if(esmLoaded){ | ||
| runFactory(name, dependencies, factory); | ||
| }else{ | ||
| pendingFactories.push({name:name, deps:dependencies, factory:factory}); | ||
| } | ||
| argPos++; | ||
| }else if(argPos<arguments.length && arguments[argPos] instanceof Object){ | ||
| createdModule=arguments[argPos]; | ||
| window.requireBro.definedModules[name] = window[name] = arguments[argPos]; | ||
| argPos++; | ||
@@ -63,3 +57,2 @@ }else{ | ||
| } | ||
| window.requireBro.definedModules[name] = window[name] = createdModule === undefined ? exports : createdModule; | ||
| } | ||
@@ -109,3 +102,29 @@ window.define.amd={poweredBy:'require-bro'}; | ||
| window.requireBro.definedModules = {}; | ||
| var pendingFactories = []; | ||
| var esmLoaded = false; | ||
| function runFactory(name, deps, factory){ | ||
| var exports={}; | ||
| var createdModule = factory.apply(window, deps.map(function(moduleName){ | ||
| if(moduleName==='require'){ | ||
| return requireBro; | ||
| } | ||
| if(moduleName==='exports'){ | ||
| return exports || module.exports; | ||
| } | ||
| return requireBro(moduleName) | ||
| })); | ||
| window.requireBro.definedModules[name] = window[name] = createdModule === undefined ? exports : createdModule; | ||
| } | ||
| window.requireBro.bootstrap = async function bootstrap(esmModules) { | ||
| await Promise.all(esmModules.map(async function(spec){ | ||
| var mod = await import(spec.url); | ||
| window.requireBro.definedModules[spec.name] = mod; | ||
| })); | ||
| esmLoaded = true; | ||
| while (pendingFactories.length > 0) { | ||
| var entry = pendingFactories.shift(); | ||
| runFactory(entry.name, entry.deps, entry.factory); | ||
| } | ||
| }; | ||
| window.require = window.requireBro; | ||
| })(); |
+2
-2
| { | ||
| "name": "require-bro", | ||
| "description": "require for browsers", | ||
| "version": "0.3.4", | ||
| "version": "3.0.0-beta.1", | ||
| "files": [ | ||
@@ -38,3 +38,3 @@ "lib" | ||
| "test-h": "node server/pdemo-server.js --use-casper --coverage --hold", | ||
| "start": "node server/pdemo-server.js" | ||
| "start": "node server/pdemo-server.mjs" | ||
| }, | ||
@@ -41,0 +41,0 @@ "qa-control": { |
102672
0.73%2674
0.72%