node-web-stream-adapters
Version:
Node adapters for web streams
77 lines • 3.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.readableToWebStream = exports.bufferToWebStream = exports.stringToWebStream = exports.iteratorToWebStream = exports.iterableToWebStream = exports.asyncIterableToWebStream = exports.createReadableStreamFromReadable = exports.createReadableStreamFromBuffer = exports.createReadableStreamFromString = exports.createReadableStreamFromIterator = exports.createReadableStreamFromIterable = exports.createReadableStreamFromAsyncIterable = void 0;
/**
* 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
*/
function createReadableStreamFromAsyncIterable(iterable) {
return createReadableStreamFromIterator(iterable[Symbol.asyncIterator]());
}
exports.createReadableStreamFromAsyncIterable = createReadableStreamFromAsyncIterable;
function createReadableStreamFromIterable(iterable) {
return createReadableStreamFromIterator(iterable[Symbol.iterator]());
}
exports.createReadableStreamFromIterable = createReadableStreamFromIterable;
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?.();
}
});
}
}
exports.createReadableStreamFromIterator = createReadableStreamFromIterator;
function createReadableStreamFromString(value) {
return new ReadableStream({
start(controller) {
controller.enqueue(value);
controller.close();
},
});
}
exports.createReadableStreamFromString = createReadableStreamFromString;
function createReadableStreamFromBuffer(value) {
return new ReadableStream({
start(controller) {
controller.enqueue(value);
controller.close();
},
});
}
exports.createReadableStreamFromBuffer = createReadableStreamFromBuffer;
function createReadableStreamFromReadable(stream) {
return createReadableStreamFromAsyncIterable(stream);
}
exports.createReadableStreamFromReadable = createReadableStreamFromReadable;
// shorter names
const asyncIterableToWebStream = createReadableStreamFromAsyncIterable;
exports.asyncIterableToWebStream = asyncIterableToWebStream;
const iterableToWebStream = createReadableStreamFromIterable;
exports.iterableToWebStream = iterableToWebStream;
const iteratorToWebStream = createReadableStreamFromIterator;
exports.iteratorToWebStream = iteratorToWebStream;
const stringToWebStream = createReadableStreamFromString;
exports.stringToWebStream = stringToWebStream;
const bufferToWebStream = createReadableStreamFromBuffer;
exports.bufferToWebStream = bufferToWebStream;
const readableToWebStream = createReadableStreamFromReadable;
exports.readableToWebStream = readableToWebStream;
//# sourceMappingURL=readableToWebStream.js.map