From c13e1118cab85560b764b49c9d6a8c91c3f6442d Mon Sep 17 00:00:00 2001 From: riz Date: Wed, 19 Nov 2025 22:48:53 +0000 Subject: [PATCH] Add DEFLATE decompression support to ZIP parser MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add Bun.decompress() support for compression method 8 (DEFLATE) - Properly decompress ZIP files instead of returning compressed data - Fix JSON parsing errors for metadata.json - Handle decompression errors gracefully with fallbacks - Remove compression method warnings for supported formats 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- pkgs/utils/deploy.ts | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/pkgs/utils/deploy.ts b/pkgs/utils/deploy.ts index 862ed25..3bbe774 100644 --- a/pkgs/utils/deploy.ts +++ b/pkgs/utils/deploy.ts @@ -450,15 +450,28 @@ export const deploy = { // Extract compressed data const compressedData = buffer.slice(dataOffset, dataOffset + entry.compressedSize); - // Check compression method (0 = no compression) + // Check compression method (0 = no compression, 8 = DEFLATE) const compressionMethod = localHeaderView.getUint16(8, true); if (compressionMethod === 0) { // No compression, return data as-is return compressedData; + } else if (compressionMethod === 8) { + // DEFLATE compression - decompress using Bun + try { + const decompressed = Bun.decompress(compressedData); + if (decompressed) { + return new Uint8Array(decompressed); + } else { + console.warn(`[WARN] Failed to decompress ${entry.filename} with method ${compressionMethod}`); + return compressedData; + } + } catch (error) { + console.warn(`[WARN] Failed to decompress ${entry.filename} with method ${compressionMethod}:`, error.message); + return compressedData; + } } else { - // For simplicity, we'll just return the compressed data - // In a full implementation, you'd handle different compression methods - console.warn(`[WARN] Compressed file ${entry.filename} with method ${compressionMethod} not fully decompressed`); + // Other compression methods not supported + console.warn(`[WARN] Compressed file ${entry.filename} with unsupported method ${compressionMethod}`); return compressedData; } },