MCPcopy Create free account
hub / github.com/npmx-dev/npmx.dev / comparePackages

Function comparePackages

app/composables/useStructuredFilters.ts:314–344  ·  view source on GitHub ↗
(a: NpmSearchResult, b: NpmSearchResult, option: SortOption)

Source from the content-addressed store, hash-verified

312
313 // Sort comparators
314 function comparePackages(a: NpmSearchResult, b: NpmSearchResult, option: SortOption): number {
315 const { key, direction } = parseSortOption(option)
316 const multiplier = direction === 'asc' ? 1 : -1
317
318 let diff: number
319 switch (key) {
320 case 'downloads-week':
321 diff = (a.downloads?.weekly ?? 0) - (b.downloads?.weekly ?? 0)
322 break
323 case 'downloads-day':
324 case 'downloads-month':
325 case 'downloads-year':
326 // Not yet implemented - fall back to weekly
327 diff = (a.downloads?.weekly ?? 0) - (b.downloads?.weekly ?? 0)
328 break
329 case 'updated':
330 diff = Date.parse(a.package.date) - Date.parse(b.package.date)
331 break
332 case 'name':
333 diff = a.package.name.localeCompare(b.package.name)
334 break
335 case 'relevance':
336 // Relevance preserves server order (already sorted by search relevance)
337 diff = 0
338 break
339 default:
340 diff = 0
341 }
342
343 return diff * multiplier
344 }
345
346 // Apply sorting to filtered results
347 const sortedPackages = computed(() => {

Callers 1

useStructuredFiltersFunction · 0.85

Calls 1

parseSortOptionFunction · 0.90

Tested by

no test coverage detected