@get-technology-inc/jamf-docs-mcp-server 1.5.1 → 3.0.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.
- package/dist/{completions.d.ts → core/completions.d.ts} +3 -1
- package/dist/core/completions.d.ts.map +1 -0
- package/dist/{completions.js → core/completions.js} +5 -4
- package/dist/core/completions.js.map +1 -0
- package/dist/core/config.d.ts +56 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +59 -0
- package/dist/core/config.js.map +1 -0
- package/dist/{constants.d.ts → core/constants.d.ts} +3 -19
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/{constants.js → core/constants.js} +6 -86
- package/dist/core/constants.js.map +1 -0
- package/dist/core/create-server.d.ts +25 -0
- package/dist/core/create-server.d.ts.map +1 -0
- package/dist/core/create-server.js +80 -0
- package/dist/core/create-server.js.map +1 -0
- package/dist/core/http-client.d.ts +19 -0
- package/dist/core/http-client.d.ts.map +1 -0
- package/dist/core/http-client.js +62 -0
- package/dist/core/http-client.js.map +1 -0
- package/dist/core/index.d.ts +27 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +29 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/prompts/compare-versions.d.ts.map +1 -0
- package/dist/core/prompts/compare-versions.js.map +1 -0
- package/dist/core/prompts/index.d.ts.map +1 -0
- package/dist/core/prompts/index.js.map +1 -0
- package/dist/core/prompts/setup-guide.d.ts.map +1 -0
- package/dist/core/prompts/setup-guide.js.map +1 -0
- package/dist/core/prompts/troubleshoot.d.ts.map +1 -0
- package/dist/core/prompts/troubleshoot.js.map +1 -0
- package/dist/{resources → core/resources}/index.d.ts +2 -1
- package/dist/core/resources/index.d.ts.map +1 -0
- package/dist/{resources → core/resources}/index.js +6 -7
- package/dist/core/resources/index.js.map +1 -0
- package/dist/core/schemas/index.d.ts.map +1 -0
- package/dist/core/schemas/index.js.map +1 -0
- package/dist/core/schemas/output.d.ts.map +1 -0
- package/dist/core/schemas/output.js.map +1 -0
- package/dist/core/services/cache.d.ts +16 -0
- package/dist/core/services/cache.d.ts.map +1 -0
- package/dist/core/services/cache.js +16 -0
- package/dist/core/services/cache.js.map +1 -0
- package/dist/{services → core/services}/glossary.d.ts +2 -1
- package/dist/core/services/glossary.d.ts.map +1 -0
- package/dist/{services → core/services}/glossary.js +15 -11
- package/dist/core/services/glossary.js.map +1 -0
- package/dist/core/services/interfaces/cache.d.ts +23 -0
- package/dist/core/services/interfaces/cache.d.ts.map +1 -0
- package/dist/core/services/interfaces/cache.js +5 -0
- package/dist/core/services/interfaces/cache.js.map +1 -0
- package/dist/core/services/interfaces/index.d.ts +10 -0
- package/dist/core/services/interfaces/index.d.ts.map +1 -0
- package/dist/core/services/interfaces/index.js +7 -0
- package/dist/core/services/interfaces/index.js.map +1 -0
- package/dist/core/services/interfaces/logger.d.ts +25 -0
- package/dist/core/services/interfaces/logger.d.ts.map +1 -0
- package/dist/core/services/interfaces/logger.js +5 -0
- package/dist/core/services/interfaces/logger.js.map +1 -0
- package/dist/core/services/interfaces/metadata.d.ts +51 -0
- package/dist/core/services/interfaces/metadata.d.ts.map +1 -0
- package/dist/core/services/interfaces/metadata.js +5 -0
- package/dist/core/services/interfaces/metadata.js.map +1 -0
- package/dist/core/services/interfaces/providers.d.ts +48 -0
- package/dist/core/services/interfaces/providers.d.ts.map +1 -0
- package/dist/core/services/interfaces/providers.js +13 -0
- package/dist/core/services/interfaces/providers.js.map +1 -0
- package/dist/core/services/interfaces.d.ts +94 -0
- package/dist/core/services/interfaces.d.ts.map +1 -0
- package/dist/core/services/interfaces.js +8 -0
- package/dist/core/services/interfaces.js.map +1 -0
- package/dist/core/services/logging.d.ts.map +1 -0
- package/dist/core/services/logging.js.map +1 -0
- package/dist/{services → core/services}/metadata.d.ts +8 -7
- package/dist/core/services/metadata.d.ts.map +1 -0
- package/dist/{services → core/services}/metadata.js +43 -39
- package/dist/core/services/metadata.js.map +1 -0
- package/dist/{services → core/services}/scraper.d.ts +9 -4
- package/dist/core/services/scraper.d.ts.map +1 -0
- package/dist/{services → core/services}/scraper.js +119 -54
- package/dist/core/services/scraper.js.map +1 -0
- package/dist/core/services/search-suggestions.d.ts.map +1 -0
- package/dist/core/services/search-suggestions.js.map +1 -0
- package/dist/core/services/tokenizer.d.ts.map +1 -0
- package/dist/core/services/tokenizer.js.map +1 -0
- package/dist/{tools → core/tools}/batch-get-articles.d.ts +2 -1
- package/dist/core/tools/batch-get-articles.d.ts.map +1 -0
- package/dist/{tools → core/tools}/batch-get-articles.js +2 -2
- package/dist/core/tools/batch-get-articles.js.map +1 -0
- package/dist/{tools → core/tools}/get-article.d.ts +2 -1
- package/dist/core/tools/get-article.d.ts.map +1 -0
- package/dist/{tools → core/tools}/get-article.js +2 -2
- package/dist/core/tools/get-article.js.map +1 -0
- package/dist/core/tools/get-toc.d.ts +8 -0
- package/dist/core/tools/get-toc.d.ts.map +1 -0
- package/dist/{tools → core/tools}/get-toc.js +3 -3
- package/dist/core/tools/get-toc.js.map +1 -0
- package/dist/{tools → core/tools}/glossary-lookup.d.ts +2 -1
- package/dist/core/tools/glossary-lookup.d.ts.map +1 -0
- package/dist/{tools → core/tools}/glossary-lookup.js +2 -2
- package/dist/core/tools/glossary-lookup.js.map +1 -0
- package/dist/{tools → core/tools}/list-products.d.ts +2 -1
- package/dist/core/tools/list-products.d.ts.map +1 -0
- package/dist/{tools → core/tools}/list-products.js +5 -6
- package/dist/core/tools/list-products.js.map +1 -0
- package/dist/core/tools/search.d.ts +8 -0
- package/dist/core/tools/search.d.ts.map +1 -0
- package/dist/{tools → core/tools}/search.js +2 -2
- package/dist/core/tools/search.js.map +1 -0
- package/dist/core/types/context.d.ts +20 -0
- package/dist/core/types/context.d.ts.map +1 -0
- package/dist/core/types/context.js +8 -0
- package/dist/core/types/context.js.map +1 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/utils/bundle.d.ts.map +1 -0
- package/dist/core/utils/bundle.js.map +1 -0
- package/dist/core/utils/concurrency.d.ts.map +1 -0
- package/dist/core/utils/concurrency.js.map +1 -0
- package/dist/core/utils/doc-type.d.ts.map +1 -0
- package/dist/core/utils/doc-type.js.map +1 -0
- package/dist/core/utils/progress.d.ts.map +1 -0
- package/dist/core/utils/progress.js.map +1 -0
- package/dist/core/utils/sanitize.d.ts.map +1 -0
- package/dist/core/utils/sanitize.js.map +1 -0
- package/dist/core/utils/url.d.ts.map +1 -0
- package/dist/core/utils/url.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +26 -58
- package/dist/index.js.map +1 -1
- package/dist/{services → platforms/node}/cache.d.ts +16 -13
- package/dist/platforms/node/cache.d.ts.map +1 -0
- package/dist/{services → platforms/node}/cache.js +20 -18
- package/dist/platforms/node/cache.js.map +1 -0
- package/dist/platforms/node/config.d.ts +14 -0
- package/dist/platforms/node/config.d.ts.map +1 -0
- package/dist/platforms/node/config.js +99 -0
- package/dist/platforms/node/config.js.map +1 -0
- package/dist/platforms/node/index.d.ts +8 -0
- package/dist/platforms/node/index.d.ts.map +1 -0
- package/dist/platforms/node/index.js +8 -0
- package/dist/platforms/node/index.js.map +1 -0
- package/dist/platforms/node/logger.d.ts +12 -0
- package/dist/platforms/node/logger.d.ts.map +1 -0
- package/dist/platforms/node/logger.js +15 -0
- package/dist/platforms/node/logger.js.map +1 -0
- package/dist/platforms/node/metadata.d.ts +18 -0
- package/dist/platforms/node/metadata.d.ts.map +1 -0
- package/dist/platforms/node/metadata.js +35 -0
- package/dist/platforms/node/metadata.js.map +1 -0
- package/dist/transport/http.d.ts.map +1 -1
- package/dist/transport/http.js +3 -2
- package/dist/transport/http.js.map +1 -1
- package/dist/transport/index.js +1 -1
- package/dist/transport/index.js.map +1 -1
- package/package.json +22 -4
- package/dist/completions.d.ts.map +0 -1
- package/dist/completions.js.map +0 -1
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js.map +0 -1
- package/dist/prompts/compare-versions.d.ts.map +0 -1
- package/dist/prompts/compare-versions.js.map +0 -1
- package/dist/prompts/index.d.ts.map +0 -1
- package/dist/prompts/index.js.map +0 -1
- package/dist/prompts/setup-guide.d.ts.map +0 -1
- package/dist/prompts/setup-guide.js.map +0 -1
- package/dist/prompts/troubleshoot.d.ts.map +0 -1
- package/dist/prompts/troubleshoot.js.map +0 -1
- package/dist/resources/index.d.ts.map +0 -1
- package/dist/resources/index.js.map +0 -1
- package/dist/schemas/index.d.ts.map +0 -1
- package/dist/schemas/index.js.map +0 -1
- package/dist/schemas/output.d.ts.map +0 -1
- package/dist/schemas/output.js.map +0 -1
- package/dist/services/cache.d.ts.map +0 -1
- package/dist/services/cache.js.map +0 -1
- package/dist/services/glossary.d.ts.map +0 -1
- package/dist/services/glossary.js.map +0 -1
- package/dist/services/logging.d.ts.map +0 -1
- package/dist/services/logging.js.map +0 -1
- package/dist/services/metadata.d.ts.map +0 -1
- package/dist/services/metadata.js.map +0 -1
- package/dist/services/scraper.d.ts.map +0 -1
- package/dist/services/scraper.js.map +0 -1
- package/dist/services/search-suggestions.d.ts.map +0 -1
- package/dist/services/search-suggestions.js.map +0 -1
- package/dist/services/tokenizer.d.ts.map +0 -1
- package/dist/services/tokenizer.js.map +0 -1
- package/dist/tools/batch-get-articles.d.ts.map +0 -1
- package/dist/tools/batch-get-articles.js.map +0 -1
- package/dist/tools/get-article.d.ts.map +0 -1
- package/dist/tools/get-article.js.map +0 -1
- package/dist/tools/get-toc.d.ts +0 -7
- package/dist/tools/get-toc.d.ts.map +0 -1
- package/dist/tools/get-toc.js.map +0 -1
- package/dist/tools/glossary-lookup.d.ts.map +0 -1
- package/dist/tools/glossary-lookup.js.map +0 -1
- package/dist/tools/list-products.d.ts.map +0 -1
- package/dist/tools/list-products.js.map +0 -1
- package/dist/tools/search.d.ts +0 -7
- package/dist/tools/search.d.ts.map +0 -1
- package/dist/tools/search.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils/bundle.d.ts.map +0 -1
- package/dist/utils/bundle.js.map +0 -1
- package/dist/utils/concurrency.d.ts.map +0 -1
- package/dist/utils/concurrency.js.map +0 -1
- package/dist/utils/doc-type.d.ts.map +0 -1
- package/dist/utils/doc-type.js.map +0 -1
- package/dist/utils/progress.d.ts.map +0 -1
- package/dist/utils/progress.js.map +0 -1
- package/dist/utils/sanitize.d.ts.map +0 -1
- package/dist/utils/sanitize.js.map +0 -1
- package/dist/utils/url.d.ts.map +0 -1
- package/dist/utils/url.js.map +0 -1
- /package/dist/{prompts → core/prompts}/compare-versions.d.ts +0 -0
- /package/dist/{prompts → core/prompts}/compare-versions.js +0 -0
- /package/dist/{prompts → core/prompts}/index.d.ts +0 -0
- /package/dist/{prompts → core/prompts}/index.js +0 -0
- /package/dist/{prompts → core/prompts}/setup-guide.d.ts +0 -0
- /package/dist/{prompts → core/prompts}/setup-guide.js +0 -0
- /package/dist/{prompts → core/prompts}/troubleshoot.d.ts +0 -0
- /package/dist/{prompts → core/prompts}/troubleshoot.js +0 -0
- /package/dist/{schemas → core/schemas}/index.d.ts +0 -0
- /package/dist/{schemas → core/schemas}/index.js +0 -0
- /package/dist/{schemas → core/schemas}/output.d.ts +0 -0
- /package/dist/{schemas → core/schemas}/output.js +0 -0
- /package/dist/{services → core/services}/logging.d.ts +0 -0
- /package/dist/{services → core/services}/logging.js +0 -0
- /package/dist/{services → core/services}/search-suggestions.d.ts +0 -0
- /package/dist/{services → core/services}/search-suggestions.js +0 -0
- /package/dist/{services → core/services}/tokenizer.d.ts +0 -0
- /package/dist/{services → core/services}/tokenizer.js +0 -0
- /package/dist/{types.d.ts → core/types.d.ts} +0 -0
- /package/dist/{types.js → core/types.js} +0 -0
- /package/dist/{utils → core/utils}/bundle.d.ts +0 -0
- /package/dist/{utils → core/utils}/bundle.js +0 -0
- /package/dist/{utils → core/utils}/concurrency.d.ts +0 -0
- /package/dist/{utils → core/utils}/concurrency.js +0 -0
- /package/dist/{utils → core/utils}/doc-type.d.ts +0 -0
- /package/dist/{utils → core/utils}/doc-type.js +0 -0
- /package/dist/{utils → core/utils}/progress.d.ts +0 -0
- /package/dist/{utils → core/utils}/progress.js +0 -0
- /package/dist/{utils → core/utils}/sanitize.d.ts +0 -0
- /package/dist/{utils → core/utils}/sanitize.js +0 -0
- /package/dist/{utils → core/utils}/url.d.ts +0 -0
- /package/dist/{utils → core/utils}/url.js +0 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core service interfaces for platform abstraction
|
|
3
|
+
*
|
|
4
|
+
* These interfaces decouple business logic from Node.js-specific implementations,
|
|
5
|
+
* enabling deployment to different runtimes (e.g., Cloudflare Workers).
|
|
6
|
+
*/
|
|
7
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
8
|
+
/**
|
|
9
|
+
* Cache statistics
|
|
10
|
+
*/
|
|
11
|
+
export interface CacheStats {
|
|
12
|
+
memoryEntries: number;
|
|
13
|
+
totalEntries: number;
|
|
14
|
+
totalSize?: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Platform-agnostic cache provider
|
|
18
|
+
*/
|
|
19
|
+
export interface CacheProvider {
|
|
20
|
+
get<T>(key: string): Promise<T | null>;
|
|
21
|
+
set<T>(key: string, value: T, ttl?: number): Promise<void>;
|
|
22
|
+
delete(key: string): Promise<boolean>;
|
|
23
|
+
clear(): Promise<void>;
|
|
24
|
+
stats(): Promise<CacheStats>;
|
|
25
|
+
prune(): Promise<number>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Product metadata returned by the metadata store
|
|
29
|
+
*/
|
|
30
|
+
export interface ProductMetadata {
|
|
31
|
+
id: string;
|
|
32
|
+
name: string;
|
|
33
|
+
description: string;
|
|
34
|
+
bundleId: string;
|
|
35
|
+
latestVersion: string;
|
|
36
|
+
availableVersions: string[];
|
|
37
|
+
labelKey: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Topic metadata returned by the metadata store
|
|
41
|
+
*/
|
|
42
|
+
export interface TopicMetadata {
|
|
43
|
+
id: string;
|
|
44
|
+
name: string;
|
|
45
|
+
source: 'toc' | 'manual';
|
|
46
|
+
articleCount?: number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Table of contents entry (recursive tree structure)
|
|
50
|
+
*/
|
|
51
|
+
export interface TocEntry {
|
|
52
|
+
title: string;
|
|
53
|
+
url: string;
|
|
54
|
+
children?: TocEntry[];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Structured table of contents data for a product
|
|
58
|
+
*/
|
|
59
|
+
export interface TocData {
|
|
60
|
+
entries: TocEntry[];
|
|
61
|
+
product: string;
|
|
62
|
+
version: string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Platform-agnostic metadata store for Jamf documentation
|
|
66
|
+
*/
|
|
67
|
+
export interface MetadataStore {
|
|
68
|
+
getProducts(): Promise<ProductMetadata[]>;
|
|
69
|
+
getTopics(): Promise<TopicMetadata[]>;
|
|
70
|
+
getToc(productId: string, bundleId: string): Promise<TocData>;
|
|
71
|
+
getBundleIdForVersion(productId: string, version?: string): Promise<string | null>;
|
|
72
|
+
getAvailableVersions(productId: string): Promise<string[]>;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Logger instance bound to a specific module name
|
|
76
|
+
*/
|
|
77
|
+
export interface Logger {
|
|
78
|
+
debug(data: unknown): void;
|
|
79
|
+
info(data: unknown): void;
|
|
80
|
+
notice(data: unknown): void;
|
|
81
|
+
warning(data: unknown): void;
|
|
82
|
+
error(data: unknown): void;
|
|
83
|
+
critical(data: unknown): void;
|
|
84
|
+
alert(data: unknown): void;
|
|
85
|
+
emergency(data: unknown): void;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Factory for creating named logger instances
|
|
89
|
+
*/
|
|
90
|
+
export interface LoggerFactory {
|
|
91
|
+
createLogger(name: string): Logger;
|
|
92
|
+
setServer(server: McpServer): void;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/core/services/interfaces.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACvC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1B;AAMD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC1C,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACtC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACnF,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC5D;AAMD;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;CACpC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core service interfaces for platform abstraction
|
|
3
|
+
*
|
|
4
|
+
* These interfaces decouple business logic from Node.js-specific implementations,
|
|
5
|
+
* enabling deployment to different runtimes (e.g., Cloudflare Workers).
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=interfaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/core/services/interfaces.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../../src/core/services/logging.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE;;;GAGG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAEjD;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/B,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAChC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/B,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;AAiCD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../src/core/services/logging.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,IAAI,SAAS,GAAqB,IAAI,CAAC;AAEvC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,MAAiB;IACzC,SAAS,GAAG,MAAM,CAAC;AACrB,CAAC;AAgBD,SAAS,WAAW,CAAC,KAAmB,EAAE,UAAkB,EAAE,IAAa;IACzE,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,IAAI,OAAe,CAAC;IACpB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,UAAU,KAAK,OAAO,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,UAAU,CAAC,KAAmB,EAAE,UAAkB,EAAE,IAAa;IACxE,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,4CAA4C;IAC5C,SAAS,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QAC3E,kEAAkE;IACpE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,GAAG,CAAC,KAAmB,EAAE,UAAkB,EAAE,IAAa;IACjE,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACrC,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO;QACL,KAAK,EAAE,CAAC,IAAa,EAAE,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,EAAE,CAAC,IAAa,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,EAAE,CAAC,IAAa,EAAE,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACzD,OAAO,EAAE,CAAC,IAAa,EAAE,EAAE,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3D,KAAK,EAAE,CAAC,IAAa,EAAE,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACvD,QAAQ,EAAE,CAAC,IAAa,EAAE,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7D,KAAK,EAAE,CAAC,IAAa,EAAE,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACvD,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;KAChE,CAAC;AACJ,CAAC"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* with fallback to static constants.
|
|
6
6
|
*/
|
|
7
7
|
import { type ProductId } from '../constants.js';
|
|
8
|
+
import type { ServerContext } from '../types/context.js';
|
|
8
9
|
export interface ProductMetadata {
|
|
9
10
|
id: string;
|
|
10
11
|
name: string;
|
|
@@ -30,28 +31,28 @@ export interface TocCategory {
|
|
|
30
31
|
* Get all products with their latest metadata
|
|
31
32
|
* Uses cache with fallback to static constants
|
|
32
33
|
*/
|
|
33
|
-
export declare function getProductsMetadata(): Promise<ProductMetadata[]>;
|
|
34
|
+
export declare function getProductsMetadata(ctx: ServerContext): Promise<ProductMetadata[]>;
|
|
34
35
|
/**
|
|
35
36
|
* Get the bundle ID for a specific product and version
|
|
36
37
|
* Returns the latest bundle ID if version is undefined or 'current'
|
|
37
38
|
*/
|
|
38
|
-
export declare function getBundleIdForVersion(productId: ProductId, version?: string): Promise<string | null>;
|
|
39
|
+
export declare function getBundleIdForVersion(ctx: ServerContext, productId: ProductId, version?: string): Promise<string | null>;
|
|
39
40
|
/**
|
|
40
41
|
* Get available versions for a product
|
|
41
42
|
*/
|
|
42
|
-
export declare function getAvailableVersions(productId: ProductId): Promise<string[]>;
|
|
43
|
+
export declare function getAvailableVersions(ctx: ServerContext, productId: ProductId): Promise<string[]>;
|
|
43
44
|
/**
|
|
44
45
|
* Get all topics, combining TOC-derived from all products and manual topics
|
|
45
46
|
*/
|
|
46
|
-
export declare function getTopicsMetadata(): Promise<TopicMetadata[]>;
|
|
47
|
+
export declare function getTopicsMetadata(ctx: ServerContext): Promise<TopicMetadata[]>;
|
|
47
48
|
/**
|
|
48
49
|
* Check which products have TOC content available
|
|
49
50
|
*/
|
|
50
|
-
export declare function getProductAvailability(): Promise<Record<string, boolean>>;
|
|
51
|
+
export declare function getProductAvailability(ctx: ServerContext): Promise<Record<string, boolean>>;
|
|
51
52
|
/**
|
|
52
53
|
* Get products data formatted for resource response
|
|
53
54
|
*/
|
|
54
|
-
export declare function getProductsResourceData(): Promise<{
|
|
55
|
+
export declare function getProductsResourceData(ctx: ServerContext): Promise<{
|
|
55
56
|
description: string;
|
|
56
57
|
products: {
|
|
57
58
|
id: string;
|
|
@@ -67,7 +68,7 @@ export declare function getProductsResourceData(): Promise<{
|
|
|
67
68
|
/**
|
|
68
69
|
* Get topics data formatted for resource response
|
|
69
70
|
*/
|
|
70
|
-
export declare function getTopicsResourceData(): Promise<{
|
|
71
|
+
export declare function getTopicsResourceData(ctx: ServerContext): Promise<{
|
|
71
72
|
description: string;
|
|
72
73
|
totalTopics: number;
|
|
73
74
|
topics: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/core/services/metadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQzD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAuID;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAiDxF;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuBxB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CAInB;AAwHD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAgDpF;AAMD;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAgCjG;AAMD;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC;KAClB,EAAE,CAAC;IACJ,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAgBD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,EAAE,CAAC;IACJ,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAeD"}
|
|
@@ -4,30 +4,27 @@
|
|
|
4
4
|
* Dynamically fetches product versions and topic categories from the API
|
|
5
5
|
* with fallback to static constants.
|
|
6
6
|
*/
|
|
7
|
-
import
|
|
7
|
+
import { httpGetJson } from '../http-client.js';
|
|
8
8
|
import * as cheerio from 'cheerio';
|
|
9
|
-
import { DOCS_API_URL, JAMF_PRODUCTS, JAMF_TOPICS
|
|
9
|
+
import { DOCS_API_URL, JAMF_PRODUCTS, JAMF_TOPICS } from '../constants.js';
|
|
10
10
|
import { extractVersionFromBundleId } from '../utils/bundle.js';
|
|
11
|
-
import { cache } from './cache.js';
|
|
12
|
-
import { createLogger } from './logging.js';
|
|
13
|
-
const log = createLogger('metadata');
|
|
14
11
|
// ============================================================================
|
|
15
12
|
// API Helpers
|
|
16
13
|
// ============================================================================
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
14
|
+
function makeFetchJson(requestConfig) {
|
|
15
|
+
return async (url) => {
|
|
16
|
+
return await httpGetJson(url, {
|
|
17
|
+
timeout: requestConfig.timeout,
|
|
18
|
+
headers: {
|
|
19
|
+
'User-Agent': requestConfig.userAgent
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
};
|
|
26
23
|
}
|
|
27
24
|
/**
|
|
28
25
|
* Discover all available versions for a product
|
|
29
26
|
*/
|
|
30
|
-
async function discoverProductVersions(productId) {
|
|
27
|
+
async function discoverProductVersions(productId, fetchJson, log) {
|
|
31
28
|
const product = JAMF_PRODUCTS[productId];
|
|
32
29
|
const versions = new Set();
|
|
33
30
|
try {
|
|
@@ -69,11 +66,11 @@ async function discoverProductVersions(productId) {
|
|
|
69
66
|
/**
|
|
70
67
|
* Fetch latest version and metadata for a product from the API
|
|
71
68
|
*/
|
|
72
|
-
async function fetchProductMetadata(productId) {
|
|
69
|
+
async function fetchProductMetadata(productId, fetchJson, log) {
|
|
73
70
|
const product = JAMF_PRODUCTS[productId];
|
|
74
71
|
try {
|
|
75
72
|
// Discover all available versions
|
|
76
|
-
const availableVersions = await discoverProductVersions(productId);
|
|
73
|
+
const availableVersions = await discoverProductVersions(productId, fetchJson, log);
|
|
77
74
|
// Search for a doc from this product to get the bundle ID and labels
|
|
78
75
|
const apiUrl = `${DOCS_API_URL}/api/search?q=${encodeURIComponent(product.name)}&rpp=5`;
|
|
79
76
|
const response = await fetchJson(apiUrl);
|
|
@@ -108,10 +105,12 @@ async function fetchProductMetadata(productId) {
|
|
|
108
105
|
* Get all products with their latest metadata
|
|
109
106
|
* Uses cache with fallback to static constants
|
|
110
107
|
*/
|
|
111
|
-
export async function getProductsMetadata() {
|
|
108
|
+
export async function getProductsMetadata(ctx) {
|
|
109
|
+
const log = ctx.logger.createLogger('metadata');
|
|
110
|
+
const fetchJson = makeFetchJson(ctx.config.request);
|
|
112
111
|
const cacheKey = 'metadata:products';
|
|
113
112
|
// Check cache
|
|
114
|
-
const cached = await cache.get(cacheKey);
|
|
113
|
+
const cached = await ctx.cache.get(cacheKey);
|
|
115
114
|
if (cached !== null) {
|
|
116
115
|
return cached;
|
|
117
116
|
}
|
|
@@ -119,7 +118,7 @@ export async function getProductsMetadata() {
|
|
|
119
118
|
const productIds = Object.keys(JAMF_PRODUCTS);
|
|
120
119
|
const fetchResults = await Promise.all(productIds.map(async (productId) => {
|
|
121
120
|
try {
|
|
122
|
-
const metadata = await fetchProductMetadata(productId);
|
|
121
|
+
const metadata = await fetchProductMetadata(productId, fetchJson, log);
|
|
123
122
|
return { productId, metadata };
|
|
124
123
|
}
|
|
125
124
|
catch (error) {
|
|
@@ -147,15 +146,16 @@ export async function getProductsMetadata() {
|
|
|
147
146
|
}
|
|
148
147
|
}
|
|
149
148
|
// Cache for 24 hours
|
|
150
|
-
await cache.set(cacheKey, products,
|
|
149
|
+
await ctx.cache.set(cacheKey, products, ctx.config.cacheTtl.article);
|
|
151
150
|
return products;
|
|
152
151
|
}
|
|
153
152
|
/**
|
|
154
153
|
* Get the bundle ID for a specific product and version
|
|
155
154
|
* Returns the latest bundle ID if version is undefined or 'current'
|
|
156
155
|
*/
|
|
157
|
-
export async function getBundleIdForVersion(productId, version) {
|
|
158
|
-
const
|
|
156
|
+
export async function getBundleIdForVersion(ctx, productId, version) {
|
|
157
|
+
const log = ctx.logger.createLogger('metadata');
|
|
158
|
+
const products = await getProductsMetadata(ctx);
|
|
159
159
|
const product = products.find(p => p.id === productId);
|
|
160
160
|
if (product === undefined) {
|
|
161
161
|
return null;
|
|
@@ -176,8 +176,8 @@ export async function getBundleIdForVersion(productId, version) {
|
|
|
176
176
|
/**
|
|
177
177
|
* Get available versions for a product
|
|
178
178
|
*/
|
|
179
|
-
export async function getAvailableVersions(productId) {
|
|
180
|
-
const products = await getProductsMetadata();
|
|
179
|
+
export async function getAvailableVersions(ctx, productId) {
|
|
180
|
+
const products = await getProductsMetadata(ctx);
|
|
181
181
|
const product = products.find(p => p.id === productId);
|
|
182
182
|
return product?.availableVersions ?? [];
|
|
183
183
|
}
|
|
@@ -238,10 +238,10 @@ function categoryToTopicId(title) {
|
|
|
238
238
|
/**
|
|
239
239
|
* Fetch topic categories from TOC for a product
|
|
240
240
|
*/
|
|
241
|
-
async function fetchTopicCategories(productId) {
|
|
241
|
+
async function fetchTopicCategories(productId, ctx, fetchJson, log) {
|
|
242
242
|
try {
|
|
243
243
|
// First get the latest bundle ID
|
|
244
|
-
const products = await getProductsMetadata();
|
|
244
|
+
const products = await getProductsMetadata(ctx);
|
|
245
245
|
const product = products.find(p => p.id === productId);
|
|
246
246
|
if (product === undefined) {
|
|
247
247
|
return [];
|
|
@@ -280,10 +280,12 @@ function upsertTopic(topicsMap, category) {
|
|
|
280
280
|
/**
|
|
281
281
|
* Get all topics, combining TOC-derived from all products and manual topics
|
|
282
282
|
*/
|
|
283
|
-
export async function getTopicsMetadata() {
|
|
283
|
+
export async function getTopicsMetadata(ctx) {
|
|
284
|
+
const log = ctx.logger.createLogger('metadata');
|
|
285
|
+
const fetchJson = makeFetchJson(ctx.config.request);
|
|
284
286
|
const cacheKey = 'metadata:topics';
|
|
285
287
|
// Check cache
|
|
286
|
-
const cached = await cache.get(cacheKey);
|
|
288
|
+
const cached = await ctx.cache.get(cacheKey);
|
|
287
289
|
if (cached !== null) {
|
|
288
290
|
return cached;
|
|
289
291
|
}
|
|
@@ -300,7 +302,7 @@ export async function getTopicsMetadata() {
|
|
|
300
302
|
const productIds = Object.keys(JAMF_PRODUCTS);
|
|
301
303
|
const tocResults = await Promise.all(productIds.map(async (productId) => {
|
|
302
304
|
try {
|
|
303
|
-
const categories = await fetchTopicCategories(productId);
|
|
305
|
+
const categories = await fetchTopicCategories(productId, ctx, fetchJson, log);
|
|
304
306
|
return { productId, categories };
|
|
305
307
|
}
|
|
306
308
|
catch (error) {
|
|
@@ -315,7 +317,7 @@ export async function getTopicsMetadata() {
|
|
|
315
317
|
}
|
|
316
318
|
const topics = Array.from(topicsMap.values());
|
|
317
319
|
// Cache for 24 hours
|
|
318
|
-
await cache.set(cacheKey, topics,
|
|
320
|
+
await ctx.cache.set(cacheKey, topics, ctx.config.cacheTtl.article);
|
|
319
321
|
return topics;
|
|
320
322
|
}
|
|
321
323
|
// ============================================================================
|
|
@@ -324,9 +326,11 @@ export async function getTopicsMetadata() {
|
|
|
324
326
|
/**
|
|
325
327
|
* Check which products have TOC content available
|
|
326
328
|
*/
|
|
327
|
-
export async function getProductAvailability() {
|
|
329
|
+
export async function getProductAvailability(ctx) {
|
|
330
|
+
const log = ctx.logger.createLogger('metadata');
|
|
331
|
+
const fetchJson = makeFetchJson(ctx.config.request);
|
|
328
332
|
const cacheKey = 'metadata:product-availability';
|
|
329
|
-
const cached = await cache.get(cacheKey);
|
|
333
|
+
const cached = await ctx.cache.get(cacheKey);
|
|
330
334
|
if (cached !== null) {
|
|
331
335
|
return cached;
|
|
332
336
|
}
|
|
@@ -334,7 +338,7 @@ export async function getProductAvailability() {
|
|
|
334
338
|
const productIds = Object.keys(JAMF_PRODUCTS);
|
|
335
339
|
const results = await Promise.all(productIds.map(async (productId) => {
|
|
336
340
|
try {
|
|
337
|
-
const categories = await fetchTopicCategories(productId);
|
|
341
|
+
const categories = await fetchTopicCategories(productId, ctx, fetchJson, log);
|
|
338
342
|
return { productId, hasContent: categories.length > 0 };
|
|
339
343
|
}
|
|
340
344
|
catch {
|
|
@@ -345,7 +349,7 @@ export async function getProductAvailability() {
|
|
|
345
349
|
availability[productId] = hasContent;
|
|
346
350
|
}
|
|
347
351
|
// Cache for 1 hour
|
|
348
|
-
await cache.set(cacheKey, availability, 60 * 60 * 1000);
|
|
352
|
+
await ctx.cache.set(cacheKey, availability, 60 * 60 * 1000);
|
|
349
353
|
return availability;
|
|
350
354
|
}
|
|
351
355
|
// ============================================================================
|
|
@@ -354,8 +358,8 @@ export async function getProductAvailability() {
|
|
|
354
358
|
/**
|
|
355
359
|
* Get products data formatted for resource response
|
|
356
360
|
*/
|
|
357
|
-
export async function getProductsResourceData() {
|
|
358
|
-
const products = await getProductsMetadata();
|
|
361
|
+
export async function getProductsResourceData(ctx) {
|
|
362
|
+
const products = await getProductsMetadata(ctx);
|
|
359
363
|
return {
|
|
360
364
|
description: 'Available Jamf products for documentation search',
|
|
361
365
|
products: products.map(p => ({
|
|
@@ -373,8 +377,8 @@ export async function getProductsResourceData() {
|
|
|
373
377
|
/**
|
|
374
378
|
* Get topics data formatted for resource response
|
|
375
379
|
*/
|
|
376
|
-
export async function getTopicsResourceData() {
|
|
377
|
-
const topics = await getTopicsMetadata();
|
|
380
|
+
export async function getTopicsResourceData(ctx) {
|
|
381
|
+
const topics = await getTopicsMetadata(ctx);
|
|
378
382
|
return {
|
|
379
383
|
description: 'Topic categories for filtering Jamf documentation searches',
|
|
380
384
|
totalTopics: topics.length,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/core/services/metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { type ProductId, type LocaleId } from '../constants.js';
|
|
8
8
|
import { type SearchResult, type ParsedArticle, type TocEntry, type SearchParams, type TokenInfo, type PaginationInfo, type ArticleSection, type FilterRelaxation, type TruncatedContentInfo } from '../types.js';
|
|
9
|
+
import type { ServerContext } from '../types/context.js';
|
|
9
10
|
export { ALLOWED_HOSTNAMES, isAllowedHostname } from '../utils/url.js';
|
|
10
11
|
/**
|
|
11
12
|
* Strip locale prefix (e.g. /en-US/, /ja-JP/) from URL path.
|
|
@@ -23,7 +24,11 @@ export declare function cleanSnippet(snippet: string, title: string, product: st
|
|
|
23
24
|
* Build Accept-Language header value for a given locale
|
|
24
25
|
*/
|
|
25
26
|
export declare function buildAcceptLanguage(locale: string): string;
|
|
26
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Fetch HTML from a URL with error handling.
|
|
29
|
+
* Requires a ServerContext for request configuration.
|
|
30
|
+
*/
|
|
31
|
+
export declare function fetchHtml(ctx: ServerContext, url: string, locale?: string): Promise<string>;
|
|
27
32
|
/**
|
|
28
33
|
* Search response with token and pagination info
|
|
29
34
|
*/
|
|
@@ -38,7 +43,7 @@ export interface SearchDocumentationResult {
|
|
|
38
43
|
/**
|
|
39
44
|
* Search Jamf documentation using Zoomin Search API
|
|
40
45
|
*/
|
|
41
|
-
export declare function searchDocumentation(params: SearchParams): Promise<SearchDocumentationResult>;
|
|
46
|
+
export declare function searchDocumentation(ctx: ServerContext, params: SearchParams): Promise<SearchDocumentationResult>;
|
|
42
47
|
/**
|
|
43
48
|
* Options for fetching articles
|
|
44
49
|
*/
|
|
@@ -60,7 +65,7 @@ export interface FetchArticleResult extends ParsedArticle {
|
|
|
60
65
|
* Fetch and parse a documentation article
|
|
61
66
|
* Uses backend URL (learn-be.jamf.com) for pre-rendered content
|
|
62
67
|
*/
|
|
63
|
-
export declare function fetchArticle(url: string, options?: FetchArticleOptions): Promise<FetchArticleResult>;
|
|
68
|
+
export declare function fetchArticle(ctx: ServerContext, url: string, options?: FetchArticleOptions): Promise<FetchArticleResult>;
|
|
64
69
|
/**
|
|
65
70
|
* Options for fetching table of contents
|
|
66
71
|
*/
|
|
@@ -81,5 +86,5 @@ export interface FetchTocResult {
|
|
|
81
86
|
* Fetch table of contents for a product
|
|
82
87
|
* Uses backend TOC endpoint (learn-be.jamf.com/bundle/{bundleId}/toc)
|
|
83
88
|
*/
|
|
84
|
-
export declare function fetchTableOfContents(product: ProductId, version?: string, options?: FetchTocOptions): Promise<FetchTocResult>;
|
|
89
|
+
export declare function fetchTableOfContents(ctx: ServerContext, product: ProductId, version?: string, options?: FetchTocOptions): Promise<FetchTocResult>;
|
|
85
90
|
//# sourceMappingURL=scraper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scraper.d.ts","sourceRoot":"","sources":["../../../src/core/services/scraper.ts"],"names":[],"mappings":"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"}
|