@ipcom/asterisk-ari 0.0.165 → 1.0.0
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 +79 -118
- package/dist/cjs/index.cjs.map +2 -2
- package/dist/esm/index.js +76 -115
- package/dist/esm/index.js.map +2 -2
- package/dist/types/ari-client/ariClient.d.ts +5 -12
- package/dist/types/ari-client/ariClient.d.ts.map +1 -1
- package/dist/types/ari-client/interfaces/applications.types.d.ts +2 -2
- package/dist/types/ari-client/interfaces/applications.types.d.ts.map +1 -1
- package/dist/types/ari-client/interfaces/events.types.d.ts +329 -324
- package/dist/types/ari-client/interfaces/events.types.d.ts.map +1 -1
- package/dist/types/ari-client/interfaces/index.d.ts +1 -1
- package/dist/types/ari-client/interfaces/index.d.ts.map +1 -1
- package/dist/types/ari-client/interfaces/websocket.types.d.ts +2 -4
- package/dist/types/ari-client/interfaces/websocket.types.d.ts.map +1 -1
- package/dist/types/ari-client/resources/bridges.d.ts +4 -22
- package/dist/types/ari-client/resources/bridges.d.ts.map +1 -1
- package/dist/types/ari-client/resources/channels.d.ts +4 -10
- package/dist/types/ari-client/resources/channels.d.ts.map +1 -1
- package/dist/types/ari-client/resources/playbacks.d.ts +4 -10
- package/dist/types/ari-client/resources/playbacks.d.ts.map +1 -1
- package/dist/types/ari-client/utils.d.ts +2 -2
- package/dist/types/ari-client/utils.d.ts.map +1 -1
- package/dist/types/ari-client/websocketClient.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +7 -5
package/dist/esm/index.js
CHANGED
|
@@ -115,7 +115,7 @@ var require_delay_base = __commonJS({
|
|
|
115
115
|
var jitter_factory_1 = require_jitter_factory();
|
|
116
116
|
var Delay = (
|
|
117
117
|
/** @class */
|
|
118
|
-
function() {
|
|
118
|
+
(function() {
|
|
119
119
|
function Delay2(options) {
|
|
120
120
|
this.options = options;
|
|
121
121
|
this.attempt = 0;
|
|
@@ -156,7 +156,7 @@ var require_delay_base = __commonJS({
|
|
|
156
156
|
configurable: true
|
|
157
157
|
});
|
|
158
158
|
return Delay2;
|
|
159
|
-
}()
|
|
159
|
+
})()
|
|
160
160
|
);
|
|
161
161
|
exports.Delay = Delay;
|
|
162
162
|
}
|
|
@@ -166,7 +166,7 @@ var require_delay_base = __commonJS({
|
|
|
166
166
|
var require_skip_first_delay = __commonJS({
|
|
167
167
|
"node_modules/exponential-backoff/dist/delay/skip-first/skip-first.delay.js"(exports) {
|
|
168
168
|
"use strict";
|
|
169
|
-
var __extends = exports && exports.__extends || /* @__PURE__ */ function() {
|
|
169
|
+
var __extends = exports && exports.__extends || /* @__PURE__ */ (function() {
|
|
170
170
|
var extendStatics = function(d, b) {
|
|
171
171
|
extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
|
|
172
172
|
d2.__proto__ = b2;
|
|
@@ -182,7 +182,7 @@ var require_skip_first_delay = __commonJS({
|
|
|
182
182
|
}
|
|
183
183
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
184
184
|
};
|
|
185
|
-
}();
|
|
185
|
+
})();
|
|
186
186
|
var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) {
|
|
187
187
|
function adopt(value) {
|
|
188
188
|
return value instanceof P ? value : new P(function(resolve) {
|
|
@@ -283,7 +283,7 @@ var require_skip_first_delay = __commonJS({
|
|
|
283
283
|
var delay_base_1 = require_delay_base();
|
|
284
284
|
var SkipFirstDelay = (
|
|
285
285
|
/** @class */
|
|
286
|
-
function(_super) {
|
|
286
|
+
(function(_super) {
|
|
287
287
|
__extends(SkipFirstDelay2, _super);
|
|
288
288
|
function SkipFirstDelay2() {
|
|
289
289
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
@@ -310,7 +310,7 @@ var require_skip_first_delay = __commonJS({
|
|
|
310
310
|
configurable: true
|
|
311
311
|
});
|
|
312
312
|
return SkipFirstDelay2;
|
|
313
|
-
}(delay_base_1.Delay)
|
|
313
|
+
})(delay_base_1.Delay)
|
|
314
314
|
);
|
|
315
315
|
exports.SkipFirstDelay = SkipFirstDelay;
|
|
316
316
|
}
|
|
@@ -320,7 +320,7 @@ var require_skip_first_delay = __commonJS({
|
|
|
320
320
|
var require_always_delay = __commonJS({
|
|
321
321
|
"node_modules/exponential-backoff/dist/delay/always/always.delay.js"(exports) {
|
|
322
322
|
"use strict";
|
|
323
|
-
var __extends = exports && exports.__extends || /* @__PURE__ */ function() {
|
|
323
|
+
var __extends = exports && exports.__extends || /* @__PURE__ */ (function() {
|
|
324
324
|
var extendStatics = function(d, b) {
|
|
325
325
|
extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
|
|
326
326
|
d2.__proto__ = b2;
|
|
@@ -336,18 +336,18 @@ var require_always_delay = __commonJS({
|
|
|
336
336
|
}
|
|
337
337
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
338
338
|
};
|
|
339
|
-
}();
|
|
339
|
+
})();
|
|
340
340
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
341
341
|
var delay_base_1 = require_delay_base();
|
|
342
342
|
var AlwaysDelay = (
|
|
343
343
|
/** @class */
|
|
344
|
-
function(_super) {
|
|
344
|
+
(function(_super) {
|
|
345
345
|
__extends(AlwaysDelay2, _super);
|
|
346
346
|
function AlwaysDelay2() {
|
|
347
347
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
348
348
|
}
|
|
349
349
|
return AlwaysDelay2;
|
|
350
|
-
}(delay_base_1.Delay)
|
|
350
|
+
})(delay_base_1.Delay)
|
|
351
351
|
);
|
|
352
352
|
exports.AlwaysDelay = AlwaysDelay;
|
|
353
353
|
}
|
|
@@ -499,7 +499,7 @@ var require_backoff = __commonJS({
|
|
|
499
499
|
exports.backOff = backOff2;
|
|
500
500
|
var BackOff = (
|
|
501
501
|
/** @class */
|
|
502
|
-
function() {
|
|
502
|
+
(function() {
|
|
503
503
|
function BackOff2(request, options) {
|
|
504
504
|
this.request = request;
|
|
505
505
|
this.options = options;
|
|
@@ -565,7 +565,7 @@ var require_backoff = __commonJS({
|
|
|
565
565
|
});
|
|
566
566
|
};
|
|
567
567
|
return BackOff2;
|
|
568
|
-
}()
|
|
568
|
+
})()
|
|
569
569
|
);
|
|
570
570
|
}
|
|
571
571
|
});
|
|
@@ -950,8 +950,8 @@ var BridgeInstance = class {
|
|
|
950
950
|
this.id = bridgeId || `bridge-${Date.now()}`;
|
|
951
951
|
}
|
|
952
952
|
eventEmitter = new EventEmitter();
|
|
953
|
+
// biome-ignore lint/suspicious/noExplicitAny: Maps original listener → wrapped listener per event
|
|
953
954
|
listenersMap = /* @__PURE__ */ new Map();
|
|
954
|
-
// 🔹 Guarda listeners para remoção posterior
|
|
955
955
|
bridgeData = null;
|
|
956
956
|
id;
|
|
957
957
|
/**
|
|
@@ -959,30 +959,18 @@ var BridgeInstance = class {
|
|
|
959
959
|
*
|
|
960
960
|
* @param event - The type of event to listen for.
|
|
961
961
|
* @param listener - The callback function to be called when the event occurs.
|
|
962
|
-
*/
|
|
963
|
-
/**
|
|
964
|
-
* Registers a listener for specific bridge events.
|
|
965
|
-
*
|
|
966
|
-
* This method allows you to attach an event listener to the bridge instance for a specific event type.
|
|
967
|
-
* When the specified event occurs, the provided listener function will be called with the event data.
|
|
968
|
-
*
|
|
969
|
-
* @template T - The specific type of WebSocketEvent to listen for.
|
|
970
|
-
* It receives the event data as its parameter.
|
|
971
|
-
* @returns {void}
|
|
972
962
|
*
|
|
973
963
|
* @example
|
|
974
964
|
* bridge.on('BridgeCreated', (event) => {
|
|
975
965
|
*
|
|
976
966
|
* });
|
|
977
|
-
* @param event
|
|
978
|
-
* @param listener
|
|
979
967
|
*/
|
|
980
968
|
on(event, listener) {
|
|
981
969
|
if (!event) {
|
|
982
970
|
throw new Error("Event type is required");
|
|
983
971
|
}
|
|
984
|
-
const
|
|
985
|
-
if (
|
|
972
|
+
const eventListeners = this.listenersMap.get(event) ?? /* @__PURE__ */ new Map();
|
|
973
|
+
if (eventListeners.has(listener)) {
|
|
986
974
|
console.warn(
|
|
987
975
|
`Listener j\xE1 registrado para evento ${event}, reutilizando.`
|
|
988
976
|
);
|
|
@@ -994,10 +982,8 @@ var BridgeInstance = class {
|
|
|
994
982
|
}
|
|
995
983
|
};
|
|
996
984
|
this.eventEmitter.on(event, wrappedListener);
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
}
|
|
1000
|
-
this.listenersMap.get(event).push(wrappedListener);
|
|
985
|
+
eventListeners.set(listener, wrappedListener);
|
|
986
|
+
this.listenersMap.set(event, eventListeners);
|
|
1001
987
|
}
|
|
1002
988
|
/**
|
|
1003
989
|
* Registers a one-time listener for specific bridge events.
|
|
@@ -1009,25 +995,22 @@ var BridgeInstance = class {
|
|
|
1009
995
|
if (!event) {
|
|
1010
996
|
throw new Error("Event type is required");
|
|
1011
997
|
}
|
|
1012
|
-
const
|
|
1013
|
-
|
|
1014
|
-
if (existingListeners.includes(listener)) {
|
|
998
|
+
const eventListeners = this.listenersMap.get(event) ?? /* @__PURE__ */ new Map();
|
|
999
|
+
if (eventListeners.has(listener)) {
|
|
1015
1000
|
console.warn(
|
|
1016
|
-
`One-time listener j\xE1 registrado para evento ${
|
|
1001
|
+
`One-time listener j\xE1 registrado para evento ${event}, reutilizando.`
|
|
1017
1002
|
);
|
|
1018
1003
|
return;
|
|
1019
1004
|
}
|
|
1020
1005
|
const wrappedListener = (data) => {
|
|
1021
1006
|
if ("bridge" in data && data.bridge?.id === this.id) {
|
|
1022
1007
|
listener(data);
|
|
1023
|
-
this.off(event,
|
|
1008
|
+
this.off(event, listener);
|
|
1024
1009
|
}
|
|
1025
1010
|
};
|
|
1026
1011
|
this.eventEmitter.once(event, wrappedListener);
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
}
|
|
1030
|
-
this.listenersMap.get(eventKey).push(wrappedListener);
|
|
1012
|
+
eventListeners.set(listener, wrappedListener);
|
|
1013
|
+
this.listenersMap.set(event, eventListeners);
|
|
1031
1014
|
}
|
|
1032
1015
|
/**
|
|
1033
1016
|
* Removes event listener(s) from the bridge.
|
|
@@ -1040,12 +1023,12 @@ var BridgeInstance = class {
|
|
|
1040
1023
|
throw new Error("Event type is required");
|
|
1041
1024
|
}
|
|
1042
1025
|
if (listener) {
|
|
1043
|
-
this.
|
|
1044
|
-
const
|
|
1045
|
-
|
|
1046
|
-
event,
|
|
1047
|
-
|
|
1048
|
-
|
|
1026
|
+
const eventListeners = this.listenersMap.get(event);
|
|
1027
|
+
const wrappedListener = eventListeners?.get(listener);
|
|
1028
|
+
if (wrappedListener) {
|
|
1029
|
+
this.eventEmitter.off(event, wrappedListener);
|
|
1030
|
+
eventListeners.delete(listener);
|
|
1031
|
+
}
|
|
1049
1032
|
} else {
|
|
1050
1033
|
this.eventEmitter.removeAllListeners(event);
|
|
1051
1034
|
this.listenersMap.delete(event);
|
|
@@ -1080,11 +1063,8 @@ var BridgeInstance = class {
|
|
|
1080
1063
|
removeAllListeners() {
|
|
1081
1064
|
console.log(`Removing all event listeners for bridge ${this.id}`);
|
|
1082
1065
|
this.listenersMap.forEach((listeners, event) => {
|
|
1083
|
-
listeners.forEach((
|
|
1084
|
-
this.eventEmitter.off(
|
|
1085
|
-
event,
|
|
1086
|
-
listener
|
|
1087
|
-
);
|
|
1066
|
+
listeners.forEach((wrappedListener) => {
|
|
1067
|
+
this.eventEmitter.off(event, wrappedListener);
|
|
1088
1068
|
});
|
|
1089
1069
|
});
|
|
1090
1070
|
this.listenersMap.clear();
|
|
@@ -1725,8 +1705,8 @@ var ChannelInstance = class {
|
|
|
1725
1705
|
}
|
|
1726
1706
|
eventEmitter = new EventEmitter2();
|
|
1727
1707
|
channelData = null;
|
|
1708
|
+
// biome-ignore lint/suspicious/noExplicitAny: Maps original listener → wrapped listener per event
|
|
1728
1709
|
listenersMap = /* @__PURE__ */ new Map();
|
|
1729
|
-
// 🔹 Guarda listeners para remoção posterior
|
|
1730
1710
|
id;
|
|
1731
1711
|
/**
|
|
1732
1712
|
* Registers an event listener for specific channel events
|
|
@@ -1735,8 +1715,8 @@ var ChannelInstance = class {
|
|
|
1735
1715
|
if (!event) {
|
|
1736
1716
|
throw new Error("Event type is required");
|
|
1737
1717
|
}
|
|
1738
|
-
const
|
|
1739
|
-
if (
|
|
1718
|
+
const eventListeners = this.listenersMap.get(event) ?? /* @__PURE__ */ new Map();
|
|
1719
|
+
if (eventListeners.has(listener)) {
|
|
1740
1720
|
console.warn(
|
|
1741
1721
|
`Listener j\xE1 registrado para evento ${event}, reutilizando.`
|
|
1742
1722
|
);
|
|
@@ -1748,10 +1728,8 @@ var ChannelInstance = class {
|
|
|
1748
1728
|
}
|
|
1749
1729
|
};
|
|
1750
1730
|
this.eventEmitter.on(event, wrappedListener);
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
}
|
|
1754
|
-
this.listenersMap.get(event).push(wrappedListener);
|
|
1731
|
+
eventListeners.set(listener, wrappedListener);
|
|
1732
|
+
this.listenersMap.set(event, eventListeners);
|
|
1755
1733
|
}
|
|
1756
1734
|
/**
|
|
1757
1735
|
* Registers a one-time event listener
|
|
@@ -1760,25 +1738,22 @@ var ChannelInstance = class {
|
|
|
1760
1738
|
if (!event) {
|
|
1761
1739
|
throw new Error("Event type is required");
|
|
1762
1740
|
}
|
|
1763
|
-
const
|
|
1764
|
-
|
|
1765
|
-
if (existingListeners.includes(listener)) {
|
|
1741
|
+
const eventListeners = this.listenersMap.get(event) ?? /* @__PURE__ */ new Map();
|
|
1742
|
+
if (eventListeners.has(listener)) {
|
|
1766
1743
|
console.warn(
|
|
1767
|
-
`One-time listener j\xE1 registrado para evento ${
|
|
1744
|
+
`One-time listener j\xE1 registrado para evento ${event}, reutilizando.`
|
|
1768
1745
|
);
|
|
1769
1746
|
return;
|
|
1770
1747
|
}
|
|
1771
1748
|
const wrappedListener = (data) => {
|
|
1772
1749
|
if ("channel" in data && data.channel?.id === this.id) {
|
|
1773
1750
|
listener(data);
|
|
1774
|
-
this.off(event,
|
|
1751
|
+
this.off(event, listener);
|
|
1775
1752
|
}
|
|
1776
1753
|
};
|
|
1777
1754
|
this.eventEmitter.once(event, wrappedListener);
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
}
|
|
1781
|
-
this.listenersMap.get(eventKey).push(wrappedListener);
|
|
1755
|
+
eventListeners.set(listener, wrappedListener);
|
|
1756
|
+
this.listenersMap.set(event, eventListeners);
|
|
1782
1757
|
}
|
|
1783
1758
|
/**
|
|
1784
1759
|
* Removes event listener(s) for a specific WebSocket event type.
|
|
@@ -1794,12 +1769,12 @@ var ChannelInstance = class {
|
|
|
1794
1769
|
throw new Error("Event type is required");
|
|
1795
1770
|
}
|
|
1796
1771
|
if (listener) {
|
|
1797
|
-
this.
|
|
1798
|
-
const
|
|
1799
|
-
|
|
1800
|
-
event,
|
|
1801
|
-
|
|
1802
|
-
|
|
1772
|
+
const eventListeners = this.listenersMap.get(event);
|
|
1773
|
+
const wrappedListener = eventListeners?.get(listener);
|
|
1774
|
+
if (wrappedListener) {
|
|
1775
|
+
this.eventEmitter.off(event, wrappedListener);
|
|
1776
|
+
eventListeners.delete(listener);
|
|
1777
|
+
}
|
|
1803
1778
|
} else {
|
|
1804
1779
|
this.eventEmitter.removeAllListeners(event);
|
|
1805
1780
|
this.listenersMap.delete(event);
|
|
@@ -1835,12 +1810,8 @@ var ChannelInstance = class {
|
|
|
1835
1810
|
removeAllListeners() {
|
|
1836
1811
|
console.log(`Removing all event listeners for channel ${this.id}`);
|
|
1837
1812
|
this.listenersMap.forEach((listeners, event) => {
|
|
1838
|
-
listeners.forEach((
|
|
1839
|
-
this.eventEmitter.off(
|
|
1840
|
-
event,
|
|
1841
|
-
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
|
|
1842
|
-
listener
|
|
1843
|
-
);
|
|
1813
|
+
listeners.forEach((wrappedListener) => {
|
|
1814
|
+
this.eventEmitter.off(event, wrappedListener);
|
|
1844
1815
|
});
|
|
1845
1816
|
});
|
|
1846
1817
|
this.listenersMap.clear();
|
|
@@ -2816,8 +2787,8 @@ var PlaybackInstance = class {
|
|
|
2816
2787
|
this.id = playbackId;
|
|
2817
2788
|
}
|
|
2818
2789
|
eventEmitter = new EventEmitter3();
|
|
2790
|
+
// biome-ignore lint/suspicious/noExplicitAny: Maps original listener → wrapped listener per event
|
|
2819
2791
|
listenersMap = /* @__PURE__ */ new Map();
|
|
2820
|
-
// 🔹 Guarda listeners para remoção posterior
|
|
2821
2792
|
playbackData = null;
|
|
2822
2793
|
id;
|
|
2823
2794
|
/**
|
|
@@ -2830,8 +2801,8 @@ var PlaybackInstance = class {
|
|
|
2830
2801
|
if (!event) {
|
|
2831
2802
|
throw new Error("Event type is required");
|
|
2832
2803
|
}
|
|
2833
|
-
const
|
|
2834
|
-
if (
|
|
2804
|
+
const eventListeners = this.listenersMap.get(event) ?? /* @__PURE__ */ new Map();
|
|
2805
|
+
if (eventListeners.has(listener)) {
|
|
2835
2806
|
console.warn(
|
|
2836
2807
|
`Listener j\xE1 registrado para evento ${event}, reutilizando.`
|
|
2837
2808
|
);
|
|
@@ -2843,10 +2814,8 @@ var PlaybackInstance = class {
|
|
|
2843
2814
|
}
|
|
2844
2815
|
};
|
|
2845
2816
|
this.eventEmitter.on(event, wrappedListener);
|
|
2846
|
-
|
|
2847
|
-
|
|
2848
|
-
}
|
|
2849
|
-
this.listenersMap.get(event).push(wrappedListener);
|
|
2817
|
+
eventListeners.set(listener, wrappedListener);
|
|
2818
|
+
this.listenersMap.set(event, eventListeners);
|
|
2850
2819
|
}
|
|
2851
2820
|
/**
|
|
2852
2821
|
* Registers a one-time event listener for a specific WebSocket event type.
|
|
@@ -2858,25 +2827,22 @@ var PlaybackInstance = class {
|
|
|
2858
2827
|
if (!event) {
|
|
2859
2828
|
throw new Error("Event type is required");
|
|
2860
2829
|
}
|
|
2861
|
-
const
|
|
2862
|
-
|
|
2863
|
-
if (existingListeners.includes(listener)) {
|
|
2830
|
+
const eventListeners = this.listenersMap.get(event) ?? /* @__PURE__ */ new Map();
|
|
2831
|
+
if (eventListeners.has(listener)) {
|
|
2864
2832
|
console.warn(
|
|
2865
|
-
`One-time listener j\xE1 registrado para evento ${
|
|
2833
|
+
`One-time listener j\xE1 registrado para evento ${event}, reutilizando.`
|
|
2866
2834
|
);
|
|
2867
2835
|
return;
|
|
2868
2836
|
}
|
|
2869
2837
|
const wrappedListener = (data) => {
|
|
2870
2838
|
if ("playback" in data && data.playback?.id === this.id) {
|
|
2871
2839
|
listener(data);
|
|
2872
|
-
this.off(event,
|
|
2840
|
+
this.off(event, listener);
|
|
2873
2841
|
}
|
|
2874
2842
|
};
|
|
2875
2843
|
this.eventEmitter.once(event, wrappedListener);
|
|
2876
|
-
|
|
2877
|
-
|
|
2878
|
-
}
|
|
2879
|
-
this.listenersMap.get(eventKey).push(wrappedListener);
|
|
2844
|
+
eventListeners.set(listener, wrappedListener);
|
|
2845
|
+
this.listenersMap.set(event, eventListeners);
|
|
2880
2846
|
}
|
|
2881
2847
|
/**
|
|
2882
2848
|
* Removes event listener(s) for a specific WebSocket event type.
|
|
@@ -2889,12 +2855,12 @@ var PlaybackInstance = class {
|
|
|
2889
2855
|
throw new Error("Event type is required");
|
|
2890
2856
|
}
|
|
2891
2857
|
if (listener) {
|
|
2892
|
-
this.
|
|
2893
|
-
const
|
|
2894
|
-
|
|
2895
|
-
event,
|
|
2896
|
-
|
|
2897
|
-
|
|
2858
|
+
const eventListeners = this.listenersMap.get(event);
|
|
2859
|
+
const wrappedListener = eventListeners?.get(listener);
|
|
2860
|
+
if (wrappedListener) {
|
|
2861
|
+
this.eventEmitter.off(event, wrappedListener);
|
|
2862
|
+
eventListeners.delete(listener);
|
|
2863
|
+
}
|
|
2898
2864
|
} else {
|
|
2899
2865
|
this.eventEmitter.removeAllListeners(event);
|
|
2900
2866
|
this.listenersMap.delete(event);
|
|
@@ -2997,11 +2963,8 @@ var PlaybackInstance = class {
|
|
|
2997
2963
|
removeAllListeners() {
|
|
2998
2964
|
console.log(`Removing all event listeners for playback ${this.id}`);
|
|
2999
2965
|
this.listenersMap.forEach((listeners, event) => {
|
|
3000
|
-
listeners.forEach((
|
|
3001
|
-
this.eventEmitter.off(
|
|
3002
|
-
event,
|
|
3003
|
-
listener
|
|
3004
|
-
);
|
|
2966
|
+
listeners.forEach((wrappedListener) => {
|
|
2967
|
+
this.eventEmitter.off(event, wrappedListener);
|
|
3005
2968
|
});
|
|
3006
2969
|
});
|
|
3007
2970
|
this.listenersMap.clear();
|
|
@@ -3540,7 +3503,12 @@ var WebSocketClient = class extends EventEmitter4 {
|
|
|
3540
3503
|
*/
|
|
3541
3504
|
handleMessage(rawMessage) {
|
|
3542
3505
|
try {
|
|
3543
|
-
const
|
|
3506
|
+
const parsed = JSON.parse(rawMessage);
|
|
3507
|
+
if (!parsed || typeof parsed !== "object" || !("type" in parsed) || typeof parsed.type !== "string") {
|
|
3508
|
+
console.warn("Received malformed WebSocket message (missing type)");
|
|
3509
|
+
return;
|
|
3510
|
+
}
|
|
3511
|
+
const event = parsed;
|
|
3544
3512
|
const key = this.getEventKey(event);
|
|
3545
3513
|
const existing = this.eventQueue.get(key);
|
|
3546
3514
|
if (existing) {
|
|
@@ -3975,14 +3943,7 @@ var AriClient = class {
|
|
|
3975
3943
|
/**
|
|
3976
3944
|
* Registers an event listener for WebSocket events.
|
|
3977
3945
|
*
|
|
3978
|
-
* @param {
|
|
3979
|
-
* @param {Function} listener - Callback function for handling the event
|
|
3980
|
-
* @throws {Error} If WebSocket is not connected
|
|
3981
|
-
*/
|
|
3982
|
-
/**
|
|
3983
|
-
* Registers an event listener for WebSocket events.
|
|
3984
|
-
*
|
|
3985
|
-
* @param {T} event - The event type to listen for
|
|
3946
|
+
* @param {K} event - The event type to listen for
|
|
3986
3947
|
* @param {Function} listener - Callback function for handling the event
|
|
3987
3948
|
* @throws {Error} If WebSocket is not connected
|
|
3988
3949
|
*/
|