| 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); |
| } |