1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 | window.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 |
|
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 | }();
|