Files
docs/node_modules/@algolia/requester-node-http/dist/requester.http.cjs.map

1 line
5.2 KiB
Plaintext
Raw Normal View History

2025-08-27 14:05:33 +08:00
{"version":3,"sources":["../src/index.ts","../src/createHttpRequester.ts"],"sourcesContent":["export * from './createHttpRequester';\n","import http from 'http';\nimport https from 'https';\nimport { URL } from 'url';\n\nimport type { EndRequest, Requester, Response } from '@algolia/client-common';\n\nexport type CreateHttpRequesterOptions = Partial<{\n agent: http.Agent | https.Agent;\n httpAgent: http.Agent;\n httpsAgent: https.Agent;\n /**\n * RequestOptions to be merged with the end request, it will override default options if provided.\n */\n requesterOptions: https.RequestOptions;\n}>;\n\n// Global agents allow us to reuse the TCP protocol with multiple clients\nconst agentOptions = { keepAlive: true };\nconst defaultHttpAgent = new http.Agent(agentOptions);\nconst defaultHttpsAgent = new https.Agent(agentOptions);\n\nexport function createHttpRequester({\n agent: userGlobalAgent,\n httpAgent: userHttpAgent,\n httpsAgent: userHttpsAgent,\n requesterOptions = {},\n}: CreateHttpRequesterOptions = {}): Requester {\n const httpAgent = userHttpAgent || userGlobalAgent || defaultHttpAgent;\n const httpsAgent = userHttpsAgent || userGlobalAgent || defaultHttpsAgent;\n\n function send(request: EndRequest): Promise<Response> {\n return new Promise((resolve) => {\n let responseTimeout: NodeJS.Timeout | undefined;\n let connectTimeout: NodeJS.Timeout | undefined;\n const url = new URL(request.url);\n const path = url.search === null ? url.pathname : `${url.pathname}${url.search}`;\n const options: https.RequestOptions = {\n agent: url.protocol === 'https:' ? httpsAgent : httpAgent,\n hostname: url.hostname,\n path,\n method: request.method,\n ...requesterOptions,\n headers: {\n ...request.headers,\n ...requesterOptions.headers,\n },\n };\n\n if (url.port && !requesterOptions.port) {\n options.port = url.port;\n }\n\n const req = (url.protocol === 'https:' ? https : http).request(options, (response) => {\n let contentBuffers: Buffer[] = [];\n\n response.on('data', (chunk) => {\n contentBuffers = contentBuffers.concat(chunk);\n });\n\n response.on('end', () => {\n clearTimeout(connectTimeout as NodeJS.Timeout);\n clearTimeout(responseTimeout as NodeJS.Timeout);\n\n resolve({\n status: response.statusCode || 0,\n content: Buffer.concat(contentBuffers).toString(),\n isTimedOut: false,\n });\n });\n });\n\n const createTimeout = (timeout: number, content: string): NodeJS.Timeout => {\n return setTimeout(() => {\n req.destroy();\n\n resolve({\n status: 0,\n content,\n isTimedOut: true,\n });\n }, timeout);\n };\n\n connectTimeout = createTimeout(request.connectTimeout, 'Connection timeout');\n\n req.on('error', (error) => {\n clearTimeout(connectTimeout as NodeJS.Timeout);\n clearTimeout(responseTimeout!);\n resolve({ status: 0, content: error.message, isTimedOut: false });\n });\n\n req.once('response', () => {\n clearTimeout(connectTimeout as NodeJS.Timeout);\n responseTimeout = createTimeout(request.responseTimeout, 'Socket timeout');\n });\n\n if (request.data !== undefined) {\n req.write(request.data);\n }\n\n req.end();\n });\n }\n\n return { send };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,kBAAiB;AACjB,mBAAkB;AAClB,iBAAoB;AAepB,IAAM,eAAe,EAAE,WAAW,KAAK;AACvC,IAAM,mBAAmB,IAAI,YAAAA,QAAK,MAAM,YAAY;AACpD,IAAM,oBAAoB,IAAI,aAAAC,QAAM,MAAM,YAAY;AAE/C,SAAS,oBAAoB;AAAA,EAClC,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,mBAAmB,CAAC;AACtB,IAAgC,CAAC,GAAc;AAC7C,QAAM,YAAY,iBAAiB,mBAAmB;AACtD,QAAM,aAAa,kBAAkB,mBAAmB;AAExD,WAAS,KAAK,SAAwC;AACpD,WAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,UAAI;AACJ,UAAI;AACJ,YAAM,MAAM,IAAI,eAAI,QAAQ,GAAG;AAC/B,YAAM,OAAO,IAAI,WAAW,OAAO,IAAI,WAAW,GAAG,IAAI,QAAQ,