UNPKG

sicua

Version:

A tool for analyzing project structure and dependencies

115 lines (114 loc) 2.76 kB
import ts from "typescript"; import { FunctionContext } from "../types/functionExtractor.types"; export declare class FunctionExtractor { private sourceFile; private content; constructor(sourceFile: ts.SourceFile, content: string); /** * Extracts all function context from the source file */ extractFunctionContext(): FunctionContext; /** * Extracts a single function definition */ private extractFunction; /** * Extracts function signature */ private extractSignature; /** * Extracts function parameters */ private extractParameters; /** * Calculates function complexity */ private calculateFunctionComplexity; /** * Calculates cyclomatic complexity */ private calculateCyclomaticComplexity; /** * Calculates cognitive complexity */ private calculateCognitiveComplexity; /** * Calculates lines of code for a function */ private calculateLinesOfCode; /** * Calculates maximum nesting depth */ private calculateNestingDepth; /** * Identifies usage patterns for a function */ private identifyUsagePatterns; /** * Extracts React-specific information */ private extractReactInfo; /** * Checks if function is a React hook */ private isReactHook; /** * Extracts hooks used in the function */ private extractHooksUsed; /** * Calculates JSX complexity */ private calculateJSXComplexity; /** * Extracts prop types from function parameters */ private extractPropTypes; /** * Extracts state usage information */ private extractStateUsage; /** * Extracts effect usage information */ private extractEffectUsage; /** * Extracts the effect block content */ private extractEffectBlock; /** * Extracts side effects from function */ private extractSideEffects; /** * Extracts function dependencies */ private extractFunctionDependencies; /** * Extracts function calls for call graph */ private extractFunctionCalls; /** * Calculates overall complexity metrics */ private calculateComplexityMetrics; /** * Analyzes patterns across all functions */ private analyzePatterns; /** * Helper methods */ private isFunctionNode; private getFunctionName; private getFunctionKind; private extractGenerics; private isAsyncFunction; private isPureFunction; private hasExportModifier; private getLocation; private extractJSDocComment; private visitNode; private isConditionalCall; private isInLoop; }