@@ -98,11 +98,15 @@ export async function createPackageFromNpm(
9898 throw new Error ( parsed . error ) ;
9999 }
100100 const packageName = parsed . data . name ;
101- const spec =
101+ const specs =
102102 parsed . data . versionKind === "none" && typeof definitelyTyped === "string"
103- ? parsePackageSpec ( `${ packageName } @${ definitelyTyped } ` )
104- : parsed ;
105- const { tarballUrl, packageVersion } = await getNpmTarballUrl ( [ spec . data || parsed . data ] , before ) ;
103+ ? [
104+ parsePackageSpec ( `${ packageName } @${ major ( definitelyTyped ) } .${ minor ( definitelyTyped ) } ` ) . data ! ,
105+ parsePackageSpec ( `${ packageName } @${ major ( definitelyTyped ) } ` ) . data ! ,
106+ parsePackageSpec ( `${ packageName } @latest` ) . data ! ,
107+ ]
108+ : [ parsed . data ] ;
109+ const { tarballUrl, packageVersion } = await getNpmTarballUrl ( specs , before ) ;
106110 const pkg = await createPackageFromTarballUrl ( tarballUrl ) ;
107111 if ( ! definitelyTyped || pkg . containsTypes ( ) ) {
108112 return pkg ;
@@ -181,6 +185,10 @@ async function getNpmTarballUrl(
181185 for ( const packageSpec of packageSpecs ) {
182186 const manifestUrl = `https://registry.npmjs.org/${ packageSpec . name } /${ packageSpec . version || "latest" } ` ;
183187 const doc = packument || ( await fetch ( manifestUrl ) . then ( ( r ) => r . json ( ) ) ) ;
188+ if ( typeof doc !== "object" ) {
189+ continue ;
190+ }
191+ const isManifest = ! ! doc . version ;
184192 let tarballUrl , packageVersion ;
185193 if ( packageSpec . versionKind === "range" ) {
186194 packageVersion = maxSatisfying (
@@ -202,9 +210,12 @@ async function getNpmTarballUrl(
202210 continue ;
203211 }
204212 tarballUrl = doc . versions [ packageVersion ] . dist . tarball ;
205- } else {
213+ } else if ( isManifest ) {
206214 packageVersion = doc . version ;
207215 tarballUrl = doc . dist . tarball ;
216+ } else {
217+ packageVersion = doc [ "dist-tags" ] . latest ;
218+ tarballUrl = doc . versions [ packageVersion ] . dist . tarball ;
208219 }
209220
210221 if ( packageVersion && tarballUrl ) {
0 commit comments