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.
Files changed (51) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +22 -8
  3. package/lib/handlers.js +13 -1
  4. package/lib/index.js +17 -6
  5. package/lib/logger.js +2 -2
  6. package/package.json +13 -9
  7. package/.editorconfig +0 -18
  8. package/.jscsrc +0 -8
  9. package/.npmignore +0 -2
  10. package/.travis.yml +0 -16
  11. package/CONTRIBUTING.md +0 -61
  12. package/ISSUE_TEMPLATE.md +0 -21
  13. package/coverage/coverage.json +0 -1
  14. package/coverage/lcov-report/base.css +0 -213
  15. package/coverage/lcov-report/http-proxy-middleware/index.html +0 -93
  16. package/coverage/lcov-report/http-proxy-middleware/index.js.html +0 -80
  17. package/coverage/lcov-report/http-proxy-middleware/lib/config-factory.js.html +0 -443
  18. package/coverage/lcov-report/http-proxy-middleware/lib/context-matcher.js.html +0 -347
  19. package/coverage/lcov-report/http-proxy-middleware/lib/handlers.js.html +0 -251
  20. package/coverage/lcov-report/http-proxy-middleware/lib/index.html +0 -171
  21. package/coverage/lcov-report/http-proxy-middleware/lib/index.js.html +0 -437
  22. package/coverage/lcov-report/http-proxy-middleware/lib/logger.js.html +0 -539
  23. package/coverage/lcov-report/http-proxy-middleware/lib/path-rewriter.js.html +0 -281
  24. package/coverage/lcov-report/http-proxy-middleware/lib/router.js.html +0 -224
  25. package/coverage/lcov-report/index.html +0 -106
  26. package/coverage/lcov-report/prettify.css +0 -1
  27. package/coverage/lcov-report/prettify.js +0 -1
  28. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  29. package/coverage/lcov-report/sorter.js +0 -158
  30. package/coverage/lcov.info +0 -647
  31. package/examples/README.md +0 -33
  32. package/examples/browser-sync/index.js +0 -29
  33. package/examples/connect/index.js +0 -29
  34. package/examples/express/index.js +0 -28
  35. package/examples/websocket/index.html +0 -96
  36. package/examples/websocket/index.js +0 -41
  37. package/recipes/README.md +0 -110
  38. package/recipes/basic.md +0 -32
  39. package/recipes/context-matching.md +0 -99
  40. package/recipes/corporate-proxy.md +0 -21
  41. package/recipes/delay.md +0 -37
  42. package/recipes/logLevel.md +0 -40
  43. package/recipes/logProvider.md +0 -77
  44. package/recipes/modify-post.md +0 -74
  45. package/recipes/pathRewrite.md +0 -93
  46. package/recipes/proxy-events.md +0 -74
  47. package/recipes/router.md +0 -83
  48. package/recipes/servers.md +0 -252
  49. package/recipes/shorthand.md +0 -63
  50. package/recipes/virtual-hosts.md +0 -18
  51. 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">&nbsp;</span>
180
- <span class="cline-any cline-yes">1×</span>
181
- <span class="cline-any cline-neutral">&nbsp;</span>
182
- <span class="cline-any cline-yes">1×</span>
183
- <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
188
- <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
192
- <span class="cline-any cline-yes">41×</span>
193
- <span class="cline-any cline-neutral">&nbsp;</span>
194
- <span class="cline-any cline-neutral">&nbsp;</span>
195
- <span class="cline-any cline-yes">41×</span>
196
- <span class="cline-any cline-neutral">&nbsp;</span>
197
- <span class="cline-any cline-neutral">&nbsp;</span>
198
- <span class="cline-any cline-yes">41×</span>
199
- <span class="cline-any cline-neutral">&nbsp;</span>
200
- <span class="cline-any cline-neutral">&nbsp;</span>
201
- <span class="cline-any cline-neutral">&nbsp;</span>
202
- <span class="cline-any cline-yes">41×</span>
203
- <span class="cline-any cline-neutral">&nbsp;</span>
204
- <span class="cline-any cline-yes">41×</span>
205
- <span class="cline-any cline-neutral">&nbsp;</span>
206
- <span class="cline-any cline-yes">1×</span>
207
- <span class="cline-any cline-neutral">&nbsp;</span>
208
- <span class="cline-any cline-yes">38×</span>
209
- <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
214
- <span class="cline-any cline-yes">4×</span>
215
- <span class="cline-any cline-neutral">&nbsp;</span>
216
- <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
220
- <span class="cline-any cline-neutral">&nbsp;</span>
221
- <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
225
- <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
232
- <span class="cline-any cline-neutral">&nbsp;</span>
233
- <span class="cline-any cline-neutral">&nbsp;</span>
234
- <span class="cline-any cline-neutral">&nbsp;</span>
235
- <span class="cline-any cline-neutral">&nbsp;</span>
236
- <span class="cline-any cline-neutral">&nbsp;</span>
237
- <span class="cline-any cline-neutral">&nbsp;</span>
238
- <span class="cline-any cline-neutral">&nbsp;</span>
239
- <span class="cline-any cline-neutral">&nbsp;</span>
240
- <span class="cline-any cline-yes">1×</span>
241
- <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
245
- <span class="cline-any cline-neutral">&nbsp;</span>
246
- <span class="cline-any cline-neutral">&nbsp;</span>
247
- <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
251
- <span class="cline-any cline-neutral">&nbsp;</span>
252
- <span class="cline-any cline-yes">38×</span>
253
- <span class="cline-any cline-no">&nbsp;</span>
254
- <span class="cline-any cline-no">&nbsp;</span>
255
- <span class="cline-any cline-neutral">&nbsp;</span>
256
- <span class="cline-any cline-neutral">&nbsp;</span>
257
- <span class="cline-any cline-yes">38×</span>
258
- <span class="cline-any cline-neutral">&nbsp;</span>
259
- <span class="cline-any cline-neutral">&nbsp;</span>
260
- <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</span>
271
- <span class="cline-any cline-neutral">&nbsp;</span>
272
- <span class="cline-any cline-neutral">&nbsp;</span>
273
- <span class="cline-any cline-neutral">&nbsp;</span>
274
- <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</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">&nbsp;</span>
282
- <span class="cline-any cline-yes">4×</span>
283
- <span class="cline-any cline-neutral">&nbsp;</span>
284
- <span class="cline-any cline-neutral">&nbsp;</span>
285
- <span class="cline-any cline-neutral">&nbsp;</span>
286
- <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
291
- <span class="cline-any cline-yes">3×</span>
292
- <span class="cline-any cline-neutral">&nbsp;</span>
293
- <span class="cline-any cline-neutral">&nbsp;</span>
294
- <span class="cline-any cline-neutral">&nbsp;</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
- &nbsp;
304
- module.exports = HttpProxyMiddleware;
305
- &nbsp;
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
- &nbsp;
312
- // create proxy
313
- var proxy = httpProxy.createProxyServer({});
314
- logger.info('[HPM] Proxy created:', config.context, ' -&gt; ', proxyOptions.target);
315
- &nbsp;
316
- var pathRewriter = PathRewriter.create(proxyOptions.pathRewrite); // returns undefined when "pathRewrite" is not provided
317
- &nbsp;
318
- // attach handler to http-proxy events
319
- handlers.init(proxy, proxyOptions);
320
- &nbsp;
321
- // log errors for debug purpose
322
- proxy.on('error', logError);
323
- &nbsp;
324
- // https://github.com/chimurai/http-proxy-middleware/issues/19
325
- // expose function to upgrade externally
326
- middleware.upgrade = wsUpgradeDebounced;
327
- &nbsp;
328
- return middleware;
329
- &nbsp;
330
- function middleware(req, res, next) {
331
- // https://github.com/chimurai/http-proxy-middleware/issues/17
332
- req.url = req.originalUrl;
333
- &nbsp;
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
- &nbsp;
341
- if (proxyOptions.ws === true) {
342
- catchUpgradeRequest(req.connection.server);
343
- }
344
- }
345
- &nbsp;
346
- function catchUpgradeRequest(server) {
347
- server.on('upgrade', wsUpgradeDebounced);
348
- }
349
- &nbsp;
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
- &nbsp;
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
- &nbsp;
369
- // Apply in order:
370
- // 1. option.router
371
- // 2. option.pathRewrite
372
- __applyRouter(req, newProxyOptions);
373
- __applyPathRewrite(req, pathRewriter);
374
- &nbsp;
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
- &nbsp;
381
- return newProxyOptions;
382
- }
383
- &nbsp;
384
- // Modify option.target when router present.
385
- function __applyRouter(req, options) {
386
- var newTarget;
387
- &nbsp;
388
- if (options.router) {
389
- newTarget = Router.getTarget(req, options);
390
- &nbsp;
391
- if (newTarget) {
392
- logger.debug('[HPM] Router new target: %s -&gt; "%s"', options.target, newTarget);
393
- options.target = newTarget;
394
- }
395
- }
396
- }
397
- &nbsp;
398
- // rewrite path
399
- function __applyPathRewrite(req, pathRewriter) {
400
- if (pathRewriter) {
401
- var path = pathRewriter(req.url, req);
402
- &nbsp;
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
- &nbsp;
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>&amp;&amp; <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
- &nbsp;
415
- logger.error('[HPM] PROXY ERROR: %s. %s -&gt; %s', err.code, hostname, targetUri);
416
- }
417
- };
418
- &nbsp;</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>