36 lines
1.1 KiB
JavaScript
36 lines
1.1 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.headStream = void 0;
|
|
async function headStream(stream, bytes) {
|
|
var _a;
|
|
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 += (_a = value === null || value === void 0 ? void 0 : value.byteLength) !== null && _a !== void 0 ? _a : 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;
|
|
}
|
|
exports.headStream = headStream;
|