@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 +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 +18 -11
- package/README.pt-BR.md +134 -130
- package/README.zh.md +134 -130
- package/package.json +2 -2
package/README.pt-BR.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.md">English</a>
|
|
3
|
-
</p>
|
|
4
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.md">English</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
|
-
Você publica no npm, PyPI, NuGet, na loja do VS Code e no Docker Hub. Atualmente, responder à pergunta "como estão indo meus pacotes?" significa verificar cinco sites diferentes. **registry-stats** é a plataforma completa: um motor TypeScript (CLI + API + servidor REST), um painel web interativo e um aplicativo nativo para Windows — tudo em um único repositório.
|
|
35
|
-
|
|
36
|
-
Sem dependências de tempo de execução. Utiliza a função nativa `fetch()`. Node 18+.
|
|
37
|
-
|
|
38
|
-
## O que está incluído
|
|
39
|
-
|
|
40
|
-
| Camada | O que ele faz |
|
|
41
|
-
|-------|-------------|
|
|
42
|
-
| **Engine** | Biblioteca TypeScript + CLI + servidor REST. Consulte cinco registros com uma única interface. Publicado no npm como `@mcptoolshop/registry-stats`. |
|
|
43
|
-
| **Dashboard** | Aplicativo web alimentado por Astro.
|
|
44
|
-
| **Desktop** | Aplicativo nativo para Windows, construído com WinUI 3 + WebView2. Inclui o painel offline e busca as estatísticas em tempo real sob demanda. |
|
|
45
|
-
|
|
46
|
-
## Painel
|
|
47
|
-
|
|
48
|
-
Um painel de estatísticas que se atualiza automaticamente está disponível em [`/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
|
+
Você publica no npm, PyPI, NuGet, na loja do VS Code e no Docker Hub. Atualmente, responder à pergunta "como estão indo meus pacotes?" significa verificar cinco sites diferentes. **registry-stats** é a plataforma completa: um motor TypeScript (CLI + API + servidor REST), um painel web interativo e um aplicativo nativo para Windows — tudo em um único repositório.
|
|
35
|
+
|
|
36
|
+
Sem dependências de tempo de execução. Utiliza a função nativa `fetch()`. Node 18+.
|
|
37
|
+
|
|
38
|
+
## O que está incluído
|
|
39
|
+
|
|
40
|
+
| Camada | O que ele faz |
|
|
41
|
+
|-------|-------------|
|
|
42
|
+
| **Engine** | Biblioteca TypeScript + CLI + servidor REST. Consulte cinco registros com uma única interface. Publicado no npm como `@mcptoolshop/registry-stats`. |
|
|
43
|
+
| **Dashboard** | Aplicativo web alimentado por Astro. Assistente de chat com IA, seis gráficos interativos, motor de crescimento inteligente e guia de ajuda com abas. Reconstruído semanalmente pelo CI. |
|
|
44
|
+
| **Desktop** | Aplicativo nativo para Windows, construído com WinUI 3 + WebView2. Inclui o painel offline e busca as estatísticas em tempo real sob demanda. |
|
|
45
|
+
|
|
46
|
+
## Painel
|
|
47
|
+
|
|
48
|
+
Um painel de estatísticas que se atualiza automaticamente está disponível em [`/dashboard/`](https://mcp-tool-shop-org.github.io/registry-stats/dashboard/).
|
|
49
|
+
|
|
50
|
+
- **Interface com abas** — Abas Home, Analytics, Leaderboard e Help
|
|
51
|
+
- **Assistente de chat com IA** — Registry Assistant alimentado por Ollama com contexto RAG, respostas em streaming, seletor de modelos e memória de conversação
|
|
52
|
+
- **Resumo executivo** — pontuação de saúde (0–100), índice de diversidade, variação semanal, downloads totais de todos os registros
|
|
53
|
+
- **Seis gráficos interativos** — tendência de 30 dias (vista agregada / por registro / top 5), participação do registro (área polar), risco do portfólio (histograma + Gini & P90), top 10 momentum, rastreador de velocidade com sparklines e mapa de calor de 30 dias com detecção de picos (>2σ)
|
|
54
|
+
- **Motor de crescimento inteligente** — lida com a distorção de denominadores pequenos com limite base, teto de porcentagem e fórmula de velocidade amortecida
|
|
55
|
+
- **Insights acionáveis** — recomendações autogeradas e alertas de atenção para pacotes em declínio
|
|
56
|
+
- **Tabela de classificação** — todos os pacotes classificados por downloads semanais com sparklines de 30 dias e badges de tendência inteligentes
|
|
57
|
+
- **Página de configuração** — editor de portfólio com validação, seção registry-sync e visão geral do pipeline
|
|
58
|
+
- **Aba de ajuda** — guia amigável cobrindo cada aba, conceitos-chave, dicas do assistente de IA, pipeline de dados e links úteis
|
|
59
|
+
- **Tema claro/escuro** — segue a preferência do sistema
|
|
60
|
+
|
|
61
|
+
Os dados são buscados durante a compilação e reconstruídos semanalmente pelo CI (segundas-feiras às 06:00 UTC). Configure os pacotes a serem monitorados em `site/src/data/packages.json`.
|
|
62
|
+
|
|
63
|
+
## Aplicativo para Desktop
|
|
64
|
+
|
|
65
|
+
Um aplicativo nativo para Windows que encapsula o painel em um shell WebView2 local:
|
|
66
|
+
|
|
67
|
+
- **Funciona offline** — inclui HTML/CSS/JS empacotados; funciona sem internet.
|
|
68
|
+
- **Atualização em tempo real** — busca o arquivo `stats.json` do GitHub Pages sob demanda.
|
|
69
|
+
- **Exportação para CSV** — exporte os dados da tabela de classificação com um clique.
|
|
70
|
+
- **Empacotado como MSIX** — construído e assinado no CI via `desktop-ci.yml`.
|
|
71
|
+
|
|
72
|
+
O código-fonte do aplicativo para desktop está localizado em `desktop/`. Construído com .NET 10 MAUI, direcionado para WinUI 3.
|
|
73
|
+
|
|
74
|
+
## Instalação
|
|
75
|
+
|
|
72
76
|
```bash
|
|
73
77
|
npm install @mcptoolshop/registry-stats
|
|
74
78
|
```
|
|
75
|
-
|
|
76
|
-
## Interface de Linha de Comando (CLI)
|
|
77
|
-
|
|
79
|
+
|
|
80
|
+
## Interface de Linha de Comando (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
|
-
## Arquivo de Configuração
|
|
117
|
-
|
|
118
|
-
Crie um arquivo `registry-stats.config.json` na raiz do seu projeto (ou execute `registry-stats --init`):
|
|
119
|
-
|
|
119
|
+
|
|
120
|
+
## Arquivo de Configuração
|
|
121
|
+
|
|
122
|
+
Crie um arquivo `registry-stats.config.json` na raiz do seu projeto (ou execute `registry-stats --init`):
|
|
123
|
+
|
|
120
124
|
```json
|
|
121
125
|
{
|
|
122
126
|
"registries": ["npm", "pypi", "nuget", "vscode", "docker"],
|
|
@@ -135,11 +139,11 @@ Crie um arquivo `registry-stats.config.json` na raiz do seu projeto (ou execute
|
|
|
135
139
|
"concurrency": 5
|
|
136
140
|
}
|
|
137
141
|
```
|
|
138
|
-
|
|
139
|
-
Execute `registry-stats` sem argumentos para obter as estatísticas de todos os pacotes configurados. A CLI procura o arquivo de configuração a partir do diretório atual.
|
|
140
|
-
|
|
141
|
-
A configuração também está disponível programaticamente:
|
|
142
|
-
|
|
142
|
+
|
|
143
|
+
Execute `registry-stats` sem argumentos para obter as estatísticas de todos os pacotes configurados. A CLI procura o arquivo de configuração a partir do diretório atual.
|
|
144
|
+
|
|
145
|
+
A configuração também está disponível programaticamente:
|
|
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
|
-
## Suporte a Registros
|
|
195
|
-
|
|
196
|
-
| Registro | Formato do pacote | Séries temporais | Dados disponíveis |
|
|
197
|
-
|----------|---------------|-------------|----------------|
|
|
198
|
-
| `npm` | `express`, `@scope/pkg` | Sim (549 dias) | último dia, última semana, último mês |
|
|
199
|
-
| `pypi` | `requests` | Sim (180 dias) | último dia, última semana, último mês, total |
|
|
200
|
-
| `nuget` | `Newtonsoft.Json` | No | total |
|
|
201
|
-
| `vscode` | `publisher.extension` | No | total (instalações), avaliação, tendências |
|
|
202
|
-
| `docker` | `namespace/repo` | No | total (downloads), estrelas |
|
|
203
|
-
|
|
204
|
-
## Confiabilidade Integrada
|
|
205
|
-
|
|
206
|
-
- Tentativa automática com retrocesso exponencial em caso de erros 429/5xx
|
|
207
|
-
- Respeita os cabeçalhos `Retry-After`
|
|
208
|
-
- Limitação de concorrência para solicitações em lote
|
|
209
|
-
- Cache TTL opcional (plugável — utilize seu próprio backend Redis/arquivo através da interface `StatsCache`)
|
|
210
|
-
|
|
211
|
-
## Servidor de API REST
|
|
212
|
-
|
|
213
|
-
Execute como um microserviço ou incorpore em seu próprio servidor:
|
|
214
|
-
|
|
197
|
+
|
|
198
|
+
## Suporte a Registros
|
|
199
|
+
|
|
200
|
+
| Registro | Formato do pacote | Séries temporais | Dados disponíveis |
|
|
201
|
+
|----------|---------------|-------------|----------------|
|
|
202
|
+
| `npm` | `express`, `@scope/pkg` | Sim (549 dias) | último dia, última semana, último mês |
|
|
203
|
+
| `pypi` | `requests` | Sim (180 dias) | último dia, última semana, último mês, total |
|
|
204
|
+
| `nuget` | `Newtonsoft.Json` | No | total |
|
|
205
|
+
| `vscode` | `publisher.extension` | No | total (instalações), avaliação, tendências |
|
|
206
|
+
| `docker` | `namespace/repo` | No | total (downloads), estrelas |
|
|
207
|
+
|
|
208
|
+
## Confiabilidade Integrada
|
|
209
|
+
|
|
210
|
+
- Tentativa automática com retrocesso exponencial em caso de erros 429/5xx
|
|
211
|
+
- Respeita os cabeçalhos `Retry-After`
|
|
212
|
+
- Limitação de concorrência para solicitações em lote
|
|
213
|
+
- Cache TTL opcional (plugável — utilize seu próprio backend Redis/arquivo através da interface `StatsCache`)
|
|
214
|
+
|
|
215
|
+
## Servidor de API REST
|
|
216
|
+
|
|
217
|
+
Execute como um microserviço ou incorpore em seu próprio 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 ou sem servidor:
|
|
227
|
-
|
|
229
|
+
|
|
230
|
+
Uso programático para servidores personalizados ou sem 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
|
-
## Estrutura do Repositório
|
|
264
|
-
|
|
266
|
+
|
|
267
|
+
## Estrutura do Repositório
|
|
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
|
-
## Desenvolvimento
|
|
274
|
-
|
|
276
|
+
|
|
277
|
+
## Desenvolvimento
|
|
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
|
-
## Segurança e Escopo de Dados
|
|
287
|
-
|
|
288
|
-
| Aspecto | Detalhe |
|
|
289
|
-
|--------|--------|
|
|
290
|
-
| **Data touched** | Estatísticas de download públicas do npm, PyPI, NuGet, VS Code Marketplace, Docker Hub. Cache na memória (opcional). |
|
|
291
|
-
| **Data NOT touched** | Sem telemetria. Sem análises. Sem armazenamento de credenciais. Sem dados do usuário. Sem gravações de arquivos. |
|
|
292
|
-
| **Permissions** | Leitura: APIs públicas de registros via HTTPS. Escrita: apenas stdout/stderr. |
|
|
293
|
-
| **Network** | Saída HTTPS para APIs públicas de registros. Servidor REST local opcional. |
|
|
294
|
-
| **Telemetry** | Nenhum dado coletado ou enviado. |
|
|
295
|
-
|
|
296
|
-
Consulte [SECURITY.md](SECURITY.md) para relatar vulnerabilidades.
|
|
297
|
-
|
|
298
|
-
## Tabela de Pontuação
|
|
299
|
-
|
|
300
|
-
| Categoria | Pontuação |
|
|
301
|
-
|----------|-------|
|
|
302
|
-
| A. Segurança | 10 |
|
|
303
|
-
| B. Tratamento de Erros | 10 |
|
|
304
|
-
| C. Documentação para Operadores | 10 |
|
|
305
|
-
| D. Higiene de Distribuição | 10 |
|
|
306
|
-
| E. Identidade (suave) | 10 |
|
|
307
|
-
| **Overall** | **50/50** |
|
|
308
|
-
|
|
309
|
-
> Auditoria completa: [SHIP_GATE.md](SHIP_GATE.md) · [SCORECARD.md](SCORECARD.md)
|
|
310
|
-
|
|
311
|
-
## Licença
|
|
312
|
-
|
|
313
|
-
MIT
|
|
314
|
-
|
|
289
|
+
|
|
290
|
+
## Segurança e Escopo de Dados
|
|
291
|
+
|
|
292
|
+
| Aspecto | Detalhe |
|
|
293
|
+
|--------|--------|
|
|
294
|
+
| **Data touched** | Estatísticas de download públicas do npm, PyPI, NuGet, VS Code Marketplace, Docker Hub. Cache na memória (opcional). |
|
|
295
|
+
| **Data NOT touched** | Sem telemetria. Sem análises. Sem armazenamento de credenciais. Sem dados do usuário. Sem gravações de arquivos. |
|
|
296
|
+
| **Permissions** | Leitura: APIs públicas de registros via HTTPS. Escrita: apenas stdout/stderr. |
|
|
297
|
+
| **Network** | Saída HTTPS para APIs públicas de registros. Servidor REST local opcional. |
|
|
298
|
+
| **Telemetry** | Nenhum dado coletado ou enviado. |
|
|
299
|
+
|
|
300
|
+
Consulte [SECURITY.md](SECURITY.md) para relatar vulnerabilidades.
|
|
301
|
+
|
|
302
|
+
## Tabela de Pontuação
|
|
303
|
+
|
|
304
|
+
| Categoria | Pontuação |
|
|
305
|
+
|----------|-------|
|
|
306
|
+
| A. Segurança | 10 |
|
|
307
|
+
| B. Tratamento de Erros | 10 |
|
|
308
|
+
| C. Documentação para Operadores | 10 |
|
|
309
|
+
| D. Higiene de Distribuição | 10 |
|
|
310
|
+
| E. Identidade (suave) | 10 |
|
|
311
|
+
| **Overall** | **50/50** |
|
|
312
|
+
|
|
313
|
+
> Auditoria completa: [SHIP_GATE.md](SHIP_GATE.md) · [SCORECARD.md](SCORECARD.md)
|
|
314
|
+
|
|
315
|
+
## Licença
|
|
316
|
+
|
|
317
|
+
MIT
|
|
318
|
+
|
|
315
319
|
---
|
|
316
|
-
|
|
317
|
-
Criado por <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
|
|
320
|
+
|
|
321
|
+
Criado por <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
|