```typescript title="WASM" import init, { extractBytes } from "kreuzberg-wasm"; await init(); // Note: WASM has no native batch API; use Promise.all with per-item error handling const files = document.getElementById("files") as HTMLInputElement; const fileList = files.files || []; // Extract multiple files concurrently (simulated batch) const extractionPromises = Array.from(fileList).map(async (file) => { try { const bytes = new Uint8Array(await file.arrayBuffer()); const result = await extractBytes(bytes, file.type || "application/octet-stream", undefined); return { file: file.name, success: true, result }; } catch (err) { return { file: file.name, success: false, error: err instanceof Error ? err.message : String(err), }; } }); const results = await Promise.all(extractionPromises); // Process results with per-item error handling results.forEach((item) => { if (item.success) { console.log(`✓ ${item.file}: ${item.result.content.length} characters`); } else { console.error(`✗ ${item.file}: ${item.error}`); } }); // Summary const succeeded = results.filter((r) => r.success).length; const failed = results.filter((r) => !r.success).length; console.log(`Extracted ${succeeded}/${results.length} files (${failed} errors)`); ```