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,28 +0,0 @@
1
- /**
2
- * Module dependencies.
3
- */
4
- var express = require('express');
5
- var proxy = require('../../index'); // require('http-proxy-middleware');
6
-
7
- /**
8
- * Configure proxy middleware
9
- */
10
- var jsonPlaceholderProxy = proxy({
11
- target: 'http://jsonplaceholder.typicode.com',
12
- changeOrigin: true, // for vhosted sites, changes host header to match to target's host
13
- logLevel: 'debug'
14
- });
15
-
16
- var app = express();
17
-
18
- /**
19
- * Add the proxy to express
20
- */
21
- app.use('/users', jsonPlaceholderProxy);
22
-
23
- app.listen(3000);
24
-
25
- console.log('[DEMO] Server: listening on port 3000');
26
- console.log('[DEMO] Opening: http://localhost:3000/users');
27
-
28
- require('opn')('http://localhost:3000/users');
@@ -1,96 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <title>http-proxy-middleware - WebSocket example</title>
6
- <style>
7
- fieldset {
8
- border: 0;
9
- }
10
- label {
11
- display: inline-block;
12
- width: 5em;
13
- vertical-align: top;
14
- }
15
- code {
16
- background-color: #eee;
17
- }
18
- </style>
19
- </head>
20
-
21
- <body>
22
-
23
- <h2>WebSocket demo</h2>
24
-
25
- <p>
26
- Proxy <code>ws://localhost:3000</code> to <code>ws://echo.websocket.org</code>
27
- </p>
28
-
29
- <fieldset id="configuration">
30
- <p>
31
- <label for="location">location:</label>
32
- <input id="location" type="text" value="ws://localhost:3000">
33
- <button id="connect">connect</button>
34
- <button id="disconnect" disabled="disabled">disconnect</button>
35
- </p>
36
- </fieldset>
37
- <fieldset id="messaging" disabled="disabled">
38
- <p>
39
- <label for="message">message:</label>
40
- <input type="text" id="message" value="Hello WebSocket">
41
- <button id="send">send</button>
42
- </p>
43
- <p>
44
- <label for="logger">log:</label>
45
- <textarea id="logger" cols="30" rows="10"></textarea>
46
- </p>
47
- </fieldset>
48
-
49
- <script>
50
- window.onload = function () {
51
- // elements
52
- var configuration = document.getElementById('configuration');
53
- var location = document.getElementById('location');
54
- var connect = document.getElementById('connect');
55
- var disconnect = document.getElementById('disconnect');
56
- var messaging = document.getElementById('messaging');
57
- var message = document.getElementById('message');
58
- var send = document.getElementById('send');
59
- var logger = document.getElementById('logger');
60
-
61
- // ws
62
- var socket;
63
-
64
- connect.onclick = function () {
65
- connect.disabled = true;
66
- disconnect.disabled = false;
67
- messaging.disabled = false;
68
-
69
- socket = new WebSocket(location.value);
70
- socket.onopen = function () { log('CONNECTED'); };
71
- socket.onclose = function () { log('DISCONNECTED'); };
72
- socket.onerror = function () { log('SOCKET ERROR OCCURED'); };
73
- socket.onmessage = function (msg) { log('RECEIVED:' + msg.data); };
74
- }
75
-
76
- disconnect.onclick = function () {
77
- connect.disabled = false;
78
- disconnect.disabled = true;
79
- messaging.disabled = true;
80
- socket.close();
81
- }
82
-
83
- send.onclick = function () {
84
- log('SEND: ' + message.value);
85
- socket.send(message.value);
86
- };
87
-
88
- function log (message) {
89
- logger.value = logger.value + message + '\n'
90
- }
91
-
92
- }
93
- </script>
94
-
95
- </body>
96
- </html>
@@ -1,41 +0,0 @@
1
- /**
2
- * Module dependencies.
3
- */
4
- var express = require('express');
5
- var proxy = require('../../index'); // require('http-proxy-middleware');
6
-
7
- /**
8
- * Configure proxy middleware
9
- */
10
- var wsProxy = proxy('/', {
11
- target: 'http://echo.websocket.org',
12
- // pathRewrite: {
13
- // '^/websocket' : '/socket', // rewrite path.
14
- // '^/removepath' : '' // remove path.
15
- // },
16
- changeOrigin: true, // for vhosted sites, changes host header to match to target's host
17
- ws: true, // enable websocket proxy
18
- logLevel: 'debug'
19
- });
20
-
21
- var app = express();
22
- app.use('/', express.static(__dirname)); // demo page
23
- app.use(wsProxy); // add the proxy to express
24
-
25
- var server = app.listen(3000);
26
- server.on('upgrade', wsProxy.upgrade); // optional: upgrade externally
27
-
28
- console.log('[DEMO] Server: listening on port 3000');
29
- console.log('[DEMO] Opening: http://localhost:3000');
30
-
31
- require('opn')('http://localhost:3000');
32
-
33
- /**
34
- * Example:
35
- * Open http://localhost:3000 in WebSocket compatible browser.
36
- * In browser console:
37
- * 1. `var socket = new WebSocket('ws://localhost:3000');` // create new WebSocket
38
- * 2. `socket.onmessage = function (msg) {console.log(msg)};` // listen to socket messages
39
- * 3. `socket.send('hello world');` // send message
40
- * > {data: "hello world"} // server should echo back your message.
41
- **/
package/recipes/README.md DELETED
@@ -1,110 +0,0 @@
1
- # Recipes
2
-
3
- Common usages of `http-proxy-middleware`.
4
-
5
- # Configuration example
6
-
7
- Overview of `http-proxy-middleware` specific options.
8
-
9
- http-proxy-middleware uses Nodejitsu's [http-proxy](https://github.com/nodejitsu/node-http-proxy) to do the actual proxying. All of its [options](https://github.com/nodejitsu/node-http-proxy#options) are exposed via http-proxy-middleware's configuration object.
10
-
11
-
12
- ```javascript
13
- var proxy = require("http-proxy-middleware");
14
- var winston = require('winston');
15
-
16
- /**
17
- * Context matching: decide which path(s) should be proxied. (wildcards supported)
18
- **/
19
- var context = '/api';
20
-
21
- /**
22
- * Proxy options
23
- */
24
- var options = {
25
- // hostname to the target server
26
- target: 'http://localhost:3000',
27
-
28
- // set correct host headers for name-based virtual hosted sites
29
- changeOrigin: true,
30
-
31
- // enable websocket proxying
32
- ws: true,
33
-
34
- // additional request headers
35
- headers: {
36
- 'x-powered-by': 'foobar'
37
- },
38
-
39
- // rewrite paths
40
- pathRewrite: {
41
- '^/old/api': '/new/api', // rewrite path
42
- '^/remove/api': '' // remove path
43
- },
44
-
45
- // re-target based on the request's host header and/or path
46
- router: {
47
- // host[/path] : <new target>
48
- // /path : <new target>
49
- 'integration.localhost:8000' : 'http://localhost:8001', // host only
50
- 'staging.localhost:8000' : 'http://localhost:8002', // host only
51
- 'localhost:8000/api' : 'http://localhost:8003', // host + path
52
- '/rest' : 'http://localhost:8004' // path only
53
- },
54
-
55
- // control logging
56
- logLevel: 'silent',
57
-
58
- // use a different lib for logging;
59
- // i.e., write logs to file or server
60
- logProvider: function (provider) {
61
- return winston;
62
- },
63
-
64
- // subscribe to http-proxy's error event
65
- onError: function onError(err, req, res) {
66
- res.writeHead(500, {'Content-Type': 'text/plain'});
67
- res.end('Something went wrong.');
68
- },
69
-
70
- // subscribe to http-proxy's proxyRes event
71
- onProxyRes: function (proxyRes, req, res) {
72
- proxyRes.headers['x-added'] = 'foobar';
73
- delete proxyRes.headers['x-removed'];
74
- },
75
-
76
- // subscribe to http-proxy's proxyReq event
77
- onProxyReq: function (proxyReq, req, res) {
78
- // add custom header to request
79
- proxyReq.setHeader('x-powered-by', 'foobar');
80
- }
81
-
82
- /**
83
- * The following options are provided by Nodejitsu's http-proxy
84
- */
85
-
86
- // target
87
- // forward
88
- // agent
89
- // ssl
90
- // ws
91
- // xfwd
92
- // secure
93
- // toProxy
94
- // prependPath
95
- // ignorePath
96
- // localAddress
97
- // changeOrigin
98
- // auth
99
- // hostRewrite
100
- // autoRewrite
101
- // protocolRewrite
102
- // headers
103
-
104
- };
105
-
106
- /**
107
- * Create the proxy middleware, so it can be used in a server.
108
- */
109
- var apiProxy = proxy(context, options);
110
- ```
package/recipes/basic.md DELETED
@@ -1,32 +0,0 @@
1
- # Basic usage
2
-
3
- This example will create a basic proxy middleware.
4
-
5
- ```javascript
6
- var proxy = require("http-proxy-middleware");
7
-
8
- var apiProxy = proxy('/api', {target: 'http://localhost:3000'});
9
- // \____/ \________________________________/
10
- // | |
11
- // context options
12
- ```
13
-
14
- ## Alternative configuration
15
-
16
- The proxy behavior of the following examples are **exactly** the same; Just different ways to configure it.
17
-
18
- ```javascript
19
- app.use(proxy('/api', {target: 'http://localhost:3000', changeOrigin:true}));
20
- ```
21
-
22
- ```javascript
23
- app.use(proxy('http://localhost:3000/api', {changeOrigin:true}));
24
- ```
25
-
26
- ```javascript
27
- app.use('/api', proxy('http://localhost:3000', {changeOrigin:true}));
28
- ```
29
-
30
- ```javascript
31
- app.use('/api', proxy({target: 'http://localhost:3000', changeOrigin:true}));
32
- ```
@@ -1,99 +0,0 @@
1
- # Context matching
2
-
3
- Determine which requests should be proxied.
4
-
5
- Context matching is optional and is useful in cases where you are not able to use the regular [middleware mounting](http://expressjs.com/en/4x/api.html#app.use).
6
-
7
- The [RFC 3986 `path`](https://tools.ietf.org/html/rfc3986#section-3.3) is used for context matching.
8
-
9
- ```
10
- foo://example.com:8042/over/there?name=ferret#nose
11
- \_/ \______________/\_________/ \_________/ \__/
12
- | | | | |
13
- scheme authority path query fragment
14
- ```
15
-
16
-
17
- `http-proxy-middleware` offers several ways to do this:
18
-
19
- <!-- MarkdownTOC autolink=true bracket=round -->
20
-
21
- - [Path](#path)
22
- - [Multi Path](#multi-path)
23
- - [Wildcard](#wildcard)
24
- - [Multi Wildcard](#multi-wildcard)
25
- - [Wildcard / Exclusion](#wildcard--exclusion)
26
- - [Custom filtering](#custom-filtering)
27
-
28
- <!-- /MarkdownTOC -->
29
-
30
-
31
- ## Path
32
-
33
- This will match paths starting with `/api`
34
-
35
- ```javascript
36
- var proxy = require("http-proxy-middleware");
37
-
38
- var apiProxy = proxy('/api', {target: 'http://localhost:3000'});
39
-
40
- // `/api/foo/bar` -> `http://localhost:3000/api/foo/bar`
41
- ```
42
-
43
- ## Multi Path
44
-
45
- This will match paths starting with `/api` or `/rest`
46
-
47
- ```javascript
48
- var proxy = require("http-proxy-middleware");
49
-
50
- var apiProxy = proxy(['/api', '/rest'], {target: 'http://localhost:3000'});
51
-
52
- // `/api/foo/bar` -> `http://localhost:3000/api/foo/bar`
53
- // `/rest/lorum/ipsum` -> `http://localhost:3000/rest/lorum/ipsum`
54
- ```
55
-
56
- ## Wildcard
57
-
58
- This will match paths starting with `/api/` and should also end with `.json`
59
-
60
- ```javascript
61
- var proxy = require("http-proxy-middleware");
62
-
63
- var apiProxy = proxy('/api/**/*.json', {target: 'http://localhost:3000'});
64
- ```
65
-
66
- ## Multi Wildcard
67
-
68
- Multiple wildcards can be used.
69
-
70
- ```javascript
71
- var proxy = require("http-proxy-middleware");
72
-
73
- var apiProxy = proxy(['/api/**/*.json', '/rest/**'], {target: 'http://localhost:3000'});
74
- ```
75
-
76
- ## Wildcard / Exclusion
77
-
78
- This example will create a proxy with wildcard context matching.
79
-
80
- ```javascript
81
- var proxy = require("http-proxy-middleware");
82
-
83
- var apiProxy = proxy(['foo/*.js', '!bar.js'], {target: 'http://localhost:3000'});
84
- ```
85
-
86
- ## Custom filtering
87
-
88
- Write your custom context matching function to have full control on the matching behavior.
89
- The request `pathname` and `req` object are provided to determine which requests should be proxied or not.
90
-
91
- ```javascript
92
- var proxy = require("http-proxy-middleware");
93
-
94
- var filter = function (pathname, req) {
95
- return (pathname.match('^/api') && req.method === 'GET');
96
- };
97
-
98
- var apiProxy = proxy(filter, {target: 'http://localhost:3000'});
99
- ```
@@ -1,21 +0,0 @@
1
- # Corporate Proxy Support
2
-
3
- This example will create a basic proxy middleware with corporate proxy support.
4
-
5
- Provide a custom `http.agent` with [https-proxy-agent](https://github.com/TooTallNate/node-https-proxy-agent) to connect to the corporate proxy server.
6
-
7
- ```javascript
8
- var HttpsProxyAgent = require('https-proxy-agent');
9
- var proxy = require("http-proxy-middleware");
10
-
11
- // corporate proxy to connect to
12
- var proxyServer = process.env.HTTPS_PROXY ||
13
- process.env.HTTP_PROXY;
14
-
15
- var options = {
16
- target: 'http://localhost:3000',
17
- agent: new HttpsProxyAgent(proxyServer)
18
- };
19
-
20
- var apiProxy = proxy('/api', options);
21
- ```
package/recipes/delay.md DELETED
@@ -1,37 +0,0 @@
1
- # Delay proxied request/response
2
-
3
- Sometimes we need the ability to delay request to backend server or response from it back to client to test long execution time of particular url or all of them. With DevTool's [network throttling](https://developers.google.com/web/tools/chrome-devtools/profile/network-performance/network-conditions?hl=en) we can test slowdown of all request, not separately.
4
- But we can handle each request individually via our proxy, and add delay to its execution time.
5
-
6
- Let's assume that we want slow down the access to backend's `/api/get-me-something` resource. Delay request time by 2 seconds and increase response time by 5 seconds.
7
-
8
- For achieving it just put additional route handler to your app before proxy handler:
9
-
10
- ```javascript
11
- const myProxy = proxy({
12
- target: 'http://www.example.com',
13
- changeOrigin: true
14
- });
15
- const proxyDelay = function (req, res, next) {
16
- if (req.originalUrl === '/api/get-me-something') {
17
- // Delay request by 2 seconds
18
- setTimeout(next, 2000);
19
-
20
- // Delay response completion by 5 seconds
21
- const endOriginal = res.end;
22
- res.end = function (...args) {
23
- setTimeout(function () {
24
- endOriginal.apply(res, args);
25
- }, 5000);
26
- };
27
- } else {
28
- next();
29
- }
30
- };
31
-
32
- app.use('/api', proxyDelay, myProxy);
33
- ```
34
-
35
- And you will see result in devtools similar to this:
36
-
37
- ![http-proxy-delay](https://cloud.githubusercontent.com/assets/576077/15839924/49ebe256-2bfb-11e6-8591-ef0101670885.png)
@@ -1,40 +0,0 @@
1
- # Log Level
2
-
3
- Control the amount of logging of http-proxy-middleware.
4
-
5
- Possible values:
6
- * `debug`
7
- * `info`
8
- * `warn` (default)
9
- * `error`
10
- * `silent`
11
-
12
- ## Level: debug
13
-
14
- Log everyting.
15
-
16
- ```javascript
17
- var proxy = require("http-proxy-middleware");
18
-
19
- var options = {
20
- target: 'http://localhost:3000',
21
- logLevel: 'debug'
22
- };
23
-
24
- var apiProxy = proxy('/api', options);
25
- ```
26
-
27
- ## Level: silent
28
-
29
- Suppress all logging.
30
-
31
- ```javascript
32
- var proxy = require("http-proxy-middleware");
33
-
34
- var options = {
35
- target: 'http://localhost:3000',
36
- logLevel: 'silent'
37
- };
38
-
39
- var apiProxy = proxy('/api', options);
40
- ```
@@ -1,77 +0,0 @@
1
- # Log Provider
2
-
3
- Configure your own logger with the `logProvider` option.
4
-
5
- In this example [winston](https://www.npmjs.com/package/winston) is configured to do the actual logging.
6
-
7
- ```javascript
8
- var winston = require('winston');
9
- var proxy = require("http-proxy-middleware");
10
-
11
- var options = {
12
- target: 'http://localhost:3000',
13
- logProvider: function (provider) {
14
- return winston;
15
- }
16
- };
17
-
18
- var apiProxy = proxy('/api', options);
19
- ```
20
-
21
- ## Winston
22
-
23
- Configure your own logger with the `logProvider` option.
24
-
25
- In this example [winston](https://www.npmjs.com/package/winston) is configured to do the actual logging. Map the logging api if needed.
26
-
27
- ```javascript
28
-
29
- var winston = require('winston');
30
- var proxy = require("http-proxy-middleware");
31
-
32
- var logProvider = function (provider) {
33
- return {
34
- log : winston.log,
35
- debug : winston.debug,
36
- info : winston.info,
37
- warn : winston.warn,
38
- error : winston.error
39
- };
40
- };
41
-
42
- var options = {
43
- target: 'http://localhost:3000',
44
- logProvider: logProvider
45
- };
46
-
47
- var apiProxy = proxy('/api', options);
48
- ```
49
-
50
- # Winston Multi Transport
51
-
52
- Configure your own logger with the `logProvider` option.
53
-
54
- In this example [winston](https://www.npmjs.com/package/winston) is configured to do the actual logging.
55
-
56
- ```javascript
57
- var winston = require('winston');
58
- var proxy = require("http-proxy-middleware");
59
-
60
- var logProvider = function (provider) {
61
- var logger = new (winston.Logger)({
62
- transports: [
63
- new (winston.transports.Console)(),
64
- new (winston.transports.File)({ filename: 'somefile.log' })
65
- ]
66
- });
67
-
68
- return logger;
69
- };
70
-
71
- var options = {
72
- target: 'http://localhost:3000',
73
- logProvider: logProvider
74
- };
75
-
76
- var apiProxy = proxy('/api', options);
77
- ```
@@ -1,74 +0,0 @@
1
- ##Modify Post Parameters:
2
- The code example below illustrates how to modify POST body data prior to forwarding to the proxy target.
3
- Key to this example is the *"OnProxyReq"* event handler that creates a new POST body that can be manipulated to format the POST data as required. For example: inject new POST parameters that should only be visible server side.
4
-
5
- This example uses the *"body-parser"* module in the main app to create a req.body object with the decoded POST parameters. Side note - the code below will allow *"http-proxy-middleware"* to work with *"body-parser"*.
6
-
7
- Since this only modifys the request body stream the original POST body parameters remain in tact, so any POST data changes will not be sent back in the response to the client.
8
-
9
- ## Example:
10
-
11
- 'use strict';
12
-
13
- var express = require('express');
14
- var ProxyMiddleware = require('http-proxy-middleware');
15
- var router = express.Router();
16
-
17
- var proxy_filter = function (path, req) {
18
- return path.match('^/docs') && ( req.method === 'GET' || req.method === 'POST' );
19
- };
20
-
21
- var proxy_options = {
22
- target: 'http://localhost:8080',
23
- pathRewrite: {
24
- '^/docs' : '/java/rep/server1' // Host path & target path conversion
25
- },
26
- onError(err, req, res) {
27
- res.writeHead(500, {
28
- 'Content-Type': 'text/plain'
29
- });
30
- res.end('Something went wrong. And we are reporting a custom error message.' + err);
31
- },
32
- onProxyReq(proxyReq, req, res) {
33
- if ( req.method == "POST" && req.body ) {
34
- // Add req.body logic here if needed....
35
-
36
- // ....
37
-
38
- // Remove body-parser body object from the request
39
- if ( req.body ) delete req.body;
40
-
41
- // Make any needed POST parameter changes
42
- let body = new Object();
43
-
44
- body.filename = 'reports/statistics/summary_2016.pdf';
45
- body.routeid = 's003b012d002';
46
- body.authid = 'bac02c1d-258a-4177-9da6-862580154960';
47
-
48
- // URI encode JSON object
49
- body = Object.keys( body ).map(function( key ) {
50
- return encodeURIComponent( key ) + '=' + encodeURIComponent( body[ key ])
51
- }).join('&');
52
-
53
- // Update header
54
- proxyReq.setHeader( 'content-type', 'application/x-www-form-urlencoded' );
55
- proxyReq.setHeader( 'content-length', body.length );
56
-
57
- // Write out body changes to the proxyReq stream
58
- proxyReq.write( body );
59
- proxyReq.end();
60
- }
61
- }
62
- };
63
-
64
- // Proxy configuration
65
- var proxy = ProxyMiddleware( proxy_filter, proxy_options );
66
-
67
- /* GET home page. */
68
- router.get('/', function(req, res, next) {
69
- res.render('index', { title: 'Node.js Express Proxy Test' });
70
- });
71
-
72
- router.all('/docs', proxy );
73
-
74
- module.exports = router;