@stackguide/mcp-server 3.0.0 → 3.2.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/config/types.d.ts +51 -4
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/services/astAnalyzer.d.ts +21 -0
- package/dist/services/astAnalyzer.d.ts.map +1 -0
- package/dist/services/astAnalyzer.js +593 -0
- package/dist/services/astAnalyzer.js.map +1 -0
- package/dist/services/codeAnalyzer.d.ts +54 -14
- package/dist/services/codeAnalyzer.d.ts.map +1 -1
- package/dist/services/codeAnalyzer.js +209 -37
- package/dist/services/codeAnalyzer.js.map +1 -1
- package/dist/services/parsers/baseParser.d.ts +44 -0
- package/dist/services/parsers/baseParser.d.ts.map +1 -0
- package/dist/services/parsers/baseParser.js +177 -0
- package/dist/services/parsers/baseParser.js.map +1 -0
- package/dist/services/parsers/goParser.d.ts +28 -0
- package/dist/services/parsers/goParser.d.ts.map +1 -0
- package/dist/services/parsers/goParser.js +590 -0
- package/dist/services/parsers/goParser.js.map +1 -0
- package/dist/services/parsers/index.d.ts +62 -0
- package/dist/services/parsers/index.d.ts.map +1 -0
- package/dist/services/parsers/index.js +121 -0
- package/dist/services/parsers/index.js.map +1 -0
- package/dist/services/parsers/pythonParser.d.ts +28 -0
- package/dist/services/parsers/pythonParser.d.ts.map +1 -0
- package/dist/services/parsers/pythonParser.js +663 -0
- package/dist/services/parsers/pythonParser.js.map +1 -0
- package/dist/services/parsers/rustParser.d.ts +28 -0
- package/dist/services/parsers/rustParser.d.ts.map +1 -0
- package/dist/services/parsers/rustParser.js +654 -0
- package/dist/services/parsers/rustParser.js.map +1 -0
- package/dist/services/parsers/types.d.ts +241 -0
- package/dist/services/parsers/types.d.ts.map +1 -0
- package/dist/services/parsers/types.js +47 -0
- package/dist/services/parsers/types.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/parsers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAOnF;;GAEG;AACH,cAAM,cAAc;IAClB,OAAO,CAAC,OAAO,CAAqD;IACpE,OAAO,CAAC,SAAS,CAAoD;;IASrE;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAK1E;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,iBAAiB,GAAG,cAAc,GAAG,IAAI;IAkB7D;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAKzD;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE;IAWpD;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO;IAIjD;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAK1C;;OAEG;IACH,qBAAqB,IAAI,iBAAiB,EAAE;IAI5C;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAW3B;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB;IAK9C;;OAEG;IACH,YAAY,IAAI,IAAI;CAIrB;AAGD,eAAO,MAAM,cAAc,gBAAuB,CAAC;AAGnD,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser Registry
|
|
3
|
+
* Centralized management of language-specific parsers
|
|
4
|
+
* @version 3.2.0
|
|
5
|
+
*/
|
|
6
|
+
import { getLanguageFromPath } from './types.js';
|
|
7
|
+
import { PythonParser } from './pythonParser.js';
|
|
8
|
+
import { GoParser } from './goParser.js';
|
|
9
|
+
import { RustParser } from './rustParser.js';
|
|
10
|
+
import { logger } from '../../utils/logger.js';
|
|
11
|
+
/**
|
|
12
|
+
* Registry for language parsers
|
|
13
|
+
*/
|
|
14
|
+
class ParserRegistry {
|
|
15
|
+
parsers = new Map();
|
|
16
|
+
factories = new Map();
|
|
17
|
+
constructor() {
|
|
18
|
+
// Register builtin parsers
|
|
19
|
+
this.registerFactory('python', () => new PythonParser());
|
|
20
|
+
this.registerFactory('go', () => new GoParser());
|
|
21
|
+
this.registerFactory('rust', () => new RustParser());
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Register a parser factory for lazy instantiation
|
|
25
|
+
*/
|
|
26
|
+
registerFactory(language, factory) {
|
|
27
|
+
this.factories.set(language, factory);
|
|
28
|
+
logger.debug('Registered parser factory', { language });
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get parser for a specific language (lazy instantiation)
|
|
32
|
+
*/
|
|
33
|
+
getParser(language) {
|
|
34
|
+
// Check if already instantiated
|
|
35
|
+
if (this.parsers.has(language)) {
|
|
36
|
+
return this.parsers.get(language);
|
|
37
|
+
}
|
|
38
|
+
// Check for factory
|
|
39
|
+
const factory = this.factories.get(language);
|
|
40
|
+
if (factory) {
|
|
41
|
+
const parser = factory();
|
|
42
|
+
this.parsers.set(language, parser);
|
|
43
|
+
logger.debug('Instantiated parser', { language });
|
|
44
|
+
return parser;
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get parser for a file path
|
|
50
|
+
*/
|
|
51
|
+
getParserForFile(filePath) {
|
|
52
|
+
const language = getLanguageFromPath(filePath);
|
|
53
|
+
return this.getParser(language);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Analyze code using appropriate language parser
|
|
57
|
+
*/
|
|
58
|
+
analyze(filePath, code) {
|
|
59
|
+
const parser = this.getParserForFile(filePath);
|
|
60
|
+
if (!parser) {
|
|
61
|
+
logger.debug('No parser available for file', { filePath });
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
return parser.analyze(code, filePath);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Check if a language is supported
|
|
68
|
+
*/
|
|
69
|
+
isSupported(language) {
|
|
70
|
+
return this.factories.has(language);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Check if a file is supported
|
|
74
|
+
*/
|
|
75
|
+
isFileSupported(filePath) {
|
|
76
|
+
const language = getLanguageFromPath(filePath);
|
|
77
|
+
return this.isSupported(language);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get all supported languages
|
|
81
|
+
*/
|
|
82
|
+
getSupportedLanguages() {
|
|
83
|
+
return Array.from(this.factories.keys());
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get total rule count across all parsers
|
|
87
|
+
*/
|
|
88
|
+
getTotalRuleCount() {
|
|
89
|
+
let total = 0;
|
|
90
|
+
for (const [language] of this.factories) {
|
|
91
|
+
const parser = this.getParser(language);
|
|
92
|
+
if (parser) {
|
|
93
|
+
total += parser.getRules().length;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return total;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get rules by language
|
|
100
|
+
*/
|
|
101
|
+
getRulesByLanguage(language) {
|
|
102
|
+
const parser = this.getParser(language);
|
|
103
|
+
return parser?.getRules() || [];
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Clear all instantiated parsers (for memory management)
|
|
107
|
+
*/
|
|
108
|
+
clearParsers() {
|
|
109
|
+
this.parsers.clear();
|
|
110
|
+
logger.debug('Cleared parser instances');
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// Export singleton instance
|
|
114
|
+
export const parserRegistry = new ParserRegistry();
|
|
115
|
+
// Re-export types
|
|
116
|
+
export * from './types.js';
|
|
117
|
+
export { PythonParser, PYTHON_RULES } from './pythonParser.js';
|
|
118
|
+
export { GoParser, GO_RULES } from './goParser.js';
|
|
119
|
+
export { RustParser, RUST_RULES } from './rustParser.js';
|
|
120
|
+
export { BaseLanguageParser } from './baseParser.js';
|
|
121
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/parsers/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Python Language Parser
|
|
3
|
+
* Semantic analysis for Python code
|
|
4
|
+
* @version 3.2.0
|
|
5
|
+
*/
|
|
6
|
+
import { BaseLanguageParser } from './baseParser.js';
|
|
7
|
+
import type { ParseResult, LanguageRule } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Python-specific parser with semantic rules
|
|
10
|
+
*/
|
|
11
|
+
export declare class PythonParser extends BaseLanguageParser {
|
|
12
|
+
readonly language: "python";
|
|
13
|
+
readonly extensions: string[];
|
|
14
|
+
constructor();
|
|
15
|
+
parse(code: string, filePath: string): ParseResult;
|
|
16
|
+
private extractImports;
|
|
17
|
+
private extractFunctions;
|
|
18
|
+
private parseParameters;
|
|
19
|
+
private splitParams;
|
|
20
|
+
private extractClasses;
|
|
21
|
+
private extractVariables;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Python-specific semantic rules
|
|
25
|
+
*/
|
|
26
|
+
declare const PYTHON_RULES: LanguageRule[];
|
|
27
|
+
export { PYTHON_RULES };
|
|
28
|
+
//# sourceMappingURL=pythonParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pythonParser.d.ts","sourceRoot":"","sources":["../../../src/services/parsers/pythonParser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EACV,WAAW,EASX,YAAY,EAEb,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,YAAa,SAAQ,kBAAkB;IAClD,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IACtC,QAAQ,CAAC,UAAU,WAA2B;;IAO9C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW;IA0ElD,OAAO,CAAC,cAAc;IA6DtB,OAAO,CAAC,gBAAgB;IAqFxB,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,cAAc;IA8FtB,OAAO,CAAC,gBAAgB;CAyBzB;AAED;;GAEG;AACH,QAAA,MAAM,YAAY,EAAE,YAAY,EAyS/B,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
|