{"version":3,"file":"response-iterator.js","sources":["../../src/iterators/async.ts","../../src/iterators/nodeStream.ts","../../src/iterators/promise.ts","../../src/iterators/reader.ts","../../src/index.ts"],"sourcesContent":["export default function asyncIterator(source): AsyncIterableIterator {\n const iterator = source[Symbol.asyncIterator]();\n return {\n next(): Promise> {\n return iterator.next();\n },\n [Symbol.asyncIterator](): AsyncIterator {\n return this;\n },\n } as AsyncIterableIterator;\n}\n","import { Readable as NodeReadableStream } from 'stream';\n\nconst hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;\n\n/* c8 ignore start */\nexport default function nodeStreamIterator(stream: NodeReadableStream): AsyncIterableIterator {\n let cleanup = null;\n let error = null;\n let done = false;\n const data = [];\n const waiting = [];\n\n function onData(chunk) {\n if (error) return;\n if (waiting.length) return waiting.shift()[0]({ value: chunk, done: false });\n data.push(chunk);\n }\n function onError(err) {\n error = err;\n const all = waiting.slice();\n all.forEach(function (pair) {\n pair[1](err);\n });\n !cleanup || cleanup();\n }\n function onEnd() {\n done = true;\n const all = waiting.slice();\n all.forEach(function (pair) {\n pair[0]({ value: undefined, done: true });\n });\n !cleanup || cleanup();\n }\n\n cleanup = function () {\n cleanup = null;\n stream.removeListener('data', onData);\n stream.removeListener('error', onError);\n stream.removeListener('end', onEnd);\n stream.removeListener('finish', onEnd);\n stream.removeListener('close', onEnd);\n };\n stream.on('data', onData);\n stream.on('error', onError);\n stream.on('end', onEnd);\n stream.on('finish', onEnd);\n stream.on('close', onEnd);\n\n function getNext(): Promise> {\n return new Promise(function (resolve, reject) {\n if (error) return reject(error);\n if (data.length) return resolve({ value: data.shift(), done: false });\n if (done) return resolve({ value: undefined, done: true });\n waiting.push([resolve, reject]);\n });\n }\n\n const iterator = {\n next(): Promise> {\n return getNext();\n },\n };\n\n if (hasIterator) {\n iterator[Symbol.asyncIterator] = function (): AsyncIterator {\n return this;\n };\n }\n\n return iterator as AsyncIterableIterator;\n}\n/* c8 ignore stop */\n","const hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;\n\n/* c8 ignore start */\nexport default function promiseIterator(promise): AsyncIterableIterator {\n let resolved = false;\n\n const iterator = {\n next(): Promise> {\n if (resolved) return Promise.resolve({ value: undefined, done: true });\n resolved = true;\n return new Promise(function (resolve, reject) {\n promise\n .then(function (value) {\n resolve({ value, done: false });\n })\n .catch(reject);\n });\n },\n };\n\n if (hasIterator) {\n iterator[Symbol.asyncIterator] = function (): AsyncIterator {\n return this;\n };\n }\n\n return iterator as AsyncIterableIterator;\n}\n/* c8 ignore stop */\n","const hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;\n\n/* c8 ignore start */\nexport default function readerIterator(reader): AsyncIterableIterator {\n const iterator = {\n next(): Promise> {\n return reader.read();\n },\n };\n\n if (hasIterator) {\n iterator[Symbol.asyncIterator] = function (): AsyncIterator {\n return this;\n };\n }\n\n return iterator as AsyncIterableIterator;\n}\n/* c8 ignore stop */\n","import { AxiosResponse } from 'axios';\nimport { Response as NodeResponse } from 'node-fetch';\nimport { Readable as NodeReadableStream } from 'stream';\n\n// @ts-ignore\nimport asyncIterator from './iterators/async.ts';\n// @ts-ignore\nimport nodeStreamIterator from './iterators/nodeStream.ts';\n// @ts-ignore\nimport promiseIterator from './iterators/promise.ts';\n// @ts-ignore\nimport readerIterator from './iterators/reader.ts';\n\ninterface CrossFetchResponse {\n _bodyBlob: Blob;\n}\n\nconst hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;\n\n/**\n * @param response A response. Supports fetch, node-fetch, and cross-fetch\n */\nexport default function responseIterator(response: unknown): AsyncIterableIterator {\n if (response === undefined) throw new Error('Missing response for responseIterator');\n\n // determine the body\n let body: unknown = response;\n if ((response as NodeResponse).body) body = (response as NodeResponse).body;\n // node-fetch, browser fetch, undici\n else if ((response as AxiosResponse).data) body = (response as AxiosResponse).data;\n // axios\n /* c8 ignore start */ else if ((response as CrossFetchResponse)._bodyBlob) body = (response as CrossFetchResponse)._bodyBlob; // cross-fetch\n /* c8 ignore stop */\n\n // adapt the body\n if (hasIterator && body[Symbol.asyncIterator]) return asyncIterator(body as AsyncIterableIterator);\n /* c8 ignore start */\n if ((body as ReadableStream).getReader) return readerIterator((body as ReadableStream).getReader());\n if ((body as Blob).stream) return readerIterator(((body as Blob).stream() as unknown as ReadableStream).getReader());\n if ((body as Blob).arrayBuffer) return promiseIterator((body as Blob).arrayBuffer());\n if ((body as NodeReadableStream).pipe) return nodeStreamIterator(body as NodeReadableStream);\n /* c8 ignore stop */\n\n throw new Error('Unknown body type for responseIterator. Maybe you are not passing a streamable response');\n}\n"],"names":["asyncIterator","source","iterator","Symbol","next","hasIterator","nodeStreamIterator","stream","onData","chunk","error","waiting","length","shift","value","done","data","push","onError","err","all","slice","forEach","pair","cleanup","onEnd","undefined","getNext","Promise","resolve","reject","removeListener","on","promiseIterator","promise","resolved","then","catch","readerIterator","reader","read","responseIterator","response","Error","body","_bodyBlob","getReader","arrayBuffer","pipe"],"mappings":"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"}