Skip to content

Commit 9795ff2

Browse files
committed
chore: update
1 parent 493f880 commit 9795ff2

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

src/index.ts

+19-10
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ export async function downloadWithNpmHttp(name: string, tempDir: string, tempFil
175175
export async function downloadWithHttp(name: string, tempDir: string, tempFile: string, retry: number, logger: any) {
176176
const tarballUrl = await Promise.any([
177177
retryAsync(() => getTarballUrlFromRegistry(name), retry),
178-
// retryAsync(() => getTarballUrlFromYarn(name), retry),
178+
retryAsync(() => getTarballUrlFromYarn(name), retry),
179179
retryAsync(() => getTarballUrlFromTencent(name), retry),
180180
]).catch((error) => {
181181
logger.error(`[fetch-npm]: Failed to fetch tarball URL from all sources: ${error}`)
@@ -208,7 +208,7 @@ export async function downloadWithHttp(name: string, tempDir: string, tempFile:
208208
}
209209

210210
async function getTarballUrlFromRegistry(name: string): Promise<string> {
211-
const registryUrl = `https://registry.npmjs.org/${name.replace('/', '%2F')}`
211+
const registryUrl = `https://registry.npmjs.org/${name.replace(/@(\d+\.\d+\.\d+)/, '/$1')}`
212212
const data: Uint8Array[] = []
213213
await new Promise((resolve, reject) => {
214214
https.get(registryUrl, (response) => {
@@ -219,12 +219,15 @@ async function getTarballUrlFromRegistry(name: string): Promise<string> {
219219
})
220220

221221
const metadata = JSON.parse(data.toString())
222-
const version = metadata['dist-tags'].latest
223-
return metadata.versions[version].dist.tarball
222+
if (metadata['dist-tags']) {
223+
const version = metadata['dist-tags'].latest
224+
return metadata.versions[version].dist.tarball
225+
}
226+
return metadata.dist.tarball
224227
}
225228

226229
export async function getTarballUrlFromYarn(name: string): Promise<string> {
227-
const registryUrl = `https://registry.yarnpkg.com/${name.replace('/', '%2F')}`
230+
const registryUrl = `https://registry.yarnpkg.com/${name.replace(/@(\d+\.\d+\.\d+)/, '/$1')}`
228231
const data: Uint8Array[] = []
229232
await new Promise((resolve, reject) => {
230233
https.get(registryUrl, (response) => {
@@ -235,12 +238,15 @@ export async function getTarballUrlFromYarn(name: string): Promise<string> {
235238
})
236239

237240
const metadata = JSON5.parse(data.toString())
238-
const version = metadata['dist-tags'].latest
239-
return metadata.versions[version].dist.tarball
241+
if (metadata['dist-tags']) {
242+
const version = metadata['dist-tags'].latest
243+
return metadata.versions[version].dist.tarball
244+
}
245+
return metadata.dist.tarball
240246
}
241247

242248
async function getTarballUrlFromTencent(name: string): Promise<string> {
243-
const registryUrl = `https://mirrors.cloud.tencent.com/npm/${name.replace('/', '%2F')}`
249+
const registryUrl = `https://mirrors.cloud.tencent.com/npm/${name.replace(/@(\d+\.\d+\.\d+)/, '/$1')}`
244250
const data: Uint8Array[] = []
245251
await new Promise((resolve, reject) => {
246252
https.get(registryUrl, (response) => {
@@ -251,8 +257,11 @@ async function getTarballUrlFromTencent(name: string): Promise<string> {
251257
})
252258

253259
const metadata = JSON5.parse(data.toString())
254-
const version = metadata['dist-tags'].latest
255-
return metadata.versions[version].dist.tarball
260+
if (metadata['dist-tags']) {
261+
const version = metadata['dist-tags'].latest
262+
return metadata.versions[version].dist.tarball
263+
}
264+
return metadata.dist.tarball
256265
}
257266

258267
function requestAuth(tempDir: string) {

0 commit comments

Comments
 (0)