UNPKG

rxjs

Version:

Reactive Extensions for modern JavaScript

24 lines (21 loc) 704 B
import { ReadableStreamLike } from '../types'; import { isFunction } from './isFunction'; export async function* readableStreamLikeToAsyncGenerator<T>(readableStream: ReadableStreamLike<T>): AsyncGenerator<T> { const reader = readableStream.getReader(); try { while (true) { const { value, done } = await reader.read(); if (done) { return; } yield value!; } } finally { reader.releaseLock(); } } export function isReadableStreamLike<T>(obj: any): obj is ReadableStreamLike<T> { // We don't want to use instanceof checks because they would return // false for instances from another Realm, like an <iframe>. return isFunction(obj?.getReader); }