UNPKG

@augment-vir/common

Version:

A collection of augments, helpers types, functions, and classes for any JavaScript environment.

35 lines (34 loc) 921 B
/** * Convert an async iterator or async iterable into an array. * * @category Array * @category Package : @augment-vir/common */ export async function fromAsyncIterable(asyncInput) { const collapsed = []; if (isAsyncIterable(asyncInput)) { for await (const entry of asyncInput) { collapsed.push(entry); } return collapsed; } else if (isAsyncIterator(asyncInput)) { for (;;) { const { value, done } = await asyncInput.next(); if (done) { break; } collapsed.push(value); } return collapsed; } else { throw new TypeError('Input is neither AsyncIterable nor AsyncIterator.'); } } function isAsyncIterable(value) { return typeof value[Symbol.asyncIterator] === 'function'; } function isAsyncIterator(value) { return typeof value.next === 'function'; }