rosinterface 1.0.0 → 1.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.md ADDED
@@ -0,0 +1,464 @@
1
+ # RosInterface
2
+
3
+ > **High-Performance RouterOS Automation A modern TypeScript and JavasScript Library for MikroTik interactions.**
4
+ > Built with Reactive Streaming (onSnapshot), Circuit Breakers for fault tolerance, and an Offline Queue system.
5
+ > Transform raw RouterOS commands into synchronized, type-safe application state.
6
+
7
+ > **Automatización de Alto Rendimiento para RouterOS Una librería moderna en TypeScript y JavaScript para interactuar con MikroTik.**
8
+ > Diseñada con Streaming Reactivo (onSnapshot), Circuit Breakers para tolerancia a fallos y un sistema de Cola Offline.
9
+ > Transforma comandos crudos de RouterOS en un estado de aplicación sincronizado y con tipado seguro.
10
+
11
+ [![npm version](https://img.shields.io/npm/v/rosinterface.svg?style=flat-square)](https://www.npmjs.com/package/rosinterface)
12
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](https://opensource.org/licenses/MIT)
13
+
14
+ ---
15
+
16
+
17
+ ## English Documentation
18
+
19
+ **RosInterface** is designed for **ISPs and mission-critical environments**.
20
+ It focuses on **connection stability**, **router hardware protection**, and **efficient data access**, even under unstable network conditions.
21
+
22
+ ---
23
+
24
+ ### ✨ Key Features
25
+
26
+ - **Hardware Protection**
27
+ Built-in **Rate Limiter** with intelligent backoff to prevent RouterOS CPU saturation.
28
+
29
+ - **Offline-First Architecture**
30
+ Commands marked with `.persistent()` are automatically queued if the router is offline and synchronized once connectivity is restored.
31
+
32
+ - **Smart Caching**
33
+ Read operations are cached for **5 seconds (TTL)** to reduce redundant API calls and router load.
34
+
35
+ - **Source-Side Filtering**
36
+ Use `.findBy()` and `.findOne()` to filter data **directly on the router**, minimizing bandwidth and latency.
37
+
38
+ - **On-time changes**
39
+ Use `.collection()` and `.onSnapshot()` to get changes on real time **directly the router**, for to get new data without call to many times to your router.
40
+
41
+ - **Fault Tolerance (Circuit Breaker)**
42
+
43
+ Implements the `Circuit Breaker` pattern. If the router stops responding or encounters critical errors, the library temporarily "cuts the circuit" to prevent the accumulation of failed requests and protect the stability of your Node.js server.
44
+
45
+ - **Native Observability**
46
+
47
+ Built-in `.getMetrics()` method. Exports traffic statistics and router status directly in a format compatible with Prometheus and Grafana without the need for external plugins.
48
+
49
+ - **Transport Security**
50
+
51
+ Full support for **TLS/SSL (SSL API)**, allowing secure encrypted connections over port 8729 (recommended to change this), ideal for managing routers over the public internet.
52
+
53
+ - **Fluent API**
54
+ Chainable, expressive syntax for clean and maintainable automation code.
55
+
56
+ ---
57
+
58
+
59
+ ---
60
+
61
+ ### ✨ Important Considerations
62
+
63
+ #### Environment Variables (.env)
64
+
65
+ Create a `.env` file in the root directory of your project:
66
+
67
+ ```text
68
+ MIKROTIK_HOST=ROUTER_IP
69
+ MIKROTIK_USER=admin
70
+ MIKROTIK_PASSWORD=your_password
71
+ MIKROTIK_PORT=8729
72
+ ```
73
+
74
+ > ⚠️ **Security Notice**
75
+ > The `allowInsecureConfig` flag is a **critical** security measure in RosInterface.
76
+ > Prevents accidental exposure of credentials or use of unencrypted protocols in production.
77
+ >
78
+ > Use **only in controlled, local or test environments**.
79
+
80
+
81
+ >⚠️ **Performance Warning**
82
+ >
83
+ > The `onSnapshot` function allows you to receive **real-time** router changes in RosInterface.
84
+ > To avoid negative performance impacts on low-spec devices, it is recommended to use it with **Resilience** enabled.
85
+ >
86
+ > Use it **in moderation; excessive use of onSnapshot can negatively affect the performance of your devices**.
87
+
88
+
89
+ ---
90
+
91
+
92
+ ### Usage Examples
93
+
94
+ #### 1. Basic Connection
95
+
96
+ ```ts
97
+ import { MikrotikClient } from 'rosinterface';
98
+
99
+ const client = new MikrotikClient({
100
+ host: 'ROUTER_IP (LOCAL OR REMOTE)',
101
+ user: 'admin',
102
+ password: 'password',
103
+ port: 8729, // We recommended change the default port
104
+ useTLS: false, // Test only
105
+ rateLimit: 50,
106
+ allowInsecureConfig: true // Never in production or release
107
+ });
108
+
109
+ await client.connect();
110
+ ```
111
+ ---
112
+
113
+
114
+ #### 2. Recommended connection (Production/Release)
115
+
116
+ ```ts
117
+ import { MikrotikClient } from 'rosinterface';
118
+ import 'dotenv/config';
119
+
120
+ const client = new MikrotikClient({
121
+ host: process.env.MIKROTIK_HOST,
122
+ user: process.env.MIKROTIK_USER,
123
+ password: process.env.MIKROTIK_PASSWORD,
124
+ port: Number(process.env.MIKROTIK_PORT) || 8729,
125
+ useTLS: true, //Always use TLS between TLS v1.2 or TLS v1.3 deppend that your devices
126
+ rateLimit: 50 //Here you adjust the number of requests per second you want it to support (Anti DDoS)
127
+ });
128
+
129
+ await client.connect();
130
+ ```
131
+
132
+ ---
133
+
134
+
135
+
136
+ #### 3. Optimized Read (select + findOne)
137
+
138
+ ```ts
139
+ const user = await client.command('/ppp/secret')
140
+ .select(['name', 'profile', 'last-logged-out'])
141
+ .findOne({ name: 'john_doe' });
142
+
143
+ console.log(`User: ${user?.name}, Profile: ${user?.profile}`);
144
+ ```
145
+
146
+ ---
147
+
148
+ #### 4. Resilience with Persistence (Offline-Safe)
149
+
150
+ ```ts
151
+ const result = await client.command('/ppp/secret')
152
+ .persistent()
153
+ .add({
154
+ name: 'new_user',
155
+ password: 'securePassword123',
156
+ profile: 'default'
157
+ });
158
+
159
+ if (result === 'QUEUED_OFFLINE') {
160
+ console.log('Router unreachable. Task stored and will sync automatically.');
161
+ }
162
+ ```
163
+
164
+
165
+ #### 5. Time-Limited Listener
166
+
167
+ ```ts
168
+ // Start the subscription and store the cleanup function (unsubscribe)
169
+ const unsubscribe = client.collection('/ppp/secret')
170
+ .onSnapshot((secrets) => {
171
+ console.log(`Update received. Total users: ${secrets.length}`);
172
+ });
173
+
174
+ // Set a timer to stop listening
175
+ setTimeout(() => {
176
+ console.log('Time up. Stopping subscription...');
177
+
178
+ // Stops the Router stream and clears local memory
179
+ unsubscribe();
180
+
181
+ // Optional: Close the connection if no further tasks are needed
182
+ client.close();
183
+ }, 60000); // 60 seconds
184
+ ```
185
+
186
+
187
+ #### 6. Persistent Listener (Always On)
188
+
189
+ ```ts
190
+ // The client automatically handles Keep-Alive pings (every 10s)
191
+ // to prevent idle disconnects. No need to call 'unsubscribe'.
192
+
193
+ client.collection('/interface')
194
+ .where('disabled', false) // Optional: Only active interfaces
195
+ .onSnapshot((interfaces) => {
196
+ // This callback will execute infinitely whenever a physical change
197
+ // occurs on the router (cable unplugged, traffic state, rename, etc.)
198
+ const downInterfaces = interfaces.filter(i => i.running === 'false');
199
+
200
+ if (downInterfaces.length > 0) {
201
+ console.alert(`ALERT: ${downInterfaces.length} interfaces are down.`);
202
+ }
203
+ });
204
+
205
+ // Important: Handle network errors to reconnect if power or internet is lost
206
+ client.on('close', () => {
207
+ console.log('Connection lost. Restarting service in 5s...');
208
+ setTimeout(() => connectAndListen(), 5000);
209
+ });
210
+ ```
211
+
212
+
213
+
214
+ #### 7. Prometheus Metric
215
+
216
+ ```ts
217
+ // 1. Define the map: Mikrotik Field -> Prometheus Metric
218
+ const metricsDef = [
219
+ {
220
+ name: 'mikrotik_iface_rx_total', // Final name in Prometheus
221
+ help: 'Bytes received', // Description
222
+ type: 'counter', // Type: 'counter' or 'gauge'
223
+ path: 'rx-byte', // Original field in RouterOS
224
+ labels: ['name', 'type'] // Labels for filtering (e.g., wan, bridge)
225
+ },
226
+ {
227
+ name: 'mikrotik_iface_tx_total',
228
+ help: 'Bytes transmitted',
229
+ type: 'counter',
230
+ path: 'tx-byte',
231
+ labels: ['name', 'type']
232
+ }
233
+ ];
234
+
235
+ // 2. Get the formatted plain text ready for Prometheus
236
+ // (Internally executes /interface/print and transforms the data)
237
+ const result = await client.getMetrics('/interface', metricsDef);
238
+
239
+ console.log(result);
240
+ ```
241
+
242
+ ---
243
+
244
+ ## Documentación en Español
245
+
246
+ **RosInterface** está diseñado para **ISPs y entornos críticos**.
247
+ Su objetivo es garantizar **estabilidad de conexión**, **protección del hardware MikroTik** y **consultas eficientes**, incluso con enlaces inestables.
248
+
249
+ ---
250
+
251
+ ### ✨ Características Principales
252
+
253
+ - **Protección del Hardware**
254
+ Limitador de tasa integrado con retroceso inteligente para evitar saturación de CPU.
255
+
256
+ - **Arquitectura Offline-First**
257
+ Los comandos con `.persistent()` se guardan en cola si el router no está disponible y se ejecutan automáticamente al reconectar.
258
+
259
+ - **Caché Inteligente**
260
+ Consultas con TTL de **5 segundos**, reduciendo llamadas innecesarias.
261
+
262
+ - **Filtrado en Origen**
263
+ `.findBy()` y `.findOne()` filtran directamente en RouterOS sin descargar tablas completas.
264
+
265
+ - **Cambios puntuales**
266
+ Usa `.collection()` y `.onSnapshot()` para obtener cambios en tiempo real **directamente desde el router**, para obtener datos nuevos, sin llamar a su router repetidamente.
267
+
268
+ - **Tolerancia a Fallos (Circuit Breaker)**
269
+ Implementa el patrón `Circuit Breaker` . Si el router deja de responder o da errores críticos, la librería "corta el circuito" temporalmente para evitar acumular peticiones fallidas y proteger la estabilidad de tu servidor Node.js.
270
+
271
+ - **Observabilidad Nativa**
272
+ Método `.getMetrics()`integrado. Exporta estadísticas de tráfico y estado del router directamente en formato compatible con Prometheus y Grafana sin necesidad de plugins externos.
273
+
274
+ - **Seguridad de Transporte**
275
+ Soporte completo para **TLS/SSL (API-SSL)**, permitiendo conexiones encriptadas seguras a través del puerto 8729 (Recomendado cambiar), ideal para administrar routers a través de internet pública.
276
+
277
+ - **API Fluida**
278
+ Sintaxis encadenable y clara.
279
+
280
+ ---
281
+
282
+ ### ✨ Consideraciones Importantes
283
+
284
+ #### Variables de Entorno (.env)
285
+
286
+ Crea un archivo `.env` en el directorio raíz de tu proyecto:
287
+
288
+ ```text
289
+ MIKROTIK_HOST=IP_DEL_ROUTER
290
+ MIKROTIK_USER=admin
291
+ MIKROTIK_PASSWORD=tu_contraseña
292
+ MIKROTIK_PORT=8729
293
+ ```
294
+
295
+ > ⚠️ **Aviso de Seguridad**
296
+ > La bandera `allowInsecureConfig` es una medida de seguridad **crítica** en RosInterface.
297
+ > Previene la exposición accidental de credenciales o el uso de protocolos no cifrados en producción.
298
+ >
299
+ > Úsala **solo en entornos controlados, locales o de prueba**.
300
+
301
+
302
+ > ⚠️ **Aviso de Rendimiento**
303
+ > La función `onSnapshot` permite recibir cambios en **tiempo real** del router en RosInterface.
304
+ > Para evitar el impacto negativo de rendimiento en equipos con pocas prestaciones, se recomienda usarlo con **Resiliencia**.
305
+ >
306
+ > Úsala **con moderación, el abuso de onSnapshot puede afectar el rendimiento de tus equipos**.
307
+
308
+
309
+
310
+ ---
311
+
312
+ ### Ejemplos de Uso
313
+
314
+ #### 1. Conexión rápida (solo pruebas)
315
+
316
+ ```ts
317
+ import { MikrotikClient } from 'rosinterface';
318
+
319
+ const client = new MikrotikClient({
320
+ host: 'IP_DEL_ROUTER (LOCAL O REMOTO)',
321
+ user: 'admin',
322
+ password: 'password',
323
+ port: 8729, // Se recomienda cambiar el puerto por defecto
324
+ useTLS: false, // Solo pruebas
325
+ rateLimit: 50,
326
+ allowInsecureConfig: true // Nunca en producción
327
+ });
328
+
329
+ await client.connect();
330
+ ```
331
+
332
+ ---
333
+
334
+ #### 2. Conexión Recomendada (Producción)
335
+
336
+ ```ts
337
+ import { MikrotikClient } from 'rosinterface';
338
+ import 'dotenv/config';
339
+
340
+ const client = new MikrotikClient({
341
+ host: process.env.MIKROTIK_HOST,
342
+ user: process.env.MIKROTIK_USER,
343
+ password: process.env.MIKROTIK_PASSWORD,
344
+ port: Number(process.env.MIKROTIK_PORT) || 8729,
345
+ useTLS: true, //Utilice siempre TLS entre TLS v1.2 o TLS v1.3 dependiendo de sus dispositivos
346
+ rateLimit: 50 //Aqui ajustas la cantidad de peticiones por segundo que deseas que soporte (Anti DDoS)
347
+ });
348
+
349
+ await client.connect();
350
+ ```
351
+
352
+ ---
353
+
354
+ #### 3. Lectura Optimizada
355
+
356
+ ```ts
357
+ const user = await client.command('/ppp/secret')
358
+ .select(['name', 'profile', 'last-logged-out'])
359
+ .findOne({ name: 'john_doe' });
360
+
361
+ console.log(`User: ${user?.name}, Profile: ${user?.profile}`);
362
+ ```
363
+
364
+ ---
365
+
366
+ #### 4. Persistencia Offline
367
+
368
+ ```ts
369
+ const result = await client.command('/ppp/secret')
370
+ .persistent()
371
+ .add({
372
+ name: 'new_user',
373
+ password: 'securePassword123',
374
+ profile: 'default'
375
+ });
376
+
377
+ if (result === 'QUEUED_OFFLINE') {
378
+ console.log('Router unreachable. Task stored and will sync automatically.');
379
+ }
380
+ ```
381
+
382
+
383
+ #### 5. Escuchar por un Tiempo Determinado (Time-Limited)
384
+
385
+ ```ts
386
+ // Iniciar la suscripción y guardar la función de limpieza (unsubscribe)
387
+ const unsubscribe = client.collection('/ppp/secret')
388
+ .onSnapshot((secrets) => {
389
+ console.log(`Actualización recibida. Total usuarios: ${secrets.length}`);
390
+ });
391
+
392
+ // Establecer un temporizador para detener la escucha
393
+ setTimeout(() => {
394
+ console.log('Tiempo finalizado. Cerrando suscripción...');
395
+
396
+ // Detiene el stream del Router y limpia la memoria local
397
+ unsubscribe();
398
+
399
+ // Opcional: Cerrar la conexión si ya no harás más tareas
400
+ client.close();
401
+ }, 60000); // 60 segundos
402
+ ```
403
+
404
+
405
+
406
+ #### 6. Escucha Persistente (Always On)
407
+
408
+ ```ts
409
+ // Configuración para mantener la conexión viva (Keep-Alive)
410
+ // El cliente enviará pings internos cada 10s para evitar desconexiones por inactividad.
411
+ // No es necesario llamar a 'unsubscribe' ni poner timeouts.
412
+
413
+ client.collection('/interface')
414
+ .where('disabled', false) // Opcional: Solo interfaces activas
415
+ .onSnapshot((interfaces) => {
416
+ // Este callback se ejecutará infinitamente cada vez que haya un cambio
417
+ // físico en el router (cable desconectado, tráfico, cambio de nombre, etc.)
418
+ const downInterfaces = interfaces.filter(i => i.running === 'false');
419
+
420
+ if (downInterfaces.length > 0) {
421
+ console.alert(`ALERTA: ${downInterfaces.length} interfaces caídas.`);
422
+ }
423
+ });
424
+
425
+ // Importante: Manejar errores de red para reconectar si se va la luz o internet
426
+ client.on('close', () => {
427
+ console.log('Conexión perdida. Reiniciando servicio en 5s...');
428
+ setTimeout(() => connectAndListen(), 5000);
429
+ });
430
+ ```
431
+
432
+
433
+ #### 7. Métricas Prometheus
434
+
435
+ ```ts
436
+ // 1. Define el mapeo: Campo Mikrotik -> Métrica Prometheus
437
+ const metricasDef = [
438
+ {
439
+ name: 'mikrotik_iface_rx_total', // Nombre final en Prometheus
440
+ help: 'Bytes recibidos', // Descripción
441
+ type: 'counter', // Tipo: 'counter' o 'gauge'
442
+ path: 'rx-byte', // Campo original en RouterOS
443
+ labels: ['name', 'type'] // Etiquetas para filtrar (ej: wan, bridge)
444
+ },
445
+ {
446
+ name: 'mikrotik_iface_tx_total',
447
+ help: 'Bytes transmitidos',
448
+ type: 'counter',
449
+ path: 'tx-byte',
450
+ labels: ['name', 'type']
451
+ }
452
+ ];
453
+
454
+ // 2. Obtén el texto formateado listo para Prometheus
455
+ // (Internamente ejecuta /interface/print y transforma los datos)
456
+ const resultado = await client.getMetrics('/interface', metricasDef);
457
+
458
+ console.log(resultado);
459
+ ```
460
+
461
+
462
+
463
+
464
+ ---
@@ -82,8 +82,10 @@ class CommandBuilder {
82
82
  }
83
83
  const response = await this.client.write(`${this.menuPath}/add`, params);
84
84
  this.invalidatePathCache();
85
- const retItem = response.find(r => r.ret);
86
- return retItem ? retItem.ret : '';
85
+ if (Array.isArray(response) && response.length > 0 && response[0]['ret']) {
86
+ return response[0]['ret'];
87
+ }
88
+ return '';
87
89
  }
88
90
  async set(id, data) {
89
91
  const params = this.prepareParams(data);
@@ -106,8 +108,22 @@ class CommandBuilder {
106
108
  this.invalidatePathCache();
107
109
  }
108
110
  listen(callback) {
111
+ const lines = [`${this.menuPath}/print`];
109
112
  const params = this.getParams();
110
- return this.client.stream(`${this.menuPath}/print`, params, callback);
113
+ for (const [key, value] of Object.entries(params)) {
114
+ let cleanKey = key;
115
+ if (cleanKey.startsWith('?')) {
116
+ cleanKey = cleanKey.substring(1);
117
+ }
118
+ if (cleanKey === '.proplist') {
119
+ lines.push(`=${cleanKey}=${value}`);
120
+ }
121
+ else {
122
+ lines.push(`?${cleanKey}=${value}`);
123
+ }
124
+ }
125
+ lines.push('=follow=');
126
+ return this.client.stream(lines, undefined, callback);
111
127
  }
112
128
  listenMonitor(callback) {
113
129
  const rawParams = this.getParams();
@@ -1 +1 @@
1
- {"version":3,"file":"CommandBuilder.js","sourceRoot":"","sources":["../../src/client/CommandBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CommandBuilder.js","sourceRoot":"","sources":["../../src/client/CommandBuilder.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { SchemaMapper } from '../core/SchemaMapper';
4
4
  import { CircuitBreakerOptions } from '../core/CircuitBreaker';
5
5
  import { FileManager } from '../features/FileManager';
6
6
  import { MetricDefinition } from '../features/PrometheusExporter';
7
+ import { SnapshotCallback } from "../features/LiveCollection";
7
8
  export interface MikrotikOptions extends SocketClientOptions {
8
9
  user?: string;
9
10
  password?: string;
@@ -29,9 +30,13 @@ export declare class MikrotikClient {
29
30
  private printSeriousWarning;
30
31
  close(): void;
31
32
  command<T extends Record<string, any> = any>(path: string): CommandBuilder<T>;
33
+ collection<T = any>(path: string): {
34
+ where: (key: string, value: string | number | boolean) => any;
35
+ onSnapshot: (callback: SnapshotCallback<T>) => () => void;
36
+ };
32
37
  getMetrics(path: string, metrics: MetricDefinition[], params?: Record<string, any>): Promise<string>;
33
38
  write(command: string, parameters?: Record<string, string | boolean | number>): Promise<any[]>;
34
- stream(command: string, parameters: Record<string, string | boolean | number> | undefined, callback: (data: any) => void): Subscription;
39
+ stream(commandOrLines: string | string[], parameters: Record<string, string | boolean | number> | undefined, callback: (data: any) => void): Subscription;
35
40
  private generateTag;
36
41
  private buildPayload;
37
42
  private sendPayload;
@@ -45,6 +45,7 @@ const RateLimiter_1 = require("../core/RateLimiter");
45
45
  const CircuitBreaker_1 = require("../core/CircuitBreaker");
46
46
  const FileManager_1 = require("../features/FileManager");
47
47
  const PrometheusExporter_1 = require("../features/PrometheusExporter");
48
+ const LiveCollection_1 = require("../features/LiveCollection");
48
49
  dotenv.config();
49
50
  class MikrotikClient {
50
51
  constructor(options) {
@@ -103,6 +104,20 @@ class MikrotikClient {
103
104
  const realPath = this.schema.resolve(path);
104
105
  return new CommandBuilder_1.CommandBuilder(this, realPath);
105
106
  }
107
+ collection(path) {
108
+ const query = {};
109
+ const builder = {
110
+ where: (key, value) => {
111
+ query[key] = value;
112
+ return builder;
113
+ },
114
+ onSnapshot: (callback) => {
115
+ const liveCol = new LiveCollection_1.LiveCollection(this, path, query);
116
+ return liveCol.onSnapshot(callback);
117
+ }
118
+ };
119
+ return builder;
120
+ }
106
121
  async getMetrics(path, metrics, params) {
107
122
  const data = await this.command(path).print(params);
108
123
  return PrometheusExporter_1.PrometheusExporter.export(data, metrics);
@@ -118,22 +133,33 @@ class MikrotikClient {
118
133
  reject,
119
134
  data: [],
120
135
  isStream: false,
121
- startTime: Date.now()
136
+ startTime: Date.now(),
137
+ tag
122
138
  });
123
139
  this.sendPayload(payload);
124
140
  });
125
141
  });
126
142
  }
127
- stream(command, parameters, callback) {
143
+ stream(commandOrLines, parameters, callback) {
128
144
  const tag = this.generateTag();
129
145
  this.rateLimiter.acquire().then(() => {
130
- const payload = this.buildPayload(command, parameters, tag);
146
+ let payload;
147
+ if (Array.isArray(commandOrLines)) {
148
+ payload = [...commandOrLines];
149
+ if (!payload.some(l => l.startsWith('.tag='))) {
150
+ payload.push(`.tag=${tag}`);
151
+ }
152
+ }
153
+ else {
154
+ payload = this.buildPayload(commandOrLines, parameters, tag);
155
+ }
131
156
  this.pendingCommands.set(tag, {
132
157
  reject: (err) => console.error(`Stream error [${tag}]:`, err),
133
158
  data: [],
134
159
  isStream: true,
135
160
  onData: callback,
136
- startTime: Date.now()
161
+ startTime: Date.now(),
162
+ tag
137
163
  });
138
164
  this.sendPayload(payload);
139
165
  });
@@ -195,7 +221,8 @@ class MikrotikClient {
195
221
  reject,
196
222
  data: [],
197
223
  isStream: false,
198
- startTime: Date.now()
224
+ startTime: Date.now(),
225
+ tag
199
226
  });
200
227
  this.sendPayload(payload);
201
228
  });
@@ -1 +1 @@
1
- {"version":3,"file":"MikrotikClient.js","sourceRoot":"","sources":["../../src/client/MikrotikClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MikrotikClient.js","sourceRoot":"","sources":["../../src/client/MikrotikClient.ts"],"names":[],"mappings":"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"}
@@ -11,12 +11,13 @@ export interface SocketClientOptions {
11
11
  export declare class SocketClient extends EventEmitter {
12
12
  private socket;
13
13
  private options;
14
- private connected;
14
+ connected: boolean;
15
15
  private receiveBuffer;
16
16
  constructor(options: SocketClientOptions);
17
17
  connect(): Promise<void>;
18
18
  write(data: Buffer): void;
19
19
  close(): void;
20
20
  destroy(): void;
21
+ private cleanup;
21
22
  private handleDataChunk;
22
23
  }
@@ -57,11 +57,7 @@ class SocketClient extends events_1.EventEmitter {
57
57
  return new Promise((resolve, reject) => {
58
58
  if (this.connected)
59
59
  return resolve();
60
- if (this.socket) {
61
- this.socket.removeAllListeners();
62
- this.socket.destroy();
63
- this.socket = null;
64
- }
60
+ this.cleanup();
65
61
  const timeoutMs = (this.options.timeout || 10) * 1000;
66
62
  try {
67
63
  if (this.options.useTLS) {
@@ -96,8 +92,8 @@ class SocketClient extends events_1.EventEmitter {
96
92
  this.connected = true;
97
93
  if (this.socket)
98
94
  this.socket.setTimeout(0);
99
- resolve();
100
95
  this.emit('connect');
96
+ resolve();
101
97
  });
102
98
  this.socket.on('error', (err) => {
103
99
  if (!this.connected) {
@@ -137,6 +133,14 @@ class SocketClient extends events_1.EventEmitter {
137
133
  this.connected = false;
138
134
  }
139
135
  }
136
+ cleanup() {
137
+ if (this.socket) {
138
+ this.socket.removeAllListeners();
139
+ this.socket.destroy();
140
+ this.socket = null;
141
+ }
142
+ this.receiveBuffer = buffer_1.Buffer.alloc(0);
143
+ }
140
144
  handleDataChunk(chunk) {
141
145
  this.receiveBuffer = buffer_1.Buffer.concat([this.receiveBuffer, chunk]);
142
146
  while (this.receiveBuffer.length > 0) {
@@ -151,8 +155,8 @@ class SocketClient extends events_1.EventEmitter {
151
155
  }
152
156
  const payload = this.receiveBuffer.slice(byteLength, totalPacketSize);
153
157
  this.receiveBuffer = this.receiveBuffer.slice(totalPacketSize);
154
- const sentence = payload.toString('utf8');
155
- this.emit('data', sentence);
158
+ const word = payload.toString('utf8');
159
+ this.emit('data', word);
156
160
  }
157
161
  }
158
162
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SocketClient.js","sourceRoot":"","sources":["../../src/core/SocketClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SocketClient.js","sourceRoot":"","sources":["../../src/core/SocketClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { MikrotikClient } from "../client/MikrotikClient";
2
+ export type SnapshotCallback<T> = (items: T[]) => void;
3
+ export declare class LiveCollection<T = any> {
4
+ private client;
5
+ private path;
6
+ private query;
7
+ private localCache;
8
+ private subscription;
9
+ private listeners;
10
+ private isInitializing;
11
+ constructor(client: MikrotikClient, path: string, query?: Record<string, string | number | boolean>);
12
+ onSnapshot(callback: SnapshotCallback<T>): () => void;
13
+ private startListening;
14
+ private processPacket;
15
+ private emit;
16
+ private unsubscribe;
17
+ }
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LiveCollection = void 0;
4
+ class LiveCollection {
5
+ constructor(client, path, query = {}) {
6
+ this.client = client;
7
+ this.path = path;
8
+ this.query = query;
9
+ this.localCache = new Map();
10
+ this.subscription = null;
11
+ this.listeners = [];
12
+ this.isInitializing = false;
13
+ }
14
+ onSnapshot(callback) {
15
+ this.listeners.push(callback);
16
+ if (this.subscription || this.isInitializing) {
17
+ if (this.localCache.size > 0) {
18
+ callback(Array.from(this.localCache.values()));
19
+ }
20
+ }
21
+ else {
22
+ this.startListening().catch(err => {
23
+ console.error("RosInterface: Error starting live listener", err);
24
+ });
25
+ }
26
+ return () => this.unsubscribe(callback);
27
+ }
28
+ async startListening() {
29
+ if (this.isInitializing)
30
+ return;
31
+ this.isInitializing = true;
32
+ try {
33
+ const cmd = this.client.command(this.path);
34
+ cmd.where('.proplist', '.id,.dead,name,comment,disabled,profile,service,user,password,address,uptime,mac-address,caller-id');
35
+ if (this.query) {
36
+ Object.keys(this.query).forEach(key => {
37
+ const value = this.query[key];
38
+ if (['string', 'number', 'boolean'].includes(typeof value)) {
39
+ cmd.where(key, value);
40
+ }
41
+ });
42
+ }
43
+ this.subscription = cmd.listen((packet) => {
44
+ this.processPacket(packet);
45
+ });
46
+ }
47
+ catch (error) {
48
+ console.error(`RosInterface: Failed to listen on ${this.path}`, error);
49
+ this.isInitializing = false;
50
+ }
51
+ }
52
+ processPacket(packet) {
53
+ const rawId = packet['.id'] || packet['id'];
54
+ if (!rawId)
55
+ return;
56
+ if (packet['.dead'] === true || packet['dead'] === true) {
57
+ this.localCache.delete(rawId);
58
+ }
59
+ else {
60
+ const existing = this.localCache.get(rawId) || {};
61
+ const cleanPacket = {};
62
+ for (const key of Object.keys(packet)) {
63
+ const cleanKey = key.startsWith('.') ? key.substring(1) : key;
64
+ cleanPacket[cleanKey] = packet[key];
65
+ }
66
+ const updated = { ...existing, ...cleanPacket };
67
+ this.localCache.set(rawId, updated);
68
+ }
69
+ this.emit();
70
+ }
71
+ emit() {
72
+ const fullList = Array.from(this.localCache.values());
73
+ this.listeners.forEach(cb => cb(fullList));
74
+ }
75
+ unsubscribe(callback) {
76
+ this.listeners = this.listeners.filter(l => l !== callback);
77
+ if (this.listeners.length === 0 && this.subscription) {
78
+ try {
79
+ this.subscription.stop();
80
+ }
81
+ catch (e) {
82
+ console.warn('RosInterface: Error stopping subscription', e);
83
+ }
84
+ this.subscription = null;
85
+ this.localCache.clear();
86
+ this.isInitializing = false;
87
+ }
88
+ }
89
+ }
90
+ exports.LiveCollection = LiveCollection;
91
+ //# sourceMappingURL=LiveCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiveCollection.js","sourceRoot":"","sources":["../../src/features/LiveCollection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PrometheusExporter.js","sourceRoot":"","sources":["../../src/features/PrometheusExporter.ts"],"names":[],"mappings":";;;AAEA,IAAY,UAGX;AAHD,WAAY,UAAU;IAClB,6BAAe,CAAA;IACf,iCAAmB,CAAA;AACvB,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB;AAoBD,MAAa,kBAAkB;IAQpB,MAAM,CAAC,MAAM,CAAC,UAAmC,EAAE,WAA+B;QACrF,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;QAE/B,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAE5B,MAAM,IAAI,UAAU,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC;YACnD,MAAM,IAAI,UAAU,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC;YAGnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAGpC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;oBAAE,SAAS;gBAGpD,IAAI,WAAW,GAAG,EAAE,CAAC;gBACrB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtC,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;wBAE3C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,CAAC;wBAC1D,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAEvD,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;wBACrD,OAAO,GAAG,cAAc,KAAK,aAAa,GAAG,CAAC;oBAClD,CAAC,CAAC,CAAC;oBACH,WAAW,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC9C,CAAC;gBAID,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,GAAG,WAAW,IAAI,KAAK,IAAI,CAAC;YAC3D,CAAC;YACD,MAAM,IAAI,IAAI,CAAC;QACnB,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AA/CD,gDA+CC"}
1
+ {"version":3,"file":"PrometheusExporter.js","sourceRoot":"","sources":["../../src/features/PrometheusExporter.ts"],"names":[],"mappings":";;;AAEA,IAAY,UAGX;AAHD,WAAY,UAAU;IAClB,6BAAe,CAAA;IACf,iCAAmB,CAAA;AACvB,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB;AAoBD,MAAa,kBAAkB;IASpB,MAAM,CAAC,MAAM,CAAC,UAAmC,EAAE,WAA+B;QACrF,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;QAE/B,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAE5B,MAAM,IAAI,UAAU,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC;YACnD,MAAM,IAAI,UAAU,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC;YAGnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAGpC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;oBAAE,SAAS;gBAGpD,IAAI,WAAW,GAAG,EAAE,CAAC;gBACrB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtC,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;wBAE3C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,CAAC;wBAC1D,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAEvD,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;wBACrD,OAAO,GAAG,cAAc,KAAK,aAAa,GAAG,CAAC;oBAClD,CAAC,CAAC,CAAC;oBACH,WAAW,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC9C,CAAC;gBAID,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,GAAG,WAAW,IAAI,KAAK,IAAI,CAAC;YAC3D,CAAC;YACD,MAAM,IAAI,IAAI,CAAC;QACnB,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAhDD,gDAgDC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const rosinterface_1 = require("rosinterface");
4
+ async function test() {
5
+ console.clear();
6
+ const client = new rosinterface_1.MikrotikClient({
7
+ host: '192.168.3.30',
8
+ user: '',
9
+ password: '',
10
+ port: 8728,
11
+ useTLS: false,
12
+ rateLimit: 50,
13
+ allowInsecureConfig: true,
14
+ });
15
+ try {
16
+ await client.connect();
17
+ await client.command('/ppp/secret').add({
18
+ name: 'PruebaLIB',
19
+ profile: 'default',
20
+ password: 'PruebaConLIB',
21
+ comment: 'Se agrego usando RosInterface'
22
+ });
23
+ console.log("Se agrego el cliente usando RosInterface");
24
+ }
25
+ catch (e) {
26
+ console.error(e);
27
+ }
28
+ }
29
+ test();
30
+ //# sourceMappingURL=test_library.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_library.js","sourceRoot":"","sources":["../src/test_library.ts"],"names":[],"mappings":";;AAAA,+CAA6C;AAE7C,KAAK,UAAU,IAAI;IACf,OAAO,CAAC,KAAK,EAAE,CAAC;IAEhB,MAAM,MAAM,GAAG,IAAI,6BAAc,CAAC;QAC/B,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,EAAE;QACb,mBAAmB,EAAE,IAAI;KAC3B,CAAC,CAAC;IAEH,IAAG,CAAC;QAEA,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QAEtB,MAAM,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC;YACrC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,cAAc;YACxB,OAAO,EAAE,+BAA+B;SAC3C,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAG5D,CAAC;IAAA,OAAM,CAAC,EAAC,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;AACL,CAAC;AAGD,IAAI,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "rosinterface",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "High-performance, Offline-First Mikrotik RouterOS API Client for Enterprise.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
- "author": "IVMEX",
7
+ "author": "McBlockier",
8
8
  "license": "MIT",
9
9
  "keywords": [
10
10
  "mikrotik",
@@ -29,7 +29,8 @@
29
29
  "test": "ts-node test_integration.ts"
30
30
  },
31
31
  "dependencies": {
32
- "dotenv": "^16.4.5"
32
+ "dotenv": "^16.4.5",
33
+ "rosinterface": "^1.0.1"
33
34
  },
34
35
  "devDependencies": {
35
36
  "@types/node": "^20.12.7",
@@ -39,4 +40,4 @@
39
40
  "engines": {
40
41
  "node": ">=14.0.0"
41
42
  }
42
- }
43
+ }