@ipcom/asterisk-ari 0.0.96 → 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 +54 -28
- package/dist/cjs/index.cjs.map +2 -2
- package/dist/esm/index.js +54 -28
- package/dist/esm/index.js.map +2 -2
- package/dist/types/ari-client/resources/channels.d.ts +0 -3
- package/dist/types/ari-client/resources/channels.d.ts.map +1 -1
- package/dist/types/ari-client/resources/playbacks.d.ts +3 -7
- 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
|
}
|
|
@@ -940,9 +947,6 @@ var ChannelInstance = class extends EventEmitter2 {
|
|
|
940
947
|
super.on(event, callback);
|
|
941
948
|
return this;
|
|
942
949
|
}
|
|
943
|
-
/**
|
|
944
|
-
* Adiciona um listener para ser chamado apenas uma vez.
|
|
945
|
-
*/
|
|
946
950
|
/**
|
|
947
951
|
* Adiciona um listener para ser chamado apenas uma vez.
|
|
948
952
|
*/
|
|
@@ -1412,19 +1416,26 @@ var PlaybackInstance = class extends EventEmitter3 {
|
|
|
1412
1416
|
`Nenhum WebSocket conectado dispon\xEDvel para o playback: ${this.id}`
|
|
1413
1417
|
);
|
|
1414
1418
|
}
|
|
1415
|
-
wsClient.
|
|
1419
|
+
wsClient.addScopedMessageListener(this.id, (event) => {
|
|
1416
1420
|
if (isPlaybackEvent(event, this.id)) {
|
|
1417
1421
|
const playbackEventType = event.type;
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
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
|
+
);
|
|
1423
1431
|
}
|
|
1424
1432
|
});
|
|
1425
1433
|
}
|
|
1426
1434
|
playbackData = null;
|
|
1427
1435
|
id;
|
|
1436
|
+
/**
|
|
1437
|
+
* Adiciona um listener para eventos de playback.
|
|
1438
|
+
*/
|
|
1428
1439
|
/**
|
|
1429
1440
|
* Adiciona um listener para eventos de playback.
|
|
1430
1441
|
*/
|
|
@@ -1454,11 +1465,13 @@ var PlaybackInstance = class extends EventEmitter3 {
|
|
|
1454
1465
|
console.log(`Recebido evento '${event}' para playback '${this.id}'`);
|
|
1455
1466
|
this.emit(event, webSocketEvent);
|
|
1456
1467
|
callback(webSocketEvent);
|
|
1457
|
-
wsClient.
|
|
1458
|
-
console.log(
|
|
1468
|
+
wsClient.removeScopedMessageListeners(this.id);
|
|
1469
|
+
console.log(
|
|
1470
|
+
`Listeners escopados para playback '${this.id}' foram removidos.`
|
|
1471
|
+
);
|
|
1459
1472
|
}
|
|
1460
1473
|
};
|
|
1461
|
-
wsClient.
|
|
1474
|
+
wsClient.addScopedMessageListener(this.id, globalListener);
|
|
1462
1475
|
super.once(event, callback);
|
|
1463
1476
|
return this;
|
|
1464
1477
|
}
|
|
@@ -1503,7 +1516,6 @@ var PlaybackInstance = class extends EventEmitter3 {
|
|
|
1503
1516
|
throw new Error("Nenhum playback associado para encerrar.");
|
|
1504
1517
|
}
|
|
1505
1518
|
await this.baseClient.delete(`/playbacks/${this.id}`);
|
|
1506
|
-
this.emit("PlaybackStopped", this.playbackData);
|
|
1507
1519
|
}
|
|
1508
1520
|
};
|
|
1509
1521
|
var Playbacks = class extends EventEmitter3 {
|
|
@@ -1525,19 +1537,6 @@ var Playbacks = class extends EventEmitter3 {
|
|
|
1525
1537
|
getWebSocketClients() {
|
|
1526
1538
|
return this.client.getWebSocketClients();
|
|
1527
1539
|
}
|
|
1528
|
-
/**
|
|
1529
|
-
* Emite eventos de playback.
|
|
1530
|
-
* Atualizado para gerenciar eventos específicos para `PlaybackInstance`.
|
|
1531
|
-
*/
|
|
1532
|
-
emitPlaybackEvent(eventType, data) {
|
|
1533
|
-
if ("playbackId" in data) {
|
|
1534
|
-
const playbackId = data.playbackId;
|
|
1535
|
-
if (playbackId) {
|
|
1536
|
-
this.emit(`${eventType}:${playbackId}`, data);
|
|
1537
|
-
}
|
|
1538
|
-
}
|
|
1539
|
-
this.emit(eventType, data);
|
|
1540
|
-
}
|
|
1541
1540
|
/**
|
|
1542
1541
|
* Retrieves details of a specific playback.
|
|
1543
1542
|
*
|
|
@@ -1774,6 +1773,33 @@ var WebSocketClient = class extends EventEmitter4 {
|
|
|
1774
1773
|
super.removeAllListeners(event);
|
|
1775
1774
|
return this;
|
|
1776
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
|
+
}
|
|
1777
1803
|
/**
|
|
1778
1804
|
* Handles incoming WebSocket messages.
|
|
1779
1805
|
* @param rawData - The raw data received from the WebSocket.
|