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,171 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<title>Code coverage report for http-proxy-middleware\lib\</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> http-proxy-middleware/lib/
|
|
20
|
-
</h1>
|
|
21
|
-
<div class='clearfix'>
|
|
22
|
-
<div class='fl pad1y space-right2'>
|
|
23
|
-
<span class="strong">99.37% </span>
|
|
24
|
-
<span class="quiet">Statements</span>
|
|
25
|
-
<span class='fraction'>317/319</span>
|
|
26
|
-
</div>
|
|
27
|
-
<div class='fl pad1y space-right2'>
|
|
28
|
-
<span class="strong">94.63% </span>
|
|
29
|
-
<span class="quiet">Branches</span>
|
|
30
|
-
<span class='fraction'>141/149</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'>54/54</span>
|
|
36
|
-
</div>
|
|
37
|
-
<div class='fl pad1y space-right2'>
|
|
38
|
-
<span class="strong">99.36% </span>
|
|
39
|
-
<span class="quiet">Lines</span>
|
|
40
|
-
<span class='fraction'>311/313</span>
|
|
41
|
-
</div>
|
|
42
|
-
</div>
|
|
43
|
-
</div>
|
|
44
|
-
<div class='status-line high'></div>
|
|
45
|
-
<div class="pad1">
|
|
46
|
-
<table class="coverage-summary">
|
|
47
|
-
<thead>
|
|
48
|
-
<tr>
|
|
49
|
-
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
|
|
50
|
-
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
|
|
51
|
-
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
|
|
52
|
-
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
|
|
53
|
-
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
|
|
54
|
-
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
|
|
55
|
-
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
|
|
56
|
-
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
|
|
57
|
-
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
|
|
58
|
-
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
|
|
59
|
-
</tr>
|
|
60
|
-
</thead>
|
|
61
|
-
<tbody><tr>
|
|
62
|
-
<td class="file high" data-value="config-factory.js"><a href="config-factory.js.html">config-factory.js</a></td>
|
|
63
|
-
<td data-value="100" class="pic high"><div class="chart"><div class="cover-fill cover-full" style="width: 100%;"></div><div class="cover-empty" style="width:0%;"></div></div></td>
|
|
64
|
-
<td data-value="100" class="pct high">100%</td>
|
|
65
|
-
<td data-value="54" class="abs high">54/54</td>
|
|
66
|
-
<td data-value="100" class="pct high">100%</td>
|
|
67
|
-
<td data-value="28" class="abs high">28/28</td>
|
|
68
|
-
<td data-value="100" class="pct high">100%</td>
|
|
69
|
-
<td data-value="6" class="abs high">6/6</td>
|
|
70
|
-
<td data-value="100" class="pct high">100%</td>
|
|
71
|
-
<td data-value="54" class="abs high">54/54</td>
|
|
72
|
-
</tr>
|
|
73
|
-
|
|
74
|
-
<tr>
|
|
75
|
-
<td class="file high" data-value="context-matcher.js"><a href="context-matcher.js.html">context-matcher.js</a></td>
|
|
76
|
-
<td data-value="100" class="pic high"><div class="chart"><div class="cover-fill cover-full" style="width: 100%;"></div><div class="cover-empty" style="width:0%;"></div></div></td>
|
|
77
|
-
<td data-value="100" class="pct high">100%</td>
|
|
78
|
-
<td data-value="41" class="abs high">41/41</td>
|
|
79
|
-
<td data-value="100" class="pct high">100%</td>
|
|
80
|
-
<td data-value="20" class="abs high">20/20</td>
|
|
81
|
-
<td data-value="100" class="pct high">100%</td>
|
|
82
|
-
<td data-value="8" class="abs high">8/8</td>
|
|
83
|
-
<td data-value="100" class="pct high">100%</td>
|
|
84
|
-
<td data-value="41" class="abs high">41/41</td>
|
|
85
|
-
</tr>
|
|
86
|
-
|
|
87
|
-
<tr>
|
|
88
|
-
<td class="file high" data-value="handlers.js"><a href="handlers.js.html">handlers.js</a></td>
|
|
89
|
-
<td data-value="100" class="pic high"><div class="chart"><div class="cover-fill cover-full" style="width: 100%;"></div><div class="cover-empty" style="width:0%;"></div></div></td>
|
|
90
|
-
<td data-value="100" class="pct high">100%</td>
|
|
91
|
-
<td data-value="28" class="abs high">28/28</td>
|
|
92
|
-
<td data-value="100" class="pct high">100%</td>
|
|
93
|
-
<td data-value="12" class="abs high">12/12</td>
|
|
94
|
-
<td data-value="100" class="pct high">100%</td>
|
|
95
|
-
<td data-value="6" class="abs high">6/6</td>
|
|
96
|
-
<td data-value="100" class="pct high">100%</td>
|
|
97
|
-
<td data-value="28" class="abs high">28/28</td>
|
|
98
|
-
</tr>
|
|
99
|
-
|
|
100
|
-
<tr>
|
|
101
|
-
<td class="file high" data-value="index.js"><a href="index.js.html">index.js</a></td>
|
|
102
|
-
<td data-value="96.77" class="pic high"><div class="chart"><div class="cover-fill" style="width: 96%;"></div><div class="cover-empty" style="width:4%;"></div></div></td>
|
|
103
|
-
<td data-value="96.77" class="pct high">96.77%</td>
|
|
104
|
-
<td data-value="62" class="abs high">60/62</td>
|
|
105
|
-
<td data-value="77.27" class="pct medium">77.27%</td>
|
|
106
|
-
<td data-value="22" class="abs medium">17/22</td>
|
|
107
|
-
<td data-value="100" class="pct high">100%</td>
|
|
108
|
-
<td data-value="8" class="abs high">8/8</td>
|
|
109
|
-
<td data-value="96.77" class="pct high">96.77%</td>
|
|
110
|
-
<td data-value="62" class="abs high">60/62</td>
|
|
111
|
-
</tr>
|
|
112
|
-
|
|
113
|
-
<tr>
|
|
114
|
-
<td class="file high" data-value="logger.js"><a href="logger.js.html">logger.js</a></td>
|
|
115
|
-
<td data-value="100" class="pic high"><div class="chart"><div class="cover-fill cover-full" style="width: 100%;"></div><div class="cover-empty" style="width:0%;"></div></div></td>
|
|
116
|
-
<td data-value="100" class="pct high">100%</td>
|
|
117
|
-
<td data-value="70" class="abs high">70/70</td>
|
|
118
|
-
<td data-value="94.74" class="pct high">94.74%</td>
|
|
119
|
-
<td data-value="38" class="abs high">36/38</td>
|
|
120
|
-
<td data-value="100" class="pct high">100%</td>
|
|
121
|
-
<td data-value="16" class="abs high">16/16</td>
|
|
122
|
-
<td data-value="100" class="pct high">100%</td>
|
|
123
|
-
<td data-value="64" class="abs high">64/64</td>
|
|
124
|
-
</tr>
|
|
125
|
-
|
|
126
|
-
<tr>
|
|
127
|
-
<td class="file high" data-value="path-rewriter.js"><a href="path-rewriter.js.html">path-rewriter.js</a></td>
|
|
128
|
-
<td data-value="100" class="pic high"><div class="chart"><div class="cover-fill cover-full" style="width: 100%;"></div><div class="cover-empty" style="width:0%;"></div></div></td>
|
|
129
|
-
<td data-value="100" class="pct high">100%</td>
|
|
130
|
-
<td data-value="35" class="abs high">35/35</td>
|
|
131
|
-
<td data-value="94.74" class="pct high">94.74%</td>
|
|
132
|
-
<td data-value="19" class="abs high">18/19</td>
|
|
133
|
-
<td data-value="100" class="pct high">100%</td>
|
|
134
|
-
<td data-value="6" class="abs high">6/6</td>
|
|
135
|
-
<td data-value="100" class="pct high">100%</td>
|
|
136
|
-
<td data-value="35" class="abs high">35/35</td>
|
|
137
|
-
</tr>
|
|
138
|
-
|
|
139
|
-
<tr>
|
|
140
|
-
<td class="file high" data-value="router.js"><a href="router.js.html">router.js</a></td>
|
|
141
|
-
<td data-value="100" class="pic high"><div class="chart"><div class="cover-fill cover-full" style="width: 100%;"></div><div class="cover-empty" style="width:0%;"></div></div></td>
|
|
142
|
-
<td data-value="100" class="pct high">100%</td>
|
|
143
|
-
<td data-value="29" class="abs high">29/29</td>
|
|
144
|
-
<td data-value="100" class="pct high">100%</td>
|
|
145
|
-
<td data-value="10" class="abs high">10/10</td>
|
|
146
|
-
<td data-value="100" class="pct high">100%</td>
|
|
147
|
-
<td data-value="4" class="abs high">4/4</td>
|
|
148
|
-
<td data-value="100" class="pct high">100%</td>
|
|
149
|
-
<td data-value="29" class="abs high">29/29</td>
|
|
150
|
-
</tr>
|
|
151
|
-
|
|
152
|
-
</tbody>
|
|
153
|
-
</table>
|
|
154
|
-
</div><div class='push'></div><!-- for sticky footer -->
|
|
155
|
-
</div><!-- /wrapper -->
|
|
156
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
157
|
-
Code coverage
|
|
158
|
-
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)
|
|
159
|
-
</div>
|
|
160
|
-
</div>
|
|
161
|
-
<script src="../../prettify.js"></script>
|
|
162
|
-
<script>
|
|
163
|
-
window.onload = function () {
|
|
164
|
-
if (typeof prettyPrint === 'function') {
|
|
165
|
-
prettyPrint();
|
|
166
|
-
}
|
|
167
|
-
};
|
|
168
|
-
</script>
|
|
169
|
-
<script src="../../sorter.js"></script>
|
|
170
|
-
</body>
|
|
171
|
-
</html>
|
|
@@ -1,437 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<title>Code coverage report for http-proxy-middleware\lib\index.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> index.js
|
|
20
|
-
</h1>
|
|
21
|
-
<div class='clearfix'>
|
|
22
|
-
<div class='fl pad1y space-right2'>
|
|
23
|
-
<span class="strong">96.77% </span>
|
|
24
|
-
<span class="quiet">Statements</span>
|
|
25
|
-
<span class='fraction'>60/62</span>
|
|
26
|
-
</div>
|
|
27
|
-
<div class='fl pad1y space-right2'>
|
|
28
|
-
<span class="strong">77.27% </span>
|
|
29
|
-
<span class="quiet">Branches</span>
|
|
30
|
-
<span class='fraction'>17/22</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">96.77% </span>
|
|
39
|
-
<span class="quiet">Lines</span>
|
|
40
|
-
<span class='fraction'>60/62</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
|
|
141
|
-
96
|
|
142
|
-
97
|
|
143
|
-
98
|
|
144
|
-
99
|
|
145
|
-
100
|
|
146
|
-
101
|
|
147
|
-
102
|
|
148
|
-
103
|
|
149
|
-
104
|
|
150
|
-
105
|
|
151
|
-
106
|
|
152
|
-
107
|
|
153
|
-
108
|
|
154
|
-
109
|
|
155
|
-
110
|
|
156
|
-
111
|
|
157
|
-
112
|
|
158
|
-
113
|
|
159
|
-
114
|
|
160
|
-
115
|
|
161
|
-
116
|
|
162
|
-
117
|
|
163
|
-
118
|
|
164
|
-
119
|
|
165
|
-
120
|
|
166
|
-
121
|
|
167
|
-
122
|
|
168
|
-
123
|
|
169
|
-
124
|
|
170
|
-
125</td><td class="line-coverage quiet"><span class="cline-any cline-yes">1×</span>
|
|
171
|
-
<span class="cline-any cline-yes">1×</span>
|
|
172
|
-
<span class="cline-any cline-yes">1×</span>
|
|
173
|
-
<span class="cline-any cline-yes">1×</span>
|
|
174
|
-
<span class="cline-any cline-yes">1×</span>
|
|
175
|
-
<span class="cline-any cline-yes">1×</span>
|
|
176
|
-
<span class="cline-any cline-yes">1×</span>
|
|
177
|
-
<span class="cline-any cline-yes">1×</span>
|
|
178
|
-
<span class="cline-any cline-yes">1×</span>
|
|
179
|
-
<span class="cline-any cline-neutral"> </span>
|
|
180
|
-
<span class="cline-any cline-yes">1×</span>
|
|
181
|
-
<span class="cline-any cline-neutral"> </span>
|
|
182
|
-
<span class="cline-any cline-yes">1×</span>
|
|
183
|
-
<span class="cline-any cline-neutral"> </span>
|
|
184
|
-
<span class="cline-any cline-yes">41×</span>
|
|
185
|
-
<span class="cline-any cline-yes">41×</span>
|
|
186
|
-
<span class="cline-any cline-yes">41×</span>
|
|
187
|
-
<span class="cline-any cline-neutral"> </span>
|
|
188
|
-
<span class="cline-any cline-neutral"> </span>
|
|
189
|
-
<span class="cline-any cline-yes">41×</span>
|
|
190
|
-
<span class="cline-any cline-yes">41×</span>
|
|
191
|
-
<span class="cline-any cline-neutral"> </span>
|
|
192
|
-
<span class="cline-any cline-yes">41×</span>
|
|
193
|
-
<span class="cline-any cline-neutral"> </span>
|
|
194
|
-
<span class="cline-any cline-neutral"> </span>
|
|
195
|
-
<span class="cline-any cline-yes">41×</span>
|
|
196
|
-
<span class="cline-any cline-neutral"> </span>
|
|
197
|
-
<span class="cline-any cline-neutral"> </span>
|
|
198
|
-
<span class="cline-any cline-yes">41×</span>
|
|
199
|
-
<span class="cline-any cline-neutral"> </span>
|
|
200
|
-
<span class="cline-any cline-neutral"> </span>
|
|
201
|
-
<span class="cline-any cline-neutral"> </span>
|
|
202
|
-
<span class="cline-any cline-yes">41×</span>
|
|
203
|
-
<span class="cline-any cline-neutral"> </span>
|
|
204
|
-
<span class="cline-any cline-yes">41×</span>
|
|
205
|
-
<span class="cline-any cline-neutral"> </span>
|
|
206
|
-
<span class="cline-any cline-yes">1×</span>
|
|
207
|
-
<span class="cline-any cline-neutral"> </span>
|
|
208
|
-
<span class="cline-any cline-yes">38×</span>
|
|
209
|
-
<span class="cline-any cline-neutral"> </span>
|
|
210
|
-
<span class="cline-any cline-yes">38×</span>
|
|
211
|
-
<span class="cline-any cline-yes">34×</span>
|
|
212
|
-
<span class="cline-any cline-yes">34×</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-yes">38×</span>
|
|
218
|
-
<span class="cline-any cline-yes">2×</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-yes">1×</span>
|
|
223
|
-
<span class="cline-any cline-yes">2×</span>
|
|
224
|
-
<span class="cline-any cline-neutral"> </span>
|
|
225
|
-
<span class="cline-any cline-neutral"> </span>
|
|
226
|
-
<span class="cline-any cline-yes">1×</span>
|
|
227
|
-
<span class="cline-any cline-yes">4×</span>
|
|
228
|
-
<span class="cline-any cline-yes">4×</span>
|
|
229
|
-
<span class="cline-any cline-yes">4×</span>
|
|
230
|
-
<span class="cline-any cline-yes">4×</span>
|
|
231
|
-
<span class="cline-any cline-neutral"> </span>
|
|
232
|
-
<span class="cline-any cline-neutral"> </span>
|
|
233
|
-
<span class="cline-any cline-neutral"> </span>
|
|
234
|
-
<span class="cline-any cline-neutral"> </span>
|
|
235
|
-
<span class="cline-any cline-neutral"> </span>
|
|
236
|
-
<span class="cline-any cline-neutral"> </span>
|
|
237
|
-
<span class="cline-any cline-neutral"> </span>
|
|
238
|
-
<span class="cline-any cline-neutral"> </span>
|
|
239
|
-
<span class="cline-any cline-neutral"> </span>
|
|
240
|
-
<span class="cline-any cline-yes">1×</span>
|
|
241
|
-
<span class="cline-any cline-neutral"> </span>
|
|
242
|
-
<span class="cline-any cline-yes">38×</span>
|
|
243
|
-
<span class="cline-any cline-yes">38×</span>
|
|
244
|
-
<span class="cline-any cline-neutral"> </span>
|
|
245
|
-
<span class="cline-any cline-neutral"> </span>
|
|
246
|
-
<span class="cline-any cline-neutral"> </span>
|
|
247
|
-
<span class="cline-any cline-neutral"> </span>
|
|
248
|
-
<span class="cline-any cline-yes">38×</span>
|
|
249
|
-
<span class="cline-any cline-yes">38×</span>
|
|
250
|
-
<span class="cline-any cline-neutral"> </span>
|
|
251
|
-
<span class="cline-any cline-neutral"> </span>
|
|
252
|
-
<span class="cline-any cline-yes">38×</span>
|
|
253
|
-
<span class="cline-any cline-no"> </span>
|
|
254
|
-
<span class="cline-any cline-no"> </span>
|
|
255
|
-
<span class="cline-any cline-neutral"> </span>
|
|
256
|
-
<span class="cline-any cline-neutral"> </span>
|
|
257
|
-
<span class="cline-any cline-yes">38×</span>
|
|
258
|
-
<span class="cline-any cline-neutral"> </span>
|
|
259
|
-
<span class="cline-any cline-neutral"> </span>
|
|
260
|
-
<span class="cline-any cline-neutral"> </span>
|
|
261
|
-
<span class="cline-any cline-yes">1×</span>
|
|
262
|
-
<span class="cline-any cline-yes">38×</span>
|
|
263
|
-
<span class="cline-any cline-neutral"> </span>
|
|
264
|
-
<span class="cline-any cline-yes">38×</span>
|
|
265
|
-
<span class="cline-any cline-yes">6×</span>
|
|
266
|
-
<span class="cline-any cline-neutral"> </span>
|
|
267
|
-
<span class="cline-any cline-yes">6×</span>
|
|
268
|
-
<span class="cline-any cline-yes">5×</span>
|
|
269
|
-
<span class="cline-any cline-yes">5×</span>
|
|
270
|
-
<span class="cline-any cline-neutral"> </span>
|
|
271
|
-
<span class="cline-any cline-neutral"> </span>
|
|
272
|
-
<span class="cline-any cline-neutral"> </span>
|
|
273
|
-
<span class="cline-any cline-neutral"> </span>
|
|
274
|
-
<span class="cline-any cline-neutral"> </span>
|
|
275
|
-
<span class="cline-any cline-yes">1×</span>
|
|
276
|
-
<span class="cline-any cline-yes">38×</span>
|
|
277
|
-
<span class="cline-any cline-yes">11×</span>
|
|
278
|
-
<span class="cline-any cline-neutral"> </span>
|
|
279
|
-
<span class="cline-any cline-yes">11×</span>
|
|
280
|
-
<span class="cline-any cline-yes">7×</span>
|
|
281
|
-
<span class="cline-any cline-neutral"> </span>
|
|
282
|
-
<span class="cline-any cline-yes">4×</span>
|
|
283
|
-
<span class="cline-any cline-neutral"> </span>
|
|
284
|
-
<span class="cline-any cline-neutral"> </span>
|
|
285
|
-
<span class="cline-any cline-neutral"> </span>
|
|
286
|
-
<span class="cline-any cline-neutral"> </span>
|
|
287
|
-
<span class="cline-any cline-yes">1×</span>
|
|
288
|
-
<span class="cline-any cline-yes">3×</span>
|
|
289
|
-
<span class="cline-any cline-yes">3×</span>
|
|
290
|
-
<span class="cline-any cline-neutral"> </span>
|
|
291
|
-
<span class="cline-any cline-yes">3×</span>
|
|
292
|
-
<span class="cline-any cline-neutral"> </span>
|
|
293
|
-
<span class="cline-any cline-neutral"> </span>
|
|
294
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">var _ = require('lodash');
|
|
295
|
-
var httpProxy = require('http-proxy');
|
|
296
|
-
var configFactory = require('./config-factory');
|
|
297
|
-
var handlers = require('./handlers');
|
|
298
|
-
var contextMatcher = require('./context-matcher');
|
|
299
|
-
var PathRewriter = require('./path-rewriter');
|
|
300
|
-
var Router = require('./router');
|
|
301
|
-
var logger = require('./logger').getInstance();
|
|
302
|
-
var getArrow = require('./logger').getArrow;
|
|
303
|
-
|
|
304
|
-
module.exports = HttpProxyMiddleware;
|
|
305
|
-
|
|
306
|
-
function HttpProxyMiddleware(context, opts) {
|
|
307
|
-
// https://github.com/chimurai/http-proxy-middleware/issues/57
|
|
308
|
-
var wsUpgradeDebounced = _.debounce(handleUpgrade);
|
|
309
|
-
var config = configFactory.createConfig(context, opts);
|
|
310
|
-
var proxyOptions = config.options;
|
|
311
|
-
|
|
312
|
-
// create proxy
|
|
313
|
-
var proxy = httpProxy.createProxyServer({});
|
|
314
|
-
logger.info('[HPM] Proxy created:', config.context, ' -> ', proxyOptions.target);
|
|
315
|
-
|
|
316
|
-
var pathRewriter = PathRewriter.create(proxyOptions.pathRewrite); // returns undefined when "pathRewrite" is not provided
|
|
317
|
-
|
|
318
|
-
// attach handler to http-proxy events
|
|
319
|
-
handlers.init(proxy, proxyOptions);
|
|
320
|
-
|
|
321
|
-
// log errors for debug purpose
|
|
322
|
-
proxy.on('error', logError);
|
|
323
|
-
|
|
324
|
-
// https://github.com/chimurai/http-proxy-middleware/issues/19
|
|
325
|
-
// expose function to upgrade externally
|
|
326
|
-
middleware.upgrade = wsUpgradeDebounced;
|
|
327
|
-
|
|
328
|
-
return middleware;
|
|
329
|
-
|
|
330
|
-
function middleware(req, res, next) {
|
|
331
|
-
// https://github.com/chimurai/http-proxy-middleware/issues/17
|
|
332
|
-
req.url = req.originalUrl;
|
|
333
|
-
|
|
334
|
-
if (contextMatcher.match(config.context, req.url, req)) {
|
|
335
|
-
var activeProxyOptions = prepareProxyRequest(req);
|
|
336
|
-
proxy.web(req, res, activeProxyOptions);
|
|
337
|
-
} else {
|
|
338
|
-
next();
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
if (proxyOptions.ws === true) {
|
|
342
|
-
catchUpgradeRequest(req.connection.server);
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
function catchUpgradeRequest(server) {
|
|
347
|
-
server.on('upgrade', wsUpgradeDebounced);
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
function handleUpgrade(req, socket, head) {
|
|
351
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (contextMatcher.match(config.context, req.url, req)) {
|
|
352
|
-
var activeProxyOptions = prepareProxyRequest(req);
|
|
353
|
-
proxy.ws(req, socket, head, activeProxyOptions);
|
|
354
|
-
logger.info('[HPM] Upgrading to WebSocket');
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
/**
|
|
359
|
-
* Apply option.router and option.pathRewrite
|
|
360
|
-
* Order matters:
|
|
361
|
-
Router uses original path for routing;
|
|
362
|
-
NOT the modified path, after it has been rewritten by pathRewrite
|
|
363
|
-
*/
|
|
364
|
-
function prepareProxyRequest(req) {
|
|
365
|
-
// store uri before it gets rewritten for logging
|
|
366
|
-
var originalPath = req.url;
|
|
367
|
-
var newProxyOptions = _.cloneDeep(proxyOptions);
|
|
368
|
-
|
|
369
|
-
// Apply in order:
|
|
370
|
-
// 1. option.router
|
|
371
|
-
// 2. option.pathRewrite
|
|
372
|
-
__applyRouter(req, newProxyOptions);
|
|
373
|
-
__applyPathRewrite(req, pathRewriter);
|
|
374
|
-
|
|
375
|
-
// debug logging for both http(s) and websockets
|
|
376
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (proxyOptions.logLevel === 'debug') {
|
|
377
|
-
<span class="cstat-no" title="statement not covered" > var arrow = getArrow(originalPath, req.url, proxyOptions.target, newProxyOptions.target);</span>
|
|
378
|
-
<span class="cstat-no" title="statement not covered" > logger.debug('[HPM] %s %s %s %s', req.method, originalPath, arrow, newProxyOptions.target);</span>
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
return newProxyOptions;
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
// Modify option.target when router present.
|
|
385
|
-
function __applyRouter(req, options) {
|
|
386
|
-
var newTarget;
|
|
387
|
-
|
|
388
|
-
if (options.router) {
|
|
389
|
-
newTarget = Router.getTarget(req, options);
|
|
390
|
-
|
|
391
|
-
if (newTarget) {
|
|
392
|
-
logger.debug('[HPM] Router new target: %s -> "%s"', options.target, newTarget);
|
|
393
|
-
options.target = newTarget;
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
// rewrite path
|
|
399
|
-
function __applyPathRewrite(req, pathRewriter) {
|
|
400
|
-
if (pathRewriter) {
|
|
401
|
-
var path = pathRewriter(req.url, req);
|
|
402
|
-
|
|
403
|
-
if (path) {
|
|
404
|
-
req.url = path;
|
|
405
|
-
} else {
|
|
406
|
-
logger.info('[HPM] pathRewrite: No rewritten path found. (%s)', req.url);
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
function logError(err, req, res) {
|
|
412
|
-
var hostname = (req.hostname || <span class="branch-1 cbranch-no" title="branch not covered" >req.host)</span> || (<span class="branch-2 cbranch-no" title="branch not covered" >req.headers </span>&& <span class="branch-3 cbranch-no" title="branch not covered" >req.headers.host)</span>; // (node0.10 || node 4/5) || (websocket)
|
|
413
|
-
var targetUri = (proxyOptions.target.host || proxyOptions.target) + req.url;
|
|
414
|
-
|
|
415
|
-
logger.error('[HPM] PROXY ERROR: %s. %s -> %s', err.code, hostname, targetUri);
|
|
416
|
-
}
|
|
417
|
-
};
|
|
418
|
-
</pre></td></tr>
|
|
419
|
-
</table></pre>
|
|
420
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
421
|
-
</div><!-- /wrapper -->
|
|
422
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
423
|
-
Code coverage
|
|
424
|
-
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)
|
|
425
|
-
</div>
|
|
426
|
-
</div>
|
|
427
|
-
<script src="../../prettify.js"></script>
|
|
428
|
-
<script>
|
|
429
|
-
window.onload = function () {
|
|
430
|
-
if (typeof prettyPrint === 'function') {
|
|
431
|
-
prettyPrint();
|
|
432
|
-
}
|
|
433
|
-
};
|
|
434
|
-
</script>
|
|
435
|
-
<script src="../../sorter.js"></script>
|
|
436
|
-
</body>
|
|
437
|
-
</html>
|