http-proxy-middleware 0.17.1 → 0.17.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.md +22 -8
- package/lib/handlers.js +13 -1
- package/lib/index.js +17 -6
- package/lib/logger.js +2 -2
- package/package.json +13 -9
- package/.editorconfig +0 -18
- package/.jscsrc +0 -8
- package/.npmignore +0 -2
- package/.travis.yml +0 -16
- package/CONTRIBUTING.md +0 -61
- package/ISSUE_TEMPLATE.md +0 -21
- package/coverage/coverage.json +0 -1
- package/coverage/lcov-report/base.css +0 -213
- package/coverage/lcov-report/http-proxy-middleware/index.html +0 -93
- package/coverage/lcov-report/http-proxy-middleware/index.js.html +0 -80
- package/coverage/lcov-report/http-proxy-middleware/lib/config-factory.js.html +0 -443
- package/coverage/lcov-report/http-proxy-middleware/lib/context-matcher.js.html +0 -347
- package/coverage/lcov-report/http-proxy-middleware/lib/handlers.js.html +0 -251
- package/coverage/lcov-report/http-proxy-middleware/lib/index.html +0 -171
- package/coverage/lcov-report/http-proxy-middleware/lib/index.js.html +0 -437
- package/coverage/lcov-report/http-proxy-middleware/lib/logger.js.html +0 -539
- package/coverage/lcov-report/http-proxy-middleware/lib/path-rewriter.js.html +0 -281
- package/coverage/lcov-report/http-proxy-middleware/lib/router.js.html +0 -224
- package/coverage/lcov-report/index.html +0 -106
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -1
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -158
- package/coverage/lcov.info +0 -647
- package/examples/README.md +0 -33
- package/examples/browser-sync/index.js +0 -29
- package/examples/connect/index.js +0 -29
- package/examples/express/index.js +0 -28
- package/examples/websocket/index.html +0 -96
- package/examples/websocket/index.js +0 -41
- package/recipes/README.md +0 -110
- package/recipes/basic.md +0 -32
- package/recipes/context-matching.md +0 -99
- package/recipes/corporate-proxy.md +0 -21
- package/recipes/delay.md +0 -37
- package/recipes/logLevel.md +0 -40
- package/recipes/logProvider.md +0 -77
- package/recipes/modify-post.md +0 -74
- package/recipes/pathRewrite.md +0 -93
- package/recipes/proxy-events.md +0 -74
- package/recipes/router.md +0 -83
- package/recipes/servers.md +0 -252
- package/recipes/shorthand.md +0 -63
- package/recipes/virtual-hosts.md +0 -18
- package/recipes/websocket.md +0 -41
|
@@ -1,347 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<title>Code coverage report for http-proxy-middleware\lib\context-matcher.js</title>
|
|
5
|
-
<meta charset="utf-8" />
|
|
6
|
-
<link rel="stylesheet" href="../../prettify.css" />
|
|
7
|
-
<link rel="stylesheet" href="../../base.css" />
|
|
8
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
9
|
-
<style type='text/css'>
|
|
10
|
-
.coverage-summary .sorter {
|
|
11
|
-
background-image: url(../../sort-arrow-sprite.png);
|
|
12
|
-
}
|
|
13
|
-
</style>
|
|
14
|
-
</head>
|
|
15
|
-
<body>
|
|
16
|
-
<div class='wrapper'>
|
|
17
|
-
<div class='pad1'>
|
|
18
|
-
<h1>
|
|
19
|
-
<a href="../../index.html">all files</a> / <a href="index.html">http-proxy-middleware/lib/</a> context-matcher.js
|
|
20
|
-
</h1>
|
|
21
|
-
<div class='clearfix'>
|
|
22
|
-
<div class='fl pad1y space-right2'>
|
|
23
|
-
<span class="strong">100% </span>
|
|
24
|
-
<span class="quiet">Statements</span>
|
|
25
|
-
<span class='fraction'>41/41</span>
|
|
26
|
-
</div>
|
|
27
|
-
<div class='fl pad1y space-right2'>
|
|
28
|
-
<span class="strong">100% </span>
|
|
29
|
-
<span class="quiet">Branches</span>
|
|
30
|
-
<span class='fraction'>20/20</span>
|
|
31
|
-
</div>
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">100% </span>
|
|
34
|
-
<span class="quiet">Functions</span>
|
|
35
|
-
<span class='fraction'>8/8</span>
|
|
36
|
-
</div>
|
|
37
|
-
<div class='fl pad1y space-right2'>
|
|
38
|
-
<span class="strong">100% </span>
|
|
39
|
-
<span class="quiet">Lines</span>
|
|
40
|
-
<span class='fraction'>41/41</span>
|
|
41
|
-
</div>
|
|
42
|
-
</div>
|
|
43
|
-
</div>
|
|
44
|
-
<div class='status-line high'></div>
|
|
45
|
-
<pre><table class="coverage">
|
|
46
|
-
<tr><td class="line-count quiet">1
|
|
47
|
-
2
|
|
48
|
-
3
|
|
49
|
-
4
|
|
50
|
-
5
|
|
51
|
-
6
|
|
52
|
-
7
|
|
53
|
-
8
|
|
54
|
-
9
|
|
55
|
-
10
|
|
56
|
-
11
|
|
57
|
-
12
|
|
58
|
-
13
|
|
59
|
-
14
|
|
60
|
-
15
|
|
61
|
-
16
|
|
62
|
-
17
|
|
63
|
-
18
|
|
64
|
-
19
|
|
65
|
-
20
|
|
66
|
-
21
|
|
67
|
-
22
|
|
68
|
-
23
|
|
69
|
-
24
|
|
70
|
-
25
|
|
71
|
-
26
|
|
72
|
-
27
|
|
73
|
-
28
|
|
74
|
-
29
|
|
75
|
-
30
|
|
76
|
-
31
|
|
77
|
-
32
|
|
78
|
-
33
|
|
79
|
-
34
|
|
80
|
-
35
|
|
81
|
-
36
|
|
82
|
-
37
|
|
83
|
-
38
|
|
84
|
-
39
|
|
85
|
-
40
|
|
86
|
-
41
|
|
87
|
-
42
|
|
88
|
-
43
|
|
89
|
-
44
|
|
90
|
-
45
|
|
91
|
-
46
|
|
92
|
-
47
|
|
93
|
-
48
|
|
94
|
-
49
|
|
95
|
-
50
|
|
96
|
-
51
|
|
97
|
-
52
|
|
98
|
-
53
|
|
99
|
-
54
|
|
100
|
-
55
|
|
101
|
-
56
|
|
102
|
-
57
|
|
103
|
-
58
|
|
104
|
-
59
|
|
105
|
-
60
|
|
106
|
-
61
|
|
107
|
-
62
|
|
108
|
-
63
|
|
109
|
-
64
|
|
110
|
-
65
|
|
111
|
-
66
|
|
112
|
-
67
|
|
113
|
-
68
|
|
114
|
-
69
|
|
115
|
-
70
|
|
116
|
-
71
|
|
117
|
-
72
|
|
118
|
-
73
|
|
119
|
-
74
|
|
120
|
-
75
|
|
121
|
-
76
|
|
122
|
-
77
|
|
123
|
-
78
|
|
124
|
-
79
|
|
125
|
-
80
|
|
126
|
-
81
|
|
127
|
-
82
|
|
128
|
-
83
|
|
129
|
-
84
|
|
130
|
-
85
|
|
131
|
-
86
|
|
132
|
-
87
|
|
133
|
-
88
|
|
134
|
-
89
|
|
135
|
-
90
|
|
136
|
-
91
|
|
137
|
-
92
|
|
138
|
-
93
|
|
139
|
-
94
|
|
140
|
-
95</td><td class="line-coverage quiet"><span class="cline-any cline-yes">1×</span>
|
|
141
|
-
<span class="cline-any cline-yes">1×</span>
|
|
142
|
-
<span class="cline-any cline-yes">1×</span>
|
|
143
|
-
<span class="cline-any cline-yes">1×</span>
|
|
144
|
-
<span class="cline-any cline-neutral"> </span>
|
|
145
|
-
<span class="cline-any cline-yes">1×</span>
|
|
146
|
-
<span class="cline-any cline-neutral"> </span>
|
|
147
|
-
<span class="cline-any cline-neutral"> </span>
|
|
148
|
-
<span class="cline-any cline-neutral"> </span>
|
|
149
|
-
<span class="cline-any cline-yes">1×</span>
|
|
150
|
-
<span class="cline-any cline-neutral"> </span>
|
|
151
|
-
<span class="cline-any cline-neutral"> </span>
|
|
152
|
-
<span class="cline-any cline-yes">106×</span>
|
|
153
|
-
<span class="cline-any cline-yes">38×</span>
|
|
154
|
-
<span class="cline-any cline-neutral"> </span>
|
|
155
|
-
<span class="cline-any cline-neutral"> </span>
|
|
156
|
-
<span class="cline-any cline-neutral"> </span>
|
|
157
|
-
<span class="cline-any cline-yes">68×</span>
|
|
158
|
-
<span class="cline-any cline-yes">32×</span>
|
|
159
|
-
<span class="cline-any cline-neutral"> </span>
|
|
160
|
-
<span class="cline-any cline-neutral"> </span>
|
|
161
|
-
<span class="cline-any cline-neutral"> </span>
|
|
162
|
-
<span class="cline-any cline-yes">36×</span>
|
|
163
|
-
<span class="cline-any cline-yes">22×</span>
|
|
164
|
-
<span class="cline-any cline-yes">8×</span>
|
|
165
|
-
<span class="cline-any cline-neutral"> </span>
|
|
166
|
-
<span class="cline-any cline-yes">14×</span>
|
|
167
|
-
<span class="cline-any cline-yes">13×</span>
|
|
168
|
-
<span class="cline-any cline-neutral"> </span>
|
|
169
|
-
<span class="cline-any cline-neutral"> </span>
|
|
170
|
-
<span class="cline-any cline-yes">1×</span>
|
|
171
|
-
<span class="cline-any cline-neutral"> </span>
|
|
172
|
-
<span class="cline-any cline-neutral"> </span>
|
|
173
|
-
<span class="cline-any cline-neutral"> </span>
|
|
174
|
-
<span class="cline-any cline-yes">14×</span>
|
|
175
|
-
<span class="cline-any cline-yes">10×</span>
|
|
176
|
-
<span class="cline-any cline-yes">10×</span>
|
|
177
|
-
<span class="cline-any cline-neutral"> </span>
|
|
178
|
-
<span class="cline-any cline-neutral"> </span>
|
|
179
|
-
<span class="cline-any cline-yes">4×</span>
|
|
180
|
-
<span class="cline-any cline-neutral"> </span>
|
|
181
|
-
<span class="cline-any cline-neutral"> </span>
|
|
182
|
-
<span class="cline-any cline-neutral"> </span>
|
|
183
|
-
<span class="cline-any cline-neutral"> </span>
|
|
184
|
-
<span class="cline-any cline-neutral"> </span>
|
|
185
|
-
<span class="cline-any cline-neutral"> </span>
|
|
186
|
-
<span class="cline-any cline-neutral"> </span>
|
|
187
|
-
<span class="cline-any cline-yes">1×</span>
|
|
188
|
-
<span class="cline-any cline-yes">49×</span>
|
|
189
|
-
<span class="cline-any cline-yes">49×</span>
|
|
190
|
-
<span class="cline-any cline-neutral"> </span>
|
|
191
|
-
<span class="cline-any cline-neutral"> </span>
|
|
192
|
-
<span class="cline-any cline-yes">1×</span>
|
|
193
|
-
<span class="cline-any cline-yes">45×</span>
|
|
194
|
-
<span class="cline-any cline-yes">45×</span>
|
|
195
|
-
<span class="cline-any cline-yes">45×</span>
|
|
196
|
-
<span class="cline-any cline-neutral"> </span>
|
|
197
|
-
<span class="cline-any cline-neutral"> </span>
|
|
198
|
-
<span class="cline-any cline-yes">1×</span>
|
|
199
|
-
<span class="cline-any cline-yes">13×</span>
|
|
200
|
-
<span class="cline-any cline-neutral"> </span>
|
|
201
|
-
<span class="cline-any cline-neutral"> </span>
|
|
202
|
-
<span class="cline-any cline-neutral"> </span>
|
|
203
|
-
<span class="cline-any cline-neutral"> </span>
|
|
204
|
-
<span class="cline-any cline-neutral"> </span>
|
|
205
|
-
<span class="cline-any cline-neutral"> </span>
|
|
206
|
-
<span class="cline-any cline-neutral"> </span>
|
|
207
|
-
<span class="cline-any cline-yes">1×</span>
|
|
208
|
-
<span class="cline-any cline-yes">8×</span>
|
|
209
|
-
<span class="cline-any cline-yes">11×</span>
|
|
210
|
-
<span class="cline-any cline-yes">11×</span>
|
|
211
|
-
<span class="cline-any cline-yes">4×</span>
|
|
212
|
-
<span class="cline-any cline-neutral"> </span>
|
|
213
|
-
<span class="cline-any cline-neutral"> </span>
|
|
214
|
-
<span class="cline-any cline-yes">4×</span>
|
|
215
|
-
<span class="cline-any cline-neutral"> </span>
|
|
216
|
-
<span class="cline-any cline-neutral"> </span>
|
|
217
|
-
<span class="cline-any cline-neutral"> </span>
|
|
218
|
-
<span class="cline-any cline-neutral"> </span>
|
|
219
|
-
<span class="cline-any cline-neutral"> </span>
|
|
220
|
-
<span class="cline-any cline-neutral"> </span>
|
|
221
|
-
<span class="cline-any cline-neutral"> </span>
|
|
222
|
-
<span class="cline-any cline-neutral"> </span>
|
|
223
|
-
<span class="cline-any cline-yes">1×</span>
|
|
224
|
-
<span class="cline-any cline-yes">104×</span>
|
|
225
|
-
<span class="cline-any cline-neutral"> </span>
|
|
226
|
-
<span class="cline-any cline-neutral"> </span>
|
|
227
|
-
<span class="cline-any cline-yes">1×</span>
|
|
228
|
-
<span class="cline-any cline-yes">133×</span>
|
|
229
|
-
<span class="cline-any cline-neutral"> </span>
|
|
230
|
-
<span class="cline-any cline-neutral"> </span>
|
|
231
|
-
<span class="cline-any cline-yes">1×</span>
|
|
232
|
-
<span class="cline-any cline-yes">95×</span>
|
|
233
|
-
<span class="cline-any cline-neutral"> </span>
|
|
234
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">var _ = require('lodash');
|
|
235
|
-
var url = require('url');
|
|
236
|
-
var isGlob = require('is-glob');
|
|
237
|
-
var micromatch = require('micromatch');
|
|
238
|
-
|
|
239
|
-
module.exports = {
|
|
240
|
-
match: matchContext
|
|
241
|
-
};
|
|
242
|
-
|
|
243
|
-
function matchContext(context, uri, req) {
|
|
244
|
-
|
|
245
|
-
// single path
|
|
246
|
-
if (isStringPath(context)) {
|
|
247
|
-
return matchSingleStringPath(context, uri);
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
// single glob path
|
|
251
|
-
if (isGlobPath(context)) {
|
|
252
|
-
return matchSingleGlobPath(context, uri);
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
// multi path
|
|
256
|
-
if (Array.isArray(context)) {
|
|
257
|
-
if (context.every(isStringPath)) {
|
|
258
|
-
return matchMultiPath(context, uri);
|
|
259
|
-
}
|
|
260
|
-
if (context.every(isGlobPath)) {
|
|
261
|
-
return matchMultiGlobPath(context, uri);
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
throw new Error('[HPM] Invalid context. Expecting something like: ["/api", "/ajax"] or ["/api/**", "!**.html"]');
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
// custom matching
|
|
268
|
-
if (_.isFunction(context)) {
|
|
269
|
-
var pathname = getUrlPathName(uri);
|
|
270
|
-
return context(pathname, req);
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
throw new Error('[HPM] Invalid context. Expecting something like: "/api" or ["/api", "/ajax"]');
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
/**
|
|
277
|
-
* @param {String} context '/api'
|
|
278
|
-
* @param {String} uri 'http://example.org/api/b/c/d.html'
|
|
279
|
-
* @return {Boolean}
|
|
280
|
-
*/
|
|
281
|
-
function matchSingleStringPath(context, uri) {
|
|
282
|
-
var pathname = getUrlPathName(uri);
|
|
283
|
-
return pathname.indexOf(context) === 0;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
function matchSingleGlobPath(pattern, uri) {
|
|
287
|
-
var pathname = getUrlPathName(uri);
|
|
288
|
-
var matches = micromatch(pathname, pattern);
|
|
289
|
-
return matches && (matches.length > 0);
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
function matchMultiGlobPath(patternList, uri) {
|
|
293
|
-
return matchSingleGlobPath(patternList, uri);
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
/**
|
|
297
|
-
* @param {String} context ['/api', '/ajax']
|
|
298
|
-
* @param {String} uri 'http://example.org/api/b/c/d.html'
|
|
299
|
-
* @return {Boolean}
|
|
300
|
-
*/
|
|
301
|
-
function matchMultiPath(contextList, uri) {
|
|
302
|
-
for (var i = 0; i < contextList.length; i++) {
|
|
303
|
-
var context = contextList[i];
|
|
304
|
-
if (matchSingleStringPath(context, uri)) {
|
|
305
|
-
return true;
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
return false;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
/**
|
|
312
|
-
* Parses URI and returns RFC 3986 path
|
|
313
|
-
*
|
|
314
|
-
* @param {String} uri from req.url
|
|
315
|
-
* @return {String} RFC 3986 path
|
|
316
|
-
*/
|
|
317
|
-
function getUrlPathName(uri) {
|
|
318
|
-
return uri && url.parse(uri).pathname;
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
function isStringPath(context) {
|
|
322
|
-
return _.isString(context) && !isGlob(context);
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
function isGlobPath(context) {
|
|
326
|
-
return isGlob(context);
|
|
327
|
-
}
|
|
328
|
-
</pre></td></tr>
|
|
329
|
-
</table></pre>
|
|
330
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
331
|
-
</div><!-- /wrapper -->
|
|
332
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
333
|
-
Code coverage
|
|
334
|
-
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Wed Jun 29 2016 02:08:37 GMT+0200 (W. Europe Daylight Time)
|
|
335
|
-
</div>
|
|
336
|
-
</div>
|
|
337
|
-
<script src="../../prettify.js"></script>
|
|
338
|
-
<script>
|
|
339
|
-
window.onload = function () {
|
|
340
|
-
if (typeof prettyPrint === 'function') {
|
|
341
|
-
prettyPrint();
|
|
342
|
-
}
|
|
343
|
-
};
|
|
344
|
-
</script>
|
|
345
|
-
<script src="../../sorter.js"></script>
|
|
346
|
-
</body>
|
|
347
|
-
</html>
|
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<title>Code coverage report for http-proxy-middleware\lib\handlers.js</title>
|
|
5
|
-
<meta charset="utf-8" />
|
|
6
|
-
<link rel="stylesheet" href="../../prettify.css" />
|
|
7
|
-
<link rel="stylesheet" href="../../base.css" />
|
|
8
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
9
|
-
<style type='text/css'>
|
|
10
|
-
.coverage-summary .sorter {
|
|
11
|
-
background-image: url(../../sort-arrow-sprite.png);
|
|
12
|
-
}
|
|
13
|
-
</style>
|
|
14
|
-
</head>
|
|
15
|
-
<body>
|
|
16
|
-
<div class='wrapper'>
|
|
17
|
-
<div class='pad1'>
|
|
18
|
-
<h1>
|
|
19
|
-
<a href="../../index.html">all files</a> / <a href="index.html">http-proxy-middleware/lib/</a> handlers.js
|
|
20
|
-
</h1>
|
|
21
|
-
<div class='clearfix'>
|
|
22
|
-
<div class='fl pad1y space-right2'>
|
|
23
|
-
<span class="strong">100% </span>
|
|
24
|
-
<span class="quiet">Statements</span>
|
|
25
|
-
<span class='fraction'>28/28</span>
|
|
26
|
-
</div>
|
|
27
|
-
<div class='fl pad1y space-right2'>
|
|
28
|
-
<span class="strong">100% </span>
|
|
29
|
-
<span class="quiet">Branches</span>
|
|
30
|
-
<span class='fraction'>12/12</span>
|
|
31
|
-
</div>
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">100% </span>
|
|
34
|
-
<span class="quiet">Functions</span>
|
|
35
|
-
<span class='fraction'>6/6</span>
|
|
36
|
-
</div>
|
|
37
|
-
<div class='fl pad1y space-right2'>
|
|
38
|
-
<span class="strong">100% </span>
|
|
39
|
-
<span class="quiet">Lines</span>
|
|
40
|
-
<span class='fraction'>28/28</span>
|
|
41
|
-
</div>
|
|
42
|
-
</div>
|
|
43
|
-
</div>
|
|
44
|
-
<div class='status-line high'></div>
|
|
45
|
-
<pre><table class="coverage">
|
|
46
|
-
<tr><td class="line-count quiet">1
|
|
47
|
-
2
|
|
48
|
-
3
|
|
49
|
-
4
|
|
50
|
-
5
|
|
51
|
-
6
|
|
52
|
-
7
|
|
53
|
-
8
|
|
54
|
-
9
|
|
55
|
-
10
|
|
56
|
-
11
|
|
57
|
-
12
|
|
58
|
-
13
|
|
59
|
-
14
|
|
60
|
-
15
|
|
61
|
-
16
|
|
62
|
-
17
|
|
63
|
-
18
|
|
64
|
-
19
|
|
65
|
-
20
|
|
66
|
-
21
|
|
67
|
-
22
|
|
68
|
-
23
|
|
69
|
-
24
|
|
70
|
-
25
|
|
71
|
-
26
|
|
72
|
-
27
|
|
73
|
-
28
|
|
74
|
-
29
|
|
75
|
-
30
|
|
76
|
-
31
|
|
77
|
-
32
|
|
78
|
-
33
|
|
79
|
-
34
|
|
80
|
-
35
|
|
81
|
-
36
|
|
82
|
-
37
|
|
83
|
-
38
|
|
84
|
-
39
|
|
85
|
-
40
|
|
86
|
-
41
|
|
87
|
-
42
|
|
88
|
-
43
|
|
89
|
-
44
|
|
90
|
-
45
|
|
91
|
-
46
|
|
92
|
-
47
|
|
93
|
-
48
|
|
94
|
-
49
|
|
95
|
-
50
|
|
96
|
-
51
|
|
97
|
-
52
|
|
98
|
-
53
|
|
99
|
-
54
|
|
100
|
-
55
|
|
101
|
-
56
|
|
102
|
-
57
|
|
103
|
-
58
|
|
104
|
-
59
|
|
105
|
-
60
|
|
106
|
-
61
|
|
107
|
-
62
|
|
108
|
-
63</td><td class="line-coverage quiet"><span class="cline-any cline-yes">1×</span>
|
|
109
|
-
<span class="cline-any cline-yes">1×</span>
|
|
110
|
-
<span class="cline-any cline-neutral"> </span>
|
|
111
|
-
<span class="cline-any cline-yes">1×</span>
|
|
112
|
-
<span class="cline-any cline-neutral"> </span>
|
|
113
|
-
<span class="cline-any cline-neutral"> </span>
|
|
114
|
-
<span class="cline-any cline-neutral"> </span>
|
|
115
|
-
<span class="cline-any cline-neutral"> </span>
|
|
116
|
-
<span class="cline-any cline-yes">1×</span>
|
|
117
|
-
<span class="cline-any cline-yes">41×</span>
|
|
118
|
-
<span class="cline-any cline-neutral"> </span>
|
|
119
|
-
<span class="cline-any cline-yes">41×</span>
|
|
120
|
-
<span class="cline-any cline-yes">85×</span>
|
|
121
|
-
<span class="cline-any cline-neutral"> </span>
|
|
122
|
-
<span class="cline-any cline-neutral"> </span>
|
|
123
|
-
<span class="cline-any cline-yes">41×</span>
|
|
124
|
-
<span class="cline-any cline-neutral"> </span>
|
|
125
|
-
<span class="cline-any cline-neutral"> </span>
|
|
126
|
-
<span class="cline-any cline-yes">1×</span>
|
|
127
|
-
<span class="cline-any cline-neutral"> </span>
|
|
128
|
-
<span class="cline-any cline-yes">48×</span>
|
|
129
|
-
<span class="cline-any cline-yes">48×</span>
|
|
130
|
-
<span class="cline-any cline-neutral"> </span>
|
|
131
|
-
<span class="cline-any cline-yes">48×</span>
|
|
132
|
-
<span class="cline-any cline-neutral"> </span>
|
|
133
|
-
<span class="cline-any cline-neutral"> </span>
|
|
134
|
-
<span class="cline-any cline-neutral"> </span>
|
|
135
|
-
<span class="cline-any cline-yes">288×</span>
|
|
136
|
-
<span class="cline-any cline-yes">288×</span>
|
|
137
|
-
<span class="cline-any cline-neutral"> </span>
|
|
138
|
-
<span class="cline-any cline-yes">288×</span>
|
|
139
|
-
<span class="cline-any cline-yes">17×</span>
|
|
140
|
-
<span class="cline-any cline-neutral"> </span>
|
|
141
|
-
<span class="cline-any cline-neutral"> </span>
|
|
142
|
-
<span class="cline-any cline-neutral"> </span>
|
|
143
|
-
<span class="cline-any cline-neutral"> </span>
|
|
144
|
-
<span class="cline-any cline-yes">48×</span>
|
|
145
|
-
<span class="cline-any cline-yes">44×</span>
|
|
146
|
-
<span class="cline-any cline-neutral"> </span>
|
|
147
|
-
<span class="cline-any cline-neutral"> </span>
|
|
148
|
-
<span class="cline-any cline-neutral"> </span>
|
|
149
|
-
<span class="cline-any cline-yes">48×</span>
|
|
150
|
-
<span class="cline-any cline-yes">46×</span>
|
|
151
|
-
<span class="cline-any cline-neutral"> </span>
|
|
152
|
-
<span class="cline-any cline-neutral"> </span>
|
|
153
|
-
<span class="cline-any cline-yes">48×</span>
|
|
154
|
-
<span class="cline-any cline-neutral"> </span>
|
|
155
|
-
<span class="cline-any cline-neutral"> </span>
|
|
156
|
-
<span class="cline-any cline-yes">1×</span>
|
|
157
|
-
<span class="cline-any cline-yes">5×</span>
|
|
158
|
-
<span class="cline-any cline-neutral"> </span>
|
|
159
|
-
<span class="cline-any cline-yes">5×</span>
|
|
160
|
-
<span class="cline-any cline-yes">3×</span>
|
|
161
|
-
<span class="cline-any cline-neutral"> </span>
|
|
162
|
-
<span class="cline-any cline-neutral"> </span>
|
|
163
|
-
<span class="cline-any cline-yes">5×</span>
|
|
164
|
-
<span class="cline-any cline-neutral"> </span>
|
|
165
|
-
<span class="cline-any cline-neutral"> </span>
|
|
166
|
-
<span class="cline-any cline-yes">1×</span>
|
|
167
|
-
<span class="cline-any cline-neutral"> </span>
|
|
168
|
-
<span class="cline-any cline-yes">4×</span>
|
|
169
|
-
<span class="cline-any cline-neutral"> </span>
|
|
170
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">var _ = require('lodash');
|
|
171
|
-
var logger = require('./logger').getInstance();
|
|
172
|
-
|
|
173
|
-
module.exports = {
|
|
174
|
-
init: init,
|
|
175
|
-
getHandlers: getProxyEventHandlers
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
function init(proxy, opts) {
|
|
179
|
-
var handlers = getProxyEventHandlers(opts);
|
|
180
|
-
|
|
181
|
-
_.forIn(handlers, function(handler, eventName) {
|
|
182
|
-
proxy.on(eventName, handlers[eventName]);
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
logger.debug('[HPM] Subscribed to http-proxy events: ', _.keys(handlers));
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
function getProxyEventHandlers(opts) {
|
|
189
|
-
// https://github.com/nodejitsu/node-http-proxy#listening-for-proxy-events
|
|
190
|
-
var proxyEvents = ['error', 'proxyReq', 'proxyReqWs', 'proxyRes', 'open', 'close'];
|
|
191
|
-
var handlers = {};
|
|
192
|
-
|
|
193
|
-
_.forEach(proxyEvents, function(event) {
|
|
194
|
-
// all handlers for the http-proxy events are prefixed with 'on'.
|
|
195
|
-
// loop through options and try to find these handlers
|
|
196
|
-
// and add them to the handlers object for subscription in init().
|
|
197
|
-
var eventName = _.camelCase('on ' + event);
|
|
198
|
-
var fnHandler = _.get(opts, eventName);
|
|
199
|
-
|
|
200
|
-
if (_.isFunction(fnHandler)) {
|
|
201
|
-
handlers[event] = fnHandler;
|
|
202
|
-
}
|
|
203
|
-
});
|
|
204
|
-
|
|
205
|
-
// add default error handler in absence of error handler
|
|
206
|
-
if (!_.isFunction(handlers.error)) {
|
|
207
|
-
handlers.error = defaultErrorHandler;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
// add default close handler in absence of close handler
|
|
211
|
-
if (!_.isFunction(handlers.close)) {
|
|
212
|
-
handlers.close = logClose;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
return handlers;
|
|
216
|
-
};
|
|
217
|
-
|
|
218
|
-
function defaultErrorHandler(err, req, res) {
|
|
219
|
-
var host = (req.headers && req.headers.host);
|
|
220
|
-
|
|
221
|
-
if (res.writeHead && !res.headersSent) {
|
|
222
|
-
res.writeHead(500);
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
res.end('Error occured while trying to proxy to: ' + host + req.url);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
function logClose(req, socket, head) {
|
|
229
|
-
// view disconnected websocket connections
|
|
230
|
-
logger.info('[HPM] Client disconnected');
|
|
231
|
-
}
|
|
232
|
-
</pre></td></tr>
|
|
233
|
-
</table></pre>
|
|
234
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
235
|
-
</div><!-- /wrapper -->
|
|
236
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
237
|
-
Code coverage
|
|
238
|
-
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Wed Jun 29 2016 02:08:37 GMT+0200 (W. Europe Daylight Time)
|
|
239
|
-
</div>
|
|
240
|
-
</div>
|
|
241
|
-
<script src="../../prettify.js"></script>
|
|
242
|
-
<script>
|
|
243
|
-
window.onload = function () {
|
|
244
|
-
if (typeof prettyPrint === 'function') {
|
|
245
|
-
prettyPrint();
|
|
246
|
-
}
|
|
247
|
-
};
|
|
248
|
-
</script>
|
|
249
|
-
<script src="../../sorter.js"></script>
|
|
250
|
-
</body>
|
|
251
|
-
</html>
|