@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 +90 -26
- package/README.fr.md +90 -64
- package/README.hi.md +90 -26
- package/README.it.md +90 -26
- package/README.ja.md +90 -26
- package/README.md +61 -35
- package/README.pt-BR.md +90 -26
- package/README.zh.md +90 -26
- package/package.json +2 -2
package/README.es.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<a href="README.md"
|
|
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
|
-
|
|
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="
|
|
22
|
+
<a href="#dashboard">Dashboard</a> ·
|
|
23
|
+
<a href="#desktop-app">Desktop App</a> ·
|
|
22
24
|
<a href="#install">Install</a> ·
|
|
23
25
|
<a href="#cli">CLI</a> ·
|
|
24
|
-
<a href="#config-file">Config</a> ·
|
|
25
26
|
<a href="#programmatic-api">API</a> ·
|
|
26
27
|
<a href="#rest-api-server">REST Server</a> ·
|
|
28
|
+
<a href="#config-file">Config</a> ·
|
|
27
29
|
<a href="#license">License</a>
|
|
28
30
|
</p>
|
|
29
31
|
|
|
30
32
|
---
|
|
31
33
|
|
|
32
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
-
|
|
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"
|
|
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
|
-
|
|
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="
|
|
22
|
+
<a href="#dashboard">Dashboard</a> ·
|
|
23
|
+
<a href="#desktop-app">Desktop App</a> ·
|
|
22
24
|
<a href="#install">Install</a> ·
|
|
23
25
|
<a href="#cli">CLI</a> ·
|
|
24
|
-
<a href="#config-file">Config</a> ·
|
|
25
26
|
<a href="#programmatic-api">API</a> ·
|
|
26
27
|
<a href="#rest-api-server">REST Server</a> ·
|
|
28
|
+
<a href="#config-file">Config</a> ·
|
|
27
29
|
<a href="#license">License</a>
|
|
28
30
|
</p>
|
|
29
31
|
|
|
30
32
|
---
|
|
31
33
|
|
|
32
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
-
|
|
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"
|
|
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
|
-
|
|
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="
|
|
22
|
+
<a href="#dashboard">Dashboard</a> ·
|
|
23
|
+
<a href="#desktop-app">Desktop App</a> ·
|
|
22
24
|
<a href="#install">Install</a> ·
|
|
23
25
|
<a href="#cli">CLI</a> ·
|
|
24
|
-
<a href="#config-file">Config</a> ·
|
|
25
26
|
<a href="#programmatic-api">API</a> ·
|
|
26
27
|
<a href="#rest-api-server">REST Server</a> ·
|
|
28
|
+
<a href="#config-file">Config</a> ·
|
|
27
29
|
<a href="#license">License</a>
|
|
28
30
|
</p>
|
|
29
31
|
|
|
30
32
|
---
|
|
31
33
|
|
|
32
|
-
|
|
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
|
-
|
|
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
|
-
|
|
304
|
+
| श्रेणी | स्कोर |
|
|
305
|
+
|----------|-------|
|
|
306
|
+
| A. सुरक्षा | 10 |
|
|
307
|
+
| B. त्रुटि प्रबंधन | 10 |
|
|
308
|
+
| C. ऑपरेटर दस्तावेज़ | 10 |
|
|
309
|
+
| D. शिपिंग स्वच्छता | 10 |
|
|
310
|
+
| E. पहचान (सॉफ्ट) | 10 |
|
|
311
|
+
| **Overall** | **50/50** |
|
|
246
312
|
|
|
247
|
-
|
|
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
|
|