@get-technology-inc/jamf-docs-mcp-server 4.0.5 → 4.0.7
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/core/constants/doc-types.d.ts +26 -4
- package/dist/core/constants/doc-types.d.ts.map +1 -1
- package/dist/core/constants/doc-types.js +33 -4
- package/dist/core/constants/doc-types.js.map +1 -1
- package/dist/core/constants/index.d.ts +2 -2
- package/dist/core/constants/index.d.ts.map +1 -1
- package/dist/core/constants/index.js +2 -2
- package/dist/core/constants/index.js.map +1 -1
- package/dist/core/constants/products.d.ts +13 -0
- package/dist/core/constants/products.d.ts.map +1 -1
- package/dist/core/constants/products.js +13 -0
- package/dist/core/constants/products.js.map +1 -1
- package/dist/core/constants.d.ts +1 -1
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +2 -2
- package/dist/core/constants.js.map +1 -1
- package/dist/core/create-server.js +3 -3
- package/dist/core/create-server.js.map +1 -1
- package/dist/core/prompts/compare-versions.d.ts.map +1 -1
- package/dist/core/prompts/compare-versions.js +2 -1
- package/dist/core/prompts/compare-versions.js.map +1 -1
- package/dist/core/prompts/setup-guide.d.ts.map +1 -1
- package/dist/core/prompts/setup-guide.js +2 -1
- package/dist/core/prompts/setup-guide.js.map +1 -1
- package/dist/core/prompts/troubleshoot.d.ts.map +1 -1
- package/dist/core/prompts/troubleshoot.js +2 -1
- package/dist/core/prompts/troubleshoot.js.map +1 -1
- package/dist/core/schemas/index.d.ts.map +1 -1
- package/dist/core/schemas/index.js +9 -4
- package/dist/core/schemas/index.js.map +1 -1
- package/dist/core/schemas/output.d.ts +5 -0
- package/dist/core/schemas/output.d.ts.map +1 -1
- package/dist/core/schemas/output.js +38 -0
- package/dist/core/schemas/output.js.map +1 -1
- package/dist/core/services/article-service.d.ts +3 -0
- package/dist/core/services/article-service.d.ts.map +1 -1
- package/dist/core/services/article-service.js +21 -2
- package/dist/core/services/article-service.js.map +1 -1
- package/dist/core/services/content-parser.d.ts +26 -3
- package/dist/core/services/content-parser.d.ts.map +1 -1
- package/dist/core/services/content-parser.js +35 -0
- package/dist/core/services/content-parser.js.map +1 -1
- package/dist/core/services/ft-internal-link.d.ts +74 -0
- package/dist/core/services/ft-internal-link.d.ts.map +1 -0
- package/dist/core/services/ft-internal-link.js +127 -0
- package/dist/core/services/ft-internal-link.js.map +1 -0
- package/dist/core/services/search-service.d.ts.map +1 -1
- package/dist/core/services/search-service.js +88 -30
- package/dist/core/services/search-service.js.map +1 -1
- package/dist/core/services/search-suggestions.d.ts.map +1 -1
- package/dist/core/services/search-suggestions.js +39 -1
- package/dist/core/services/search-suggestions.js.map +1 -1
- package/dist/core/services/toc-service.d.ts.map +1 -1
- package/dist/core/services/toc-service.js +29 -2
- package/dist/core/services/toc-service.js.map +1 -1
- package/dist/core/services/topic-resolver.d.ts.map +1 -1
- package/dist/core/services/topic-resolver.js +25 -1
- package/dist/core/services/topic-resolver.js.map +1 -1
- package/dist/core/tools/batch-get-articles.d.ts.map +1 -1
- package/dist/core/tools/batch-get-articles.js +21 -11
- package/dist/core/tools/batch-get-articles.js.map +1 -1
- package/dist/core/tools/get-article.d.ts.map +1 -1
- package/dist/core/tools/get-article.js +20 -7
- package/dist/core/tools/get-article.js.map +1 -1
- package/dist/core/tools/get-toc.d.ts.map +1 -1
- package/dist/core/tools/get-toc.js +94 -30
- package/dist/core/tools/get-toc.js.map +1 -1
- package/dist/core/tools/glossary-lookup.js +1 -1
- package/dist/core/tools/glossary-lookup.js.map +1 -1
- package/dist/core/tools/list-products.js +1 -1
- package/dist/core/tools/list-products.js.map +1 -1
- package/dist/core/tools/search.d.ts.map +1 -1
- package/dist/core/tools/search.js +73 -25
- package/dist/core/tools/search.js.map +1 -1
- package/dist/core/types.d.ts +17 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/utils/format-article.d.ts +42 -4
- package/dist/core/utils/format-article.d.ts.map +1 -1
- package/dist/core/utils/format-article.js +88 -13
- package/dist/core/utils/format-article.js.map +1 -1
- package/package.json +5 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/core/schemas/output.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/core/schemas/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ import type { CacheProvider } from './interfaces/cache.js';
|
|
|
11
11
|
import type { ServerContext } from '../types/context.js';
|
|
12
12
|
import type { FetchArticleResult, FetchArticleOptions } from '../types.js';
|
|
13
13
|
import { type TopicResolverInput } from './topic-resolver.js';
|
|
14
|
+
import type { Logger } from './interfaces/logger.js';
|
|
14
15
|
/**
|
|
15
16
|
* Options accepted by {@link fetchArticleFromFt}: the caller-facing article
|
|
16
17
|
* options plus the cache TTL used when storing a freshly fetched article.
|
|
@@ -18,6 +19,8 @@ import { type TopicResolverInput } from './topic-resolver.js';
|
|
|
18
19
|
export interface FetchArticleFromFtOptions extends FetchArticleOptions {
|
|
19
20
|
/** TTL (seconds) for the cached article entry; undefined uses the cache default. */
|
|
20
21
|
cacheTtl?: number;
|
|
22
|
+
/** Used to report a TOC index that would not load; links degrade either way. */
|
|
23
|
+
logger?: Logger | undefined;
|
|
21
24
|
}
|
|
22
25
|
export declare function fetchArticleFromFt(cache: CacheProvider, mapId: string, contentId: string, articleUrl: string, options: FetchArticleFromFtOptions): Promise<FetchArticleResult>;
|
|
23
26
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"article-service.d.ts","sourceRoot":"","sources":["../../../src/core/services/article-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAmC,MAAM,aAAa,CAAC;AAC5G,OAAO,EAA6B,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"article-service.d.ts","sourceRoot":"","sources":["../../../src/core/services/article-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAmC,MAAM,aAAa,CAAC;AAC5G,OAAO,EAA6B,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAOzF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAsCrD;;;GAGG;AACH,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACpE,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAuF7B;AAID;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAwD7B"}
|
|
@@ -11,6 +11,7 @@ import { TOKEN_CONFIG } from '../constants.js';
|
|
|
11
11
|
import { buildDisplayUrl, parseUrl } from './topic-resolver.js';
|
|
12
12
|
import { fetchTopicContent, fetchTopicMetadata } from './ft-client.js';
|
|
13
13
|
import { parseArticle } from './content-parser.js';
|
|
14
|
+
import { buildInternalLinkResolver, collectInternalLinkMapIds, } from './ft-internal-link.js';
|
|
14
15
|
import { getMetaValue, bundleStemToDisplayName, FT_META } from '../utils/ft-metadata.js';
|
|
15
16
|
import { extractSections, extractSummary, extractSection, truncateToTokenLimit, createTokenInfo, } from './tokenizer.js';
|
|
16
17
|
export async function fetchArticleFromFt(cache, mapId, contentId, articleUrl, options) {
|
|
@@ -24,7 +25,21 @@ export async function fetchArticleFromFt(cache, mapId, contentId, articleUrl, op
|
|
|
24
25
|
]);
|
|
25
26
|
const displayUrl = deriveDisplayUrl(topicMeta.readerUrl, articleUrl);
|
|
26
27
|
const { product, version } = extractProductVersion(topicMeta.metadata);
|
|
27
|
-
|
|
28
|
+
// FT's in-documentation links are hrefless spans addressed by TOC node id,
|
|
29
|
+
// so placing them needs the TOC of whichever map(s) they point into. Scoped
|
|
30
|
+
// to the maps this topic actually references: a topic with no internal
|
|
31
|
+
// links collects nothing and the resolver does no I/O. The index is cached
|
|
32
|
+
// per map, so the fetch is shared by every article in it.
|
|
33
|
+
const resolveInternalLink = await buildInternalLinkResolver({
|
|
34
|
+
cache,
|
|
35
|
+
mapIds: collectInternalLinkMapIds(html),
|
|
36
|
+
ttl: options.cacheTtl,
|
|
37
|
+
logger: options.logger,
|
|
38
|
+
});
|
|
39
|
+
const parsed = parseArticle(html, displayUrl, {
|
|
40
|
+
includeRelated: true,
|
|
41
|
+
resolveInternalLink,
|
|
42
|
+
});
|
|
28
43
|
// Metadata title is authoritative; parseArticle h1 is only a fallback
|
|
29
44
|
const title = (topicMeta.title !== undefined && topicMeta.title !== '')
|
|
30
45
|
? topicMeta.title
|
|
@@ -112,7 +127,11 @@ export async function resolveAndFetchArticle(ctx, input, options) {
|
|
|
112
127
|
return { ...article, mapId, contentId };
|
|
113
128
|
}
|
|
114
129
|
// Step 3: Default — fetch from FT API + parse
|
|
115
|
-
const result = await fetchArticleFromFt(cache, mapId, contentId, articleUrl, {
|
|
130
|
+
const result = await fetchArticleFromFt(cache, mapId, contentId, articleUrl, {
|
|
131
|
+
...options,
|
|
132
|
+
cacheTtl: ctx.config.cacheTtl.article,
|
|
133
|
+
logger: ctx.logger.createLogger('article-service'),
|
|
134
|
+
});
|
|
116
135
|
if (resolvedLocale !== undefined && articleUrl !== '') {
|
|
117
136
|
const urlLocale = extractLocaleFromUrl(articleUrl);
|
|
118
137
|
if (urlLocale !== null && urlLocale !== resolvedLocale) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"article-service.js","sourceRoot":"","sources":["../../../src/core/services/article-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,QAAQ,EAA2B,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,YAAY,EAA6B,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,GAChB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"article-service.js","sourceRoot":"","sources":["../../../src/core/services/article-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,10 +8,26 @@
|
|
|
8
8
|
* - Search snippet cleaning
|
|
9
9
|
*/
|
|
10
10
|
import * as cheerio from 'cheerio';
|
|
11
|
+
import { type InternalLinkResolver } from './ft-internal-link.js';
|
|
11
12
|
/**
|
|
12
13
|
* Clean HTML content: remove unwanted elements, fix relative URLs.
|
|
13
14
|
*/
|
|
14
15
|
export declare function cleanHtml($: cheerio.CheerioAPI): void;
|
|
16
|
+
/**
|
|
17
|
+
* Turn Fluid Topics' `<span class="ft-internal-link" data-mapid data-tocid>`
|
|
18
|
+
* into a real `<a href>`.
|
|
19
|
+
*
|
|
20
|
+
* Doing this during cleaning rather than at each read site is what makes one
|
|
21
|
+
* change fix both halves of the symptom: the anchor is what Turndown renders
|
|
22
|
+
* as a Markdown link, *and* what `SELECTORS.RELATED` — which is anchor-based,
|
|
23
|
+
* as every other related-link source on the site is — can finally see.
|
|
24
|
+
*
|
|
25
|
+
* Spans the resolver cannot place are left untouched, so they degrade to the
|
|
26
|
+
* plain text they already were. `data-tocid` cannot be turned into a URL
|
|
27
|
+
* without the map's TOC, so the only way to emit an href here regardless would
|
|
28
|
+
* be to invent one.
|
|
29
|
+
*/
|
|
30
|
+
export declare function linkInternalSpans($: cheerio.CheerioAPI, resolve: InternalLinkResolver): void;
|
|
15
31
|
export interface ParsedArticleContent {
|
|
16
32
|
title: string;
|
|
17
33
|
content: string;
|
|
@@ -21,12 +37,19 @@ export interface ParsedArticleContent {
|
|
|
21
37
|
url: string;
|
|
22
38
|
}[];
|
|
23
39
|
}
|
|
40
|
+
export interface ParseArticleOptions {
|
|
41
|
+
includeRelated?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Lookup for `ft-internal-link` spans. Without one those links keep the
|
|
44
|
+
* pre-resolution behaviour: text in the content, absent from
|
|
45
|
+
* `relatedArticles`. See {@link linkInternalSpans}.
|
|
46
|
+
*/
|
|
47
|
+
resolveInternalLink?: InternalLinkResolver | undefined;
|
|
48
|
+
}
|
|
24
49
|
/**
|
|
25
50
|
* Parse HTML into article structure (title, markdown content, breadcrumb).
|
|
26
51
|
*/
|
|
27
|
-
export declare function parseArticle(html: string, displayUrl: string, options?:
|
|
28
|
-
includeRelated?: boolean;
|
|
29
|
-
}): ParsedArticleContent;
|
|
52
|
+
export declare function parseArticle(html: string, displayUrl: string, options?: ParseArticleOptions): ParsedArticleContent;
|
|
30
53
|
/**
|
|
31
54
|
* Clean an HTML search snippet: strip tags, clean breadcrumb prefixes.
|
|
32
55
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-parser.d.ts","sourceRoot":"","sources":["../../../src/core/services/content-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"content-parser.d.ts","sourceRoot":"","sources":["../../../src/core/services/content-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AA+B1F;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,GAAG,IAAI,CAgBrD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,OAAO,CAAC,UAAU,EACrB,OAAO,EAAE,oBAAoB,GAC5B,IAAI,CAgBN;AAID,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACnD;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;CACxD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,oBAAoB,CAwEtB;AAUD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,MAAM,CAwBR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import * as cheerio from 'cheerio';
|
|
11
11
|
import TurndownService from 'turndown';
|
|
12
12
|
import { DOCS_BASE_URL, SELECTORS } from '../constants.js';
|
|
13
|
+
import { INTERNAL_LINK_SELECTOR } from './ft-internal-link.js';
|
|
13
14
|
// ─── Turndown instance ──────────────────────────────────────────
|
|
14
15
|
const turndown = new TurndownService({
|
|
15
16
|
headingStyle: 'atx',
|
|
@@ -50,12 +51,46 @@ export function cleanHtml($) {
|
|
|
50
51
|
}
|
|
51
52
|
});
|
|
52
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Turn Fluid Topics' `<span class="ft-internal-link" data-mapid data-tocid>`
|
|
56
|
+
* into a real `<a href>`.
|
|
57
|
+
*
|
|
58
|
+
* Doing this during cleaning rather than at each read site is what makes one
|
|
59
|
+
* change fix both halves of the symptom: the anchor is what Turndown renders
|
|
60
|
+
* as a Markdown link, *and* what `SELECTORS.RELATED` — which is anchor-based,
|
|
61
|
+
* as every other related-link source on the site is — can finally see.
|
|
62
|
+
*
|
|
63
|
+
* Spans the resolver cannot place are left untouched, so they degrade to the
|
|
64
|
+
* plain text they already were. `data-tocid` cannot be turned into a URL
|
|
65
|
+
* without the map's TOC, so the only way to emit an href here regardless would
|
|
66
|
+
* be to invent one.
|
|
67
|
+
*/
|
|
68
|
+
export function linkInternalSpans($, resolve) {
|
|
69
|
+
$(INTERNAL_LINK_SELECTOR).each((_, el) => {
|
|
70
|
+
const span = $(el);
|
|
71
|
+
const mapId = span.attr('data-mapid') ?? '';
|
|
72
|
+
const tocId = span.attr('data-tocid') ?? '';
|
|
73
|
+
if (mapId === '' || tocId === '') {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const href = resolve(mapId, tocId);
|
|
77
|
+
if (href === undefined) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
span.replaceWith($('<a></a>').attr('href', href).html(span.html() ?? ''));
|
|
81
|
+
});
|
|
82
|
+
}
|
|
53
83
|
/**
|
|
54
84
|
* Parse HTML into article structure (title, markdown content, breadcrumb).
|
|
55
85
|
*/
|
|
56
86
|
export function parseArticle(html, displayUrl, options) {
|
|
57
87
|
const $ = cheerio.load(html);
|
|
58
88
|
cleanHtml($);
|
|
89
|
+
// Before anything reads anchors: internal links are spans until this runs.
|
|
90
|
+
const resolveInternalLink = options?.resolveInternalLink;
|
|
91
|
+
if (resolveInternalLink !== undefined) {
|
|
92
|
+
linkInternalSpans($, resolveInternalLink);
|
|
93
|
+
}
|
|
59
94
|
// Extract content — try FT API selectors first (most common path),
|
|
60
95
|
// then fall back to generic page selectors.
|
|
61
96
|
// 1. FT API returns HTML fragments wrapped in <div class="content-locale-...">
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-parser.js","sourceRoot":"","sources":["../../../src/core/services/content-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,eAAe,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"content-parser.js","sourceRoot":"","sources":["../../../src/core/services/content-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fluid Topics internal-link resolution
|
|
3
|
+
*
|
|
4
|
+
* FT does not emit anchors for links that stay inside the documentation. It
|
|
5
|
+
* emits a span with the target encoded in data attributes:
|
|
6
|
+
*
|
|
7
|
+
* <span class="link ft-internal-link"
|
|
8
|
+
* data-mapid="FtEgPHSd28ZhPyLlTkrYTA"
|
|
9
|
+
* data-tocid="8Tflt44ylUo_Jo99tcQj5w">Computer Reports</span>
|
|
10
|
+
*
|
|
11
|
+
* and lets the reader SPA rebuild the href client-side. Anything that consumes
|
|
12
|
+
* the raw topic HTML — this server included — sees text with no destination.
|
|
13
|
+
*
|
|
14
|
+
* `data-tocid` is a TOC **node** id, not a topic `contentId`. It is not
|
|
15
|
+
* interchangeable with one: `/api/khub/maps/{mapId}/topics/{tocId}` and
|
|
16
|
+
* `/api/khub/maps/{mapId}/toc/{tocId}` both 404, and no tocId in a map
|
|
17
|
+
* collides with any contentId in it. The one place the two are tied together
|
|
18
|
+
* is the map's own TOC, where every node carries `tocId`, `contentId` and
|
|
19
|
+
* `prettyUrl` side by side — so resolving a tocId means holding that map's TOC.
|
|
20
|
+
*
|
|
21
|
+
* Hence the shape here: fetch `GET /maps/{mapId}/toc` once per map, reduce it
|
|
22
|
+
* to a `tocId -> display URL` index, cache the index, and hand the article
|
|
23
|
+
* parser a synchronous lookup. The fetch happens only when the topic HTML
|
|
24
|
+
* actually contains internal links, and the index is shared by every article
|
|
25
|
+
* in the map, so the amortised cost is one TOC fetch per map per cache TTL.
|
|
26
|
+
*
|
|
27
|
+
* When the TOC cannot be loaded the lookup returns `undefined` and the parser
|
|
28
|
+
* leaves the span as plain text. That is deliberate: a tocId cannot be turned
|
|
29
|
+
* into a URL by string manipulation, so the alternatives to "no link" are all
|
|
30
|
+
* fabricated ones.
|
|
31
|
+
*/
|
|
32
|
+
import type { CacheProvider } from './interfaces/cache.js';
|
|
33
|
+
import type { Logger } from './interfaces/logger.js';
|
|
34
|
+
/** Class FT puts on every link that stays inside the documentation. */
|
|
35
|
+
export declare const INTERNAL_LINK_CLASS = "ft-internal-link";
|
|
36
|
+
/**
|
|
37
|
+
* Spans carrying a resolvable destination. Both attributes are required:
|
|
38
|
+
* without them there is nothing to resolve, and rewriting such a span to an
|
|
39
|
+
* anchor would only produce a dead link.
|
|
40
|
+
*/
|
|
41
|
+
export declare const INTERNAL_LINK_SELECTOR = "span.ft-internal-link[data-mapid][data-tocid]";
|
|
42
|
+
/**
|
|
43
|
+
* Synchronous `(mapId, tocId) -> absolute URL` lookup.
|
|
44
|
+
* Returns `undefined` when the pair cannot be resolved.
|
|
45
|
+
*/
|
|
46
|
+
export type InternalLinkResolver = (mapId: string, tocId: string) => string | undefined;
|
|
47
|
+
/** A resolver that knows nothing — every span stays plain text. */
|
|
48
|
+
export declare const NO_INTERNAL_LINKS: InternalLinkResolver;
|
|
49
|
+
/**
|
|
50
|
+
* Which maps a topic's internal links point into.
|
|
51
|
+
*
|
|
52
|
+
* Usually just the topic's own map, but FT does emit cross-map links, so this
|
|
53
|
+
* reads the attribute rather than assuming. Scanning the raw HTML keeps the
|
|
54
|
+
* caller from having to parse the document a second time only to find out
|
|
55
|
+
* whether a TOC fetch is needed at all — the common case is "no links, no
|
|
56
|
+
* fetch", and that answer costs one `String.includes`.
|
|
57
|
+
*/
|
|
58
|
+
export declare function collectInternalLinkMapIds(html: string): string[];
|
|
59
|
+
export interface InternalLinkResolverOptions {
|
|
60
|
+
cache: CacheProvider;
|
|
61
|
+
/** Maps to index, normally from {@link collectInternalLinkMapIds}. */
|
|
62
|
+
mapIds: readonly string[];
|
|
63
|
+
/** TTL for the cached index; `undefined` uses the cache default. */
|
|
64
|
+
ttl?: number | undefined;
|
|
65
|
+
logger?: Logger | undefined;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Load the TOC index for each map and return a lookup over all of them.
|
|
69
|
+
*
|
|
70
|
+
* An empty `mapIds` performs no I/O, which is what makes it safe to call this
|
|
71
|
+
* on every article: topics without internal links pay nothing.
|
|
72
|
+
*/
|
|
73
|
+
export declare function buildInternalLinkResolver(options: InternalLinkResolverOptions): Promise<InternalLinkResolver>;
|
|
74
|
+
//# sourceMappingURL=ft-internal-link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ft-internal-link.d.ts","sourceRoot":"","sources":["../../../src/core/services/ft-internal-link.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAKrD,uEAAuE;AACvE,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,kDACoB,CAAC;AAExD;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAExF,mEAAmE;AACnE,eAAO,MAAM,iBAAiB,EAAE,oBAAsC,CAAC;AAQvE;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBhE;AA0CD,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,aAAa,CAAC;IACrB,sEAAsE;IACtE,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,oBAAoB,CAAC,CA0B/B"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fluid Topics internal-link resolution
|
|
3
|
+
*
|
|
4
|
+
* FT does not emit anchors for links that stay inside the documentation. It
|
|
5
|
+
* emits a span with the target encoded in data attributes:
|
|
6
|
+
*
|
|
7
|
+
* <span class="link ft-internal-link"
|
|
8
|
+
* data-mapid="FtEgPHSd28ZhPyLlTkrYTA"
|
|
9
|
+
* data-tocid="8Tflt44ylUo_Jo99tcQj5w">Computer Reports</span>
|
|
10
|
+
*
|
|
11
|
+
* and lets the reader SPA rebuild the href client-side. Anything that consumes
|
|
12
|
+
* the raw topic HTML — this server included — sees text with no destination.
|
|
13
|
+
*
|
|
14
|
+
* `data-tocid` is a TOC **node** id, not a topic `contentId`. It is not
|
|
15
|
+
* interchangeable with one: `/api/khub/maps/{mapId}/topics/{tocId}` and
|
|
16
|
+
* `/api/khub/maps/{mapId}/toc/{tocId}` both 404, and no tocId in a map
|
|
17
|
+
* collides with any contentId in it. The one place the two are tied together
|
|
18
|
+
* is the map's own TOC, where every node carries `tocId`, `contentId` and
|
|
19
|
+
* `prettyUrl` side by side — so resolving a tocId means holding that map's TOC.
|
|
20
|
+
*
|
|
21
|
+
* Hence the shape here: fetch `GET /maps/{mapId}/toc` once per map, reduce it
|
|
22
|
+
* to a `tocId -> display URL` index, cache the index, and hand the article
|
|
23
|
+
* parser a synchronous lookup. The fetch happens only when the topic HTML
|
|
24
|
+
* actually contains internal links, and the index is shared by every article
|
|
25
|
+
* in the map, so the amortised cost is one TOC fetch per map per cache TTL.
|
|
26
|
+
*
|
|
27
|
+
* When the TOC cannot be loaded the lookup returns `undefined` and the parser
|
|
28
|
+
* leaves the span as plain text. That is deliberate: a tocId cannot be turned
|
|
29
|
+
* into a URL by string manipulation, so the alternatives to "no link" are all
|
|
30
|
+
* fabricated ones.
|
|
31
|
+
*/
|
|
32
|
+
import { fetchMapToc } from './ft-client.js';
|
|
33
|
+
import { buildDisplayUrl } from './topic-resolver.js';
|
|
34
|
+
// ─── Markup constants ──────────────────────────────────────────
|
|
35
|
+
/** Class FT puts on every link that stays inside the documentation. */
|
|
36
|
+
export const INTERNAL_LINK_CLASS = 'ft-internal-link';
|
|
37
|
+
/**
|
|
38
|
+
* Spans carrying a resolvable destination. Both attributes are required:
|
|
39
|
+
* without them there is nothing to resolve, and rewriting such a span to an
|
|
40
|
+
* anchor would only produce a dead link.
|
|
41
|
+
*/
|
|
42
|
+
export const INTERNAL_LINK_SELECTOR = `span.${INTERNAL_LINK_CLASS}[data-mapid][data-tocid]`;
|
|
43
|
+
/** A resolver that knows nothing — every span stays plain text. */
|
|
44
|
+
export const NO_INTERNAL_LINKS = () => undefined;
|
|
45
|
+
// ─── Map id collection ─────────────────────────────────────────
|
|
46
|
+
const TAG_PATTERN = /<[a-zA-Z][^>]*>/g;
|
|
47
|
+
const MAP_ID_PATTERN = /\bdata-mapid\s*=\s*["']([^"']+)["']/;
|
|
48
|
+
const TOC_ID_PATTERN = /\bdata-tocid\s*=\s*["']([^"']+)["']/;
|
|
49
|
+
/**
|
|
50
|
+
* Which maps a topic's internal links point into.
|
|
51
|
+
*
|
|
52
|
+
* Usually just the topic's own map, but FT does emit cross-map links, so this
|
|
53
|
+
* reads the attribute rather than assuming. Scanning the raw HTML keeps the
|
|
54
|
+
* caller from having to parse the document a second time only to find out
|
|
55
|
+
* whether a TOC fetch is needed at all — the common case is "no links, no
|
|
56
|
+
* fetch", and that answer costs one `String.includes`.
|
|
57
|
+
*/
|
|
58
|
+
export function collectInternalLinkMapIds(html) {
|
|
59
|
+
if (!html.includes(INTERNAL_LINK_CLASS)) {
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
const mapIds = new Set();
|
|
63
|
+
for (const match of html.matchAll(TAG_PATTERN)) {
|
|
64
|
+
const tag = match[0];
|
|
65
|
+
if (!tag.includes(INTERNAL_LINK_CLASS) || TOC_ID_PATTERN.exec(tag) === null) {
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
const mapId = MAP_ID_PATTERN.exec(tag)?.[1];
|
|
69
|
+
if (mapId !== undefined) {
|
|
70
|
+
mapIds.add(mapId);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return [...mapIds];
|
|
74
|
+
}
|
|
75
|
+
const TOC_INDEX_CACHE_PREFIX = 'ft-tocindex:v1:';
|
|
76
|
+
function indexTocNodes(nodes, into) {
|
|
77
|
+
for (const node of nodes) {
|
|
78
|
+
// Both fields are declared required, but `FtTocNode` is a bare cast over
|
|
79
|
+
// `response.json()` with no runtime validation behind it — the same reason
|
|
80
|
+
// `title` and `children` are optional on that type. An empty value here
|
|
81
|
+
// would index a link to nowhere, so it is skipped rather than stored.
|
|
82
|
+
if (node.tocId !== '' && node.prettyUrl !== '') {
|
|
83
|
+
into[node.tocId] = buildDisplayUrl(node.prettyUrl);
|
|
84
|
+
}
|
|
85
|
+
// Absent `children` means a leaf, the same as an empty list.
|
|
86
|
+
indexTocNodes(node.children ?? [], into);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
async function loadTocIdIndex(cache, mapId, ttl) {
|
|
90
|
+
const cacheKey = `${TOC_INDEX_CACHE_PREFIX}${mapId}`;
|
|
91
|
+
const cached = await cache.get(cacheKey);
|
|
92
|
+
if (cached !== null) {
|
|
93
|
+
return cached;
|
|
94
|
+
}
|
|
95
|
+
const index = {};
|
|
96
|
+
indexTocNodes(await fetchMapToc(mapId), index);
|
|
97
|
+
await cache.set(cacheKey, index, ttl);
|
|
98
|
+
return index;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Load the TOC index for each map and return a lookup over all of them.
|
|
102
|
+
*
|
|
103
|
+
* An empty `mapIds` performs no I/O, which is what makes it safe to call this
|
|
104
|
+
* on every article: topics without internal links pay nothing.
|
|
105
|
+
*/
|
|
106
|
+
export async function buildInternalLinkResolver(options) {
|
|
107
|
+
const { cache, mapIds, ttl, logger } = options;
|
|
108
|
+
if (mapIds.length === 0) {
|
|
109
|
+
return NO_INTERNAL_LINKS;
|
|
110
|
+
}
|
|
111
|
+
const indexes = new Map();
|
|
112
|
+
await Promise.all(mapIds.map(async (mapId) => {
|
|
113
|
+
try {
|
|
114
|
+
indexes.set(mapId, await loadTocIdIndex(cache, mapId, ttl));
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
// A TOC that will not load costs its links, not the article. The map
|
|
118
|
+
// stays unindexed, every link into it stays plain text, and the rest
|
|
119
|
+
// of the topic is served exactly as before.
|
|
120
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
121
|
+
logger?.warning(`ft-internal-link: TOC index unavailable for map ${mapId},` +
|
|
122
|
+
` its internal links will render without a destination: ${reason}`);
|
|
123
|
+
}
|
|
124
|
+
}));
|
|
125
|
+
return (mapId, tocId) => indexes.get(mapId)?.[tocId];
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=ft-internal-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ft-internal-link.js","sourceRoot":"","sources":["../../../src/core/services/ft-internal-link.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-service.d.ts","sourceRoot":"","sources":["../../../src/core/services/search-service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,yBAAyB,EACzB,aAAa,EACb,eAAe,EACf,cAAc,EAKf,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"search-service.d.ts","sourceRoot":"","sources":["../../../src/core/services/search-service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,yBAAyB,EACzB,aAAa,EACb,eAAe,EACf,cAAc,EAKf,MAAM,aAAa,CAAC;AAcrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAkBzD,YAAY,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AA8G7D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,GAC5D,cAAc,EAAE,CAiClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,EAAE,GAC1B,aAAa,EAAE,CAyBjB;AAID;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,aAAa,GACnB,YAAY,CAgBd;AAsUD;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,yBAAyB,CAAC,CA4DpC"}
|