@purepageio/fetch-engines 0.8.0 → 0.9.0

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
@@ -1,6 +1,7 @@
1
1
  # @purepageio/fetch-engines
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/@purepageio/fetch-engines.svg)](https://www.npmjs.com/package/@purepageio/fetch-engines)
4
+ [![CI](https://github.com/purepage/fetch-engines/actions/workflows/publish.yml/badge.svg)](https://github.com/purepage/fetch-engines/actions/workflows/publish.yml)
4
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
6
 
6
7
  Fetch websites with confidence. `@purepageio/fetch-engines` gives teams an HTTP-first workflow that automatically promotes tricky pages to a managed Playwright browser and can even hand structured results back through OpenAI.
@@ -12,6 +13,7 @@ Fetch websites with confidence. `@purepageio/fetch-engines` gives teams an HTTP-
12
13
  - [Quick start](#quick-start)
13
14
  - [Usage patterns](#usage-patterns)
14
15
  - [Pick an engine](#pick-an-engine)
16
+ - [Markdown mode](#markdown-mode)
15
17
  - [Structured extraction](#structured-extraction)
16
18
  - [Configuration](#configuration)
17
19
  - [Essentials](#essentials)
@@ -32,10 +34,16 @@ Fetch websites with confidence. `@purepageio/fetch-engines` gives teams an HTTP-
32
34
 
33
35
  ```bash
34
36
  pnpm add @purepageio/fetch-engines
35
- # install Playwright browsers once if you plan to use the Hybrid or Playwright engines
37
+ ```
38
+
39
+ If you plan to use `HybridEngine` or `PlaywrightEngine` (which launch a real browser), install the Playwright browsers once:
40
+
41
+ ```bash
36
42
  pnpm exec playwright install
37
43
  ```
38
44
 
45
+ This step is **not needed** if you only use `FetchEngine` or `StructuredContentEngine`.
46
+
39
47
  ## Quick start
40
48
 
41
49
  ```typescript
@@ -53,11 +61,29 @@ await engine.cleanup();
53
61
 
54
62
  ### Pick an engine
55
63
 
56
- | Engine | When to use it |
57
- | ------------------------- | -------------------------------------------------------------------------------- |
58
- | `HybridEngine` | Default option. Starts with HTTP, then retries via Playwright for tougher pages. |
59
- | `FetchEngine` | Lightweight HTML/text fetching with zero browser overhead. |
60
- | `StructuredContentEngine` | Fetch a page and transform it into typed data with OpenAI. |
64
+ | Engine | When to use it |
65
+ | ------------------------- | ------------------------------------------------------------------------------------- |
66
+ | `HybridEngine` | Default option. Starts with HTTP, then retries via Playwright for tougher pages. |
67
+ | `FetchEngine` | Lightweight HTML/text fetching with zero browser overhead. Supports `markdown: true`. |
68
+ | `StructuredContentEngine` | Fetch a page and transform it into typed data with OpenAI. |
69
+
70
+ ### Markdown mode
71
+
72
+ Pass `markdown: true` to get clean Markdown instead of raw HTML — ideal for RAG pipelines, LLM context windows, and content indexing. The converter strips navigation, footers, sidebars, SVGs, and high-link-density boilerplate before converting via a Rust-native engine.
73
+
74
+ ```typescript
75
+ import { HybridEngine } from "@purepageio/fetch-engines";
76
+
77
+ const engine = new HybridEngine({ markdown: true });
78
+ const page = await engine.fetchHTML("https://example.com/blog/my-post");
79
+
80
+ console.log(page.content); // Clean Markdown with headings, tables, code blocks preserved
81
+ console.log(page.contentType); // "markdown"
82
+
83
+ await engine.cleanup();
84
+ ```
85
+
86
+ `FetchEngine` also supports `markdown: true` for static pages that don't need JavaScript rendering.
61
87
 
62
88
  ### Structured extraction
63
89
 
@@ -111,30 +137,30 @@ Check the inline TypeScript docs or the [`/examples`](./examples) directory for
111
137
 
112
138
  Every option from `PlaywrightEngineConfig` (consumed by `HybridEngine`) with defaults:
113
139
 
114
- | Option | Default | Purpose |
115
- | -------------------------- | ----------- | --------------------------------------------------------------------------------------------- |
116
- | `headers` | `{}` | Extra headers merged into every request. |
117
- | `concurrentPages` | `3` | Maximum Playwright pages processed at once. |
118
- | `maxRetries` | `3` | Additional retry attempts after the first failure. |
119
- | `retryDelay` | `5000` | Milliseconds to wait between retries. |
120
- | `cacheTTL` | `900000` | Cache lifetime in ms (`0` disables caching). |
121
- | `useHttpFallback` | `true` | Try a fast HTTP GET before spinning up Playwright. |
122
- | `useHeadedModeFallback` | `false` | Automatically retry a domain in headed mode after repeated failures. |
123
- | `defaultFastMode` | `true` | Block non-critical assets and skip human simulation unless overridden. |
124
- | `simulateHumanBehavior` | `true` | When not in fast mode, add delays and scrolling to avoid bot detection. |
125
- | `maxBrowsers` | `2` | Highest number of Playwright browser instances kept in the pool. |
126
- | `maxPagesPerContext` | `6` | Pages opened per browser context before recycling it. |
127
- | `maxBrowserAge` | `1200000` | Milliseconds before a browser instance is torn down (20 minutes). |
128
- | `healthCheckInterval` | `60000` | Pool health check frequency in ms. |
129
- | `poolBlockedDomains` | `[]` | Domains blocked across every Playwright request (inherit pool defaults if empty). |
130
- | `poolBlockedResourceTypes` | `[]` | Resource types (e.g. `"image"`) blocked globally. |
131
- | `proxy` | `undefined` | Per-browser proxy `{ server, username?, password? }`. |
132
- | `useHeadedMode` | `false` | Force every browser to launch with a visible window. |
133
- | `markdown` | `true` | Return Markdown (instead of HTML) when possible. Override per request with `markdown: false`. |
134
- | `spaMode` | `false` | Enable SPA heuristics and allow additional waits for client rendering. |
135
- | `spaRenderDelayMs` | `0` | Extra delay after load when `spaMode` is `true`. |
136
- | `playwrightOnlyPatterns` | `[]` | URLs matching any string/regex go straight to Playwright, skipping HTTP fetches. |
137
- | `playwrightLaunchOptions` | `undefined` | Options passed to `browserType.launch` (see Playwright docs). |
140
+ | Option | Default | Purpose |
141
+ | -------------------------- | ----------- | ------------------------------------------------------------------------------------------------ |
142
+ | `headers` | `{}` | Extra headers merged into every request. |
143
+ | `concurrentPages` | `3` | Maximum Playwright pages processed at once. |
144
+ | `maxRetries` | `3` | Additional retry attempts after the first failure. |
145
+ | `retryDelay` | `5000` | Milliseconds to wait between retries. |
146
+ | `cacheTTL` | `900000` | Cache lifetime in ms (`0` disables caching). |
147
+ | `useHttpFallback` | `true` | Try a fast HTTP GET before spinning up Playwright. |
148
+ | `useHeadedModeFallback` | `false` | Automatically retry a domain in headed mode after repeated failures. |
149
+ | `defaultFastMode` | `true` | Block non-critical assets and skip human simulation unless overridden. |
150
+ | `simulateHumanBehavior` | `true` | When not in fast mode, add delays and scrolling to avoid bot detection. |
151
+ | `maxBrowsers` | `2` | Highest number of Playwright browser instances kept in the pool. |
152
+ | `maxPagesPerContext` | `6` | Pages opened per browser context before recycling it. |
153
+ | `maxBrowserAge` | `1200000` | Milliseconds before a browser instance is torn down (20 minutes). |
154
+ | `healthCheckInterval` | `60000` | Pool health check frequency in ms. |
155
+ | `poolBlockedDomains` | `[]` | Domains blocked across every Playwright request (inherit pool defaults if empty). |
156
+ | `poolBlockedResourceTypes` | `[]` | Resource types (e.g. `"image"`) blocked globally. |
157
+ | `proxy` | `undefined` | Per-browser proxy `{ server, username?, password? }`. |
158
+ | `useHeadedMode` | `false` | Force every browser to launch with a visible window. |
159
+ | `markdown` | `false` | Return Markdown instead of raw HTML. Converts via a Rust-native engine with boilerplate removal. |
160
+ | `spaMode` | `false` | Enable SPA heuristics and allow additional waits for client rendering. |
161
+ | `spaRenderDelayMs` | `0` | Extra delay after load when `spaMode` is `true`. |
162
+ | `playwrightOnlyPatterns` | `[]` | URLs matching any string/regex go straight to Playwright, skipping HTTP fetches. |
163
+ | `playwrightLaunchOptions` | `undefined` | Options passed to `browserType.launch` (see Playwright docs). |
138
164
 
139
165
  Per-request overrides: `fetchHTML` accepts `fastMode`, `markdown`, `spaMode`, and `headers`, while `fetchContent` supports `fastMode` and `headers`.
140
166
 
@@ -150,7 +176,15 @@ Failures raise a typed `FetchError` exposing `code`, `statusCode`, and the under
150
176
 
151
177
  ## Contributing
152
178
 
153
- Issues and pull requests are welcome! Please follow the existing linting/test commands before sending a change.
179
+ Issues and pull requests are welcome! Before submitting a change:
180
+
181
+ 1. `pnpm test` — all tests pass
182
+ 2. `pnpm lint` — no errors
183
+ 3. `pnpm format` — code is formatted
184
+ 4. Update `CHANGELOG.md` under `[Unreleased]`
185
+ 5. Bump the version in `package.json` following [semver](https://semver.org/)
186
+
187
+ See [`AGENTS.md`](./AGENTS.md) for detailed guidelines on versioning, testing, and documentation.
154
188
 
155
189
  ## License
156
190
 
@@ -1 +1 @@
1
- {"version":3,"file":"StructuredContentEngine.d.ts","sourceRoot":"","sources":["../src/StructuredContentEngine.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAQzD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,sJAAsJ;IACtJ,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,2EAA2E;IAC3E,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACxC,qDAAqD;IACrD,IAAI,EAAE,CAAC,CAAC;IACR,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,yCAAyC;IACzC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,8BAA8B;IAC9B,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,YAAY,CAAe;gBAEvB,MAAM,GAAE,sBAA2B;IAQ/C;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IA6BhC;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IA2ClC;;;;;;;;OAQG;IACG,sBAAsB,CAAC,CAAC,EAC5B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACtB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAyLtC,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAiBtB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACtB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAOrC"}
1
+ {"version":3,"file":"StructuredContentEngine.d.ts","sourceRoot":"","sources":["../src/StructuredContentEngine.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAczD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,sJAAsJ;IACtJ,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,2EAA2E;IAC3E,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACxC,qDAAqD;IACrD,IAAI,EAAE,CAAC,CAAC;IACR,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,yCAAyC;IACzC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,8BAA8B;IAC9B,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,YAAY,CAAe;gBAEvB,MAAM,GAAE,sBAA2B;IAQ/C;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IA6BhC;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IA2ClC;;;;;;;;OAQG;IACG,sBAAsB,CAAC,CAAC,EAC5B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACtB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAiMtC,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAiBtB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACtB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAOrC"}
@@ -134,9 +134,16 @@ ${customPrompt ? `\nAdditional context: ${customPrompt}` : ""}
134
134
  Content to analyze:
135
135
  ${result.content}`;
136
136
  const modelConfig = this.getModelConfig(model);
137
+ // Build headers - for OpenAI-compatible providers, don't add Authorization header
138
+ // as createOpenAICompatible handles it via apiKey parameter
139
+ const normalizedBaseURL = apiConfig.baseURL?.replace(/\/+$/, "");
140
+ const defaultOpenAIBaseURL = "https://api.openai.com/v1";
141
+ const isOpenAICompatible = normalizedBaseURL && normalizedBaseURL !== defaultOpenAIBaseURL;
137
142
  const headers = {
138
143
  ...(apiConfig.headers ?? {}),
139
- ...(apiConfig.headers?.Authorization ? {} : { Authorization: `Bearer ${apiKey}` }),
144
+ // Only add Authorization header for standard OpenAI API
145
+ // OpenAI-compatible providers handle auth via apiKey parameter in createOpenAICompatible
146
+ ...(!isOpenAICompatible && !apiConfig.headers?.Authorization ? { Authorization: `Bearer ${apiKey}` } : {}),
140
147
  };
141
148
  const openai = this.getOpenAIProvider({
142
149
  apiKey,
@@ -1 +1 @@
1
- {"version":3,"file":"StructuredContentEngine.js","sourceRoot":"","sources":["../src/StructuredContentEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StructuredContentEngine.js","sourceRoot":"","sources":["../src/StructuredContentEngine.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@ export interface ConversionOptions {
3
3
  maxContentLength?: number;
4
4
  }
5
5
  export declare class MarkdownConverter {
6
- private turndownService;
7
6
  constructor();
8
7
  /**
9
8
  * Converts HTML string to Markdown.
@@ -12,23 +11,21 @@ export declare class MarkdownConverter {
12
11
  * @returns The converted Markdown string.
13
12
  */
14
13
  convert(html: string, options?: ConversionOptions): string;
15
- private setupPrioritizedRules;
16
- private addContentExtractionRules;
17
- private addStructureRules;
18
- private addBlockRules;
19
- private addInlineRules;
20
14
  private preprocessHTML;
21
- /**
22
- * Ensures simple data tables are convertible to GFM by promoting the first row to headers
23
- * when no <th> exists. Skips layout tables marked with role="presentation".
24
- */
25
- private normalizeTablesForMarkdown;
15
+ /** Remove img elements with .svg src (external SVG URLs). Inline SVG and data: URIs already stripped by PREPROCESSING_REMOVE_SELECTORS. */
16
+ private removeSvgImageRefs;
26
17
  private removeBreadcrumbs;
18
+ /** Promote or inject a primary H1 heading using the provided title (from Kreuzberg metadata or DOM extraction). */
27
19
  private ensurePrimaryHeading;
28
- private flattenTableToSimpleGfm;
29
- private sanitizeCellContentForTable;
30
20
  private cleanupHtml;
31
21
  private cleanupContentHtml;
22
+ /** Check if any CSS class token matches exactly, or if any token contains the substring (for hyphenated classes like "article-body"). */
23
+ private hasClass;
24
+ private hasClassSubstring;
25
+ /** Check if element matches a main content selector (node-html-parser has no matches()). */
26
+ private elementMatchesMainContent;
27
+ /** Check if element matches boilerplate selectors (node-html-parser has no matches()). */
28
+ private elementMatchesBoilerplate;
32
29
  private removeHighLinkDensityElements;
33
30
  private detectForumPage;
34
31
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-converter.d.ts","sourceRoot":"","sources":["../../src/utils/markdown-converter.ts"],"names":[],"mappings":"AAyEA,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AASD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,eAAe,CAAkB;;IAmCzC;;;;;OAKG;IACI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM;IAerE,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,yBAAyB;IA4CjC,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,aAAa;IAqErB,OAAO,CAAC,cAAc;IAyLtB,OAAO,CAAC,cAAc;IAgGtB;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAoClC,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,oBAAoB;IA8C5B,OAAO,CAAC,uBAAuB;IAoG/B,OAAO,CAAC,2BAA2B;IAsBnC,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,6BAA6B;IA8IrC,OAAO,CAAC,eAAe;IAyDvB;;;;;OAKG;IAIH,OAAO,CAAC,sBAAsB;IA0D9B,OAAO,CAAC,4BAA4B;IAmCpC,OAAO,CAAC,0BAA0B;IAuFlC,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,mBAAmB;CAwD5B"}
1
+ {"version":3,"file":"markdown-converter.d.ts","sourceRoot":"","sources":["../../src/utils/markdown-converter.ts"],"names":[],"mappings":"AAiEA,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAID,qBAAa,iBAAiB;;IAK5B;;;;;OAKG;IACI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM;IAerE,OAAO,CAAC,cAAc;IAgGtB,2IAA2I;IAC3I,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,iBAAiB;IA6BzB,mHAAmH;IACnH,OAAO,CAAC,oBAAoB;IAkC5B,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,kBAAkB;IAqB1B,yIAAyI;IACzI,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,iBAAiB;IAIzB,4FAA4F;IAC5F,OAAO,CAAC,yBAAyB;IAuBjC,0FAA0F;IAC1F,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,6BAA6B;IA0CrC,OAAO,CAAC,eAAe;IAyDvB;;;;;OAKG;IAIH,OAAO,CAAC,sBAAsB;IA+C9B,OAAO,CAAC,4BAA4B;IAmCpC,OAAO,CAAC,0BAA0B;IAuFlC,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,mBAAmB;CAwD5B"}
@@ -1,5 +1,4 @@
1
- import TurndownService from "turndown";
2
- import { gfm } from "turndown-plugin-gfm";
1
+ import { convert as kreuzbergConvert } from "@kreuzberg/html-to-markdown";
3
2
  import { parse, HTMLElement as NHPHTMLElement } from "node-html-parser";
4
3
  // --- Constants ---
5
4
  // Preprocessing - Selectors for removal (balanced approach)
@@ -8,6 +7,8 @@ const PREPROCESSING_REMOVE_SELECTORS = [
8
7
  "style",
9
8
  "noscript",
10
9
  "iframe:not([title])", // Keep iframes with titles (potential embeds)
10
+ "svg", // Inline SVGs - decorative icons, bloat RAG with meaningless path data
11
+ "img[src*='data:image/svg']", // Base64 inline SVG images
11
12
  ];
12
13
  // Preprocessing - Selectors for identifying potential main content
13
14
  const MAIN_CONTENT_SELECTORS = [
@@ -50,47 +51,13 @@ const MIN_LINK_DENSITY_TEXT_LENGTH = 50; // Lowered slightly from original
50
51
  const DEFAULT_LINK_DENSITY_THRESHOLD = 0.4; // Slightly lower threshold
51
52
  // Preprocessing - Forum Detection
52
53
  const MIN_FORUM_INDICATOR_COUNT = 3;
53
- // Turndown - Code block detection
54
- const CODE_BLOCK_LANG_PREFIXES = ["language-", "lang-"];
55
54
  // Postprocessing
56
55
  const POSTPROCESSING_MAX_CONSECUTIVE_NEWLINES = 2; // Keep paragraphs separate
57
- // Turndown specific
58
- const DEFAULT_ORDERED_LIST_ITEM_PREFIX = "1. ";
59
- const TURNDOWN_NODE_ELEMENT_TYPE = 1;
60
- const TURNDOWN_PRESENTATION_ROLE = "presentation";
61
- const TURNDOWN_PRESERVE_CLASS = "preserve";
62
56
  // --- Class Definition ---
63
57
  export class MarkdownConverter {
64
- turndownService;
65
58
  constructor() {
66
- this.turndownService = new TurndownService({
67
- headingStyle: "atx",
68
- codeBlockStyle: "fenced",
69
- bulletListMarker: "-",
70
- strongDelimiter: "**",
71
- emDelimiter: "*",
72
- hr: "---",
73
- // Use nodeType check instead of window.HTMLElement
74
- // Important: Do NOT blanket-preserve <table> elements here — let the GFM plugin
75
- // convert them to Markdown. Only preserve explicitly marked layout/preserved elements.
76
- keepReplacement: ((_content, node) => {
77
- // Node.ELEMENT_NODE is 1
78
- if (node.nodeType === TURNDOWN_NODE_ELEMENT_TYPE) {
79
- const htmlElement = node;
80
- const role = htmlElement.getAttribute("role");
81
- const preserve = htmlElement.classList?.contains(TURNDOWN_PRESERVE_CLASS);
82
- if (role === TURNDOWN_PRESENTATION_ROLE || preserve) {
83
- return htmlElement.outerHTML;
84
- }
85
- }
86
- return "";
87
- }),
88
- });
89
- this.turndownService.use(gfm);
90
- // Setup conversion rules
91
- this.setupPrioritizedRules();
59
+ // No initialization needed for Kreuzberg - it's stateless
92
60
  }
93
- // --- Public Method ---
94
61
  /**
95
62
  * Converts HTML string to Markdown.
96
63
  * @param html The HTML string to convert.
@@ -100,301 +67,12 @@ export class MarkdownConverter {
100
67
  convert(html, options = {}) {
101
68
  // Preprocess HTML to clean and extract main content
102
69
  const preprocessedHtml = this.preprocessHTML(html);
103
- // Convert preprocessed HTML to Markdown
104
- let markdown = this.turndownService.turndown(preprocessedHtml);
70
+ // Convert preprocessed HTML to Markdown using Kreuzberg (Rust-native)
71
+ let markdown = kreuzbergConvert(preprocessedHtml, { headingStyle: "Atx" });
105
72
  // Post-process Markdown for cleanup
106
73
  markdown = this.postprocessMarkdown(markdown, options);
107
74
  return markdown;
108
75
  }
109
- // --- Turndown Rule Setup ---
110
- setupPrioritizedRules() {
111
- this.addContentExtractionRules();
112
- this.addStructureRules();
113
- this.addBlockRules();
114
- this.addInlineRules();
115
- }
116
- // We rely on preprocessing to remove nav/menus/high-link-density areas.
117
- // These rules primarily help Turndown understand the *structure* of the *intended* content.
118
- addContentExtractionRules() {
119
- this.turndownService.addRule("main-content-marker", {
120
- filter: (node) => {
121
- // Node.ELEMENT_NODE is 1
122
- if (node.nodeType !== TURNDOWN_NODE_ELEMENT_TYPE)
123
- return false;
124
- const el = node;
125
- const element = node;
126
- return (el.tagName.toLowerCase() === "main" ||
127
- ["main", "article"].includes(el.getAttribute("role") || "") ||
128
- MAIN_CONTENT_SELECTORS.some((selector) => {
129
- try {
130
- return element.matches(selector) && selector !== "body";
131
- }
132
- catch {
133
- return false;
134
- }
135
- }));
136
- },
137
- // Just pass content through, this rule is mainly for filter priority/debugging
138
- replacement: (content) => content,
139
- });
140
- // Explicitly remove elements that should definitely not be in Markdown
141
- const unwantedTags = [
142
- "script",
143
- "style",
144
- "noscript",
145
- "iframe",
146
- "button",
147
- "input",
148
- "select",
149
- "textarea",
150
- "form",
151
- "canvas",
152
- /*'svg' removed */ "audio",
153
- "video",
154
- ];
155
- this.turndownService.addRule("remove-unwanted", {
156
- filter: unwantedTags,
157
- replacement: () => "",
158
- });
159
- }
160
- addStructureRules() {
161
- // Article structure (less critical now preprocessing extracts content)
162
- this.turndownService.addRule("article", {
163
- filter: "article",
164
- replacement: (content) => `\n\n${content}\n\n`, // Add separation
165
- });
166
- // Section structure (less critical now preprocessing extracts content)
167
- this.turndownService.addRule("section", {
168
- filter: "section",
169
- replacement: (content) => `\n\n${content}\n\n`, // Add separation
170
- });
171
- // Preserve heading levels correctly
172
- // this.turndownService.keep(["h1", "h2", "h3", "h4", "h5", "h6"]); // REMOVED - Use default ATX headings
173
- }
174
- addBlockRules() {
175
- // Lists (ensure proper nesting indentation)
176
- this.turndownService.addRule("list", {
177
- filter: ["ul", "ol"],
178
- replacement: (content, node) => {
179
- // Node.ELEMENT_NODE is 1
180
- if (node.nodeType !== TURNDOWN_NODE_ELEMENT_TYPE)
181
- return content;
182
- // Check if the parent is a list item (nested list)
183
- const parent = node.parentNode;
184
- const indent = parent && parent.nodeName.toLowerCase() === "li" ? " " : "";
185
- // Ensure content is handled line by line for indentation
186
- // Trim trailing spaces from each line before joining
187
- return ("\n" +
188
- content
189
- .split("\n")
190
- .map((line) => indent + line.trimEnd())
191
- .join("\n")
192
- .trim() +
193
- "\n");
194
- },
195
- });
196
- // List items
197
- this.turndownService.addRule("listItem", {
198
- filter: "li",
199
- // Use arrow function for consistency, as 'this' is not used.
200
- replacement: (content, node, options) => {
201
- content = content
202
- .replace(/^\s+/gm, "") // Remove leading whitespace from each line
203
- .replace(/\n(?!\s*$)/gm, "\n "); // Indent subsequent lines correctly
204
- let prefix = options.bulletListMarker + " ";
205
- const parentNode = node.parentNode;
206
- if (parentNode && parentNode.nodeName === "OL") {
207
- try {
208
- const start = parentNode.getAttribute("start");
209
- const elementNode = node;
210
- const parentElement = parentNode;
211
- const index = Array.prototype.indexOf.call(parentElement.children, elementNode);
212
- prefix = (start ? Number(start) + index : index + 1) + ". ";
213
- }
214
- catch (e) {
215
- prefix = DEFAULT_ORDERED_LIST_ITEM_PREFIX;
216
- const message = e instanceof Error ? e.message : String(e);
217
- console.warn(`MarkdownConverter: Error processing OL start attribute or LI index: ${message}`, e instanceof Error ? e : undefined);
218
- }
219
- }
220
- return prefix + content.trim() + "\n"; // Add newline after each item
221
- },
222
- });
223
- // Tables - Relying on GFM plugin
224
- // Blockquotes
225
- this.turndownService.addRule("blockquote", {
226
- filter: "blockquote",
227
- replacement: (content) => {
228
- // Trim leading/trailing newlines from content and add > prefix correctly
229
- const trimmedContent = content.trim();
230
- return "\n\n> " + trimmedContent.replace(/\n/g, "\n> ") + "\n\n";
231
- },
232
- });
233
- }
234
- addInlineRules() {
235
- // Links - Ensure proper formatting and title preservation
236
- this.turndownService.addRule("link", {
237
- filter: (node, _options) => {
238
- // Check nodeType and nodeName first, then cast for getAttribute
239
- return node.nodeType === 1 && node.nodeName === "A" && !!node.getAttribute("href");
240
- },
241
- replacement: (content, node) => {
242
- const element = node;
243
- const href = element.getAttribute("href") || "";
244
- const title = element.getAttribute("title");
245
- // Use content if available and not just whitespace, otherwise use href as text
246
- const text = content.trim() ? content.trim() : href;
247
- // Decode URI components, handling potential errors
248
- let decodedHref = href;
249
- try {
250
- // Decode only if it looks like it might be encoded
251
- if (href.includes("%")) {
252
- decodedHref = decodeURI(href);
253
- }
254
- }
255
- catch (e) {
256
- const message = e instanceof Error ? e.message : String(e);
257
- console.warn(`Failed to decode URI '${href}': ${message}. Keeping original.`, e instanceof Error ? e : undefined);
258
- // Keep original href if decoding fails
259
- }
260
- return title ? `[${text}](${decodedHref} \"${title}\")` : `[${text}](${decodedHref})`;
261
- },
262
- });
263
- // Images - Handle figures and captions
264
- this.turndownService.addRule("figure", {
265
- filter: "figure",
266
- replacement: (content, node) => {
267
- // Node.ELEMENT_NODE is 1
268
- if (node.nodeType !== 1)
269
- return content;
270
- const element = node;
271
- // Use DOM methods on the casted element
272
- const img = element.querySelector("img");
273
- const figcaption = element.querySelector("figcaption");
274
- let markdown = "";
275
- let mainImgMd = "";
276
- if (img) {
277
- const src = img.getAttribute("src") || "";
278
- const alt = img.getAttribute("alt") || "";
279
- const title = img.getAttribute("title");
280
- mainImgMd = title ? `![${alt}](${src} "${title}")` : `![${alt}](${src})`;
281
- }
282
- // Process the original content provided by Turndown (handles nested elements)
283
- let processedContent = content.trim();
284
- // If the figure primarily contains the image and caption, structure around the image
285
- if (mainImgMd) {
286
- markdown = mainImgMd;
287
- // Remove the image representation from the processed content if Turndown included it
288
- // Use a simple placeholder to avoid issues with special chars in alt/src
289
- const imgPlaceholder = `![${img?.getAttribute("alt") || ""}](${img?.getAttribute("src") || ""})`;
290
- processedContent = processedContent.replace(imgPlaceholder, "").trim();
291
- }
292
- if (figcaption) {
293
- const captionText = figcaption.textContent?.trim();
294
- if (captionText) {
295
- markdown += `\n\n_${captionText}_`; // Use italics for caption below the image
296
- // Remove the caption representation from the processed content
297
- processedContent = processedContent.replace(captionText, "").trim();
298
- processedContent = processedContent.replace(/^_+|_+$/g, "").trim(); // Remove surrounding underscores if any
299
- }
300
- }
301
- // Append any remaining content from the figure
302
- if (processedContent) {
303
- // Avoid adding just empty placeholders or insignificant content
304
- if (processedContent.length > 10 || /[a-zA-Z0-9]/.test(processedContent)) {
305
- markdown += `\n\n${processedContent}`;
306
- }
307
- }
308
- return "\n\n" + markdown.trim() + "\n\n";
309
- },
310
- });
311
- // Standalone Images (not in figures)
312
- this.turndownService.addRule("image", {
313
- filter: (node) => {
314
- // Node.ELEMENT_NODE is 1, it's an IMG, and has src
315
- return node.nodeType === 1 && node.nodeName === "IMG" && !!node.getAttribute("src");
316
- },
317
- replacement: (_content, node) => {
318
- const element = node;
319
- const src = element.getAttribute("src") || "";
320
- const alt = element.getAttribute("alt") || "";
321
- const title = element.getAttribute("title");
322
- // Add surrounding newlines for block display
323
- return title ? `\n\n![${alt}](${src} "${title}")\n\n` : `\n\n![${alt}](${src})\n\n`;
324
- },
325
- });
326
- // Code Blocks - Enhanced detection
327
- this.turndownService.addRule("code-block", {
328
- filter: (node) => {
329
- // Node.ELEMENT_NODE is 1
330
- if (node.nodeType !== 1)
331
- return false;
332
- const element = node;
333
- // Must be a <pre> tag
334
- const isPre = element.tagName.toLowerCase() === "pre";
335
- if (!isPre)
336
- return false;
337
- // Consider it code if it has a <code> child or specific classes/attributes
338
- const hasCodeChild = element.querySelector("code") !== null;
339
- const hasCodeClass = /highlight|syntax|code|listing|source/i.test(element.className);
340
- const hasLangAttribute = !!element.getAttribute("lang") || !!element.getAttribute("language");
341
- return hasCodeChild || hasCodeClass || hasLangAttribute;
342
- },
343
- replacement: (content, node) => {
344
- // Node.ELEMENT_NODE is 1
345
- if (node.nodeType !== 1)
346
- return content.trim(); // Should be ELEMENT_NODE based on filter
347
- const element = node;
348
- // Detect language
349
- let language = "";
350
- const codeElement = element.querySelector("code");
351
- // 1. Check attributes on <pre> or <code>
352
- language =
353
- element.getAttribute("lang") ||
354
- element.getAttribute("language") ||
355
- (codeElement ? codeElement.getAttribute("lang") || codeElement.getAttribute("language") : "") ||
356
- "";
357
- // 2. Check for "language-*" or "lang-*" class
358
- if (!language) {
359
- const classes = (element.className + " " + (codeElement?.className || "")).split(" ").filter(Boolean);
360
- for (const cls of classes) {
361
- for (const prefix of CODE_BLOCK_LANG_PREFIXES) {
362
- if (cls.startsWith(prefix)) {
363
- language = cls.substring(prefix.length);
364
- break;
365
- }
366
- }
367
- if (language)
368
- break;
369
- }
370
- }
371
- // Clean up content - remove leading/trailing newlines often added
372
- const cleanedContent = content.trim();
373
- // Format code block
374
- return `\n\n\`\`\`${language}\n${cleanedContent}\n\`\`\`\n\n`;
375
- },
376
- });
377
- // Inline Code
378
- this.turndownService.addRule("inlineCode", {
379
- filter: (node) => node.nodeName === "CODE" && node.parentNode?.nodeName !== "PRE",
380
- replacement: (content) => {
381
- // Ensure content is trimmed and handle potential backticks inside
382
- const trimmed = content.trim();
383
- if (!trimmed)
384
- return ""; // Don't render empty code tags
385
- // Determine delimiter based on content
386
- let delimiter = "`";
387
- if (trimmed.includes("`")) {
388
- delimiter = "``";
389
- // If content starts or ends with backtick, add space when using ``
390
- if (trimmed.startsWith("`") || trimmed.endsWith("`")) {
391
- return `${delimiter} ${trimmed} ${delimiter}`;
392
- }
393
- }
394
- return delimiter + trimmed + delimiter;
395
- },
396
- });
397
- }
398
76
  // --- HTML Preprocessing ---
399
77
  preprocessHTML(html) {
400
78
  // This function performs multi-stage processing on the HTML string:
@@ -433,16 +111,15 @@ export class MarkdownConverter {
433
111
  console.warn(`Skipping invalid selector during preprocessing: ${selector}`, e);
434
112
  }
435
113
  });
114
+ // Remove img elements pointing to .svg URLs (decorative logos/icons; bloat RAG)
115
+ this.removeSvgImageRefs(rootElement);
436
116
  // Remove breadcrumb UI blocks explicitly (often low link density)
437
117
  this.removeBreadcrumbs(rootElement);
438
118
  this.removeHighLinkDensityElements(rootElement, DEFAULT_LINK_DENSITY_THRESHOLD);
439
- // Normalize simple data tables so GFM can convert them (e.g., first row headers using <td>)
440
- this.normalizeTablesForMarkdown(rootElement);
441
- // Capture best title BEFORE removing head
442
- const bestTitle = rootElement.querySelector("meta[property='og:title']")?.getAttribute("content") ||
443
- rootElement.querySelector("meta[name='twitter:title']")?.getAttribute("content") ||
444
- rootElement.querySelector("meta[name='DC.title']")?.getAttribute("content") ||
445
- rootElement.querySelector("title")?.textContent ||
119
+ const bestTitle = rootElement.querySelector("meta[property='og:title']")?.getAttribute("content") ??
120
+ rootElement.querySelector("meta[name='twitter:title']")?.getAttribute("content") ??
121
+ rootElement.querySelector("meta[name='DC.title']")?.getAttribute("content") ??
122
+ rootElement.querySelector("title")?.textContent ??
446
123
  "";
447
124
  // Drop <head> from the DOM so we don't leak <title> etc. into content
448
125
  try {
@@ -484,48 +161,13 @@ export class MarkdownConverter {
484
161
  return this.cleanupHtml(html); // Return original (but cleaned) HTML on failure
485
162
  }
486
163
  }
487
- /**
488
- * Ensures simple data tables are convertible to GFM by promoting the first row to headers
489
- * when no <th> exists. Skips layout tables marked with role="presentation".
490
- */
491
- normalizeTablesForMarkdown(root) {
492
- const tables = root.querySelectorAll("table");
493
- for (const table of tables) {
494
- if (!(table instanceof NHPHTMLElement))
495
- continue;
496
- const role = table.getAttribute("role");
497
- if (role && role.toLowerCase() === "presentation")
498
- continue; // skip layout tables
499
- // Lossy-flatten complex tables to be GFM-compatible (best-effort). If flattening
500
- // fails (unexpected markup), fall back to preserving the original.
501
- const hasSpans = table.querySelector("[colspan], [rowspan]") !== null;
502
- if (hasSpans) {
503
- const ok = this.flattenTableToSimpleGfm(table);
504
- if (!ok) {
505
- const existing = table.getAttribute("class");
506
- const newClass = existing ? `${existing} ${TURNDOWN_PRESERVE_CLASS}` : TURNDOWN_PRESERVE_CLASS;
507
- table.setAttribute("class", newClass);
508
- }
509
- continue;
510
- }
511
- // If table already has headers, leave as-is
512
- if (table.querySelector("th"))
513
- continue;
514
- const firstRow = table.querySelector("tr");
515
- if (!firstRow || !(firstRow instanceof NHPHTMLElement))
516
- continue;
517
- // Promote all cells in the first row to header cells
518
- const cells = firstRow.querySelectorAll("td");
519
- if (!cells || cells.length === 0)
520
- continue;
521
- for (const cell of cells) {
522
- if (cell instanceof NHPHTMLElement && cell.tagName === "TD") {
523
- // Switch tag to TH so GFM plugin recognizes header row
524
- // node-html-parser allows mutating tagName directly
525
- cell.tagName = "TH";
526
- }
527
- }
528
- }
164
+ /** Remove img elements with .svg src (external SVG URLs). Inline SVG and data: URIs already stripped by PREPROCESSING_REMOVE_SELECTORS. */
165
+ removeSvgImageRefs(root) {
166
+ root.querySelectorAll("img[src]").forEach((el) => {
167
+ const src = el.getAttribute("src") || "";
168
+ if (src.toLowerCase().includes(".svg"))
169
+ el.remove();
170
+ });
529
171
  }
530
172
  // Remove common breadcrumb containers explicitly, regardless of link density
531
173
  removeBreadcrumbs(root) {
@@ -557,37 +199,27 @@ export class MarkdownConverter {
557
199
  }
558
200
  }
559
201
  }
560
- // Render metadata items to HTML so Turndown can convert cleanly to Markdown
561
- // (metadata rendering removed – we no longer inject metadata into output)
562
- // Promote or inject a primary H1 heading using best available title.
563
- ensurePrimaryHeading(root, content, providedTitle) {
202
+ /** Promote or inject a primary H1 heading using the provided title (from Kreuzberg metadata or DOM extraction). */
203
+ ensurePrimaryHeading(_root, content, providedTitle) {
564
204
  if (!(content instanceof NHPHTMLElement))
565
205
  return;
566
- // Determine best title from metadata sources
567
- const bestTitle = providedTitle ||
568
- root.querySelector("meta[property='og:title']")?.getAttribute("content") ||
569
- root.querySelector("meta[name='twitter:title']")?.getAttribute("content") ||
570
- root.querySelector("meta[name='DC.title']")?.getAttribute("content") ||
571
- root.querySelector("title")?.textContent ||
572
- "";
573
- // Find existing headings in content
206
+ const normalize = (s) => (s || "").trim().replace(/\s+/g, " ");
207
+ const titleNorm = normalize(providedTitle);
574
208
  const firstH1 = content.querySelector("h1");
575
209
  const firstHeading = content.querySelector("h1, h2, h3, h4, h5, h6");
576
- const normalize = (s) => (s || "").trim().replace(/\s+/g, " ");
577
- const titleNorm = normalize(bestTitle);
578
210
  const h1Text = normalize(firstH1?.textContent || "");
579
211
  if (firstH1) {
580
212
  // If document title is longer and contains the existing H1, replace H1 with the document title
581
213
  if (titleNorm &&
582
214
  titleNorm.length > h1Text.length &&
583
215
  (titleNorm.includes(h1Text) || h1Text.includes(titleNorm.split("|")[0].trim()))) {
584
- firstH1.set_content(bestTitle);
216
+ firstH1.set_content(providedTitle ?? "");
585
217
  }
586
218
  return;
587
219
  }
588
220
  // No H1 present: prefer document title if available
589
221
  if (titleNorm) {
590
- const h1 = parse(`<h1>${bestTitle}</h1>`).firstChild;
222
+ const h1 = parse(`<h1>${providedTitle ?? ""}</h1>`).firstChild;
591
223
  content.prepend(h1);
592
224
  return;
593
225
  }
@@ -596,127 +228,6 @@ export class MarkdownConverter {
596
228
  firstHeading.tagName = "H1";
597
229
  }
598
230
  }
599
- // Attempt to flatten a table with colspans/rowspans into a simple table
600
- // with no spans so GFM can convert it. Returns true on success.
601
- flattenTableToSimpleGfm(table) {
602
- try {
603
- const rows = table.querySelectorAll("tr");
604
- if (!rows || rows.length === 0)
605
- return false;
606
- let spanMap = {};
607
- const grid = [];
608
- let maxCols = 0;
609
- for (const tr of rows) {
610
- if (!(tr instanceof NHPHTMLElement))
611
- continue;
612
- // Pre-fill from active rowspans
613
- const nextSpanMap = {};
614
- const currentRow = [];
615
- // Place carried-over cells first
616
- const spanCols = Object.keys(spanMap)
617
- .map((k) => Number(k))
618
- .sort((a, b) => a - b);
619
- for (const colIdx of spanCols) {
620
- const sc = spanMap[colIdx];
621
- currentRow[colIdx] = sc.content;
622
- if (sc.remaining - 1 > 0) {
623
- nextSpanMap[colIdx] = { content: sc.content, remaining: sc.remaining - 1 };
624
- }
625
- }
626
- // Place actual cells of the row, respecting existing occupied columns
627
- const cells = tr.querySelectorAll("th, td");
628
- let insertCol = 0;
629
- for (const cell of cells) {
630
- if (!(cell instanceof NHPHTMLElement))
631
- continue;
632
- // Find next free column
633
- while (currentRow[insertCol] !== undefined)
634
- insertCol++;
635
- const colSpan = Math.max(1, parseInt(cell.getAttribute("colspan") || "1", 10) || 1);
636
- const rowSpan = Math.max(1, parseInt(cell.getAttribute("rowspan") || "1", 10) || 1);
637
- const content = this.sanitizeCellContentForTable(cell.innerHTML || "");
638
- for (let i = 0; i < colSpan; i++) {
639
- const col = insertCol + i;
640
- currentRow[col] = content;
641
- if (rowSpan > 1) {
642
- const existing = nextSpanMap[col];
643
- nextSpanMap[col] = { content, remaining: Math.max(existing?.remaining || 0, rowSpan - 1) };
644
- }
645
- }
646
- insertCol += colSpan;
647
- }
648
- // Normalize row
649
- const length = currentRow.length;
650
- maxCols = Math.max(maxCols, length);
651
- grid.push(currentRow);
652
- spanMap = nextSpanMap;
653
- }
654
- // Drop leading fully-empty rows (often style-only)
655
- while (grid.length && grid[0].every((c) => !c || !c.trim())) {
656
- grid.shift();
657
- }
658
- // Ensure all rows have equal length
659
- for (const row of grid) {
660
- for (let i = 0; i < maxCols; i++) {
661
- if (row[i] === undefined)
662
- row[i] = "";
663
- }
664
- }
665
- // Pick a header row: first non-empty row (after dropping empties)
666
- const headerRowIndex = 0;
667
- // Build a simple table HTML without spans
668
- let html = "<table><tbody>";
669
- for (let r = 0; r < grid.length; r++) {
670
- const row = grid[r];
671
- html += "<tr>";
672
- for (const cellContent of row) {
673
- if (r === headerRowIndex) {
674
- html += `<th>${cellContent}</th>`;
675
- }
676
- else {
677
- html += `<td>${cellContent}</td>`;
678
- }
679
- }
680
- html += "</tr>";
681
- }
682
- html += "</tbody></table>";
683
- // Replace original table with the flattened one
684
- const replacementRoot = parse(html);
685
- const newTable = replacementRoot.querySelector("table");
686
- if (!newTable)
687
- return false;
688
- table.replaceWith(newTable);
689
- return true;
690
- }
691
- catch {
692
- return false;
693
- }
694
- }
695
- // Reduce blocky/complex markup inside table cells to inline-friendly HTML so Turndown
696
- // does not break the table structure. Joins list items with " | ", removes outer divs,
697
- // flattens paragraphs and <br> to spaces, and trims whitespace.
698
- sanitizeCellContentForTable(content) {
699
- if (!content)
700
- return "";
701
- let c = content;
702
- // Normalize lists: turn <li> items into inline separated values
703
- c = c.replace(/<li[^>]*>/gi, "").replace(/<\/li>/gi, " • ");
704
- c = c.replace(/<\/(ul|ol)>/gi, "").replace(/<(ul|ol)[^>]*>/gi, "");
705
- // Remove outer div/span wrappers but keep inner content
706
- c = c.replace(/<div[^>]*>/gi, "").replace(/<\/div>/gi, " ");
707
- c = c.replace(/<span[^>]*>/gi, "").replace(/<\/span>/gi, "");
708
- // Flatten paragraphs and line breaks
709
- c = c.replace(/<p[^>]*>/gi, "").replace(/<\/p>/gi, " ");
710
- c = c.replace(/<br\s*\/?>(\s*)/gi, " ");
711
- // Normalize bullet separators spacing
712
- c = c.replace(/\s*•\s*/g, " • ");
713
- c = c.replace(/(\s*•\s*)+$/g, "");
714
- // Avoid Markdown table column separators inside cells
715
- c = c.replace(/\|/g, " • ");
716
- // Collapse multiple whitespace and trim
717
- c = c.replace(/\s+/g, " ").trim();
718
- return c;
719
- }
720
231
  cleanupHtml(html) {
721
232
  // Remove specific non-standard characters/patterns observed in the wild
722
233
  return (html
@@ -745,11 +256,57 @@ export class MarkdownConverter {
745
256
  .replace(/\s*\n\s*/g, "\n")
746
257
  .trim());
747
258
  }
259
+ /** Check if any CSS class token matches exactly, or if any token contains the substring (for hyphenated classes like "article-body"). */
260
+ hasClass(cls, exact) {
261
+ return cls.split(/\s+/).some((token) => token === exact);
262
+ }
263
+ hasClassSubstring(cls, sub) {
264
+ return cls.split(/\s+/).some((token) => token.includes(sub));
265
+ }
266
+ /** Check if element matches a main content selector (node-html-parser has no matches()). */
267
+ elementMatchesMainContent(el) {
268
+ const tag = el.tagName?.toLowerCase() || "";
269
+ const role = (el.getAttribute?.("role") || "").toLowerCase();
270
+ const cls = (el.getAttribute?.("class") || "").toLowerCase();
271
+ const id = (el.getAttribute?.("id") || "").toLowerCase();
272
+ if (tag === "body" || tag === "main" || tag === "article")
273
+ return true;
274
+ if (role === "main" || role === "article")
275
+ return true;
276
+ if (this.hasClassSubstring(cls, "article-body") ||
277
+ this.hasClassSubstring(cls, "post-content") ||
278
+ this.hasClassSubstring(cls, "main-content") ||
279
+ this.hasClassSubstring(cls, "entry-content") ||
280
+ this.hasClass(cls, "article") ||
281
+ this.hasClass(cls, "post") ||
282
+ this.hasClass(cls, "content") ||
283
+ this.hasClass(cls, "entry") ||
284
+ this.hasClass(cls, "blog-post"))
285
+ return true;
286
+ if (id.includes("article-body") || id.includes("main-content"))
287
+ return true;
288
+ return false;
289
+ }
290
+ /** Check if element matches boilerplate selectors (node-html-parser has no matches()). */
291
+ elementMatchesBoilerplate(el) {
292
+ const tag = el.tagName?.toLowerCase() || "";
293
+ const role = (el.getAttribute?.("role") || "").toLowerCase();
294
+ const cls = (el.getAttribute?.("class") || "").toLowerCase();
295
+ if (["header", "footer", "nav", "aside"].includes(tag))
296
+ return true;
297
+ if (role === "navigation" || role === "complementary" || role === "banner")
298
+ return true;
299
+ if (this.hasClassSubstring(cls, "sidebar") ||
300
+ this.hasClassSubstring(cls, "widget") ||
301
+ this.hasClassSubstring(cls, "menu") ||
302
+ this.hasClassSubstring(cls, "nav") ||
303
+ this.hasClassSubstring(cls, "header") ||
304
+ this.hasClassSubstring(cls, "footer"))
305
+ return true;
306
+ return false;
307
+ }
748
308
  // Potentially performance-intensive: involves iterating over many elements
749
309
  // and performing sub-queries (querySelectorAll, textContent) for each.
750
- // Complexity can be roughly O(B * (T_avg + L_avg * S_avg + M_avg)) where B is number of
751
- // boilerplate candidates, T_avg is avg cost of textContent, L_avg is avg links per candidate,
752
- // S_avg is avg cost of link text access, M_avg is avg cost of matches().
753
310
  removeHighLinkDensityElements(element, threshold) {
754
311
  const potentialBoilerplate = element.querySelectorAll("div, nav, ul, aside, section, .sidebar, .widget, .menu, [role='navigation'], [role='menubar']");
755
312
  for (const el of Array.from(potentialBoilerplate)) {
@@ -778,113 +335,13 @@ export class MarkdownConverter {
778
335
  // Avoid removing the element if it contains a primary content marker
779
336
  const containsMainContent = el.querySelector('main, article, [role="main"], [role="article"]') !== null;
780
337
  // Also avoid removing if it IS the main content candidate itself
781
- const isMainContent = MAIN_CONTENT_SELECTORS.some((selector) => {
782
- try {
783
- // Explicitly assert type before calling matches
784
- /* @ts-expect-error TODO: fix this */
785
- return el.matches(selector);
786
- }
787
- catch {
788
- return false;
789
- }
790
- });
338
+ const isMainContent = this.elementMatchesMainContent(el);
791
339
  if (!containsMainContent && !isMainContent) {
792
340
  el.remove();
793
341
  }
794
342
  }
795
343
  }
796
344
  }
797
- /*
798
- private extractDocumentMetadata(root: NHPHTMLElement): string[] {
799
- const metadata: string[] = [];
800
- const addedMeta: Set<string> = new Set(); // Track added keys to avoid duplicates
801
-
802
- // Helper to add metadata if value exists and key hasn't been added
803
- const addMeta = (key: string, value: string | null | undefined, isTitle = false) => {
804
- const cleanedValue = value?.trim();
805
- if (cleanedValue && !addedMeta.has(key.toLowerCase())) {
806
- // Skip injecting title as Markdown to avoid duplicating content H1
807
- if (!isTitle) {
808
- metadata.push(`${key}: ${cleanedValue}`);
809
- }
810
- addedMeta.add(key.toLowerCase());
811
- }
812
- };
813
-
814
- // 1. Title (Prioritize specific ones, fallback to <title>)
815
- addMeta("Title", root.querySelector("meta[property='og:title']")?.getAttribute("content"), true);
816
- addMeta("Title", root.querySelector("meta[name='twitter:title']")?.getAttribute("content"), true);
817
- addMeta("Title", root.querySelector("meta[name='DC.title']")?.getAttribute("content"), true);
818
- addMeta("Title", root.querySelector("title")?.textContent, true);
819
-
820
- // 2. Description
821
- addMeta("Description", root.querySelector("meta[property='og:description']")?.getAttribute("content"));
822
- addMeta("Description", root.querySelector("meta[name='twitter:description']")?.getAttribute("content"));
823
- addMeta("Description", root.querySelector("meta[name='description']")?.getAttribute("content"));
824
- addMeta("Description", root.querySelector("meta[name='DC.description']")?.getAttribute("content"));
825
-
826
- // 3. Author
827
- addMeta("Author", root.querySelector("meta[name='author']")?.getAttribute("content"));
828
- addMeta("Author", root.querySelector("meta[property='article:author']")?.getAttribute("content"));
829
- addMeta("Author", root.querySelector("[rel='author']")?.textContent);
830
-
831
- // 4. Publication Date
832
- addMeta("Published", root.querySelector("meta[property='article:published_time']")?.getAttribute("content"));
833
- addMeta("Published", root.querySelector("meta[name='publish-date']")?.getAttribute("content"));
834
- addMeta("Published", root.querySelector("time[itemprop='datePublished']")?.getAttribute("datetime"));
835
- addMeta("Published", root.querySelector("time")?.getAttribute("datetime")); // Generic time tag
836
-
837
- // 5. Canonical URL
838
- addMeta("URL", root.querySelector("link[rel='canonical']")?.getAttribute("href"));
839
- addMeta("URL", root.querySelector("meta[property='og:url']")?.getAttribute("content"));
840
-
841
- // 6. Extract JSON-LD
842
- const jsonLdScripts = root.querySelectorAll("script[type='application/ld+json']");
843
- if (jsonLdScripts.length > 0) {
844
- const jsonLdData = Array.from(jsonLdScripts)
845
- .map((script) => {
846
- try {
847
- // Ensure script content exists before parsing
848
- const textContent = script.textContent;
849
- return textContent ? JSON.parse(textContent) : null;
850
- } catch (e: unknown) {
851
- const message = e instanceof Error ? e.message : String(e);
852
- console.warn(`Failed to parse JSON-LD content: ${message}`, e instanceof Error ? e : undefined);
853
- return null;
854
- }
855
- })
856
- .filter((item): item is object => item !== null); // Type guard for filter
857
-
858
- if (jsonLdData.length > 0 && !addedMeta.has("json-ld")) {
859
- // Keep JSON-LD as a single block; will be injected as HTML later
860
- metadata.push(`<details><summary>JSON-LD Metadata</summary>\n<pre><code class="language-json">${
861
- JSON.stringify(jsonLdData, null, 2)
862
- }</code></pre>\n</details>`);
863
- addedMeta.add("json-ld");
864
-
865
- // Add other relevant fields like 'author', 'datePublished', etc.
866
- jsonLdData.forEach((jsonData) => {
867
- if (typeof jsonData === "object" && jsonData !== null) {
868
- // Safely extract publisher name from JSON-LD object
869
- const publisher = (jsonData as Record<string, unknown>).publisher as unknown;
870
- let orgName: string | undefined;
871
- if (publisher && typeof publisher === "object") {
872
- const name = (publisher as Record<string, unknown>).name;
873
- if (typeof name === "string") {
874
- orgName = name;
875
- }
876
- } else if (typeof publisher === "string") {
877
- orgName = publisher; // Some JSON-LD use a string for publisher
878
- }
879
- addMeta("Organization", orgName);
880
- }
881
- });
882
- }
883
- }
884
-
885
- return metadata;
886
- }
887
- */
888
345
  detectForumPage(root) {
889
346
  // Count indicators across different selector groups
890
347
  const countMatches = (selectors) => {
@@ -941,8 +398,8 @@ export class MarkdownConverter {
941
398
  * @returns The calculated score for the element.
942
399
  */
943
400
  // This scoring function is called for each candidate element during content extraction.
944
- // It involves text content access, querySelectorAll("p"), and potentially element.matches(),
945
- // contributing to the overall complexity of extractArticleContentElement.
401
+ // It involves text content access, querySelectorAll("p"), and elementMatchesBoilerplate()
402
+ // (node-html-parser has no matches()), contributing to the overall complexity of extractArticleContentElement.
946
403
  _calculateElementScore(element, currentMaxScore) {
947
404
  // Basic scoring: text length
948
405
  const textLength = (element.textContent || "").trim().length;
@@ -961,18 +418,8 @@ export class MarkdownConverter {
961
418
  // Penalize common boilerplate containers/roles
962
419
  if (["HEADER", "FOOTER", "NAV", "ASIDE"].includes(element.tagName))
963
420
  score *= 0.3;
964
- try {
965
- const BOILERPLATE_SELECTORS_FOR_PENALTY = '.sidebar, .widget, .menu, .nav, .header, .footer, [role="navigation"], [role="complementary"], [role="banner"]';
966
- /* @ts-expect-error TODO: fix this (existing issue with NHPHTMLElement and matches) */
967
- if (element.matches(BOILERPLATE_SELECTORS_FOR_PENALTY)) {
968
- score *= 0.2;
969
- }
970
- }
971
- catch (e) {
972
- const message = e instanceof Error ? e.message : String(e);
973
- console.warn(`MarkdownConverter: Error matching selector in _calculateElementScore: ${message}`);
974
- /* Ignore selector match errors, but log a warning */
975
- }
421
+ if (this.elementMatchesBoilerplate(element))
422
+ score *= 0.2;
976
423
  // Penalize if it contains high-link density elements that weren't removed
977
424
  // Using a constant for the threshold (e.g., HIGH_LINK_DENSITY_THRESHOLD_PENALTY = 0.6)
978
425
  const HIGH_LINK_DENSITY_THRESHOLD_PENALTY = 0.6;
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-converter.js","sourceRoot":"","sources":["../../src/utils/markdown-converter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"markdown-converter.js","sourceRoot":"","sources":["../../src/utils/markdown-converter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@purepageio/fetch-engines",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "type": "module",
5
5
  "description": "A collection of configurable engines for fetching HTML content using fetch or Playwright.",
6
6
  "main": "dist/index.js",
@@ -13,6 +13,7 @@
13
13
  "dependencies": {
14
14
  "@ai-sdk/openai": "^2.0.30",
15
15
  "@ai-sdk/openai-compatible": "^1.0.28",
16
+ "@kreuzberg/html-to-markdown": "^2.27.2",
16
17
  "ai": "^5.0.44",
17
18
  "axios": "^1.12.0",
18
19
  "node-html-parser": "^7.0.1",
@@ -21,8 +22,6 @@
21
22
  "playwright-extra": "^4.3.6",
22
23
  "puppeteer-extra-plugin": "^3.2.3",
23
24
  "puppeteer-extra-plugin-stealth": "^2.11.2",
24
- "turndown": "^7.2.0",
25
- "turndown-plugin-gfm": "^1.0.2",
26
25
  "user-agents": "^1.1.208",
27
26
  "uuid": "^11.1.0",
28
27
  "zod": "^4.1.8"
@@ -32,7 +31,6 @@
32
31
  "@types/axios": "^0.14.0",
33
32
  "@types/jsdom": "^21.1.6",
34
33
  "@types/node": "^18.0.0",
35
- "@types/turndown": "^5.0.5",
36
34
  "@types/user-agents": "^1.0.4",
37
35
  "@types/uuid": "^10.0.0",
38
36
  "@typescript-eslint/eslint-plugin": "^8.29.0",