@@ -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
0 commit comments