@@ -16,7 +16,7 @@ export interface PackageComparisonData {
1616 /** Package's own unpacked size (from dist.unpackedSize) */
1717 packageSize ?: number
1818 /** Direct dependencies count */
19- directDeps : number
19+ directDeps : number | null
2020 /** Install size data (fetched lazily) */
2121 installSize ?: {
2222 selfSize : number
@@ -113,9 +113,6 @@ export function usePackageComparison(packageNames: MaybeRefOrGetter<string[]>) {
113113 ) ,
114114 ] )
115115
116- const pkg = usePackage ( name , latestVersion )
117- const requestedVersion = pkg . data . value ?. requestedVersion
118-
119116 const versionData = pkgData . versions [ latestVersion ]
120117 const packageSize = versionData ?. dist ?. unpackedSize
121118
@@ -146,7 +143,7 @@ export function usePackageComparison(packageNames: MaybeRefOrGetter<string[]>) {
146143 } ,
147144 downloads : downloads ?. downloads ,
148145 packageSize,
149- directDeps : getDependencyCount ( requestedVersion ?? null ) ,
146+ directDeps : versionData ? getDependencyCount ( versionData ) : null ,
150147 installSize : undefined , // Will be filled in second pass
151148 analysis : analysis ?? undefined ,
152149 vulnerabilities : {
@@ -263,40 +260,40 @@ function computeFacetValue(
263260 t : ( key : string , params ?: Record < string , unknown > ) => string ,
264261) : FacetValue | null {
265262 switch ( facet ) {
266- case 'downloads' :
263+ case 'downloads' : {
267264 if ( data . downloads === undefined ) return null
268265 return {
269266 raw : data . downloads ,
270267 display : formatCompactNumber ( data . downloads ) ,
271268 status : 'neutral' ,
272269 }
273-
274- case 'packageSize' :
270+ }
271+ case 'packageSize' : {
275272 if ( ! data . packageSize ) return null
276273 return {
277274 raw : data . packageSize ,
278275 display : formatBytes ( data . packageSize ) ,
279276 status : data . packageSize > 5 * 1024 * 1024 ? 'warning' : 'neutral' ,
280277 }
281-
282- case 'installSize' :
278+ }
279+ case 'installSize' : {
283280 if ( ! data . installSize ) return null
284281 return {
285282 raw : data . installSize . totalSize ,
286283 display : formatBytes ( data . installSize . totalSize ) ,
287284 status : data . installSize . totalSize > 50 * 1024 * 1024 ? 'warning' : 'neutral' ,
288285 }
289-
290- case 'moduleFormat' :
286+ }
287+ case 'moduleFormat' : {
291288 if ( ! data . analysis ) return null
292289 const format = data . analysis . moduleFormat
293290 return {
294291 raw : format ,
295292 display : format === 'dual' ? 'ESM + CJS' : format . toUpperCase ( ) ,
296293 status : format === 'esm' || format === 'dual' ? 'good' : 'neutral' ,
297294 }
298-
299- case 'types' :
295+ }
296+ case 'types' : {
300297 if ( data . isBinaryOnly ) {
301298 return {
302299 raw : 'binary' ,
@@ -317,8 +314,8 @@ function computeFacetValue(
317314 : t ( 'compare.facets.values.types_none' ) ,
318315 status : types . kind === 'included' ? 'good' : types . kind === '@types' ? 'info' : 'bad' ,
319316 }
320-
321- case 'engines' :
317+ }
318+ case 'engines' : {
322319 const engines = data . metadata ?. engines
323320 if ( ! engines ?. node ) {
324321 return { raw : null , display : t ( 'compare.facets.values.any' ) , status : 'neutral' }
@@ -328,8 +325,8 @@ function computeFacetValue(
328325 display : `Node ${ engines . node } ` ,
329326 status : 'neutral' ,
330327 }
331-
332- case 'vulnerabilities' :
328+ }
329+ case 'vulnerabilities' : {
333330 if ( ! data . vulnerabilities ) return null
334331 const count = data . vulnerabilities . count
335332 const sev = data . vulnerabilities . severity
@@ -345,8 +342,8 @@ function computeFacetValue(
345342 } ) ,
346343 status : count === 0 ? 'good' : sev . critical > 0 || sev . high > 0 ? 'bad' : 'warning' ,
347344 }
348-
349- case 'lastUpdated' :
345+ }
346+ case 'lastUpdated' : {
350347 if ( ! data . metadata ?. lastUpdated ) return null
351348 const date = new Date ( data . metadata . lastUpdated )
352349 return {
@@ -355,8 +352,8 @@ function computeFacetValue(
355352 status : isStale ( date ) ? 'warning' : 'neutral' ,
356353 type : 'date' ,
357354 }
358-
359- case 'license' :
355+ }
356+ case 'license' : {
360357 const license = data . metadata ?. license
361358 if ( ! license ) {
362359 return { raw : null , display : t ( 'compare.facets.values.unknown' ) , status : 'warning' }
@@ -366,17 +363,17 @@ function computeFacetValue(
366363 display : license ,
367364 status : 'neutral' ,
368365 }
369-
370- case 'dependencies' :
371- if ( ! data . directDeps ) return null
366+ }
367+ case 'dependencies' : {
368+ if ( data . directDeps == null ) return null
372369 const depCount = data . directDeps
373370 return {
374371 raw : depCount ,
375372 display : String ( depCount ) ,
376373 status : depCount > 10 ? 'warning' : 'neutral' ,
377374 }
378-
379- case 'deprecated' :
375+ }
376+ case 'deprecated' : {
380377 const isDeprecated = ! ! data . metadata ?. deprecated
381378 return {
382379 raw : isDeprecated ,
@@ -385,19 +382,20 @@ function computeFacetValue(
385382 : t ( 'compare.facets.values.not_deprecated' ) ,
386383 status : isDeprecated ? 'bad' : 'good' ,
387384 }
388-
385+ }
389386 // Coming soon facets
390- case 'totalDependencies' :
387+ case 'totalDependencies' : {
391388 if ( ! data . installSize ) return null
392389 const totalDepCount = data . installSize . dependencyCount
393390 return {
394391 raw : totalDepCount ,
395392 display : String ( totalDepCount ) ,
396393 status : totalDepCount > 50 ? 'warning' : 'neutral' ,
397394 }
398-
399- default :
395+ }
396+ default : {
400397 return null
398+ }
401399 }
402400}
403401
0 commit comments