pkgviz 0.7.7 → 0.8.1

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.
Files changed (367) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +2 -1
  3. package/.next/build-manifest.json +15 -24
  4. package/.next/fallback-build-manifest.json +15 -0
  5. package/.next/images-manifest.json +14 -3
  6. package/.next/next-minimal-server.js.nft.json +1 -1
  7. package/.next/next-server.js.nft.json +1 -1
  8. package/.next/prerender-manifest.json +52 -16
  9. package/.next/required-server-files.js +349 -0
  10. package/.next/required-server-files.json +106 -75
  11. package/.next/routes-manifest.json +16 -6
  12. package/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
  13. package/.next/server/app/_global-error/page/build-manifest.json +20 -0
  14. package/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
  15. package/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
  16. package/.next/server/app/_global-error/page.js +9 -0
  17. package/.next/server/app/_global-error/page.js.map +5 -0
  18. package/.next/server/app/_global-error/page.js.nft.json +1 -0
  19. package/.next/server/app/_global-error/page_client-reference-manifest.js +3 -0
  20. package/.next/server/app/_global-error.html +1 -0
  21. package/.next/server/app/_global-error.meta +22 -0
  22. package/.next/server/app/_global-error.rsc +15 -0
  23. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +20 -0
  24. package/.next/server/app/_global-error.segments/_full.segment.rsc +15 -0
  25. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  26. package/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
  27. package/.next/server/app/_not-found/page/build-manifest.json +20 -0
  28. package/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
  29. package/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
  30. package/.next/server/app/_not-found/page/server-reference-manifest.json +4 -0
  31. package/.next/server/app/_not-found/page.js +13 -2
  32. package/.next/server/app/_not-found/page.js.map +5 -0
  33. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  34. package/.next/server/app/_not-found/page_client-reference-manifest.js +3 -1
  35. package/.next/server/app/_not-found.html +1 -1
  36. package/.next/server/app/_not-found.meta +19 -0
  37. package/.next/server/app/_not-found.rsc +18 -19
  38. package/.next/server/app/_not-found.segments/_full.segment.rsc +18 -0
  39. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +24 -0
  40. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -0
  41. package/.next/server/app/favicon.ico/route/app-paths-manifest.json +3 -0
  42. package/.next/server/app/favicon.ico/route/build-manifest.json +12 -0
  43. package/.next/server/app/favicon.ico/route.js +6 -1
  44. package/.next/server/app/favicon.ico/route.js.map +5 -0
  45. package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  46. package/.next/server/app/page/app-paths-manifest.json +3 -0
  47. package/.next/server/app/page/build-manifest.json +20 -0
  48. package/.next/server/app/page/next-font-manifest.json +11 -0
  49. package/.next/server/app/page/react-loadable-manifest.json +1 -0
  50. package/.next/server/app/page/server-reference-manifest.json +93 -0
  51. package/.next/server/app/page.js +16 -13
  52. package/.next/server/app/page.js.map +5 -0
  53. package/.next/server/app/page.js.nft.json +1 -1
  54. package/.next/server/app/page_client-reference-manifest.js +3 -1
  55. package/.next/server/app-paths-manifest.json +2 -1
  56. package/.next/server/chunks/[externals]__0l8ei7u._.js +3 -0
  57. package/.next/server/chunks/[externals]__0l8ei7u._.js.map +1 -0
  58. package/.next/server/chunks/[root-of-the-server]__1to-yfd._.js +160 -0
  59. package/.next/server/chunks/[root-of-the-server]__1to-yfd._.js.map +1 -0
  60. package/.next/server/chunks/[turbopack]_runtime.js +807 -0
  61. package/.next/server/chunks/[turbopack]_runtime.js.map +10 -0
  62. package/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_0g2jjls.js +3 -0
  63. package/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_0g2jjls.js.map +1 -0
  64. package/.next/server/chunks/ssr/[root-of-the-server]__0agsrep._.js +28 -0
  65. package/.next/server/chunks/ssr/[root-of-the-server]__0agsrep._.js.map +1 -0
  66. package/.next/server/chunks/ssr/[root-of-the-server]__0f_e7c8._.js +33 -0
  67. package/.next/server/chunks/ssr/[root-of-the-server]__0f_e7c8._.js.map +1 -0
  68. package/.next/server/chunks/ssr/[root-of-the-server]__0yqn68e._.js +3 -0
  69. package/.next/server/chunks/ssr/[root-of-the-server]__0yqn68e._.js.map +1 -0
  70. package/.next/server/chunks/ssr/[root-of-the-server]__112mz-6._.js +14 -0
  71. package/.next/server/chunks/ssr/[root-of-the-server]__112mz-6._.js.map +1 -0
  72. package/.next/server/chunks/ssr/[root-of-the-server]__11_76b7._.js +3 -0
  73. package/.next/server/chunks/ssr/[root-of-the-server]__11_76b7._.js.map +1 -0
  74. package/.next/server/chunks/ssr/[root-of-the-server]__12ovu0c._.js +3 -0
  75. package/.next/server/chunks/ssr/[root-of-the-server]__12ovu0c._.js.map +1 -0
  76. package/.next/server/chunks/ssr/[root-of-the-server]__16pmw__._.js +3 -0
  77. package/.next/server/chunks/ssr/[root-of-the-server]__16pmw__._.js.map +1 -0
  78. package/.next/server/chunks/ssr/[root-of-the-server]__1f2jx51._.js +33 -0
  79. package/.next/server/chunks/ssr/[root-of-the-server]__1f2jx51._.js.map +1 -0
  80. package/.next/server/chunks/ssr/[root-of-the-server]__1rn09vt._.js +3 -0
  81. package/.next/server/chunks/ssr/[root-of-the-server]__1rn09vt._.js.map +1 -0
  82. package/.next/server/chunks/ssr/[root-of-the-server]__20e4gkp._.js +3 -0
  83. package/.next/server/chunks/ssr/[root-of-the-server]__20e4gkp._.js.map +1 -0
  84. package/.next/server/chunks/ssr/[turbopack]_runtime.js +807 -0
  85. package/.next/server/chunks/ssr/[turbopack]_runtime.js.map +10 -0
  86. package/.next/server/chunks/ssr/_1acy_2s._.js +158 -0
  87. package/.next/server/chunks/ssr/_1acy_2s._.js.map +1 -0
  88. package/.next/server/chunks/ssr/_1rh2tf9._.js +367 -0
  89. package/.next/server/chunks/ssr/_1rh2tf9._.js.map +1 -0
  90. package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js +3 -0
  91. package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js.map +1 -0
  92. package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js +3 -0
  93. package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js.map +1 -0
  94. package/.next/server/chunks/ssr/node_modules_01xbj_9._.js +33 -0
  95. package/.next/server/chunks/ssr/node_modules_01xbj_9._.js.map +1 -0
  96. package/.next/server/chunks/ssr/node_modules_next_dist_1c5ky4f._.js +3 -0
  97. package/.next/server/chunks/ssr/node_modules_next_dist_1c5ky4f._.js.map +1 -0
  98. package/.next/server/chunks/ssr/node_modules_next_dist_1n3w9lb._.js +6 -0
  99. package/.next/server/chunks/ssr/node_modules_next_dist_1n3w9lb._.js.map +1 -0
  100. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js +3 -0
  101. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js.map +1 -0
  102. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js +3 -0
  103. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js.map +1 -0
  104. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892.js +3 -0
  105. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892.js.map +1 -0
  106. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js +3 -0
  107. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js.map +1 -0
  108. package/.next/server/chunks/ssr/src_app_loading_tsx_01g_-m0._.js +3 -0
  109. package/.next/server/chunks/ssr/src_app_loading_tsx_01g_-m0._.js.map +1 -0
  110. package/.next/server/middleware-build-manifest.js +24 -1
  111. package/.next/server/middleware-manifest.json +2 -2
  112. package/.next/server/next-font-manifest.js +1 -1
  113. package/.next/server/next-font-manifest.json +15 -1
  114. package/.next/server/pages/404.html +1 -1
  115. package/.next/server/pages/500.html +1 -1
  116. package/.next/server/pages-manifest.json +2 -4
  117. package/.next/server/prefetch-hints.json +25 -0
  118. package/.next/server/server-reference-manifest.js +1 -1
  119. package/.next/server/server-reference-manifest.json +94 -1
  120. package/.next/static/chunks/0_j-_aavigxqr.js +345 -0
  121. package/.next/static/chunks/19mx3mg6lkumu.js +1 -0
  122. package/.next/static/chunks/1las_6j17xa9p.js +1 -0
  123. package/.next/static/chunks/1xk6snnh6e5_j.css +3 -0
  124. package/.next/static/chunks/2-rtuqsgzmno4.js +22 -0
  125. package/.next/static/chunks/27t_qfc-3_lzs.js +1 -0
  126. package/.next/static/chunks/310vm2bl3xxpt.js +31 -0
  127. package/.next/static/chunks/3fntmmi971322.js +1 -0
  128. package/.next/static/chunks/turbopack-1b6uko1cu_h42.js +1 -0
  129. package/.next/static/media/4fa387ec64143e14-s.2tuy5pz7dlieh.woff2 +0 -0
  130. package/.next/static/media/53b9e256198e5412-s.390ncx5urfkfu.woff2 +0 -0
  131. package/.next/static/media/5ce348bf30bf5439-s.31988l_ccedte.woff2 +0 -0
  132. package/.next/static/media/6306c77e7c8268e4-s.2dbetqa9o8jxf.woff2 +0 -0
  133. package/.next/static/media/7178b3e590c64307-s.21jp631_3pja2.woff2 +0 -0
  134. package/.next/static/media/797e433ab948586e-s.p.0r6juujl39pe6.woff2 +0 -0
  135. package/.next/static/media/7d817b4c03b0c5f1-s.1uyisp29ctx0d.woff2 +0 -0
  136. package/.next/static/media/8a480f0b521d4e75-s.1qq4vpdcun5oj.woff2 +0 -0
  137. package/.next/static/media/bbc41e54d2fcbd21-s.1rgnod-3esatf.woff2 +0 -0
  138. package/.next/static/media/caa3a2e1cccd8315-s.p.0wgildi0cnwt9.woff2 +0 -0
  139. package/.next/static/media/favicon.2246eezznj2ab.ico +0 -0
  140. package/.next/static/media/fef07dbb0973bf53-s.3p2_lha1f2xer.woff2 +0 -0
  141. package/.next/static/qznDSVYlkQxVdRx-TE_Wk/_buildManifest.js +11 -0
  142. package/.next/static/qznDSVYlkQxVdRx-TE_Wk/_clientMiddlewareManifest.js +1 -0
  143. package/README.md +176 -4
  144. package/bin/pkgviz.ts +57 -29
  145. package/package.json +57 -36
  146. package/src/app/actions/audit.actions.ts +7 -49
  147. package/src/app/globals.css +0 -2
  148. package/src/app/layout.tsx +3 -2
  149. package/src/app/loading.tsx +8 -0
  150. package/src/app/page.tsx +16 -2
  151. package/src/app/utils/buildGraph.ts +99 -100
  152. package/src/app/utils/getParsedFileStructure.ts +128 -54
  153. package/src/app/utils/inspectParserLanguageAsync.ts +39 -0
  154. package/src/app/utils/markCyclicPackages.ts +45 -185
  155. package/src/app/utils/parser/cpp/parseCppFile.ts +68 -86
  156. package/src/app/utils/parser/delphi/parseFile.ts +36 -120
  157. package/src/app/utils/parser/java/findEntryPoint.ts +2 -1
  158. package/src/app/utils/parser/java/parseJavaFile.ts +33 -45
  159. package/src/app/utils/parser/kotlin/parseFile.ts +34 -87
  160. package/src/app/utils/parser/python/parseFile.ts +30 -100
  161. package/src/app/utils/parser/typescript/parseFile.ts +17 -52
  162. package/src/app/utils/selectParserLanguage.ts +39 -0
  163. package/src/cli/formatAuditRuleFailures.ts +21 -0
  164. package/src/cli/runAuditAsync.ts +41 -0
  165. package/src/components/Breadcrumb.tsx +5 -4
  166. package/src/components/ExportPanel.tsx +53 -0
  167. package/src/components/Header.tsx +1 -0
  168. package/src/components/Loader.tsx +8 -2
  169. package/src/components/ProjectLoadError.tsx +15 -0
  170. package/src/components/SettingsPanel.tsx +184 -0
  171. package/src/components/Switch.tsx +9 -17
  172. package/src/components/ThemeToggle.tsx +2 -1
  173. package/src/components/ToggleSwitch.tsx +36 -0
  174. package/src/components/sidebar/Sidebar.tsx +14 -0
  175. package/src/components/sidebar/SidebarBadge.tsx +25 -0
  176. package/src/components/sidebar/SidebarRow.tsx +14 -0
  177. package/src/components/sidebar/SidebarSection.tsx +16 -0
  178. package/src/components/sidebar/SidebarTabs.tsx +58 -0
  179. package/src/contexts/SettingsContext.tsx +19 -20
  180. package/src/features/audit/adapters/inbound/react/AuditRuleList.tsx +76 -0
  181. package/src/features/audit/adapters/inbound/react/AuditRulePanel.tsx +30 -0
  182. package/src/features/audit/adapters/inbound/react/CycleInspector.tsx +116 -0
  183. package/src/features/audit/adapters/inbound/react/CyclicDependenciesRuleDetails.tsx +124 -0
  184. package/src/features/audit/adapters/inbound/react/useCycleSelection.ts +47 -0
  185. package/src/features/audit/application/use-cases/createAuditFromSnapshot.ts +28 -0
  186. package/src/features/audit/application/use-cases/resolveSelectedCycleIds.ts +18 -0
  187. package/src/features/audit/composition/createAuditAsync.ts +11 -0
  188. package/src/features/audit/domain/evaluateAuditRules.ts +42 -0
  189. package/src/features/audit/domain/hasBlockingAuditRuleFailure.ts +6 -0
  190. package/src/features/audit/domain/resolveAuditConfiguration.ts +27 -0
  191. package/src/features/audit/utils/cycleVisualization.ts +86 -0
  192. package/src/features/dependency-analysis/adapters/outbound/dependency-graph/analyzeDependencyImportsAsync.ts +172 -0
  193. package/src/features/dependency-analysis/adapters/outbound/dependency-graph/analyzeTypeScriptImportsAsync.ts +6 -0
  194. package/src/features/graph-view/adapters/inbound/react/DependencyGraphView.tsx +184 -0
  195. package/src/features/graph-view/adapters/inbound/react/GraphZoomControls.tsx +48 -0
  196. package/src/features/graph-view/adapters/inbound/react/applyGraphInteractionPresentation.ts +35 -0
  197. package/src/features/graph-view/adapters/inbound/react/createGraphViewModel.ts +240 -0
  198. package/src/features/graph-view/adapters/inbound/react/createGraphViewStyles.ts +37 -0
  199. package/src/features/graph-view/adapters/inbound/react/useGraphFocus.ts +104 -0
  200. package/src/features/graph-view/adapters/inbound/react/useGraphInteractions.ts +50 -0
  201. package/src/features/graph-view/adapters/inbound/react/useGraphProjection.ts +71 -0
  202. package/src/features/graph-view/adapters/inbound/react/useGraphViewport.ts +48 -0
  203. package/src/features/graph-view/domain/getDependencyHighlightClasses.ts +39 -0
  204. package/src/features/graph-view/domain/reduceGraphInteraction.ts +23 -0
  205. package/src/features/graph-view/utils/createCompoundOpacityIndex.ts +38 -0
  206. package/src/features/graph-view/utils/projectVisibleGraph.ts +109 -0
  207. package/src/features/graph-view/utils/readNodeDefinitionId.ts +7 -0
  208. package/src/features/graph-view/utils/removeEmptyStructuralNodes.ts +27 -0
  209. package/src/features/project-analysis/adapters/outbound/filesystem/readProjectSnapshotAsync.ts +12 -0
  210. package/src/features/project-analysis/application/use-cases/createProjectSnapshotReader.ts +29 -0
  211. package/src/features/project-analysis/composition/loadProjectOverviewAsync.ts +14 -0
  212. package/src/features/project-analysis/composition/loadProjectSnapshotAsync.ts +12 -0
  213. package/src/features/project-tree/adapters/inbound/react/ProjectTreePanel.tsx +52 -0
  214. package/src/features/project-tree/adapters/inbound/react/useProjectTreeExpansion.ts +46 -0
  215. package/src/features/project-tree/application/use-cases/buildProjectTree.ts +61 -0
  216. package/src/features/project-tree/application/use-cases/resolveProjectTreeNavigation.ts +13 -0
  217. package/src/features/project-tree/utils/findProjectTreeNode.ts +14 -0
  218. package/src/features/project-tree/utils/findProjectTreeNodeByGraphPackage.ts +21 -0
  219. package/src/features/project-tree/utils/getProjectTreeAncestorIds.ts +26 -0
  220. package/src/features/settings/utils/readSettingsEnvironment.ts +53 -0
  221. package/src/i18n/en.ts +21 -2
  222. package/src/i18n/i18n.ts +2 -3
  223. package/src/layouts/breadthfirst/style.ts +1 -0
  224. package/src/layouts/circle/style.ts +1 -0
  225. package/src/layouts/concentric/style.ts +1 -0
  226. package/src/layouts/elk/layout.ts +1 -3
  227. package/src/layouts/elk/style.ts +1 -0
  228. package/src/layouts/getWeightBuckets.ts +3 -1
  229. package/src/layouts/grid/style.ts +1 -0
  230. package/src/layouts/index.ts +0 -4
  231. package/src/layouts/style.ts +172 -25
  232. package/src/screens/home/Home.tsx +73 -25
  233. package/src/screens/home/HomeGraph.tsx +43 -0
  234. package/src/screens/home/HomeSidebar.tsx +129 -0
  235. package/src/shared/types/index.ts +0 -9
  236. package/src/shared/utils/getProjectName.ts +4 -1
  237. package/src/shared/utils/parseProjectPath.ts +1 -0
  238. package/src/shared/utils/toPosix.ts +1 -1
  239. package/src/types/audit.ts +76 -0
  240. package/src/types/auditVisualization.ts +22 -0
  241. package/src/types/graphInteraction.ts +9 -0
  242. package/src/types/parserSelection.ts +11 -0
  243. package/src/types/projectAnalysis.ts +20 -0
  244. package/src/types/projectAnalysisActionResult.ts +2 -0
  245. package/src/types/projectTree.ts +7 -0
  246. package/src/utils/filter/filterByPackagePrefix.ts +25 -7
  247. package/src/utils/filter/filterEmptyPackages.ts +28 -29
  248. package/src/utils/filter/filterSubPackagesFromDepth.ts +20 -17
  249. package/src/utils/filter/filterVendorPackages.ts +1 -1
  250. package/src/utils/filter/isIntrinsicGraphNode.ts +8 -0
  251. package/src/utils/filter/toggleCompoundNodes.ts +41 -31
  252. package/src/utils/runProjectAnalysisActionAsync.ts +14 -0
  253. package/tsconfig.json +11 -3
  254. package/.next/app-build-manifest.json +0 -29
  255. package/.next/cache/.previewinfo +0 -1
  256. package/.next/cache/.rscinfo +0 -1
  257. package/.next/cache/.tsbuildinfo +0 -1
  258. package/.next/cache/chrome-devtools-workspace-uuid +0 -1
  259. package/.next/cache/eslint/.cache_6t30dc +0 -1
  260. package/.next/cache/webpack/client-production/0.pack +0 -4
  261. package/.next/cache/webpack/client-production/1.pack +0 -0
  262. package/.next/cache/webpack/client-production/10.pack +0 -0
  263. package/.next/cache/webpack/client-production/11.pack +0 -0
  264. package/.next/cache/webpack/client-production/12.pack +0 -0
  265. package/.next/cache/webpack/client-production/13.pack +0 -0
  266. package/.next/cache/webpack/client-production/14.pack +0 -0
  267. package/.next/cache/webpack/client-production/15.pack +0 -0
  268. package/.next/cache/webpack/client-production/16.pack +0 -0
  269. package/.next/cache/webpack/client-production/2.pack +0 -0
  270. package/.next/cache/webpack/client-production/3.pack +0 -0
  271. package/.next/cache/webpack/client-production/4.pack +0 -0
  272. package/.next/cache/webpack/client-production/5.pack +0 -0
  273. package/.next/cache/webpack/client-production/6.pack +0 -0
  274. package/.next/cache/webpack/client-production/7.pack +0 -0
  275. package/.next/cache/webpack/client-production/8.pack +0 -0
  276. package/.next/cache/webpack/client-production/9.pack +0 -0
  277. package/.next/cache/webpack/client-production/index.pack +0 -0
  278. package/.next/cache/webpack/client-production/index.pack.old +0 -0
  279. package/.next/cache/webpack/edge-server-production/0.pack +0 -0
  280. package/.next/cache/webpack/edge-server-production/index.pack +0 -0
  281. package/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
  282. package/.next/cache/webpack/server-production/0.pack +0 -0
  283. package/.next/cache/webpack/server-production/1.pack +0 -0
  284. package/.next/cache/webpack/server-production/10.pack +0 -4
  285. package/.next/cache/webpack/server-production/11.pack +0 -0
  286. package/.next/cache/webpack/server-production/12.pack +0 -0
  287. package/.next/cache/webpack/server-production/13.pack +0 -0
  288. package/.next/cache/webpack/server-production/14.pack +0 -0
  289. package/.next/cache/webpack/server-production/15.pack +0 -0
  290. package/.next/cache/webpack/server-production/16.pack +0 -0
  291. package/.next/cache/webpack/server-production/17.pack +0 -0
  292. package/.next/cache/webpack/server-production/18.pack +0 -4
  293. package/.next/cache/webpack/server-production/2.pack +0 -0
  294. package/.next/cache/webpack/server-production/3.pack +0 -0
  295. package/.next/cache/webpack/server-production/4.pack +0 -0
  296. package/.next/cache/webpack/server-production/5.pack +0 -0
  297. package/.next/cache/webpack/server-production/6.pack +0 -0
  298. package/.next/cache/webpack/server-production/7.pack +0 -0
  299. package/.next/cache/webpack/server-production/8.pack +0 -0
  300. package/.next/cache/webpack/server-production/9.pack +0 -0
  301. package/.next/cache/webpack/server-production/index.pack +0 -0
  302. package/.next/cache/webpack/server-production/index.pack.old +0 -0
  303. package/.next/diagnostics/build-diagnostics.json +0 -6
  304. package/.next/diagnostics/framework.json +0 -1
  305. package/.next/server/app/index.html +0 -1
  306. package/.next/server/app/index.meta +0 -7
  307. package/.next/server/app/index.rsc +0 -20
  308. package/.next/server/chunks/548.js +0 -6
  309. package/.next/server/chunks/610.js +0 -7
  310. package/.next/server/chunks/985.js +0 -22
  311. package/.next/server/middleware-react-loadable-manifest.js +0 -1
  312. package/.next/server/pages/_app.js +0 -1
  313. package/.next/server/pages/_app.js.nft.json +0 -1
  314. package/.next/server/pages/_document.js +0 -1
  315. package/.next/server/pages/_document.js.nft.json +0 -1
  316. package/.next/server/pages/_error.js +0 -19
  317. package/.next/server/pages/_error.js.nft.json +0 -1
  318. package/.next/server/webpack-runtime.js +0 -1
  319. package/.next/static/_YC2p40ZiYT2Gcw-h_tjC/_buildManifest.js +0 -1
  320. package/.next/static/chunks/4bd1b696-cf72ae8a39fa05aa.js +0 -1
  321. package/.next/static/chunks/680-55ad17895c8fb70b.js +0 -1
  322. package/.next/static/chunks/90542734-29e255269788f1bd.js +0 -1
  323. package/.next/static/chunks/91dbc596-b9cdccd3f5cba95d.js +0 -1
  324. package/.next/static/chunks/964-b440f7af22c41ca5.js +0 -1
  325. package/.next/static/chunks/app/_not-found/page-11e4fea8e290f304.js +0 -1
  326. package/.next/static/chunks/app/layout-8aae7fba5ed8afb3.js +0 -1
  327. package/.next/static/chunks/app/page-91450b1230da8bca.js +0 -1
  328. package/.next/static/chunks/framework-bc35dade6ff9684e.js +0 -1
  329. package/.next/static/chunks/main-9e86d333c1e02dd1.js +0 -1
  330. package/.next/static/chunks/main-app-69a9ff75ff3465ca.js +0 -1
  331. package/.next/static/chunks/pages/_app-0a0020ddd67f79cf.js +0 -1
  332. package/.next/static/chunks/pages/_error-03529f2c21436739.js +0 -1
  333. package/.next/static/chunks/webpack-7adfafc806738767.js +0 -1
  334. package/.next/static/css/ec31779168107a11.css +0 -3
  335. package/.next/static/media/4cf2300e9c8272f7-s.p.woff2 +0 -0
  336. package/.next/static/media/747892c23ea88013-s.woff2 +0 -0
  337. package/.next/static/media/8d697b304b401681-s.woff2 +0 -0
  338. package/.next/static/media/93f479601ee12b01-s.p.woff2 +0 -0
  339. package/.next/static/media/9610d9e46709d722-s.woff2 +0 -0
  340. package/.next/static/media/ba015fad6dcf6784-s.woff2 +0 -0
  341. package/.next/trace +0 -2
  342. package/.next/types/app/layout.ts +0 -84
  343. package/.next/types/app/page.ts +0 -84
  344. package/.next/types/cache-life.d.ts +0 -141
  345. package/.next/types/package.json +0 -1
  346. package/src/app/actions/graph.actions.ts +0 -25
  347. package/src/app/utils/parser/cpp/extractCppPackageFromImport.ts +0 -18
  348. package/src/app/utils/parser/delphi/extractPackageFromImport.ts +0 -21
  349. package/src/app/utils/parser/java/extractJavaPackageFromImport.ts +0 -39
  350. package/src/app/utils/parser/java/getIntrinsicPackagesRecursive.ts +0 -33
  351. package/src/app/utils/parser/kotlin/extractPackageFromImport.ts +0 -19
  352. package/src/app/utils/parser/python/extractPythonPackageFromImport.ts +0 -18
  353. package/src/app/utils/parser/typescript/extractTypeScriptPackageFromImport.ts +0 -18
  354. package/src/components/Cytoscape.tsx +0 -23
  355. package/src/components/Setting.tsx +0 -17
  356. package/src/components/Settings.tsx +0 -189
  357. package/src/components/ZoomInput.tsx +0 -94
  358. package/src/components/useCytoscape.ts +0 -343
  359. package/src/layouts/getLayoutStyle.ts +0 -19
  360. package/src/shared/utils/detectLanguage.ts +0 -255
  361. package/src/shared/utils/getJsonAsync.ts +0 -13
  362. package/src/shared/utils/parseEnv.ts +0 -91
  363. package/src/store/useLocalStorage.ts +0 -29
  364. package/src/utils/hasChildren.ts +0 -7
  365. /package/.next/{react-loadable-manifest.json → server/app/_global-error/page/react-loadable-manifest.json} +0 -0
  366. /package/.next/static/chunks/{polyfills-42372ed130431b0a.js → 0cz1d0mv5g_q7.js} +0 -0
  367. /package/.next/static/{_YC2p40ZiYT2Gcw-h_tjC → qznDSVYlkQxVdRx-TE_Wk}/_ssgManifest.js +0 -0
@@ -1,6 +1,6 @@
1
1
  import type { EdgeDefinition, ElementsDefinition } from 'cytoscape';
2
2
 
3
- /**
3
+ /***
4
4
  * Compute the minimal set of "root" packages that have no ancestor in the list.
5
5
  * Example: ['x.y', 'x.y.z', 'a', 'a.c.x'] => ['a', 'x.y']
6
6
  */
@@ -16,7 +16,7 @@ function findRoots(packages: string[]): string[] {
16
16
  return roots;
17
17
  }
18
18
 
19
- /**
19
+ /***
20
20
  * Ascend from a package to its nearest ancestor that is in the `roots` set.
21
21
  */
22
22
  function nearestRoot(pkg: string, roots: Set<string>): string {
@@ -31,7 +31,7 @@ function nearestRoot(pkg: string, roots: Set<string>): string {
31
31
  return pkg;
32
32
  }
33
33
 
34
- /**
34
+ /***
35
35
  * Given a root and a leaf pkg, return the visible ancestor at `maxDepth`
36
36
  * under the root, preferring the deepest existing package <= target depth.
37
37
  *
@@ -59,7 +59,7 @@ function visibleAncestorForDepth(
59
59
  return root; // fallback
60
60
  }
61
61
 
62
- /**
62
+ /***
63
63
  * Global maximum depth across all roots.
64
64
  * Depth is counted relative to the nearest root: root=1, root.child=2, etc.
65
65
  */
@@ -79,7 +79,7 @@ export function getMaxDepth(elements: ElementsDefinition): number {
79
79
  return maxDepth;
80
80
  }
81
81
 
82
- /**
82
+ /***
83
83
  * Maximum depth per root, e.g. { 'a': 3, 'x.y': 2 }.
84
84
  */
85
85
  export function getMaxDepthByRoot(elements: ElementsDefinition): Record<string, number> {
@@ -96,19 +96,17 @@ export function getMaxDepthByRoot(elements: ElementsDefinition): Record<string,
96
96
  return result;
97
97
  }
98
98
 
99
- /**
99
+ /***
100
100
  * Filters sub-packages so only the desired number of levels under each root are shown.
101
- *
102
- * @param elements - Cytoscape elements
103
- * @param allowSelfLoops - Keep self loops after lifting/aggregation
104
- * @param maxDepth - Number of levels to keep under each root (1 = roots only, 2 = +children, etc.)
101
+ * @performance Aggregate weights and origin IDs in local maps without repeatedly copying growing
102
+ * evidence arrays. Inputs remain immutable; a large lifted bundle must stay linear in edge count.
105
103
  */
106
104
  export function filterSubPackagesByDepth(
107
105
  elements: ElementsDefinition,
108
- allowSelfLoops: boolean = false,
109
- maxDepth: number = 1
106
+ allowSelfLoops = false,
107
+ maxDepth = 1
110
108
  ): ElementsDefinition {
111
- const allPackages = elements.nodes.map(n => n.data.id as string);
109
+ const allPackages = elements.nodes.map(n => n.data.id!);
112
110
  const existingSet = new Set(allPackages);
113
111
 
114
112
  // 1) Identify minimal roots (no ancestor present)
@@ -125,14 +123,15 @@ export function filterSubPackagesByDepth(
125
123
 
126
124
  // 3) Visible nodes = unique set of chosen ancestors
127
125
  const visibleNodeIds = new Set<string>(pkgToVisible.values());
128
- const filteredNodes = elements.nodes.filter(n => visibleNodeIds.has(n.data.id as string));
126
+ const filteredNodes = elements.nodes.filter(n => visibleNodeIds.has(n.data.id!));
129
127
 
130
128
  // 4) Lift & aggregate edges to visible ancestors (sum weights)
131
129
  const edgeMap = new Map<string, EdgeDefinition>();
130
+ const edgeOrigins = new Map<string, string[]>();
132
131
 
133
132
  for (const e of elements.edges) {
134
- const rawSource = e.data.source as string;
135
- const rawTarget = e.data.target as string;
133
+ const rawSource = e.data.source;
134
+ const rawTarget = e.data.target;
136
135
 
137
136
  const liftedSource = pkgToVisible.get(rawSource) ?? rawSource;
138
137
  const liftedTarget = pkgToVisible.get(rawTarget) ?? rawTarget;
@@ -145,13 +144,17 @@ export function filterSubPackagesByDepth(
145
144
  }
146
145
 
147
146
  const key = `${liftedSource}->${liftedTarget}`;
147
+ const origins = edgeOrigins.get(key) ?? [];
148
+ origins.push(e.data.id ?? `${rawSource}->${rawTarget}`);
149
+ edgeOrigins.set(key, origins);
148
150
  if (!edgeMap.has(key)) {
149
151
  // clone with lifted endpoints; keep your metadata; (optionally set a stable id)
150
152
  edgeMap.set(key, {
151
153
  ...e,
152
154
  data: {
153
155
  ...e.data,
154
- // id: key, // uncomment if you want stable, deduped edge ids
156
+ id: key,
157
+ originalEdgeIds: origins,
155
158
  source: liftedSource,
156
159
  target: liftedTarget,
157
160
  // initialize aggregated weight
@@ -1,6 +1,6 @@
1
1
  import type { ElementsDefinition } from 'cytoscape';
2
2
 
3
- /**
3
+ /***
4
4
  * Filters vendor packages by known package prefix
5
5
  */
6
6
  export function filterVendorPackages(elements: ElementsDefinition): ElementsDefinition {
@@ -0,0 +1,8 @@
1
+ import type { NodeDefinition } from 'cytoscape';
2
+
3
+ /*** Identifies project nodes using the graph builder's classification, not namespace spelling. */
4
+ export function isIntrinsicGraphNode(node: NodeDefinition): boolean {
5
+ if (typeof node.data.isIntrinsic === 'boolean') return node.data.isIntrinsic;
6
+ const classes = Array.isArray(node.classes) ? node.classes : (node.classes ?? '').split(/\s+/);
7
+ return !classes.includes('isVendor');
8
+ }
@@ -1,40 +1,50 @@
1
- import { ElementsDefinition } from 'cytoscape';
1
+ import type { ElementsDefinition, NodeDefinition } from 'cytoscape';
2
2
 
3
- /**
4
- * Toggles display of compound nodes ('parent' attribute) in the node
5
- * @param elements - Cytoscape elements (nodes and edges)
6
- * @param show - Whether to show compound nodes
7
- * @param currentPackage - Current package path to adjust node names when showing compound nodes
8
- * @returns Updated Cytoscape elements with compound nodes toggled
9
- */
3
+ /*** Toggles compound-parent metadata without mutating the source graph elements. */
10
4
  export function toggleCompoundNodes(
11
5
  { nodes, edges }: ElementsDefinition,
12
6
  show: boolean,
13
7
  currentPackage: string
14
8
  ): ElementsDefinition {
15
- const updatedNodes = nodes.map(node => {
16
- if (!node.data.idInactive) node.data.idInactive = node.data.id;
17
- // ACTIVE Compound Nodes
18
- if (show && node.data.parentInactive) {
19
- node.data.parent = node.data.parentInactive;
20
- node.data.parentInactive = undefined;
21
- } else if (!show && node.data.parent) {
22
- node.data.parentInactive = node.data.parent;
23
- node.data.parent = undefined;
24
- }
25
- return node;
26
- });
9
+ return {
10
+ nodes: nodes.map(node => toggleCompoundNode(node, show, currentPackage)),
11
+ edges,
12
+ };
13
+ }
14
+
15
+ /*** Produces one compound-visibility node projection from immutable source data. */
16
+ function toggleCompoundNode(
17
+ node: NodeDefinition,
18
+ show: boolean,
19
+ currentPackage: string
20
+ ): NodeDefinition {
21
+ const idInactive = node.data.idInactive ?? node.data.id;
22
+ const parentInactive = node.data.parentInactive ?? node.data.parent;
23
+ const data = {
24
+ ...node.data,
25
+ idInactive,
26
+ name: show
27
+ ? String(idInactive).split('.').pop()
28
+ : String(idInactive).slice(currentPackage.length ? currentPackage.length + 1 : 0),
29
+ };
27
30
 
28
- const labelledNodes = updatedNodes.map(node => {
29
- if (show) {
30
- node.data.name = node.data.idInactive.split('.').pop();
31
- } else {
32
- node.data.name = node.data.idInactive.slice(
33
- currentPackage.length ? currentPackage.length + 1 : 0
34
- );
35
- }
36
- return node;
37
- });
31
+ if (show) {
32
+ return {
33
+ ...node,
34
+ data: {
35
+ ...data,
36
+ parent: parentInactive,
37
+ parentInactive: undefined,
38
+ },
39
+ };
40
+ }
38
41
 
39
- return { nodes: labelledNodes, edges };
42
+ return {
43
+ ...node,
44
+ data: {
45
+ ...data,
46
+ parent: undefined,
47
+ parentInactive,
48
+ },
49
+ };
40
50
  }
@@ -0,0 +1,14 @@
1
+ import { toErrorMessage } from '@ankhorage/utility/error';
2
+
3
+ import type { ProjectAnalysisActionResult } from '@/types/projectAnalysisActionResult';
4
+
5
+ /*** Runs project analysis while serializing failures for the persistent project error UI. */
6
+ export async function runProjectAnalysisActionAsync<T>(
7
+ operation: () => Promise<T>
8
+ ): Promise<ProjectAnalysisActionResult<T>> {
9
+ try {
10
+ return { ok: true, value: await operation() };
11
+ } catch (error) {
12
+ return { ok: false, error: toErrorMessage(error, 'Unable to load project.') };
13
+ }
14
+ }
package/tsconfig.json CHANGED
@@ -12,7 +12,7 @@
12
12
  "moduleResolution": "bundler",
13
13
  "resolveJsonModule": true,
14
14
  "isolatedModules": true,
15
- "jsx": "preserve",
15
+ "jsx": "react-jsx",
16
16
  "plugins": [
17
17
  {
18
18
  "name": "next"
@@ -20,10 +20,18 @@
20
20
  ],
21
21
  "paths": {
22
22
  "@/*": ["./src/*"],
23
- "app/*": ["./app/*"]
23
+ "app/*": ["./app/*"],
24
+ "@zora/tree-view": ["./.generated/zora/tree-view/TreeView"],
25
+ "@zora/graph-view": ["./.generated/zora/graph-view/GraphView"]
24
26
  },
25
27
  "incremental": true
26
28
  },
27
- "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
29
+ "include": [
30
+ "next-env.d.ts",
31
+ "**/*.ts",
32
+ "**/*.tsx",
33
+ ".next/types/**/*.ts",
34
+ ".next/dev/types/**/*.ts"
35
+ ],
28
36
  "exclude": ["node_modules", "examples"]
29
37
  }
@@ -1,29 +0,0 @@
1
- {
2
- "pages": {
3
- "/_not-found/page": [
4
- "static/chunks/webpack-7adfafc806738767.js",
5
- "static/chunks/4bd1b696-cf72ae8a39fa05aa.js",
6
- "static/chunks/964-b440f7af22c41ca5.js",
7
- "static/chunks/main-app-69a9ff75ff3465ca.js",
8
- "static/chunks/app/_not-found/page-11e4fea8e290f304.js"
9
- ],
10
- "/layout": [
11
- "static/chunks/webpack-7adfafc806738767.js",
12
- "static/chunks/4bd1b696-cf72ae8a39fa05aa.js",
13
- "static/chunks/964-b440f7af22c41ca5.js",
14
- "static/chunks/main-app-69a9ff75ff3465ca.js",
15
- "static/css/ec31779168107a11.css",
16
- "static/chunks/app/layout-8aae7fba5ed8afb3.js"
17
- ],
18
- "/page": [
19
- "static/chunks/webpack-7adfafc806738767.js",
20
- "static/chunks/4bd1b696-cf72ae8a39fa05aa.js",
21
- "static/chunks/964-b440f7af22c41ca5.js",
22
- "static/chunks/main-app-69a9ff75ff3465ca.js",
23
- "static/chunks/90542734-29e255269788f1bd.js",
24
- "static/chunks/91dbc596-b9cdccd3f5cba95d.js",
25
- "static/chunks/680-55ad17895c8fb70b.js",
26
- "static/chunks/app/page-91450b1230da8bca.js"
27
- ]
28
- }
29
- }
@@ -1 +0,0 @@
1
- {"previewModeId":"ceb390802a3f6d9931bc0ddba68f3680","previewModeSigningKey":"04d9bdcfe74e77156a8f5ce032b110eca70f4e04b549afb4dec708691d5bbb4e","previewModeEncryptionKey":"f98a403d687589a955885833badde06c7bf224e8f6ccbbef8d7e98340aa0c34a","expireAt":1768701898249}
@@ -1 +0,0 @@
1
- {"encryption.key":"eedY2YYWw1qFRVxuNyrAFRzzvse22znPr4gTOBE0v7M=","encryption.expire_at":1768701898162}