@mcptoolshop/registry-stats 2.3.0 → 3.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.fr.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.md">English</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</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.md">English</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</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,57 +28,60 @@
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
- Vous publiez sur npm, PyPI, NuGet, le Marketplace de VS Code et Docker Hub. Actuellement, répondre à la question "comment vont mes paquets ?" nécessite de consulter cinq sites différents. **registry-stats** est une plateforme complète : un moteur TypeScript (CLI + API + serveur REST), un tableau de bord web interactif et une application de bureau Windows native, le tout regroupé dans un seul dépôt.
35
-
36
- Aucune dépendance d'exécution. Utilise la fonction native `fetch()`. Node 18+.
37
-
38
- ## Contenu
39
-
40
- | Couche | Fonctionnalités |
41
- |-------|-------------|
42
- | **Engine** | Bibliothèque TypeScript + CLI + serveur REST. Interrogez cinq registres avec une seule interface. Publié sur npm sous le nom `@mcptoolshop/registry-stats`. |
43
- | **Dashboard** | Application web basée sur Astro. Assistant de chat IA, six graphiques interactifs, moteur de croissance intelligent et guide d'aide avec onglets. Reconstruite chaque semaine par CI. |
44
- | **Desktop** | Application Windows native utilisant WinUI 3 + WebView2. Inclut le tableau de bord hors ligne et récupère les statistiques en direct à la demande. |
45
-
46
- ## Tableau de bord
47
-
48
- Un tableau de bord de statistiques qui se met à jour automatiquement est disponible à l'adresse [`/dashboard/`](https://mcp-tool-shop-org.github.io/registry-stats/dashboard/).
49
-
50
- - **Interface à onglets** — Onglets Home, Analytics, Leaderboard et Help
51
- - **Assistant de chat IA** — Registry Assistant alimenté par Ollama avec contexte RAG, réponses en streaming, sélecteur de modèles et mémoire de conversation
52
- - **Résumé exécutif** — score de santé (0–100), indice de diversité, variation hebdomadaire, téléchargements totaux sur tous les registres
53
- - **Six graphiques interactifs** — tendance sur 30 jours (vue agrégée / par registre / top 5), part des registres (aire polaire), risque du portefeuille (histogramme + Gini & P90), top 10 momentum, suivi de la vélocité avec sparklines, et carte thermique 30 jours avec détection de pics (>2σ)
54
- - **Moteur de croissance intelligent** — gère la distorsion des petits dénominateurs avec seuil de référence, plafonnement du pourcentage et formule de vélocité amortie
55
- - **Perspectives exploitables** — recommandations auto-générées et alertes d'attention pour les paquets en déclin
56
- - **Classement** — tous les paquets classés par téléchargements hebdomadaires avec sparklines sur 30 jours et badges de tendance intelligents
57
- - **Page de configuration** — éditeur de portefeuille avec validation, section registry-sync et vue d'ensemble du pipeline
58
- - **Onglet d'aide** — guide convivial couvrant chaque onglet, les concepts clés, les conseils pour l'assistant IA, le pipeline de données et les liens utiles
59
- - **Thème clair/sombre** — suit les préférences du système
60
-
61
- Les données sont récupérées au moment de la construction et le tableau de bord est reconstruit chaque semaine par CI (lundi à 06h00 UTC). Configurez les paquets suivis dans `site/src/data/packages.json`.
62
-
63
- ## Application de bureau
64
-
65
- Une application Windows native qui intègre le tableau de bord dans un environnement WebView2 local :
66
-
67
- - **Fonctionne hors ligne** — inclut les fichiers HTML/CSS/JS ; fonctionne sans connexion Internet.
68
- - **Actualisation en direct** récupère le fichier `stats.json` depuis GitHub Pages à la demande.
69
- - **Exportation CSV** — exportez les données du classement en un seul clic.
70
- - **Paquet MSIX** — construit et signé par CI via `desktop-ci.yml`.
71
-
72
- Le code source de l'application de bureau se trouve dans le répertoire `desktop/`. Développé avec .NET 10 MAUI et ciblant WinUI 3.
73
-
74
- ## Installer
75
-
33
+
34
+ Vous publiez sur npm, PyPI, NuGet, le Marketplace de VS Code et Docker Hub. Actuellement, répondre à la question "comment vont mes paquets ?" nécessite de consulter cinq sites différents. **registry-stats** est une plateforme complète : un moteur TypeScript (CLI + API + serveur REST), un tableau de bord web interactif et une application de bureau Windows native, le tout regroupé dans un seul dépôt.
35
+
36
+ Aucune dépendance d'exécution. Utilise la fonction native `fetch()`. Node 18+.
37
+
38
+ ## Contenu
39
+
40
+ | Couche | Fonctionnalités |
41
+ |-------|-------------|
42
+ | **Engine** | Bibliothèque TypeScript + CLI + serveur REST. Interrogez cinq registres avec une seule interface. Publié sur npm sous le nom `@mcptoolshop/registry-stats`. |
43
+ | **Dashboard** | Application web alimentée par Astro, avec un assistant IA Pulse (reconnaissance vocale, recherche web, mode plein écran, connecteurs de données GitHub), six graphiques interactifs, actualisation en direct, exportation de rapports (PDF / JSONL / Markdown) et un guide d'aide organisé par onglets. Reconstruite chaque semaine par CI ; actualisable à la demande. |
44
+ | **Desktop** | Application Windows native utilisant WinUI 3 + WebView2. Inclut le tableau de bord hors ligne et récupère les statistiques en direct à la demande. |
45
+
46
+ ## Tableau de bord
47
+
48
+ Un tableau de bord de statistiques qui se met à jour automatiquement est disponible à l'adresse [`/dashboard/`](https://mcp-tool-shop-org.github.io/registry-stats/dashboard/).
49
+
50
+ - **Interface à onglets** — Onglets Accueil, Analyses, Classement, et Aide.
51
+ - **Assistant IA Pulse** — Assistant conversationnel alimenté par Ollama, avec synthèse vocale en continu (parle pendant que le LLM génère du texte, 4 voix via [mcp-voice-soundboard](https://github.com/mcp-tool-shop-org/mcp-voice-soundboard)), recherche web (Wikipedia + SearXNG optionnel), lecture automatique, mode plein écran, connecteur de données GitHub, sélecteur de modèle, et mémoire de conversation.
52
+ - **Aperçu général** — Score de santé (0–100), indice de diversité, variation hebdomadaire, nombre total de téléchargements sur tous les registres.
53
+ - **Six graphiques interactifs** — Tendance sur 30 jours (agrégée / par registre / top-5), part de marché (aire polaire), risque du portefeuille (histogramme + Gini & P90), top 10 des tendances, suivi de la vitesse avec des mini-graphiques, et carte thermique sur 30 jours avec détection des pics (>2σ).
54
+ - **Moteur de croissance intelligent** — Gère les distorsions liées aux petites bases avec un seuil de référence, un plafond en pourcentage et une formule de vitesse amortie.
55
+ - **Informations exploitables** — Recommandations générées automatiquement et alertes pour les paquets en déclin.
56
+ - **Tableau de bord Pulse** — Vue divisée des paquets établis (≥ 50 téléchargements/semaine) et des paquets émergents et nouveaux, avec des mini-graphiques sur 7 jours, des variations absolues et en pourcentage, un contexte de référence et un résumé exécutif en une ligne.
57
+ - **Actualisation en direct** — Récupération des données les plus récentes directement des API npm et PyPI, avec un indicateur de progression ; les résultats sont mis en cache dans sessionStorage (TTL de 5 minutes) pour des changements d'onglets instantanés.
58
+ - **Exportation de rapports** — Menu déroulant à côté du bouton Actualiser, offrant trois formats : **PDF exécutif** (via jsPDF), **JSONL LLM** (enregistrements typés pour l'ingestion par l'IA) et **Markdown pour développeurs** (tableaux GFM).
59
+ - **Classement** — 132 paquets classés par nombre de téléchargements hebdomadaires, avec des mini-graphiques sur 30 jours et des badges de tendance intelligents.
60
+ - **Page de configuration** — Éditeur de portefeuille avec validation, section de synchronisation des registres et aperçu du pipeline.
61
+ - **Onglet Aide** Guide convivial couvrant chaque onglet, les concepts clés, des conseils pour l'assistant IA, le pipeline de données et des liens utiles.
62
+ - **Thème sombre / clair** — Suit les préférences du système.
63
+
64
+ Les données sont récupérées au moment de la construction et reconstruites chaque semaine par CI (lundi à 06h00 UTC). L'actualisation en direct récupère les dernières données directement à partir des API des registres. Configurez les paquets suivis dans `site/src/data/packages.json` (132 paquets répartis sur 5 registres).
65
+
66
+ ## Application de bureau
67
+
68
+ Une application Windows native qui intègre le tableau de bord dans un environnement WebView2 local :
69
+
70
+ - **Fonctionne hors ligne** — inclut les fichiers HTML/CSS/JS ; fonctionne sans connexion Internet.
71
+ - **Actualisation en direct** — récupère le fichier `stats.json` depuis GitHub Pages à la demande.
72
+ - **Exportation CSV** exportez les données du classement en un seul clic.
73
+ - **Paquet MSIX** — construit et signé par CI via `desktop-ci.yml`.
74
+
75
+ Le code source de l'application de bureau se trouve dans le répertoire `desktop/`. Développé avec .NET 10 MAUI et ciblant WinUI 3.
76
+
77
+ ## Installer
78
+
76
79
  ```bash
77
80
  npm install @mcptoolshop/registry-stats
78
81
  ```
79
-
80
- ## CLI
81
-
82
+
83
+ ## CLI
84
+
82
85
  ```bash
83
86
  # Query a single registry
84
87
  registry-stats express -r npm
@@ -116,11 +119,11 @@ registry-stats express -r npm --range 2025-01-01:2025-06-30 --format chart
116
119
  # Start a REST API server
117
120
  registry-stats serve --port 3000
118
121
  ```
119
-
120
- ## Fichier de configuration
121
-
122
- Créez un fichier `registry-stats.config.json` à la racine de votre projet (ou exécutez la commande `registry-stats --init`) :
123
-
122
+
123
+ ## Fichier de configuration
124
+
125
+ Créez un fichier `registry-stats.config.json` à la racine de votre projet (ou exécutez la commande `registry-stats --init`) :
126
+
124
127
  ```json
125
128
  {
126
129
  "registries": ["npm", "pypi", "nuget", "vscode", "docker"],
@@ -139,11 +142,11 @@ Créez un fichier `registry-stats.config.json` à la racine de votre projet (ou
139
142
  "concurrency": 5
140
143
  }
141
144
  ```
142
-
143
- Exécutez la commande `registry-stats` sans arguments pour obtenir les statistiques de tous les paquets configurés. L'interface en ligne de commande (CLI) remonte à partir du répertoire de travail actuel (cwd) pour trouver le fichier de configuration le plus proche.
144
-
145
- La configuration est également accessible par programmation :
146
-
145
+
146
+ Exécutez la commande `registry-stats` sans arguments pour obtenir les statistiques de tous les paquets configurés. L'interface en ligne de commande (CLI) remonte à partir du répertoire de travail actuel (cwd) pour trouver le fichier de configuration le plus proche.
147
+
148
+ La configuration est également accessible par programmation :
149
+
147
150
  ```typescript
148
151
  import { loadConfig, defaultConfig, starterConfig } from '@mcptoolshop/registry-stats';
149
152
 
@@ -151,9 +154,9 @@ const config = loadConfig(); // finds nearest config file, or null
151
154
  const defaults = defaultConfig(); // returns default Config object
152
155
  const template = starterConfig(); // returns starter JSON string
153
156
  ```
154
-
155
- ## API programmable
156
-
157
+
158
+ ## API programmable
159
+
157
160
  ```typescript
158
161
  import { stats, calc, createCache } from '@mcptoolshop/registry-stats';
159
162
 
@@ -194,41 +197,41 @@ const cache = createCache();
194
197
  await stats('npm', 'express', { cache }); // fetches
195
198
  await stats('npm', 'express', { cache }); // cache hit
196
199
  ```
197
-
198
- ## Support technique pour les registres
199
-
200
- | Registre. | Format du paquet. | Séries temporelles. | Données disponibles. |
201
- |----------|---------------|-------------|----------------|
202
- | `npm` | `express`, `@scope/pkg` | Oui (549 jours). | dernier jour, dernière semaine, dernier mois. |
203
- | `pypi` | `requests` | Oui (180 jours). | dernier jour, dernière semaine, dernier mois, total. |
204
- | `nuget` | `Newtonsoft.Json` | No | total |
205
- | `vscode` | `publisher.extension` | No | total (installations), évaluation, tendances. |
206
- | `docker` | `namespace/repo` | No | total (nombre de tirages), étoiles. |
207
-
208
- ## Fiabilité intégrée
209
-
210
- - Nouvelle tentative automatique avec un délai exponentiel en cas d'erreurs 429/5xx.
211
- - Respect des en-têtes "Retry-After".
212
- - Limitation de la concurrence pour les requêtes groupées.
213
- - Cache TTL optionnel (extensible – possibilité d'utiliser votre propre backend Redis ou fichier via l'interface "StatsCache").
214
-
215
- ## Serveur d'API REST
216
-
217
- Fonctionnez en tant que microservice ou intégrez-le à votre propre serveur :
218
-
200
+
201
+ ## Support technique pour les registres
202
+
203
+ | Registre. | Format du paquet. | Séries temporelles. | Données disponibles. |
204
+ |----------|---------------|-------------|----------------|
205
+ | `npm` | `express`, `@scope/pkg` | Oui (549 jours). | dernier jour, dernière semaine, dernier mois. |
206
+ | `pypi` | `requests` | Oui (180 jours). | dernier jour, dernière semaine, dernier mois, total. |
207
+ | `nuget` | `Newtonsoft.Json` | No | total |
208
+ | `vscode` | `publisher.extension` | No | total (installations), évaluation, tendances. |
209
+ | `docker` | `namespace/repo` | No | total (nombre de tirages), étoiles. |
210
+
211
+ ## Fiabilité intégrée
212
+
213
+ - Nouvelle tentative automatique avec un délai exponentiel en cas d'erreurs 429/5xx.
214
+ - Respect des en-têtes "Retry-After".
215
+ - Limitation de la concurrence pour les requêtes groupées.
216
+ - Cache TTL optionnel (extensible – possibilité d'utiliser votre propre backend Redis ou fichier via l'interface "StatsCache").
217
+
218
+ ## Serveur d'API REST
219
+
220
+ Fonctionnez en tant que microservice ou intégrez-le à votre propre serveur :
221
+
219
222
  ```bash
220
223
  registry-stats serve --port 3000
221
224
  ```
222
-
225
+
223
226
  ```
224
227
  GET /stats/:package # all registries
225
228
  GET /stats/:registry/:package # single registry
226
229
  GET /compare/:package?registries=npm,pypi
227
230
  GET /range/:registry/:package?start=YYYY-MM-DD&end=YYYY-MM-DD&format=json|csv|chart
228
231
  ```
229
-
230
- Utilisation par programmation pour les serveurs personnalisés ou les environnements sans serveur :
231
-
232
+
233
+ Utilisation par programmation pour les serveurs personnalisés ou les environnements sans serveur :
234
+
232
235
  ```typescript
233
236
  import { createHandler, serve } from '@mcptoolshop/registry-stats';
234
237
 
@@ -240,9 +243,9 @@ import { createServer } from 'node:http';
240
243
  const handler = createHandler();
241
244
  createServer(handler).listen(3000);
242
245
  ```
243
-
244
- ## Registres personnalisés
245
-
246
+
247
+ ## Registres personnalisés
248
+
246
249
  ```typescript
247
250
  import { registerProvider, type RegistryProvider } from '@mcptoolshop/registry-stats';
248
251
 
@@ -263,9 +266,9 @@ const cargo: RegistryProvider = {
263
266
  registerProvider(cargo);
264
267
  await stats('cargo', 'serde');
265
268
  ```
266
-
267
- ## Structure du dépôt
268
-
269
+
270
+ ## Structure du dépôt
271
+
269
272
  ```
270
273
  registry-stats/
271
274
  ├── src/ # TypeScript engine (published to npm)
@@ -273,9 +276,9 @@ registry-stats/
273
276
  ├── desktop/ # WinUI 3 desktop app (.NET 10 MAUI)
274
277
  └── test/ # Library tests (vitest)
275
278
  ```
276
-
277
- ## Développement
278
-
279
+
280
+ ## Développement
281
+
279
282
  ```bash
280
283
  # Engine
281
284
  npm install && npm run build && npm test
@@ -286,36 +289,36 @@ npm run site:dev
286
289
  # Dashboard (production build)
287
290
  npm run site:build
288
291
  ```
289
-
290
- ## Sécurité et portée des données
291
-
292
- | Aspect | Détail |
293
- |--------|--------|
294
- | **Data touched** | Statistiques de téléchargement publiques provenant de npm, PyPI, NuGet, VS Code Marketplace, Docker Hub. Cache en mémoire (facultatif). |
295
- | **Data NOT touched** | Aucune télémétrie. Aucune analyse. Aucun stockage d'informations d'identification. Aucune donnée utilisateur. Aucune écriture de fichiers. |
296
- | **Permissions** | Lecture : API publiques des registres via HTTPS. Écriture : uniquement vers la sortie standard/erreur standard. |
297
- | **Network** | Sorties HTTPS vers les API publiques des registres. Serveur REST localhost facultatif. |
298
- | **Telemetry** | Aucune donnée collectée ou envoyée. |
299
-
300
- Consultez le fichier [SECURITY.md](SECURITY.md) pour signaler les vulnérabilités.
301
-
302
- ## Tableau de bord
303
-
304
- | Catégorie | Score |
305
- |----------|-------|
306
- | A. Sécurité | 10 |
307
- | B. Gestion des erreurs | 10 |
308
- | C. Documentation pour les administrateurs | 10 |
309
- | D. Bonnes pratiques de déploiement | 10 |
310
- | E. Identité (facultatif) | 10 |
311
- | **Overall** | **50/50** |
312
-
313
- > Audit complet : [SHIP_GATE.md](SHIP_GATE.md) · [SCORECARD.md](SCORECARD.md)
314
-
315
- ## Licence
316
-
317
- MIT.
318
-
292
+
293
+ ## Sécurité et portée des données
294
+
295
+ | Aspect | Détail |
296
+ |--------|--------|
297
+ | **Data touched** | Statistiques de téléchargement publiques provenant de npm, PyPI, NuGet, VS Code Marketplace, Docker Hub. Cache en mémoire (facultatif). |
298
+ | **Data NOT touched** | Aucune télémétrie. Aucune analyse. Aucun stockage d'informations d'identification. Aucune donnée utilisateur. Aucune écriture de fichiers. |
299
+ | **Permissions** | Lecture : API publiques des registres via HTTPS. Écriture : uniquement vers la sortie standard/erreur standard. |
300
+ | **Network** | Sorties HTTPS vers les API publiques des registres. Serveur REST localhost facultatif. |
301
+ | **Telemetry** | Aucune donnée collectée ou envoyée. |
302
+
303
+ Consultez le fichier [SECURITY.md](SECURITY.md) pour signaler les vulnérabilités.
304
+
305
+ ## Tableau de bord
306
+
307
+ | Catégorie | Score |
308
+ |----------|-------|
309
+ | A. Sécurité | 10 |
310
+ | B. Gestion des erreurs | 10 |
311
+ | C. Documentation pour les administrateurs | 10 |
312
+ | D. Bonnes pratiques de déploiement | 10 |
313
+ | E. Identité (facultatif) | 10 |
314
+ | **Overall** | **50/50** |
315
+
316
+ > Audit complet : [SHIP_GATE.md](SHIP_GATE.md) · [SCORECARD.md](SCORECARD.md)
317
+
318
+ ## Licence
319
+
320
+ MIT.
321
+
319
322
  ---
320
-
321
- Construit par <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>.
323
+
324
+ Construit par <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>.