@mcptoolshop/registry-stats 1.2.4 → 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 CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <a href="README.md">English</a> | <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <strong>Español</strong> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português</a>
2
+ <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.md">English</a> | <a href="README.fr.md">Français</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
3
  </p>
4
4
 
5
5
  <p align="center">
@@ -7,31 +7,69 @@
7
7
  </p>
8
8
 
9
9
  <p align="center">
10
- One command. Five registries. All your download stats.
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>
16
16
  <a href="https://www.npmjs.com/package/@mcptoolshop/registry-stats"><img src="https://img.shields.io/npm/v/@mcptoolshop/registry-stats" alt="npm version"></a>
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>
17
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>
18
19
  </p>
19
20
 
20
21
  <p align="center">
21
- <a href="https://mcp-tool-shop-org.github.io/registry-stats/">Docs</a> &middot;
22
+ <a href="#dashboard">Dashboard</a> &middot;
23
+ <a href="#desktop-app">Desktop App</a> &middot;
22
24
  <a href="#install">Install</a> &middot;
23
25
  <a href="#cli">CLI</a> &middot;
24
- <a href="#config-file">Config</a> &middot;
25
26
  <a href="#programmatic-api">API</a> &middot;
26
27
  <a href="#rest-api-server">REST Server</a> &middot;
28
+ <a href="#config-file">Config</a> &middot;
27
29
  <a href="#license">License</a>
28
30
  </p>
29
31
 
30
32
  ---
31
33
 
32
- Si publicas en npm, PyPI, NuGet, el Marketplace de VS Code o Docker Hub, actualmente necesitas cinco API diferentes para responder a la pregunta "¿cuántas descargas he tenido este mes?". Esta biblioteca te proporciona una única interfaz para todas ellas, ya sea como una herramienta de línea de comandos (CLI) o como una API programática.
34
+ Publica en npm, PyPI, NuGet, el Marketplace de VS Code y Docker Hub. Actualmente, responder a la pregunta "¿cómo le están yendo a mis paquetes?" implica consultar cinco sitios diferentes. **registry-stats** es la plataforma completa: un motor de TypeScript (CLI + API + servidor REST), un panel web en tiempo real y una aplicación de escritorio nativa para Windows, todo desde un único repositorio.
35
+
36
+ No tiene dependencias de tiempo de ejecución. Utiliza `fetch()` nativo. Node 18+.
37
+
38
+ ## ¿Qué hay dentro?
39
+
40
+ | Capa | ¿Qué hace? |
41
+ |-------|-------------|
42
+ | **Engine** | Biblioteca de TypeScript + CLI + servidor REST. Consulta cinco registros con una única interfaz. Publicado en npm como `@mcptoolshop/registry-stats`. |
43
+ | **Dashboard** | Aplicación web impulsada por Astro. Asistente de chat con IA, seis gráficos interactivos, motor de crecimiento inteligente y guía de ayuda con pestañas. Se reconstruye semanalmente mediante CI. |
44
+ | **Desktop** | Aplicación nativa para Windows con WinUI 3 + WebView2. Incluye el panel sin conexión y descarga las estadísticas en tiempo real bajo demanda. |
45
+
46
+ ## Panel
47
+
48
+ Un panel de estadísticas que se actualiza automáticamente se encuentra en [`/dashboard/`](https://mcp-tool-shop-org.github.io/registry-stats/dashboard/).
33
49
 
34
- Sin dependencias. Utiliza la función nativa `fetch()`. Node 18+.
50
+ - **Interfaz con pestañas** Pestañas Home, Analytics, Leaderboard y Help
51
+ - **Asistente de chat con IA** — Registry Assistant con Ollama, contexto RAG, respuestas en streaming, selector de modelos y memoria de conversación
52
+ - **Resumen ejecutivo** — puntuación de salud (0–100), índice de diversidad, variación semanal, descargas totales de todos los registros
53
+ - **Seis gráficos interactivos** — tendencia de 30 días (vista agregada / por registro / top 5), cuota de registro (área polar), riesgo del portafolio (histograma + Gini & P90), top 10 de momentum, rastreador de velocidad con sparklines, y mapa de calor de 30 días con detección de picos (>2σ)
54
+ - **Motor de crecimiento inteligente** — maneja la distorsión por denominadores pequeños con umbral base, límite de porcentaje y fórmula de velocidad amortiguada
55
+ - **Perspectivas accionables** — recomendaciones autogeneradas y alertas para paquetes en declive
56
+ - **Tabla de clasificación** — todos los paquetes clasificados por descargas semanales con sparklines de 30 días y badges de tendencia inteligente
57
+ - **Página de configuración** — editor de portafolio con validación, sección de registry-sync y vista general del flujo de datos
58
+ - **Pestaña de ayuda** — guía amigable que cubre cada pestaña, conceptos clave, consejos del asistente IA, flujo de datos y enlaces útiles
59
+ - **Tema claro/oscuro** — Sigue la preferencia del sistema
60
+
61
+ Los datos se obtienen en el momento de la compilación y se reconstruyen semanalmente mediante CI (los lunes a las 06:00 UTC). Configure los paquetes rastreados en `site/src/data/packages.json`.
62
+
63
+ ## Aplicación de escritorio
64
+
65
+ Una aplicación nativa para Windows que integra el panel en un entorno WebView2 local:
66
+
67
+ - **Funciona sin conexión** — Incluye HTML/CSS/JS empaquetados; funciona sin internet.
68
+ - **Actualización en tiempo real** — Descarga `stats.json` de GitHub Pages bajo demanda.
69
+ - **Exportación a CSV** — Exporta los datos de la tabla de clasificación con un solo clic.
70
+ - **Empaquetado MSIX** — Se construye y firma en CI mediante `desktop-ci.yml`.
71
+
72
+ El código fuente de la aplicación de escritorio se encuentra en `desktop/`. Se construyó con .NET 10 MAUI y apunta a WinUI 3.
35
73
 
36
74
  ## Instalación
37
75
 
@@ -52,10 +90,6 @@ registry-stats express
52
90
 
53
91
  # Time series with monthly breakdown + trend
54
92
  registry-stats express -r npm --range 2025-01-01:2025-06-30
55
- # 2025-01 142,359,021
56
- # 2025-02 147,522,528
57
- # ...
58
- # Total: 448,383,383 Avg/day: 4,982,038 Trend: flat (-0.46%)
59
93
 
60
94
  # Raw JSON output
61
95
  registry-stats express -r npm --json
@@ -74,14 +108,6 @@ registry-stats
74
108
 
75
109
  # Compare across registries
76
110
  registry-stats express --compare
77
- # express — comparison
78
- #
79
- # Metric npm pypi
80
- # ─────────────────────────────────
81
- # Total - -
82
- # Month 283,472 47,201
83
- # Week 67,367 11,800
84
- # Day 11,566 1,686
85
111
 
86
112
  # Export as CSV or chart-friendly JSON
87
113
  registry-stats express -r npm --range 2025-01-01:2025-06-30 --format csv
@@ -161,7 +187,6 @@ calc.toChartData(daily, 'express'); // { labels: [...], datasets: [{ labe
161
187
 
162
188
  // Comparison — same package across registries
163
189
  const comparison = await stats.compare('express');
164
- // → { package: 'express', registries: { npm: {...}, pypi: {...} }, fetchedAt: '...' }
165
190
  await stats.compare('express', ['npm', 'pypi']); // specific registries only
166
191
 
167
192
  // Caching (5 min TTL, in-memory)
@@ -173,7 +198,7 @@ await stats('npm', 'express', { cache }); // cache hit
173
198
  ## Soporte para registros
174
199
 
175
200
  | Registro | Formato del paquete | Series de tiempo | Datos disponibles |
176
- | ---------- | --------------- | ------------- | ---------------- |
201
+ |----------|---------------|-------------|----------------|
177
202
  | `npm` | `express`, `@scope/pkg` | Sí (549 días) | último día, última semana, último mes |
178
203
  | `pypi` | `requests` | Sí (180 días) | último día, última semana, último mes, total |
179
204
  | `nuget` | `Newtonsoft.Json` | No | total |
@@ -192,7 +217,6 @@ await stats('npm', 'express', { cache }); // cache hit
192
217
  Ejecútalo como un microservicio o intégralo en tu propio servidor:
193
218
 
194
219
  ```bash
195
- # CLI
196
220
  registry-stats serve --port 3000
197
221
  ```
198
222
 
@@ -240,13 +264,53 @@ registerProvider(cargo);
240
264
  await stats('cargo', 'serde');
241
265
  ```
242
266
 
243
- ## Sitio web
267
+ ## Estructura del repositorio
268
+
269
+ ```
270
+ registry-stats/
271
+ ├── src/ # TypeScript engine (published to npm)
272
+ ├── site/ # Astro dashboard + landing page (deployed to GitHub Pages)
273
+ ├── desktop/ # WinUI 3 desktop app (.NET 10 MAUI)
274
+ └── test/ # Library tests (vitest)
275
+ ```
276
+
277
+ ## Desarrollo
278
+
279
+ ```bash
280
+ # Engine
281
+ npm install && npm run build && npm test
282
+
283
+ # Dashboard (dev server)
284
+ npm run site:dev
285
+
286
+ # Dashboard (production build)
287
+ npm run site:build
288
+ ```
289
+
290
+ ## Seguridad y alcance de los datos
291
+
292
+ | Aspecto | Detalle |
293
+ |--------|--------|
294
+ | **Data touched** | Estadísticas de descarga pública de npm, PyPI, NuGet, Marketplace de VS Code, Docker Hub. Caché en memoria (opcional). |
295
+ | **Data NOT touched** | Sin telemetría. Sin análisis. Sin almacenamiento de credenciales. Sin datos de usuario. Sin escrituras de archivos. |
296
+ | **Permissions** | Lectura: APIs públicas de registros a través de HTTPS. Escritura: solo stdout/stderr. |
297
+ | **Network** | Conexiones HTTPS salientes a APIs públicas de registros. Servidor REST opcional en localhost. |
298
+ | **Telemetry** | Ninguno recopilado ni enviado. |
299
+
300
+ Consulte [SECURITY.md](SECURITY.md) para informar sobre vulnerabilidades.
301
+
302
+ ## Tabla de puntuación
244
303
 
245
- La documentación y la página de inicio se encuentran en el directorio `site/`.
304
+ | Categoría | Puntuación |
305
+ |----------|-------|
306
+ | A. Seguridad | 10 |
307
+ | B. Manejo de errores | 10 |
308
+ | C. Documentación para operadores | 10 |
309
+ | D. Higiene de implementación | 10 |
310
+ | E. Identidad (suave) | 10 |
311
+ | **Overall** | **50/50** |
246
312
 
247
- - Desarrollo: `npm run site:dev`
248
- - Compilación: `npm run site:build`
249
- - Previsualización: `npm run site:preview`
313
+ > Auditoría completa: [SHIP_GATE.md](SHIP_GATE.md) · [SCORECARD.md](SCORECARD.md)
250
314
 
251
315
  ## Licencia
252
316
 
package/README.fr.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <a href="README.md">English</a> | <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <strong>Français</strong> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português</a>
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
3
  </p>
4
4
 
5
5
  <p align="center">
@@ -7,31 +7,69 @@
7
7
  </p>
8
8
 
9
9
  <p align="center">
10
- One command. Five registries. All your download stats.
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>
16
16
  <a href="https://www.npmjs.com/package/@mcptoolshop/registry-stats"><img src="https://img.shields.io/npm/v/@mcptoolshop/registry-stats" alt="npm version"></a>
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>
17
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>
18
19
  </p>
19
20
 
20
21
  <p align="center">
21
- <a href="https://mcp-tool-shop-org.github.io/registry-stats/">Docs</a> &middot;
22
+ <a href="#dashboard">Dashboard</a> &middot;
23
+ <a href="#desktop-app">Desktop App</a> &middot;
22
24
  <a href="#install">Install</a> &middot;
23
25
  <a href="#cli">CLI</a> &middot;
24
- <a href="#config-file">Config</a> &middot;
25
26
  <a href="#programmatic-api">API</a> &middot;
26
27
  <a href="#rest-api-server">REST Server</a> &middot;
28
+ <a href="#config-file">Config</a> &middot;
27
29
  <a href="#license">License</a>
28
30
  </p>
29
31
 
30
32
  ---
31
33
 
32
- Si vous publiez sur npm, PyPI, NuGet, le marché de VS Code ou Docker Hub, vous avez actuellement besoin de cinq API différentes pour répondre à la question : "Combien de téléchargements ai-je eu ce mois-ci ?" Cette bibliothèque vous offre une interface unique pour tous ces services, sous forme d'interface en ligne de commande ou d'API programmatique.
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/).
33
49
 
34
- Aucune dépendance. Utilise la fonction native `fetch()`. Compatible avec Node 18 et versions ultérieures.
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.
35
73
 
36
74
  ## Installer
37
75
 
@@ -52,10 +90,6 @@ registry-stats express
52
90
 
53
91
  # Time series with monthly breakdown + trend
54
92
  registry-stats express -r npm --range 2025-01-01:2025-06-30
55
- # 2025-01 142,359,021
56
- # 2025-02 147,522,528
57
- # ...
58
- # Total: 448,383,383 Avg/day: 4,982,038 Trend: flat (-0.46%)
59
93
 
60
94
  # Raw JSON output
61
95
  registry-stats express -r npm --json
@@ -74,14 +108,6 @@ registry-stats
74
108
 
75
109
  # Compare across registries
76
110
  registry-stats express --compare
77
- # express — comparison
78
- #
79
- # Metric npm pypi
80
- # ─────────────────────────────────
81
- # Total - -
82
- # Month 283,472 47,201
83
- # Week 67,367 11,800
84
- # Day 11,566 1,686
85
111
 
86
112
  # Export as CSV or chart-friendly JSON
87
113
  registry-stats express -r npm --range 2025-01-01:2025-06-30 --format csv
@@ -161,7 +187,6 @@ calc.toChartData(daily, 'express'); // { labels: [...], datasets: [{ labe
161
187
 
162
188
  // Comparison — same package across registries
163
189
  const comparison = await stats.compare('express');
164
- // → { package: 'express', registries: { npm: {...}, pypi: {...} }, fetchedAt: '...' }
165
190
  await stats.compare('express', ['npm', 'pypi']); // specific registries only
166
191
 
167
192
  // Caching (5 min TTL, in-memory)
@@ -173,45 +198,7 @@ await stats('npm', 'express', { cache }); // cache hit
173
198
  ## Support technique pour les registres
174
199
 
175
200
  | Registre. | Format du paquet. | Séries temporelles. | Données disponibles. |
176
- | Bien sûr, veuillez me fournir le texte que vous souhaitez que je traduise. | "The quick brown fox jumps over the lazy dog."
177
- "This is a sample text."
178
- "Please provide more context."
179
- "Thank you for your cooperation."
180
- "We look forward to hearing from you soon."
181
- "The meeting will be held on Tuesday."
182
- "The deadline is Friday."
183
- "Please contact us if you have any questions."
184
- "We are committed to providing excellent service."
185
- "Your satisfaction is our priority."
186
- ---------------
187
- "Le rapide renard brun saute par-dessus le chien paresseux."
188
- "Ceci est un exemple de texte."
189
- "Veuillez fournir plus de contexte."
190
- "Nous vous remercions de votre coopération."
191
- "Nous espérons avoir de vos nouvelles prochainement."
192
- "La réunion se tiendra le mardi."
193
- "La date limite est le vendredi."
194
- "N'hésitez pas à nous contacter si vous avez des questions."
195
- "Nous nous engageons à fournir un excellent service."
196
- "Votre satisfaction est notre priorité." | "Please provide the text you would like me to translate." | "The company is committed to providing high-quality products and services."
197
-
198
- "We are looking for a motivated and experienced candidate."
199
-
200
- "The meeting will take place on Tuesday at 2:00 PM."
201
-
202
- "Please submit your application by the end of the week."
203
-
204
- "For more information, please contact us."
205
- ----------------
206
- "L'entreprise s'engage à fournir des produits et services de haute qualité."
207
-
208
- "Nous recherchons un candidat motivé et expérimenté."
209
-
210
- "La réunion aura lieu mardi à 14h00."
211
-
212
- "Veuillez soumettre votre candidature avant la fin de la semaine."
213
-
214
- "Pour plus d'informations, veuillez nous contacter." |
201
+ |----------|---------------|-------------|----------------|
215
202
  | `npm` | `express`, `@scope/pkg` | Oui (549 jours). | dernier jour, dernière semaine, dernier mois. |
216
203
  | `pypi` | `requests` | Oui (180 jours). | dernier jour, dernière semaine, dernier mois, total. |
217
204
  | `nuget` | `Newtonsoft.Json` | No | total |
@@ -230,7 +217,6 @@ await stats('npm', 'express', { cache }); // cache hit
230
217
  Fonctionnez en tant que microservice ou intégrez-le à votre propre serveur :
231
218
 
232
219
  ```bash
233
- # CLI
234
220
  registry-stats serve --port 3000
235
221
  ```
236
222
 
@@ -278,13 +264,53 @@ registerProvider(cargo);
278
264
  await stats('cargo', 'serde');
279
265
  ```
280
266
 
281
- ## Site web
267
+ ## Structure du dépôt
268
+
269
+ ```
270
+ registry-stats/
271
+ ├── src/ # TypeScript engine (published to npm)
272
+ ├── site/ # Astro dashboard + landing page (deployed to GitHub Pages)
273
+ ├── desktop/ # WinUI 3 desktop app (.NET 10 MAUI)
274
+ └── test/ # Library tests (vitest)
275
+ ```
276
+
277
+ ## Développement
278
+
279
+ ```bash
280
+ # Engine
281
+ npm install && npm run build && npm test
282
+
283
+ # Dashboard (dev server)
284
+ npm run site:dev
285
+
286
+ # Dashboard (production build)
287
+ npm run site:build
288
+ ```
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
282
303
 
283
- Les pages de documentation et la page d'accueil se trouvent dans le répertoire `site/`.
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** |
284
312
 
285
- - Développement : `npm run site:dev`
286
- - Construction : `npm run site:build`
287
- - Aperçu : `npm run site:preview`
313
+ > Audit complet : [SHIP_GATE.md](SHIP_GATE.md) · [SCORECARD.md](SCORECARD.md)
288
314
 
289
315
  ## Licence
290
316
 
package/README.hi.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <a href="README.md">English</a> | <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> | <strong>हिन्दी</strong> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português</a>
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.md">English</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
3
  </p>
4
4
 
5
5
  <p align="center">
@@ -7,31 +7,69 @@
7
7
  </p>
8
8
 
9
9
  <p align="center">
10
- One command. Five registries. All your download stats.
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>
16
16
  <a href="https://www.npmjs.com/package/@mcptoolshop/registry-stats"><img src="https://img.shields.io/npm/v/@mcptoolshop/registry-stats" alt="npm version"></a>
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>
17
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>
18
19
  </p>
19
20
 
20
21
  <p align="center">
21
- <a href="https://mcp-tool-shop-org.github.io/registry-stats/">Docs</a> &middot;
22
+ <a href="#dashboard">Dashboard</a> &middot;
23
+ <a href="#desktop-app">Desktop App</a> &middot;
22
24
  <a href="#install">Install</a> &middot;
23
25
  <a href="#cli">CLI</a> &middot;
24
- <a href="#config-file">Config</a> &middot;
25
26
  <a href="#programmatic-api">API</a> &middot;
26
27
  <a href="#rest-api-server">REST Server</a> &middot;
28
+ <a href="#config-file">Config</a> &middot;
27
29
  <a href="#license">License</a>
28
30
  </p>
29
31
 
30
32
  ---
31
33
 
32
- यदि आप npm, PyPI, NuGet, VS Code मार्केटप्लेस या डॉकर हब पर कुछ प्रकाशित करते हैं, तो वर्तमान में आपको "इस महीने मुझे कितने डाउनलोड मिले?" यह जानने के लिए पांच अलग-अलग एपीआई की आवश्यकता होती है। यह लाइब्रेरी आपको सभी के लिए एक ही इंटरफ़ेस प्रदान करती है - या तो कमांड-लाइन इंटरफ़ेस (CLI) के रूप में या प्रोग्रामेटिक एपीआई के रूप में।
34
+ आप npm, PyPI, NuGet, VS Code मार्केटप्लेस और डॉकर हब पर सामग्री प्रकाशित करते हैं। वर्तमान में, "मेरे पैकेज कैसा प्रदर्शन कर रहे हैं?" का उत्तर देने का मतलब है कि आपको पांच अलग-अलग साइटों की जांच करनी होगी। **registry-stats** एक संपूर्ण प्लेटफॉर्म है: यह टाइपस्क्रिप्ट इंजन (CLI + API + REST सर्वर), एक लाइव वेब डैशबोर्ड और एक देशी विंडोज डेस्कटॉप ऐप है - और ये सभी एक ही रिपॉजिटरी से उपलब्ध हैं।
35
+
36
+ इसमें कोई रनटाइम निर्भरता नहीं है। यह देशी `fetch()` का उपयोग करता है। Node 18+।
37
+
38
+ ## इसके अंदर क्या है
39
+
40
+ | लेयर | यह क्या करता है |
41
+ |-------|-------------|
42
+ | **Engine** | टाइपस्क्रिप्ट लाइब्रेरी + CLI + REST सर्वर। एक ही इंटरफ़ेस के साथ पांच रजिस्ट्री को क्वेरी करें। इसे npm पर `@mcptoolshop/registry-stats` के रूप में प्रकाशित किया गया है। |
43
+ | **Dashboard** | एस्ट्रो-संचालित वेब ऐप। AI चैट सहायक, 6 इंटरैक्टिव चार्ट, स्मार्ट ग्रोथ इंजन और टैब वाली सहायता गाइड। CI द्वारा साप्ताहिक रूप से पुनर्निर्मित। |
44
+ | **Desktop** | WinUI 3 + WebView2 वाला देशी विंडोज ऐप। डैशबोर्ड को ऑफ़लाइन उपलब्ध कराता है और आवश्यकता पड़ने पर लाइव आँकड़े प्राप्त करता है। |
45
+
46
+ ## डैशबोर्ड
47
+
48
+ एक स्व-अपडेट करने वाला आँकड़े डैशबोर्ड [`/dashboard/`](https://mcp-tool-shop-org.github.io/registry-stats/dashboard/) पर उपलब्ध है।
33
49
 
34
- शून्य निर्भरता। यह मूल `fetch()` का उपयोग करता है। Node 18 या उससे ऊपर।
50
+ - **टैब इंटरफ़ेस** Home, Analytics, Leaderboard और Help टैब
51
+ - **AI चैट सहायक** — Ollama-संचालित Registry Assistant जिसमें RAG संदर्भ, स्ट्रीमिंग प्रतिक्रियाएँ, मॉडल चयनकर्ता और वार्तालाप स्मृति शामिल है
52
+ - **कार्यकारी सारांश** — हेल्थ स्कोर (0–100), विविधता सूचकांक, साप्ताहिक परिवर्तन, सभी रजिस्ट्री से कुल डाउनलोड
53
+ - **6 इंटरैक्टिव चार्ट** — 30-दिन ट्रेंड (समष्टि / रजिस्ट्री अनुसार / शीर्ष 5 टॉगल), रजिस्ट्री शेयर (पोलर एरिया), पोर्टफोलियो जोखिम (वितरण हिस्टोग्राम + Gini & P90), शीर्ष 10 मोमेंटम, स्पार्कलाइन युक्त वेलोसिटी ट्रैकर, और 30-दिन हीटमैप (स्पाइक डिटेक्शन >2σ)
54
+ - **स्मार्ट ग्रोथ इंजन** — कम विभाजक विकृति को संभालता है। बेसलाइन थ्रेशोल्ड, प्रतिशत सीमा और अवमंदित वेग सूत्र
55
+ - **कार्ययोग्य अंतर्दृष्टि** — स्वचालित सिफारिशें और गिरावट वाले पैकेजों के लिए चेतावनी
56
+ - **लीडरबोर्ड** — सभी पैकेज साप्ताहिक डाउनलोड के अनुसार रैंक किए गए, 30-दिन स्पार्कलाइन और स्मार्ट ट्रेंड बैज के साथ
57
+ - **सेटअप पेज** — पोर्टफोलियो संपादक, सत्यापन, registry-sync सहयोगी अनुभाग, और पाइपलाइन अवलोकन
58
+ - **सहायता टैब** — प्रत्येक टैब, मुख्य अवधारणाएँ, AI सहायक सुझाव, डेटा पाइपलाइन, और उपयोगी लिंक को कवर करने वाली सरल गाइड
59
+ - **डार्क / लाइट थीम** — सिस्टम वरीयता का पालन करता है।
60
+
61
+ डेटा निर्माण के समय प्राप्त किया जाता है और CI (सोमवार सुबह 6:00 UTC) द्वारा साप्ताहिक रूप से पुनर्निर्मित किया जाता है। ट्रैक किए गए पैकेजों को `site/src/data/packages.json` में कॉन्फ़िगर करें।
62
+
63
+ ## डेस्कटॉप ऐप
64
+
65
+ एक देशी विंडोज ऐप जो डैशबोर्ड को एक स्थानीय WebView2 शेल में लपेटता है:
66
+
67
+ - **ऑफ़लाइन उपयोग** — बंडल किए गए HTML/CSS/JS के साथ आता है; इंटरनेट के बिना काम करता है।
68
+ - **लाइव रिफ्रेश** — GitHub Pages से `stats.json` प्राप्त करता है।
69
+ - **CSV निर्यात** — लीडरबोर्ड डेटा को एक क्लिक में निर्यात करें।
70
+ - **MSIX पैकेज्ड** — CI के माध्यम से `desktop-ci.yml` का उपयोग करके बनाया और हस्ताक्षरित।
71
+
72
+ डेस्कटॉप का स्रोत `desktop/` में है। .NET 10 MAUI के साथ बनाया गया है, जो WinUI 3 को लक्षित करता है।
35
73
 
36
74
  ## इंस्टॉल करें
37
75
 
@@ -52,10 +90,6 @@ registry-stats express
52
90
 
53
91
  # Time series with monthly breakdown + trend
54
92
  registry-stats express -r npm --range 2025-01-01:2025-06-30
55
- # 2025-01 142,359,021
56
- # 2025-02 147,522,528
57
- # ...
58
- # Total: 448,383,383 Avg/day: 4,982,038 Trend: flat (-0.46%)
59
93
 
60
94
  # Raw JSON output
61
95
  registry-stats express -r npm --json
@@ -74,14 +108,6 @@ registry-stats
74
108
 
75
109
  # Compare across registries
76
110
  registry-stats express --compare
77
- # express — comparison
78
- #
79
- # Metric npm pypi
80
- # ─────────────────────────────────
81
- # Total - -
82
- # Month 283,472 47,201
83
- # Week 67,367 11,800
84
- # Day 11,566 1,686
85
111
 
86
112
  # Export as CSV or chart-friendly JSON
87
113
  registry-stats express -r npm --range 2025-01-01:2025-06-30 --format csv
@@ -161,7 +187,6 @@ calc.toChartData(daily, 'express'); // { labels: [...], datasets: [{ labe
161
187
 
162
188
  // Comparison — same package across registries
163
189
  const comparison = await stats.compare('express');
164
- // → { package: 'express', registries: { npm: {...}, pypi: {...} }, fetchedAt: '...' }
165
190
  await stats.compare('express', ['npm', 'pypi']); // specific registries only
166
191
 
167
192
  // Caching (5 min TTL, in-memory)
@@ -173,7 +198,7 @@ await stats('npm', 'express', { cache }); // cache hit
173
198
  ## रजिस्ट्री समर्थन
174
199
 
175
200
  | रजिस्ट्री | पैकेज प्रारूप | समय श्रृंखला | उपलब्ध डेटा |
176
- | ---------- | --------------- | ------------- | ---------------- |
201
+ |----------|---------------|-------------|----------------|
177
202
  | `npm` | `express`, `@scope/pkg` | हाँ (549 दिन) | अंतिम दिन, अंतिम सप्ताह, अंतिम महीना |
178
203
  | `pypi` | `requests` | हाँ (180 दिन) | अंतिम दिन, अंतिम सप्ताह, अंतिम महीना, कुल |
179
204
  | `nuget` | `Newtonsoft.Json` | No | कुल |
@@ -192,7 +217,6 @@ await stats('npm', 'express', { cache }); // cache hit
192
217
  इसे एक माइक्रोसर्विस के रूप में चलाएं या इसे अपने सर्वर में एम्बेड करें:
193
218
 
194
219
  ```bash
195
- # CLI
196
220
  registry-stats serve --port 3000
197
221
  ```
198
222
 
@@ -240,13 +264,53 @@ registerProvider(cargo);
240
264
  await stats('cargo', 'serde');
241
265
  ```
242
266
 
243
- ## वेबसाइट
267
+ ## रिपॉजिटरी संरचना
268
+
269
+ ```
270
+ registry-stats/
271
+ ├── src/ # TypeScript engine (published to npm)
272
+ ├── site/ # Astro dashboard + landing page (deployed to GitHub Pages)
273
+ ├── desktop/ # WinUI 3 desktop app (.NET 10 MAUI)
274
+ └── test/ # Library tests (vitest)
275
+ ```
276
+
277
+ ## विकास
278
+
279
+ ```bash
280
+ # Engine
281
+ npm install && npm run build && npm test
282
+
283
+ # Dashboard (dev server)
284
+ npm run site:dev
285
+
286
+ # Dashboard (production build)
287
+ npm run site:build
288
+ ```
289
+
290
+ ## सुरक्षा और डेटा दायरा
291
+
292
+ | पहलू | विवरण |
293
+ |--------|--------|
294
+ | **Data touched** | npm, PyPI, NuGet, VS Code मार्केटप्लेस, डॉकर हब से सार्वजनिक डाउनलोड आँकड़े। इन-मेमोरी कैश (वैकल्पिक)। |
295
+ | **Data NOT touched** | कोई टेलीमेट्री नहीं। कोई एनालिटिक्स नहीं। कोई क्रेडेंशियल स्टोरेज नहीं। कोई उपयोगकर्ता डेटा नहीं। कोई फ़ाइल लेखन नहीं। |
296
+ | **Permissions** | पढ़ें: सार्वजनिक रजिस्ट्री API HTTPS के माध्यम से। लिखें: केवल stdout/stderr। |
297
+ | **Network** | HTTPS सार्वजनिक रजिस्ट्री API पर। वैकल्पिक लोकलहोस्ट REST सर्वर। |
298
+ | **Telemetry** | कोई भी डेटा एकत्र या भेजा नहीं जाता है। |
299
+
300
+ भेद्यता रिपोर्टिंग के लिए [SECURITY.md](SECURITY.md) देखें।
301
+
302
+ ## स्कोरकार्ड
244
303
 
245
- दस्तावेज़/लैंडिंग पृष्ठ `site/` में स्थित है।
304
+ | श्रेणी | स्कोर |
305
+ |----------|-------|
306
+ | A. सुरक्षा | 10 |
307
+ | B. त्रुटि प्रबंधन | 10 |
308
+ | C. ऑपरेटर दस्तावेज़ | 10 |
309
+ | D. शिपिंग स्वच्छता | 10 |
310
+ | E. पहचान (सॉफ्ट) | 10 |
311
+ | **Overall** | **50/50** |
246
312
 
247
- - विकास: `npm run site:dev`
248
- - बिल्ड: `npm run site:build`
249
- - पूर्वावलोकन: `npm run site:preview`
313
+ > पूर्ण ऑडिट: [SHIP_GATE.md](SHIP_GATE.md) · [SCORECARD.md](SCORECARD.md)
250
314
 
251
315
  ## लाइसेंस
252
316