MCPcopy Create free account
hub / github.com/CommandCodeAI/BaseAI / readableStreamAsyncIterable

Function readableStreamAsyncIterable

packages/core/src/common/stream.ts:525–550  ·  view source on GitHub ↗
(stream: any)

Source from the content-addressed store, hash-verified

523 * This polyfill was pulled from https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490
524 */
525export function readableStreamAsyncIterable<T>(stream: any): AsyncIterableIterator<T> {
526 if (stream[Symbol.asyncIterator]) return stream;
527
528 const reader = stream.getReader();
529 return {
530 async next() {
531 try {
532 const result = await reader.read();
533 if (result?.done) reader.releaseLock(); // release lock when stream becomes closed
534 return result;
535 } catch (e) {
536 reader.releaseLock(); // release lock when stream becomes errored
537 throw e;
538 }
539 },
540 async return() {
541 const cancelPromise = reader.cancel();
542 reader.releaseLock();
543 await cancelPromise;
544 return {done: true, value: undefined};
545 },
546 [Symbol.asyncIterator]() {
547 return this;
548 },
549 };
550}

Callers 2

iterLinesMethod · 0.70
_iterSSEMessagesFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected