Files
psn-js/src/decoders/info/info-tracker-chunk.ts
T
Joel Wetzell 466228fb4a format
2026-07-13 14:09:21 -05:00

43 lines
1003 B
TypeScript

import { Constants } from '../../constants.js';
import type {
InfoTrackerChunk,
InfoTrackerChunkData,
} from '../../models/info/info-tracker-chunk.js';
import { Decoders } from '../index.js';
export default (buffer: Uint8Array): InfoTrackerChunk => {
const chunk = Decoders.Chunk(buffer);
if (chunk.header.hasSubchunks && chunk.chunkData && chunk.header.dataLen) {
let offset = 0;
while (offset < chunk.header.dataLen) {
const chunkId =
(chunk.chunkData.subarray(offset)[1] << 8) +
chunk.chunkData.subarray(offset)[0];
switch (chunkId) {
case 0x0000: {
const data: InfoTrackerChunkData = {
trackerName: Decoders.InfoTrackerNameChunk(
chunk.chunkData.subarray(offset)
),
};
offset += Constants.CHUNK_HEADER_SIZE;
if (data.trackerName.chunk.header.dataLen) {
offset += data.trackerName.chunk.header.dataLen;
}
return {
chunk,
data,
};
}
default:
break;
}
}
}
return {
chunk,
};
};