From 37b78f4d748a6f76dd0ea8711b6feb449ada092b Mon Sep 17 00:00:00 2001 From: riz Date: Wed, 19 Nov 2025 23:15:49 +0000 Subject: [PATCH] Fix ZIP DEFLATE decompression - use inflateRaw instead of gunzip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace gunzipAsync with zlib.inflateRaw() for ZIP DEFLATE compression - gunzipAsync expects GZIP format, but ZIP files use raw DEFLATE streams - This fixes metadata.json and all compressed file processing - archiver library creates standard ZIP format with DEFLATE compression 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- pkgs/utils/deploy.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pkgs/utils/deploy.ts b/pkgs/utils/deploy.ts index 93a754a..f7e3d35 100644 --- a/pkgs/utils/deploy.ts +++ b/pkgs/utils/deploy.ts @@ -479,9 +479,15 @@ export const deploy = { // No compression, return data as-is return compressedData; } else if (compressionMethod === 8) { - // DEFLATE compression - decompress using gunzipAsync + // DEFLATE compression - decompress using inflateRaw (for ZIP format) try { - const decompressed = await gunzipAsync(compressedData); + const { inflateRaw } = await import('zlib'); + const decompressed = await new Promise((resolve, reject) => { + inflateRaw(compressedData, (err, result) => { + if (err) reject(err); + else resolve(result); + }); + }); return new Uint8Array(decompressed); } catch (error) { console.warn(`[WARN] Failed to decompress ${entry.filename} with method ${compressionMethod}:`, error.message);