@ipcom/asterisk-ari 0.0.116 → 0.0.118

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.
@@ -1463,13 +1463,13 @@ var PlaybackInstance = class extends import_events2.EventEmitter {
1463
1463
  );
1464
1464
  }
1465
1465
  const scopedEvent = `${this.app}:Playback:${this.id}:${event}`;
1466
- console.log({ metheod: "on", event, scopedEvent });
1467
1466
  const existingListeners = wsClient.listeners(scopedEvent);
1468
1467
  if (existingListeners.some((listener) => listener === callback)) {
1469
1468
  console.warn(`Listener j\xE1 registrado para o evento '${scopedEvent}'.`);
1470
1469
  return this;
1471
1470
  }
1472
1471
  wsClient.on(scopedEvent, callback);
1472
+ console.log(`Listener registrado para '${scopedEvent}'.`);
1473
1473
  return this;
1474
1474
  }
1475
1475
  /**
@@ -1482,9 +1482,7 @@ var PlaybackInstance = class extends import_events2.EventEmitter {
1482
1482
  `Nenhum WebSocket conectado dispon\xEDvel para '${this.app}'.`
1483
1483
  );
1484
1484
  }
1485
- wsClient.removeWildcardListeners(this.id, event, "Playback");
1486
1485
  const scopedEvent = `${this.app}:Playback:${this.id}:${event}`;
1487
- console.log({ metheod: "once", event, scopedEvent });
1488
1486
  const existingListeners = wsClient.listeners(scopedEvent);
1489
1487
  if (existingListeners.some((listener2) => listener2 === callback)) {
1490
1488
  console.warn(`Listener j\xE1 registrado para o evento '${scopedEvent}'.`);
@@ -1493,9 +1491,10 @@ var PlaybackInstance = class extends import_events2.EventEmitter {
1493
1491
  const listener = (data) => {
1494
1492
  callback(data);
1495
1493
  wsClient.off(scopedEvent, listener);
1496
- wsClient.removeWildcardListeners(this.id, event, "Playback");
1494
+ console.log(`Listener removido ap\xF3s execu\xE7\xE3o para '${scopedEvent}'.`);
1497
1495
  };
1498
1496
  wsClient.on(scopedEvent, listener);
1497
+ console.log(`Listener registrado para '${scopedEvent}' (apenas uma vez).`);
1499
1498
  return this;
1500
1499
  }
1501
1500
  /**
@@ -1509,7 +1508,15 @@ var PlaybackInstance = class extends import_events2.EventEmitter {
1509
1508
  );
1510
1509
  }
1511
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
+ }
1512
1518
  wsClient.off(scopedEvent, callback);
1519
+ console.log(`Listener removido para '${scopedEvent}'.`);
1513
1520
  return this;
1514
1521
  }
1515
1522
  /**
@@ -1767,6 +1774,7 @@ var WebSocketClient = class extends import_events3.EventEmitter {
1767
1774
  async connect() {
1768
1775
  if (this.isReconnecting) return;
1769
1776
  return new Promise((resolve, reject) => {
1777
+ this.removeAllListeners();
1770
1778
  this.ws = new import_ws.default(this.url);
1771
1779
  this.ws.on("open", () => {
1772
1780
  console.log("WebSocket conectado.");
@@ -1805,6 +1813,7 @@ var WebSocketClient = class extends import_events3.EventEmitter {
1805
1813
  if (!this.messageListeners.includes(callback)) {
1806
1814
  this.messageListeners.push(callback);
1807
1815
  this.on("message", callback);
1816
+ console.log("Listener registrado para 'message'.");
1808
1817
  } else {
1809
1818
  console.warn("Tentativa de registrar listener duplicado para 'message'.");
1810
1819
  }
@@ -1903,29 +1912,19 @@ var WebSocketClient = class extends import_events3.EventEmitter {
1903
1912
  const key = `${app}:${instanceId}`;
1904
1913
  if (this.scopedListeners.has(key)) {
1905
1914
  console.warn(
1906
- `Listener escopado para a inst\xE2ncia '${key}' j\xE1 existe. Ignorando.`
1915
+ `Listener escopado para a inst\xE2ncia '${key}' j\xE1 existe. Ignorando duplicata.`
1907
1916
  );
1908
1917
  return;
1909
1918
  }
1910
1919
  const scopedListener = (data) => {
1911
- try {
1912
- if (data.application === app && (data.type.startsWith("Channel") && "channel" in data && data.channel?.id === instanceId || data.type.startsWith("Playback") && "playbackId" in data && data.playbackId === instanceId)) {
1913
- console.log(
1914
- `Listener escopado ativado para inst\xE2ncia '${instanceId}' no app '${app}'.`
1915
- );
1916
- callback(data);
1917
- }
1918
- } catch (error) {
1919
- console.error(
1920
- `Erro no listener escopado para inst\xE2ncia '${instanceId}' no app '${app}':`,
1921
- error
1922
- );
1920
+ if (data.application === app && (data.type.startsWith("Channel") && "channel" in data && data.channel?.id === instanceId || data.type.startsWith("Playback") && "playbackId" in data && data.playbackId === instanceId)) {
1921
+ callback(data);
1923
1922
  }
1924
1923
  };
1925
- this.scopedListeners.set(key, scopedListener);
1926
1924
  this.on("message", scopedListener);
1925
+ this.scopedListeners.set(key, scopedListener);
1927
1926
  console.log(
1928
- `Listener escopado adicionado para a inst\xE2ncia '${instanceId}' no app '${app}'. Total de listeners: ${this.listenerCount(
1927
+ `Listener escopado adicionado para a inst\xE2ncia '${key}'. Total de listeners: ${this.listenerCount(
1929
1928
  "message"
1930
1929
  )}`
1931
1930
  );
@@ -1937,22 +1936,23 @@ var WebSocketClient = class extends import_events3.EventEmitter {
1937
1936
  */
1938
1937
  removeScopedMessageListeners(instanceId, app) {
1939
1938
  const key = `${app}:${instanceId}`;
1940
- if (!this.scopedListeners.has(key)) {
1939
+ const scopedListener = this.scopedListeners.get(key);
1940
+ if (!scopedListener) {
1941
1941
  console.warn(`Nenhum listener encontrado para a inst\xE2ncia '${key}'.`);
1942
1942
  return;
1943
1943
  }
1944
- const scopedListener = this.scopedListeners.get(key);
1945
- if (scopedListener) {
1944
+ if (this.listeners("message").includes(scopedListener)) {
1946
1945
  this.off("message", scopedListener);
1947
- this.scopedListeners.delete(key);
1948
- console.log(
1949
- `Listeners removidos para a inst\xE2ncia '${key}'. Total de listeners restantes: ${this.listenerCount(
1950
- "message"
1951
- )}`
1952
- );
1946
+ console.log(`Listener escopado removido para '${key}'.`);
1953
1947
  } else {
1954
- console.warn(`Listener j\xE1 foi removido para a inst\xE2ncia '${key}'.`);
1948
+ console.warn(`Listener j\xE1 foi removido para '${key}'.`);
1955
1949
  }
1950
+ this.scopedListeners.delete(key);
1951
+ console.log(
1952
+ `Listeners escopados removidos para a inst\xE2ncia '${key}'. Total de listeners restantes: ${this.listenerCount(
1953
+ "message"
1954
+ )}`
1955
+ );
1956
1956
  }
1957
1957
  /**
1958
1958
  * Handles incoming WebSocket messages.
@@ -2004,10 +2004,14 @@ var WebSocketClient = class extends import_events3.EventEmitter {
2004
2004
  this.isClosedManually = true;
2005
2005
  this.ws.close();
2006
2006
  this.ws = null;
2007
+ console.log(this.scopedListeners);
2008
+ this.scopedListeners.forEach((_listener, key) => {
2009
+ console.log(`Removendo listener escopado para '${key}' ao fechar.`);
2010
+ this.removeScopedMessageListeners(key.split(":")[1], key.split(":")[0]);
2011
+ });
2012
+ this.scopedListeners.clear();
2007
2013
  this.removeAllListeners("message");
2008
- console.log(
2009
- "WebSocket fechado manualmente e listeners para 'message' limpos."
2010
- );
2014
+ console.log("WebSocket fechado manualmente e todos os listeners limpos.");
2011
2015
  }
2012
2016
  }
2013
2017
  };