1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.mapAsyncIterator = void 0;
|
4 |
|
5 |
|
6 |
|
7 |
|
8 | function mapAsyncIterator(iterator, callback, rejectCallback) {
|
9 | let $return;
|
10 | let abruptClose;
|
11 | if (typeof iterator.return === 'function') {
|
12 | $return = iterator.return;
|
13 | abruptClose = (error) => {
|
14 | const rethrow = () => Promise.reject(error);
|
15 | return $return.call(iterator).then(rethrow, rethrow);
|
16 | };
|
17 | }
|
18 | function mapResult(result) {
|
19 | return result.done ? result : asyncMapValue(result.value, callback).then(iteratorResult, abruptClose);
|
20 | }
|
21 | let mapReject;
|
22 | if (rejectCallback) {
|
23 |
|
24 | const reject = rejectCallback;
|
25 | mapReject = (error) => asyncMapValue(error, reject).then(iteratorResult, abruptClose);
|
26 | }
|
27 | return {
|
28 | next() {
|
29 | return iterator.next().then(mapResult, mapReject);
|
30 | },
|
31 | return() {
|
32 | return $return
|
33 | ? $return.call(iterator).then(mapResult, mapReject)
|
34 | : Promise.resolve({ value: undefined, done: true });
|
35 | },
|
36 | throw(error) {
|
37 | if (typeof iterator.throw === 'function') {
|
38 | return iterator.throw(error).then(mapResult, mapReject);
|
39 | }
|
40 | return Promise.reject(error).catch(abruptClose);
|
41 | },
|
42 | [Symbol.asyncIterator]() {
|
43 | return this;
|
44 | },
|
45 | };
|
46 | }
|
47 | exports.mapAsyncIterator = mapAsyncIterator;
|
48 | function asyncMapValue(value, callback) {
|
49 | return new Promise(resolve => resolve(callback(value)));
|
50 | }
|
51 | function iteratorResult(value) {
|
52 | return { value, done: false };
|
53 | }
|