query-registry
Version:
Query the npm registry for packuments, manifests, packages and download counts
24 lines (21 loc) • 1.27 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 { DailyPackageDownloads } from "./get-daily-package-downloads.js";
import { npmRegistryDownloadsApiUrl } from "./npm-registry.js";
export const BulkDailyPackageDownloads = z.record(z.string(), z.union([z.null(), DailyPackageDownloads]));
/**
`getBulkDailyPackageDownloads` returns the total number of downloads for each day
for some packages in the given time period.
@param names - list of package names; the npm registry does not support scoped packages and handles a maximum of 128 packages at a time
@param period - {@link DownloadPeriod | time period} in which downloads happened; the npm registry limits bulk data to the last 365 days
@param registry - URL of the registry downloads API (default: npm registry downloads API)
@see {@link BulkDailyPackageDownloads}
*/
export async function getBulkDailyPackageDownloads(names, period, registry = npmRegistryDownloadsApiUrl) {
for (const name of names) {
assertValidPackageName(name);
}
return await fetchData(BulkDailyPackageDownloads, urlJoin(registry, `/downloads/range/${period}/${names.join(",")}`));
}