export function* takeUntil( iterable: Iterable , predicate: (element: T, index: number) => unknown ): IterableIterator { let index = 0 for (const element of iterable) { if (predicate(element, index)) break yield element index++ } }