web-streams-extensions
Version:
A comprehensive collection of helper methods for WebStreams with built-in backpressure support, inspired by ReactiveExtensions
30 lines (29 loc) • 812 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.toString = toString;
/**
* combines a stream of chunks to a string. */
async function toString(src, selector = (value) => value.toString()) {
let res = "";
let reader = src.getReader();
try {
let done = false;
while (done == false) {
let next = await reader.read();
done = next.done;
if (!done)
res += selector(next.value);
}
}
finally {
// Always cancel the reader to ensure proper cleanup of resources
try {
await reader.cancel();
}
catch (e) {
// Ignore cancellation errors (stream might already be closed)
}
reader.releaseLock();
}
return res;
}