sicua
Version:
A tool for analyzing project structure and dependencies
78 lines (77 loc) • 2.4 kB
TypeScript
import * as t from "@babel/types";
import { ConditionalPattern, ComponentFlowConfig } from "../types";
/**
* Core parser for detecting and analyzing conditional rendering patterns in JSX
*/
export declare class ConditionalParser {
private config;
constructor(config?: ComponentFlowConfig);
/**
* Analyzes a JSX expression for conditional rendering patterns
*/
analyzeExpression(expression: t.Expression, sourceCode: string): ConditionalPattern[];
/**
* Analyzes JSX expressions for conditional patterns within JSX
*/
private analyzeJSXExpressions;
/**
* Analyzes function body for conditional return statements
*/
analyzeFunctionBody(body: t.BlockStatement | t.Expression, sourceCode: string): ConditionalPattern[];
/**
* Parses ternary conditional expressions (condition ? true : false) - ENHANCED
*/
private parseTernaryExpression;
/**
* Parses logical AND expressions (condition && <Component />) - ENHANCED
*/
private parseLogicalExpression;
/**
* Analyzes block statements for if/else and early return patterns
*/
private analyzeBlockStatement;
/**
* Parses if/else statements - ENHANCED
*/
private parseIfStatement;
/**
* Parses switch statements - ENHANCED
*/
private parseSwitchStatement;
/**
* Analyzes return statements for conditional patterns
*/
private analyzeReturnStatement;
/**
* Analyzes call expressions that might return conditional JSX
*/
private analyzeCallExpression;
/**
* NEW: Extracts both component and HTML element references from various node types
*/
private extractAllReferences;
/**
* NEW: Extracts references from statements
*/
private extractReferencesFromStatement;
/**
* NEW: Parses HTML element into HTMLElementReference
*/
private parseHTMLElement;
/**
* NEW: Extracts text content from JSX element
*/
private extractTextContent;
/**
* NEW: Determines if an HTML element should be included based on configuration
*/
private shouldIncludeHtmlElement;
/**
* Helper function to extract name from member expressions
*/
private extractMemberExpressionName;
/**
* Extracts condition string from test expressions
*/
private extractConditionString;
}