@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.
- package/dist/cjs/index.cjs +57 -90
- package/dist/cjs/index.cjs.map +3 -3
- package/dist/esm/index.js +57 -90
- package/dist/esm/index.js.map +3 -3
- package/dist/types/ari-client/baseClient.d.ts +0 -28
- package/dist/types/ari-client/baseClient.d.ts.map +1 -1
- package/dist/types/ari-client/resources/playbacks.d.ts.map +1 -1
- package/dist/types/ari-client/websocketClient.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/cjs/index.cjs
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
1456
|
-
var PlaybackInstance = class extends
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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(
|
|
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
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
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
|
-
|
|
1920
|
-
|
|
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.
|
|
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
|
};
|