Socket
Book a DemoInstallSign in
Socket

nice-registry

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nice-registry

A proxy to the npm registry that serves fancied up package metadata.

latest
Source
npmnpm
Version
1.3.0
Version published
Maintainers
1
Created
Source

nice-registry [EXPERIMENTAL] 🔬

A stateless proxy server to the npm registry that serves fancied up package metadata.

How it Works

This is what the server does when you fetch a package:

Raw Registry Data

First, the raw package metadata is fetched from registry.npmjs.com. This is the only network request made per package.

Dependents

The dependent-packages module adds dependency info for the package, without making a network request:

  • directDependents
  • directDependentsCount
  • directDevDependents
  • directDevDependentsCount
  • totalDirectDependentsCount

Downloads

The download-counts adds a averageDownloadsPerDay property to the package. This is also added without making a network request/

Owners

The owners and owner-profiles packages are used to create an owners array which includes the following metadata for each npm user, as available:

  • name - full name
  • email - public email address
  • homepage - a URL
  • github - GitHub handle
  • twitter - Twitter handle
  • gravatar - HTTPS gravatar url
  • packageCount - how many packages thes user owns

No network requests are made here either.

Niceties

Lastly, the resulting package object is turned into a [nice package], which has these qualities:

  • uses normalize-package-data as a baseline for cleanup, then:
  • uses the doc['dist-tags'].latest as the baseline for package metadata
  • derives starsCount from the users object
  • derives a versions array from the time object
  • renames _npmUser to lastPublisher, because it's a more intuitive name.
  • renames maintainers to owners, for consistency with the npm's CLI commands.
  • normalizes GitHub repository URLs to https format
  • moves internal bookkeeping properties like _id and _from into an other object that can easily be omitted.

HTTP API

The following routes are supported:

GET /package/:name

Fetches a single package. The following query params are allowed:

Examples:

GET /packages

Fetches multiple packages by name. The following query params are allowed:

  • names (required) - a comma-delimited string of package names to fetch
  • pick - a comma-delimited string of properties to include in the response.
  • omit - a comma-delimited string of properties to omit from the response.

Examples:

Public Server

There's a public instance running on Heroku.

Example URL: http://nice-registry.herokuapp.com/package/cheerio?omit=readme,versions,other,directDependents,

Running Your Own Instance

This server's design follows the 12 Factor development methodology popularized by Heroku. It is stateless: that is, it does not include a database, nor does it write to the filesystem.

Each package request makes just one network call, and that is to fetch the main package data from the npm registry. Supplementary data for download counts, dependents, owner profiles, etc, is provided by offline datasets that are automatically updated and published to npm by bots.

This server can optional cache responses in Redis. If you specify a REDIS_URL in the environment, then it will be used. If you don't, it won't. No configuration required.

Setting up your own instance on Heroku only requires a few commands:

git clone https://github.com/nice-registry/nice-registry
cd nice-registry
heroku create my-nice-registry
heroku addons:add heroku-redis
git push heroku master

Tests

npm install
npm test

License

MIT

FAQs

Package last updated on 20 Dec 2017

Did you know?

Socket

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