webforai 0.0.16 → 0.0.19

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.
Files changed (64) hide show
  1. package/dist/cjs/extract-hast.js +45 -0
  2. package/dist/cjs/html-to-markdown.js +34 -0
  3. package/dist/cjs/html-to-mdast.js +41 -0
  4. package/dist/cjs/index.js +28 -0
  5. package/dist/cjs/link-replacer.js +35 -0
  6. package/dist/cjs/loaders/playwright.js +57 -0
  7. package/dist/cjs/md-splitter.js +54 -0
  8. package/dist/cjs/mdast-handlers/custom-div-handler.js +65 -0
  9. package/dist/cjs/mdast-handlers/math-handler.js +36 -0
  10. package/dist/cjs/mdast-to-markdown.js +40 -0
  11. package/dist/cjs/package.json +3 -0
  12. package/dist/cjs/utils/common.js +36 -0
  13. package/dist/cjs/utils/mdast-utils.js +46 -0
  14. package/dist/extract-hast.js +18 -15
  15. package/dist/html-to-markdown.js +10 -7
  16. package/dist/html-to-mdast.js +15 -11
  17. package/dist/index.js +5 -5
  18. package/dist/link-replacer.js +11 -8
  19. package/dist/loaders/playwright.js +23 -21
  20. package/dist/md-splitter.js +28 -27
  21. package/dist/mdast-handlers/custom-div-handler.js +37 -37
  22. package/dist/mdast-handlers/math-handler.js +10 -7
  23. package/dist/mdast-to-markdown.js +13 -10
  24. package/dist/types/extract-hast.d.ts +2 -0
  25. package/dist/types/package.json +3 -0
  26. package/dist/utils/common.js +12 -9
  27. package/dist/utils/mdast-utils.js +18 -13
  28. package/package.json +45 -22
  29. package/dist/extract-hast.d.ts +0 -2
  30. package/dist/extract-hast.js.map +0 -1
  31. package/dist/html-to-markdown.js.map +0 -1
  32. package/dist/html-to-mdast.js.map +0 -1
  33. package/dist/index.js.map +0 -1
  34. package/dist/link-replacer.js.map +0 -1
  35. package/dist/loaders/playwright.js.map +0 -1
  36. package/dist/md-splitter.js.map +0 -1
  37. package/dist/mdast-handlers/custom-div-handler.js.map +0 -1
  38. package/dist/mdast-handlers/math-handler.js.map +0 -1
  39. package/dist/mdast-to-markdown.js.map +0 -1
  40. package/dist/utils/common.js.map +0 -1
  41. package/dist/utils/mdast-utils.js.map +0 -1
  42. package/src/extract-hast.ts +0 -23
  43. package/src/html-to-markdown.ts +0 -14
  44. package/src/html-to-mdast.ts +0 -23
  45. package/src/index.ts +0 -4
  46. package/src/link-replacer.ts +0 -7
  47. package/src/loaders/playwright.ts +0 -22
  48. package/src/md-splitter.ts +0 -43
  49. package/src/mdast-handlers/custom-div-handler.ts +0 -43
  50. package/src/mdast-handlers/math-handler.ts +0 -12
  51. package/src/mdast-to-markdown.ts +0 -18
  52. package/src/utils/common.ts +0 -9
  53. package/src/utils/mdast-utils.ts +0 -16
  54. /package/dist/{html-to-markdown.d.ts → types/html-to-markdown.d.ts} +0 -0
  55. /package/dist/{html-to-mdast.d.ts → types/html-to-mdast.d.ts} +0 -0
  56. /package/dist/{index.d.ts → types/index.d.ts} +0 -0
  57. /package/dist/{link-replacer.d.ts → types/link-replacer.d.ts} +0 -0
  58. /package/dist/{loaders → types/loaders}/playwright.d.ts +0 -0
  59. /package/dist/{md-splitter.d.ts → types/md-splitter.d.ts} +0 -0
  60. /package/dist/{mdast-handlers → types/mdast-handlers}/custom-div-handler.d.ts +0 -0
  61. /package/dist/{mdast-handlers → types/mdast-handlers}/math-handler.d.ts +0 -0
  62. /package/dist/{mdast-to-markdown.d.ts → types/mdast-to-markdown.d.ts} +0 -0
  63. /package/dist/{utils → types/utils}/common.d.ts +0 -0
  64. /package/dist/{utils → types/utils}/mdast-utils.d.ts +0 -0
@@ -1,22 +1,24 @@
1
- import * as playwright from "playwright";
2
- const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
3
- export const loadHtml = async (url, context) => {
4
- let _browser = null;
5
- let _context;
6
- if (!context) {
7
- _browser = await playwright.chromium.launch();
8
- _context = await _browser.newContext();
9
- }
10
- else {
11
- _context = context;
12
- }
13
- const page = await _context.newPage();
14
- await page.goto(url);
15
- await Promise.race([page.waitForLoadState("networkidle"), sleep(10000)]);
16
- const html = await page.content();
17
- await page.close();
18
- if (_browser)
19
- await _browser.close();
20
- return html;
1
+ // src/loaders/playwright.ts
2
+ import * as playwright from "playwright.js";
3
+ var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
4
+ var loadHtml = async (url, context) => {
5
+ let _browser = null;
6
+ let _context;
7
+ if (!context) {
8
+ _browser = await playwright.chromium.launch();
9
+ _context = await _browser.newContext();
10
+ } else {
11
+ _context = context;
12
+ }
13
+ const page = await _context.newPage();
14
+ await page.goto(url);
15
+ await Promise.race([page.waitForLoadState("networkidle"), sleep(1e4)]);
16
+ const html = await page.content();
17
+ await page.close();
18
+ if (_browser)
19
+ await _browser.close();
20
+ return html;
21
+ };
22
+ export {
23
+ loadHtml
21
24
  };
22
- //# sourceMappingURL=playwright.js.map
@@ -1,30 +1,31 @@
1
- import { mdastToMarkdown } from "./mdast-to-markdown";
2
- import { chunk } from "./utils/common";
3
- import { internalType, unwarpRoot, warpRoot } from "./utils/mdast-utils";
4
- const PRIORITY_SPLITTERS = ["h1", "h2", "h3", "h4", "h5", "h6", "list", "table", "code"];
5
- const getSplitterGenerator = function* () {
6
- for (const splitter of PRIORITY_SPLITTERS)
7
- yield splitter;
1
+ // src/md-splitter.ts
2
+ import { mdastToMarkdown } from "./mdast-to-markdown.js";
3
+ import { chunk } from "./utils/common.js";
4
+ import { internalType, unwarpRoot, warpRoot } from "./utils/mdast-utils.js";
5
+ var PRIORITY_SPLITTERS = ["h1", "h2", "h3", "h4", "h5", "h6", "list", "table", "code"];
6
+ var getSplitterGenerator = function* () {
7
+ for (const splitter of PRIORITY_SPLITTERS)
8
+ yield splitter;
8
9
  };
9
- const _mdastSplitter = async (contents, checker, splitterGenerator) => {
10
- const markdown = mdastToMarkdown(warpRoot(contents));
11
- if ((await checker(markdown)) || 3 > contents.length)
12
- return [contents];
13
- const splitter = splitterGenerator.next().value;
14
- const chunked = splitter
15
- ? contents.reduce((acc, content) => {
16
- if (internalType(content) === splitter || acc.length === 0) {
17
- acc.push([content]);
18
- return acc;
19
- }
20
- acc[acc.length - 1].push(content);
21
- return acc;
22
- }, [])
23
- : chunk(contents, 3);
24
- const splitting = chunked.map((chunk) => _mdastSplitter(chunk, checker, splitterGenerator));
25
- return Promise.all(splitting).then((chunks) => chunks.flat());
10
+ var _mdastSplitter = async (contents, checker, splitterGenerator) => {
11
+ const markdown = mdastToMarkdown(warpRoot(contents));
12
+ if (await checker(markdown) || 3 > contents.length)
13
+ return [contents];
14
+ const splitter = splitterGenerator.next().value;
15
+ const chunked = splitter ? contents.reduce((acc, content) => {
16
+ if (internalType(content) === splitter || acc.length === 0) {
17
+ acc.push([content]);
18
+ return acc;
19
+ }
20
+ acc[acc.length - 1].push(content);
21
+ return acc;
22
+ }, []) : chunk(contents, 3);
23
+ const splitting = chunked.map((chunk2) => _mdastSplitter(chunk2, checker, splitterGenerator));
24
+ return Promise.all(splitting).then((chunks) => chunks.flat());
26
25
  };
27
- export const mdastSplitter = async (mdast, checker, options) => {
28
- return _mdastSplitter(unwarpRoot(mdast), checker, getSplitterGenerator());
26
+ var mdastSplitter = async (mdast, checker, options) => {
27
+ return _mdastSplitter(unwarpRoot(mdast), checker, getSplitterGenerator());
28
+ };
29
+ export {
30
+ mdastSplitter
29
31
  };
30
- //# sourceMappingURL=md-splitter.js.map
@@ -1,42 +1,42 @@
1
+ // src/mdast-handlers/custom-div-handler.ts
1
2
  import { defaultHandlers } from "hast-util-to-mdast";
2
3
  import { toText } from "hast-util-to-text";
3
4
  import { trimTrailingLines } from "trim-trailing-lines";
4
- export const customDivHandler = (state, node) => {
5
- const classNames = Array.isArray(node.properties.className) ? node.properties.className : [];
6
- let highlightLanguage;
7
- for (const className of classNames) {
8
- if (String(className) === "highlight-text-html-basic") {
9
- highlightLanguage = "html";
10
- break;
11
- }
12
- else if (String(className).includes("highlight-source-")) {
13
- highlightLanguage = String(className).slice("highlight-source-".length);
14
- break;
15
- }
16
- else if (String(className).includes("language-")) {
17
- highlightLanguage = String(className).slice("language-".length);
18
- break;
19
- }
20
- else if (String(className).includes("code-block_wrapper")) {
21
- const text = toText(node);
22
- if (!text.includes("."))
23
- break;
24
- const lang = toText(node).split("\n")[0].split(".").slice(-1)[0];
25
- highlightLanguage = lang;
26
- break;
27
- }
5
+ var customDivHandler = (state, node) => {
6
+ const classNames = Array.isArray(node.properties.className) ? node.properties.className : [];
7
+ let highlightLanguage;
8
+ for (const className of classNames) {
9
+ if (String(className) === "highlight-text-html-basic") {
10
+ highlightLanguage = "html";
11
+ break;
12
+ } else if (String(className).includes("highlight-source-")) {
13
+ highlightLanguage = String(className).slice("highlight-source-".length);
14
+ break;
15
+ } else if (String(className).includes("language-")) {
16
+ highlightLanguage = String(className).slice("language-".length);
17
+ break;
18
+ } else if (String(className).includes("code-block_wrapper")) {
19
+ const text = toText(node);
20
+ if (!text.includes("."))
21
+ break;
22
+ const lang = toText(node).split("\n")[0].split(".").slice(-1)[0];
23
+ highlightLanguage = lang;
24
+ break;
28
25
  }
29
- if (highlightLanguage !== undefined) {
30
- const code = node.children.find((child) => child.type === "element" && child.tagName === "pre") || node;
31
- const result = {
32
- type: "code",
33
- lang: highlightLanguage,
34
- meta: null,
35
- value: trimTrailingLines(toText(code)).trim(),
36
- };
37
- state.patch(node, result);
38
- return result;
39
- }
40
- return defaultHandlers.div(state, node);
26
+ }
27
+ if (highlightLanguage !== void 0) {
28
+ const code = node.children.find((child) => child.type === "element" && child.tagName === "pre") || node;
29
+ const result = {
30
+ type: "code",
31
+ lang: highlightLanguage,
32
+ meta: null,
33
+ value: trimTrailingLines(toText(code)).trim()
34
+ };
35
+ state.patch(node, result);
36
+ return result;
37
+ }
38
+ return defaultHandlers.div(state, node);
39
+ };
40
+ export {
41
+ customDivHandler
41
42
  };
42
- //# sourceMappingURL=custom-div-handler.js.map
@@ -1,10 +1,13 @@
1
+ // src/mdast-handlers/math-handler.ts
1
2
  import { toHtml } from "hast-util-to-html";
2
3
  import { MathMLToLaTeX } from "mathml-to-latex";
3
- export const mathHandler = (state, node) => {
4
- const mathMl = toHtml(node);
5
- const latex = MathMLToLaTeX.convert(mathMl);
6
- const result = { type: "inlineMath", value: latex };
7
- state.patch(node, result);
8
- return result;
4
+ var mathHandler = (state, node) => {
5
+ const mathMl = toHtml(node);
6
+ const latex = MathMLToLaTeX.convert(mathMl);
7
+ const result = { type: "inlineMath", value: latex };
8
+ state.patch(node, result);
9
+ return result;
10
+ };
11
+ export {
12
+ mathHandler
9
13
  };
10
- //# sourceMappingURL=math-handler.js.map
@@ -1,14 +1,17 @@
1
+ // src/mdast-to-markdown.ts
1
2
  import { gfmToMarkdown } from "mdast-util-gfm";
2
3
  import { mathToMarkdown } from "mdast-util-math";
3
4
  import { toMarkdown } from "mdast-util-to-markdown";
4
- import { linkReplacer } from "./link-replacer";
5
- import { warpRoot } from "./utils/mdast-utils";
6
- export const mdastToMarkdown = (mdast, options) => {
7
- let markdown = toMarkdown(warpRoot(mdast), {
8
- extensions: [gfmToMarkdown(), mathToMarkdown()],
9
- });
10
- if (options?.solveLinks)
11
- markdown = linkReplacer(markdown, options.solveLinks);
12
- return markdown;
5
+ import { linkReplacer } from "./link-replacer.js";
6
+ import { warpRoot } from "./utils/mdast-utils.js";
7
+ var mdastToMarkdown = (mdast, options) => {
8
+ let markdown = toMarkdown(warpRoot(mdast), {
9
+ extensions: [gfmToMarkdown(), mathToMarkdown()]
10
+ });
11
+ if (options?.solveLinks)
12
+ markdown = linkReplacer(markdown, options.solveLinks);
13
+ return markdown;
14
+ };
15
+ export {
16
+ mdastToMarkdown
13
17
  };
14
- //# sourceMappingURL=mdast-to-markdown.js.map
@@ -0,0 +1,2 @@
1
+ import type { Root as Hast } from "hast";
2
+ export declare const extractHast: (hast: Hast) => import("hast").Element | Hast;
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -1,10 +1,13 @@
1
- export const chunk = (array, size) => {
2
- return array.reduce((acc, _, index) => {
3
- if (index % size === 0) {
4
- acc.push(array.slice(index, index + size));
5
- return acc;
6
- }
7
- return acc;
8
- }, []);
1
+ // src/utils/common.ts
2
+ var chunk = (array, size) => {
3
+ return array.reduce((acc, _, index) => {
4
+ if (index % size === 0) {
5
+ acc.push(array.slice(index, index + size));
6
+ return acc;
7
+ }
8
+ return acc;
9
+ }, []);
10
+ };
11
+ export {
12
+ chunk
9
13
  };
10
- //# sourceMappingURL=common.js.map
@@ -1,16 +1,21 @@
1
- export const unwarpRoot = (mdast) => {
2
- if (mdast.type === "root")
3
- return mdast.children;
4
- return [mdast];
1
+ // src/utils/mdast-utils.ts
2
+ var unwarpRoot = (mdast) => {
3
+ if (mdast.type === "root")
4
+ return mdast.children;
5
+ return [mdast];
5
6
  };
6
- export const warpRoot = (mdast) => {
7
- if (Array.isArray(mdast))
8
- return { type: "root", children: mdast };
9
- return mdast;
7
+ var warpRoot = (mdast) => {
8
+ if (Array.isArray(mdast))
9
+ return { type: "root", children: mdast };
10
+ return mdast;
10
11
  };
11
- export const internalType = (content) => {
12
- if (content.type === "heading")
13
- return `h${content.depth}`;
14
- return content.type;
12
+ var internalType = (content) => {
13
+ if (content.type === "heading")
14
+ return `h${content.depth}`;
15
+ return content.type;
16
+ };
17
+ export {
18
+ internalType,
19
+ unwarpRoot,
20
+ warpRoot
15
21
  };
16
- //# sourceMappingURL=mdast-utils.js.map
package/package.json CHANGED
@@ -1,10 +1,9 @@
1
1
  {
2
2
  "name": "webforai",
3
- "version": "0.0.16",
3
+ "version": "0.0.19",
4
4
  "description": "A library that provides a web interface for AI",
5
5
  "author": "inaridiy",
6
6
  "license": "MIT",
7
- "type": "module",
8
7
  "keywords": [
9
8
  "web",
10
9
  "ai",
@@ -19,24 +18,48 @@
19
18
  "url": "https://github.com/inaridiy/webforai.git"
20
19
  },
21
20
  "homepage": "https://github.com/inaridiy/webforai.git",
21
+ "scripts": {
22
+ "copy:package.cjs.json": "pnpm ncp ./package.cjs.json ./dist/cjs/package.json && pnpm ncp ./package.cjs.json ./dist/types/package.json ",
23
+ "clean": "rimraf dist",
24
+ "build": "pnpm clean && tsx ./build.ts && pnpm copy:package.cjs.json",
25
+ "test": "echo \"Error: no test specified\"",
26
+ "format": "biome format . --write",
27
+ "lint": "biome check .",
28
+ "prerelease": "pnpm build",
29
+ "release": "np"
30
+ },
22
31
  "files": [
23
- "dist",
24
- "!dist/**/*.tsbuildinfo",
25
- "src/**/*.ts",
26
- "!src/**/*.test.ts",
27
- "!src/**/*.test-d.ts",
28
- "!src/**/*.bench.ts"
32
+ "dist"
29
33
  ],
30
- "main": "./dist/index.js",
31
- "types": "./dist/index.d.ts",
34
+ "main": "dist/cjs/index.js",
35
+ "type": "module",
36
+ "module": "dist/index.js",
37
+ "types": "dist/types/index.d.ts",
32
38
  "exports": {
33
39
  ".": {
34
- "types": "./dist/index.d.ts",
35
- "default": "./dist/index.js"
40
+ "types": "./dist/types/index.d.ts",
41
+ "import": "./dist/index.js",
42
+ "require": "./dist/cjs/index.js"
43
+ },
44
+ "./types": {
45
+ "types": "./dist/types/index.d.ts",
46
+ "import": "./dist/index.js",
47
+ "require": "./dist/cjs/index.js"
36
48
  },
37
49
  "./loaders/playwright": {
38
- "types": "./dist/loaders/playwright.d.ts",
39
- "default": "./dist/loaders/playwright.js"
50
+ "types": "./dist/types/loaders/playwright.d.ts",
51
+ "import": "./dist/loaders/playwright.js",
52
+ "require": "./dist/cjs/loaders/playwright.js"
53
+ }
54
+ },
55
+ "typesVersions": {
56
+ "*": {
57
+ "types": [
58
+ "./dist/types/index.d.ts"
59
+ ],
60
+ "loaders/playwright": [
61
+ "./dist/types/loaders/playwright.d.ts"
62
+ ]
40
63
  }
41
64
  },
42
65
  "peerDependencies": {
@@ -66,14 +89,14 @@
66
89
  "@tsconfig/recommended": "^1.0.3",
67
90
  "@types/hast": "^3.0.2",
68
91
  "@types/mdast": "^4.0.2",
92
+ "@types/node": "^20.11.0",
93
+ "arg": "^5.0.2",
94
+ "esbuild": "^0.19.11",
95
+ "glob": "^10.3.10",
96
+ "ncp": "^2.0.0",
97
+ "np": "^9.2.0",
69
98
  "rimraf": "^5.0.5",
99
+ "tsx": "^4.7.0",
70
100
  "typescript": "^5.2.2"
71
- },
72
- "scripts": {
73
- "clean": "rimraf dist",
74
- "build": "pnpm run clean && tsc --module es2015",
75
- "test": "echo \"Error: no test specified\" && exit 1",
76
- "format": "biome format . --write",
77
- "lint": "biome check ."
78
101
  }
79
- }
102
+ }
@@ -1,2 +0,0 @@
1
- import type { Root as Hast } from "hast";
2
- export declare const extractHast: (hast: Hast) => Hast | import("hast").Element;
@@ -1 +0,0 @@
1
- {"version":3,"file":"extract-hast.js","sourceRoot":"","sources":["../src/extract-hast.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAU,EAAE,EAAE;IACzC,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC;IAExE,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE;QACvC,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC/C,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;YAChC,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SACzD;KACD;IAED,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;IACtE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;QACjC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;KAC5B;IAED,OAAO,IAAI,CAAC;AACb,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"html-to-markdown.js","sourceRoot":"","sources":["../src/html-to-markdown.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAOtD,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 +0,0 @@
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,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAM5D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,OAA4B,EAAS,EAAE;IAChF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3F,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,EAAE;QACpC,QAAQ,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE;KACpE,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACd,CAAC,CAAC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"link-replacer.js","sourceRoot":"","sources":["../src/link-replacer.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,IAAY,EAAE,EAAE;IAC9D,MAAM,KAAK,GAAG,yBAAyB,CAAC;IACxC,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC5D,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACxE,OAAO,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"playwright.js","sourceRoot":"","sources":["../../src/loaders/playwright.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAEzC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,GAAW,EAAE,OAAmC,EAAE,EAAE;IAClF,IAAI,QAAQ,GAA8B,IAAI,CAAC;IAC/C,IAAI,QAAmC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE;QACb,QAAQ,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC9C,QAAQ,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;KACvC;SAAM;QACN,QAAQ,GAAG,OAAO,CAAC;KACnB;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;IACtC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IAClC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACnB,IAAI,QAAQ;QAAE,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;IACrC,OAAO,IAAI,CAAC;AACb,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"md-splitter.js","sourceRoot":"","sources":["../src/md-splitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEzE,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAEzF,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IACrC,KAAK,MAAM,QAAQ,IAAI,kBAAkB;QAAE,MAAM,QAAQ,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,KAAK,EAC3B,QAAuB,EACvB,OAA+C,EAC/C,iBAAoC,EACT,EAAE;IAC7B,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM;QAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;IAEhD,MAAM,OAAO,GAAG,QAAQ;QACvB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;YAClD,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC3D,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBACpB,OAAO,GAAG,CAAC;aACX;YACD,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,OAAO,GAAG,CAAC;QACX,CAAC,EAAE,EAAE,CAAC;QACR,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAEtB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAE5F,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EACjC,KAAY,EACZ,OAA+C,EAC/C,OAAkC,EACP,EAAE;IAC7B,OAAO,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAC3E,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"custom-div-handler.js","sourceRoot":"","sources":["../../src/mdast-handlers/custom-div-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,CAAC,MAAM,gBAAgB,GAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACvD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7F,IAAI,iBAAqC,CAAC;IAC1C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;QACnC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,2BAA2B,EAAE;YACtD,iBAAiB,GAAG,MAAM,CAAC;YAC3B,MAAM;SACN;aAAM,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;YAC3D,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACxE,MAAM;SACN;aAAM,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACnD,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAChE,MAAM;SACN;aAAM,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;YAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,MAAM;YAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,iBAAiB,GAAG,IAAI,CAAC;YACzB,MAAM;SACN;KACD;IAED,IAAI,iBAAiB,KAAK,SAAS,EAAE;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC;QAExG,MAAM,MAAM,GAAS;YACpB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;SAC7C,CAAC;QACF,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1B,OAAO,MAAM,CAAC;KACd;IAED,OAAO,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"math-handler.js","sourceRoot":"","sources":["../../src/mdast-handlers/math-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,MAAM,CAAC,MAAM,WAAW,GAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IAClD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAwB,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACzE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1B,OAAO,MAAM,CAAC;AACf,CAAC,CAAC"}
@@ -1 +0,0 @@
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,OAAiC,EAAU,EAAE;IAC1G,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,UAAU;QAAE,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAE/E,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/utils/common.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAI,KAAU,EAAE,IAAY,EAAS,EAAE;IAC3D,OAAO,KAAK,CAAC,MAAM,CAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;QAC5C,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE;YACvB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;YAC3C,OAAO,GAAG,CAAC;SACX;QACD,OAAO,GAAG,CAAC;IACZ,CAAC,EAAE,EAAE,CAAC,CAAC;AACR,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mdast-utils.js","sourceRoot":"","sources":["../../src/utils/mdast-utils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAY,EAAiB,EAAE;IACzD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC,QAAQ,CAAC;IACjD,OAAO,CAAC,KAAK,CAAC,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAA4B,EAAS,EAAE;IAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACnE,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAoB,EAAU,EAAE;IAC5D,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAC3D,OAAO,OAAO,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC"}
@@ -1,23 +0,0 @@
1
- import type { Root as Hast } from "hast";
2
- import { select, selectAll } from "hast-util-select";
3
-
4
- import { remove } from "unist-util-remove";
5
-
6
- export const extractHast = (hast: Hast) => {
7
- const removeSelectors = ["header", "footer", "nav", "speechify-ignore"];
8
-
9
- for (const selector of removeSelectors) {
10
- const matchedNodes = selectAll(selector, hast);
11
- for (const node of matchedNodes) {
12
- remove(hast, { type: node.type, tagName: node.tagName });
13
- }
14
- }
15
-
16
- const selectors = ["article", "div#article", "main", "div.container"];
17
- for (const selector of selectors) {
18
- const element = select(selector, hast);
19
- if (element) return element;
20
- }
21
-
22
- return hast;
23
- };
@@ -1,14 +0,0 @@
1
- import type { Root as Hast } from "hast";
2
- import { htmlToMdast } from "./html-to-mdast";
3
- import { mdastToMarkdown } from "./mdast-to-markdown";
4
-
5
- export interface HtmlToMarkdownOptions {
6
- extractHast?: false | ((hast: Hast) => Hast);
7
- solveLinks?: string;
8
- }
9
-
10
- export const htmlToMarkdown = (html: string, options?: HtmlToMarkdownOptions): string => {
11
- const mdast = htmlToMdast(html, options);
12
- const markdown = mdastToMarkdown(mdast, options);
13
- return markdown;
14
- };
@@ -1,23 +0,0 @@
1
- import type { Root as Hast } from "hast";
2
- import type { Nodes as Mdast } from "mdast";
3
-
4
- import { fromHtml } from "hast-util-from-html";
5
- import { toMdast } from "hast-util-to-mdast";
6
-
7
- import { extractHast } from "./extract-hast";
8
- import { customDivHandler } from "./mdast-handlers/custom-div-handler";
9
- import { mathHandler } from "./mdast-handlers/math-handler";
10
-
11
- export type HtmlToMdastOptions = {
12
- extractHast?: false | ((hast: Hast) => Hast);
13
- };
14
-
15
- export const htmlToMdast = (html: string, options?: HtmlToMdastOptions): Mdast => {
16
- const hast = fromHtml(html, { fragment: true });
17
- const extractedHast = options?.extractHast ? options.extractHast(hast) : extractHast(hast);
18
- const mdast = toMdast(extractedHast, {
19
- handlers: { div: customDivHandler, math: mathHandler, br: () => {} },
20
- });
21
-
22
- return mdast;
23
- };
package/src/index.ts DELETED
@@ -1,4 +0,0 @@
1
- export * from "./html-to-markdown";
2
- export * from "./md-splitter";
3
- export * from "./html-to-mdast";
4
- export * from "./mdast-to-markdown";
@@ -1,7 +0,0 @@
1
- export const linkReplacer = (markdown: string, link: string) => {
2
- const regex = /(!?\[.*?\]\()(.+?)(\))/g;
3
- return markdown.replace(regex, (match, pre, thisUrl, post) => {
4
- if (thisUrl.startsWith("http") || thisUrl.startsWith("#")) return match;
5
- return `${pre}${new URL(thisUrl, link).href}${post}`;
6
- });
7
- };
@@ -1,22 +0,0 @@
1
- import * as playwright from "playwright";
2
-
3
- const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
4
-
5
- export const loadHtml = async (url: string, context?: playwright.BrowserContext) => {
6
- let _browser: playwright.Browser | null = null;
7
- let _context: playwright.BrowserContext;
8
- if (!context) {
9
- _browser = await playwright.chromium.launch();
10
- _context = await _browser.newContext();
11
- } else {
12
- _context = context;
13
- }
14
-
15
- const page = await _context.newPage();
16
- await page.goto(url);
17
- await Promise.race([page.waitForLoadState("networkidle"), sleep(10000)]);
18
- const html = await page.content();
19
- await page.close();
20
- if (_browser) await _browser.close();
21
- return html;
22
- };
@@ -1,43 +0,0 @@
1
- import type { Nodes as Mdast, RootContent } from "mdast";
2
- import { mdastToMarkdown } from "./mdast-to-markdown";
3
- import { chunk } from "./utils/common";
4
- import { internalType, unwarpRoot, warpRoot } from "./utils/mdast-utils";
5
-
6
- const PRIORITY_SPLITTERS = ["h1", "h2", "h3", "h4", "h5", "h6", "list", "table", "code"];
7
- type SplitterGenerator = Generator<string, void, unknown>;
8
- const getSplitterGenerator = function* () {
9
- for (const splitter of PRIORITY_SPLITTERS) yield splitter;
10
- };
11
-
12
- const _mdastSplitter = async (
13
- contents: RootContent[],
14
- checker: (markdown: string) => Promise<boolean>,
15
- splitterGenerator: SplitterGenerator,
16
- ): Promise<RootContent[][]> => {
17
- const markdown = mdastToMarkdown(warpRoot(contents));
18
- if ((await checker(markdown)) || 3 > contents.length) return [contents];
19
- const splitter = splitterGenerator.next().value;
20
-
21
- const chunked = splitter
22
- ? contents.reduce<RootContent[][]>((acc, content) => {
23
- if (internalType(content) === splitter || acc.length === 0) {
24
- acc.push([content]);
25
- return acc;
26
- }
27
- acc[acc.length - 1].push(content);
28
- return acc;
29
- }, [])
30
- : chunk(contents, 3);
31
-
32
- const splitting = chunked.map((chunk) => _mdastSplitter(chunk, checker, splitterGenerator));
33
-
34
- return Promise.all(splitting).then((chunks) => chunks.flat());
35
- };
36
-
37
- export const mdastSplitter = async (
38
- mdast: Mdast,
39
- checker: (markdown: string) => Promise<boolean>,
40
- options?: { signal?: AbortSignal }, //TODO
41
- ): Promise<RootContent[][]> => {
42
- return _mdastSplitter(unwarpRoot(mdast), checker, getSplitterGenerator());
43
- };