Skip to content

Commit be20861

Browse files
committed
do not assume that fetch will unwrap gzip files
1 parent 35bd7a9 commit be20861

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/utils.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,17 @@ import { untar } from "@andrewbranch/untar.js";
22
import { Directory, File, ConsoleStdout, wasi as wasi_defs } from "@bjorn3/browser_wasi_shim";
33

44
export async function getLatestZigArchive() {
5-
const zigTarResponse = await fetch(new URL("../zig-out/zig.tar.gz", import.meta.url));
6-
const entries = untar(await zigTarResponse.arrayBuffer());
5+
const response = await fetch(new URL("../zig-out/zig.tar.gz", import.meta.url));
6+
let arrayBuffer = await response.arrayBuffer();
7+
const magicNumber = new Uint8Array(arrayBuffer).slice(0, 2);
8+
if (magicNumber[0] == 0x1F && magicNumber[1] == 0x8B) { // gzip
9+
const ds = new DecompressionStream("gzip");
10+
const response = new Response(new Response(arrayBuffer).body!.pipeThrough(ds));
11+
arrayBuffer = await response.arrayBuffer();
12+
} else {
13+
// already decompressed
14+
}
15+
const entries = untar(arrayBuffer);
716

817
let root: TreeNode = new Map();
918

0 commit comments

Comments
 (0)