14a25d910fddc9f63fd7786a2130596fcbdfd42148078f6424b0d976473a14e8a457c16ff948c378e585336eb38bd78cf816c0943d8a6c60fa210db0c0a29d 704 B

1234567891011121314151617181920212223
  1. import { ReadableStreamLike } from '../types';
  2. import { isFunction } from './isFunction';
  3. export async function* readableStreamLikeToAsyncGenerator<T>(readableStream: ReadableStreamLike<T>): AsyncGenerator<T> {
  4. const reader = readableStream.getReader();
  5. try {
  6. while (true) {
  7. const { value, done } = await reader.read();
  8. if (done) {
  9. return;
  10. }
  11. yield value!;
  12. }
  13. } finally {
  14. reader.releaseLock();
  15. }
  16. }
  17. export function isReadableStreamLike<T>(obj: any): obj is ReadableStreamLike<T> {
  18. // We don't want to use instanceof checks because they would return
  19. // false for instances from another Realm, like an <iframe>.
  20. return isFunction(obj?.getReader);
  21. }