Skip to content

The package implements API endpoints for package download counts similar to NPM

License

Notifications You must be signed in to change notification settings

openupm/verdaccio-install-counts

Repository files navigation

verdaccio-install-counts

Introduction

This package implements API endpoints for package download counts similar to the ones provided by npm, but limited to a specific package.

The stats data is stored in Redis, using RedisTimeSeries. Please refer to the Redis data structure section for more information.

Note that this package does not include a widget for the Verdaccio web UI.

Install

Install the package.

npm install verdaccio-install-counts

Update the middlewares seciton of verdaccio's config.yaml.

middlewares:
  install-counts:
    enabled: true
    redis:
      host: 127.0.0.1
      port: 6379
      password: ...

API endpoints

Point values

Gets the total downloads for a given period for a specific package.

GET https://127.0.0.1:4873/downloads/point/{period}/{package}

Parameters

Acceptable values for period for a specific package. The timezone is GMT.

all-time
Gets total downloads.
last-day
Gets downloads for the last available day.
last-week
Gets downloads for the last 7 available days.
last-month
Gets downloads for the last 30 available days.
{start_date}:{end_date}
Gets downloads for a given date range. The date format is yyyy-mm-dd.

Output

JSON output:

{
  "downloads": 16230,
  "start": "2023-01-01",
  "end": "2023-01-31",
  "package": "com.example.package"
}

Ranges

Gets the downloads per day for a given period for a specific package.

GET https://127.0.0.1:4873/downloads/range/{period}/{package}

Parameters

Same as for /downloads/point.

Output

Responses are very similar to the point API, except that downloads is now an array of days with downloads on each day:

{
    "downloads": [
        {
            "day": "2023-01-01",
            "downloads": 540
        },
        ..
        {
            "day": "2023-01-31",
            "downloads": 425
        }
    ],
    "start": "2023-01-01",
    "end": "2023-01-31",
    "package": "com.example.package"
}

Redis data structure

The stats data is stored in Redis using timeseries, hashes or sorted sets.

Timeseries

Timeseries for daily download counts for a specific package.

tspkghit:daily:<package_name> <timestamp_utc> <count> LABELS category tspkghit:daily pkgname <package_name>

Hashes

Hash for download counts for a specific package breakdown by versions.

pkghit:ver:<package_name> <version> <count>

Sorted sets

Sorted set for all-time download counts.

zpkghit:alltime <count> <package_name>

Sorted set for the last 30 days' download counts.

zpkghit:lastmonth <count> <package_name> 

Cron

The zpkghit:lastmonth sorted set requries a cron job:

VERDACCIO_CONFIG=config.yaml npm run update-lastmonth

About

The package implements API endpoints for package download counts similar to NPM

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published