/
opt
/
canhelp
/
node_modules
/
next
/
dist
/
server
/
lib
/
router-utils
/
/opt/canhelp/node_modules/next/dist/server/lib/router-utils
mkdir
upload
Name
Size
Mode
Actions
block-cross-site.d.ts
277
0644
edit
dl
rm
block-cross-site.js
3242
0644
edit
dl
rm
block-cross-site.js.map
5220
0644
edit
dl
rm
build-data-route.d.ts
236
0644
edit
dl
rm
build-data-route.js
1901
0644
edit
dl
rm
build-data-route.js.map
2676
0644
edit
dl
rm
build-prefetch-segment-data-route.d.ts
788
0644
edit
dl
rm
build-prefetch-segment-data-route.js
2613
0644
edit
dl
rm
build-prefetch-segment-data-route.js.map
3702
0644
edit
dl
rm
decode-path-params.d.ts
345
0644
edit
dl
rm
decode-path-params.js
1481
0644
edit
dl
rm
decode-path-params.js.map
1570
0644
edit
dl
rm
filesystem.d.ts
2720
0644
edit
dl
rm
filesystem.js
27153
0644
edit
dl
rm
filesystem.js.map
37676
0644
edit
dl
rm
instrumentation-globals.external.d.ts
504
0644
edit
dl
rm
instrumentation-globals.external.js
3602
0644
edit
dl
rm
instrumentation-globals.external.js.map
4758
0644
edit
dl
rm
instrumentation-node-extensions.d.ts
194
0644
edit
dl
rm
instrumentation-node-extensions.js
5030
0644
edit
dl
rm
instrumentation-node-extensions.js.map
7178
0644
edit
dl
rm
is-postpone.d.ts
57
0644
edit
dl
rm
is-postpone.js
436
0644
edit
dl
rm
is-postpone.js.map
597
0644
edit
dl
rm
proxy-request.d.ts
370
0644
edit
dl
rm
proxy-request.js
4289
0644
edit
dl
rm
proxy-request.js.map
6581
0644
edit
dl
rm
resolve-routes.d.ts
1125
0644
edit
dl
rm
resolve-routes.js
33899
0644
edit
dl
rm
resolve-routes.js.map
47142
0644
edit
dl
rm
route-types-utils.d.ts
2428
0644
edit
dl
rm
route-types-utils.js
11394
0644
edit
dl
rm
route-types-utils.js.map
19213
0644
edit
dl
rm
router-server-context.d.ts
1129
0644
edit
dl
rm
router-server-context.js
689
0644
edit
dl
rm
router-server-context.js.map
2283
0644
edit
dl
rm
setup-dev-bundler.d.ts
2722
0644
edit
dl
rm
setup-dev-bundler.js
47304
0644
edit
dl
rm
setup-dev-bundler.js.map
68160
0644
edit
dl
rm
typegen.d.ts
337
0644
edit
dl
rm
typegen.js
24741
0644
edit
dl
rm
typegen.js.map
34741
0644
edit
dl
rm
types.d.ts
181
0644
edit
dl
rm
types.js
115
0644
edit
dl
rm
types.js.map
67
0644
edit
dl
rm
Edit:
/opt/canhelp/node_modules/next/dist/server/lib/router-utils/proxy-request.js
(4289B)
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "proxyRequest", { enumerable: true, get: function() { return proxyRequest; } }); const _url = /*#__PURE__*/ _interop_require_default(require("url")); const _serverrouteutils = require("../../server-route-utils"); const _stream = require("stream"); const _detachedpromise = require("../../../lib/detached-promise"); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } async function proxyRequest(req, res, parsedUrl, upgradeHead, reqBody, proxyTimeout) { const { query } = parsedUrl; delete parsedUrl.query; parsedUrl.search = (0, _serverrouteutils.stringifyQuery)(req, query); const target = _url.default.format(parsedUrl); const HttpProxy = require('next/dist/compiled/http-proxy'); const proxy = new HttpProxy({ target, changeOrigin: true, ignorePath: true, ws: true, // we limit proxy requests to 30s by default, in development // we don't time out WebSocket requests to allow proxying proxyTimeout: proxyTimeout === null ? undefined : proxyTimeout || 30000, headers: { 'x-forwarded-host': req.headers.host || '' } }); let finished = false; // http-proxy does not properly detect a client disconnect in newer // versions of Node.js. This is caused because it only listens for the // `aborted` event on the our request object, but it also fully reads // and closes the request object. Node **will not** fire `aborted` when // the request is already closed. Listening for `close` on our response // object will detect the disconnect, and we can abort the proxy's // connection. proxy.on('proxyReq', (proxyReq)=>{ res.on('close', ()=>proxyReq.destroy()); }); proxy.on('proxyRes', (proxyRes)=>{ if (res.destroyed) { proxyRes.destroy(); } else { res.on('close', ()=>proxyRes.destroy()); } }); proxy.on('proxyRes', (proxyRes, innerReq, innerRes)=>{ const cleanup = (err)=>{ // cleanup event listeners to allow clean garbage collection proxyRes.removeListener('error', cleanup); proxyRes.removeListener('close', cleanup); innerRes.removeListener('error', cleanup); innerRes.removeListener('close', cleanup); // destroy all source streams to propagate the caught event backward innerReq.destroy(err); proxyRes.destroy(err); }; proxyRes.once('error', cleanup); proxyRes.once('close', cleanup); innerRes.once('error', cleanup); innerRes.once('close', cleanup); }); const detached = new _detachedpromise.DetachedPromise(); proxy.on('error', (err)=>{ console.error(`Failed to proxy ${target}`, err); if (!finished) { finished = true; detached.reject(err); if (!res.destroyed) { if (!(res instanceof _stream.Duplex)) { res.statusCode = 500; } res.end('Internal Server Error'); } } }); // If upgrade head is present or the response is a Duplex stream, treat as // WebSocket request. if (upgradeHead || res instanceof _stream.Duplex) { proxy.on('proxyReqWs', (proxyReq)=>{ proxyReq.on('close', ()=>{ if (!finished) { finished = true; detached.resolve(true); } }); }); proxy.ws(req, res, upgradeHead); detached.resolve(true); } else { proxy.on('proxyReq', (proxyReq)=>{ proxyReq.on('close', ()=>{ if (!finished) { finished = true; detached.resolve(true); } }); }); proxy.web(req, res, { buffer: reqBody }); } // When the proxy finishes proxying the request, shut down the proxy. return detached.promise.finally(()=>{ proxy.close(); }); } //# sourceMappingURL=proxy-request.js.map
Save
cmd:
run