webforai 1.2.3 → 1.3.1
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 +10 -14
- package/dist/cjs/extract-hast/index.js +1 -1
- package/dist/cjs/html-to-markdown.js +4 -3
- package/dist/cjs/html-to-markdown.test.js +26 -0
- package/dist/cjs/html-to-mdast.js +4 -4
- package/dist/cjs/mdast-to-markdown.js +9 -5
- package/dist/extract-hast/index.js +1 -1
- package/dist/html-to-markdown.js +4 -3
- package/dist/html-to-markdown.test.js +26 -0
- package/dist/html-to-mdast.js +4 -4
- package/dist/mdast-to-markdown.js +8 -5
- package/dist/types/extract-hast/index.js.map +1 -1
- package/dist/types/html-to-markdown.d.ts +24 -2
- package/dist/types/html-to-markdown.js.map +1 -1
- package/dist/types/html-to-mdast.d.ts +27 -2
- package/dist/types/html-to-mdast.js.map +1 -1
- package/dist/types/mdast-to-markdown.d.ts +42 -3
- package/dist/types/mdast-to-markdown.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -15,8 +15,8 @@ A library that provides a web interface for AI
|
|
|
15
15
|
|
|
16
16
|
There is a demo API for Html2Markdown deployed on CloudflareWorker. Please access the following link
|
|
17
17
|
|
|
18
|
-
- [
|
|
19
|
-
- [https://webforai.inaridiy.workers.dev/?
|
|
18
|
+
- [NPM Package page](https://webforai.inaridiy.workers.dev/?url=https://www.npmjs.com/package/webforai)
|
|
19
|
+
- [Wikipedia of Cloudflare (AI Mode)](https://webforai.inaridiy.workers.dev/?url=https://en.wikipedia.org/wiki/Cloudflare&mode=ai)
|
|
20
20
|
|
|
21
21
|
## Quick Start
|
|
22
22
|
|
|
@@ -34,13 +34,20 @@ import { loadHtml } from "webforai/loaders/playwright";
|
|
|
34
34
|
const url = "https://www.npmjs.com/package/webforai";
|
|
35
35
|
const html = await loadHtml(url);
|
|
36
36
|
|
|
37
|
-
const markdown = htmlToMarkdown(html, {
|
|
37
|
+
const markdown = htmlToMarkdown(html, { baseUrl: url });
|
|
38
38
|
|
|
39
39
|
await fs.writeFile("output.md", markdown);
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
other examples are in [examples](./examples/simple/src/index.ts)
|
|
43
43
|
|
|
44
|
+
## Examples
|
|
45
|
+
|
|
46
|
+
- [Simple Example](https://github.com/inaridiy/webforai/tree/main/examples/simple/src/index.ts)
|
|
47
|
+
- [Scraping With ChatGPT API](https://github.com/inaridiy/webforai/blob/main/examples/scraping/src/index.ts)
|
|
48
|
+
- [Translate Markdown with Splitter](https://github.com/inaridiy/webforai/tree/main/examples/translate)
|
|
49
|
+
- [Cloudflare Worker with puppeteer & DO](https://github.com/inaridiy/webforai/tree/main/examples/worker)
|
|
50
|
+
|
|
44
51
|
## Usage
|
|
45
52
|
|
|
46
53
|
### Main Functions
|
|
@@ -61,14 +68,3 @@ Convert Mdast to Markdown. If `solveLinks` is specified, the relative links in t
|
|
|
61
68
|
|
|
62
69
|
**`loadHtml(url: string, options?: LoadHtmlOptions): Promise<string>`**
|
|
63
70
|
Load HTML from the specified URL. This function uses Playwright internally.
|
|
64
|
-
|
|
65
|
-
## Early Users
|
|
66
|
-
|
|
67
|
-
### Voice Genius - Explanatory video generation by AI
|
|
68
|
-
|
|
69
|
-
<img src="https://github.com/inaridiy/webforai/blob/main/images/voice-genius.png" width="300px">
|
|
70
|
-
|
|
71
|
-
by [@moons14](https://twitter.com/moons_dev)
|
|
72
|
-
|
|
73
|
-
AI can be used to automatically generate highly accurate commentary videos.
|
|
74
|
-
Supports conversations and presentations using synthesized voice, embedding of images in videos, etc.
|
|
@@ -36,7 +36,7 @@ const extractHast = (hast, extractors = DEFAULT_EXTRACT_HAST) => {
|
|
|
36
36
|
if (extractor === false) {
|
|
37
37
|
return acc;
|
|
38
38
|
}
|
|
39
|
-
if (typeof extractor === "string" && extractor in
|
|
39
|
+
if (typeof extractor === "string" && extractor in PRESET_EXTRACT_HAST) {
|
|
40
40
|
return PRESET_EXTRACT_HAST[extractor](acc);
|
|
41
41
|
}
|
|
42
42
|
if (typeof extractor === "function") {
|
|
@@ -23,9 +23,10 @@ __export(html_to_markdown_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(html_to_markdown_exports);
|
|
24
24
|
var import_html_to_mdast = require("./html-to-mdast");
|
|
25
25
|
var import_mdast_to_markdown = require("./mdast-to-markdown");
|
|
26
|
-
const htmlToMarkdown = (
|
|
27
|
-
const
|
|
28
|
-
const
|
|
26
|
+
const htmlToMarkdown = (htmlOrHast, options) => {
|
|
27
|
+
const { baseUrl, formatting: toMarkdownOptions, ...toMdastOptions } = options || {};
|
|
28
|
+
const mdast = (0, import_html_to_mdast.htmlToMdast)(htmlOrHast, toMdastOptions);
|
|
29
|
+
const markdown = (0, import_mdast_to_markdown.mdastToMarkdown)(mdast, { baseUrl, ...toMarkdownOptions });
|
|
29
30
|
return markdown;
|
|
30
31
|
};
|
|
31
32
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var import_fastest_levenshtein = require("fastest-levenshtein");
|
|
3
|
+
var import_vitest = require("vitest");
|
|
4
|
+
var import_html_to_markdown = require("./html-to-markdown");
|
|
5
|
+
const html = `
|
|
6
|
+
<h1>Hello, world!</h1>
|
|
7
|
+
<p>This is a paragraph.</p>
|
|
8
|
+
<ul>
|
|
9
|
+
<li>Item 1</li>
|
|
10
|
+
<li>Item 2</li>
|
|
11
|
+
</ul>
|
|
12
|
+
`;
|
|
13
|
+
const expected = `# Hello, world!
|
|
14
|
+
|
|
15
|
+
This is a paragraph.
|
|
16
|
+
|
|
17
|
+
* Item 1
|
|
18
|
+
* Item 2
|
|
19
|
+
`;
|
|
20
|
+
(0, import_vitest.describe)("htmlToMarkdown", () => {
|
|
21
|
+
(0, import_vitest.it)("should convert HTML to Markdown", () => {
|
|
22
|
+
const markdown = (0, import_html_to_markdown.htmlToMarkdown)(html, { extractors: false });
|
|
23
|
+
const d = (0, import_fastest_levenshtein.distance)(markdown, expected);
|
|
24
|
+
(0, import_vitest.expect)(d).lte(2);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
@@ -31,10 +31,10 @@ var import_custom_img_handler = require("./mdast-handlers/custom-img-handler");
|
|
|
31
31
|
var import_custom_table_handler = require("./mdast-handlers/custom-table-handler");
|
|
32
32
|
var import_empty_handler = require("./mdast-handlers/empty-handler");
|
|
33
33
|
var import_math_handler = require("./mdast-handlers/math-handler");
|
|
34
|
-
const htmlToMdast = (
|
|
35
|
-
const {
|
|
36
|
-
const hast = (0, import_hast_util_from_html.fromHtml)(
|
|
37
|
-
const extractedHast = (0, import_extract_hast.extractHast)(hast,
|
|
34
|
+
const htmlToMdast = (htmlOrHast, options) => {
|
|
35
|
+
const { extractors } = options || {};
|
|
36
|
+
const hast = typeof htmlOrHast === "string" ? (0, import_hast_util_from_html.fromHtml)(htmlOrHast, { fragment: true }) : htmlOrHast;
|
|
37
|
+
const extractedHast = (0, import_extract_hast.extractHast)(hast, extractors);
|
|
38
38
|
const mdast = (0, import_hast_util_to_mdast.toMdast)(extractedHast, {
|
|
39
39
|
handlers: {
|
|
40
40
|
math: import_math_handler.mathHandler,
|
|
@@ -18,6 +18,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var mdast_to_markdown_exports = {};
|
|
20
20
|
__export(mdast_to_markdown_exports, {
|
|
21
|
+
DEFAULT_MDAST_TO_MARKDOWN_OPTIONS: () => DEFAULT_MDAST_TO_MARKDOWN_OPTIONS,
|
|
21
22
|
mdastToMarkdown: () => mdastToMarkdown
|
|
22
23
|
});
|
|
23
24
|
module.exports = __toCommonJS(mdast_to_markdown_exports);
|
|
@@ -26,16 +27,19 @@ var import_mdast_util_math = require("mdast-util-math");
|
|
|
26
27
|
var import_mdast_util_to_markdown = require("mdast-util-to-markdown");
|
|
27
28
|
var import_link_replacer = require("./link-replacer");
|
|
28
29
|
var import_mdast_utils = require("./utils/mdast-utils");
|
|
30
|
+
const DEFAULT_MDAST_TO_MARKDOWN_OPTIONS = {
|
|
31
|
+
extensions: [(0, import_mdast_util_gfm.gfmToMarkdown)(), (0, import_mdast_util_math.mathToMarkdown)()]
|
|
32
|
+
};
|
|
29
33
|
const mdastToMarkdown = (mdast, options) => {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
markdown = (0, import_link_replacer.linkReplacer)(markdown, options.url);
|
|
34
|
+
const { baseUrl, ...toMarkdownOptions } = { ...DEFAULT_MDAST_TO_MARKDOWN_OPTIONS, ...options };
|
|
35
|
+
let markdown = (0, import_mdast_util_to_markdown.toMarkdown)((0, import_mdast_utils.warpRoot)(mdast), toMarkdownOptions);
|
|
36
|
+
if (baseUrl) {
|
|
37
|
+
markdown = (0, import_link_replacer.linkReplacer)(markdown, baseUrl);
|
|
35
38
|
}
|
|
36
39
|
return markdown;
|
|
37
40
|
};
|
|
38
41
|
// Annotate the CommonJS export names for ESM import in node:
|
|
39
42
|
0 && (module.exports = {
|
|
43
|
+
DEFAULT_MDAST_TO_MARKDOWN_OPTIONS,
|
|
40
44
|
mdastToMarkdown
|
|
41
45
|
});
|
|
@@ -12,7 +12,7 @@ var extractHast = (hast, extractors = DEFAULT_EXTRACT_HAST) => {
|
|
|
12
12
|
if (extractor === false) {
|
|
13
13
|
return acc;
|
|
14
14
|
}
|
|
15
|
-
if (typeof extractor === "string" && extractor in
|
|
15
|
+
if (typeof extractor === "string" && extractor in PRESET_EXTRACT_HAST) {
|
|
16
16
|
return PRESET_EXTRACT_HAST[extractor](acc);
|
|
17
17
|
}
|
|
18
18
|
if (typeof extractor === "function") {
|
package/dist/html-to-markdown.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// src/html-to-markdown.ts
|
|
2
2
|
import { htmlToMdast } from "./html-to-mdast.js";
|
|
3
3
|
import { mdastToMarkdown } from "./mdast-to-markdown.js";
|
|
4
|
-
var htmlToMarkdown = (
|
|
5
|
-
const
|
|
6
|
-
const
|
|
4
|
+
var htmlToMarkdown = (htmlOrHast, options) => {
|
|
5
|
+
const { baseUrl, formatting: toMarkdownOptions, ...toMdastOptions } = options || {};
|
|
6
|
+
const mdast = htmlToMdast(htmlOrHast, toMdastOptions);
|
|
7
|
+
const markdown = mdastToMarkdown(mdast, { baseUrl, ...toMarkdownOptions });
|
|
7
8
|
return markdown;
|
|
8
9
|
};
|
|
9
10
|
export {
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// src/html-to-markdown.test.ts
|
|
2
|
+
import { distance } from "fastest-levenshtein";
|
|
3
|
+
import { describe, expect, it } from "vitest";
|
|
4
|
+
import { htmlToMarkdown } from "./html-to-markdown.js";
|
|
5
|
+
var html = `
|
|
6
|
+
<h1>Hello, world!</h1>
|
|
7
|
+
<p>This is a paragraph.</p>
|
|
8
|
+
<ul>
|
|
9
|
+
<li>Item 1</li>
|
|
10
|
+
<li>Item 2</li>
|
|
11
|
+
</ul>
|
|
12
|
+
`;
|
|
13
|
+
var expected = `# Hello, world!
|
|
14
|
+
|
|
15
|
+
This is a paragraph.
|
|
16
|
+
|
|
17
|
+
* Item 1
|
|
18
|
+
* Item 2
|
|
19
|
+
`;
|
|
20
|
+
describe("htmlToMarkdown", () => {
|
|
21
|
+
it("should convert HTML to Markdown", () => {
|
|
22
|
+
const markdown = htmlToMarkdown(html, { extractors: false });
|
|
23
|
+
const d = distance(markdown, expected);
|
|
24
|
+
expect(d).lte(2);
|
|
25
|
+
});
|
|
26
|
+
});
|
package/dist/html-to-mdast.js
CHANGED
|
@@ -9,10 +9,10 @@ import { customImgHandler } from "./mdast-handlers/custom-img-handler.js";
|
|
|
9
9
|
import { customTableHandler } from "./mdast-handlers/custom-table-handler.js";
|
|
10
10
|
import { emptyHandler } from "./mdast-handlers/empty-handler.js";
|
|
11
11
|
import { mathHandler } from "./mdast-handlers/math-handler.js";
|
|
12
|
-
var htmlToMdast = (
|
|
13
|
-
const {
|
|
14
|
-
const hast = fromHtml(
|
|
15
|
-
const extractedHast = extractHast(hast,
|
|
12
|
+
var htmlToMdast = (htmlOrHast, options) => {
|
|
13
|
+
const { extractors } = options || {};
|
|
14
|
+
const hast = typeof htmlOrHast === "string" ? fromHtml(htmlOrHast, { fragment: true }) : htmlOrHast;
|
|
15
|
+
const extractedHast = extractHast(hast, extractors);
|
|
16
16
|
const mdast = toMdast(extractedHast, {
|
|
17
17
|
handlers: {
|
|
18
18
|
math: mathHandler,
|
|
@@ -4,15 +4,18 @@ import { mathToMarkdown } from "mdast-util-math";
|
|
|
4
4
|
import { toMarkdown } from "mdast-util-to-markdown";
|
|
5
5
|
import { linkReplacer } from "./link-replacer.js";
|
|
6
6
|
import { warpRoot } from "./utils/mdast-utils.js";
|
|
7
|
+
var DEFAULT_MDAST_TO_MARKDOWN_OPTIONS = {
|
|
8
|
+
extensions: [gfmToMarkdown(), mathToMarkdown()]
|
|
9
|
+
};
|
|
7
10
|
var mdastToMarkdown = (mdast, options) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
markdown = linkReplacer(markdown, options.url);
|
|
11
|
+
const { baseUrl, ...toMarkdownOptions } = { ...DEFAULT_MDAST_TO_MARKDOWN_OPTIONS, ...options };
|
|
12
|
+
let markdown = toMarkdown(warpRoot(mdast), toMarkdownOptions);
|
|
13
|
+
if (baseUrl) {
|
|
14
|
+
markdown = linkReplacer(markdown, baseUrl);
|
|
13
15
|
}
|
|
14
16
|
return markdown;
|
|
15
17
|
};
|
|
16
18
|
export {
|
|
19
|
+
DEFAULT_MDAST_TO_MARKDOWN_OPTIONS,
|
|
17
20
|
mdastToMarkdown
|
|
18
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extract-hast/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAMjD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAClC,QAAQ,EAAE,mBAAmB;IAC7B,WAAW,EAAE,sBAAsB;CACnC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAe,CAAC,aAAa,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAU,EAAE,aAAyB,oBAAoB,EAAQ,EAAE;IAC9F,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAE1E,MAAM,SAAS,GACd,WAAW,CAAC,MAAM,CAAO,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE;QAC3C,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC;QACZ,CAAC;QACD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,IAAI,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extract-hast/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAMjD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAClC,QAAQ,EAAE,mBAAmB;IAC7B,WAAW,EAAE,sBAAsB;CACnC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAe,CAAC,aAAa,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAU,EAAE,aAAyB,oBAAoB,EAAQ,EAAE;IAC9F,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAE1E,MAAM,SAAS,GACd,WAAW,CAAC,MAAM,CAAO,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE;QAC3C,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC;QACZ,CAAC;QACD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,IAAI,mBAAmB,EAAE,CAAC;YACvE,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;YACrC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;IACpD,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;IAElB,OAAO,SAAS,CAAC;AAClB,CAAC,CAAC"}
|
|
@@ -1,5 +1,27 @@
|
|
|
1
|
+
import type { Nodes as Hast } from "hast";
|
|
1
2
|
import { type HtmlToMdastOptions } from "./html-to-mdast";
|
|
3
|
+
import { type MdastToMarkdownOptions } from "./mdast-to-markdown";
|
|
2
4
|
export interface HtmlToMarkdownOptions extends HtmlToMdastOptions {
|
|
3
|
-
|
|
5
|
+
/** The base URL to use for replacing relative links. */
|
|
6
|
+
baseUrl?: string;
|
|
7
|
+
/** Formatting options passed to [mdast-util-to-markdown](https://github.com/syntax-tree/mdast-util-to-markdown). */
|
|
8
|
+
formatting?: Omit<MdastToMarkdownOptions, "baseUrl">;
|
|
4
9
|
}
|
|
5
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Converts HTML or HAST to a Markdown string.
|
|
12
|
+
*
|
|
13
|
+
* @param htmlOrHast - The HTML string or HAST tree to convert.
|
|
14
|
+
* @param options - {@link HtmlToMarkdownOptions} to customize the conversion.
|
|
15
|
+
* @returns The Markdown string.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { htmlToMarkdown } from "webforai"
|
|
20
|
+
*
|
|
21
|
+
* const html = '<h1>Hello, world!</h1>';
|
|
22
|
+
* const markdown = htmlToMarkdown(html);
|
|
23
|
+
*
|
|
24
|
+
* console.log(markdown); // Output: "# Hello, world!"
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare const htmlToMarkdown: (htmlOrHast: string | Hast, options?: HtmlToMarkdownOptions) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-to-markdown.js","sourceRoot":"","sources":["../../src/html-to-markdown.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"html-to-markdown.js","sourceRoot":"","sources":["../../src/html-to-markdown.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAA+B,eAAe,EAAE,MAAM,qBAAqB,CAAC;AASnF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAyB,EAAE,OAA+B,EAAU,EAAE;IACpG,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACpF,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,iBAAiB,EAAE,CAAC,CAAC;IAC3E,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -1,9 +1,34 @@
|
|
|
1
|
+
import type { Nodes as Hast } from "hast";
|
|
1
2
|
import type { Nodes as Mdast } from "mdast";
|
|
2
3
|
import { type Extracotrs } from "./extract-hast";
|
|
3
4
|
export type HtmlToMdastOptions = {
|
|
4
|
-
|
|
5
|
+
/**
|
|
6
|
+
* An array of extractors to extract specific elements from the HTML.
|
|
7
|
+
* You can define your own functions in addition to the Extractor provided as a preset.
|
|
8
|
+
*/
|
|
9
|
+
extractors?: Extracotrs;
|
|
10
|
+
/** Whether to convert links to plain text. */
|
|
5
11
|
linkAsText?: boolean;
|
|
12
|
+
/** Whether to convert tables to plain text. */
|
|
6
13
|
tableAsText?: boolean;
|
|
14
|
+
/** Whether to hide images. */
|
|
7
15
|
hideImage?: boolean;
|
|
8
16
|
};
|
|
9
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Converts an HTML string or HAST tree to an MDAST tree.
|
|
19
|
+
*
|
|
20
|
+
* @param htmlOrHast - The HTML string or HAST tree to convert.
|
|
21
|
+
* @param options - {@link HtmlToMdastOptions} to customize the conversion.
|
|
22
|
+
* @returns The MDAST tree.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* import { htmlToMdast } from 'webforai';
|
|
27
|
+
*
|
|
28
|
+
* const html = '<h1>Hello, world!</h1>';
|
|
29
|
+
* const mdast = htmlToMdast(html);
|
|
30
|
+
*
|
|
31
|
+
* console.log(mdast); // Output: { type: 'root', children: [ { type: 'heading', depth: 1, children: [ { type: 'text', value: 'Hello, world!' } ] } ] }
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare const htmlToMdast: (htmlOrHast: string | Hast, options?: HtmlToMdastOptions) => Mdast;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-to-mdast.js","sourceRoot":"","sources":["../../src/html-to-mdast.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"html-to-mdast.js","sourceRoot":"","sources":["../../src/html-to-mdast.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAmB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAgB5D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,UAAyB,EAAE,OAA4B,EAAS,EAAE;IAC7F,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAErC,MAAM,IAAI,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAEpG,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAEpD,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,EAAE;QACpC,QAAQ,EAAE;YACT,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE,gBAAgB;YACrB,GAAG,EAAE,iBAAiB;YACtB,CAAC,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;YAClD,GAAG,EAAE,gBAAgB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;YACxD,KAAK,EAAE,kBAAkB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;YAC3D,EAAE,EAAE,YAAY;SAChB;KACD,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -1,4 +1,43 @@
|
|
|
1
1
|
import type { Nodes as Mdast, RootContent } from "mdast";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import { type Options as ToMarkdownOptions } from "mdast-util-to-markdown";
|
|
3
|
+
/**
|
|
4
|
+
* Options for the `mdastToMarkdown` function.
|
|
5
|
+
*/
|
|
6
|
+
export interface MdastToMarkdownOptions extends ToMarkdownOptions {
|
|
7
|
+
/**
|
|
8
|
+
* The base URL to use for replacing relative links.
|
|
9
|
+
*/
|
|
10
|
+
baseUrl?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Default options for the `mdastToMarkdown` function.
|
|
14
|
+
*/
|
|
15
|
+
export declare const DEFAULT_MDAST_TO_MARKDOWN_OPTIONS: MdastToMarkdownOptions;
|
|
16
|
+
/**
|
|
17
|
+
* Converts an MDAST tree to a Markdown string.
|
|
18
|
+
*
|
|
19
|
+
* @param mdast - The MDAST tree to convert.
|
|
20
|
+
* @param options - Options for the conversion.
|
|
21
|
+
* @returns The Markdown string.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* import { mdastToMarkdown } from './your-library';
|
|
26
|
+
*
|
|
27
|
+
* const mdast = {
|
|
28
|
+
* type: 'root',
|
|
29
|
+
* children: [
|
|
30
|
+
* {
|
|
31
|
+
* type: 'paragraph',
|
|
32
|
+
* children: [
|
|
33
|
+
* { type: 'text', value: 'Hello, world!' }
|
|
34
|
+
* ]
|
|
35
|
+
* }
|
|
36
|
+
* ]
|
|
37
|
+
* };
|
|
38
|
+
*
|
|
39
|
+
* const markdown = mdastToMarkdown(mdast);
|
|
40
|
+
* console.log(markdown); // Output: "Hello, world!"
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare const mdastToMarkdown: (mdast: Mdast | RootContent[], options?: MdastToMarkdownOptions) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mdast-to-markdown.js","sourceRoot":"","sources":["../../src/mdast-to-markdown.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"mdast-to-markdown.js","sourceRoot":"","sources":["../../src/mdast-to-markdown.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAqC,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEvF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAY/C;;GAEG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAA2B;IACxE,UAAU,EAAE,CAAC,aAAa,EAAE,EAAE,cAAc,EAAE,CAAC;CAC/C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAA4B,EAAE,OAAgC,EAAU,EAAE;IACzG,MAAM,EAAE,OAAO,EAAE,GAAG,iBAAiB,EAAE,GAAG,EAAE,GAAG,iCAAiC,EAAE,GAAG,OAAO,EAAE,CAAC;IAE/F,IAAI,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAE9D,IAAI,OAAO,EAAE,CAAC;QACb,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "webforai",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "A library that provides a web interface for AI",
|
|
5
5
|
"author": "inaridiy",
|
|
6
6
|
"license": "MIT",
|
|
@@ -74,6 +74,7 @@
|
|
|
74
74
|
}
|
|
75
75
|
},
|
|
76
76
|
"dependencies": {
|
|
77
|
+
"fastest-levenshtein": "^1.0.16",
|
|
77
78
|
"hast-util-from-html": "^2.0.1",
|
|
78
79
|
"hast-util-select": "^6.0.1",
|
|
79
80
|
"hast-util-to-html": "^9.0.0",
|