1- import type { FacetValue , ComparisonFacet , ComparisonPackage , Packument } from '#shared/types'
1+ import type {
2+ FacetValue ,
3+ ComparisonFacet ,
4+ ComparisonPackage ,
5+ Packument ,
6+ VulnerabilityTreeResult ,
7+ } from '#shared/types'
28import { encodePackageName } from '#shared/utils/npm'
39import type { PackageAnalysisResponse } from './usePackageAnalysis'
410import { isBinaryOnlyPackage } from '#shared/utils/binary-detection'
@@ -17,7 +23,7 @@ export interface PackageComparisonData {
1723 analysis ?: PackageAnalysisResponse
1824 vulnerabilities ?: {
1925 count : number
20- severity : { critical : number ; high : number ; medium : number ; low : number }
26+ severity : { critical : number ; high : number ; moderate : number ; low : number }
2127 }
2228 metadata ?: {
2329 license ?: string
@@ -98,9 +104,9 @@ export function usePackageComparison(packageNames: MaybeRefOrGetter<string[]>) {
98104 `https://api.npmjs.org/downloads/point/last-week/${ encodePackageName ( name ) } ` ,
99105 ) . catch ( ( ) => null ) ,
100106 $fetch < PackageAnalysisResponse > ( `/api/registry/analysis/${ name } ` ) . catch ( ( ) => null ) ,
101- $fetch < {
102- vulnerabilities : Array < { severity : string } >
103- } > ( `/api/registry/vulnerabilities/ ${ name } ` ) . catch ( ( ) => null ) ,
107+ $fetch < VulnerabilityTreeResult > ( `/api/registry/vulnerabilities/ ${ name } ` ) . catch (
108+ ( ) => null ,
109+ ) ,
104110 ] )
105111
106112 const versionData = pkgData . versions [ latestVersion ]
@@ -115,12 +121,14 @@ export function usePackageComparison(packageNames: MaybeRefOrGetter<string[]>) {
115121 exports : versionData ?. exports ,
116122 } )
117123
118- // Count vulnerabilities by severity
119- const vulnCounts = { critical : 0 , high : 0 , medium : 0 , low : 0 }
120- const vulnList = vulns ?. vulnerabilities ?? [ ]
121- for ( const v of vulnList ) {
122- const sev = v . severity . toLowerCase ( ) as keyof typeof vulnCounts
123- if ( sev in vulnCounts ) vulnCounts [ sev ] ++
124+ // Vulnerabilities
125+ let vulnsTotal : number = 0
126+ let vulnsSeverity = { critical : 0 , high : 0 , moderate : 0 , low : 0 }
127+
128+ if ( vulns ) {
129+ const { total, ...severity } = vulns . totalCounts
130+ vulnsTotal = total
131+ vulnsSeverity = severity
124132 }
125133
126134 return {
@@ -134,8 +142,8 @@ export function usePackageComparison(packageNames: MaybeRefOrGetter<string[]>) {
134142 installSize : undefined , // Will be filled in second pass
135143 analysis : analysis ?? undefined ,
136144 vulnerabilities : {
137- count : vulnList . length ,
138- severity : vulnCounts ,
145+ count : vulnsTotal ,
146+ severity : vulnsSeverity ,
139147 } ,
140148 metadata : {
141149 license : pkgData . license ,
0 commit comments