From d12432c0e5737f440abb75c42c7c430819751cdc Mon Sep 17 00:00:00 2001 From: Luan Date: Tue, 18 Mar 2025 17:41:17 -0300 Subject: [PATCH] feat(UMP): Add support for partial parts --- src/core/UMP.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/core/UMP.ts b/src/core/UMP.ts index 89b9947..a523429 100644 --- a/src/core/UMP.ts +++ b/src/core/UMP.ts @@ -8,7 +8,7 @@ export class UMP { this.chunkedDataBuffer = chunkedDataBuffer; } - public parse(handlePart: (part: Part) => void) { + public parse(handlePart: (part: Part) => void): Part | undefined { while (true) { let offset = 0; @@ -21,9 +21,16 @@ export class UMP { if (partType < 0 || partSize < 0) break; - // Note that we don't handle cases like this YET.. - if (!this.chunkedDataBuffer.canReadBytes(offset, partSize)) - break; + if (!this.chunkedDataBuffer.canReadBytes(offset, partSize)) { + if (!this.chunkedDataBuffer.canReadBytes(offset, 1)) + break; + + return { + type: partType, + size: partSize, + data: this.chunkedDataBuffer + }; + } const splitResult = this.chunkedDataBuffer.split(offset).remainingBuffer.split(partSize); offset = 0;