import { extractBytes, initWasm } from "@kreuzberg/wasm"; async function extractWithRetry(bytes: Uint8Array, mimeType: string, maxRetries: number = 3) { await initWasm(); let lastError: Error | null = null; for (let attempt = 1; attempt <= maxRetries; attempt++) { try { console.log(`Extraction attempt ${attempt}/${maxRetries}`); const result = await extractBytes(bytes, mimeType); console.log("Extraction successful"); return result; } catch (error) { lastError = error instanceof Error ? error : new Error(String(error)); console.warn(`Attempt ${attempt} failed:`, lastError.message); if (attempt < maxRetries) { const delay = 2 ** attempt * 100; console.log(`Retrying in ${delay}ms...`); await new Promise((resolve) => setTimeout(resolve, delay)); } } } throw new Error(`Extraction failed after ${maxRetries} attempts: ${lastError?.message}`); } extractWithRetry( new Uint8Array(await fetch("doc.pdf").then((r) => r.arrayBuffer())), "application/pdf", ) .then((r) => console.log("Final result:", r)) .catch(console.error);