/opt/canhelp/node_modules/next/dist/server/lib/router-utils
NameSizeModeActions
block-cross-site.d.ts2770644editdlrm
block-cross-site.js32420644editdlrm
block-cross-site.js.map52200644editdlrm
build-data-route.d.ts2360644editdlrm
build-data-route.js19010644editdlrm
build-data-route.js.map26760644editdlrm
build-prefetch-segment-data-route.d.ts7880644editdlrm
build-prefetch-segment-data-route.js26130644editdlrm
build-prefetch-segment-data-route.js.map37020644editdlrm
decode-path-params.d.ts3450644editdlrm
decode-path-params.js14810644editdlrm
decode-path-params.js.map15700644editdlrm
filesystem.d.ts27200644editdlrm
filesystem.js271530644editdlrm
filesystem.js.map376760644editdlrm
instrumentation-globals.external.d.ts5040644editdlrm
instrumentation-globals.external.js36020644editdlrm
instrumentation-globals.external.js.map47580644editdlrm
instrumentation-node-extensions.d.ts1940644editdlrm
instrumentation-node-extensions.js50300644editdlrm
instrumentation-node-extensions.js.map71780644editdlrm
is-postpone.d.ts570644editdlrm
is-postpone.js4360644editdlrm
is-postpone.js.map5970644editdlrm
proxy-request.d.ts3700644editdlrm
proxy-request.js42890644editdlrm
proxy-request.js.map65810644editdlrm
resolve-routes.d.ts11250644editdlrm
resolve-routes.js338990644editdlrm
resolve-routes.js.map471420644editdlrm
route-types-utils.d.ts24280644editdlrm
route-types-utils.js113940644editdlrm
route-types-utils.js.map192130644editdlrm
router-server-context.d.ts11290644editdlrm
router-server-context.js6890644editdlrm
router-server-context.js.map22830644editdlrm
setup-dev-bundler.d.ts27220644editdlrm
setup-dev-bundler.js473040644editdlrm
setup-dev-bundler.js.map681600644editdlrm
typegen.d.ts3370644editdlrm
typegen.js247410644editdlrm
typegen.js.map347410644editdlrm
types.d.ts1810644editdlrm
types.js1150644editdlrm
types.js.map670644editdlrm
Edit: /opt/canhelp/node_modules/next/dist/server/lib/router-utils/proxy-request.js.map (6581B)
{"version":3,"sources":["../../../../src/server/lib/router-utils/proxy-request.ts"],"sourcesContent":["import type { IncomingMessage, ServerResponse } from 'http'\nimport type { NextUrlWithParsedQuery } from '../../request-meta'\n\nimport url from 'url'\nimport { stringifyQuery } from '../../server-route-utils'\nimport { Duplex } from 'stream'\nimport { DetachedPromise } from '../../../lib/detached-promise'\n\nexport async function proxyRequest(\n req: IncomingMessage,\n res: ServerResponse | Duplex,\n parsedUrl: NextUrlWithParsedQuery,\n upgradeHead?: Buffer,\n reqBody?: any,\n proxyTimeout?: number | null\n) {\n const { query } = parsedUrl\n delete (parsedUrl as any).query\n parsedUrl.search = stringifyQuery(req as any, query)\n\n const target = url.format(parsedUrl)\n const HttpProxy =\n require('next/dist/compiled/http-proxy') as typeof import('next/dist/compiled/http-proxy')\n\n const proxy = new HttpProxy({\n target,\n changeOrigin: true,\n ignorePath: true,\n ws: true,\n // we limit proxy requests to 30s by default, in development\n // we don't time out WebSocket requests to allow proxying\n proxyTimeout: proxyTimeout === null ? undefined : proxyTimeout || 30_000,\n headers: {\n 'x-forwarded-host': req.headers.host || '',\n },\n })\n\n let finished = false\n\n // http-proxy does not properly detect a client disconnect in newer\n // versions of Node.js. This is caused because it only listens for the\n // `aborted` event on the our request object, but it also fully reads\n // and closes the request object. Node **will not** fire `aborted` when\n // the request is already closed. Listening for `close` on our response\n // object will detect the disconnect, and we can abort the proxy's\n // connection.\n proxy.on('proxyReq', (proxyReq) => {\n res.on('close', () => proxyReq.destroy())\n })\n\n proxy.on('proxyRes', (proxyRes) => {\n if (res.destroyed) {\n proxyRes.destroy()\n } else {\n res.on('close', () => proxyRes.destroy())\n }\n })\n\n proxy.on('proxyRes', (proxyRes, innerReq, innerRes) => {\n const cleanup = (err: any) => {\n // cleanup event listeners to allow clean garbage collection\n proxyRes.removeListener('error', cleanup)\n proxyRes.removeListener('close', cleanup)\n innerRes.removeListener('error', cleanup)\n innerRes.removeListener('close', cleanup)\n\n // destroy all source streams to propagate the caught event backward\n innerReq.destroy(err)\n proxyRes.destroy(err)\n }\n\n proxyRes.once('error', cleanup)\n proxyRes.once('close', cleanup)\n innerRes.once('error', cleanup)\n innerRes.once('close', cleanup)\n })\n\n const detached = new DetachedPromise()\n\n proxy.on('error', (err) => {\n console.error(`Failed to proxy ${target}`, err)\n if (!finished) {\n finished = true\n detached.reject(err)\n\n if (!res.destroyed) {\n if (!(res instanceof Duplex)) {\n res.statusCode = 500\n }\n\n res.end('Internal Server Error')\n }\n }\n })\n\n // If upgrade head is present or the response is a Duplex stream, treat as\n // WebSocket request.\n if (upgradeHead || res instanceof Duplex) {\n proxy.on('proxyReqWs', (proxyReq) => {\n proxyReq.on('close', () => {\n if (!finished) {\n finished = true\n detached.resolve(true)\n }\n })\n })\n proxy.ws(req, res, upgradeHead)\n detached.resolve(true)\n } else {\n proxy.on('proxyReq', (proxyReq) => {\n proxyReq.on('close', () => {\n if (!finished) {\n finished = true\n detached.resolve(true)\n }\n })\n })\n proxy.web(req, res, {\n buffer: reqBody,\n })\n }\n\n // When the proxy finishes proxying the request, shut down the proxy.\n return detached.promise.finally(() => {\n proxy.close()\n })\n}\n"],"names":["proxyRequest","req","res","parsedUrl","upgradeHead","reqBody","proxyTimeout","query","search","stringifyQuery","target","url","format","HttpProxy","require","proxy","changeOrigin","ignorePath","ws","undefined","headers","host","finished","on","proxyReq","destroy","proxyRes","destroyed","innerReq","innerRes","cleanup","err","removeListener","once","detached","DetachedPromise","console","error","reject","Duplex","statusCode","end","resolve","web","buffer","promise","finally","close"],"mappings":"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","ignoreList":[0]}