Add DEFLATE decompression support to ZIP parser

- 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 <noreply@anthropic.com>
This commit is contained in:
riz 2025-11-19 22:48:53 +00:00
parent 10dd559c0e
commit c13e1118ca
1 changed files with 17 additions and 4 deletions

View File

@ -450,15 +450,28 @@ export const deploy = {
// Extract compressed data // Extract compressed data
const compressedData = buffer.slice(dataOffset, dataOffset + entry.compressedSize); 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); const compressionMethod = localHeaderView.getUint16(8, true);
if (compressionMethod === 0) { if (compressionMethod === 0) {
// No compression, return data as-is // No compression, return data as-is
return compressedData; return compressedData;
} else if (compressionMethod === 8) {
// DEFLATE compression - decompress using Bun
try {
const decompressed = Bun.decompress(compressedData);
if (decompressed) {
return new Uint8Array(decompressed);
} else { } else {
// For simplicity, we'll just return the compressed data console.warn(`[WARN] Failed to decompress ${entry.filename} with method ${compressionMethod}`);
// In a full implementation, you'd handle different compression methods return compressedData;
console.warn(`[WARN] Compressed file ${entry.filename} with method ${compressionMethod} not fully decompressed`); }
} catch (error) {
console.warn(`[WARN] Failed to decompress ${entry.filename} with method ${compressionMethod}:`, error.message);
return compressedData;
}
} else {
// Other compression methods not supported
console.warn(`[WARN] Compressed file ${entry.filename} with unsupported method ${compressionMethod}`);
return compressedData; return compressedData;
} }
}, },