https://github.com/openupm/verdaccio-install-counts
The package implements API endpoints for package download counts similar to NPM
https://github.com/openupm/verdaccio-install-counts
Last synced: about 1 month ago
JSON representation
The package implements API endpoints for package download counts similar to NPM
- Host: GitHub
- URL: https://github.com/openupm/verdaccio-install-counts
- Owner: openupm
- License: bsd-3-clause
- Created: 2023-05-25T17:14:43.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-10-26T15:09:54.000Z (over 1 year ago)
- Last Synced: 2025-03-27T20:44:35.484Z (2 months ago)
- Language: TypeScript
- Homepage:
- Size: 228 KB
- Stars: 5
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# verdaccio-install-counts
* [Introduction](#Introduction)
* [Install](#Install)
* [API endpoints](#APIendpoints)
* [Point values](#Pointvalues)
* [Parameters](#Parameters)
* [Output](#Output)
* [Ranges](#Ranges)
* [Parameters](#Parameters-1)
* [Output](#Output-1)
* [Redis data structure](#Redisdatastructure)
* [Timeseries](#Timeseries)
* [Hashes](#Hashes)
* [Sorted sets](#Sortedsets)
* [Cron](#Cron)This package implements API endpoints for package download counts similar to [the ones](https://github.com/npm/registry/blob/master/docs/download-counts.md) provided by npm, but limited to a specific package.
The stats data is stored in Redis, using [RedisTimeSeries](https://redis.io/docs/stack/timeseries/). Please refer to the [Redis data structure](#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:
```javascript
{
"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:
```javascript
{
"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: LABELS category tspkghit:daily pkgname
```
Hash for download counts for a specific package breakdown by versions.
```
pkghit:ver:
```
Sorted set for all-time download counts.
```
zpkghit:alltime
```
Sorted set for the last 30 days' download counts.
```
zpkghit:lastmonth
```
The `zpkghit:lastmonth` sorted set requries a cron job:
```bash
VERDACCIO_CONFIG=config.yaml npm run update-lastmonth
```