query-registry
Version:
Query the npm registry for packuments, manifests, packages and download counts
25 lines (22 loc) • 1.01 kB
JavaScript
import urlJoin from "url-join";
import * as z from "zod";
import { assertValidPackageName } from "./assert-valid-package-name.js";
import { fetchData } from "./fetch-data.js";
import { npmRegistryDownloadsApiUrl } from "./npm-registry.js";
export const PackageVersionsDownloads = z.object({
/** Package name. */
package: z.string(),
/** Mapping of semver version numbers to total number of downloads. */
downloads: z.record(z.string(), z.number()),
});
/**
`getPackageVersionsDownloads` returns the total number of downloads
for each version of a package in the previous 7 days.
@param name - package name
@param registry - URL of the registry downloads API (default: npm registry downloads API)
@see {@link PackageVersionsDownloads}
*/
export async function getPackageVersionsDownloads(name, registry = npmRegistryDownloadsApiUrl) {
assertValidPackageName(name);
return await fetchData(PackageVersionsDownloads, urlJoin(registry, `/versions/${encodeURIComponent(name)}/last-week`));
}