@rayburst/cli 0.3.7 → 0.4.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.
@@ -671,26 +671,29 @@ function detectConfigBasedComponents(sourceFile, nodes, nodeMap, edges, projectP
671
671
  const routerNode = createRouterDecisionNode(relativePath, gitHash, componentPaths.length);
672
672
  nodes.push(routerNode);
673
673
  nodeMap.set(routerNode.id, routerNode);
674
- console.log(`[DEBUG] Created router node: ${routerNode.id}`);
675
674
  const routerProviderExternalId = "external::@tanstack/react-router::RouterProvider";
676
675
  const routerProviderNode = externalNodeMap.get(routerProviderExternalId);
677
676
  if (routerProviderNode) {
678
677
  const providerToRouterEdgeId = `e-${routerProviderNode.id}-${routerNode.id}`;
679
678
  if (!edges.find((e) => e.id === providerToRouterEdgeId)) {
680
- edges.push({
679
+ const newEdge = {
681
680
  id: providerToRouterEdgeId,
682
681
  source: routerProviderNode.id,
683
682
  target: routerNode.id,
684
683
  type: "floating",
685
684
  label: "router prop"
686
- });
685
+ };
686
+ edges.push(newEdge);
687
687
  totalEdgesCreated++;
688
- console.log(`[DEBUG] Created edge: RouterProvider -> Router`);
689
- console.log(`[DEBUG] Source ID: ${routerProviderNode.id}`);
690
- console.log(`[DEBUG] Target ID: ${routerNode.id}`);
688
+ console.log(`[ROUTER-EDGE] Created edge from RouterProvider to Router`);
689
+ console.log(`[ROUTER-EDGE] Edge ID: ${newEdge.id}`);
690
+ console.log(`[ROUTER-EDGE] Source: ${newEdge.source}`);
691
+ console.log(`[ROUTER-EDGE] Target: ${newEdge.target}`);
692
+ console.log(`[ROUTER-EDGE] Total edges now: ${edges.length}`);
691
693
  }
692
694
  } else {
693
- console.warn("[DEBUG] RouterProvider external node not found, falling back to App -> Router edge");
695
+ console.warn("[ROUTER-EDGE] RouterProvider external node NOT FOUND in externalNodeMap");
696
+ console.warn("[ROUTER-EDGE] Available external nodes:", Array.from(externalNodeMap.keys()));
694
697
  const appToRouterEdgeId = `e-${sourceNode.id}-${routerNode.id}`;
695
698
  if (!edges.find((e) => e.id === appToRouterEdgeId)) {
696
699
  edges.push({
@@ -701,20 +704,60 @@ function detectConfigBasedComponents(sourceFile, nodes, nodeMap, edges, projectP
701
704
  label: "router prop"
702
705
  });
703
706
  totalEdgesCreated++;
704
- console.log(`[DEBUG] Created edge: App -> Router (fallback)`);
705
707
  }
706
708
  }
707
- const routerToRoutesEdges = createConfigBasedEdges(
708
- routerNode,
709
- componentPaths,
710
- nodeMap,
711
- edges,
712
- "route",
713
- true
714
- // Use route path labels
715
- );
716
- console.log(`[DEBUG] Created ${routerToRoutesEdges} edges from Router to routes`);
717
- totalEdgesCreated += routerToRoutesEdges;
709
+ let decisionNodesCreated = 0;
710
+ let decisionEdgesCreated = 0;
711
+ for (const routeFilePath of componentPaths) {
712
+ const routePath = extractRoutePathFromFile(routeFilePath);
713
+ const isDynamic = routePath.includes(":");
714
+ const decisionNodeId = `${routerNode.id}::decision::${routePath.replace(/[/:]/g, "_")}`;
715
+ const decisionNode = {
716
+ id: decisionNodeId,
717
+ type: "conditional",
718
+ position: { x: 800, y: 400 + decisionNodesCreated * 100 },
719
+ data: {
720
+ label: isDynamic ? `matches "${routePath}"` : `path === "${routePath}"`,
721
+ description: `Route condition for ${routePath}`,
722
+ condition: isDynamic ? `pathname.matches("${routePath}")` : `pathname === "${routePath}"`,
723
+ trueLabel: "render",
724
+ falseLabel: "skip"
725
+ }
726
+ };
727
+ nodes.push(decisionNode);
728
+ nodeMap.set(decisionNode.id, decisionNode);
729
+ decisionNodesCreated++;
730
+ const routerToDecisionEdgeId = `e-${routerNode.id}-${decisionNode.id}`;
731
+ if (!edges.find((e) => e.id === routerToDecisionEdgeId)) {
732
+ edges.push({
733
+ id: routerToDecisionEdgeId,
734
+ source: routerNode.id,
735
+ target: decisionNode.id,
736
+ type: "floating",
737
+ label: routePath
738
+ });
739
+ decisionEdgesCreated++;
740
+ }
741
+ const targetNodes = findNodesInFile(routeFilePath, nodeMap);
742
+ for (const targetNode of targetNodes) {
743
+ if (targetNode.type !== "component") {
744
+ continue;
745
+ }
746
+ const decisionToComponentEdgeId = `e-${decisionNode.id}-${targetNode.id}`;
747
+ if (!edges.find((e) => e.id === decisionToComponentEdgeId)) {
748
+ edges.push({
749
+ id: decisionToComponentEdgeId,
750
+ source: decisionNode.id,
751
+ target: targetNode.id,
752
+ type: "floating",
753
+ label: "true"
754
+ });
755
+ decisionEdgesCreated++;
756
+ }
757
+ }
758
+ }
759
+ console.log(`[ROUTER] Created ${decisionNodesCreated} decision nodes and ${decisionEdgesCreated} edges`);
760
+ totalEdgesCreated += decisionEdgesCreated;
718
761
  } else {
719
762
  console.log(`[DEBUG] Creating edges for ${componentPaths.length} components`);
720
763
  const edgesCreated = createConfigBasedEdges(
@@ -807,6 +850,18 @@ async function analyzeProject(projectPath, projectId, onLog) {
807
850
  log(` Generated ${totalConfigEdges} additional edges from config analysis`);
808
851
  }
809
852
  log(` Total edges: ${edges.length}`);
853
+ const routerProviderEdge = edges.find((e) => e.source === "external::@tanstack/react-router::RouterProvider");
854
+ if (routerProviderEdge) {
855
+ console.log(`[FINAL-CHECK] \u2713 RouterProvider edge EXISTS in final edges array`);
856
+ console.log(`[FINAL-CHECK] Edge: ${routerProviderEdge.source} -> ${routerProviderEdge.target}`);
857
+ } else {
858
+ console.warn(`[FINAL-CHECK] \u2717 RouterProvider edge NOT FOUND in final edges array`);
859
+ console.warn(`[FINAL-CHECK] Checking all edges with 'RouterProvider' in source or target...`);
860
+ const relatedEdges = edges.filter(
861
+ (e) => e.source.includes("RouterProvider") || e.target.includes("RouterProvider") || e.source.includes("RouterDecision") || e.target.includes("RouterDecision")
862
+ );
863
+ console.warn(`[FINAL-CHECK] Found ${relatedEdges.length} related edges:`, relatedEdges.map((e) => `${e.source} -> ${e.target}`));
864
+ }
810
865
  const packageJsonPath = path2.join(projectPath, "package.json");
811
866
  let packageJson = { name: path2.basename(projectPath) };
812
867
  if (fs.existsSync(packageJsonPath)) {
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  readLocalMeta,
10
10
  writeLocalAnalysis,
11
11
  writeLocalMeta
12
- } from "./chunk-IUY7AA22.js";
12
+ } from "./chunk-CK7EVFWN.js";
13
13
  export {
14
14
  addGitignoreEntry,
15
15
  analyzeProject,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  rayburstPlugin
3
- } from "./chunk-IUY7AA22.js";
3
+ } from "./chunk-CK7EVFWN.js";
4
4
  export {
5
5
  rayburstPlugin
6
6
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rayburst/cli",
3
- "version": "0.3.7",
3
+ "version": "0.4.0",
4
4
  "description": "Rayburst - Automatic code analysis for TypeScript/JavaScript projects via Vite plugin",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",