1- import type { Packument } from " #shared/types" ;
2- import { encodePackageName , fetchLatestVersion } from " #shared/utils/npm" ;
3- import { maxSatisfying , prerelease } from " semver" ;
4- import { CACHE_MAX_AGE_FIVE_MINUTES } from " #shared/utils/constants" ;
1+ import type { Packument } from ' #shared/types'
2+ import { encodePackageName , fetchLatestVersion } from ' #shared/utils/npm'
3+ import { maxSatisfying , prerelease } from ' semver'
4+ import { CACHE_MAX_AGE_FIVE_MINUTES } from ' #shared/utils/constants'
55
6- const NPM_REGISTRY = " https://registry.npmjs.org" ;
6+ const NPM_REGISTRY = ' https://registry.npmjs.org'
77
88export const fetchNpmPackage = defineBypassableCachedFunction (
99 async ( name : string ) : Promise < Packument > => {
10- const encodedName = encodePackageName ( name ) ;
11- return await $fetch < Packument > ( `${ NPM_REGISTRY } /${ encodedName } ` ) ;
10+ const encodedName = encodePackageName ( name )
11+ return await $fetch < Packument > ( `${ NPM_REGISTRY } /${ encodedName } ` )
1212 } ,
1313 {
1414 maxAge : CACHE_MAX_AGE_FIVE_MINUTES ,
1515 swr : true ,
16- name : " npm-package" ,
17- bypassKey : " npm-package" ,
16+ name : ' npm-package' ,
17+ bypassKey : ' npm-package' ,
1818 getKey : ( name : string ) => name ,
1919 } ,
20- ) ;
20+ )
2121
2222/**
2323 * Get the latest version of a package using fast-npm-meta API.
@@ -26,18 +26,16 @@ export const fetchNpmPackage = defineBypassableCachedFunction(
2626 * @param name Package name
2727 * @returns Latest version string or null if not found
2828 */
29- export async function fetchLatestVersionWithFallback (
30- name : string ,
31- ) : Promise < string | null > {
32- const version = await fetchLatestVersion ( name ) ;
33- if ( version ) return version ;
29+ export async function fetchLatestVersionWithFallback ( name : string ) : Promise < string | null > {
30+ const version = await fetchLatestVersion ( name )
31+ if ( version ) return version
3432
3533 // Fallback to full packument (also cached)
3634 try {
37- const packument = await fetchNpmPackage ( name ) ;
38- return packument [ " dist-tags" ] ?. latest ?? null ;
35+ const packument = await fetchNpmPackage ( name )
36+ return packument [ ' dist-tags' ] ?. latest ?? null
3937 } catch {
40- return null ;
38+ return null
4139 }
4240}
4341
@@ -48,10 +46,9 @@ export async function fetchLatestVersionWithFallback(
4846function constraintIncludesPrerelease ( constraint : string ) : boolean {
4947 // Look for prerelease identifiers in the constraint
5048 return (
51- / - ( a l p h a | b e t a | r c | n e x t | c a n a r y | d e v | p r e v i e w | p r e | e x p e r i m e n t a l ) / i. test (
52- constraint ,
53- ) || / - \d / . test ( constraint )
54- ) ; // e.g., -0, -1
49+ / - ( a l p h a | b e t a | r c | n e x t | c a n a r y | d e v | p r e v i e w | p r e | e x p e r i m e n t a l ) / i. test ( constraint ) ||
50+ / - \d / . test ( constraint )
51+ ) // e.g., -0, -1
5552}
5653
5754/**
@@ -66,17 +63,17 @@ export async function resolveVersionConstraint(
6663 constraint : string ,
6764) : Promise < string | null > {
6865 try {
69- const packument = await fetchNpmPackage ( packageName ) ;
70- let versions = Object . keys ( packument . versions ) ;
66+ const packument = await fetchNpmPackage ( packageName )
67+ let versions = Object . keys ( packument . versions )
7168
7269 // Filter out prerelease versions unless constraint explicitly includes one
7370 if ( ! constraintIncludesPrerelease ( constraint ) ) {
74- versions = versions . filter ( ( v ) => ! prerelease ( v ) ) ;
71+ versions = versions . filter ( v => ! prerelease ( v ) )
7572 }
7673
77- return maxSatisfying ( versions , constraint ) ;
74+ return maxSatisfying ( versions , constraint )
7875 } catch {
79- return null ;
76+ return null
8077 }
8178}
8279
@@ -87,19 +84,19 @@ export async function resolveVersionConstraint(
8784export async function resolveDependencyVersions (
8885 dependencies : Record < string , string > ,
8986) : Promise < Record < string , string > > {
90- const entries = Object . entries ( dependencies ) ;
87+ const entries = Object . entries ( dependencies )
9188 const results = await Promise . all (
9289 entries . map ( async ( [ name , constraint ] ) => {
93- const resolved = await resolveVersionConstraint ( name , constraint ) ;
94- return [ name , resolved ] as const ;
90+ const resolved = await resolveVersionConstraint ( name , constraint )
91+ return [ name , resolved ] as const
9592 } ) ,
96- ) ;
93+ )
9794
98- const resolved : Record < string , string > = { } ;
95+ const resolved : Record < string , string > = { }
9996 for ( const [ name , version ] of results ) {
10097 if ( version ) {
101- resolved [ name ] = version ;
98+ resolved [ name ] = version
10299 }
103100 }
104- return resolved ;
101+ return resolved
105102}
0 commit comments