@@ -11,16 +11,31 @@ const params = useRoute().params as {
1111
1212const rpc = useRpc ()
1313const sessions = ref <SessionCompareContext []>([])
14+ const packages = ref <{ total: number , duplicated: number }[]>([])
15+
16+ async function getPackages(id : string ) {
17+ const packages = await rpc .value .call (' vite:rolldown:get-packages' , { session: id })
18+ const duplicatedPackages = packages .filter (p => p .duplicated )
19+ return {
20+ total: packages .length ,
21+ duplicated: duplicatedPackages .length ,
22+ }
23+ }
1424
1525onMounted (async () => {
1626 isLoading .value = true
27+ const sessionIds = params .sessions .split (' ,' )
1728
18- const summary = await rpc .value .call (
19- ' vite:rolldown:get-session-compare-summary' ,
20- { sessions: params .sessions .split (' ,' ) },
21- )
29+ const [summary, ... _packages] = await Promise .all ([
30+ rpc .value .call (
31+ ' vite:rolldown:get-session-compare-summary' ,
32+ { sessions: sessionIds },
33+ ),
34+ ... sessionIds .map (id => getPackages (id )),
35+ ])
2236
2337 sessions .value = summary
38+ packages .value = _packages
2439
2540 isLoading .value = false
2641})
@@ -60,6 +75,20 @@ const comparisonMetrics = computed(() => {
6075 current: sessionB ?.modules ?? 0 ,
6176 previous: sessionA ?.modules ?? 0 ,
6277 },
78+ {
79+ name: ' Packages' ,
80+ description: ' Total number of packages' ,
81+ icon: ' i-ph-package-duotone' ,
82+ current: packages .value ?.[1 ]?.total ?? 0 ,
83+ previous: packages .value ?.[0 ]?.total ?? 0 ,
84+ },
85+ {
86+ name: ' Duplicated Packages' ,
87+ description: ' Total number of duplicated packages' ,
88+ icon: ' i-ph-package-duotone' ,
89+ current: packages .value ?.[1 ]?.duplicated ?? 0 ,
90+ previous: packages .value ?.[0 ]?.duplicated ?? 0 ,
91+ },
6392 {
6493 name: ' Plugins' ,
6594 description: ' Total number of plugins' ,
@@ -100,8 +129,8 @@ const comparisonMetrics = computed(() => {
100129 </div >
101130 <!-- meta info -->
102131 <CompareSessionMeta :sessions =" normalizedSessions" />
103- <div grid =" ~ cols-4 gap5" w-full pt3 >
104- <div v-for =" (item, index) of comparisonMetrics" :key =" item.name" :class =" index < 2 ? 'col-span-2 ' : 'col-span-1 '" border =" ~ base rounded" p4 flex =" ~ col" gap2 >
132+ <div grid =" ~ cols-6 gap5" w-full pt3 >
133+ <div v-for =" (item, index) of comparisonMetrics" :key =" item.name" :class =" index < 2 ? 'col-span-3 ' : 'col-span-2 '" border =" ~ base rounded" p4 flex =" ~ col" gap2 >
105134 <CompareMetricCard v-bind =" item" />
106135 </div >
107136 </div >
0 commit comments