/
require.js
129 lines (94 loc) · 2.95 KB
/
require.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/*
* require.js: Crosstalk require implementation
*
* (C) 2012 Crosstalk Systems Inc.
*/
var assert = require( 'assert' ),
stdjson = require( 'stdjson' )();
//
// ### function constructRequire ( options )
// #### @options {object} options to use when constructing crosstalk require
// {
// config : <config>,
// wrapHttpRequest : <wrapHttpRequest>,
// wrapper : <wrapper>,
// workerName : <workerName>
// }
// Constructs crosstalk implementation of require
//
var constructRequire = function constructRequire ( options ) {
return function _require ( _module ) {
_module = _module && _module.toLowerCase();
switch ( _module ) {
case 'assert':
return require( 'assert' );
case 'async':
return require( 'async' );
case 'clone':
return require( './clone' );
case 'config':
return options.config;
case 'crypto':
return require( 'crypto' );
case 'data2xml':
return require( 'data2xml' );
case 'dateformat':
return require( 'dateformat' );
case 'env':
return options.wrapper.env;
case 'http':
var http = require( 'http' );
return {
STATUS_CODES : http.STATUS_CODES,
get : http.get,
request : options.wrapHttpRequest( options.wrapper, 'http' ),
Router : require( 'director' ).http.Router
};
case 'https':
var https = require( 'https' );
return {
STATUS_CODES : https.STATUS_CODES,
get : https.get,
request : options.wrapHttpRequest( options.wrapper, 'https' ),
Router : require( 'director' ).http.Router
};
case 'inspect':
return require( 'util' ).inspect;
case 'logger':
var logger = {};
[ "debug", "log", "info", "warn", "error" ].forEach(
function ( method ) {
logger[ method ] = function () {
var _args = [],
_arguments = arguments;
Object.keys( _arguments ).forEach( function ( key ) {
_args.push( _arguments[ key ] );
});
stdjson[ method ]( _args.join( ' ' ), {
workerName : options.workerName
});
}; // logger[ method ]
}); // forEach
return logger;
case 'multipart':
return {
parser : require( 'multipartser' )
};
case 'querystring':
return require( 'querystring' );
case 'semver':
return require( 'semver' );
case 'underscore':
return require( 'underscore' );
case 'url':
return require( 'url' );
case 'uuid':
return require( 'prefixed-uuid' );
case 'xml2js':
return require( 'xml2js' );
default:
throw new Error( "module " + _module + " not available" );
} // switch ( _module )
}; // return function _require ( _module )
}; // constructRequire
module.exports = constructRequire;