[READ-ONLY] a fast, modern browser for the npm registry
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

test: fixes

+14 -9
+11 -6
app/composables/useNpmRegistry.ts
··· 57 57 * Transform a full Packument into a slimmed version for client-side use. 58 58 * Reduces payload size by: 59 59 * - Removing readme (fetched separately) 60 - * - Including only: 5 most recent versions + one version per dist-tag 60 + * - Including only: 5 most recent versions + one version per dist-tag + requested version 61 61 * - Stripping unnecessary fields from version objects 62 62 */ 63 - function transformPackument(pkg: Packument): SlimPackument { 63 + function transformPackument(pkg: Packument, requestedVersion?: string | null): SlimPackument { 64 64 // Get versions pointed to by dist-tags 65 65 const distTagVersions = new Set(Object.values(pkg['dist-tags'] ?? {})) 66 66 ··· 75 75 }) 76 76 .slice(0, RECENT_VERSIONS_COUNT) 77 77 78 - // Combine: recent versions + dist-tag versions (deduplicated) 78 + // Combine: recent versions + dist-tag versions + requested version (deduplicated) 79 79 const includedVersions = new Set([...recentVersions, ...distTagVersions]) 80 + 81 + // Add the requested version if it exists in the package 82 + if (requestedVersion && pkg.versions[requestedVersion]) { 83 + includedVersions.add(requestedVersion) 84 + } 80 85 81 86 // Build filtered versions object 82 87 const filteredVersions: Record<string, PackumentVersion> = {} ··· 115 120 } 116 121 } 117 122 118 - export function usePackage(name: MaybeRefOrGetter<string>) { 123 + export function usePackage(name: MaybeRefOrGetter<string>, requestedVersion?: MaybeRefOrGetter<string | null>) { 119 124 return useLazyAsyncData( 120 - () => `package:${toValue(name)}`, 121 - () => fetchNpmPackage(toValue(name)).then(r => transformPackument(r)), 125 + () => `package:${toValue(name)}:${toValue(requestedVersion) ?? ''}`, 126 + () => fetchNpmPackage(toValue(name)).then(r => transformPackument(r, toValue(requestedVersion))), 122 127 ) 123 128 } 124 129
+2 -2
app/pages/package/[...name].vue
··· 40 40 return match ? match[1] : null 41 41 }) 42 42 43 - const { data: pkg, status, error } = usePackage(packageName) 43 + const { data: pkg, status, error } = usePackage(packageName, requestedVersion) 44 44 45 45 const { data: downloads } = usePackageDownloads(packageName, 'last-week') 46 46 47 47 // Fetch README for specific version if requested, otherwise latest 48 - const { data: readmeData } = useLazyFetch(() => { 48 + const { data: readmeData } = useLazyFetch<{ html: string }>(() => { 49 49 const base = `/api/registry/readme/${packageName.value}` 50 50 const version = requestedVersion.value 51 51 return version ? `${base}/v/${version}` : base
+1 -1
package.json
··· 15 15 "generate": "nuxt generate", 16 16 "preview": "nuxt preview", 17 17 "postinstall": "nuxt prepare && simple-git-hooks", 18 - "test:types": "vue-tsc -b --noEmit", 18 + "test:types": "nuxt prepare && vue-tsc -b --noEmit", 19 19 "test": "vitest", 20 20 "test:coverage": "vitest --coverage", 21 21 "test:unit": "vitest --project unit",