webforai 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dist/bin.js +972 -213
  2. package/dist/cjs/cli/bin.js +33 -0
  3. package/dist/cjs/cli/commands/webforai/index.js +86 -0
  4. package/dist/cjs/cli/commands/webforai/loadHtml.js +93 -0
  5. package/dist/cjs/cli/constants.js +34 -0
  6. package/dist/cjs/cli/helpers/assertContinue.js +34 -0
  7. package/dist/cjs/cli/helpers/inputOutputPath.js +89 -0
  8. package/dist/cjs/cli/helpers/inputSourcePath.js +64 -0
  9. package/dist/cjs/cli/helpers/selectExtractMode.js +39 -0
  10. package/dist/cjs/cli/helpers/selectLoader.js +44 -0
  11. package/dist/cjs/cli/utils.js +89 -0
  12. package/dist/cjs/extract-hast/index.js +4 -3
  13. package/dist/cjs/extract-hast/readability.js +28 -61
  14. package/dist/cjs/extract-hast/strongly.js +2 -1
  15. package/dist/cjs/extract-hast/utils.js +0 -15
  16. package/dist/cjs/html-to-mdast.js +6 -6
  17. package/dist/cjs/link-replacer.js +10 -5
  18. package/dist/cjs/loaders/playwright.js +36 -7
  19. package/dist/cjs/mdast-handlers/custom-br-handler.js +31 -0
  20. package/dist/cjs/mdast-to-markdown.js +1 -1
  21. package/dist/cjs/utils/hast-utils.js +71 -0
  22. package/dist/cli/bin.js +11 -0
  23. package/dist/cli/commands/webforai/index.js +53 -0
  24. package/dist/cli/commands/webforai/loadHtml.js +60 -0
  25. package/dist/cli/constants.js +9 -0
  26. package/dist/cli/helpers/assertContinue.js +11 -0
  27. package/dist/cli/helpers/inputOutputPath.js +56 -0
  28. package/dist/cli/helpers/inputSourcePath.js +31 -0
  29. package/dist/cli/helpers/selectExtractMode.js +16 -0
  30. package/dist/cli/helpers/selectLoader.js +21 -0
  31. package/dist/cli/utils.js +52 -0
  32. package/dist/extract-hast/index.js +4 -3
  33. package/dist/extract-hast/readability.js +29 -62
  34. package/dist/extract-hast/strongly.js +2 -1
  35. package/dist/extract-hast/utils.js +0 -14
  36. package/dist/html-to-mdast.js +6 -6
  37. package/dist/link-replacer.js +10 -5
  38. package/dist/loaders/playwright.js +36 -7
  39. package/dist/mdast-handlers/custom-br-handler.js +8 -0
  40. package/dist/mdast-to-markdown.js +1 -1
  41. package/dist/types/cli/bin.js.map +1 -0
  42. package/dist/types/cli/commands/webforai/index.d.ts +6 -0
  43. package/dist/types/cli/commands/webforai/index.js.map +1 -0
  44. package/dist/types/cli/commands/webforai/loadHtml.d.ts +3 -0
  45. package/dist/types/cli/commands/webforai/loadHtml.js.map +1 -0
  46. package/dist/types/cli/constants.d.ts +5 -0
  47. package/dist/types/cli/constants.js.map +1 -0
  48. package/dist/types/cli/helpers/assertContinue.d.ts +1 -0
  49. package/dist/types/cli/helpers/assertContinue.js.map +1 -0
  50. package/dist/types/cli/helpers/inputOutputPath.d.ts +1 -0
  51. package/dist/types/cli/helpers/inputOutputPath.js.map +1 -0
  52. package/dist/types/cli/helpers/inputSourcePath.d.ts +1 -0
  53. package/dist/types/cli/helpers/inputSourcePath.js.map +1 -0
  54. package/dist/types/cli/helpers/selectExtractMode.d.ts +1 -0
  55. package/dist/types/cli/helpers/selectExtractMode.js.map +1 -0
  56. package/dist/types/cli/helpers/selectLoader.d.ts +1 -0
  57. package/dist/types/cli/helpers/selectLoader.js.map +1 -0
  58. package/dist/types/cli/utils.d.ts +32 -0
  59. package/dist/types/cli/utils.js.map +1 -0
  60. package/dist/types/extract-hast/index.d.ts +9 -4
  61. package/dist/types/extract-hast/index.js.map +1 -1
  62. package/dist/types/extract-hast/readability.d.ts +2 -1
  63. package/dist/types/extract-hast/readability.js.map +1 -1
  64. package/dist/types/extract-hast/strongly.d.ts +2 -1
  65. package/dist/types/extract-hast/strongly.js.map +1 -1
  66. package/dist/types/extract-hast/utils.d.ts +0 -1
  67. package/dist/types/extract-hast/utils.js.map +1 -1
  68. package/dist/types/html-to-mdast.d.ts +4 -0
  69. package/dist/types/html-to-mdast.js.map +1 -1
  70. package/dist/types/link-replacer.d.ts +1 -1
  71. package/dist/types/link-replacer.js.map +1 -1
  72. package/dist/types/loaders/playwright.d.ts +8 -2
  73. package/dist/types/loaders/playwright.js.map +1 -1
  74. package/dist/types/mdast-handlers/custom-br-handler.d.ts +2 -0
  75. package/dist/types/mdast-handlers/custom-br-handler.js.map +1 -0
  76. package/dist/types/mdast-to-markdown.js.map +1 -1
  77. package/dist/types/utils/hast-utils.d.ts +4 -0
  78. package/dist/types/utils/hast-utils.js.map +1 -0
  79. package/dist/utils/hast-utils.js +46 -0
  80. package/package.json +18 -17
  81. package/dist/cjs/bin.js +0 -254
  82. package/dist/cjs/html-to-markdown.test.js +0 -146
  83. package/dist/cjs/link-replacer.test.js +0 -47
  84. package/dist/cjs/loaders/fetch.test.js +0 -9
  85. package/dist/cjs/loaders/playwright.test.js +0 -17
  86. package/dist/cjs/loaders/puppeteer.test.js +0 -17
  87. package/dist/cjs/utils/bin-utils.js +0 -124
  88. package/dist/html-to-markdown.test.js +0 -124
  89. package/dist/link-replacer.test.js +0 -47
  90. package/dist/loaders/fetch.test.js +0 -9
  91. package/dist/loaders/playwright.test.js +0 -17
  92. package/dist/loaders/puppeteer.test.js +0 -17
  93. package/dist/types/bin.js.map +0 -1
  94. package/dist/types/utils/bin-utils.d.ts +0 -5
  95. package/dist/types/utils/bin-utils.js.map +0 -1
  96. package/dist/utils/bin-utils.js +0 -87
  97. /package/dist/types/{bin.d.ts → cli/bin.d.ts} +0 -0
@@ -1,146 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __copyProps = (to, from, except, desc) => {
9
- if (from && typeof from === "object" || typeof from === "function") {
10
- for (let key of __getOwnPropNames(from))
11
- if (!__hasOwnProp.call(to, key) && key !== except)
12
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
- }
14
- return to;
15
- };
16
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
- // If the importer is in node compatibility mode or this is not an ESM
18
- // file that has been converted to a CommonJS file using a Babel-
19
- // compatible transform (i.e. "__esModule" has not been set), then set
20
- // "default" to the CommonJS "module.exports" for node compatibility.
21
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
- mod
23
- ));
24
- var import_fastest_levenshtein = require("fastest-levenshtein");
25
- var import_vitest = require("vitest");
26
- var import_html_to_markdown = require("./html-to-markdown");
27
- var import_fetch = require("./loaders/fetch");
28
- const html = `
29
- <h1>Hello, world!</h1>
30
- <p>This is a paragraph.</p>
31
- <a href="/example.html">Example</a>
32
- <img src="/example.jpg" alt="Example" />
33
- <ul>
34
- <li>Item 1</li>
35
- <li>Item 2</li>
36
- </ul>
37
- `;
38
- const expected = `# Hello, world!
39
-
40
- This is a paragraph.
41
-
42
- [Example](/example.html)
43
-
44
- ![Example](/example.jpg)
45
-
46
- * Item 1
47
- * Item 2
48
- `;
49
- const baseUrlReplaced = `# Hello, world!
50
-
51
- This is a paragraph.
52
-
53
- [Example](https://example.com/example.html)
54
-
55
- ![Example](https://example.com/example.jpg)
56
-
57
- * Item 1
58
- * Item 2
59
- `;
60
- const linkAsText = `# Hello, world!
61
-
62
- This is a paragraph.
63
-
64
- Example
65
-
66
- ![Example](/example.jpg)
67
-
68
- - Item 1
69
- - Item 2
70
- `;
71
- const imageHidden = `# Hello, world!
72
-
73
- This is a paragraph.
74
-
75
- [Example](/example.html)
76
-
77
- - Item 1
78
- - Item 2
79
- `;
80
- const htmlTable = `
81
- <table>
82
- <tr>
83
- <th>Header 1</th>
84
- <th>Header 2</th>
85
- </tr>
86
- <tr>
87
- <td>Cell 1</td>
88
- <td>Cell 2</td>
89
- </tr>
90
- </table>
91
- `;
92
- const expectedTableMarkdown = `
93
- | Header 1 | Header 2 |
94
- | -------- | -------- |
95
- | Cell 1 | Cell 2 |
96
- `;
97
- const expectedTableText = `Header 1 Header 2
98
- Cell 1 Cell 2`;
99
- (0, import_vitest.describe)("htmlToMarkdown", () => {
100
- (0, import_vitest.it)("should convert HTML to Markdown", () => {
101
- const markdown = (0, import_html_to_markdown.htmlToMarkdown)(html, { extractors: false });
102
- const d = (0, import_fastest_levenshtein.distance)(markdown, expected);
103
- (0, import_vitest.expect)(d).lte(5);
104
- });
105
- (0, import_vitest.it)("should convert HTML to Markdown with replaced base URL", () => {
106
- const markdown = (0, import_html_to_markdown.htmlToMarkdown)(html, { baseUrl: "https://example.com", extractors: false });
107
- const d = (0, import_fastest_levenshtein.distance)(markdown, baseUrlReplaced);
108
- (0, import_vitest.expect)(d).lte(5);
109
- });
110
- (0, import_vitest.it)("should convert HTML to Markdown with links as text", () => {
111
- const markdown = (0, import_html_to_markdown.htmlToMarkdown)(html, { linkAsText: true, extractors: false });
112
- const d = (0, import_fastest_levenshtein.distance)(markdown, linkAsText);
113
- (0, import_vitest.expect)(d).lte(5);
114
- });
115
- (0, import_vitest.it)("should convert HTML to Markdown with hidden images", () => {
116
- const markdown = (0, import_html_to_markdown.htmlToMarkdown)(html, { hideImage: true, extractors: false });
117
- const d = (0, import_fastest_levenshtein.distance)(markdown, imageHidden);
118
- (0, import_vitest.expect)(d).lte(5);
119
- });
120
- (0, import_vitest.it)("should convert HTML table to Markdown table", () => {
121
- const markdown = (0, import_html_to_markdown.htmlToMarkdown)(htmlTable, { extractors: false });
122
- const d = (0, import_fastest_levenshtein.distance)(markdown, expectedTableMarkdown);
123
- (0, import_vitest.expect)(d).lte(5);
124
- });
125
- (0, import_vitest.it)("should convert HTML table with table as text option", () => {
126
- const markdown = (0, import_html_to_markdown.htmlToMarkdown)(htmlTable, { tableAsText: true, extractors: false });
127
- const d = (0, import_fastest_levenshtein.distance)(markdown, expectedTableText);
128
- (0, import_vitest.expect)(d).lte(10);
129
- });
130
- });
131
- (0, import_vitest.describe)("htmlToMarkdown E2E", () => {
132
- (0, import_vitest.it)("should convert npm README to Markdown ", async () => {
133
- const html2 = await (0, import_fetch.loadHtml)("https://www.npmjs.com/package/webforai");
134
- const markdown = (0, import_html_to_markdown.htmlToMarkdown)(html2);
135
- const original = await import("../README.md?raw");
136
- const d = (0, import_fastest_levenshtein.distance)(markdown, original.default);
137
- (0, import_vitest.expect)(d).lte(200);
138
- });
139
- (0, import_vitest.it)("should convert GitHub README to Markdown ", async () => {
140
- const html2 = await (0, import_fetch.loadHtml)("https://github.com/inaridiy/webforai");
141
- const markdown = (0, import_html_to_markdown.htmlToMarkdown)(html2);
142
- const original = await import("../../../README.md?raw");
143
- const d = (0, import_fastest_levenshtein.distance)(markdown, original.default);
144
- (0, import_vitest.expect)(d).lte(200);
145
- });
146
- });
@@ -1,47 +0,0 @@
1
- "use strict";
2
- var import_vitest = require("vitest");
3
- var import_link_replacer = require("./link-replacer");
4
- const markdown = `# Hello, world!
5
-
6
- This is a paragraph.
7
-
8
- [Example](/example.html)
9
-
10
- ![Example](/example.jpg)
11
-
12
- [Absolute Link](https://www.google.com)
13
-
14
- [Link with hash](/page#hash)
15
-
16
- [Link with query](/page?query=string)`;
17
- const expected = `# Hello, world!
18
-
19
- This is a paragraph.
20
-
21
- [Example](https://example.com/example.html)
22
-
23
- ![Example](https://example.com/example.jpg)
24
-
25
- [Absolute Link](https://www.google.com)
26
-
27
- [Link with hash](https://example.com/page#hash)
28
-
29
- [Link with query](https://example.com/page?query=string)`;
30
- (0, import_vitest.describe)("linkReplacer", () => {
31
- (0, import_vitest.it)("should replace relative links", () => {
32
- const replaced = (0, import_link_replacer.linkReplacer)(markdown, "https://example.com");
33
- (0, import_vitest.expect)(replaced).toEqual(expected);
34
- });
35
- (0, import_vitest.it)("should not replace absolute links", () => {
36
- const replaced = (0, import_link_replacer.linkReplacer)("[Absolute Link](https://www.google.com)", "https://example.com");
37
- (0, import_vitest.expect)(replaced).toEqual("[Absolute Link](https://www.google.com)");
38
- });
39
- (0, import_vitest.it)("should handle links with hashes", () => {
40
- const replaced = (0, import_link_replacer.linkReplacer)("[Link with hash](/page#hash)", "https://example.com");
41
- (0, import_vitest.expect)(replaced).toEqual("[Link with hash](https://example.com/page#hash)");
42
- });
43
- (0, import_vitest.it)("should handle links with query parameters", () => {
44
- const replaced = (0, import_link_replacer.linkReplacer)("[Link with query](/page?query=string)", "https://example.com");
45
- (0, import_vitest.expect)(replaced).toEqual("[Link with query](https://example.com/page?query=string)");
46
- });
47
- });
@@ -1,9 +0,0 @@
1
- "use strict";
2
- var import_vitest = require("vitest");
3
- var import_fetch = require("./fetch");
4
- (0, import_vitest.describe)("Fetch loader", () => {
5
- (0, import_vitest.it)("should load the HTML of a URL", async () => {
6
- const html = await (0, import_fetch.loadHtml)("https://example.com");
7
- (0, import_vitest.expect)(html).toContain("Example Domain");
8
- });
9
- });
@@ -1,17 +0,0 @@
1
- "use strict";
2
- var import_playwright = require("playwright");
3
- var import_vitest = require("vitest");
4
- var import_playwright2 = require("./playwright");
5
- (0, import_vitest.describe)("Playwright loader", () => {
6
- (0, import_vitest.it)("should load the HTML of a URL", async () => {
7
- const html = await (0, import_playwright2.loadHtml)("https://example.com");
8
- (0, import_vitest.expect)(html).toContain("Example Domain");
9
- });
10
- (0, import_vitest.it)("should load the HTML of a URL using a custom context", async () => {
11
- const context = await import_playwright.chromium.launch({ headless: true });
12
- const html = await (0, import_playwright2.loadHtml)("https://example.com", context);
13
- (0, import_vitest.expect)(html).toContain("Example Domain");
14
- (0, import_vitest.expect)(context.isConnected()).toBe(true);
15
- await context.close();
16
- });
17
- });
@@ -1,17 +0,0 @@
1
- "use strict";
2
- var import_playwright = require("playwright");
3
- var import_vitest = require("vitest");
4
- var import_puppeteer = require("./puppeteer");
5
- (0, import_vitest.describe)("Puppeteer loader", () => {
6
- (0, import_vitest.it)("should load the HTML of a URL", async () => {
7
- const html = await (0, import_puppeteer.loadHtml)("https://example.com");
8
- (0, import_vitest.expect)(html).toContain("Example Domain");
9
- });
10
- (0, import_vitest.it)("should load the HTML of a URL using a custom puppeteer context", async () => {
11
- const context = await import_playwright.chromium.launch({ headless: true });
12
- const html = await (0, import_puppeteer.loadHtml)("https://example.com", { headless: true });
13
- (0, import_vitest.expect)(html).toContain("Example Domain");
14
- (0, import_vitest.expect)(context.isConnected()).toBe(true);
15
- await context.close();
16
- });
17
- });
@@ -1,124 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var bin_utils_exports = {};
30
- __export(bin_utils_exports, {
31
- changeFileExtension: () => changeFileExtension,
32
- getNextAvailableFilePath: () => getNextAvailableFilePath,
33
- isUrl: () => isUrl,
34
- logError: () => logError,
35
- urlToFilename: () => urlToFilename
36
- });
37
- module.exports = __toCommonJS(bin_utils_exports);
38
- var import_node_fs = __toESM(require("node:fs"), 1);
39
- var import_node_path = __toESM(require("node:path"), 1);
40
- var import_prompts = require("@clack/prompts");
41
- function logError(error) {
42
- import_prompts.log.error("An error occurred during processing");
43
- console.error(error.message);
44
- }
45
- function isUrl(str) {
46
- try {
47
- new URL(str);
48
- return true;
49
- } catch {
50
- return false;
51
- }
52
- }
53
- function getNextAvailableFilePath(filePath) {
54
- const parsedPath = import_node_path.default.parse(filePath);
55
- const directory = parsedPath.dir;
56
- const fullName = parsedPath.base;
57
- const [firstPart, ...restParts] = fullName.split(".");
58
- const restName = restParts.length > 0 ? `.${restParts.join(".")}` : "";
59
- const baseName = firstPart.replace(/_\d+$/, "");
60
- let counter = 1;
61
- let nextFilePath = filePath;
62
- while (import_node_fs.default.existsSync(nextFilePath)) {
63
- const match = firstPart.match(/_(\d+)$/);
64
- if (match) {
65
- counter = Number.parseInt(match[1], 10) + 1;
66
- }
67
- const newName = `${baseName}_${counter}${restName}`;
68
- nextFilePath = import_node_path.default.join(directory, newName);
69
- counter++;
70
- }
71
- return nextFilePath;
72
- }
73
- function changeFileExtension(filePath, newExtension) {
74
- const parsedPath = filePath.split("/");
75
- const fileName = parsedPath[parsedPath.length - 1];
76
- const formattedNewExtension = newExtension.startsWith(".") ? newExtension : `.${newExtension}`;
77
- if (fileName.startsWith(".")) {
78
- const parts = fileName.split(".");
79
- if (parts.length === 2) {
80
- return parsedPath.slice(0, -1).concat(`${fileName}${formattedNewExtension}`).join("/");
81
- }
82
- parts[parts.length - 1] = newExtension.replace(/^\./, "");
83
- return parsedPath.slice(0, -1).concat(parts.join(".")).join("/");
84
- }
85
- const lastDotIndex = fileName.lastIndexOf(".");
86
- const baseName = lastDotIndex !== -1 ? fileName.slice(0, lastDotIndex) : fileName;
87
- const newFileName = `${baseName}${formattedNewExtension}`;
88
- parsedPath[parsedPath.length - 1] = newFileName;
89
- return parsedPath.join("/");
90
- }
91
- function urlToFilename(url) {
92
- try {
93
- const urlObj = new URL(url);
94
- const domainParts = urlObj.hostname.split(".").reverse().reduce((acc, part, index) => {
95
- if (index === 0) {
96
- return acc;
97
- }
98
- if (acc.length >= 2) {
99
- return acc;
100
- }
101
- if (part === "www") {
102
- return acc;
103
- }
104
- return [part, ...acc];
105
- }, []);
106
- const domainString = domainParts.reverse().join("-");
107
- const pathParts = urlObj.pathname.split("/").filter(Boolean);
108
- const relevantPathParts = pathParts.slice(-2);
109
- const pathString = relevantPathParts.map((part) => decodeURIComponent(part)).join("-");
110
- let filename = [domainString, pathString].filter(Boolean).join("-");
111
- filename = filename.toLowerCase().replace(/[<>:"/\\|?*\x00-\x1F]/g, "").replace(/[\s.]+/g, "-").replace(/^-+|-+$/g, "");
112
- return filename || "output";
113
- } catch {
114
- return "output";
115
- }
116
- }
117
- // Annotate the CommonJS export names for ESM import in node:
118
- 0 && (module.exports = {
119
- changeFileExtension,
120
- getNextAvailableFilePath,
121
- isUrl,
122
- logError,
123
- urlToFilename
124
- });
@@ -1,124 +0,0 @@
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
- import { loadHtml } from "./loaders/fetch.js";
6
- var html = `
7
- <h1>Hello, world!</h1>
8
- <p>This is a paragraph.</p>
9
- <a href="/example.html">Example</a>
10
- <img src="/example.jpg" alt="Example" />
11
- <ul>
12
- <li>Item 1</li>
13
- <li>Item 2</li>
14
- </ul>
15
- `;
16
- var expected = `# Hello, world!
17
-
18
- This is a paragraph.
19
-
20
- [Example](/example.html)
21
-
22
- ![Example](/example.jpg)
23
-
24
- * Item 1
25
- * Item 2
26
- `;
27
- var baseUrlReplaced = `# Hello, world!
28
-
29
- This is a paragraph.
30
-
31
- [Example](https://example.com/example.html)
32
-
33
- ![Example](https://example.com/example.jpg)
34
-
35
- * Item 1
36
- * Item 2
37
- `;
38
- var linkAsText = `# Hello, world!
39
-
40
- This is a paragraph.
41
-
42
- Example
43
-
44
- ![Example](/example.jpg)
45
-
46
- - Item 1
47
- - Item 2
48
- `;
49
- var imageHidden = `# Hello, world!
50
-
51
- This is a paragraph.
52
-
53
- [Example](/example.html)
54
-
55
- - Item 1
56
- - Item 2
57
- `;
58
- var htmlTable = `
59
- <table>
60
- <tr>
61
- <th>Header 1</th>
62
- <th>Header 2</th>
63
- </tr>
64
- <tr>
65
- <td>Cell 1</td>
66
- <td>Cell 2</td>
67
- </tr>
68
- </table>
69
- `;
70
- var expectedTableMarkdown = `
71
- | Header 1 | Header 2 |
72
- | -------- | -------- |
73
- | Cell 1 | Cell 2 |
74
- `;
75
- var expectedTableText = `Header 1 Header 2
76
- Cell 1 Cell 2`;
77
- describe("htmlToMarkdown", () => {
78
- it("should convert HTML to Markdown", () => {
79
- const markdown = htmlToMarkdown(html, { extractors: false });
80
- const d = distance(markdown, expected);
81
- expect(d).lte(5);
82
- });
83
- it("should convert HTML to Markdown with replaced base URL", () => {
84
- const markdown = htmlToMarkdown(html, { baseUrl: "https://example.com", extractors: false });
85
- const d = distance(markdown, baseUrlReplaced);
86
- expect(d).lte(5);
87
- });
88
- it("should convert HTML to Markdown with links as text", () => {
89
- const markdown = htmlToMarkdown(html, { linkAsText: true, extractors: false });
90
- const d = distance(markdown, linkAsText);
91
- expect(d).lte(5);
92
- });
93
- it("should convert HTML to Markdown with hidden images", () => {
94
- const markdown = htmlToMarkdown(html, { hideImage: true, extractors: false });
95
- const d = distance(markdown, imageHidden);
96
- expect(d).lte(5);
97
- });
98
- it("should convert HTML table to Markdown table", () => {
99
- const markdown = htmlToMarkdown(htmlTable, { extractors: false });
100
- const d = distance(markdown, expectedTableMarkdown);
101
- expect(d).lte(5);
102
- });
103
- it("should convert HTML table with table as text option", () => {
104
- const markdown = htmlToMarkdown(htmlTable, { tableAsText: true, extractors: false });
105
- const d = distance(markdown, expectedTableText);
106
- expect(d).lte(10);
107
- });
108
- });
109
- describe("htmlToMarkdown E2E", () => {
110
- it("should convert npm README to Markdown ", async () => {
111
- const html2 = await loadHtml("https://www.npmjs.com/package/webforai");
112
- const markdown = htmlToMarkdown(html2);
113
- const original = await import("../README.md?raw");
114
- const d = distance(markdown, original.default);
115
- expect(d).lte(200);
116
- });
117
- it("should convert GitHub README to Markdown ", async () => {
118
- const html2 = await loadHtml("https://github.com/inaridiy/webforai");
119
- const markdown = htmlToMarkdown(html2);
120
- const original = await import("../../../README.md?raw");
121
- const d = distance(markdown, original.default);
122
- expect(d).lte(200);
123
- });
124
- });
@@ -1,47 +0,0 @@
1
- // src/link-replacer.test.ts
2
- import { describe, expect, it } from "vitest";
3
- import { linkReplacer } from "./link-replacer.js";
4
- var markdown = `# Hello, world!
5
-
6
- This is a paragraph.
7
-
8
- [Example](/example.html)
9
-
10
- ![Example](/example.jpg)
11
-
12
- [Absolute Link](https://www.google.com)
13
-
14
- [Link with hash](/page#hash)
15
-
16
- [Link with query](/page?query=string)`;
17
- var expected = `# Hello, world!
18
-
19
- This is a paragraph.
20
-
21
- [Example](https://example.com/example.html)
22
-
23
- ![Example](https://example.com/example.jpg)
24
-
25
- [Absolute Link](https://www.google.com)
26
-
27
- [Link with hash](https://example.com/page#hash)
28
-
29
- [Link with query](https://example.com/page?query=string)`;
30
- describe("linkReplacer", () => {
31
- it("should replace relative links", () => {
32
- const replaced = linkReplacer(markdown, "https://example.com");
33
- expect(replaced).toEqual(expected);
34
- });
35
- it("should not replace absolute links", () => {
36
- const replaced = linkReplacer("[Absolute Link](https://www.google.com)", "https://example.com");
37
- expect(replaced).toEqual("[Absolute Link](https://www.google.com)");
38
- });
39
- it("should handle links with hashes", () => {
40
- const replaced = linkReplacer("[Link with hash](/page#hash)", "https://example.com");
41
- expect(replaced).toEqual("[Link with hash](https://example.com/page#hash)");
42
- });
43
- it("should handle links with query parameters", () => {
44
- const replaced = linkReplacer("[Link with query](/page?query=string)", "https://example.com");
45
- expect(replaced).toEqual("[Link with query](https://example.com/page?query=string)");
46
- });
47
- });
@@ -1,9 +0,0 @@
1
- // src/loaders/fetch.test.ts
2
- import { describe, expect, it } from "vitest";
3
- import { loadHtml } from "./fetch.js";
4
- describe("Fetch loader", () => {
5
- it("should load the HTML of a URL", async () => {
6
- const html = await loadHtml("https://example.com");
7
- expect(html).toContain("Example Domain");
8
- });
9
- });
@@ -1,17 +0,0 @@
1
- // src/loaders/playwright.test.ts
2
- import { chromium } from "playwright";
3
- import { describe, expect, it } from "vitest";
4
- import { loadHtml } from "./playwright.js";
5
- describe("Playwright loader", () => {
6
- it("should load the HTML of a URL", async () => {
7
- const html = await loadHtml("https://example.com");
8
- expect(html).toContain("Example Domain");
9
- });
10
- it("should load the HTML of a URL using a custom context", async () => {
11
- const context = await chromium.launch({ headless: true });
12
- const html = await loadHtml("https://example.com", context);
13
- expect(html).toContain("Example Domain");
14
- expect(context.isConnected()).toBe(true);
15
- await context.close();
16
- });
17
- });
@@ -1,17 +0,0 @@
1
- // src/loaders/puppeteer.test.ts
2
- import { chromium } from "playwright.js";
3
- import { describe, expect, it } from "vitest";
4
- import { loadHtml } from "./puppeteer.js";
5
- describe("Puppeteer loader", () => {
6
- it("should load the HTML of a URL", async () => {
7
- const html = await loadHtml("https://example.com");
8
- expect(html).toContain("Example Domain");
9
- });
10
- it("should load the HTML of a URL using a custom puppeteer context", async () => {
11
- const context = await chromium.launch({ headless: true });
12
- const html = await loadHtml("https://example.com", { headless: true });
13
- expect(html).toContain("Example Domain");
14
- expect(context.isConnected()).toBe(true);
15
- await context.close();
16
- });
17
- });
@@ -1 +0,0 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/bin.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export declare function logError(error: Error): void;
2
- export declare function isUrl(str: string): boolean;
3
- export declare function getNextAvailableFilePath(filePath: string): string;
4
- export declare function changeFileExtension(filePath: string, newExtension: string): string;
5
- export declare function urlToFilename(url: string): string;
@@ -1 +0,0 @@
1
- {"version":3,"file":"bin-utils.js","sourceRoot":"","sources":["../../../src/utils/bin-utils.ts"],"names":[],"mappings":"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"}