@telnyx/ai-agent-lib 0.2.3 → 0.2.4
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/README.md +62 -5
- package/dist/audio-stream-monitor.d.ts +7 -1
- package/dist/client.d.ts +5 -1
- package/dist/index.js +933 -929
- package/dist/react/client-context.d.ts +1 -1
- package/dist/types.d.ts +31 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
function
|
|
1
|
+
import ut, { useReducer as En, useEffect as pe, useDebugValue as Tn, useCallback as An, useContext as Vt, createContext as Gt, useState as Rn } from "react";
|
|
2
|
+
function Wt(t, e) {
|
|
3
3
|
var n = {};
|
|
4
4
|
for (var i in t) Object.prototype.hasOwnProperty.call(t, i) && e.indexOf(i) < 0 && (n[i] = t[i]);
|
|
5
5
|
if (t != null && typeof Object.getOwnPropertySymbols == "function") {
|
|
@@ -8,20 +8,20 @@ function Ht(t, e) {
|
|
|
8
8
|
}
|
|
9
9
|
return n;
|
|
10
10
|
}
|
|
11
|
-
function
|
|
12
|
-
return new (n || (n = Promise))((function(s,
|
|
11
|
+
function O(t, e, n, i) {
|
|
12
|
+
return new (n || (n = Promise))((function(s, a) {
|
|
13
13
|
function o(h) {
|
|
14
14
|
try {
|
|
15
15
|
d(i.next(h));
|
|
16
16
|
} catch (f) {
|
|
17
|
-
|
|
17
|
+
a(f);
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
function l(h) {
|
|
21
21
|
try {
|
|
22
22
|
d(i.throw(h));
|
|
23
23
|
} catch (f) {
|
|
24
|
-
|
|
24
|
+
a(f);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
function d(h) {
|
|
@@ -33,36 +33,36 @@ function L(t, e, n, i) {
|
|
|
33
33
|
d((i = i.apply(t, [])).next());
|
|
34
34
|
}));
|
|
35
35
|
}
|
|
36
|
-
var
|
|
36
|
+
var gt = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto < "u" && typeof msCrypto.getRandomValues == "function" && msCrypto.getRandomValues.bind(msCrypto), xn = new Uint8Array(16);
|
|
37
37
|
function Ln() {
|
|
38
|
-
if (!
|
|
39
|
-
return
|
|
38
|
+
if (!gt) throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
39
|
+
return gt(xn);
|
|
40
40
|
}
|
|
41
|
-
for (var
|
|
41
|
+
for (var Ht = [], xe = 0; xe < 256; ++xe) Ht[xe] = (xe + 256).toString(16).substr(1);
|
|
42
42
|
function me(t, e, n) {
|
|
43
43
|
var i = e && n || 0;
|
|
44
44
|
typeof t == "string" && (e = t === "binary" ? new Array(16) : null, t = null);
|
|
45
45
|
var s = (t = t || {}).random || (t.rng || Ln)();
|
|
46
|
-
if (s[6] = 15 & s[6] | 64, s[8] = 63 & s[8] | 128, e) for (var
|
|
46
|
+
if (s[6] = 15 & s[6] | 64, s[8] = 63 & s[8] | 128, e) for (var a = 0; a < 16; ++a) e[i + a] = s[a];
|
|
47
47
|
return e || (function(o, l) {
|
|
48
|
-
var d = 0, h =
|
|
48
|
+
var d = 0, h = Ht;
|
|
49
49
|
return [h[o[d++]], h[o[d++]], h[o[d++]], h[o[d++]], "-", h[o[d++]], h[o[d++]], "-", h[o[d++]], h[o[d++]], "-", h[o[d++]], h[o[d++]], "-", h[o[d++]], h[o[d++]], h[o[d++]], h[o[d++]], h[o[d++]], h[o[d++]]].join("");
|
|
50
50
|
})(s);
|
|
51
51
|
}
|
|
52
|
-
const
|
|
53
|
-
var
|
|
52
|
+
const vt = "wss://rtc.telnyx.com", qt = { urls: "stun:stun.l.google.com:19302" }, On = [{ urls: "stun:stun.telnyx.com:3478" }, qt, { urls: "turn:turn.telnyx.com:3478?transport=tcp", username: "testuser", credential: "testpassword" }], Mn = [{ urls: "stun:stundev.telnyx.com:3478" }, qt, { urls: "turn:turndev.telnyx.com:3478?transport=tcp", username: "testuser", credential: "testpassword" }];
|
|
53
|
+
var L;
|
|
54
54
|
(function(t) {
|
|
55
55
|
t.SocketOpen = "telnyx.socket.open", t.SocketClose = "telnyx.socket.close", t.SocketError = "telnyx.socket.error", t.SocketMessage = "telnyx.socket.message", t.SpeedTest = "telnyx.internal.speedtest", t.Ready = "telnyx.ready", t.Error = "telnyx.error", t.Notification = "telnyx.notification", t.StatsFrame = "telnyx.stats.frame", t.StatsReport = "telnyx.stats.report", t.Messages = "telnyx.messages", t.Calls = "telnyx.calls", t.MediaError = "telnyx.rtc.mediaError", t.PeerConnectionFailureError = "telnyx.rtc.peerConnectionFailureError";
|
|
56
|
-
})(
|
|
57
|
-
var
|
|
58
|
-
function
|
|
56
|
+
})(L || (L = {}));
|
|
57
|
+
var Pn = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
|
|
58
|
+
function Jt(t, e) {
|
|
59
59
|
return t(e = { exports: {} }, e.exports), e.exports;
|
|
60
60
|
}
|
|
61
|
-
var
|
|
61
|
+
var Dn = Jt((function(t) {
|
|
62
62
|
var e, n;
|
|
63
|
-
e =
|
|
63
|
+
e = Pn, n = function() {
|
|
64
64
|
var i = function() {
|
|
65
|
-
}, s = "undefined",
|
|
65
|
+
}, s = "undefined", a = typeof window !== s && typeof window.navigator !== s && /Trident\/|MSIE /.test(window.navigator.userAgent), o = ["trace", "debug", "info", "warn", "error"];
|
|
66
66
|
function l(p, S) {
|
|
67
67
|
var A = p[S];
|
|
68
68
|
if (typeof A.bind == "function") return A.bind(p);
|
|
@@ -91,7 +91,7 @@ var Nn = Yt((function(t) {
|
|
|
91
91
|
}
|
|
92
92
|
function v(p, S, A) {
|
|
93
93
|
return (function(E) {
|
|
94
|
-
return E === "debug" && (E = "log"), typeof console !== s && (E === "trace" &&
|
|
94
|
+
return E === "debug" && (E = "log"), typeof console !== s && (E === "trace" && a ? d : console[E] !== void 0 ? l(console, E) : console.log !== void 0 ? l(console, "log") : i);
|
|
95
95
|
})(p) || f.apply(this, arguments);
|
|
96
96
|
}
|
|
97
97
|
function _(p, S, A) {
|
|
@@ -106,8 +106,8 @@ var Nn = Yt((function(t) {
|
|
|
106
106
|
} catch {
|
|
107
107
|
}
|
|
108
108
|
if (typeof x === s) try {
|
|
109
|
-
var
|
|
110
|
-
c !== -1 && (x = /^([^;]+)/.exec(
|
|
109
|
+
var r = window.document.cookie, c = r.indexOf(encodeURIComponent(D) + "=");
|
|
110
|
+
c !== -1 && (x = /^([^;]+)/.exec(r.slice(c))[1]);
|
|
111
111
|
} catch {
|
|
112
112
|
}
|
|
113
113
|
return P.levels[x] === void 0 && (x = void 0), x;
|
|
@@ -115,9 +115,9 @@ var Nn = Yt((function(t) {
|
|
|
115
115
|
}
|
|
116
116
|
typeof p == "string" ? D += ":" + p : typeof p == "symbol" && (D = void 0), P.name = p, P.levels = { TRACE: 0, DEBUG: 1, INFO: 2, WARN: 3, ERROR: 4, SILENT: 5 }, P.methodFactory = A || v, P.getLevel = function() {
|
|
117
117
|
return E;
|
|
118
|
-
}, P.setLevel = function(x,
|
|
118
|
+
}, P.setLevel = function(x, r) {
|
|
119
119
|
if (typeof x == "string" && P.levels[x.toUpperCase()] !== void 0 && (x = P.levels[x.toUpperCase()]), !(typeof x == "number" && x >= 0 && x <= P.levels.SILENT)) throw "log.setLevel() called with invalid level: " + x;
|
|
120
|
-
if (E = x,
|
|
120
|
+
if (E = x, r !== !1 && (function(c) {
|
|
121
121
|
var u = (o[c] || "silent").toUpperCase();
|
|
122
122
|
if (typeof window !== s && D) {
|
|
123
123
|
try {
|
|
@@ -167,131 +167,131 @@ var Nn = Yt((function(t) {
|
|
|
167
167
|
}, w.default = w, w;
|
|
168
168
|
}, t.exports ? t.exports = n() : e.log = n();
|
|
169
169
|
}));
|
|
170
|
-
const y =
|
|
170
|
+
const y = Dn.getLogger("telnyx"), Nn = y.methodFactory;
|
|
171
171
|
y.methodFactory = (t, e, n) => {
|
|
172
|
-
const i =
|
|
172
|
+
const i = Nn(t, e, n);
|
|
173
173
|
return function() {
|
|
174
174
|
const s = [(/* @__PURE__ */ new Date()).toISOString().replace("T", " ").replace("Z", ""), "-"];
|
|
175
|
-
for (let
|
|
175
|
+
for (let a = 0; a < arguments.length; a++) s.push(arguments[a]);
|
|
176
176
|
i.apply(void 0, s);
|
|
177
177
|
};
|
|
178
178
|
}, y.setLevel("info");
|
|
179
|
-
const
|
|
180
|
-
const [e, n, i, s,
|
|
179
|
+
const Le = (t) => {
|
|
180
|
+
const [e, n, i, s, a, o] = t;
|
|
181
181
|
let l = {};
|
|
182
182
|
try {
|
|
183
|
-
l = JSON.parse(
|
|
183
|
+
l = JSON.parse(a.replace(/ID"/g, 'Id"'));
|
|
184
184
|
} catch {
|
|
185
|
-
y.warn("Verto LA invalid media JSON string:",
|
|
185
|
+
y.warn("Verto LA invalid media JSON string:", a);
|
|
186
186
|
}
|
|
187
187
|
return { participantId: Number(e), participantNumber: n, participantName: i, codec: s, media: l, participantData: o };
|
|
188
|
-
},
|
|
188
|
+
}, Yt = (t) => {
|
|
189
189
|
if (typeof t != "string") return t;
|
|
190
190
|
try {
|
|
191
191
|
return JSON.parse(t);
|
|
192
192
|
} catch {
|
|
193
193
|
return t;
|
|
194
194
|
}
|
|
195
|
-
}, ye = (t) => t instanceof Function || typeof t == "function", De = (t) => typeof document == "object" && "getElementById" in document ? typeof t == "string" ? document.getElementById(t) || null : typeof t == "function" ? t() : t instanceof HTMLMediaElement ? t : null : null, Un = /^(ws|wss):\/\//,
|
|
195
|
+
}, ye = (t) => t instanceof Function || typeof t == "function", De = (t) => typeof document == "object" && "getElementById" in document ? typeof t == "string" ? document.getElementById(t) || null : typeof t == "function" ? t() : t instanceof HTMLMediaElement ? t : null : null, Un = /^(ws|wss):\/\//, zt = (t, e = null) => {
|
|
196
196
|
const { result: n = {}, error: i } = t;
|
|
197
197
|
if (i) return { error: i };
|
|
198
198
|
const { result: s = null } = n;
|
|
199
199
|
if (s === null) return e !== null && (n.node_id = e), { result: n };
|
|
200
|
-
const { code:
|
|
201
|
-
return
|
|
202
|
-
},
|
|
203
|
-
var e, n, i, s,
|
|
200
|
+
const { code: a = null, node_id: o = null, result: l = null } = s;
|
|
201
|
+
return a && a !== "200" ? { error: s } : l ? zt(l, o) : { result: s };
|
|
202
|
+
}, Kt = (t, e) => Math.floor(Math.random() * (e - t + 1) + t), Ne = ({ login: t, passwd: e, password: n, login_token: i }) => !!(t && (e || n) || i), Ie = ({ anonymous_login: t }) => !!t && !!t.target_id && !!t.target_type, ht = (t) => {
|
|
203
|
+
var e, n, i, s, a, o;
|
|
204
204
|
let l = "", d = "";
|
|
205
|
-
return !((n = (e = t?.result) === null || e === void 0 ? void 0 : e.params) === null || n === void 0) && n.state && (l = (s = (i = t?.result) === null || i === void 0 ? void 0 : i.params) === null || s === void 0 ? void 0 : s.state), !((
|
|
205
|
+
return !((n = (e = t?.result) === null || e === void 0 ? void 0 : e.params) === null || n === void 0) && n.state && (l = (s = (i = t?.result) === null || i === void 0 ? void 0 : i.params) === null || s === void 0 ? void 0 : s.state), !((a = t?.params) === null || a === void 0) && a.state && (d = (o = t?.params) === null || o === void 0 ? void 0 : o.state), l || d;
|
|
206
206
|
};
|
|
207
|
-
function
|
|
207
|
+
function mt({ debounceTime: t }) {
|
|
208
208
|
let e, n;
|
|
209
209
|
return { promise: new Promise(((i, s) => {
|
|
210
|
-
e = t ?
|
|
210
|
+
e = t ? jn(i, t) : i, n = s;
|
|
211
211
|
})), resolve: e, reject: n };
|
|
212
212
|
}
|
|
213
|
-
const
|
|
213
|
+
const jn = (t, e) => {
|
|
214
214
|
let n;
|
|
215
215
|
return (...i) => {
|
|
216
216
|
clearTimeout(n), n = window.setTimeout((() => {
|
|
217
217
|
t(...i);
|
|
218
218
|
}), e);
|
|
219
219
|
};
|
|
220
|
-
},
|
|
220
|
+
}, pt = "telnyx-voice-sdk-id";
|
|
221
221
|
function fe() {
|
|
222
|
-
return sessionStorage.getItem(
|
|
222
|
+
return sessionStorage.getItem(pt);
|
|
223
223
|
}
|
|
224
|
-
var K, le,
|
|
224
|
+
var K, le, $;
|
|
225
225
|
typeof window < "u" && window.addEventListener("beforeunload", (() => {
|
|
226
|
-
sessionStorage.removeItem(
|
|
226
|
+
sessionStorage.removeItem(pt);
|
|
227
227
|
})), (function(t) {
|
|
228
228
|
t.Offer = "offer", t.Answer = "answer";
|
|
229
229
|
})(K || (K = {})), (function(t) {
|
|
230
230
|
t.Inbound = "inbound", t.Outbound = "outbound";
|
|
231
231
|
})(le || (le = {})), (function(t) {
|
|
232
232
|
t.Invite = "telnyx_rtc.invite", t.Attach = "telnyx_rtc.attach", t.Answer = "telnyx_rtc.answer", t.Info = "telnyx_rtc.info", t.Candidate = "telnyx_rtc.candidate", t.EndOfCandidates = "telnyx_rtc.endOfCandidates", t.Display = "telnyx_rtc.display", t.Media = "telnyx_rtc.media", t.Event = "telnyx_rtc.event", t.Bye = "telnyx_rtc.bye", t.Punt = "telnyx_rtc.punt", t.Broadcast = "telnyx_rtc.broadcast", t.Subscribe = "telnyx_rtc.subscribe", t.Unsubscribe = "telnyx_rtc.unsubscribe", t.ClientReady = "telnyx_rtc.clientReady", t.Modify = "telnyx_rtc.modify", t.Ringing = "telnyx_rtc.ringing", t.GatewayState = "telnyx_rtc.gatewayState", t.Ping = "telnyx_rtc.ping", t.Pong = "telnyx_rtc.pong";
|
|
233
|
-
})(
|
|
234
|
-
const oe = { generic: "event", [
|
|
235
|
-
var N,
|
|
233
|
+
})($ || ($ = {}));
|
|
234
|
+
const oe = { generic: "event", [$.Display]: "participantData", [$.Attach]: "participantData", conferenceUpdate: "conferenceUpdate", callUpdate: "callUpdate", vertoClientReady: "vertoClientReady", userMediaError: "userMediaError", peerConnectionFailureError: "peerConnectionFailureError" }, Fn = { destinationNumber: "", remoteCallerName: "Outbound Call", remoteCallerNumber: "", callerName: "", callerNumber: "", audio: !0, useStereo: !1, debug: !1, debugOutput: "socket", attach: !1, screenShare: !1, userVariables: {}, mediaSettings: { useSdpASBandwidthKbps: !1, sdpASBandwidthKbps: 0 }, mutedMicOnStart: !1 };
|
|
235
|
+
var N, et, se, ae, te;
|
|
236
236
|
(function(t) {
|
|
237
237
|
t[t.New = 0] = "New", t[t.Requesting = 1] = "Requesting", t[t.Trying = 2] = "Trying", t[t.Recovering = 3] = "Recovering", t[t.Ringing = 4] = "Ringing", t[t.Answering = 5] = "Answering", t[t.Early = 6] = "Early", t[t.Active = 7] = "Active", t[t.Held = 8] = "Held", t[t.Hangup = 9] = "Hangup", t[t.Destroy = 10] = "Destroy", t[t.Purge = 11] = "Purge";
|
|
238
238
|
})(N || (N = {})), (function(t) {
|
|
239
239
|
t.Participant = "participant", t.Moderator = "moderator";
|
|
240
|
-
})(
|
|
240
|
+
})(et || (et = {})), (function(t) {
|
|
241
241
|
t.Join = "join", t.Leave = "leave", t.Bootstrap = "bootstrap", t.Add = "add", t.Modify = "modify", t.Delete = "delete", t.Clear = "clear", t.ChatMessage = "chatMessage", t.LayerInfo = "layerInfo", t.LogoInfo = "logoInfo", t.LayoutInfo = "layoutInfo", t.LayoutList = "layoutList", t.ModCmdResponse = "modCommandResponse";
|
|
242
242
|
})(se || (se = {})), (function(t) {
|
|
243
243
|
t.Video = "videoinput", t.AudioIn = "audioinput", t.AudioOut = "audiooutput";
|
|
244
244
|
})(ae || (ae = {})), (function(t) {
|
|
245
245
|
t.REGED = "REGED", t.UNREGED = "UNREGED", t.NOREG = "NOREG", t.FAILED = "FAILED", t.FAIL_WAIT = "FAIL_WAIT", t.REGISTER = "REGISTER", t.TRYING = "TRYING", t.EXPIRED = "EXPIRED", t.UNREGISTER = "UNREGISTER";
|
|
246
246
|
})(te || (te = {}));
|
|
247
|
-
const be = "GLOBAL", ie = {}, Ae = (t, e) => `${t}|${e}`,
|
|
247
|
+
const be = "GLOBAL", ie = {}, Ae = (t, e) => `${t}|${e}`, Qt = (t, e = be) => Ae(t, e) in ie, de = (t, e, n = be) => {
|
|
248
248
|
const i = Ae(t, n);
|
|
249
249
|
i in ie || (ie[i] = []), ie[i].push(e);
|
|
250
|
-
},
|
|
250
|
+
}, Xt = (t, e, n = be) => {
|
|
251
251
|
const i = function(s) {
|
|
252
252
|
ue(t, i, n), e(s);
|
|
253
253
|
};
|
|
254
254
|
return i.prototype.targetRef = e, de(t, i, n);
|
|
255
255
|
}, ue = (t, e, n = be) => {
|
|
256
|
-
if (!
|
|
256
|
+
if (!Qt(t, n)) return !1;
|
|
257
257
|
const i = Ae(t, n);
|
|
258
258
|
if (ye(e))
|
|
259
259
|
for (let s = ie[i].length - 1; s >= 0; s--) {
|
|
260
|
-
const
|
|
261
|
-
(e ===
|
|
260
|
+
const a = ie[i][s];
|
|
261
|
+
(e === a || a.prototype && e === a.prototype.targetRef) && ie[i].splice(s, 1);
|
|
262
262
|
}
|
|
263
263
|
else ie[i] = [];
|
|
264
264
|
return ie[i].length === 0 && delete ie[i], !0;
|
|
265
|
-
},
|
|
265
|
+
}, F = (t, e, n = be, i = !0) => {
|
|
266
266
|
const s = i && n !== be;
|
|
267
|
-
if (!
|
|
268
|
-
const
|
|
269
|
-
if (!o) return s &&
|
|
270
|
-
for (let l = o - 1; l >= 0; l--) ie[
|
|
271
|
-
return s &&
|
|
267
|
+
if (!Qt(t, n)) return s && F(t, e), !1;
|
|
268
|
+
const a = Ae(t, n), o = ie[a].length;
|
|
269
|
+
if (!o) return s && F(t, e), !1;
|
|
270
|
+
for (let l = o - 1; l >= 0; l--) ie[a][l](e);
|
|
271
|
+
return s && F(t, e), !0;
|
|
272
272
|
}, Ke = (t) => {
|
|
273
273
|
const e = Ae(t, "");
|
|
274
274
|
Object.keys(ie).filter(((n) => n.indexOf(e) === 0)).forEach(((n) => delete ie[n]));
|
|
275
275
|
};
|
|
276
|
-
let
|
|
277
|
-
const
|
|
278
|
-
class
|
|
276
|
+
let $n = typeof WebSocket < "u" ? WebSocket : null;
|
|
277
|
+
const Bn = 0, Vn = 1, Gn = 2, Wn = 3;
|
|
278
|
+
class yt {
|
|
279
279
|
constructor(e) {
|
|
280
|
-
this.session = e, this.previousGatewayState = "", this._wsClient = null, this._host =
|
|
281
|
-
const { host: n, env: i, region: s, trickleIce:
|
|
282
|
-
i && (this._host = i === "development" ? "wss://rtcdev.telnyx.com" :
|
|
280
|
+
this.session = e, this.previousGatewayState = "", this._wsClient = null, this._host = vt, this._timers = {}, this._useCanaryRtcServer = !1, this._hasCanaryBeenUsed = !1, this.upDur = null, this.downDur = null;
|
|
281
|
+
const { host: n, env: i, region: s, trickleIce: a, useCanaryRtcServer: o } = e.options;
|
|
282
|
+
i && (this._host = i === "development" ? "wss://rtcdev.telnyx.com" : vt), n && (this._host = ((l) => `${Un.test(l) ? "" : "wss://"}${l}`)(n)), s && (this._host = this._host.replace(/rtc(dev)?/, `${s}.rtc$1`)), (a || o) && (this._useCanaryRtcServer = !0);
|
|
283
283
|
}
|
|
284
284
|
get connected() {
|
|
285
|
-
return this._wsClient && this._wsClient.readyState ===
|
|
285
|
+
return this._wsClient && this._wsClient.readyState === Vn;
|
|
286
286
|
}
|
|
287
287
|
get connecting() {
|
|
288
|
-
return this._wsClient && this._wsClient.readyState ===
|
|
288
|
+
return this._wsClient && this._wsClient.readyState === Bn;
|
|
289
289
|
}
|
|
290
290
|
get closing() {
|
|
291
|
-
return this._wsClient && this._wsClient.readyState ===
|
|
291
|
+
return this._wsClient && this._wsClient.readyState === Gn;
|
|
292
292
|
}
|
|
293
293
|
get closed() {
|
|
294
|
-
return this._wsClient && this._wsClient.readyState ===
|
|
294
|
+
return this._wsClient && this._wsClient.readyState === Wn;
|
|
295
295
|
}
|
|
296
296
|
get isAlive() {
|
|
297
297
|
return this.connecting || this.connected;
|
|
@@ -302,16 +302,16 @@ class bt {
|
|
|
302
302
|
connect() {
|
|
303
303
|
const e = new URL(this._host);
|
|
304
304
|
let n = fe();
|
|
305
|
-
this.session.options.rtcIp && this.session.options.rtcPort && (n = null, this._useCanaryRtcServer = !1, e.searchParams.set("rtc_ip", this.session.options.rtcIp), e.searchParams.set("rtc_port", this.session.options.rtcPort.toString())), n && e.searchParams.set("voice_sdk_id", n), this._useCanaryRtcServer && (e.searchParams.set("canary", "true"), n && !this._hasCanaryBeenUsed && (e.searchParams.delete("voice_sdk_id"), y.debug("first canary connection. Refreshing voice_sdk_id")), this._hasCanaryBeenUsed = !0), this._wsClient = new
|
|
306
|
-
var s,
|
|
307
|
-
const o =
|
|
305
|
+
this.session.options.rtcIp && this.session.options.rtcPort && (n = null, this._useCanaryRtcServer = !1, e.searchParams.set("rtc_ip", this.session.options.rtcIp), e.searchParams.set("rtc_port", this.session.options.rtcPort.toString())), n && e.searchParams.set("voice_sdk_id", n), this._useCanaryRtcServer && (e.searchParams.set("canary", "true"), n && !this._hasCanaryBeenUsed && (e.searchParams.delete("voice_sdk_id"), y.debug("first canary connection. Refreshing voice_sdk_id")), this._hasCanaryBeenUsed = !0), this._wsClient = new $n(e.toString()), this._wsClient.onopen = (i) => F(L.SocketOpen, i, this.session.uuid), this._wsClient.onclose = (i) => F(L.SocketClose, i, this.session.uuid), this._wsClient.onerror = (i) => F(L.SocketError, { error: i, sessionId: this.session.sessionid }, this.session.uuid), this._wsClient.onmessage = (i) => {
|
|
306
|
+
var s, a;
|
|
307
|
+
const o = Yt(i.data);
|
|
308
308
|
var l;
|
|
309
309
|
if (typeof o != "string") {
|
|
310
|
-
if (o.voice_sdk_id && (l = o.voice_sdk_id, sessionStorage.setItem(
|
|
310
|
+
if (o.voice_sdk_id && (l = o.voice_sdk_id, sessionStorage.setItem(pt, l)), this._unsetTimer(o.id), y.debug(`RECV:
|
|
311
311
|
`, JSON.stringify(o, null, 2), `
|
|
312
|
-
`), te[`${(
|
|
313
|
-
const d =
|
|
314
|
-
|
|
312
|
+
`), te[`${(a = (s = o?.result) === null || s === void 0 ? void 0 : s.params) === null || a === void 0 ? void 0 : a.state}`] || !F(o.id, o)) {
|
|
313
|
+
const d = ht(o);
|
|
314
|
+
F(L.SocketMessage, o, this.session.uuid), d && (this.previousGatewayState = d);
|
|
315
315
|
}
|
|
316
316
|
} else this._handleStringResponse(o);
|
|
317
317
|
};
|
|
@@ -320,11 +320,11 @@ class bt {
|
|
|
320
320
|
this._wsClient.send(e);
|
|
321
321
|
}
|
|
322
322
|
send(e) {
|
|
323
|
-
const { request: n } = e, i = new Promise(((s,
|
|
323
|
+
const { request: n } = e, i = new Promise(((s, a) => {
|
|
324
324
|
if (n.hasOwnProperty("result")) return s();
|
|
325
|
-
|
|
326
|
-
const { result: l, error: d } =
|
|
327
|
-
return d ?
|
|
325
|
+
Xt(n.id, ((o) => {
|
|
326
|
+
const { result: l, error: d } = zt(o);
|
|
327
|
+
return d ? a(d) : s(l);
|
|
328
328
|
}));
|
|
329
329
|
}));
|
|
330
330
|
return y.debug(`SEND:
|
|
@@ -343,7 +343,7 @@ class bt {
|
|
|
343
343
|
this.upDur = parseInt(e.substring(4));
|
|
344
344
|
break;
|
|
345
345
|
case "D":
|
|
346
|
-
this.downDur = parseInt(e.substring(4)),
|
|
346
|
+
this.downDur = parseInt(e.substring(4)), F(L.SpeedTest, { upDur: this.upDur, downDur: this.downDur }, this.session.uuid);
|
|
347
347
|
}
|
|
348
348
|
else y.warn("Unknown message from socket", e);
|
|
349
349
|
}
|
|
@@ -353,43 +353,43 @@ class Re {
|
|
|
353
353
|
this.request = Object.assign({ jsonrpc: "2.0", id: me() }, e);
|
|
354
354
|
}
|
|
355
355
|
}
|
|
356
|
-
const
|
|
356
|
+
const bt = { id: "callID", destinationNumber: "destination_number", remoteCallerName: "remote_caller_id_name", remoteCallerNumber: "remote_caller_id_number", callerName: "caller_id_name", callerNumber: "caller_id_number", customHeaders: "custom_headers" };
|
|
357
357
|
class Z extends Re {
|
|
358
358
|
constructor(e = {}) {
|
|
359
359
|
if (super(), e.hasOwnProperty("dialogParams")) {
|
|
360
|
-
const n =
|
|
361
|
-
for (const i in
|
|
360
|
+
const n = Wt(e.dialogParams, ["remoteSdp", "localStream", "remoteStream", "onNotification", "camId", "micId", "speakerId"]);
|
|
361
|
+
for (const i in bt) i && n.hasOwnProperty(i) && (n[bt[i]] = n[i], delete n[i]);
|
|
362
362
|
e.dialogParams = n;
|
|
363
363
|
}
|
|
364
364
|
this.buildRequest({ method: this.toString(), params: e });
|
|
365
365
|
}
|
|
366
366
|
}
|
|
367
|
-
class
|
|
367
|
+
class Zt extends Z {
|
|
368
368
|
constructor(e) {
|
|
369
|
-
super(), this.method =
|
|
369
|
+
super(), this.method = $.GatewayState, this.buildRequest({ method: this.method, voice_sdk_id: e, params: {} });
|
|
370
370
|
}
|
|
371
371
|
}
|
|
372
|
-
class
|
|
372
|
+
class Hn {
|
|
373
373
|
constructor(e) {
|
|
374
|
-
this.pendingRequestId = null, this.onSocketMessage = (n) =>
|
|
375
|
-
n.id === this.pendingRequestId && this.gatewayStateTask.resolve(
|
|
376
|
-
})), this.getIsRegistered = () =>
|
|
377
|
-
const n = new
|
|
378
|
-
this.pendingRequestId = n.request.id, this.gatewayStateTask =
|
|
374
|
+
this.pendingRequestId = null, this.onSocketMessage = (n) => O(this, void 0, void 0, (function* () {
|
|
375
|
+
n.id === this.pendingRequestId && this.gatewayStateTask.resolve(ht(n));
|
|
376
|
+
})), this.getIsRegistered = () => O(this, void 0, void 0, (function* () {
|
|
377
|
+
const n = new Zt(fe());
|
|
378
|
+
this.pendingRequestId = n.request.id, this.gatewayStateTask = mt({}), this.session.execute(n);
|
|
379
379
|
const i = yield this.gatewayStateTask.promise;
|
|
380
380
|
return !!i && [te.REGISTER, te.REGED].includes(i);
|
|
381
|
-
})), this.session = e, this.gatewayStateTask =
|
|
381
|
+
})), this.session = e, this.gatewayStateTask = mt({}), this.session.on("telnyx.socket.message", this.onSocketMessage);
|
|
382
382
|
}
|
|
383
383
|
}
|
|
384
|
-
class
|
|
384
|
+
class en extends Z {
|
|
385
385
|
constructor(e) {
|
|
386
|
-
super(), this.method =
|
|
386
|
+
super(), this.method = $.Ping, this.buildRequest({ method: this.method, voice_sdk_id: e, params: {} });
|
|
387
387
|
}
|
|
388
388
|
}
|
|
389
|
-
class
|
|
389
|
+
class qn {
|
|
390
390
|
constructor(e) {
|
|
391
391
|
if (this.options = e, this.uuid = me(), this.sessionid = "", this.subscriptions = {}, this.signature = null, this.relayProtocol = null, this.contexts = [], this.timeoutErrorCode = -32e3, this.invalidMethodErrorCode = -32601, this.authenticationRequiredErrorCode = -32e3, this.connection = null, this._jwtAuth = !1, this._autoReconnect = !0, this._idle = !1, this._executeQueue = [], !this.validateOptions()) throw new Error("Invalid init options");
|
|
392
|
-
y.setLevel(e.debug ? "debug" : "info"), this._onSocketOpen = this._onSocketOpen.bind(this), this.onNetworkClose = this.onNetworkClose.bind(this), this._onSocketMessage = this._onSocketMessage.bind(this), this._handleLoginError = this._handleLoginError.bind(this), this._attachListeners(), this.connection = new
|
|
392
|
+
y.setLevel(e.debug ? "debug" : "info"), this._onSocketOpen = this._onSocketOpen.bind(this), this.onNetworkClose = this.onNetworkClose.bind(this), this._onSocketMessage = this._onSocketMessage.bind(this), this._handleLoginError = this._handleLoginError.bind(this), this._attachListeners(), this.connection = new yt(this), this.registerAgent = new Hn(this);
|
|
393
393
|
}
|
|
394
394
|
get __logger() {
|
|
395
395
|
return y;
|
|
@@ -398,12 +398,12 @@ class Jn {
|
|
|
398
398
|
return this.connection && this.connection.connected;
|
|
399
399
|
}
|
|
400
400
|
getIsRegistered() {
|
|
401
|
-
return
|
|
401
|
+
return O(this, void 0, void 0, (function* () {
|
|
402
402
|
return this.registerAgent.getIsRegistered();
|
|
403
403
|
}));
|
|
404
404
|
}
|
|
405
405
|
get reconnectDelay() {
|
|
406
|
-
return 1e3 *
|
|
406
|
+
return 1e3 * Kt(2, 6);
|
|
407
407
|
}
|
|
408
408
|
execute(e) {
|
|
409
409
|
return this._idle ? new Promise(((n) => this._executeQueue.push({ resolve: n, msg: e }))) : this.connected ? this.connection.send(e) : new Promise(((n) => {
|
|
@@ -419,7 +419,7 @@ class Jn {
|
|
|
419
419
|
broadcast(e) {
|
|
420
420
|
}
|
|
421
421
|
disconnect() {
|
|
422
|
-
return
|
|
422
|
+
return O(this, void 0, void 0, (function* () {
|
|
423
423
|
clearTimeout(this._reconnectTimeout), this.subscriptions = {}, this._autoReconnect = !1, this.relayProtocol = null, this._closeConnection(), yield sessionStorage.removeItem(this.signature), this._executeQueue = [], this._detachListeners();
|
|
424
424
|
}));
|
|
425
425
|
}
|
|
@@ -430,15 +430,15 @@ class Jn {
|
|
|
430
430
|
return ue(e, n, this.uuid), this;
|
|
431
431
|
}
|
|
432
432
|
connect() {
|
|
433
|
-
return
|
|
434
|
-
this.connection || (this.connection = new
|
|
433
|
+
return O(this, void 0, void 0, (function* () {
|
|
434
|
+
this.connection || (this.connection = new yt(this)), this._attachListeners(), this.connection.isAlive || this.connection.connect();
|
|
435
435
|
}));
|
|
436
436
|
}
|
|
437
437
|
_handleLoginError(e) {
|
|
438
|
-
|
|
438
|
+
F(L.Error, { error: e, sessionId: this.sessionid }, this.uuid);
|
|
439
439
|
}
|
|
440
440
|
_onSocketOpen() {
|
|
441
|
-
return
|
|
441
|
+
return O(this, void 0, void 0, (function* () {
|
|
442
442
|
}));
|
|
443
443
|
}
|
|
444
444
|
onNetworkClose() {
|
|
@@ -458,10 +458,10 @@ class Jn {
|
|
|
458
458
|
return !(!this.subscriptions.hasOwnProperty(e) || !(!n || n && this.subscriptions[e].hasOwnProperty(n)));
|
|
459
459
|
}
|
|
460
460
|
_attachListeners() {
|
|
461
|
-
this._detachListeners(), this.on(
|
|
461
|
+
this._detachListeners(), this.on(L.SocketOpen, this._onSocketOpen), this.on(L.SocketClose, this.onNetworkClose), this.on(L.SocketError, this.onNetworkClose), this.on(L.SocketMessage, this._onSocketMessage);
|
|
462
462
|
}
|
|
463
463
|
_detachListeners() {
|
|
464
|
-
this.off(
|
|
464
|
+
this.off(L.SocketOpen, this._onSocketOpen), this.off(L.SocketClose, this.onNetworkClose), this.off(L.SocketError, this.onNetworkClose), this.off(L.SocketMessage, this._onSocketMessage);
|
|
465
465
|
}
|
|
466
466
|
_emptyExecuteQueues() {
|
|
467
467
|
this._executeQueue.forEach((({ resolve: e, msg: n }) => {
|
|
@@ -472,7 +472,7 @@ class Jn {
|
|
|
472
472
|
this._idle = !0, clearTimeout(this._keepAliveTimeout), this.connection && this.connection.close();
|
|
473
473
|
}
|
|
474
474
|
_resetKeepAlive() {
|
|
475
|
-
this._pong === !1 && (y.warn("No ping/pong received, forcing PING ACK to keep alive"), this.execute(new
|
|
475
|
+
this._pong === !1 && (y.warn("No ping/pong received, forcing PING ACK to keep alive"), this.execute(new en(fe()))), clearTimeout(this._keepAliveTimeout), this._triggerKeepAliveTimeoutCheck();
|
|
476
476
|
}
|
|
477
477
|
_triggerKeepAliveTimeoutCheck() {
|
|
478
478
|
this._pong = !1, this._keepAliveTimeout = setTimeout((() => this._resetKeepAlive()), 35e3);
|
|
@@ -496,10 +496,10 @@ class Jn {
|
|
|
496
496
|
return this._autoReconnect;
|
|
497
497
|
}
|
|
498
498
|
}
|
|
499
|
-
const
|
|
499
|
+
const tt = (t) => navigator.mediaDevices.getUserMedia(t), ge = (t) => t && t instanceof MediaStream, Ee = (t, e) => {
|
|
500
500
|
const n = De(t);
|
|
501
501
|
n !== null && (n.getAttribute("autoplay") || n.setAttribute("autoplay", "autoplay"), n.getAttribute("playsinline") || n.setAttribute("playsinline", "playsinline"), n.srcObject = e);
|
|
502
|
-
},
|
|
502
|
+
}, tn = (t, e) => O(void 0, void 0, void 0, (function* () {
|
|
503
503
|
const n = De(t);
|
|
504
504
|
if (n === null) return y.info("No HTMLMediaElement to attach the speakerId"), !1;
|
|
505
505
|
if (typeof e != "string") return y.info(`Invalid speaker deviceId: '${e}'`), !1;
|
|
@@ -508,49 +508,49 @@ const nt = (t) => navigator.mediaDevices.getUserMedia(t), ge = (t) => t && t ins
|
|
|
508
508
|
} catch {
|
|
509
509
|
return !1;
|
|
510
510
|
}
|
|
511
|
-
})),
|
|
511
|
+
})), Jn = (t) => {
|
|
512
512
|
t && t.readyState === "live" && t.stop();
|
|
513
513
|
}, Te = (t) => {
|
|
514
|
-
ge(t) && t.getTracks().forEach(
|
|
515
|
-
},
|
|
514
|
+
ge(t) && t.getTracks().forEach(Jn), t = null;
|
|
515
|
+
}, Ue = (t) => O(void 0, void 0, void 0, (function* () {
|
|
516
516
|
y.info("RTCService.getUserMedia", t);
|
|
517
517
|
const { audio: e, video: n } = t;
|
|
518
518
|
if (!e && !n) return null;
|
|
519
519
|
try {
|
|
520
|
-
return yield
|
|
520
|
+
return yield tt(t);
|
|
521
521
|
} catch (i) {
|
|
522
522
|
throw y.error("getUserMedia error: ", i), i;
|
|
523
523
|
}
|
|
524
|
-
})), ke = (t = null, e = !1) =>
|
|
524
|
+
})), ke = (t = null, e = !1) => O(void 0, void 0, void 0, (function* () {
|
|
525
525
|
let n = [];
|
|
526
526
|
const i = yield navigator.mediaDevices.getUserMedia(((s = null) => ({ audio: !s || s === ae.AudioIn || s === ae.AudioOut, video: !s || s === ae.Video }))(t)).catch(((s) => (y.error(s), null)));
|
|
527
527
|
if (i) {
|
|
528
|
-
if (Te(i), n = yield navigator.mediaDevices.enumerateDevices(), t && (n = n.filter(((
|
|
528
|
+
if (Te(i), n = yield navigator.mediaDevices.enumerateDevices(), t && (n = n.filter(((a) => a.kind === t))), e === !0) return n;
|
|
529
529
|
const s = [];
|
|
530
|
-
n = n.filter(((
|
|
531
|
-
if (!
|
|
532
|
-
const o = `${
|
|
530
|
+
n = n.filter(((a) => {
|
|
531
|
+
if (!a.groupId) return !0;
|
|
532
|
+
const o = `${a.kind}-${a.groupId}`;
|
|
533
533
|
return !s.includes(o) && (s.push(o), !0);
|
|
534
534
|
}));
|
|
535
535
|
}
|
|
536
536
|
return n;
|
|
537
|
-
})),
|
|
537
|
+
})), _t = [[320, 240], [640, 360], [640, 480], [1280, 720], [1920, 1080]], je = (t, e, n) => O(void 0, void 0, void 0, (function* () {
|
|
538
538
|
const i = yield ke(n, !0);
|
|
539
539
|
for (let s = 0; s < i.length; s++) {
|
|
540
|
-
const { deviceId:
|
|
541
|
-
if (t ===
|
|
540
|
+
const { deviceId: a, label: o } = i[s];
|
|
541
|
+
if (t === a || e === o) return a;
|
|
542
542
|
}
|
|
543
543
|
return null;
|
|
544
|
-
})),
|
|
544
|
+
})), Yn = (t) => {
|
|
545
545
|
const e = navigator.mediaDevices.getSupportedConstraints();
|
|
546
546
|
Object.keys(t).map(((n) => {
|
|
547
547
|
e.hasOwnProperty(n) && t[n] !== null && t[n] !== void 0 || delete t[n];
|
|
548
548
|
}));
|
|
549
|
-
},
|
|
549
|
+
}, nt = (t, e) => {
|
|
550
550
|
if (!t) return !1;
|
|
551
|
-
const { subscribed: n, alreadySubscribed: i } =
|
|
551
|
+
const { subscribed: n, alreadySubscribed: i } = it(t);
|
|
552
552
|
return n.includes(e) || i.includes(e);
|
|
553
|
-
},
|
|
553
|
+
}, it = (t) => {
|
|
554
554
|
const e = { subscribed: [], alreadySubscribed: [], unauthorized: [], unsubscribed: [], notSubscribed: [] };
|
|
555
555
|
return Object.keys(e).forEach(((n) => {
|
|
556
556
|
e[n] = t[`${n}Channels`] || [];
|
|
@@ -582,13 +582,13 @@ const nt = (t) => navigator.mediaDevices.getUserMedia(t), ge = (t) => t && t ins
|
|
|
582
582
|
s.enabled = !s.enabled;
|
|
583
583
|
}
|
|
584
584
|
}));
|
|
585
|
-
},
|
|
585
|
+
}, St = (t) => {
|
|
586
586
|
ve(t, "audio", !0);
|
|
587
|
-
},
|
|
587
|
+
}, st = (t) => {
|
|
588
588
|
ve(t, "audio", !1);
|
|
589
|
-
},
|
|
589
|
+
}, wt = (t) => {
|
|
590
590
|
ve(t, "audio", null);
|
|
591
|
-
},
|
|
591
|
+
}, zn = (t) => ((e, n = null) => {
|
|
592
592
|
if (!ge(e)) return null;
|
|
593
593
|
let i = [];
|
|
594
594
|
switch (n) {
|
|
@@ -603,7 +603,7 @@ const nt = (t) => navigator.mediaDevices.getUserMedia(t), ge = (t) => t && t ins
|
|
|
603
603
|
}
|
|
604
604
|
return i.some(((s) => s.enabled));
|
|
605
605
|
})(t, "audio");
|
|
606
|
-
function
|
|
606
|
+
function Kn() {
|
|
607
607
|
try {
|
|
608
608
|
const { browserInfo: t, name: e, version: n, supportAudio: i, supportVideo: s } = (function() {
|
|
609
609
|
if (!window || !window.navigator || !window.navigator.userAgent) throw new Error("You should use @telnyx/webrtc in a web browser such as Chrome|Firefox|Safari");
|
|
@@ -624,14 +624,14 @@ function Qn() {
|
|
|
624
624
|
return { browserInfo: navigator.userAgent, name: v, version: _, supportAudio: !0, supportVideo: !0 };
|
|
625
625
|
}
|
|
626
626
|
throw new Error("This browser does not support @telnyx/webrtc. To see browser support list: `TelnyxRTC.webRTCSupportedBrowserList()`");
|
|
627
|
-
})(),
|
|
628
|
-
return { browserInfo: t, browserName: e, browserVersion: n, supportWebRTC: !!(
|
|
627
|
+
})(), a = window.RTCPeerConnection, o = window.RTCSessionDescription, l = window.RTCIceCandidate, d = window.navigator && window.navigator.mediaDevices, h = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.msGetUserMedia || navigator.mozGetUserMedia;
|
|
628
|
+
return { browserInfo: t, browserName: e, browserVersion: n, supportWebRTC: !!(a && o && l && d && h), supportWebRTCAudio: i, supportWebRTCVideo: s, supportRTCPeerConnection: !!a, supportSessionDescription: !!o, supportIceCandidate: !!l, supportMediaDevices: !!d, supportGetUserMedia: !!Ue };
|
|
629
629
|
} catch (t) {
|
|
630
630
|
return t.message;
|
|
631
631
|
}
|
|
632
632
|
}
|
|
633
633
|
var H;
|
|
634
|
-
function
|
|
634
|
+
function Ct(t, e) {
|
|
635
635
|
const n = document.getElementById(e);
|
|
636
636
|
if (n) return n;
|
|
637
637
|
if (t && e) {
|
|
@@ -640,14 +640,14 @@ function kt(t, e) {
|
|
|
640
640
|
}
|
|
641
641
|
return null;
|
|
642
642
|
}
|
|
643
|
-
function
|
|
643
|
+
function kt(t) {
|
|
644
644
|
t && (t._playFulfilled = !1, t._promise = t.play(), t._promise.then((() => {
|
|
645
645
|
t._playFulfilled = !0;
|
|
646
646
|
})).catch(((e) => {
|
|
647
647
|
y.error("playAudio", e), t._playFulfilled = !0;
|
|
648
648
|
})));
|
|
649
649
|
}
|
|
650
|
-
function
|
|
650
|
+
function It(t) {
|
|
651
651
|
t && (t._playFulfilled ? (t.pause(), t.currentTime = 0) : t._promise && t._promise.then ? t._promise.then((() => {
|
|
652
652
|
t.pause(), t.currentTime = 0;
|
|
653
653
|
})) : setTimeout((() => {
|
|
@@ -657,135 +657,135 @@ function Et(t) {
|
|
|
657
657
|
(function(t) {
|
|
658
658
|
t.not_supported = "not supported", t.full = "full", t.partial = "partial";
|
|
659
659
|
})(H || (H = {}));
|
|
660
|
-
var
|
|
661
|
-
class
|
|
662
|
-
constructor(e, n, i, s,
|
|
660
|
+
var nn = "2.25.14", We = nn;
|
|
661
|
+
class sn extends Z {
|
|
662
|
+
constructor(e, n, i, s, a = {}, o) {
|
|
663
663
|
super(), this.method = "login";
|
|
664
|
-
const l = { login: e, passwd: n, login_token: i, userVariables:
|
|
664
|
+
const l = { login: e, passwd: n, login_token: i, userVariables: a, reconnection: o, loginParams: {}, "User-Agent": { sdkVersion: We, data: navigator.userAgent } };
|
|
665
665
|
s && (l.sessid = s), this.buildRequest({ method: this.method, params: l });
|
|
666
666
|
}
|
|
667
667
|
}
|
|
668
|
-
class
|
|
668
|
+
class Qn extends Z {
|
|
669
669
|
constructor(e, n) {
|
|
670
670
|
super(), this.buildRequest({ id: e, result: { method: n } });
|
|
671
671
|
}
|
|
672
672
|
}
|
|
673
|
-
class
|
|
673
|
+
class Et extends Z {
|
|
674
674
|
toString() {
|
|
675
|
-
return
|
|
675
|
+
return $.Invite;
|
|
676
676
|
}
|
|
677
677
|
}
|
|
678
|
-
class
|
|
678
|
+
class Tt extends Z {
|
|
679
679
|
toString() {
|
|
680
|
-
return
|
|
680
|
+
return $.Answer;
|
|
681
681
|
}
|
|
682
682
|
}
|
|
683
|
-
class
|
|
683
|
+
class ot extends Z {
|
|
684
684
|
toString() {
|
|
685
|
-
return
|
|
685
|
+
return $.Attach;
|
|
686
686
|
}
|
|
687
687
|
}
|
|
688
|
-
class
|
|
688
|
+
class Xn extends Z {
|
|
689
689
|
toString() {
|
|
690
|
-
return
|
|
690
|
+
return $.Bye;
|
|
691
691
|
}
|
|
692
692
|
}
|
|
693
|
-
class
|
|
693
|
+
class on extends Z {
|
|
694
694
|
toString() {
|
|
695
|
-
return
|
|
695
|
+
return $.Candidate;
|
|
696
696
|
}
|
|
697
697
|
}
|
|
698
|
-
class
|
|
698
|
+
class Zn extends Z {
|
|
699
699
|
toString() {
|
|
700
|
-
return
|
|
700
|
+
return $.EndOfCandidates;
|
|
701
701
|
}
|
|
702
702
|
}
|
|
703
703
|
class Qe extends Z {
|
|
704
704
|
toString() {
|
|
705
|
-
return
|
|
705
|
+
return $.Modify;
|
|
706
706
|
}
|
|
707
707
|
}
|
|
708
|
-
class
|
|
708
|
+
class At extends Z {
|
|
709
709
|
toString() {
|
|
710
|
-
return
|
|
710
|
+
return $.Info;
|
|
711
711
|
}
|
|
712
712
|
}
|
|
713
|
-
class
|
|
713
|
+
class ei extends Z {
|
|
714
714
|
toString() {
|
|
715
|
-
return
|
|
715
|
+
return $.Broadcast;
|
|
716
716
|
}
|
|
717
717
|
}
|
|
718
|
-
class
|
|
718
|
+
class ti extends Z {
|
|
719
719
|
toString() {
|
|
720
|
-
return
|
|
720
|
+
return $.Subscribe;
|
|
721
721
|
}
|
|
722
722
|
}
|
|
723
|
-
class
|
|
723
|
+
class ni extends Z {
|
|
724
724
|
toString() {
|
|
725
|
-
return
|
|
725
|
+
return $.Unsubscribe;
|
|
726
726
|
}
|
|
727
727
|
}
|
|
728
|
-
class
|
|
728
|
+
class ii extends Re {
|
|
729
729
|
constructor(e, n) {
|
|
730
730
|
super(), this.method = "ai_conversation", this.buildRequest({ method: this.method, params: { type: "conversation.item.create", previous_item_id: null, item: { id: me(), type: "message", role: "user", content: [{ type: "input_text", text: e }, ...n?.map(((i) => ({ type: "image_url", image_url: { url: i } })))] } } });
|
|
731
731
|
}
|
|
732
732
|
}
|
|
733
|
-
var
|
|
733
|
+
var Oe, rn = Jt((function(t, e) {
|
|
734
734
|
var n;
|
|
735
735
|
function i() {
|
|
736
736
|
}
|
|
737
737
|
function s() {
|
|
738
738
|
s.init.call(this);
|
|
739
739
|
}
|
|
740
|
-
function r
|
|
741
|
-
return
|
|
740
|
+
function a(r) {
|
|
741
|
+
return r._maxListeners === void 0 ? s.defaultMaxListeners : r._maxListeners;
|
|
742
742
|
}
|
|
743
|
-
function o(
|
|
743
|
+
function o(r, c, u, g) {
|
|
744
744
|
var b, T, I;
|
|
745
745
|
if (typeof u != "function") throw new TypeError('"listener" argument must be a function');
|
|
746
|
-
if ((T =
|
|
747
|
-
if (typeof I == "function" ? I = T[c] = g ? [u, I] : [I, u] : g ? I.unshift(u) : I.push(u), !I.warned && (b = r
|
|
746
|
+
if ((T = r._events) ? (T.newListener && (r.emit("newListener", c, u.listener ? u.listener : u), T = r._events), I = T[c]) : (T = r._events = new i(), r._eventsCount = 0), I) {
|
|
747
|
+
if (typeof I == "function" ? I = T[c] = g ? [u, I] : [I, u] : g ? I.unshift(u) : I.push(u), !I.warned && (b = a(r)) && 0 < b && I.length > b) {
|
|
748
748
|
I.warned = !0;
|
|
749
749
|
var R = new Error("Possible EventEmitter memory leak detected. " + I.length + " " + c + " listeners added. Use emitter.setMaxListeners() to increase limit");
|
|
750
|
-
R.name = "MaxListenersExceededWarning", R.emitter =
|
|
751
|
-
typeof console.warn == "function" ? console.warn(
|
|
750
|
+
R.name = "MaxListenersExceededWarning", R.emitter = r, R.type = c, R.count = I.length, (function(j) {
|
|
751
|
+
typeof console.warn == "function" ? console.warn(j) : console.log(j);
|
|
752
752
|
})(R);
|
|
753
753
|
}
|
|
754
|
-
} else I = T[c] = u, ++
|
|
755
|
-
return
|
|
754
|
+
} else I = T[c] = u, ++r._eventsCount;
|
|
755
|
+
return r;
|
|
756
756
|
}
|
|
757
|
-
function l(
|
|
757
|
+
function l(r, c, u) {
|
|
758
758
|
function g() {
|
|
759
|
-
|
|
759
|
+
r.removeListener(c, g), b || (b = !0, u.apply(r, arguments));
|
|
760
760
|
}
|
|
761
761
|
var b = !1;
|
|
762
762
|
return g.listener = u, g;
|
|
763
763
|
}
|
|
764
|
-
function d(
|
|
764
|
+
function d(r) {
|
|
765
765
|
var c = this._events;
|
|
766
766
|
if (c) {
|
|
767
|
-
var u = c[
|
|
767
|
+
var u = c[r];
|
|
768
768
|
if (typeof u == "function") return 1;
|
|
769
769
|
if (u) return u.length;
|
|
770
770
|
}
|
|
771
771
|
return 0;
|
|
772
772
|
}
|
|
773
|
-
function h(
|
|
774
|
-
for (var u = Array(c); c--; ) u[c] =
|
|
773
|
+
function h(r, c) {
|
|
774
|
+
for (var u = Array(c); c--; ) u[c] = r[c];
|
|
775
775
|
return u;
|
|
776
776
|
}
|
|
777
777
|
Object.defineProperty(e, "__esModule", { value: !0 }), i.prototype = /* @__PURE__ */ Object.create(null), s.EventEmitter = s, s.usingDomains = !1, s.prototype.domain = void 0, s.prototype._events = void 0, s.prototype._maxListeners = void 0, s.defaultMaxListeners = 10, s.init = function() {
|
|
778
778
|
this.domain = null, s.usingDomains && n.active && !(this instanceof n.Domain) && (this.domain = n.active), this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = new i(), this._eventsCount = 0), this._maxListeners = this._maxListeners || void 0;
|
|
779
|
-
}, s.prototype.setMaxListeners = function(
|
|
780
|
-
if (typeof
|
|
781
|
-
return this._maxListeners =
|
|
779
|
+
}, s.prototype.setMaxListeners = function(r) {
|
|
780
|
+
if (typeof r != "number" || 0 > r || isNaN(r)) throw new TypeError('"n" argument must be a positive number');
|
|
781
|
+
return this._maxListeners = r, this;
|
|
782
782
|
}, s.prototype.getMaxListeners = function() {
|
|
783
|
-
return
|
|
784
|
-
}, s.prototype.emit = function(
|
|
785
|
-
var c, u, g, b, T, I, R,
|
|
786
|
-
if (I = this._events)
|
|
787
|
-
else if (!
|
|
788
|
-
if (R = this.domain,
|
|
783
|
+
return a(this);
|
|
784
|
+
}, s.prototype.emit = function(r) {
|
|
785
|
+
var c, u, g, b, T, I, R, j = r === "error";
|
|
786
|
+
if (I = this._events) j = j && I.error == null;
|
|
787
|
+
else if (!j) return !1;
|
|
788
|
+
if (R = this.domain, j) {
|
|
789
789
|
if (c = arguments[1], !R) {
|
|
790
790
|
if (c instanceof Error) throw c;
|
|
791
791
|
var ee = new Error('Uncaught, unspecified "error" event. (' + c + ")");
|
|
@@ -793,57 +793,57 @@ var Le, an = Yt((function(t, e) {
|
|
|
793
793
|
}
|
|
794
794
|
return c || (c = new Error('Uncaught, unspecified "error" event')), c.domainEmitter = this, c.domain = R, c.domainThrown = !1, R.emit("error", c), !1;
|
|
795
795
|
}
|
|
796
|
-
if (!(u = I[
|
|
796
|
+
if (!(u = I[r])) return !1;
|
|
797
797
|
var ne = typeof u == "function";
|
|
798
798
|
switch (g = arguments.length) {
|
|
799
799
|
case 1:
|
|
800
800
|
(function(G, m, M) {
|
|
801
801
|
if (m) G.call(M);
|
|
802
|
-
else for (var
|
|
802
|
+
else for (var U = G.length, V = h(G, U), Y = 0; Y < U; ++Y) V[Y].call(M);
|
|
803
803
|
})(u, ne, this);
|
|
804
804
|
break;
|
|
805
805
|
case 2:
|
|
806
|
-
(function(G, m, M,
|
|
807
|
-
if (m) G.call(M,
|
|
808
|
-
else for (var V = G.length, Y = h(G, V), Q = 0; Q < V; ++Q) Y[Q].call(M,
|
|
806
|
+
(function(G, m, M, U) {
|
|
807
|
+
if (m) G.call(M, U);
|
|
808
|
+
else for (var V = G.length, Y = h(G, V), Q = 0; Q < V; ++Q) Y[Q].call(M, U);
|
|
809
809
|
})(u, ne, this, arguments[1]);
|
|
810
810
|
break;
|
|
811
811
|
case 3:
|
|
812
|
-
(function(G, m, M,
|
|
813
|
-
if (m) G.call(M,
|
|
814
|
-
else for (var Y = G.length, Q = h(G, Y), W = 0; W < Y; ++W) Q[W].call(M,
|
|
812
|
+
(function(G, m, M, U, V) {
|
|
813
|
+
if (m) G.call(M, U, V);
|
|
814
|
+
else for (var Y = G.length, Q = h(G, Y), W = 0; W < Y; ++W) Q[W].call(M, U, V);
|
|
815
815
|
})(u, ne, this, arguments[1], arguments[2]);
|
|
816
816
|
break;
|
|
817
817
|
case 4:
|
|
818
|
-
(function(G, m, M,
|
|
819
|
-
if (m) G.call(M,
|
|
820
|
-
else for (var Q = G.length, W = h(G, Q), re = 0; re < Q; ++re) W[re].call(M,
|
|
818
|
+
(function(G, m, M, U, V, Y) {
|
|
819
|
+
if (m) G.call(M, U, V, Y);
|
|
820
|
+
else for (var Q = G.length, W = h(G, Q), re = 0; re < Q; ++re) W[re].call(M, U, V, Y);
|
|
821
821
|
})(u, ne, this, arguments[1], arguments[2], arguments[3]);
|
|
822
822
|
break;
|
|
823
823
|
default:
|
|
824
824
|
for (b = Array(g - 1), T = 1; T < g; T++) b[T - 1] = arguments[T];
|
|
825
|
-
(function(G, m, M,
|
|
826
|
-
if (m) G.apply(M,
|
|
827
|
-
else for (var V = G.length, Y = h(G, V), Q = 0; Q < V; ++Q) Y[Q].apply(M,
|
|
825
|
+
(function(G, m, M, U) {
|
|
826
|
+
if (m) G.apply(M, U);
|
|
827
|
+
else for (var V = G.length, Y = h(G, V), Q = 0; Q < V; ++Q) Y[Q].apply(M, U);
|
|
828
828
|
})(u, ne, this, b);
|
|
829
829
|
}
|
|
830
830
|
return !0;
|
|
831
|
-
}, s.prototype.addListener = function(
|
|
832
|
-
return o(this,
|
|
833
|
-
}, s.prototype.on = s.prototype.addListener, s.prototype.prependListener = function(
|
|
834
|
-
return o(this,
|
|
835
|
-
}, s.prototype.once = function(
|
|
831
|
+
}, s.prototype.addListener = function(r, c) {
|
|
832
|
+
return o(this, r, c, !1);
|
|
833
|
+
}, s.prototype.on = s.prototype.addListener, s.prototype.prependListener = function(r, c) {
|
|
834
|
+
return o(this, r, c, !0);
|
|
835
|
+
}, s.prototype.once = function(r, c) {
|
|
836
836
|
if (typeof c != "function") throw new TypeError('"listener" argument must be a function');
|
|
837
|
-
return this.on(
|
|
838
|
-
}, s.prototype.prependOnceListener = function(
|
|
837
|
+
return this.on(r, l(this, r, c)), this;
|
|
838
|
+
}, s.prototype.prependOnceListener = function(r, c) {
|
|
839
839
|
if (typeof c != "function") throw new TypeError('"listener" argument must be a function');
|
|
840
|
-
return this.prependListener(
|
|
841
|
-
}, s.prototype.removeListener = function(
|
|
840
|
+
return this.prependListener(r, l(this, r, c)), this;
|
|
841
|
+
}, s.prototype.removeListener = function(r, c) {
|
|
842
842
|
var u, g, b, T, I;
|
|
843
843
|
if (typeof c != "function") throw new TypeError('"listener" argument must be a function');
|
|
844
844
|
if (!(g = this._events)) return this;
|
|
845
|
-
if (!(u = g[
|
|
846
|
-
if (u === c || u.listener && u.listener === c) --this._eventsCount == 0 ? this._events = new i() : (delete g[
|
|
845
|
+
if (!(u = g[r])) return this;
|
|
846
|
+
if (u === c || u.listener && u.listener === c) --this._eventsCount == 0 ? this._events = new i() : (delete g[r], g.removeListener && this.emit("removeListener", r, u.listener || c));
|
|
847
847
|
else if (typeof u != "function") {
|
|
848
848
|
for (b = -1, T = u.length; 0 < T--; ) if (u[T] === c || u[T].listener && u[T].listener === c) {
|
|
849
849
|
I = u[T].listener, b = T;
|
|
@@ -852,35 +852,35 @@ var Le, an = Yt((function(t, e) {
|
|
|
852
852
|
if (0 > b) return this;
|
|
853
853
|
if (u.length === 1) {
|
|
854
854
|
if (u[0] = void 0, --this._eventsCount == 0) return this._events = new i(), this;
|
|
855
|
-
delete g[
|
|
856
|
-
} else (function(R,
|
|
857
|
-
for (var ee =
|
|
855
|
+
delete g[r];
|
|
856
|
+
} else (function(R, j) {
|
|
857
|
+
for (var ee = j, ne = ee + 1, G = R.length; ne < G; ee += 1, ne += 1) R[ee] = R[ne];
|
|
858
858
|
R.pop();
|
|
859
859
|
})(u, b);
|
|
860
|
-
g.removeListener && this.emit("removeListener",
|
|
860
|
+
g.removeListener && this.emit("removeListener", r, I || c);
|
|
861
861
|
}
|
|
862
862
|
return this;
|
|
863
|
-
}, s.prototype.removeAllListeners = function(
|
|
863
|
+
}, s.prototype.removeAllListeners = function(r) {
|
|
864
864
|
var c, u;
|
|
865
865
|
if (!(u = this._events)) return this;
|
|
866
|
-
if (!u.removeListener) return arguments.length === 0 ? (this._events = new i(), this._eventsCount = 0) : u[
|
|
866
|
+
if (!u.removeListener) return arguments.length === 0 ? (this._events = new i(), this._eventsCount = 0) : u[r] && (--this._eventsCount == 0 ? this._events = new i() : delete u[r]), this;
|
|
867
867
|
if (arguments.length === 0) {
|
|
868
868
|
for (var g, b = Object.keys(u), T = 0; T < b.length; ++T) (g = b[T]) !== "removeListener" && this.removeAllListeners(g);
|
|
869
869
|
return this.removeAllListeners("removeListener"), this._events = new i(), this._eventsCount = 0, this;
|
|
870
870
|
}
|
|
871
|
-
if (typeof (c = u[
|
|
871
|
+
if (typeof (c = u[r]) == "function") this.removeListener(r, c);
|
|
872
872
|
else if (c) do
|
|
873
|
-
this.removeListener(
|
|
873
|
+
this.removeListener(r, c[c.length - 1]);
|
|
874
874
|
while (c[0]);
|
|
875
875
|
return this;
|
|
876
|
-
}, s.prototype.listeners = function(
|
|
876
|
+
}, s.prototype.listeners = function(r) {
|
|
877
877
|
var c, u, g = this._events;
|
|
878
|
-
return g ? u = (c = g[
|
|
878
|
+
return g ? u = (c = g[r]) ? typeof c == "function" ? [c.listener || c] : (function(b) {
|
|
879
879
|
for (var T = Array(b.length), I = 0; I < T.length; ++I) T[I] = b[I].listener || b[I];
|
|
880
880
|
return T;
|
|
881
881
|
})(c) : [] : u = [], u;
|
|
882
|
-
}, s.listenerCount = function(
|
|
883
|
-
return typeof
|
|
882
|
+
}, s.listenerCount = function(r, c) {
|
|
883
|
+
return typeof r.listenerCount == "function" ? r.listenerCount(c) : d.call(r, c);
|
|
884
884
|
}, s.prototype.listenerCount = d, s.prototype.eventNames = function() {
|
|
885
885
|
return 0 < this._eventsCount ? Reflect.ownKeys(this._events) : [];
|
|
886
886
|
};
|
|
@@ -890,20 +890,20 @@ var Le, an = Yt((function(t, e) {
|
|
|
890
890
|
return f(v);
|
|
891
891
|
}
|
|
892
892
|
for (var w = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i, C = [], k = 0; 256 > k; ++k) C.push((k + 256).toString(16).substr(1));
|
|
893
|
-
function p(
|
|
894
|
-
var c = 1 < arguments.length && arguments[1] !== void 0 ? arguments[1] : 0, u = (C[
|
|
893
|
+
function p(r) {
|
|
894
|
+
var c = 1 < arguments.length && arguments[1] !== void 0 ? arguments[1] : 0, u = (C[r[c + 0]] + C[r[c + 1]] + C[r[c + 2]] + C[r[c + 3]] + "-" + C[r[c + 4]] + C[r[c + 5]] + "-" + C[r[c + 6]] + C[r[c + 7]] + "-" + C[r[c + 8]] + C[r[c + 9]] + "-" + C[r[c + 10]] + C[r[c + 11]] + C[r[c + 12]] + C[r[c + 13]] + C[r[c + 14]] + C[r[c + 15]]).toLowerCase();
|
|
895
895
|
if (!(function(g) {
|
|
896
896
|
return typeof g == "string" && w.test(g);
|
|
897
897
|
})(u)) throw TypeError("Stringified UUID is invalid");
|
|
898
898
|
return u;
|
|
899
899
|
}
|
|
900
|
-
function S(
|
|
901
|
-
var g = (
|
|
900
|
+
function S(r, c, u) {
|
|
901
|
+
var g = (r = r || {}).random || (r.rng || _)();
|
|
902
902
|
return g[6] = 64 | 15 & g[6], g[8] = 128 | 63 & g[8], p(g);
|
|
903
903
|
}
|
|
904
|
-
function A(
|
|
905
|
-
if (!
|
|
906
|
-
const u = { ...
|
|
904
|
+
function A(r, c) {
|
|
905
|
+
if (!r || !c) return {};
|
|
906
|
+
const u = { ...r };
|
|
907
907
|
if (u.localCandidateId) {
|
|
908
908
|
const g = c.get(u.localCandidateId);
|
|
909
909
|
u.local = { ...g };
|
|
@@ -914,33 +914,33 @@ var Le, an = Yt((function(t, e) {
|
|
|
914
914
|
}
|
|
915
915
|
return u;
|
|
916
916
|
}
|
|
917
|
-
function E(
|
|
917
|
+
function E(r, c, u) {
|
|
918
918
|
return 8 * (function(g, b, T) {
|
|
919
919
|
const I = g[T], R = b ? b[T] : null;
|
|
920
920
|
return I === null || R === null ? null : (I - R) / (g.timestamp - b.timestamp) * 1e3;
|
|
921
|
-
})(
|
|
921
|
+
})(r, c, u);
|
|
922
922
|
}
|
|
923
|
-
function P(
|
|
924
|
-
if (!
|
|
923
|
+
function P(r) {
|
|
924
|
+
if (!r.entries) return r;
|
|
925
925
|
const c = {};
|
|
926
|
-
return
|
|
926
|
+
return r.forEach((function(u, g) {
|
|
927
927
|
c[g] = u;
|
|
928
928
|
})), c;
|
|
929
929
|
}
|
|
930
|
-
function D(
|
|
931
|
-
if (!
|
|
930
|
+
function D(r, c, u = {}) {
|
|
931
|
+
if (!r) return null;
|
|
932
932
|
let g = { audio: { inbound: [], outbound: [] }, video: { inbound: [], outbound: [] }, connection: { inbound: [], outbound: [] } };
|
|
933
933
|
u.remote && (g.remote = { audio: { inbound: [], outbound: [] }, video: { inbound: [], outbound: [] } });
|
|
934
|
-
for (const b of
|
|
934
|
+
for (const b of r.values()) switch (b.type) {
|
|
935
935
|
case "outbound-rtp": {
|
|
936
936
|
const T = b.mediaType || b.kind, I = {};
|
|
937
937
|
let R = {};
|
|
938
938
|
if (!["audio", "video"].includes(T)) continue;
|
|
939
939
|
if (b.codecId) {
|
|
940
|
-
const
|
|
941
|
-
|
|
940
|
+
const j = r.get(b.codecId);
|
|
941
|
+
j && (I.clockRate = j.clockRate, I.mimeType = j.mimeType, I.payloadType = j.payloadType);
|
|
942
942
|
}
|
|
943
|
-
R =
|
|
943
|
+
R = r.get(b.mediaSourceId) || r.get(b.trackId) || {}, g[T].outbound.push({ ...b, ...I, track: { ...R } });
|
|
944
944
|
break;
|
|
945
945
|
}
|
|
946
946
|
case "inbound-rtp": {
|
|
@@ -952,17 +952,17 @@ var Le, an = Yt((function(t, e) {
|
|
|
952
952
|
T = "audio";
|
|
953
953
|
}
|
|
954
954
|
if (b.codecId) {
|
|
955
|
-
const
|
|
956
|
-
|
|
955
|
+
const j = r.get(b.codecId);
|
|
956
|
+
j && (R.clockRate = j.clockRate, R.mimeType = j.mimeType, R.payloadType = j.payloadType);
|
|
957
957
|
}
|
|
958
958
|
if (!g.connection.id && b.transportId) {
|
|
959
|
-
const
|
|
960
|
-
if (
|
|
961
|
-
const ee =
|
|
962
|
-
g.connection = A(ee,
|
|
959
|
+
const j = r.get(b.transportId);
|
|
960
|
+
if (j && j.selectedCandidatePairId) {
|
|
961
|
+
const ee = r.get(j.selectedCandidatePairId);
|
|
962
|
+
g.connection = A(ee, r);
|
|
963
963
|
}
|
|
964
964
|
}
|
|
965
|
-
I =
|
|
965
|
+
I = r.get(b.mediaSourceId) || r.get(b.trackId) || {}, g[T].inbound.push({ ...b, ...R, track: { ...I } });
|
|
966
966
|
break;
|
|
967
967
|
}
|
|
968
968
|
case "peer-connection":
|
|
@@ -978,14 +978,14 @@ var Le, an = Yt((function(t, e) {
|
|
|
978
978
|
T = "audio";
|
|
979
979
|
}
|
|
980
980
|
if (b.codecId) {
|
|
981
|
-
const R =
|
|
981
|
+
const R = r.get(b.codecId);
|
|
982
982
|
R && (I.clockRate = R.clockRate, I.mimeType = R.mimeType, I.payloadType = R.payloadType);
|
|
983
983
|
}
|
|
984
984
|
if (!g.connection.id && b.transportId) {
|
|
985
|
-
const R =
|
|
985
|
+
const R = r.get(b.transportId);
|
|
986
986
|
if (R && R.selectedCandidatePairId) {
|
|
987
|
-
const
|
|
988
|
-
g.connection = A(
|
|
987
|
+
const j = r.get(R.selectedCandidatePairId);
|
|
988
|
+
g.connection = A(j, r);
|
|
989
989
|
}
|
|
990
990
|
}
|
|
991
991
|
g.remote[T].inbound.push({ ...b, ...I });
|
|
@@ -996,43 +996,43 @@ var Le, an = Yt((function(t, e) {
|
|
|
996
996
|
const T = b.mediaType || b.kind, I = {};
|
|
997
997
|
if (!["audio", "video"].includes(T)) continue;
|
|
998
998
|
if (b.codecId) {
|
|
999
|
-
const R =
|
|
999
|
+
const R = r.get(b.codecId);
|
|
1000
1000
|
R && (I.clockRate = R.clockRate, I.mimeType = R.mimeType, I.payloadType = R.payloadType);
|
|
1001
1001
|
}
|
|
1002
1002
|
g.remote[T].outbound.push({ ...b, ...I });
|
|
1003
1003
|
break;
|
|
1004
1004
|
}
|
|
1005
1005
|
}
|
|
1006
|
-
if (!g.connection.id) for (const b of
|
|
1006
|
+
if (!g.connection.id) for (const b of r.values()) b.type === "candidate-pair" && b.nominated && b.state === "succeeded" && (g.connection = A(b, r));
|
|
1007
1007
|
return g = (function(b, T) {
|
|
1008
1008
|
return T && (b.audio.inbound.map(((I) => {
|
|
1009
|
-
let R = T.audio.inbound.find(((
|
|
1009
|
+
let R = T.audio.inbound.find(((j) => j.id === I.id));
|
|
1010
1010
|
I.bitrate = E(I, R, "bytesReceived"), I.packetRate = E(I, R, "packetsReceived");
|
|
1011
1011
|
})), b.audio.outbound.map(((I) => {
|
|
1012
|
-
let R = T.audio.outbound.find(((
|
|
1012
|
+
let R = T.audio.outbound.find(((j) => j.id === I.id));
|
|
1013
1013
|
I.bitrate = E(I, R, "bytesSent"), I.packetRate = E(I, R, "packetsSent");
|
|
1014
1014
|
})), b.video.inbound.map(((I) => {
|
|
1015
|
-
let R = T.video.inbound.find(((
|
|
1015
|
+
let R = T.video.inbound.find(((j) => j.id === I.id));
|
|
1016
1016
|
I.bitrate = E(I, R, "bytesReceived"), I.packetRate = E(I, R, "packetsReceived");
|
|
1017
1017
|
})), b.video.outbound.map(((I) => {
|
|
1018
|
-
let R = T.video.outbound.find(((
|
|
1018
|
+
let R = T.video.outbound.find(((j) => j.id === I.id));
|
|
1019
1019
|
I.bitrate = E(I, R, "bytesSent"), I.packetRate = E(I, R, "packetsSent");
|
|
1020
1020
|
}))), b;
|
|
1021
1021
|
})(g, c), g;
|
|
1022
1022
|
}
|
|
1023
1023
|
let q, B = {}, x = [];
|
|
1024
1024
|
e.WebRTCStats = class extends s {
|
|
1025
|
-
constructor(
|
|
1025
|
+
constructor(r) {
|
|
1026
1026
|
if (super(), this.monitoringSetInterval = 0, this.connectionMonitoringSetInterval = 0, this.connectionMonitoringInterval = 1e3, this.remote = !0, this.peersToMonitor = {}, this.timeline = [], this.statsToMonitor = ["inbound-rtp", "outbound-rtp", "remote-inbound-rtp", "remote-outbound-rtp", "peer-connection", "data-channel", "stream", "track", "sender", "receiver", "transport", "candidate-pair", "local-candidate", "remote-candidate"], typeof window > "u") throw new Error("WebRTCStats only works in browser");
|
|
1027
|
-
const c = { ...
|
|
1027
|
+
const c = { ...r };
|
|
1028
1028
|
this.isEdge = !!window.RTCIceGatherer, this.getStatsInterval = c.getStatsInterval || 1e3, this.rawStats = !!c.rawStats, this.statsObject = !!c.statsObject, this.filteredStats = !!c.filteredStats, this.shouldWrapGetUserMedia = !!c.wrapGetUserMedia, typeof c.remote == "boolean" && (this.remote = c.remote), this.debug = !!c.debug, this.logLevel = c.logLevel || "none", this.shouldWrapGetUserMedia && this.wrapGetUserMedia();
|
|
1029
1029
|
}
|
|
1030
|
-
async addPeer(
|
|
1031
|
-
return console.warn("The addPeer() method has been deprecated, please use addConnection()"), this.addConnection({ peerId:
|
|
1030
|
+
async addPeer(r, c) {
|
|
1031
|
+
return console.warn("The addPeer() method has been deprecated, please use addConnection()"), this.addConnection({ peerId: r, pc: c });
|
|
1032
1032
|
}
|
|
1033
|
-
async addConnection(
|
|
1034
|
-
const { pc: c, peerId: u } =
|
|
1035
|
-
let { connectionId: g, remote: b } =
|
|
1033
|
+
async addConnection(r) {
|
|
1034
|
+
const { pc: c, peerId: u } = r;
|
|
1035
|
+
let { connectionId: g, remote: b } = r;
|
|
1036
1036
|
if (b = typeof b == "boolean" ? b : this.remote, !(c && c instanceof RTCPeerConnection)) throw new Error("Missing argument 'pc' or is not of instance RTCPeerConnection");
|
|
1037
1037
|
if (!u) throw new Error("Missing argument peerId");
|
|
1038
1038
|
if (this.isEdge) throw new Error("Can't monitor peers in Edge at this time.");
|
|
@@ -1047,28 +1047,28 @@ var Le, an = Yt((function(t, e) {
|
|
|
1047
1047
|
const T = c.getConfiguration();
|
|
1048
1048
|
return T.iceServers && T.iceServers.forEach((function(I) {
|
|
1049
1049
|
delete I.credential;
|
|
1050
|
-
})), g || (g = S()), this.emitEvent({ event: "addConnection", tag: "peer", peerId: u, connectionId: g, data: { options:
|
|
1050
|
+
})), g || (g = S()), this.emitEvent({ event: "addConnection", tag: "peer", peerId: u, connectionId: g, data: { options: r, peerConfiguration: T } }), this.monitorPeer({ peerId: u, connectionId: g, pc: c, remote: b }), { connectionId: g };
|
|
1051
1051
|
}
|
|
1052
|
-
getTimeline(
|
|
1053
|
-
return this.timeline = this.timeline.sort(((c, u) => c.timestamp.getTime() - u.timestamp.getTime())),
|
|
1052
|
+
getTimeline(r) {
|
|
1053
|
+
return this.timeline = this.timeline.sort(((c, u) => c.timestamp.getTime() - u.timestamp.getTime())), r ? this.timeline.filter(((c) => c.tag === r)) : this.timeline;
|
|
1054
1054
|
}
|
|
1055
1055
|
get logger() {
|
|
1056
|
-
const
|
|
1056
|
+
const r = (c) => {
|
|
1057
1057
|
const u = ["none", "error", "warn", "info", "debug"];
|
|
1058
1058
|
return u.slice(0, u.indexOf(this.logLevel) + 1).indexOf(c) > -1;
|
|
1059
1059
|
};
|
|
1060
1060
|
return { error(...c) {
|
|
1061
|
-
this.debug &&
|
|
1061
|
+
this.debug && r("error") && console.error("[webrtc-stats][error] ", ...c);
|
|
1062
1062
|
}, warn(...c) {
|
|
1063
|
-
this.debug &&
|
|
1063
|
+
this.debug && r("warn") && console.warn("[webrtc-stats][warn] ", ...c);
|
|
1064
1064
|
}, info(...c) {
|
|
1065
|
-
this.debug &&
|
|
1065
|
+
this.debug && r("info") && console.log("[webrtc-stats][info] ", ...c);
|
|
1066
1066
|
}, debug(...c) {
|
|
1067
|
-
this.debug &&
|
|
1067
|
+
this.debug && r("debug") && console.debug("[webrtc-stats][debug] ", ...c);
|
|
1068
1068
|
} };
|
|
1069
1069
|
}
|
|
1070
|
-
removeConnection(
|
|
1071
|
-
let c, { connectionId: u, pc: g } =
|
|
1070
|
+
removeConnection(r) {
|
|
1071
|
+
let c, { connectionId: u, pc: g } = r;
|
|
1072
1072
|
if (!g && !u) throw new Error("Missing arguments. You need to either send pc or a connectionId.");
|
|
1073
1073
|
if (u) {
|
|
1074
1074
|
if (typeof u != "string") throw new Error("connectionId must be a string.");
|
|
@@ -1081,24 +1081,24 @@ var Le, an = Yt((function(t, e) {
|
|
|
1081
1081
|
return this.removePeerConnectionEventListeners(u, g), delete this.peersToMonitor[c][u], Object.values(this.peersToMonitor[c]).length === 0 && delete this.peersToMonitor[c], { connectionId: u };
|
|
1082
1082
|
}
|
|
1083
1083
|
removeAllPeers() {
|
|
1084
|
-
for (let
|
|
1084
|
+
for (let r in this.peersToMonitor) this.removePeer(r);
|
|
1085
1085
|
}
|
|
1086
|
-
removePeer(
|
|
1087
|
-
if (this.logger.info(`Removing PeerConnection with id ${
|
|
1088
|
-
for (let c in this.peersToMonitor[
|
|
1089
|
-
let u = this.peersToMonitor[
|
|
1086
|
+
removePeer(r) {
|
|
1087
|
+
if (this.logger.info(`Removing PeerConnection with id ${r}.`), this.peersToMonitor[r]) {
|
|
1088
|
+
for (let c in this.peersToMonitor[r]) {
|
|
1089
|
+
let u = this.peersToMonitor[r][c].pc;
|
|
1090
1090
|
this.removePeerConnectionEventListeners(c, u);
|
|
1091
1091
|
}
|
|
1092
|
-
delete this.peersToMonitor[
|
|
1092
|
+
delete this.peersToMonitor[r];
|
|
1093
1093
|
}
|
|
1094
1094
|
}
|
|
1095
1095
|
destroy() {
|
|
1096
|
-
this.removeAllPeers(), x.forEach(((
|
|
1097
|
-
this.removeTrackEventListeners(
|
|
1096
|
+
this.removeAllPeers(), x.forEach(((r) => {
|
|
1097
|
+
this.removeTrackEventListeners(r);
|
|
1098
1098
|
})), x = [], this.shouldWrapGetUserMedia && q && (navigator.mediaDevices.getUserMedia = q);
|
|
1099
1099
|
}
|
|
1100
|
-
monitorPeer(
|
|
1101
|
-
let { peerId: c, connectionId: u, pc: g, remote: b } =
|
|
1100
|
+
monitorPeer(r) {
|
|
1101
|
+
let { peerId: c, connectionId: u, pc: g, remote: b } = r;
|
|
1102
1102
|
if (!g) return void this.logger.warn("Did not receive pc argument when calling monitorPeer()");
|
|
1103
1103
|
const T = { pc: g, connectionId: u, stream: null, stats: { parsed: null, raw: null }, options: { remote: b } };
|
|
1104
1104
|
if (this.peersToMonitor[c]) {
|
|
@@ -1109,8 +1109,8 @@ var Le, an = Yt((function(t, e) {
|
|
|
1109
1109
|
}
|
|
1110
1110
|
startStatsMonitoring() {
|
|
1111
1111
|
this.monitoringSetInterval || (this.monitoringSetInterval = window.setInterval((() => {
|
|
1112
|
-
this.numberOfMonitoredPeers || this.stopStatsMonitoring(), this.getStats().then(((
|
|
1113
|
-
|
|
1112
|
+
this.numberOfMonitoredPeers || this.stopStatsMonitoring(), this.getStats().then(((r) => {
|
|
1113
|
+
r.forEach(((c) => {
|
|
1114
1114
|
this.emitEvent(c);
|
|
1115
1115
|
}));
|
|
1116
1116
|
}));
|
|
@@ -1119,21 +1119,21 @@ var Le, an = Yt((function(t, e) {
|
|
|
1119
1119
|
stopStatsMonitoring() {
|
|
1120
1120
|
this.monitoringSetInterval && (window.clearInterval(this.monitoringSetInterval), this.monitoringSetInterval = 0);
|
|
1121
1121
|
}
|
|
1122
|
-
async getStats(
|
|
1123
|
-
this.logger.info(
|
|
1122
|
+
async getStats(r = null) {
|
|
1123
|
+
this.logger.info(r ? `Getting stats from peer ${r}` : "Getting stats from all peers");
|
|
1124
1124
|
let c = {};
|
|
1125
|
-
if (
|
|
1126
|
-
if (!this.peersToMonitor[
|
|
1127
|
-
c[
|
|
1125
|
+
if (r) {
|
|
1126
|
+
if (!this.peersToMonitor[r]) throw new Error(`Cannot get stats. Peer with id ${r} does not exist`);
|
|
1127
|
+
c[r] = this.peersToMonitor[r];
|
|
1128
1128
|
} else c = this.peersToMonitor;
|
|
1129
1129
|
let u = [];
|
|
1130
1130
|
for (const g in c) for (const b in c[g]) {
|
|
1131
1131
|
const T = c[g][b], I = T.pc;
|
|
1132
1132
|
if (I && !this.checkIfConnectionIsClosed(g, b, I)) try {
|
|
1133
|
-
const R = this.getTimestamp(),
|
|
1134
|
-
if (
|
|
1135
|
-
const ee = await
|
|
1136
|
-
this.rawStats === !0 && (
|
|
1133
|
+
const R = this.getTimestamp(), j = I.getStats(null);
|
|
1134
|
+
if (j) {
|
|
1135
|
+
const ee = await j, ne = this.getTimestamp(), G = P(ee), m = { remote: T.options.remote }, M = D(ee, T.stats.parsed, m), U = { event: "stats", tag: "stats", peerId: g, connectionId: b, timeTaken: ne - R, data: M };
|
|
1136
|
+
this.rawStats === !0 && (U.rawStats = ee), this.statsObject === !0 && (U.statsObject = G), this.filteredStats === !0 && (U.filteredStats = this.filteroutStats(G)), u.push(U), T.stats.parsed = M;
|
|
1137
1137
|
} else this.logger.error(`PeerConnection from peer ${g} did not return any stats data`);
|
|
1138
1138
|
} catch (R) {
|
|
1139
1139
|
this.logger.error(R);
|
|
@@ -1144,23 +1144,23 @@ var Le, an = Yt((function(t, e) {
|
|
|
1144
1144
|
startConnectionStateMonitoring() {
|
|
1145
1145
|
this.connectionMonitoringSetInterval = window.setInterval((() => {
|
|
1146
1146
|
this.numberOfMonitoredPeers || this.stopConnectionStateMonitoring();
|
|
1147
|
-
for (const
|
|
1148
|
-
const u = this.peersToMonitor[
|
|
1149
|
-
this.checkIfConnectionIsClosed(
|
|
1147
|
+
for (const r in this.peersToMonitor) for (const c in this.peersToMonitor[r]) {
|
|
1148
|
+
const u = this.peersToMonitor[r][c].pc;
|
|
1149
|
+
this.checkIfConnectionIsClosed(r, c, u);
|
|
1150
1150
|
}
|
|
1151
1151
|
}), this.connectionMonitoringInterval);
|
|
1152
1152
|
}
|
|
1153
|
-
checkIfConnectionIsClosed(
|
|
1153
|
+
checkIfConnectionIsClosed(r, c, u) {
|
|
1154
1154
|
const g = this.isConnectionClosed(u);
|
|
1155
1155
|
if (g) {
|
|
1156
1156
|
this.removeConnection({ pc: u });
|
|
1157
1157
|
let b = u.connectionState === "closed" ? "onconnectionstatechange" : "oniceconnectionstatechange";
|
|
1158
|
-
this.emitEvent({ event: b, peerId:
|
|
1158
|
+
this.emitEvent({ event: b, peerId: r, connectionId: c, tag: "connection", data: "closed" });
|
|
1159
1159
|
}
|
|
1160
1160
|
return g;
|
|
1161
1161
|
}
|
|
1162
|
-
isConnectionClosed(
|
|
1163
|
-
return
|
|
1162
|
+
isConnectionClosed(r) {
|
|
1163
|
+
return r.connectionState === "closed" || r.iceConnectionState === "closed";
|
|
1164
1164
|
}
|
|
1165
1165
|
stopConnectionStateMonitoring() {
|
|
1166
1166
|
this.connectionMonitoringSetInterval && (window.clearInterval(this.connectionMonitoringSetInterval), this.connectionMonitoringSetInterval = 0);
|
|
@@ -1168,13 +1168,13 @@ var Le, an = Yt((function(t, e) {
|
|
|
1168
1168
|
wrapGetUserMedia() {
|
|
1169
1169
|
if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) return void this.logger.warn("'navigator.mediaDevices.getUserMedia' is not available in browser. Will not wrap getUserMedia.");
|
|
1170
1170
|
this.logger.info("Wrapping getUsermedia functions."), q = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);
|
|
1171
|
-
const
|
|
1171
|
+
const r = this.parseGetUserMedia.bind(this);
|
|
1172
1172
|
navigator.mediaDevices.getUserMedia = (function() {
|
|
1173
|
-
return
|
|
1173
|
+
return r({ constraints: arguments[0] }), q.apply(navigator.mediaDevices, arguments).then(((c) => (r({ stream: c }), c)), ((c) => (r({ error: c }), Promise.reject(c))));
|
|
1174
1174
|
}).bind(navigator.mediaDevices);
|
|
1175
1175
|
}
|
|
1176
|
-
filteroutStats(
|
|
1177
|
-
const c = { ...
|
|
1176
|
+
filteroutStats(r = {}) {
|
|
1177
|
+
const c = { ...r };
|
|
1178
1178
|
for (const g in c) {
|
|
1179
1179
|
var u = c[g];
|
|
1180
1180
|
this.statsToMonitor.includes(u.type) || delete c[g];
|
|
@@ -1182,105 +1182,105 @@ var Le, an = Yt((function(t, e) {
|
|
|
1182
1182
|
return c;
|
|
1183
1183
|
}
|
|
1184
1184
|
get peerConnectionListeners() {
|
|
1185
|
-
return { icecandidate: (
|
|
1186
|
-
this.logger.debug("[pc-event] icecandidate | peerId: ${peerId}", g), this.emitEvent({ event: "onicecandidate", tag: "connection", peerId:
|
|
1187
|
-
}, track: (
|
|
1188
|
-
this.logger.debug(`[pc-event] track | peerId: ${
|
|
1185
|
+
return { icecandidate: (r, c, u, g) => {
|
|
1186
|
+
this.logger.debug("[pc-event] icecandidate | peerId: ${peerId}", g), this.emitEvent({ event: "onicecandidate", tag: "connection", peerId: r, connectionId: c, data: g.candidate });
|
|
1187
|
+
}, track: (r, c, u, g) => {
|
|
1188
|
+
this.logger.debug(`[pc-event] track | peerId: ${r}`, g);
|
|
1189
1189
|
const b = g.track, T = g.streams[0];
|
|
1190
|
-
|
|
1190
|
+
r in this.peersToMonitor && c in this.peersToMonitor[r] && (this.peersToMonitor[r][c].stream = T), this.addTrackEventListeners(b, c), this.emitEvent({ event: "ontrack", tag: "track", peerId: r, connectionId: c, data: { stream: T ? this.getStreamDetails(T) : null, track: b ? this.getMediaTrackDetails(b) : null, title: g.track.kind + ":" + g.track.id + " " + g.streams.map((function(I) {
|
|
1191
1191
|
return "stream:" + I.id;
|
|
1192
1192
|
})) } });
|
|
1193
|
-
}, signalingstatechange: (
|
|
1194
|
-
this.logger.debug(`[pc-event] signalingstatechange | peerId: ${
|
|
1195
|
-
}, iceconnectionstatechange: (
|
|
1196
|
-
this.logger.debug(`[pc-event] iceconnectionstatechange | peerId: ${
|
|
1197
|
-
}, icegatheringstatechange: (
|
|
1198
|
-
this.logger.debug(`[pc-event] icegatheringstatechange | peerId: ${
|
|
1199
|
-
}, icecandidateerror: (
|
|
1200
|
-
this.logger.debug(`[pc-event] icecandidateerror | peerId: ${
|
|
1201
|
-
}, connectionstatechange: (
|
|
1202
|
-
this.logger.debug(`[pc-event] connectionstatechange | peerId: ${
|
|
1203
|
-
}, negotiationneeded: (
|
|
1204
|
-
this.logger.debug(`[pc-event] negotiationneeded | peerId: ${
|
|
1205
|
-
}, datachannel: (
|
|
1206
|
-
this.logger.debug(`[pc-event] datachannel | peerId: ${
|
|
1193
|
+
}, signalingstatechange: (r, c, u) => {
|
|
1194
|
+
this.logger.debug(`[pc-event] signalingstatechange | peerId: ${r}`), this.emitEvent({ event: "onsignalingstatechange", tag: "connection", peerId: r, connectionId: c, data: { signalingState: u.signalingState, localDescription: u.localDescription, remoteDescription: u.remoteDescription } });
|
|
1195
|
+
}, iceconnectionstatechange: (r, c, u) => {
|
|
1196
|
+
this.logger.debug(`[pc-event] iceconnectionstatechange | peerId: ${r}`), this.emitEvent({ event: "oniceconnectionstatechange", tag: "connection", peerId: r, connectionId: c, data: u.iceConnectionState });
|
|
1197
|
+
}, icegatheringstatechange: (r, c, u) => {
|
|
1198
|
+
this.logger.debug(`[pc-event] icegatheringstatechange | peerId: ${r}`), this.emitEvent({ event: "onicegatheringstatechange", tag: "connection", peerId: r, connectionId: c, data: u.iceGatheringState });
|
|
1199
|
+
}, icecandidateerror: (r, c, u, g) => {
|
|
1200
|
+
this.logger.debug(`[pc-event] icecandidateerror | peerId: ${r}`), this.emitEvent({ event: "onicecandidateerror", tag: "connection", peerId: r, connectionId: c, error: { errorCode: g.errorCode } });
|
|
1201
|
+
}, connectionstatechange: (r, c, u) => {
|
|
1202
|
+
this.logger.debug(`[pc-event] connectionstatechange | peerId: ${r}`), this.emitEvent({ event: "onconnectionstatechange", tag: "connection", peerId: r, connectionId: c, data: u.connectionState });
|
|
1203
|
+
}, negotiationneeded: (r, c, u) => {
|
|
1204
|
+
this.logger.debug(`[pc-event] negotiationneeded | peerId: ${r}`), this.emitEvent({ event: "onnegotiationneeded", tag: "connection", peerId: r, connectionId: c });
|
|
1205
|
+
}, datachannel: (r, c, u, g) => {
|
|
1206
|
+
this.logger.debug(`[pc-event] datachannel | peerId: ${r}`, g), this.emitEvent({ event: "ondatachannel", tag: "datachannel", peerId: r, connectionId: c, data: g.channel });
|
|
1207
1207
|
} };
|
|
1208
1208
|
}
|
|
1209
|
-
addPeerConnectionEventListeners(
|
|
1210
|
-
this.logger.debug(`Adding event listeners for peer ${
|
|
1211
|
-
B[c][g] = this.peerConnectionListeners[g].bind(this,
|
|
1209
|
+
addPeerConnectionEventListeners(r, c, u) {
|
|
1210
|
+
this.logger.debug(`Adding event listeners for peer ${r} and connection ${c}.`), B[c] = {}, Object.keys(this.peerConnectionListeners).forEach(((g) => {
|
|
1211
|
+
B[c][g] = this.peerConnectionListeners[g].bind(this, r, c, u), u.addEventListener(g, B[c][g], !1);
|
|
1212
1212
|
}));
|
|
1213
1213
|
}
|
|
1214
|
-
parseGetUserMedia(
|
|
1214
|
+
parseGetUserMedia(r) {
|
|
1215
1215
|
try {
|
|
1216
|
-
const c = { event: "getUserMedia", tag: "getUserMedia", data: { ...
|
|
1217
|
-
|
|
1216
|
+
const c = { event: "getUserMedia", tag: "getUserMedia", data: { ...r } };
|
|
1217
|
+
r.stream && (c.data.details = this.parseStream(r.stream), r.stream.getTracks().map(((u) => {
|
|
1218
1218
|
this.addTrackEventListeners(u), x.push(u);
|
|
1219
1219
|
}))), this.emitEvent(c);
|
|
1220
1220
|
} catch {
|
|
1221
1221
|
}
|
|
1222
1222
|
}
|
|
1223
|
-
parseStream(
|
|
1223
|
+
parseStream(r) {
|
|
1224
1224
|
const c = { audio: [], video: [] };
|
|
1225
|
-
return
|
|
1225
|
+
return r.getTracks().forEach(((u) => {
|
|
1226
1226
|
c[u.kind].push(this.getMediaTrackDetails(u));
|
|
1227
1227
|
})), c;
|
|
1228
1228
|
}
|
|
1229
|
-
getMediaTrackDetails(
|
|
1230
|
-
return { enabled:
|
|
1229
|
+
getMediaTrackDetails(r) {
|
|
1230
|
+
return { enabled: r.enabled, id: r.id, contentHint: r.contentHint, kind: r.kind, label: r.label, muted: r.muted, readyState: r.readyState, constructorName: r.constructor.name, capabilities: r.getCapabilities ? r.getCapabilities() : {}, constraints: r.getConstraints ? r.getConstraints() : {}, settings: r.getSettings ? r.getSettings() : {}, _track: r };
|
|
1231
1231
|
}
|
|
1232
|
-
getStreamDetails(
|
|
1233
|
-
return { active:
|
|
1232
|
+
getStreamDetails(r) {
|
|
1233
|
+
return { active: r.active, id: r.id, _stream: r };
|
|
1234
1234
|
}
|
|
1235
|
-
getTrackEventObject(
|
|
1235
|
+
getTrackEventObject(r) {
|
|
1236
1236
|
return { mute: (c) => {
|
|
1237
|
-
this.emitEvent({ event: "mute", tag: "track", connectionId:
|
|
1237
|
+
this.emitEvent({ event: "mute", tag: "track", connectionId: r, data: { event: c } });
|
|
1238
1238
|
}, unmute: (c) => {
|
|
1239
|
-
this.emitEvent({ event: "unmute", tag: "track", connectionId:
|
|
1239
|
+
this.emitEvent({ event: "unmute", tag: "track", connectionId: r, data: { event: c } });
|
|
1240
1240
|
}, overconstrained: (c) => {
|
|
1241
|
-
this.emitEvent({ event: "overconstrained", tag: "track", connectionId:
|
|
1241
|
+
this.emitEvent({ event: "overconstrained", tag: "track", connectionId: r, data: { event: c } });
|
|
1242
1242
|
}, ended: (c) => {
|
|
1243
|
-
this.emitEvent({ event: "ended", tag: "track", connectionId:
|
|
1243
|
+
this.emitEvent({ event: "ended", tag: "track", connectionId: r, data: { event: c } }), this.removeTrackEventListeners(c.target);
|
|
1244
1244
|
} };
|
|
1245
1245
|
}
|
|
1246
|
-
addTrackEventListeners(
|
|
1247
|
-
B[
|
|
1246
|
+
addTrackEventListeners(r, c) {
|
|
1247
|
+
B[r.id] = {};
|
|
1248
1248
|
const u = this.getTrackEventObject(c);
|
|
1249
1249
|
Object.keys(u).forEach(((g) => {
|
|
1250
|
-
B[
|
|
1251
|
-
})), B[
|
|
1252
|
-
if (
|
|
1250
|
+
B[r.id][g] = u[g].bind(this), r.addEventListener(g, B[r.id][g]);
|
|
1251
|
+
})), B[r.id].readyState = setInterval((() => {
|
|
1252
|
+
if (r.readyState === "ended") {
|
|
1253
1253
|
let g = new CustomEvent("ended", { detail: { check: "readyState" } });
|
|
1254
|
-
|
|
1254
|
+
r.dispatchEvent(g);
|
|
1255
1255
|
}
|
|
1256
1256
|
}), 1e3);
|
|
1257
1257
|
}
|
|
1258
|
-
removeTrackEventListeners(
|
|
1259
|
-
if (
|
|
1258
|
+
removeTrackEventListeners(r) {
|
|
1259
|
+
if (r.id in B) {
|
|
1260
1260
|
const c = this.getTrackEventObject();
|
|
1261
1261
|
Object.keys(c).forEach(((u) => {
|
|
1262
|
-
|
|
1263
|
-
})), clearInterval(B[
|
|
1262
|
+
r.removeEventListener(u, B[r.id][u]);
|
|
1263
|
+
})), clearInterval(B[r.id].readyState), delete B[r.id];
|
|
1264
1264
|
}
|
|
1265
1265
|
}
|
|
1266
|
-
addToTimeline(
|
|
1267
|
-
this.timeline.push(
|
|
1266
|
+
addToTimeline(r) {
|
|
1267
|
+
this.timeline.push(r), this.emit("timeline", r);
|
|
1268
1268
|
}
|
|
1269
|
-
emitEvent(
|
|
1270
|
-
const c = { ...
|
|
1269
|
+
emitEvent(r) {
|
|
1270
|
+
const c = { ...r, timestamp: /* @__PURE__ */ new Date() };
|
|
1271
1271
|
this.addToTimeline(c), c.tag && this.emit(c.tag, c);
|
|
1272
1272
|
}
|
|
1273
|
-
set getStatsInterval(
|
|
1274
|
-
if (!Number.isInteger(
|
|
1275
|
-
this._getStatsInterval =
|
|
1273
|
+
set getStatsInterval(r) {
|
|
1274
|
+
if (!Number.isInteger(r)) throw new Error(`getStatsInterval should be an integer, got: ${r}`);
|
|
1275
|
+
this._getStatsInterval = r, this.monitoringSetInterval && (this.stopStatsMonitoring(), this.startStatsMonitoring());
|
|
1276
1276
|
}
|
|
1277
1277
|
get numberOfMonitoredPeers() {
|
|
1278
1278
|
return Object.keys(this.peersToMonitor).length;
|
|
1279
1279
|
}
|
|
1280
|
-
removePeerConnectionEventListeners(
|
|
1281
|
-
|
|
1282
|
-
c.removeEventListener(u, B[
|
|
1283
|
-
})), delete B[
|
|
1280
|
+
removePeerConnectionEventListeners(r, c) {
|
|
1281
|
+
r in B && (Object.keys(this.peerConnectionListeners).forEach(((u) => {
|
|
1282
|
+
c.removeEventListener(u, B[r][u], !1);
|
|
1283
|
+
})), delete B[r]), c.getSenders().forEach(((u) => {
|
|
1284
1284
|
u.track && this.removeTrackEventListeners(u.track);
|
|
1285
1285
|
})), c.getReceivers().forEach(((u) => {
|
|
1286
1286
|
u.track && this.removeTrackEventListeners(u.track);
|
|
@@ -1290,13 +1290,13 @@ var Le, an = Yt((function(t, e) {
|
|
|
1290
1290
|
return Date.now();
|
|
1291
1291
|
}
|
|
1292
1292
|
wrapGetDisplayMedia() {
|
|
1293
|
-
const
|
|
1293
|
+
const r = this;
|
|
1294
1294
|
if (navigator.mediaDevices && navigator.mediaDevices.getDisplayMedia) {
|
|
1295
1295
|
const c = navigator.mediaDevices.getDisplayMedia.bind(navigator.mediaDevices), u = function() {
|
|
1296
|
-
return
|
|
1296
|
+
return r.debug("navigator.mediaDevices.getDisplayMedia", null, arguments[0]), c.apply(navigator.mediaDevices, arguments).then((function(g) {
|
|
1297
1297
|
return g;
|
|
1298
1298
|
}), (function(g) {
|
|
1299
|
-
return
|
|
1299
|
+
return r.debug("navigator.mediaDevices.getDisplayMediaOnFailure", null, g.name), Promise.reject(g);
|
|
1300
1300
|
}));
|
|
1301
1301
|
};
|
|
1302
1302
|
navigator.mediaDevices.getDisplayMedia = u.bind(navigator.mediaDevices);
|
|
@@ -1304,93 +1304,93 @@ var Le, an = Yt((function(t, e) {
|
|
|
1304
1304
|
}
|
|
1305
1305
|
};
|
|
1306
1306
|
}));
|
|
1307
|
-
(
|
|
1308
|
-
var
|
|
1309
|
-
function
|
|
1310
|
-
const { packetsLost: e, packetsReceived: n, jitter: i, rtt: s } = t,
|
|
1307
|
+
(Oe = rn) && Oe.__esModule && Object.prototype.hasOwnProperty.call(Oe, "default") && Oe.default;
|
|
1308
|
+
var si = rn.WebRTCStats;
|
|
1309
|
+
function oi(t) {
|
|
1310
|
+
const { packetsLost: e, packetsReceived: n, jitter: i, rtt: s } = t, a = (function(h) {
|
|
1311
1311
|
const { jitter: f, rtt: v } = h, _ = f + v / 2;
|
|
1312
1312
|
return 0.024 * _ + 0.11 * (_ - 177.3) * (_ > 177.3 ? 1 : 0);
|
|
1313
1313
|
})({ rtt: s, jitter: i }), o = (function(h) {
|
|
1314
1314
|
const { packetsLost: f, packetsReceived: v } = h, _ = f / (v + f) * 100;
|
|
1315
1315
|
return 20 * Math.log(1 + _);
|
|
1316
|
-
})({ packetsLost: e, packetsReceived: n }), l = 93.2 -
|
|
1316
|
+
})({ packetsLost: e, packetsReceived: n }), l = 93.2 - a - o + 0, d = 1 + 0.035 * l + 7e-6 * l * (l - 60) * (100 - l);
|
|
1317
1317
|
return Math.min(Math.max(d, 1), 5);
|
|
1318
1318
|
}
|
|
1319
|
-
function
|
|
1319
|
+
function ri(t) {
|
|
1320
1320
|
return isNaN(t) ? null : t > 4.2 ? "excellent" : t >= 4.1 && t <= 4.2 ? "good" : t >= 3.7 && t <= 4 ? "fair" : t >= 3.1 && t <= 3.6 ? "poor" : "bad";
|
|
1321
1321
|
}
|
|
1322
|
-
class
|
|
1322
|
+
class ai extends Re {
|
|
1323
1323
|
constructor(e, n) {
|
|
1324
1324
|
super(), this.buildRequest({ type: "debug_report_start", debug_report_id: e, debug_report_version: 1, call_id: n });
|
|
1325
1325
|
}
|
|
1326
1326
|
}
|
|
1327
|
-
class
|
|
1327
|
+
class ci extends Re {
|
|
1328
1328
|
constructor(e, n) {
|
|
1329
1329
|
super(), this.buildRequest({ type: "debug_report_stop", debug_report_id: e, debug_report_version: 1, call_id: n });
|
|
1330
1330
|
}
|
|
1331
1331
|
}
|
|
1332
|
-
class
|
|
1332
|
+
class li extends Re {
|
|
1333
1333
|
constructor(e, n) {
|
|
1334
1334
|
super(), this.buildRequest({ type: "debug_report_data", debug_report_id: e, debug_report_version: 1, debug_report_data: n });
|
|
1335
1335
|
}
|
|
1336
1336
|
}
|
|
1337
|
-
function
|
|
1337
|
+
function Rt(t, e) {
|
|
1338
1338
|
var n, i;
|
|
1339
1339
|
return { errorCode: t.errorCode, errorText: t.errorText, url: t.url, address: t.address, port: t.port, connectionState: e.connectionState, iceConnectionState: e.iceConnectionState, iceGatheringState: e.iceGatheringState, signalingState: e.signalingState, localDescriptionType: (n = e.localDescription) === null || n === void 0 ? void 0 : n.type, remoteDescriptionType: (i = e.remoteDescription) === null || i === void 0 ? void 0 : i.type };
|
|
1340
1340
|
}
|
|
1341
|
-
function
|
|
1342
|
-
const n = me(), i = new
|
|
1343
|
-
|
|
1341
|
+
function di(t, e) {
|
|
1342
|
+
const n = me(), i = new si({ getStatsInterval: 1e3, rawStats: !1, statsObject: !0, filteredStats: !1, remote: !0, debug: !1, logLevel: "warn" }), s = (a) => O(this, void 0, void 0, (function* () {
|
|
1343
|
+
a.event === "stats" && F(L.StatsFrame, (function({ data: o }) {
|
|
1344
1344
|
var l, d, h, f, v, _, w, C;
|
|
1345
|
-
const { audio: k, remote: p } = o, { audio: S } = p, A = (d = (l = S.inbound[0]) === null || l === void 0 ? void 0 : l.jitter) !== null && d !== void 0 ? d : 1 / 0, E = (f = (h = S.inbound[0]) === null || h === void 0 ? void 0 : h.roundTripTime) !== null && f !== void 0 ? f : 1 / 0, P = (_ = (v = k.inbound[0]) === null || v === void 0 ? void 0 : v.packetsReceived) !== null && _ !== void 0 ? _ : -1, D = (C = (w = k.inbound[0]) === null || w === void 0 ? void 0 : w.packetsLost) !== null && C !== void 0 ? C : -1, q =
|
|
1346
|
-
return { jitter: A, rtt: E, mos: q, quality:
|
|
1347
|
-
})(
|
|
1345
|
+
const { audio: k, remote: p } = o, { audio: S } = p, A = (d = (l = S.inbound[0]) === null || l === void 0 ? void 0 : l.jitter) !== null && d !== void 0 ? d : 1 / 0, E = (f = (h = S.inbound[0]) === null || h === void 0 ? void 0 : h.roundTripTime) !== null && f !== void 0 ? f : 1 / 0, P = (_ = (v = k.inbound[0]) === null || v === void 0 ? void 0 : v.packetsReceived) !== null && _ !== void 0 ? _ : -1, D = (C = (w = k.inbound[0]) === null || w === void 0 ? void 0 : w.packetsLost) !== null && C !== void 0 ? C : -1, q = oi({ jitter: 1e3 * A, rtt: 1e3 * E, packetsLost: D, packetsReceived: P });
|
|
1346
|
+
return { jitter: A, rtt: E, mos: q, quality: ri(q), inboundAudio: k.inbound[0], outboundAudio: k.outbound[0], remoteInboundAudio: S.inbound[0], remoteOutboundAudio: S.outbound[0] };
|
|
1347
|
+
})(a), t.uuid), yield t.execute(new li(n, a));
|
|
1348
1348
|
}));
|
|
1349
|
-
return { start: (
|
|
1350
|
-
yield t.execute(new
|
|
1351
|
-
})), stop: (
|
|
1349
|
+
return { start: (a, o, l) => O(this, void 0, void 0, (function* () {
|
|
1350
|
+
yield t.execute(new ai(n, e)), i.on("timeline", s), yield new Promise(((d) => setTimeout(d, 500))), i.addConnection({ pc: a, peerId: o, connectionId: l });
|
|
1351
|
+
})), stop: (a) => O(this, void 0, void 0, (function* () {
|
|
1352
1352
|
const o = i.getTimeline();
|
|
1353
|
-
|
|
1353
|
+
F(L.StatsReport, o, t.uuid), a === "file" && (function(l, d) {
|
|
1354
1354
|
const h = new Blob([JSON.stringify(l)], { type: "application/json" }), f = URL.createObjectURL(h), v = document.createElement("a");
|
|
1355
1355
|
v.href = f, v.download = `${d}.json`, v.click(), URL.revokeObjectURL(f);
|
|
1356
|
-
})(o, `webrtc-stats-${n}-${Date.now()}`), yield t.execute(new
|
|
1357
|
-
})), reportConnectionStateChange: (
|
|
1358
|
-
const o = { event: "connectionstatechange-detailed", tag: "connection", timestamp: (/* @__PURE__ */ new Date()).toISOString(), data:
|
|
1356
|
+
})(o, `webrtc-stats-${n}-${Date.now()}`), yield t.execute(new ci(n, e)), i.removeAllPeers(), i.destroy();
|
|
1357
|
+
})), reportConnectionStateChange: (a) => {
|
|
1358
|
+
const o = { event: "connectionstatechange-detailed", tag: "connection", timestamp: (/* @__PURE__ */ new Date()).toISOString(), data: a };
|
|
1359
1359
|
s(o);
|
|
1360
|
-
}, reportIceCandidateError: (
|
|
1361
|
-
const o = { event: "icecandidateerror-detailed", tag: "connection", timestamp: (/* @__PURE__ */ new Date()).toISOString(), data:
|
|
1360
|
+
}, reportIceCandidateError: (a) => {
|
|
1361
|
+
const o = { event: "icecandidateerror-detailed", tag: "connection", timestamp: (/* @__PURE__ */ new Date()).toISOString(), data: a };
|
|
1362
1362
|
s(o);
|
|
1363
1363
|
} };
|
|
1364
1364
|
}
|
|
1365
|
-
const
|
|
1366
|
-
const { contentType: n, canvasType: i, callID: s, canvasInfo:
|
|
1367
|
-
|
|
1368
|
-
const l = { type: oe.conferenceUpdate, call: t.calls[s], canvasInfo:
|
|
1365
|
+
const an = (t, e) => {
|
|
1366
|
+
const { contentType: n, canvasType: i, callID: s, canvasInfo: a = null, currentLayerIdx: o = -1 } = e;
|
|
1367
|
+
a && i !== "mcu-personal-canvas" && delete a.memberID;
|
|
1368
|
+
const l = { type: oe.conferenceUpdate, call: t.calls[s], canvasInfo: ui(a), currentLayerIdx: o };
|
|
1369
1369
|
switch (n) {
|
|
1370
1370
|
case "layer-info": {
|
|
1371
1371
|
const d = Object.assign({ action: se.LayerInfo }, l);
|
|
1372
|
-
|
|
1372
|
+
F(L.Notification, d, t.uuid);
|
|
1373
1373
|
break;
|
|
1374
1374
|
}
|
|
1375
1375
|
case "layout-info": {
|
|
1376
1376
|
const d = Object.assign({ action: se.LayoutInfo }, l);
|
|
1377
|
-
|
|
1377
|
+
F(L.Notification, d, t.uuid);
|
|
1378
1378
|
break;
|
|
1379
1379
|
}
|
|
1380
1380
|
}
|
|
1381
|
-
},
|
|
1381
|
+
}, ui = (t) => {
|
|
1382
1382
|
const e = JSON.stringify(t).replace(/memberID/g, "participantId").replace(/ID"/g, 'Id"').replace(/POS"/g, 'Pos"');
|
|
1383
|
-
return
|
|
1383
|
+
return Yt(e);
|
|
1384
1384
|
};
|
|
1385
|
-
class
|
|
1386
|
-
constructor(e, n, i, s,
|
|
1387
|
-
this.type = e, this.options = n, this.onSdpReadyTwice = null, this.statsReporter = null, this._negotiating = !1, this._prevConnectionState = null, this._restartedIceOnConnectionStateFailed = !1, this._sleepWakeupIntervalId = null, this.handleConnectionStateChange = (o) =>
|
|
1385
|
+
class xt {
|
|
1386
|
+
constructor(e, n, i, s, a) {
|
|
1387
|
+
this.type = e, this.options = n, this.onSdpReadyTwice = null, this.statsReporter = null, this._negotiating = !1, this._prevConnectionState = null, this._restartedIceOnConnectionStateFailed = !1, this._sleepWakeupIntervalId = null, this.handleConnectionStateChange = (o) => O(this, void 0, void 0, (function* () {
|
|
1388
1388
|
const { connectionState: l } = this.instance;
|
|
1389
1389
|
if (y.info(`[${(/* @__PURE__ */ new Date()).toISOString()}] Connection State changed: ${this._prevConnectionState} -> ${l}`), l === "failed" || l === "disconnected") {
|
|
1390
|
-
const d = () =>
|
|
1390
|
+
const d = () => O(this, void 0, void 0, (function* () {
|
|
1391
1391
|
if (this.isDebugEnabled && this.statsReporter) {
|
|
1392
1392
|
const h = yield (function(f, v) {
|
|
1393
|
-
return
|
|
1393
|
+
return O(this, void 0, void 0, (function* () {
|
|
1394
1394
|
const _ = { connectionState: f.connectionState, previousConnectionState: v, iceConnectionState: f.iceConnectionState, iceGatheringState: f.iceGatheringState, signalingState: f.signalingState }, w = f.getTransceivers();
|
|
1395
1395
|
if (w.length > 0) {
|
|
1396
1396
|
const C = w[0].sender, k = C?.transport;
|
|
@@ -1412,7 +1412,7 @@ class Ot {
|
|
|
1412
1412
|
})(this.instance, this._prevConnectionState);
|
|
1413
1413
|
this.statsReporter.reportConnectionStateChange(h);
|
|
1414
1414
|
}
|
|
1415
|
-
this._restartedIceOnConnectionStateFailed ? (y.debug("Peer Connection failed again after ICE restart. Recovering call via peer reconnection through error handling."),
|
|
1415
|
+
this._restartedIceOnConnectionStateFailed ? (y.debug("Peer Connection failed again after ICE restart. Recovering call via peer reconnection through error handling."), F(L.PeerConnectionFailureError, { error: new Error(`Peer Connection failed twice. previous state: ${this._prevConnectionState}, current state: ${l}`), sessionId: this._session.sessionid }, this.options.id)) : (this.instance.restartIce(), l === "failed" && (this._restartedIceOnConnectionStateFailed = !0, y.debug("ICE has been restarted on connection state failed.")), this._isTrickleIce() ? yield this.startTrickleIceNegotiation() : this.startNegotiation()), window.removeEventListener("online", d);
|
|
1416
1416
|
}));
|
|
1417
1417
|
navigator.onLine ? d() : window.addEventListener("online", d);
|
|
1418
1418
|
}
|
|
@@ -1423,7 +1423,7 @@ class Ot {
|
|
|
1423
1423
|
y.debug(`[${(/* @__PURE__ */ new Date()).toISOString()}] ICE Gathering State`, this.instance.iceGatheringState);
|
|
1424
1424
|
}, this._setCodecs = (o, l) => {
|
|
1425
1425
|
if (o.setCodecPreferences) return o.setCodecPreferences(l);
|
|
1426
|
-
}, y.info("New Peer with type:", this.type, "Options:", this.options), this._constraints = { offerToReceiveAudio: !0, offerToReceiveVideo: !!n.video }, this._sdpReady = this._sdpReady.bind(this), this.handleSignalingStateChangeEvent = this.handleSignalingStateChangeEvent.bind(this), this.handleNegotiationNeededEvent = this.handleNegotiationNeededEvent.bind(this), this.handleTrackEvent = this.handleTrackEvent.bind(this), this.createPeerConnection = this.createPeerConnection.bind(this), this._session = i, this._trickleIceSdpFn = s, this._registerPeerEvents =
|
|
1426
|
+
}, y.info("New Peer with type:", this.type, "Options:", this.options), this._constraints = { offerToReceiveAudio: !0, offerToReceiveVideo: !!n.video }, this._sdpReady = this._sdpReady.bind(this), this.handleSignalingStateChangeEvent = this.handleSignalingStateChangeEvent.bind(this), this.handleNegotiationNeededEvent = this.handleNegotiationNeededEvent.bind(this), this.handleTrackEvent = this.handleTrackEvent.bind(this), this.createPeerConnection = this.createPeerConnection.bind(this), this._session = i, this._trickleIceSdpFn = s, this._registerPeerEvents = a;
|
|
1427
1427
|
}
|
|
1428
1428
|
get isOffer() {
|
|
1429
1429
|
return this.type === K.Offer;
|
|
@@ -1444,7 +1444,7 @@ class Ot {
|
|
|
1444
1444
|
performance.mark("ice-gathering-start"), this._negotiating = !0, this._isOffer() ? this._createOffer() : this._createAnswer();
|
|
1445
1445
|
}
|
|
1446
1446
|
startTrickleIceNegotiation() {
|
|
1447
|
-
return
|
|
1447
|
+
return O(this, void 0, void 0, (function* () {
|
|
1448
1448
|
performance.mark("ice-gathering-start"), this._negotiating = !0, this._isOffer() ? yield this._createOffer().then(this._trickleIceSdpFn.bind(this)) : yield this._createAnswer().then(this._trickleIceSdpFn.bind(this));
|
|
1449
1449
|
}));
|
|
1450
1450
|
}
|
|
@@ -1454,8 +1454,8 @@ class Ot {
|
|
|
1454
1454
|
}));
|
|
1455
1455
|
}
|
|
1456
1456
|
get trickleIcePerformanceMetrics() {
|
|
1457
|
-
const e = performance.measure("new-call", "new-call-start", "new-call-end"), n = performance.measure("peer-creation", "peer-creation-start", "peer-creation-end"), i = performance.measure("ice-gathering", "ice-gathering-start", "ice-gathering-end"), s = performance.measure("sdp-send", "sdp-send-start", "sdp-send-end"),
|
|
1458
|
-
return { "New Call": { duration: l(e.duration) }, "Peer Creation": { duration: l(n.duration) }, "ICE Gathering": { duration: l(i.duration) }, [this._isOffer() ? "Invite Send" : "Answer Send"]: { duration: l(
|
|
1457
|
+
const e = performance.measure("new-call", "new-call-start", "new-call-end"), n = performance.measure("peer-creation", "peer-creation-start", "peer-creation-end"), i = performance.measure("ice-gathering", "ice-gathering-start", "ice-gathering-end"), s = performance.measure("sdp-send", "sdp-send-start", "sdp-send-end"), a = performance.measure("invite-send", "new-call-start", "sdp-send-start"), o = performance.measure("total-duration", "peer-creation-start", "sdp-send-end"), l = (d) => `${d.toFixed(2)}ms`;
|
|
1458
|
+
return { "New Call": { duration: l(e.duration) }, "Peer Creation": { duration: l(n.duration) }, "ICE Gathering": { duration: l(i.duration) }, [this._isOffer() ? "Invite Send" : "Answer Send"]: { duration: l(a.duration) }, "SDP Send": { duration: l(s.duration) }, "Total Duration": { duration: l(o.duration) } };
|
|
1459
1459
|
}
|
|
1460
1460
|
handleSignalingStateChangeEvent(e) {
|
|
1461
1461
|
switch (y.info("signalingState:", this.instance.signalingState), this.instance.signalingState) {
|
|
@@ -1475,30 +1475,30 @@ class Ot {
|
|
|
1475
1475
|
}
|
|
1476
1476
|
handleTrackEvent(e) {
|
|
1477
1477
|
const { streams: [n] } = e, { remoteElement: i, screenShare: s } = this.options;
|
|
1478
|
-
let { remoteStream:
|
|
1479
|
-
|
|
1478
|
+
let { remoteStream: a } = this.options;
|
|
1479
|
+
a = n, s === !1 && Ee(i, a);
|
|
1480
1480
|
}
|
|
1481
1481
|
createPeerConnection() {
|
|
1482
|
-
return
|
|
1482
|
+
return O(this, void 0, void 0, (function* () {
|
|
1483
1483
|
var e;
|
|
1484
1484
|
this.instance = (e = this._config(), new window.RTCPeerConnection(e)), this.instance.onsignalingstatechange = this.handleSignalingStateChangeEvent, this.instance.onnegotiationneeded = this.handleNegotiationNeededEvent, this.instance.ontrack = this.handleTrackEvent, this.instance.addEventListener("connectionstatechange", this.handleConnectionStateChange), this.instance.addEventListener("iceconnectionstatechange", this._handleIceConnectionStateChange), this.instance.addEventListener("icegatheringstatechange", this._handleIceGatheringStateChange), this.instance.addEventListener("addstream", ((n) => {
|
|
1485
1485
|
this.options.remoteStream = n.stream;
|
|
1486
|
-
})), this._registerPeerEvents(this.instance), this._prevConnectionState = this.instance.connectionState, this.isAnswer && (yield this._setRemoteDescription({ sdp: this.options.remoteSdp, type: K.Offer })), this.options.localStream = yield this._retrieveLocalStream().catch(((n) => (
|
|
1486
|
+
})), this._registerPeerEvents(this.instance), this._prevConnectionState = this.instance.connectionState, this.isAnswer && (yield this._setRemoteDescription({ sdp: this.options.remoteSdp, type: K.Offer })), this.options.localStream = yield this._retrieveLocalStream().catch(((n) => (F(L.MediaError, n, this.options.id), null))), this.options.mutedMicOnStart && ge(this.options.localStream) && (y.info("Muting local audio tracks on start"), st(this.options.localStream)), performance.mark("peer-creation-end");
|
|
1487
1487
|
}));
|
|
1488
1488
|
}
|
|
1489
1489
|
init() {
|
|
1490
1490
|
var e;
|
|
1491
|
-
return
|
|
1492
|
-
yield this.createPeerConnection(), this.isDebugEnabled && (this.statsReporter =
|
|
1491
|
+
return O(this, void 0, void 0, (function* () {
|
|
1492
|
+
yield this.createPeerConnection(), this.isDebugEnabled && (this.statsReporter = di(this._session, this.options.id), yield (e = this.statsReporter) === null || e === void 0 ? void 0 : e.start(this.instance, this._session.sessionid, this._session.sessionid));
|
|
1493
1493
|
const { localElement: n, localStream: i = null, screenShare: s = !1 } = this.options;
|
|
1494
1494
|
if (ge(i)) {
|
|
1495
|
-
const
|
|
1496
|
-
let o = [...
|
|
1497
|
-
if (y.info("Local audio tracks: ",
|
|
1495
|
+
const a = i.getAudioTracks();
|
|
1496
|
+
let o = [...a];
|
|
1497
|
+
if (y.info("Local audio tracks: ", a), typeof this.options.audio == "object" && a.forEach(((h) => {
|
|
1498
1498
|
y.info("Local audio tracks constraints: ", h.getConstraints());
|
|
1499
1499
|
})), this.options.video) {
|
|
1500
1500
|
const h = i.getVideoTracks();
|
|
1501
|
-
o = [...
|
|
1501
|
+
o = [...a, ...h], y.info("Local video tracks: ", h), typeof this.options.video == "object" && h.forEach(((f) => {
|
|
1502
1502
|
y.info("Local video tracks constraints: ", f.getConstraints());
|
|
1503
1503
|
}));
|
|
1504
1504
|
}
|
|
@@ -1536,7 +1536,7 @@ class Ot {
|
|
|
1536
1536
|
}
|
|
1537
1537
|
}
|
|
1538
1538
|
_createOffer() {
|
|
1539
|
-
return
|
|
1539
|
+
return O(this, void 0, void 0, (function* () {
|
|
1540
1540
|
if (this._isOffer()) {
|
|
1541
1541
|
this._constraints.offerToReceiveAudio = this.options.audio !== !1, this._constraints.offerToReceiveVideo = !!this.options.video, y.info("_createOffer - this._constraints", this._constraints);
|
|
1542
1542
|
try {
|
|
@@ -1549,12 +1549,12 @@ class Ot {
|
|
|
1549
1549
|
}));
|
|
1550
1550
|
}
|
|
1551
1551
|
_setRemoteDescription(e) {
|
|
1552
|
-
return
|
|
1552
|
+
return O(this, void 0, void 0, (function* () {
|
|
1553
1553
|
y.debug("Setting remote description", e), yield this.instance.setRemoteDescription(e);
|
|
1554
1554
|
}));
|
|
1555
1555
|
}
|
|
1556
1556
|
_createAnswer() {
|
|
1557
|
-
return
|
|
1557
|
+
return O(this, void 0, void 0, (function* () {
|
|
1558
1558
|
if (this._isAnswer()) {
|
|
1559
1559
|
if (this.instance.signalingState !== "stable" && this.instance.signalingState !== "have-remote-offer") return y.debug("Skipping negotiation, state:", this.instance.signalingState), y.debug(" - But the signaling state isn't stable, so triggering rollback"), void (yield Promise.all([this.instance.setLocalDescription({ type: "rollback" }), this.instance.setRemoteDescription({ sdp: this.options.remoteSdp, type: K.Offer })]));
|
|
1560
1560
|
this._logTransceivers();
|
|
@@ -1568,7 +1568,7 @@ class Ot {
|
|
|
1568
1568
|
}));
|
|
1569
1569
|
}
|
|
1570
1570
|
_setLocalDescription(e) {
|
|
1571
|
-
return
|
|
1571
|
+
return O(this, void 0, void 0, (function* () {
|
|
1572
1572
|
yield this.instance.setLocalDescription(e);
|
|
1573
1573
|
}));
|
|
1574
1574
|
}
|
|
@@ -1576,19 +1576,19 @@ class Ot {
|
|
|
1576
1576
|
ye(this.onSdpReadyTwice) && this.onSdpReadyTwice(this.instance.localDescription);
|
|
1577
1577
|
}
|
|
1578
1578
|
_retrieveLocalStream() {
|
|
1579
|
-
return
|
|
1579
|
+
return O(this, void 0, void 0, (function* () {
|
|
1580
1580
|
if (ge(this.options.localStream)) return this.options.localStream;
|
|
1581
|
-
const e = yield (n = this.options,
|
|
1582
|
-
let { audio: i = !0, micId: s, video:
|
|
1581
|
+
const e = yield (n = this.options, O(void 0, void 0, void 0, (function* () {
|
|
1582
|
+
let { audio: i = !0, micId: s, video: a = !1, camId: o } = n;
|
|
1583
1583
|
const { micLabel: l = "", camLabel: d = "" } = n;
|
|
1584
|
-
return s && (s = yield
|
|
1584
|
+
return s && (s = yield je(s, l, ae.AudioIn).catch(((h) => null)), s && (typeof i == "boolean" && (i = {}), i.deviceId = { exact: s })), o && (o = yield je(o, d, ae.Video).catch(((h) => null)), o && (typeof a == "boolean" && (a = {}), a.deviceId = { exact: o })), { audio: i, video: a };
|
|
1585
1585
|
})));
|
|
1586
1586
|
var n;
|
|
1587
|
-
return
|
|
1587
|
+
return Ue(e);
|
|
1588
1588
|
}));
|
|
1589
1589
|
}
|
|
1590
1590
|
_resetJitterBuffer() {
|
|
1591
|
-
return
|
|
1591
|
+
return O(this, void 0, void 0, (function* () {
|
|
1592
1592
|
try {
|
|
1593
1593
|
const n = this.instance.getReceivers().find(((s) => s.track && s.track.kind === "audio")), i = this.instance.getReceivers().find(((s) => s.track && s.track.kind === "video"));
|
|
1594
1594
|
n && "jitterBufferTarget" in n && (n.jitterBufferTarget = 20, y.debug("audio [jitter] target set to", n.jitterBufferTarget, "ms")), i && "jitterBufferTarget" in i && (i.jitterBufferTarget = 20, y.debug("video [jitter] target set to", i.jitterBufferTarget, "ms"));
|
|
@@ -1598,10 +1598,10 @@ class Ot {
|
|
|
1598
1598
|
}));
|
|
1599
1599
|
}
|
|
1600
1600
|
_restartNegotiationOnDeviceSleepWakeup() {
|
|
1601
|
-
return
|
|
1601
|
+
return O(this, void 0, void 0, (function* () {
|
|
1602
1602
|
this._sleepWakeupIntervalId !== null && (clearInterval(this._sleepWakeupIntervalId), this._sleepWakeupIntervalId = null);
|
|
1603
1603
|
let e = Date.now();
|
|
1604
|
-
this._sleepWakeupIntervalId = setInterval((() =>
|
|
1604
|
+
this._sleepWakeupIntervalId = setInterval((() => O(this, void 0, void 0, (function* () {
|
|
1605
1605
|
var n;
|
|
1606
1606
|
const i = Date.now();
|
|
1607
1607
|
if (i - e > 5e3) {
|
|
@@ -1627,15 +1627,15 @@ class Ot {
|
|
|
1627
1627
|
}
|
|
1628
1628
|
close() {
|
|
1629
1629
|
var e;
|
|
1630
|
-
return
|
|
1630
|
+
return O(this, void 0, void 0, (function* () {
|
|
1631
1631
|
this._sleepWakeupIntervalId !== null && (clearInterval(this._sleepWakeupIntervalId), this._sleepWakeupIntervalId = null), yield (e = this.statsReporter) === null || e === void 0 ? void 0 : e.stop(this.debugOutput), this.instance && (this.instance.close(), this.instance = null);
|
|
1632
1632
|
}));
|
|
1633
1633
|
}
|
|
1634
1634
|
}
|
|
1635
1635
|
const Lt = We;
|
|
1636
|
-
class
|
|
1636
|
+
class cn {
|
|
1637
1637
|
constructor(e, n) {
|
|
1638
|
-
this.session = e, this.id = "", this.state = N[N.New], this.prevState = "", this.channels = [], this.role =
|
|
1638
|
+
this.session = e, this.id = "", this.state = N[N.New], this.prevState = "", this.channels = [], this.role = et.Participant, this.extension = null, this._state = N.New, this._prevState = N.New, this.gotAnswer = !1, this.gotEarly = !1, this._lastSerno = 0, this._targetNodeId = null, this._iceTimeout = null, this._iceDone = !1, this._statsBindings = [], this._statsIntervalId = null, this._pendingIceCandidates = [], this._isRemoteDescriptionSet = !1, this._checkConferenceSerno = (p) => {
|
|
1639
1639
|
const S = p < 0 || !this._lastSerno || this._lastSerno && p === this._lastSerno + 1;
|
|
1640
1640
|
return S && p >= 0 && (this._lastSerno = p), S;
|
|
1641
1641
|
}, this._doStats = () => {
|
|
@@ -1652,12 +1652,12 @@ class ln {
|
|
|
1652
1652
|
}));
|
|
1653
1653
|
}));
|
|
1654
1654
|
};
|
|
1655
|
-
const { iceServers: i, speaker: s, micId:
|
|
1656
|
-
this.options = Object.assign({}, Fn, { audio: _, video: w, iceServers: n?.iceServers && Array.isArray(n.iceServers) ? n.iceServers : i, localElement: h, remoteElement: f, micId:
|
|
1655
|
+
const { iceServers: i, speaker: s, micId: a, micLabel: o, camId: l, camLabel: d, localElement: h, remoteElement: f, options: v, mediaConstraints: { audio: _, video: w }, ringtoneFile: C, ringbackFile: k } = e;
|
|
1656
|
+
this.options = Object.assign({}, Fn, { audio: _, video: w, iceServers: n?.iceServers && Array.isArray(n.iceServers) ? n.iceServers : i, localElement: h, remoteElement: f, micId: a, micLabel: o, camId: l, camLabel: d, speakerId: s, ringtoneFile: C, ringbackFile: k, debug: v.debug, debugOutput: v.debugOutput, trickleIce: v.trickleIce, prefetchIceCandidates: v.prefetchIceCandidates, keepConnectionAliveOnSocketClose: v.keepConnectionAliveOnSocketClose, mutedMicOnStart: v.mutedMicOnStart }, n), this._onMediaError = this._onMediaError.bind(this), this._onPeerConnectionFailureError = this._onPeerConnectionFailureError.bind(this), this._onTrickleIceSdp = this._onTrickleIceSdp.bind(this), this._registerPeerEvents = this._registerPeerEvents.bind(this), this._registerTrickleIcePeerEvents = this._registerTrickleIcePeerEvents.bind(this), this._init(), this.options && (this._ringtone = Ct(this.options.ringtoneFile, "_ringtone"), this._ringback = Ct(this.options.ringbackFile, "_ringback"));
|
|
1657
1657
|
}
|
|
1658
1658
|
get performanceMetrics() {
|
|
1659
|
-
const e = performance.measure("peer-creation", "peer-creation-start", "peer-creation-end"), n = performance.measure("ice-gathering", "ice-gathering-start", "ice-gathering-end"), i = performance.measure("sdp-send", "sdp-send-start", "sdp-send-end"), s = performance.measure("total-duration", "peer-creation-start", "sdp-send-end"),
|
|
1660
|
-
return { "Peer Creation": { duration:
|
|
1659
|
+
const e = performance.measure("peer-creation", "peer-creation-start", "peer-creation-end"), n = performance.measure("ice-gathering", "ice-gathering-start", "ice-gathering-end"), i = performance.measure("sdp-send", "sdp-send-start", "sdp-send-end"), s = performance.measure("total-duration", "peer-creation-start", "sdp-send-end"), a = (o) => `${o.toFixed(2)}ms`;
|
|
1660
|
+
return { "Peer Creation": { duration: a(e.duration) }, "ICE Gathering": { duration: a(n.duration) }, "SDP Send": { duration: a(i.duration) }, "Total Duration": { duration: a(s.duration) } };
|
|
1661
1661
|
}
|
|
1662
1662
|
get nodeId() {
|
|
1663
1663
|
return this._targetNodeId;
|
|
@@ -1681,43 +1681,43 @@ class ln {
|
|
|
1681
1681
|
return `conference-member.${this.id}`;
|
|
1682
1682
|
}
|
|
1683
1683
|
get isAudioMuted() {
|
|
1684
|
-
return !
|
|
1684
|
+
return !zn(this.options.localStream);
|
|
1685
1685
|
}
|
|
1686
1686
|
invite() {
|
|
1687
|
-
return
|
|
1688
|
-
this.direction = le.Outbound, this.options.trickleIce && this._resetTrickleIceCandidateState(), performance.mark("peer-creation-start"), this.peer = new
|
|
1687
|
+
return O(this, void 0, void 0, (function* () {
|
|
1688
|
+
this.direction = le.Outbound, this.options.trickleIce && this._resetTrickleIceCandidateState(), performance.mark("peer-creation-start"), this.peer = new xt(K.Offer, this.options, this.session, this._onTrickleIceSdp, this.options.trickleIce ? this._registerTrickleIcePeerEvents : this._registerPeerEvents), yield this.peer.init();
|
|
1689
1689
|
}));
|
|
1690
1690
|
}
|
|
1691
1691
|
answer(e = {}) {
|
|
1692
1692
|
var n;
|
|
1693
|
-
return
|
|
1694
|
-
performance.mark("new-call-start"), this.stopRingtone(), this.direction = le.Inbound, ((n = e?.customHeaders) === null || n === void 0 ? void 0 : n.length) > 0 && (this.options = Object.assign(Object.assign({}, this.options), { customHeaders: e.customHeaders })), this.options.trickleIce && this._resetTrickleIceCandidateState(), performance.mark("peer-creation-start"), this.peer = new
|
|
1693
|
+
return O(this, void 0, void 0, (function* () {
|
|
1694
|
+
performance.mark("new-call-start"), this.stopRingtone(), this.direction = le.Inbound, ((n = e?.customHeaders) === null || n === void 0 ? void 0 : n.length) > 0 && (this.options = Object.assign(Object.assign({}, this.options), { customHeaders: e.customHeaders })), this.options.trickleIce && this._resetTrickleIceCandidateState(), performance.mark("peer-creation-start"), this.peer = new xt(K.Answer, this.options, this.session, this._onTrickleIceSdp, this.options.trickleIce ? this._registerTrickleIcePeerEvents : this._registerPeerEvents), yield this.peer.init(), performance.mark("new-call-end");
|
|
1695
1695
|
}));
|
|
1696
1696
|
}
|
|
1697
1697
|
playRingtone() {
|
|
1698
|
-
|
|
1698
|
+
kt(this._ringtone);
|
|
1699
1699
|
}
|
|
1700
1700
|
stopRingtone() {
|
|
1701
|
-
|
|
1701
|
+
It(this._ringtone);
|
|
1702
1702
|
}
|
|
1703
1703
|
playRingback() {
|
|
1704
|
-
|
|
1704
|
+
kt(this._ringback);
|
|
1705
1705
|
}
|
|
1706
1706
|
stopRingback() {
|
|
1707
|
-
|
|
1707
|
+
It(this._ringback);
|
|
1708
1708
|
}
|
|
1709
1709
|
hangup(e, n) {
|
|
1710
|
-
var i, s,
|
|
1710
|
+
var i, s, a;
|
|
1711
1711
|
let o = e || {}, l = n !== !1;
|
|
1712
|
-
this.cause = o.cause || "NORMAL_CLEARING", this.causeCode = o.causeCode || 16, this.sipCode = o.sipCode || null, this.sipReason = o.sipReason || null, this.sipCallId = o.sip_call_id || null, this.options.customHeaders = [...(i = this.options.customHeaders) !== null && i !== void 0 ? i : [], ...(
|
|
1712
|
+
this.cause = o.cause || "NORMAL_CLEARING", this.causeCode = o.causeCode || 16, this.sipCode = o.sipCode || null, this.sipReason = o.sipReason || null, this.sipCallId = o.sip_call_id || null, this.options.customHeaders = [...(i = this.options.customHeaders) !== null && i !== void 0 ? i : [], ...(a = (s = o?.dialogParams) === null || s === void 0 ? void 0 : s.customHeaders) !== null && a !== void 0 ? a : []], this.setState(N.Hangup);
|
|
1713
1713
|
const d = () => {
|
|
1714
1714
|
var h;
|
|
1715
1715
|
return (h = this.peer) === null || h === void 0 || h.close(), this.setState(N.Destroy);
|
|
1716
1716
|
};
|
|
1717
1717
|
if (this.stopRingtone(), this.stopRingback(), l) {
|
|
1718
|
-
const h = new
|
|
1718
|
+
const h = new Xn({ sipCode: this.sipCode, sip_call_id: this.sipCallId, sessid: this.session.sessionid, dialogParams: this.options, cause: "USER_BUSY", causeCode: 17 });
|
|
1719
1719
|
this._execute(h).catch(((f) => {
|
|
1720
|
-
y.error("telnyx_rtc.bye failed!", f),
|
|
1720
|
+
y.error("telnyx_rtc.bye failed!", f), F(L.Error, { error: f, sessionId: this.session.sessionid }, this.session.uuid);
|
|
1721
1721
|
})).then(d.bind(this));
|
|
1722
1722
|
} else d();
|
|
1723
1723
|
}
|
|
@@ -1734,30 +1734,30 @@ class ln {
|
|
|
1734
1734
|
return this._execute(e).then(this._handleChangeHoldStateSuccess.bind(this)).catch(this._handleChangeHoldStateError.bind(this));
|
|
1735
1735
|
}
|
|
1736
1736
|
dtmf(e) {
|
|
1737
|
-
const n = new
|
|
1737
|
+
const n = new At({ sessid: this.session.sessionid, dtmf: e, dialogParams: this.options });
|
|
1738
1738
|
this._execute(n);
|
|
1739
1739
|
}
|
|
1740
1740
|
message(e, n) {
|
|
1741
|
-
const i = { from: this.session.options.login, to: e, body: n }, s = new
|
|
1741
|
+
const i = { from: this.session.options.login, to: e, body: n }, s = new At({ sessid: this.session.sessionid, msg: i, dialogParams: this.options });
|
|
1742
1742
|
this._execute(s);
|
|
1743
1743
|
}
|
|
1744
1744
|
muteAudio() {
|
|
1745
|
-
|
|
1745
|
+
st(this.options.localStream);
|
|
1746
1746
|
}
|
|
1747
1747
|
unmuteAudio() {
|
|
1748
|
-
|
|
1748
|
+
St(this.options.localStream);
|
|
1749
1749
|
}
|
|
1750
1750
|
toggleAudioMute() {
|
|
1751
|
-
|
|
1751
|
+
wt(this.options.localStream);
|
|
1752
1752
|
}
|
|
1753
1753
|
setAudioInDevice(e, n = this.options.mutedMicOnStart) {
|
|
1754
|
-
return
|
|
1755
|
-
const { instance: i } = this.peer, s = i.getSenders().find((({ track: { kind:
|
|
1754
|
+
return O(this, void 0, void 0, (function* () {
|
|
1755
|
+
const { instance: i } = this.peer, s = i.getSenders().find((({ track: { kind: a } }) => a === "audio"));
|
|
1756
1756
|
if (s) {
|
|
1757
|
-
const
|
|
1757
|
+
const a = yield tt({ audio: { deviceId: { exact: e } } }), o = a.getAudioTracks()[0];
|
|
1758
1758
|
o.enabled = !n, s.replaceTrack(o), this.options.micId = e;
|
|
1759
1759
|
const { localStream: l } = this.options;
|
|
1760
|
-
l.getAudioTracks().forEach(((d) => d.stop())), l.getVideoTracks().forEach(((d) =>
|
|
1760
|
+
l.getAudioTracks().forEach(((d) => d.stop())), l.getVideoTracks().forEach(((d) => a.addTrack(d))), this.options.localStream = a;
|
|
1761
1761
|
}
|
|
1762
1762
|
}));
|
|
1763
1763
|
}
|
|
@@ -1774,35 +1774,35 @@ class ln {
|
|
|
1774
1774
|
e = this.options.localStream, ve(e, "video", null);
|
|
1775
1775
|
}
|
|
1776
1776
|
setVideoDevice(e) {
|
|
1777
|
-
return
|
|
1777
|
+
return O(this, void 0, void 0, (function* () {
|
|
1778
1778
|
const { instance: n } = this.peer, i = n.getSenders().find((({ track: { kind: s } }) => s === "video"));
|
|
1779
1779
|
if (i) {
|
|
1780
|
-
const s = yield
|
|
1781
|
-
i.replaceTrack(
|
|
1780
|
+
const s = yield tt({ video: { deviceId: { exact: e } } }), a = s.getVideoTracks()[0];
|
|
1781
|
+
i.replaceTrack(a);
|
|
1782
1782
|
const { localElement: o, localStream: l } = this.options;
|
|
1783
1783
|
Ee(o, s), this.options.camId = e, l.getAudioTracks().forEach(((d) => s.addTrack(d))), l.getVideoTracks().forEach(((d) => d.stop())), this.options.localStream = s;
|
|
1784
1784
|
}
|
|
1785
1785
|
}));
|
|
1786
1786
|
}
|
|
1787
1787
|
deaf() {
|
|
1788
|
-
|
|
1788
|
+
st(this.options.remoteStream);
|
|
1789
1789
|
}
|
|
1790
1790
|
undeaf() {
|
|
1791
|
-
|
|
1791
|
+
St(this.options.remoteStream);
|
|
1792
1792
|
}
|
|
1793
1793
|
toggleDeaf() {
|
|
1794
|
-
|
|
1794
|
+
wt(this.options.remoteStream);
|
|
1795
1795
|
}
|
|
1796
1796
|
setBandwidthEncodingsMaxBps(e, n) {
|
|
1797
|
-
return
|
|
1797
|
+
return O(this, void 0, void 0, (function* () {
|
|
1798
1798
|
if (!this || !this.peer) return void y.error("Could not set bandwidth (reason: no peer connection). Dynamic bandwidth can only be set when there is a call running - is there any call running?)");
|
|
1799
1799
|
const { instance: i } = this.peer, s = i.getSenders();
|
|
1800
1800
|
if (!s) return void y.error("Could not set bandwidth (reason: no senders). Dynamic bandwidth can only be set when there is a call running - is there any call running?)");
|
|
1801
|
-
const
|
|
1802
|
-
if (
|
|
1803
|
-
const o =
|
|
1804
|
-
o.encodings || (o.encodings = [{ rid: "h" }]), y.info("Parameters: ", o), y.info("Setting max ", n === "audio" ? "audio" : "video", " bandwidth to: ", e, " [bps]"), o.encodings[0].maxBitrate = e, yield
|
|
1805
|
-
y.info(n === "audio" ? "New audio" : "New video", " bandwidth settings in use: ",
|
|
1801
|
+
const a = s.find((({ track: { kind: o } }) => o === n));
|
|
1802
|
+
if (a) {
|
|
1803
|
+
const o = a.getParameters();
|
|
1804
|
+
o.encodings || (o.encodings = [{ rid: "h" }]), y.info("Parameters: ", o), y.info("Setting max ", n === "audio" ? "audio" : "video", " bandwidth to: ", e, " [bps]"), o.encodings[0].maxBitrate = e, yield a.setParameters(o).then((() => {
|
|
1805
|
+
y.info(n === "audio" ? "New audio" : "New video", " bandwidth settings in use: ", a.getParameters());
|
|
1806
1806
|
})).catch(((l) => y.error(l)));
|
|
1807
1807
|
} else y.error("Could not set bandwidth (reason: no " + n + " sender). Dynamic bandwidth can only be set when there is a call running - is there any call running?)");
|
|
1808
1808
|
}));
|
|
@@ -1826,7 +1826,7 @@ class ln {
|
|
|
1826
1826
|
case N.Active:
|
|
1827
1827
|
setTimeout((() => {
|
|
1828
1828
|
const { remoteElement: n, speakerId: i } = this.options;
|
|
1829
|
-
n && i &&
|
|
1829
|
+
n && i && tn(n, i);
|
|
1830
1830
|
}), 0);
|
|
1831
1831
|
break;
|
|
1832
1832
|
case N.Destroy:
|
|
@@ -1836,67 +1836,67 @@ class ln {
|
|
|
1836
1836
|
handleMessage(e) {
|
|
1837
1837
|
const { method: n, params: i } = e;
|
|
1838
1838
|
switch (n) {
|
|
1839
|
-
case
|
|
1839
|
+
case $.Answer:
|
|
1840
1840
|
if (this.gotAnswer = !0, this._state >= N.Active) return;
|
|
1841
1841
|
this._state >= N.Early && this.setState(N.Active), this.gotEarly || this._onRemoteSdp(i.sdp), this.stopRingback(), this.stopRingtone();
|
|
1842
1842
|
break;
|
|
1843
|
-
case
|
|
1843
|
+
case $.Media:
|
|
1844
1844
|
if (this._state >= N.Early) return;
|
|
1845
1845
|
this.gotEarly = !0, this._onRemoteSdp(i.sdp);
|
|
1846
1846
|
break;
|
|
1847
|
-
case
|
|
1848
|
-
case
|
|
1849
|
-
const { display_name:
|
|
1847
|
+
case $.Display:
|
|
1848
|
+
case $.Attach: {
|
|
1849
|
+
const { display_name: a, display_number: o, display_direction: l } = i;
|
|
1850
1850
|
this.extension = o;
|
|
1851
|
-
const d = l === le.Inbound ? le.Outbound : le.Inbound, h = { type: oe[n], call: this, displayName:
|
|
1852
|
-
|
|
1851
|
+
const d = l === le.Inbound ? le.Outbound : le.Inbound, h = { type: oe[n], call: this, displayName: a, displayNumber: o, displayDirection: d };
|
|
1852
|
+
F(L.Notification, h, this.id) || F(L.Notification, h, this.session.uuid);
|
|
1853
1853
|
break;
|
|
1854
1854
|
}
|
|
1855
|
-
case
|
|
1855
|
+
case $.Candidate:
|
|
1856
1856
|
this._addIceCandidate(i);
|
|
1857
1857
|
break;
|
|
1858
|
-
case
|
|
1859
|
-
case
|
|
1860
|
-
const
|
|
1861
|
-
|
|
1858
|
+
case $.Info:
|
|
1859
|
+
case $.Event: {
|
|
1860
|
+
const a = Object.assign(Object.assign({}, i), { type: oe.generic, call: this });
|
|
1861
|
+
F(L.Notification, a, this.id) || F(L.Notification, a, this.session.uuid);
|
|
1862
1862
|
break;
|
|
1863
1863
|
}
|
|
1864
|
-
case
|
|
1864
|
+
case $.Ringing:
|
|
1865
1865
|
this.playRingback(), i.telnyx_call_control_id && (this.options.telnyxCallControlId = i.telnyx_call_control_id), i.telnyx_session_id && (this.options.telnyxSessionId = i.telnyx_session_id), i.telnyx_leg_id && (this.options.telnyxLegId = i.telnyx_leg_id);
|
|
1866
1866
|
break;
|
|
1867
|
-
case
|
|
1867
|
+
case $.Bye:
|
|
1868
1868
|
const s = i.client_state || i.clientState;
|
|
1869
1869
|
s && (this.options.clientState = s), this.stopRingback(), this.stopRingtone(), this.hangup(i, !1);
|
|
1870
1870
|
}
|
|
1871
1871
|
}
|
|
1872
1872
|
handleConferenceUpdate(e, n) {
|
|
1873
|
-
return
|
|
1873
|
+
return O(this, void 0, void 0, (function* () {
|
|
1874
1874
|
if (!this._checkConferenceSerno(e.wireSerno) && e.name !== n.laName) return y.error("ConferenceUpdate invalid wireSerno or packet name:", e), "INVALID_PACKET";
|
|
1875
|
-
const { action: i, data: s, hashKey:
|
|
1875
|
+
const { action: i, data: s, hashKey: a = String(this._lastSerno), arrIndex: o } = e;
|
|
1876
1876
|
switch (i) {
|
|
1877
1877
|
case "bootObj": {
|
|
1878
1878
|
this._lastSerno = 0;
|
|
1879
1879
|
const { chatChannel: l, infoChannel: d, modChannel: h, laName: f, conferenceMemberID: v, role: _ } = n;
|
|
1880
1880
|
this._dispatchConferenceUpdate({ action: se.Join, conferenceName: f, participantId: Number(v), role: _ }), l && (yield this._subscribeConferenceChat(l)), d && (yield this._subscribeConferenceInfo(d));
|
|
1881
1881
|
const w = [];
|
|
1882
|
-
for (const C in s) w.push(Object.assign({ callId: s[C][0], index: Number(C) },
|
|
1882
|
+
for (const C in s) w.push(Object.assign({ callId: s[C][0], index: Number(C) }, Le(s[C][1])));
|
|
1883
1883
|
this._dispatchConferenceUpdate({ action: se.Bootstrap, participants: w });
|
|
1884
1884
|
break;
|
|
1885
1885
|
}
|
|
1886
1886
|
case "add":
|
|
1887
|
-
this._dispatchConferenceUpdate(Object.assign({ action: se.Add, callId:
|
|
1887
|
+
this._dispatchConferenceUpdate(Object.assign({ action: se.Add, callId: a, index: o }, Le(s)));
|
|
1888
1888
|
break;
|
|
1889
1889
|
case "modify":
|
|
1890
|
-
this._dispatchConferenceUpdate(Object.assign({ action: se.Modify, callId:
|
|
1890
|
+
this._dispatchConferenceUpdate(Object.assign({ action: se.Modify, callId: a, index: o }, Le(s)));
|
|
1891
1891
|
break;
|
|
1892
1892
|
case "del":
|
|
1893
|
-
this._dispatchConferenceUpdate(Object.assign({ action: se.Delete, callId:
|
|
1893
|
+
this._dispatchConferenceUpdate(Object.assign({ action: se.Delete, callId: a, index: o }, Le(s)));
|
|
1894
1894
|
break;
|
|
1895
1895
|
case "clear":
|
|
1896
1896
|
this._dispatchConferenceUpdate({ action: se.Clear });
|
|
1897
1897
|
break;
|
|
1898
1898
|
default:
|
|
1899
|
-
this._dispatchConferenceUpdate({ action: i, data: s, callId:
|
|
1899
|
+
this._dispatchConferenceUpdate({ action: i, data: s, callId: a, index: o });
|
|
1900
1900
|
}
|
|
1901
1901
|
}));
|
|
1902
1902
|
}
|
|
@@ -1906,27 +1906,27 @@ class ln {
|
|
|
1906
1906
|
this.session._existsSubscription(n, e) && (this.session.subscriptions[n][e] = Object.assign(Object.assign({}, this.session.subscriptions[n][e]), { callId: this.id }));
|
|
1907
1907
|
}
|
|
1908
1908
|
_subscribeConferenceChat(e) {
|
|
1909
|
-
return
|
|
1909
|
+
return O(this, void 0, void 0, (function* () {
|
|
1910
1910
|
const n = { nodeId: this.nodeId, channels: [e], handler: (s) => {
|
|
1911
|
-
const { direction:
|
|
1912
|
-
this._dispatchConferenceUpdate({ action: se.ChatMessage, direction:
|
|
1911
|
+
const { direction: a, from: o, fromDisplay: l, message: d, type: h } = s.data;
|
|
1912
|
+
this._dispatchConferenceUpdate({ action: se.ChatMessage, direction: a, participantNumber: o, participantName: l, messageText: d, messageType: h, messageId: s.eventSerno });
|
|
1913
1913
|
} }, i = yield this.session.vertoSubscribe(n).catch(((s) => {
|
|
1914
1914
|
y.error("ConfChat subscription error:", s);
|
|
1915
1915
|
}));
|
|
1916
|
-
|
|
1917
|
-
this.session.vertoBroadcast({ nodeId: this.nodeId, channel: e, data: { action: "send", message: s, type:
|
|
1916
|
+
nt(i, e) && (this._addChannel(e), Object.defineProperties(this, { sendChatMessage: { configurable: !0, value: (s, a) => {
|
|
1917
|
+
this.session.vertoBroadcast({ nodeId: this.nodeId, channel: e, data: { action: "send", message: s, type: a } });
|
|
1918
1918
|
} } }));
|
|
1919
1919
|
}));
|
|
1920
1920
|
}
|
|
1921
1921
|
_subscribeConferenceInfo(e) {
|
|
1922
|
-
return
|
|
1922
|
+
return O(this, void 0, void 0, (function* () {
|
|
1923
1923
|
const n = { nodeId: this.nodeId, channels: [e], handler: (s) => {
|
|
1924
|
-
const { eventData:
|
|
1925
|
-
|
|
1924
|
+
const { eventData: a } = s;
|
|
1925
|
+
a.contentType === "layout-info" ? (a.callID = this.id, an(this.session, a)) : y.error("Conference-Info unknown contentType", s);
|
|
1926
1926
|
} }, i = yield this.session.vertoSubscribe(n).catch(((s) => {
|
|
1927
1927
|
y.error("ConfInfo subscription error:", s);
|
|
1928
1928
|
}));
|
|
1929
|
-
|
|
1929
|
+
nt(i, e) && this._addChannel(e);
|
|
1930
1930
|
}));
|
|
1931
1931
|
}
|
|
1932
1932
|
_confControl(e, n = {}) {
|
|
@@ -1940,7 +1940,7 @@ class ln {
|
|
|
1940
1940
|
return y.error(`Failed to ${e.action} on call ${this.id}`), !1;
|
|
1941
1941
|
}
|
|
1942
1942
|
_onRemoteSdp(e) {
|
|
1943
|
-
return
|
|
1943
|
+
return O(this, void 0, void 0, (function* () {
|
|
1944
1944
|
const n = new RTCSessionDescription({ sdp: e, type: K.Answer });
|
|
1945
1945
|
yield this.peer.instance.setRemoteDescription(n).then((() => {
|
|
1946
1946
|
this.options.trickleIce && (this._isRemoteDescriptionSet = !0, this._flushPendingTrickleIceCandidates()), this.gotEarly && this.setState(N.Early), this.gotAnswer && this.setState(N.Active);
|
|
@@ -1950,32 +1950,32 @@ class ln {
|
|
|
1950
1950
|
}));
|
|
1951
1951
|
}
|
|
1952
1952
|
_requestAnotherLocalDescription() {
|
|
1953
|
-
ye(this.peer.onSdpReadyTwice) ?
|
|
1953
|
+
ye(this.peer.onSdpReadyTwice) ? F(L.Error, { error: new Error("SDP without candidates for the second time!"), sessionId: this.session.sessionid }, this.session.uuid) : (Object.defineProperty(this.peer, "onSdpReadyTwice", { value: this._onIceSdp.bind(this) }), this._iceDone = !1, this.peer.startNegotiation());
|
|
1954
1954
|
}
|
|
1955
1955
|
_onIceSdp(e) {
|
|
1956
1956
|
var n, i;
|
|
1957
1957
|
this._iceTimeout && clearTimeout(this._iceTimeout), this._iceTimeout = null, this._iceDone = !0;
|
|
1958
|
-
const { sdp: s, type:
|
|
1958
|
+
const { sdp: s, type: a } = e;
|
|
1959
1959
|
if (s.indexOf("candidate") === -1) return y.info(`No candidate - retry
|
|
1960
1960
|
`), void this._requestAnotherLocalDescription();
|
|
1961
1961
|
(i = (n = this.peer) === null || n === void 0 ? void 0 : n.instance) === null || i === void 0 || i.removeEventListener("icecandidate", this._onIce), performance.mark("ice-gathering-end");
|
|
1962
1962
|
let o = null;
|
|
1963
1963
|
const l = { sessid: this.session.sessionid, sdp: s, dialogParams: this.options, "User-Agent": `Web-${Lt}` };
|
|
1964
|
-
switch (
|
|
1964
|
+
switch (a) {
|
|
1965
1965
|
case K.Offer:
|
|
1966
|
-
this.setState(N.Requesting), o = new
|
|
1966
|
+
this.setState(N.Requesting), o = new Et(l);
|
|
1967
1967
|
break;
|
|
1968
1968
|
case K.Answer:
|
|
1969
|
-
this.setState(N.Answering), o = this.options.attach === !0 ? new
|
|
1969
|
+
this.setState(N.Answering), o = this.options.attach === !0 ? new ot(l) : new Tt(l);
|
|
1970
1970
|
break;
|
|
1971
1971
|
default:
|
|
1972
1972
|
return y.error(`${this.id} - Unknown local SDP type:`, e), this.hangup({}, !1);
|
|
1973
1973
|
}
|
|
1974
1974
|
performance.mark("sdp-send-start"), this._execute(o).then(((d) => {
|
|
1975
1975
|
const { node_id: h = null } = d;
|
|
1976
|
-
this._targetNodeId = h,
|
|
1976
|
+
this._targetNodeId = h, a === K.Offer ? this.setState(N.Trying) : this.setState(N.Active);
|
|
1977
1977
|
})).catch(((d) => {
|
|
1978
|
-
y.error(`${this.id} - Sending ${
|
|
1978
|
+
y.error(`${this.id} - Sending ${a} error:`, d), this.hangup();
|
|
1979
1979
|
})).finally((() => {
|
|
1980
1980
|
performance.mark("sdp-send-end"), console.group("Performance Metrics"), console.table(this.performanceMetrics), console.groupEnd(), performance.clearMarks();
|
|
1981
1981
|
}));
|
|
@@ -1984,13 +1984,13 @@ class ln {
|
|
|
1984
1984
|
if (!e) return y.error("No SDP data provided"), this.hangup({}, !1);
|
|
1985
1985
|
const { sdp: n, type: i } = e;
|
|
1986
1986
|
let s = null;
|
|
1987
|
-
const
|
|
1987
|
+
const a = { sessid: this.session.sessionid, sdp: n, dialogParams: this.options, trickle: !0, "User-Agent": `Web-${Lt}` };
|
|
1988
1988
|
switch (i) {
|
|
1989
1989
|
case K.Offer:
|
|
1990
|
-
this.setState(N.Requesting), s = new
|
|
1990
|
+
this.setState(N.Requesting), s = new Et(a);
|
|
1991
1991
|
break;
|
|
1992
1992
|
case K.Answer:
|
|
1993
|
-
this.setState(N.Answering), s = this.options.attach === !0 ? new
|
|
1993
|
+
this.setState(N.Answering), s = this.options.attach === !0 ? new ot(a) : new Tt(a);
|
|
1994
1994
|
break;
|
|
1995
1995
|
default:
|
|
1996
1996
|
return y.error(`${this.id} - Unknown local SDP type:`, e), this.hangup({}, !1);
|
|
@@ -2012,7 +2012,7 @@ class ln {
|
|
|
2012
2012
|
e.candidate && e.candidate.candidate ? (y.debug("RTCPeer Candidate:", e.candidate), this._sendIceCandidate(e.candidate)) : this._sendEndOfCandidates();
|
|
2013
2013
|
}
|
|
2014
2014
|
_sendIceCandidate(e) {
|
|
2015
|
-
const n = new
|
|
2015
|
+
const n = new on({ sessid: this.session.sessionid, candidate: e.candidate, sdpMLineIndex: e.sdpMLineIndex, sdpMid: e.sdpMid, dialogParams: this.options });
|
|
2016
2016
|
this._execute(n);
|
|
2017
2017
|
}
|
|
2018
2018
|
_addIceCandidate(e) {
|
|
@@ -2028,7 +2028,7 @@ class ln {
|
|
|
2028
2028
|
}));
|
|
2029
2029
|
}
|
|
2030
2030
|
_sendEndOfCandidates() {
|
|
2031
|
-
const e = new
|
|
2031
|
+
const e = new Zn({ sessid: this.session.sessionid, endOfCandidates: !0, dialogParams: this.options });
|
|
2032
2032
|
this._execute(e), performance.mark("ice-gathering-end");
|
|
2033
2033
|
}
|
|
2034
2034
|
_resetTrickleIceCandidateState() {
|
|
@@ -2047,15 +2047,15 @@ class ln {
|
|
|
2047
2047
|
}, e.onicecandidateerror = (n) => {
|
|
2048
2048
|
var i;
|
|
2049
2049
|
if (y.debug("ICE candidate error:", n), (i = this.peer) === null || i === void 0 ? void 0 : i.statsReporter) {
|
|
2050
|
-
const s =
|
|
2050
|
+
const s = Rt(n, e);
|
|
2051
2051
|
this.peer.statsReporter.reportIceCandidateError(s);
|
|
2052
2052
|
}
|
|
2053
2053
|
}, e.addEventListener("addstream", ((n) => {
|
|
2054
2054
|
this.options.remoteStream = n.stream;
|
|
2055
2055
|
})), e.addEventListener("track", ((n) => {
|
|
2056
2056
|
this.options.remoteStream = n.streams[0];
|
|
2057
|
-
const { remoteElement: i, remoteStream: s, screenShare:
|
|
2058
|
-
|
|
2057
|
+
const { remoteElement: i, remoteStream: s, screenShare: a } = this.options;
|
|
2058
|
+
a === !1 && Ee(i, s);
|
|
2059
2059
|
}));
|
|
2060
2060
|
}
|
|
2061
2061
|
_registerTrickleIcePeerEvents(e) {
|
|
@@ -2066,15 +2066,15 @@ class ln {
|
|
|
2066
2066
|
}, e.onicecandidateerror = (n) => {
|
|
2067
2067
|
var i;
|
|
2068
2068
|
if (y.debug("ICE candidate error:", n), (i = this.peer) === null || i === void 0 ? void 0 : i.statsReporter) {
|
|
2069
|
-
const s =
|
|
2069
|
+
const s = Rt(n, e);
|
|
2070
2070
|
this.peer.statsReporter.reportIceCandidateError(s);
|
|
2071
2071
|
}
|
|
2072
2072
|
}, e.addEventListener("addstream", ((n) => {
|
|
2073
2073
|
this.options.remoteStream = n.stream;
|
|
2074
2074
|
})), e.addEventListener("track", ((n) => {
|
|
2075
2075
|
this.options.remoteStream = n.streams[0];
|
|
2076
|
-
const { remoteElement: i, remoteStream: s, screenShare:
|
|
2077
|
-
|
|
2076
|
+
const { remoteElement: i, remoteStream: s, screenShare: a } = this.options;
|
|
2077
|
+
a === !1 && Ee(i, s);
|
|
2078
2078
|
}));
|
|
2079
2079
|
}
|
|
2080
2080
|
_onMediaError(e) {
|
|
@@ -2087,21 +2087,21 @@ class ln {
|
|
|
2087
2087
|
this._dispatchNotification(Object.assign({ type: oe.conferenceUpdate, call: this }, e));
|
|
2088
2088
|
}
|
|
2089
2089
|
_dispatchNotification(e) {
|
|
2090
|
-
this.options.screenShare !== !0 && (
|
|
2090
|
+
this.options.screenShare !== !0 && (F(L.Notification, e, this.id, !1) || F(L.Notification, e, this.session.uuid));
|
|
2091
2091
|
}
|
|
2092
2092
|
_execute(e) {
|
|
2093
2093
|
return this.nodeId && (e.targetNodeId = this.nodeId), this.session.execute(e);
|
|
2094
2094
|
}
|
|
2095
2095
|
_init() {
|
|
2096
2096
|
const { id: e, userVariables: n, remoteCallerNumber: i, onNotification: s } = this.options;
|
|
2097
|
-
var
|
|
2098
|
-
this.options.id = e ? e.toString() : me(), this.id = this.options.id, n && (
|
|
2097
|
+
var a;
|
|
2098
|
+
this.options.id = e ? e.toString() : me(), this.id = this.options.id, n && (a = n, Object.keys(a).length !== 0) || (this.options.userVariables = this.session.options.userVariables || {}), i || (this.options.remoteCallerNumber = this.options.destinationNumber), this.session.calls[this.id] = this, de(L.MediaError, this._onMediaError, this.id), de(L.PeerConnectionFailureError, this._onPeerConnectionFailureError, this.id), ye(s) && de(L.Notification, s.bind(this), this.id), this.setState(N.New), y.info("New Call with Options:", this.options);
|
|
2099
2099
|
}
|
|
2100
2100
|
_finalize() {
|
|
2101
2101
|
var e;
|
|
2102
2102
|
this._stopStats(), (e = this.peer) === null || e === void 0 || e.close();
|
|
2103
2103
|
const { remoteStream: n, localStream: i } = this.options;
|
|
2104
|
-
Te(n), Te(i), ue(
|
|
2104
|
+
Te(n), Te(i), ue(L.MediaError, null, this.id), ue(L.PeerConnectionFailureError, null, this.id), this.session.calls[this.id] = null, delete this.session.calls[this.id];
|
|
2105
2105
|
}
|
|
2106
2106
|
_startStats(e) {
|
|
2107
2107
|
this._statsIntervalId = setInterval(this._doStats, e), y.info("Stats started");
|
|
@@ -2110,7 +2110,7 @@ class ln {
|
|
|
2110
2110
|
this._statsIntervalId && (clearInterval(this._statsIntervalId), this._statsIntervalId = null), y.debug("Stats stopped");
|
|
2111
2111
|
}
|
|
2112
2112
|
}
|
|
2113
|
-
|
|
2113
|
+
cn.setStateTelnyx = (t) => {
|
|
2114
2114
|
if (t) {
|
|
2115
2115
|
switch (t._state) {
|
|
2116
2116
|
case N.Requesting:
|
|
@@ -2138,15 +2138,15 @@ ln.setStateTelnyx = (t) => {
|
|
|
2138
2138
|
return t;
|
|
2139
2139
|
}
|
|
2140
2140
|
};
|
|
2141
|
-
class he extends
|
|
2141
|
+
class he extends cn {
|
|
2142
2142
|
constructor() {
|
|
2143
|
-
super(...arguments), this._statsInterval = null, this.sendConversationMessage = (e, n) => this.session.execute(new
|
|
2143
|
+
super(...arguments), this._statsInterval = null, this.sendConversationMessage = (e, n) => this.session.execute(new ii(e, n));
|
|
2144
2144
|
}
|
|
2145
2145
|
hangup(e = {}, n = !0) {
|
|
2146
2146
|
this.screenShare instanceof he && this.screenShare.hangup(e, n), super.hangup(e, n);
|
|
2147
2147
|
}
|
|
2148
2148
|
startScreenShare(e) {
|
|
2149
|
-
return
|
|
2149
|
+
return O(this, void 0, void 0, (function* () {
|
|
2150
2150
|
const n = yield (i = { video: !0 }, navigator.mediaDevices.getDisplayMedia(i));
|
|
2151
2151
|
var i;
|
|
2152
2152
|
n.getTracks().forEach(((h) => {
|
|
@@ -2154,7 +2154,7 @@ class he extends ln {
|
|
|
2154
2154
|
this.screenShare && this.screenShare.hangup();
|
|
2155
2155
|
}));
|
|
2156
2156
|
}));
|
|
2157
|
-
const { remoteCallerName: s, remoteCallerNumber:
|
|
2157
|
+
const { remoteCallerName: s, remoteCallerNumber: a, callerName: o, callerNumber: l } = this.options, d = Object.assign({ screenShare: !0, localStream: n, destinationNumber: `${this.extension}-screen`, remoteCallerName: s, remoteCallerNumber: `${a}-screen`, callerName: `${o} (Screen)`, callerNumber: `${l} (Screen)` }, e);
|
|
2158
2158
|
return this.screenShare = new he(this.session, d), this.screenShare.invite(), this.screenShare;
|
|
2159
2159
|
}));
|
|
2160
2160
|
}
|
|
@@ -2162,10 +2162,10 @@ class he extends ln {
|
|
|
2162
2162
|
this.screenShare instanceof he && this.screenShare.hangup();
|
|
2163
2163
|
}
|
|
2164
2164
|
setAudioOutDevice(e) {
|
|
2165
|
-
return
|
|
2165
|
+
return O(this, void 0, void 0, (function* () {
|
|
2166
2166
|
this.options.speakerId = e;
|
|
2167
2167
|
const { remoteElement: n, speakerId: i } = this.options;
|
|
2168
|
-
return !(!n || !i) &&
|
|
2168
|
+
return !(!n || !i) && tn(n, i);
|
|
2169
2169
|
}));
|
|
2170
2170
|
}
|
|
2171
2171
|
_finalize() {
|
|
@@ -2173,22 +2173,22 @@ class he extends ln {
|
|
|
2173
2173
|
}
|
|
2174
2174
|
_stats(e = !0) {
|
|
2175
2175
|
if (e === !1) return clearInterval(this._statsInterval);
|
|
2176
|
-
y.setLevel(2), this._statsInterval = window.setInterval((() =>
|
|
2176
|
+
y.setLevel(2), this._statsInterval = window.setInterval((() => O(this, void 0, void 0, (function* () {
|
|
2177
2177
|
const n = yield this.peer.instance.getStats(null);
|
|
2178
2178
|
let i = "";
|
|
2179
|
-
const s = ["certificate", "codec", "peer-connection", "stream", "local-candidate", "remote-candidate"],
|
|
2179
|
+
const s = ["certificate", "codec", "peer-connection", "stream", "local-candidate", "remote-candidate"], a = ["id", "type", "timestamp"];
|
|
2180
2180
|
n.forEach(((o) => {
|
|
2181
2181
|
s.includes(o.type) || (i += `
|
|
2182
2182
|
${o.type}
|
|
2183
2183
|
`, Object.keys(o).forEach(((l) => {
|
|
2184
|
-
|
|
2184
|
+
a.includes(l) || (i += ` ${l}: ${o[l]}
|
|
2185
2185
|
`);
|
|
2186
2186
|
})));
|
|
2187
2187
|
})), y.info(i);
|
|
2188
2188
|
}))), 2e3);
|
|
2189
2189
|
}
|
|
2190
2190
|
}
|
|
2191
|
-
class
|
|
2191
|
+
class hi extends qn {
|
|
2192
2192
|
constructor(e) {
|
|
2193
2193
|
super(e), this.calls = {}, this.autoRecoverCalls = !0, this._iceServers = [], this._localElement = null, this._remoteElement = null, this._jwtAuth = !0, this._audioConstraints = !0, this._previousAudioConstraints = !0, this._videoConstraints = !1, this._speaker = null, this._onlineHandler = null, this._offlineHandler = null, this._wasOffline = !1, this._videoConstraints = e.video || !1, this.iceServers = e.iceServers, this.ringtoneFile = e.ringtoneFile, this.ringbackFile = e.ringbackFile, this._setupNetworkListeners();
|
|
2194
2194
|
}
|
|
@@ -2197,20 +2197,20 @@ class pi extends Jn {
|
|
|
2197
2197
|
}
|
|
2198
2198
|
getIsRegistered() {
|
|
2199
2199
|
const e = Object.create(null, { getIsRegistered: { get: () => super.getIsRegistered } });
|
|
2200
|
-
return
|
|
2200
|
+
return O(this, void 0, void 0, (function* () {
|
|
2201
2201
|
return e.getIsRegistered.call(this);
|
|
2202
2202
|
}));
|
|
2203
2203
|
}
|
|
2204
2204
|
connect() {
|
|
2205
2205
|
const e = Object.create(null, { connect: { get: () => super.connect } });
|
|
2206
|
-
return
|
|
2206
|
+
return O(this, void 0, void 0, (function* () {
|
|
2207
2207
|
e.connect.call(this);
|
|
2208
2208
|
}));
|
|
2209
2209
|
}
|
|
2210
2210
|
checkPermissions(e = !0, n = !0) {
|
|
2211
|
-
return
|
|
2211
|
+
return O(this, void 0, void 0, (function* () {
|
|
2212
2212
|
try {
|
|
2213
|
-
const i = yield
|
|
2213
|
+
const i = yield Ue({ audio: e, video: n });
|
|
2214
2214
|
return Te(i), !0;
|
|
2215
2215
|
} catch {
|
|
2216
2216
|
return !1;
|
|
@@ -2222,7 +2222,7 @@ class pi extends Jn {
|
|
|
2222
2222
|
}
|
|
2223
2223
|
disconnect() {
|
|
2224
2224
|
const e = Object.create(null, { disconnect: { get: () => super.disconnect } });
|
|
2225
|
-
return
|
|
2225
|
+
return O(this, void 0, void 0, (function* () {
|
|
2226
2226
|
Object.keys(this.calls).forEach(((n) => this.calls[n].setState(N.Purge))), this.calls = {}, this._cleanupNetworkListeners(), yield e.disconnect.call(this);
|
|
2227
2227
|
}));
|
|
2228
2228
|
}
|
|
@@ -2234,41 +2234,41 @@ class pi extends Jn {
|
|
|
2234
2234
|
}
|
|
2235
2235
|
speedTest(e) {
|
|
2236
2236
|
return new Promise(((n, i) => {
|
|
2237
|
-
if (
|
|
2237
|
+
if (Xt(L.SpeedTest, ((o) => {
|
|
2238
2238
|
const { upDur: l, downDur: d } = o, h = d ? 8 * e / (d / 1e3) / 1024 : 0;
|
|
2239
2239
|
n({ upDur: l, downDur: d, upKps: (l ? 8 * e / (l / 1e3) / 1024 : 0).toFixed(0), downKps: h.toFixed(0) });
|
|
2240
2240
|
}), this.uuid), !(e = Number(e))) return i(`Invalid parameter 'bytes': ${e}`);
|
|
2241
2241
|
this.executeRaw(`#SPU ${e}`);
|
|
2242
2242
|
let s = e / 1024;
|
|
2243
2243
|
e % 1024 && s++;
|
|
2244
|
-
const
|
|
2245
|
-
for (let o = 0; o < s; o++) this.executeRaw(`#SPB ${
|
|
2244
|
+
const a = ".".repeat(1024);
|
|
2245
|
+
for (let o = 0; o < s; o++) this.executeRaw(`#SPB ${a}`);
|
|
2246
2246
|
this.executeRaw("#SPE");
|
|
2247
2247
|
}));
|
|
2248
2248
|
}
|
|
2249
2249
|
getDevices() {
|
|
2250
|
-
return ke().catch(((e) => (
|
|
2250
|
+
return ke().catch(((e) => (F(L.MediaError, e, this.uuid), [])));
|
|
2251
2251
|
}
|
|
2252
2252
|
getVideoDevices() {
|
|
2253
|
-
return ke(ae.Video).catch(((e) => (
|
|
2253
|
+
return ke(ae.Video).catch(((e) => (F(L.MediaError, e, this.uuid), [])));
|
|
2254
2254
|
}
|
|
2255
2255
|
getAudioInDevices() {
|
|
2256
|
-
return ke(ae.AudioIn).catch(((e) => (
|
|
2256
|
+
return ke(ae.AudioIn).catch(((e) => (F(L.MediaError, e, this.uuid), [])));
|
|
2257
2257
|
}
|
|
2258
2258
|
getAudioOutDevices() {
|
|
2259
|
-
return ke(ae.AudioOut).catch(((e) => (y.error("getAudioOutDevices", e),
|
|
2259
|
+
return ke(ae.AudioOut).catch(((e) => (y.error("getAudioOutDevices", e), F(L.MediaError, e, this.uuid), [])));
|
|
2260
2260
|
}
|
|
2261
2261
|
validateDeviceId(e, n, i) {
|
|
2262
|
-
return
|
|
2262
|
+
return je(e, n, i);
|
|
2263
2263
|
}
|
|
2264
2264
|
getDeviceResolutions(e) {
|
|
2265
|
-
return
|
|
2265
|
+
return O(this, void 0, void 0, (function* () {
|
|
2266
2266
|
try {
|
|
2267
|
-
return yield ((n) =>
|
|
2268
|
-
const i = [], s = yield
|
|
2269
|
-
for (let o = 0; o <
|
|
2270
|
-
const [l, d] =
|
|
2271
|
-
(yield
|
|
2267
|
+
return yield ((n) => O(void 0, void 0, void 0, (function* () {
|
|
2268
|
+
const i = [], s = yield Ue({ video: { deviceId: { exact: n } } }), a = s.getVideoTracks()[0];
|
|
2269
|
+
for (let o = 0; o < _t.length; o++) {
|
|
2270
|
+
const [l, d] = _t[o];
|
|
2271
|
+
(yield a.applyConstraints({ width: { exact: l }, height: { exact: d } }).then((() => !0)).catch((() => !1))) && i.push({ resolution: `${l}x${d}`, width: l, height: d });
|
|
2272
2272
|
}
|
|
2273
2273
|
return Te(s), i;
|
|
2274
2274
|
})))(e);
|
|
@@ -2281,13 +2281,13 @@ class pi extends Jn {
|
|
|
2281
2281
|
return { audio: this._audioConstraints, video: this._videoConstraints };
|
|
2282
2282
|
}
|
|
2283
2283
|
setAudioSettings(e) {
|
|
2284
|
-
return
|
|
2284
|
+
return O(this, void 0, void 0, (function* () {
|
|
2285
2285
|
if (!e) throw new Error("You need to provide the settings object");
|
|
2286
|
-
const { micId: n, micLabel: i } = e, s =
|
|
2287
|
-
return
|
|
2286
|
+
const { micId: n, micLabel: i } = e, s = Wt(e, ["micId", "micLabel"]);
|
|
2287
|
+
return Yn(s), this._audioConstraints = yield ((a, o, l, d) => O(void 0, void 0, void 0, (function* () {
|
|
2288
2288
|
const { deviceId: h } = d;
|
|
2289
|
-
if (h === void 0 && (
|
|
2290
|
-
const f = yield
|
|
2289
|
+
if (h === void 0 && (a || o)) {
|
|
2290
|
+
const f = yield je(a, o, l).catch(((v) => null));
|
|
2291
2291
|
f && (d.deviceId = { exact: f });
|
|
2292
2292
|
}
|
|
2293
2293
|
return d;
|
|
@@ -2304,7 +2304,7 @@ class pi extends Jn {
|
|
|
2304
2304
|
if (e && Array.isArray(e)) this._iceServers = e;
|
|
2305
2305
|
else {
|
|
2306
2306
|
const n = this.options.env === "development";
|
|
2307
|
-
this._iceServers = n ?
|
|
2307
|
+
this._iceServers = n ? Mn : On;
|
|
2308
2308
|
}
|
|
2309
2309
|
}
|
|
2310
2310
|
get iceServers() {
|
|
@@ -2330,25 +2330,25 @@ class pi extends Jn {
|
|
|
2330
2330
|
}
|
|
2331
2331
|
vertoBroadcast({ nodeId: e, channel: n = "", data: i }) {
|
|
2332
2332
|
if (!n) throw new Error(`Invalid channel for broadcast: ${n}`);
|
|
2333
|
-
const s = new
|
|
2334
|
-
e && (s.targetNodeId = e), this.execute(s).catch(((
|
|
2333
|
+
const s = new ei({ sessid: this.sessionid, eventChannel: n, data: i });
|
|
2334
|
+
e && (s.targetNodeId = e), this.execute(s).catch(((a) => a));
|
|
2335
2335
|
}
|
|
2336
2336
|
vertoSubscribe({ nodeId: e, channels: n = [], handler: i }) {
|
|
2337
|
-
return
|
|
2337
|
+
return O(this, void 0, void 0, (function* () {
|
|
2338
2338
|
if (!(n = n.filter(((d) => d && !this._existsSubscription(this.relayProtocol, d)))).length) return {};
|
|
2339
|
-
const s = new
|
|
2339
|
+
const s = new ti({ sessid: this.sessionid, eventChannel: n });
|
|
2340
2340
|
e && (s.targetNodeId = e);
|
|
2341
|
-
const
|
|
2342
|
-
return o.length && o.forEach(((d) => this._removeSubscription(this.relayProtocol, d))), l.forEach(((d) => this._addSubscription(this.relayProtocol, i, d))),
|
|
2341
|
+
const a = yield this.execute(s), { unauthorized: o = [], subscribed: l = [] } = it(a);
|
|
2342
|
+
return o.length && o.forEach(((d) => this._removeSubscription(this.relayProtocol, d))), l.forEach(((d) => this._addSubscription(this.relayProtocol, i, d))), a;
|
|
2343
2343
|
}));
|
|
2344
2344
|
}
|
|
2345
2345
|
vertoUnsubscribe({ nodeId: e, channels: n = [] }) {
|
|
2346
|
-
return
|
|
2346
|
+
return O(this, void 0, void 0, (function* () {
|
|
2347
2347
|
if (!(n = n.filter(((l) => l && this._existsSubscription(this.relayProtocol, l)))).length) return {};
|
|
2348
|
-
const i = new
|
|
2348
|
+
const i = new ni({ sessid: this.sessionid, eventChannel: n });
|
|
2349
2349
|
e && (i.targetNodeId = e);
|
|
2350
|
-
const s = yield this.execute(i), { unsubscribed:
|
|
2351
|
-
return
|
|
2350
|
+
const s = yield this.execute(i), { unsubscribed: a = [], notSubscribed: o = [] } = it(s);
|
|
2351
|
+
return a.forEach(((l) => this._removeSubscription(this.relayProtocol, l))), o.forEach(((l) => this._removeSubscription(this.relayProtocol, l))), s;
|
|
2352
2352
|
}));
|
|
2353
2353
|
}
|
|
2354
2354
|
_setupNetworkListeners() {
|
|
@@ -2365,102 +2365,102 @@ class pi extends Jn {
|
|
|
2365
2365
|
return he.setStateTelnyx(e);
|
|
2366
2366
|
}
|
|
2367
2367
|
}
|
|
2368
|
-
class
|
|
2368
|
+
class Ot {
|
|
2369
2369
|
constructor(e, n) {
|
|
2370
2370
|
this.code = n, this.message = e;
|
|
2371
2371
|
}
|
|
2372
2372
|
}
|
|
2373
|
-
class
|
|
2373
|
+
class ln extends Z {
|
|
2374
2374
|
constructor(e) {
|
|
2375
2375
|
super(), this.method = "anonymous_login";
|
|
2376
|
-
const { target_type: n, target_id: i, target_version_id: s, userVariables:
|
|
2376
|
+
const { target_type: n, target_id: i, target_version_id: s, userVariables: a, sessionId: o, reconnection: l } = e, d = { target_type: n, target_id: i, userVariables: a, reconnection: l, "User-Agent": { sdkVersion: We, data: navigator.userAgent } };
|
|
2377
2377
|
o && (d.sessid = o), s && (d.target_version_id = s), this.buildRequest({ method: this.method, params: d });
|
|
2378
2378
|
}
|
|
2379
2379
|
}
|
|
2380
|
-
const
|
|
2380
|
+
const pi = We;
|
|
2381
2381
|
class J {
|
|
2382
2382
|
constructor(e) {
|
|
2383
|
-
this.session = e, this.handleLogin = () =>
|
|
2384
|
-
const { login: n, password: i, passwd: s, login_token:
|
|
2383
|
+
this.session = e, this.handleLogin = () => O(this, void 0, void 0, (function* () {
|
|
2384
|
+
const { login: n, password: i, passwd: s, login_token: a, userVariables: o } = this.session.options, l = new sn(n, i || s, a, this.session.sessionid, o, !!fe()), d = yield this.session.execute(l).catch(this.session.handleLoginError);
|
|
2385
2385
|
d && (this.session.sessionid = d.sessid);
|
|
2386
|
-
})), this.handleAnonymousLogin = () =>
|
|
2387
|
-
const { anonymous_login: n } = this.session.options, i = new
|
|
2386
|
+
})), this.handleAnonymousLogin = () => O(this, void 0, void 0, (function* () {
|
|
2387
|
+
const { anonymous_login: n } = this.session.options, i = new ln({ target_id: n.target_id, target_type: n.target_type, target_version_id: n.target_version_id, sessionId: this.session.sessionid, userVariables: this.session.options.userVariables, reconnection: !!fe() }), s = yield this.session.execute(i).catch(this.session.handleLoginError);
|
|
2388
2388
|
s && (this.session.sessionid = s.sessid);
|
|
2389
2389
|
}));
|
|
2390
2390
|
}
|
|
2391
2391
|
_ack(e, n) {
|
|
2392
|
-
const i = new
|
|
2392
|
+
const i = new Qn(e, n);
|
|
2393
2393
|
this.nodeId && (i.targetNodeId = this.nodeId), this.session.execute(i);
|
|
2394
2394
|
}
|
|
2395
2395
|
reconnectDelay() {
|
|
2396
|
-
return 1e3 *
|
|
2396
|
+
return 1e3 * Kt(2, 6);
|
|
2397
2397
|
}
|
|
2398
2398
|
handleMessage(e) {
|
|
2399
2399
|
var n;
|
|
2400
|
-
const { session: i } = this, { id: s, method:
|
|
2400
|
+
const { session: i } = this, { id: s, method: a, params: o = {}, voice_sdk_id: l } = e, d = o?.callID, h = o?.eventChannel, f = o?.eventType, v = a === $.Attach, _ = a === $.Punt;
|
|
2401
2401
|
let w = !1;
|
|
2402
2402
|
if (f === "channelPvtData") return this._handlePvtEvent(o.pvtData);
|
|
2403
2403
|
if (d && i.calls.hasOwnProperty(d)) {
|
|
2404
|
-
if (!v) return i.calls[d].handleMessage(e), void this._ack(s,
|
|
2404
|
+
if (!v) return i.calls[d].handleMessage(e), void this._ack(s, a);
|
|
2405
2405
|
w = (i.options.keepConnectionAliveOnSocketClose || i.calls[d].options.keepConnectionAliveOnSocketClose) && !!(!((n = this.session.calls[d].peer) === null || n === void 0) && n.instance), w ? y.info(`[${(/* @__PURE__ */ new Date()).toISOString()}][${d}] re-attaching call due to ATTACH and keepConnectionAliveOnSocketClose`) : (y.info(`[${(/* @__PURE__ */ new Date()).toISOString()}][${d}] Hanging up the call due to ATTACH`), i.calls[d].hangup({}, !1));
|
|
2406
2406
|
}
|
|
2407
|
-
if (_ && i.options.keepConnectionAliveOnSocketClose) return y.info(`[${(/* @__PURE__ */ new Date()).toISOString()}][${d}] keeping call alive due to PUNT and keepConnectionAliveOnSocketClose. Disconnecting base session...`), this.session.socketDisconnect(), void this._ack(s,
|
|
2407
|
+
if (_ && i.options.keepConnectionAliveOnSocketClose) return y.info(`[${(/* @__PURE__ */ new Date()).toISOString()}][${d}] keeping call alive due to PUNT and keepConnectionAliveOnSocketClose. Disconnecting base session...`), this.session.socketDisconnect(), void this._ack(s, a);
|
|
2408
2408
|
const C = () => {
|
|
2409
2409
|
var S, A, E, P, D, q;
|
|
2410
2410
|
const B = { id: d, audio: !0, video: i.options.video, remoteSdp: o.sdp, destinationNumber: o.callee_id_number, remoteCallerName: o.caller_id_name, remoteCallerNumber: o.caller_id_number, callerName: o.callee_id_name, callerNumber: o.callee_id_number, attach: v, mediaSettings: o.mediaSettings, debug: (S = i.options.debug) !== null && S !== void 0 && S, debugOutput: (A = i.options.debugOutput) !== null && A !== void 0 ? A : "socket", trickleIce: (E = i.options.trickleIce) !== null && E !== void 0 && E, prefetchIceCandidates: (P = i.options.prefetchIceCandidates) !== null && P !== void 0 && P, forceRelayCandidate: (D = i.options.forceRelayCandidate) !== null && D !== void 0 && D, keepConnectionAliveOnSocketClose: (q = i.options.keepConnectionAliveOnSocketClose) !== null && q !== void 0 && q };
|
|
2411
2411
|
o.telnyx_call_control_id && (B.telnyxCallControlId = o.telnyx_call_control_id), o.telnyx_session_id && (B.telnyxSessionId = o.telnyx_session_id), o.telnyx_leg_id && (B.telnyxLegId = o.telnyx_leg_id), o.client_state && (B.clientState = o.client_state), o.dialogParams && o.dialogParams.custom_headers && o.dialogParams.custom_headers.length && (B.customHeaders = o.dialogParams.custom_headers);
|
|
2412
2412
|
const x = new he(i, B);
|
|
2413
2413
|
return x.nodeId = this.nodeId, x;
|
|
2414
|
-
}, k = new
|
|
2415
|
-
switch (
|
|
2416
|
-
case
|
|
2414
|
+
}, k = new Zt(l), p = new en(l);
|
|
2415
|
+
switch (a) {
|
|
2416
|
+
case $.Ping:
|
|
2417
2417
|
this.session.setPingReceived(), this.session.execute(p).then((() => {
|
|
2418
2418
|
J.receivedAuthenticationRequired = 0;
|
|
2419
|
-
})).catch(((E) =>
|
|
2419
|
+
})).catch(((E) => O(this, void 0, void 0, (function* () {
|
|
2420
2420
|
E.code === this.session.authenticationRequiredErrorCode && J.receivedAuthenticationRequired >= 0 && (J.receivedAuthenticationRequired += 1, J.receivedAuthenticationRequired > 1 && this.session.hasAutoReconnect() && (y.warn("Ping failed twice with Authentication Required. Re-logging in..."), Ne(this.session.options) ? this.handleLogin() : Ie(this.session.options) && this.handleAnonymousLogin(), J.receivedAuthenticationRequired = -1));
|
|
2421
2421
|
}))));
|
|
2422
2422
|
break;
|
|
2423
|
-
case
|
|
2423
|
+
case $.Punt:
|
|
2424
2424
|
i.disconnect();
|
|
2425
2425
|
break;
|
|
2426
|
-
case
|
|
2426
|
+
case $.Invite: {
|
|
2427
2427
|
const E = C();
|
|
2428
|
-
E.playRingtone(), E.setState(N.Ringing), E.direction = le.Inbound, this._ack(s,
|
|
2428
|
+
E.playRingtone(), E.setState(N.Ringing), E.direction = le.Inbound, this._ack(s, a);
|
|
2429
2429
|
break;
|
|
2430
2430
|
}
|
|
2431
|
-
case
|
|
2432
|
-
if (w) return void this.session.execute(new
|
|
2431
|
+
case $.Attach: {
|
|
2432
|
+
if (w) return void this.session.execute(new ot({ sessid: this.session.sessionid, sdp: this.session.calls[d].peer.instance.localDescription.sdp, dialogParams: this.session.calls[d].options, "User-Agent": `Web-${pi}` }));
|
|
2433
2433
|
y.info(`[${(/* @__PURE__ */ new Date()).toISOString()}][${d}] Re-creating call instance.`);
|
|
2434
2434
|
const E = C();
|
|
2435
2435
|
this.session.autoRecoverCalls ? E.answer() : E.setState(N.Recovering), E.handleMessage(e);
|
|
2436
2436
|
break;
|
|
2437
2437
|
}
|
|
2438
|
-
case
|
|
2438
|
+
case $.Event:
|
|
2439
2439
|
case "webrtc.event":
|
|
2440
2440
|
if (!h) return void y.error("Verto received an unknown event:", o);
|
|
2441
2441
|
const S = i.relayProtocol, A = h.split(".")[0];
|
|
2442
|
-
i._existsSubscription(S, h) ?
|
|
2442
|
+
i._existsSubscription(S, h) ? F(S, o, h) : h === i.sessionid ? this._handleSessionEvent(o.eventData) : i._existsSubscription(S, A) ? F(S, o, A) : i.calls.hasOwnProperty(h) ? i.calls[h].handleMessage(e) : F(L.Notification, o, i.uuid);
|
|
2443
2443
|
break;
|
|
2444
|
-
case
|
|
2445
|
-
o.type = oe.generic,
|
|
2444
|
+
case $.Info:
|
|
2445
|
+
o.type = oe.generic, F(L.Notification, o, i.uuid);
|
|
2446
2446
|
break;
|
|
2447
|
-
case
|
|
2447
|
+
case $.ClientReady:
|
|
2448
2448
|
this.session.execute(k);
|
|
2449
2449
|
break;
|
|
2450
2450
|
default: {
|
|
2451
|
-
const E =
|
|
2451
|
+
const E = ht(e);
|
|
2452
2452
|
if (E) {
|
|
2453
2453
|
switch (E) {
|
|
2454
2454
|
case te.REGISTER:
|
|
2455
2455
|
case te.REGED:
|
|
2456
|
-
i.connection.previousGatewayState !== te.REGED && i.connection.previousGatewayState !== te.REGISTER && (this.session._triggerKeepAliveTimeoutCheck(), J.retriedRegister = 0, o.type = oe.vertoClientReady,
|
|
2456
|
+
i.connection.previousGatewayState !== te.REGED && i.connection.previousGatewayState !== te.REGISTER && (this.session._triggerKeepAliveTimeoutCheck(), J.retriedRegister = 0, o.type = oe.vertoClientReady, F(L.Ready, o, i.uuid), i.options.trickleIce && (y.debug("Trickle ICE is enabled. Checking Gateway support"), this.session.execute(new on({ candidate: "" })).catch(((P) => {
|
|
2457
2457
|
P.code === this.session.invalidMethodErrorCode ? (y.warn("Trickle ICE is not supported by the server, disabling it."), y.debug("Trickle ICE check error:", JSON.stringify(P, null, 2)), i.options.trickleIce = !1) : y.debug("Trickle ICE check:", JSON.stringify(P, null, 2));
|
|
2458
2458
|
}))));
|
|
2459
2459
|
break;
|
|
2460
2460
|
case te.UNREGED:
|
|
2461
2461
|
case te.NOREG:
|
|
2462
2462
|
if (J.retriedRegister += 1, J.retriedRegister === 5) {
|
|
2463
|
-
J.retriedRegister = 0,
|
|
2463
|
+
J.retriedRegister = 0, F(L.Error, { error: new Ot("Fail to register the user, the server tried 5 times", "UNREGED|NOREG"), sessionId: i.sessionid }, i.uuid);
|
|
2464
2464
|
break;
|
|
2465
2465
|
}
|
|
2466
2466
|
setTimeout((() => {
|
|
@@ -2471,11 +2471,11 @@ class J {
|
|
|
2471
2471
|
case te.FAIL_WAIT:
|
|
2472
2472
|
if (i.connection.previousGatewayState !== te.FAILED && i.connection.previousGatewayState !== te.FAIL_WAIT) {
|
|
2473
2473
|
if (!this.session.hasAutoReconnect()) {
|
|
2474
|
-
J.retriedConnect = 0,
|
|
2474
|
+
J.retriedConnect = 0, F(L.Error, { error: new Ot("Fail to connect the server, the server tried 5 times", "FAILED|FAIL_WAIT"), sessionId: i.sessionid }, i.uuid);
|
|
2475
2475
|
break;
|
|
2476
2476
|
}
|
|
2477
2477
|
if (J.retriedConnect += 1, J.retriedConnect === 5) {
|
|
2478
|
-
J.retriedConnect = 0,
|
|
2478
|
+
J.retriedConnect = 0, F(L.Error, { error: new Error("Connection Retry Failed"), sessionId: i.sessionid }, i.uuid);
|
|
2479
2479
|
break;
|
|
2480
2480
|
}
|
|
2481
2481
|
setTimeout((() => {
|
|
@@ -2500,41 +2500,41 @@ class J {
|
|
|
2500
2500
|
const i = Object.keys(this.session.calls);
|
|
2501
2501
|
if (e.action !== "bootObj") return i.find(((s) => this.session.calls[s].channels.includes(n)));
|
|
2502
2502
|
{
|
|
2503
|
-
const s = e.data.find(((
|
|
2503
|
+
const s = e.data.find(((a) => i.includes(a[0])));
|
|
2504
2504
|
if (s instanceof Array) return s[0];
|
|
2505
2505
|
}
|
|
2506
2506
|
}
|
|
2507
2507
|
_handlePvtEvent(e) {
|
|
2508
|
-
return
|
|
2509
|
-
const { session: n } = this, i = n.relayProtocol, { action: s, laChannel:
|
|
2508
|
+
return O(this, void 0, void 0, (function* () {
|
|
2509
|
+
const { session: n } = this, i = n.relayProtocol, { action: s, laChannel: a, laName: o, chatChannel: l, infoChannel: d, modChannel: h, conferenceMemberID: f, role: v, callID: _ } = e;
|
|
2510
2510
|
switch (s) {
|
|
2511
2511
|
case "conference-liveArray-join": {
|
|
2512
2512
|
const w = () => {
|
|
2513
|
-
n.vertoBroadcast({ nodeId: this.nodeId, channel:
|
|
2514
|
-
}, C = { nodeId: this.nodeId, channels: [
|
|
2515
|
-
const S = _ || this._retrieveCallId(p,
|
|
2513
|
+
n.vertoBroadcast({ nodeId: this.nodeId, channel: a, data: { liveArray: { command: "bootstrap", context: a, name: o } } });
|
|
2514
|
+
}, C = { nodeId: this.nodeId, channels: [a], handler: ({ data: p }) => {
|
|
2515
|
+
const S = _ || this._retrieveCallId(p, a);
|
|
2516
2516
|
if (S && n.calls.hasOwnProperty(S)) {
|
|
2517
2517
|
const A = n.calls[S];
|
|
2518
|
-
A._addChannel(
|
|
2518
|
+
A._addChannel(a), A.extension = o, A.handleConferenceUpdate(p, e).then(((E) => {
|
|
2519
2519
|
E === "INVALID_PACKET" && w();
|
|
2520
2520
|
}));
|
|
2521
2521
|
}
|
|
2522
2522
|
} }, k = yield n.vertoSubscribe(C).catch(((p) => {
|
|
2523
2523
|
y.error("liveArray subscription error:", p);
|
|
2524
2524
|
}));
|
|
2525
|
-
|
|
2525
|
+
nt(k, a) && w();
|
|
2526
2526
|
break;
|
|
2527
2527
|
}
|
|
2528
2528
|
case "conference-liveArray-part": {
|
|
2529
2529
|
let w = null;
|
|
2530
|
-
if (
|
|
2531
|
-
const { callId: k = null } = n.subscriptions[i][
|
|
2530
|
+
if (a && n._existsSubscription(i, a)) {
|
|
2531
|
+
const { callId: k = null } = n.subscriptions[i][a];
|
|
2532
2532
|
if (w = n.calls[k] || null, k !== null) {
|
|
2533
2533
|
const p = { type: oe.conferenceUpdate, action: se.Leave, conferenceName: o, participantId: Number(f), role: v };
|
|
2534
|
-
|
|
2534
|
+
F(L.Notification, p, k, !1) || F(L.Notification, p, n.uuid), w === null && ue(L.Notification, null, k);
|
|
2535
2535
|
}
|
|
2536
2536
|
}
|
|
2537
|
-
const C = [
|
|
2537
|
+
const C = [a, l, d, h];
|
|
2538
2538
|
n.vertoUnsubscribe({ nodeId: this.nodeId, channels: C }).then((({ unsubscribedChannels: k = [] }) => {
|
|
2539
2539
|
w && (w.channels = w.channels.filter(((p) => !k.includes(p))));
|
|
2540
2540
|
})).catch(((k) => {
|
|
@@ -2549,26 +2549,26 @@ class J {
|
|
|
2549
2549
|
switch (e.contentType) {
|
|
2550
2550
|
case "layout-info":
|
|
2551
2551
|
case "layer-info":
|
|
2552
|
-
|
|
2552
|
+
an(this.session, e);
|
|
2553
2553
|
break;
|
|
2554
2554
|
case "logo-info": {
|
|
2555
2555
|
const n = { type: oe.conferenceUpdate, action: se.LogoInfo, logo: e.logoURL };
|
|
2556
|
-
|
|
2556
|
+
F(L.Notification, n, this.session.uuid);
|
|
2557
2557
|
break;
|
|
2558
2558
|
}
|
|
2559
2559
|
}
|
|
2560
2560
|
}
|
|
2561
2561
|
}
|
|
2562
2562
|
J.retriedConnect = 0, J.retriedRegister = 0, J.receivedAuthenticationRequired = 0;
|
|
2563
|
-
class
|
|
2563
|
+
class fi extends hi {
|
|
2564
2564
|
constructor(e) {
|
|
2565
|
-
super(e), this.relayProtocol = "verto-protocol", this.timeoutErrorCode = -329990, this.handleLoginOnSocketOpen = () =>
|
|
2565
|
+
super(e), this.relayProtocol = "verto-protocol", this.timeoutErrorCode = -329990, this.handleLoginOnSocketOpen = () => O(this, void 0, void 0, (function* () {
|
|
2566
2566
|
this._idle = !1;
|
|
2567
|
-
const { login: n, password: i, passwd: s, login_token:
|
|
2567
|
+
const { login: n, password: i, passwd: s, login_token: a, userVariables: o, autoReconnect: l = !0 } = this.options, d = new sn(n, i || s, a, this.sessionid, o, !!fe()), h = yield this.execute(d).catch(this._handleLoginError);
|
|
2568
2568
|
h && (this._autoReconnect = l, this.sessionid = h.sessid);
|
|
2569
|
-
})), this.handleAnonymousLoginOnSocketOpen = () =>
|
|
2569
|
+
})), this.handleAnonymousLoginOnSocketOpen = () => O(this, void 0, void 0, (function* () {
|
|
2570
2570
|
this._idle = !1;
|
|
2571
|
-
const { anonymous_login: n } = this.options, i = new
|
|
2571
|
+
const { anonymous_login: n } = this.options, i = new ln({ target_id: n.target_id, target_type: n.target_type, target_version_id: n.target_version_id, sessionId: this.sessionid, userVariables: this.options.userVariables, reconnection: !!fe() }), s = yield this.execute(i).catch(this._handleLoginError);
|
|
2572
2572
|
s && (this.sessionid = s.sessid);
|
|
2573
2573
|
})), window.addEventListener("beforeunload", ((n) => {
|
|
2574
2574
|
this.calls && Object.keys(this.calls).forEach(((i) => {
|
|
@@ -2598,7 +2598,7 @@ class gi extends pi {
|
|
|
2598
2598
|
return !!Ie(this.options) || !!e.destinationNumber;
|
|
2599
2599
|
}
|
|
2600
2600
|
_onSocketOpen() {
|
|
2601
|
-
return
|
|
2601
|
+
return O(this, void 0, void 0, (function* () {
|
|
2602
2602
|
return Ne(this.options) ? this.handleLoginOnSocketOpen() : Ie(this.options) ? this.handleAnonymousLoginOnSocketOpen() : void 0;
|
|
2603
2603
|
}));
|
|
2604
2604
|
}
|
|
@@ -2606,26 +2606,26 @@ class gi extends pi {
|
|
|
2606
2606
|
new J(this).handleMessage(e);
|
|
2607
2607
|
}
|
|
2608
2608
|
}
|
|
2609
|
-
class
|
|
2609
|
+
class gi extends fi {
|
|
2610
2610
|
constructor(e) {
|
|
2611
|
-
super(e), y.info(`SDK version: ${
|
|
2611
|
+
super(e), y.info(`SDK version: ${nn}`);
|
|
2612
2612
|
}
|
|
2613
2613
|
newCall(e) {
|
|
2614
2614
|
return super.newCall(e);
|
|
2615
2615
|
}
|
|
2616
2616
|
static webRTCInfo() {
|
|
2617
|
-
return
|
|
2617
|
+
return Kn();
|
|
2618
2618
|
}
|
|
2619
2619
|
static webRTCSupportedBrowserList() {
|
|
2620
2620
|
return [{ operationSystem: "Android", supported: [{ browserName: "Chrome", features: ["audio"], supported: H.full }, { browserName: "Firefox", features: ["audio"], supported: H.partial }, { browserName: "Safari", supported: H.not_supported }, { browserName: "Edge", supported: H.not_supported }] }, { operationSystem: "iOS", supported: [{ browserName: "Chrome", supported: H.not_supported }, { browserName: "Firefox", supported: H.not_supported }, { browserName: "Safari", features: ["video", "audio"], supported: H.full }, { browserName: "Edge", supported: H.not_supported }] }, { operationSystem: "Linux", supported: [{ browserName: "Chrome", features: ["video", "audio"], supported: H.full }, { browserName: "Firefox", features: ["audio"], supported: H.partial }, { browserName: "Safari", supported: H.not_supported }, { browserName: "Edge", supported: H.not_supported }] }, { operationSystem: "MacOS", supported: [{ browserName: "Chrome", features: ["video", "audio"], supported: H.full }, { browserName: "Firefox", features: ["audio"], supported: H.partial }, { browserName: "Safari", features: ["video", "audio"], supported: H.full }, { browserName: "Edge", features: ["audio"], supported: H.partial }] }, { operationSystem: "Windows", supported: [{ browserName: "Chrome", features: ["video", "audio"], supported: H.full }, { browserName: "Firefox", features: ["audio"], supported: H.partial }, { browserName: "Safari", supported: H.not_supported }, { browserName: "Edge", features: ["audio"], supported: H.partial }] }];
|
|
2621
2621
|
}
|
|
2622
2622
|
}
|
|
2623
|
-
function
|
|
2623
|
+
function dn(t) {
|
|
2624
2624
|
return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t;
|
|
2625
2625
|
}
|
|
2626
|
-
var Xe = { exports: {} },
|
|
2627
|
-
function
|
|
2628
|
-
return
|
|
2626
|
+
var Xe = { exports: {} }, Mt;
|
|
2627
|
+
function vi() {
|
|
2628
|
+
return Mt || (Mt = 1, (function(t) {
|
|
2629
2629
|
var e = Object.prototype.hasOwnProperty, n = "~";
|
|
2630
2630
|
function i() {
|
|
2631
2631
|
}
|
|
@@ -2633,7 +2633,7 @@ function mi() {
|
|
|
2633
2633
|
function s(d, h, f) {
|
|
2634
2634
|
this.fn = d, this.context = h, this.once = f || !1;
|
|
2635
2635
|
}
|
|
2636
|
-
function
|
|
2636
|
+
function a(d, h, f, v, _) {
|
|
2637
2637
|
if (typeof f != "function")
|
|
2638
2638
|
throw new TypeError("The listener must be a function");
|
|
2639
2639
|
var w = new s(f, v || d, _), C = n ? n + h : h;
|
|
@@ -2707,9 +2707,9 @@ function mi() {
|
|
|
2707
2707
|
}
|
|
2708
2708
|
return !0;
|
|
2709
2709
|
}, l.prototype.on = function(h, f, v) {
|
|
2710
|
-
return
|
|
2710
|
+
return a(this, h, f, v, !1);
|
|
2711
2711
|
}, l.prototype.once = function(h, f, v) {
|
|
2712
|
-
return
|
|
2712
|
+
return a(this, h, f, v, !0);
|
|
2713
2713
|
}, l.prototype.removeListener = function(h, f, v, _) {
|
|
2714
2714
|
var w = n ? n + h : h;
|
|
2715
2715
|
if (!this._events[w]) return this;
|
|
@@ -2730,14 +2730,14 @@ function mi() {
|
|
|
2730
2730
|
}, l.prototype.off = l.prototype.removeListener, l.prototype.addListener = l.prototype.on, l.prefixed = n, l.EventEmitter = l, t.exports = l;
|
|
2731
2731
|
})(Xe)), Xe.exports;
|
|
2732
2732
|
}
|
|
2733
|
-
var
|
|
2734
|
-
const
|
|
2735
|
-
var Pe = { exports: {} },
|
|
2736
|
-
function
|
|
2737
|
-
return
|
|
2733
|
+
var mi = vi();
|
|
2734
|
+
const ft = /* @__PURE__ */ dn(mi), Fe = new ft();
|
|
2735
|
+
var Pe = { exports: {} }, yi = Pe.exports, Pt;
|
|
2736
|
+
function bi() {
|
|
2737
|
+
return Pt || (Pt = 1, (function(t) {
|
|
2738
2738
|
(function(e, n) {
|
|
2739
2739
|
t.exports ? t.exports = n() : e.log = n();
|
|
2740
|
-
})(
|
|
2740
|
+
})(yi, function() {
|
|
2741
2741
|
var e = function() {
|
|
2742
2742
|
}, n = "undefined", i = typeof window !== n && typeof window.navigator !== n && /Trident\/|MSIE /.test(window.navigator.userAgent), s = [
|
|
2743
2743
|
"trace",
|
|
@@ -2745,7 +2745,7 @@ function _i() {
|
|
|
2745
2745
|
"info",
|
|
2746
2746
|
"warn",
|
|
2747
2747
|
"error"
|
|
2748
|
-
],
|
|
2748
|
+
], a = {}, o = null;
|
|
2749
2749
|
function l(k, p) {
|
|
2750
2750
|
var S = k[p];
|
|
2751
2751
|
if (typeof S.bind == "function")
|
|
@@ -2827,7 +2827,7 @@ function _i() {
|
|
|
2827
2827
|
}
|
|
2828
2828
|
}
|
|
2829
2829
|
}
|
|
2830
|
-
function
|
|
2830
|
+
function r(u) {
|
|
2831
2831
|
var g = u;
|
|
2832
2832
|
if (typeof g == "string" && S.levels[g.toUpperCase()] !== void 0 && (g = S.levels[g.toUpperCase()]), typeof g == "number" && g >= 0 && g <= S.levels.SILENT)
|
|
2833
2833
|
return g;
|
|
@@ -2843,9 +2843,9 @@ function _i() {
|
|
|
2843
2843
|
}, S.methodFactory = p || _, S.getLevel = function() {
|
|
2844
2844
|
return P ?? E ?? A;
|
|
2845
2845
|
}, S.setLevel = function(u, g) {
|
|
2846
|
-
return P =
|
|
2846
|
+
return P = r(u), g !== !1 && q(P), f.call(S);
|
|
2847
2847
|
}, S.setDefaultLevel = function(u) {
|
|
2848
|
-
E =
|
|
2848
|
+
E = r(u), B() || S.setLevel(u, !1);
|
|
2849
2849
|
}, S.resetLevel = function() {
|
|
2850
2850
|
P = null, x(), f.call(S);
|
|
2851
2851
|
}, S.enableAll = function(u) {
|
|
@@ -2853,20 +2853,20 @@ function _i() {
|
|
|
2853
2853
|
}, S.disableAll = function(u) {
|
|
2854
2854
|
S.setLevel(S.levels.SILENT, u);
|
|
2855
2855
|
}, S.rebuild = function() {
|
|
2856
|
-
if (o !== S && (A =
|
|
2857
|
-
for (var u in
|
|
2858
|
-
|
|
2859
|
-
}, A =
|
|
2856
|
+
if (o !== S && (A = r(o.getLevel())), f.call(S), o === S)
|
|
2857
|
+
for (var u in a)
|
|
2858
|
+
a[u].rebuild();
|
|
2859
|
+
}, A = r(
|
|
2860
2860
|
o ? o.getLevel() : "WARN"
|
|
2861
2861
|
);
|
|
2862
2862
|
var c = B();
|
|
2863
|
-
c != null && (P =
|
|
2863
|
+
c != null && (P = r(c)), f.call(S);
|
|
2864
2864
|
}
|
|
2865
2865
|
o = new w(), o.getLogger = function(p) {
|
|
2866
2866
|
if (typeof p != "symbol" && typeof p != "string" || p === "")
|
|
2867
2867
|
throw new TypeError("You must supply a name when creating a logger.");
|
|
2868
|
-
var S =
|
|
2869
|
-
return S || (S =
|
|
2868
|
+
var S = a[p];
|
|
2869
|
+
return S || (S = a[p] = new w(
|
|
2870
2870
|
p,
|
|
2871
2871
|
o.methodFactory
|
|
2872
2872
|
)), S;
|
|
@@ -2875,29 +2875,29 @@ function _i() {
|
|
|
2875
2875
|
return o.noConflict = function() {
|
|
2876
2876
|
return typeof window !== n && window.log === o && (window.log = C), o;
|
|
2877
2877
|
}, o.getLoggers = function() {
|
|
2878
|
-
return
|
|
2878
|
+
return a;
|
|
2879
2879
|
}, o.default = o, o;
|
|
2880
2880
|
});
|
|
2881
2881
|
})(Pe)), Pe.exports;
|
|
2882
2882
|
}
|
|
2883
|
-
var
|
|
2884
|
-
const
|
|
2883
|
+
var _i = bi();
|
|
2884
|
+
const Si = /* @__PURE__ */ dn(_i), wi = () => (/* @__PURE__ */ new Date()).toISOString().replace("T", " ").replace("Z", ""), z = Si.getLogger("telnyx-ai-agent"), Ci = z.methodFactory;
|
|
2885
2885
|
z.methodFactory = (t, e, n) => {
|
|
2886
|
-
const i =
|
|
2886
|
+
const i = Ci(t, e, n);
|
|
2887
2887
|
return function(...s) {
|
|
2888
|
-
i(
|
|
2888
|
+
i(wi(), "-", ...s);
|
|
2889
2889
|
};
|
|
2890
2890
|
};
|
|
2891
2891
|
z.setLevel("info");
|
|
2892
|
-
function
|
|
2892
|
+
function ki(t, e) {
|
|
2893
2893
|
let n = 0;
|
|
2894
2894
|
return (...i) => {
|
|
2895
2895
|
const s = Date.now();
|
|
2896
2896
|
s - n >= e && (n = s, t(...i));
|
|
2897
2897
|
};
|
|
2898
2898
|
}
|
|
2899
|
-
const
|
|
2900
|
-
class
|
|
2899
|
+
const Ii = 10, Ei = 500, Ti = 100, Dt = 20;
|
|
2900
|
+
class Ai {
|
|
2901
2901
|
remoteIntervalId = null;
|
|
2902
2902
|
localIntervalId = null;
|
|
2903
2903
|
remoteStream = null;
|
|
@@ -2913,14 +2913,21 @@ class Ti {
|
|
|
2913
2913
|
// Local stream (user) state tracking
|
|
2914
2914
|
userIsSpeaking = !1;
|
|
2915
2915
|
lastUserAudioTime = null;
|
|
2916
|
+
userSpeechStartTime = null;
|
|
2916
2917
|
// Latency measurement tracking
|
|
2917
2918
|
userSilenceStartTime = null;
|
|
2918
2919
|
isFirstAgentSpeech = !0;
|
|
2919
2920
|
monitorStartTime = null;
|
|
2920
|
-
|
|
2921
|
+
// Configurable VAD options
|
|
2922
|
+
volumeThreshold;
|
|
2923
|
+
silenceDurationMs;
|
|
2924
|
+
minSpeechDurationMs;
|
|
2925
|
+
maxLatencyMs;
|
|
2926
|
+
constructor(e) {
|
|
2927
|
+
this.volumeThreshold = e?.volumeThreshold ?? Ii, this.silenceDurationMs = e?.silenceDurationMs ?? Ei, this.minSpeechDurationMs = e?.minSpeechDurationMs ?? Ti, this.maxLatencyMs = e?.maxLatencyMs;
|
|
2921
2928
|
}
|
|
2922
|
-
updateAgentState =
|
|
2923
|
-
z.debug("AudioStreamMonitor updateAgentState", e), z.debug("Previous state:", this.lastState), e.state !== this.lastState && (this.lastState = e.state,
|
|
2929
|
+
updateAgentState = ki((e) => {
|
|
2930
|
+
z.debug("AudioStreamMonitor updateAgentState", e), z.debug("Previous state:", this.lastState), e.state !== this.lastState && (this.lastState = e.state, Fe.emit("conversation.agent.state", e));
|
|
2924
2931
|
}, 100);
|
|
2925
2932
|
/**
|
|
2926
2933
|
* Set the remote audio stream (agent's voice) to monitor for speech detection
|
|
@@ -2967,23 +2974,23 @@ class Ti {
|
|
|
2967
2974
|
let i = !1;
|
|
2968
2975
|
const s = () => {
|
|
2969
2976
|
this.remoteAnalyser?.getByteFrequencyData(n);
|
|
2970
|
-
const
|
|
2971
|
-
if (Math.random() < 0.01 && z.debug("Remote audio volume:",
|
|
2977
|
+
const a = n.reduce((l, d) => l + d, 0) / n.length, o = a >= this.volumeThreshold;
|
|
2978
|
+
if (Math.random() < 0.01 && z.debug("Remote audio volume:", a, "threshold:", this.volumeThreshold, "above:", o), o)
|
|
2972
2979
|
if (i)
|
|
2973
2980
|
this.updateAgentState({ state: "speaking" });
|
|
2974
2981
|
else if (this.isFirstAgentSpeech && this.monitorStartTime !== null) {
|
|
2975
|
-
const l = performance.now() - this.monitorStartTime;
|
|
2976
|
-
this.isFirstAgentSpeech = !1, this.thinkingStartTime = null, this.userSilenceStartTime = null, this.updateAgentState({ state: "speaking", greetingLatencyMs: l });
|
|
2982
|
+
const l = Math.round(performance.now() - this.monitorStartTime);
|
|
2983
|
+
this.isFirstAgentSpeech = !1, this.thinkingStartTime = null, this.userSilenceStartTime = null, this.userSpeechStartTime = null, this.updateAgentState({ state: "speaking", greetingLatencyMs: l });
|
|
2977
2984
|
} else if (this.userSilenceStartTime !== null) {
|
|
2978
|
-
const l = performance.now() - this.userSilenceStartTime;
|
|
2979
|
-
this.thinkingStartTime = null, this.userSilenceStartTime = null, this.updateAgentState({ state: "speaking", userPerceivedLatencyMs: l });
|
|
2985
|
+
const l = Math.round(performance.now() - this.userSilenceStartTime);
|
|
2986
|
+
this.thinkingStartTime = null, this.userSilenceStartTime = null, this.maxLatencyMs === void 0 || l < this.maxLatencyMs ? this.updateAgentState({ state: "speaking", userPerceivedLatencyMs: l }) : this.updateAgentState({ state: "speaking" });
|
|
2980
2987
|
} else
|
|
2981
2988
|
this.updateAgentState({ state: "speaking" });
|
|
2982
2989
|
else
|
|
2983
2990
|
this.thinkingStartTime === null && this.updateAgentState({ state: "listening" });
|
|
2984
2991
|
i = o;
|
|
2985
2992
|
};
|
|
2986
|
-
this.remoteIntervalId = window.setInterval(s,
|
|
2993
|
+
this.remoteIntervalId = window.setInterval(s, Dt);
|
|
2987
2994
|
}
|
|
2988
2995
|
/**
|
|
2989
2996
|
* Monitor local stream (user's microphone) for VAD
|
|
@@ -2999,53 +3006,49 @@ class Ti {
|
|
|
2999
3006
|
), this.localAnalyser = this.localAudioContext.createAnalyser(), this.localSource.connect(this.localAnalyser), this.localAnalyser.fftSize = 512;
|
|
3000
3007
|
const e = new Uint8Array(this.localAnalyser.frequencyBinCount), n = () => {
|
|
3001
3008
|
this.localAnalyser?.getByteFrequencyData(e);
|
|
3002
|
-
const i = e.reduce((
|
|
3003
|
-
Math.random() < 0.02 && z.debug("Local audio volume:", i)
|
|
3004
|
-
|
|
3005
|
-
if (
|
|
3006
|
-
this.userIsSpeaking = !
|
|
3007
|
-
|
|
3008
|
-
this.
|
|
3009
|
-
else if (!s && this.userIsSpeaking && this.lastUserAudioTime !== null && performance.now() - this.lastUserAudioTime > Ei) {
|
|
3010
|
-
this.userIsSpeaking = !1, this.userSilenceStartTime = this.lastUserAudioTime, this.thinkingStartTime = performance.now();
|
|
3011
|
-
const o = (/* @__PURE__ */ new Date()).toISOString();
|
|
3012
|
-
this.updateAgentState({ state: "thinking", thinkingStartedAt: o });
|
|
3009
|
+
const i = e.reduce((a, o) => a + o, 0) / e.length;
|
|
3010
|
+
if (Math.random() < 0.02 && z.debug("Local audio volume:", i), i >= this.volumeThreshold)
|
|
3011
|
+
this.userIsSpeaking || (this.userIsSpeaking = !0, this.userSpeechStartTime = performance.now(), this.userSilenceStartTime = null), this.lastUserAudioTime = performance.now();
|
|
3012
|
+
else if (this.userIsSpeaking && this.lastUserAudioTime !== null && (this.lastUserAudioTime - (this.userSpeechStartTime || this.lastUserAudioTime) >= this.minSpeechDurationMs && this.userSilenceStartTime === null && (this.userSilenceStartTime = this.lastUserAudioTime), performance.now() - this.lastUserAudioTime > this.silenceDurationMs)) {
|
|
3013
|
+
this.userIsSpeaking = !1, this.userSpeechStartTime = null, this.thinkingStartTime = performance.now();
|
|
3014
|
+
const l = (/* @__PURE__ */ new Date()).toISOString();
|
|
3015
|
+
this.updateAgentState({ state: "thinking", thinkingStartedAt: l });
|
|
3013
3016
|
}
|
|
3014
3017
|
};
|
|
3015
|
-
this.localIntervalId = window.setInterval(n,
|
|
3018
|
+
this.localIntervalId = window.setInterval(n, Dt);
|
|
3016
3019
|
}
|
|
3017
3020
|
destroy() {
|
|
3018
3021
|
this.stopAudioStreamMonitor();
|
|
3019
3022
|
}
|
|
3020
3023
|
}
|
|
3021
|
-
function
|
|
3024
|
+
function Ri(t) {
|
|
3022
3025
|
if (!t || typeof t != "object")
|
|
3023
3026
|
return !1;
|
|
3024
3027
|
const e = t;
|
|
3025
3028
|
return e.method === "ai_conversation" && typeof e.params == "object";
|
|
3026
3029
|
}
|
|
3027
|
-
function
|
|
3030
|
+
function xi(t) {
|
|
3028
3031
|
if (!t || typeof t != "object")
|
|
3029
3032
|
return !1;
|
|
3030
3033
|
const e = t;
|
|
3031
3034
|
return e.params.type !== "response.text.delta" ? !1 : !!e.params.delta;
|
|
3032
3035
|
}
|
|
3033
|
-
function
|
|
3036
|
+
function Li(t) {
|
|
3034
3037
|
if (!t || typeof t != "object")
|
|
3035
3038
|
return !1;
|
|
3036
3039
|
const e = t;
|
|
3037
3040
|
return e.params.type !== "conversation.item.created" ? !1 : !!e.params.item.content;
|
|
3038
3041
|
}
|
|
3039
3042
|
function Oi(t) {
|
|
3040
|
-
return
|
|
3043
|
+
return xi(t) ? {
|
|
3041
3044
|
id: `${t.params.item_id}-${Date.now()}`,
|
|
3042
3045
|
role: "assistant",
|
|
3043
3046
|
content: t.params.delta,
|
|
3044
3047
|
timestamp: /* @__PURE__ */ new Date()
|
|
3045
3048
|
} : null;
|
|
3046
3049
|
}
|
|
3047
|
-
function
|
|
3048
|
-
if (!
|
|
3050
|
+
function Mi(t) {
|
|
3051
|
+
if (!Li(t) || t.params.item.role !== "user" || t.params.item.status !== "completed")
|
|
3049
3052
|
return null;
|
|
3050
3053
|
let e = "", n = [];
|
|
3051
3054
|
return Array.isArray(t.params.item.content) ? (e = t.params.item.content.reduce((i, s) => (s.type === "text" && (i += s.text), i), ""), n = t.params.item.content.reduce((i, s) => (s.type === "image_url" && s.image_url.url && i.push({ type: "image", url: s.image_url.url }), i), [])) : e = t.params.item.content, {
|
|
@@ -3056,29 +3059,29 @@ function Li(t) {
|
|
|
3056
3059
|
attachments: n
|
|
3057
3060
|
};
|
|
3058
3061
|
}
|
|
3059
|
-
class
|
|
3062
|
+
class Pi extends ft {
|
|
3060
3063
|
telnyxRTC;
|
|
3061
3064
|
transcript = [];
|
|
3062
3065
|
constructor(e) {
|
|
3063
|
-
super(), this.telnyxRTC = e, this.telnyxRTC.on(
|
|
3066
|
+
super(), this.telnyxRTC = e, this.telnyxRTC.on(L.SocketMessage, this.onSocketMessage);
|
|
3064
3067
|
}
|
|
3065
3068
|
onSocketMessage = (e) => {
|
|
3066
|
-
if (
|
|
3069
|
+
if (Ri(e))
|
|
3067
3070
|
switch (e.params.type) {
|
|
3068
3071
|
case "response.text.delta": {
|
|
3069
3072
|
const n = Oi(e);
|
|
3070
|
-
n && (this.transcript.push(n), this.emit("transcript.item", n),
|
|
3073
|
+
n && (this.transcript.push(n), this.emit("transcript.item", n), Fe.emit("conversation.agent.state", { state: "listening" }));
|
|
3071
3074
|
return;
|
|
3072
3075
|
}
|
|
3073
3076
|
case "conversation.item.created": {
|
|
3074
|
-
const n =
|
|
3077
|
+
const n = Mi(e);
|
|
3075
3078
|
n && (this.transcript.push(n), this.emit("transcript.item", n));
|
|
3076
3079
|
return;
|
|
3077
3080
|
}
|
|
3078
3081
|
}
|
|
3079
3082
|
};
|
|
3080
3083
|
}
|
|
3081
|
-
class
|
|
3084
|
+
class Nt extends ft {
|
|
3082
3085
|
telnyxRTC;
|
|
3083
3086
|
transcription;
|
|
3084
3087
|
agentId;
|
|
@@ -3087,7 +3090,7 @@ class jt extends gt {
|
|
|
3087
3090
|
audioStreamMonitor;
|
|
3088
3091
|
activeCall;
|
|
3089
3092
|
constructor(e) {
|
|
3090
|
-
super(), this.agentId = e.agentId, this.versionId = e.versionId || "main", this.debug = e.debug || !1, this.activeCall = null, z.setLevel(this.debug ? "debug" : "info"), this.telnyxRTC = new
|
|
3093
|
+
super(), this.agentId = e.agentId, this.versionId = e.versionId || "main", this.debug = e.debug || !1, this.activeCall = null, z.setLevel(this.debug ? "debug" : "info"), this.telnyxRTC = new gi({
|
|
3091
3094
|
// @ts-expect-error hidden argument
|
|
3092
3095
|
environment: e.environment || "production",
|
|
3093
3096
|
anonymous_login: {
|
|
@@ -3097,10 +3100,10 @@ class jt extends gt {
|
|
|
3097
3100
|
},
|
|
3098
3101
|
debug: e.debug || !1,
|
|
3099
3102
|
trickleIce: e.trickleIce
|
|
3100
|
-
}), this.telnyxRTC.on(
|
|
3103
|
+
}), this.telnyxRTC.on(L.Ready, this.onClientReady), this.telnyxRTC.on(L.Error, this.onClientOrSocketError), this.telnyxRTC.on(L.SocketError, this.onClientOrSocketError), this.telnyxRTC.on(L.Notification, this.onNotification), this.transcription = new Pi(this.telnyxRTC), this.transcription.addListener("transcript.item", this.onTranscriptItem), Fe.addListener(
|
|
3101
3104
|
"conversation.agent.state",
|
|
3102
3105
|
this.onAgentStateChange
|
|
3103
|
-
), this.audioStreamMonitor = new
|
|
3106
|
+
), this.audioStreamMonitor = new Ai(e.vad);
|
|
3104
3107
|
}
|
|
3105
3108
|
/**
|
|
3106
3109
|
* Connects to the Telnyx WebRTC service and establishes a session with the AI agent.
|
|
@@ -3115,7 +3118,7 @@ class jt extends gt {
|
|
|
3115
3118
|
* Emits an 'agent.disconnected' event before completing cleanup.
|
|
3116
3119
|
*/
|
|
3117
3120
|
async disconnect() {
|
|
3118
|
-
this.audioStreamMonitor.destroy(), this.telnyxRTC.disconnect(), this.telnyxRTC.off(
|
|
3121
|
+
this.audioStreamMonitor.destroy(), this.telnyxRTC.disconnect(), this.telnyxRTC.off(L.Ready, this.onClientReady), this.telnyxRTC.off(L.Error, this.onClientOrSocketError), this.telnyxRTC.off(L.SocketError, this.onClientOrSocketError), this.telnyxRTC.off(L.Notification, this.onNotification), this.emit("agent.disconnected"), this.transcription.removeAllListeners(), Fe.removeAllListeners(), this.removeAllListeners();
|
|
3119
3122
|
}
|
|
3120
3123
|
/**
|
|
3121
3124
|
* Sends a text message to the AI agent during an active conversation.
|
|
@@ -3179,7 +3182,7 @@ class jt extends gt {
|
|
|
3179
3182
|
(h) => h.mimeType.toLowerCase().includes("opus")
|
|
3180
3183
|
), {
|
|
3181
3184
|
customHeaders: s,
|
|
3182
|
-
audio:
|
|
3185
|
+
audio: a,
|
|
3183
3186
|
...o
|
|
3184
3187
|
} = e || {}, l = s ? [...s] : [];
|
|
3185
3188
|
this.versionId && l.push({
|
|
@@ -3189,7 +3192,7 @@ class jt extends gt {
|
|
|
3189
3192
|
const d = this.telnyxRTC.newCall({
|
|
3190
3193
|
destinationNumber: "xxx",
|
|
3191
3194
|
...o,
|
|
3192
|
-
audio:
|
|
3195
|
+
audio: a ?? !0,
|
|
3193
3196
|
preferred_codecs: [i],
|
|
3194
3197
|
customHeaders: l.length > 0 ? l : void 0
|
|
3195
3198
|
});
|
|
@@ -3231,31 +3234,31 @@ class jt extends gt {
|
|
|
3231
3234
|
}
|
|
3232
3235
|
var Me = { exports: {} }, _e = {};
|
|
3233
3236
|
var Ut;
|
|
3234
|
-
function
|
|
3237
|
+
function Di() {
|
|
3235
3238
|
if (Ut) return _e;
|
|
3236
3239
|
Ut = 1;
|
|
3237
3240
|
var t = Symbol.for("react.transitional.element"), e = Symbol.for("react.fragment");
|
|
3238
|
-
function n(i, s,
|
|
3241
|
+
function n(i, s, a) {
|
|
3239
3242
|
var o = null;
|
|
3240
|
-
if (
|
|
3241
|
-
|
|
3243
|
+
if (a !== void 0 && (o = "" + a), s.key !== void 0 && (o = "" + s.key), "key" in s) {
|
|
3244
|
+
a = {};
|
|
3242
3245
|
for (var l in s)
|
|
3243
|
-
l !== "key" && (
|
|
3244
|
-
} else
|
|
3245
|
-
return s =
|
|
3246
|
+
l !== "key" && (a[l] = s[l]);
|
|
3247
|
+
} else a = s;
|
|
3248
|
+
return s = a.ref, {
|
|
3246
3249
|
$$typeof: t,
|
|
3247
3250
|
type: i,
|
|
3248
3251
|
key: o,
|
|
3249
3252
|
ref: s !== void 0 ? s : null,
|
|
3250
|
-
props:
|
|
3253
|
+
props: a
|
|
3251
3254
|
};
|
|
3252
3255
|
}
|
|
3253
3256
|
return _e.Fragment = e, _e.jsx = n, _e.jsxs = n, _e;
|
|
3254
3257
|
}
|
|
3255
3258
|
var Se = {};
|
|
3256
|
-
var
|
|
3257
|
-
function
|
|
3258
|
-
return
|
|
3259
|
+
var jt;
|
|
3260
|
+
function Ni() {
|
|
3261
|
+
return jt || (jt = 1, process.env.NODE_ENV !== "production" && (function() {
|
|
3259
3262
|
function t(m) {
|
|
3260
3263
|
if (m == null) return null;
|
|
3261
3264
|
if (typeof m == "function")
|
|
@@ -3290,7 +3293,7 @@ function Di() {
|
|
|
3290
3293
|
return m = m.displayName, m || (m = M.displayName || M.name || "", m = m !== "" ? "ForwardRef(" + m + ")" : "ForwardRef"), m;
|
|
3291
3294
|
case x:
|
|
3292
3295
|
return M = m.displayName || null, M !== null ? M : t(m.type) || "Memo";
|
|
3293
|
-
case
|
|
3296
|
+
case r:
|
|
3294
3297
|
M = m._payload, m = m._init;
|
|
3295
3298
|
try {
|
|
3296
3299
|
return t(m(M));
|
|
@@ -3311,8 +3314,8 @@ function Di() {
|
|
|
3311
3314
|
}
|
|
3312
3315
|
if (M) {
|
|
3313
3316
|
M = console;
|
|
3314
|
-
var
|
|
3315
|
-
return
|
|
3317
|
+
var U = M.error, V = typeof Symbol == "function" && Symbol.toStringTag && m[Symbol.toStringTag] || m.constructor.name || "Object";
|
|
3318
|
+
return U.call(
|
|
3316
3319
|
M,
|
|
3317
3320
|
"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
|
|
3318
3321
|
V
|
|
@@ -3321,7 +3324,7 @@ function Di() {
|
|
|
3321
3324
|
}
|
|
3322
3325
|
function i(m) {
|
|
3323
3326
|
if (m === p) return "<>";
|
|
3324
|
-
if (typeof m == "object" && m !== null && m.$$typeof ===
|
|
3327
|
+
if (typeof m == "object" && m !== null && m.$$typeof === r)
|
|
3325
3328
|
return "<...>";
|
|
3326
3329
|
try {
|
|
3327
3330
|
var M = t(m);
|
|
@@ -3334,7 +3337,7 @@ function Di() {
|
|
|
3334
3337
|
var m = g.A;
|
|
3335
3338
|
return m === null ? null : m.getOwner();
|
|
3336
3339
|
}
|
|
3337
|
-
function
|
|
3340
|
+
function a() {
|
|
3338
3341
|
return Error("react-stack-top-frame");
|
|
3339
3342
|
}
|
|
3340
3343
|
function o(m) {
|
|
@@ -3345,30 +3348,30 @@ function Di() {
|
|
|
3345
3348
|
return m.key !== void 0;
|
|
3346
3349
|
}
|
|
3347
3350
|
function l(m, M) {
|
|
3348
|
-
function
|
|
3351
|
+
function U() {
|
|
3349
3352
|
R || (R = !0, console.error(
|
|
3350
3353
|
"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",
|
|
3351
3354
|
M
|
|
3352
3355
|
));
|
|
3353
3356
|
}
|
|
3354
|
-
|
|
3355
|
-
get:
|
|
3357
|
+
U.isReactWarning = !0, Object.defineProperty(m, "key", {
|
|
3358
|
+
get: U,
|
|
3356
3359
|
configurable: !0
|
|
3357
3360
|
});
|
|
3358
3361
|
}
|
|
3359
3362
|
function d() {
|
|
3360
3363
|
var m = t(this.type);
|
|
3361
|
-
return
|
|
3364
|
+
return j[m] || (j[m] = !0, console.error(
|
|
3362
3365
|
"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
|
|
3363
3366
|
)), m = this.props.ref, m !== void 0 ? m : null;
|
|
3364
3367
|
}
|
|
3365
|
-
function h(m, M,
|
|
3366
|
-
var W =
|
|
3368
|
+
function h(m, M, U, V, Y, Q) {
|
|
3369
|
+
var W = U.ref;
|
|
3367
3370
|
return m = {
|
|
3368
3371
|
$$typeof: C,
|
|
3369
3372
|
type: m,
|
|
3370
3373
|
key: M,
|
|
3371
|
-
props:
|
|
3374
|
+
props: U,
|
|
3372
3375
|
_owner: V
|
|
3373
3376
|
}, (W !== void 0 ? W : null) !== null ? Object.defineProperty(m, "ref", {
|
|
3374
3377
|
enumerable: !1,
|
|
@@ -3395,7 +3398,7 @@ function Di() {
|
|
|
3395
3398
|
value: Q
|
|
3396
3399
|
}), Object.freeze && (Object.freeze(m.props), Object.freeze(m)), m;
|
|
3397
3400
|
}
|
|
3398
|
-
function f(m, M,
|
|
3401
|
+
function f(m, M, U, V, Y, Q) {
|
|
3399
3402
|
var W = M.children;
|
|
3400
3403
|
if (W !== void 0)
|
|
3401
3404
|
if (V)
|
|
@@ -3410,8 +3413,8 @@ function Di() {
|
|
|
3410
3413
|
else v(W);
|
|
3411
3414
|
if (b.call(M, "key")) {
|
|
3412
3415
|
W = t(m);
|
|
3413
|
-
var re = Object.keys(M).filter(function(
|
|
3414
|
-
return
|
|
3416
|
+
var re = Object.keys(M).filter(function(In) {
|
|
3417
|
+
return In !== "key";
|
|
3415
3418
|
});
|
|
3416
3419
|
V = 0 < re.length ? "{key: someKey, " + re.join(": ..., ") + ": ...}" : "{key: someKey}", G[W + V] || (re = 0 < re.length ? "{" + re.join(": ..., ") + ": ...}" : "{}", console.error(
|
|
3417
3420
|
`A props object containing a "key" prop is being spread into JSX:
|
|
@@ -3426,30 +3429,30 @@ React keys must be passed directly to JSX without using spread:
|
|
|
3426
3429
|
W
|
|
3427
3430
|
), G[W + V] = !0);
|
|
3428
3431
|
}
|
|
3429
|
-
if (W = null,
|
|
3430
|
-
|
|
3432
|
+
if (W = null, U !== void 0 && (n(U), W = "" + U), o(M) && (n(M.key), W = "" + M.key), "key" in M) {
|
|
3433
|
+
U = {};
|
|
3431
3434
|
for (var ze in M)
|
|
3432
|
-
ze !== "key" && (
|
|
3433
|
-
} else
|
|
3435
|
+
ze !== "key" && (U[ze] = M[ze]);
|
|
3436
|
+
} else U = M;
|
|
3434
3437
|
return W && l(
|
|
3435
|
-
|
|
3438
|
+
U,
|
|
3436
3439
|
typeof m == "function" ? m.displayName || m.name || "Unknown" : m
|
|
3437
3440
|
), h(
|
|
3438
3441
|
m,
|
|
3439
3442
|
W,
|
|
3440
|
-
|
|
3443
|
+
U,
|
|
3441
3444
|
s(),
|
|
3442
3445
|
Y,
|
|
3443
3446
|
Q
|
|
3444
3447
|
);
|
|
3445
3448
|
}
|
|
3446
3449
|
function v(m) {
|
|
3447
|
-
_(m) ? m._store && (m._store.validated = 1) : typeof m == "object" && m !== null && m.$$typeof ===
|
|
3450
|
+
_(m) ? m._store && (m._store.validated = 1) : typeof m == "object" && m !== null && m.$$typeof === r && (m._payload.status === "fulfilled" ? _(m._payload.value) && m._payload.value._store && (m._payload.value._store.validated = 1) : m._store && (m._store.validated = 1));
|
|
3448
3451
|
}
|
|
3449
3452
|
function _(m) {
|
|
3450
3453
|
return typeof m == "object" && m !== null && m.$$typeof === C;
|
|
3451
3454
|
}
|
|
3452
|
-
var w =
|
|
3455
|
+
var w = ut, C = Symbol.for("react.transitional.element"), k = Symbol.for("react.portal"), p = Symbol.for("react.fragment"), S = Symbol.for("react.strict_mode"), A = Symbol.for("react.profiler"), E = Symbol.for("react.consumer"), P = Symbol.for("react.context"), D = Symbol.for("react.forward_ref"), q = Symbol.for("react.suspense"), B = Symbol.for("react.suspense_list"), x = Symbol.for("react.memo"), r = Symbol.for("react.lazy"), c = Symbol.for("react.activity"), u = Symbol.for("react.client.reference"), g = w.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, b = Object.prototype.hasOwnProperty, T = Array.isArray, I = console.createTask ? console.createTask : function() {
|
|
3453
3456
|
return null;
|
|
3454
3457
|
};
|
|
3455
3458
|
w = {
|
|
@@ -3457,26 +3460,26 @@ React keys must be passed directly to JSX without using spread:
|
|
|
3457
3460
|
return m();
|
|
3458
3461
|
}
|
|
3459
3462
|
};
|
|
3460
|
-
var R,
|
|
3463
|
+
var R, j = {}, ee = w.react_stack_bottom_frame.bind(
|
|
3461
3464
|
w,
|
|
3462
|
-
|
|
3463
|
-
)(), ne = I(i(
|
|
3464
|
-
Se.Fragment = p, Se.jsx = function(m, M,
|
|
3465
|
+
a
|
|
3466
|
+
)(), ne = I(i(a)), G = {};
|
|
3467
|
+
Se.Fragment = p, Se.jsx = function(m, M, U) {
|
|
3465
3468
|
var V = 1e4 > g.recentlyCreatedOwnerStacks++;
|
|
3466
3469
|
return f(
|
|
3467
3470
|
m,
|
|
3468
3471
|
M,
|
|
3469
|
-
|
|
3472
|
+
U,
|
|
3470
3473
|
!1,
|
|
3471
3474
|
V ? Error("react-stack-top-frame") : ee,
|
|
3472
3475
|
V ? I(i(m)) : ne
|
|
3473
3476
|
);
|
|
3474
|
-
}, Se.jsxs = function(m, M,
|
|
3477
|
+
}, Se.jsxs = function(m, M, U) {
|
|
3475
3478
|
var V = 1e4 > g.recentlyCreatedOwnerStacks++;
|
|
3476
3479
|
return f(
|
|
3477
3480
|
m,
|
|
3478
3481
|
M,
|
|
3479
|
-
|
|
3482
|
+
U,
|
|
3480
3483
|
!0,
|
|
3481
3484
|
V ? Error("react-stack-top-frame") : ee,
|
|
3482
3485
|
V ? I(i(m)) : ne
|
|
@@ -3485,21 +3488,21 @@ React keys must be passed directly to JSX without using spread:
|
|
|
3485
3488
|
})()), Se;
|
|
3486
3489
|
}
|
|
3487
3490
|
var Ft;
|
|
3488
|
-
function
|
|
3489
|
-
return Ft || (Ft = 1, process.env.NODE_ENV === "production" ? Me.exports =
|
|
3491
|
+
function Ui() {
|
|
3492
|
+
return Ft || (Ft = 1, process.env.NODE_ENV === "production" ? Me.exports = Di() : Me.exports = Ni()), Me.exports;
|
|
3490
3493
|
}
|
|
3491
|
-
var we =
|
|
3494
|
+
var we = Ui();
|
|
3492
3495
|
const ce = { BASE_URL: "/", DEV: !1, MODE: "production", PROD: !0, SSR: !1 };
|
|
3493
|
-
function
|
|
3496
|
+
function un(t) {
|
|
3494
3497
|
return "init" in t;
|
|
3495
3498
|
}
|
|
3496
|
-
function
|
|
3499
|
+
function rt(t) {
|
|
3497
3500
|
return !!t.write;
|
|
3498
3501
|
}
|
|
3499
|
-
function
|
|
3502
|
+
function $t(t) {
|
|
3500
3503
|
return "v" in t || "e" in t;
|
|
3501
3504
|
}
|
|
3502
|
-
function
|
|
3505
|
+
function $e(t) {
|
|
3503
3506
|
if ("e" in t)
|
|
3504
3507
|
throw t.e;
|
|
3505
3508
|
if ((ce ? "production" : void 0) !== "production" && !("v" in t))
|
|
@@ -3507,7 +3510,7 @@ function Fe(t) {
|
|
|
3507
3510
|
return t.v;
|
|
3508
3511
|
}
|
|
3509
3512
|
const Be = /* @__PURE__ */ new WeakMap();
|
|
3510
|
-
function
|
|
3513
|
+
function hn(t) {
|
|
3511
3514
|
var e;
|
|
3512
3515
|
return Ve(t) && !!((e = Be.get(t)) != null && e[0]);
|
|
3513
3516
|
}
|
|
@@ -3515,7 +3518,7 @@ function ji(t) {
|
|
|
3515
3518
|
const e = Be.get(t);
|
|
3516
3519
|
e?.[0] && (e[0] = !1, e[1].forEach((n) => n()));
|
|
3517
3520
|
}
|
|
3518
|
-
function
|
|
3521
|
+
function at(t, e) {
|
|
3519
3522
|
let n = Be.get(t);
|
|
3520
3523
|
if (!n) {
|
|
3521
3524
|
n = [!0, /* @__PURE__ */ new Set()], Be.set(t, n);
|
|
@@ -3529,41 +3532,41 @@ function ct(t, e) {
|
|
|
3529
3532
|
function Ve(t) {
|
|
3530
3533
|
return typeof t?.then == "function";
|
|
3531
3534
|
}
|
|
3532
|
-
function
|
|
3535
|
+
function pn(t, e, n) {
|
|
3533
3536
|
if (!n.p.has(t)) {
|
|
3534
3537
|
n.p.add(t);
|
|
3535
3538
|
const i = () => n.p.delete(t);
|
|
3536
3539
|
e.then(i, i);
|
|
3537
3540
|
}
|
|
3538
3541
|
}
|
|
3539
|
-
function
|
|
3542
|
+
function fn(t, e, n) {
|
|
3540
3543
|
var i;
|
|
3541
3544
|
const s = /* @__PURE__ */ new Set();
|
|
3542
|
-
for (const
|
|
3543
|
-
s.add(
|
|
3544
|
-
for (const
|
|
3545
|
-
s.add(
|
|
3545
|
+
for (const a of ((i = n.get(t)) == null ? void 0 : i.t) || [])
|
|
3546
|
+
s.add(a);
|
|
3547
|
+
for (const a of e.p)
|
|
3548
|
+
s.add(a);
|
|
3546
3549
|
return s;
|
|
3547
3550
|
}
|
|
3548
|
-
const
|
|
3551
|
+
const Fi = (t, e, ...n) => e.read(...n), $i = (t, e, ...n) => e.write(...n), Bi = (t, e) => {
|
|
3549
3552
|
if (e.INTERNAL_onInit)
|
|
3550
3553
|
return e.INTERNAL_onInit(t);
|
|
3551
3554
|
if (e.unstable_onInit)
|
|
3552
3555
|
return console.warn(
|
|
3553
3556
|
"[DEPRECATED] atom.unstable_onInit is renamed to atom.INTERNAL_onInit."
|
|
3554
3557
|
), e.unstable_onInit(t);
|
|
3555
|
-
},
|
|
3558
|
+
}, Vi = (t, e, n) => {
|
|
3556
3559
|
var i;
|
|
3557
3560
|
return (i = e.onMount) == null ? void 0 : i.call(e, n);
|
|
3558
|
-
},
|
|
3561
|
+
}, Gi = (t, e) => {
|
|
3559
3562
|
var n;
|
|
3560
|
-
const i = X(t), s = i[0],
|
|
3563
|
+
const i = X(t), s = i[0], a = i[6], o = i[9];
|
|
3561
3564
|
if ((ce ? "production" : void 0) !== "production" && !e)
|
|
3562
3565
|
throw new Error("Atom is undefined or null");
|
|
3563
3566
|
let l = s.get(e);
|
|
3564
|
-
return l || (l = { d: /* @__PURE__ */ new Map(), p: /* @__PURE__ */ new Set(), n: 0 }, s.set(e, l), (n =
|
|
3565
|
-
},
|
|
3566
|
-
const e = X(t), n = e[1], i = e[3], s = e[4],
|
|
3567
|
+
return l || (l = { d: /* @__PURE__ */ new Map(), p: /* @__PURE__ */ new Set(), n: 0 }, s.set(e, l), (n = a.i) == null || n.call(a, e), o?.(t, e)), l;
|
|
3568
|
+
}, Wi = (t) => {
|
|
3569
|
+
const e = X(t), n = e[1], i = e[3], s = e[4], a = e[5], o = e[6], l = e[13], d = [], h = (f) => {
|
|
3567
3570
|
try {
|
|
3568
3571
|
f();
|
|
3569
3572
|
} catch (v) {
|
|
@@ -3576,14 +3579,14 @@ const Ui = (t, e, ...n) => e.read(...n), $i = (t, e, ...n) => e.write(...n), Fi
|
|
|
3576
3579
|
i.forEach((_) => {
|
|
3577
3580
|
var w;
|
|
3578
3581
|
return (w = n.get(_)) == null ? void 0 : w.l.forEach(v);
|
|
3579
|
-
}), i.clear(),
|
|
3580
|
-
} while (i.size ||
|
|
3582
|
+
}), i.clear(), a.forEach(v), a.clear(), s.forEach(v), s.clear(), f.forEach(h), i.size && l(t);
|
|
3583
|
+
} while (i.size || a.size || s.size);
|
|
3581
3584
|
if (d.length)
|
|
3582
3585
|
throw new AggregateError(d);
|
|
3583
|
-
},
|
|
3584
|
-
const e = X(t), n = e[1], i = e[2], s = e[3],
|
|
3586
|
+
}, Hi = (t) => {
|
|
3587
|
+
const e = X(t), n = e[1], i = e[2], s = e[3], a = e[11], o = e[14], l = e[17], d = [], h = /* @__PURE__ */ new WeakSet(), f = /* @__PURE__ */ new WeakSet(), v = Array.from(s);
|
|
3585
3588
|
for (; v.length; ) {
|
|
3586
|
-
const _ = v[v.length - 1], w =
|
|
3589
|
+
const _ = v[v.length - 1], w = a(t, _);
|
|
3587
3590
|
if (f.has(_)) {
|
|
3588
3591
|
v.pop();
|
|
3589
3592
|
continue;
|
|
@@ -3597,7 +3600,7 @@ const Ui = (t, e, ...n) => e.read(...n), $i = (t, e, ...n) => e.write(...n), Fi
|
|
|
3597
3600
|
continue;
|
|
3598
3601
|
}
|
|
3599
3602
|
h.add(_);
|
|
3600
|
-
for (const C of
|
|
3603
|
+
for (const C of fn(_, w, n))
|
|
3601
3604
|
h.has(C) || v.push(C);
|
|
3602
3605
|
}
|
|
3603
3606
|
for (let _ = d.length - 1; _ >= 0; --_) {
|
|
@@ -3610,15 +3613,15 @@ const Ui = (t, e, ...n) => e.read(...n), $i = (t, e, ...n) => e.write(...n), Fi
|
|
|
3610
3613
|
}
|
|
3611
3614
|
k && (o(t, w), l(t, w)), i.delete(w);
|
|
3612
3615
|
}
|
|
3613
|
-
},
|
|
3616
|
+
}, ct = /* @__PURE__ */ new WeakSet(), qi = (t, e) => {
|
|
3614
3617
|
var n, i;
|
|
3615
|
-
const s = X(t),
|
|
3616
|
-
if (
|
|
3617
|
-
if (
|
|
3618
|
+
const s = X(t), a = s[1], o = s[2], l = s[3], d = s[6], h = s[7], f = s[11], v = s[12], _ = s[13], w = s[14], C = s[16], k = s[17], p = f(t, e);
|
|
3619
|
+
if ($t(p)) {
|
|
3620
|
+
if (a.has(e) && o.get(e) !== p.n)
|
|
3618
3621
|
return p;
|
|
3619
3622
|
let x = !1;
|
|
3620
|
-
for (const [
|
|
3621
|
-
if (w(t,
|
|
3623
|
+
for (const [r, c] of p.d)
|
|
3624
|
+
if (w(t, r).n !== c) {
|
|
3622
3625
|
x = !0;
|
|
3623
3626
|
break;
|
|
3624
3627
|
}
|
|
@@ -3628,24 +3631,24 @@ const Ui = (t, e, ...n) => e.read(...n), $i = (t, e, ...n) => e.write(...n), Fi
|
|
|
3628
3631
|
p.d.clear();
|
|
3629
3632
|
let S = !0;
|
|
3630
3633
|
function A() {
|
|
3631
|
-
|
|
3634
|
+
a.has(e) && (k(t, e), _(t), v(t));
|
|
3632
3635
|
}
|
|
3633
3636
|
function E(x) {
|
|
3634
|
-
var
|
|
3637
|
+
var r;
|
|
3635
3638
|
if (x === e) {
|
|
3636
3639
|
const u = f(t, x);
|
|
3637
|
-
if (
|
|
3638
|
-
if (
|
|
3640
|
+
if (!$t(u))
|
|
3641
|
+
if (un(x))
|
|
3639
3642
|
Ge(t, x, x.init);
|
|
3640
3643
|
else
|
|
3641
3644
|
throw new Error("no atom init");
|
|
3642
|
-
return
|
|
3645
|
+
return $e(u);
|
|
3643
3646
|
}
|
|
3644
3647
|
const c = w(t, x);
|
|
3645
3648
|
try {
|
|
3646
|
-
return
|
|
3649
|
+
return $e(c);
|
|
3647
3650
|
} finally {
|
|
3648
|
-
p.d.set(x, c.n),
|
|
3651
|
+
p.d.set(x, c.n), hn(p.v) && pn(e, p.v, c), a.has(e) && ((r = a.get(x)) == null || r.t.add(e)), S || A();
|
|
3649
3652
|
}
|
|
3650
3653
|
}
|
|
3651
3654
|
let P, D;
|
|
@@ -3654,7 +3657,7 @@ const Ui = (t, e, ...n) => e.read(...n), $i = (t, e, ...n) => e.write(...n), Fi
|
|
|
3654
3657
|
return P || (P = new AbortController()), P.signal;
|
|
3655
3658
|
},
|
|
3656
3659
|
get setSelf() {
|
|
3657
|
-
return (ce ? "production" : void 0) !== "production" && !
|
|
3660
|
+
return (ce ? "production" : void 0) !== "production" && !rt(e) && console.warn("setSelf function cannot be used with read-only atom"), !D && rt(e) && (D = (...x) => {
|
|
3658
3661
|
if ((ce ? "production" : void 0) !== "production" && S && console.warn("setSelf function cannot be called in sync"), !S)
|
|
3659
3662
|
try {
|
|
3660
3663
|
return C(t, e, ...x);
|
|
@@ -3665,41 +3668,41 @@ const Ui = (t, e, ...n) => e.read(...n), $i = (t, e, ...n) => e.write(...n), Fi
|
|
|
3665
3668
|
}
|
|
3666
3669
|
}, B = p.n;
|
|
3667
3670
|
try {
|
|
3668
|
-
(ce ? "production" : void 0) !== "production" &&
|
|
3671
|
+
(ce ? "production" : void 0) !== "production" && ct.delete(t);
|
|
3669
3672
|
const x = h(t, e, E, q);
|
|
3670
|
-
return (ce ? "production" : void 0) !== "production" &&
|
|
3673
|
+
return (ce ? "production" : void 0) !== "production" && ct.has(t) && console.warn(
|
|
3671
3674
|
"Detected store mutation during atom read. This is not supported."
|
|
3672
|
-
), Ge(t, e, x), Ve(x) && (
|
|
3675
|
+
), Ge(t, e, x), Ve(x) && (at(x, () => P?.abort()), x.then(A, A)), (n = d.r) == null || n.call(d, e), p;
|
|
3673
3676
|
} catch (x) {
|
|
3674
3677
|
return delete p.v, p.e = x, ++p.n, p;
|
|
3675
3678
|
} finally {
|
|
3676
3679
|
S = !1, B !== p.n && o.get(e) === B && (o.set(e, p.n), l.add(e), (i = d.c) == null || i.call(d, e));
|
|
3677
3680
|
}
|
|
3678
|
-
},
|
|
3679
|
-
const n = X(t), i = n[1], s = n[2],
|
|
3681
|
+
}, Ji = (t, e) => {
|
|
3682
|
+
const n = X(t), i = n[1], s = n[2], a = n[11], o = [e];
|
|
3680
3683
|
for (; o.length; ) {
|
|
3681
|
-
const l = o.pop(), d =
|
|
3682
|
-
for (const h of
|
|
3683
|
-
const f =
|
|
3684
|
+
const l = o.pop(), d = a(t, l);
|
|
3685
|
+
for (const h of fn(l, d, i)) {
|
|
3686
|
+
const f = a(t, h);
|
|
3684
3687
|
s.set(h, f.n), o.push(h);
|
|
3685
3688
|
}
|
|
3686
3689
|
}
|
|
3687
|
-
},
|
|
3688
|
-
const i = X(t), s = i[3],
|
|
3690
|
+
}, gn = (t, e, ...n) => {
|
|
3691
|
+
const i = X(t), s = i[3], a = i[6], o = i[8], l = i[11], d = i[12], h = i[13], f = i[14], v = i[15], _ = i[17];
|
|
3689
3692
|
let w = !0;
|
|
3690
|
-
const C = (p) =>
|
|
3693
|
+
const C = (p) => $e(f(t, p)), k = (p, ...S) => {
|
|
3691
3694
|
var A;
|
|
3692
3695
|
const E = l(t, p);
|
|
3693
3696
|
try {
|
|
3694
3697
|
if (p === e) {
|
|
3695
|
-
if (!
|
|
3698
|
+
if (!un(p))
|
|
3696
3699
|
throw new Error("atom not writable");
|
|
3697
|
-
(ce ? "production" : void 0) !== "production" &&
|
|
3700
|
+
(ce ? "production" : void 0) !== "production" && ct.add(t);
|
|
3698
3701
|
const P = E.n, D = S[0];
|
|
3699
|
-
Ge(t, p, D), _(t, p), P !== E.n && (s.add(p), v(t, p), (A =
|
|
3702
|
+
Ge(t, p, D), _(t, p), P !== E.n && (s.add(p), v(t, p), (A = a.c) == null || A.call(a, p));
|
|
3700
3703
|
return;
|
|
3701
3704
|
} else
|
|
3702
|
-
return
|
|
3705
|
+
return gn(t, p, ...S);
|
|
3703
3706
|
} finally {
|
|
3704
3707
|
w || (h(t), d(t));
|
|
3705
3708
|
}
|
|
@@ -3709,14 +3712,14 @@ const Ui = (t, e, ...n) => e.read(...n), $i = (t, e, ...n) => e.write(...n), Fi
|
|
|
3709
3712
|
} finally {
|
|
3710
3713
|
w = !1;
|
|
3711
3714
|
}
|
|
3712
|
-
},
|
|
3715
|
+
}, Yi = (t, e) => {
|
|
3713
3716
|
var n;
|
|
3714
|
-
const i = X(t), s = i[1],
|
|
3715
|
-
if (_ && !
|
|
3717
|
+
const i = X(t), s = i[1], a = i[3], o = i[6], l = i[11], d = i[15], h = i[18], f = i[19], v = l(t, e), _ = s.get(e);
|
|
3718
|
+
if (_ && !hn(v.v)) {
|
|
3716
3719
|
for (const [w, C] of v.d)
|
|
3717
3720
|
if (!_.d.has(w)) {
|
|
3718
3721
|
const k = l(t, w);
|
|
3719
|
-
h(t, w).t.add(e), _.d.add(w), C !== k.n && (
|
|
3722
|
+
h(t, w).t.add(e), _.d.add(w), C !== k.n && (a.add(w), d(t, w), (n = o.c) == null || n.call(o, w));
|
|
3720
3723
|
}
|
|
3721
3724
|
for (const w of _.d)
|
|
3722
3725
|
if (!v.d.has(w)) {
|
|
@@ -3725,19 +3728,19 @@ const Ui = (t, e, ...n) => e.read(...n), $i = (t, e, ...n) => e.write(...n), Fi
|
|
|
3725
3728
|
C?.t.delete(e);
|
|
3726
3729
|
}
|
|
3727
3730
|
}
|
|
3728
|
-
},
|
|
3731
|
+
}, vn = (t, e) => {
|
|
3729
3732
|
var n;
|
|
3730
|
-
const i = X(t), s = i[1],
|
|
3733
|
+
const i = X(t), s = i[1], a = i[4], o = i[6], l = i[10], d = i[11], h = i[12], f = i[13], v = i[14], _ = i[16], w = d(t, e);
|
|
3731
3734
|
let C = s.get(e);
|
|
3732
3735
|
if (!C) {
|
|
3733
3736
|
v(t, e);
|
|
3734
3737
|
for (const k of w.d.keys())
|
|
3735
|
-
|
|
3738
|
+
vn(t, k).t.add(e);
|
|
3736
3739
|
if (C = {
|
|
3737
3740
|
l: /* @__PURE__ */ new Set(),
|
|
3738
3741
|
d: new Set(w.d.keys()),
|
|
3739
3742
|
t: /* @__PURE__ */ new Set()
|
|
3740
|
-
}, s.set(e, C),
|
|
3743
|
+
}, s.set(e, C), rt(e)) {
|
|
3741
3744
|
const k = () => {
|
|
3742
3745
|
let p = !0;
|
|
3743
3746
|
const S = (...A) => {
|
|
@@ -3761,25 +3764,25 @@ const Ui = (t, e, ...n) => e.read(...n), $i = (t, e, ...n) => e.write(...n), Fi
|
|
|
3761
3764
|
p = !1;
|
|
3762
3765
|
}
|
|
3763
3766
|
};
|
|
3764
|
-
|
|
3767
|
+
a.add(k);
|
|
3765
3768
|
}
|
|
3766
3769
|
(n = o.m) == null || n.call(o, e);
|
|
3767
3770
|
}
|
|
3768
3771
|
return C;
|
|
3769
|
-
},
|
|
3772
|
+
}, zi = (t, e) => {
|
|
3770
3773
|
var n, i;
|
|
3771
|
-
const s = X(t),
|
|
3772
|
-
let v =
|
|
3774
|
+
const s = X(t), a = s[1], o = s[5], l = s[6], d = s[11], h = s[19], f = d(t, e);
|
|
3775
|
+
let v = a.get(e);
|
|
3773
3776
|
if (!v || v.l.size)
|
|
3774
3777
|
return v;
|
|
3775
3778
|
let _ = !1;
|
|
3776
3779
|
for (const w of v.t)
|
|
3777
|
-
if ((n =
|
|
3780
|
+
if ((n = a.get(w)) != null && n.d.has(e)) {
|
|
3778
3781
|
_ = !0;
|
|
3779
3782
|
break;
|
|
3780
3783
|
}
|
|
3781
3784
|
if (!_) {
|
|
3782
|
-
v.u && o.add(v.u), v = void 0,
|
|
3785
|
+
v.u && o.add(v.u), v = void 0, a.delete(e);
|
|
3783
3786
|
for (const w of f.d.keys()) {
|
|
3784
3787
|
const C = h(t, w);
|
|
3785
3788
|
C?.t.delete(e);
|
|
@@ -3789,51 +3792,51 @@ const Ui = (t, e, ...n) => e.read(...n), $i = (t, e, ...n) => e.write(...n), Fi
|
|
|
3789
3792
|
}
|
|
3790
3793
|
return v;
|
|
3791
3794
|
}, Ge = (t, e, n) => {
|
|
3792
|
-
const i = X(t)[11], s = i(t, e),
|
|
3795
|
+
const i = X(t)[11], s = i(t, e), a = "v" in s, o = s.v;
|
|
3793
3796
|
if (Ve(n))
|
|
3794
3797
|
for (const l of s.d.keys())
|
|
3795
|
-
|
|
3798
|
+
pn(
|
|
3796
3799
|
e,
|
|
3797
3800
|
n,
|
|
3798
3801
|
i(t, l)
|
|
3799
3802
|
);
|
|
3800
|
-
s.v = n, delete s.e, (!
|
|
3801
|
-
},
|
|
3803
|
+
s.v = n, delete s.e, (!a || !Object.is(o, s.v)) && (++s.n, Ve(o) && ji(o));
|
|
3804
|
+
}, Ki = (t, e) => {
|
|
3802
3805
|
const n = X(t)[14];
|
|
3803
|
-
return
|
|
3804
|
-
},
|
|
3805
|
-
const i = X(t), s = i[12],
|
|
3806
|
+
return $e(n(t, e));
|
|
3807
|
+
}, Qi = (t, e, ...n) => {
|
|
3808
|
+
const i = X(t), s = i[12], a = i[13], o = i[16];
|
|
3806
3809
|
try {
|
|
3807
3810
|
return o(t, e, ...n);
|
|
3808
3811
|
} finally {
|
|
3809
|
-
|
|
3812
|
+
a(t), s(t);
|
|
3810
3813
|
}
|
|
3811
|
-
},
|
|
3812
|
-
const i = X(t), s = i[12],
|
|
3814
|
+
}, Xi = (t, e, n) => {
|
|
3815
|
+
const i = X(t), s = i[12], a = i[18], o = i[19], d = a(t, e).l;
|
|
3813
3816
|
return d.add(n), s(t), () => {
|
|
3814
3817
|
d.delete(n), o(t, e), s(t);
|
|
3815
3818
|
};
|
|
3816
|
-
},
|
|
3817
|
-
const e =
|
|
3819
|
+
}, mn = /* @__PURE__ */ new WeakMap(), X = (t) => {
|
|
3820
|
+
const e = mn.get(t);
|
|
3818
3821
|
if ((ce ? "production" : void 0) !== "production" && !e)
|
|
3819
3822
|
throw new Error(
|
|
3820
3823
|
"Store must be created by buildStore to read its building blocks"
|
|
3821
3824
|
);
|
|
3822
3825
|
return e;
|
|
3823
3826
|
};
|
|
3824
|
-
function
|
|
3827
|
+
function Zi(...t) {
|
|
3825
3828
|
const e = {
|
|
3826
3829
|
get(i) {
|
|
3827
3830
|
const s = X(e)[21];
|
|
3828
3831
|
return s(e, i);
|
|
3829
3832
|
},
|
|
3830
3833
|
set(i, ...s) {
|
|
3831
|
-
const
|
|
3832
|
-
return
|
|
3834
|
+
const a = X(e)[22];
|
|
3835
|
+
return a(e, i, ...s);
|
|
3833
3836
|
},
|
|
3834
3837
|
sub(i, s) {
|
|
3835
|
-
const
|
|
3836
|
-
return
|
|
3838
|
+
const a = X(e)[23];
|
|
3839
|
+
return a(e, i, s);
|
|
3837
3840
|
}
|
|
3838
3841
|
}, n = [
|
|
3839
3842
|
// store state
|
|
@@ -3852,63 +3855,63 @@ function Xi(...t) {
|
|
|
3852
3855
|
{},
|
|
3853
3856
|
// storeHooks
|
|
3854
3857
|
// atom interceptors
|
|
3855
|
-
Ui,
|
|
3856
|
-
$i,
|
|
3857
3858
|
Fi,
|
|
3859
|
+
$i,
|
|
3858
3860
|
Bi,
|
|
3859
|
-
// building-block functions
|
|
3860
3861
|
Vi,
|
|
3862
|
+
// building-block functions
|
|
3861
3863
|
Gi,
|
|
3862
3864
|
Wi,
|
|
3863
3865
|
Hi,
|
|
3864
3866
|
qi,
|
|
3865
|
-
vn,
|
|
3866
3867
|
Ji,
|
|
3867
|
-
|
|
3868
|
+
gn,
|
|
3868
3869
|
Yi,
|
|
3869
|
-
|
|
3870
|
+
vn,
|
|
3870
3871
|
zi,
|
|
3872
|
+
Ge,
|
|
3871
3873
|
Ki,
|
|
3872
3874
|
Qi,
|
|
3875
|
+
Xi,
|
|
3873
3876
|
void 0
|
|
3874
3877
|
].map((i, s) => t[s] || i);
|
|
3875
|
-
return
|
|
3878
|
+
return mn.set(e, Object.freeze(n)), e;
|
|
3876
3879
|
}
|
|
3877
|
-
const
|
|
3878
|
-
let
|
|
3880
|
+
const yn = {};
|
|
3881
|
+
let es = 0;
|
|
3879
3882
|
function He(t, e) {
|
|
3880
|
-
const n = `atom${++
|
|
3883
|
+
const n = `atom${++es}`, i = {
|
|
3881
3884
|
toString() {
|
|
3882
|
-
return (
|
|
3885
|
+
return (yn ? "production" : void 0) !== "production" && this.debugLabel ? n + ":" + this.debugLabel : n;
|
|
3883
3886
|
}
|
|
3884
3887
|
};
|
|
3885
|
-
return typeof t == "function" ? i.read = t : (i.init = t, i.read =
|
|
3888
|
+
return typeof t == "function" ? i.read = t : (i.init = t, i.read = ts, i.write = ns), i;
|
|
3886
3889
|
}
|
|
3887
|
-
function
|
|
3890
|
+
function ts(t) {
|
|
3888
3891
|
return t(this);
|
|
3889
3892
|
}
|
|
3890
|
-
function
|
|
3893
|
+
function ns(t, e, n) {
|
|
3891
3894
|
return e(
|
|
3892
3895
|
this,
|
|
3893
3896
|
typeof n == "function" ? n(t(this)) : n
|
|
3894
3897
|
);
|
|
3895
3898
|
}
|
|
3896
|
-
function
|
|
3897
|
-
return
|
|
3899
|
+
function is() {
|
|
3900
|
+
return Zi();
|
|
3898
3901
|
}
|
|
3899
3902
|
let Ce;
|
|
3900
|
-
function
|
|
3901
|
-
return Ce || (Ce =
|
|
3903
|
+
function ss() {
|
|
3904
|
+
return Ce || (Ce = is(), (yn ? "production" : void 0) !== "production" && (globalThis.__JOTAI_DEFAULT_STORE__ || (globalThis.__JOTAI_DEFAULT_STORE__ = Ce), globalThis.__JOTAI_DEFAULT_STORE__ !== Ce && console.warn(
|
|
3902
3905
|
"Detected multiple Jotai instances. It may cause unexpected behavior with the default store. https://github.com/pmndrs/jotai/discussions/2044"
|
|
3903
3906
|
))), Ce;
|
|
3904
3907
|
}
|
|
3905
|
-
const
|
|
3908
|
+
const os = {}, rs = Gt(
|
|
3906
3909
|
void 0
|
|
3907
3910
|
);
|
|
3908
|
-
function
|
|
3909
|
-
return
|
|
3911
|
+
function bn(t) {
|
|
3912
|
+
return Vt(rs) || ss();
|
|
3910
3913
|
}
|
|
3911
|
-
const
|
|
3914
|
+
const lt = (t) => typeof t?.then == "function", dt = (t) => {
|
|
3912
3915
|
t.status || (t.status = "pending", t.then(
|
|
3913
3916
|
(e) => {
|
|
3914
3917
|
t.status = "fulfilled", t.value = e;
|
|
@@ -3917,34 +3920,34 @@ const dt = (t) => typeof t?.then == "function", ut = (t) => {
|
|
|
3917
3920
|
t.status = "rejected", t.reason = e;
|
|
3918
3921
|
}
|
|
3919
3922
|
));
|
|
3920
|
-
},
|
|
3923
|
+
}, as = ut.use || // A shim for older React versions
|
|
3921
3924
|
((t) => {
|
|
3922
3925
|
if (t.status === "pending")
|
|
3923
3926
|
throw t;
|
|
3924
3927
|
if (t.status === "fulfilled")
|
|
3925
3928
|
return t.value;
|
|
3926
|
-
throw t.status === "rejected" ? t.reason : (
|
|
3927
|
-
}),
|
|
3928
|
-
let n =
|
|
3929
|
+
throw t.status === "rejected" ? t.reason : (dt(t), t);
|
|
3930
|
+
}), Ze = /* @__PURE__ */ new WeakMap(), Bt = (t, e) => {
|
|
3931
|
+
let n = Ze.get(t);
|
|
3929
3932
|
return n || (n = new Promise((i, s) => {
|
|
3930
|
-
let
|
|
3933
|
+
let a = t;
|
|
3931
3934
|
const o = (h) => (f) => {
|
|
3932
|
-
|
|
3935
|
+
a === h && i(f);
|
|
3933
3936
|
}, l = (h) => (f) => {
|
|
3934
|
-
|
|
3937
|
+
a === h && s(f);
|
|
3935
3938
|
}, d = () => {
|
|
3936
3939
|
try {
|
|
3937
3940
|
const h = e();
|
|
3938
|
-
|
|
3941
|
+
lt(h) ? (Ze.set(h, n), a = h, h.then(o(h), l(h)), at(h, d)) : i(h);
|
|
3939
3942
|
} catch (h) {
|
|
3940
3943
|
s(h);
|
|
3941
3944
|
}
|
|
3942
3945
|
};
|
|
3943
|
-
t.then(o(t), l(t)),
|
|
3944
|
-
}),
|
|
3946
|
+
t.then(o(t), l(t)), at(t, d);
|
|
3947
|
+
}), Ze.set(t, n)), n;
|
|
3945
3948
|
};
|
|
3946
3949
|
function qe(t, e) {
|
|
3947
|
-
const { delay: n, unstable_promiseStatus: i = !
|
|
3950
|
+
const { delay: n, unstable_promiseStatus: i = !ut.use } = {}, s = bn(), [[a, o, l], d] = En(
|
|
3948
3951
|
(f) => {
|
|
3949
3952
|
const v = s.get(t);
|
|
3950
3953
|
return Object.is(f[0], v) && f[1] === s && f[2] === t ? f : [v, s, t];
|
|
@@ -3952,14 +3955,14 @@ function qe(t, e) {
|
|
|
3952
3955
|
void 0,
|
|
3953
3956
|
() => [s.get(t), s, t]
|
|
3954
3957
|
);
|
|
3955
|
-
let h =
|
|
3958
|
+
let h = a;
|
|
3956
3959
|
if ((o !== s || l !== t) && (d(), h = s.get(t)), pe(() => {
|
|
3957
3960
|
const f = s.sub(t, () => {
|
|
3958
3961
|
if (i)
|
|
3959
3962
|
try {
|
|
3960
3963
|
const v = s.get(t);
|
|
3961
|
-
|
|
3962
|
-
|
|
3964
|
+
lt(v) && dt(
|
|
3965
|
+
Bt(v, () => s.get(t))
|
|
3963
3966
|
);
|
|
3964
3967
|
} catch {
|
|
3965
3968
|
}
|
|
@@ -3970,38 +3973,38 @@ function qe(t, e) {
|
|
|
3970
3973
|
d();
|
|
3971
3974
|
});
|
|
3972
3975
|
return d(), f;
|
|
3973
|
-
}, [s, t, n, i]),
|
|
3974
|
-
const f =
|
|
3975
|
-
return i &&
|
|
3976
|
+
}, [s, t, n, i]), Tn(h), lt(h)) {
|
|
3977
|
+
const f = Bt(h, () => s.get(t));
|
|
3978
|
+
return i && dt(f), as(f);
|
|
3976
3979
|
}
|
|
3977
3980
|
return h;
|
|
3978
3981
|
}
|
|
3979
3982
|
function Je(t, e) {
|
|
3980
|
-
const n =
|
|
3981
|
-
return
|
|
3983
|
+
const n = bn();
|
|
3984
|
+
return An(
|
|
3982
3985
|
(...s) => {
|
|
3983
|
-
if ((
|
|
3986
|
+
if ((os ? "production" : void 0) !== "production" && !("write" in t))
|
|
3984
3987
|
throw new Error("not writable atom");
|
|
3985
3988
|
return n.set(t, ...s);
|
|
3986
3989
|
},
|
|
3987
3990
|
[n, t]
|
|
3988
3991
|
);
|
|
3989
3992
|
}
|
|
3990
|
-
const
|
|
3991
|
-
function
|
|
3992
|
-
return qe(
|
|
3993
|
+
const _n = He([]);
|
|
3994
|
+
function ms() {
|
|
3995
|
+
return qe(_n);
|
|
3993
3996
|
}
|
|
3994
|
-
function
|
|
3995
|
-
return Je(
|
|
3997
|
+
function cs() {
|
|
3998
|
+
return Je(_n);
|
|
3996
3999
|
}
|
|
3997
4000
|
const Ye = () => {
|
|
3998
|
-
const t =
|
|
4001
|
+
const t = Vt(kn);
|
|
3999
4002
|
if (!t)
|
|
4000
4003
|
throw new Error("useClient must be used within a TelnyxAIAgentProvider");
|
|
4001
4004
|
return t;
|
|
4002
4005
|
};
|
|
4003
|
-
function
|
|
4004
|
-
const t = Ye(), e =
|
|
4006
|
+
function ls() {
|
|
4007
|
+
const t = Ye(), e = cs();
|
|
4005
4008
|
return pe(() => {
|
|
4006
4009
|
const n = (i) => e((s) => [...s, i]);
|
|
4007
4010
|
return t.addListener("transcript.item", n), () => {
|
|
@@ -4009,15 +4012,15 @@ function cs() {
|
|
|
4009
4012
|
};
|
|
4010
4013
|
}, [t, e]), null;
|
|
4011
4014
|
}
|
|
4012
|
-
const
|
|
4013
|
-
function
|
|
4014
|
-
return qe(
|
|
4015
|
-
}
|
|
4016
|
-
function ls() {
|
|
4017
|
-
return Je(wn);
|
|
4015
|
+
const Sn = He("connecting");
|
|
4016
|
+
function ys() {
|
|
4017
|
+
return qe(Sn);
|
|
4018
4018
|
}
|
|
4019
4019
|
function ds() {
|
|
4020
|
-
|
|
4020
|
+
return Je(Sn);
|
|
4021
|
+
}
|
|
4022
|
+
function us() {
|
|
4023
|
+
const t = Ye(), e = ds();
|
|
4021
4024
|
return pe(() => {
|
|
4022
4025
|
const n = () => e("connected"), i = () => e("disconnected"), s = () => e("error");
|
|
4023
4026
|
return t.addListener("agent.connected", n), t.addListener("agent.disconnected", i), t.addListener("agent.error", s), () => {
|
|
@@ -4025,15 +4028,15 @@ function ds() {
|
|
|
4025
4028
|
};
|
|
4026
4029
|
}, [t, e]), null;
|
|
4027
4030
|
}
|
|
4028
|
-
const
|
|
4029
|
-
function
|
|
4030
|
-
return qe(
|
|
4031
|
+
const wn = He(null);
|
|
4032
|
+
function bs() {
|
|
4033
|
+
return qe(wn);
|
|
4031
4034
|
}
|
|
4032
|
-
function
|
|
4033
|
-
return Je(
|
|
4035
|
+
function hs() {
|
|
4036
|
+
return Je(wn);
|
|
4034
4037
|
}
|
|
4035
|
-
const
|
|
4036
|
-
const t = Ye(), e =
|
|
4038
|
+
const ps = () => {
|
|
4039
|
+
const t = Ye(), e = hs();
|
|
4037
4040
|
return pe(() => {
|
|
4038
4041
|
const n = (i) => {
|
|
4039
4042
|
e(i);
|
|
@@ -4042,15 +4045,15 @@ const hs = () => {
|
|
|
4042
4045
|
t.removeListener("conversation.update", n);
|
|
4043
4046
|
};
|
|
4044
4047
|
}, [t, e]), null;
|
|
4045
|
-
},
|
|
4046
|
-
function
|
|
4047
|
-
return qe(
|
|
4048
|
-
}
|
|
4049
|
-
function ps() {
|
|
4050
|
-
return Je(kn);
|
|
4048
|
+
}, Cn = He({ state: "listening" });
|
|
4049
|
+
function _s() {
|
|
4050
|
+
return qe(Cn);
|
|
4051
4051
|
}
|
|
4052
4052
|
function fs() {
|
|
4053
|
-
|
|
4053
|
+
return Je(Cn);
|
|
4054
|
+
}
|
|
4055
|
+
function gs() {
|
|
4056
|
+
const t = Ye(), e = fs();
|
|
4054
4057
|
return pe(() => {
|
|
4055
4058
|
const n = (i) => {
|
|
4056
4059
|
e(i);
|
|
@@ -4060,43 +4063,44 @@ function fs() {
|
|
|
4060
4063
|
};
|
|
4061
4064
|
}, [t, e]), null;
|
|
4062
4065
|
}
|
|
4063
|
-
const
|
|
4066
|
+
const kn = Gt(null), Ss = ({
|
|
4064
4067
|
children: t,
|
|
4065
4068
|
agentId: e,
|
|
4066
4069
|
environment: n,
|
|
4067
4070
|
versionId: i,
|
|
4068
|
-
debug: s
|
|
4071
|
+
debug: s,
|
|
4072
|
+
vad: a
|
|
4069
4073
|
}) => {
|
|
4070
|
-
const [
|
|
4074
|
+
const [o, l] = Rn(() => new Nt({ agentId: e, environment: n, versionId: i, debug: s, vad: a }));
|
|
4071
4075
|
return pe(() => {
|
|
4072
|
-
if (!
|
|
4073
|
-
const
|
|
4074
|
-
return
|
|
4075
|
-
|
|
4076
|
+
if (!o) {
|
|
4077
|
+
const d = new Nt({ agentId: e, environment: n, versionId: i, vad: a });
|
|
4078
|
+
return l(d), () => {
|
|
4079
|
+
d.disconnect();
|
|
4076
4080
|
};
|
|
4077
4081
|
}
|
|
4078
|
-
}, [e,
|
|
4079
|
-
|
|
4080
|
-
}, [
|
|
4081
|
-
/* @__PURE__ */ we.jsx(
|
|
4082
|
-
/* @__PURE__ */ we.jsx(
|
|
4083
|
-
/* @__PURE__ */ we.jsx(
|
|
4084
|
-
/* @__PURE__ */ we.jsx(
|
|
4082
|
+
}, [e, o, n, i, a]), pe(() => {
|
|
4083
|
+
o?.connect();
|
|
4084
|
+
}, [o]), /* @__PURE__ */ we.jsxs(kn.Provider, { value: o, children: [
|
|
4085
|
+
/* @__PURE__ */ we.jsx(ls, {}),
|
|
4086
|
+
/* @__PURE__ */ we.jsx(us, {}),
|
|
4087
|
+
/* @__PURE__ */ we.jsx(ps, {}),
|
|
4088
|
+
/* @__PURE__ */ we.jsx(gs, {}),
|
|
4085
4089
|
t
|
|
4086
4090
|
] });
|
|
4087
4091
|
};
|
|
4088
4092
|
export {
|
|
4089
|
-
|
|
4090
|
-
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
|
|
4093
|
+
kn as ClientContext,
|
|
4094
|
+
L as SwEvent,
|
|
4095
|
+
Nt as TelnyxAIAgent,
|
|
4096
|
+
Ss as TelnyxAIAgentProvider,
|
|
4097
|
+
_s as useAgentState,
|
|
4094
4098
|
Ye as useClient,
|
|
4095
|
-
|
|
4096
|
-
|
|
4097
|
-
|
|
4098
|
-
|
|
4099
|
-
|
|
4100
|
-
|
|
4101
|
-
|
|
4099
|
+
ys as useConnectionState,
|
|
4100
|
+
bs as useConversation,
|
|
4101
|
+
fs as useSetAgentState,
|
|
4102
|
+
ds as useSetConnectionState,
|
|
4103
|
+
hs as useSetConversation,
|
|
4104
|
+
cs as useSetTranscript,
|
|
4105
|
+
ms as useTranscript
|
|
4102
4106
|
};
|