response-iterator 0.2.5 → 0.2.7

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.
Files changed (37) hide show
  1. package/dist/cjs/index.cjs +38 -0
  2. package/dist/cjs/index.cjs.map +1 -0
  3. package/dist/cjs/iterators/{async.js → async.cjs} +18 -12
  4. package/dist/cjs/iterators/async.cjs.map +1 -0
  5. package/dist/cjs/iterators/{nodeStream.js → nodeStream.cjs} +34 -28
  6. package/dist/cjs/iterators/nodeStream.cjs.map +1 -0
  7. package/dist/cjs/iterators/{promise.js → promise.cjs} +10 -4
  8. package/dist/cjs/iterators/promise.cjs.map +1 -0
  9. package/dist/cjs/iterators/reader.cjs +25 -0
  10. package/dist/cjs/iterators/reader.cjs.map +1 -0
  11. package/dist/esm/index.mjs +9 -13
  12. package/dist/esm/index.mjs.map +1 -1
  13. package/dist/esm/iterators/async.mjs +8 -20
  14. package/dist/esm/iterators/async.mjs.map +1 -1
  15. package/dist/esm/iterators/nodeStream.mjs +34 -34
  16. package/dist/esm/iterators/nodeStream.mjs.map +1 -1
  17. package/dist/esm/iterators/promise.mjs +9 -9
  18. package/dist/esm/iterators/promise.mjs.map +1 -1
  19. package/dist/esm/iterators/reader.mjs +4 -4
  20. package/dist/esm/iterators/reader.mjs.map +1 -1
  21. package/dist/types/iterators/nodeStream.d.ts +1 -2
  22. package/dist/umd/{response-iterator.js → response-iterator.cjs} +38 -38
  23. package/dist/umd/response-iterator.cjs.map +1 -0
  24. package/dist/umd/response-iterator.min.cjs +2 -0
  25. package/dist/umd/response-iterator.min.cjs.map +1 -0
  26. package/package.json +58 -46
  27. package/dist/cjs/index.js +0 -30
  28. package/dist/cjs/index.js.map +0 -1
  29. package/dist/cjs/iterators/async.js.map +0 -1
  30. package/dist/cjs/iterators/nodeStream.js.map +0 -1
  31. package/dist/cjs/iterators/promise.js.map +0 -1
  32. package/dist/cjs/iterators/reader.js +0 -19
  33. package/dist/cjs/iterators/reader.js.map +0 -1
  34. package/dist/cjs/package.json +0 -1
  35. package/dist/esm/package.json +0 -1
  36. package/dist/umd/package.json +0 -1
  37. package/dist/umd/response-iterator.min.js +0 -173
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, /**
6
+ * @param response A response. Supports fetch, node-fetch, and cross-fetch
7
+ */ "default", {
8
+ enumerable: true,
9
+ get: function() {
10
+ return responseIterator;
11
+ }
12
+ });
13
+ var _async = /*#__PURE__*/ _interop_require_default(require("./iterators/async.cjs"));
14
+ var _nodeStream = /*#__PURE__*/ _interop_require_default(require("./iterators/nodeStream.cjs"));
15
+ var _promise = /*#__PURE__*/ _interop_require_default(require("./iterators/promise.cjs"));
16
+ var _reader = /*#__PURE__*/ _interop_require_default(require("./iterators/reader.cjs"));
17
+ function _interop_require_default(obj) {
18
+ return obj && obj.__esModule ? obj : {
19
+ default: obj
20
+ };
21
+ }
22
+ var hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;
23
+ function responseIterator(response) {
24
+ if (response === undefined) throw new Error('Missing response for responseIterator');
25
+ // determine the body
26
+ var body = response;
27
+ if (response.body) body = response.body;
28
+ else if (response.data) body = response.data;
29
+ else if (response._bodyBlob) body = response._bodyBlob; // cross-fetch
30
+ /* c8 ignore stop */ // adapt the body
31
+ if (hasIterator && body[Symbol.asyncIterator]) return (0, _async.default)(body);
32
+ /* c8 ignore start */ if (body.getReader) return (0, _reader.default)(body.getReader());
33
+ if (body.stream) return (0, _reader.default)(body.stream().getReader());
34
+ if (body.arrayBuffer) return (0, _promise.default)(body.arrayBuffer());
35
+ if (body.pipe) return (0, _nodeStream.default)(body);
36
+ /* c8 ignore stop */ throw new Error('Unknown body type for responseIterator. Maybe you are not passing a streamable response');
37
+ }
38
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -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';\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"}
@@ -2,18 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- module.exports = asyncIterator;
6
- function asyncIterator(source) {
7
- var iterator = source[Symbol.asyncIterator]();
8
- return _defineProperty({
9
- next: function next() {
10
- return iterator.next();
11
- }
12
- }, Symbol.asyncIterator, function() {
13
- return this;
14
- });
15
- }
16
- function _defineProperty(obj, key, value) {
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return asyncIterator;
9
+ }
10
+ });
11
+ function _define_property(obj, key, value) {
17
12
  if (key in obj) {
18
13
  Object.defineProperty(obj, key, {
19
14
  value: value,
@@ -26,3 +21,14 @@ function _defineProperty(obj, key, value) {
26
21
  }
27
22
  return obj;
28
23
  }
24
+ function asyncIterator(source) {
25
+ var iterator = source[Symbol.asyncIterator]();
26
+ return _define_property({
27
+ next: function next() {
28
+ return iterator.next();
29
+ }
30
+ }, Symbol.asyncIterator, function() {
31
+ return this;
32
+ });
33
+ }
34
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/http/response-iterator/src/iterators/async.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"],"names":["asyncIterator","source","iterator","Symbol","next"],"mappings":";;;;+BAAA;;;eAAwBA;;;;;;;;;;;;;;;;AAAT,SAASA,cAAiBC,MAAM;IAC7C,IAAMC,WAAWD,MAAM,CAACE,OAAOH,aAAa,CAAC;IAC7C,OAIE;QAHAI,MAAAA,SAAAA;YACE,OAAOF,SAASE,IAAI;QACtB;OACCD,OAAOH,aAAa,EAArB;QACE,OAAO,IAAI;IACb;AAEJ"}
@@ -2,25 +2,36 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- module.exports = nodeStreamIterator;
5
+ Object.defineProperty(exports, /* c8 ignore start */ "default" /* c8 ignore stop */ , {
6
+ enumerable: true,
7
+ get: function() {
8
+ return nodeStreamIterator;
9
+ }
10
+ });
11
+ var hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;
6
12
  function nodeStreamIterator(stream) {
7
- var onData = function onData(chunk) {
13
+ var cleanup = null;
14
+ var error = null;
15
+ var done = false;
16
+ var data = [];
17
+ var waiting = [];
18
+ function onData(chunk) {
8
19
  if (error) return;
9
20
  if (waiting.length) return waiting.shift()[0]({
10
21
  value: chunk,
11
22
  done: false
12
23
  });
13
24
  data.push(chunk);
14
- };
15
- var onError = function onError(err) {
25
+ }
26
+ function onError(err) {
16
27
  error = err;
17
28
  var all = waiting.slice();
18
29
  all.forEach(function(pair) {
19
30
  pair[1](err);
20
31
  });
21
32
  !cleanup || cleanup();
22
- };
23
- var onEnd = function onEnd() {
33
+ }
34
+ function onEnd() {
24
35
  done = true;
25
36
  var all = waiting.slice();
26
37
  all.forEach(function(pair) {
@@ -30,8 +41,21 @@ function nodeStreamIterator(stream) {
30
41
  });
31
42
  });
32
43
  !cleanup || cleanup();
44
+ }
45
+ cleanup = function() {
46
+ cleanup = null;
47
+ stream.removeListener('data', onData);
48
+ stream.removeListener('error', onError);
49
+ stream.removeListener('end', onEnd);
50
+ stream.removeListener('finish', onEnd);
51
+ stream.removeListener('close', onEnd);
33
52
  };
34
- var getNext = function getNext() {
53
+ stream.on('data', onData);
54
+ stream.on('error', onError);
55
+ stream.on('end', onEnd);
56
+ stream.on('finish', onEnd);
57
+ stream.on('close', onEnd);
58
+ function getNext() {
35
59
  return new Promise(function(resolve, reject) {
36
60
  if (error) return reject(error);
37
61
  if (data.length) return resolve({
@@ -47,25 +71,7 @@ function nodeStreamIterator(stream) {
47
71
  reject
48
72
  ]);
49
73
  });
50
- };
51
- var cleanup = null;
52
- var error = null;
53
- var done = false;
54
- var data = [];
55
- var waiting = [];
56
- cleanup = function() {
57
- cleanup = null;
58
- stream.removeListener("data", onData);
59
- stream.removeListener("error", onError);
60
- stream.removeListener("end", onEnd);
61
- stream.removeListener("finish", onEnd);
62
- stream.removeListener("close", onEnd);
63
- };
64
- stream.on("data", onData);
65
- stream.on("error", onError);
66
- stream.on("end", onEnd);
67
- stream.on("finish", onEnd);
68
- stream.on("close", onEnd);
74
+ }
69
75
  var iterator = {
70
76
  next: function next() {
71
77
  return getNext();
@@ -77,5 +83,5 @@ function nodeStreamIterator(stream) {
77
83
  };
78
84
  }
79
85
  return iterator;
80
- } /* c8 ignore stop */
81
- var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
86
+ }
87
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/http/response-iterator/src/iterators/nodeStream.ts"],"sourcesContent":["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"],"names":["nodeStreamIterator","hasIterator","Symbol","asyncIterator","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","iterator","next"],"mappings":";;;;+BAIA,mBAAmB,GACnB,UAkEA,kBAAkB;;;eAlEMA;;;AAHxB,IAAMC,cAAc,OAAOC,WAAW,eAAeA,OAAOC,aAAa;AAG1D,SAASH,mBAAsBI,MAA0B;IACtE,IAAIC,UAAU;IACd,IAAIC,QAAQ;IACZ,IAAIC,OAAO;IACX,IAAMC,OAAO,EAAE;IACf,IAAMC,UAAU,EAAE;IAElB,SAASC,OAAOC,KAAK;QACnB,IAAIL,OAAO;QACX,IAAIG,QAAQG,MAAM,EAAE,OAAOH,QAAQI,KAAK,EAAE,CAAC,EAAE,CAAC;YAAEC,OAAOH;YAAOJ,MAAM;QAAM;QAC1EC,KAAKO,IAAI,CAACJ;IACZ;IACA,SAASK,QAAQC,GAAG;QAClBX,QAAQW;QACR,IAAMC,MAAMT,QAAQU,KAAK;QACzBD,IAAIE,OAAO,CAAC,SAACC;YACXA,IAAI,CAAC,EAAE,CAACJ;QACV;QACA,CAACZ,WAAWA;IACd;IACA,SAASiB;QACPf,OAAO;QACP,IAAMW,MAAMT,QAAQU,KAAK;QACzBD,IAAIE,OAAO,CAAC,SAACC;YACXA,IAAI,CAAC,EAAE,CAAC;gBAAEP,OAAOS;gBAAWhB,MAAM;YAAK;QACzC;QACA,CAACF,WAAWA;IACd;IAEAA,UAAU;QACRA,UAAU;QACVD,OAAOoB,cAAc,CAAC,QAAQd;QAC9BN,OAAOoB,cAAc,CAAC,SAASR;QAC/BZ,OAAOoB,cAAc,CAAC,OAAOF;QAC7BlB,OAAOoB,cAAc,CAAC,UAAUF;QAChClB,OAAOoB,cAAc,CAAC,SAASF;IACjC;IACAlB,OAAOqB,EAAE,CAAC,QAAQf;IAClBN,OAAOqB,EAAE,CAAC,SAAST;IACnBZ,OAAOqB,EAAE,CAAC,OAAOH;IACjBlB,OAAOqB,EAAE,CAAC,UAAUH;IACpBlB,OAAOqB,EAAE,CAAC,SAASH;IAEnB,SAASI;QACP,OAAO,IAAIC,QAAQ,SAACC,SAASC;YAC3B,IAAIvB,OAAO,OAAOuB,OAAOvB;YACzB,IAAIE,KAAKI,MAAM,EAAE,OAAOgB,QAAQ;gBAAEd,OAAON,KAAKK,KAAK;gBAAIN,MAAM;YAAM;YACnE,IAAIA,MAAM,OAAOqB,QAAQ;gBAAEd,OAAOS;gBAAWhB,MAAM;YAAK;YACxDE,QAAQM,IAAI,CAAC;gBAACa;gBAASC;aAAO;QAChC;IACF;IAEA,IAAMC,WAAW;QACfC,MAAAA,SAAAA;YACE,OAAOL;QACT;IACF;IAEA,IAAIzB,aAAa;QACf6B,QAAQ,CAAC5B,OAAOC,aAAa,CAAC,GAAG;YAC/B,OAAO,IAAI;QACb;IACF;IAEA,OAAO2B;AACT"}
@@ -2,7 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- module.exports = promiseIterator;
5
+ Object.defineProperty(exports, /* c8 ignore start */ "default" /* c8 ignore stop */ , {
6
+ enumerable: true,
7
+ get: function() {
8
+ return promiseIterator;
9
+ }
10
+ });
11
+ var hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;
6
12
  function promiseIterator(promise) {
7
13
  var resolved = false;
8
14
  var iterator = {
@@ -18,7 +24,7 @@ function promiseIterator(promise) {
18
24
  value: value,
19
25
  done: false
20
26
  });
21
- })["catch"](reject);
27
+ }).catch(reject);
22
28
  });
23
29
  }
24
30
  };
@@ -28,5 +34,5 @@ function promiseIterator(promise) {
28
34
  };
29
35
  }
30
36
  return iterator;
31
- } /* c8 ignore stop */
32
- var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
37
+ }
38
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/http/response-iterator/src/iterators/promise.ts"],"sourcesContent":["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"],"names":["promiseIterator","hasIterator","Symbol","asyncIterator","promise","resolved","iterator","next","Promise","resolve","value","undefined","done","reject","then","catch"],"mappings":";;;;+BAEA,mBAAmB,GACnB,UAyBA,kBAAkB;;;eAzBMA;;;AAHxB,IAAMC,cAAc,OAAOC,WAAW,eAAeA,OAAOC,aAAa;AAG1D,SAASH,gBAAmBI,OAAO;IAChD,IAAIC,WAAW;IAEf,IAAMC,WAAW;QACfC,MAAAA,SAAAA;YACE,IAAIF,UAAU,OAAOG,QAAQC,OAAO,CAAC;gBAAEC,OAAOC;gBAAWC,MAAM;YAAK;YACpEP,WAAW;YACX,OAAO,IAAIG,QAAQ,SAACC,SAASI;gBAC3BT,QACGU,IAAI,CAAC,SAACJ;oBACLD,QAAQ;wBAAEC,OAAAA;wBAAOE,MAAM;oBAAM;gBAC/B,GACCG,KAAK,CAACF;YACX;QACF;IACF;IAEA,IAAIZ,aAAa;QACfK,QAAQ,CAACJ,OAAOC,aAAa,CAAC,GAAG;YAC/B,OAAO,IAAI;QACb;IACF;IAEA,OAAOG;AACT"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, /* c8 ignore start */ "default" /* c8 ignore stop */ , {
6
+ enumerable: true,
7
+ get: function() {
8
+ return readerIterator;
9
+ }
10
+ });
11
+ var hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;
12
+ function readerIterator(reader) {
13
+ var iterator = {
14
+ next: function next() {
15
+ return reader.read();
16
+ }
17
+ };
18
+ if (hasIterator) {
19
+ iterator[Symbol.asyncIterator] = function() {
20
+ return this;
21
+ };
22
+ }
23
+ return iterator;
24
+ }
25
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/http/response-iterator/src/iterators/reader.ts"],"sourcesContent":["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"],"names":["readerIterator","hasIterator","Symbol","asyncIterator","reader","iterator","next","read"],"mappings":";;;;+BAEA,mBAAmB,GACnB,UAeA,kBAAkB;;;eAfMA;;;AAHxB,IAAMC,cAAc,OAAOC,WAAW,eAAeA,OAAOC,aAAa;AAG1D,SAASH,eAAkBI,MAAM;IAC9C,IAAMC,WAAW;QACfC,MAAAA,SAAAA;YACE,OAAOF,OAAOG,IAAI;QACpB;IACF;IAEA,IAAIN,aAAa;QACfI,QAAQ,CAACH,OAAOC,aAAa,CAAC,GAAG;YAC/B,OAAO,IAAI;QACb;IACF;IAEA,OAAOE;AACT"}
@@ -1,18 +1,14 @@
1
- // @ts-ignore
2
- import asyncIterator from "./iterators/async.mjs";
3
- // @ts-ignore
4
- import nodeStreamIterator from "./iterators/nodeStream.mjs";
5
- // @ts-ignore
6
- import promiseIterator from "./iterators/promise.mjs";
7
- // @ts-ignore
8
- import readerIterator from "./iterators/reader.mjs";
9
- var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
1
+ import asyncIterator from './iterators/async.mjs';
2
+ import nodeStreamIterator from './iterators/nodeStream.mjs';
3
+ import promiseIterator from './iterators/promise.mjs';
4
+ import readerIterator from './iterators/reader.mjs';
5
+ const hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;
10
6
  /**
11
7
  * @param response A response. Supports fetch, node-fetch, and cross-fetch
12
8
  */ export default function responseIterator(response) {
13
- if (response === undefined) throw new Error("Missing response for responseIterator");
9
+ if (response === undefined) throw new Error('Missing response for responseIterator');
14
10
  // determine the body
15
- var body = response;
11
+ let body = response;
16
12
  if (response.body) body = response.body;
17
13
  else if (response.data) body = response.data;
18
14
  else if (response._bodyBlob) body = response._bodyBlob; // cross-fetch
@@ -22,5 +18,5 @@ var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
22
18
  if (body.stream) return readerIterator(body.stream().getReader());
23
19
  if (body.arrayBuffer) return promiseIterator(body.arrayBuffer());
24
20
  if (body.pipe) return nodeStreamIterator(body);
25
- /* c8 ignore stop */ throw new Error("Unknown body type for responseIterator. Maybe you are not passing a streamable response");
26
- };
21
+ /* c8 ignore stop */ throw new Error('Unknown body type for responseIterator. Maybe you are not passing a streamable response');
22
+ }
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"sourcesContent":["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<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,aAAa;AACb,OAAOA,aAAa,MAAM,sBAAsB,CAAC;AACjD,aAAa;AACb,OAAOC,kBAAkB,MAAM,2BAA2B,CAAC;AAC3D,aAAa;AACb,OAAOC,eAAe,MAAM,wBAAwB,CAAC;AACrD,aAAa;AACb,OAAOC,cAAc,MAAM,uBAAuB,CAAC;AAMnD,IAAMC,WAAW,GAAG,OAAOC,MAAM,KAAK,WAAW,IAAIA,MAAM,CAACL,aAAa,AAAC;AAE1E;;GAEG,CACH,eAAe,SAASM,gBAAgB,CAAIC,QAAiB,EAA4B;IACvF,IAAIA,QAAQ,KAAKC,SAAS,EAAE,MAAM,IAAIC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAErF,qBAAqB;IACrB,IAAIC,IAAI,GAAYH,QAAQ,AAAC;IAC7B,IAAI,AAACA,QAAQ,CAAkBG,IAAI,EAAEA,IAAI,GAAG,AAACH,QAAQ,CAAkBG,IAAI,CAAC;SAEvE,IAAI,AAACH,QAAQ,CAAmBI,IAAI,EAAED,IAAI,GAAG,AAACH,QAAQ,CAAmBI,IAAI,CAAC;SAExD,IAAI,AAACJ,QAAQ,CAAwBK,SAAS,EAAEF,IAAI,GAAG,AAACH,QAAQ,CAAwBK,SAAS,CAAC,CAAC,cAAc;IAC5I,oBAAoB,CAEpB,iBAAiB;IACjB,IAAIR,WAAW,IAAIM,IAAI,CAACL,MAAM,CAACL,aAAa,CAAC,EAAE,OAAOA,aAAa,CAAIU,IAAI,CAA6B,CAAC;IACzG,qBAAqB,CACrB,IAAI,AAACA,IAAI,CAAuBG,SAAS,EAAE,OAAOV,cAAc,CAAI,AAACO,IAAI,CAAuBG,SAAS,EAAE,CAAC,CAAC;IAC7G,IAAI,AAACH,IAAI,CAAUI,MAAM,EAAE,OAAOX,cAAc,CAAI,AAAC,AAACO,IAAI,CAAUI,MAAM,EAAE,CAAkCD,SAAS,EAAE,CAAC,CAAC;IAC3H,IAAI,AAACH,IAAI,CAAUK,WAAW,EAAE,OAAOb,eAAe,CAAI,AAACQ,IAAI,CAAUK,WAAW,EAAE,CAAC,CAAC;IACxF,IAAI,AAACL,IAAI,CAAwBM,IAAI,EAAE,OAAOf,kBAAkB,CAAIS,IAAI,CAAuB,CAAC;IAChG,oBAAoB,CAEpB,MAAM,IAAID,KAAK,CAAC,yFAAyF,CAAC,CAAC;CAC5G,CAAA"}
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"}
@@ -1,23 +1,11 @@
1
- function _defineProperty(obj, key, value) {
2
- if (key in obj) {
3
- Object.defineProperty(obj, key, {
4
- value: value,
5
- enumerable: true,
6
- configurable: true,
7
- writable: true
8
- });
9
- } else {
10
- obj[key] = value;
11
- }
12
- return obj;
13
- }
14
1
  export default function asyncIterator(source) {
15
- var iterator = source[Symbol.asyncIterator]();
16
- return _defineProperty({
17
- next: function next() {
2
+ const iterator = source[Symbol.asyncIterator]();
3
+ return {
4
+ next () {
18
5
  return iterator.next();
6
+ },
7
+ [Symbol.asyncIterator] () {
8
+ return this;
19
9
  }
20
- }, Symbol.asyncIterator, function() {
21
- return this;
22
- });
23
- };
10
+ };
11
+ }
@@ -1 +1 @@
1
- {"version":3,"sources":["async.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"],"names":["asyncIterator","source","iterator","Symbol","next"],"mappings":"AAAA;;;;;;;;;;;;;AAAA,eAAe,SAASA,aAAa,CAAIC,MAAM,EAA4B;IACzE,IAAMC,QAAQ,GAAGD,MAAM,CAACE,MAAM,CAACH,aAAa,CAAC,EAAE,AAAC;IAChD,OAIE;QAHAI,IAAI,EAAJA,SAAAA,IAAI,GAAwC;YAC1C,OAAOF,QAAQ,CAACE,IAAI,EAAE,CAAC;SACxB;OACAD,MAAM,CAACH,aAAa,EAArB,WAA2C;QACzC,OAAO,IAAI,CAAC;KACb,CAAA,CAC2B;CAC/B,CAAA"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/http/response-iterator/src/iterators/async.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"],"names":["asyncIterator","source","iterator","Symbol","next"],"mappings":"AAAA,eAAe,SAASA,cAAiBC,MAAM;IAC7C,MAAMC,WAAWD,MAAM,CAACE,OAAOH,aAAa,CAAC;IAC7C,OAAO;QACLI;YACE,OAAOF,SAASE,IAAI;QACtB;QACA,CAACD,OAAOH,aAAa,CAAC;YACpB,OAAO,IAAI;QACb;IACF;AACF"}
@@ -1,34 +1,52 @@
1
- var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
1
+ const hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;
2
2
  /* c8 ignore start */ export default function nodeStreamIterator(stream) {
3
- var onData = function onData(chunk) {
3
+ let cleanup = null;
4
+ let error = null;
5
+ let done = false;
6
+ const data = [];
7
+ const waiting = [];
8
+ function onData(chunk) {
4
9
  if (error) return;
5
10
  if (waiting.length) return waiting.shift()[0]({
6
11
  value: chunk,
7
12
  done: false
8
13
  });
9
14
  data.push(chunk);
10
- };
11
- var onError = function onError(err) {
15
+ }
16
+ function onError(err) {
12
17
  error = err;
13
- var all = waiting.slice();
14
- all.forEach(function(pair) {
18
+ const all = waiting.slice();
19
+ all.forEach((pair)=>{
15
20
  pair[1](err);
16
21
  });
17
22
  !cleanup || cleanup();
18
- };
19
- var onEnd = function onEnd() {
23
+ }
24
+ function onEnd() {
20
25
  done = true;
21
- var all = waiting.slice();
22
- all.forEach(function(pair) {
26
+ const all = waiting.slice();
27
+ all.forEach((pair)=>{
23
28
  pair[0]({
24
29
  value: undefined,
25
30
  done: true
26
31
  });
27
32
  });
28
33
  !cleanup || cleanup();
34
+ }
35
+ cleanup = ()=>{
36
+ cleanup = null;
37
+ stream.removeListener('data', onData);
38
+ stream.removeListener('error', onError);
39
+ stream.removeListener('end', onEnd);
40
+ stream.removeListener('finish', onEnd);
41
+ stream.removeListener('close', onEnd);
29
42
  };
30
- var getNext = function getNext() {
31
- return new Promise(function(resolve, reject) {
43
+ stream.on('data', onData);
44
+ stream.on('error', onError);
45
+ stream.on('end', onEnd);
46
+ stream.on('finish', onEnd);
47
+ stream.on('close', onEnd);
48
+ function getNext() {
49
+ return new Promise((resolve, reject)=>{
32
50
  if (error) return reject(error);
33
51
  if (data.length) return resolve({
34
52
  value: data.shift(),
@@ -43,27 +61,9 @@ var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
43
61
  reject
44
62
  ]);
45
63
  });
46
- };
47
- var cleanup = null;
48
- var error = null;
49
- var done = false;
50
- var data = [];
51
- var waiting = [];
52
- cleanup = function() {
53
- cleanup = null;
54
- stream.removeListener("data", onData);
55
- stream.removeListener("error", onError);
56
- stream.removeListener("end", onEnd);
57
- stream.removeListener("finish", onEnd);
58
- stream.removeListener("close", onEnd);
59
- };
60
- stream.on("data", onData);
61
- stream.on("error", onError);
62
- stream.on("end", onEnd);
63
- stream.on("finish", onEnd);
64
- stream.on("close", onEnd);
65
- var iterator = {
66
- next: function next() {
64
+ }
65
+ const iterator = {
66
+ next () {
67
67
  return getNext();
68
68
  }
69
69
  };
@@ -73,4 +73,4 @@ var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
73
73
  };
74
74
  }
75
75
  return iterator;
76
- }; /* c8 ignore stop */
76
+ } /* c8 ignore stop */
@@ -1 +1 @@
1
- {"version":3,"sources":["nodeStream.ts"],"sourcesContent":["import { 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(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<IteratorResult<T, boolean>> {\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<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"],"names":["hasIterator","Symbol","asyncIterator","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","iterator","next"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/http/response-iterator/src/iterators/nodeStream.ts"],"sourcesContent":["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"],"names":["hasIterator","Symbol","asyncIterator","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","iterator","next"],"mappings":"AAEA,MAAMA,cAAc,OAAOC,WAAW,eAAeA,OAAOC,aAAa;AAEzE,mBAAmB,GACnB,eAAe,SAASC,mBAAsBC,MAA0B;IACtE,IAAIC,UAAU;IACd,IAAIC,QAAQ;IACZ,IAAIC,OAAO;IACX,MAAMC,OAAO,EAAE;IACf,MAAMC,UAAU,EAAE;IAElB,SAASC,OAAOC,KAAK;QACnB,IAAIL,OAAO;QACX,IAAIG,QAAQG,MAAM,EAAE,OAAOH,QAAQI,KAAK,EAAE,CAAC,EAAE,CAAC;YAAEC,OAAOH;YAAOJ,MAAM;QAAM;QAC1EC,KAAKO,IAAI,CAACJ;IACZ;IACA,SAASK,QAAQC,GAAG;QAClBX,QAAQW;QACR,MAAMC,MAAMT,QAAQU,KAAK;QACzBD,IAAIE,OAAO,CAAC,CAACC;YACXA,IAAI,CAAC,EAAE,CAACJ;QACV;QACA,CAACZ,WAAWA;IACd;IACA,SAASiB;QACPf,OAAO;QACP,MAAMW,MAAMT,QAAQU,KAAK;QACzBD,IAAIE,OAAO,CAAC,CAACC;YACXA,IAAI,CAAC,EAAE,CAAC;gBAAEP,OAAOS;gBAAWhB,MAAM;YAAK;QACzC;QACA,CAACF,WAAWA;IACd;IAEAA,UAAU;QACRA,UAAU;QACVD,OAAOoB,cAAc,CAAC,QAAQd;QAC9BN,OAAOoB,cAAc,CAAC,SAASR;QAC/BZ,OAAOoB,cAAc,CAAC,OAAOF;QAC7BlB,OAAOoB,cAAc,CAAC,UAAUF;QAChClB,OAAOoB,cAAc,CAAC,SAASF;IACjC;IACAlB,OAAOqB,EAAE,CAAC,QAAQf;IAClBN,OAAOqB,EAAE,CAAC,SAAST;IACnBZ,OAAOqB,EAAE,CAAC,OAAOH;IACjBlB,OAAOqB,EAAE,CAAC,UAAUH;IACpBlB,OAAOqB,EAAE,CAAC,SAASH;IAEnB,SAASI;QACP,OAAO,IAAIC,QAAQ,CAACC,SAASC;YAC3B,IAAIvB,OAAO,OAAOuB,OAAOvB;YACzB,IAAIE,KAAKI,MAAM,EAAE,OAAOgB,QAAQ;gBAAEd,OAAON,KAAKK,KAAK;gBAAIN,MAAM;YAAM;YACnE,IAAIA,MAAM,OAAOqB,QAAQ;gBAAEd,OAAOS;gBAAWhB,MAAM;YAAK;YACxDE,QAAQM,IAAI,CAAC;gBAACa;gBAASC;aAAO;QAChC;IACF;IAEA,MAAMC,WAAW;QACfC;YACE,OAAOL;QACT;IACF;IAEA,IAAI1B,aAAa;QACf8B,QAAQ,CAAC7B,OAAOC,aAAa,CAAC,GAAG;YAC/B,OAAO,IAAI;QACb;IACF;IAEA,OAAO4B;AACT,EACA,kBAAkB"}
@@ -1,20 +1,20 @@
1
- var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
1
+ const hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;
2
2
  /* c8 ignore start */ export default function promiseIterator(promise) {
3
- var resolved = false;
4
- var iterator = {
5
- next: function next() {
3
+ let resolved = false;
4
+ const iterator = {
5
+ next () {
6
6
  if (resolved) return Promise.resolve({
7
7
  value: undefined,
8
8
  done: true
9
9
  });
10
10
  resolved = true;
11
- return new Promise(function(resolve, reject) {
12
- promise.then(function(value) {
11
+ return new Promise((resolve, reject)=>{
12
+ promise.then((value)=>{
13
13
  resolve({
14
- value: value,
14
+ value,
15
15
  done: false
16
16
  });
17
- })["catch"](reject);
17
+ }).catch(reject);
18
18
  });
19
19
  }
20
20
  };
@@ -24,4 +24,4 @@ var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
24
24
  };
25
25
  }
26
26
  return iterator;
27
- }; /* c8 ignore stop */
27
+ } /* c8 ignore stop */
@@ -1 +1 @@
1
- {"version":3,"sources":["promise.ts"],"sourcesContent":["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(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<T> {\n return this;\n };\n }\n\n return iterator as AsyncIterableIterator<T>;\n}\n/* c8 ignore stop */\n"],"names":["hasIterator","Symbol","asyncIterator","promiseIterator","promise","resolved","iterator","next","Promise","resolve","value","undefined","done","reject","then","catch"],"mappings":"AAAA,IAAMA,WAAW,GAAG,OAAOC,MAAM,KAAK,WAAW,IAAIA,MAAM,CAACC,aAAa,AAAC;AAE1E,qBAAqB,CACrB,eAAe,SAASC,eAAe,CAAIC,OAAO,EAA4B;IAC5E,IAAIC,QAAQ,GAAG,KAAK,AAAC;IAErB,IAAMC,QAAQ,GAAG;QACfC,IAAI,EAAJA,SAAAA,IAAI,GAAwC;YAC1C,IAAIF,QAAQ,EAAE,OAAOG,OAAO,CAACC,OAAO,CAAC;gBAAEC,KAAK,EAAEC,SAAS;gBAAEC,IAAI,EAAE,IAAI;aAAE,CAAC,CAAC;YACvEP,QAAQ,GAAG,IAAI,CAAC;YAChB,OAAO,IAAIG,OAAO,CAAC,SAAUC,OAAO,EAAEI,MAAM,EAAE;gBAC5CT,OAAO,CACJU,IAAI,CAAC,SAAUJ,KAAK,EAAE;oBACrBD,OAAO,CAAC;wBAAEC,KAAK,EAALA,KAAK;wBAAEE,IAAI,EAAE,KAAK;qBAAE,CAAC,CAAC;iBACjC,CAAC,AACDG,CAAAA,OAAK,CAAA,CAACF,MAAM,CAAC,CAAC;aAClB,CAAC,CAAC;SACJ;KACF,AAAC;IAEF,IAAIb,WAAW,EAAE;QACfM,QAAQ,CAACL,MAAM,CAACC,aAAa,CAAC,GAAG,WAA8B;YAC7D,OAAO,IAAI,CAAC;SACb,CAAC;KACH;IAED,OAAOI,QAAQ,CAA6B;CAC7C,CAAA,CACD,oBAAoB"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/http/response-iterator/src/iterators/promise.ts"],"sourcesContent":["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"],"names":["hasIterator","Symbol","asyncIterator","promiseIterator","promise","resolved","iterator","next","Promise","resolve","value","undefined","done","reject","then","catch"],"mappings":"AAAA,MAAMA,cAAc,OAAOC,WAAW,eAAeA,OAAOC,aAAa;AAEzE,mBAAmB,GACnB,eAAe,SAASC,gBAAmBC,OAAO;IAChD,IAAIC,WAAW;IAEf,MAAMC,WAAW;QACfC;YACE,IAAIF,UAAU,OAAOG,QAAQC,OAAO,CAAC;gBAAEC,OAAOC;gBAAWC,MAAM;YAAK;YACpEP,WAAW;YACX,OAAO,IAAIG,QAAQ,CAACC,SAASI;gBAC3BT,QACGU,IAAI,CAAC,CAACJ;oBACLD,QAAQ;wBAAEC;wBAAOE,MAAM;oBAAM;gBAC/B,GACCG,KAAK,CAACF;YACX;QACF;IACF;IAEA,IAAIb,aAAa;QACfM,QAAQ,CAACL,OAAOC,aAAa,CAAC,GAAG;YAC/B,OAAO,IAAI;QACb;IACF;IAEA,OAAOI;AACT,EACA,kBAAkB"}
@@ -1,7 +1,7 @@
1
- var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
1
+ const hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;
2
2
  /* c8 ignore start */ export default function readerIterator(reader) {
3
- var iterator = {
4
- next: function next() {
3
+ const iterator = {
4
+ next () {
5
5
  return reader.read();
6
6
  }
7
7
  };
@@ -11,4 +11,4 @@ var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
11
11
  };
12
12
  }
13
13
  return iterator;
14
- }; /* c8 ignore stop */
14
+ } /* c8 ignore stop */
@@ -1 +1 @@
1
- {"version":3,"sources":["reader.ts"],"sourcesContent":["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"],"names":["hasIterator","Symbol","asyncIterator","readerIterator","reader","iterator","next","read"],"mappings":"AAAA,IAAMA,WAAW,GAAG,OAAOC,MAAM,KAAK,WAAW,IAAIA,MAAM,CAACC,aAAa,AAAC;AAE1E,qBAAqB,CACrB,eAAe,SAASC,cAAc,CAAIC,MAAM,EAA4B;IAC1E,IAAMC,QAAQ,GAAG;QACfC,IAAI,EAAJA,SAAAA,IAAI,GAAwC;YAC1C,OAAOF,MAAM,CAACG,IAAI,EAAE,CAAC;SACtB;KACF,AAAC;IAEF,IAAIP,WAAW,EAAE;QACfK,QAAQ,CAACJ,MAAM,CAACC,aAAa,CAAC,GAAG,WAA8B;YAC7D,OAAO,IAAI,CAAC;SACb,CAAC;KACH;IAED,OAAOG,QAAQ,CAA6B;CAC7C,CAAA,CACD,oBAAoB"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/http/response-iterator/src/iterators/reader.ts"],"sourcesContent":["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"],"names":["hasIterator","Symbol","asyncIterator","readerIterator","reader","iterator","next","read"],"mappings":"AAAA,MAAMA,cAAc,OAAOC,WAAW,eAAeA,OAAOC,aAAa;AAEzE,mBAAmB,GACnB,eAAe,SAASC,eAAkBC,MAAM;IAC9C,MAAMC,WAAW;QACfC;YACE,OAAOF,OAAOG,IAAI;QACpB;IACF;IAEA,IAAIP,aAAa;QACfK,QAAQ,CAACJ,OAAOC,aAAa,CAAC,GAAG;YAC/B,OAAO,IAAI;QACb;IACF;IAEA,OAAOG;AACT,EACA,kBAAkB"}
@@ -1,3 +1,2 @@
1
- /// <reference types="node" />
2
- import { Readable as NodeReadableStream } from 'stream';
1
+ import type { Readable as NodeReadableStream } from 'stream';
3
2
  export default function nodeStreamIterator<T>(stream: NodeReadableStream): AsyncIterableIterator<T>;
@@ -4,7 +4,7 @@
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.responseIterator = factory());
5
5
  })(this, (function () { 'use strict';
6
6
 
7
- function _defineProperty(obj, key, value) {
7
+ function _define_property(obj, key, value) {
8
8
  if (key in obj) {
9
9
  Object.defineProperty(obj, key, {
10
10
  value: value,
@@ -19,7 +19,7 @@
19
19
  }
20
20
  function asyncIterator(source) {
21
21
  var iterator = source[Symbol.asyncIterator]();
22
- return _defineProperty({
22
+ return _define_property({
23
23
  next: function next() {
24
24
  return iterator.next();
25
25
  }
@@ -28,25 +28,30 @@
28
28
  });
29
29
  }
30
30
 
31
- var hasIterator$3 = typeof Symbol !== "undefined" && Symbol.asyncIterator;
31
+ var hasIterator$3 = typeof Symbol !== 'undefined' && Symbol.asyncIterator;
32
32
  /* c8 ignore start */ function nodeStreamIterator(stream) {
33
- var onData = function onData(chunk) {
33
+ var cleanup = null;
34
+ var error = null;
35
+ var done = false;
36
+ var data = [];
37
+ var waiting = [];
38
+ function onData(chunk) {
34
39
  if (error) return;
35
40
  if (waiting.length) return waiting.shift()[0]({
36
41
  value: chunk,
37
42
  done: false
38
43
  });
39
44
  data.push(chunk);
40
- };
41
- var onError = function onError(err) {
45
+ }
46
+ function onError(err) {
42
47
  error = err;
43
48
  var all = waiting.slice();
44
49
  all.forEach(function(pair) {
45
50
  pair[1](err);
46
51
  });
47
52
  !cleanup || cleanup();
48
- };
49
- var onEnd = function onEnd() {
53
+ }
54
+ function onEnd() {
50
55
  done = true;
51
56
  var all = waiting.slice();
52
57
  all.forEach(function(pair) {
@@ -56,8 +61,21 @@
56
61
  });
57
62
  });
58
63
  !cleanup || cleanup();
64
+ }
65
+ cleanup = function() {
66
+ cleanup = null;
67
+ stream.removeListener('data', onData);
68
+ stream.removeListener('error', onError);
69
+ stream.removeListener('end', onEnd);
70
+ stream.removeListener('finish', onEnd);
71
+ stream.removeListener('close', onEnd);
59
72
  };
60
- var getNext = function getNext() {
73
+ stream.on('data', onData);
74
+ stream.on('error', onError);
75
+ stream.on('end', onEnd);
76
+ stream.on('finish', onEnd);
77
+ stream.on('close', onEnd);
78
+ function getNext() {
61
79
  return new Promise(function(resolve, reject) {
62
80
  if (error) return reject(error);
63
81
  if (data.length) return resolve({
@@ -73,25 +91,7 @@
73
91
  reject
74
92
  ]);
75
93
  });
76
- };
77
- var cleanup = null;
78
- var error = null;
79
- var done = false;
80
- var data = [];
81
- var waiting = [];
82
- cleanup = function() {
83
- cleanup = null;
84
- stream.removeListener("data", onData);
85
- stream.removeListener("error", onError);
86
- stream.removeListener("end", onEnd);
87
- stream.removeListener("finish", onEnd);
88
- stream.removeListener("close", onEnd);
89
- };
90
- stream.on("data", onData);
91
- stream.on("error", onError);
92
- stream.on("end", onEnd);
93
- stream.on("finish", onEnd);
94
- stream.on("close", onEnd);
94
+ }
95
95
  var iterator = {
96
96
  next: function next() {
97
97
  return getNext();
@@ -103,9 +103,9 @@
103
103
  };
104
104
  }
105
105
  return iterator;
106
- }
106
+ } /* c8 ignore stop */
107
107
 
108
- var hasIterator$2 = typeof Symbol !== "undefined" && Symbol.asyncIterator;
108
+ var hasIterator$2 = typeof Symbol !== 'undefined' && Symbol.asyncIterator;
109
109
  /* c8 ignore start */ function promiseIterator(promise) {
110
110
  var resolved = false;
111
111
  var iterator = {
@@ -121,7 +121,7 @@
121
121
  value: value,
122
122
  done: false
123
123
  });
124
- })["catch"](reject);
124
+ }).catch(reject);
125
125
  });
126
126
  }
127
127
  };
@@ -131,9 +131,9 @@
131
131
  };
132
132
  }
133
133
  return iterator;
134
- }
134
+ } /* c8 ignore stop */
135
135
 
136
- var hasIterator$1 = typeof Symbol !== "undefined" && Symbol.asyncIterator;
136
+ var hasIterator$1 = typeof Symbol !== 'undefined' && Symbol.asyncIterator;
137
137
  /* c8 ignore start */ function readerIterator(reader) {
138
138
  var iterator = {
139
139
  next: function next() {
@@ -146,14 +146,13 @@
146
146
  };
147
147
  }
148
148
  return iterator;
149
- }
149
+ } /* c8 ignore stop */
150
150
 
151
- // @ts-ignore
152
- var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
151
+ var hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;
153
152
  /**
154
153
  * @param response A response. Supports fetch, node-fetch, and cross-fetch
155
154
  */ function responseIterator(response) {
156
- if (response === undefined) throw new Error("Missing response for responseIterator");
155
+ if (response === undefined) throw new Error('Missing response for responseIterator');
157
156
  // determine the body
158
157
  var body = response;
159
158
  if (response.body) body = response.body;
@@ -165,9 +164,10 @@
165
164
  if (body.stream) return readerIterator(body.stream().getReader());
166
165
  if (body.arrayBuffer) return promiseIterator(body.arrayBuffer());
167
166
  if (body.pipe) return nodeStreamIterator(body);
168
- /* c8 ignore stop */ throw new Error("Unknown body type for responseIterator. Maybe you are not passing a streamable response");
167
+ /* c8 ignore stop */ throw new Error('Unknown body type for responseIterator. Maybe you are not passing a streamable response');
169
168
  }
170
169
 
171
170
  return responseIterator;
172
171
 
173
172
  }));
173
+ //# sourceMappingURL=response-iterator.cjs.map
@@ -0,0 +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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"}
@@ -0,0 +1,2 @@
1
+ !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).responseIterator=n()}(this,(function(){"use strict";function e(e){var n,r,o,t=e[Symbol.asyncIterator]();return n={next:function(){return t.next()}},r=Symbol.asyncIterator,o=function(){return this},r in n?Object.defineProperty(n,r,{value:o,enumerable:!0,configurable:!0,writable:!0}):n[r]=o,n}var n="undefined"!=typeof Symbol&&Symbol.asyncIterator;function r(e){var r=null,o=null,t=!1,i=[],a=[];function u(e){if(!o)return a.length?a.shift()[0]({value:e,done:!1}):void i.push(e)}function f(e){o=e,a.slice().forEach((function(n){n[1](e)})),!r||r()}function s(){t=!0,a.slice().forEach((function(e){e[0]({value:void 0,done:!0})})),!r||r()}r=function(){r=null,e.removeListener("data",u),e.removeListener("error",f),e.removeListener("end",s),e.removeListener("finish",s),e.removeListener("close",s)},e.on("data",u),e.on("error",f),e.on("end",s),e.on("finish",s),e.on("close",s);var l={next:function(){return new Promise((function(e,n){return o?n(o):i.length?e({value:i.shift(),done:!1}):t?e({value:void 0,done:!0}):void a.push([e,n])}))}};return n&&(l[Symbol.asyncIterator]=function(){return this}),l}var o="undefined"!=typeof Symbol&&Symbol.asyncIterator;var t="undefined"!=typeof Symbol&&Symbol.asyncIterator;function i(e){var n={next:function(){return e.read()}};return t&&(n[Symbol.asyncIterator]=function(){return this}),n}var a="undefined"!=typeof Symbol&&Symbol.asyncIterator;return function(n){if(void 0===n)throw new Error("Missing response for responseIterator");var t,u,f,s=n;if(n.body?s=n.body:n.data?s=n.data:n._bodyBlob&&(s=n._bodyBlob),a&&s[Symbol.asyncIterator])return e(s);if(s.getReader)return i(s.getReader());if(s.stream)return i(s.stream().getReader());if(s.arrayBuffer)return t=s.arrayBuffer(),u=!1,f={next:function(){return u?Promise.resolve({value:void 0,done:!0}):(u=!0,new Promise((function(e,n){t.then((function(n){e({value:n,done:!1})})).catch(n)})))}},o&&(f[Symbol.asyncIterator]=function(){return this}),f;if(s.pipe)return r(s);throw new Error("Unknown body type for responseIterator. Maybe you are not passing a streamable response")}}));
2
+ //# sourceMappingURL=response-iterator.min.cjs.map
@@ -0,0 +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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"}
package/package.json CHANGED
@@ -1,33 +1,7 @@
1
1
  {
2
2
  "name": "response-iterator",
3
+ "version": "0.2.7",
3
4
  "description": "Creates an async iterator for a variety of inputs in the browser and node. Supports fetch, node-fetch, and cross-fetch",
4
- "version": "0.2.5",
5
- "author": {
6
- "email": "kmalakoff@gmail.com",
7
- "name": "Kevin Malakoff",
8
- "url": "https://github.com/kmalakoff"
9
- },
10
- "license": "MIT",
11
- "main": "dist/cjs/index.js",
12
- "module": "dist/esm/index.mjs",
13
- "files": [
14
- "dist"
15
- ],
16
- "scripts": {
17
- "build": "tsds build",
18
- "deploy": "tsds deploy",
19
- "format": "tsds format",
20
- "lint": "tsds lint",
21
- "test": "tsds test:node && tsds test:node \"test/**/*.test-node.*\" && tsds test:browser"
22
- },
23
- "homepage": "https://github.com/kmalakoff/response-iterator#README.md",
24
- "repository": {
25
- "type": "git",
26
- "url": "git+ssh://git@github.com/kmalakoff/response-iterator.git"
27
- },
28
- "bugs": {
29
- "url": "https://github.com/kmalakoff/response-iterator/issues"
30
- },
31
5
  "keywords": [
32
6
  "Symbol",
33
7
  "Symbol.asyncIterator",
@@ -51,33 +25,71 @@
51
25
  "typescript",
52
26
  "undici"
53
27
  ],
54
- "devDependencies": {
55
- "@types/axios": "^0.14.0",
56
- "@types/node": "^18.0.0",
57
- "@types/node-fetch": "^3.0.3",
58
- "cross-fetch": "^3.1.5",
59
- "got": "^12.1.0",
60
- "isomorphic-fetch": "^3.0.0",
61
- "readable-stream-2": "npm:readable-stream@2.3.7",
62
- "readable-stream-3": "npm:readable-stream@4.0.0",
63
- "ts-dev-stack": "^0.5.1",
64
- "undici": "^5.6.0"
28
+ "homepage": "https://github.com/kmalakoff/response-iterator#README.md",
29
+ "bugs": {
30
+ "url": "https://github.com/kmalakoff/response-iterator/issues"
65
31
  },
66
- "type": "module",
67
- "engines": {
68
- "node": ">=0.8"
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "git+ssh://git@github.com/kmalakoff/response-iterator.git"
35
+ },
36
+ "license": "MIT",
37
+ "author": {
38
+ "name": "Kevin Malakoff",
39
+ "email": "kmalakoff@gmail.com",
40
+ "url": "https://github.com/kmalakoff"
69
41
  },
42
+ "type": "module",
70
43
  "exports": {
71
44
  ".": {
72
45
  "import": "./dist/esm/index.mjs",
73
- "require": "./dist/cjs/index.js",
46
+ "require": "./dist/cjs/index.cjs",
74
47
  "types": "./dist/types/index.d.ts"
75
48
  },
76
49
  "./*": "./*"
77
50
  },
78
- "tsds": {
79
- "source": "src/index.ts"
80
- },
51
+ "main": "dist/cjs/index.cjs",
52
+ "unpkg": "dist/umd/response-iterator.cjs",
53
+ "module": "dist/esm/index.mjs",
81
54
  "types": "dist/types/index.d.ts",
82
- "unpkg": "dist/umd/response-iterator.js"
55
+ "files": [
56
+ "dist"
57
+ ],
58
+ "scripts": {
59
+ "build": "tsds build",
60
+ "deploy": "tsds deploy",
61
+ "docs": "tsds docs",
62
+ "format": "biome check --write --unsafe src/ test/",
63
+ "test": "npm run test:node && npm run test:browser",
64
+ "test:browser": "tsds test:browser --config wtr.config.mjs && tsds test:browser --config wtr.config.mjs \"test/**/*.test-browser.*\"",
65
+ "test:engines": "nvu engines npm run test:node && npm run test:browser",
66
+ "test:node": "tsds test:node --no-timeouts && tsds test:node --no-timeouts \"test/**/*.test-node.*\"",
67
+ "version": "tsds version"
68
+ },
69
+ "devDependencies": {
70
+ "@biomejs/biome": "^1.9.4",
71
+ "@types/mocha": "^10.0.10",
72
+ "@types/node": "^22.10.2",
73
+ "@web/dev-server-import-maps": "^0.2.1",
74
+ "axios": "^1.7.9",
75
+ "cross-fetch": "^4.1.0",
76
+ "get-remote": "^1.3.2",
77
+ "isomorphic-fetch": "^3.0.0",
78
+ "node-fetch": "^3.3.2",
79
+ "pinkie-promise": "^2.0.1",
80
+ "readable-stream": "2.3.8",
81
+ "tsds-web-test-runner": "^1.11.15",
82
+ "undici": "^7.2.0"
83
+ },
84
+ "engines": {
85
+ "node": ">=0.8"
86
+ },
87
+ "tsds": {
88
+ "source": "src/index.ts",
89
+ "targets": [
90
+ "cjs",
91
+ "esm",
92
+ "umd"
93
+ ]
94
+ }
83
95
  }
package/dist/cjs/index.js DELETED
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- module.exports = responseIterator;
6
- var _asyncTs = _interopRequireDefault(require("./iterators/async.js"));
7
- var _nodeStreamTs = _interopRequireDefault(require("./iterators/nodeStream.js"));
8
- var _promiseTs = _interopRequireDefault(require("./iterators/promise.js"));
9
- var _readerTs = _interopRequireDefault(require("./iterators/reader.js"));
10
- function responseIterator(response) {
11
- if (response === undefined) throw new Error("Missing response for responseIterator");
12
- // determine the body
13
- var body = response;
14
- if (response.body) body = response.body;
15
- else if (response.data) body = response.data;
16
- else if (response._bodyBlob) body = response._bodyBlob; // cross-fetch
17
- /* c8 ignore stop */ // adapt the body
18
- if (hasIterator && body[Symbol.asyncIterator]) return (0, _asyncTs).default(body);
19
- /* c8 ignore start */ if (body.getReader) return (0, _readerTs).default(body.getReader());
20
- if (body.stream) return (0, _readerTs).default(body.stream().getReader());
21
- if (body.arrayBuffer) return (0, _promiseTs).default(body.arrayBuffer());
22
- if (body.pipe) return (0, _nodeStreamTs).default(body);
23
- /* c8 ignore stop */ throw new Error("Unknown body type for responseIterator. Maybe you are not passing a streamable response");
24
- }
25
- function _interopRequireDefault(obj) {
26
- return obj && obj.__esModule ? obj : {
27
- default: obj
28
- };
29
- }
30
- var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
@@ -1 +0,0 @@
1
- {"version":3,"sources":["index.ts"],"sourcesContent":["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<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","response","undefined","Error","body","data","_bodyBlob","hasIterator","Symbol","asyncIterator","getReader","readerIterator","stream","arrayBuffer","promiseIterator","pipe","nodeStreamIterator"],"mappings":"AAAA;;;;kBAsBwBA,gBAAgB;AAjBd,IAAA,QAAsB,kCAAtB,sBAAsB,EAAA;AAEjB,IAAA,aAA2B,kCAA3B,2BAA2B,EAAA;AAE9B,IAAA,UAAwB,kCAAxB,wBAAwB,EAAA;AAEzB,IAAA,SAAuB,kCAAvB,uBAAuB,EAAA;AAWnC,SAASA,gBAAgB,CAAIC,QAAiB,EAA4B;IACvF,IAAIA,QAAQ,KAAKC,SAAS,EAAE,MAAM,IAAIC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAErF,qBAAqB;IACrB,IAAIC,IAAI,GAAYH,QAAQ,AAAC;IAC7B,IAAI,AAACA,QAAQ,CAAkBG,IAAI,EAAEA,IAAI,GAAG,AAACH,QAAQ,CAAkBG,IAAI,CAAC;SAEvE,IAAI,AAACH,QAAQ,CAAmBI,IAAI,EAAED,IAAI,GAAG,AAACH,QAAQ,CAAmBI,IAAI,CAAC;SAExD,IAAI,AAACJ,QAAQ,CAAwBK,SAAS,EAAEF,IAAI,GAAG,AAACH,QAAQ,CAAwBK,SAAS,CAAC,CAAC,cAAc;IAC5I,oBAAoB,CAEpB,iBAAiB;IACjB,IAAIC,WAAW,IAAIH,IAAI,CAACI,MAAM,CAACC,aAAa,CAAC,EAAE,OAAOA,CAAAA,GAAAA,QAAa,AAAqC,CAAA,QAArC,CAAIL,IAAI,CAA6B,CAAC;IACzG,qBAAqB,CACrB,IAAI,AAACA,IAAI,CAAuBM,SAAS,EAAE,OAAOC,CAAAA,GAAAA,SAAc,AAA4C,CAAA,QAA5C,CAAI,AAACP,IAAI,CAAuBM,SAAS,EAAE,CAAC,CAAC;IAC7G,IAAI,AAACN,IAAI,CAAUQ,MAAM,EAAE,OAAOD,CAAAA,GAAAA,SAAc,AAA0E,CAAA,QAA1E,CAAI,AAAC,AAACP,IAAI,CAAUQ,MAAM,EAAE,CAAkCF,SAAS,EAAE,CAAC,CAAC;IAC3H,IAAI,AAACN,IAAI,CAAUS,WAAW,EAAE,OAAOC,CAAAA,GAAAA,UAAe,AAAiC,CAAA,QAAjC,CAAI,AAACV,IAAI,CAAUS,WAAW,EAAE,CAAC,CAAC;IACxF,IAAI,AAACT,IAAI,CAAwBW,IAAI,EAAE,OAAOC,CAAAA,GAAAA,aAAkB,AAA+B,CAAA,QAA/B,CAAIZ,IAAI,CAAuB,CAAC;IAChG,oBAAoB,CAEpB,MAAM,IAAID,KAAK,CAAC,yFAAyF,CAAC,CAAC;CAC5G;;;;;;AA3BD,IAAMI,WAAW,GAAG,OAAOC,MAAM,KAAK,WAAW,IAAIA,MAAM,CAACC,aAAa,AAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["async.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"],"names":["asyncIterator","source","iterator","Symbol","next"],"mappings":"AAAA;;;;kBAAwBA,aAAa;AAAtB,SAASA,aAAa,CAAIC,MAAM,EAA4B;IACzE,IAAMC,QAAQ,GAAGD,MAAM,CAACE,MAAM,CAACH,aAAa,CAAC,EAAE,AAAC;IAChD,OAIE;QAHAI,IAAI,EAAJA,SAAAA,IAAI,GAAwC;YAC1C,OAAOF,QAAQ,CAACE,IAAI,EAAE,CAAC;SACxB;OACAD,MAAM,CAACH,aAAa,EAArB,WAA2C;QACzC,OAAO,IAAI,CAAC;KACb,CAAA,CAC2B;CAC/B"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["nodeStream.ts"],"sourcesContent":["import { 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(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<IteratorResult<T, boolean>> {\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<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"],"names":["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","iterator","next","hasIterator","Symbol","asyncIterator"],"mappings":"AAAA;;;;kBAKwBA,kBAAkB;AAA3B,SAASA,kBAAkB,CAAIC,MAA0B,EAA4B;QAOzFC,MAAM,GAAf,SAASA,MAAM,CAACC,KAAK,EAAE;QACrB,IAAIC,KAAK,EAAE,OAAO;QAClB,IAAIC,OAAO,CAACC,MAAM,EAAE,OAAOD,OAAO,CAACE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YAAEC,KAAK,EAAEL,KAAK;YAAEM,IAAI,EAAE,KAAK;SAAE,CAAC,CAAC;QAC7EC,IAAI,CAACC,IAAI,CAACR,KAAK,CAAC,CAAC;KAClB;QACQS,OAAO,GAAhB,SAASA,OAAO,CAACC,GAAG,EAAE;QACpBT,KAAK,GAAGS,GAAG,CAAC;QACZ,IAAMC,GAAG,GAAGT,OAAO,CAACU,KAAK,EAAE,AAAC;QAC5BD,GAAG,CAACE,OAAO,CAAC,SAAUC,IAAI,EAAE;YAC1BA,IAAI,CAAC,CAAC,CAAC,CAACJ,GAAG,CAAC,CAAC;SACd,CAAC,CAAC;QACH,CAACK,OAAO,IAAIA,OAAO,EAAE,CAAC;KACvB;QACQC,KAAK,GAAd,SAASA,KAAK,GAAG;QACfV,IAAI,GAAG,IAAI,CAAC;QACZ,IAAMK,GAAG,GAAGT,OAAO,CAACU,KAAK,EAAE,AAAC;QAC5BD,GAAG,CAACE,OAAO,CAAC,SAAUC,IAAI,EAAE;YAC1BA,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAET,KAAK,EAAEY,SAAS;gBAAEX,IAAI,EAAE,IAAI;aAAE,CAAC,CAAC;SAC3C,CAAC,CAAC;QACH,CAACS,OAAO,IAAIA,OAAO,EAAE,CAAC;KACvB;QAgBQG,OAAO,GAAhB,SAASA,OAAO,GAAwC;QACtD,OAAO,IAAIC,OAAO,CAAC,SAAUC,OAAO,EAAEC,MAAM,EAAE;YAC5C,IAAIpB,KAAK,EAAE,OAAOoB,MAAM,CAACpB,KAAK,CAAC,CAAC;YAChC,IAAIM,IAAI,CAACJ,MAAM,EAAE,OAAOiB,OAAO,CAAC;gBAAEf,KAAK,EAAEE,IAAI,CAACH,KAAK,EAAE;gBAAEE,IAAI,EAAE,KAAK;aAAE,CAAC,CAAC;YACtE,IAAIA,IAAI,EAAE,OAAOc,OAAO,CAAC;gBAAEf,KAAK,EAAEY,SAAS;gBAAEX,IAAI,EAAE,IAAI;aAAE,CAAC,CAAC;YAC3DJ,OAAO,CAACM,IAAI,CAAC;gBAACY,OAAO;gBAAEC,MAAM;aAAC,CAAC,CAAC;SACjC,CAAC,CAAC;KACJ;IAjDD,IAAIN,OAAO,GAAG,IAAI,AAAC;IACnB,IAAId,KAAK,GAAG,IAAI,AAAC;IACjB,IAAIK,IAAI,GAAG,KAAK,AAAC;IACjB,IAAMC,IAAI,GAAG,EAAE,AAAC;IAChB,IAAML,OAAO,GAAG,EAAE,AAAC;IAwBnBa,OAAO,GAAG,WAAY;QACpBA,OAAO,GAAG,IAAI,CAAC;QACfjB,MAAM,CAACwB,cAAc,CAAC,MAAM,EAAEvB,MAAM,CAAC,CAAC;QACtCD,MAAM,CAACwB,cAAc,CAAC,OAAO,EAAEb,OAAO,CAAC,CAAC;QACxCX,MAAM,CAACwB,cAAc,CAAC,KAAK,EAAEN,KAAK,CAAC,CAAC;QACpClB,MAAM,CAACwB,cAAc,CAAC,QAAQ,EAAEN,KAAK,CAAC,CAAC;QACvClB,MAAM,CAACwB,cAAc,CAAC,OAAO,EAAEN,KAAK,CAAC,CAAC;KACvC,CAAC;IACFlB,MAAM,CAACyB,EAAE,CAAC,MAAM,EAAExB,MAAM,CAAC,CAAC;IAC1BD,MAAM,CAACyB,EAAE,CAAC,OAAO,EAAEd,OAAO,CAAC,CAAC;IAC5BX,MAAM,CAACyB,EAAE,CAAC,KAAK,EAAEP,KAAK,CAAC,CAAC;IACxBlB,MAAM,CAACyB,EAAE,CAAC,QAAQ,EAAEP,KAAK,CAAC,CAAC;IAC3BlB,MAAM,CAACyB,EAAE,CAAC,OAAO,EAAEP,KAAK,CAAC,CAAC;IAW1B,IAAMQ,QAAQ,GAAG;QACfC,IAAI,EAAJA,SAAAA,IAAI,GAAwC;YAC1C,OAAOP,OAAO,EAAE,CAAC;SAClB;KACF,AAAC;IAEF,IAAIQ,WAAW,EAAE;QACfF,QAAQ,CAACG,MAAM,CAACC,aAAa,CAAC,GAAG,WAA8B;YAC7D,OAAO,IAAI,CAAC;SACb,CAAC;KACH;IAED,OAAOJ,QAAQ,CAA6B;CAC7C,CACD,oBAAoB;AArEpB,IAAME,WAAW,GAAG,OAAOC,MAAM,KAAK,WAAW,IAAIA,MAAM,CAACC,aAAa,AAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["promise.ts"],"sourcesContent":["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(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<T> {\n return this;\n };\n }\n\n return iterator as AsyncIterableIterator<T>;\n}\n/* c8 ignore stop */\n"],"names":["promiseIterator","promise","resolved","iterator","next","Promise","resolve","value","undefined","done","reject","then","catch","hasIterator","Symbol","asyncIterator"],"mappings":"AAAA;;;;kBAGwBA,eAAe;AAAxB,SAASA,eAAe,CAAIC,OAAO,EAA4B;IAC5E,IAAIC,QAAQ,GAAG,KAAK,AAAC;IAErB,IAAMC,QAAQ,GAAG;QACfC,IAAI,EAAJA,SAAAA,IAAI,GAAwC;YAC1C,IAAIF,QAAQ,EAAE,OAAOG,OAAO,CAACC,OAAO,CAAC;gBAAEC,KAAK,EAAEC,SAAS;gBAAEC,IAAI,EAAE,IAAI;aAAE,CAAC,CAAC;YACvEP,QAAQ,GAAG,IAAI,CAAC;YAChB,OAAO,IAAIG,OAAO,CAAC,SAAUC,OAAO,EAAEI,MAAM,EAAE;gBAC5CT,OAAO,CACJU,IAAI,CAAC,SAAUJ,KAAK,EAAE;oBACrBD,OAAO,CAAC;wBAAEC,KAAK,EAALA,KAAK;wBAAEE,IAAI,EAAE,KAAK;qBAAE,CAAC,CAAC;iBACjC,CAAC,AACDG,CAAAA,OAAK,CAAA,CAACF,MAAM,CAAC,CAAC;aAClB,CAAC,CAAC;SACJ;KACF,AAAC;IAEF,IAAIG,WAAW,EAAE;QACfV,QAAQ,CAACW,MAAM,CAACC,aAAa,CAAC,GAAG,WAA8B;YAC7D,OAAO,IAAI,CAAC;SACb,CAAC;KACH;IAED,OAAOZ,QAAQ,CAA6B;CAC7C,CACD,oBAAoB;AA5BpB,IAAMU,WAAW,GAAG,OAAOC,MAAM,KAAK,WAAW,IAAIA,MAAM,CAACC,aAAa,AAAC"}
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- module.exports = readerIterator;
6
- function readerIterator(reader) {
7
- var iterator = {
8
- next: function next() {
9
- return reader.read();
10
- }
11
- };
12
- if (hasIterator) {
13
- iterator[Symbol.asyncIterator] = function() {
14
- return this;
15
- };
16
- }
17
- return iterator;
18
- } /* c8 ignore stop */
19
- var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
@@ -1 +0,0 @@
1
- {"version":3,"sources":["reader.ts"],"sourcesContent":["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"],"names":["readerIterator","reader","iterator","next","read","hasIterator","Symbol","asyncIterator"],"mappings":"AAAA;;;;kBAGwBA,cAAc;AAAvB,SAASA,cAAc,CAAIC,MAAM,EAA4B;IAC1E,IAAMC,QAAQ,GAAG;QACfC,IAAI,EAAJA,SAAAA,IAAI,GAAwC;YAC1C,OAAOF,MAAM,CAACG,IAAI,EAAE,CAAC;SACtB;KACF,AAAC;IAEF,IAAIC,WAAW,EAAE;QACfH,QAAQ,CAACI,MAAM,CAACC,aAAa,CAAC,GAAG,WAA8B;YAC7D,OAAO,IAAI,CAAC;SACb,CAAC;KACH;IAED,OAAOL,QAAQ,CAA6B;CAC7C,CACD,oBAAoB;AAlBpB,IAAMG,WAAW,GAAG,OAAOC,MAAM,KAAK,WAAW,IAAIA,MAAM,CAACC,aAAa,AAAC"}
@@ -1 +0,0 @@
1
- { "type": "commonjs" }
@@ -1 +0,0 @@
1
- { "type": "module" }
@@ -1 +0,0 @@
1
- { "type": "commonjs" }
@@ -1,173 +0,0 @@
1
- (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3
- typeof define === 'function' && define.amd ? define(factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.responseIterator = factory());
5
- })(this, (function () { 'use strict';
6
-
7
- function _defineProperty(obj, key, value) {
8
- if (key in obj) {
9
- Object.defineProperty(obj, key, {
10
- value: value,
11
- enumerable: true,
12
- configurable: true,
13
- writable: true
14
- });
15
- } else {
16
- obj[key] = value;
17
- }
18
- return obj;
19
- }
20
- function asyncIterator(source) {
21
- var iterator = source[Symbol.asyncIterator]();
22
- return _defineProperty({
23
- next: function next() {
24
- return iterator.next();
25
- }
26
- }, Symbol.asyncIterator, function() {
27
- return this;
28
- });
29
- }
30
-
31
- var hasIterator$3 = typeof Symbol !== "undefined" && Symbol.asyncIterator;
32
- /* c8 ignore start */ function nodeStreamIterator(stream) {
33
- var onData = function onData(chunk) {
34
- if (error) return;
35
- if (waiting.length) return waiting.shift()[0]({
36
- value: chunk,
37
- done: false
38
- });
39
- data.push(chunk);
40
- };
41
- var onError = function onError(err) {
42
- error = err;
43
- var all = waiting.slice();
44
- all.forEach(function(pair) {
45
- pair[1](err);
46
- });
47
- !cleanup || cleanup();
48
- };
49
- var onEnd = function onEnd() {
50
- done = true;
51
- var all = waiting.slice();
52
- all.forEach(function(pair) {
53
- pair[0]({
54
- value: undefined,
55
- done: true
56
- });
57
- });
58
- !cleanup || cleanup();
59
- };
60
- var getNext = function getNext() {
61
- return new Promise(function(resolve, reject) {
62
- if (error) return reject(error);
63
- if (data.length) return resolve({
64
- value: data.shift(),
65
- done: false
66
- });
67
- if (done) return resolve({
68
- value: undefined,
69
- done: true
70
- });
71
- waiting.push([
72
- resolve,
73
- reject
74
- ]);
75
- });
76
- };
77
- var cleanup = null;
78
- var error = null;
79
- var done = false;
80
- var data = [];
81
- var waiting = [];
82
- cleanup = function() {
83
- cleanup = null;
84
- stream.removeListener("data", onData);
85
- stream.removeListener("error", onError);
86
- stream.removeListener("end", onEnd);
87
- stream.removeListener("finish", onEnd);
88
- stream.removeListener("close", onEnd);
89
- };
90
- stream.on("data", onData);
91
- stream.on("error", onError);
92
- stream.on("end", onEnd);
93
- stream.on("finish", onEnd);
94
- stream.on("close", onEnd);
95
- var iterator = {
96
- next: function next() {
97
- return getNext();
98
- }
99
- };
100
- if (hasIterator$3) {
101
- iterator[Symbol.asyncIterator] = function() {
102
- return this;
103
- };
104
- }
105
- return iterator;
106
- }
107
-
108
- var hasIterator$2 = typeof Symbol !== "undefined" && Symbol.asyncIterator;
109
- /* c8 ignore start */ function promiseIterator(promise) {
110
- var resolved = false;
111
- var iterator = {
112
- next: function next() {
113
- if (resolved) return Promise.resolve({
114
- value: undefined,
115
- done: true
116
- });
117
- resolved = true;
118
- return new Promise(function(resolve, reject) {
119
- promise.then(function(value) {
120
- resolve({
121
- value: value,
122
- done: false
123
- });
124
- })["catch"](reject);
125
- });
126
- }
127
- };
128
- if (hasIterator$2) {
129
- iterator[Symbol.asyncIterator] = function() {
130
- return this;
131
- };
132
- }
133
- return iterator;
134
- }
135
-
136
- var hasIterator$1 = typeof Symbol !== "undefined" && Symbol.asyncIterator;
137
- /* c8 ignore start */ function readerIterator(reader) {
138
- var iterator = {
139
- next: function next() {
140
- return reader.read();
141
- }
142
- };
143
- if (hasIterator$1) {
144
- iterator[Symbol.asyncIterator] = function() {
145
- return this;
146
- };
147
- }
148
- return iterator;
149
- }
150
-
151
- // @ts-ignore
152
- var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
153
- /**
154
- * @param response A response. Supports fetch, node-fetch, and cross-fetch
155
- */ function responseIterator(response) {
156
- if (response === undefined) throw new Error("Missing response for responseIterator");
157
- // determine the body
158
- var body = response;
159
- if (response.body) body = response.body;
160
- else if (response.data) body = response.data;
161
- else if (response._bodyBlob) body = response._bodyBlob; // cross-fetch
162
- /* c8 ignore stop */ // adapt the body
163
- if (hasIterator && body[Symbol.asyncIterator]) return asyncIterator(body);
164
- /* c8 ignore start */ if (body.getReader) return readerIterator(body.getReader());
165
- if (body.stream) return readerIterator(body.stream().getReader());
166
- if (body.arrayBuffer) return promiseIterator(body.arrayBuffer());
167
- if (body.pipe) return nodeStreamIterator(body);
168
- /* c8 ignore stop */ throw new Error("Unknown body type for responseIterator. Maybe you are not passing a streamable response");
169
- }
170
-
171
- return responseIterator;
172
-
173
- }));