response-iterator 0.2.2 → 0.2.5

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 (47) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +7 -7
  3. package/dist/cjs/index.js +25 -44
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/iterators/async.js +22 -16
  6. package/dist/cjs/iterators/async.js.map +1 -1
  7. package/dist/cjs/iterators/nodeStream.js +76 -90
  8. package/dist/cjs/iterators/nodeStream.js.map +1 -1
  9. package/dist/cjs/iterators/promise.js +27 -37
  10. package/dist/cjs/iterators/promise.js.map +1 -1
  11. package/dist/cjs/iterators/reader.js +14 -24
  12. package/dist/cjs/iterators/reader.js.map +1 -1
  13. package/dist/esm/index.mjs +26 -0
  14. package/dist/esm/index.mjs.map +1 -0
  15. package/dist/esm/iterators/async.mjs +23 -0
  16. package/dist/esm/iterators/async.mjs.map +1 -0
  17. package/dist/esm/iterators/nodeStream.mjs +76 -0
  18. package/dist/esm/iterators/nodeStream.mjs.map +1 -0
  19. package/dist/esm/iterators/promise.mjs +27 -0
  20. package/dist/esm/iterators/promise.mjs.map +1 -0
  21. package/dist/esm/iterators/reader.mjs +14 -0
  22. package/dist/esm/iterators/reader.mjs.map +1 -0
  23. package/dist/{cjs → types}/index.d.ts +0 -0
  24. package/dist/{cjs → types}/iterators/async.d.ts +0 -0
  25. package/dist/{esm → types}/iterators/nodeStream.d.ts +1 -1
  26. package/dist/{cjs → types}/iterators/promise.d.ts +0 -0
  27. package/dist/{cjs → types}/iterators/reader.d.ts +0 -0
  28. package/dist/umd/response-iterator.js +142 -174
  29. package/dist/umd/response-iterator.min.js +173 -2
  30. package/package.json +17 -15
  31. package/dist/cjs/iterators/nodeStream.d.ts +0 -3
  32. package/dist/esm/index.d.ts +0 -4
  33. package/dist/esm/index.js +0 -34
  34. package/dist/esm/index.js.map +0 -1
  35. package/dist/esm/iterators/async.d.ts +0 -1
  36. package/dist/esm/iterators/async.js +0 -14
  37. package/dist/esm/iterators/async.js.map +0 -1
  38. package/dist/esm/iterators/nodeStream.js +0 -87
  39. package/dist/esm/iterators/nodeStream.js.map +0 -1
  40. package/dist/esm/iterators/promise.d.ts +0 -1
  41. package/dist/esm/iterators/promise.js +0 -34
  42. package/dist/esm/iterators/promise.js.map +0 -1
  43. package/dist/esm/iterators/reader.d.ts +0 -1
  44. package/dist/esm/iterators/reader.js +0 -21
  45. package/dist/esm/iterators/reader.js.map +0 -1
  46. package/dist/umd/response-iterator.js.map +0 -1
  47. package/dist/umd/response-iterator.min.js.map +0 -1
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2021 Kevin Malakoff
3
+ Copyright (c) 2021-2022 Kevin Malakoff
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -6,11 +6,11 @@ Creates an async iterator for a variety of inputs in the browser and node. Suppo
6
6
 
7
7
  ```typescript
8
8
  // import "isomorphic-fetch"; // node only
9
- import responseIterator from "response-iterator";
9
+ import responseIterator from 'response-iterator';
10
10
 
11
- const res = await fetch("https://raw.githubusercontent.com/kmalakoff/response-iterator/master/package.json");
11
+ const res = await fetch('https://raw.githubusercontent.com/kmalakoff/response-iterator/master/package.json');
12
12
 
13
- let data = "";
13
+ let data = '';
14
14
  for await (const chunk of responseIterator(res)) {
15
15
  data += chunk;
16
16
  }
@@ -20,12 +20,12 @@ console.log(JSON.parse(data).name); // "response-iterator"
20
20
  ### Example 2
21
21
 
22
22
  ```typescript
23
- import crossFetch from "cross-fetch";
24
- import responseIterator from "response-iterator";
23
+ import crossFetch from 'cross-fetch';
24
+ import responseIterator from 'response-iterator';
25
25
 
26
- const res = await crossFetch("https://raw.githubusercontent.com/kmalakoff/response-iterator/master/package.json");
26
+ const res = await crossFetch('https://raw.githubusercontent.com/kmalakoff/response-iterator/master/package.json');
27
27
 
28
- let data = "";
28
+ let data = '';
29
29
  for await (const chunk of responseIterator(res)) {
30
30
  data += chunk;
31
31
  }
package/dist/cjs/index.js CHANGED
@@ -1,49 +1,30 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports["default"] = responseIterator;
7
-
8
- var _async = _interopRequireDefault(require("./iterators/async"));
9
-
10
- var _nodeStream = _interopRequireDefault(require("./iterators/nodeStream"));
11
-
12
- var _promise = _interopRequireDefault(require("./iterators/promise"));
13
-
14
- var _reader = _interopRequireDefault(require("./iterators/reader"));
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
17
-
18
- var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
19
- /**
20
- * @param response A response. Supports fetch, node-fetch, and cross-fetch
21
- */
22
-
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"));
23
10
  function responseIterator(response) {
24
- if (response === undefined) throw new Error("Missing response for responseIterator"); // determine the body
25
-
26
- var body = response;
27
- if (response.body) body = response.body; // node-fetch, browser fetch, undici
28
- else if (response.data) body = response.data; // axios
29
-
30
- /* c8 ignore start */
31
- else if (response._bodyBlob) body = response._bodyBlob; // cross-fetch
32
-
33
- /* c8 ignore stop */
34
- // adapt the body
35
-
36
- if (hasIterator && body[Symbol.asyncIterator]) return (0, _async["default"])(body);
37
- /* c8 ignore start */
38
-
39
- if (body.getReader) return (0, _reader["default"])(body.getReader());
40
- if (body.stream) return (0, _reader["default"])(body.stream().getReader());
41
- if (body.arrayBuffer) return (0, _promise["default"])(body.arrayBuffer());
42
- if (body.pipe) return (0, _nodeStream["default"])(body);
43
- /* c8 ignore stop */
44
-
45
- throw new Error("Unknown body type for responseIterator. Maybe you are not passing a streamable 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
+ };
46
29
  }
47
-
48
- module.exports = exports.default;
49
- //# sourceMappingURL=index.js.map
30
+ var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":["hasIterator","Symbol","asyncIterator","responseIterator","response","undefined","Error","body","data","_bodyBlob","getReader","stream","arrayBuffer","pipe"],"mappings":";;;;;;;AAIA;;AACA;;AACA;;AACA;;;;AAMA,IAAMA,WAAW,GAAG,OAAOC,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACC,aAA5D;AAEA;AACA;AACA;;AACe,SAASC,gBAAT,CAA6BC,QAA7B,EAA0E;AACvF,MAAIA,QAAQ,KAAKC,SAAjB,EAA4B,MAAM,IAAIC,KAAJ,CAAU,uCAAV,CAAN,CAD2D,CAGvF;;AACA,MAAIC,IAAa,GAAGH,QAApB;AACA,MAAKA,QAAD,CAA2BG,IAA/B,EAAqCA,IAAI,GAAIH,QAAD,CAA2BG,IAAlC,CAArC,CACA;AADA,OAEK,IAAKH,QAAD,CAA4BI,IAAhC,EAAsCD,IAAI,GAAIH,QAAD,CAA4BI,IAAnC,CAAtC,CACL;;AACA;AAFK,OAEsB,IAAKJ,QAAD,CAAiCK,SAArC,EACzBF,IAAI,GAAIH,QAAD,CAAiCK,SAAxC,CAVqF,CAUlC;;AACrD;AAEA;;AACA,MAAIT,WAAW,IAAIO,IAAI,CAACN,MAAM,CAACC,aAAR,CAAvB,EAA+C,OAAO,uBAAiBK,IAAjB,CAAP;AAC/C;;AACA,MAAKA,IAAD,CAA4BG,SAAhC,EAA2C,OAAO,wBAAmBH,IAAD,CAA4BG,SAA5B,EAAlB,CAAP;AAC3C,MAAKH,IAAD,CAAeI,MAAnB,EACE,OAAO,wBAAoBJ,IAAD,CAAeI,MAAf,EAAD,CAA0DD,SAA1D,EAAlB,CAAP;AACF,MAAKH,IAAD,CAAeK,WAAnB,EAAgC,OAAO,yBAAoBL,IAAD,CAAeK,WAAf,EAAnB,CAAP;AAChC,MAAKL,IAAD,CAA6BM,IAAjC,EAAuC,OAAO,4BAAsBN,IAAtB,CAAP;AACvC;;AAEA,QAAM,IAAID,KAAJ,CAAU,yFAAV,CAAN;AACD","sourcesContent":["import { AxiosResponse } from \"axios\";\nimport { Response as NodeResponse } from \"node-fetch\";\nimport { Readable as NodeReadableStream } from \"stream\";\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)\n 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)\n 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"],"file":"index.js"}
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,22 +1,28 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports["default"] = asyncIterator;
7
-
8
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
-
5
+ module.exports = asyncIterator;
10
6
  function asyncIterator(source) {
11
- var iterator = source[Symbol.asyncIterator]();
12
- return _defineProperty({
13
- next: function next() {
14
- return iterator.next();
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) {
17
+ if (key in obj) {
18
+ Object.defineProperty(obj, key, {
19
+ value: value,
20
+ enumerable: true,
21
+ configurable: true,
22
+ writable: true
23
+ });
24
+ } else {
25
+ obj[key] = value;
15
26
  }
16
- }, Symbol.asyncIterator, function () {
17
- return this;
18
- });
27
+ return obj;
19
28
  }
20
-
21
- module.exports = exports.default;
22
- //# sourceMappingURL=async.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/iterators/async.ts"],"names":["asyncIterator","source","iterator","Symbol","next"],"mappings":";;;;;;;;;AAAe,SAASA,aAAT,CAA0BC,MAA1B,EAA4D;AACzE,MAAMC,QAAQ,GAAGD,MAAM,CAACE,MAAM,CAACH,aAAR,CAAN,EAAjB;AACA;AACEI,IAAAA,IADF,kBAC8C;AAC1C,aAAOF,QAAQ,CAACE,IAAT,EAAP;AACD;AAHH,KAIGD,MAAM,CAACH,aAJV,cAI6C;AACzC,WAAO,IAAP;AACD,GANH;AAQD","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"],"file":"async.js"}
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,95 +1,81 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports["default"] = nodeStreamIterator;
7
- var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
8
- /* c8 ignore start */
9
-
5
+ module.exports = nodeStreamIterator;
10
6
  function nodeStreamIterator(stream) {
11
- var _cleanup = null;
12
- var error = null;
13
- var done = false;
14
- var data = [];
15
- var waiting = [];
16
-
17
- function onData(chunk) {
18
- if (error) return;
19
- if (waiting.length) return waiting.shift()[0]({
20
- value: chunk,
21
- done: false
22
- });
23
- data.push(chunk);
24
- }
25
-
26
- function onError(err) {
27
- error = err;
28
- var all = waiting.slice();
29
- all.forEach(function (pair) {
30
- pair[1](err);
31
- });
32
- !_cleanup || _cleanup();
33
- }
34
-
35
- function onEnd() {
36
- done = true;
37
- var all = waiting.slice();
38
- all.forEach(function (pair) {
39
- pair[0]({
40
- value: undefined,
41
- done: true
42
- });
43
- });
44
- !_cleanup || _cleanup();
45
- }
46
-
47
- _cleanup = function cleanup() {
48
- _cleanup = null;
49
- stream.removeListener("data", onData);
50
- stream.removeListener("error", onError);
51
- stream.removeListener("end", onEnd);
52
- stream.removeListener("finish", onEnd);
53
- stream.removeListener("close", onEnd);
54
- };
55
-
56
- stream.on("data", onData);
57
- stream.on("error", onError);
58
- stream.on("end", onEnd);
59
- stream.on("finish", onEnd);
60
- stream.on("close", onEnd);
61
-
62
- function getNext() {
63
- return new Promise(function (resolve, reject) {
64
- if (error) return reject(error);
65
- if (data.length) return resolve({
66
- value: data.shift(),
67
- done: false
68
- });
69
- if (done) return resolve({
70
- value: undefined,
71
- done: true
72
- });
73
- waiting.push([resolve, reject]);
74
- });
75
- }
76
-
77
- var iterator = {
78
- next: function next() {
79
- return getNext();
80
- }
81
- };
82
-
83
- if (hasIterator) {
84
- iterator[Symbol.asyncIterator] = function () {
85
- return this;
7
+ var onData = function onData(chunk) {
8
+ if (error) return;
9
+ if (waiting.length) return waiting.shift()[0]({
10
+ value: chunk,
11
+ done: false
12
+ });
13
+ data.push(chunk);
14
+ };
15
+ var onError = function onError(err) {
16
+ error = err;
17
+ var all = waiting.slice();
18
+ all.forEach(function(pair) {
19
+ pair[1](err);
20
+ });
21
+ !cleanup || cleanup();
22
+ };
23
+ var onEnd = function onEnd() {
24
+ done = true;
25
+ var all = waiting.slice();
26
+ all.forEach(function(pair) {
27
+ pair[0]({
28
+ value: undefined,
29
+ done: true
30
+ });
31
+ });
32
+ !cleanup || cleanup();
33
+ };
34
+ var getNext = function getNext() {
35
+ return new Promise(function(resolve, reject) {
36
+ if (error) return reject(error);
37
+ if (data.length) return resolve({
38
+ value: data.shift(),
39
+ done: false
40
+ });
41
+ if (done) return resolve({
42
+ value: undefined,
43
+ done: true
44
+ });
45
+ waiting.push([
46
+ resolve,
47
+ reject
48
+ ]);
49
+ });
86
50
  };
87
- }
88
-
89
- return iterator;
90
- }
91
- /* c8 ignore stop */
92
-
93
-
94
- module.exports = exports.default;
95
- //# sourceMappingURL=nodeStream.js.map
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);
69
+ var iterator = {
70
+ next: function next() {
71
+ return getNext();
72
+ }
73
+ };
74
+ if (hasIterator) {
75
+ iterator[Symbol.asyncIterator] = function() {
76
+ return this;
77
+ };
78
+ }
79
+ return iterator;
80
+ } /* c8 ignore stop */
81
+ var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/iterators/nodeStream.ts"],"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":"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","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"],"file":"nodeStream.js"}
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":"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"}
@@ -1,42 +1,32 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports["default"] = promiseIterator;
7
- var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
8
- /* c8 ignore start */
9
-
5
+ module.exports = promiseIterator;
10
6
  function promiseIterator(promise) {
11
- var resolved = false;
12
- var iterator = {
13
- next: function next() {
14
- if (resolved) return Promise.resolve({
15
- value: undefined,
16
- done: true
17
- });
18
- resolved = true;
19
- return new Promise(function (resolve, reject) {
20
- promise.then(function (value) {
21
- resolve({
22
- value: value,
23
- done: false
24
- });
25
- })["catch"](reject);
26
- });
27
- }
28
- };
29
-
30
- if (hasIterator) {
31
- iterator[Symbol.asyncIterator] = function () {
32
- return this;
7
+ var resolved = false;
8
+ var iterator = {
9
+ next: function next() {
10
+ if (resolved) return Promise.resolve({
11
+ value: undefined,
12
+ done: true
13
+ });
14
+ resolved = true;
15
+ return new Promise(function(resolve, reject) {
16
+ promise.then(function(value) {
17
+ resolve({
18
+ value: value,
19
+ done: false
20
+ });
21
+ })["catch"](reject);
22
+ });
23
+ }
33
24
  };
34
- }
35
-
36
- return iterator;
37
- }
38
- /* c8 ignore stop */
39
-
40
-
41
- module.exports = exports.default;
42
- //# sourceMappingURL=promise.js.map
25
+ if (hasIterator) {
26
+ iterator[Symbol.asyncIterator] = function() {
27
+ return this;
28
+ };
29
+ }
30
+ return iterator;
31
+ } /* c8 ignore stop */
32
+ var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/iterators/promise.ts"],"names":["hasIterator","Symbol","asyncIterator","promiseIterator","promise","resolved","iterator","next","Promise","resolve","value","undefined","done","reject","then"],"mappings":";;;;;;AAAA,IAAMA,WAAW,GAAG,OAAOC,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACC,aAA5D;AAEA;;AACe,SAASC,eAAT,CAA4BC,OAA5B,EAA+D;AAC5E,MAAIC,QAAQ,GAAG,KAAf;AAEA,MAAMC,QAAQ,GAAG;AACfC,IAAAA,IADe,kBAC6B;AAC1C,UAAIF,QAAJ,EAAc,OAAOG,OAAO,CAACC,OAAR,CAAgB;AAAEC,QAAAA,KAAK,EAAEC,SAAT;AAAoBC,QAAAA,IAAI,EAAE;AAA1B,OAAhB,CAAP;AACdP,MAAAA,QAAQ,GAAG,IAAX;AACA,aAAO,IAAIG,OAAJ,CAAY,UAAUC,OAAV,EAAmBI,MAAnB,EAA2B;AAC5CT,QAAAA,OAAO,CACJU,IADH,CACQ,UAAUJ,KAAV,EAAiB;AACrBD,UAAAA,OAAO,CAAC;AAAEC,YAAAA,KAAK,EAALA,KAAF;AAASE,YAAAA,IAAI,EAAE;AAAf,WAAD,CAAP;AACD,SAHH,WAISC,MAJT;AAKD,OANM,CAAP;AAOD;AAXc,GAAjB;;AAcA,MAAIb,WAAJ,EAAiB;AACfM,IAAAA,QAAQ,CAACL,MAAM,CAACC,aAAR,CAAR,GAAiC,YAA8B;AAC7D,aAAO,IAAP;AACD,KAFD;AAGD;;AAED,SAAOI,QAAP;AACD;AACD","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"],"file":"promise.js"}
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,29 +1,19 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports["default"] = readerIterator;
7
- var hasIterator = typeof Symbol !== "undefined" && Symbol.asyncIterator;
8
- /* c8 ignore start */
9
-
5
+ module.exports = readerIterator;
10
6
  function readerIterator(reader) {
11
- var iterator = {
12
- next: function next() {
13
- return reader.read();
14
- }
15
- };
16
-
17
- if (hasIterator) {
18
- iterator[Symbol.asyncIterator] = function () {
19
- return this;
7
+ var iterator = {
8
+ next: function next() {
9
+ return reader.read();
10
+ }
20
11
  };
21
- }
22
-
23
- return iterator;
24
- }
25
- /* c8 ignore stop */
26
-
27
-
28
- module.exports = exports.default;
29
- //# sourceMappingURL=reader.js.map
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 +1 @@
1
- {"version":3,"sources":["../../../src/iterators/reader.ts"],"names":["hasIterator","Symbol","asyncIterator","readerIterator","reader","iterator","next","read"],"mappings":";;;;;;AAAA,IAAMA,WAAW,GAAG,OAAOC,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACC,aAA5D;AAEA;;AACe,SAASC,cAAT,CAA2BC,MAA3B,EAA6D;AAC1E,MAAMC,QAAQ,GAAG;AACfC,IAAAA,IADe,kBAC6B;AAC1C,aAAOF,MAAM,CAACG,IAAP,EAAP;AACD;AAHc,GAAjB;;AAMA,MAAIP,WAAJ,EAAiB;AACfK,IAAAA,QAAQ,CAACJ,MAAM,CAACC,aAAR,CAAR,GAAiC,YAA8B;AAC7D,aAAO,IAAP;AACD,KAFD;AAGD;;AAED,SAAOG,QAAP;AACD;AACD","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"],"file":"reader.js"}
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"}
@@ -0,0 +1,26 @@
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;
10
+ /**
11
+ * @param response A response. Supports fetch, node-fetch, and cross-fetch
12
+ */ export default function responseIterator(response) {
13
+ if (response === undefined) throw new Error("Missing response for responseIterator");
14
+ // determine the body
15
+ var body = response;
16
+ if (response.body) body = response.body;
17
+ else if (response.data) body = response.data;
18
+ else if (response._bodyBlob) body = response._bodyBlob; // cross-fetch
19
+ /* c8 ignore stop */ // adapt the body
20
+ if (hasIterator && body[Symbol.asyncIterator]) return asyncIterator(body);
21
+ /* c8 ignore start */ if (body.getReader) return readerIterator(body.getReader());
22
+ if (body.stream) return readerIterator(body.stream().getReader());
23
+ if (body.arrayBuffer) return promiseIterator(body.arrayBuffer());
24
+ 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
+ };
@@ -0,0 +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"}
@@ -0,0 +1,23 @@
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
+ export default function asyncIterator(source) {
15
+ var iterator = source[Symbol.asyncIterator]();
16
+ return _defineProperty({
17
+ next: function next() {
18
+ return iterator.next();
19
+ }
20
+ }, Symbol.asyncIterator, function() {
21
+ return this;
22
+ });
23
+ };
@@ -0,0 +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"}