@get-technology-inc/jamf-docs-mcp-server 5.4.2 → 5.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 (49) hide show
  1. package/dist/core/constants/limits.d.ts +21 -0
  2. package/dist/core/constants/limits.d.ts.map +1 -1
  3. package/dist/core/constants/limits.js +0 -1
  4. package/dist/core/constants/limits.js.map +1 -1
  5. package/dist/core/constants/sources.d.ts +65 -0
  6. package/dist/core/constants/sources.d.ts.map +1 -0
  7. package/dist/core/constants/sources.js +73 -0
  8. package/dist/core/constants/sources.js.map +1 -0
  9. package/dist/core/schemas/output.d.ts +1 -0
  10. package/dist/core/schemas/output.d.ts.map +1 -1
  11. package/dist/core/schemas/output.js +11 -0
  12. package/dist/core/schemas/output.js.map +1 -1
  13. package/dist/core/services/article-service.d.ts.map +1 -1
  14. package/dist/core/services/article-service.js +18 -27
  15. package/dist/core/services/article-service.js.map +1 -1
  16. package/dist/core/services/article-view.d.ts +21 -0
  17. package/dist/core/services/article-view.d.ts.map +1 -0
  18. package/dist/core/services/article-view.js +48 -0
  19. package/dist/core/services/article-view.js.map +1 -0
  20. package/dist/core/services/cache-key.d.ts +14 -0
  21. package/dist/core/services/cache-key.d.ts.map +1 -1
  22. package/dist/core/services/cache-key.js +1 -0
  23. package/dist/core/services/cache-key.js.map +1 -1
  24. package/dist/core/services/content-parser.d.ts +24 -1
  25. package/dist/core/services/content-parser.d.ts.map +1 -1
  26. package/dist/core/services/content-parser.js +24 -10
  27. package/dist/core/services/content-parser.js.map +1 -1
  28. package/dist/core/services/maps-registry.d.ts +16 -0
  29. package/dist/core/services/maps-registry.d.ts.map +1 -1
  30. package/dist/core/services/maps-registry.js +20 -8
  31. package/dist/core/services/maps-registry.js.map +1 -1
  32. package/dist/core/services/static-article-service.d.ts +38 -0
  33. package/dist/core/services/static-article-service.d.ts.map +1 -0
  34. package/dist/core/services/static-article-service.js +121 -0
  35. package/dist/core/services/static-article-service.js.map +1 -0
  36. package/dist/core/services/toc-service.d.ts.map +1 -1
  37. package/dist/core/services/toc-service.js +15 -7
  38. package/dist/core/services/toc-service.js.map +1 -1
  39. package/dist/core/tools/get-toc.d.ts.map +1 -1
  40. package/dist/core/tools/get-toc.js +26 -1
  41. package/dist/core/tools/get-toc.js.map +1 -1
  42. package/dist/core/types.d.ts +10 -0
  43. package/dist/core/types.d.ts.map +1 -1
  44. package/dist/core/types.js.map +1 -1
  45. package/dist/core/utils/url.d.ts +9 -1
  46. package/dist/core/utils/url.d.ts.map +1 -1
  47. package/dist/core/utils/url.js +11 -1
  48. package/dist/core/utils/url.js.map +1 -1
  49. package/package.json +1 -1
@@ -29,6 +29,27 @@ export declare const PAGINATION_CONFIG: {
29
29
  readonly DEFAULT_PAGE_SIZE: 10;
30
30
  readonly MAX_PAGE: 100;
31
31
  };
32
+ /**
33
+ * The CSS selectors one documentation source needs to be readable.
34
+ *
35
+ * Extracted as a type because `SELECTORS` below describes learn.jamf.com
36
+ * specifically — its `<article>` markup, its breadcrumb classes, the wrappers
37
+ * Fluid Topics emits — and a second source has different ones. Declaring the
38
+ * shape lets each source carry its own set instead of every source being
39
+ * parsed as though it were Fluid Topics.
40
+ */
41
+ export interface SelectorSet {
42
+ /** Where the article body lives. */
43
+ readonly CONTENT: string;
44
+ /** The page title. */
45
+ readonly TITLE: string;
46
+ /** Breadcrumb trail anchors. */
47
+ readonly BREADCRUMB: string;
48
+ /** Related-article anchors. */
49
+ readonly RELATED: string;
50
+ /** Everything to strip before converting to Markdown. */
51
+ readonly REMOVE: string;
52
+ }
32
53
  export declare const SELECTORS: {
33
54
  readonly CONTENT: "article, .article-content, main article, #content";
34
55
  readonly TITLE: "h1";
@@ -1 +1 @@
1
- {"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../../src/core/constants/limits.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,oBAAY,cAAc;IACxB,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AAGD,oBAAY,UAAU;IACpB,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAGD,eAAO,MAAM,cAAc;;;;;;;CAOjB,CAAC;AAGX,eAAO,MAAM,YAAY;;;;;;CAMf,CAAC;AAGX,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAGX,eAAO,MAAM,SAAS;;;;;;CAaZ,CAAC"}
1
+ {"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../../src/core/constants/limits.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,oBAAY,cAAc;IACxB,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AAGD,oBAAY,UAAU;IACpB,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAGD,eAAO,MAAM,cAAc;;;;;;;CAOjB,CAAC;AAGX,eAAO,MAAM,YAAY;;;;;;CAMf,CAAC;AAGX,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAGX;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,oCAAoC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,sBAAsB;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+BAA+B;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,SAAS;;;;;;CAaU,CAAC"}
@@ -36,7 +36,6 @@ export const PAGINATION_CONFIG = {
36
36
  DEFAULT_PAGE_SIZE: 10,
37
37
  MAX_PAGE: 100
38
38
  };
39
- // HTML selectors for learn.jamf.com (React-based site)
40
39
  export const SELECTORS = {
41
40
  // Main content - learn.jamf.com uses semantic article tag
42
41
  CONTENT: 'article, .article-content, main article, #content',
@@ -1 +1 @@
1
- {"version":3,"file":"limits.js","sourceRoot":"","sources":["../../../src/core/constants/limits.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,kBAAkB;AAClB,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,+BAAa,CAAA;AACf,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,6BAA6B;AAC7B,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,iCAAmB,CAAA;AACrB,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAED,iBAAiB;AACjB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,kBAAkB,EAAE,EAAE;IACtB,sBAAsB,EAAE,EAAE;IAC1B,2BAA2B,EAAE,CAAC,EAAQ,wDAAwD;IAC9F,oBAAoB,EAAE,GAAG,EAAa,uCAAuC;IAC7E,kBAAkB,EAAE,MAAM,EAAY,QAAQ;IAC9C,kBAAkB,EAAE,GAAG;CACf,CAAC;AAEX,uCAAuC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,kBAAkB,EAAE,IAAI;IACxB,gBAAgB,EAAE,KAAK;IACvB,UAAU,EAAE,GAAG;IACf,eAAe,EAAE,CAAC,EAAG,mBAAmB;IACxC,oBAAoB,EAAE,CAAC,CAAE,wCAAwC;CACzD,CAAC;AAEX,2BAA2B;AAC3B,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,YAAY,EAAE,CAAC;IACf,iBAAiB,EAAE,EAAE;IACrB,QAAQ,EAAE,GAAG;CACL,CAAC;AAEX,uDAAuD;AACvD,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,0DAA0D;IAC1D,OAAO,EAAE,mDAAmD;IAC5D,KAAK,EAAE,IAAI;IAEX,wCAAwC;IACxC,UAAU,EAAE,yDAAyD;IAErE,kBAAkB;IAClB,OAAO,EAAE,8DAA8D;IAEvE,+CAA+C;IAC/C,MAAM,EAAE,oHAAoH;CACpH,CAAC"}
1
+ {"version":3,"file":"limits.js","sourceRoot":"","sources":["../../../src/core/constants/limits.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,kBAAkB;AAClB,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,+BAAa,CAAA;AACf,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,6BAA6B;AAC7B,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,iCAAmB,CAAA;AACrB,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAED,iBAAiB;AACjB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,kBAAkB,EAAE,EAAE;IACtB,sBAAsB,EAAE,EAAE;IAC1B,2BAA2B,EAAE,CAAC,EAAQ,wDAAwD;IAC9F,oBAAoB,EAAE,GAAG,EAAa,uCAAuC;IAC7E,kBAAkB,EAAE,MAAM,EAAY,QAAQ;IAC9C,kBAAkB,EAAE,GAAG;CACf,CAAC;AAEX,uCAAuC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,kBAAkB,EAAE,IAAI;IACxB,gBAAgB,EAAE,KAAK;IACvB,UAAU,EAAE,GAAG;IACf,eAAe,EAAE,CAAC,EAAG,mBAAmB;IACxC,oBAAoB,EAAE,CAAC,CAAE,wCAAwC;CACzD,CAAC;AAEX,2BAA2B;AAC3B,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,YAAY,EAAE,CAAC;IACf,iBAAiB,EAAE,EAAE;IACrB,QAAQ,EAAE,GAAG;CACL,CAAC;AAyBX,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,0DAA0D;IAC1D,OAAO,EAAE,mDAAmD;IAC5D,KAAK,EAAE,IAAI;IAEX,wCAAwC;IACxC,UAAU,EAAE,yDAAyD;IAErE,kBAAkB;IAClB,OAAO,EAAE,8DAA8D;IAEvE,+CAA+C;IAC/C,MAAM,EAAE,oHAAoH;CAC9F,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Documentation sources outside Fluid Topics.
3
+ *
4
+ * `learn.jamf.com` is a Fluid Topics instance and is addressed through
5
+ * bundles, maps and topics; everything in this file is a plain website that
6
+ * happens to hold Jamf documentation. They need different selectors, a
7
+ * different link-rewrite base, and their own cache namespace, so they are
8
+ * described here rather than being squeezed into {@link JAMF_PRODUCTS}.
9
+ *
10
+ * Adding a source means adding a row here, teaching
11
+ * {@link ALLOWED_HOSTNAMES} nothing (it derives from this table), and nothing
12
+ * else: the article path dispatches on hostname.
13
+ */
14
+ import { type SelectorSet } from './limits.js';
15
+ export interface StaticDocSource {
16
+ /** Stable id, used as the cache namespace discriminator. */
17
+ readonly id: string;
18
+ /** The single hostname this source serves from. */
19
+ readonly hostname: string;
20
+ /** Origin, without a trailing slash. Root-relative links resolve against it. */
21
+ readonly baseUrl: string;
22
+ /** Human name, for prose and error messages. */
23
+ readonly name: string;
24
+ /** How to read this source's HTML. */
25
+ readonly selectors: SelectorSet;
26
+ /**
27
+ * Appended to every article served from this source.
28
+ *
29
+ * Not decoration. Jamf Concepts describes itself as an innovation lab whose
30
+ * subjects "aren't official products, although some of them might be one
31
+ * day" — presenting that beside learn.jamf.com's product documentation
32
+ * without saying which is which would be the actual error.
33
+ */
34
+ readonly provenance?: string;
35
+ }
36
+ export declare const STATIC_DOC_SOURCES: {
37
+ readonly 'jamf-concepts': {
38
+ readonly id: "jamf-concepts";
39
+ readonly hostname: "concepts.jamf.com";
40
+ readonly baseUrl: "https://concepts.jamf.com";
41
+ readonly name: "Jamf Concepts";
42
+ readonly selectors: {
43
+ readonly CONTENT: "article, [class*=\"prose\"]";
44
+ readonly TITLE: "h1";
45
+ readonly BREADCRUMB: "[class*=\"breadcrumb\"] a";
46
+ readonly RELATED: "[class*=\"related\"] a";
47
+ readonly REMOVE: string;
48
+ };
49
+ readonly provenance: string;
50
+ };
51
+ };
52
+ export type StaticSourceId = keyof typeof STATIC_DOC_SOURCES;
53
+ /** Every non-Fluid-Topics hostname this server will fetch from. */
54
+ export declare const STATIC_SOURCE_HOSTNAMES: readonly string[];
55
+ /** The source that serves a hostname, or undefined when none does. */
56
+ export declare function staticSourceForHostname(hostname: string): StaticDocSource | undefined;
57
+ /**
58
+ * The source a URL belongs to, or undefined for Fluid Topics and anything else.
59
+ *
60
+ * Returns undefined rather than throwing on an unparseable URL: callers use
61
+ * this to *choose* a path, and the existing validation is what rejects a bad
62
+ * URL with a message about it.
63
+ */
64
+ export declare function staticSourceForUrl(urlStr: string): StaticDocSource | undefined;
65
+ //# sourceMappingURL=sources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../../src/core/constants/sources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gFAAgF;IAChF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,gDAAgD;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAiBD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;CAwBqB,CAAC;AAErD,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAE7D,mEAAmE;AACnE,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EACa,CAAC;AAEnE,sEAAsE;AACtE,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAErF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAM9E"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Documentation sources outside Fluid Topics.
3
+ *
4
+ * `learn.jamf.com` is a Fluid Topics instance and is addressed through
5
+ * bundles, maps and topics; everything in this file is a plain website that
6
+ * happens to hold Jamf documentation. They need different selectors, a
7
+ * different link-rewrite base, and their own cache namespace, so they are
8
+ * described here rather than being squeezed into {@link JAMF_PRODUCTS}.
9
+ *
10
+ * Adding a source means adding a row here, teaching
11
+ * {@link ALLOWED_HOSTNAMES} nothing (it derives from this table), and nothing
12
+ * else: the article path dispatches on hostname.
13
+ */
14
+ import { SELECTORS } from './limits.js';
15
+ /**
16
+ * Elements to strip that a static marketing-shaped site has and a Fluid
17
+ * Topics fragment does not.
18
+ *
19
+ * `nav`, `header` and `aside` are deliberately absent from
20
+ * {@link SELECTORS}.REMOVE: that set is also used by the glossary path and by
21
+ * every learn.jamf.com article, where removing them would change existing
22
+ * output. Here they are the difference between an article and an article
23
+ * plus the entire site navigation — one Concepts guide measures 23,824
24
+ * characters of text with the nav in and would spend a large part of any
25
+ * token budget on a sidebar.
26
+ */
27
+ const STATIC_PAGE_REMOVE = `${SELECTORS.REMOVE}, nav, header, aside, [role="navigation"], [class*="sidebar"]`;
28
+ export const STATIC_DOC_SOURCES = {
29
+ 'jamf-concepts': {
30
+ id: 'jamf-concepts',
31
+ hostname: 'concepts.jamf.com',
32
+ baseUrl: 'https://concepts.jamf.com',
33
+ name: 'Jamf Concepts',
34
+ selectors: {
35
+ // Every page type — guide, concept, about — wraps its body in exactly
36
+ // one `<article class="prose">`. `main` is deliberately NOT listed:
37
+ // `.html()` takes the first match in *document* order regardless of
38
+ // selector order, and `<main class="flex-1">` opens before the article
39
+ // and encloses the 220px sidebar. Including it pulled the whole guide
40
+ // index in ahead of the content.
41
+ CONTENT: 'article, [class*="prose"]',
42
+ TITLE: 'h1',
43
+ BREADCRUMB: '[class*="breadcrumb"] a',
44
+ RELATED: '[class*="related"] a',
45
+ REMOVE: STATIC_PAGE_REMOVE,
46
+ },
47
+ provenance: 'Source: Jamf Concepts (concepts.jamf.com), Jamf\'s innovation lab. ' +
48
+ 'This is exploratory material, not official product documentation — ' +
49
+ 'see learn.jamf.com for the supported configuration steps.',
50
+ },
51
+ };
52
+ /** Every non-Fluid-Topics hostname this server will fetch from. */
53
+ export const STATIC_SOURCE_HOSTNAMES = Object.values(STATIC_DOC_SOURCES).map(source => source.hostname);
54
+ /** The source that serves a hostname, or undefined when none does. */
55
+ export function staticSourceForHostname(hostname) {
56
+ return Object.values(STATIC_DOC_SOURCES).find(source => source.hostname === hostname);
57
+ }
58
+ /**
59
+ * The source a URL belongs to, or undefined for Fluid Topics and anything else.
60
+ *
61
+ * Returns undefined rather than throwing on an unparseable URL: callers use
62
+ * this to *choose* a path, and the existing validation is what rejects a bad
63
+ * URL with a message about it.
64
+ */
65
+ export function staticSourceForUrl(urlStr) {
66
+ try {
67
+ return staticSourceForHostname(new URL(urlStr).hostname);
68
+ }
69
+ catch {
70
+ return undefined;
71
+ }
72
+ }
73
+ //# sourceMappingURL=sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../../src/core/constants/sources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAoB,MAAM,aAAa,CAAC;AAwB1D;;;;;;;;;;;GAWG;AACH,MAAM,kBAAkB,GACtB,GAAG,SAAS,CAAC,MAAM,+DAA+D,CAAC;AAErF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,eAAe,EAAE;QACf,EAAE,EAAE,eAAe;QACnB,QAAQ,EAAE,mBAAmB;QAC7B,OAAO,EAAE,2BAA2B;QACpC,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE;YACT,sEAAsE;YACtE,oEAAoE;YACpE,oEAAoE;YACpE,uEAAuE;YACvE,sEAAsE;YACtE,iCAAiC;YACjC,OAAO,EAAE,2BAA2B;YACpC,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,yBAAyB;YACrC,OAAO,EAAE,sBAAsB;YAC/B,MAAM,EAAE,kBAAkB;SAC3B;QACD,UAAU,EACR,qEAAqE;YACrE,qEAAqE;YACrE,2DAA2D;KAC9D;CACiD,CAAC;AAIrD,mEAAmE;AACnE,MAAM,CAAC,MAAM,uBAAuB,GAClC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEnE,sEAAsE;AACtE,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,OAAO,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AACxF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,IAAI,CAAC;QACH,OAAO,uBAAuB,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -169,6 +169,7 @@ export declare const TocOutputSchema: z.ZodObject<{
169
169
  depth: z.ZodNumber;
170
170
  }, z.core.$strip>>;
171
171
  versionNote: z.ZodOptional<z.ZodString>;
172
+ localeNote: z.ZodOptional<z.ZodString>;
172
173
  paginationNote: z.ZodOptional<z.ZodString>;
173
174
  }, z.core.$strip>;
174
175
  //# sourceMappingURL=output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/core/schemas/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;iBAqClC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqE7B,CAAC;AAQH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0D9B,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAE1E,eAAO,MAAM,0BAA0B;;;;;;;;;;iBAUrC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;iBAepC,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;iBAqE1B,CAAC"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/core/schemas/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;iBAqClC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqE7B,CAAC;AAQH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0D9B,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAE1E,eAAO,MAAM,0BAA0B;;;;;;;;;;iBAUrC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;iBAepC,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;iBAgF1B,CAAC"}
@@ -267,6 +267,17 @@ export const TocOutputSchema = z.object({
267
267
  * what the tool actually emits.
268
268
  */
269
269
  versionNote: z.string().optional(),
270
+ /**
271
+ * Set when Jamf does not publish this document in the requested language and
272
+ * the en-US edition was served instead.
273
+ *
274
+ * 42 of the 97 publication families are en-US only and several products are
275
+ * translated into a different six locales than the rest, so this is a
276
+ * routine outcome rather than an error — but without saying so, an English
277
+ * table of contents returned for a zh-TW request is indistinguishable from
278
+ * a translated one.
279
+ */
280
+ localeNote: z.string().optional(),
270
281
  /** Set when `page` was clamped to the last available page. */
271
282
  paginationNote: z.string().optional(),
272
283
  });
@@ -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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"}
@@ -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;AAQzF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AA8CrD;;;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,CA0H7B;AAID;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAwD7B"}
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;AAWzF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAwCrD;;;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,CA6F7B;AAID;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAsE7B"}
@@ -11,10 +11,13 @@ 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 { staticSourceForUrl } from '../constants/sources.js';
15
+ import { buildArticleView } from './article-view.js';
16
+ import { fetchStaticArticle } from './static-article-service.js';
14
17
  import { buildInternalLinkResolver, collectInternalLinkMapIds, fetchTopicAncestors, } from './ft-internal-link.js';
15
18
  import { cacheKey } from './cache-key.js';
16
19
  import { getMetaValue, bundleStemToDisplayName, FT_META } from '../utils/ft-metadata.js';
17
- import { extractSections, extractSummary, extractSection, truncateToTokenLimit, createTokenInfo, } from './tokenizer.js';
20
+ import { extractSections } from './tokenizer.js';
18
21
  export async function fetchArticleFromFt(cache, mapId, contentId, articleUrl, options) {
19
22
  const maxTokens = options.maxTokens ?? TOKEN_CONFIG.DEFAULT_MAX_TOKENS;
20
23
  const key = cacheKey('ft-article-v3', { mapId, contentId, articleUrl });
@@ -97,32 +100,7 @@ export async function fetchArticleFromFt(cache, mapId, contentId, articleUrl, op
97
100
  contentId,
98
101
  sections: allSections,
99
102
  };
100
- // ── summaryOnly mode ──
101
- if (options.summaryOnly === true) {
102
- const summaryResult = extractSummary(parsed.content, title, maxTokens);
103
- let summaryContent = `## Summary\n\n${summaryResult.summary}\n\n`;
104
- summaryContent += `## Article Outline (${summaryResult.outline.length} sections)\n\n`;
105
- for (const section of summaryResult.outline) {
106
- const indent = ' '.repeat(Math.max(0, section.level - 1));
107
- summaryContent += `${indent}- ${section.title} (~${section.tokenCount} tokens)\n`;
108
- }
109
- summaryContent += `\n*Estimated read time: ${summaryResult.estimatedReadTime} min`
110
- + ` (${summaryResult.totalTokens.toLocaleString()} tokens)*\n`;
111
- return { ...base, content: summaryContent, tokenInfo: summaryResult.tokenInfo };
112
- }
113
- // ── Section extraction ──
114
- if (options.section !== undefined && options.section !== '') {
115
- const sectionResult = extractSection(parsed.content, options.section, maxTokens);
116
- if (sectionResult.section !== null) {
117
- return { ...base, content: sectionResult.content, tokenInfo: sectionResult.tokenInfo };
118
- }
119
- const sectionsList = allSections.map(s => `- ${s.title}`).join('\n');
120
- const notFoundMsg = `*Section "${options.section}" not found.*\n\n**Available sections:**\n${sectionsList}`;
121
- return { ...base, content: notFoundMsg, tokenInfo: createTokenInfo(notFoundMsg, maxTokens) };
122
- }
123
- // ── Full content with truncation ──
124
- const truncateResult = truncateToTokenLimit(parsed.content, maxTokens, allSections);
125
- return { ...base, content: truncateResult.content, tokenInfo: truncateResult.tokenInfo };
103
+ return buildArticleView(base, parsed.content, options, maxTokens, allSections);
126
104
  }
127
105
  // ─── Resolve + fetch (shared by get-article & batch-get-articles) ──
128
106
  /**
@@ -136,6 +114,19 @@ export async function fetchArticleFromFt(cache, mapId, contentId, articleUrl, op
136
114
  export async function resolveAndFetchArticle(ctx, input, options) {
137
115
  const { topicResolver, cache, articleProvider } = ctx;
138
116
  const articleUrl = input.url ?? '';
117
+ // Step 0: Non-Fluid-Topics sources, before anything tries to parse the URL
118
+ // as a Fluid Topics one.
119
+ //
120
+ // `topicResolver.parseUrl` only recognises `/{locale}/bundle/…/page/…` and
121
+ // `/r/{locale}/…`, so a concepts.jamf.com URL threw INVALID_URL at step 1 —
122
+ // before `articleProvider.getArticle`, the documented URL fallback, was
123
+ // ever reached. Dispatching on hostname first is what makes a second source
124
+ // reachable at all; for a Fluid Topics URL this is one Set lookup and the
125
+ // flow below is unchanged.
126
+ const staticSource = staticSourceForUrl(articleUrl);
127
+ if (staticSource !== undefined) {
128
+ return await fetchStaticArticle(ctx, staticSource, articleUrl, options);
129
+ }
139
130
  // Step 1: Resolve mapId + contentId
140
131
  let { mapId, contentId } = input;
141
132
  let resolvedLocale;
@@ -1 +1 @@
1
- {"version":3,"file":"article-service.js","sourceRoot":"","sources":["../../../src/core/services/article-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"article-service.js","sourceRoot":"","sources":["../../../src/core/services/article-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The three shapes an article response can take.
3
+ *
4
+ * Its own module rather than a member of `article-service`: the static-source
5
+ * path needs it too, and importing it from there would make the two services
6
+ * cyclic — `article-service` dispatches into `static-article-service`, which
7
+ * would import back. ESM tolerates that; a reader tracing which module owns
8
+ * what does not.
9
+ */
10
+ import type { ArticleSection, FetchArticleOptions, FetchArticleResult } from '../types.js';
11
+ /**
12
+ * Turn a parsed article and the caller's options into the view they asked for.
13
+ *
14
+ * Three mutually exclusive shapes — an outline, one named section, or the
15
+ * whole thing truncated to budget — none of which depend on where the HTML
16
+ * came from. Shared so a second source cannot drift from the first on the
17
+ * part callers actually see: the "Available sections" list a missed section
18
+ * falls back to, the read-time footer, the token accounting.
19
+ */
20
+ export declare function buildArticleView(base: Omit<FetchArticleResult, 'content' | 'tokenInfo'>, content: string, options: Pick<FetchArticleOptions, 'summaryOnly' | 'section'>, maxTokens: number, allSections: ArticleSection[]): FetchArticleResult;
21
+ //# sourceMappingURL=article-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"article-view.d.ts","sourceRoot":"","sources":["../../../src/core/services/article-view.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE3F;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,WAAW,CAAC,EACvD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa,GAAG,SAAS,CAAC,EAC7D,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,cAAc,EAAE,GAC5B,kBAAkB,CA+BpB"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * The three shapes an article response can take.
3
+ *
4
+ * Its own module rather than a member of `article-service`: the static-source
5
+ * path needs it too, and importing it from there would make the two services
6
+ * cyclic — `article-service` dispatches into `static-article-service`, which
7
+ * would import back. ESM tolerates that; a reader tracing which module owns
8
+ * what does not.
9
+ */
10
+ import { createTokenInfo, truncateToTokenLimit, extractSummary, extractSection } from './tokenizer.js';
11
+ /**
12
+ * Turn a parsed article and the caller's options into the view they asked for.
13
+ *
14
+ * Three mutually exclusive shapes — an outline, one named section, or the
15
+ * whole thing truncated to budget — none of which depend on where the HTML
16
+ * came from. Shared so a second source cannot drift from the first on the
17
+ * part callers actually see: the "Available sections" list a missed section
18
+ * falls back to, the read-time footer, the token accounting.
19
+ */
20
+ export function buildArticleView(base, content, options, maxTokens, allSections) {
21
+ // ── summaryOnly mode ──
22
+ if (options.summaryOnly === true) {
23
+ const summaryResult = extractSummary(content, base.title, maxTokens);
24
+ let summaryContent = `## Summary\n\n${summaryResult.summary}\n\n`;
25
+ summaryContent += `## Article Outline (${summaryResult.outline.length} sections)\n\n`;
26
+ for (const section of summaryResult.outline) {
27
+ const indent = ' '.repeat(Math.max(0, section.level - 1));
28
+ summaryContent += `${indent}- ${section.title} (~${section.tokenCount} tokens)\n`;
29
+ }
30
+ summaryContent += `\n*Estimated read time: ${summaryResult.estimatedReadTime} min`
31
+ + ` (${summaryResult.totalTokens.toLocaleString()} tokens)*\n`;
32
+ return { ...base, content: summaryContent, tokenInfo: summaryResult.tokenInfo };
33
+ }
34
+ // ── Section extraction ──
35
+ if (options.section !== undefined && options.section !== '') {
36
+ const sectionResult = extractSection(content, options.section, maxTokens);
37
+ if (sectionResult.section !== null) {
38
+ return { ...base, content: sectionResult.content, tokenInfo: sectionResult.tokenInfo };
39
+ }
40
+ const sectionsList = allSections.map(s => `- ${s.title}`).join('\n');
41
+ const notFoundMsg = `*Section "${options.section}" not found.*\n\n**Available sections:**\n${sectionsList}`;
42
+ return { ...base, content: notFoundMsg, tokenInfo: createTokenInfo(notFoundMsg, maxTokens) };
43
+ }
44
+ // ── Full content with truncation ──
45
+ const truncateResult = truncateToTokenLimit(content, maxTokens, allSections);
46
+ return { ...base, content: truncateResult.content, tokenInfo: truncateResult.tokenInfo };
47
+ }
48
+ //# sourceMappingURL=article-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"article-view.js","sourceRoot":"","sources":["../../../src/core/services/article-view.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGvG;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAuD,EACvD,OAAe,EACf,OAA6D,EAC7D,SAAiB,EACjB,WAA6B;IAE7B,yBAAyB;IACzB,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACrE,IAAI,cAAc,GAAG,iBAAiB,aAAa,CAAC,OAAO,MAAM,CAAC;QAClE,cAAc,IAAI,uBAAuB,aAAa,CAAC,OAAO,CAAC,MAAM,gBAAgB,CAAC;QACtF,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3D,cAAc,IAAI,GAAG,MAAM,KAAK,OAAO,CAAC,KAAK,MAAM,OAAO,CAAC,UAAU,YAAY,CAAC;QACpF,CAAC;QACD,cAAc,IAAI,2BAA2B,aAAa,CAAC,iBAAiB,MAAM;cAC9E,KAAK,aAAa,CAAC,WAAW,CAAC,cAAc,EAAE,aAAa,CAAC;QAEjE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC;IAClF,CAAC;IAED,2BAA2B;IAC3B,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;QAC5D,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC1E,IAAI,aAAa,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACnC,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC;QACzF,CAAC;QACD,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,WAAW,GACf,aAAa,OAAO,CAAC,OAAO,6CAA6C,YAAY,EAAE,CAAC;QAC1F,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;IAC/F,CAAC;IAED,qCAAqC;IACrC,MAAM,cAAc,GAAG,oBAAoB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAC7E,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,CAAC,SAAS,EAAE,CAAC;AAC3F,CAAC"}
@@ -97,6 +97,20 @@ export interface CacheKeySpaces {
97
97
  mapId: string;
98
98
  contentId: string;
99
99
  };
100
+ /**
101
+ * An article from a non-Fluid-Topics source, keyed on the URL it was
102
+ * fetched from.
103
+ *
104
+ * Not folded into `ft-article-v3`: that space is `{mapId, contentId,
105
+ * articleUrl}`, and a static page has neither of the first two. `source`
106
+ * rides along so two sources cannot collide on a path, even though the URL
107
+ * alone already carries the hostname — it keeps the namespace readable on
108
+ * disk, which is the stated reason these keys are not just hashes.
109
+ */
110
+ 'static-article': {
111
+ source: string;
112
+ url: string;
113
+ };
100
114
  'maps-registry-v2': null;
101
115
  'metadata-products-v2': null;
102
116
  'metadata-topics': null;
@@ -1 +1 @@
1
- {"version":3,"file":"cache-key.d.ts","sourceRoot":"","sources":["../../../src/core/services/cache-key.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AAE7C,8EAA8E;AAC9E,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAErE,KAAK,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAEvD;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,SAAS,aAAa,EAAE,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;AAEvF;;;;;;;;GAQG;AAMH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,sBAAsB,CAAC;KACjC,CAAC;IASF,eAAe,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAQ1E,QAAQ,EAAE;QAAE,MAAM,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,gBAAgB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,gBAAgB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IASpC,cAAc,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,kBAAkB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,kBAAkB,EAAE,IAAI,CAAC;IACzB,sBAAsB,EAAE,IAAI,CAAC;IAC7B,iBAAiB,EAAE,IAAI,CAAC;IACxB,+BAA+B,EAAE,IAAI,CAAC;CACvC;AAID,MAAM,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC;AAqDlD,qFAAqF;AACrF,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EACK,CAAC;AAE5D,sFAAsF;AACtF,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,cAAc,IAC/C,cAAc,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAqCnE;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,cAAc,EAC/C,SAAS,EAAE,CAAC,EACZ,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GACvB,QAAQ,CAMV"}
1
+ {"version":3,"file":"cache-key.d.ts","sourceRoot":"","sources":["../../../src/core/services/cache-key.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AAE7C,8EAA8E;AAC9E,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAErE,KAAK,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAEvD;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,SAAS,aAAa,EAAE,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;AAEvF;;;;;;;;GAQG;AAMH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,sBAAsB,CAAC;KACjC,CAAC;IASF,eAAe,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAQ1E,QAAQ,EAAE;QAAE,MAAM,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,gBAAgB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,gBAAgB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IASpC,cAAc,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,kBAAkB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD;;;;;;;;;OASG;IACH,gBAAgB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,kBAAkB,EAAE,IAAI,CAAC;IACzB,sBAAsB,EAAE,IAAI,CAAC;IAC7B,iBAAiB,EAAE,IAAI,CAAC;IACxB,+BAA+B,EAAE,IAAI,CAAC;CACvC;AAID,MAAM,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC;AAsDlD,qFAAqF;AACrF,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EACK,CAAC;AAE5D,sFAAsF;AACtF,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,cAAc,IAC/C,cAAc,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAqCnE;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,cAAc,EAC/C,SAAS,EAAE,CAAC,EACZ,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GACvB,QAAQ,CAMV"}
@@ -46,6 +46,7 @@ const CACHE_NAMESPACE_REGISTRY = {
46
46
  'ft-topic-index': true,
47
47
  'glossary-toc': true,
48
48
  'glossary-content': true,
49
+ 'static-article': true,
49
50
  'maps-registry-v2': true,
50
51
  'metadata-products-v2': true,
51
52
  'metadata-topics': true,
@@ -1 +1 @@
1
- {"version":3,"file":"cache-key.js","sourceRoot":"","sources":["../../../src/core/services/cache-key.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAyHH;;;;;;GAMG;AACH,MAAM,wBAAwB,GAE1B;IACF,WAAW,EAAE,IAAI;IACjB,eAAe,EAAE,IAAI;IACrB,QAAQ,EAAE,IAAI;IACd,gBAAgB,EAAE,IAAI;IACtB,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,IAAI;IACpB,kBAAkB,EAAE,IAAI;IACxB,kBAAkB,EAAE,IAAI;IACxB,sBAAsB,EAAE,IAAI;IAC5B,iBAAiB,EAAE,IAAI;IACvB,+BAA+B,EAAE,IAAI;CACtC,CAAC;AAEF,qFAAqF;AACrF,MAAM,CAAC,MAAM,gBAAgB,GAC3B,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAqB,CAAC;AAM5D;;;;GAIG;AACH,SAAS,YAAY,CAAC,KAAuB;IAC3C,MAAM,SAAS,GAAkC,EAAE,CAAC;IACpD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC1B,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,KAAoB,EAAE,IAAY;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,SAAS,CACjB,mBAAmB,IAAI,QAAQ,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAC1F,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAAC,YAAY,CAAC,IAAqB,EAAE,IAAI,CAAC,CAAC;QAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CACtB,SAAY,EACZ,GAAG,IAAqB;IAExB,6EAA6E;IAC7E,yEAAyE;IACzE,MAAM,CAAC,KAAK,CAAC,GAAG,IAAoC,CAAC;IACrD,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;IACrF,OAAO,GAAG,SAAS,GAAG,OAAO,EAAc,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"cache-key.js","sourceRoot":"","sources":["../../../src/core/services/cache-key.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAoIH;;;;;;GAMG;AACH,MAAM,wBAAwB,GAE1B;IACF,WAAW,EAAE,IAAI;IACjB,eAAe,EAAE,IAAI;IACrB,QAAQ,EAAE,IAAI;IACd,gBAAgB,EAAE,IAAI;IACtB,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,IAAI;IACpB,kBAAkB,EAAE,IAAI;IACxB,gBAAgB,EAAE,IAAI;IACtB,kBAAkB,EAAE,IAAI;IACxB,sBAAsB,EAAE,IAAI;IAC5B,iBAAiB,EAAE,IAAI;IACvB,+BAA+B,EAAE,IAAI;CACtC,CAAC;AAEF,qFAAqF;AACrF,MAAM,CAAC,MAAM,gBAAgB,GAC3B,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAqB,CAAC;AAM5D;;;;GAIG;AACH,SAAS,YAAY,CAAC,KAAuB;IAC3C,MAAM,SAAS,GAAkC,EAAE,CAAC;IACpD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC1B,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,KAAoB,EAAE,IAAY;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,SAAS,CACjB,mBAAmB,IAAI,QAAQ,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAC1F,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAAC,YAAY,CAAC,IAAqB,EAAE,IAAI,CAAC,CAAC;QAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CACtB,SAAY,EACZ,GAAG,IAAqB;IAExB,6EAA6E;IAC7E,yEAAyE;IACzE,MAAM,CAAC,KAAK,CAAC,GAAG,IAAoC,CAAC;IACrD,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;IACrF,OAAO,GAAG,SAAS,GAAG,OAAO,EAAc,CAAC;AAC9C,CAAC"}
@@ -8,11 +8,24 @@
8
8
  * - Search snippet cleaning
9
9
  */
10
10
  import * as cheerio from 'cheerio';
11
+ import type { SelectorSet } from '../constants/limits.js';
11
12
  import { type InternalLinkResolver } from './ft-internal-link.js';
13
+ /** Per-source overrides for {@link cleanHtml}; every field defaults to learn.jamf.com's. */
14
+ export interface CleanHtmlOptions {
15
+ /** Selector set for this source. Defaults to {@link SELECTORS}. */
16
+ selectors?: SelectorSet;
17
+ /** Origin that root-relative hrefs and srcs resolve against. Defaults to {@link DOCS_BASE_URL}. */
18
+ linkBase?: string;
19
+ }
12
20
  /**
13
21
  * Clean HTML content: remove unwanted elements, fix relative URLs.
22
+ *
23
+ * Both the selector set and the link base are parameters with learn.jamf.com
24
+ * defaults rather than module constants, so a caller reading a different site
25
+ * gets that site's markup rules. Existing single-argument callers — the
26
+ * glossary path among them — are unaffected.
14
27
  */
15
- export declare function cleanHtml($: cheerio.CheerioAPI): void;
28
+ export declare function cleanHtml($: cheerio.CheerioAPI, options?: CleanHtmlOptions): void;
16
29
  /**
17
30
  * Turn Fluid Topics' `<span class="ft-internal-link" data-mapid data-tocid>`
18
31
  * into a real `<a href>`.
@@ -45,6 +58,16 @@ export interface ParseArticleOptions {
45
58
  * `relatedArticles`. See {@link linkInternalSpans}.
46
59
  */
47
60
  resolveInternalLink?: InternalLinkResolver | undefined;
61
+ /**
62
+ * Selector set for the source this HTML came from.
63
+ *
64
+ * Optional, defaulting to learn.jamf.com's, because `parseArticle` is a
65
+ * published deep-import (`./core/*` is in the package export map) and
66
+ * making it required would be a breaking change for embedders.
67
+ */
68
+ selectors?: SelectorSet;
69
+ /** Origin that root-relative hrefs and srcs resolve against. */
70
+ linkBase?: string;
48
71
  }
49
72
  /**
50
73
  * Parse HTML into article structure (title, markdown content, breadcrumb).
@@ -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;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"}
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,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AA+B1F,4FAA4F;AAC5F,MAAM,WAAW,gBAAgB;IAC/B,mEAAmE;IACnE,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,mGAAmG;IACnG,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAuBjF;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;IACvD;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,oBAAoB,CA4EtB;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"}