```typescript title="WASM" import { initWasm, extractBytes } from "@kreuzberg/wasm"; await initWasm(); const config = { chunking: { maxChars: 1000, chunkOverlap: 100, }, }; const bytes = new Uint8Array(buffer); const result = await extractBytes(bytes, "application/pdf", config); result.chunks?.forEach((chunk, idx) => { console.log(`Chunk ${idx}: ${chunk.content.substring(0, 50)}...`); console.log(`Tokens: ${chunk.metadata?.token_count}`); }); ``` ```typescript title="WASM - Markdown with Heading Context" import { initWasm, extractBytes } from "@kreuzberg/wasm"; await initWasm(); const config = { chunking: { chunkerType: "markdown", maxChars: 2000, // Note: Token-based sizing is not available in WASM builds. // Use character-based sizing instead. }, }; const bytes = new Uint8Array(buffer); const result = await extractBytes(bytes, "text/markdown", config); result.chunks?.forEach((chunk, idx) => { console.log(`Chunk ${idx}: ${chunk.content.substring(0, 50)}...`); if (chunk.metadata?.headingContext?.headings) { console.log("Headings:"); chunk.metadata.headingContext.headings.forEach((h) => { console.log(` Level ${h.level}: ${h.text}`); }); } }); ``` ```typescript title="WASM - Prepend Heading Context" import { initWasm, extractBytes } from "@kreuzberg/wasm"; await initWasm(); const config = { chunking: { chunkerType: "markdown", maxChars: 2000, prependHeadingContext: true, }, }; const bytes = new Uint8Array(buffer); const result = await extractBytes(bytes, "text/markdown", config); result.chunks?.forEach((chunk, idx) => { // Each chunk's content is prefixed with its heading breadcrumb console.log(`Chunk ${idx}: ${chunk.content.substring(0, 80)}...`); }); ```