hermex 0.0.1-beta.1 β†’ 1.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.
package/dist/cli.js CHANGED
@@ -977,6 +977,11 @@ function printVerbose(filePath, report) {
977
977
  console.log(chalk__default.default.gray(`[VERBOSE] ${"\u2500".repeat(80)}`));
978
978
  }
979
979
  function printSummary(aggregated, elapsedTimeSeconds) {
980
+ console.log(
981
+ chalk__default.default.green(
982
+ `[SUMMARY] Analysis completed successfully in ${elapsedTimeSeconds.toFixed(1)}s`
983
+ )
984
+ );
980
985
  console.log(
981
986
  chalk__default.default.green(
982
987
  `[SUMMARY] Files analyzed: ${aggregated.filesAnalyzed.toLocaleString()}`
@@ -1051,7 +1056,8 @@ function printTopComponents(aggregated, mode, topN = 10) {
1051
1056
  }
1052
1057
  function printTopComponentsLog(components) {
1053
1058
  console.log(chalk__default.default.yellow.bold(`
1054
- \u{1F3C6} Top components`));
1059
+ \u{1F3C6} Top Components
1060
+ `));
1055
1061
  if (components.length === 0) {
1056
1062
  console.log(chalk__default.default.gray(" No components found"));
1057
1063
  return;
@@ -1151,7 +1157,8 @@ function printPatterns(aggregated, mode) {
1151
1157
  }
1152
1158
  function printPatternsTable(patterns) {
1153
1159
  console.log(chalk__default.default.blue.bold(`
1154
- \u{1F50D} Code Patterns`));
1160
+ \u{1F50D} Code Patterns
1161
+ `));
1155
1162
  if (patterns.length === 0) {
1156
1163
  console.log(chalk__default.default.gray(" No patterns found"));
1157
1164
  return;
@@ -1289,7 +1296,7 @@ async function executeScan(pattern, options) {
1289
1296
 
1290
1297
  // package.json
1291
1298
  var package_default = {
1292
- version: "0.0.1-alpha.0"};
1299
+ version: "1.0.0-beta.1"};
1293
1300
 
1294
1301
  // src/cli.ts
1295
1302
  var program = new commander.Command();
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/swc-parser/core/state.ts","../src/swc-parser/patterns/imports.ts","../src/swc-parser/utils/jsx-helpers.ts","../src/swc-parser/patterns/props.ts","../src/swc-parser/patterns/jsx.ts","../src/swc-parser/utils/matchers.ts","../src/swc-parser/patterns/variables.ts","../src/swc-parser/patterns/conditionals.ts","../src/swc-parser/patterns/collections.ts","../src/swc-parser/patterns/lazy-dynamic.ts","../src/swc-parser/patterns/advanced.ts","../src/swc-parser/core/visitor.ts","../src/swc-parser/core/report.ts","../src/swc-parser/index.ts","../src/utils/aggregator.ts","../src/utils/print-verbose.ts","../src/utils/print-summary.ts","../src/utils/print-details.ts","../src/utils/chart-renderer.ts","../src/utils/print-top-components.ts","../src/utils/print-components-usage.ts","../src/utils/print-patterns.ts","../src/commands/scan.ts","../package.json","../src/cli.ts"],"names":["_a","_b","parseSync","fs","path","chalk","Table","program","ora","glob","Command"],"mappings":"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","file":"cli.js","sourcesContent":["import type { ParserState, UsagePatterns } from '../types';\n\nexport function createState(): ParserState {\n const usagePatterns: UsagePatterns = {\n directImports: new Set(),\n namedImports: new Set(),\n namespaceImports: new Set(),\n defaultImports: new Set(),\n aliasedImports: new Map(),\n variableAssignments: new Map(),\n componentMappings: new Set(),\n lazyImports: new Set(),\n dynamicImports: new Set(),\n conditionalUsage: new Set(),\n arrayMappings: new Set(),\n objectMappings: new Set(),\n hocUsage: new Set(),\n renderProps: new Set(),\n contextUsage: new Set(),\n forwardedRefs: new Set(),\n memoizedComponents: new Set(),\n portalUsage: new Set(),\n jsxUsage: new Map(),\n destructuredUsage: new Set(),\n propsAnalysis: new Map(),\n };\n\n return {\n usagePatterns,\n componentNames: new Set(),\n allIdentifiers: new Set(),\n };\n}\n","import type { ImportDeclaration } from '@swc/core';\nimport type { ParserState } from '../types';\n\n/**\n * Analyzes import declarations and tracks all types:\n * - Default imports\n * - Named imports\n * - Namespace imports\n * - Aliased imports\n */\nexport function analyzeImportDeclaration(\n node: ImportDeclaration,\n state: ParserState,\n): void {\n const source = node.source.value;\n\n console.log(`πŸ“¦ Found import: ${source}`);\n\n for (const spec of node.specifiers) {\n switch (spec.type) {\n case 'ImportDefaultSpecifier':\n analyzeDefaultImport(spec, source, node, state);\n break;\n\n case 'ImportNamespaceSpecifier':\n analyzeNamespaceImport(spec, source, node, state);\n break;\n\n case 'ImportSpecifier':\n analyzeNamedImport(spec, source, node, state);\n break;\n }\n }\n}\n\nfunction analyzeDefaultImport(\n spec: any,\n source: string,\n node: ImportDeclaration,\n state: ParserState,\n): void {\n const name = spec.local.value;\n\n state.usagePatterns.defaultImports.add({\n name,\n source,\n line: node.span?.start || 0,\n });\n\n state.componentNames.add(name);\n}\n\nfunction analyzeNamespaceImport(\n spec: any,\n source: string,\n node: ImportDeclaration,\n state: ParserState,\n): void {\n const name = spec.local.value;\n\n state.usagePatterns.namespaceImports.add({\n name,\n source,\n line: node.span?.start || 0,\n });\n\n state.allIdentifiers.add(name);\n}\n\nfunction analyzeNamedImport(\n spec: any,\n source: string,\n node: ImportDeclaration,\n state: ParserState,\n): void {\n const importedName = spec.imported ? spec.imported.value : spec.local.value;\n const localName = spec.local.value;\n\n state.usagePatterns.namedImports.add({\n name: importedName,\n source,\n line: node.span?.start || 0,\n });\n\n // Track aliases\n if (importedName !== localName) {\n state.usagePatterns.aliasedImports.set(localName, {\n imported: importedName,\n local: localName,\n source,\n line: node.span?.start || 0,\n });\n }\n\n state.componentNames.add(localName);\n}\n","import type { ParserState } from '../types';\n\n/**\n * Extracts the name from a JSX element (handles identifiers and member expressions)\n */\nexport function getJSXElementName(nameNode: any): string {\n if (!nameNode) return '';\n\n switch (nameNode.type) {\n case 'Identifier':\n return nameNode.value;\n case 'JSXMemberExpression':\n return `${getJSXElementName(nameNode.object)}.${nameNode.property.value}`;\n default:\n return '';\n }\n}\n\n/**\n * Checks if a JSX member expression is a known component\n */\nexport function isMemberExpressionComponent(\n nameNode: any,\n state: ParserState,\n): boolean {\n if (nameNode?.type === 'JSXMemberExpression') {\n const objectName = getJSXElementName(nameNode.object);\n return state.allIdentifiers.has(objectName);\n }\n return false;\n}\n\n/**\n * Extracts props from JSX attributes\n */\nexport function extractJSXProps(attributes: any[]): Array<{\n name: string;\n value: any;\n isSpread?: boolean;\n}> {\n if (!attributes) return [];\n\n return attributes\n .map((attr) => {\n if (attr.type === 'JSXAttribute') {\n return {\n name: attr.name?.value || attr.name?.name?.value,\n value: extractJSXAttributeValue(attr.value),\n };\n }\n if (attr.type === 'SpreadElement') {\n return {\n name: '...',\n value: '[spread]',\n isSpread: true,\n };\n }\n return null;\n })\n .filter(Boolean) as Array<{\n name: string;\n value: any;\n isSpread?: boolean;\n }>;\n}\n\n/**\n * Extracts value from JSX attribute\n */\nexport function extractJSXAttributeValue(value: any): any {\n if (!value) return true; // boolean attribute\n\n switch (value.type) {\n case 'StringLiteral':\n return value.value;\n case 'JSXExpressionContainer':\n return extractExpressionValue(value.expression);\n default:\n return '[complex]';\n }\n}\n\n/**\n * Extracts a readable value from an expression\n */\nexport function extractExpressionValue(expr: any): any {\n if (!expr) return '[unknown]';\n\n switch (expr.type) {\n case 'StringLiteral':\n case 'NumericLiteral':\n case 'BooleanLiteral':\n return expr.value;\n case 'Identifier':\n return `{${expr.value}}`;\n case 'ArrowFunctionExpression':\n case 'FunctionExpression':\n return '[function]';\n case 'ObjectExpression':\n return '[object]';\n case 'ArrayExpression':\n return '[array]';\n default:\n return '[expression]';\n }\n}\n\n/**\n * Determines the context where a component is being used\n */\nexport function getUsageContext(parent: any): string {\n if (!parent) return 'direct';\n\n switch (parent.type) {\n case 'ConditionalExpression':\n return 'conditional';\n case 'ArrayExpression':\n return 'array';\n case 'ObjectExpression':\n return 'object';\n case 'CallExpression':\n return 'hoc';\n case 'VariableDeclarator':\n return 'variable';\n default:\n return 'jsx';\n }\n}\n","import type { PropsAnalysis, PropDetail, ParserState } from '../types';\n\n/**\n * Analyzes props in detail for a component\n */\nexport function analyzePropsInDetail(\n attributes: any[],\n componentName: string,\n state: ParserState,\n): PropsAnalysis {\n const analysis: PropsAnalysis = {\n namedProps: [],\n hasSpread: false,\n hasComplexProps: false,\n hasEventHandlers: false,\n propDetails: [],\n };\n\n if (!attributes) return analysis;\n\n for (const attr of attributes) {\n if (attr.type === 'JSXAttribute') {\n const propName = attr.name?.value || attr.name?.name?.value;\n if (propName) {\n analysis.namedProps.push(propName);\n\n const propDetail: PropDetail = {\n name: propName,\n type: getPropType(attr.value),\n isEventHandler: propName.startsWith('on'),\n isComplex: isComplexProp(attr.value),\n };\n\n if (propDetail.isEventHandler) {\n analysis.hasEventHandlers = true;\n }\n if (propDetail.isComplex) {\n analysis.hasComplexProps = true;\n }\n\n analysis.propDetails.push(propDetail);\n }\n } else if (attr.type === 'SpreadElement') {\n analysis.hasSpread = true;\n analysis.propDetails.push({\n name: '...',\n type: 'spread',\n isSpread: true,\n isComplex: true,\n isEventHandler: false,\n warning: 'Spread props cannot be statically analyzed',\n });\n analysis.hasComplexProps = true;\n }\n }\n\n // Store in state\n state.usagePatterns.propsAnalysis.set(componentName, analysis);\n\n return analysis;\n}\n\n/**\n * Determines the type of a prop value\n */\nfunction getPropType(value: any): string {\n if (!value) return 'boolean';\n\n switch (value.type) {\n case 'StringLiteral':\n return 'string';\n case 'JSXExpressionContainer': {\n const expr = value.expression;\n if (!expr) return 'unknown';\n switch (expr.type) {\n case 'NumericLiteral':\n return 'number';\n case 'BooleanLiteral':\n return 'boolean';\n case 'StringLiteral':\n return 'string';\n case 'ArrowFunctionExpression':\n case 'FunctionExpression':\n return 'function';\n case 'ObjectExpression':\n return 'object';\n case 'ArrayExpression':\n return 'array';\n case 'Identifier':\n return 'variable';\n default:\n return 'expression';\n }\n }\n default:\n return 'unknown';\n }\n}\n\n/**\n * Checks if a prop value is complex (object, array, call, conditional)\n */\nfunction isComplexProp(value: any): boolean {\n if (!value) return false;\n if (value.type === 'JSXExpressionContainer') {\n const expr = value.expression;\n if (!expr) return false;\n return (\n expr.type === 'ObjectExpression' ||\n expr.type === 'ArrayExpression' ||\n expr.type === 'CallExpression' ||\n expr.type === 'ConditionalExpression'\n );\n }\n return false;\n}\n","import type { ParserState, JSXUsage } from '../types';\nimport {\n getJSXElementName,\n isMemberExpressionComponent,\n extractJSXProps,\n getUsageContext,\n} from '../utils/jsx-helpers';\nimport { analyzePropsInDetail } from './props';\n\n/**\n * Analyzes JSX element usage\n */\nexport function analyzeJSXElement(node: any, state: ParserState): void {\n if (node.opening) {\n analyzeJSXOpeningElement(node.opening, state, node);\n }\n}\n\n/**\n * Analyzes JSX opening element and tracks component usage\n */\nexport function analyzeJSXOpeningElement(\n node: any,\n state: ParserState,\n parent?: any,\n): void {\n const elementName = getJSXElementName(node.name);\n\n // Check if this is a known component\n if (\n !state.componentNames.has(elementName) &&\n !isMemberExpressionComponent(node.name, state)\n ) {\n return;\n }\n\n const propsAnalysis = analyzePropsInDetail(\n node.attributes,\n elementName,\n state,\n );\n const usage: JSXUsage = {\n component: elementName,\n props: extractJSXProps(node.attributes).map((p) => p.name),\n propsAnalysis,\n line: node.span?.start || 0,\n context: getUsageContext(parent),\n };\n\n // Track JSX usage\n if (!state.usagePatterns.jsxUsage.has(elementName)) {\n state.usagePatterns.jsxUsage.set(elementName, usage);\n }\n\n console.log(`🎨 JSX Usage: <${elementName}>`);\n}\n","import type { ParserState } from '../types';\n\n/**\n * Checks if a name is a known component from imports\n */\nexport function isKnownComponent(name: string, state: ParserState): boolean {\n return state.componentNames.has(name) || state.allIdentifiers.has(name);\n}\n\n/**\n * Checks if a function name matches HOC patterns\n */\nexport function isHOCPattern(name: string): boolean {\n const hocPatterns = ['with', 'enhance', 'wrap', 'connect', 'create'];\n return hocPatterns.some((pattern) => name.startsWith(pattern));\n}\n\n/**\n * Checks if a node represents a HOC function call\n */\nexport function isHOCFunction(callee: any): boolean {\n if (!callee) return false;\n\n if (callee.type === 'Identifier') {\n return isHOCPattern(callee.value);\n }\n\n if (callee.type === 'MemberExpression') {\n const prop = callee.property;\n return prop?.value && isHOCPattern(prop.value);\n }\n\n return false;\n}\n\n/**\n * Checks if an expression looks like a React component\n * (starts with capital letter)\n */\nexport function looksLikeComponent(name: string): boolean {\n return /^[A-Z]/.test(name);\n}\n\n/**\n * Checks if source is from a specific library (for filtering)\n */\nexport function isFromLibrary(source: string, libraryName: string): boolean {\n return source.startsWith(libraryName) || source.includes(libraryName);\n}\n","import type { ParserState } from '../types';\nimport { isKnownComponent } from '../utils/matchers';\n\n/**\n * Analyzes variable declarations for component assignments\n */\nexport function analyzeVariableDeclaration(\n node: any,\n state: ParserState,\n): void {\n if (!node.declarations) return;\n\n for (const decl of node.declarations) {\n if (decl.id?.type === 'Identifier') {\n const varName = decl.id.value;\n\n // Check if it's assigning a component\n if (decl.init) {\n const assignment = extractAssignmentInfo(decl.init);\n if (assignment && isKnownComponent(assignment, state)) {\n state.usagePatterns.variableAssignments.set(varName, {\n assignment,\n line: node.span?.start || 0,\n });\n state.componentNames.add(varName);\n console.log(`πŸ“ Variable assignment: ${varName} = ${assignment}`);\n }\n }\n }\n\n // Handle destructuring assignments\n if (decl.id?.type === 'ObjectPattern') {\n analyzeDestructuringPattern(decl.id, decl.init, state);\n }\n }\n}\n\n/**\n * Analyzes destructuring patterns\n */\nexport function analyzeDestructuringPattern(\n pattern: any,\n init: any,\n state: ParserState,\n): void {\n if (!pattern.properties) return;\n\n for (const prop of pattern.properties) {\n if (\n prop.type === 'AssignmentPatternProperty' &&\n prop.key?.type === 'Identifier'\n ) {\n const propName = prop.key.value;\n\n if (init?.type === 'Identifier' && state.allIdentifiers.has(init.value)) {\n state.usagePatterns.destructuredUsage.add({\n property: propName,\n source: init.value,\n line: pattern.span?.start || 0,\n });\n state.componentNames.add(propName);\n console.log(`πŸ”§ Destructuring: ${propName} from ${init.value}`);\n }\n }\n }\n}\n\n/**\n * Extracts assignment information from various node types\n */\nfunction extractAssignmentInfo(node: any): string | null {\n switch (node.type) {\n case 'Identifier':\n return node.value;\n case 'MemberExpression':\n return `${extractAssignmentInfo(node.object)}.${node.property.value}`;\n case 'ConditionalExpression':\n return `${extractAssignmentInfo(node.consequent)} | ${extractAssignmentInfo(node.alternate)}`;\n default:\n return null;\n }\n}\n","import type { ParserState } from '../types';\n\n/**\n * Analyzes conditional expressions (ternary operators) with components\n */\nexport function analyzeConditionalExpression(\n node: any,\n state: ParserState,\n): void {\n const consequent =\n node.consequent?.type === 'Identifier' ? node.consequent.value : null;\n const alternate =\n node.alternate?.type === 'Identifier' ? node.alternate.value : null;\n\n if (\n (consequent && state.componentNames.has(consequent)) ||\n (alternate && state.componentNames.has(alternate))\n ) {\n state.usagePatterns.conditionalUsage.add({\n consequent: consequent || '',\n alternate: alternate || '',\n line: node.span?.start || 0,\n });\n console.log('πŸ”€ Conditional component usage found');\n }\n}\n","import type { ParserState } from '../types';\n\n/**\n * Analyzes array expressions containing components\n */\nexport function analyzeArrayExpression(node: any, state: ParserState): void {\n // Check if array contains components\n const hasComponents = node.elements?.some((elem: any) => {\n if (elem?.type === 'Identifier') {\n return state.componentNames.has(elem.value);\n }\n return false;\n });\n\n if (hasComponents) {\n state.usagePatterns.arrayMappings.add({\n components: node.elements\n ?.map((elem: any) => elem?.value)\n .filter(Boolean),\n line: node.span?.start || 0,\n });\n console.log('πŸ“‹ Array with components found');\n }\n}\n\n/**\n * Analyzes object expressions with component mappings\n */\nexport function analyzeObjectExpression(node: any, state: ParserState): void {\n // Check if object contains component mappings\n const componentProps = node.properties?.filter((prop: any) => {\n if (prop.type === 'KeyValueProperty' && prop.value?.type === 'Identifier') {\n return state.componentNames.has(prop.value.value);\n }\n return false;\n });\n\n if (componentProps?.length > 0) {\n state.usagePatterns.objectMappings.add({\n mappings: componentProps.map((prop: any) => ({\n key: prop.key?.value || '[computed]',\n component: prop.value?.value,\n })),\n line: node.span?.start || 0,\n });\n console.log('πŸ—ΊοΈ Object mapping with components found');\n }\n}\n","import type { ParserState } from '../types';\n\n/**\n * Analyzes React.lazy() imports\n */\nexport function analyzeLazyImport(node: any, state: ParserState): void {\n const arg = node.arguments?.[0];\n if (\n arg?.type === 'ArrowFunctionExpression' &&\n arg.body?.type === 'CallExpression'\n ) {\n const importCall = arg.body;\n if (importCall.callee?.type === 'Import') {\n const source = importCall.arguments?.[0]?.value;\n if (source) {\n state.usagePatterns.lazyImports.add({\n source,\n line: node.span?.start || 0,\n });\n console.log(`πŸ”„ Found lazy import: ${source}`);\n }\n }\n }\n}\n\n/**\n * Analyzes dynamic import() calls\n */\nexport function analyzeDynamicImport(node: any, state: ParserState): void {\n const source = node.arguments?.[0]?.value;\n if (source) {\n state.usagePatterns.dynamicImports.add({\n source,\n line: node.span?.start || 0,\n });\n console.log(`⚑ Found dynamic import: ${source}`);\n }\n}\n","import type { ParserState } from '../types';\n\n/**\n * Analyzes Higher-Order Component (HOC) usage\n */\nexport function analyzeHOCUsage(node: any, state: ParserState): void {\n state.usagePatterns.hocUsage.add({\n function: node.callee?.value || '[unknown]',\n component: node.arguments?.[0]?.value || '[unknown]',\n line: node.span?.start || 0,\n });\n console.log(`🎁 HOC usage found`);\n}\n\n/**\n * Analyzes React.memo() usage\n */\nexport function analyzeMemoUsage(node: any, state: ParserState): void {\n const component = node.arguments?.[0];\n if (\n component?.type === 'Identifier' &&\n state.componentNames.has(component.value)\n ) {\n state.usagePatterns.memoizedComponents.add({\n component: component.value,\n line: node.span?.start || 0,\n });\n console.log(`🧠 Memoized component: ${component.value}`);\n }\n}\n\n/**\n * Analyzes React.forwardRef() usage\n */\nexport function analyzeForwardRefUsage(node: any, state: ParserState): void {\n state.usagePatterns.forwardedRefs.add({\n line: node.span?.start || 0,\n });\n console.log('↗️ ForwardRef usage found');\n}\n\n/**\n * Analyzes ReactDOM.createPortal() usage\n */\nexport function analyzePortalUsage(node: any, state: ParserState): void {\n state.usagePatterns.portalUsage.add({\n line: node.span?.start || 0,\n });\n console.log('πŸŒ€ Portal usage found');\n}\n\n/**\n * Analyzes member expression access (e.g., Foundation.Button)\n */\nexport function analyzeMemberExpression(node: any, state: ParserState): void {\n // Check if this is a namespace access like Foundation.Button\n if (\n node.object?.type === 'Identifier' &&\n state.allIdentifiers.has(node.object.value)\n ) {\n const namespaceName = node.object.value;\n const propertyName = node.property?.value;\n\n if (propertyName) {\n // Track namespace property access\n state.componentNames.add(propertyName);\n console.log(`πŸ”— Namespace access: ${namespaceName}.${propertyName}`);\n }\n }\n}\n\n/**\n * Checks if a node represents HOC pattern\n */\nexport function isHOCPattern(node: any, state: ParserState): boolean {\n // Simple heuristic: function that returns a component-like structure\n return (\n node.callee?.type === 'Identifier' &&\n node.arguments?.some(\n (arg: any) =>\n arg.type === 'Identifier' && state.componentNames.has(arg.value),\n )\n );\n}\n","import type { ParserState, VisitorContext } from '../types';\nimport { analyzeImportDeclaration } from '../patterns/imports';\nimport { analyzeJSXElement, analyzeJSXOpeningElement } from '../patterns/jsx';\nimport { analyzeVariableDeclaration } from '../patterns/variables';\nimport { analyzeConditionalExpression } from '../patterns/conditionals';\nimport {\n analyzeArrayExpression,\n analyzeObjectExpression,\n} from '../patterns/collections';\nimport {\n analyzeLazyImport,\n analyzeDynamicImport,\n} from '../patterns/lazy-dynamic';\nimport {\n analyzeHOCUsage,\n analyzeMemoUsage,\n analyzeForwardRefUsage,\n analyzePortalUsage,\n analyzeMemberExpression,\n isHOCPattern,\n} from '../patterns/advanced';\n\n/**\n * Main AST visitor that routes nodes to appropriate pattern analyzers\n */\nexport function visitNode(\n node: any,\n state: ParserState,\n context: VisitorContext = {},\n): void {\n if (!node) return;\n\n switch (node.type) {\n case 'Module':\n // Process imports first (they populate componentNames)\n if (node.body) {\n for (const item of node.body) {\n if (item.type === 'ImportDeclaration') {\n visitNode(item, state, context);\n }\n }\n // Then process everything else\n for (const item of node.body) {\n if (item.type !== 'ImportDeclaration') {\n visitNode(item, state, { ...context, parent: node });\n }\n }\n }\n break;\n\n case 'ImportDeclaration':\n analyzeImportDeclaration(node, state);\n break;\n\n case 'CallExpression':\n analyzeCallExpression(node, state, context);\n break;\n\n case 'VariableDeclaration':\n analyzeVariableDeclaration(node, state);\n visitChildren(node, state, context);\n break;\n\n case 'JSXElement':\n case 'JSXFragment':\n analyzeJSXElement(node, state);\n visitChildren(node, state, context);\n break;\n\n case 'JSXOpeningElement':\n analyzeJSXOpeningElement(node, state, context.parent);\n break;\n\n case 'ArrayExpression':\n analyzeArrayExpression(node, state);\n visitChildren(node, state, context);\n break;\n\n case 'ObjectExpression':\n analyzeObjectExpression(node, state);\n visitChildren(node, state, context);\n break;\n\n case 'MemberExpression':\n analyzeMemberExpression(node, state);\n visitChildren(node, state, context);\n break;\n\n case 'ConditionalExpression':\n analyzeConditionalExpression(node, state);\n visitChildren(node, state, context);\n break;\n\n case 'FunctionDeclaration':\n case 'ClassDeclaration':\n case 'ExpressionStatement':\n case 'ReturnStatement':\n case 'VariableDeclarator':\n case 'ArrowFunctionExpression':\n case 'FunctionExpression':\n visitChildren(node, state, { ...context, parent: node });\n break;\n\n default:\n visitChildren(node, state, context);\n break;\n }\n}\n\n/**\n * Analyzes call expressions and routes to specific analyzers\n */\nfunction analyzeCallExpression(\n node: any,\n state: ParserState,\n context: VisitorContext,\n): void {\n // Analyze lazy imports\n if (\n node.callee?.value === 'lazy' ||\n (node.callee?.object?.value === 'React' &&\n node.callee?.property?.value === 'lazy')\n ) {\n analyzeLazyImport(node, state);\n }\n\n // Analyze dynamic imports\n if (node.callee?.type === 'Import') {\n analyzeDynamicImport(node, state);\n }\n\n // Analyze HOC patterns\n if (isHOCPattern(node, state)) {\n analyzeHOCUsage(node, state);\n }\n\n // Analyze React.memo, React.forwardRef\n if (node.callee?.object?.value === 'React') {\n if (node.callee?.property?.value === 'memo') {\n analyzeMemoUsage(node, state);\n } else if (node.callee?.property?.value === 'forwardRef') {\n analyzeForwardRefUsage(node, state);\n }\n }\n\n // Analyze createPortal\n if (\n node.callee?.property?.value === 'createPortal' ||\n node.callee?.value === 'createPortal'\n ) {\n analyzePortalUsage(node, state);\n }\n\n visitChildren(node, state, context);\n}\n\n/**\n * Visits all children of a node\n */\nfunction visitChildren(\n node: any,\n state: ParserState,\n context: VisitorContext,\n): void {\n if (!node) return;\n\n for (const key in node) {\n const value = node[key];\n\n if (Array.isArray(value)) {\n for (const item of value) {\n if (item && typeof item === 'object') {\n visitNode(item, state, { ...context, parent: node });\n }\n }\n } else if (value && typeof value === 'object' && value.type) {\n visitNode(value, state, { ...context, parent: node });\n }\n }\n}\n","import type { ParserState, UsageReport } from '../types';\n\n/**\n * Generates a comprehensive usage report from parser state\n */\nexport function generateReport(state: ParserState): UsageReport {\n const report: UsageReport = {\n summary: {\n totalImports:\n state.usagePatterns.defaultImports.size +\n state.usagePatterns.namedImports.size +\n state.usagePatterns.namespaceImports.size,\n totalComponents: state.componentNames.size,\n totalUsagePatterns: calculateTotalPatterns(state),\n },\n patterns: {\n imports: {\n default: Array.from(state.usagePatterns.defaultImports),\n named: Array.from(state.usagePatterns.namedImports),\n namespace: Array.from(state.usagePatterns.namespaceImports),\n aliased: Array.from(state.usagePatterns.aliasedImports.values()),\n },\n usage: {\n jsx: Array.from(state.usagePatterns.jsxUsage.values()),\n variables: Array.from(\n state.usagePatterns.variableAssignments.entries(),\n ).map(([key, value]) => ({\n variable: key,\n assignment: value.assignment,\n })),\n destructuring: Array.from(state.usagePatterns.destructuredUsage),\n conditional: Array.from(state.usagePatterns.conditionalUsage),\n arrays: Array.from(state.usagePatterns.arrayMappings),\n objects: Array.from(state.usagePatterns.objectMappings),\n },\n advanced: {\n lazy: Array.from(state.usagePatterns.lazyImports),\n dynamic: Array.from(state.usagePatterns.dynamicImports),\n hoc: Array.from(state.usagePatterns.hocUsage),\n memo: Array.from(state.usagePatterns.memoizedComponents),\n forwardRef: Array.from(state.usagePatterns.forwardedRefs),\n portal: Array.from(state.usagePatterns.portalUsage),\n },\n props: Array.from(state.usagePatterns.propsAnalysis.entries()).map(\n ([component, analysis]) => ({\n component,\n analysis,\n }),\n ),\n },\n components: Array.from(state.componentNames).sort(),\n };\n\n return report;\n}\n\n/**\n * Calculates total number of usage patterns found\n */\nfunction calculateTotalPatterns(state: ParserState): number {\n let sum = 0;\n const patterns = state.usagePatterns;\n\n for (const key in patterns) {\n const pattern = (patterns as any)[key];\n if (pattern instanceof Set) {\n sum += pattern.size;\n } else if (pattern instanceof Map) {\n sum += pattern.size;\n }\n }\n\n return sum;\n}\n","import { parseSync } from '@swc/core';\nimport fs from 'node:fs';\nimport type { ParseOptions, UsageReport } from './types';\nimport { createState } from './core/state';\nimport { visitNode } from './core/visitor';\nimport { generateReport } from './core/report';\n\n/**\n * Parses code and analyzes React component usage patterns\n */\nexport function parseCode(\n code: string,\n options: ParseOptions = {},\n): UsageReport {\n const state = createState();\n\n // Parse code to AST\n const ast = parseSync(code, {\n syntax: 'typescript',\n tsx: true,\n decorators: true,\n dynamicImport: true,\n });\n\n // Visit all nodes and analyze patterns\n visitNode(ast, state);\n\n // Generate report\n const report = generateReport(state);\n\n // Optional: Filter by library if specified\n if (options.libraryName) {\n return filterReportByLibrary(report, options.libraryName);\n }\n\n return report;\n}\n\n/**\n * Parses a file and analyzes React component usage patterns\n */\nexport function parseFile(\n filePath: string,\n options: ParseOptions = {},\n): UsageReport | null {\n console.log(`\\nπŸ“ Analyzing: ${filePath}`);\n\n try {\n const code = fs.readFileSync(filePath, 'utf8');\n return parseCode(code, options);\n } catch (error: any) {\n console.error(`❌ Error parsing ${filePath}:`, error.message);\n return null;\n }\n}\n\n/**\n * Filters report to only include imports/usage from a specific library\n */\nfunction filterReportByLibrary(\n report: UsageReport,\n libraryName: string,\n): UsageReport {\n const isFromLibrary = (source: string) =>\n source.startsWith(libraryName) || source.includes(libraryName);\n\n return {\n ...report,\n patterns: {\n imports: {\n default: report.patterns.imports.default.filter((imp) =>\n isFromLibrary(imp.source),\n ),\n named: report.patterns.imports.named.filter((imp) =>\n isFromLibrary(imp.source),\n ),\n namespace: report.patterns.imports.namespace.filter((imp) =>\n isFromLibrary(imp.source),\n ),\n aliased: report.patterns.imports.aliased.filter((imp) =>\n isFromLibrary(imp.source),\n ),\n },\n usage: report.patterns.usage,\n advanced: {\n lazy: report.patterns.advanced.lazy.filter((imp) =>\n isFromLibrary(imp.source),\n ),\n dynamic: report.patterns.advanced.dynamic.filter((imp) =>\n isFromLibrary(imp.source),\n ),\n hoc: report.patterns.advanced.hoc,\n memo: report.patterns.advanced.memo,\n forwardRef: report.patterns.advanced.forwardRef,\n portal: report.patterns.advanced.portal,\n },\n props: report.patterns.props,\n },\n };\n}\n\n// Re-export types for convenience\nexport type { UsageReport, ParseOptions } from './types';\n","import type { UsageReport } from '../swc-parser';\r\n\r\nexport interface ComponentUsage {\r\n name: string;\r\n source: string;\r\n count: number;\r\n files: Set<string>;\r\n}\r\n\r\nexport interface PatternCount {\r\n patternType: string;\r\n displayName: string;\r\n count: number;\r\n}\r\n\r\nexport interface AggregatedReport {\r\n filesAnalyzed: number;\r\n totalImports: number;\r\n totalComponents: number;\r\n totalUsagePatterns: number;\r\n patternCounts: PatternCount[];\r\n componentUsage: Map<string, ComponentUsage>;\r\n topComponents: ComponentUsage[];\r\n allComponents: string[];\r\n reports: UsageReport[];\r\n}\r\n\r\nexport function aggregateReports(reports: UsageReport[]): AggregatedReport {\r\n const componentUsageMap = new Map<string, ComponentUsage>();\r\n let totalImports = 0;\r\n let totalUsagePatterns = 0;\r\n const patternCountMap = new Map<string, number>();\r\n\r\n // Aggregate data from all reports\r\n for (const report of reports) {\r\n totalImports += report.summary.totalImports;\r\n totalUsagePatterns += report.summary.totalUsagePatterns;\r\n\r\n // Aggregate component usage from JSX patterns\r\n for (const jsx of report.patterns.usage.jsx) {\r\n const key = jsx.component;\r\n const existing = componentUsageMap.get(key);\r\n\r\n if (existing) {\r\n existing.count++;\r\n } else {\r\n // Try to find the source from imports\r\n const source = findComponentSource(jsx.component, report);\r\n componentUsageMap.set(key, {\r\n name: jsx.component,\r\n source,\r\n count: 1,\r\n files: new Set(),\r\n });\r\n }\r\n }\r\n\r\n // Count patterns\r\n countPatterns(report, patternCountMap);\r\n }\r\n\r\n // Convert to arrays and sort\r\n const topComponents = Array.from(componentUsageMap.values()).sort(\r\n (a, b) => b.count - a.count,\r\n );\r\n\r\n const allComponents = Array.from(componentUsageMap.keys()).sort();\r\n\r\n const patternCounts = Array.from(patternCountMap.entries())\r\n .map(([type, count]) => ({\r\n patternType: type,\r\n displayName: getPatternDisplayName(type),\r\n count,\r\n }))\r\n .sort((a, b) => b.count - a.count);\r\n\r\n return {\r\n filesAnalyzed: reports.length,\r\n totalImports,\r\n totalComponents: componentUsageMap.size,\r\n totalUsagePatterns,\r\n patternCounts,\r\n componentUsage: componentUsageMap,\r\n topComponents,\r\n allComponents,\r\n reports,\r\n };\r\n}\r\n\r\nfunction findComponentSource(\r\n componentName: string,\r\n report: UsageReport,\r\n): string {\r\n // Check named imports\r\n const namedImport = report.patterns.imports.named.find(\r\n (imp) => imp.name === componentName,\r\n );\r\n if (namedImport) return namedImport.source;\r\n\r\n // Check default imports\r\n const defaultImport = report.patterns.imports.default.find(\r\n (imp) => imp.name === componentName,\r\n );\r\n if (defaultImport) return defaultImport.source;\r\n\r\n // Check aliased imports\r\n const aliasedImport = report.patterns.imports.aliased.find(\r\n (imp) => imp.local === componentName,\r\n );\r\n if (aliasedImport) return aliasedImport.source;\r\n\r\n return 'unknown';\r\n}\r\n\r\nfunction countPatterns(report: UsageReport, patternMap: Map<string, number>) {\r\n // Count import patterns\r\n increment(\r\n patternMap,\r\n 'imports.default',\r\n report.patterns.imports.default.length,\r\n );\r\n increment(patternMap, 'imports.named', report.patterns.imports.named.length);\r\n increment(\r\n patternMap,\r\n 'imports.namespace',\r\n report.patterns.imports.namespace.length,\r\n );\r\n increment(\r\n patternMap,\r\n 'imports.aliased',\r\n report.patterns.imports.aliased.length,\r\n );\r\n\r\n // Count usage patterns\r\n increment(patternMap, 'usage.jsx', report.patterns.usage.jsx.length);\r\n increment(\r\n patternMap,\r\n 'usage.variables',\r\n report.patterns.usage.variables.length,\r\n );\r\n increment(\r\n patternMap,\r\n 'usage.destructuring',\r\n report.patterns.usage.destructuring.length,\r\n );\r\n increment(\r\n patternMap,\r\n 'usage.conditional',\r\n report.patterns.usage.conditional.length,\r\n );\r\n increment(patternMap, 'usage.arrays', report.patterns.usage.arrays.length);\r\n increment(patternMap, 'usage.objects', report.patterns.usage.objects.length);\r\n\r\n // Count advanced patterns\r\n increment(patternMap, 'advanced.lazy', report.patterns.advanced.lazy.length);\r\n increment(\r\n patternMap,\r\n 'advanced.dynamic',\r\n report.patterns.advanced.dynamic.length,\r\n );\r\n increment(patternMap, 'advanced.hoc', report.patterns.advanced.hoc.length);\r\n increment(patternMap, 'advanced.memo', report.patterns.advanced.memo.length);\r\n increment(\r\n patternMap,\r\n 'advanced.forwardRef',\r\n report.patterns.advanced.forwardRef.length,\r\n );\r\n increment(\r\n patternMap,\r\n 'advanced.portal',\r\n report.patterns.advanced.portal.length,\r\n );\r\n}\r\n\r\nfunction increment(map: Map<string, number>, key: string, value: number) {\r\n map.set(key, (map.get(key) || 0) + value);\r\n}\r\n\r\nfunction getPatternDisplayName(patternType: string): string {\r\n const displayNames: Record<string, string> = {\r\n 'imports.default': 'Default Imports',\r\n 'imports.named': 'Named Imports',\r\n 'imports.namespace': 'Namespace Imports',\r\n 'imports.aliased': 'Aliased Imports',\r\n 'usage.jsx': 'JSX Usage',\r\n 'usage.variables': 'Variable Assignments',\r\n 'usage.destructuring': 'Destructuring',\r\n 'usage.conditional': 'Conditional Usage',\r\n 'usage.arrays': 'Array Mappings',\r\n 'usage.objects': 'Object Mappings',\r\n 'advanced.lazy': 'Lazy Loading',\r\n 'advanced.dynamic': 'Dynamic Imports',\r\n 'advanced.hoc': 'Higher-Order Components',\r\n 'advanced.memo': 'Memoized Components',\r\n 'advanced.forwardRef': 'Forward Refs',\r\n 'advanced.portal': 'Portal Usage',\r\n };\r\n return displayNames[patternType] || patternType;\r\n}\r\n","import chalk from 'chalk';\r\nimport path from 'node:path';\r\nimport type { UsageReport } from '../swc-parser';\r\n\r\nexport function printVerbose(filePath: string, report: UsageReport) {\r\n const relativePath = path.relative(process.cwd(), filePath);\r\n\r\n console.log(chalk.gray(`[VERBOSE] Analyzing: ${relativePath}`));\r\n\r\n // Print JSX usage\r\n for (const jsx of report.patterns.usage.jsx) {\r\n console.log(chalk.gray(`[VERBOSE] Found JSX Usage: <${jsx.component}>`));\r\n }\r\n\r\n // Print named imports\r\n for (const imp of report.patterns.imports.named) {\r\n console.log(\r\n chalk.gray(`[VERBOSE] Found import: ${imp.name} from ${imp.source}`),\r\n );\r\n }\r\n\r\n // Print default imports\r\n for (const imp of report.patterns.imports.default) {\r\n console.log(\r\n chalk.gray(\r\n `[VERBOSE] Found default import: ${imp.name} from ${imp.source}`,\r\n ),\r\n );\r\n }\r\n\r\n // Print namespace imports\r\n for (const imp of report.patterns.imports.namespace) {\r\n console.log(\r\n chalk.gray(\r\n `[VERBOSE] Found namespace import: ${imp.name} from ${imp.source}`,\r\n ),\r\n );\r\n }\r\n\r\n // Print aliased imports\r\n for (const imp of report.patterns.imports.aliased) {\r\n console.log(\r\n chalk.gray(\r\n `[VERBOSE] Found aliased import: ${imp.imported} as ${imp.local} from ${imp.source}`,\r\n ),\r\n );\r\n }\r\n\r\n // Print object mappings\r\n for (const obj of report.patterns.usage.objects) {\r\n for (const mapping of obj.mappings) {\r\n console.log(\r\n chalk.gray(\r\n `[VERBOSE] Found Object mapping with Component: ${mapping.component}`,\r\n ),\r\n );\r\n }\r\n }\r\n\r\n // Print conditional usage\r\n for (const cond of report.patterns.usage.conditional) {\r\n console.log(\r\n chalk.gray(`[VERBOSE] Found Conditional usage: ${cond.consequent}`),\r\n );\r\n }\r\n\r\n // Print array mappings\r\n for (const arr of report.patterns.usage.arrays) {\r\n console.log(\r\n chalk.gray(\r\n `[VERBOSE] Found Array mapping with components: ${arr.components.join(', ')}`,\r\n ),\r\n );\r\n }\r\n\r\n // Print variable assignments\r\n for (const variable of report.patterns.usage.variables) {\r\n console.log(\r\n chalk.gray(\r\n `[VERBOSE] Found Variable assignment: ${variable.variable} = ${variable.assignment}`,\r\n ),\r\n );\r\n }\r\n\r\n // Print destructuring\r\n for (const destructure of report.patterns.usage.destructuring) {\r\n console.log(\r\n chalk.gray(\r\n `[VERBOSE] Found Destructuring: ${destructure.property} from ${destructure.source}`,\r\n ),\r\n );\r\n }\r\n\r\n // Print lazy imports\r\n for (const lazy of report.patterns.advanced.lazy) {\r\n console.log(chalk.gray(`[VERBOSE] Found Lazy import: ${lazy.source}`));\r\n }\r\n\r\n // Print dynamic imports\r\n for (const dynamic of report.patterns.advanced.dynamic) {\r\n console.log(\r\n chalk.gray(`[VERBOSE] Found Dynamic import: ${dynamic.source}`),\r\n );\r\n }\r\n\r\n // Print HOC usage\r\n for (const hoc of report.patterns.advanced.hoc) {\r\n console.log(\r\n chalk.gray(`[VERBOSE] Found HOC: ${hoc.function}(${hoc.component})`),\r\n );\r\n }\r\n\r\n // Print memo\r\n for (const memo of report.patterns.advanced.memo) {\r\n console.log(\r\n chalk.gray(`[VERBOSE] Found Memoized component: ${memo.component}`),\r\n );\r\n }\r\n\r\n // Print forwardRef\r\n if (report.patterns.advanced.forwardRef.length > 0) {\r\n console.log(chalk.gray(`[VERBOSE] Found Forward Ref usage`));\r\n }\r\n\r\n // Print portal\r\n if (report.patterns.advanced.portal.length > 0) {\r\n console.log(chalk.gray(`[VERBOSE] Found Portal usage`));\r\n }\r\n\r\n // Print line separator\r\n console.log(chalk.gray(`[VERBOSE] ${'─'.repeat(80)}`));\r\n}\r\n","import chalk from 'chalk';\nimport type { AggregatedReport } from './aggregator';\n\nexport function printSummary(\n aggregated: AggregatedReport,\n elapsedTimeSeconds: number,\n) {\n // console.log(\n // chalk.green(\n // `[SUMMARY] Analysis completed successfully in ${elapsedTimeSeconds.toFixed(1)}s`,\n // ),\n // );\n console.log(\n chalk.green(\n `[SUMMARY] Files analyzed: ${aggregated.filesAnalyzed.toLocaleString()}`,\n ),\n );\n console.log(\n chalk.green(\n `[SUMMARY] Total imports: ${aggregated.totalImports.toLocaleString()}`,\n ),\n );\n console.log(\n chalk.green(\n `[SUMMARY] Total components: ${aggregated.totalComponents.toLocaleString()}`,\n ),\n );\n}\n","import chalk from 'chalk';\nimport type { AggregatedReport } from './aggregator';\n\nexport function printDetails(aggregated: AggregatedReport) {\n console.log(\n chalk.cyan(\n `[DETAILS] Total usage patterns: ${aggregated.totalUsagePatterns.toLocaleString()}`,\n ),\n );\n\n // Print each pattern type count\n for (const pattern of aggregated.patternCounts) {\n if (pattern.count > 0) {\n console.log(\n chalk.cyan(\n `[DETAILS] ${pattern.displayName}: ${pattern.count.toLocaleString()}`,\n ),\n );\n }\n }\n}\n","import chalk from 'chalk';\r\n\r\nexport interface ChartData {\r\n label: string;\r\n value: number;\r\n}\r\n\r\nexport interface ChartOptions {\r\n maxWidth?: number;\r\n showValues?: boolean;\r\n barChar?: string;\r\n emptyChar?: string;\r\n}\r\n\r\nexport function renderBarChart(data: ChartData[], options: ChartOptions = {}) {\r\n const {\r\n maxWidth = 50,\r\n showValues = true,\r\n barChar = 'β–ˆ',\r\n emptyChar = 'β–‘',\r\n } = options;\r\n\r\n if (data.length === 0) {\r\n console.log(chalk.gray(' No data to display'));\r\n return;\r\n }\r\n\r\n // Find max value for scaling\r\n const maxValue = Math.max(...data.map((d) => d.value));\r\n if (maxValue === 0) {\r\n console.log(chalk.gray(' All values are zero'));\r\n return;\r\n }\r\n\r\n // Find longest label for alignment\r\n const maxLabelLength = Math.max(...data.map((d) => d.label.length));\r\n\r\n // Render each bar\r\n for (const item of data) {\r\n const percentage = item.value / maxValue;\r\n const barLength = Math.round(percentage * maxWidth);\r\n const emptyLength = maxWidth - barLength;\r\n\r\n // Pad label\r\n const paddedLabel = item.label.padEnd(maxLabelLength, ' ');\r\n\r\n // Build bar\r\n const bar =\r\n chalk.green(barChar.repeat(barLength)) +\r\n chalk.gray(emptyChar.repeat(emptyLength));\r\n\r\n // Build value string\r\n const valueStr = showValues ? ` ${item.value.toLocaleString()}` : '';\r\n\r\n console.log(`${paddedLabel} ${bar}${valueStr}\\n`);\r\n }\r\n}\r\n","import chalk from 'chalk';\r\nimport Table from 'cli-table3';\r\nimport type { AggregatedReport, ComponentUsage } from './aggregator';\r\nimport { renderBarChart } from './chart-renderer';\r\n\r\nexport function printTopComponents(\r\n aggregated: AggregatedReport,\r\n mode: 'log' | 'table' | 'chart',\r\n topN: number = 10,\r\n) {\r\n const topComponents = aggregated.topComponents.slice(0, topN);\r\n\r\n if (mode === 'log') {\r\n printTopComponentsLog(topComponents);\r\n } else if (mode === 'table') {\r\n printTopComponentsTable(topComponents);\r\n } else if (mode === 'chart') {\r\n printTopComponentsChart(topComponents);\r\n }\r\n}\r\n\r\nfunction printTopComponentsLog(components: ComponentUsage[]) {\r\n console.log(chalk.yellow.bold(`\\nπŸ† Top components`));\r\n\r\n if (components.length === 0) {\r\n console.log(chalk.gray(' No components found'));\r\n return;\r\n }\r\n\r\n components.forEach((comp, idx) => {\r\n const rank = idx + 1;\r\n const emoji =\r\n rank === 1 ? 'πŸ₯‡' : rank === 2 ? 'πŸ₯ˆ' : rank === 3 ? 'πŸ₯‰' : ' ';\r\n const sourceStr = comp.source !== 'unknown' ? ` from ${comp.source}` : '';\r\n console.log(\r\n chalk.yellow(\r\n `[TOP-COMPONENTS] ${emoji} ${rank}. ${comp.name}${sourceStr}: ${comp.count} uses`,\r\n ),\r\n );\r\n });\r\n}\r\n\r\nfunction printTopComponentsTable(components: ComponentUsage[]) {\r\n console.log(chalk.yellow(`[TOP-COMPONENTS] TABLE`));\r\n\r\n if (components.length === 0) {\r\n console.log(chalk.gray(' No components found'));\r\n return;\r\n }\r\n\r\n const table = new Table({\r\n head: ['Rank', 'Component', 'Source', 'Count'],\r\n style: {\r\n head: ['cyan'],\r\n border: ['gray'],\r\n },\r\n });\r\n\r\n components.forEach((comp, idx) => {\r\n const rank = idx + 1;\r\n const emoji =\r\n rank === 1 ? 'πŸ₯‡' : rank === 2 ? 'πŸ₯ˆ' : rank === 3 ? 'πŸ₯‰' : `${rank}.`;\r\n table.push([emoji, comp.name, comp.source, comp.count.toString()]);\r\n });\r\n\r\n console.log(table.toString());\r\n}\r\n\r\nfunction printTopComponentsChart(components: ComponentUsage[]) {\r\n console.log(chalk.yellow(`[TOP-COMPONENTS] CHART`));\r\n\r\n if (components.length === 0) {\r\n console.log(chalk.gray(' No components found'));\r\n return;\r\n }\r\n\r\n const data = components.map((comp) => ({\r\n label: comp.name,\r\n value: comp.count,\r\n }));\r\n\r\n renderBarChart(data, { maxWidth: 50 });\r\n}\r\n","import chalk from 'chalk';\r\nimport Table from 'cli-table3';\r\nimport type { AggregatedReport, ComponentUsage } from './aggregator';\r\nimport { renderBarChart } from './chart-renderer';\r\n\r\nexport function printComponentsUsage(\r\n aggregated: AggregatedReport,\r\n mode: 'table' | 'chart',\r\n) {\r\n const components = aggregated.topComponents;\r\n\r\n if (mode === 'table') {\r\n printComponentsUsageTable(components);\r\n } else if (mode === 'chart') {\r\n printComponentsUsageChart(components);\r\n }\r\n}\r\n\r\nfunction printComponentsUsageTable(components: ComponentUsage[]) {\r\n console.log(chalk.magenta.bold(`\\nβš›οΈ Components Usage\\n`));\r\n\r\n if (components.length === 0) {\r\n console.log(chalk.gray(' No components found'));\r\n return;\r\n }\r\n\r\n const table = new Table({\r\n head: ['Component', 'Source', 'Version', 'Count'],\r\n style: {\r\n head: ['cyan'],\r\n border: ['gray'],\r\n },\r\n });\r\n\r\n components.forEach((comp) => {\r\n table.push([comp.name, comp.source, '0.0.0', comp.count.toString()]);\r\n });\r\n\r\n console.log(table.toString());\r\n}\r\n\r\nfunction printComponentsUsageChart(components: ComponentUsage[]) {\r\n console.log(chalk.magenta.bold(`\\nβš›οΈ Components Usage\\n`));\r\n\r\n if (components.length === 0) {\r\n console.log(chalk.gray(' No components found'));\r\n return;\r\n }\r\n\r\n const data = components.map((comp) => ({\r\n label: comp.name,\r\n value: comp.count,\r\n }));\r\n\r\n renderBarChart(data, { maxWidth: 50 });\r\n}\r\n","import chalk from 'chalk';\nimport Table from 'cli-table3';\nimport type { AggregatedReport, PatternCount } from './aggregator';\nimport { renderBarChart } from './chart-renderer';\n\nexport function printPatterns(\n aggregated: AggregatedReport,\n mode: 'table' | 'chart',\n) {\n const patterns = aggregated.patternCounts.filter((p) => p.count > 0);\n\n if (mode === 'table') {\n printPatternsTable(patterns);\n } else if (mode === 'chart') {\n printPatternsChart(patterns);\n }\n}\n\nfunction printPatternsTable(patterns: PatternCount[]) {\n console.log(chalk.blue.bold(`\\nπŸ” Code Patterns`));\n\n if (patterns.length === 0) {\n console.log(chalk.gray(' No patterns found'));\n return;\n }\n\n const table = new Table({\n head: ['Pattern', 'Count'],\n style: {\n head: ['cyan'],\n border: ['gray'],\n },\n });\n\n patterns.forEach((pattern) => {\n table.push([pattern.displayName, pattern.count.toString()]);\n });\n\n console.log(table.toString());\n}\n\nfunction printPatternsChart(patterns: PatternCount[]) {\n console.log(chalk.blue(`[PATTERNS] CHART`));\n\n if (patterns.length === 0) {\n console.log(chalk.gray(' No patterns found'));\n return;\n }\n\n const data = patterns.map((pattern) => ({\n label: pattern.displayName,\n value: pattern.count,\n }));\n\n renderBarChart(data, { maxWidth: 50 });\n}\n","import { Command } from 'commander';\nimport { glob } from 'glob';\nimport ora from 'ora';\nimport chalk from 'chalk';\nimport fs from 'node:fs';\nimport { parseFile } from '../swc-parser';\nimport type { UsageReport } from '../swc-parser';\nimport { aggregateReports, type AggregatedReport } from '../utils/aggregator';\nimport { printVerbose } from '../utils/print-verbose';\nimport { printSummary } from '../utils/print-summary';\nimport { printDetails } from '../utils/print-details';\nimport { printTopComponents } from '../utils/print-top-components';\nimport { printComponentsUsage } from '../utils/print-components-usage';\nimport { printPatterns } from '../utils/print-patterns';\n\ninterface ScanOptions {\n verbose?: boolean;\n summary?: string | boolean;\n details?: boolean;\n topComponents?: string;\n componentsUsage?: string;\n patterns?: string;\n output?: string;\n debug?: boolean;\n}\n\ninterface NormalizedScanOptions {\n verbose: boolean;\n summary: 'log' | false;\n details: boolean;\n topComponents: 'log' | 'table' | 'chart';\n componentsUsage: 'table' | 'chart';\n patterns: 'table' | 'chart';\n output?: string;\n}\n\nexport function registerScanCommand(program: Command) {\n program\n .command('scan')\n .description('Scan and analyze local files')\n .argument(\n '[pattern]',\n 'Glob pattern for files to analyze (defaults to current directory recursively)',\n '**/*.{tsx,jsx,ts,js}',\n )\n .option(\n '--verbose',\n 'Show detailed file-by-file analysis with every pattern found',\n false,\n )\n .option('--summary [mode]', 'Show summary stats (log, false)', 'log')\n .option('--details', 'Show detailed pattern counts')\n .option(\n '--top-components [mode]',\n 'Show top components (log, table, chart)',\n 'log',\n )\n .option(\n '--components-usage [mode]',\n 'Show components table/chart (table, chart)',\n 'table',\n )\n .option(\n '--patterns [mode]',\n 'Show patterns table/chart (table, chart)',\n 'table',\n )\n .action(async (pattern: string, options: ScanOptions) => {\n const normalizedOptions = normalizeOptions(options);\n\n await executeScan(pattern, normalizedOptions);\n });\n}\n\nfunction normalizeOptions(options: ScanOptions): NormalizedScanOptions {\n return {\n verbose: options.verbose || false,\n summary:\n options.summary === false || options.summary === 'false' ? false : 'log',\n details: options.details || false,\n topComponents: (options.topComponents as any) || 'log',\n componentsUsage: (options.componentsUsage as any) || 'table',\n patterns: (options.patterns as any) || 'table',\n output: options.output,\n };\n}\n\nasync function executeScan(pattern: string, options: NormalizedScanOptions) {\n const startTime = Date.now();\n const spinner = ora('Finding files...').start();\n\n try {\n // Find files matching pattern\n const files = await glob(pattern, {\n ignore: ['node_modules/**', 'dist/**', 'build/**', '.git/**'],\n absolute: true,\n });\n\n if (files.length === 0) {\n spinner.fail(chalk.red(`No files found matching pattern: ${pattern}`));\n return;\n }\n\n spinner.succeed(chalk.green(`Found ${files.length} files`));\n\n // Analyze all files\n spinner.start('Analyzing files...');\n const reports: UsageReport[] = [];\n\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n\n if (!options.verbose) {\n spinner.text = `Analyzing files... (${i + 1}/${files.length})`;\n }\n\n try {\n const report = parseFile(file);\n if (report) {\n reports.push(report);\n\n // Print verbose output immediately after parsing each file\n if (options.verbose) {\n spinner.stop();\n printVerbose(file, report);\n spinner.start();\n }\n }\n } catch (error: any) {\n spinner.stop();\n console.error(chalk.red(`Error analyzing ${file}: ${error.message}`));\n spinner.start();\n }\n }\n\n spinner.succeed(\n chalk.green(`Analysis complete! Analyzed ${reports.length} files`),\n );\n\n // Calculate elapsed time\n const elapsedTime = (Date.now() - startTime) / 1000;\n\n // Aggregate reports\n const aggregated = aggregateReports(reports);\n\n // Print outputs based on options\n console.log(''); // Empty line before output sections\n\n if (options.summary) {\n printSummary(aggregated, elapsedTime);\n }\n\n if (options.details) {\n console.log(''); // Empty line between sections\n printDetails(aggregated);\n }\n\n if (options.topComponents) {\n console.log(''); // Empty line between sections\n printTopComponents(aggregated, options.topComponents);\n }\n\n if (options.componentsUsage) {\n console.log(''); // Empty line between sections\n printComponentsUsage(aggregated, options.componentsUsage);\n }\n\n if (options.patterns) {\n console.log(''); // Empty line between sections\n printPatterns(aggregated, options.patterns);\n }\n } catch (error: any) {\n spinner.fail(chalk.red('Analysis failed: ' + error.message));\n console.error(error);\n\n process.exit(1);\n }\n}\n","{\n \"name\": \"hermex\",\n \"version\": \"0.0.1-alpha.0\",\n \"description\": \"SWC-based AST parser for analyzing code and React component usage patterns across entire codebases\",\n \"homepage\": \"https://github.com/Gallevy/hermex\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/Gallevy/hermex.git\"\n },\n \"main\": \"./dist/cli.js\",\n \"bin\": {\n \"react-usage-analyzer\": \"./dist/cli.js\",\n \"rua\": \"./dist/cli.js\"\n },\n \"files\": [\n \"dist\",\n \"README.md\",\n \"LICENSE.md\"\n ],\n \"scripts\": {\n \"check\": \"biome check\",\n \"format\": \"biome format --write\",\n \"format:ci\": \"biome ci\",\n \"lint\": \"oxlint\",\n \"lint:ci\": \"oxlint\",\n \"test\": \"vitest\",\n \"test:ci\": \"vitest run\",\n \"build\": \"tsup\",\n \"build:ci\": \"tsup --clean\",\n \"dev:scan\": \"pnpm run build && node dist/cli.js scan \\\"code-examples/**/*.tsx\\\"\"\n },\n \"keywords\": [\n \"hermex\",\n \"react\",\n \"ast\",\n \"parser\",\n \"swc\",\n \"component\",\n \"analysis\",\n \"usage\",\n \"patterns\",\n \"cli\"\n ],\n \"dependencies\": {\n \"@semantic-release/github\": \"^12.0.2\",\n \"@swc/core\": \"^1.3.107\",\n \"@swc/types\": \"^0.1.5\",\n \"@yarnpkg/lockfile\": \"^1.1.0\",\n \"chalk\": \"^4.1.2\",\n \"cli-table3\": \"^0.6.5\",\n \"commander\": \"^14.0.2\",\n \"glob\": \"^13.0.0\",\n \"js-yaml\": \"^4.1.1\",\n \"ora\": \"^5.4.1\",\n \"simple-git\": \"^3.30.0\",\n \"tmp\": \"^0.2.5\"\n },\n \"devDependencies\": {\n \"@biomejs/biome\": \"2.3.8\",\n \"@semantic-release/changelog\": \"^6.0.3\",\n \"@semantic-release/commit-analyzer\": \"^13.0.1\",\n \"@semantic-release/git\": \"^10.0.1\",\n \"@semantic-release/npm\": \"^13.1.2\",\n \"@semantic-release/release-notes-generator\": \"^14.1.0\",\n \"@types/js-yaml\": \"^4.0.9\",\n \"@types/node\": \"^24.10.1\",\n \"@types/tmp\": \"^0.2.6\",\n \"oxlint\": \"^1.30.0\",\n \"semantic-release\": \"^25.0.2\",\n \"tsup\": \"^8.5.1\",\n \"typescript\": \"^5.3.3\",\n \"vitest\": \"^4.0.14\"\n },\n \"engines\": {\n \"node\": \">=24.11.1\"\n },\n \"author\": \"Gallevy\",\n \"license\": \"MIT\"\n}\n","#!/usr/bin/env node\n\nimport { Command } from 'commander';\nimport { registerScanCommand } from './commands/scan';\nimport packageJson from '../package.json';\n\nexport const program = new Command();\n\nprogram\n .name('hermex')\n .description('Analyze React component usage patterns in your codebase')\n .version(packageJson.version);\n\nregisterScanCommand(program);\n\nprogram.parse(process.argv);\n"]}
1
+ {"version":3,"sources":["../src/swc-parser/core/state.ts","../src/swc-parser/patterns/imports.ts","../src/swc-parser/utils/jsx-helpers.ts","../src/swc-parser/patterns/props.ts","../src/swc-parser/patterns/jsx.ts","../src/swc-parser/utils/matchers.ts","../src/swc-parser/patterns/variables.ts","../src/swc-parser/patterns/conditionals.ts","../src/swc-parser/patterns/collections.ts","../src/swc-parser/patterns/lazy-dynamic.ts","../src/swc-parser/patterns/advanced.ts","../src/swc-parser/core/visitor.ts","../src/swc-parser/core/report.ts","../src/swc-parser/index.ts","../src/utils/aggregator.ts","../src/utils/print-verbose.ts","../src/utils/print-summary.ts","../src/utils/print-details.ts","../src/utils/chart-renderer.ts","../src/utils/print-top-components.ts","../src/utils/print-components-usage.ts","../src/utils/print-patterns.ts","../src/commands/scan.ts","../package.json","../src/cli.ts"],"names":["_a","_b","parseSync","fs","path","chalk","Table","program","ora","glob","Command"],"mappings":"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","file":"cli.js","sourcesContent":["import type { ParserState, UsagePatterns } from '../types';\n\nexport function createState(): ParserState {\n const usagePatterns: UsagePatterns = {\n directImports: new Set(),\n namedImports: new Set(),\n namespaceImports: new Set(),\n defaultImports: new Set(),\n aliasedImports: new Map(),\n variableAssignments: new Map(),\n componentMappings: new Set(),\n lazyImports: new Set(),\n dynamicImports: new Set(),\n conditionalUsage: new Set(),\n arrayMappings: new Set(),\n objectMappings: new Set(),\n hocUsage: new Set(),\n renderProps: new Set(),\n contextUsage: new Set(),\n forwardedRefs: new Set(),\n memoizedComponents: new Set(),\n portalUsage: new Set(),\n jsxUsage: new Map(),\n destructuredUsage: new Set(),\n propsAnalysis: new Map(),\n };\n\n return {\n usagePatterns,\n componentNames: new Set(),\n allIdentifiers: new Set(),\n };\n}\n","import type { ImportDeclaration } from '@swc/core';\nimport type { ParserState } from '../types';\n\n/**\n * Analyzes import declarations and tracks all types:\n * - Default imports\n * - Named imports\n * - Namespace imports\n * - Aliased imports\n */\nexport function analyzeImportDeclaration(\n node: ImportDeclaration,\n state: ParserState,\n): void {\n const source = node.source.value;\n\n console.log(`πŸ“¦ Found import: ${source}`);\n\n for (const spec of node.specifiers) {\n switch (spec.type) {\n case 'ImportDefaultSpecifier':\n analyzeDefaultImport(spec, source, node, state);\n break;\n\n case 'ImportNamespaceSpecifier':\n analyzeNamespaceImport(spec, source, node, state);\n break;\n\n case 'ImportSpecifier':\n analyzeNamedImport(spec, source, node, state);\n break;\n }\n }\n}\n\nfunction analyzeDefaultImport(\n spec: any,\n source: string,\n node: ImportDeclaration,\n state: ParserState,\n): void {\n const name = spec.local.value;\n\n state.usagePatterns.defaultImports.add({\n name,\n source,\n line: node.span?.start || 0,\n });\n\n state.componentNames.add(name);\n}\n\nfunction analyzeNamespaceImport(\n spec: any,\n source: string,\n node: ImportDeclaration,\n state: ParserState,\n): void {\n const name = spec.local.value;\n\n state.usagePatterns.namespaceImports.add({\n name,\n source,\n line: node.span?.start || 0,\n });\n\n state.allIdentifiers.add(name);\n}\n\nfunction analyzeNamedImport(\n spec: any,\n source: string,\n node: ImportDeclaration,\n state: ParserState,\n): void {\n const importedName = spec.imported ? spec.imported.value : spec.local.value;\n const localName = spec.local.value;\n\n state.usagePatterns.namedImports.add({\n name: importedName,\n source,\n line: node.span?.start || 0,\n });\n\n // Track aliases\n if (importedName !== localName) {\n state.usagePatterns.aliasedImports.set(localName, {\n imported: importedName,\n local: localName,\n source,\n line: node.span?.start || 0,\n });\n }\n\n state.componentNames.add(localName);\n}\n","import type { ParserState } from '../types';\n\n/**\n * Extracts the name from a JSX element (handles identifiers and member expressions)\n */\nexport function getJSXElementName(nameNode: any): string {\n if (!nameNode) return '';\n\n switch (nameNode.type) {\n case 'Identifier':\n return nameNode.value;\n case 'JSXMemberExpression':\n return `${getJSXElementName(nameNode.object)}.${nameNode.property.value}`;\n default:\n return '';\n }\n}\n\n/**\n * Checks if a JSX member expression is a known component\n */\nexport function isMemberExpressionComponent(\n nameNode: any,\n state: ParserState,\n): boolean {\n if (nameNode?.type === 'JSXMemberExpression') {\n const objectName = getJSXElementName(nameNode.object);\n return state.allIdentifiers.has(objectName);\n }\n return false;\n}\n\n/**\n * Extracts props from JSX attributes\n */\nexport function extractJSXProps(attributes: any[]): Array<{\n name: string;\n value: any;\n isSpread?: boolean;\n}> {\n if (!attributes) return [];\n\n return attributes\n .map((attr) => {\n if (attr.type === 'JSXAttribute') {\n return {\n name: attr.name?.value || attr.name?.name?.value,\n value: extractJSXAttributeValue(attr.value),\n };\n }\n if (attr.type === 'SpreadElement') {\n return {\n name: '...',\n value: '[spread]',\n isSpread: true,\n };\n }\n return null;\n })\n .filter(Boolean) as Array<{\n name: string;\n value: any;\n isSpread?: boolean;\n }>;\n}\n\n/**\n * Extracts value from JSX attribute\n */\nexport function extractJSXAttributeValue(value: any): any {\n if (!value) return true; // boolean attribute\n\n switch (value.type) {\n case 'StringLiteral':\n return value.value;\n case 'JSXExpressionContainer':\n return extractExpressionValue(value.expression);\n default:\n return '[complex]';\n }\n}\n\n/**\n * Extracts a readable value from an expression\n */\nexport function extractExpressionValue(expr: any): any {\n if (!expr) return '[unknown]';\n\n switch (expr.type) {\n case 'StringLiteral':\n case 'NumericLiteral':\n case 'BooleanLiteral':\n return expr.value;\n case 'Identifier':\n return `{${expr.value}}`;\n case 'ArrowFunctionExpression':\n case 'FunctionExpression':\n return '[function]';\n case 'ObjectExpression':\n return '[object]';\n case 'ArrayExpression':\n return '[array]';\n default:\n return '[expression]';\n }\n}\n\n/**\n * Determines the context where a component is being used\n */\nexport function getUsageContext(parent: any): string {\n if (!parent) return 'direct';\n\n switch (parent.type) {\n case 'ConditionalExpression':\n return 'conditional';\n case 'ArrayExpression':\n return 'array';\n case 'ObjectExpression':\n return 'object';\n case 'CallExpression':\n return 'hoc';\n case 'VariableDeclarator':\n return 'variable';\n default:\n return 'jsx';\n }\n}\n","import type { PropsAnalysis, PropDetail, ParserState } from '../types';\n\n/**\n * Analyzes props in detail for a component\n */\nexport function analyzePropsInDetail(\n attributes: any[],\n componentName: string,\n state: ParserState,\n): PropsAnalysis {\n const analysis: PropsAnalysis = {\n namedProps: [],\n hasSpread: false,\n hasComplexProps: false,\n hasEventHandlers: false,\n propDetails: [],\n };\n\n if (!attributes) return analysis;\n\n for (const attr of attributes) {\n if (attr.type === 'JSXAttribute') {\n const propName = attr.name?.value || attr.name?.name?.value;\n if (propName) {\n analysis.namedProps.push(propName);\n\n const propDetail: PropDetail = {\n name: propName,\n type: getPropType(attr.value),\n isEventHandler: propName.startsWith('on'),\n isComplex: isComplexProp(attr.value),\n };\n\n if (propDetail.isEventHandler) {\n analysis.hasEventHandlers = true;\n }\n if (propDetail.isComplex) {\n analysis.hasComplexProps = true;\n }\n\n analysis.propDetails.push(propDetail);\n }\n } else if (attr.type === 'SpreadElement') {\n analysis.hasSpread = true;\n analysis.propDetails.push({\n name: '...',\n type: 'spread',\n isSpread: true,\n isComplex: true,\n isEventHandler: false,\n warning: 'Spread props cannot be statically analyzed',\n });\n analysis.hasComplexProps = true;\n }\n }\n\n // Store in state\n state.usagePatterns.propsAnalysis.set(componentName, analysis);\n\n return analysis;\n}\n\n/**\n * Determines the type of a prop value\n */\nfunction getPropType(value: any): string {\n if (!value) return 'boolean';\n\n switch (value.type) {\n case 'StringLiteral':\n return 'string';\n case 'JSXExpressionContainer': {\n const expr = value.expression;\n if (!expr) return 'unknown';\n switch (expr.type) {\n case 'NumericLiteral':\n return 'number';\n case 'BooleanLiteral':\n return 'boolean';\n case 'StringLiteral':\n return 'string';\n case 'ArrowFunctionExpression':\n case 'FunctionExpression':\n return 'function';\n case 'ObjectExpression':\n return 'object';\n case 'ArrayExpression':\n return 'array';\n case 'Identifier':\n return 'variable';\n default:\n return 'expression';\n }\n }\n default:\n return 'unknown';\n }\n}\n\n/**\n * Checks if a prop value is complex (object, array, call, conditional)\n */\nfunction isComplexProp(value: any): boolean {\n if (!value) return false;\n if (value.type === 'JSXExpressionContainer') {\n const expr = value.expression;\n if (!expr) return false;\n return (\n expr.type === 'ObjectExpression' ||\n expr.type === 'ArrayExpression' ||\n expr.type === 'CallExpression' ||\n expr.type === 'ConditionalExpression'\n );\n }\n return false;\n}\n","import type { ParserState, JSXUsage } from '../types';\nimport {\n getJSXElementName,\n isMemberExpressionComponent,\n extractJSXProps,\n getUsageContext,\n} from '../utils/jsx-helpers';\nimport { analyzePropsInDetail } from './props';\n\n/**\n * Analyzes JSX element usage\n */\nexport function analyzeJSXElement(node: any, state: ParserState): void {\n if (node.opening) {\n analyzeJSXOpeningElement(node.opening, state, node);\n }\n}\n\n/**\n * Analyzes JSX opening element and tracks component usage\n */\nexport function analyzeJSXOpeningElement(\n node: any,\n state: ParserState,\n parent?: any,\n): void {\n const elementName = getJSXElementName(node.name);\n\n // Check if this is a known component\n if (\n !state.componentNames.has(elementName) &&\n !isMemberExpressionComponent(node.name, state)\n ) {\n return;\n }\n\n const propsAnalysis = analyzePropsInDetail(\n node.attributes,\n elementName,\n state,\n );\n const usage: JSXUsage = {\n component: elementName,\n props: extractJSXProps(node.attributes).map((p) => p.name),\n propsAnalysis,\n line: node.span?.start || 0,\n context: getUsageContext(parent),\n };\n\n // Track JSX usage\n if (!state.usagePatterns.jsxUsage.has(elementName)) {\n state.usagePatterns.jsxUsage.set(elementName, usage);\n }\n\n console.log(`🎨 JSX Usage: <${elementName}>`);\n}\n","import type { ParserState } from '../types';\n\n/**\n * Checks if a name is a known component from imports\n */\nexport function isKnownComponent(name: string, state: ParserState): boolean {\n return state.componentNames.has(name) || state.allIdentifiers.has(name);\n}\n\n/**\n * Checks if a function name matches HOC patterns\n */\nexport function isHOCPattern(name: string): boolean {\n const hocPatterns = ['with', 'enhance', 'wrap', 'connect', 'create'];\n return hocPatterns.some((pattern) => name.startsWith(pattern));\n}\n\n/**\n * Checks if a node represents a HOC function call\n */\nexport function isHOCFunction(callee: any): boolean {\n if (!callee) return false;\n\n if (callee.type === 'Identifier') {\n return isHOCPattern(callee.value);\n }\n\n if (callee.type === 'MemberExpression') {\n const prop = callee.property;\n return prop?.value && isHOCPattern(prop.value);\n }\n\n return false;\n}\n\n/**\n * Checks if an expression looks like a React component\n * (starts with capital letter)\n */\nexport function looksLikeComponent(name: string): boolean {\n return /^[A-Z]/.test(name);\n}\n\n/**\n * Checks if source is from a specific library (for filtering)\n */\nexport function isFromLibrary(source: string, libraryName: string): boolean {\n return source.startsWith(libraryName) || source.includes(libraryName);\n}\n","import type { ParserState } from '../types';\nimport { isKnownComponent } from '../utils/matchers';\n\n/**\n * Analyzes variable declarations for component assignments\n */\nexport function analyzeVariableDeclaration(\n node: any,\n state: ParserState,\n): void {\n if (!node.declarations) return;\n\n for (const decl of node.declarations) {\n if (decl.id?.type === 'Identifier') {\n const varName = decl.id.value;\n\n // Check if it's assigning a component\n if (decl.init) {\n const assignment = extractAssignmentInfo(decl.init);\n if (assignment && isKnownComponent(assignment, state)) {\n state.usagePatterns.variableAssignments.set(varName, {\n assignment,\n line: node.span?.start || 0,\n });\n state.componentNames.add(varName);\n console.log(`πŸ“ Variable assignment: ${varName} = ${assignment}`);\n }\n }\n }\n\n // Handle destructuring assignments\n if (decl.id?.type === 'ObjectPattern') {\n analyzeDestructuringPattern(decl.id, decl.init, state);\n }\n }\n}\n\n/**\n * Analyzes destructuring patterns\n */\nexport function analyzeDestructuringPattern(\n pattern: any,\n init: any,\n state: ParserState,\n): void {\n if (!pattern.properties) return;\n\n for (const prop of pattern.properties) {\n if (\n prop.type === 'AssignmentPatternProperty' &&\n prop.key?.type === 'Identifier'\n ) {\n const propName = prop.key.value;\n\n if (init?.type === 'Identifier' && state.allIdentifiers.has(init.value)) {\n state.usagePatterns.destructuredUsage.add({\n property: propName,\n source: init.value,\n line: pattern.span?.start || 0,\n });\n state.componentNames.add(propName);\n console.log(`πŸ”§ Destructuring: ${propName} from ${init.value}`);\n }\n }\n }\n}\n\n/**\n * Extracts assignment information from various node types\n */\nfunction extractAssignmentInfo(node: any): string | null {\n switch (node.type) {\n case 'Identifier':\n return node.value;\n case 'MemberExpression':\n return `${extractAssignmentInfo(node.object)}.${node.property.value}`;\n case 'ConditionalExpression':\n return `${extractAssignmentInfo(node.consequent)} | ${extractAssignmentInfo(node.alternate)}`;\n default:\n return null;\n }\n}\n","import type { ParserState } from '../types';\n\n/**\n * Analyzes conditional expressions (ternary operators) with components\n */\nexport function analyzeConditionalExpression(\n node: any,\n state: ParserState,\n): void {\n const consequent =\n node.consequent?.type === 'Identifier' ? node.consequent.value : null;\n const alternate =\n node.alternate?.type === 'Identifier' ? node.alternate.value : null;\n\n if (\n (consequent && state.componentNames.has(consequent)) ||\n (alternate && state.componentNames.has(alternate))\n ) {\n state.usagePatterns.conditionalUsage.add({\n consequent: consequent || '',\n alternate: alternate || '',\n line: node.span?.start || 0,\n });\n console.log('πŸ”€ Conditional component usage found');\n }\n}\n","import type { ParserState } from '../types';\n\n/**\n * Analyzes array expressions containing components\n */\nexport function analyzeArrayExpression(node: any, state: ParserState): void {\n // Check if array contains components\n const hasComponents = node.elements?.some((elem: any) => {\n if (elem?.type === 'Identifier') {\n return state.componentNames.has(elem.value);\n }\n return false;\n });\n\n if (hasComponents) {\n state.usagePatterns.arrayMappings.add({\n components: node.elements\n ?.map((elem: any) => elem?.value)\n .filter(Boolean),\n line: node.span?.start || 0,\n });\n console.log('πŸ“‹ Array with components found');\n }\n}\n\n/**\n * Analyzes object expressions with component mappings\n */\nexport function analyzeObjectExpression(node: any, state: ParserState): void {\n // Check if object contains component mappings\n const componentProps = node.properties?.filter((prop: any) => {\n if (prop.type === 'KeyValueProperty' && prop.value?.type === 'Identifier') {\n return state.componentNames.has(prop.value.value);\n }\n return false;\n });\n\n if (componentProps?.length > 0) {\n state.usagePatterns.objectMappings.add({\n mappings: componentProps.map((prop: any) => ({\n key: prop.key?.value || '[computed]',\n component: prop.value?.value,\n })),\n line: node.span?.start || 0,\n });\n console.log('πŸ—ΊοΈ Object mapping with components found');\n }\n}\n","import type { ParserState } from '../types';\n\n/**\n * Analyzes React.lazy() imports\n */\nexport function analyzeLazyImport(node: any, state: ParserState): void {\n const arg = node.arguments?.[0];\n if (\n arg?.type === 'ArrowFunctionExpression' &&\n arg.body?.type === 'CallExpression'\n ) {\n const importCall = arg.body;\n if (importCall.callee?.type === 'Import') {\n const source = importCall.arguments?.[0]?.value;\n if (source) {\n state.usagePatterns.lazyImports.add({\n source,\n line: node.span?.start || 0,\n });\n console.log(`πŸ”„ Found lazy import: ${source}`);\n }\n }\n }\n}\n\n/**\n * Analyzes dynamic import() calls\n */\nexport function analyzeDynamicImport(node: any, state: ParserState): void {\n const source = node.arguments?.[0]?.value;\n if (source) {\n state.usagePatterns.dynamicImports.add({\n source,\n line: node.span?.start || 0,\n });\n console.log(`⚑ Found dynamic import: ${source}`);\n }\n}\n","import type { ParserState } from '../types';\n\n/**\n * Analyzes Higher-Order Component (HOC) usage\n */\nexport function analyzeHOCUsage(node: any, state: ParserState): void {\n state.usagePatterns.hocUsage.add({\n function: node.callee?.value || '[unknown]',\n component: node.arguments?.[0]?.value || '[unknown]',\n line: node.span?.start || 0,\n });\n console.log(`🎁 HOC usage found`);\n}\n\n/**\n * Analyzes React.memo() usage\n */\nexport function analyzeMemoUsage(node: any, state: ParserState): void {\n const component = node.arguments?.[0];\n if (\n component?.type === 'Identifier' &&\n state.componentNames.has(component.value)\n ) {\n state.usagePatterns.memoizedComponents.add({\n component: component.value,\n line: node.span?.start || 0,\n });\n console.log(`🧠 Memoized component: ${component.value}`);\n }\n}\n\n/**\n * Analyzes React.forwardRef() usage\n */\nexport function analyzeForwardRefUsage(node: any, state: ParserState): void {\n state.usagePatterns.forwardedRefs.add({\n line: node.span?.start || 0,\n });\n console.log('↗️ ForwardRef usage found');\n}\n\n/**\n * Analyzes ReactDOM.createPortal() usage\n */\nexport function analyzePortalUsage(node: any, state: ParserState): void {\n state.usagePatterns.portalUsage.add({\n line: node.span?.start || 0,\n });\n console.log('πŸŒ€ Portal usage found');\n}\n\n/**\n * Analyzes member expression access (e.g., Foundation.Button)\n */\nexport function analyzeMemberExpression(node: any, state: ParserState): void {\n // Check if this is a namespace access like Foundation.Button\n if (\n node.object?.type === 'Identifier' &&\n state.allIdentifiers.has(node.object.value)\n ) {\n const namespaceName = node.object.value;\n const propertyName = node.property?.value;\n\n if (propertyName) {\n // Track namespace property access\n state.componentNames.add(propertyName);\n console.log(`πŸ”— Namespace access: ${namespaceName}.${propertyName}`);\n }\n }\n}\n\n/**\n * Checks if a node represents HOC pattern\n */\nexport function isHOCPattern(node: any, state: ParserState): boolean {\n // Simple heuristic: function that returns a component-like structure\n return (\n node.callee?.type === 'Identifier' &&\n node.arguments?.some(\n (arg: any) =>\n arg.type === 'Identifier' && state.componentNames.has(arg.value),\n )\n );\n}\n","import type { ParserState, VisitorContext } from '../types';\nimport { analyzeImportDeclaration } from '../patterns/imports';\nimport { analyzeJSXElement, analyzeJSXOpeningElement } from '../patterns/jsx';\nimport { analyzeVariableDeclaration } from '../patterns/variables';\nimport { analyzeConditionalExpression } from '../patterns/conditionals';\nimport {\n analyzeArrayExpression,\n analyzeObjectExpression,\n} from '../patterns/collections';\nimport {\n analyzeLazyImport,\n analyzeDynamicImport,\n} from '../patterns/lazy-dynamic';\nimport {\n analyzeHOCUsage,\n analyzeMemoUsage,\n analyzeForwardRefUsage,\n analyzePortalUsage,\n analyzeMemberExpression,\n isHOCPattern,\n} from '../patterns/advanced';\n\n/**\n * Main AST visitor that routes nodes to appropriate pattern analyzers\n */\nexport function visitNode(\n node: any,\n state: ParserState,\n context: VisitorContext = {},\n): void {\n if (!node) return;\n\n switch (node.type) {\n case 'Module':\n // Process imports first (they populate componentNames)\n if (node.body) {\n for (const item of node.body) {\n if (item.type === 'ImportDeclaration') {\n visitNode(item, state, context);\n }\n }\n // Then process everything else\n for (const item of node.body) {\n if (item.type !== 'ImportDeclaration') {\n visitNode(item, state, { ...context, parent: node });\n }\n }\n }\n break;\n\n case 'ImportDeclaration':\n analyzeImportDeclaration(node, state);\n break;\n\n case 'CallExpression':\n analyzeCallExpression(node, state, context);\n break;\n\n case 'VariableDeclaration':\n analyzeVariableDeclaration(node, state);\n visitChildren(node, state, context);\n break;\n\n case 'JSXElement':\n case 'JSXFragment':\n analyzeJSXElement(node, state);\n visitChildren(node, state, context);\n break;\n\n case 'JSXOpeningElement':\n analyzeJSXOpeningElement(node, state, context.parent);\n break;\n\n case 'ArrayExpression':\n analyzeArrayExpression(node, state);\n visitChildren(node, state, context);\n break;\n\n case 'ObjectExpression':\n analyzeObjectExpression(node, state);\n visitChildren(node, state, context);\n break;\n\n case 'MemberExpression':\n analyzeMemberExpression(node, state);\n visitChildren(node, state, context);\n break;\n\n case 'ConditionalExpression':\n analyzeConditionalExpression(node, state);\n visitChildren(node, state, context);\n break;\n\n case 'FunctionDeclaration':\n case 'ClassDeclaration':\n case 'ExpressionStatement':\n case 'ReturnStatement':\n case 'VariableDeclarator':\n case 'ArrowFunctionExpression':\n case 'FunctionExpression':\n visitChildren(node, state, { ...context, parent: node });\n break;\n\n default:\n visitChildren(node, state, context);\n break;\n }\n}\n\n/**\n * Analyzes call expressions and routes to specific analyzers\n */\nfunction analyzeCallExpression(\n node: any,\n state: ParserState,\n context: VisitorContext,\n): void {\n // Analyze lazy imports\n if (\n node.callee?.value === 'lazy' ||\n (node.callee?.object?.value === 'React' &&\n node.callee?.property?.value === 'lazy')\n ) {\n analyzeLazyImport(node, state);\n }\n\n // Analyze dynamic imports\n if (node.callee?.type === 'Import') {\n analyzeDynamicImport(node, state);\n }\n\n // Analyze HOC patterns\n if (isHOCPattern(node, state)) {\n analyzeHOCUsage(node, state);\n }\n\n // Analyze React.memo, React.forwardRef\n if (node.callee?.object?.value === 'React') {\n if (node.callee?.property?.value === 'memo') {\n analyzeMemoUsage(node, state);\n } else if (node.callee?.property?.value === 'forwardRef') {\n analyzeForwardRefUsage(node, state);\n }\n }\n\n // Analyze createPortal\n if (\n node.callee?.property?.value === 'createPortal' ||\n node.callee?.value === 'createPortal'\n ) {\n analyzePortalUsage(node, state);\n }\n\n visitChildren(node, state, context);\n}\n\n/**\n * Visits all children of a node\n */\nfunction visitChildren(\n node: any,\n state: ParserState,\n context: VisitorContext,\n): void {\n if (!node) return;\n\n for (const key in node) {\n const value = node[key];\n\n if (Array.isArray(value)) {\n for (const item of value) {\n if (item && typeof item === 'object') {\n visitNode(item, state, { ...context, parent: node });\n }\n }\n } else if (value && typeof value === 'object' && value.type) {\n visitNode(value, state, { ...context, parent: node });\n }\n }\n}\n","import type { ParserState, UsageReport } from '../types';\n\n/**\n * Generates a comprehensive usage report from parser state\n */\nexport function generateReport(state: ParserState): UsageReport {\n const report: UsageReport = {\n summary: {\n totalImports:\n state.usagePatterns.defaultImports.size +\n state.usagePatterns.namedImports.size +\n state.usagePatterns.namespaceImports.size,\n totalComponents: state.componentNames.size,\n totalUsagePatterns: calculateTotalPatterns(state),\n },\n patterns: {\n imports: {\n default: Array.from(state.usagePatterns.defaultImports),\n named: Array.from(state.usagePatterns.namedImports),\n namespace: Array.from(state.usagePatterns.namespaceImports),\n aliased: Array.from(state.usagePatterns.aliasedImports.values()),\n },\n usage: {\n jsx: Array.from(state.usagePatterns.jsxUsage.values()),\n variables: Array.from(\n state.usagePatterns.variableAssignments.entries(),\n ).map(([key, value]) => ({\n variable: key,\n assignment: value.assignment,\n })),\n destructuring: Array.from(state.usagePatterns.destructuredUsage),\n conditional: Array.from(state.usagePatterns.conditionalUsage),\n arrays: Array.from(state.usagePatterns.arrayMappings),\n objects: Array.from(state.usagePatterns.objectMappings),\n },\n advanced: {\n lazy: Array.from(state.usagePatterns.lazyImports),\n dynamic: Array.from(state.usagePatterns.dynamicImports),\n hoc: Array.from(state.usagePatterns.hocUsage),\n memo: Array.from(state.usagePatterns.memoizedComponents),\n forwardRef: Array.from(state.usagePatterns.forwardedRefs),\n portal: Array.from(state.usagePatterns.portalUsage),\n },\n props: Array.from(state.usagePatterns.propsAnalysis.entries()).map(\n ([component, analysis]) => ({\n component,\n analysis,\n }),\n ),\n },\n components: Array.from(state.componentNames).sort(),\n };\n\n return report;\n}\n\n/**\n * Calculates total number of usage patterns found\n */\nfunction calculateTotalPatterns(state: ParserState): number {\n let sum = 0;\n const patterns = state.usagePatterns;\n\n for (const key in patterns) {\n const pattern = (patterns as any)[key];\n if (pattern instanceof Set) {\n sum += pattern.size;\n } else if (pattern instanceof Map) {\n sum += pattern.size;\n }\n }\n\n return sum;\n}\n","import { parseSync } from '@swc/core';\nimport fs from 'node:fs';\nimport type { ParseOptions, UsageReport } from './types';\nimport { createState } from './core/state';\nimport { visitNode } from './core/visitor';\nimport { generateReport } from './core/report';\n\n/**\n * Parses code and analyzes React component usage patterns\n */\nexport function parseCode(\n code: string,\n options: ParseOptions = {},\n): UsageReport {\n const state = createState();\n\n // Parse code to AST\n const ast = parseSync(code, {\n syntax: 'typescript',\n tsx: true,\n decorators: true,\n dynamicImport: true,\n });\n\n // Visit all nodes and analyze patterns\n visitNode(ast, state);\n\n // Generate report\n const report = generateReport(state);\n\n // Optional: Filter by library if specified\n if (options.libraryName) {\n return filterReportByLibrary(report, options.libraryName);\n }\n\n return report;\n}\n\n/**\n * Parses a file and analyzes React component usage patterns\n */\nexport function parseFile(\n filePath: string,\n options: ParseOptions = {},\n): UsageReport | null {\n console.log(`\\nπŸ“ Analyzing: ${filePath}`);\n\n try {\n const code = fs.readFileSync(filePath, 'utf8');\n return parseCode(code, options);\n } catch (error: any) {\n console.error(`❌ Error parsing ${filePath}:`, error.message);\n return null;\n }\n}\n\n/**\n * Filters report to only include imports/usage from a specific library\n */\nfunction filterReportByLibrary(\n report: UsageReport,\n libraryName: string,\n): UsageReport {\n const isFromLibrary = (source: string) =>\n source.startsWith(libraryName) || source.includes(libraryName);\n\n return {\n ...report,\n patterns: {\n imports: {\n default: report.patterns.imports.default.filter((imp) =>\n isFromLibrary(imp.source),\n ),\n named: report.patterns.imports.named.filter((imp) =>\n isFromLibrary(imp.source),\n ),\n namespace: report.patterns.imports.namespace.filter((imp) =>\n isFromLibrary(imp.source),\n ),\n aliased: report.patterns.imports.aliased.filter((imp) =>\n isFromLibrary(imp.source),\n ),\n },\n usage: report.patterns.usage,\n advanced: {\n lazy: report.patterns.advanced.lazy.filter((imp) =>\n isFromLibrary(imp.source),\n ),\n dynamic: report.patterns.advanced.dynamic.filter((imp) =>\n isFromLibrary(imp.source),\n ),\n hoc: report.patterns.advanced.hoc,\n memo: report.patterns.advanced.memo,\n forwardRef: report.patterns.advanced.forwardRef,\n portal: report.patterns.advanced.portal,\n },\n props: report.patterns.props,\n },\n };\n}\n\n// Re-export types for convenience\nexport type { UsageReport, ParseOptions } from './types';\n","import type { UsageReport } from '../swc-parser';\n\nexport interface ComponentUsage {\n name: string;\n source: string;\n count: number;\n files: Set<string>;\n}\n\nexport interface PatternCount {\n patternType: string;\n displayName: string;\n count: number;\n}\n\nexport interface AggregatedReport {\n filesAnalyzed: number;\n totalImports: number;\n totalComponents: number;\n totalUsagePatterns: number;\n patternCounts: PatternCount[];\n componentUsage: Map<string, ComponentUsage>;\n topComponents: ComponentUsage[];\n allComponents: string[];\n reports: UsageReport[];\n}\n\nexport function aggregateReports(reports: UsageReport[]): AggregatedReport {\n const componentUsageMap = new Map<string, ComponentUsage>();\n let totalImports = 0;\n let totalUsagePatterns = 0;\n const patternCountMap = new Map<string, number>();\n\n // Aggregate data from all reports\n for (const report of reports) {\n totalImports += report.summary.totalImports;\n totalUsagePatterns += report.summary.totalUsagePatterns;\n\n // Aggregate component usage from JSX patterns\n for (const jsx of report.patterns.usage.jsx) {\n const key = jsx.component;\n const existing = componentUsageMap.get(key);\n\n if (existing) {\n existing.count++;\n } else {\n // Try to find the source from imports\n const source = findComponentSource(jsx.component, report);\n componentUsageMap.set(key, {\n name: jsx.component,\n source,\n count: 1,\n files: new Set(),\n });\n }\n }\n\n // Count patterns\n countPatterns(report, patternCountMap);\n }\n\n // Convert to arrays and sort\n const topComponents = Array.from(componentUsageMap.values()).sort(\n (a, b) => b.count - a.count,\n );\n\n const allComponents = Array.from(componentUsageMap.keys()).sort();\n\n const patternCounts = Array.from(patternCountMap.entries())\n .map(([type, count]) => ({\n patternType: type,\n displayName: getPatternDisplayName(type),\n count,\n }))\n .sort((a, b) => b.count - a.count);\n\n return {\n filesAnalyzed: reports.length,\n totalImports,\n totalComponents: componentUsageMap.size,\n totalUsagePatterns,\n patternCounts,\n componentUsage: componentUsageMap,\n topComponents,\n allComponents,\n reports,\n };\n}\n\nfunction findComponentSource(\n componentName: string,\n report: UsageReport,\n): string {\n // Check named imports\n const namedImport = report.patterns.imports.named.find(\n (imp) => imp.name === componentName,\n );\n if (namedImport) return namedImport.source;\n\n // Check default imports\n const defaultImport = report.patterns.imports.default.find(\n (imp) => imp.name === componentName,\n );\n if (defaultImport) return defaultImport.source;\n\n // Check aliased imports\n const aliasedImport = report.patterns.imports.aliased.find(\n (imp) => imp.local === componentName,\n );\n if (aliasedImport) return aliasedImport.source;\n\n return 'unknown';\n}\n\nfunction countPatterns(report: UsageReport, patternMap: Map<string, number>) {\n // Count import patterns\n increment(\n patternMap,\n 'imports.default',\n report.patterns.imports.default.length,\n );\n increment(patternMap, 'imports.named', report.patterns.imports.named.length);\n increment(\n patternMap,\n 'imports.namespace',\n report.patterns.imports.namespace.length,\n );\n increment(\n patternMap,\n 'imports.aliased',\n report.patterns.imports.aliased.length,\n );\n\n // Count usage patterns\n increment(patternMap, 'usage.jsx', report.patterns.usage.jsx.length);\n increment(\n patternMap,\n 'usage.variables',\n report.patterns.usage.variables.length,\n );\n increment(\n patternMap,\n 'usage.destructuring',\n report.patterns.usage.destructuring.length,\n );\n increment(\n patternMap,\n 'usage.conditional',\n report.patterns.usage.conditional.length,\n );\n increment(patternMap, 'usage.arrays', report.patterns.usage.arrays.length);\n increment(patternMap, 'usage.objects', report.patterns.usage.objects.length);\n\n // Count advanced patterns\n increment(patternMap, 'advanced.lazy', report.patterns.advanced.lazy.length);\n increment(\n patternMap,\n 'advanced.dynamic',\n report.patterns.advanced.dynamic.length,\n );\n increment(patternMap, 'advanced.hoc', report.patterns.advanced.hoc.length);\n increment(patternMap, 'advanced.memo', report.patterns.advanced.memo.length);\n increment(\n patternMap,\n 'advanced.forwardRef',\n report.patterns.advanced.forwardRef.length,\n );\n increment(\n patternMap,\n 'advanced.portal',\n report.patterns.advanced.portal.length,\n );\n}\n\nfunction increment(map: Map<string, number>, key: string, value: number) {\n map.set(key, (map.get(key) || 0) + value);\n}\n\nfunction getPatternDisplayName(patternType: string): string {\n const displayNames: Record<string, string> = {\n 'imports.default': 'Default Imports',\n 'imports.named': 'Named Imports',\n 'imports.namespace': 'Namespace Imports',\n 'imports.aliased': 'Aliased Imports',\n 'usage.jsx': 'JSX Usage',\n 'usage.variables': 'Variable Assignments',\n 'usage.destructuring': 'Destructuring',\n 'usage.conditional': 'Conditional Usage',\n 'usage.arrays': 'Array Mappings',\n 'usage.objects': 'Object Mappings',\n 'advanced.lazy': 'Lazy Loading',\n 'advanced.dynamic': 'Dynamic Imports',\n 'advanced.hoc': 'Higher-Order Components',\n 'advanced.memo': 'Memoized Components',\n 'advanced.forwardRef': 'Forward Refs',\n 'advanced.portal': 'Portal Usage',\n };\n return displayNames[patternType] || patternType;\n}\n","import chalk from 'chalk';\nimport path from 'node:path';\nimport type { UsageReport } from '../swc-parser';\n\nexport function printVerbose(filePath: string, report: UsageReport) {\n const relativePath = path.relative(process.cwd(), filePath);\n\n console.log(chalk.gray(`[VERBOSE] Analyzing: ${relativePath}`));\n\n // Print JSX usage\n for (const jsx of report.patterns.usage.jsx) {\n console.log(chalk.gray(`[VERBOSE] Found JSX Usage: <${jsx.component}>`));\n }\n\n // Print named imports\n for (const imp of report.patterns.imports.named) {\n console.log(\n chalk.gray(`[VERBOSE] Found import: ${imp.name} from ${imp.source}`),\n );\n }\n\n // Print default imports\n for (const imp of report.patterns.imports.default) {\n console.log(\n chalk.gray(\n `[VERBOSE] Found default import: ${imp.name} from ${imp.source}`,\n ),\n );\n }\n\n // Print namespace imports\n for (const imp of report.patterns.imports.namespace) {\n console.log(\n chalk.gray(\n `[VERBOSE] Found namespace import: ${imp.name} from ${imp.source}`,\n ),\n );\n }\n\n // Print aliased imports\n for (const imp of report.patterns.imports.aliased) {\n console.log(\n chalk.gray(\n `[VERBOSE] Found aliased import: ${imp.imported} as ${imp.local} from ${imp.source}`,\n ),\n );\n }\n\n // Print object mappings\n for (const obj of report.patterns.usage.objects) {\n for (const mapping of obj.mappings) {\n console.log(\n chalk.gray(\n `[VERBOSE] Found Object mapping with Component: ${mapping.component}`,\n ),\n );\n }\n }\n\n // Print conditional usage\n for (const cond of report.patterns.usage.conditional) {\n console.log(\n chalk.gray(`[VERBOSE] Found Conditional usage: ${cond.consequent}`),\n );\n }\n\n // Print array mappings\n for (const arr of report.patterns.usage.arrays) {\n console.log(\n chalk.gray(\n `[VERBOSE] Found Array mapping with components: ${arr.components.join(', ')}`,\n ),\n );\n }\n\n // Print variable assignments\n for (const variable of report.patterns.usage.variables) {\n console.log(\n chalk.gray(\n `[VERBOSE] Found Variable assignment: ${variable.variable} = ${variable.assignment}`,\n ),\n );\n }\n\n // Print destructuring\n for (const destructure of report.patterns.usage.destructuring) {\n console.log(\n chalk.gray(\n `[VERBOSE] Found Destructuring: ${destructure.property} from ${destructure.source}`,\n ),\n );\n }\n\n // Print lazy imports\n for (const lazy of report.patterns.advanced.lazy) {\n console.log(chalk.gray(`[VERBOSE] Found Lazy import: ${lazy.source}`));\n }\n\n // Print dynamic imports\n for (const dynamic of report.patterns.advanced.dynamic) {\n console.log(\n chalk.gray(`[VERBOSE] Found Dynamic import: ${dynamic.source}`),\n );\n }\n\n // Print HOC usage\n for (const hoc of report.patterns.advanced.hoc) {\n console.log(\n chalk.gray(`[VERBOSE] Found HOC: ${hoc.function}(${hoc.component})`),\n );\n }\n\n // Print memo\n for (const memo of report.patterns.advanced.memo) {\n console.log(\n chalk.gray(`[VERBOSE] Found Memoized component: ${memo.component}`),\n );\n }\n\n // Print forwardRef\n if (report.patterns.advanced.forwardRef.length > 0) {\n console.log(chalk.gray(`[VERBOSE] Found Forward Ref usage`));\n }\n\n // Print portal\n if (report.patterns.advanced.portal.length > 0) {\n console.log(chalk.gray(`[VERBOSE] Found Portal usage`));\n }\n\n // Print line separator\n console.log(chalk.gray(`[VERBOSE] ${'─'.repeat(80)}`));\n}\n","import chalk from 'chalk';\nimport type { AggregatedReport } from './aggregator';\n\nexport function printSummary(\n aggregated: AggregatedReport,\n elapsedTimeSeconds: number,\n) {\n console.log(\n chalk.green(\n `[SUMMARY] Analysis completed successfully in ${elapsedTimeSeconds.toFixed(1)}s`,\n ),\n );\n console.log(\n chalk.green(\n `[SUMMARY] Files analyzed: ${aggregated.filesAnalyzed.toLocaleString()}`,\n ),\n );\n console.log(\n chalk.green(\n `[SUMMARY] Total imports: ${aggregated.totalImports.toLocaleString()}`,\n ),\n );\n console.log(\n chalk.green(\n `[SUMMARY] Total components: ${aggregated.totalComponents.toLocaleString()}`,\n ),\n );\n}\n","import chalk from 'chalk';\nimport type { AggregatedReport } from './aggregator';\n\nexport function printDetails(aggregated: AggregatedReport) {\n console.log(\n chalk.cyan(\n `[DETAILS] Total usage patterns: ${aggregated.totalUsagePatterns.toLocaleString()}`,\n ),\n );\n\n // Print each pattern type count\n for (const pattern of aggregated.patternCounts) {\n if (pattern.count > 0) {\n console.log(\n chalk.cyan(\n `[DETAILS] ${pattern.displayName}: ${pattern.count.toLocaleString()}`,\n ),\n );\n }\n }\n}\n","import chalk from 'chalk';\n\nexport interface ChartData {\n label: string;\n value: number;\n}\n\nexport interface ChartOptions {\n maxWidth?: number;\n showValues?: boolean;\n barChar?: string;\n emptyChar?: string;\n}\n\nexport function renderBarChart(data: ChartData[], options: ChartOptions = {}) {\n const {\n maxWidth = 50,\n showValues = true,\n barChar = 'β–ˆ',\n emptyChar = 'β–‘',\n } = options;\n\n if (data.length === 0) {\n console.log(chalk.gray(' No data to display'));\n return;\n }\n\n // Find max value for scaling\n const maxValue = Math.max(...data.map((d) => d.value));\n if (maxValue === 0) {\n console.log(chalk.gray(' All values are zero'));\n return;\n }\n\n // Find longest label for alignment\n const maxLabelLength = Math.max(...data.map((d) => d.label.length));\n\n // Render each bar\n for (const item of data) {\n const percentage = item.value / maxValue;\n const barLength = Math.round(percentage * maxWidth);\n const emptyLength = maxWidth - barLength;\n\n // Pad label\n const paddedLabel = item.label.padEnd(maxLabelLength, ' ');\n\n // Build bar\n const bar =\n chalk.green(barChar.repeat(barLength)) +\n chalk.gray(emptyChar.repeat(emptyLength));\n\n // Build value string\n const valueStr = showValues ? ` ${item.value.toLocaleString()}` : '';\n\n console.log(`${paddedLabel} ${bar}${valueStr}\\n`);\n }\n}\n","import chalk from 'chalk';\nimport Table from 'cli-table3';\nimport type { AggregatedReport, ComponentUsage } from './aggregator';\nimport { renderBarChart } from './chart-renderer';\n\nexport function printTopComponents(\n aggregated: AggregatedReport,\n mode: 'log' | 'table' | 'chart',\n topN: number = 10,\n) {\n const topComponents = aggregated.topComponents.slice(0, topN);\n\n if (mode === 'log') {\n printTopComponentsLog(topComponents);\n } else if (mode === 'table') {\n printTopComponentsTable(topComponents);\n } else if (mode === 'chart') {\n printTopComponentsChart(topComponents);\n }\n}\n\nfunction printTopComponentsLog(components: ComponentUsage[]) {\n console.log(chalk.yellow.bold(`\\nπŸ† Top Components\\n`));\n\n if (components.length === 0) {\n console.log(chalk.gray(' No components found'));\n return;\n }\n\n components.forEach((comp, idx) => {\n const rank = idx + 1;\n const emoji =\n rank === 1 ? 'πŸ₯‡' : rank === 2 ? 'πŸ₯ˆ' : rank === 3 ? 'πŸ₯‰' : ' ';\n const sourceStr = comp.source !== 'unknown' ? ` from ${comp.source}` : '';\n console.log(\n chalk.yellow(\n `[TOP-COMPONENTS] ${emoji} ${rank}. ${comp.name}${sourceStr}: ${comp.count} uses`,\n ),\n );\n });\n}\n\nfunction printTopComponentsTable(components: ComponentUsage[]) {\n console.log(chalk.yellow(`[TOP-COMPONENTS] TABLE`));\n\n if (components.length === 0) {\n console.log(chalk.gray(' No components found'));\n return;\n }\n\n const table = new Table({\n head: ['Rank', 'Component', 'Source', 'Count'],\n style: {\n head: ['cyan'],\n border: ['gray'],\n },\n });\n\n components.forEach((comp, idx) => {\n const rank = idx + 1;\n const emoji =\n rank === 1 ? 'πŸ₯‡' : rank === 2 ? 'πŸ₯ˆ' : rank === 3 ? 'πŸ₯‰' : `${rank}.`;\n table.push([emoji, comp.name, comp.source, comp.count.toString()]);\n });\n\n console.log(table.toString());\n}\n\nfunction printTopComponentsChart(components: ComponentUsage[]) {\n console.log(chalk.yellow(`[TOP-COMPONENTS] CHART`));\n\n if (components.length === 0) {\n console.log(chalk.gray(' No components found'));\n return;\n }\n\n const data = components.map((comp) => ({\n label: comp.name,\n value: comp.count,\n }));\n\n renderBarChart(data, { maxWidth: 50 });\n}\n","import chalk from 'chalk';\nimport Table from 'cli-table3';\nimport type { AggregatedReport, ComponentUsage } from './aggregator';\nimport { renderBarChart } from './chart-renderer';\n\nexport function printComponentsUsage(\n aggregated: AggregatedReport,\n mode: 'table' | 'chart',\n) {\n const components = aggregated.topComponents;\n\n if (mode === 'table') {\n printComponentsUsageTable(components);\n } else if (mode === 'chart') {\n printComponentsUsageChart(components);\n }\n}\n\nfunction printComponentsUsageTable(components: ComponentUsage[]) {\n console.log(chalk.magenta.bold(`\\nβš›οΈ Components Usage\\n`));\n\n if (components.length === 0) {\n console.log(chalk.gray(' No components found'));\n return;\n }\n\n const table = new Table({\n head: ['Component', 'Source', 'Version', 'Count'],\n style: {\n head: ['cyan'],\n border: ['gray'],\n },\n });\n\n components.forEach((comp) => {\n table.push([comp.name, comp.source, '0.0.0', comp.count.toString()]);\n });\n\n console.log(table.toString());\n}\n\nfunction printComponentsUsageChart(components: ComponentUsage[]) {\n console.log(chalk.magenta.bold(`\\nβš›οΈ Components Usage\\n`));\n\n if (components.length === 0) {\n console.log(chalk.gray(' No components found'));\n return;\n }\n\n const data = components.map((comp) => ({\n label: comp.name,\n value: comp.count,\n }));\n\n renderBarChart(data, { maxWidth: 50 });\n}\n","import chalk from 'chalk';\nimport Table from 'cli-table3';\nimport type { AggregatedReport, PatternCount } from './aggregator';\nimport { renderBarChart } from './chart-renderer';\n\nexport function printPatterns(\n aggregated: AggregatedReport,\n mode: 'table' | 'chart',\n) {\n const patterns = aggregated.patternCounts.filter((p) => p.count > 0);\n\n if (mode === 'table') {\n printPatternsTable(patterns);\n } else if (mode === 'chart') {\n printPatternsChart(patterns);\n }\n}\n\nfunction printPatternsTable(patterns: PatternCount[]) {\n console.log(chalk.blue.bold(`\\nπŸ” Code Patterns\\n`));\n\n if (patterns.length === 0) {\n console.log(chalk.gray(' No patterns found'));\n return;\n }\n\n const table = new Table({\n head: ['Pattern', 'Count'],\n style: {\n head: ['cyan'],\n border: ['gray'],\n },\n });\n\n patterns.forEach((pattern) => {\n table.push([pattern.displayName, pattern.count.toString()]);\n });\n\n console.log(table.toString());\n}\n\nfunction printPatternsChart(patterns: PatternCount[]) {\n console.log(chalk.blue(`[PATTERNS] CHART`));\n\n if (patterns.length === 0) {\n console.log(chalk.gray(' No patterns found'));\n return;\n }\n\n const data = patterns.map((pattern) => ({\n label: pattern.displayName,\n value: pattern.count,\n }));\n\n renderBarChart(data, { maxWidth: 50 });\n}\n","import { Command } from 'commander';\nimport { glob } from 'glob';\nimport ora from 'ora';\nimport chalk from 'chalk';\nimport { parseFile } from '../swc-parser';\nimport type { UsageReport } from '../swc-parser';\nimport { aggregateReports } from '../utils/aggregator';\nimport { printVerbose } from '../utils/print-verbose';\nimport { printSummary } from '../utils/print-summary';\nimport { printDetails } from '../utils/print-details';\nimport { printTopComponents } from '../utils/print-top-components';\nimport { printComponentsUsage } from '../utils/print-components-usage';\nimport { printPatterns } from '../utils/print-patterns';\n\ninterface ScanOptions {\n verbose?: boolean;\n summary?: string | boolean;\n details?: boolean;\n topComponents?: string;\n componentsUsage?: string;\n patterns?: string;\n output?: string;\n}\n\ninterface NormalizedScanOptions {\n verbose: boolean;\n summary: 'log' | false;\n details: boolean;\n topComponents: 'log' | 'table' | 'chart';\n componentsUsage: 'table' | 'chart';\n patterns: 'table' | 'chart';\n output?: string;\n}\n\nexport function registerScanCommand(program: Command) {\n program\n .command('scan')\n .description('Scan and analyze local files')\n .argument(\n '[pattern]',\n 'Glob pattern for files to analyze (defaults to current directory recursively)',\n '**/*.{tsx,jsx,ts,js}',\n )\n .option(\n '--verbose',\n 'Show detailed file-by-file analysis with every pattern found',\n false,\n )\n .option('--summary [mode]', 'Show summary stats (log, false)', 'log')\n .option('--details', 'Show detailed pattern counts')\n .option(\n '--top-components [mode]',\n 'Show top components (log, table, chart)',\n 'log',\n )\n .option(\n '--components-usage [mode]',\n 'Show components table/chart (table, chart)',\n 'table',\n )\n .option(\n '--patterns [mode]',\n 'Show patterns table/chart (table, chart)',\n 'table',\n )\n .action(async (pattern: string, options: ScanOptions) => {\n const normalizedOptions = normalizeOptions(options);\n\n await executeScan(pattern, normalizedOptions);\n });\n}\n\nfunction normalizeOptions(options: ScanOptions): NormalizedScanOptions {\n return {\n verbose: options.verbose || false,\n summary:\n options.summary === false || options.summary === 'false' ? false : 'log',\n details: options.details || false,\n topComponents: (options.topComponents as any) || 'log',\n componentsUsage: (options.componentsUsage as any) || 'table',\n patterns: (options.patterns as any) || 'table',\n output: options.output,\n };\n}\n\nasync function executeScan(pattern: string, options: NormalizedScanOptions) {\n const startTime = Date.now();\n const spinner = ora('Finding files...').start();\n\n try {\n // Find files matching pattern\n const files = await glob(pattern, {\n ignore: ['node_modules/**', 'dist/**', 'build/**', '.git/**'],\n absolute: true,\n });\n\n if (files.length === 0) {\n spinner.fail(chalk.red(`No files found matching pattern: ${pattern}`));\n return;\n }\n\n spinner.succeed(chalk.green(`Found ${files.length} files`));\n\n // Analyze all files\n spinner.start('Analyzing files...');\n const reports: UsageReport[] = [];\n\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n\n if (!options.verbose) {\n spinner.text = `Analyzing files... (${i + 1}/${files.length})`;\n }\n\n try {\n const report = parseFile(file);\n if (report) {\n reports.push(report);\n\n // Print verbose output immediately after parsing each file\n if (options.verbose) {\n spinner.stop();\n printVerbose(file, report);\n spinner.start();\n }\n }\n } catch (error: any) {\n spinner.stop();\n console.error(chalk.red(`Error analyzing ${file}: ${error.message}`));\n spinner.start();\n }\n }\n\n spinner.succeed(\n chalk.green(`Analysis complete! Analyzed ${reports.length} files`),\n );\n\n // Calculate elapsed time\n const elapsedTime = (Date.now() - startTime) / 1000;\n\n // Aggregate reports\n const aggregated = aggregateReports(reports);\n\n // Print outputs based on options\n console.log(''); // Empty line before output sections\n\n if (options.summary) {\n printSummary(aggregated, elapsedTime);\n }\n\n if (options.details) {\n console.log(''); // Empty line between sections\n printDetails(aggregated);\n }\n\n if (options.topComponents) {\n console.log(''); // Empty line between sections\n printTopComponents(aggregated, options.topComponents);\n }\n\n if (options.componentsUsage) {\n console.log(''); // Empty line between sections\n printComponentsUsage(aggregated, options.componentsUsage);\n }\n\n if (options.patterns) {\n console.log(''); // Empty line between sections\n printPatterns(aggregated, options.patterns);\n }\n } catch (error: any) {\n spinner.fail(chalk.red('Analysis failed: ' + error.message));\n console.error(error);\n\n process.exit(1);\n }\n}\n","{\n \"name\": \"hermex\",\n \"version\": \"1.0.0-beta.1\",\n \"description\": \"SWC-based AST parser for analyzing code and React component usage patterns across entire codebases\",\n \"homepage\": \"https://github.com/Gallevy/hermex\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/Gallevy/hermex.git\"\n },\n \"main\": \"./dist/cli.js\",\n \"bin\": {\n \"react-usage-analyzer\": \"./dist/cli.js\",\n \"rua\": \"./dist/cli.js\"\n },\n \"files\": [\n \"dist\",\n \"README.md\",\n \"LICENSE.md\"\n ],\n \"scripts\": {\n \"check\": \"biome check\",\n \"format\": \"biome format --write\",\n \"format:ci\": \"biome ci\",\n \"lint\": \"oxlint\",\n \"lint:ci\": \"oxlint\",\n \"test\": \"vitest\",\n \"test:ci\": \"vitest run\",\n \"build\": \"tsup\",\n \"build:ci\": \"tsup --clean\",\n \"dev:scan\": \"pnpm run build && node dist/cli.js scan \\\"code-examples/**/*.tsx\\\"\"\n },\n \"keywords\": [\n \"hermex\",\n \"react\",\n \"ast\",\n \"parser\",\n \"swc\",\n \"component\",\n \"analysis\",\n \"usage\",\n \"patterns\",\n \"cli\"\n ],\n \"dependencies\": {\n \"@semantic-release/github\": \"^12.0.2\",\n \"@swc/core\": \"^1.3.107\",\n \"@swc/types\": \"^0.1.5\",\n \"@yarnpkg/lockfile\": \"^1.1.0\",\n \"chalk\": \"^4.1.2\",\n \"cli-table3\": \"^0.6.5\",\n \"commander\": \"^14.0.2\",\n \"glob\": \"^13.0.0\",\n \"js-yaml\": \"^4.1.1\",\n \"ora\": \"^5.4.1\",\n \"simple-git\": \"^3.30.0\",\n \"tmp\": \"^0.2.5\"\n },\n \"devDependencies\": {\n \"@biomejs/biome\": \"2.3.8\",\n \"@semantic-release/changelog\": \"^6.0.3\",\n \"@semantic-release/commit-analyzer\": \"^13.0.1\",\n \"@semantic-release/git\": \"^10.0.1\",\n \"@semantic-release/npm\": \"^13.1.2\",\n \"@semantic-release/release-notes-generator\": \"^14.1.0\",\n \"@types/js-yaml\": \"^4.0.9\",\n \"@types/node\": \"^24.10.1\",\n \"@types/tmp\": \"^0.2.6\",\n \"oxlint\": \"^1.30.0\",\n \"semantic-release\": \"^25.0.2\",\n \"tsup\": \"^8.5.1\",\n \"typescript\": \"^5.3.3\",\n \"vitest\": \"^4.0.14\"\n },\n \"engines\": {\n \"node\": \">=24.11.1\"\n },\n \"author\": \"Gallevy\",\n \"license\": \"MIT\"\n}\n","#!/usr/bin/env node\n\nimport { Command } from 'commander';\nimport { registerScanCommand } from './commands/scan';\nimport packageJson from '../package.json';\n\nexport const program = new Command();\n\nprogram\n .name('hermex')\n .description('Analyze React component usage patterns in your codebase')\n .version(packageJson.version);\n\nregisterScanCommand(program);\n\nprogram.parse(process.argv);\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hermex",
3
- "version": "0.0.1-beta.1",
3
+ "version": "1.0.0",
4
4
  "description": "SWC-based AST parser for analyzing code and React component usage patterns across entire codebases",
5
5
  "homepage": "https://github.com/Gallevy/hermex",
6
6
  "repository": {
@@ -17,6 +17,18 @@
17
17
  "README.md",
18
18
  "LICENSE.md"
19
19
  ],
20
+ "scripts": {
21
+ "check": "biome check",
22
+ "format": "biome format --write",
23
+ "format:ci": "biome ci",
24
+ "lint": "oxlint",
25
+ "lint:ci": "oxlint",
26
+ "test": "vitest",
27
+ "test:ci": "vitest run",
28
+ "build": "tsup",
29
+ "build:ci": "tsup --clean",
30
+ "dev:scan": "pnpm run build && node dist/cli.js scan \"code-examples/**/*.tsx\""
31
+ },
20
32
  "keywords": [
21
33
  "hermex",
22
34
  "react",
@@ -63,17 +75,5 @@
63
75
  "node": ">=24.11.1"
64
76
  },
65
77
  "author": "Gallevy",
66
- "license": "MIT",
67
- "scripts": {
68
- "check": "biome check",
69
- "format": "biome format --write",
70
- "format:ci": "biome ci",
71
- "lint": "oxlint",
72
- "lint:ci": "oxlint",
73
- "test": "vitest",
74
- "test:ci": "vitest run",
75
- "build": "tsup",
76
- "build:ci": "tsup --clean",
77
- "dev:scan": "pnpm run build && node dist/cli.js scan \"code-examples/**/*.tsx\""
78
- }
79
- }
78
+ "license": "MIT"
79
+ }