UNPKG

@lou.codes/iterables

Version:
21 lines (20 loc) 745 B
import { asyncIterator, iterator } from "@lou.codes/constants/Symbol.js"; import { isIterable } from "@lou.codes/predicates"; /** * Get a `Symbol.iterator` from an iterable or a `Symbol.asyncIterator` from an * asynchronous iterable. * * @category Asynchronous Common * @example * ```typescript * const iterator = getIterator([1, 2, 3]); * iterator.next(); // { value: 1, done: false } * iterator.next(); // { value: 2, done: false } * iterator.next(); // { value: 3, done: false } * iterator.next(); // { value: undefined, done: true } * ``` * @param iterable Iterable to get the iterator from. * @returns Iterator instance. */ export const getIterator = iterable => iterable[isIterable(iterable) ? iterator : asyncIterator]();