@enokdev/springdocs-mcp 1.2.2 → 1.2.4
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/README.md +275 -243
- package/build/index.js +202 -57
- package/build/index.js.map +1 -1
- package/build/services/advanced-features.d.ts +39 -0
- package/build/services/advanced-features.d.ts.map +1 -0
- package/build/services/advanced-features.js +574 -0
- package/build/services/advanced-features.js.map +1 -0
- package/build/services/cache.d.ts +36 -0
- package/build/services/cache.d.ts.map +1 -0
- package/build/services/cache.js +68 -0
- package/build/services/cache.js.map +1 -0
- package/build/services/springboot-docs-optimized.d.ts +55 -0
- package/build/services/springboot-docs-optimized.d.ts.map +1 -0
- package/build/services/springboot-docs-optimized.js +593 -0
- package/build/services/springboot-docs-optimized.js.map +1 -0
- package/build/services/springboot-docs.js +1 -1
- package/build/tools/index.d.ts +262 -0
- package/build/tools/index.d.ts.map +1 -1
- package/build/tools/index.js +115 -0
- package/build/tools/index.js.map +1 -1
- package/package.json +17 -6
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intelligent caching service for Spring documentation
|
|
3
|
+
*/
|
|
4
|
+
export class CacheService {
|
|
5
|
+
cache = new Map();
|
|
6
|
+
DEFAULT_TTL = 30 * 60 * 1000; // 30 minutes
|
|
7
|
+
LONG_TTL = 24 * 60 * 60 * 1000; // 24 hours for stable content
|
|
8
|
+
/**
|
|
9
|
+
* Get cached data if available and not expired
|
|
10
|
+
*/
|
|
11
|
+
get(key) {
|
|
12
|
+
const entry = this.cache.get(key);
|
|
13
|
+
if (!entry)
|
|
14
|
+
return null;
|
|
15
|
+
if (Date.now() - entry.timestamp > entry.ttl) {
|
|
16
|
+
this.cache.delete(key);
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
return entry.data;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Store data in cache with optional custom TTL
|
|
23
|
+
*/
|
|
24
|
+
set(key, data, ttl) {
|
|
25
|
+
this.cache.set(key, {
|
|
26
|
+
data,
|
|
27
|
+
timestamp: Date.now(),
|
|
28
|
+
ttl: ttl || this.DEFAULT_TTL,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Store data with long TTL for stable content
|
|
33
|
+
*/
|
|
34
|
+
setLongTerm(key, data) {
|
|
35
|
+
this.set(key, data, this.LONG_TTL);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Clear expired entries
|
|
39
|
+
*/
|
|
40
|
+
cleanup() {
|
|
41
|
+
const now = Date.now();
|
|
42
|
+
for (const [key, entry] of this.cache.entries()) {
|
|
43
|
+
if (now - entry.timestamp > entry.ttl) {
|
|
44
|
+
this.cache.delete(key);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get cache statistics
|
|
50
|
+
*/
|
|
51
|
+
getStats() {
|
|
52
|
+
const now = Date.now();
|
|
53
|
+
let expired = 0;
|
|
54
|
+
for (const entry of this.cache.values()) {
|
|
55
|
+
if (now - entry.timestamp > entry.ttl) {
|
|
56
|
+
expired++;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return { size: this.cache.size, expired };
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Clear all cache
|
|
63
|
+
*/
|
|
64
|
+
clear() {
|
|
65
|
+
this.cache.clear();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/services/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,YAAY;IACf,KAAK,GAAG,IAAI,GAAG,EAAyD,CAAC;IAChE,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;IAC3C,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,8BAA8B;IAE/E;;OAEG;IACH,GAAG,CAAI,GAAW;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC,IAAS,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,GAAG,CAAI,GAAW,EAAE,IAAO,EAAE,GAAY;QACvC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,WAAW;SAC7B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,WAAW,CAAI,GAAW,EAAE,IAAO;QACjC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAChD,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;gBACtC,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optimized Spring Boot Documentation Service with caching and enhanced features
|
|
3
|
+
*/
|
|
4
|
+
export declare class SpringBootDocsServiceOptimized {
|
|
5
|
+
private readonly baseUrl;
|
|
6
|
+
private readonly springProjectsUrl;
|
|
7
|
+
private readonly springGuideUrl;
|
|
8
|
+
private readonly springBootVersion;
|
|
9
|
+
private turndownService;
|
|
10
|
+
private cache;
|
|
11
|
+
private readonly REQUEST_TIMEOUT;
|
|
12
|
+
private readonly MAX_RETRIES;
|
|
13
|
+
constructor();
|
|
14
|
+
/**
|
|
15
|
+
* Search Spring projects with caching and retry logic
|
|
16
|
+
*/
|
|
17
|
+
searchSpringProjects(query: string, limit?: number): Promise<any[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Get Spring project details with caching
|
|
20
|
+
*/
|
|
21
|
+
getSpringProject(projectName: string): Promise<string>;
|
|
22
|
+
/**
|
|
23
|
+
* Get all Spring guides with caching
|
|
24
|
+
*/
|
|
25
|
+
getAllSpringGuides(category?: string, limit?: number): Promise<any[]>;
|
|
26
|
+
/**
|
|
27
|
+
* Get specific guide with enhanced error handling and caching
|
|
28
|
+
*/
|
|
29
|
+
getGuide(guideId: string): Promise<string>;
|
|
30
|
+
/**
|
|
31
|
+
* Get reference documentation with caching
|
|
32
|
+
*/
|
|
33
|
+
getReference(section: string, subsection?: string): Promise<string>;
|
|
34
|
+
/**
|
|
35
|
+
* Search concepts with caching
|
|
36
|
+
*/
|
|
37
|
+
searchConcepts(concept: string, category?: string): Promise<any>;
|
|
38
|
+
/**
|
|
39
|
+
* Enhanced documentation search with parallel processing
|
|
40
|
+
*/
|
|
41
|
+
searchDocumentation(query: string, docType?: string, limit?: number): Promise<any[]>;
|
|
42
|
+
private fetchWithRetry;
|
|
43
|
+
private processHtmlGuide;
|
|
44
|
+
private processAsciiDocGuide;
|
|
45
|
+
private generateGuideNotFoundMessage;
|
|
46
|
+
private generateGuideErrorMessage;
|
|
47
|
+
private cleanHtml;
|
|
48
|
+
private getPopularSpringProjects;
|
|
49
|
+
private getPopularSpringGuides;
|
|
50
|
+
private searchGuides;
|
|
51
|
+
private searchReference;
|
|
52
|
+
private searchAPI;
|
|
53
|
+
private getSpringBootConcepts;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=springboot-docs-optimized.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"springboot-docs-optimized.d.ts","sourceRoot":"","sources":["../../src/services/springboot-docs-optimized.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,qBAAa,8BAA8B;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAC7D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAW;IAC7C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAK;;IAajC;;OAEG;IACG,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW;IAmE5D;;OAEG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA6C5D;;OAEG;IACG,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW;IAuD9D;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkEhD;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA6CzE;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAmCvD;;OAEG;IACG,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAAc,EAAE,KAAK,GAAE,MAAW;YAsCtE,cAAc;IA2B5B,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,4BAA4B;IAuBpC,OAAO,CAAC,yBAAyB;IAqBjC,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,wBAAwB;IAwChC,OAAO,CAAC,sBAAsB;YA6BhB,YAAY;YAsBZ,eAAe;YAsBf,SAAS;IAoBvB,OAAO,CAAC,qBAAqB;CA0B9B"}
|