more dataview replacements

This commit is contained in:
2025-01-22 23:08:44 -06:00
parent 070e32bb74
commit e4ed695eb9
+7 -7
View File
@@ -1,16 +1,16 @@
import { Chunk } from '../models/chunk';
export default (buffer: Uint8Array): Chunk => {
let offset = 0;
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
const id = view.getUint16(offset, true);
offset += 2;
if (buffer.length < 4) {
throw new Error('Chunk buffer must be at least 4 bytes');
}
const id = (buffer[1] << 8) + buffer[0];
// NOTE(jwetzell): this data is split up as 1 bit for hasSubchunks and 15 bits for the dataLen
const combinedLengthAndFlag = view.getUint16(offset, true);
const combinedLengthAndFlag = (buffer[3] << 8) + buffer[2];
const hasSubchunks = combinedLengthAndFlag > 32768;
const dataLen = hasSubchunks ? combinedLengthAndFlag - 32768 : combinedLengthAndFlag;
offset += 2;
const header = {
id,
@@ -18,7 +18,7 @@ export default (buffer: Uint8Array): Chunk => {
hasSubchunks,
};
const chunkData = buffer.subarray(offset, offset + header.dataLen);
const chunkData = buffer.subarray(4, 4 + header.dataLen);
const chunk = {
chunkData,