UNPKG

1.57 kBJavaScriptView Raw
1/**********************************************************************
2 require( 'require' )
3 -----------------------------------------------------------------------
4 @example
5
6 var Path = require("node://path"); // Only in NodeJS/NW.js environment.
7 var Button = require("tfw.button");
8
9 **********************************************************************/
10
11window.require = function() {
12 var mocks = {};
13 var modules = {};
14 var definitions = {};
15 var nodejs_require = typeof window.require === 'function' ? window.require : null;
16
17 var f = function(id, body) {
18 var mock = mocks[id];
19 if( mock ) return mock;
20
21 if( id.substr( 0, 7 ) == 'node://' ) {
22 // Calling for a NodeJS module.
23 if( !nodejs_require ) {
24 throw Error( "[require] NodeJS is not available to load module `" + id + "`!" );
25 }
26 return nodejs_require( id.substr( 7 ) );
27 }
28
29 if( typeof body === 'function' ) {
30 definitions[id] = body;
31 return;
32 }
33 var mod;
34 body = definitions[id];
35 if (typeof body === 'undefined') {
36 var err = new Error("Required module is missing: " + id);
37 console.error(err.stack);
38 throw err;
39 }
40 mod = modules[id];
41 if (typeof mod === 'undefined') {
42 mod = {exports: {}};
43 var exports = mod.exports;
44 body(f, mod, exports);
45 modules[id] = mod.exports;
46 mod = mod.exports;
47 }
48 return mod;
49 };
50
51 f.mock = function( moduleName, module ) {
52 mocks[moduleName] = module;
53 };
54
55 return f;
56}();