Skip to content
18 changes: 16 additions & 2 deletions app/composables/usePackageComparison.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ import { getDependencyCount } from '~/utils/npm/dependency-count'
export interface PackageComparisonData {
package: ComparisonPackage
downloads?: number
/** Total likes from atproto */
totalLikes: number
/** Package's own unpacked size (from dist.unpackedSize) */
packageSize?: number
/** Number of direct dependencies */
Expand Down Expand Up @@ -104,16 +106,19 @@ export function usePackageComparison(packageNames: MaybeRefOrGetter<string[]>) {
if (!latestVersion) return null

// Fetch fast additional data in parallel (optional - failures are ok)
const [downloads, analysis, vulns] = await Promise.all([
const [downloads, analysis, vulns, likes] = await Promise.all([
$fetch<{ downloads: number }>(
`https://api.npmjs.org/downloads/point/last-week/${encodePackageName(name)}`,
).catch(() => null),
$fetch<PackageAnalysisResponse>(`/api/registry/analysis/${name}`).catch(() => null),
$fetch<VulnerabilityTreeResult>(`/api/registry/vulnerabilities/${name}`).catch(
() => null,
),
$fetch<PackageLikes>(`/api/social/likes/${name}`).catch(() => ({
totalLikes: 0,
userHasLiked: false,
})),
Comment thread
Sukiiu marked this conversation as resolved.
Outdated
])

const versionData = pkgData.versions[latestVersion]
const packageSize = versionData?.dist?.unpackedSize

Expand Down Expand Up @@ -160,6 +165,7 @@ export function usePackageComparison(packageNames: MaybeRefOrGetter<string[]>) {
deprecated: versionData?.deprecated,
},
isBinaryOnly: isBinary,
totalLikes: likes.totalLikes,
}
} catch {
return null
Expand Down Expand Up @@ -269,6 +275,14 @@ function computeFacetValue(
status: 'neutral',
}
}
case 'totalLikes': {
if (data.totalLikes === undefined) return null
return {
raw: data.totalLikes,
display: formatCompactNumber(data.totalLikes),
status: 'neutral',
}
}
case 'packageSize': {
if (!data.packageSize) return null
return {
Expand Down
4 changes: 4 additions & 0 deletions i18n/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -908,6 +908,10 @@
"label": "Downloads/wk",
"description": "Weekly download count"
},
"totalLikes": {
"label": "Likes",
"description": "Number of likes"
},
"lastUpdated": {
"label": "Published",
"description": "When this version was published"
Expand Down
4 changes: 4 additions & 0 deletions i18n/locales/fr-FR.json
Original file line number Diff line number Diff line change
Expand Up @@ -891,6 +891,10 @@
"label": "Téléch./semaine",
"description": "Nombre de téléchargements par semaine"
},
"totalLikes": {
"label": "Likes",
"description": "Nombre de likes"
},
"lastUpdated": {
"label": "Publié",
"description": "Quand cette version a été publiée"
Expand Down
4 changes: 4 additions & 0 deletions lunaria/files/en-GB.json
Original file line number Diff line number Diff line change
Expand Up @@ -908,6 +908,10 @@
"label": "Downloads/wk",
"description": "Weekly download count"
},
"totalLikes": {
"label": "Likes",
"description": "Number of likes"
},
"lastUpdated": {
"label": "Published",
"description": "When this version was published"
Expand Down
4 changes: 4 additions & 0 deletions lunaria/files/en-US.json
Original file line number Diff line number Diff line change
Expand Up @@ -908,6 +908,10 @@
"label": "Downloads/wk",
"description": "Weekly download count"
},
"totalLikes": {
"label": "Likes",
"description": "Number of likes"
},
"lastUpdated": {
"label": "Published",
"description": "When this version was published"
Expand Down
4 changes: 4 additions & 0 deletions lunaria/files/fr-FR.json
Original file line number Diff line number Diff line change
Expand Up @@ -891,6 +891,10 @@
"label": "Téléch./semaine",
"description": "Nombre de téléchargements par semaine"
},
"totalLikes": {
"label": "Likes",
"description": "Nombre de likes"
},
"lastUpdated": {
"label": "Publié",
"description": "Quand cette version a été publiée"
Expand Down
4 changes: 4 additions & 0 deletions shared/types/comparison.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export type ComparisonFacet =
| 'dependencies'
| 'totalDependencies'
| 'deprecated'
| 'totalLikes'

/** Facet metadata for UI display */
export interface FacetInfo {
Expand Down Expand Up @@ -46,6 +47,9 @@ export const FACET_INFO: Record<ComparisonFacet, Omit<FacetInfo, 'id'>> = {
downloads: {
category: 'health',
},
totalLikes: {
category: 'health',
},
lastUpdated: {
category: 'health',
},
Expand Down
Loading