@ipcom/asterisk-ari 0.0.114 → 0.0.117

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.
@@ -596,13 +596,9 @@ module.exports = __toCommonJS(src_exports);
596
596
  var import_exponential_backoff2 = __toESM(require_backoff(), 1);
597
597
 
598
598
  // src/ari-client/baseClient.ts
599
- var import_events = require("events");
600
599
  var import_axios = __toESM(require("axios"), 1);
601
600
  var BaseClient = class {
602
601
  client;
603
- eventEmitter = new import_events.EventEmitter();
604
- wsClients = /* @__PURE__ */ new Map();
605
- // Gerencia os WebSocket clients
606
602
  constructor(baseUrl, username, password) {
607
603
  this.client = import_axios.default.create({
608
604
  baseURL: baseUrl,
@@ -644,56 +640,6 @@ var BaseClient = class {
644
640
  return response.data;
645
641
  }
646
642
  // Gerenciamento de WebSocket clients
647
- /**
648
- * Adiciona um WebSocket client ao gerenciador.
649
- * @param app - Nome do aplicativo ou contexto associado.
650
- * @param wsClient - Instância do WebSocketClient.
651
- */
652
- addWebSocketClient(app, wsClient) {
653
- if (this.wsClients.has(app)) {
654
- throw new Error(`J\xE1 existe um WebSocket client registrado para '${app}'`);
655
- }
656
- this.wsClients.set(app, wsClient);
657
- console.log(`WebSocket client adicionado para '${app}'`);
658
- }
659
- /**
660
- * Remove um WebSocket client do gerenciador.
661
- * @param app - Nome do aplicativo ou contexto associado.
662
- */
663
- removeWebSocketClient(app) {
664
- if (!this.wsClients.has(app)) {
665
- throw new Error(`Nenhum WebSocket client encontrado para '${app}'`);
666
- }
667
- this.wsClients.delete(app);
668
- console.log(`WebSocket client removido para '${app}'`);
669
- }
670
- /**
671
- * Obtém todos os WebSocket clients.
672
- * @returns Um Map contendo todos os WebSocket clients registrados.
673
- */
674
- getWebSocketClients() {
675
- return this.wsClients;
676
- }
677
- /**
678
- * Obtém um WebSocket client específico.
679
- * @param app - Nome do aplicativo ou contexto associado.
680
- * @returns O WebSocket client correspondente.
681
- */
682
- getWebSocketClient(app) {
683
- return this.wsClients.get(app);
684
- }
685
- // Gerenciamento de eventos WebSocket
686
- onWebSocketEvent(callback) {
687
- console.log("Registrando callback para eventos do WebSocket");
688
- this.eventEmitter.on("websocketEvent", (event) => {
689
- console.log("Evento recebido no BaseClient:", event);
690
- callback(event);
691
- });
692
- }
693
- emitWebSocketEvent(event) {
694
- console.log("Emitindo evento do WebSocket:", event);
695
- this.eventEmitter.emit("websocketEvent", event);
696
- }
697
643
  };
698
644
 
699
645
  // src/ari-client/resources/applications.ts
@@ -912,7 +858,7 @@ var Bridges = class {
912
858
  };
913
859
 
914
860
  // src/ari-client/resources/channels.ts
915
- var import_events2 = require("events");
861
+ var import_events = require("events");
916
862
 
917
863
  // src/ari-client/utils.ts
918
864
  function toQueryParams2(options) {
@@ -930,7 +876,7 @@ function isChannelEvent(event, channelId) {
930
876
  }
931
877
 
932
878
  // src/ari-client/resources/channels.ts
933
- var ChannelInstance = class extends import_events2.EventEmitter {
879
+ var ChannelInstance = class extends import_events.EventEmitter {
934
880
  // ID do canal
935
881
  constructor(client, baseClient, channelId = `channel-${Date.now()}`, app) {
936
882
  super();
@@ -1213,7 +1159,7 @@ var ChannelInstance = class extends import_events2.EventEmitter {
1213
1159
  await this.baseClient.delete(`/channels/${this.channelData.id}/hold`);
1214
1160
  }
1215
1161
  };
1216
- var Channels = class extends import_events2.EventEmitter {
1162
+ var Channels = class extends import_events.EventEmitter {
1217
1163
  constructor(baseClient, client) {
1218
1164
  super();
1219
1165
  this.baseClient = baseClient;
@@ -1452,8 +1398,8 @@ var Endpoints = class {
1452
1398
  };
1453
1399
 
1454
1400
  // src/ari-client/resources/playbacks.ts
1455
- var import_events3 = require("events");
1456
- var PlaybackInstance = class extends import_events3.EventEmitter {
1401
+ var import_events2 = require("events");
1402
+ var PlaybackInstance = class extends import_events2.EventEmitter {
1457
1403
  // Garantimos que o ID esteja disponível
1458
1404
  constructor(client, baseClient, playbackId = `playback-${Date.now()}`, app) {
1459
1405
  super();
@@ -1517,13 +1463,13 @@ var PlaybackInstance = class extends import_events3.EventEmitter {
1517
1463
  );
1518
1464
  }
1519
1465
  const scopedEvent = `${this.app}:Playback:${this.id}:${event}`;
1520
- console.log({ metheod: "on", event, scopedEvent });
1521
1466
  const existingListeners = wsClient.listeners(scopedEvent);
1522
1467
  if (existingListeners.some((listener) => listener === callback)) {
1523
1468
  console.warn(`Listener j\xE1 registrado para o evento '${scopedEvent}'.`);
1524
1469
  return this;
1525
1470
  }
1526
1471
  wsClient.on(scopedEvent, callback);
1472
+ console.log(`Listener registrado para '${scopedEvent}'.`);
1527
1473
  return this;
1528
1474
  }
1529
1475
  /**
@@ -1536,9 +1482,7 @@ var PlaybackInstance = class extends import_events3.EventEmitter {
1536
1482
  `Nenhum WebSocket conectado dispon\xEDvel para '${this.app}'.`
1537
1483
  );
1538
1484
  }
1539
- wsClient.removeWildcardListeners(this.id, event, "Playback");
1540
1485
  const scopedEvent = `${this.app}:Playback:${this.id}:${event}`;
1541
- console.log({ metheod: "once", event, scopedEvent });
1542
1486
  const existingListeners = wsClient.listeners(scopedEvent);
1543
1487
  if (existingListeners.some((listener2) => listener2 === callback)) {
1544
1488
  console.warn(`Listener j\xE1 registrado para o evento '${scopedEvent}'.`);
@@ -1547,9 +1491,10 @@ var PlaybackInstance = class extends import_events3.EventEmitter {
1547
1491
  const listener = (data) => {
1548
1492
  callback(data);
1549
1493
  wsClient.off(scopedEvent, listener);
1550
- wsClient.removeWildcardListeners(this.id, event, "Playback");
1494
+ console.log(`Listener removido ap\xF3s execu\xE7\xE3o para '${scopedEvent}'.`);
1551
1495
  };
1552
1496
  wsClient.on(scopedEvent, listener);
1497
+ console.log(`Listener registrado para '${scopedEvent}' (apenas uma vez).`);
1553
1498
  return this;
1554
1499
  }
1555
1500
  /**
@@ -1563,7 +1508,15 @@ var PlaybackInstance = class extends import_events3.EventEmitter {
1563
1508
  );
1564
1509
  }
1565
1510
  const scopedEvent = `${this.app}:Playback:${this.id}:${event}`;
1511
+ const existingListeners = wsClient.listeners(scopedEvent);
1512
+ if (!existingListeners.some((listener) => listener === callback)) {
1513
+ console.warn(
1514
+ `Nenhum listener registrado para '${scopedEvent}' que corresponda.`
1515
+ );
1516
+ return this;
1517
+ }
1566
1518
  wsClient.off(scopedEvent, callback);
1519
+ console.log(`Listener removido para '${scopedEvent}'.`);
1567
1520
  return this;
1568
1521
  }
1569
1522
  /**
@@ -1617,7 +1570,7 @@ var PlaybackInstance = class extends import_events3.EventEmitter {
1617
1570
  }
1618
1571
  }
1619
1572
  };
1620
- var Playbacks = class extends import_events3.EventEmitter {
1573
+ var Playbacks = class extends import_events2.EventEmitter {
1621
1574
  constructor(baseClient, client) {
1622
1575
  super();
1623
1576
  this.baseClient = baseClient;
@@ -1757,10 +1710,10 @@ var Sounds = class {
1757
1710
  };
1758
1711
 
1759
1712
  // src/ari-client/websocketClient.ts
1760
- var import_events4 = require("events");
1713
+ var import_events3 = require("events");
1761
1714
  var import_exponential_backoff = __toESM(require_backoff(), 1);
1762
1715
  var import_ws = __toESM(require("ws"), 1);
1763
- var WebSocketClient = class extends import_events4.EventEmitter {
1716
+ var WebSocketClient = class extends import_events3.EventEmitter {
1764
1717
  /**
1765
1718
  * Creates a new WebSocketClient instance.
1766
1719
  * @param url - The WebSocket server URL to connect to.
@@ -1821,6 +1774,7 @@ var WebSocketClient = class extends import_events4.EventEmitter {
1821
1774
  async connect() {
1822
1775
  if (this.isReconnecting) return;
1823
1776
  return new Promise((resolve, reject) => {
1777
+ this.removeAllListeners();
1824
1778
  this.ws = new import_ws.default(this.url);
1825
1779
  this.ws.on("open", () => {
1826
1780
  console.log("WebSocket conectado.");
@@ -1859,6 +1813,7 @@ var WebSocketClient = class extends import_events4.EventEmitter {
1859
1813
  if (!this.messageListeners.includes(callback)) {
1860
1814
  this.messageListeners.push(callback);
1861
1815
  this.on("message", callback);
1816
+ console.log("Listener registrado para 'message'.");
1862
1817
  } else {
1863
1818
  console.warn("Tentativa de registrar listener duplicado para 'message'.");
1864
1819
  }
@@ -1872,22 +1827,24 @@ var WebSocketClient = class extends import_events4.EventEmitter {
1872
1827
  on(event, callback) {
1873
1828
  if (event === "message") {
1874
1829
  const existingListeners = this.listeners(event);
1875
- const isDuplicate = existingListeners.includes(callback);
1876
- console.log(`Registrando listener para o evento '${event}'.`);
1877
- console.log(
1878
- `Antes: ${existingListeners.length} listener(s) para o evento '${event}'.`
1879
- );
1880
- if (isDuplicate) {
1830
+ if (existingListeners.includes(callback)) {
1881
1831
  console.warn(
1882
- `Listener duplicado detectado para '${event}'. Ignorando.`
1832
+ `Listener j\xE1 registrado para o evento '${event}'. Ignorando duplicata.`
1883
1833
  );
1884
1834
  return this;
1885
1835
  }
1836
+ console.log(
1837
+ `Registrando listener para o evento 'message'. Antes: ${this.listenerCount(
1838
+ "message"
1839
+ )} listener(s).`
1840
+ );
1886
1841
  }
1887
1842
  super.on(event, callback);
1888
1843
  if (event === "message") {
1889
1844
  console.log(
1890
- `Depois: ${this.listenerCount(event)} listener(s) para o evento '${event}'.`
1845
+ `Listener registrado para 'message'. Depois: ${this.listenerCount(
1846
+ "message"
1847
+ )} listener(s).`
1891
1848
  );
1892
1849
  }
1893
1850
  return this;
@@ -1905,20 +1862,21 @@ var WebSocketClient = class extends import_events4.EventEmitter {
1905
1862
  * @returns The WebSocketClient instance for chaining.
1906
1863
  */
1907
1864
  off(event, callback) {
1908
- const existingListeners = this.listeners(event);
1909
- console.log(
1910
- `Removendo listener para o evento '${event}'. Total antes: ${existingListeners.length}`
1911
- );
1912
- if (!existingListeners.includes(callback)) {
1913
- console.warn(
1914
- `Listener n\xE3o encontrado para o evento '${event}'. Nenhuma a\xE7\xE3o tomada.`
1865
+ if (event === "message") {
1866
+ console.log(
1867
+ `Removendo listener para o evento 'message'. Total antes: ${this.listenerCount(
1868
+ "message"
1869
+ )}`
1915
1870
  );
1916
- return this;
1917
1871
  }
1918
1872
  super.off(event, callback);
1919
- console.log(
1920
- `Listener para o evento '${event}' removido. Total agora: ${this.listenerCount(event)}`
1921
- );
1873
+ if (event === "message") {
1874
+ console.log(
1875
+ `Listener para o evento 'message' removido. Total agora: ${this.listenerCount(
1876
+ "message"
1877
+ )}`
1878
+ );
1879
+ }
1922
1880
  return this;
1923
1881
  }
1924
1882
  removeWildcardListeners(id, event, type) {
@@ -1994,10 +1952,17 @@ var WebSocketClient = class extends import_events4.EventEmitter {
1994
1952
  }
1995
1953
  const scopedListener = this.scopedListeners.get(key);
1996
1954
  if (scopedListener) {
1997
- this.off("message", scopedListener);
1955
+ if (this.listeners("message").includes(scopedListener)) {
1956
+ this.off("message", scopedListener);
1957
+ console.log(`Listener removido para '${key}'.`);
1958
+ } else {
1959
+ console.warn(
1960
+ `Listener n\xE3o encontrado entre os registrados para '${key}'.`
1961
+ );
1962
+ }
1998
1963
  this.scopedListeners.delete(key);
1999
1964
  console.log(
2000
- `Listeners removidos para a inst\xE2ncia '${key}'. Total de listeners restantes: ${this.listenerCount(
1965
+ `Listeners escopados removidos para a inst\xE2ncia '${key}'. Total de listeners restantes: ${this.listenerCount(
2001
1966
  "message"
2002
1967
  )}`
2003
1968
  );
@@ -2055,10 +2020,12 @@ var WebSocketClient = class extends import_events4.EventEmitter {
2055
2020
  this.isClosedManually = true;
2056
2021
  this.ws.close();
2057
2022
  this.ws = null;
2023
+ this.scopedListeners.forEach((_listener, key) => {
2024
+ console.log(`Removendo listener escopado para '${key}' ao fechar.`);
2025
+ this.removeScopedMessageListeners(key.split(":")[1], key.split(":")[0]);
2026
+ });
2058
2027
  this.removeAllListeners("message");
2059
- console.log(
2060
- "WebSocket fechado manualmente e listeners para 'message' limpos."
2061
- );
2028
+ console.log("WebSocket fechado manualmente e todos os listeners limpos.");
2062
2029
  }
2063
2030
  }
2064
2031
  };