import type { ExtractionResult } from "@kreuzberg/wasm"; import { extractBytes, initWasm } from "@kreuzberg/wasm"; interface ValidationError { field: string; message: string; } class ContentValidator { private minContentLength: number = 10; private maxContentLength: number = 10000000; setMinLength(length: number) { this.minContentLength = length; } validate(result: ExtractionResult): ValidationError[] { const errors: ValidationError[] = []; if (result.content.length < this.minContentLength) { errors.push({ field: "content", message: `Content length (${result.content.length}) is below minimum (${this.minContentLength})`, }); } if (result.content.length > this.maxContentLength) { errors.push({ field: "content", message: `Content length (${result.content.length}) exceeds maximum (${this.maxContentLength})`, }); } if (!result.mimeType) { errors.push({ field: "mimeType", message: "MIME type is required", }); } return errors; } getName(): string { return "content-validator"; } } async function demonstrateValidator() { await initWasm(); const validator = new ContentValidator(); validator.setMinLength(100); const bytes = new Uint8Array(await fetch("document.pdf").then((r) => r.arrayBuffer())); const result = await extractBytes(bytes, "application/pdf"); const errors = validator.validate(result); if (errors.length > 0) { console.log("Validation errors:"); errors.forEach((e) => console.log(` ${e.field}: ${e.message}`)); } else { console.log("Content validation passed"); } } demonstrateValidator().catch(console.error);