@cch137/format-utils
Version:
A collection of utility modules for formatting and processing data
39 lines (38 loc) • 1.05 kB
JavaScript
export async function readStream(stream) {
if (!stream)
return new Uint8Array();
const reader = stream.getReader();
const buffers = [];
while (true) {
const { value, done } = await reader.read();
if (done)
break;
buffers.push(value);
}
const array = new Uint8Array(buffers.reduce((size, arr) => size + arr.length, 0));
let offset = 0;
for (const buffer of buffers) {
array.set(buffer, offset);
offset += buffer.length;
}
return array;
}
export async function readString(stream, encoding = "utf-8") {
return new TextDecoder(encoding).decode(await readStream(stream));
}
export async function readJSON(stream) {
try {
return JSON.parse(await readString(stream));
}
catch { }
return undefined;
}
export const toReadableStream = (value) => {
return new ReadableStream({
start(controller) {
controller.enqueue(value);
controller.close();
},
});
};
export default readStream;