@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.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> &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
- 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. Resúmenes ejecutivos, indicadores de crecimiento, estado de los datos, tabla de clasificación con gráficos. 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
- - **Resumen ejecutivo** — Narrativa semanal en una frase: registro principal, paquete principal, mayor crecimiento, concentración de la cartera, confianza de los datos.
51
- - **Indicador de crecimiento** — Paquetes con mayor crecimiento, mayor disminución y nuevos paquetes activos (npm 7 días vs. los 7 días anteriores).
52
- - **Estado de los datos** — Cobertura por registro, insignias de confianza (correcto / parcial / faltante), detalles de errores ampliables.
53
- - **Deltas de instantáneas** — Seguimiento semanal para registros solo acumulativos (Docker, VS Code, NuGet).
54
- - **Tabla de clasificación** — Todos los paquetes clasificados por descargas semanales con gráficos de 30 días por fila.
55
- - **Tema claro/oscuro** — Sigue la preferencia del sistema.
56
-
57
- 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`.
58
-
59
- ## Aplicación de escritorio
60
-
61
- Una aplicación nativa para Windows que integra el panel en un entorno WebView2 local:
62
-
63
- - **Funciona sin conexión** — Incluye HTML/CSS/JS empaquetados; funciona sin internet.
64
- - **Actualización en tiempo real** — Descarga `stats.json` de GitHub Pages bajo demanda.
65
- - **Exportación a CSV** Exporta los datos de la tabla de clasificación con un solo clic.
66
- - **Empaquetado MSIX** — Se construye y firma en CI mediante `desktop-ci.yml`.
67
-
68
- 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.
69
-
70
- ## Instalación
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>