Socket
Socket
Sign inDemoInstall

query-registry

Package Overview
Dependencies
9
Maintainers
1
Versions
24
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    query-registry

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


Version published
Maintainers
1
Install size
1.01 MB
Created

Changelog

Source

[3.0.0] - 2024-04-23

Version 3 is a complete rewrite of query-registry.

This package is now a pure ESM package and uses the fetch global function to perform network requests.

Additionally, every response returned by the registry is now validated against its expected schema. This means that data can now be safely accessed according to the corresponding TypeScript type definition. Unexpected data will reject with an error; in this case open an issue to propose changes to the schemas.

Added

These are the current package's exports:

  • Variables:
    • cache
    • npmRegistryDownloadsApiUrl
    • npmRegistryUrl
  • Functions:
    • getAbbreviatedPackument()
    • getBulkDailyPackageDownloads()
    • getBulkPackageDownloads()
    • getDailyPackageDownloads()
    • getDailyRegistryDownloads()
    • getPackageDownloads()
    • getPackageManifest()
    • getPackageVersionsDownloads()
    • getPackument()
    • getRegistryDownloads()
    • getRegistryMetadata()
    • getRegistrySigningKeys()
    • searchPackages()
  • Zod schemas / TypeScript types:
    • AbbreviatedPackument
    • BulkDailyPackageDownloads
    • BulkPackageDownloads
    • DailyPackageDownloads
    • DailyRegistryDownloads
    • DownloadPeriod
    • PackageDownloads
    • PackageJson
    • PackageManifest
    • PackageVersionsDownloads
    • Packument
    • RegistryDownloads
    • RegistryMetadata
    • RegistrySigningKeys
    • SearchCriteria
    • SearchResults

Changed

  • BREAKING CHANGE: This package is now a pure ESM package.
  • BREAKING CHANGE: Require Node.js 20 (latest LTS).
  • BREAKING CHANGE: Use fetch for network requests.

Readme

Source

query-registry

Build status Coverage jsDocs.io Language npm License

query-registry is an API wrapper for the npm registry API.

Features

  • Provides functions to:
    • Get registry metadata.
    • Get registry public keys.
    • Get packuments (package documents) with full package metadata.
    • Get abbreviated packuments with installation data only.
    • Get package manifests for each version of a package.
    • Get download counts for the registry and for packages.
    • Search packages by name and other specific criteria.
  • Works in the browser.
  • Validates registry responses with zod.
  • Automatically caches registry responses for a short time.
  • Supports third-party npm-compatible registries.

Useful resources

Install

Using npm:

npm add query-registry

Using yarn:

yarn add query-registry

Using pnpm:

pnpm add query-registry

Using bun:

bun add query-registry

Usage examples

Registry

Get the metadata about the npm registry itself, if available:

import { getRegistryMetadata } from "query-registry";

const metadata = await getRegistryMetadata();

Get the public signing keys for the npm registry:

import { getRegistrySigningKeys } from "query-registry";

const { keys } = await getRegistrySigningKeys();

Packuments (Package documents)

Get the abbreviated packument containing only the necessary data to install the react package:

import { getAbbreviatedPackument } from "query-registry";

const abbrPackument = await getAbbreviatedPackument("react");

Get the full packument containing all the data available about the react package:

import { getPackument } from "query-registry";

const packument = await getPackument("react");

Package manifests

Get the manifest containing the original package.json data plus additional registry metadata for the latest version of the react package:

import { getPackageManifest } from "query-registry";

const manifest = await getPackageManifest("react");

Get the manifest for react@18.2.0 (semver version):

import { getPackageManifest } from "query-registry";

const manifest = await getPackageManifest("react", "18.2.0");

Get the manifest for react@next (distribution tag):

import { getPackageManifest } from "query-registry";

const manifest = await getPackageManifest("react", "next");

Search packages

Search packages related to react (e.g., react, react-dom, ...):

import { searchPackages } from "query-registry";

const results = await searchPackages({ text: "react" });

Download counts

Get the total number of downloads for package react for the last month:

import { getPackageDownloads } from "query-registry";

const { downloads } = await getPackageDownloads("react", "last-month");

There are also these other download counts functions available: getBulkDailyPackageDownloads, getBulkPackageDownloads, getDailyPackageDownloads, getDailyRegistryDownloads and getPackageVersionsDownloads.

Cache

Clear the internal cache.

import { cache } from "query-registry";

cache.clear();

See the quick-lru package for the cache API.

License

MIT

Copyright (c) 2024 Edoardo Scibona

See LICENSE file.

Keywords

FAQs

Last updated on 23 Apr 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc