From e05beb39c2a3f2b89a0374b9df95d86aa2de257f Mon Sep 17 00:00:00 2001 From: morluto <76467478+morluto@users.noreply.github.com> Date: Sat, 24 Oct 2026 05:00:32 +0800 Subject: [PATCH] refactor(apple): reuse artifact stream byte validation --- src/artifacts/apple/AppleAssetCatalogAnalysis.ts | 3 ++- src/artifacts/apple/InterfaceBuilderAnalysis.ts | 5 ++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/artifacts/apple/AppleAssetCatalogAnalysis.ts b/src/artifacts/apple/AppleAssetCatalogAnalysis.ts index e5321507fe..b6129df481 100644 --- a/src/artifacts/apple/AppleAssetCatalogAnalysis.ts +++ b/src/artifacts/apple/AppleAssetCatalogAnalysis.ts @@ -1,5 +1,6 @@ import { createHash } from "node:crypto"; import { lstat } from "node:fs/promises"; +import { streamChunkToBuffer } from "../StreamBytes.js"; import { DirectoryArtifactReader } from "../DirectoryArtifactReader.js"; import { ArtifactTraversalObservation } from "../ArtifactTraversalObservation.js"; import { @@ -353,7 +354,7 @@ const digestBounded = async ( "Asset catalog inspection cancelled", { cause: signal.reason }, ); - const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk); + const bytes = streamChunkToBuffer(chunk); length += bytes.length; if (length > MAX_CATALOG_BYTES) throw new ArtifactReaderFailure( diff --git a/src/artifacts/apple/InterfaceBuilderAnalysis.ts b/src/artifacts/apple/InterfaceBuilderAnalysis.ts index 26ef62548f..514bacdea5 100644 --- a/src/artifacts/apple/InterfaceBuilderAnalysis.ts +++ b/src/artifacts/apple/InterfaceBuilderAnalysis.ts @@ -8,6 +8,7 @@ import { isSourceLessAppKitAnnotationConnector, isUIKitRuntimeConnectionClass, } from "../../domain/apple/interfaceBuilderKeyedArchive.js"; +import { streamChunkToBuffer } from "../StreamBytes.js"; import { DirectoryArtifactReader } from "../DirectoryArtifactReader.js"; import { ArtifactTraversalObservation } from "../ArtifactTraversalObservation.js"; import { @@ -861,9 +862,7 @@ const readEntry = async ( const chunks: Buffer[] = []; let length = 0; for await (const chunk of stream) { - const bytes = Buffer.isBuffer(chunk) - ? chunk - : Buffer.from(chunk as Uint8Array); + const bytes = streamChunkToBuffer(chunk); length += bytes.length; if (length > maxInputBytes) { stream.destroy();