From 35bb98d1c8870cbd1e7e471977f1da438f99d48c Mon Sep 17 00:00:00 2001 From: Danila Poyarkov Date: Mon, 9 Mar 2026 02:58:13 +0300 Subject: [PATCH] Filter unzip entries during .fig parse to skip non-essential files Only decompress canvas.fig, canvas, and images/* entries. Avoids decompressing metadata and other cruft in large .fig files. --- packages/core/src/kiwi/fig-file.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/core/src/kiwi/fig-file.ts b/packages/core/src/kiwi/fig-file.ts index 1c364a76a..e337a7aa9 100644 --- a/packages/core/src/kiwi/fig-file.ts +++ b/packages/core/src/kiwi/fig-file.ts @@ -45,7 +45,12 @@ function parseFigKiwiContainer(data: Uint8Array): FigKiwiPayload | null { } export async function parseFigFile(buffer: ArrayBuffer): Promise { - const zip = unzipSync(new Uint8Array(buffer)) + const zip = unzipSync(new Uint8Array(buffer), { + filter: (file) => + file.name === 'canvas.fig' || + file.name === 'canvas' || + (file.name.startsWith('images/') && file.name !== 'images/'), + }) const entries = Object.keys(zip) let canvasData: Uint8Array | null = null