@ipcom/asterisk-ari 0.0.164 → 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 +10 -8
package/dist/cjs/index.cjs
CHANGED
|
@@ -121,7 +121,7 @@ var require_delay_base = __commonJS({
|
|
|
121
121
|
var jitter_factory_1 = require_jitter_factory();
|
|
122
122
|
var Delay = (
|
|
123
123
|
/** @class */
|
|
124
|
-
function() {
|
|
124
|
+
(function() {
|
|
125
125
|
function Delay2(options) {
|
|
126
126
|
this.options = options;
|
|
127
127
|
this.attempt = 0;
|
|
@@ -162,7 +162,7 @@ var require_delay_base = __commonJS({
|
|
|
162
162
|
configurable: true
|
|
163
163
|
});
|
|
164
164
|
return Delay2;
|
|
165
|
-
}()
|
|
165
|
+
})()
|
|
166
166
|
);
|
|
167
167
|
exports2.Delay = Delay;
|
|
168
168
|
}
|
|
@@ -172,7 +172,7 @@ var require_delay_base = __commonJS({
|
|
|
172
172
|
var require_skip_first_delay = __commonJS({
|
|
173
173
|
"node_modules/exponential-backoff/dist/delay/skip-first/skip-first.delay.js"(exports2) {
|
|
174
174
|
"use strict";
|
|
175
|
-
var __extends = exports2 && exports2.__extends || /* @__PURE__ */ function() {
|
|
175
|
+
var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
|
|
176
176
|
var extendStatics = function(d, b) {
|
|
177
177
|
extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
|
|
178
178
|
d2.__proto__ = b2;
|
|
@@ -188,7 +188,7 @@ var require_skip_first_delay = __commonJS({
|
|
|
188
188
|
}
|
|
189
189
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
190
190
|
};
|
|
191
|
-
}();
|
|
191
|
+
})();
|
|
192
192
|
var __awaiter = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) {
|
|
193
193
|
function adopt(value) {
|
|
194
194
|
return value instanceof P ? value : new P(function(resolve) {
|
|
@@ -289,7 +289,7 @@ var require_skip_first_delay = __commonJS({
|
|
|
289
289
|
var delay_base_1 = require_delay_base();
|
|
290
290
|
var SkipFirstDelay = (
|
|
291
291
|
/** @class */
|
|
292
|
-
function(_super) {
|
|
292
|
+
(function(_super) {
|
|
293
293
|
__extends(SkipFirstDelay2, _super);
|
|
294
294
|
function SkipFirstDelay2() {
|
|
295
295
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
@@ -316,7 +316,7 @@ var require_skip_first_delay = __commonJS({
|
|
|
316
316
|
configurable: true
|
|
317
317
|
});
|
|
318
318
|
return SkipFirstDelay2;
|
|
319
|
-
}(delay_base_1.Delay)
|
|
319
|
+
})(delay_base_1.Delay)
|
|
320
320
|
);
|
|
321
321
|
exports2.SkipFirstDelay = SkipFirstDelay;
|
|
322
322
|
}
|
|
@@ -326,7 +326,7 @@ var require_skip_first_delay = __commonJS({
|
|
|
326
326
|
var require_always_delay = __commonJS({
|
|
327
327
|
"node_modules/exponential-backoff/dist/delay/always/always.delay.js"(exports2) {
|
|
328
328
|
"use strict";
|
|
329
|
-
var __extends = exports2 && exports2.__extends || /* @__PURE__ */ function() {
|
|
329
|
+
var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
|
|
330
330
|
var extendStatics = function(d, b) {
|
|
331
331
|
extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
|
|
332
332
|
d2.__proto__ = b2;
|
|
@@ -342,18 +342,18 @@ var require_always_delay = __commonJS({
|
|
|
342
342
|
}
|
|
343
343
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
344
344
|
};
|
|
345
|
-
}();
|
|
345
|
+
})();
|
|
346
346
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
347
347
|
var delay_base_1 = require_delay_base();
|
|
348
348
|
var AlwaysDelay = (
|
|
349
349
|
/** @class */
|
|
350
|
-
function(_super) {
|
|
350
|
+
(function(_super) {
|
|
351
351
|
__extends(AlwaysDelay2, _super);
|
|
352
352
|
function AlwaysDelay2() {
|
|
353
353
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
354
354
|
}
|
|
355
355
|
return AlwaysDelay2;
|
|
356
|
-
}(delay_base_1.Delay)
|
|
356
|
+
})(delay_base_1.Delay)
|
|
357
357
|
);
|
|
358
358
|
exports2.AlwaysDelay = AlwaysDelay;
|
|
359
359
|
}
|
|
@@ -505,7 +505,7 @@ var require_backoff = __commonJS({
|
|
|
505
505
|
exports2.backOff = backOff2;
|
|
506
506
|
var BackOff = (
|
|
507
507
|
/** @class */
|
|
508
|
-
function() {
|
|
508
|
+
(function() {
|
|
509
509
|
function BackOff2(request, options) {
|
|
510
510
|
this.request = request;
|
|
511
511
|
this.options = options;
|
|
@@ -571,14 +571,14 @@ var require_backoff = __commonJS({
|
|
|
571
571
|
});
|
|
572
572
|
};
|
|
573
573
|
return BackOff2;
|
|
574
|
-
}()
|
|
574
|
+
})()
|
|
575
575
|
);
|
|
576
576
|
}
|
|
577
577
|
});
|
|
578
578
|
|
|
579
579
|
// src/index.ts
|
|
580
|
-
var
|
|
581
|
-
__export(
|
|
580
|
+
var index_exports = {};
|
|
581
|
+
__export(index_exports, {
|
|
582
582
|
Applications: () => Applications,
|
|
583
583
|
AriClient: () => AriClient,
|
|
584
584
|
Asterisk: () => Asterisk,
|
|
@@ -591,7 +591,7 @@ __export(src_exports, {
|
|
|
591
591
|
Playbacks: () => Playbacks,
|
|
592
592
|
Sounds: () => Sounds
|
|
593
593
|
});
|
|
594
|
-
module.exports = __toCommonJS(
|
|
594
|
+
module.exports = __toCommonJS(index_exports);
|
|
595
595
|
|
|
596
596
|
// src/ari-client/baseClient.ts
|
|
597
597
|
var import_axios = __toESM(require("axios"), 1);
|
|
@@ -971,8 +971,8 @@ var BridgeInstance = class {
|
|
|
971
971
|
this.id = bridgeId || `bridge-${Date.now()}`;
|
|
972
972
|
}
|
|
973
973
|
eventEmitter = new import_events.EventEmitter();
|
|
974
|
+
// biome-ignore lint/suspicious/noExplicitAny: Maps original listener → wrapped listener per event
|
|
974
975
|
listenersMap = /* @__PURE__ */ new Map();
|
|
975
|
-
// 🔹 Guarda listeners para remoção posterior
|
|
976
976
|
bridgeData = null;
|
|
977
977
|
id;
|
|
978
978
|
/**
|
|
@@ -980,30 +980,18 @@ var BridgeInstance = class {
|
|
|
980
980
|
*
|
|
981
981
|
* @param event - The type of event to listen for.
|
|
982
982
|
* @param listener - The callback function to be called when the event occurs.
|
|
983
|
-
*/
|
|
984
|
-
/**
|
|
985
|
-
* Registers a listener for specific bridge events.
|
|
986
|
-
*
|
|
987
|
-
* This method allows you to attach an event listener to the bridge instance for a specific event type.
|
|
988
|
-
* When the specified event occurs, the provided listener function will be called with the event data.
|
|
989
|
-
*
|
|
990
|
-
* @template T - The specific type of WebSocketEvent to listen for.
|
|
991
|
-
* It receives the event data as its parameter.
|
|
992
|
-
* @returns {void}
|
|
993
983
|
*
|
|
994
984
|
* @example
|
|
995
985
|
* bridge.on('BridgeCreated', (event) => {
|
|
996
986
|
*
|
|
997
987
|
* });
|
|
998
|
-
* @param event
|
|
999
|
-
* @param listener
|
|
1000
988
|
*/
|
|
1001
989
|
on(event, listener) {
|
|
1002
990
|
if (!event) {
|
|
1003
991
|
throw new Error("Event type is required");
|
|
1004
992
|
}
|
|
1005
|
-
const
|
|
1006
|
-
if (
|
|
993
|
+
const eventListeners = this.listenersMap.get(event) ?? /* @__PURE__ */ new Map();
|
|
994
|
+
if (eventListeners.has(listener)) {
|
|
1007
995
|
console.warn(
|
|
1008
996
|
`Listener j\xE1 registrado para evento ${event}, reutilizando.`
|
|
1009
997
|
);
|
|
@@ -1015,10 +1003,8 @@ var BridgeInstance = class {
|
|
|
1015
1003
|
}
|
|
1016
1004
|
};
|
|
1017
1005
|
this.eventEmitter.on(event, wrappedListener);
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
}
|
|
1021
|
-
this.listenersMap.get(event).push(wrappedListener);
|
|
1006
|
+
eventListeners.set(listener, wrappedListener);
|
|
1007
|
+
this.listenersMap.set(event, eventListeners);
|
|
1022
1008
|
}
|
|
1023
1009
|
/**
|
|
1024
1010
|
* Registers a one-time listener for specific bridge events.
|
|
@@ -1030,25 +1016,22 @@ var BridgeInstance = class {
|
|
|
1030
1016
|
if (!event) {
|
|
1031
1017
|
throw new Error("Event type is required");
|
|
1032
1018
|
}
|
|
1033
|
-
const
|
|
1034
|
-
|
|
1035
|
-
if (existingListeners.includes(listener)) {
|
|
1019
|
+
const eventListeners = this.listenersMap.get(event) ?? /* @__PURE__ */ new Map();
|
|
1020
|
+
if (eventListeners.has(listener)) {
|
|
1036
1021
|
console.warn(
|
|
1037
|
-
`One-time listener j\xE1 registrado para evento ${
|
|
1022
|
+
`One-time listener j\xE1 registrado para evento ${event}, reutilizando.`
|
|
1038
1023
|
);
|
|
1039
1024
|
return;
|
|
1040
1025
|
}
|
|
1041
1026
|
const wrappedListener = (data) => {
|
|
1042
1027
|
if ("bridge" in data && data.bridge?.id === this.id) {
|
|
1043
1028
|
listener(data);
|
|
1044
|
-
this.off(event,
|
|
1029
|
+
this.off(event, listener);
|
|
1045
1030
|
}
|
|
1046
1031
|
};
|
|
1047
1032
|
this.eventEmitter.once(event, wrappedListener);
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
}
|
|
1051
|
-
this.listenersMap.get(eventKey).push(wrappedListener);
|
|
1033
|
+
eventListeners.set(listener, wrappedListener);
|
|
1034
|
+
this.listenersMap.set(event, eventListeners);
|
|
1052
1035
|
}
|
|
1053
1036
|
/**
|
|
1054
1037
|
* Removes event listener(s) from the bridge.
|
|
@@ -1061,12 +1044,12 @@ var BridgeInstance = class {
|
|
|
1061
1044
|
throw new Error("Event type is required");
|
|
1062
1045
|
}
|
|
1063
1046
|
if (listener) {
|
|
1064
|
-
this.
|
|
1065
|
-
const
|
|
1066
|
-
|
|
1067
|
-
event,
|
|
1068
|
-
|
|
1069
|
-
|
|
1047
|
+
const eventListeners = this.listenersMap.get(event);
|
|
1048
|
+
const wrappedListener = eventListeners?.get(listener);
|
|
1049
|
+
if (wrappedListener) {
|
|
1050
|
+
this.eventEmitter.off(event, wrappedListener);
|
|
1051
|
+
eventListeners.delete(listener);
|
|
1052
|
+
}
|
|
1070
1053
|
} else {
|
|
1071
1054
|
this.eventEmitter.removeAllListeners(event);
|
|
1072
1055
|
this.listenersMap.delete(event);
|
|
@@ -1101,11 +1084,8 @@ var BridgeInstance = class {
|
|
|
1101
1084
|
removeAllListeners() {
|
|
1102
1085
|
console.log(`Removing all event listeners for bridge ${this.id}`);
|
|
1103
1086
|
this.listenersMap.forEach((listeners, event) => {
|
|
1104
|
-
listeners.forEach((
|
|
1105
|
-
this.eventEmitter.off(
|
|
1106
|
-
event,
|
|
1107
|
-
listener
|
|
1108
|
-
);
|
|
1087
|
+
listeners.forEach((wrappedListener) => {
|
|
1088
|
+
this.eventEmitter.off(event, wrappedListener);
|
|
1109
1089
|
});
|
|
1110
1090
|
});
|
|
1111
1091
|
this.listenersMap.clear();
|
|
@@ -1746,8 +1726,8 @@ var ChannelInstance = class {
|
|
|
1746
1726
|
}
|
|
1747
1727
|
eventEmitter = new import_events2.EventEmitter();
|
|
1748
1728
|
channelData = null;
|
|
1729
|
+
// biome-ignore lint/suspicious/noExplicitAny: Maps original listener → wrapped listener per event
|
|
1749
1730
|
listenersMap = /* @__PURE__ */ new Map();
|
|
1750
|
-
// 🔹 Guarda listeners para remoção posterior
|
|
1751
1731
|
id;
|
|
1752
1732
|
/**
|
|
1753
1733
|
* Registers an event listener for specific channel events
|
|
@@ -1756,8 +1736,8 @@ var ChannelInstance = class {
|
|
|
1756
1736
|
if (!event) {
|
|
1757
1737
|
throw new Error("Event type is required");
|
|
1758
1738
|
}
|
|
1759
|
-
const
|
|
1760
|
-
if (
|
|
1739
|
+
const eventListeners = this.listenersMap.get(event) ?? /* @__PURE__ */ new Map();
|
|
1740
|
+
if (eventListeners.has(listener)) {
|
|
1761
1741
|
console.warn(
|
|
1762
1742
|
`Listener j\xE1 registrado para evento ${event}, reutilizando.`
|
|
1763
1743
|
);
|
|
@@ -1769,10 +1749,8 @@ var ChannelInstance = class {
|
|
|
1769
1749
|
}
|
|
1770
1750
|
};
|
|
1771
1751
|
this.eventEmitter.on(event, wrappedListener);
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
}
|
|
1775
|
-
this.listenersMap.get(event).push(wrappedListener);
|
|
1752
|
+
eventListeners.set(listener, wrappedListener);
|
|
1753
|
+
this.listenersMap.set(event, eventListeners);
|
|
1776
1754
|
}
|
|
1777
1755
|
/**
|
|
1778
1756
|
* Registers a one-time event listener
|
|
@@ -1781,25 +1759,22 @@ var ChannelInstance = class {
|
|
|
1781
1759
|
if (!event) {
|
|
1782
1760
|
throw new Error("Event type is required");
|
|
1783
1761
|
}
|
|
1784
|
-
const
|
|
1785
|
-
|
|
1786
|
-
if (existingListeners.includes(listener)) {
|
|
1762
|
+
const eventListeners = this.listenersMap.get(event) ?? /* @__PURE__ */ new Map();
|
|
1763
|
+
if (eventListeners.has(listener)) {
|
|
1787
1764
|
console.warn(
|
|
1788
|
-
`One-time listener j\xE1 registrado para evento ${
|
|
1765
|
+
`One-time listener j\xE1 registrado para evento ${event}, reutilizando.`
|
|
1789
1766
|
);
|
|
1790
1767
|
return;
|
|
1791
1768
|
}
|
|
1792
1769
|
const wrappedListener = (data) => {
|
|
1793
1770
|
if ("channel" in data && data.channel?.id === this.id) {
|
|
1794
1771
|
listener(data);
|
|
1795
|
-
this.off(event,
|
|
1772
|
+
this.off(event, listener);
|
|
1796
1773
|
}
|
|
1797
1774
|
};
|
|
1798
1775
|
this.eventEmitter.once(event, wrappedListener);
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
}
|
|
1802
|
-
this.listenersMap.get(eventKey).push(wrappedListener);
|
|
1776
|
+
eventListeners.set(listener, wrappedListener);
|
|
1777
|
+
this.listenersMap.set(event, eventListeners);
|
|
1803
1778
|
}
|
|
1804
1779
|
/**
|
|
1805
1780
|
* Removes event listener(s) for a specific WebSocket event type.
|
|
@@ -1815,12 +1790,12 @@ var ChannelInstance = class {
|
|
|
1815
1790
|
throw new Error("Event type is required");
|
|
1816
1791
|
}
|
|
1817
1792
|
if (listener) {
|
|
1818
|
-
this.
|
|
1819
|
-
const
|
|
1820
|
-
|
|
1821
|
-
event,
|
|
1822
|
-
|
|
1823
|
-
|
|
1793
|
+
const eventListeners = this.listenersMap.get(event);
|
|
1794
|
+
const wrappedListener = eventListeners?.get(listener);
|
|
1795
|
+
if (wrappedListener) {
|
|
1796
|
+
this.eventEmitter.off(event, wrappedListener);
|
|
1797
|
+
eventListeners.delete(listener);
|
|
1798
|
+
}
|
|
1824
1799
|
} else {
|
|
1825
1800
|
this.eventEmitter.removeAllListeners(event);
|
|
1826
1801
|
this.listenersMap.delete(event);
|
|
@@ -1856,12 +1831,8 @@ var ChannelInstance = class {
|
|
|
1856
1831
|
removeAllListeners() {
|
|
1857
1832
|
console.log(`Removing all event listeners for channel ${this.id}`);
|
|
1858
1833
|
this.listenersMap.forEach((listeners, event) => {
|
|
1859
|
-
listeners.forEach((
|
|
1860
|
-
this.eventEmitter.off(
|
|
1861
|
-
event,
|
|
1862
|
-
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
|
|
1863
|
-
listener
|
|
1864
|
-
);
|
|
1834
|
+
listeners.forEach((wrappedListener) => {
|
|
1835
|
+
this.eventEmitter.off(event, wrappedListener);
|
|
1865
1836
|
});
|
|
1866
1837
|
});
|
|
1867
1838
|
this.listenersMap.clear();
|
|
@@ -2837,8 +2808,8 @@ var PlaybackInstance = class {
|
|
|
2837
2808
|
this.id = playbackId;
|
|
2838
2809
|
}
|
|
2839
2810
|
eventEmitter = new import_events3.EventEmitter();
|
|
2811
|
+
// biome-ignore lint/suspicious/noExplicitAny: Maps original listener → wrapped listener per event
|
|
2840
2812
|
listenersMap = /* @__PURE__ */ new Map();
|
|
2841
|
-
// 🔹 Guarda listeners para remoção posterior
|
|
2842
2813
|
playbackData = null;
|
|
2843
2814
|
id;
|
|
2844
2815
|
/**
|
|
@@ -2851,8 +2822,8 @@ var PlaybackInstance = class {
|
|
|
2851
2822
|
if (!event) {
|
|
2852
2823
|
throw new Error("Event type is required");
|
|
2853
2824
|
}
|
|
2854
|
-
const
|
|
2855
|
-
if (
|
|
2825
|
+
const eventListeners = this.listenersMap.get(event) ?? /* @__PURE__ */ new Map();
|
|
2826
|
+
if (eventListeners.has(listener)) {
|
|
2856
2827
|
console.warn(
|
|
2857
2828
|
`Listener j\xE1 registrado para evento ${event}, reutilizando.`
|
|
2858
2829
|
);
|
|
@@ -2864,10 +2835,8 @@ var PlaybackInstance = class {
|
|
|
2864
2835
|
}
|
|
2865
2836
|
};
|
|
2866
2837
|
this.eventEmitter.on(event, wrappedListener);
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
}
|
|
2870
|
-
this.listenersMap.get(event).push(wrappedListener);
|
|
2838
|
+
eventListeners.set(listener, wrappedListener);
|
|
2839
|
+
this.listenersMap.set(event, eventListeners);
|
|
2871
2840
|
}
|
|
2872
2841
|
/**
|
|
2873
2842
|
* Registers a one-time event listener for a specific WebSocket event type.
|
|
@@ -2879,25 +2848,22 @@ var PlaybackInstance = class {
|
|
|
2879
2848
|
if (!event) {
|
|
2880
2849
|
throw new Error("Event type is required");
|
|
2881
2850
|
}
|
|
2882
|
-
const
|
|
2883
|
-
|
|
2884
|
-
if (existingListeners.includes(listener)) {
|
|
2851
|
+
const eventListeners = this.listenersMap.get(event) ?? /* @__PURE__ */ new Map();
|
|
2852
|
+
if (eventListeners.has(listener)) {
|
|
2885
2853
|
console.warn(
|
|
2886
|
-
`One-time listener j\xE1 registrado para evento ${
|
|
2854
|
+
`One-time listener j\xE1 registrado para evento ${event}, reutilizando.`
|
|
2887
2855
|
);
|
|
2888
2856
|
return;
|
|
2889
2857
|
}
|
|
2890
2858
|
const wrappedListener = (data) => {
|
|
2891
2859
|
if ("playback" in data && data.playback?.id === this.id) {
|
|
2892
2860
|
listener(data);
|
|
2893
|
-
this.off(event,
|
|
2861
|
+
this.off(event, listener);
|
|
2894
2862
|
}
|
|
2895
2863
|
};
|
|
2896
2864
|
this.eventEmitter.once(event, wrappedListener);
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
}
|
|
2900
|
-
this.listenersMap.get(eventKey).push(wrappedListener);
|
|
2865
|
+
eventListeners.set(listener, wrappedListener);
|
|
2866
|
+
this.listenersMap.set(event, eventListeners);
|
|
2901
2867
|
}
|
|
2902
2868
|
/**
|
|
2903
2869
|
* Removes event listener(s) for a specific WebSocket event type.
|
|
@@ -2910,12 +2876,12 @@ var PlaybackInstance = class {
|
|
|
2910
2876
|
throw new Error("Event type is required");
|
|
2911
2877
|
}
|
|
2912
2878
|
if (listener) {
|
|
2913
|
-
this.
|
|
2914
|
-
const
|
|
2915
|
-
|
|
2916
|
-
event,
|
|
2917
|
-
|
|
2918
|
-
|
|
2879
|
+
const eventListeners = this.listenersMap.get(event);
|
|
2880
|
+
const wrappedListener = eventListeners?.get(listener);
|
|
2881
|
+
if (wrappedListener) {
|
|
2882
|
+
this.eventEmitter.off(event, wrappedListener);
|
|
2883
|
+
eventListeners.delete(listener);
|
|
2884
|
+
}
|
|
2919
2885
|
} else {
|
|
2920
2886
|
this.eventEmitter.removeAllListeners(event);
|
|
2921
2887
|
this.listenersMap.delete(event);
|
|
@@ -3018,11 +2984,8 @@ var PlaybackInstance = class {
|
|
|
3018
2984
|
removeAllListeners() {
|
|
3019
2985
|
console.log(`Removing all event listeners for playback ${this.id}`);
|
|
3020
2986
|
this.listenersMap.forEach((listeners, event) => {
|
|
3021
|
-
listeners.forEach((
|
|
3022
|
-
this.eventEmitter.off(
|
|
3023
|
-
event,
|
|
3024
|
-
listener
|
|
3025
|
-
);
|
|
2987
|
+
listeners.forEach((wrappedListener) => {
|
|
2988
|
+
this.eventEmitter.off(event, wrappedListener);
|
|
3026
2989
|
});
|
|
3027
2990
|
});
|
|
3028
2991
|
this.listenersMap.clear();
|
|
@@ -3561,7 +3524,12 @@ var WebSocketClient = class extends import_events4.EventEmitter {
|
|
|
3561
3524
|
*/
|
|
3562
3525
|
handleMessage(rawMessage) {
|
|
3563
3526
|
try {
|
|
3564
|
-
const
|
|
3527
|
+
const parsed = JSON.parse(rawMessage);
|
|
3528
|
+
if (!parsed || typeof parsed !== "object" || !("type" in parsed) || typeof parsed.type !== "string") {
|
|
3529
|
+
console.warn("Received malformed WebSocket message (missing type)");
|
|
3530
|
+
return;
|
|
3531
|
+
}
|
|
3532
|
+
const event = parsed;
|
|
3565
3533
|
const key = this.getEventKey(event);
|
|
3566
3534
|
const existing = this.eventQueue.get(key);
|
|
3567
3535
|
if (existing) {
|
|
@@ -3996,14 +3964,7 @@ var AriClient = class {
|
|
|
3996
3964
|
/**
|
|
3997
3965
|
* Registers an event listener for WebSocket events.
|
|
3998
3966
|
*
|
|
3999
|
-
* @param {
|
|
4000
|
-
* @param {Function} listener - Callback function for handling the event
|
|
4001
|
-
* @throws {Error} If WebSocket is not connected
|
|
4002
|
-
*/
|
|
4003
|
-
/**
|
|
4004
|
-
* Registers an event listener for WebSocket events.
|
|
4005
|
-
*
|
|
4006
|
-
* @param {T} event - The event type to listen for
|
|
3967
|
+
* @param {K} event - The event type to listen for
|
|
4007
3968
|
* @param {Function} listener - Callback function for handling the event
|
|
4008
3969
|
* @throws {Error} If WebSocket is not connected
|
|
4009
3970
|
*/
|