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 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
- - [https://webforai.inaridiy.workers.dev/?url=https://www.npmjs.com/package/webforai](https://webforai.inaridiy.workers.dev/?url=https://www.npmjs.com/package/webforai)
19
- - [https://webforai.inaridiy.workers.dev/?html=%3Ch1%3EHello%20World%3C/h1%3E](https://webforai.inaridiy.workers.dev/?html=%3Ch1%3EHello%20World%3C/h1%3E)
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, { solveLinks: url });
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 DEFAULT_EXTRACT_HAST) {
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 = (html, options) => {
27
- const mdast = (0, import_html_to_mdast.htmlToMdast)(html, options);
28
- const markdown = (0, import_mdast_to_markdown.mdastToMarkdown)(mdast, options);
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 = (html, options) => {
35
- const { extractHast: _extractHast } = options || {};
36
- const hast = (0, import_hast_util_from_html.fromHtml)(html, { fragment: true });
37
- const extractedHast = (0, import_extract_hast.extractHast)(hast, _extractHast);
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
- let markdown = (0, import_mdast_util_to_markdown.toMarkdown)((0, import_mdast_utils.warpRoot)(mdast), {
31
- extensions: [(0, import_mdast_util_gfm.gfmToMarkdown)(), (0, import_mdast_util_math.mathToMarkdown)()]
32
- });
33
- if (options?.url) {
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 DEFAULT_EXTRACT_HAST) {
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") {
@@ -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 = (html, options) => {
5
- const mdast = htmlToMdast(html, options);
6
- const markdown = mdastToMarkdown(mdast, options);
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
+ });
@@ -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 = (html, options) => {
13
- const { extractHast: _extractHast } = options || {};
14
- const hast = fromHtml(html, { fragment: true });
15
- const extractedHast = extractHast(hast, _extractHast);
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
- let markdown = toMarkdown(warpRoot(mdast), {
9
- extensions: [gfmToMarkdown(), mathToMarkdown()]
10
- });
11
- if (options?.url) {
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,oBAAoB,EAAE,CAAC;YACxE,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
+ {"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
- url?: string;
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
- export declare const htmlToMarkdown: (html: string, options?: HtmlToMarkdownOptions) => string;
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":"AAAA,OAAO,EAA2B,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAMtD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,OAA+B,EAAU,EAAE;IACvF,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjD,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC"}
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
- extractHast?: Extracotrs;
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
- export declare const htmlToMdast: (html: string, options?: HtmlToMdastOptions) => Mdast;
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":"AAEA,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;AAS5D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,OAA4B,EAAS,EAAE;IAChF,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAEpD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAEtD,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
+ {"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
- export declare const mdastToMarkdown: (mdast: Mdast | RootContent[], options?: {
3
- url?: string;
4
- }) => string;
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,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAA4B,EAAE,OAA0B,EAAU,EAAE;IACnG,IAAI,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC1C,UAAU,EAAE,CAAC,aAAa,EAAE,EAAE,cAAc,EAAE,CAAC;KAC/C,CAAC,CAAC;IAEH,IAAI,OAAO,EAAE,GAAG,EAAE,CAAC;QAClB,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC"}
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.2.3",
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",