@mcptoolshop/registry-stats 2.0.0 → 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 +134 -130
- package/README.fr.md +134 -130
- package/README.hi.md +134 -130
- package/README.it.md +134 -130
- package/README.ja.md +134 -130
- package/README.md +14 -10
- package/README.pt-BR.md +134 -130
- package/README.zh.md +134 -130
- package/package.json +2 -2
package/README.es.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.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
|
-
</p>
|
|
4
|
-
|
|
1
|
+
<p align="center">
|
|
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
|
+
</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> ·
|
|
23
23
|
<a href="#desktop-app">Desktop App</a> ·
|
|
@@ -28,53 +28,57 @@
|
|
|
28
28
|
<a href="#config-file">Config</a> ·
|
|
29
29
|
<a href="#license">License</a>
|
|
30
30
|
</p>
|
|
31
|
-
|
|
31
|
+
|
|
32
32
|
---
|
|
33
|
-
|
|
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.
|
|
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/).
|
|
49
|
-
|
|
50
|
-
- **
|
|
51
|
-
- **
|
|
52
|
-
- **
|
|
53
|
-
- **
|
|
54
|
-
- **
|
|
55
|
-
- **
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
33
|
+
|
|
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/).
|
|
49
|
+
|
|
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.
|
|
73
|
+
|
|
74
|
+
## Instalación
|
|
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
|
-
## Archivo de configuración
|
|
117
|
-
|
|
118
|
-
Crea un archivo `registry-stats.config.json` en la raíz de tu proyecto (o ejecuta `registry-stats --init`):
|
|
119
|
-
|
|
119
|
+
|
|
120
|
+
## Archivo de configuración
|
|
121
|
+
|
|
122
|
+
Crea un archivo `registry-stats.config.json` en la raíz de tu proyecto (o ejecuta `registry-stats --init`):
|
|
123
|
+
|
|
120
124
|
```json
|
|
121
125
|
{
|
|
122
126
|
"registries": ["npm", "pypi", "nuget", "vscode", "docker"],
|
|
@@ -135,11 +139,11 @@ Crea un archivo `registry-stats.config.json` en la raíz de tu proyecto (o ejecu
|
|
|
135
139
|
"concurrency": 5
|
|
136
140
|
}
|
|
137
141
|
```
|
|
138
|
-
|
|
139
|
-
Ejecuta `registry-stats` sin argumentos para obtener las estadísticas de todos los paquetes configurados. La CLI busca el archivo de configuración desde el directorio actual.
|
|
140
|
-
|
|
141
|
-
La configuración también está disponible de forma programática:
|
|
142
|
-
|
|
142
|
+
|
|
143
|
+
Ejecuta `registry-stats` sin argumentos para obtener las estadísticas de todos los paquetes configurados. La CLI busca el archivo de configuración desde el directorio actual.
|
|
144
|
+
|
|
145
|
+
La configuración también está disponible de forma programática:
|
|
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 programática
|
|
152
|
-
|
|
154
|
+
|
|
155
|
+
## API programática
|
|
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
|
-
## Soporte para registros
|
|
195
|
-
|
|
196
|
-
| Registro | Formato del paquete | Series de tiempo | Datos disponibles |
|
|
197
|
-
|----------|---------------|-------------|----------------|
|
|
198
|
-
| `npm` | `express`, `@scope/pkg` | Sí (549 días) | último día, última semana, último mes |
|
|
199
|
-
| `pypi` | `requests` | Sí (180 días) | último día, última semana, último mes, total |
|
|
200
|
-
| `nuget` | `Newtonsoft.Json` | No | total |
|
|
201
|
-
| `vscode` | `publisher.extension` | No | total (instalaciones), calificación, tendencias |
|
|
202
|
-
| `docker` | `namespace/repo` | No | total (descargas), estrellas |
|
|
203
|
-
|
|
204
|
-
## Fiabilidad integrada
|
|
205
|
-
|
|
206
|
-
- Reintentos automáticos con retroceso exponencial en caso de errores 429/5xx.
|
|
207
|
-
- Respeta los encabezados `Retry-After`.
|
|
208
|
-
- Limitación de concurrencia para solicitudes masivas.
|
|
209
|
-
- Caché TTL opcional (plug-in: proporciona tu propio backend de Redis/archivo a través de la interfaz `StatsCache`).
|
|
210
|
-
|
|
211
|
-
## Servidor de API REST
|
|
212
|
-
|
|
213
|
-
Ejecútalo como un microservicio o intégralo en tu propio servidor:
|
|
214
|
-
|
|
197
|
+
|
|
198
|
+
## Soporte para registros
|
|
199
|
+
|
|
200
|
+
| Registro | Formato del paquete | Series de tiempo | Datos disponibles |
|
|
201
|
+
|----------|---------------|-------------|----------------|
|
|
202
|
+
| `npm` | `express`, `@scope/pkg` | Sí (549 días) | último día, última semana, último mes |
|
|
203
|
+
| `pypi` | `requests` | Sí (180 días) | último día, última semana, último mes, total |
|
|
204
|
+
| `nuget` | `Newtonsoft.Json` | No | total |
|
|
205
|
+
| `vscode` | `publisher.extension` | No | total (instalaciones), calificación, tendencias |
|
|
206
|
+
| `docker` | `namespace/repo` | No | total (descargas), estrellas |
|
|
207
|
+
|
|
208
|
+
## Fiabilidad integrada
|
|
209
|
+
|
|
210
|
+
- Reintentos automáticos con retroceso exponencial en caso de errores 429/5xx.
|
|
211
|
+
- Respeta los encabezados `Retry-After`.
|
|
212
|
+
- Limitación de concurrencia para solicitudes masivas.
|
|
213
|
+
- Caché TTL opcional (plug-in: proporciona tu propio backend de Redis/archivo a través de la interfaz `StatsCache`).
|
|
214
|
+
|
|
215
|
+
## Servidor de API REST
|
|
216
|
+
|
|
217
|
+
Ejecútalo como un microservicio o intégralo en tu propio servidor:
|
|
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
|
-
Uso programático para servidores personalizados o sin servidor:
|
|
227
|
-
|
|
229
|
+
|
|
230
|
+
Uso programático para servidores personalizados o sin servidor:
|
|
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
|
-
## Registros personalizados
|
|
241
|
-
|
|
243
|
+
|
|
244
|
+
## Registros personalizados
|
|
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
|
-
## Estructura del repositorio
|
|
264
|
-
|
|
266
|
+
|
|
267
|
+
## Estructura del repositorio
|
|
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
|
-
## Desarrollo
|
|
274
|
-
|
|
276
|
+
|
|
277
|
+
## Desarrollo
|
|
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
|
-
## Seguridad y alcance de los datos
|
|
287
|
-
|
|
288
|
-
| Aspecto | Detalle |
|
|
289
|
-
|--------|--------|
|
|
290
|
-
| **Data touched** | Estadísticas de descarga pública de npm, PyPI, NuGet, Marketplace de VS Code, Docker Hub. Caché en memoria (opcional). |
|
|
291
|
-
| **Data NOT touched** | Sin telemetría. Sin análisis. Sin almacenamiento de credenciales. Sin datos de usuario. Sin escrituras de archivos. |
|
|
292
|
-
| **Permissions** | Lectura: APIs públicas de registros a través de HTTPS. Escritura: solo stdout/stderr. |
|
|
293
|
-
| **Network** | Conexiones HTTPS salientes a APIs públicas de registros. Servidor REST opcional en localhost. |
|
|
294
|
-
| **Telemetry** | Ninguno recopilado ni enviado. |
|
|
295
|
-
|
|
296
|
-
Consulte [SECURITY.md](SECURITY.md) para informar sobre vulnerabilidades.
|
|
297
|
-
|
|
298
|
-
## Tabla de puntuación
|
|
299
|
-
|
|
300
|
-
| Categoría | Puntuación |
|
|
301
|
-
|----------|-------|
|
|
302
|
-
| A. Seguridad | 10 |
|
|
303
|
-
| B. Manejo de errores | 10 |
|
|
304
|
-
| C. Documentación para operadores | 10 |
|
|
305
|
-
| D. Higiene de implementación | 10 |
|
|
306
|
-
| E. Identidad (suave) | 10 |
|
|
307
|
-
| **Overall** | **50/50** |
|
|
308
|
-
|
|
309
|
-
> Auditoría completa: [SHIP_GATE.md](SHIP_GATE.md) · [SCORECARD.md](SCORECARD.md)
|
|
310
|
-
|
|
311
|
-
## Licencia
|
|
312
|
-
|
|
313
|
-
MIT
|
|
314
|
-
|
|
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
|
|
303
|
+
|
|
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** |
|
|
312
|
+
|
|
313
|
+
> Auditoría completa: [SHIP_GATE.md](SHIP_GATE.md) · [SCORECARD.md](SCORECARD.md)
|
|
314
|
+
|
|
315
|
+
## Licencia
|
|
316
|
+
|
|
317
|
+
MIT
|
|
318
|
+
|
|
315
319
|
---
|
|
316
|
-
|
|
317
|
-
Creado por <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
|
|
320
|
+
|
|
321
|
+
Creado por <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
|