response-iterator 0.2.21 → 0.2.22
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.
- package/dist/cjs/{index.cjs → index.js} +4 -4
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/{index.mjs → index.js} +4 -4
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/iterators/async.d.ts +1 -0
- package/dist/esm/iterators/nodeStream.d.ts +2 -0
- package/dist/esm/iterators/promise.d.ts +1 -0
- package/dist/esm/iterators/reader.d.ts +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/umd/response-iterator.cjs.map +1 -1
- package/dist/umd/response-iterator.min.cjs.map +1 -1
- package/package.json +4 -4
- package/dist/cjs/index.cjs.map +0 -1
- package/dist/esm/index.mjs.map +0 -1
- /package/dist/{esm/index.d.mts → cjs/index.d.ts} +0 -0
- /package/dist/{esm/iterators/async.d.mts → cjs/iterators/async.d.ts} +0 -0
- /package/dist/cjs/iterators/{async.cjs → async.js} +0 -0
- /package/dist/cjs/iterators/{async.cjs.map → async.js.map} +0 -0
- /package/dist/{esm/iterators/nodeStream.d.mts → cjs/iterators/nodeStream.d.ts} +0 -0
- /package/dist/cjs/iterators/{nodeStream.cjs → nodeStream.js} +0 -0
- /package/dist/cjs/iterators/{nodeStream.cjs.map → nodeStream.js.map} +0 -0
- /package/dist/{esm/iterators/promise.d.mts → cjs/iterators/promise.d.ts} +0 -0
- /package/dist/cjs/iterators/{promise.cjs → promise.js} +0 -0
- /package/dist/cjs/iterators/{promise.cjs.map → promise.js.map} +0 -0
- /package/dist/{esm/iterators/reader.d.mts → cjs/iterators/reader.d.ts} +0 -0
- /package/dist/cjs/iterators/{reader.cjs → reader.js} +0 -0
- /package/dist/cjs/iterators/{reader.cjs.map → reader.js.map} +0 -0
- /package/dist/esm/iterators/{async.mjs → async.js} +0 -0
- /package/dist/esm/iterators/{async.mjs.map → async.js.map} +0 -0
- /package/dist/esm/iterators/{nodeStream.mjs → nodeStream.js} +0 -0
- /package/dist/esm/iterators/{nodeStream.mjs.map → nodeStream.js.map} +0 -0
- /package/dist/esm/iterators/{promise.mjs → promise.js} +0 -0
- /package/dist/esm/iterators/{promise.mjs.map → promise.js.map} +0 -0
- /package/dist/esm/iterators/{reader.mjs → reader.js} +0 -0
- /package/dist/esm/iterators/{reader.mjs.map → reader.js.map} +0 -0
@@ -10,10 +10,10 @@ Object.defineProperty(exports, /**
|
|
10
10
|
return responseIterator;
|
11
11
|
}
|
12
12
|
});
|
13
|
-
var _async = /*#__PURE__*/ _interop_require_default(require("./iterators/async.
|
14
|
-
var _nodeStream = /*#__PURE__*/ _interop_require_default(require("./iterators/nodeStream.
|
15
|
-
var _promise = /*#__PURE__*/ _interop_require_default(require("./iterators/promise.
|
16
|
-
var _reader = /*#__PURE__*/ _interop_require_default(require("./iterators/reader.
|
13
|
+
var _async = /*#__PURE__*/ _interop_require_default(require("./iterators/async.js"));
|
14
|
+
var _nodeStream = /*#__PURE__*/ _interop_require_default(require("./iterators/nodeStream.js"));
|
15
|
+
var _promise = /*#__PURE__*/ _interop_require_default(require("./iterators/promise.js"));
|
16
|
+
var _reader = /*#__PURE__*/ _interop_require_default(require("./iterators/reader.js"));
|
17
17
|
function _interop_require_default(obj) {
|
18
18
|
return obj && obj.__esModule ? obj : {
|
19
19
|
default: obj
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/http/response-iterator/src/index.ts"],"sourcesContent":["import type { Readable as NodeReadableStream } from 'stream';\nimport type { AxiosResponse } from 'axios';\nimport type { Response as NodeResponse } from 'node-fetch';\n\nimport asyncIterator from './iterators/async.js';\nimport nodeStreamIterator from './iterators/nodeStream.js';\nimport promiseIterator from './iterators/promise.js';\nimport readerIterator from './iterators/reader.js';\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<T>(response: unknown): AsyncIterableIterator<T> {\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<T>(body as AsyncIterableIterator<T>);\n /* c8 ignore start */\n if ((body as ReadableStream<T>).getReader) return readerIterator<T>((body as ReadableStream<T>).getReader());\n if ((body as Blob).stream) return readerIterator<T>(((body as Blob).stream() as unknown as ReadableStream<T>).getReader());\n if ((body as Blob).arrayBuffer) return promiseIterator<T>((body as Blob).arrayBuffer());\n if ((body as NodeReadableStream).pipe) return nodeStreamIterator<T>(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":["responseIterator","hasIterator","Symbol","asyncIterator","response","undefined","Error","body","data","_bodyBlob","getReader","readerIterator","stream","arrayBuffer","promiseIterator","pipe","nodeStreamIterator"],"mappings":";;;;+BAeA;;CAEC,GACD;;;eAAwBA;;;4DAdE;iEACK;8DACH;6DACD;;;;;;AAM3B,IAAMC,cAAc,OAAOC,WAAW,eAAeA,OAAOC,aAAa;AAK1D,SAASH,iBAAoBI,QAAiB;IAC3D,IAAIA,aAAaC,WAAW,MAAM,IAAIC,MAAM;IAE5C,qBAAqB;IACrB,IAAIC,OAAgBH;IACpB,IAAI,AAACA,SAA0BG,IAAI,EAAEA,OAAO,AAACH,SAA0BG,IAAI;SAEtE,IAAI,AAACH,SAA2BI,IAAI,EAAED,OAAO,AAACH,SAA2BI,IAAI;SAEvD,IAAI,AAACJ,SAAgCK,SAAS,EAAEF,OAAO,AAACH,SAAgCK,SAAS,EAAE,cAAc;IAC5I,kBAAkB,GAElB,iBAAiB;IACjB,IAAIR,eAAeM,IAAI,CAACL,OAAOC,aAAa,CAAC,EAAE,OAAOA,IAAAA,cAAa,EAAII;IACvE,mBAAmB,GACnB,IAAI,AAACA,KAA2BG,SAAS,EAAE,OAAOC,IAAAA,eAAc,EAAI,AAACJ,KAA2BG,SAAS;IACzG,IAAI,AAACH,KAAcK,MAAM,EAAE,OAAOD,IAAAA,eAAc,EAAI,AAAC,AAACJ,KAAcK,MAAM,GAAoCF,SAAS;IACvH,IAAI,AAACH,KAAcM,WAAW,EAAE,OAAOC,IAAAA,gBAAe,EAAI,AAACP,KAAcM,WAAW;IACpF,IAAI,AAACN,KAA4BQ,IAAI,EAAE,OAAOC,IAAAA,mBAAkB,EAAIT;IACpE,kBAAkB,GAElB,MAAM,IAAID,MAAM;AAClB"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{ "type": "commonjs" }
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import asyncIterator from './iterators/async.
|
2
|
-
import nodeStreamIterator from './iterators/nodeStream.
|
3
|
-
import promiseIterator from './iterators/promise.
|
4
|
-
import readerIterator from './iterators/reader.
|
1
|
+
import asyncIterator from './iterators/async.js';
|
2
|
+
import nodeStreamIterator from './iterators/nodeStream.js';
|
3
|
+
import promiseIterator from './iterators/promise.js';
|
4
|
+
import readerIterator from './iterators/reader.js';
|
5
5
|
const hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;
|
6
6
|
/**
|
7
7
|
* @param response A response. Supports fetch, node-fetch, and cross-fetch
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/http/response-iterator/src/index.ts"],"sourcesContent":["import type { Readable as NodeReadableStream } from 'stream';\nimport type { AxiosResponse } from 'axios';\nimport type { Response as NodeResponse } from 'node-fetch';\n\nimport asyncIterator from './iterators/async.js';\nimport nodeStreamIterator from './iterators/nodeStream.js';\nimport promiseIterator from './iterators/promise.js';\nimport readerIterator from './iterators/reader.js';\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<T>(response: unknown): AsyncIterableIterator<T> {\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<T>(body as AsyncIterableIterator<T>);\n /* c8 ignore start */\n if ((body as ReadableStream<T>).getReader) return readerIterator<T>((body as ReadableStream<T>).getReader());\n if ((body as Blob).stream) return readerIterator<T>(((body as Blob).stream() as unknown as ReadableStream<T>).getReader());\n if ((body as Blob).arrayBuffer) return promiseIterator<T>((body as Blob).arrayBuffer());\n if ((body as NodeReadableStream).pipe) return nodeStreamIterator<T>(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","nodeStreamIterator","promiseIterator","readerIterator","hasIterator","Symbol","responseIterator","response","undefined","Error","body","data","_bodyBlob","getReader","stream","arrayBuffer","pipe"],"mappings":"AAIA,OAAOA,mBAAmB,uBAAuB;AACjD,OAAOC,wBAAwB,4BAA4B;AAC3D,OAAOC,qBAAqB,yBAAyB;AACrD,OAAOC,oBAAoB,wBAAwB;AAMnD,MAAMC,cAAc,OAAOC,WAAW,eAAeA,OAAOL,aAAa;AAEzE;;CAEC,GACD,eAAe,SAASM,iBAAoBC,QAAiB;IAC3D,IAAIA,aAAaC,WAAW,MAAM,IAAIC,MAAM;IAE5C,qBAAqB;IACrB,IAAIC,OAAgBH;IACpB,IAAI,AAACA,SAA0BG,IAAI,EAAEA,OAAO,AAACH,SAA0BG,IAAI;SAEtE,IAAI,AAACH,SAA2BI,IAAI,EAAED,OAAO,AAACH,SAA2BI,IAAI;SAEvD,IAAI,AAACJ,SAAgCK,SAAS,EAAEF,OAAO,AAACH,SAAgCK,SAAS,EAAE,cAAc;IAC5I,kBAAkB,GAElB,iBAAiB;IACjB,IAAIR,eAAeM,IAAI,CAACL,OAAOL,aAAa,CAAC,EAAE,OAAOA,cAAiBU;IACvE,mBAAmB,GACnB,IAAI,AAACA,KAA2BG,SAAS,EAAE,OAAOV,eAAkB,AAACO,KAA2BG,SAAS;IACzG,IAAI,AAACH,KAAcI,MAAM,EAAE,OAAOX,eAAkB,AAAC,AAACO,KAAcI,MAAM,GAAoCD,SAAS;IACvH,IAAI,AAACH,KAAcK,WAAW,EAAE,OAAOb,gBAAmB,AAACQ,KAAcK,WAAW;IACpF,IAAI,AAACL,KAA4BM,IAAI,EAAE,OAAOf,mBAAsBS;IACpE,kBAAkB,GAElB,MAAM,IAAID,MAAM;AAClB"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export default function asyncIterator<T>(source: any): AsyncIterableIterator<T>;
|
@@ -0,0 +1 @@
|
|
1
|
+
export default function promiseIterator<T>(promise: any): AsyncIterableIterator<T>;
|
@@ -0,0 +1 @@
|
|
1
|
+
export default function readerIterator<T>(reader: any): AsyncIterableIterator<T>;
|
@@ -0,0 +1 @@
|
|
1
|
+
{ "type": "module" }
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"response-iterator.cjs","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<T>(source): AsyncIterableIterator<T> {\n const iterator = source[Symbol.asyncIterator]();\n return {\n next(): Promise<IteratorResult<T, boolean>> {\n return iterator.next();\n },\n [Symbol.asyncIterator](): AsyncIterator<T> {\n return this;\n },\n } as AsyncIterableIterator<T>;\n}\n","import type { Readable as NodeReadableStream } from 'stream';\n\nconst hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;\n\n/* c8 ignore start */\nexport default function nodeStreamIterator<T>(stream: NodeReadableStream): AsyncIterableIterator<T> {\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((pair) => {\n pair[1](err);\n });\n !cleanup || cleanup();\n }\n function onEnd() {\n done = true;\n const all = waiting.slice();\n all.forEach((pair) => {\n pair[0]({ value: undefined, done: true });\n });\n !cleanup || cleanup();\n }\n\n cleanup = () => {\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<IteratorResult<T, boolean>> {\n return new Promise((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<IteratorResult<T, boolean>> {\n return getNext();\n },\n };\n\n if (hasIterator) {\n iterator[Symbol.asyncIterator] = function (): AsyncIterator<T> {\n return this;\n };\n }\n\n return iterator as AsyncIterableIterator<T>;\n}\n/* c8 ignore stop */\n","const hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;\n\n/* c8 ignore start */\nexport default function promiseIterator<T>(promise): AsyncIterableIterator<T> {\n let resolved = false;\n\n const iterator = {\n next(): Promise<IteratorResult<T, boolean>> {\n if (resolved) return Promise.resolve({ value: undefined, done: true });\n resolved = true;\n return new Promise((resolve, reject) => {\n promise\n .then((value) => {\n resolve({ value, done: false });\n })\n .catch(reject);\n });\n },\n };\n\n if (hasIterator) {\n iterator[Symbol.asyncIterator] = function (): AsyncIterator<T> {\n return this;\n };\n }\n\n return iterator as AsyncIterableIterator<T>;\n}\n/* c8 ignore stop */\n","const hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;\n\n/* c8 ignore start */\nexport default function readerIterator<T>(reader): AsyncIterableIterator<T> {\n const iterator = {\n next(): Promise<IteratorResult<T, boolean>> {\n return reader.read();\n },\n };\n\n if (hasIterator) {\n iterator[Symbol.asyncIterator] = function (): AsyncIterator<T> {\n return this;\n };\n }\n\n return iterator as AsyncIterableIterator<T>;\n}\n/* c8 ignore stop */\n","import type { Readable as NodeReadableStream } from 'stream';\nimport type { AxiosResponse } from 'axios';\nimport type { Response as NodeResponse } from 'node-fetch';\n\nimport asyncIterator from './iterators/async';\nimport nodeStreamIterator from './iterators/nodeStream';\nimport promiseIterator from './iterators/promise';\nimport readerIterator from './iterators/reader';\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<T>(response: unknown): AsyncIterableIterator<T> {\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<T>(body as AsyncIterableIterator<T>);\n /* c8 ignore start */\n if ((body as ReadableStream<T>).getReader) return readerIterator<T>((body as ReadableStream<T>).getReader());\n if ((body as Blob).stream) return readerIterator<T>(((body as Blob).stream() as unknown as ReadableStream<T>).getReader());\n if ((body as Blob).arrayBuffer) return promiseIterator<T>((body as Blob).arrayBuffer());\n if ((body as NodeReadableStream).pipe) return nodeStreamIterator<T>(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","cleanup","error","done","data","waiting","onData","chunk","length","shift","value","push","onError","err","all","slice","forEach","pair","onEnd","undefined","removeListener","on","getNext","Promise","resolve","reject","promiseIterator","promise","resolved","then","catch","readerIterator","reader","read","responseIterator","response","Error","body","_bodyBlob","getReader","arrayBuffer","pipe"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"response-iterator.cjs","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<T>(source): AsyncIterableIterator<T> {\n const iterator = source[Symbol.asyncIterator]();\n return {\n next(): Promise<IteratorResult<T, boolean>> {\n return iterator.next();\n },\n [Symbol.asyncIterator](): AsyncIterator<T> {\n return this;\n },\n } as AsyncIterableIterator<T>;\n}\n","import type { Readable as NodeReadableStream } from 'stream';\n\nconst hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;\n\n/* c8 ignore start */\nexport default function nodeStreamIterator<T>(stream: NodeReadableStream): AsyncIterableIterator<T> {\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((pair) => {\n pair[1](err);\n });\n !cleanup || cleanup();\n }\n function onEnd() {\n done = true;\n const all = waiting.slice();\n all.forEach((pair) => {\n pair[0]({ value: undefined, done: true });\n });\n !cleanup || cleanup();\n }\n\n cleanup = () => {\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<IteratorResult<T, boolean>> {\n return new Promise((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<IteratorResult<T, boolean>> {\n return getNext();\n },\n };\n\n if (hasIterator) {\n iterator[Symbol.asyncIterator] = function (): AsyncIterator<T> {\n return this;\n };\n }\n\n return iterator as AsyncIterableIterator<T>;\n}\n/* c8 ignore stop */\n","const hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;\n\n/* c8 ignore start */\nexport default function promiseIterator<T>(promise): AsyncIterableIterator<T> {\n let resolved = false;\n\n const iterator = {\n next(): Promise<IteratorResult<T, boolean>> {\n if (resolved) return Promise.resolve({ value: undefined, done: true });\n resolved = true;\n return new Promise((resolve, reject) => {\n promise\n .then((value) => {\n resolve({ value, done: false });\n })\n .catch(reject);\n });\n },\n };\n\n if (hasIterator) {\n iterator[Symbol.asyncIterator] = function (): AsyncIterator<T> {\n return this;\n };\n }\n\n return iterator as AsyncIterableIterator<T>;\n}\n/* c8 ignore stop */\n","const hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;\n\n/* c8 ignore start */\nexport default function readerIterator<T>(reader): AsyncIterableIterator<T> {\n const iterator = {\n next(): Promise<IteratorResult<T, boolean>> {\n return reader.read();\n },\n };\n\n if (hasIterator) {\n iterator[Symbol.asyncIterator] = function (): AsyncIterator<T> {\n return this;\n };\n }\n\n return iterator as AsyncIterableIterator<T>;\n}\n/* c8 ignore stop */\n","import type { Readable as NodeReadableStream } from 'stream';\nimport type { AxiosResponse } from 'axios';\nimport type { Response as NodeResponse } from 'node-fetch';\n\nimport asyncIterator from './iterators/async.js';\nimport nodeStreamIterator from './iterators/nodeStream.js';\nimport promiseIterator from './iterators/promise.js';\nimport readerIterator from './iterators/reader.js';\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<T>(response: unknown): AsyncIterableIterator<T> {\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<T>(body as AsyncIterableIterator<T>);\n /* c8 ignore start */\n if ((body as ReadableStream<T>).getReader) return readerIterator<T>((body as ReadableStream<T>).getReader());\n if ((body as Blob).stream) return readerIterator<T>(((body as Blob).stream() as unknown as ReadableStream<T>).getReader());\n if ((body as Blob).arrayBuffer) return promiseIterator<T>((body as Blob).arrayBuffer());\n if ((body as NodeReadableStream).pipe) return nodeStreamIterator<T>(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","cleanup","error","done","data","waiting","onData","chunk","length","shift","value","push","onError","err","all","slice","forEach","pair","onEnd","undefined","removeListener","on","getNext","Promise","resolve","reject","promiseIterator","promise","resolved","then","catch","readerIterator","reader","read","responseIterator","response","Error","body","_bodyBlob","getReader","arrayBuffer","pipe"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"response-iterator.min.cjs","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<T>(source): AsyncIterableIterator<T> {\n const iterator = source[Symbol.asyncIterator]();\n return {\n next(): Promise<IteratorResult<T, boolean>> {\n return iterator.next();\n },\n [Symbol.asyncIterator](): AsyncIterator<T> {\n return this;\n },\n } as AsyncIterableIterator<T>;\n}\n","import type { Readable as NodeReadableStream } from 'stream';\n\nconst hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;\n\n/* c8 ignore start */\nexport default function nodeStreamIterator<T>(stream: NodeReadableStream): AsyncIterableIterator<T> {\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((pair) => {\n pair[1](err);\n });\n !cleanup || cleanup();\n }\n function onEnd() {\n done = true;\n const all = waiting.slice();\n all.forEach((pair) => {\n pair[0]({ value: undefined, done: true });\n });\n !cleanup || cleanup();\n }\n\n cleanup = () => {\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<IteratorResult<T, boolean>> {\n return new Promise((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<IteratorResult<T, boolean>> {\n return getNext();\n },\n };\n\n if (hasIterator) {\n iterator[Symbol.asyncIterator] = function (): AsyncIterator<T> {\n return this;\n };\n }\n\n return iterator as AsyncIterableIterator<T>;\n}\n/* c8 ignore stop */\n","const hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;\n\n/* c8 ignore start */\nexport default function promiseIterator<T>(promise): AsyncIterableIterator<T> {\n let resolved = false;\n\n const iterator = {\n next(): Promise<IteratorResult<T, boolean>> {\n if (resolved) return Promise.resolve({ value: undefined, done: true });\n resolved = true;\n return new Promise((resolve, reject) => {\n promise\n .then((value) => {\n resolve({ value, done: false });\n })\n .catch(reject);\n });\n },\n };\n\n if (hasIterator) {\n iterator[Symbol.asyncIterator] = function (): AsyncIterator<T> {\n return this;\n };\n }\n\n return iterator as AsyncIterableIterator<T>;\n}\n/* c8 ignore stop */\n","const hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;\n\n/* c8 ignore start */\nexport default function readerIterator<T>(reader): AsyncIterableIterator<T> {\n const iterator = {\n next(): Promise<IteratorResult<T, boolean>> {\n return reader.read();\n },\n };\n\n if (hasIterator) {\n iterator[Symbol.asyncIterator] = function (): AsyncIterator<T> {\n return this;\n };\n }\n\n return iterator as AsyncIterableIterator<T>;\n}\n/* c8 ignore stop */\n","import type { Readable as NodeReadableStream } from 'stream';\nimport type { AxiosResponse } from 'axios';\nimport type { Response as NodeResponse } from 'node-fetch';\n\nimport asyncIterator from './iterators/async';\nimport nodeStreamIterator from './iterators/nodeStream';\nimport promiseIterator from './iterators/promise';\nimport readerIterator from './iterators/reader';\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<T>(response: unknown): AsyncIterableIterator<T> {\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<T>(body as AsyncIterableIterator<T>);\n /* c8 ignore start */\n if ((body as ReadableStream<T>).getReader) return readerIterator<T>((body as ReadableStream<T>).getReader());\n if ((body as Blob).stream) return readerIterator<T>(((body as Blob).stream() as unknown as ReadableStream<T>).getReader());\n if ((body as Blob).arrayBuffer) return promiseIterator<T>((body as Blob).arrayBuffer());\n if ((body as NodeReadableStream).pipe) return nodeStreamIterator<T>(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","this","hasIterator","nodeStreamIterator","stream","cleanup","error","done","data","waiting","onData","chunk","length","shift","value","push","onError","err","slice","forEach","pair","onEnd","undefined","removeListener","on","Promise","resolve","reject","readerIterator","reader","read","response","Error","promise","resolved","body","_bodyBlob","getReader","arrayBuffer","then","catch","pipe"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"response-iterator.min.cjs","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<T>(source): AsyncIterableIterator<T> {\n const iterator = source[Symbol.asyncIterator]();\n return {\n next(): Promise<IteratorResult<T, boolean>> {\n return iterator.next();\n },\n [Symbol.asyncIterator](): AsyncIterator<T> {\n return this;\n },\n } as AsyncIterableIterator<T>;\n}\n","import type { Readable as NodeReadableStream } from 'stream';\n\nconst hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;\n\n/* c8 ignore start */\nexport default function nodeStreamIterator<T>(stream: NodeReadableStream): AsyncIterableIterator<T> {\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((pair) => {\n pair[1](err);\n });\n !cleanup || cleanup();\n }\n function onEnd() {\n done = true;\n const all = waiting.slice();\n all.forEach((pair) => {\n pair[0]({ value: undefined, done: true });\n });\n !cleanup || cleanup();\n }\n\n cleanup = () => {\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<IteratorResult<T, boolean>> {\n return new Promise((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<IteratorResult<T, boolean>> {\n return getNext();\n },\n };\n\n if (hasIterator) {\n iterator[Symbol.asyncIterator] = function (): AsyncIterator<T> {\n return this;\n };\n }\n\n return iterator as AsyncIterableIterator<T>;\n}\n/* c8 ignore stop */\n","const hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;\n\n/* c8 ignore start */\nexport default function promiseIterator<T>(promise): AsyncIterableIterator<T> {\n let resolved = false;\n\n const iterator = {\n next(): Promise<IteratorResult<T, boolean>> {\n if (resolved) return Promise.resolve({ value: undefined, done: true });\n resolved = true;\n return new Promise((resolve, reject) => {\n promise\n .then((value) => {\n resolve({ value, done: false });\n })\n .catch(reject);\n });\n },\n };\n\n if (hasIterator) {\n iterator[Symbol.asyncIterator] = function (): AsyncIterator<T> {\n return this;\n };\n }\n\n return iterator as AsyncIterableIterator<T>;\n}\n/* c8 ignore stop */\n","const hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;\n\n/* c8 ignore start */\nexport default function readerIterator<T>(reader): AsyncIterableIterator<T> {\n const iterator = {\n next(): Promise<IteratorResult<T, boolean>> {\n return reader.read();\n },\n };\n\n if (hasIterator) {\n iterator[Symbol.asyncIterator] = function (): AsyncIterator<T> {\n return this;\n };\n }\n\n return iterator as AsyncIterableIterator<T>;\n}\n/* c8 ignore stop */\n","import type { Readable as NodeReadableStream } from 'stream';\nimport type { AxiosResponse } from 'axios';\nimport type { Response as NodeResponse } from 'node-fetch';\n\nimport asyncIterator from './iterators/async.js';\nimport nodeStreamIterator from './iterators/nodeStream.js';\nimport promiseIterator from './iterators/promise.js';\nimport readerIterator from './iterators/reader.js';\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<T>(response: unknown): AsyncIterableIterator<T> {\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<T>(body as AsyncIterableIterator<T>);\n /* c8 ignore start */\n if ((body as ReadableStream<T>).getReader) return readerIterator<T>((body as ReadableStream<T>).getReader());\n if ((body as Blob).stream) return readerIterator<T>(((body as Blob).stream() as unknown as ReadableStream<T>).getReader());\n if ((body as Blob).arrayBuffer) return promiseIterator<T>((body as Blob).arrayBuffer());\n if ((body as NodeReadableStream).pipe) return nodeStreamIterator<T>(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","this","hasIterator","nodeStreamIterator","stream","cleanup","error","done","data","waiting","onData","chunk","length","shift","value","push","onError","err","slice","forEach","pair","onEnd","undefined","removeListener","on","Promise","resolve","reject","readerIterator","reader","read","response","Error","promise","resolved","body","_bodyBlob","getReader","arrayBuffer","then","catch","pipe"],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "response-iterator",
|
3
|
-
"version": "0.2.
|
3
|
+
"version": "0.2.22",
|
4
4
|
"description": "Creates an async iterator for a variety of inputs in the browser and node. Supports fetch, node-fetch, and cross-fetch",
|
5
5
|
"keywords": [
|
6
6
|
"Symbol",
|
@@ -42,13 +42,13 @@
|
|
42
42
|
"type": "module",
|
43
43
|
"exports": {
|
44
44
|
".": {
|
45
|
-
"import": "./dist/esm/index.
|
46
|
-
"require": "./dist/cjs/index.
|
45
|
+
"import": "./dist/esm/index.js",
|
46
|
+
"require": "./dist/cjs/index.js"
|
47
47
|
},
|
48
48
|
"./package.json": "./package.json",
|
49
49
|
"./umd": "./dist/umd/response-iterator.cjs"
|
50
50
|
},
|
51
|
-
"main": "dist/cjs/index.
|
51
|
+
"main": "dist/cjs/index.js",
|
52
52
|
"types": "dist/cjs/index.d.cts",
|
53
53
|
"files": [
|
54
54
|
"dist"
|
package/dist/cjs/index.cjs.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/http/response-iterator/src/index.ts"],"sourcesContent":["import type { Readable as NodeReadableStream } from 'stream';\nimport type { AxiosResponse } from 'axios';\nimport type { Response as NodeResponse } from 'node-fetch';\n\nimport asyncIterator from './iterators/async';\nimport nodeStreamIterator from './iterators/nodeStream';\nimport promiseIterator from './iterators/promise';\nimport readerIterator from './iterators/reader';\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<T>(response: unknown): AsyncIterableIterator<T> {\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<T>(body as AsyncIterableIterator<T>);\n /* c8 ignore start */\n if ((body as ReadableStream<T>).getReader) return readerIterator<T>((body as ReadableStream<T>).getReader());\n if ((body as Blob).stream) return readerIterator<T>(((body as Blob).stream() as unknown as ReadableStream<T>).getReader());\n if ((body as Blob).arrayBuffer) return promiseIterator<T>((body as Blob).arrayBuffer());\n if ((body as NodeReadableStream).pipe) return nodeStreamIterator<T>(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":["responseIterator","hasIterator","Symbol","asyncIterator","response","undefined","Error","body","data","_bodyBlob","getReader","readerIterator","stream","arrayBuffer","promiseIterator","pipe","nodeStreamIterator"],"mappings":";;;;+BAeA;;CAEC,GACD;;;eAAwBA;;;4DAdE;iEACK;8DACH;6DACD;;;;;;AAM3B,IAAMC,cAAc,OAAOC,WAAW,eAAeA,OAAOC,aAAa;AAK1D,SAASH,iBAAoBI,QAAiB;IAC3D,IAAIA,aAAaC,WAAW,MAAM,IAAIC,MAAM;IAE5C,qBAAqB;IACrB,IAAIC,OAAgBH;IACpB,IAAI,AAACA,SAA0BG,IAAI,EAAEA,OAAO,AAACH,SAA0BG,IAAI;SAEtE,IAAI,AAACH,SAA2BI,IAAI,EAAED,OAAO,AAACH,SAA2BI,IAAI;SAEvD,IAAI,AAACJ,SAAgCK,SAAS,EAAEF,OAAO,AAACH,SAAgCK,SAAS,EAAE,cAAc;IAC5I,kBAAkB,GAElB,iBAAiB;IACjB,IAAIR,eAAeM,IAAI,CAACL,OAAOC,aAAa,CAAC,EAAE,OAAOA,IAAAA,cAAa,EAAII;IACvE,mBAAmB,GACnB,IAAI,AAACA,KAA2BG,SAAS,EAAE,OAAOC,IAAAA,eAAc,EAAI,AAACJ,KAA2BG,SAAS;IACzG,IAAI,AAACH,KAAcK,MAAM,EAAE,OAAOD,IAAAA,eAAc,EAAI,AAAC,AAACJ,KAAcK,MAAM,GAAoCF,SAAS;IACvH,IAAI,AAACH,KAAcM,WAAW,EAAE,OAAOC,IAAAA,gBAAe,EAAI,AAACP,KAAcM,WAAW;IACpF,IAAI,AAACN,KAA4BQ,IAAI,EAAE,OAAOC,IAAAA,mBAAkB,EAAIT;IACpE,kBAAkB,GAElB,MAAM,IAAID,MAAM;AAClB"}
|
package/dist/esm/index.mjs.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/http/response-iterator/src/index.ts"],"sourcesContent":["import type { Readable as NodeReadableStream } from 'stream';\nimport type { AxiosResponse } from 'axios';\nimport type { Response as NodeResponse } from 'node-fetch';\n\nimport asyncIterator from './iterators/async';\nimport nodeStreamIterator from './iterators/nodeStream';\nimport promiseIterator from './iterators/promise';\nimport readerIterator from './iterators/reader';\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<T>(response: unknown): AsyncIterableIterator<T> {\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<T>(body as AsyncIterableIterator<T>);\n /* c8 ignore start */\n if ((body as ReadableStream<T>).getReader) return readerIterator<T>((body as ReadableStream<T>).getReader());\n if ((body as Blob).stream) return readerIterator<T>(((body as Blob).stream() as unknown as ReadableStream<T>).getReader());\n if ((body as Blob).arrayBuffer) return promiseIterator<T>((body as Blob).arrayBuffer());\n if ((body as NodeReadableStream).pipe) return nodeStreamIterator<T>(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","nodeStreamIterator","promiseIterator","readerIterator","hasIterator","Symbol","responseIterator","response","undefined","Error","body","data","_bodyBlob","getReader","stream","arrayBuffer","pipe"],"mappings":"AAIA,OAAOA,mBAAmB,oBAAoB;AAC9C,OAAOC,wBAAwB,yBAAyB;AACxD,OAAOC,qBAAqB,sBAAsB;AAClD,OAAOC,oBAAoB,qBAAqB;AAMhD,MAAMC,cAAc,OAAOC,WAAW,eAAeA,OAAOL,aAAa;AAEzE;;CAEC,GACD,eAAe,SAASM,iBAAoBC,QAAiB;IAC3D,IAAIA,aAAaC,WAAW,MAAM,IAAIC,MAAM;IAE5C,qBAAqB;IACrB,IAAIC,OAAgBH;IACpB,IAAI,AAACA,SAA0BG,IAAI,EAAEA,OAAO,AAACH,SAA0BG,IAAI;SAEtE,IAAI,AAACH,SAA2BI,IAAI,EAAED,OAAO,AAACH,SAA2BI,IAAI;SAEvD,IAAI,AAACJ,SAAgCK,SAAS,EAAEF,OAAO,AAACH,SAAgCK,SAAS,EAAE,cAAc;IAC5I,kBAAkB,GAElB,iBAAiB;IACjB,IAAIR,eAAeM,IAAI,CAACL,OAAOL,aAAa,CAAC,EAAE,OAAOA,cAAiBU;IACvE,mBAAmB,GACnB,IAAI,AAACA,KAA2BG,SAAS,EAAE,OAAOV,eAAkB,AAACO,KAA2BG,SAAS;IACzG,IAAI,AAACH,KAAcI,MAAM,EAAE,OAAOX,eAAkB,AAAC,AAACO,KAAcI,MAAM,GAAoCD,SAAS;IACvH,IAAI,AAACH,KAAcK,WAAW,EAAE,OAAOb,gBAAmB,AAACQ,KAAcK,WAAW;IACpF,IAAI,AAACL,KAA4BM,IAAI,EAAE,OAAOf,mBAAsBS;IACpE,kBAAkB,GAElB,MAAM,IAAID,MAAM;AAClB"}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|