Skip to content

Commit 082fabf

Browse files
authored
fix: download fewer metadata from npm registry (#436)
1 parent a05aec6 commit 082fabf

File tree

2 files changed

+6
-14
lines changed

2 files changed

+6
-14
lines changed

sources/npmRegistryUtils.ts

+6-14
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export const DEFAULT_HEADERS: Record<string, string> = {
99
};
1010
export const DEFAULT_NPM_REGISTRY_URL = `https://registry.npmjs.org`;
1111

12-
export async function fetchAsJson(packageName: string) {
12+
export async function fetchAsJson(packageName: string, version?: string) {
1313
const npmRegistryUrl = process.env.COREPACK_NPM_REGISTRY || DEFAULT_NPM_REGISTRY_URL;
1414

1515
if (process.env.COREPACK_ENABLE_NETWORK === `0`)
@@ -25,18 +25,14 @@ export async function fetchAsJson(packageName: string) {
2525
headers.authorization = `Basic ${encodedCreds}`;
2626
}
2727

28-
return httpUtils.fetchAsJson(`${npmRegistryUrl}/${packageName}`, {headers});
28+
return httpUtils.fetchAsJson(`${npmRegistryUrl}/${packageName}${version ? `/${version}` : ``}`, {headers});
2929
}
3030

3131
export async function fetchLatestStableVersion(packageName: string) {
32-
const metadata = await fetchAsJson(packageName);
33-
34-
const {latest} = metadata[`dist-tags`];
35-
if (latest === undefined)
36-
throw new Error(`${packageName} does not have a "latest" tag.`);
32+
const metadata = await fetchAsJson(packageName, `latest`);
3733

38-
const {shasum} = metadata.versions[latest].dist;
39-
return `${latest}+sha1.${shasum}`;
34+
const {shasum} = metadata.dist;
35+
return `${metadata.version}+sha1.${shasum}`;
4036
}
4137

4238
export async function fetchAvailableTags(packageName: string) {
@@ -50,11 +46,7 @@ export async function fetchAvailableVersions(packageName: string) {
5046
}
5147

5248
export async function fetchTarballUrl(packageName: string, version: string) {
53-
const metadata = await fetchAsJson(packageName);
54-
const versionMetadata = metadata.versions?.[version];
55-
if (versionMetadata === undefined)
56-
throw new Error(`${packageName}@${version} does not exist.`);
57-
49+
const versionMetadata = await fetchAsJson(packageName, version);
5850
const {tarball} = versionMetadata.dist;
5951
if (tarball === undefined || !tarball.startsWith(`http`))
6052
throw new Error(`${packageName}@${version} does not have a valid tarball.`);

tests/nocks.db

992 KB
Binary file not shown.

0 commit comments

Comments
 (0)