35 lines
1.0 KiB
JavaScript
35 lines
1.0 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.headStream = headStream;
|
|
async function headStream(stream, bytes) {
|
|
let byteLengthCounter = 0;
|
|
const chunks = [];
|
|
const reader = stream.getReader();
|
|
let isDone = false;
|
|
while (!isDone) {
|
|
const { done, value } = await reader.read();
|
|
if (value) {
|
|
chunks.push(value);
|
|
byteLengthCounter += value?.byteLength ?? 0;
|
|
}
|
|
if (byteLengthCounter >= bytes) {
|
|
break;
|
|
}
|
|
isDone = done;
|
|
}
|
|
reader.releaseLock();
|
|
const collected = new Uint8Array(Math.min(bytes, byteLengthCounter));
|
|
let offset = 0;
|
|
for (const chunk of chunks) {
|
|
if (chunk.byteLength > collected.byteLength - offset) {
|
|
collected.set(chunk.subarray(0, collected.byteLength - offset), offset);
|
|
break;
|
|
}
|
|
else {
|
|
collected.set(chunk, offset);
|
|
}
|
|
offset += chunk.length;
|
|
}
|
|
return collected;
|
|
}
|