code-auditor-mcp 1.20.0 → 2.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.
Files changed (180) hide show
  1. package/dist/adapters/GoAdapter.d.ts +53 -0
  2. package/dist/adapters/GoAdapter.d.ts.map +1 -0
  3. package/dist/adapters/GoAdapter.js +602 -0
  4. package/dist/adapters/GoAdapter.js.map +1 -0
  5. package/dist/adapters/GoConfig.d.ts +35 -0
  6. package/dist/adapters/GoConfig.d.ts.map +1 -0
  7. package/dist/adapters/GoConfig.js +155 -0
  8. package/dist/adapters/GoConfig.js.map +1 -0
  9. package/dist/adapters/LanguageAdapter.d.ts +135 -0
  10. package/dist/adapters/LanguageAdapter.d.ts.map +1 -0
  11. package/dist/adapters/LanguageAdapter.js +47 -0
  12. package/dist/adapters/LanguageAdapter.js.map +1 -0
  13. package/dist/adapters/TypeScriptAdapter.d.ts +43 -0
  14. package/dist/adapters/TypeScriptAdapter.d.ts.map +1 -0
  15. package/dist/adapters/TypeScriptAdapter.js +386 -0
  16. package/dist/adapters/TypeScriptAdapter.js.map +1 -0
  17. package/dist/adapters/UniversalAnalyzer.d.ts +42 -0
  18. package/dist/adapters/UniversalAnalyzer.d.ts.map +1 -0
  19. package/dist/adapters/UniversalAnalyzer.js +103 -0
  20. package/dist/adapters/UniversalAnalyzer.js.map +1 -0
  21. package/dist/adapters/UniversalSOLIDAnalyzer.d.ts +48 -0
  22. package/dist/adapters/UniversalSOLIDAnalyzer.d.ts.map +1 -0
  23. package/dist/adapters/UniversalSOLIDAnalyzer.js +178 -0
  24. package/dist/adapters/UniversalSOLIDAnalyzer.js.map +1 -0
  25. package/dist/adapters/solidAnalyzerCompat.d.ts +21 -0
  26. package/dist/adapters/solidAnalyzerCompat.d.ts.map +1 -0
  27. package/dist/adapters/solidAnalyzerCompat.js +78 -0
  28. package/dist/adapters/solidAnalyzerCompat.js.map +1 -0
  29. package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts +103 -0
  30. package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts.map +1 -0
  31. package/dist/analyzers/cross-language/APIContractAnalyzer.js +425 -0
  32. package/dist/analyzers/cross-language/APIContractAnalyzer.js.map +1 -0
  33. package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.d.ts +117 -0
  34. package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.d.ts.map +1 -0
  35. package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.js +618 -0
  36. package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.js.map +1 -0
  37. package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts +129 -0
  38. package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -0
  39. package/dist/analyzers/cross-language/DependencyGraphBuilder.js +473 -0
  40. package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -0
  41. package/dist/analyzers/cross-language/SchemaValidator.d.ts +126 -0
  42. package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -0
  43. package/dist/analyzers/cross-language/SchemaValidator.js +522 -0
  44. package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -0
  45. package/dist/analyzers/dataAccessAnalyzerCompat.d.ts +20 -0
  46. package/dist/analyzers/dataAccessAnalyzerCompat.d.ts.map +1 -0
  47. package/dist/analyzers/dataAccessAnalyzerCompat.js +59 -0
  48. package/dist/analyzers/dataAccessAnalyzerCompat.js.map +1 -0
  49. package/dist/analyzers/documentationAnalyzerCompat.d.ts +20 -0
  50. package/dist/analyzers/documentationAnalyzerCompat.d.ts.map +1 -0
  51. package/dist/analyzers/documentationAnalyzerCompat.js +52 -0
  52. package/dist/analyzers/documentationAnalyzerCompat.js.map +1 -0
  53. package/dist/analyzers/dryAnalyzerCompat.d.ts +20 -0
  54. package/dist/analyzers/dryAnalyzerCompat.d.ts.map +1 -0
  55. package/dist/analyzers/dryAnalyzerCompat.js +44 -0
  56. package/dist/analyzers/dryAnalyzerCompat.js.map +1 -0
  57. package/dist/analyzers/schemaAnalyzer.d.ts +21 -0
  58. package/dist/analyzers/schemaAnalyzer.d.ts.map +1 -0
  59. package/dist/analyzers/schemaAnalyzer.js +405 -0
  60. package/dist/analyzers/schemaAnalyzer.js.map +1 -0
  61. package/dist/analyzers/schemaAnalyzerCompat.d.ts +20 -0
  62. package/dist/analyzers/schemaAnalyzerCompat.d.ts.map +1 -0
  63. package/dist/analyzers/schemaAnalyzerCompat.js +69 -0
  64. package/dist/analyzers/schemaAnalyzerCompat.js.map +1 -0
  65. package/dist/analyzers/solidAnalyzerCompat.d.ts +20 -0
  66. package/dist/analyzers/solidAnalyzerCompat.d.ts.map +1 -0
  67. package/dist/analyzers/solidAnalyzerCompat.js +78 -0
  68. package/dist/analyzers/solidAnalyzerCompat.js.map +1 -0
  69. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +71 -0
  70. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -0
  71. package/dist/analyzers/universal/UniversalDRYAnalyzer.js +276 -0
  72. package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -0
  73. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +82 -0
  74. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -0
  75. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +489 -0
  76. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -0
  77. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts +48 -0
  78. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -0
  79. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +175 -0
  80. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -0
  81. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts +64 -0
  82. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -0
  83. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +286 -0
  84. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -0
  85. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +119 -0
  86. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -0
  87. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +812 -0
  88. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -0
  89. package/dist/auditRunner.d.ts.map +1 -1
  90. package/dist/auditRunner.js +23 -7
  91. package/dist/auditRunner.js.map +1 -1
  92. package/dist/codeIndexDB-enhanced.d.ts +80 -0
  93. package/dist/codeIndexDB-enhanced.d.ts.map +1 -0
  94. package/dist/codeIndexDB-enhanced.js +488 -0
  95. package/dist/codeIndexDB-enhanced.js.map +1 -0
  96. package/dist/codeIndexDb.d.ts +70 -1
  97. package/dist/codeIndexDb.d.ts.map +1 -1
  98. package/dist/codeIndexDb.js +199 -2
  99. package/dist/codeIndexDb.js.map +1 -1
  100. package/dist/config/defaults.js +1 -1
  101. package/dist/config/defaults.js.map +1 -1
  102. package/dist/languages/LanguageOrchestrator.d.ts +181 -0
  103. package/dist/languages/LanguageOrchestrator.d.ts.map +1 -0
  104. package/dist/languages/LanguageOrchestrator.js +365 -0
  105. package/dist/languages/LanguageOrchestrator.js.map +1 -0
  106. package/dist/languages/LanguageRegistry.d.ts +43 -0
  107. package/dist/languages/LanguageRegistry.d.ts.map +1 -0
  108. package/dist/languages/LanguageRegistry.js +86 -0
  109. package/dist/languages/LanguageRegistry.js.map +1 -0
  110. package/dist/languages/RuntimeManager.d.ts +181 -0
  111. package/dist/languages/RuntimeManager.d.ts.map +1 -0
  112. package/dist/languages/RuntimeManager.js +841 -0
  113. package/dist/languages/RuntimeManager.js.map +1 -0
  114. package/dist/languages/UniversalAnalyzer.d.ts +37 -0
  115. package/dist/languages/UniversalAnalyzer.d.ts.map +1 -0
  116. package/dist/languages/UniversalAnalyzer.js +101 -0
  117. package/dist/languages/UniversalAnalyzer.js.map +1 -0
  118. package/dist/languages/go/GoAdapter.d.ts +57 -0
  119. package/dist/languages/go/GoAdapter.d.ts.map +1 -0
  120. package/dist/languages/go/GoAdapter.js +360 -0
  121. package/dist/languages/go/GoAdapter.js.map +1 -0
  122. package/dist/languages/index.d.ts +13 -0
  123. package/dist/languages/index.d.ts.map +1 -0
  124. package/dist/languages/index.js +23 -0
  125. package/dist/languages/index.js.map +1 -0
  126. package/dist/languages/types.d.ts +182 -0
  127. package/dist/languages/types.d.ts.map +1 -0
  128. package/dist/languages/types.js +5 -0
  129. package/dist/languages/types.js.map +1 -0
  130. package/dist/languages/typescript/TypeScriptAdapter.d.ts +108 -0
  131. package/dist/languages/typescript/TypeScriptAdapter.d.ts.map +1 -0
  132. package/dist/languages/typescript/TypeScriptAdapter.js +567 -0
  133. package/dist/languages/typescript/TypeScriptAdapter.js.map +1 -0
  134. package/dist/languages/typescript/test-extraction.d.ts +2 -0
  135. package/dist/languages/typescript/test-extraction.d.ts.map +1 -0
  136. package/dist/languages/typescript/test-extraction.js +36 -0
  137. package/dist/languages/typescript/test-extraction.js.map +1 -0
  138. package/dist/mcp-hybrid.d.ts +10 -0
  139. package/dist/mcp-hybrid.d.ts.map +1 -0
  140. package/dist/mcp-hybrid.js +41 -0
  141. package/dist/mcp-hybrid.js.map +1 -0
  142. package/dist/mcp-index.d.ts +11 -0
  143. package/dist/mcp-index.d.ts.map +1 -0
  144. package/dist/mcp-index.js +101 -0
  145. package/dist/mcp-index.js.map +1 -0
  146. package/dist/mcp-tools/workflowGuide.d.ts.map +1 -1
  147. package/dist/mcp-tools/workflowGuide.js +67 -10
  148. package/dist/mcp-tools/workflowGuide.js.map +1 -1
  149. package/dist/mcp-tools-shared.d.ts +49 -0
  150. package/dist/mcp-tools-shared.d.ts.map +1 -0
  151. package/dist/mcp-tools-shared.js +1282 -0
  152. package/dist/mcp-tools-shared.js.map +1 -0
  153. package/dist/mcp-ui-server.d.ts +27 -0
  154. package/dist/mcp-ui-server.d.ts.map +1 -0
  155. package/dist/mcp-ui-server.js +484 -0
  156. package/dist/mcp-ui-server.js.map +1 -0
  157. package/dist/mcp-ui-simple.d.ts +27 -0
  158. package/dist/mcp-ui-simple.d.ts.map +1 -0
  159. package/dist/mcp-ui-simple.js +425 -0
  160. package/dist/mcp-ui-simple.js.map +1 -0
  161. package/dist/mcp.js +7 -4
  162. package/dist/mcp.js.map +1 -1
  163. package/dist/services/SchemaParser.d.ts +89 -0
  164. package/dist/services/SchemaParser.d.ts.map +1 -0
  165. package/dist/services/SchemaParser.js +434 -0
  166. package/dist/services/SchemaParser.js.map +1 -0
  167. package/dist/types/crossLanguage.d.ts +267 -0
  168. package/dist/types/crossLanguage.d.ts.map +1 -0
  169. package/dist/types/crossLanguage.js +6 -0
  170. package/dist/types/crossLanguage.js.map +1 -0
  171. package/dist/types.d.ts +128 -0
  172. package/dist/types.d.ts.map +1 -1
  173. package/dist/types.js.map +1 -1
  174. package/dist/utils/fileDiscovery.d.ts +6 -0
  175. package/dist/utils/fileDiscovery.d.ts.map +1 -1
  176. package/dist/utils/fileDiscovery.js +12 -1
  177. package/dist/utils/fileDiscovery.js.map +1 -1
  178. package/examples/schema-example.json +364 -0
  179. package/examples/schema-example.yaml +137 -0
  180. package/package.json +10 -3
@@ -0,0 +1,386 @@
1
+ /**
2
+ * TypeScript Language Adapter
3
+ *
4
+ * Wraps existing TypeScript functionality to conform to the LanguageAdapter interface.
5
+ * This maintains backward compatibility while enabling multi-language support.
6
+ */
7
+ import * as ts from 'typescript';
8
+ import path from 'path';
9
+ export class TypeScriptAdapter {
10
+ name = 'typescript';
11
+ extensions = ['.ts', '.tsx', '.js', '.jsx'];
12
+ compilerOptions = {
13
+ target: ts.ScriptTarget.Latest,
14
+ module: ts.ModuleKind.ESNext,
15
+ allowJs: true,
16
+ jsx: ts.JsxEmit.ReactJSX,
17
+ skipLibCheck: true,
18
+ skipDefaultLibCheck: true,
19
+ noResolve: true,
20
+ };
21
+ async parse(file, content) {
22
+ const sourceFile = ts.createSourceFile(file, content, this.compilerOptions.target || ts.ScriptTarget.Latest, true, this.getScriptKind(file));
23
+ const errors = [];
24
+ // Convert TypeScript diagnostics to our format
25
+ const diagnostics = [];
26
+ for (const diagnostic of diagnostics) {
27
+ if (diagnostic.file && diagnostic.start !== undefined) {
28
+ const location = this.getLocationFromPosition(sourceFile, diagnostic.start);
29
+ errors.push({
30
+ message: ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n'),
31
+ location,
32
+ severity: diagnostic.category === ts.DiagnosticCategory.Error ? 'error' : 'warning'
33
+ });
34
+ }
35
+ }
36
+ return {
37
+ root: this.convertNode(sourceFile),
38
+ language: this.name,
39
+ filePath: file,
40
+ errors
41
+ };
42
+ }
43
+ supportsFile(filePath) {
44
+ const ext = path.extname(filePath).toLowerCase();
45
+ return this.extensions.includes(ext);
46
+ }
47
+ findNodes(ast, pattern) {
48
+ const results = [];
49
+ const visit = (node) => {
50
+ if (this.matchesPattern(node, pattern)) {
51
+ results.push(node);
52
+ }
53
+ const children = this.getChildren(node);
54
+ children.forEach(visit);
55
+ };
56
+ visit(ast.root);
57
+ return results;
58
+ }
59
+ getParent(node) {
60
+ const tsNode = node.raw;
61
+ if (tsNode.parent) {
62
+ return this.convertNode(tsNode.parent);
63
+ }
64
+ return null;
65
+ }
66
+ getChildren(node) {
67
+ const tsNode = node.raw;
68
+ const children = [];
69
+ ts.forEachChild(tsNode, (child) => {
70
+ children.push(this.convertNode(child));
71
+ });
72
+ return children;
73
+ }
74
+ getNodeType(node) {
75
+ return node.type;
76
+ }
77
+ getNodeText(node) {
78
+ const tsNode = node.raw;
79
+ return tsNode.getFullText();
80
+ }
81
+ getNodeLocation(node) {
82
+ return node.location;
83
+ }
84
+ getNodeName(node) {
85
+ const tsNode = node.raw;
86
+ if (ts.isIdentifier(tsNode)) {
87
+ return tsNode.text;
88
+ }
89
+ if ('name' in tsNode && tsNode.name && ts.isIdentifier(tsNode.name)) {
90
+ return tsNode.name.text;
91
+ }
92
+ return null;
93
+ }
94
+ extractFunctions(ast) {
95
+ const functions = [];
96
+ const visit = (node) => {
97
+ if (this.isFunction(node)) {
98
+ const functionInfo = this.extractFunctionInfo(node);
99
+ if (functionInfo) {
100
+ functions.push(functionInfo);
101
+ }
102
+ }
103
+ const children = this.getChildren(node);
104
+ children.forEach(visit);
105
+ };
106
+ visit(ast.root);
107
+ return functions;
108
+ }
109
+ extractClasses(ast) {
110
+ const classes = [];
111
+ const visit = (node) => {
112
+ if (this.isClass(node)) {
113
+ const classInfo = this.extractClassInfo(node);
114
+ if (classInfo) {
115
+ classes.push(classInfo);
116
+ }
117
+ }
118
+ const children = this.getChildren(node);
119
+ children.forEach(visit);
120
+ };
121
+ visit(ast.root);
122
+ return classes;
123
+ }
124
+ extractImports(ast) {
125
+ const imports = [];
126
+ const visit = (node) => {
127
+ if (this.isImport(node)) {
128
+ const importInfo = this.extractImportInfo(node);
129
+ if (importInfo) {
130
+ imports.push(importInfo);
131
+ }
132
+ }
133
+ const children = this.getChildren(node);
134
+ children.forEach(visit);
135
+ };
136
+ visit(ast.root);
137
+ return imports;
138
+ }
139
+ extractExports(ast) {
140
+ const exports = [];
141
+ const visit = (node) => {
142
+ const tsNode = node.raw;
143
+ if (ts.isExportDeclaration(tsNode) || ts.isExportAssignment(tsNode)) {
144
+ const exportInfo = this.extractExportInfo(node);
145
+ if (exportInfo) {
146
+ exports.push(exportInfo);
147
+ }
148
+ }
149
+ const children = this.getChildren(node);
150
+ children.forEach(visit);
151
+ };
152
+ visit(ast.root);
153
+ return exports;
154
+ }
155
+ isClass(node) {
156
+ const tsNode = node.raw;
157
+ return ts.isClassDeclaration(tsNode) || ts.isClassExpression(tsNode);
158
+ }
159
+ isFunction(node) {
160
+ const tsNode = node.raw;
161
+ return ts.isFunctionDeclaration(tsNode) ||
162
+ ts.isFunctionExpression(tsNode) ||
163
+ ts.isArrowFunction(tsNode) ||
164
+ ts.isMethodDeclaration(tsNode);
165
+ }
166
+ isMethod(node) {
167
+ const tsNode = node.raw;
168
+ return ts.isMethodDeclaration(tsNode);
169
+ }
170
+ isInterface(node) {
171
+ const tsNode = node.raw;
172
+ return ts.isInterfaceDeclaration(tsNode);
173
+ }
174
+ isImport(node) {
175
+ const tsNode = node.raw;
176
+ return ts.isImportDeclaration(tsNode);
177
+ }
178
+ isVariable(node) {
179
+ const tsNode = node.raw;
180
+ return ts.isVariableDeclaration(tsNode);
181
+ }
182
+ // Private helper methods
183
+ convertNode(tsNode) {
184
+ const sourceFile = tsNode.getSourceFile();
185
+ const start = tsNode.getStart(sourceFile);
186
+ const end = tsNode.getEnd();
187
+ return {
188
+ type: ts.SyntaxKind[tsNode.kind],
189
+ range: [start, end],
190
+ location: this.getLocationFromPosition(sourceFile, start, end),
191
+ raw: tsNode
192
+ };
193
+ }
194
+ getLocationFromPosition(sourceFile, start, end) {
195
+ const startPos = sourceFile.getLineAndCharacterOfPosition(start);
196
+ const endPos = end ? sourceFile.getLineAndCharacterOfPosition(end) : startPos;
197
+ return {
198
+ start: { line: startPos.line + 1, column: startPos.character + 1 },
199
+ end: { line: endPos.line + 1, column: endPos.character + 1 }
200
+ };
201
+ }
202
+ getScriptKind(fileName) {
203
+ const ext = path.extname(fileName).toLowerCase();
204
+ switch (ext) {
205
+ case '.ts': return ts.ScriptKind.TS;
206
+ case '.tsx': return ts.ScriptKind.TSX;
207
+ case '.jsx': return ts.ScriptKind.JSX;
208
+ case '.js': return ts.ScriptKind.JS;
209
+ default: return ts.ScriptKind.Unknown;
210
+ }
211
+ }
212
+ matchesPattern(node, pattern) {
213
+ // Type matching
214
+ if (pattern.type) {
215
+ const types = Array.isArray(pattern.type) ? pattern.type : [pattern.type];
216
+ if (!types.includes(node.type)) {
217
+ return false;
218
+ }
219
+ }
220
+ // Name matching
221
+ if (pattern.name) {
222
+ const nodeName = this.getNodeName(node);
223
+ if (!nodeName)
224
+ return false;
225
+ if (typeof pattern.name === 'string') {
226
+ if (nodeName !== pattern.name)
227
+ return false;
228
+ }
229
+ else if (pattern.name instanceof RegExp) {
230
+ if (!pattern.name.test(nodeName))
231
+ return false;
232
+ }
233
+ }
234
+ // Custom function matching
235
+ if (pattern.custom) {
236
+ if (!pattern.custom(node))
237
+ return false;
238
+ }
239
+ // Parent/child pattern matching would be implemented here
240
+ // For now, we'll skip these complex patterns
241
+ return true;
242
+ }
243
+ extractFunctionInfo(node) {
244
+ const tsNode = node.raw;
245
+ if (!this.isFunction(node))
246
+ return null;
247
+ const name = this.getNodeName(node) || '<anonymous>';
248
+ const location = this.getNodeLocation(node);
249
+ let parameters = [];
250
+ let isAsync = false;
251
+ let isMethod = false;
252
+ let className;
253
+ if (ts.isFunctionDeclaration(tsNode) || ts.isFunctionExpression(tsNode) || ts.isArrowFunction(tsNode)) {
254
+ parameters = this.extractParameters(tsNode.parameters);
255
+ isAsync = !!(tsNode.modifiers?.some(mod => mod.kind === ts.SyntaxKind.AsyncKeyword));
256
+ }
257
+ else if (ts.isMethodDeclaration(tsNode)) {
258
+ parameters = this.extractParameters(tsNode.parameters);
259
+ isAsync = !!(tsNode.modifiers?.some(mod => mod.kind === ts.SyntaxKind.AsyncKeyword));
260
+ isMethod = true;
261
+ // Find the containing class
262
+ let parent = tsNode.parent;
263
+ while (parent && !ts.isClassDeclaration(parent)) {
264
+ parent = parent.parent;
265
+ }
266
+ if (parent && ts.isClassDeclaration(parent) && parent.name) {
267
+ className = parent.name.text;
268
+ }
269
+ }
270
+ return {
271
+ name,
272
+ location,
273
+ parameters,
274
+ isAsync,
275
+ isExported: this.hasExportModifier(tsNode),
276
+ isMethod,
277
+ className
278
+ };
279
+ }
280
+ extractClassInfo(node) {
281
+ const tsNode = node.raw;
282
+ if (!ts.isClassDeclaration(tsNode) && !ts.isClassExpression(tsNode))
283
+ return null;
284
+ const name = tsNode.name?.text || '<anonymous>';
285
+ const location = this.getNodeLocation(node);
286
+ const methods = [];
287
+ const properties = [];
288
+ // Extract methods and properties
289
+ for (const member of tsNode.members) {
290
+ if (ts.isMethodDeclaration(member)) {
291
+ const methodNode = this.convertNode(member);
292
+ const methodInfo = this.extractFunctionInfo(methodNode);
293
+ if (methodInfo) {
294
+ methods.push(methodInfo);
295
+ }
296
+ }
297
+ else if (ts.isPropertyDeclaration(member)) {
298
+ const propInfo = this.extractPropertyInfo(member);
299
+ if (propInfo) {
300
+ properties.push(propInfo);
301
+ }
302
+ }
303
+ }
304
+ return {
305
+ name,
306
+ location,
307
+ methods,
308
+ properties,
309
+ extends: [], // Would extract heritage clause
310
+ implements: [], // Would extract implements clause
311
+ isExported: this.hasExportModifier(tsNode),
312
+ isAbstract: !!(tsNode.modifiers?.some(mod => mod.kind === ts.SyntaxKind.AbstractKeyword))
313
+ };
314
+ }
315
+ extractImportInfo(node) {
316
+ const tsNode = node.raw;
317
+ if (!ts.isImportDeclaration(tsNode))
318
+ return null;
319
+ const moduleSpecifier = tsNode.moduleSpecifier;
320
+ if (!ts.isStringLiteral(moduleSpecifier))
321
+ return null;
322
+ const module = moduleSpecifier.text;
323
+ const location = this.getNodeLocation(node);
324
+ const isTypeOnly = !!(tsNode.importClause?.isTypeOnly);
325
+ const items = [];
326
+ if (tsNode.importClause) {
327
+ // Default import
328
+ if (tsNode.importClause.name) {
329
+ items.push({
330
+ name: tsNode.importClause.name.text,
331
+ isDefault: true
332
+ });
333
+ }
334
+ // Named imports
335
+ if (tsNode.importClause.namedBindings) {
336
+ if (ts.isNamedImports(tsNode.importClause.namedBindings)) {
337
+ for (const element of tsNode.importClause.namedBindings.elements) {
338
+ items.push({
339
+ name: element.name.text,
340
+ alias: element.propertyName?.text,
341
+ isDefault: false
342
+ });
343
+ }
344
+ }
345
+ }
346
+ }
347
+ return {
348
+ module,
349
+ items,
350
+ location,
351
+ isTypeOnly
352
+ };
353
+ }
354
+ extractExportInfo(node) {
355
+ // Simplified export extraction - would be expanded for full support
356
+ return null;
357
+ }
358
+ extractParameters(parameters) {
359
+ return parameters.map(param => ({
360
+ name: param.name.getText(),
361
+ type: param.type?.getText(),
362
+ optional: !!param.questionToken,
363
+ defaultValue: param.initializer?.getText()
364
+ }));
365
+ }
366
+ extractPropertyInfo(prop) {
367
+ const name = prop.name?.getText();
368
+ if (!name)
369
+ return null;
370
+ return {
371
+ name,
372
+ type: prop.type?.getText(),
373
+ location: this.getLocationFromPosition(prop.getSourceFile(), prop.getStart()),
374
+ isStatic: !!(prop.modifiers?.some(mod => mod.kind === ts.SyntaxKind.StaticKeyword)),
375
+ isPrivate: !!(prop.modifiers?.some(mod => mod.kind === ts.SyntaxKind.PrivateKeyword)),
376
+ isReadonly: !!(prop.modifiers?.some(mod => mod.kind === ts.SyntaxKind.ReadonlyKeyword))
377
+ };
378
+ }
379
+ hasExportModifier(node) {
380
+ if ('modifiers' in node && node.modifiers) {
381
+ return node.modifiers.some(mod => mod.kind === ts.SyntaxKind.ExportKeyword);
382
+ }
383
+ return false;
384
+ }
385
+ }
386
+ //# sourceMappingURL=TypeScriptAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypeScriptAdapter.js","sourceRoot":"","sources":["../../src/adapters/TypeScriptAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Universal Analyzer Base Class
3
+ *
4
+ * Implements the architecture plan for multi-language analyzers.
5
+ * Each analyzer extends this class and implements language-agnostic analysis logic.
6
+ */
7
+ import { LanguageAdapter, AST } from './LanguageAdapter.js';
8
+ import { AnalyzerDefinition, AnalyzerResult, Violation, Severity } from '../types.js';
9
+ export declare abstract class UniversalAnalyzer implements AnalyzerDefinition {
10
+ abstract readonly name: string;
11
+ abstract readonly description: string;
12
+ private registry;
13
+ analyze(files: string[], config: any, options?: any): Promise<AnalyzerResult>;
14
+ /**
15
+ * Language-agnostic analysis logic
16
+ * Each analyzer implements this method to perform analysis on the abstracted AST
17
+ */
18
+ abstract analyzeAST(ast: AST, adapter: LanguageAdapter, config: any): Promise<Violation[]>;
19
+ /**
20
+ * Get the appropriate language adapter for a file
21
+ */
22
+ private getAdapter;
23
+ /**
24
+ * Helper method to create violations with consistent formatting
25
+ */
26
+ protected createViolation(file: string, line: number, column: number, message: string, severity?: Severity, rule?: string, fix?: any): Violation;
27
+ /**
28
+ * Helper method to check if a node matches a specific pattern
29
+ */
30
+ protected nodeMatches(node: any, adapter: LanguageAdapter, pattern: {
31
+ type?: string;
32
+ name?: string | RegExp;
33
+ }): boolean;
34
+ /**
35
+ * Helper method to get source location for violations
36
+ */
37
+ protected getSourceLocation(adapter: LanguageAdapter, node: any): {
38
+ line: number;
39
+ column: number;
40
+ };
41
+ }
42
+ //# sourceMappingURL=UniversalAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniversalAnalyzer.d.ts","sourceRoot":"","sources":["../../src/adapters/UniversalAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,GAAG,EAAoB,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtF,8BAAsB,iBAAkB,YAAW,kBAAkB;IACnE,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAEtC,OAAO,CAAC,QAAQ,CAAkC;IAE5C,OAAO,CACX,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,EAAE,GAAG,EACX,OAAO,GAAE,GAAQ,GAChB,OAAO,CAAC,cAAc,CAAC;IA+C1B;;;OAGG;IACH,QAAQ,CAAC,UAAU,CACjB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,GAAG,GACV,OAAO,CAAC,SAAS,EAAE,CAAC;IAEvB;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,SAAS,CAAC,eAAe,CACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,QAAoB,EAC9B,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,GAAG,GACR,SAAS;IAaZ;;OAEG;IACH,SAAS,CAAC,WAAW,CACnB,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GACjD,OAAO;IAmBV;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAOnG"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Universal Analyzer Base Class
3
+ *
4
+ * Implements the architecture plan for multi-language analyzers.
5
+ * Each analyzer extends this class and implements language-agnostic analysis logic.
6
+ */
7
+ import { promises as fs } from 'fs';
8
+ import { LanguageRegistry } from './LanguageAdapter.js';
9
+ export class UniversalAnalyzer {
10
+ registry = LanguageRegistry.getInstance();
11
+ async analyze(files, config, options = {}) {
12
+ const violations = [];
13
+ let filesProcessed = 0;
14
+ let executionTime = 0;
15
+ const startTime = Date.now();
16
+ console.error(`[DEBUG] ${this.name}: UniversalAnalyzer.analyze() called with files:`, files.map(f => f.substring(f.lastIndexOf('/') + 1)));
17
+ for (const file of files) {
18
+ try {
19
+ console.error(`[DEBUG] ${this.name}: Processing file: ${file}`);
20
+ const adapter = this.getAdapter(file);
21
+ if (!adapter) {
22
+ console.error(`[DEBUG] ${this.name}: No adapter found for file: ${file}`);
23
+ continue;
24
+ }
25
+ console.error(`[DEBUG] ${this.name}: Using adapter: ${adapter.name} for file: ${file}`);
26
+ const content = await fs.readFile(file, 'utf8');
27
+ const ast = await adapter.parse(file, content);
28
+ console.error(`[DEBUG] ${this.name}: About to call analyzeAST for: ${file}`);
29
+ const fileViolations = await this.analyzeAST(ast, adapter, config);
30
+ console.error(`[DEBUG] ${this.name}: analyzeAST returned ${fileViolations.length} violations for: ${file}`);
31
+ violations.push(...fileViolations);
32
+ filesProcessed++;
33
+ }
34
+ catch (error) {
35
+ console.error(`[DEBUG] ${this.name}: Error processing file ${file}:`, error);
36
+ // Continue processing other files even if one fails
37
+ }
38
+ }
39
+ executionTime = Date.now() - startTime;
40
+ console.error(`[DEBUG] ${this.name}: Analysis complete. ${violations.length} total violations found.`);
41
+ return {
42
+ violations,
43
+ filesProcessed,
44
+ executionTime
45
+ };
46
+ }
47
+ /**
48
+ * Get the appropriate language adapter for a file
49
+ */
50
+ getAdapter(file) {
51
+ const adapter = this.registry.getAdapterForFile(file);
52
+ if (!adapter) {
53
+ console.warn(`[UniversalAnalyzer] No adapter found for file: ${file}`);
54
+ }
55
+ return adapter;
56
+ }
57
+ /**
58
+ * Helper method to create violations with consistent formatting
59
+ */
60
+ createViolation(file, line, column, message, severity = 'warning', rule, fix) {
61
+ return {
62
+ file,
63
+ line,
64
+ column,
65
+ severity,
66
+ message,
67
+ rule: rule || this.name,
68
+ analyzer: this.name,
69
+ ...(fix && { fix })
70
+ };
71
+ }
72
+ /**
73
+ * Helper method to check if a node matches a specific pattern
74
+ */
75
+ nodeMatches(node, adapter, pattern) {
76
+ if (pattern.type && adapter.getNodeType(node) !== pattern.type) {
77
+ return false;
78
+ }
79
+ if (pattern.name) {
80
+ const nodeName = adapter.getNodeName(node);
81
+ if (!nodeName)
82
+ return false;
83
+ if (typeof pattern.name === 'string') {
84
+ return nodeName === pattern.name;
85
+ }
86
+ else if (pattern.name instanceof RegExp) {
87
+ return pattern.name.test(nodeName);
88
+ }
89
+ }
90
+ return true;
91
+ }
92
+ /**
93
+ * Helper method to get source location for violations
94
+ */
95
+ getSourceLocation(adapter, node) {
96
+ const location = adapter.getNodeLocation(node);
97
+ return {
98
+ line: location.start.line,
99
+ column: location.start.column
100
+ };
101
+ }
102
+ }
103
+ //# sourceMappingURL=UniversalAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniversalAnalyzer.js","sourceRoot":"","sources":["../../src/adapters/UniversalAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Universal SOLID Analyzer
3
+ *
4
+ * Implements SOLID principle analysis using the language adapter pattern.
5
+ * This analyzer works across multiple languages by using the abstraction layer.
6
+ */
7
+ import { UniversalAnalyzer } from './UniversalAnalyzer.js';
8
+ import { LanguageAdapter, AST } from './LanguageAdapter.js';
9
+ import { Violation } from '../types.js';
10
+ export interface SOLIDConfig {
11
+ maxMethodsPerClass: number;
12
+ maxLinesPerMethod: number;
13
+ maxParametersPerMethod: number;
14
+ maxClassComplexity: number;
15
+ maxInterfaceMembers: number;
16
+ checkDependencyInversion: boolean;
17
+ checkInterfaceSegregation: boolean;
18
+ checkLiskovSubstitution: boolean;
19
+ srp: {
20
+ maxResponsibilities: number;
21
+ maxLinesPerFunction: number;
22
+ maxParametersPerFunction: number;
23
+ };
24
+ ocp: {
25
+ checkForDirectModification: boolean;
26
+ };
27
+ lsp: {
28
+ checkForExceptions: boolean;
29
+ };
30
+ isp: {
31
+ maxMethodsPerInterface: number;
32
+ };
33
+ dip: {
34
+ checkForConcreteClasses: boolean;
35
+ };
36
+ }
37
+ export declare class UniversalSOLIDAnalyzer extends UniversalAnalyzer {
38
+ readonly name = "solid";
39
+ readonly description = "Analyzes code for SOLID principle violations across multiple languages";
40
+ analyzeAST(ast: AST, adapter: LanguageAdapter, config: any): Promise<Violation[]>;
41
+ private analyzeSRP;
42
+ private analyzeOCP;
43
+ private analyzeISP;
44
+ private analyzeDIP;
45
+ private countFunctionLines;
46
+ private calculateClassComplexity;
47
+ }
48
+ //# sourceMappingURL=UniversalSOLIDAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniversalSOLIDAnalyzer.d.ts","sourceRoot":"","sources":["../../src/adapters/UniversalSOLIDAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,GAAG,EAAoC,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAkB,MAAM,aAAa,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wBAAwB,EAAE,OAAO,CAAC;IAClC,yBAAyB,EAAE,OAAO,CAAC;IACnC,uBAAuB,EAAE,OAAO,CAAC;IACjC,GAAG,EAAE;QACH,mBAAmB,EAAE,MAAM,CAAC;QAC5B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,wBAAwB,EAAE,MAAM,CAAC;KAClC,CAAC;IACF,GAAG,EAAE;QACH,0BAA0B,EAAE,OAAO,CAAC;KACrC,CAAC;IACF,GAAG,EAAE;QACH,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;IACF,GAAG,EAAE;QACH,sBAAsB,EAAE,MAAM,CAAC;KAChC,CAAC;IACF,GAAG,EAAE;QACH,uBAAuB,EAAE,OAAO,CAAC;KAClC,CAAC;CACH;AA8BD,qBAAa,sBAAuB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,IAAI,WAAW;IACxB,QAAQ,CAAC,WAAW,4EAA4E;IAE1F,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAqDvF,OAAO,CAAC,UAAU;IAiElB,OAAO,CAAC,UAAU;IAiClB,OAAO,CAAC,UAAU;IAmClB,OAAO,CAAC,UAAU;IAmClB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,wBAAwB;CAYjC"}