webforai 0.0.17 → 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.
- package/dist/cjs/extract-hast.js +45 -0
- package/dist/cjs/html-to-markdown.js +34 -0
- package/dist/cjs/html-to-mdast.js +41 -0
- package/dist/cjs/index.js +28 -0
- package/dist/cjs/link-replacer.js +35 -0
- package/dist/cjs/loaders/playwright.js +57 -0
- package/dist/cjs/md-splitter.js +54 -0
- package/dist/cjs/mdast-handlers/custom-div-handler.js +65 -0
- package/dist/cjs/mdast-handlers/math-handler.js +36 -0
- package/dist/cjs/mdast-to-markdown.js +40 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/utils/common.js +36 -0
- package/dist/cjs/utils/mdast-utils.js +46 -0
- package/dist/extract-hast.js +18 -15
- package/dist/html-to-markdown.js +10 -7
- package/dist/html-to-mdast.js +15 -11
- package/dist/index.js +5 -5
- package/dist/link-replacer.js +11 -8
- package/dist/loaders/playwright.js +23 -21
- package/dist/md-splitter.js +28 -27
- package/dist/mdast-handlers/custom-div-handler.js +37 -37
- package/dist/mdast-handlers/math-handler.js +10 -7
- package/dist/mdast-to-markdown.js +13 -10
- package/dist/types/extract-hast.d.ts +2 -0
- package/dist/types/package.json +3 -0
- package/dist/utils/common.js +12 -9
- package/dist/utils/mdast-utils.js +18 -13
- package/package.json +45 -22
- package/dist/extract-hast.d.ts +0 -2
- package/dist/extract-hast.js.map +0 -1
- package/dist/html-to-markdown.js.map +0 -1
- package/dist/html-to-mdast.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/link-replacer.js.map +0 -1
- package/dist/loaders/playwright.js.map +0 -1
- package/dist/md-splitter.js.map +0 -1
- package/dist/mdast-handlers/custom-div-handler.js.map +0 -1
- package/dist/mdast-handlers/math-handler.js.map +0 -1
- package/dist/mdast-to-markdown.js.map +0 -1
- package/dist/utils/common.js.map +0 -1
- package/dist/utils/mdast-utils.js.map +0 -1
- package/src/extract-hast.ts +0 -23
- package/src/html-to-markdown.ts +0 -14
- package/src/html-to-mdast.ts +0 -23
- package/src/index.ts +0 -4
- package/src/link-replacer.ts +0 -7
- package/src/loaders/playwright.ts +0 -22
- package/src/md-splitter.ts +0 -43
- package/src/mdast-handlers/custom-div-handler.ts +0 -43
- package/src/mdast-handlers/math-handler.ts +0 -12
- package/src/mdast-to-markdown.ts +0 -18
- package/src/utils/common.ts +0 -9
- package/src/utils/mdast-utils.ts +0 -16
- /package/dist/{html-to-markdown.d.ts → types/html-to-markdown.d.ts} +0 -0
- /package/dist/{html-to-mdast.d.ts → types/html-to-mdast.d.ts} +0 -0
- /package/dist/{index.d.ts → types/index.d.ts} +0 -0
- /package/dist/{link-replacer.d.ts → types/link-replacer.d.ts} +0 -0
- /package/dist/{loaders → types/loaders}/playwright.d.ts +0 -0
- /package/dist/{md-splitter.d.ts → types/md-splitter.d.ts} +0 -0
- /package/dist/{mdast-handlers → types/mdast-handlers}/custom-div-handler.d.ts +0 -0
- /package/dist/{mdast-handlers → types/mdast-handlers}/math-handler.d.ts +0 -0
- /package/dist/{mdast-to-markdown.d.ts → types/mdast-to-markdown.d.ts} +0 -0
- /package/dist/{utils → types/utils}/common.d.ts +0 -0
- /package/dist/{utils → types/utils}/mdast-utils.d.ts +0 -0
|
@@ -1,22 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
package/dist/md-splitter.js
CHANGED
|
@@ -1,30 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
28
|
-
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
package/dist/utils/common.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
return
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
var warpRoot = (mdast) => {
|
|
8
|
+
if (Array.isArray(mdast))
|
|
9
|
+
return { type: "root", children: mdast };
|
|
10
|
+
return mdast;
|
|
10
11
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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.
|
|
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": "
|
|
31
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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",
|
|
75
|
-
"test": "echo \"Error: no test specified\" && exit 1",
|
|
76
|
-
"format": "biome format . --write",
|
|
77
|
-
"lint": "biome check ."
|
|
78
101
|
}
|
|
79
|
-
}
|
|
102
|
+
}
|
package/dist/extract-hast.d.ts
DELETED
package/dist/extract-hast.js.map
DELETED
|
@@ -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"}
|
package/dist/md-splitter.js.map
DELETED
|
@@ -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"}
|
package/dist/utils/common.js.map
DELETED
|
@@ -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"}
|
package/src/extract-hast.ts
DELETED
|
@@ -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
|
-
};
|
package/src/html-to-markdown.ts
DELETED
|
@@ -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
|
-
};
|
package/src/html-to-mdast.ts
DELETED
|
@@ -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
package/src/link-replacer.ts
DELETED
|
@@ -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
|
-
};
|
package/src/md-splitter.ts
DELETED
|
@@ -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
|
-
};
|