UNPKG

query-registry

Version:

Query the npm registry for packuments, manifests, packages and download counts

25 lines (22 loc) 1.01 kB
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`)); }