@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.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,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
- 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. Aperçus, indicateurs de croissance, état des données, classement avec des graphiques. 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
- - **Aperçu** — récit hebdomadaire en une phrase : registre principal, paquet principal, progression la plus importante, répartition des paquets, fiabilité des données.
51
- - **Indicateurs de croissance** — paquets avec la progression la plus importante, les baisses les plus importantes et les nouveaux paquets actifs (npm sur 7 jours par rapport aux 7 jours précédents).
52
- - **État des données** — couverture par registre, badges de fiabilité (OK / partiel / manquant), détails des erreurs pouvant être développés.
53
- - **Évolution des données** — suivi semaine par semaine pour les registres cumulatifs uniquement (Docker, VS Code, NuGet).
54
- - **Classement** — tous les paquets classés par nombre de téléchargements hebdomadaires, avec des graphiques sur 30 jours pour chaque ligne.
55
- - **Thème clair/sombre** — suit les préférences du système.
56
-
57
- 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`.
58
-
59
- ## Application de bureau
60
-
61
- Une application Windows native qui intègre le tableau de bord dans un environnement WebView2 local :
62
-
63
- - **Fonctionne hors ligne** — inclut les fichiers HTML/CSS/JS ; fonctionne sans connexion Internet.
64
- - **Actualisation en direct** — récupère le fichier `stats.json` depuis GitHub Pages à la demande.
65
- - **Exportation CSV** exportez les données du classement en un seul clic.
66
- - **Paquet MSIX** — construit et signé par CI via `desktop-ci.yml`.
67
-
68
- 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.
69
-
70
- ## Installer
71
-
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
+
72
76
  ```bash
73
77
  npm install @mcptoolshop/registry-stats
74
78
  ```
75
-
76
- ## CLI
77
-
79
+
80
+ ## CLI
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
- ## Fichier de configuration
117
-
118
- Créez un fichier `registry-stats.config.json` à la racine de votre projet (ou exécutez la commande `registry-stats --init`) :
119
-
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
+
120
124
  ```json
121
125
  {
122
126
  "registries": ["npm", "pypi", "nuget", "vscode", "docker"],
@@ -135,11 +139,11 @@ Créez un fichier `registry-stats.config.json` à la racine de votre projet (ou
135
139
  "concurrency": 5
136
140
  }
137
141
  ```
138
-
139
- 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.
140
-
141
- La configuration est également accessible par programmation :
142
-
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
+
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 programmable
152
-
154
+
155
+ ## API programmable
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
- ## Support technique pour les registres
195
-
196
- | Registre. | Format du paquet. | Séries temporelles. | Données disponibles. |
197
- |----------|---------------|-------------|----------------|
198
- | `npm` | `express`, `@scope/pkg` | Oui (549 jours). | dernier jour, dernière semaine, dernier mois. |
199
- | `pypi` | `requests` | Oui (180 jours). | dernier jour, dernière semaine, dernier mois, total. |
200
- | `nuget` | `Newtonsoft.Json` | No | total |
201
- | `vscode` | `publisher.extension` | No | total (installations), évaluation, tendances. |
202
- | `docker` | `namespace/repo` | No | total (nombre de tirages), étoiles. |
203
-
204
- ## Fiabilité intégrée
205
-
206
- - Nouvelle tentative automatique avec un délai exponentiel en cas d'erreurs 429/5xx.
207
- - Respect des en-têtes "Retry-After".
208
- - Limitation de la concurrence pour les requêtes groupées.
209
- - Cache TTL optionnel (extensible – possibilité d'utiliser votre propre backend Redis ou fichier via l'interface "StatsCache").
210
-
211
- ## Serveur d'API REST
212
-
213
- Fonctionnez en tant que microservice ou intégrez-le à votre propre serveur :
214
-
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
+
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
- Utilisation par programmation pour les serveurs personnalisés ou les environnements sans serveur :
227
-
229
+
230
+ Utilisation par programmation pour les serveurs personnalisés ou les environnements sans serveur :
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
- ## Registres personnalisés
241
-
243
+
244
+ ## Registres personnalisés
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
- ## Structure du dépôt
264
-
266
+
267
+ ## Structure du dépôt
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
- ## Développement
274
-
276
+
277
+ ## Développement
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
- ## Sécurité et portée des données
287
-
288
- | Aspect | Détail |
289
- |--------|--------|
290
- | **Data touched** | Statistiques de téléchargement publiques provenant de npm, PyPI, NuGet, VS Code Marketplace, Docker Hub. Cache en mémoire (facultatif). |
291
- | **Data NOT touched** | Aucune télémétrie. Aucune analyse. Aucun stockage d'informations d'identification. Aucune donnée utilisateur. Aucune écriture de fichiers. |
292
- | **Permissions** | Lecture : API publiques des registres via HTTPS. Écriture : uniquement vers la sortie standard/erreur standard. |
293
- | **Network** | Sorties HTTPS vers les API publiques des registres. Serveur REST localhost facultatif. |
294
- | **Telemetry** | Aucune donnée collectée ou envoyée. |
295
-
296
- Consultez le fichier [SECURITY.md](SECURITY.md) pour signaler les vulnérabilités.
297
-
298
- ## Tableau de bord
299
-
300
- | Catégorie | Score |
301
- |----------|-------|
302
- | A. Sécurité | 10 |
303
- | B. Gestion des erreurs | 10 |
304
- | C. Documentation pour les administrateurs | 10 |
305
- | D. Bonnes pratiques de déploiement | 10 |
306
- | E. Identité (facultatif) | 10 |
307
- | **Overall** | **50/50** |
308
-
309
- > Audit complet : [SHIP_GATE.md](SHIP_GATE.md) · [SCORECARD.md](SCORECARD.md)
310
-
311
- ## Licence
312
-
313
- MIT.
314
-
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
+
315
319
  ---
316
-
317
- Construit par <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>.
320
+
321
+ Construit par <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>.