@mcptoolshop/registry-stats 2.0.0 → 2.2.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.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> &middot;
23
23
  <a href="#desktop-app">Desktop App</a> &middot;
@@ -28,53 +28,57 @@
28
28
  <a href="#config-file">Config</a> &middot;
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. Panoramica, andamento, stato dei dati, classifica con grafici a linee. 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
- - **Panoramica** — breve resoconto settimanale: registro principale, pacchetto principale, pacchetto con maggiore crescita, concentrazione del portafoglio, affidabilità dei dati.
51
- - **Andamento** — pacchetti con maggiore crescita, pacchetti in calo e nuovi pacchetti attivi (npm degli ultimi 7 giorni rispetto ai 7 giorni precedenti).
52
- - **Stato dei dati** — copertura per ogni registro, badge di affidabilità (ok / parziale / mancante), dettagli degli errori espandibili.
53
- - **Variazioni** — monitoraggio settimana per settimana per i registri con dati cumulativi (Docker, VS Code, NuGet).
54
- - **Classifica** — tutti i pacchetti classificati per download settimanali con grafici a linee a 30 giorni per ogni riga.
55
- - **Tema chiaro/scuro** — segue le preferenze del sistema.
56
-
57
- 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`.
58
-
59
- ## Applicazione Desktop
60
-
61
- Un'applicazione nativa per Windows che integra la dashboard in un ambiente WebView2 locale:
62
-
63
- - **Funziona offline** — include file HTML/CSS/JS; funziona senza connessione a Internet.
64
- - **Aggiornamento in tempo reale** — scarica `stats.json` da GitHub Pages su richiesta.
65
- - **Esportazione CSV** esporta i dati della classifica con un solo clic.
66
- - **Pacchetto MSIX** — creato e firmato tramite CI utilizzando `desktop-ci.yml`.
67
-
68
- Il codice sorgente dell'applicazione desktop si trova nella cartella `desktop/`. Realizzata con .NET 10 MAUI e destinata a WinUI 3.
69
-
70
- ## Installazione
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>