@@ -110,13 +110,14 @@ if (import.meta.client) {
110110}
111111
112112interface VersionEvents {
113- size ? : {
113+ installSize ? : {
114114 direction: ' increase' | ' decrease'
115115 sizeRatio: number
116116 sizeDelta: number
117+ }
118+ deps? : {
119+ direction: ' increase' | ' decrease'
117120 depDiff: number
118- sizeThresholdExceeded: boolean
119- depThresholdExceeded: boolean
120121 }
121122 license? : { from: string ; to: string }
122123 esm? : ' added' | ' removed'
@@ -158,17 +159,18 @@ const versionEvents = computed(() => {
158159 const depsIncreased = depDiff > DEP_INCREASE_THRESHOLD
159160 const depsDecreased = depDiff < - DEP_INCREASE_THRESHOLD
160161
161- if (sizeIncreased || sizeDecreased || depsIncreased || depsDecreased ) {
162- ev .size = {
163- direction:
164- (sizeDecreased || depsDecreased ) && ! sizeIncreased && ! depsIncreased
165- ? ' decrease'
166- : ' increase' ,
162+ if (sizeIncreased || sizeDecreased ) {
163+ ev .installSize = {
164+ direction: sizeDecreased ? ' decrease' : ' increase' ,
167165 sizeRatio ,
168166 sizeDelta: currentSize .totalSize - previousSize .totalSize ,
167+ }
168+ }
169+
170+ if (depsIncreased || depsDecreased ) {
171+ ev .deps = {
172+ direction: depsDecreased ? ' decrease' : ' increase' ,
169173 depDiff ,
170- sizeThresholdExceeded: sizeIncreased || sizeDecreased ,
171- depThresholdExceeded: depsIncreased || depsDecreased ,
172174 }
173175 }
174176 }
@@ -190,7 +192,7 @@ const versionEvents = computed(() => {
190192 if (current .hasTypes && ! previous .hasTypes ) ev .types = ' added'
191193 else if (! current .hasTypes && previous .hasTypes ) ev .types = ' removed'
192194
193- if (ev .size || ev .license || ev .esm || ev .types ) {
195+ if (ev .installSize || ev . deps || ev .license || ev .esm || ev .types ) {
194196 events .set (current .version , ev )
195197 }
196198 }
@@ -258,20 +260,61 @@ useSeoMeta({
258260 class =" relative border-s border-border/50 ms-3 mt-2"
259261 >
260262 <template v-for =" (ev , _ ) in [versionEvents .get (entry .version )! ] " :key =" 0 " >
261- <!-- Size event -->
262- <li v-if =" ev.size" class =" mb-2 ms-4 relative last:mb-0" >
263+ <!-- Install size event -->
264+ <li v-if =" ev.installSize" class =" mb-2 ms-4 relative last:mb-0" >
265+ <span
266+ class =" absolute -start-[calc(1rem+0.375rem)] top-0.5 flex items-center justify-center w-3 h-3 rounded-full border"
267+ :class ="
268+ ev.installSize.direction === 'decrease'
269+ ? 'bg-green-500 border-green-600'
270+ : 'bg-amber-500 border-amber-600'
271+ "
272+ >
273+ <span
274+ class =" w-2 h-2 text-white"
275+ :class ="
276+ ev.installSize.direction === 'decrease'
277+ ? 'i-lucide:trending-down'
278+ : 'i-lucide:trending-up'
279+ "
280+ aria-hidden =" true"
281+ />
282+ </span >
283+ <p
284+ class =" text-xs"
285+ :class ="
286+ ev.installSize.direction === 'decrease'
287+ ? 'text-green-700 dark:text-green-400'
288+ : 'text-amber-700 dark:text-amber-400'
289+ "
290+ >
291+ {{
292+ ev.installSize.direction === 'decrease'
293+ ? $t('package.timeline.size_decrease', {
294+ percent: Math.abs(Math.round(ev.installSize.sizeRatio * 100)),
295+ size: bytesFormatter.format(Math.abs(ev.installSize.sizeDelta)),
296+ })
297+ : $t('package.timeline.size_increase', {
298+ percent: Math.round(ev.installSize.sizeRatio * 100),
299+ size: bytesFormatter.format(ev.installSize.sizeDelta),
300+ })
301+ }}
302+ </p >
303+ </li >
304+ <!-- Dependency count event -->
305+ <li v-if =" ev.deps" class =" mb-2 ms-4 relative last:mb-0" >
263306 <span
264307 class =" absolute -start-[calc(1rem+0.375rem)] top-0.5 flex items-center justify-center w-3 h-3 rounded-full border"
265308 :class ="
266- ev.size .direction === 'decrease'
309+ ev.deps .direction === 'decrease'
267310 ? 'bg-green-500 border-green-600'
268311 : 'bg-amber-500 border-amber-600'
269312 "
270313 >
271314 <span
272315 class =" w-2 h-2 text-white"
273316 :class ="
274- ev.size .direction === 'decrease'
317+ ev.deps .direction === 'decrease'
275318 ? 'i-lucide:trending-down'
276319 : 'i-lucide:trending-up'
277320 "
@@ -281,36 +324,18 @@ useSeoMeta({
281324 <p
282325 class =" text-xs"
283326 :class ="
284- ev.size .direction === 'decrease'
327+ ev.deps .direction === 'decrease'
285328 ? 'text-green-700 dark:text-green-400'
286329 : 'text-amber-700 dark:text-amber-400'
287330 "
288331 >
289- <template v-if =" ev .size .sizeThresholdExceeded " >
290- {{
291- ev.size.direction === 'decrease'
292- ? $t('package.timeline.size_decrease', {
293- percent: Math.abs(Math.round(ev.size.sizeRatio * 100)),
294- size: bytesFormatter.format(Math.abs(ev.size.sizeDelta)),
295- })
296- : $t('package.timeline.size_increase', {
297- percent: Math.round(ev.size.sizeRatio * 100),
298- size: bytesFormatter.format(ev.size.sizeDelta),
299- })
300- }}
301- </template >
302- <template v-if =" ev .size .sizeThresholdExceeded && ev .size .depThresholdExceeded " >
303- · ;
304- </template >
305- <template v-if =" ev .size .depThresholdExceeded " >
306- {{
307- ev.size.depDiff > 0
308- ? $t('package.timeline.dep_increase', { count: ev.size.depDiff })
309- : $t('package.timeline.dep_decrease', {
310- count: Math.abs(ev.size.depDiff),
311- })
312- }}
313- </template >
332+ {{
333+ ev.deps.depDiff > 0
334+ ? $t('package.timeline.dep_increase', { count: ev.deps.depDiff })
335+ : $t('package.timeline.dep_decrease', {
336+ count: Math.abs(ev.deps.depDiff),
337+ })
338+ }}
314339 </p >
315340 </li >
316341 <!-- License change -->
0 commit comments