@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/cjs/index.cjs
CHANGED
|
@@ -947,9 +947,16 @@ var ChannelInstance = class extends import_events2.EventEmitter {
|
|
|
947
947
|
`Nenhum WebSocket conectado dispon\xEDvel para o canal: ${this.id}`
|
|
948
948
|
);
|
|
949
949
|
}
|
|
950
|
-
wsClient.
|
|
950
|
+
wsClient.addScopedMessageListener(this.id, (event) => {
|
|
951
951
|
if (isChannelEvent(event, this.id)) {
|
|
952
|
-
|
|
952
|
+
const channelEventType = event.type;
|
|
953
|
+
this.emit(channelEventType, event);
|
|
954
|
+
}
|
|
955
|
+
});
|
|
956
|
+
this.on("removeListener", (eventName) => {
|
|
957
|
+
if (this.eventNames().length === 0 || this.listenerCount(eventName) === 0) {
|
|
958
|
+
wsClient.removeScopedMessageListeners(this.id);
|
|
959
|
+
console.log(`Listeners escopados removidos para canal '${this.id}'.`);
|
|
953
960
|
}
|
|
954
961
|
});
|
|
955
962
|
}
|
|
@@ -962,9 +969,6 @@ var ChannelInstance = class extends import_events2.EventEmitter {
|
|
|
962
969
|
super.on(event, callback);
|
|
963
970
|
return this;
|
|
964
971
|
}
|
|
965
|
-
/**
|
|
966
|
-
* Adiciona um listener para ser chamado apenas uma vez.
|
|
967
|
-
*/
|
|
968
972
|
/**
|
|
969
973
|
* Adiciona um listener para ser chamado apenas uma vez.
|
|
970
974
|
*/
|
|
@@ -1434,19 +1438,26 @@ var PlaybackInstance = class extends import_events3.EventEmitter {
|
|
|
1434
1438
|
`Nenhum WebSocket conectado dispon\xEDvel para o playback: ${this.id}`
|
|
1435
1439
|
);
|
|
1436
1440
|
}
|
|
1437
|
-
wsClient.
|
|
1441
|
+
wsClient.addScopedMessageListener(this.id, (event) => {
|
|
1438
1442
|
if (isPlaybackEvent(event, this.id)) {
|
|
1439
1443
|
const playbackEventType = event.type;
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1444
|
+
this.emit(playbackEventType, event);
|
|
1445
|
+
}
|
|
1446
|
+
});
|
|
1447
|
+
this.on("removeListener", (eventName) => {
|
|
1448
|
+
if (this.eventNames().length === 0 || this.listenerCount(eventName) === 0) {
|
|
1449
|
+
wsClient.removeScopedMessageListeners(this.id);
|
|
1450
|
+
console.log(
|
|
1451
|
+
`Listeners escopados removidos para playback '${this.id}'.`
|
|
1452
|
+
);
|
|
1445
1453
|
}
|
|
1446
1454
|
});
|
|
1447
1455
|
}
|
|
1448
1456
|
playbackData = null;
|
|
1449
1457
|
id;
|
|
1458
|
+
/**
|
|
1459
|
+
* Adiciona um listener para eventos de playback.
|
|
1460
|
+
*/
|
|
1450
1461
|
/**
|
|
1451
1462
|
* Adiciona um listener para eventos de playback.
|
|
1452
1463
|
*/
|
|
@@ -1476,11 +1487,13 @@ var PlaybackInstance = class extends import_events3.EventEmitter {
|
|
|
1476
1487
|
console.log(`Recebido evento '${event}' para playback '${this.id}'`);
|
|
1477
1488
|
this.emit(event, webSocketEvent);
|
|
1478
1489
|
callback(webSocketEvent);
|
|
1479
|
-
wsClient.
|
|
1480
|
-
console.log(
|
|
1490
|
+
wsClient.removeScopedMessageListeners(this.id);
|
|
1491
|
+
console.log(
|
|
1492
|
+
`Listeners escopados para playback '${this.id}' foram removidos.`
|
|
1493
|
+
);
|
|
1481
1494
|
}
|
|
1482
1495
|
};
|
|
1483
|
-
wsClient.
|
|
1496
|
+
wsClient.addScopedMessageListener(this.id, globalListener);
|
|
1484
1497
|
super.once(event, callback);
|
|
1485
1498
|
return this;
|
|
1486
1499
|
}
|
|
@@ -1525,7 +1538,6 @@ var PlaybackInstance = class extends import_events3.EventEmitter {
|
|
|
1525
1538
|
throw new Error("Nenhum playback associado para encerrar.");
|
|
1526
1539
|
}
|
|
1527
1540
|
await this.baseClient.delete(`/playbacks/${this.id}`);
|
|
1528
|
-
this.emit("PlaybackStopped", this.playbackData);
|
|
1529
1541
|
}
|
|
1530
1542
|
};
|
|
1531
1543
|
var Playbacks = class extends import_events3.EventEmitter {
|
|
@@ -1547,19 +1559,6 @@ var Playbacks = class extends import_events3.EventEmitter {
|
|
|
1547
1559
|
getWebSocketClients() {
|
|
1548
1560
|
return this.client.getWebSocketClients();
|
|
1549
1561
|
}
|
|
1550
|
-
/**
|
|
1551
|
-
* Emite eventos de playback.
|
|
1552
|
-
* Atualizado para gerenciar eventos específicos para `PlaybackInstance`.
|
|
1553
|
-
*/
|
|
1554
|
-
emitPlaybackEvent(eventType, data) {
|
|
1555
|
-
if ("playbackId" in data) {
|
|
1556
|
-
const playbackId = data.playbackId;
|
|
1557
|
-
if (playbackId) {
|
|
1558
|
-
this.emit(`${eventType}:${playbackId}`, data);
|
|
1559
|
-
}
|
|
1560
|
-
}
|
|
1561
|
-
this.emit(eventType, data);
|
|
1562
|
-
}
|
|
1563
1562
|
/**
|
|
1564
1563
|
* Retrieves details of a specific playback.
|
|
1565
1564
|
*
|
|
@@ -1796,6 +1795,33 @@ var WebSocketClient = class extends import_events4.EventEmitter {
|
|
|
1796
1795
|
super.removeAllListeners(event);
|
|
1797
1796
|
return this;
|
|
1798
1797
|
}
|
|
1798
|
+
/**
|
|
1799
|
+
* Adiciona um listener escopado ao evento "message".
|
|
1800
|
+
* @param instanceId - Identificador único da instância que está registrando o listener.
|
|
1801
|
+
* @param callback - Função de callback para o evento.
|
|
1802
|
+
*/
|
|
1803
|
+
addScopedMessageListener(instanceId, callback) {
|
|
1804
|
+
const scopedListener = (data) => {
|
|
1805
|
+
if (data.instanceId === instanceId) {
|
|
1806
|
+
callback(data);
|
|
1807
|
+
}
|
|
1808
|
+
};
|
|
1809
|
+
this.on("message", scopedListener);
|
|
1810
|
+
this.messageListeners.push(scopedListener);
|
|
1811
|
+
}
|
|
1812
|
+
/**
|
|
1813
|
+
* Remove todos os listeners associados a uma instância específica.
|
|
1814
|
+
* @param instanceId - Identificador da instância cujos listeners serão removidos.
|
|
1815
|
+
*/
|
|
1816
|
+
removeScopedMessageListeners(instanceId) {
|
|
1817
|
+
this.messageListeners = this.messageListeners.filter((listener) => {
|
|
1818
|
+
const shouldRemove = listener.name === instanceId;
|
|
1819
|
+
if (shouldRemove) {
|
|
1820
|
+
this.off("message", listener);
|
|
1821
|
+
}
|
|
1822
|
+
return !shouldRemove;
|
|
1823
|
+
});
|
|
1824
|
+
}
|
|
1799
1825
|
/**
|
|
1800
1826
|
* Handles incoming WebSocket messages.
|
|
1801
1827
|
* @param rawData - The raw data received from the WebSocket.
|