@ipcom/asterisk-ari 0.0.95 → 0.0.97
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 +84 -32
- package/dist/cjs/index.cjs.map +2 -2
- package/dist/esm/index.js +84 -32
- package/dist/esm/index.js.map +2 -2
- package/dist/types/ari-client/resources/channels.d.ts.map +1 -1
- package/dist/types/ari-client/resources/playbacks.d.ts +9 -13
- package/dist/types/ari-client/resources/playbacks.d.ts.map +1 -1
- package/dist/types/ari-client/websocketClient.d.ts +11 -0
- package/dist/types/ari-client/websocketClient.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/esm/index.js
CHANGED
|
@@ -925,9 +925,16 @@ var ChannelInstance = class extends EventEmitter2 {
|
|
|
925
925
|
`Nenhum WebSocket conectado dispon\xEDvel para o canal: ${this.id}`
|
|
926
926
|
);
|
|
927
927
|
}
|
|
928
|
-
wsClient.
|
|
928
|
+
wsClient.addScopedMessageListener(this.id, (event) => {
|
|
929
929
|
if (isChannelEvent(event, this.id)) {
|
|
930
|
-
|
|
930
|
+
const channelEventType = event.type;
|
|
931
|
+
this.emit(channelEventType, event);
|
|
932
|
+
}
|
|
933
|
+
});
|
|
934
|
+
this.on("removeListener", (eventName) => {
|
|
935
|
+
if (this.eventNames().length === 0 || this.listenerCount(eventName) === 0) {
|
|
936
|
+
wsClient.removeScopedMessageListeners(this.id);
|
|
937
|
+
console.log(`Listeners escopados removidos para canal '${this.id}'.`);
|
|
931
938
|
}
|
|
932
939
|
});
|
|
933
940
|
}
|
|
@@ -944,6 +951,29 @@ var ChannelInstance = class extends EventEmitter2 {
|
|
|
944
951
|
* Adiciona um listener para ser chamado apenas uma vez.
|
|
945
952
|
*/
|
|
946
953
|
once(event, callback) {
|
|
954
|
+
console.log({
|
|
955
|
+
type: "Adiciona um listener para ser chamado apenas uma vez",
|
|
956
|
+
event
|
|
957
|
+
});
|
|
958
|
+
const wsClients = this.client.getWebSocketClients();
|
|
959
|
+
const wsClient = Array.from(wsClients.values()).find(
|
|
960
|
+
(client) => client.isConnected()
|
|
961
|
+
);
|
|
962
|
+
if (!wsClient) {
|
|
963
|
+
throw new Error(
|
|
964
|
+
`Nenhum WebSocket conectado dispon\xEDvel para '${this.id}'.`
|
|
965
|
+
);
|
|
966
|
+
}
|
|
967
|
+
const globalListener = (webSocketEvent) => {
|
|
968
|
+
if (isChannelEvent(webSocketEvent, this.id) && webSocketEvent.type === event) {
|
|
969
|
+
console.log(`Recebido evento '${event}' para canal '${this.id}'`);
|
|
970
|
+
this.emit(event, webSocketEvent);
|
|
971
|
+
callback(webSocketEvent);
|
|
972
|
+
wsClient.off("message", globalListener);
|
|
973
|
+
console.log(`Listener global para canal '${this.id}' foi removido.`);
|
|
974
|
+
}
|
|
975
|
+
};
|
|
976
|
+
wsClient.on("message", globalListener);
|
|
947
977
|
super.once(event, callback);
|
|
948
978
|
return this;
|
|
949
979
|
}
|
|
@@ -1386,19 +1416,26 @@ var PlaybackInstance = class extends EventEmitter3 {
|
|
|
1386
1416
|
`Nenhum WebSocket conectado dispon\xEDvel para o playback: ${this.id}`
|
|
1387
1417
|
);
|
|
1388
1418
|
}
|
|
1389
|
-
wsClient.
|
|
1419
|
+
wsClient.addScopedMessageListener(this.id, (event) => {
|
|
1390
1420
|
if (isPlaybackEvent(event, this.id)) {
|
|
1391
1421
|
const playbackEventType = event.type;
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1422
|
+
this.emit(playbackEventType, event);
|
|
1423
|
+
}
|
|
1424
|
+
});
|
|
1425
|
+
this.on("removeListener", (eventName) => {
|
|
1426
|
+
if (this.eventNames().length === 0 || this.listenerCount(eventName) === 0) {
|
|
1427
|
+
wsClient.removeScopedMessageListeners(this.id);
|
|
1428
|
+
console.log(
|
|
1429
|
+
`Listeners escopados removidos para playback '${this.id}'.`
|
|
1430
|
+
);
|
|
1397
1431
|
}
|
|
1398
1432
|
});
|
|
1399
1433
|
}
|
|
1400
1434
|
playbackData = null;
|
|
1401
1435
|
id;
|
|
1436
|
+
/**
|
|
1437
|
+
* Adiciona um listener para eventos de playback.
|
|
1438
|
+
*/
|
|
1402
1439
|
/**
|
|
1403
1440
|
* Adiciona um listener para eventos de playback.
|
|
1404
1441
|
*/
|
|
@@ -1428,14 +1465,23 @@ var PlaybackInstance = class extends EventEmitter3 {
|
|
|
1428
1465
|
console.log(`Recebido evento '${event}' para playback '${this.id}'`);
|
|
1429
1466
|
this.emit(event, webSocketEvent);
|
|
1430
1467
|
callback(webSocketEvent);
|
|
1431
|
-
wsClient.
|
|
1432
|
-
console.log(
|
|
1468
|
+
wsClient.removeScopedMessageListeners(this.id);
|
|
1469
|
+
console.log(
|
|
1470
|
+
`Listeners escopados para playback '${this.id}' foram removidos.`
|
|
1471
|
+
);
|
|
1433
1472
|
}
|
|
1434
1473
|
};
|
|
1435
|
-
wsClient.
|
|
1474
|
+
wsClient.addScopedMessageListener(this.id, globalListener);
|
|
1436
1475
|
super.once(event, callback);
|
|
1437
1476
|
return this;
|
|
1438
1477
|
}
|
|
1478
|
+
/**
|
|
1479
|
+
* Remove um listener específico.
|
|
1480
|
+
*/
|
|
1481
|
+
off(event, callback) {
|
|
1482
|
+
super.off(event, callback);
|
|
1483
|
+
return this;
|
|
1484
|
+
}
|
|
1439
1485
|
/**
|
|
1440
1486
|
* Obtém os detalhes do playback.
|
|
1441
1487
|
*/
|
|
@@ -1470,14 +1516,6 @@ var PlaybackInstance = class extends EventEmitter3 {
|
|
|
1470
1516
|
throw new Error("Nenhum playback associado para encerrar.");
|
|
1471
1517
|
}
|
|
1472
1518
|
await this.baseClient.delete(`/playbacks/${this.id}`);
|
|
1473
|
-
this.emit("PlaybackStopped", this.playbackData);
|
|
1474
|
-
}
|
|
1475
|
-
/**
|
|
1476
|
-
* Remove um listener específico.
|
|
1477
|
-
*/
|
|
1478
|
-
off(event, callback) {
|
|
1479
|
-
super.off(event, callback);
|
|
1480
|
-
return this;
|
|
1481
1519
|
}
|
|
1482
1520
|
};
|
|
1483
1521
|
var Playbacks = class extends EventEmitter3 {
|
|
@@ -1499,19 +1537,6 @@ var Playbacks = class extends EventEmitter3 {
|
|
|
1499
1537
|
getWebSocketClients() {
|
|
1500
1538
|
return this.client.getWebSocketClients();
|
|
1501
1539
|
}
|
|
1502
|
-
/**
|
|
1503
|
-
* Emite eventos de playback.
|
|
1504
|
-
* Atualizado para gerenciar eventos específicos para `PlaybackInstance`.
|
|
1505
|
-
*/
|
|
1506
|
-
emitPlaybackEvent(eventType, data) {
|
|
1507
|
-
if ("playbackId" in data) {
|
|
1508
|
-
const playbackId = data.playbackId;
|
|
1509
|
-
if (playbackId) {
|
|
1510
|
-
this.emit(`${eventType}:${playbackId}`, data);
|
|
1511
|
-
}
|
|
1512
|
-
}
|
|
1513
|
-
this.emit(eventType, data);
|
|
1514
|
-
}
|
|
1515
1540
|
/**
|
|
1516
1541
|
* Retrieves details of a specific playback.
|
|
1517
1542
|
*
|
|
@@ -1748,6 +1773,33 @@ var WebSocketClient = class extends EventEmitter4 {
|
|
|
1748
1773
|
super.removeAllListeners(event);
|
|
1749
1774
|
return this;
|
|
1750
1775
|
}
|
|
1776
|
+
/**
|
|
1777
|
+
* Adiciona um listener escopado ao evento "message".
|
|
1778
|
+
* @param instanceId - Identificador único da instância que está registrando o listener.
|
|
1779
|
+
* @param callback - Função de callback para o evento.
|
|
1780
|
+
*/
|
|
1781
|
+
addScopedMessageListener(instanceId, callback) {
|
|
1782
|
+
const scopedListener = (data) => {
|
|
1783
|
+
if (data.instanceId === instanceId) {
|
|
1784
|
+
callback(data);
|
|
1785
|
+
}
|
|
1786
|
+
};
|
|
1787
|
+
this.on("message", scopedListener);
|
|
1788
|
+
this.messageListeners.push(scopedListener);
|
|
1789
|
+
}
|
|
1790
|
+
/**
|
|
1791
|
+
* Remove todos os listeners associados a uma instância específica.
|
|
1792
|
+
* @param instanceId - Identificador da instância cujos listeners serão removidos.
|
|
1793
|
+
*/
|
|
1794
|
+
removeScopedMessageListeners(instanceId) {
|
|
1795
|
+
this.messageListeners = this.messageListeners.filter((listener) => {
|
|
1796
|
+
const shouldRemove = listener.name === instanceId;
|
|
1797
|
+
if (shouldRemove) {
|
|
1798
|
+
this.off("message", listener);
|
|
1799
|
+
}
|
|
1800
|
+
return !shouldRemove;
|
|
1801
|
+
});
|
|
1802
|
+
}
|
|
1751
1803
|
/**
|
|
1752
1804
|
* Handles incoming WebSocket messages.
|
|
1753
1805
|
* @param rawData - The raw data received from the WebSocket.
|