Spaces:
Running
Running
| 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); | |
| } | |