smart-web-mcp 1.8.10 → 1.8.12
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/CHANGELOG.md +16 -0
- package/dist/extraction/document.d.ts +3 -0
- package/dist/extraction/document.js +37 -7
- package/dist/extraction/document.js.map +1 -1
- package/dist/smartfetch/generic-discussion.d.ts +5 -1
- package/dist/smartfetch/generic-discussion.js +116 -19
- package/dist/smartfetch/generic-discussion.js.map +1 -1
- package/dist/smartfetch/provider-types.d.ts +2 -0
- package/dist/smartfetch/providers/article.js +15 -28
- package/dist/smartfetch/providers/article.js.map +1 -1
- package/dist/smartfetch.js +18 -6
- package/dist/smartfetch.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,8 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on Keep a Changelog[^1] and this project uses SemVer.
|
|
6
6
|
|
|
7
7
|
## Unreleased
|
|
8
|
+
* Bind generic requested replies through their verified permalink rather than requiring the internal row ID to equal the URL fragment. Opaque comment names imply discussion intent only when present on an acquired source-bound row; ordinary sections retain their behavior. Exclude body-authored, nested and ambiguous named anchors from row identity, preserving original bodies, reply ordering and partial delivery without new adapters or requests.
|
|
9
|
+
* Scope generic discussion links and media to the selected original plus accepted reply bodies, including retained direct originals with browser-recovered replies and bounded reply pagination. Exclude controls, avatars, hidden/rejected rows and whole-page inventories while preserving exact reference URLs and source photos selected through the existing extractor's lazy-image handling. Unknown/missing replies and inline clipping stay partial; no new site adapters, requests or limits.
|
|
8
10
|
* Reuse successful generic article selection for headings, blocks, Markdown, references, media and link density instead of mixing a clean body with whole-page navigation/downloads. Preserve code and exact source URL attributes through extraction, avoid re-decoding normalized asset URLs, and stop classifying every blog/news descendant as an index. Actual listings, fallback, sections and requested discussions keep their separate contracts.
|
|
9
11
|
* Restore existing article selection for browser primary-content fragments by reconstructing a titled document instead of silently falling back to navigation-heavy flattened text. Captured titles cannot forge metadata across parser passes, semantic code labels retain their visible tokens, and incidental body dates do not become publication metadata. Requested sections keep precedence. This changes article-body selection, not whole-page links/assets or universal boilerplate coverage.
|
|
10
12
|
* Retain HTTP reference links from validated readable public Discourse originals and replies. Reuse sanitized DOM hrefs, excluding hidden/embedded and unsafe destinations; normalized JSON/text/Markdown no longer rewrites trailing symbol punctuation or query backslashes. Preserve once-decoded URL attributes across sanitization and structurally remove nested inert templates. Existing row/link budgets and partial delivery remain unchanged.
|
|
@@ -459,6 +461,20 @@ The format is based on Keep a Changelog[^1] and this project uses SemVer.
|
|
|
459
461
|
- Korean public API helpers now validate outbound URLs and redirects before fetching, blocking localhost, private, and reserved targets unless `network.allowPrivateHosts` is explicitly enabled.
|
|
460
462
|
- CI now declares read-only default repository permissions, Dependabot auto-merge pins the reusable workflow without forwarding all caller secrets, and the workflow check enforces those guards.
|
|
461
463
|
|
|
464
|
+
## [1.8.12](https://github.com/jojo-labs/smart-web/compare/v1.8.11...v1.8.12) (2026-10-04)
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
### Bug Fixes
|
|
468
|
+
|
|
469
|
+
* bind generic replies through source-owned permalinks ([#864](https://github.com/jojo-labs/smart-web/issues/864)) ([c63ce85](https://github.com/jojo-labs/smart-web/commit/c63ce85b4bc6cb3659554b03f719a9c0c0335514))
|
|
470
|
+
|
|
471
|
+
## [1.8.11](https://github.com/jojo-labs/smart-web/compare/v1.8.10...v1.8.11) (2026-10-04)
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
### Bug Fixes
|
|
475
|
+
|
|
476
|
+
* scope generic discussion evidence to bound bodies ([#860](https://github.com/jojo-labs/smart-web/issues/860)) ([38f5893](https://github.com/jojo-labs/smart-web/commit/38f5893155dcf41cf0e2be0d5024e18f856b7ca8))
|
|
477
|
+
|
|
462
478
|
## [1.8.10](https://github.com/jojo-labs/smart-web/compare/v1.8.9...v1.8.10) (2026-10-04)
|
|
463
479
|
|
|
464
480
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { parseHTML } from "linkedom";
|
|
1
2
|
import TurndownService from "turndown";
|
|
2
3
|
import type { AdapterResult } from "../shared.js";
|
|
3
4
|
export type ExtractedLink = {
|
|
@@ -48,6 +49,8 @@ export declare function normalizeMarkdown(markdown: string): string;
|
|
|
48
49
|
export declare function fallbackMarkdown(text: string): string;
|
|
49
50
|
export declare function stripDuplicateTitle(markdown: string, title: string): string;
|
|
50
51
|
export declare function buildTurndownService(): TurndownService;
|
|
52
|
+
export declare function serializeDocumentHtml(document: ReturnType<typeof parseHTML>["document"] | Element): string;
|
|
53
|
+
export declare function scopedEvidenceUrls(html: string, base: string): string[];
|
|
51
54
|
export declare function cleanDocumentHtml(html: string, baseUrl: string, options?: {
|
|
52
55
|
removeBoilerplate?: boolean;
|
|
53
56
|
}): string;
|
|
@@ -2,7 +2,7 @@ import { extractFromHtml } from "@extractus/article-extractor";
|
|
|
2
2
|
import { parseHTML } from "linkedom";
|
|
3
3
|
import TurndownService from "turndown";
|
|
4
4
|
import { gfm } from "turndown-plugin-gfm";
|
|
5
|
-
import { asString, dedupeUrls, extractLabeledAnchors, extractMetaDescription, extractMetaProperty, extractTitleFromHtml, stripTags } from "../shared.js";
|
|
5
|
+
import { asString, cleanNormalizedLinks, dedupeUrls, extractLabeledAnchors, extractMetaDescription, extractMetaProperty, extractTitleFromHtml, extractUrls, stripTags } from "../shared.js";
|
|
6
6
|
function normalizeSpace(value) {
|
|
7
7
|
return value.replace(/\s+/g, " ").trim();
|
|
8
8
|
}
|
|
@@ -46,14 +46,26 @@ function preservePreformattedHtml(html) {
|
|
|
46
46
|
}
|
|
47
47
|
return { html: document.toString(), originals };
|
|
48
48
|
}
|
|
49
|
-
function bindArticleUrls(html) {
|
|
49
|
+
function bindArticleUrls(html, baseUrl) {
|
|
50
50
|
const { document } = parseHTML(html);
|
|
51
51
|
const originals = new Map();
|
|
52
52
|
for (const element of document.querySelectorAll("[data-smart-web-url]"))
|
|
53
53
|
element.removeAttribute("data-smart-web-url");
|
|
54
54
|
for (const element of document.querySelectorAll("a[href], img[src], video[src], audio[src], source[src], [srcset]")) {
|
|
55
55
|
const key = String(originals.size);
|
|
56
|
-
|
|
56
|
+
let src = element.getAttribute("src");
|
|
57
|
+
// Extractus already promotes native data-src on retained images. Preserve
|
|
58
|
+
// that source URL, not the transparent placeholder it legitimately replaces.
|
|
59
|
+
const lazy = element.tagName === "IMG" ? element.getAttribute("data-src") : null;
|
|
60
|
+
if (lazy?.trim()) {
|
|
61
|
+
try {
|
|
62
|
+
const target = new URL(lazy, baseUrl);
|
|
63
|
+
if (/^https?:$/.test(target.protocol) && !target.username && !target.password)
|
|
64
|
+
src = target.href;
|
|
65
|
+
}
|
|
66
|
+
catch { /* Invalid lazy metadata cannot replace the ordinary source. */ }
|
|
67
|
+
}
|
|
68
|
+
originals.set(key, { tag: element.tagName, href: element.getAttribute("href"), src, srcset: element.getAttribute("srcset") });
|
|
57
69
|
element.setAttribute("data-smart-web-url", key);
|
|
58
70
|
}
|
|
59
71
|
return { html: serializeDocumentHtml(document), originals };
|
|
@@ -110,11 +122,12 @@ export function buildTurndownService() {
|
|
|
110
122
|
service.remove(["script", "style", "noscript", "iframe", "svg", "canvas"]);
|
|
111
123
|
return service;
|
|
112
124
|
}
|
|
113
|
-
function serializeDocumentHtml(document) {
|
|
125
|
+
export function serializeDocumentHtml(document) {
|
|
114
126
|
// Linkedom serializes literal ampersands in attributes without escaping.
|
|
115
127
|
// Keep href/src values stable when the sanitized HTML is parsed again.
|
|
116
|
-
|
|
117
|
-
|
|
128
|
+
const elements = [...(document.nodeType === 1 ? [document] : []), ...document.querySelectorAll("[href], [src], [srcset], [data-src]")];
|
|
129
|
+
for (const element of elements) {
|
|
130
|
+
for (const attribute of ["href", "src", "srcset", "data-src"]) {
|
|
118
131
|
const value = element.getAttribute(attribute);
|
|
119
132
|
if (value?.includes("&"))
|
|
120
133
|
element.setAttribute(attribute, value.replace(/&/g, "&"));
|
|
@@ -122,6 +135,23 @@ function serializeDocumentHtml(document) {
|
|
|
122
135
|
}
|
|
123
136
|
return document.toString();
|
|
124
137
|
}
|
|
138
|
+
export function scopedEvidenceUrls(html, base) {
|
|
139
|
+
const { document } = parseHTML(html);
|
|
140
|
+
const urls = [];
|
|
141
|
+
for (const element of document.querySelectorAll("a[href], img[src], video[src], audio[src], source[src]")) {
|
|
142
|
+
const value = element.getAttribute(element.tagName === "A" ? "href" : "src");
|
|
143
|
+
if (!value?.trim())
|
|
144
|
+
continue;
|
|
145
|
+
try {
|
|
146
|
+
urls.push(new URL(value, base).href);
|
|
147
|
+
}
|
|
148
|
+
catch { /* Ignore invalid source attributes. */ }
|
|
149
|
+
}
|
|
150
|
+
// Parse decoded attributes, not encoded HTML that could invent another URL.
|
|
151
|
+
for (const element of document.querySelectorAll("[srcset]"))
|
|
152
|
+
urls.push(...extractUrls(element.getAttribute("srcset") || ""));
|
|
153
|
+
return cleanNormalizedLinks(urls);
|
|
154
|
+
}
|
|
125
155
|
function absolutizeHtmlLinks(html, baseUrl) {
|
|
126
156
|
// Attribute-like assignments inside source code are text, not URLs to
|
|
127
157
|
// rewrite. Use the existing DOM parser to bind only actual attributes.
|
|
@@ -462,7 +492,7 @@ export async function extractDocumentFromAdapter(active, url, options = {}) {
|
|
|
462
492
|
? browserArticleDocument(cleanedHtml, fallbackTitle) : cleanedHtml;
|
|
463
493
|
// Extractus reparses URL attributes without preserving literal entities.
|
|
464
494
|
// Bind only retained URL nodes to their already-normalized source values.
|
|
465
|
-
const boundUrls = options.scopeArticle && !documentationHtml ? bindArticleUrls(extractionHtml) : null;
|
|
495
|
+
const boundUrls = options.scopeArticle && !documentationHtml ? bindArticleUrls(extractionHtml, baseUrl) : null;
|
|
466
496
|
const preserved = preservePreformattedHtml(boundUrls?.html || extractionHtml);
|
|
467
497
|
const article = await extractFromHtml(preserved.html, baseUrl, {
|
|
468
498
|
contentLengthThreshold: 200,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/extraction/document.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/extraction/document.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,10 @@ export type GenericDiscussion = {
|
|
|
6
6
|
complete: boolean;
|
|
7
7
|
};
|
|
8
8
|
articleHtml: string;
|
|
9
|
+
/** Internal sanitized bodies of accepted rows only, never row chrome. */
|
|
10
|
+
commentHtml: string;
|
|
11
|
+
/** Per-row normalized references/media for direct-to-browser continuity. */
|
|
12
|
+
commentEvidence: Map<string, string[]>;
|
|
9
13
|
unbound?: boolean;
|
|
10
14
|
};
|
|
11
15
|
/** Follow observed WordPress pagination only while every page retains the same topic. */
|
|
@@ -16,4 +20,4 @@ export declare function collectBbPressPages(html: string, url: string, method: s
|
|
|
16
20
|
method: string;
|
|
17
21
|
}>): Promise<GenericDiscussion | null>;
|
|
18
22
|
/** Read only identity-bearing rows inside a bound discussion region. Unknown is not zero. */
|
|
19
|
-
export declare function extractGenericDiscussion(html: string, url: string, method: string): GenericDiscussion;
|
|
23
|
+
export declare function extractGenericDiscussion(html: string, url: string, method: string, acquiredUrl?: string): GenericDiscussion;
|
|
@@ -1,6 +1,24 @@
|
|
|
1
1
|
import { parseHTML } from "linkedom";
|
|
2
|
-
import { cleanDocumentHtml, renderHtmlToText } from "../extraction/document.js";
|
|
2
|
+
import { cleanDocumentHtml, renderHtmlToText, scopedEvidenceUrls, serializeDocumentHtml } from "../extraction/document.js";
|
|
3
3
|
const normalize = (text) => text.replace(/\s+/g, " ").trim();
|
|
4
|
+
function commentEvidenceHtml(body) {
|
|
5
|
+
if (!body)
|
|
6
|
+
return "";
|
|
7
|
+
const scope = body.cloneNode(true);
|
|
8
|
+
for (const embedded of scope.querySelectorAll("iframe, object, embed, canvas, svg, form, input, textarea, button"))
|
|
9
|
+
embedded.remove();
|
|
10
|
+
// These source attributes were already decoded by the DOM parser.
|
|
11
|
+
return serializeDocumentHtml(scope);
|
|
12
|
+
}
|
|
13
|
+
/** Keep identity-bound media even when a row has no readable text. */
|
|
14
|
+
function retainCommentEvidence(id, body, html, evidence, url) {
|
|
15
|
+
if (evidence.has(id) || evidence.size >= 500)
|
|
16
|
+
return false;
|
|
17
|
+
const source = commentEvidenceHtml(body);
|
|
18
|
+
html.push(source);
|
|
19
|
+
evidence.set(id, scopedEvidenceUrls(source, url).sort());
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
4
22
|
/** GitLab issue activity is rendered after the original; only note permalinks bind replies. */
|
|
5
23
|
function gitlabDiscussion(html, url, method) {
|
|
6
24
|
let requested;
|
|
@@ -18,6 +36,8 @@ function gitlabDiscussion(html, url, method) {
|
|
|
18
36
|
if (!root)
|
|
19
37
|
return null;
|
|
20
38
|
const comments = [];
|
|
39
|
+
const commentHtml = [];
|
|
40
|
+
const commentEvidence = new Map();
|
|
21
41
|
const ids = new Set();
|
|
22
42
|
for (const row of root.querySelectorAll("li.note-comment[id^='note_']")) {
|
|
23
43
|
const id = row.id;
|
|
@@ -39,6 +59,8 @@ function gitlabDiscussion(html, url, method) {
|
|
|
39
59
|
const body = row.querySelector(".note-body [data-testid='work-item-note-body']");
|
|
40
60
|
if (!body || body.closest("li.note-comment") !== row)
|
|
41
61
|
continue;
|
|
62
|
+
if (!retainCommentEvidence(id, body, commentHtml, commentEvidence, url))
|
|
63
|
+
continue;
|
|
42
64
|
const text = renderHtmlToText(body.innerHTML, url);
|
|
43
65
|
if (!text)
|
|
44
66
|
continue;
|
|
@@ -67,7 +89,7 @@ function gitlabDiscussion(html, url, method) {
|
|
|
67
89
|
document.body.innerHTML = description.outerHTML;
|
|
68
90
|
}
|
|
69
91
|
// The activity DOM has no independently verified total or pagination claim.
|
|
70
|
-
return { comments, coverage: { declared_count: null, collected_count: comments.length, complete: false }, articleHtml: document.
|
|
92
|
+
return { comments, coverage: { declared_count: null, collected_count: comments.length, complete: false }, articleHtml: serializeDocumentHtml(document), commentHtml: commentHtml.join("\n"), commentEvidence };
|
|
71
93
|
}
|
|
72
94
|
/** GitHub discussions expose public comment IDs in HTML, not the issue REST API. */
|
|
73
95
|
function githubDiscussion(html, url, method) {
|
|
@@ -91,6 +113,8 @@ function githubDiscussion(html, url, method) {
|
|
|
91
113
|
const declared = match ? Number(match[1]) + Number(match[2])
|
|
92
114
|
: /\b0\s+comments?\b/i.test(label) && !/\b\d+\s+repl(?:y|ies)\b/i.test(label) ? 0 : null;
|
|
93
115
|
const comments = [];
|
|
116
|
+
const commentHtml = [];
|
|
117
|
+
const commentEvidence = new Map();
|
|
94
118
|
const ids = new Set();
|
|
95
119
|
let unbound = false;
|
|
96
120
|
for (const row of root.querySelectorAll("[id^='discussioncomment-']")) {
|
|
@@ -105,6 +129,10 @@ function githubDiscussion(html, url, method) {
|
|
|
105
129
|
&& ownerPath.slice(expected.length, -suffix.length).match(/^[A-Za-z0-9_.-]+$/);
|
|
106
130
|
const body = Array.from(row.querySelectorAll(".comment-body"))
|
|
107
131
|
.find(element => element.closest("[id^='discussioncomment-']") === row);
|
|
132
|
+
if (!owned || !retainCommentEvidence(id, body, commentHtml, commentEvidence, url)) {
|
|
133
|
+
unbound = true;
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
108
136
|
const text = renderHtmlToText(body?.innerHTML || "", url);
|
|
109
137
|
if (!owned || !text || ids.has(id)) {
|
|
110
138
|
unbound = true;
|
|
@@ -146,7 +174,7 @@ function githubDiscussion(html, url, method) {
|
|
|
146
174
|
}
|
|
147
175
|
count.remove();
|
|
148
176
|
return { comments, coverage: { declared_count: declared, collected_count: comments.length,
|
|
149
|
-
complete: declared !== null && comments.length === declared && !unbound }, articleHtml: document.
|
|
177
|
+
complete: declared !== null && comments.length === declared && !unbound }, articleHtml: serializeDocumentHtml(document), commentHtml: commentHtml.join("\n"), commentEvidence };
|
|
150
178
|
}
|
|
151
179
|
/** A best-reply panel repeats normal Ruliweb rows; bind only canonical thread IDs. */
|
|
152
180
|
function ruliwebDiscussion(html, url, method) {
|
|
@@ -178,6 +206,8 @@ function ruliwebDiscussion(html, url, method) {
|
|
|
178
206
|
const label = normalize(root.querySelector(".comment_count .reply_count, .reply_count")?.textContent || "");
|
|
179
207
|
const declared = /^\d+$/.test(label) ? Number(label) : null;
|
|
180
208
|
const comments = [];
|
|
209
|
+
const commentHtml = [];
|
|
210
|
+
const commentEvidence = new Map();
|
|
181
211
|
const ids = new Map();
|
|
182
212
|
let unbound = false;
|
|
183
213
|
let parent = "";
|
|
@@ -188,7 +218,12 @@ function ruliwebDiscussion(html, url, method) {
|
|
|
188
218
|
unbound = true;
|
|
189
219
|
continue;
|
|
190
220
|
}
|
|
191
|
-
const
|
|
221
|
+
const body = row.querySelector("td.comment .text_wrapper .text");
|
|
222
|
+
if (!retainCommentEvidence(id, body, commentHtml, commentEvidence, url)) {
|
|
223
|
+
unbound = true;
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
const text = renderHtmlToText(body?.innerHTML || "", url);
|
|
192
227
|
if (!text || ids.has(id)) {
|
|
193
228
|
unbound = true;
|
|
194
229
|
continue;
|
|
@@ -218,7 +253,7 @@ function ruliwebDiscussion(html, url, method) {
|
|
|
218
253
|
document.body.innerHTML = originals[0].outerHTML;
|
|
219
254
|
}
|
|
220
255
|
return { comments, coverage: { declared_count: declared, collected_count: comments.length,
|
|
221
|
-
complete: declared !== null && declared === comments.length && !unbound }, articleHtml: document.
|
|
256
|
+
complete: declared !== null && declared === comments.length && !unbound }, articleHtml: serializeDocumentHtml(document), commentHtml: commentHtml.join("\n"), commentEvidence };
|
|
222
257
|
}
|
|
223
258
|
/** bbPress exposes topic-bound reply rows and per-reply same-topic permalinks. */
|
|
224
259
|
function bbPressDiscussion(html, url, method) {
|
|
@@ -241,6 +276,8 @@ function bbPressDiscussion(html, url, method) {
|
|
|
241
276
|
const count = counters.map(element => /Viewing\s+\d+\s+repl(?:y|ies)(?:\s*-\s*\d+\s+through\s+\d+)?\s*\(of\s+(\d+)\s+total\)/i.exec(normalize(element.textContent || ""))).find(Boolean);
|
|
242
277
|
const declared = count ? Number(count[1]) : null;
|
|
243
278
|
const comments = [];
|
|
279
|
+
const commentHtml = [];
|
|
280
|
+
const commentEvidence = new Map();
|
|
244
281
|
const ids = new Set();
|
|
245
282
|
let unbound = false;
|
|
246
283
|
for (const row of root.querySelectorAll("li.bbp-body > [id^='post-']")) {
|
|
@@ -270,6 +307,10 @@ function bbPressDiscussion(html, url, method) {
|
|
|
270
307
|
}
|
|
271
308
|
const body = Array.from(row.querySelectorAll(".bbp-reply-content"))
|
|
272
309
|
.find(element => element.closest("[id^='post-']") === row);
|
|
310
|
+
if (!retainCommentEvidence(id, body, commentHtml, commentEvidence, url)) {
|
|
311
|
+
unbound = true;
|
|
312
|
+
continue;
|
|
313
|
+
}
|
|
273
314
|
const text = renderHtmlToText(body?.innerHTML || "", url);
|
|
274
315
|
if (!text) {
|
|
275
316
|
unbound = true;
|
|
@@ -286,7 +327,7 @@ function bbPressDiscussion(html, url, method) {
|
|
|
286
327
|
for (const counter of counters)
|
|
287
328
|
counter.remove();
|
|
288
329
|
return { comments, coverage: { declared_count: declared, collected_count: comments.length,
|
|
289
|
-
complete: declared !== null && declared === comments.length && !unbound }, articleHtml: document.
|
|
330
|
+
complete: declared !== null && declared === comments.length && !unbound }, articleHtml: serializeDocumentHtml(document), commentHtml: commentHtml.join("\n"), commentEvidence, unbound };
|
|
290
331
|
}
|
|
291
332
|
/** Follow observed WordPress pagination only while every page retains the same topic. */
|
|
292
333
|
export async function collectBbPressPages(html, url, method, fetchPage) {
|
|
@@ -344,6 +385,8 @@ export async function collectBbPressPages(html, url, method, fetchPage) {
|
|
|
344
385
|
if (!original || original.unbound || original.coverage.complete || original.coverage.declared_count === null)
|
|
345
386
|
return null;
|
|
346
387
|
const rows = [...original.comments];
|
|
388
|
+
const commentHtml = [original.commentHtml];
|
|
389
|
+
const commentEvidence = new Map(original.commentEvidence);
|
|
347
390
|
const ids = new Set(rows.map(row => row.id));
|
|
348
391
|
let document = first;
|
|
349
392
|
let previousEnd = 0;
|
|
@@ -358,7 +401,7 @@ export async function collectBbPressPages(html, url, method, fetchPage) {
|
|
|
358
401
|
break;
|
|
359
402
|
previousEnd = Number(range[3]);
|
|
360
403
|
if (previousEnd === expected)
|
|
361
|
-
return { ...original, comments: rows, coverage: { declared_count: expected, collected_count: rows.length, complete: rows.length === expected } };
|
|
404
|
+
return { ...original, comments: rows, commentHtml: commentHtml.join("\n"), commentEvidence, coverage: { declared_count: expected, collected_count: rows.length, complete: rows.length === expected } };
|
|
362
405
|
if (page === 5)
|
|
363
406
|
break;
|
|
364
407
|
const nextUrl = `${requested.origin}${base}/page/${page + 1}/`;
|
|
@@ -388,13 +431,19 @@ export async function collectBbPressPages(html, url, method, fetchPage) {
|
|
|
388
431
|
|| rows.length + parsed.comments.length > 500 || parsed.comments.some(row => ids.has(row.id)))
|
|
389
432
|
break;
|
|
390
433
|
rows.push(...parsed.comments);
|
|
434
|
+
commentHtml.push(parsed.commentHtml);
|
|
435
|
+
for (const [id, urls] of parsed.commentEvidence)
|
|
436
|
+
commentEvidence.set(id, urls);
|
|
391
437
|
for (const row of parsed.comments)
|
|
392
438
|
ids.add(row.id);
|
|
393
439
|
}
|
|
394
|
-
return { ...original, comments: rows, coverage: { declared_count: original.coverage.declared_count, collected_count: rows.length, complete: false } };
|
|
440
|
+
return { ...original, comments: rows, commentHtml: commentHtml.join("\n"), commentEvidence, coverage: { declared_count: original.coverage.declared_count, collected_count: rows.length, complete: false } };
|
|
395
441
|
}
|
|
396
442
|
/** Read only identity-bearing rows inside a bound discussion region. Unknown is not zero. */
|
|
397
|
-
export function extractGenericDiscussion(html, url, method) {
|
|
443
|
+
export function extractGenericDiscussion(html, url, method, acquiredUrl = url) {
|
|
444
|
+
// Bind identity to the request, but resolve references at the acquired page.
|
|
445
|
+
if (acquiredUrl !== url)
|
|
446
|
+
html = cleanDocumentHtml(html, acquiredUrl, { removeBoilerplate: false });
|
|
398
447
|
const gitlab = gitlabDiscussion(html, url, method);
|
|
399
448
|
if (gitlab)
|
|
400
449
|
return gitlab;
|
|
@@ -442,9 +491,21 @@ export function extractGenericDiscussion(html, url, method) {
|
|
|
442
491
|
}
|
|
443
492
|
}
|
|
444
493
|
const comments = [];
|
|
494
|
+
const commentHtml = [];
|
|
495
|
+
const commentEvidence = new Map();
|
|
445
496
|
let unbound = false;
|
|
446
497
|
const ids = new Set();
|
|
447
498
|
if (root) {
|
|
499
|
+
const fragmentTargets = new Map();
|
|
500
|
+
for (const element of document.querySelectorAll("[id], a[name]")) {
|
|
501
|
+
for (const name of [element.id, element.tagName === "A" ? element.getAttribute("name") : ""]) {
|
|
502
|
+
if (!name)
|
|
503
|
+
continue;
|
|
504
|
+
const targets = fragmentTargets.get(name) || new Set();
|
|
505
|
+
targets.add(element);
|
|
506
|
+
fragmentTargets.set(name, targets);
|
|
507
|
+
}
|
|
508
|
+
}
|
|
448
509
|
const ownedMarker = (candidate) => {
|
|
449
510
|
if (/^(?:comment[-_]|c_)[a-z0-9_-]+$/i.test(candidate.id))
|
|
450
511
|
return candidate;
|
|
@@ -454,16 +515,24 @@ export function extractGenericDiscussion(html, url, method) {
|
|
|
454
515
|
&& !element.parentElement?.closest("[class*='comment'][class*='body'], [class*='comment'][class*='text']"));
|
|
455
516
|
return inner.length === 1 ? inner[0] : undefined;
|
|
456
517
|
};
|
|
518
|
+
const nativeIdentity = (candidate) => {
|
|
519
|
+
const marker = ownedMarker(candidate);
|
|
520
|
+
return marker === candidate ? candidate.getAttribute("data-comment-id") || marker.id : marker?.id || "";
|
|
521
|
+
};
|
|
457
522
|
for (const row of root.querySelectorAll(".comment, [data-comment-id]")) {
|
|
458
523
|
// Only the outermost identity-bearing comment row owns its text. Nested
|
|
459
524
|
// action controls with data-comment-id are not another comment.
|
|
460
525
|
if (!row.classList.contains("comment"))
|
|
461
526
|
continue;
|
|
527
|
+
if (row.parentElement?.closest("[class*='comment'][class*='body'], [class*='comment'][class*='text']")) {
|
|
528
|
+
unbound = true;
|
|
529
|
+
continue;
|
|
530
|
+
}
|
|
462
531
|
// Some discussion UIs put the permalink on the row's owned inner
|
|
463
532
|
// element, while the enclosing comment uses an unrelated render ID.
|
|
464
533
|
const source = ownedMarker(row);
|
|
465
534
|
const id = source?.id || "";
|
|
466
|
-
const nativeId =
|
|
535
|
+
const nativeId = nativeIdentity(row);
|
|
467
536
|
if (!source || !/^(?:comment[-_]|c_)[a-z0-9_-]+$/i.test(id) || !nativeId || ids.has(nativeId)) {
|
|
468
537
|
unbound = true;
|
|
469
538
|
continue;
|
|
@@ -471,16 +540,43 @@ export function extractGenericDiscussion(html, url, method) {
|
|
|
471
540
|
const body = Array.from(source.querySelectorAll("[class*='comment'][class*='body'], [class*='comment'][class*='text']"))
|
|
472
541
|
.find(element => !element.closest(".comment") || element.closest(".comment") === row);
|
|
473
542
|
const text = renderHtmlToText(body?.innerHTML || "", url);
|
|
474
|
-
if (
|
|
543
|
+
if (/^\[?(?:comment removed|deleted)(?: by (?:author|moderator))?\]?$/i.test(text))
|
|
544
|
+
continue;
|
|
545
|
+
// Named permalinks belong to row chrome, never a nested reply or quoted
|
|
546
|
+
// body. Ambiguous native names cannot certify a requested comment.
|
|
547
|
+
const names = Array.from(row.querySelectorAll("a[name^='comment-']"))
|
|
548
|
+
.filter(anchor => anchor.closest(".comment") === row
|
|
549
|
+
&& !anchor.closest("[class*='comment'][class*='body'], [class*='comment'][class*='text']"))
|
|
550
|
+
.map(anchor => anchor.getAttribute("name") || "");
|
|
551
|
+
if (names.length > 1 || names.some(name => !/^comment-[a-z0-9_-]+$/i.test(name))) {
|
|
552
|
+
unbound = true;
|
|
475
553
|
continue;
|
|
554
|
+
}
|
|
555
|
+
const anchor = names[0] || id;
|
|
556
|
+
const targets = fragmentTargets.get(anchor);
|
|
557
|
+
const permalinkBound = Boolean(targets?.size && [...targets].every(element => element.closest(".comment") === row
|
|
558
|
+
&& !element.closest("[class*='comment'][class*='body'], [class*='comment'][class*='text']")));
|
|
559
|
+
// Retain readable native rows/media as partial evidence on a collision,
|
|
560
|
+
// but do not expose a URL that could select the wrong row or section.
|
|
561
|
+
if (!permalinkBound)
|
|
562
|
+
unbound = true;
|
|
563
|
+
if (!retainCommentEvidence(nativeId, body, commentHtml, commentEvidence, url)) {
|
|
564
|
+
unbound = true;
|
|
565
|
+
continue;
|
|
566
|
+
}
|
|
567
|
+
if (!text) {
|
|
568
|
+
if (commentEvidence.get(nativeId)?.length)
|
|
569
|
+
unbound = true;
|
|
570
|
+
continue;
|
|
571
|
+
}
|
|
476
572
|
let parent = row.getAttribute("data-parent-id") || "";
|
|
477
573
|
if (!parent) {
|
|
478
574
|
let current = row.parentElement;
|
|
479
575
|
while (current && current !== root) {
|
|
480
576
|
if (current.classList.contains("comment")) {
|
|
481
|
-
const owner =
|
|
482
|
-
if (owner
|
|
483
|
-
parent = owner
|
|
577
|
+
const owner = nativeIdentity(current);
|
|
578
|
+
if (owner) {
|
|
579
|
+
parent = owner;
|
|
484
580
|
break;
|
|
485
581
|
}
|
|
486
582
|
}
|
|
@@ -488,17 +584,16 @@ export function extractGenericDiscussion(html, url, method) {
|
|
|
488
584
|
// parent comment's own <div>. Bind only to an enclosing list row.
|
|
489
585
|
if (current.tagName === "LI") {
|
|
490
586
|
const owner = current.querySelector(".comment[id]");
|
|
491
|
-
if (owner && owner !== row && owner
|
|
492
|
-
parent = owner
|
|
587
|
+
if (owner && owner !== row && nativeIdentity(owner)) {
|
|
588
|
+
parent = nativeIdentity(owner);
|
|
493
589
|
break;
|
|
494
590
|
}
|
|
495
591
|
}
|
|
496
592
|
current = current.parentElement;
|
|
497
593
|
}
|
|
498
594
|
}
|
|
499
|
-
const anchor = row.querySelector("a[name^='comment-']")?.getAttribute("name") || id;
|
|
500
595
|
ids.add(nativeId);
|
|
501
|
-
comments.push({ id: nativeId, url: `${url.split("#")[0]}#${encodeURIComponent(anchor)}
|
|
596
|
+
comments.push({ id: nativeId, ...(permalinkBound ? { url: `${url.split("#")[0]}#${encodeURIComponent(anchor)}` } : {}), text, ...(parent ? { parent_id: parent } : {}), source: method });
|
|
502
597
|
if (comments.length >= 500) {
|
|
503
598
|
unbound = true;
|
|
504
599
|
break;
|
|
@@ -539,7 +634,9 @@ export function extractGenericDiscussion(html, url, method) {
|
|
|
539
634
|
return {
|
|
540
635
|
comments,
|
|
541
636
|
coverage: { declared_count: declared, collected_count: comments.length, complete },
|
|
542
|
-
articleHtml: document
|
|
637
|
+
articleHtml: serializeDocumentHtml(document),
|
|
638
|
+
commentHtml: commentHtml.join("\n"),
|
|
639
|
+
commentEvidence,
|
|
543
640
|
};
|
|
544
641
|
}
|
|
545
642
|
//# sourceMappingURL=generic-discussion.js.map
|