Skip to content

Commit 139a090

Browse files
committed
test: fixes
1 parent b2584df commit 139a090

3 files changed

Lines changed: 14 additions & 9 deletions

File tree

app/composables/useNpmRegistry.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@ const RECENT_VERSIONS_COUNT = 5
5757
* Transform a full Packument into a slimmed version for client-side use.
5858
* Reduces payload size by:
5959
* - 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
6161
* - Stripping unnecessary fields from version objects
6262
*/
63-
function transformPackument(pkg: Packument): SlimPackument {
63+
function transformPackument(pkg: Packument, requestedVersion?: string | null): SlimPackument {
6464
// Get versions pointed to by dist-tags
6565
const distTagVersions = new Set(Object.values(pkg['dist-tags'] ?? {}))
6666

@@ -75,9 +75,14 @@ function transformPackument(pkg: Packument): SlimPackument {
7575
})
7676
.slice(0, RECENT_VERSIONS_COUNT)
7777

78-
// Combine: recent versions + dist-tag versions (deduplicated)
78+
// Combine: recent versions + dist-tag versions + requested version (deduplicated)
7979
const includedVersions = new Set([...recentVersions, ...distTagVersions])
8080

81+
// Add the requested version if it exists in the package
82+
if (requestedVersion && pkg.versions[requestedVersion]) {
83+
includedVersions.add(requestedVersion)
84+
}
85+
8186
// Build filtered versions object
8287
const filteredVersions: Record<string, PackumentVersion> = {}
8388
for (const v of includedVersions) {
@@ -115,10 +120,10 @@ function transformPackument(pkg: Packument): SlimPackument {
115120
}
116121
}
117122

118-
export function usePackage(name: MaybeRefOrGetter<string>) {
123+
export function usePackage(name: MaybeRefOrGetter<string>, requestedVersion?: MaybeRefOrGetter<string | null>) {
119124
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))),
122127
)
123128
}
124129

app/pages/package/[...name].vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,12 @@ const orgName = computed(() => {
4040
return match ? match[1] : null
4141
})
4242
43-
const { data: pkg, status, error } = usePackage(packageName)
43+
const { data: pkg, status, error } = usePackage(packageName, requestedVersion)
4444
4545
const { data: downloads } = usePackageDownloads(packageName, 'last-week')
4646
4747
// Fetch README for specific version if requested, otherwise latest
48-
const { data: readmeData } = useLazyFetch(() => {
48+
const { data: readmeData } = useLazyFetch<{ html: string }>(() => {
4949
const base = `/api/registry/readme/${packageName.value}`
5050
const version = requestedVersion.value
5151
return version ? `${base}/v/${version}` : base

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"generate": "nuxt generate",
1616
"preview": "nuxt preview",
1717
"postinstall": "nuxt prepare && simple-git-hooks",
18-
"test:types": "vue-tsc -b --noEmit",
18+
"test:types": "nuxt prepare && vue-tsc -b --noEmit",
1919
"test": "vitest",
2020
"test:coverage": "vitest --coverage",
2121
"test:unit": "vitest --project unit",

0 commit comments

Comments
 (0)