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 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: ...
Gets the total downloads for a given period for a specific package.
GET https://127.0.0.1:4873/downloads/point/{period}/{package}
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.
JSON output:
{
"downloads": 16230,
"start": "2023-01-01",
"end": "2023-01-31",
"package": "com.example.package"
}
Gets the downloads per day for a given period for a specific package.
GET https://127.0.0.1:4873/downloads/range/{period}/{package}
Same as for /downloads/point
.
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"
}
The stats data is stored in Redis using timeseries, hashes or sorted sets.
Timeseries for daily download counts for a specific package.
tspkghit:daily:<package_name> <timestamp_utc> <count> LABELS category tspkghit:daily pkgname <package_name>
Hash for download counts for a specific package breakdown by versions.
pkghit:ver:<package_name> <version> <count>
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>
The zpkghit:lastmonth
sorted set requries a cron job:
VERDACCIO_CONFIG=config.yaml npm run update-lastmonth