UNPKG

sicua

Version:

A tool for analyzing project structure and dependencies

97 lines (96 loc) 3.06 kB
import * as t from "@babel/types"; import { JSXReturnStatement, ComponentFlowConfig } from "../types"; /** * Analyzer for JSX return statements and their conditional rendering patterns */ export declare class JSXReturnAnalyzer { private conditionalParser; private config; constructor(config?: ComponentFlowConfig); /** * Analyzes all return statements in an AST for JSX content and conditional patterns */ analyzeAST(ast: t.File, sourceCode: string): JSXReturnStatement[]; /** * NEW: Analyzes a specific component node for JSX content and conditional patterns */ analyzeComponentNode(componentNode: t.Node, sourceCode: string): JSXReturnStatement[]; /** * Recursively checks if a statement contains a JSX return */ private statementContainsJSXReturn; /** * Analyzes a single function for JSX return patterns */ analyzeFunctionNode(functionNode: t.Function | t.ArrowFunctionExpression, sourceCode: string): JSXReturnStatement[]; /** * Analyzes a block statement for JSX returns and conditional patterns */ private analyzeBlockStatement; /** * Analyzes switch statements for conditional returns */ private analyzeSwitchStatement; /** * Analyzes a return statement for JSX and conditional patterns - ENHANCED */ private analyzeReturnStatement; /** * Analyzes implicit returns in arrow functions - ENHANCED */ private analyzeImplicitReturn; /** * Analyzes conditional return statements within if/else blocks */ private analyzeConditionalReturns; /** * Extracts return statements from various statement types */ private extractReturnsFromStatement; /** * NEW: Updates configuration for HTML element tracking */ updateConfig(config: ComponentFlowConfig): void; /** * NEW: Gets current configuration */ getConfig(): ComponentFlowConfig; /** * NEW: Enables HTML element tracking */ enableHtmlElementTracking(): void; /** * NEW: Disables HTML element tracking */ disableHtmlElementTracking(): void; /** * NEW: Analyzes a specific JSX expression for both components and HTML elements */ analyzeJSXExpression(expression: t.Expression, sourceCode: string): { components: Array<{ name: string; isJSXElement: boolean; props: any[]; position: any; }>; htmlElements: Array<{ tagName: string; props: any[]; hasChildren: boolean; textContent?: string; position: any; }>; hasConditional: boolean; conditionalPatterns: any[]; }; /** * NEW: Gets analysis statistics */ getAnalysisStats(returnStatements: JSXReturnStatement[]): { totalReturns: number; conditionalReturns: number; totalComponents: number; totalHtmlElements: number; totalConditionalPatterns: number; }; }