@kreuzberg/html-to-markdown-wasm 3.6.10 → 3.6.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  <div align="center" style="display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin: 20px 0;">
4
4
  <a href="https://github.com/kreuzberg-dev/alef">
5
- <img src="https://img.shields.io/badge/Bindings-alef%20%D7%90-007ec6" alt="Bindings">
5
+ <img src="https://img.shields.io/badge/built%20with-alef%20%D7%90-007ec6" alt="Built with alef">
6
6
  </a>
7
7
  <!-- Language Bindings -->
8
8
  <a href="https://crates.io/crates/html-to-markdown-rs">
@@ -153,14 +153,13 @@ The dispatcher is invisible to the caller. Output is byte-identical across tiers
153
153
 
154
154
  **`ConversionOptions`** – Key configuration fields:
155
155
 
156
- - `heading_style`: Heading format (`"underlined"` | `"atx"` | `"atx_closed"`) — default: `"underlined"`
156
+ - `heading_style`: Heading format (`"underlined"` | `"atx"` | `"atx_closed"`) — default: `"atx"`
157
157
  - `list_indent_width`: Spaces per indent level — default: `2`
158
- - `bullets`: Bullet characters cycle — default: `"*+-"`
158
+ - `bullets`: Bullet characters cycle — default: `"-*+"`
159
159
  - `wrap`: Enable text wrapping — default: `false`
160
160
  - `wrap_width`: Wrap at column — default: `80`
161
161
  - `code_language`: Default fenced code block language — default: none
162
- - `extract_metadata`: Enable metadata extraction into `result.metadata` — default: `false`
163
- - `extract_tables`: Enable structured table extraction into `result.tables` — default: `false`
162
+ - `extract_metadata`: Enable metadata extraction into `result.metadata` — default: `true`
164
163
  - `output_format`: Output markup format (`"markdown"` | `"djot"` | `"plain"`) — default: `"markdown"`
165
164
 
166
165
  ## Djot Output Format
@@ -214,13 +213,13 @@ The metadata extraction feature enables comprehensive document analysis during c
214
213
 
215
214
  ## Part of Kreuzberg.dev
216
215
 
217
- - [Kreuzberg](https://github.com/kreuzberg-dev/kreuzberg) — document intelligence: text, tables, metadata from 90+ formats with optional OCR.
216
+ - [Kreuzberg](https://github.com/kreuzberg-dev/kreuzberg) — document intelligence: text, tables, metadata from 91+ formats with optional OCR.
218
217
  - [Kreuzberg Cloud](https://github.com/kreuzberg-dev/kreuzberg-cloud) — managed extraction API with SDKs, dashboards, and observability.
219
218
  - [kreuzcrawl](https://github.com/kreuzberg-dev/kreuzcrawl) — web crawling and scraping with HTML→Markdown and headless-Chrome fallback.
219
+ - [html-to-markdown](https://github.com/kreuzberg-dev/html-to-markdown) — fast, lossless HTML→Markdown engine.
220
220
  - [liter-llm](https://github.com/kreuzberg-dev/liter-llm) — universal LLM API client with native bindings for 14 languages and 143 providers.
221
221
  - [tree-sitter-language-pack](https://github.com/kreuzberg-dev/tree-sitter-language-pack) — tree-sitter grammars and code-intelligence primitives.
222
222
  - [alef](https://github.com/kreuzberg-dev/alef) — the polyglot binding generator that produces every per-language binding across the 5 polyglot repos.
223
- - [Discord](https://discord.gg/xt9WY3GnKR) — community, roadmap, announcements.
224
223
 
225
224
  ## Contributing
226
225
 
@@ -248,5 +247,4 @@ If you find this library useful, consider [sponsoring the project](https://githu
248
247
  Have questions or run into issues? We're here to help:
249
248
 
250
249
  - **GitHub Issues:** [github.com/kreuzberg-dev/html-to-markdown/issues](https://github.com/kreuzberg-dev/html-to-markdown/issues)
251
- - **Issues:** [github.com/kreuzberg-dev/html-to-markdown/issues](https://github.com/kreuzberg-dev/html-to-markdown/issues)
252
250
  - **Discord Community:** [discord.gg/xt9WY3GnKR](https://discord.gg/xt9WY3GnKR)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kreuzberg/html-to-markdown-wasm",
3
- "version": "3.6.10",
3
+ "version": "3.6.12",
4
4
  "private": false,
5
5
  "description": "High-performance HTML to Markdown converter",
6
6
  "license": "MIT",
@@ -2,7 +2,7 @@
2
2
 
3
3
  <div align="center" style="display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin: 20px 0;">
4
4
  <a href="https://github.com/kreuzberg-dev/alef">
5
- <img src="https://img.shields.io/badge/Bindings-alef%20%D7%90-007ec6" alt="Bindings">
5
+ <img src="https://img.shields.io/badge/built%20with-alef%20%D7%90-007ec6" alt="Built with alef">
6
6
  </a>
7
7
  <!-- Language Bindings -->
8
8
  <a href="https://crates.io/crates/html-to-markdown-rs">
@@ -153,14 +153,13 @@ The dispatcher is invisible to the caller. Output is byte-identical across tiers
153
153
 
154
154
  **`ConversionOptions`** – Key configuration fields:
155
155
 
156
- - `heading_style`: Heading format (`"underlined"` | `"atx"` | `"atx_closed"`) — default: `"underlined"`
156
+ - `heading_style`: Heading format (`"underlined"` | `"atx"` | `"atx_closed"`) — default: `"atx"`
157
157
  - `list_indent_width`: Spaces per indent level — default: `2`
158
- - `bullets`: Bullet characters cycle — default: `"*+-"`
158
+ - `bullets`: Bullet characters cycle — default: `"-*+"`
159
159
  - `wrap`: Enable text wrapping — default: `false`
160
160
  - `wrap_width`: Wrap at column — default: `80`
161
161
  - `code_language`: Default fenced code block language — default: none
162
- - `extract_metadata`: Enable metadata extraction into `result.metadata` — default: `false`
163
- - `extract_tables`: Enable structured table extraction into `result.tables` — default: `false`
162
+ - `extract_metadata`: Enable metadata extraction into `result.metadata` — default: `true`
164
163
  - `output_format`: Output markup format (`"markdown"` | `"djot"` | `"plain"`) — default: `"markdown"`
165
164
 
166
165
  ## Djot Output Format
@@ -214,13 +213,13 @@ The metadata extraction feature enables comprehensive document analysis during c
214
213
 
215
214
  ## Part of Kreuzberg.dev
216
215
 
217
- - [Kreuzberg](https://github.com/kreuzberg-dev/kreuzberg) — document intelligence: text, tables, metadata from 90+ formats with optional OCR.
216
+ - [Kreuzberg](https://github.com/kreuzberg-dev/kreuzberg) — document intelligence: text, tables, metadata from 91+ formats with optional OCR.
218
217
  - [Kreuzberg Cloud](https://github.com/kreuzberg-dev/kreuzberg-cloud) — managed extraction API with SDKs, dashboards, and observability.
219
218
  - [kreuzcrawl](https://github.com/kreuzberg-dev/kreuzcrawl) — web crawling and scraping with HTML→Markdown and headless-Chrome fallback.
219
+ - [html-to-markdown](https://github.com/kreuzberg-dev/html-to-markdown) — fast, lossless HTML→Markdown engine.
220
220
  - [liter-llm](https://github.com/kreuzberg-dev/liter-llm) — universal LLM API client with native bindings for 14 languages and 143 providers.
221
221
  - [tree-sitter-language-pack](https://github.com/kreuzberg-dev/tree-sitter-language-pack) — tree-sitter grammars and code-intelligence primitives.
222
222
  - [alef](https://github.com/kreuzberg-dev/alef) — the polyglot binding generator that produces every per-language binding across the 5 polyglot repos.
223
- - [Discord](https://discord.gg/xt9WY3GnKR) — community, roadmap, announcements.
224
223
 
225
224
  ## Contributing
226
225
 
@@ -248,5 +247,4 @@ If you find this library useful, consider [sponsoring the project](https://githu
248
247
  Have questions or run into issues? We're here to help:
249
248
 
250
249
  - **GitHub Issues:** [github.com/kreuzberg-dev/html-to-markdown/issues](https://github.com/kreuzberg-dev/html-to-markdown/issues)
251
- - **Issues:** [github.com/kreuzberg-dev/html-to-markdown/issues](https://github.com/kreuzberg-dev/html-to-markdown/issues)
252
250
  - **Discord Community:** [discord.gg/xt9WY3GnKR](https://discord.gg/xt9WY3GnKR)
@@ -608,8 +608,7 @@ export class WasmNodeContext {
608
608
  /**
609
609
  * Construct a `NodeContext` with an owned attribute map.
610
610
  *
611
- * Prefer `NodeContext.with_lazy_attributes` (pub(crate)) inside the
612
- * converter to avoid the eager `collect_tag_attributes` allocation.
611
+ * Use this when the caller already has materialized attributes.
613
612
  */
614
613
  static withOwnedAttributes(node_type: WasmNodeType, tag_name: string, attributes: any, depth: number, index_in_parent: number, parent_tag: string | null | undefined, is_inline: boolean): WasmNodeContext;
615
614
  depth: number;
@@ -869,8 +868,7 @@ export class WasmTableGrid {
869
868
  * similar — that spans a contiguous run of bytes inside `DocumentNode.content`'s text field.
870
869
  *
871
870
  * Byte offsets (`start`..`end`) are into the UTF-8 encoded text of the parent node. The range
872
- * follows Rust slice conventions: `start` is inclusive and `end` is exclusive, so the annotated
873
- * text is `text[start as usize..end as usize]`.
871
+ * is half-open: `start` is inclusive and `end` is exclusive.
874
872
  *
875
873
  * Multiple annotations on the same node can overlap (e.g. bold-italic text), and they are
876
874
  * stored in the order they are encountered during DOM traversal.
@@ -987,9 +985,9 @@ export enum WasmWhitespaceMode {
987
985
  * # Arguments
988
986
  *
989
987
  * * `html` — the HTML string to convert.
990
- * * `options` — conversion options. Rust accepts either bare
991
- * `ConversionOptions`, `Some(options)`, or `None`; bindings expose the same
992
- * option fields through language-native constructors or optional parameters.
988
+ * * `options` — conversion options. Rust accepts bare `ConversionOptions`,
989
+ * `Some(options)`, or `None`. Language bindings expose the same option
990
+ * fields through native constructors or optional parameters.
993
991
  *
994
992
  * # Example
995
993
  *
@@ -4573,8 +4573,7 @@ export class WasmNodeContext {
4573
4573
  /**
4574
4574
  * Construct a `NodeContext` with an owned attribute map.
4575
4575
  *
4576
- * Prefer `NodeContext.with_lazy_attributes` (pub(crate)) inside the
4577
- * converter to avoid the eager `collect_tag_attributes` allocation.
4576
+ * Use this when the caller already has materialized attributes.
4578
4577
  * @param {WasmNodeType} node_type
4579
4578
  * @param {string} tag_name
4580
4579
  * @param {any} attributes
@@ -5387,8 +5386,7 @@ if (Symbol.dispose) WasmTableGrid.prototype[Symbol.dispose] = WasmTableGrid.prot
5387
5386
  * similar — that spans a contiguous run of bytes inside `DocumentNode.content`'s text field.
5388
5387
  *
5389
5388
  * Byte offsets (`start`..`end`) are into the UTF-8 encoded text of the parent node. The range
5390
- * follows Rust slice conventions: `start` is inclusive and `end` is exclusive, so the annotated
5391
- * text is `text[start as usize..end as usize]`.
5389
+ * is half-open: `start` is inclusive and `end` is exclusive.
5392
5390
  *
5393
5391
  * Multiple annotations on the same node can overlap (e.g. bold-italic text), and they are
5394
5392
  * stored in the order they are encountered during DOM traversal.
@@ -5607,9 +5605,9 @@ export const WasmWhitespaceMode = Object.freeze({
5607
5605
  * # Arguments
5608
5606
  *
5609
5607
  * * `html` — the HTML string to convert.
5610
- * * `options` — conversion options. Rust accepts either bare
5611
- * `ConversionOptions`, `Some(options)`, or `None`; bindings expose the same
5612
- * option fields through language-native constructors or optional parameters.
5608
+ * * `options` — conversion options. Rust accepts bare `ConversionOptions`,
5609
+ * `Some(options)`, or `None`. Language bindings expose the same option
5610
+ * fields through native constructors or optional parameters.
5613
5611
  *
5614
5612
  * # Example
5615
5613
  *
@@ -2,7 +2,7 @@
2
2
  "name": "html-to-markdown-wasm",
3
3
  "type": "module",
4
4
  "description": "High-performance HTML to Markdown converter",
5
- "version": "3.6.10",
5
+ "version": "3.6.12",
6
6
  "license": "MIT",
7
7
  "repository": {
8
8
  "type": "git",
@@ -2,7 +2,7 @@
2
2
 
3
3
  <div align="center" style="display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin: 20px 0;">
4
4
  <a href="https://github.com/kreuzberg-dev/alef">
5
- <img src="https://img.shields.io/badge/Bindings-alef%20%D7%90-007ec6" alt="Bindings">
5
+ <img src="https://img.shields.io/badge/built%20with-alef%20%D7%90-007ec6" alt="Built with alef">
6
6
  </a>
7
7
  <!-- Language Bindings -->
8
8
  <a href="https://crates.io/crates/html-to-markdown-rs">
@@ -153,14 +153,13 @@ The dispatcher is invisible to the caller. Output is byte-identical across tiers
153
153
 
154
154
  **`ConversionOptions`** – Key configuration fields:
155
155
 
156
- - `heading_style`: Heading format (`"underlined"` | `"atx"` | `"atx_closed"`) — default: `"underlined"`
156
+ - `heading_style`: Heading format (`"underlined"` | `"atx"` | `"atx_closed"`) — default: `"atx"`
157
157
  - `list_indent_width`: Spaces per indent level — default: `2`
158
- - `bullets`: Bullet characters cycle — default: `"*+-"`
158
+ - `bullets`: Bullet characters cycle — default: `"-*+"`
159
159
  - `wrap`: Enable text wrapping — default: `false`
160
160
  - `wrap_width`: Wrap at column — default: `80`
161
161
  - `code_language`: Default fenced code block language — default: none
162
- - `extract_metadata`: Enable metadata extraction into `result.metadata` — default: `false`
163
- - `extract_tables`: Enable structured table extraction into `result.tables` — default: `false`
162
+ - `extract_metadata`: Enable metadata extraction into `result.metadata` — default: `true`
164
163
  - `output_format`: Output markup format (`"markdown"` | `"djot"` | `"plain"`) — default: `"markdown"`
165
164
 
166
165
  ## Djot Output Format
@@ -214,13 +213,13 @@ The metadata extraction feature enables comprehensive document analysis during c
214
213
 
215
214
  ## Part of Kreuzberg.dev
216
215
 
217
- - [Kreuzberg](https://github.com/kreuzberg-dev/kreuzberg) — document intelligence: text, tables, metadata from 90+ formats with optional OCR.
216
+ - [Kreuzberg](https://github.com/kreuzberg-dev/kreuzberg) — document intelligence: text, tables, metadata from 91+ formats with optional OCR.
218
217
  - [Kreuzberg Cloud](https://github.com/kreuzberg-dev/kreuzberg-cloud) — managed extraction API with SDKs, dashboards, and observability.
219
218
  - [kreuzcrawl](https://github.com/kreuzberg-dev/kreuzcrawl) — web crawling and scraping with HTML→Markdown and headless-Chrome fallback.
219
+ - [html-to-markdown](https://github.com/kreuzberg-dev/html-to-markdown) — fast, lossless HTML→Markdown engine.
220
220
  - [liter-llm](https://github.com/kreuzberg-dev/liter-llm) — universal LLM API client with native bindings for 14 languages and 143 providers.
221
221
  - [tree-sitter-language-pack](https://github.com/kreuzberg-dev/tree-sitter-language-pack) — tree-sitter grammars and code-intelligence primitives.
222
222
  - [alef](https://github.com/kreuzberg-dev/alef) — the polyglot binding generator that produces every per-language binding across the 5 polyglot repos.
223
- - [Discord](https://discord.gg/xt9WY3GnKR) — community, roadmap, announcements.
224
223
 
225
224
  ## Contributing
226
225
 
@@ -248,5 +247,4 @@ If you find this library useful, consider [sponsoring the project](https://githu
248
247
  Have questions or run into issues? We're here to help:
249
248
 
250
249
  - **GitHub Issues:** [github.com/kreuzberg-dev/html-to-markdown/issues](https://github.com/kreuzberg-dev/html-to-markdown/issues)
251
- - **Issues:** [github.com/kreuzberg-dev/html-to-markdown/issues](https://github.com/kreuzberg-dev/html-to-markdown/issues)
252
250
  - **Discord Community:** [discord.gg/xt9WY3GnKR](https://discord.gg/xt9WY3GnKR)
@@ -608,8 +608,7 @@ export class WasmNodeContext {
608
608
  /**
609
609
  * Construct a `NodeContext` with an owned attribute map.
610
610
  *
611
- * Prefer `NodeContext.with_lazy_attributes` (pub(crate)) inside the
612
- * converter to avoid the eager `collect_tag_attributes` allocation.
611
+ * Use this when the caller already has materialized attributes.
613
612
  */
614
613
  static withOwnedAttributes(node_type: WasmNodeType, tag_name: string, attributes: any, depth: number, index_in_parent: number, parent_tag: string | null | undefined, is_inline: boolean): WasmNodeContext;
615
614
  depth: number;
@@ -869,8 +868,7 @@ export class WasmTableGrid {
869
868
  * similar — that spans a contiguous run of bytes inside `DocumentNode.content`'s text field.
870
869
  *
871
870
  * Byte offsets (`start`..`end`) are into the UTF-8 encoded text of the parent node. The range
872
- * follows Rust slice conventions: `start` is inclusive and `end` is exclusive, so the annotated
873
- * text is `text[start as usize..end as usize]`.
871
+ * is half-open: `start` is inclusive and `end` is exclusive.
874
872
  *
875
873
  * Multiple annotations on the same node can overlap (e.g. bold-italic text), and they are
876
874
  * stored in the order they are encountered during DOM traversal.
@@ -987,9 +985,9 @@ export enum WasmWhitespaceMode {
987
985
  * # Arguments
988
986
  *
989
987
  * * `html` — the HTML string to convert.
990
- * * `options` — conversion options. Rust accepts either bare
991
- * `ConversionOptions`, `Some(options)`, or `None`; bindings expose the same
992
- * option fields through language-native constructors or optional parameters.
988
+ * * `options` — conversion options. Rust accepts bare `ConversionOptions`,
989
+ * `Some(options)`, or `None`. Language bindings expose the same option
990
+ * fields through native constructors or optional parameters.
993
991
  *
994
992
  * # Example
995
993
  *
@@ -4575,8 +4575,7 @@ export class WasmNodeContext {
4575
4575
  /**
4576
4576
  * Construct a `NodeContext` with an owned attribute map.
4577
4577
  *
4578
- * Prefer `NodeContext.with_lazy_attributes` (pub(crate)) inside the
4579
- * converter to avoid the eager `collect_tag_attributes` allocation.
4578
+ * Use this when the caller already has materialized attributes.
4580
4579
  * @param {WasmNodeType} node_type
4581
4580
  * @param {string} tag_name
4582
4581
  * @param {any} attributes
@@ -5389,8 +5388,7 @@ if (Symbol.dispose) WasmTableGrid.prototype[Symbol.dispose] = WasmTableGrid.prot
5389
5388
  * similar — that spans a contiguous run of bytes inside `DocumentNode.content`'s text field.
5390
5389
  *
5391
5390
  * Byte offsets (`start`..`end`) are into the UTF-8 encoded text of the parent node. The range
5392
- * follows Rust slice conventions: `start` is inclusive and `end` is exclusive, so the annotated
5393
- * text is `text[start as usize..end as usize]`.
5391
+ * is half-open: `start` is inclusive and `end` is exclusive.
5394
5392
  *
5395
5393
  * Multiple annotations on the same node can overlap (e.g. bold-italic text), and they are
5396
5394
  * stored in the order they are encountered during DOM traversal.
@@ -5609,9 +5607,9 @@ export const WasmWhitespaceMode = Object.freeze({
5609
5607
  * # Arguments
5610
5608
  *
5611
5609
  * * `html` — the HTML string to convert.
5612
- * * `options` — conversion options. Rust accepts either bare
5613
- * `ConversionOptions`, `Some(options)`, or `None`; bindings expose the same
5614
- * option fields through language-native constructors or optional parameters.
5610
+ * * `options` — conversion options. Rust accepts bare `ConversionOptions`,
5611
+ * `Some(options)`, or `None`. Language bindings expose the same option
5612
+ * fields through native constructors or optional parameters.
5615
5613
  *
5616
5614
  * # Example
5617
5615
  *
@@ -2,7 +2,7 @@
2
2
 
3
3
  <div align="center" style="display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin: 20px 0;">
4
4
  <a href="https://github.com/kreuzberg-dev/alef">
5
- <img src="https://img.shields.io/badge/Bindings-alef%20%D7%90-007ec6" alt="Bindings">
5
+ <img src="https://img.shields.io/badge/built%20with-alef%20%D7%90-007ec6" alt="Built with alef">
6
6
  </a>
7
7
  <!-- Language Bindings -->
8
8
  <a href="https://crates.io/crates/html-to-markdown-rs">
@@ -153,14 +153,13 @@ The dispatcher is invisible to the caller. Output is byte-identical across tiers
153
153
 
154
154
  **`ConversionOptions`** – Key configuration fields:
155
155
 
156
- - `heading_style`: Heading format (`"underlined"` | `"atx"` | `"atx_closed"`) — default: `"underlined"`
156
+ - `heading_style`: Heading format (`"underlined"` | `"atx"` | `"atx_closed"`) — default: `"atx"`
157
157
  - `list_indent_width`: Spaces per indent level — default: `2`
158
- - `bullets`: Bullet characters cycle — default: `"*+-"`
158
+ - `bullets`: Bullet characters cycle — default: `"-*+"`
159
159
  - `wrap`: Enable text wrapping — default: `false`
160
160
  - `wrap_width`: Wrap at column — default: `80`
161
161
  - `code_language`: Default fenced code block language — default: none
162
- - `extract_metadata`: Enable metadata extraction into `result.metadata` — default: `false`
163
- - `extract_tables`: Enable structured table extraction into `result.tables` — default: `false`
162
+ - `extract_metadata`: Enable metadata extraction into `result.metadata` — default: `true`
164
163
  - `output_format`: Output markup format (`"markdown"` | `"djot"` | `"plain"`) — default: `"markdown"`
165
164
 
166
165
  ## Djot Output Format
@@ -214,13 +213,13 @@ The metadata extraction feature enables comprehensive document analysis during c
214
213
 
215
214
  ## Part of Kreuzberg.dev
216
215
 
217
- - [Kreuzberg](https://github.com/kreuzberg-dev/kreuzberg) — document intelligence: text, tables, metadata from 90+ formats with optional OCR.
216
+ - [Kreuzberg](https://github.com/kreuzberg-dev/kreuzberg) — document intelligence: text, tables, metadata from 91+ formats with optional OCR.
218
217
  - [Kreuzberg Cloud](https://github.com/kreuzberg-dev/kreuzberg-cloud) — managed extraction API with SDKs, dashboards, and observability.
219
218
  - [kreuzcrawl](https://github.com/kreuzberg-dev/kreuzcrawl) — web crawling and scraping with HTML→Markdown and headless-Chrome fallback.
219
+ - [html-to-markdown](https://github.com/kreuzberg-dev/html-to-markdown) — fast, lossless HTML→Markdown engine.
220
220
  - [liter-llm](https://github.com/kreuzberg-dev/liter-llm) — universal LLM API client with native bindings for 14 languages and 143 providers.
221
221
  - [tree-sitter-language-pack](https://github.com/kreuzberg-dev/tree-sitter-language-pack) — tree-sitter grammars and code-intelligence primitives.
222
222
  - [alef](https://github.com/kreuzberg-dev/alef) — the polyglot binding generator that produces every per-language binding across the 5 polyglot repos.
223
- - [Discord](https://discord.gg/xt9WY3GnKR) — community, roadmap, announcements.
224
223
 
225
224
  ## Contributing
226
225
 
@@ -248,5 +247,4 @@ If you find this library useful, consider [sponsoring the project](https://githu
248
247
  Have questions or run into issues? We're here to help:
249
248
 
250
249
  - **GitHub Issues:** [github.com/kreuzberg-dev/html-to-markdown/issues](https://github.com/kreuzberg-dev/html-to-markdown/issues)
251
- - **Issues:** [github.com/kreuzberg-dev/html-to-markdown/issues](https://github.com/kreuzberg-dev/html-to-markdown/issues)
252
250
  - **Discord Community:** [discord.gg/xt9WY3GnKR](https://discord.gg/xt9WY3GnKR)
@@ -608,8 +608,7 @@ export class WasmNodeContext {
608
608
  /**
609
609
  * Construct a `NodeContext` with an owned attribute map.
610
610
  *
611
- * Prefer `NodeContext.with_lazy_attributes` (pub(crate)) inside the
612
- * converter to avoid the eager `collect_tag_attributes` allocation.
611
+ * Use this when the caller already has materialized attributes.
613
612
  */
614
613
  static withOwnedAttributes(node_type: WasmNodeType, tag_name: string, attributes: any, depth: number, index_in_parent: number, parent_tag: string | null | undefined, is_inline: boolean): WasmNodeContext;
615
614
  depth: number;
@@ -869,8 +868,7 @@ export class WasmTableGrid {
869
868
  * similar — that spans a contiguous run of bytes inside `DocumentNode.content`'s text field.
870
869
  *
871
870
  * Byte offsets (`start`..`end`) are into the UTF-8 encoded text of the parent node. The range
872
- * follows Rust slice conventions: `start` is inclusive and `end` is exclusive, so the annotated
873
- * text is `text[start as usize..end as usize]`.
871
+ * is half-open: `start` is inclusive and `end` is exclusive.
874
872
  *
875
873
  * Multiple annotations on the same node can overlap (e.g. bold-italic text), and they are
876
874
  * stored in the order they are encountered during DOM traversal.
@@ -987,9 +985,9 @@ export enum WasmWhitespaceMode {
987
985
  * # Arguments
988
986
  *
989
987
  * * `html` — the HTML string to convert.
990
- * * `options` — conversion options. Rust accepts either bare
991
- * `ConversionOptions`, `Some(options)`, or `None`; bindings expose the same
992
- * option fields through language-native constructors or optional parameters.
988
+ * * `options` — conversion options. Rust accepts bare `ConversionOptions`,
989
+ * `Some(options)`, or `None`. Language bindings expose the same option
990
+ * fields through native constructors or optional parameters.
993
991
  *
994
992
  * # Example
995
993
  *
@@ -4598,8 +4598,7 @@ class WasmNodeContext {
4598
4598
  /**
4599
4599
  * Construct a `NodeContext` with an owned attribute map.
4600
4600
  *
4601
- * Prefer `NodeContext.with_lazy_attributes` (pub(crate)) inside the
4602
- * converter to avoid the eager `collect_tag_attributes` allocation.
4601
+ * Use this when the caller already has materialized attributes.
4603
4602
  * @param {WasmNodeType} node_type
4604
4603
  * @param {string} tag_name
4605
4604
  * @param {any} attributes
@@ -5423,8 +5422,7 @@ exports.WasmTableGrid = WasmTableGrid;
5423
5422
  * similar — that spans a contiguous run of bytes inside `DocumentNode.content`'s text field.
5424
5423
  *
5425
5424
  * Byte offsets (`start`..`end`) are into the UTF-8 encoded text of the parent node. The range
5426
- * follows Rust slice conventions: `start` is inclusive and `end` is exclusive, so the annotated
5427
- * text is `text[start as usize..end as usize]`.
5425
+ * is half-open: `start` is inclusive and `end` is exclusive.
5428
5426
  *
5429
5427
  * Multiple annotations on the same node can overlap (e.g. bold-italic text), and they are
5430
5428
  * stored in the order they are encountered during DOM traversal.
@@ -5651,9 +5649,9 @@ exports.WasmWhitespaceMode = WasmWhitespaceMode;
5651
5649
  * # Arguments
5652
5650
  *
5653
5651
  * * `html` — the HTML string to convert.
5654
- * * `options` — conversion options. Rust accepts either bare
5655
- * `ConversionOptions`, `Some(options)`, or `None`; bindings expose the same
5656
- * option fields through language-native constructors or optional parameters.
5652
+ * * `options` — conversion options. Rust accepts bare `ConversionOptions`,
5653
+ * `Some(options)`, or `None`. Language bindings expose the same option
5654
+ * fields through native constructors or optional parameters.
5657
5655
  *
5658
5656
  * # Example
5659
5657
  *
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "html-to-markdown-wasm",
3
3
  "description": "High-performance HTML to Markdown converter",
4
- "version": "3.6.10",
4
+ "version": "3.6.12",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
package/pkg/web/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  <div align="center" style="display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin: 20px 0;">
4
4
  <a href="https://github.com/kreuzberg-dev/alef">
5
- <img src="https://img.shields.io/badge/Bindings-alef%20%D7%90-007ec6" alt="Bindings">
5
+ <img src="https://img.shields.io/badge/built%20with-alef%20%D7%90-007ec6" alt="Built with alef">
6
6
  </a>
7
7
  <!-- Language Bindings -->
8
8
  <a href="https://crates.io/crates/html-to-markdown-rs">
@@ -153,14 +153,13 @@ The dispatcher is invisible to the caller. Output is byte-identical across tiers
153
153
 
154
154
  **`ConversionOptions`** – Key configuration fields:
155
155
 
156
- - `heading_style`: Heading format (`"underlined"` | `"atx"` | `"atx_closed"`) — default: `"underlined"`
156
+ - `heading_style`: Heading format (`"underlined"` | `"atx"` | `"atx_closed"`) — default: `"atx"`
157
157
  - `list_indent_width`: Spaces per indent level — default: `2`
158
- - `bullets`: Bullet characters cycle — default: `"*+-"`
158
+ - `bullets`: Bullet characters cycle — default: `"-*+"`
159
159
  - `wrap`: Enable text wrapping — default: `false`
160
160
  - `wrap_width`: Wrap at column — default: `80`
161
161
  - `code_language`: Default fenced code block language — default: none
162
- - `extract_metadata`: Enable metadata extraction into `result.metadata` — default: `false`
163
- - `extract_tables`: Enable structured table extraction into `result.tables` — default: `false`
162
+ - `extract_metadata`: Enable metadata extraction into `result.metadata` — default: `true`
164
163
  - `output_format`: Output markup format (`"markdown"` | `"djot"` | `"plain"`) — default: `"markdown"`
165
164
 
166
165
  ## Djot Output Format
@@ -214,13 +213,13 @@ The metadata extraction feature enables comprehensive document analysis during c
214
213
 
215
214
  ## Part of Kreuzberg.dev
216
215
 
217
- - [Kreuzberg](https://github.com/kreuzberg-dev/kreuzberg) — document intelligence: text, tables, metadata from 90+ formats with optional OCR.
216
+ - [Kreuzberg](https://github.com/kreuzberg-dev/kreuzberg) — document intelligence: text, tables, metadata from 91+ formats with optional OCR.
218
217
  - [Kreuzberg Cloud](https://github.com/kreuzberg-dev/kreuzberg-cloud) — managed extraction API with SDKs, dashboards, and observability.
219
218
  - [kreuzcrawl](https://github.com/kreuzberg-dev/kreuzcrawl) — web crawling and scraping with HTML→Markdown and headless-Chrome fallback.
219
+ - [html-to-markdown](https://github.com/kreuzberg-dev/html-to-markdown) — fast, lossless HTML→Markdown engine.
220
220
  - [liter-llm](https://github.com/kreuzberg-dev/liter-llm) — universal LLM API client with native bindings for 14 languages and 143 providers.
221
221
  - [tree-sitter-language-pack](https://github.com/kreuzberg-dev/tree-sitter-language-pack) — tree-sitter grammars and code-intelligence primitives.
222
222
  - [alef](https://github.com/kreuzberg-dev/alef) — the polyglot binding generator that produces every per-language binding across the 5 polyglot repos.
223
- - [Discord](https://discord.gg/xt9WY3GnKR) — community, roadmap, announcements.
224
223
 
225
224
  ## Contributing
226
225
 
@@ -248,5 +247,4 @@ If you find this library useful, consider [sponsoring the project](https://githu
248
247
  Have questions or run into issues? We're here to help:
249
248
 
250
249
  - **GitHub Issues:** [github.com/kreuzberg-dev/html-to-markdown/issues](https://github.com/kreuzberg-dev/html-to-markdown/issues)
251
- - **Issues:** [github.com/kreuzberg-dev/html-to-markdown/issues](https://github.com/kreuzberg-dev/html-to-markdown/issues)
252
250
  - **Discord Community:** [discord.gg/xt9WY3GnKR](https://discord.gg/xt9WY3GnKR)
@@ -608,8 +608,7 @@ export class WasmNodeContext {
608
608
  /**
609
609
  * Construct a `NodeContext` with an owned attribute map.
610
610
  *
611
- * Prefer `NodeContext.with_lazy_attributes` (pub(crate)) inside the
612
- * converter to avoid the eager `collect_tag_attributes` allocation.
611
+ * Use this when the caller already has materialized attributes.
613
612
  */
614
613
  static withOwnedAttributes(node_type: WasmNodeType, tag_name: string, attributes: any, depth: number, index_in_parent: number, parent_tag: string | null | undefined, is_inline: boolean): WasmNodeContext;
615
614
  depth: number;
@@ -869,8 +868,7 @@ export class WasmTableGrid {
869
868
  * similar — that spans a contiguous run of bytes inside `DocumentNode.content`'s text field.
870
869
  *
871
870
  * Byte offsets (`start`..`end`) are into the UTF-8 encoded text of the parent node. The range
872
- * follows Rust slice conventions: `start` is inclusive and `end` is exclusive, so the annotated
873
- * text is `text[start as usize..end as usize]`.
871
+ * is half-open: `start` is inclusive and `end` is exclusive.
874
872
  *
875
873
  * Multiple annotations on the same node can overlap (e.g. bold-italic text), and they are
876
874
  * stored in the order they are encountered during DOM traversal.
@@ -987,9 +985,9 @@ export enum WasmWhitespaceMode {
987
985
  * # Arguments
988
986
  *
989
987
  * * `html` — the HTML string to convert.
990
- * * `options` — conversion options. Rust accepts either bare
991
- * `ConversionOptions`, `Some(options)`, or `None`; bindings expose the same
992
- * option fields through language-native constructors or optional parameters.
988
+ * * `options` — conversion options. Rust accepts bare `ConversionOptions`,
989
+ * `Some(options)`, or `None`. Language bindings expose the same option
990
+ * fields through native constructors or optional parameters.
993
991
  *
994
992
  * # Example
995
993
  *
@@ -4575,8 +4575,7 @@ export class WasmNodeContext {
4575
4575
  /**
4576
4576
  * Construct a `NodeContext` with an owned attribute map.
4577
4577
  *
4578
- * Prefer `NodeContext.with_lazy_attributes` (pub(crate)) inside the
4579
- * converter to avoid the eager `collect_tag_attributes` allocation.
4578
+ * Use this when the caller already has materialized attributes.
4580
4579
  * @param {WasmNodeType} node_type
4581
4580
  * @param {string} tag_name
4582
4581
  * @param {any} attributes
@@ -5389,8 +5388,7 @@ if (Symbol.dispose) WasmTableGrid.prototype[Symbol.dispose] = WasmTableGrid.prot
5389
5388
  * similar — that spans a contiguous run of bytes inside `DocumentNode.content`'s text field.
5390
5389
  *
5391
5390
  * Byte offsets (`start`..`end`) are into the UTF-8 encoded text of the parent node. The range
5392
- * follows Rust slice conventions: `start` is inclusive and `end` is exclusive, so the annotated
5393
- * text is `text[start as usize..end as usize]`.
5391
+ * is half-open: `start` is inclusive and `end` is exclusive.
5394
5392
  *
5395
5393
  * Multiple annotations on the same node can overlap (e.g. bold-italic text), and they are
5396
5394
  * stored in the order they are encountered during DOM traversal.
@@ -5609,9 +5607,9 @@ export const WasmWhitespaceMode = Object.freeze({
5609
5607
  * # Arguments
5610
5608
  *
5611
5609
  * * `html` — the HTML string to convert.
5612
- * * `options` — conversion options. Rust accepts either bare
5613
- * `ConversionOptions`, `Some(options)`, or `None`; bindings expose the same
5614
- * option fields through language-native constructors or optional parameters.
5610
+ * * `options` — conversion options. Rust accepts bare `ConversionOptions`,
5611
+ * `Some(options)`, or `None`. Language bindings expose the same option
5612
+ * fields through native constructors or optional parameters.
5615
5613
  *
5616
5614
  * # Example
5617
5615
  *
@@ -2,7 +2,7 @@
2
2
  "name": "html-to-markdown-wasm",
3
3
  "type": "module",
4
4
  "description": "High-performance HTML to Markdown converter",
5
- "version": "3.6.10",
5
+ "version": "3.6.12",
6
6
  "license": "MIT",
7
7
  "repository": {
8
8
  "type": "git",