1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 'use strict';
- Object.defineProperty(exports, '__esModule', {
- value: true,
- });
- exports.mapAsyncIterator = mapAsyncIterator;
- /**
- * Given an AsyncIterable and a callback function, return an AsyncIterator
- * which produces values mapped via calling the callback function.
- */
- function mapAsyncIterator(iterable, callback) {
- const iterator = iterable[Symbol.asyncIterator]();
- async function mapResult(result) {
- if (result.done) {
- return result;
- }
- try {
- return {
- value: await callback(result.value),
- done: false,
- };
- } catch (error) {
- /* c8 ignore start */
- // FIXME: add test case
- if (typeof iterator.return === 'function') {
- try {
- await iterator.return();
- } catch (_e) {
- /* ignore error */
- }
- }
- throw error;
- /* c8 ignore stop */
- }
- }
- return {
- async next() {
- return mapResult(await iterator.next());
- },
- async return() {
- // If iterator.return() does not exist, then type R must be undefined.
- return typeof iterator.return === 'function'
- ? mapResult(await iterator.return())
- : {
- value: undefined,
- done: true,
- };
- },
- async throw(error) {
- if (typeof iterator.throw === 'function') {
- return mapResult(await iterator.throw(error));
- }
- throw error;
- },
- [Symbol.asyncIterator]() {
- return this;
- },
- };
- }
|