@@ -98,11 +98,15 @@ export async function createPackageFromNpm(
98
98
throw new Error ( parsed . error ) ;
99
99
}
100
100
const packageName = parsed . data . name ;
101
- const spec =
101
+ const specs =
102
102
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 ) ;
106
110
const pkg = await createPackageFromTarballUrl ( tarballUrl ) ;
107
111
if ( ! definitelyTyped || pkg . containsTypes ( ) ) {
108
112
return pkg ;
@@ -181,6 +185,10 @@ async function getNpmTarballUrl(
181
185
for ( const packageSpec of packageSpecs ) {
182
186
const manifestUrl = `https://registry.npmjs.org/${ packageSpec . name } /${ packageSpec . version || "latest" } ` ;
183
187
const doc = packument || ( await fetch ( manifestUrl ) . then ( ( r ) => r . json ( ) ) ) ;
188
+ if ( typeof doc !== "object" ) {
189
+ continue ;
190
+ }
191
+ const isManifest = ! ! doc . version ;
184
192
let tarballUrl , packageVersion ;
185
193
if ( packageSpec . versionKind === "range" ) {
186
194
packageVersion = maxSatisfying (
@@ -202,9 +210,12 @@ async function getNpmTarballUrl(
202
210
continue ;
203
211
}
204
212
tarballUrl = doc . versions [ packageVersion ] . dist . tarball ;
205
- } else {
213
+ } else if ( isManifest ) {
206
214
packageVersion = doc . version ;
207
215
tarballUrl = doc . dist . tarball ;
216
+ } else {
217
+ packageVersion = doc [ "dist-tags" ] . latest ;
218
+ tarballUrl = doc . versions [ packageVersion ] . dist . tarball ;
208
219
}
209
220
210
221
if ( packageVersion && tarballUrl ) {
0 commit comments