| 123456789101112131415161718192021222324252627282930313233343536373839 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.ReadableStreamToAsyncIterable = void 0;
- /**
- * 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
- */
- 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;
- },
- };
- }
- exports.ReadableStreamToAsyncIterable = ReadableStreamToAsyncIterable;
- //# sourceMappingURL=stream-utils.js.map
|