| 1234567891011121314151617181920212223242526272829303132333435 |
- /**
- * Most browsers don't yet have async iterable support for ReadableStream,
- * and Node has a very different way of reading bytes from its "ReadableStream".
- *
- * This polyfill was pulled from https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490
- */
- export function ReadableStreamToAsyncIterable(stream) {
- if (stream[Symbol.asyncIterator])
- return stream;
- const reader = stream.getReader();
- return {
- async next() {
- try {
- const result = await reader.read();
- if (result?.done)
- reader.releaseLock(); // release lock when stream becomes closed
- return result;
- }
- catch (e) {
- reader.releaseLock(); // release lock when stream becomes errored
- throw e;
- }
- },
- async return() {
- const cancelPromise = reader.cancel();
- reader.releaseLock();
- await cancelPromise;
- return { done: true, value: undefined };
- },
- [Symbol.asyncIterator]() {
- return this;
- },
- };
- }
- //# sourceMappingURL=stream-utils.mjs.map
|