@mcptoolshop/registry-stats 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.es.md +134 -130
- package/README.fr.md +134 -130
- package/README.hi.md +134 -130
- package/README.it.md +134 -130
- package/README.ja.md +134 -130
- package/README.md +14 -10
- package/README.pt-BR.md +134 -130
- package/README.zh.md +134 -130
- package/package.json +2 -2
package/README.it.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.md">English</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
3
|
-
</p>
|
|
4
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.md">English</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
5
|
<p align="center">
|
|
6
6
|
<img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/registry-stats/readme.png" alt="registry-stats logo" width="400" />
|
|
7
7
|
</p>
|
|
8
|
-
|
|
8
|
+
|
|
9
9
|
<p align="center">
|
|
10
10
|
Five registries. One engine. Dashboard included.
|
|
11
11
|
</p>
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
<p align="center">
|
|
14
14
|
<a href="https://github.com/mcp-tool-shop-org/registry-stats/actions/workflows/pages.yml"><img src="https://github.com/mcp-tool-shop-org/registry-stats/actions/workflows/pages.yml/badge.svg" alt="CI"></a>
|
|
15
15
|
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="MIT License"></a>
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
<a href="https://mcp-tool-shop-org.github.io/registry-stats/dashboard/"><img src="https://img.shields.io/badge/Dashboard-live-green" alt="Dashboard"></a>
|
|
18
18
|
<a href="https://mcp-tool-shop-org.github.io/registry-stats/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
|
|
19
19
|
</p>
|
|
20
|
-
|
|
20
|
+
|
|
21
21
|
<p align="center">
|
|
22
22
|
<a href="#dashboard">Dashboard</a> ·
|
|
23
23
|
<a href="#desktop-app">Desktop App</a> ·
|
|
@@ -28,53 +28,57 @@
|
|
|
28
28
|
<a href="#config-file">Config</a> ·
|
|
29
29
|
<a href="#license">License</a>
|
|
30
30
|
</p>
|
|
31
|
-
|
|
31
|
+
|
|
32
32
|
---
|
|
33
|
-
|
|
34
|
-
Pubblica su npm, PyPI, NuGet, il Marketplace di VS Code e Docker Hub. Attualmente, rispondere alla domanda "come stanno andando i miei pacchetti?" significa controllare cinque siti diversi. **registry-stats** è la piattaforma completa: un motore TypeScript (CLI + API + server REST), una dashboard web interattiva e un'applicazione desktop nativa per Windows, il tutto proveniente da un unico repository.
|
|
35
|
-
|
|
36
|
-
Nessuna dipendenza a runtime. Utilizza la funzione nativa `fetch()`. Node 18 o superiore.
|
|
37
|
-
|
|
38
|
-
## Cosa c'è all'interno
|
|
39
|
-
|
|
40
|
-
| Livello | Cosa fa |
|
|
41
|
-
|-------|-------------|
|
|
42
|
-
| **Engine** | Libreria TypeScript + CLI + server REST. Interroga cinque registri con un'unica interfaccia. Pubblicato su npm come `@mcptoolshop/registry-stats`. |
|
|
43
|
-
| **Dashboard** | Applicazione web basata su Astro.
|
|
44
|
-
| **Desktop** | Applicazione nativa per Windows realizzata con WinUI 3 + WebView2. Include la dashboard offline e scarica le statistiche in tempo reale su richiesta. |
|
|
45
|
-
|
|
46
|
-
## Dashboard
|
|
47
|
-
|
|
48
|
-
Una dashboard con aggiornamenti automatici è disponibile all'indirizzo [`/dashboard/`](https://mcp-tool-shop-org.github.io/registry-stats/dashboard/).
|
|
49
|
-
|
|
50
|
-
- **
|
|
51
|
-
- **
|
|
52
|
-
- **
|
|
53
|
-
- **
|
|
54
|
-
- **
|
|
55
|
-
- **
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
33
|
+
|
|
34
|
+
Pubblica su npm, PyPI, NuGet, il Marketplace di VS Code e Docker Hub. Attualmente, rispondere alla domanda "come stanno andando i miei pacchetti?" significa controllare cinque siti diversi. **registry-stats** è la piattaforma completa: un motore TypeScript (CLI + API + server REST), una dashboard web interattiva e un'applicazione desktop nativa per Windows, il tutto proveniente da un unico repository.
|
|
35
|
+
|
|
36
|
+
Nessuna dipendenza a runtime. Utilizza la funzione nativa `fetch()`. Node 18 o superiore.
|
|
37
|
+
|
|
38
|
+
## Cosa c'è all'interno
|
|
39
|
+
|
|
40
|
+
| Livello | Cosa fa |
|
|
41
|
+
|-------|-------------|
|
|
42
|
+
| **Engine** | Libreria TypeScript + CLI + server REST. Interroga cinque registri con un'unica interfaccia. Pubblicato su npm come `@mcptoolshop/registry-stats`. |
|
|
43
|
+
| **Dashboard** | Applicazione web basata su Astro. Assistente chat AI, sei grafici interattivi, motore di crescita intelligente e guida con schede. Ricostruita settimanalmente tramite CI. |
|
|
44
|
+
| **Desktop** | Applicazione nativa per Windows realizzata con WinUI 3 + WebView2. Include la dashboard offline e scarica le statistiche in tempo reale su richiesta. |
|
|
45
|
+
|
|
46
|
+
## Dashboard
|
|
47
|
+
|
|
48
|
+
Una dashboard con aggiornamenti automatici è disponibile all'indirizzo [`/dashboard/`](https://mcp-tool-shop-org.github.io/registry-stats/dashboard/).
|
|
49
|
+
|
|
50
|
+
- **Interfaccia a schede** — Schede Home, Analytics, Leaderboard e Help
|
|
51
|
+
- **Assistente chat AI** — Registry Assistant alimentato da Ollama con contesto RAG, risposte in streaming, selettore di modelli e memoria della conversazione
|
|
52
|
+
- **Riepilogo esecutivo** — punteggio di salute (0–100), indice di diversità, variazione settimanale, download totali da tutti i registri
|
|
53
|
+
- **Sei grafici interattivi** — tendenza a 30 giorni (vista aggregata / per registro / top 5), quota del registro (area polare), rischio del portafoglio (istogramma + Gini & P90), top 10 momentum, tracker della velocità con sparkline e mappa termica a 30 giorni con rilevamento picchi (>2σ)
|
|
54
|
+
- **Motore di crescita intelligente** — gestisce la distorsione dei piccoli denominatori con soglia di base, limite percentuale e formula di velocità smorzata
|
|
55
|
+
- **Insight azionabili** — raccomandazioni auto-generate e avvisi di attenzione per i pacchetti in calo
|
|
56
|
+
- **Classifica** — tutti i pacchetti classificati per download settimanali con sparkline a 30 giorni e badge di tendenza intelligenti
|
|
57
|
+
- **Pagina di configurazione** — editor del portafoglio con validazione, sezione registry-sync e panoramica della pipeline
|
|
58
|
+
- **Scheda di aiuto** — guida intuitiva che copre ogni scheda, concetti chiave, suggerimenti per l'assistente AI, pipeline dei dati e link utili
|
|
59
|
+
- **Tema chiaro/scuro** — segue le preferenze del sistema
|
|
60
|
+
|
|
61
|
+
I dati vengono scaricati al momento della compilazione e la dashboard viene ricostruita settimanalmente tramite CI (il lunedì alle 06:00 UTC). Configura i pacchetti da monitorare in `site/src/data/packages.json`.
|
|
62
|
+
|
|
63
|
+
## Applicazione Desktop
|
|
64
|
+
|
|
65
|
+
Un'applicazione nativa per Windows che integra la dashboard in un ambiente WebView2 locale:
|
|
66
|
+
|
|
67
|
+
- **Funziona offline** — include file HTML/CSS/JS; funziona senza connessione a Internet.
|
|
68
|
+
- **Aggiornamento in tempo reale** — scarica `stats.json` da GitHub Pages su richiesta.
|
|
69
|
+
- **Esportazione CSV** — esporta i dati della classifica con un solo clic.
|
|
70
|
+
- **Pacchetto MSIX** — creato e firmato tramite CI utilizzando `desktop-ci.yml`.
|
|
71
|
+
|
|
72
|
+
Il codice sorgente dell'applicazione desktop si trova nella cartella `desktop/`. Realizzata con .NET 10 MAUI e destinata a WinUI 3.
|
|
73
|
+
|
|
74
|
+
## Installazione
|
|
75
|
+
|
|
72
76
|
```bash
|
|
73
77
|
npm install @mcptoolshop/registry-stats
|
|
74
78
|
```
|
|
75
|
-
|
|
76
|
-
## CLI (Interfaccia a riga di comando)
|
|
77
|
-
|
|
79
|
+
|
|
80
|
+
## CLI (Interfaccia a riga di comando)
|
|
81
|
+
|
|
78
82
|
```bash
|
|
79
83
|
# Query a single registry
|
|
80
84
|
registry-stats express -r npm
|
|
@@ -112,11 +116,11 @@ registry-stats express -r npm --range 2025-01-01:2025-06-30 --format chart
|
|
|
112
116
|
# Start a REST API server
|
|
113
117
|
registry-stats serve --port 3000
|
|
114
118
|
```
|
|
115
|
-
|
|
116
|
-
## File di configurazione
|
|
117
|
-
|
|
118
|
-
Create un file `registry-stats.config.json` nella directory principale del vostro progetto (oppure eseguite `registry-stats --init`):
|
|
119
|
-
|
|
119
|
+
|
|
120
|
+
## File di configurazione
|
|
121
|
+
|
|
122
|
+
Create un file `registry-stats.config.json` nella directory principale del vostro progetto (oppure eseguite `registry-stats --init`):
|
|
123
|
+
|
|
120
124
|
```json
|
|
121
125
|
{
|
|
122
126
|
"registries": ["npm", "pypi", "nuget", "vscode", "docker"],
|
|
@@ -135,11 +139,11 @@ Create un file `registry-stats.config.json` nella directory principale del vostr
|
|
|
135
139
|
"concurrency": 5
|
|
136
140
|
}
|
|
137
141
|
```
|
|
138
|
-
|
|
139
|
-
Eseguite `registry-stats` senza argomenti per ottenere le statistiche per tutti i pacchetti configurati. La CLI cerca il file di configurazione a partire dalla directory corrente.
|
|
140
|
-
|
|
141
|
-
La configurazione è disponibile anche tramite API programmatica:
|
|
142
|
-
|
|
142
|
+
|
|
143
|
+
Eseguite `registry-stats` senza argomenti per ottenere le statistiche per tutti i pacchetti configurati. La CLI cerca il file di configurazione a partire dalla directory corrente.
|
|
144
|
+
|
|
145
|
+
La configurazione è disponibile anche tramite API programmatica:
|
|
146
|
+
|
|
143
147
|
```typescript
|
|
144
148
|
import { loadConfig, defaultConfig, starterConfig } from '@mcptoolshop/registry-stats';
|
|
145
149
|
|
|
@@ -147,9 +151,9 @@ const config = loadConfig(); // finds nearest config file, or null
|
|
|
147
151
|
const defaults = defaultConfig(); // returns default Config object
|
|
148
152
|
const template = starterConfig(); // returns starter JSON string
|
|
149
153
|
```
|
|
150
|
-
|
|
151
|
-
## API programmatica
|
|
152
|
-
|
|
154
|
+
|
|
155
|
+
## API programmatica
|
|
156
|
+
|
|
153
157
|
```typescript
|
|
154
158
|
import { stats, calc, createCache } from '@mcptoolshop/registry-stats';
|
|
155
159
|
|
|
@@ -190,41 +194,41 @@ const cache = createCache();
|
|
|
190
194
|
await stats('npm', 'express', { cache }); // fetches
|
|
191
195
|
await stats('npm', 'express', { cache }); // cache hit
|
|
192
196
|
```
|
|
193
|
-
|
|
194
|
-
## Supporto per i registri
|
|
195
|
-
|
|
196
|
-
| Registro | Formato del pacchetto | Serie temporali | Dati disponibili |
|
|
197
|
-
|----------|---------------|-------------|----------------|
|
|
198
|
-
| `npm` | `express`, `@scope/pkg` | Sì (549 giorni) | giorno precedente, settimana precedente, mese precedente |
|
|
199
|
-
| `pypi` | `requests` | Sì (180 giorni) | giorno precedente, settimana precedente, mese precedente, totale |
|
|
200
|
-
| `nuget` | `Newtonsoft.Json` | No | totale |
|
|
201
|
-
| `vscode` | `publisher.extension` | No | totale (installazioni), valutazione, tendenze |
|
|
202
|
-
| `docker` | `namespace/repo` | No | totale (download), stelle |
|
|
203
|
-
|
|
204
|
-
## Affidabilità integrata
|
|
205
|
-
|
|
206
|
-
- Tentativi automatici con backoff esponenziale in caso di errori 429/5xx
|
|
207
|
-
- Rispetta le intestazioni `Retry-After`
|
|
208
|
-
- Limitazione della concorrenza per richieste di massa
|
|
209
|
-
- Cache TTL opzionale (configurabile: potete fornire la vostra implementazione Redis/file tramite l'interfaccia `StatsCache`)
|
|
210
|
-
|
|
211
|
-
## Server API REST
|
|
212
|
-
|
|
213
|
-
Eseguite come microservizio o integrate nel vostro server:
|
|
214
|
-
|
|
197
|
+
|
|
198
|
+
## Supporto per i registri
|
|
199
|
+
|
|
200
|
+
| Registro | Formato del pacchetto | Serie temporali | Dati disponibili |
|
|
201
|
+
|----------|---------------|-------------|----------------|
|
|
202
|
+
| `npm` | `express`, `@scope/pkg` | Sì (549 giorni) | giorno precedente, settimana precedente, mese precedente |
|
|
203
|
+
| `pypi` | `requests` | Sì (180 giorni) | giorno precedente, settimana precedente, mese precedente, totale |
|
|
204
|
+
| `nuget` | `Newtonsoft.Json` | No | totale |
|
|
205
|
+
| `vscode` | `publisher.extension` | No | totale (installazioni), valutazione, tendenze |
|
|
206
|
+
| `docker` | `namespace/repo` | No | totale (download), stelle |
|
|
207
|
+
|
|
208
|
+
## Affidabilità integrata
|
|
209
|
+
|
|
210
|
+
- Tentativi automatici con backoff esponenziale in caso di errori 429/5xx
|
|
211
|
+
- Rispetta le intestazioni `Retry-After`
|
|
212
|
+
- Limitazione della concorrenza per richieste di massa
|
|
213
|
+
- Cache TTL opzionale (configurabile: potete fornire la vostra implementazione Redis/file tramite l'interfaccia `StatsCache`)
|
|
214
|
+
|
|
215
|
+
## Server API REST
|
|
216
|
+
|
|
217
|
+
Eseguite come microservizio o integrate nel vostro server:
|
|
218
|
+
|
|
215
219
|
```bash
|
|
216
220
|
registry-stats serve --port 3000
|
|
217
221
|
```
|
|
218
|
-
|
|
222
|
+
|
|
219
223
|
```
|
|
220
224
|
GET /stats/:package # all registries
|
|
221
225
|
GET /stats/:registry/:package # single registry
|
|
222
226
|
GET /compare/:package?registries=npm,pypi
|
|
223
227
|
GET /range/:registry/:package?start=YYYY-MM-DD&end=YYYY-MM-DD&format=json|csv|chart
|
|
224
228
|
```
|
|
225
|
-
|
|
226
|
-
Utilizzo programmatica per server personalizzati o serverless:
|
|
227
|
-
|
|
229
|
+
|
|
230
|
+
Utilizzo programmatica per server personalizzati o serverless:
|
|
231
|
+
|
|
228
232
|
```typescript
|
|
229
233
|
import { createHandler, serve } from '@mcptoolshop/registry-stats';
|
|
230
234
|
|
|
@@ -236,9 +240,9 @@ import { createServer } from 'node:http';
|
|
|
236
240
|
const handler = createHandler();
|
|
237
241
|
createServer(handler).listen(3000);
|
|
238
242
|
```
|
|
239
|
-
|
|
240
|
-
## Registri personalizzati
|
|
241
|
-
|
|
243
|
+
|
|
244
|
+
## Registri personalizzati
|
|
245
|
+
|
|
242
246
|
```typescript
|
|
243
247
|
import { registerProvider, type RegistryProvider } from '@mcptoolshop/registry-stats';
|
|
244
248
|
|
|
@@ -259,9 +263,9 @@ const cargo: RegistryProvider = {
|
|
|
259
263
|
registerProvider(cargo);
|
|
260
264
|
await stats('cargo', 'serde');
|
|
261
265
|
```
|
|
262
|
-
|
|
263
|
-
## Struttura del Repository
|
|
264
|
-
|
|
266
|
+
|
|
267
|
+
## Struttura del Repository
|
|
268
|
+
|
|
265
269
|
```
|
|
266
270
|
registry-stats/
|
|
267
271
|
├── src/ # TypeScript engine (published to npm)
|
|
@@ -269,9 +273,9 @@ registry-stats/
|
|
|
269
273
|
├── desktop/ # WinUI 3 desktop app (.NET 10 MAUI)
|
|
270
274
|
└── test/ # Library tests (vitest)
|
|
271
275
|
```
|
|
272
|
-
|
|
273
|
-
## Sviluppo
|
|
274
|
-
|
|
276
|
+
|
|
277
|
+
## Sviluppo
|
|
278
|
+
|
|
275
279
|
```bash
|
|
276
280
|
# Engine
|
|
277
281
|
npm install && npm run build && npm test
|
|
@@ -282,36 +286,36 @@ npm run site:dev
|
|
|
282
286
|
# Dashboard (production build)
|
|
283
287
|
npm run site:build
|
|
284
288
|
```
|
|
285
|
-
|
|
286
|
-
## Sicurezza e ambito dei dati
|
|
287
|
-
|
|
288
|
-
| Aspetto | Dettaglio |
|
|
289
|
-
|--------|--------|
|
|
290
|
-
| **Data touched** | Statistiche di download pubbliche da npm, PyPI, NuGet, VS Code Marketplace, Docker Hub. Cache in memoria (opzionale). |
|
|
291
|
-
| **Data NOT touched** | Nessuna telemetria. Nessuna analisi. Nessun archivio di credenziali. Nessun dato utente. Nessuna scrittura di file. |
|
|
292
|
-
| **Permissions** | Lettura: API pubbliche dei registri tramite HTTPS. Scrittura: solo stdout/stderr. |
|
|
293
|
-
| **Network** | Uscite HTTPS verso le API pubbliche dei registri. Server REST locale opzionale. |
|
|
294
|
-
| **Telemetry** | Nessuno raccolto o inviato. |
|
|
295
|
-
|
|
296
|
-
Consulta [SECURITY.md](SECURITY.md) per la segnalazione di vulnerabilità.
|
|
297
|
-
|
|
298
|
-
## Tabella di valutazione
|
|
299
|
-
|
|
300
|
-
| Categoria | Punteggio |
|
|
301
|
-
|----------|-------|
|
|
302
|
-
| A. Sicurezza | 10 |
|
|
303
|
-
| B. Gestione degli errori | 10 |
|
|
304
|
-
| C. Documentazione per gli operatori | 10 |
|
|
305
|
-
| D. Igiene della distribuzione | 10 |
|
|
306
|
-
| E. Identità (soft) | 10 |
|
|
307
|
-
| **Overall** | **50/50** |
|
|
308
|
-
|
|
309
|
-
> Analisi completa: [SHIP_GATE.md](SHIP_GATE.md) · [SCORECARD.md](SCORECARD.md)
|
|
310
|
-
|
|
311
|
-
## Licenza
|
|
312
|
-
|
|
313
|
-
MIT
|
|
314
|
-
|
|
289
|
+
|
|
290
|
+
## Sicurezza e ambito dei dati
|
|
291
|
+
|
|
292
|
+
| Aspetto | Dettaglio |
|
|
293
|
+
|--------|--------|
|
|
294
|
+
| **Data touched** | Statistiche di download pubbliche da npm, PyPI, NuGet, VS Code Marketplace, Docker Hub. Cache in memoria (opzionale). |
|
|
295
|
+
| **Data NOT touched** | Nessuna telemetria. Nessuna analisi. Nessun archivio di credenziali. Nessun dato utente. Nessuna scrittura di file. |
|
|
296
|
+
| **Permissions** | Lettura: API pubbliche dei registri tramite HTTPS. Scrittura: solo stdout/stderr. |
|
|
297
|
+
| **Network** | Uscite HTTPS verso le API pubbliche dei registri. Server REST locale opzionale. |
|
|
298
|
+
| **Telemetry** | Nessuno raccolto o inviato. |
|
|
299
|
+
|
|
300
|
+
Consulta [SECURITY.md](SECURITY.md) per la segnalazione di vulnerabilità.
|
|
301
|
+
|
|
302
|
+
## Tabella di valutazione
|
|
303
|
+
|
|
304
|
+
| Categoria | Punteggio |
|
|
305
|
+
|----------|-------|
|
|
306
|
+
| A. Sicurezza | 10 |
|
|
307
|
+
| B. Gestione degli errori | 10 |
|
|
308
|
+
| C. Documentazione per gli operatori | 10 |
|
|
309
|
+
| D. Igiene della distribuzione | 10 |
|
|
310
|
+
| E. Identità (soft) | 10 |
|
|
311
|
+
| **Overall** | **50/50** |
|
|
312
|
+
|
|
313
|
+
> Analisi completa: [SHIP_GATE.md](SHIP_GATE.md) · [SCORECARD.md](SCORECARD.md)
|
|
314
|
+
|
|
315
|
+
## Licenza
|
|
316
|
+
|
|
317
|
+
MIT
|
|
318
|
+
|
|
315
319
|
---
|
|
316
|
-
|
|
317
|
-
Creato da <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
|
|
320
|
+
|
|
321
|
+
Creato da <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
|