@yoltra/devtools-server 0.5.0 → 0.6.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 ADDED
@@ -0,0 +1,162 @@
1
+ ![Yoltra logo](https://yoltra.dev/assets/yoltra-logo.png)
2
+
3
+ # @yoltra/devtools-server
4
+
5
+ > 👉 🇲🇽 Versión en Español  |  [ 🇺🇸 English Version](./README.md) 
6
+
7
+ **Hub WebSocket central que intermedia el tráfico del protocolo DevTools entre los stores de
8
+ Yoltra y las extensiones.**
9
+
10
+ `@yoltra/devtools-server` levanta un servidor WebSocket accesible solo desde localhost que atiende
11
+ los handshakes del protocolo, enruta mensajes entre stores y UIs de DevTools, y mantiene un búfer
12
+ circular de eventos recientes para las extensiones que se conectan tarde.
13
+
14
+ ---
15
+
16
+ ## Instalación
17
+
18
+ ```bash
19
+ npm install @yoltra/devtools-server
20
+ ```
21
+
22
+ ---
23
+
24
+ ## Inicio rápido
25
+
26
+ ### Como librería
27
+
28
+ Empotra el hub en tu propio proceso (runner de pruebas, servidor de desarrollo, extensión de
29
+ VSCode):
30
+
31
+ ```typescript
32
+ import { DevtoolsHub } from "@yoltra/devtools-server";
33
+
34
+ const hub = new DevtoolsHub({ port: 9800 });
35
+ await hub.start();
36
+
37
+ console.log("Hub escuchando en ws://127.0.0.1:9800");
38
+ console.log("Stores conectados:", hub.storeCount);
39
+ console.log("Extensiones conectadas:", hub.extensionCount);
40
+
41
+ // Más tarde...
42
+ await hub.stop();
43
+ ```
44
+
45
+ ### Como CLI independiente
46
+
47
+ ```bash
48
+ npx @yoltra/devtools-server --port 9800 --history-size 1000
49
+ ```
50
+
51
+ O mediante el binario del proyecto:
52
+
53
+ ```bash
54
+ node ./bin/devtools-server.js --port 9800
55
+ ```
56
+
57
+ ---
58
+
59
+ ## Cómo funciona
60
+
61
+ ```
62
+ ┌─────────────┐ ┌──────────────┐ ┌───────────────┐
63
+ │ Store de │ ──── │ Hub de │ ──── │ UI de │
64
+ │ Yoltra │ WS │ DevTools │ WS │ DevTools │
65
+ │ │ ───► │ (este pkg) │ ───► │ (Extensión) │
66
+ └─────────────┘ └──────────────┘ └───────────────┘
67
+ │
68
+ Búfer circular
69
+ (historial de eventos)
70
+ ```
71
+
72
+ 1. Los **stores** se conectan y realizan el handshake del protocolo
73
+ 2. Los eventos del store se **difunden** a todas las extensiones conectadas
74
+ 3. Los comandos de las extensiones (peticiones de estado, viaje en el tiempo) se **enrutan** al
75
+ store destino por su `storeId`
76
+ 4. Los eventos recientes se **guardan en un búfer circular**, así que una extensión que se conecta
77
+ tarde recibe el historial
78
+
79
+ ---
80
+
81
+ ## Configuración
82
+
83
+ ```typescript
84
+ interface DevtoolsHubOptions {
85
+ /** Puerto en el que escuchar. @default 9800 */
86
+ port?: number;
87
+ /** Host en el que escuchar. @default "127.0.0.1" */
88
+ host?: string;
89
+ /** Máximo de eventos retenidos para extensiones que se conectan tarde. @default 1000 */
90
+ historySize?: number;
91
+ }
92
+ ```
93
+
94
+ ---
95
+
96
+ ## Referencia de la API
97
+
98
+ ### `DevtoolsHub`
99
+
100
+ | Método / Propiedad | Descripción |
101
+ | ------------------------- | -------------------------------------------------- |
102
+ | `new DevtoolsHub(opts?)` | Crea una instancia del hub |
103
+ | `hub.start()` | Arranca el servidor WS (devuelve una Promise) |
104
+ | `hub.stop()` | Detiene el servidor y cierra todas las conexiones |
105
+ | `DevtoolsHub.probe(port)` | Comprueba si ya hay un hub corriendo en un puerto |
106
+ | `hub.storeCount` | Número de stores conectados |
107
+ | `hub.extensionCount` | Número de extensiones conectadas |
108
+ | `hub.historySize` | Número de eventos en el búfer circular |
109
+
110
+ ### `RingBuffer<T>`
111
+
112
+ Un búfer circular de tamaño fijo, usado internamente para el historial de eventos:
113
+
114
+ ```typescript
115
+ import { RingBuffer } from "@yoltra/devtools-server";
116
+
117
+ const buf = new RingBuffer<string>(100);
118
+ buf.push("event-1");
119
+ buf.push("event-2");
120
+ buf.toArray(); // ['event-1', 'event-2']
121
+ buf.size; // 2
122
+ buf.clear();
123
+ ```
124
+
125
+ ---
126
+
127
+ ## Sondear antes de arrancar
128
+
129
+ Evita conflictos de puerto comprobando si ya hay un hub corriendo:
130
+
131
+ ```typescript
132
+ import { DevtoolsHub } from "@yoltra/devtools-server";
133
+
134
+ const alreadyRunning = await DevtoolsHub.probe(9800);
135
+
136
+ if (!alreadyRunning) {
137
+ const hub = new DevtoolsHub({ port: 9800 });
138
+ await hub.start();
139
+ }
140
+ ```
141
+
142
+ ---
143
+
144
+ ## Seguridad
145
+
146
+ El hub escucha en `127.0.0.1` (solo localhost) por defecto. Es una restricción de seguridad
147
+ deliberada para v1: el hub no se expone a la red.
148
+
149
+ ---
150
+
151
+ ## Paquetes relacionados
152
+
153
+ - **[@yoltra/devtools-protocol](../devtools-protocol/README.md)** — Formato de cable y tipos de
154
+ mensaje
155
+ - **[@yoltra/devtools-browser-agent](../devtools-browser-agent/README.md)** — Conecta stores del
156
+ navegador a este hub
157
+
158
+ ---
159
+
160
+ ## Licencia
161
+
162
+ **MIT** — De uso libre en proyectos comerciales y de código abierto.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @yoltra/devtools-server v0.5.0
2
+ * @yoltra/devtools-server v0.6.0
3
3
  * (c) 2026 Manu Ramirez <@pixerael>
4
4
  * License: MIT
5
5
  * Homepage: https://yoltra.dev
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @yoltra/devtools-server v0.5.0
2
+ * @yoltra/devtools-server v0.6.0
3
3
  * (c) 2026 Manu Ramirez <@pixerael>
4
4
  * License: MIT
5
5
  * Homepage: https://yoltra.dev
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@yoltra/devtools-server",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Hub WebSocket server for Yoltra DevTools — standalone CLI and embeddable library",
5
5
  "license": "MIT",
6
6
  "author": {
7
7
  "name": "Manu Ramirez <@pixerael>",
8
- "email": "manu@yoltra.dev"
8
+ "email": "opensource@yoltra.dev"
9
9
  },
10
10
  "maintainers": [],
11
11
  "homepage": "https://yoltra.dev",
@@ -42,20 +42,20 @@
42
42
  "sideEffects": false,
43
43
  "dependencies": {
44
44
  "ws": "^8.19.0",
45
- "@yoltra/devtools-protocol": "0.5.0"
45
+ "@yoltra/devtools-protocol": "0.6.0"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@types/node": "^24.0.12",
49
49
  "@types/ws": "^8.18.1",
50
- "@vitest/coverage-v8": "3.2.4",
50
+ "@vitest/coverage-v8": "3.2.7",
51
51
  "typedoc": "^0.28.13",
52
52
  "typedoc-plugin-localization": "3.0.6",
53
53
  "typedoc-plugin-markdown": "4.9.0",
54
54
  "typescript": "5.9.3",
55
- "vite": "^7.1.11",
55
+ "vite": "^7.3.6",
56
56
  "vite-plugin-banner": "0.8.1",
57
57
  "vite-plugin-dts": "^4.5.4",
58
- "vitest": "3.2.4"
58
+ "vitest": "3.2.7"
59
59
  },
60
60
  "engines": {
61
61
  "node": ">=18.18"