UNPKG

node-web-stream-adapters

Version:
63 lines 2.23 kB
/** * Create a ReadableStream frpom an iterable. * ON node 20 there is a ReadableStream.from fucntion to do it. But not on node 18 * When studio server is moved to node 20 we can remove this fucntion * @param iterable * @returns */ export function createReadableStreamFromAsyncIterable(iterable) { return createReadableStreamFromIterator(iterable[Symbol.asyncIterator]()); } export function createReadableStreamFromIterable(iterable) { return createReadableStreamFromIterator(iterable[Symbol.iterator]()); } export function createReadableStreamFromIterator(it) { //const it = iterable[Symbol.asyncIterator](); if (ReadableStream.from) { return ReadableStream.from(it); } else { return new ReadableStream({ async pull(controller) { const { value, done } = await it.next(); if (done) { controller.close(); } else { controller.enqueue(value); } }, cancel() { it.return?.(); } }); } } export function createReadableStreamFromString(value) { return new ReadableStream({ start(controller) { controller.enqueue(value); controller.close(); }, }); } export function createReadableStreamFromBuffer(value) { return new ReadableStream({ start(controller) { controller.enqueue(value); controller.close(); }, }); } export function createReadableStreamFromReadable(stream) { return createReadableStreamFromAsyncIterable(stream); } // shorter names const asyncIterableToWebStream = createReadableStreamFromAsyncIterable; const iterableToWebStream = createReadableStreamFromIterable; const iteratorToWebStream = createReadableStreamFromIterator; const stringToWebStream = createReadableStreamFromString; const bufferToWebStream = createReadableStreamFromBuffer; const readableToWebStream = createReadableStreamFromReadable; export { asyncIterableToWebStream, iterableToWebStream, iteratorToWebStream, stringToWebStream, bufferToWebStream, readableToWebStream }; //# sourceMappingURL=readableToWebStream.js.map