code-auditor-mcp 1.2.0 → 1.3.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 (35) hide show
  1. package/dist/analyzers/reactAnalyzer.d.ts +14 -0
  2. package/dist/analyzers/reactAnalyzer.d.ts.map +1 -0
  3. package/dist/analyzers/reactAnalyzer.js +481 -0
  4. package/dist/analyzers/reactAnalyzer.js.map +1 -0
  5. package/dist/auditRunner.d.ts.map +1 -1
  6. package/dist/auditRunner.js +4 -2
  7. package/dist/auditRunner.js.map +1 -1
  8. package/dist/codeIndexDb.d.ts.map +1 -1
  9. package/dist/codeIndexDb.js +65 -3
  10. package/dist/codeIndexDb.js.map +1 -1
  11. package/dist/componentScanner.d.ts +52 -0
  12. package/dist/componentScanner.d.ts.map +1 -0
  13. package/dist/componentScanner.js +293 -0
  14. package/dist/componentScanner.js.map +1 -0
  15. package/dist/functionScanner.d.ts.map +1 -1
  16. package/dist/functionScanner.js +125 -0
  17. package/dist/functionScanner.js.map +1 -1
  18. package/dist/mcp-standalone.js +33 -0
  19. package/dist/mcp-standalone.js.map +1 -1
  20. package/dist/mcp-tools/workflowGuide.d.ts +21 -0
  21. package/dist/mcp-tools/workflowGuide.d.ts.map +1 -0
  22. package/dist/mcp-tools/workflowGuide.js +201 -0
  23. package/dist/mcp-tools/workflowGuide.js.map +1 -0
  24. package/dist/mcp.js +42 -8
  25. package/dist/mcp.js.map +1 -1
  26. package/dist/search/QueryParser.d.ts.map +1 -1
  27. package/dist/search/QueryParser.js +43 -4
  28. package/dist/search/QueryParser.js.map +1 -1
  29. package/dist/types.d.ts +70 -0
  30. package/dist/types.d.ts.map +1 -1
  31. package/dist/utils/reactDetection.d.ts +43 -0
  32. package/dist/utils/reactDetection.d.ts.map +1 -0
  33. package/dist/utils/reactDetection.js +344 -0
  34. package/dist/utils/reactDetection.js.map +1 -0
  35. package/package.json +14 -15
@@ -0,0 +1,344 @@
1
+ /**
2
+ * React Component Detection Utilities
3
+ * Provides AST-based detection of React components and their properties
4
+ */
5
+ import * as ts from 'typescript';
6
+ /**
7
+ * Check if a node is any type of React component
8
+ */
9
+ export function isReactComponent(node) {
10
+ return isFunctionalComponent(node) || isClassComponent(node);
11
+ }
12
+ /**
13
+ * Check if a node is a functional React component
14
+ */
15
+ export function isFunctionalComponent(node) {
16
+ if (ts.isFunctionDeclaration(node) || ts.isFunctionExpression(node)) {
17
+ return returnsJSX(node);
18
+ }
19
+ if (ts.isArrowFunction(node)) {
20
+ return returnsJSX(node);
21
+ }
22
+ // Check for variable declarations with arrow functions
23
+ if (ts.isVariableStatement(node)) {
24
+ const declaration = node.declarationList.declarations[0];
25
+ if (declaration && declaration.initializer && ts.isArrowFunction(declaration.initializer)) {
26
+ return returnsJSX(declaration.initializer);
27
+ }
28
+ }
29
+ return false;
30
+ }
31
+ /**
32
+ * Check if a node returns JSX elements
33
+ */
34
+ export function returnsJSX(node) {
35
+ let hasJSX = false;
36
+ function visit(child) {
37
+ if (ts.isJsxElement(child) || ts.isJsxFragment(child) ||
38
+ ts.isJsxSelfClosingElement(child)) {
39
+ hasJSX = true;
40
+ }
41
+ // Check return statements
42
+ if (ts.isReturnStatement(child) && child.expression) {
43
+ if (ts.isJsxElement(child.expression) ||
44
+ ts.isJsxFragment(child.expression) ||
45
+ ts.isJsxSelfClosingElement(child.expression)) {
46
+ hasJSX = true;
47
+ }
48
+ }
49
+ if (!hasJSX) {
50
+ ts.forEachChild(child, visit);
51
+ }
52
+ }
53
+ ts.forEachChild(node, visit);
54
+ return hasJSX;
55
+ }
56
+ /**
57
+ * Check if a node is a class component extending React.Component
58
+ */
59
+ export function isClassComponent(node) {
60
+ if (!ts.isClassDeclaration(node)) {
61
+ return false;
62
+ }
63
+ // Check if class extends React.Component or React.PureComponent
64
+ if (node.heritageClauses) {
65
+ for (const clause of node.heritageClauses) {
66
+ if (clause.token === ts.SyntaxKind.ExtendsKeyword) {
67
+ for (const type of clause.types) {
68
+ const expression = type.expression;
69
+ // Check for React.Component or React.PureComponent
70
+ if (ts.isPropertyAccessExpression(expression)) {
71
+ const obj = expression.expression;
72
+ const prop = expression.name;
73
+ if (ts.isIdentifier(obj) && obj.text === 'React' &&
74
+ ts.isIdentifier(prop) && (prop.text === 'Component' || prop.text === 'PureComponent')) {
75
+ return true;
76
+ }
77
+ }
78
+ // Check for Component (when imported directly)
79
+ if (ts.isIdentifier(expression) &&
80
+ (expression.text === 'Component' || expression.text === 'PureComponent')) {
81
+ return true;
82
+ }
83
+ }
84
+ }
85
+ }
86
+ }
87
+ return false;
88
+ }
89
+ /**
90
+ * Extract hooks usage from a component node
91
+ */
92
+ export function extractHooks(node, sourceFile) {
93
+ const hooks = [];
94
+ function visit(child) {
95
+ if (ts.isCallExpression(child)) {
96
+ const expression = child.expression;
97
+ // Check for hook calls (functions starting with 'use')
98
+ if (ts.isIdentifier(expression) && expression.text.startsWith('use')) {
99
+ const line = sourceFile.getLineAndCharacterOfPosition(expression.getStart()).line + 1;
100
+ hooks.push({
101
+ name: expression.text,
102
+ line,
103
+ customHook: !isBuiltInHook(expression.text)
104
+ });
105
+ }
106
+ }
107
+ ts.forEachChild(child, visit);
108
+ }
109
+ ts.forEachChild(node, visit);
110
+ return hooks;
111
+ }
112
+ /**
113
+ * Check if a hook name is a built-in React hook
114
+ */
115
+ function isBuiltInHook(hookName) {
116
+ const builtInHooks = [
117
+ 'useState', 'useEffect', 'useContext', 'useReducer', 'useCallback',
118
+ 'useMemo', 'useRef', 'useImperativeHandle', 'useLayoutEffect',
119
+ 'useDebugValue', 'useId', 'useDeferredValue', 'useTransition',
120
+ 'useSyncExternalStore', 'useInsertionEffect'
121
+ ];
122
+ return builtInHooks.includes(hookName);
123
+ }
124
+ /**
125
+ * Extract prop types from a component (TypeScript interfaces/types)
126
+ */
127
+ export function extractPropTypes(node, sourceFile, typeChecker) {
128
+ const props = [];
129
+ // Handle variable declarations with type annotations (e.g., const Button: React.FC<Props>)
130
+ if (ts.isVariableDeclaration(node) && node.type && node.initializer) {
131
+ // Check if it's a React.FC<Props> type
132
+ if (ts.isTypeReferenceNode(node.type) && node.type.typeArguments?.length) {
133
+ const propsType = node.type.typeArguments[0];
134
+ if (ts.isTypeReferenceNode(propsType) && ts.isIdentifier(propsType.typeName)) {
135
+ // This is a reference to a Props interface, but without TypeChecker we can't resolve it
136
+ // Instead, check the function parameters for destructured props
137
+ if (ts.isArrowFunction(node.initializer) || ts.isFunctionExpression(node.initializer)) {
138
+ const firstParam = node.initializer.parameters[0];
139
+ if (firstParam && ts.isObjectBindingPattern(firstParam.name)) {
140
+ for (const element of firstParam.name.elements) {
141
+ if (ts.isBindingElement(element) && element.name && ts.isIdentifier(element.name)) {
142
+ props.push({
143
+ name: element.name.text,
144
+ type: 'any',
145
+ required: !element.dotDotDotToken && !element.initializer,
146
+ hasDefault: !!element.initializer
147
+ });
148
+ }
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
154
+ }
155
+ // For functional components, check the first parameter
156
+ if (ts.isFunctionDeclaration(node) || ts.isFunctionExpression(node) || ts.isArrowFunction(node)) {
157
+ const firstParam = node.parameters[0];
158
+ if (firstParam) {
159
+ // Check if parameter is destructured (common React pattern)
160
+ if (ts.isObjectBindingPattern(firstParam.name)) {
161
+ for (const element of firstParam.name.elements) {
162
+ if (ts.isBindingElement(element) && element.name && ts.isIdentifier(element.name)) {
163
+ props.push({
164
+ name: element.name.text,
165
+ type: 'any', // Without full type resolution
166
+ required: !element.dotDotDotToken && !element.initializer,
167
+ hasDefault: !!element.initializer
168
+ });
169
+ }
170
+ }
171
+ }
172
+ // Extract props from type annotation
173
+ if (firstParam.type) {
174
+ if (ts.isTypeLiteralNode(firstParam.type)) {
175
+ extractPropsFromTypeLiteral(firstParam.type, props);
176
+ }
177
+ else if (ts.isTypeReferenceNode(firstParam.type) && typeChecker) {
178
+ // Handle interface references
179
+ const symbol = typeChecker.getSymbolAtLocation(firstParam.type.typeName);
180
+ if (symbol) {
181
+ const type = typeChecker.getTypeOfSymbolAtLocation(symbol, firstParam.type);
182
+ const propSymbols = type.getProperties();
183
+ for (const propSymbol of propSymbols) {
184
+ const propType = typeChecker.getTypeOfSymbolAtLocation(propSymbol, propSymbol.valueDeclaration);
185
+ props.push({
186
+ name: propSymbol.getName(),
187
+ type: typeChecker.typeToString(propType),
188
+ required: !(propSymbol.flags & ts.SymbolFlags.Optional),
189
+ hasDefault: false // TODO: Detect default props
190
+ });
191
+ }
192
+ }
193
+ }
194
+ }
195
+ }
196
+ }
197
+ // For class components, check Props interface/type
198
+ if (ts.isClassDeclaration(node) && node.heritageClauses) {
199
+ // Look for Props type in extends clause (e.g., React.Component<Props>)
200
+ for (const clause of node.heritageClauses) {
201
+ if (clause.token === ts.SyntaxKind.ExtendsKeyword) {
202
+ for (const type of clause.types) {
203
+ if (type.typeArguments && type.typeArguments.length > 0) {
204
+ const propsType = type.typeArguments[0];
205
+ if (ts.isTypeLiteralNode(propsType)) {
206
+ extractPropsFromTypeLiteral(propsType, props);
207
+ }
208
+ }
209
+ }
210
+ }
211
+ }
212
+ }
213
+ return props;
214
+ }
215
+ /**
216
+ * Extract props from a TypeScript type literal
217
+ */
218
+ function extractPropsFromTypeLiteral(typeLiteral, props) {
219
+ for (const member of typeLiteral.members) {
220
+ if (ts.isPropertySignature(member) && member.name && ts.isIdentifier(member.name)) {
221
+ props.push({
222
+ name: member.name.text,
223
+ type: member.type ? member.type.getText() : 'any',
224
+ required: !member.questionToken,
225
+ hasDefault: false
226
+ });
227
+ }
228
+ }
229
+ }
230
+ /**
231
+ * Extract component imports from a source file
232
+ */
233
+ export function extractComponentImports(sourceFile) {
234
+ const imports = [];
235
+ function visit(node) {
236
+ if (ts.isImportDeclaration(node)) {
237
+ const moduleSpecifier = node.moduleSpecifier;
238
+ if (ts.isStringLiteral(moduleSpecifier)) {
239
+ const importPath = moduleSpecifier.text;
240
+ // Check if it's likely a component import (local files, not node_modules)
241
+ if (importPath.startsWith('.') || importPath.startsWith('/')) {
242
+ const importClause = node.importClause;
243
+ if (importClause) {
244
+ // Default import
245
+ if (importClause.name) {
246
+ const name = importClause.name.text;
247
+ if (isComponentName(name)) {
248
+ imports.push({
249
+ name,
250
+ path: importPath,
251
+ isDefault: true
252
+ });
253
+ }
254
+ }
255
+ // Named imports
256
+ if (importClause.namedBindings && ts.isNamedImports(importClause.namedBindings)) {
257
+ for (const element of importClause.namedBindings.elements) {
258
+ const name = element.name.text;
259
+ if (isComponentName(name)) {
260
+ imports.push({
261
+ name,
262
+ path: importPath,
263
+ isDefault: false
264
+ });
265
+ }
266
+ }
267
+ }
268
+ }
269
+ }
270
+ }
271
+ }
272
+ ts.forEachChild(node, visit);
273
+ }
274
+ visit(sourceFile);
275
+ return imports;
276
+ }
277
+ /**
278
+ * Check if a name follows React component naming convention (PascalCase)
279
+ */
280
+ function isComponentName(name) {
281
+ return /^[A-Z][a-zA-Z0-9]*$/.test(name);
282
+ }
283
+ /**
284
+ * Detect the specific type of component (functional, class, memo, forwardRef)
285
+ */
286
+ export function detectComponentType(node) {
287
+ // Check for memo wrapped components
288
+ if (ts.isCallExpression(node)) {
289
+ const expression = node.expression;
290
+ if ((ts.isIdentifier(expression) && expression.text === 'memo') ||
291
+ (ts.isPropertyAccessExpression(expression) &&
292
+ ts.isIdentifier(expression.expression) && expression.expression.text === 'React' &&
293
+ ts.isIdentifier(expression.name) && expression.name.text === 'memo')) {
294
+ return 'memo';
295
+ }
296
+ // Check for forwardRef
297
+ if ((ts.isIdentifier(expression) && expression.text === 'forwardRef') ||
298
+ (ts.isPropertyAccessExpression(expression) &&
299
+ ts.isIdentifier(expression.expression) && expression.expression.text === 'React' &&
300
+ ts.isIdentifier(expression.name) && expression.name.text === 'forwardRef')) {
301
+ return 'forwardRef';
302
+ }
303
+ }
304
+ if (isClassComponent(node)) {
305
+ return 'class';
306
+ }
307
+ if (isFunctionalComponent(node)) {
308
+ return 'functional';
309
+ }
310
+ return null;
311
+ }
312
+ /**
313
+ * Get component name from various declaration patterns
314
+ */
315
+ export function getComponentName(node) {
316
+ // Function declaration
317
+ if (ts.isFunctionDeclaration(node) && node.name) {
318
+ return node.name.text;
319
+ }
320
+ // Class declaration
321
+ if (ts.isClassDeclaration(node) && node.name) {
322
+ return node.name.text;
323
+ }
324
+ // Variable declaration with arrow function or function expression
325
+ if (ts.isVariableStatement(node)) {
326
+ const declaration = node.declarationList.declarations[0];
327
+ if (declaration && ts.isIdentifier(declaration.name)) {
328
+ return declaration.name.text;
329
+ }
330
+ }
331
+ // Variable declaration (direct)
332
+ if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name)) {
333
+ return node.name.text;
334
+ }
335
+ // For memo/forwardRef wrapped components, try to extract from the argument
336
+ if (ts.isCallExpression(node) && node.arguments.length > 0) {
337
+ const firstArg = node.arguments[0];
338
+ if (ts.isFunctionExpression(firstArg) && firstArg.name) {
339
+ return firstArg.name.text;
340
+ }
341
+ }
342
+ return 'AnonymousComponent';
343
+ }
344
+ //# sourceMappingURL=reactDetection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactDetection.js","sourceRoot":"","sources":["../../src/utils/reactDetection.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-auditor-mcp",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "TypeScript/JavaScript code quality auditor with MCP server - Analyze code for SOLID principles, DRY violations, security patterns, and more",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -9,19 +9,6 @@
9
9
  "code-audit": "./dist/cli.js",
10
10
  "code-auditor-mcp": "./dist/mcp-standalone.js"
11
11
  },
12
- "scripts": {
13
- "build": "tsc",
14
- "watch": "tsc --watch",
15
- "dev": "tsx src/cli.ts",
16
- "dev:server": "tsx --watch src/cli.ts start --rest-api",
17
- "audit": "node dist/cli.js",
18
- "start": "node dist/mcp-standalone.js",
19
- "start:rest": "node dist/cli.js start --rest-api",
20
- "generate": "node dist/cli.js generate-config",
21
- "prepublishOnly": "npm run build",
22
- "test": "vitest",
23
- "test:watch": "vitest watch"
24
- },
25
12
  "keywords": [
26
13
  "audit",
27
14
  "code-quality",
@@ -79,5 +66,17 @@
79
66
  "bugs": {
80
67
  "url": "https://github.com/code-auditor/code-auditor/issues"
81
68
  },
82
- "homepage": "https://github.com/code-auditor/code-auditor#readme"
69
+ "homepage": "https://github.com/code-auditor/code-auditor#readme",
70
+ "scripts": {
71
+ "build": "tsc",
72
+ "watch": "tsc --watch",
73
+ "dev": "tsx src/cli.ts",
74
+ "dev:server": "tsx --watch src/cli.ts start --rest-api",
75
+ "audit": "node dist/cli.js",
76
+ "start": "node dist/mcp-standalone.js",
77
+ "start:rest": "node dist/cli.js start --rest-api",
78
+ "generate": "node dist/cli.js generate-config",
79
+ "test": "vitest",
80
+ "test:watch": "vitest watch"
81
+ }
83
82
  }