sip-connector 14.1.0-alpha.2 → 14.1.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,14 +1,21 @@
1
- import { E as y, l as c, O as ce } from "./@SipConnector-hNVaYCWj.js";
2
- import { S as bn, d as vn, e as On, h as Bn } from "./@SipConnector-hNVaYCWj.js";
3
- import { sequentPromises as ae } from "sequent-promises";
4
- import { createStackPromises as ue } from "stack-promises";
5
- import P from "debug";
6
- import { default as Dn } from "debug";
7
1
  import "events-constructor";
2
+ import { E as y, O as ce, l as c, a as w } from "./@SipConnector-7Q9X7euI.js";
3
+ import { b as On, S as An, d as Nn, e as Bn, h as wn } from "./@SipConnector-7Q9X7euI.js";
8
4
  import { isCanceledError as K } from "@krivega/cancelable-promise";
9
- import { hasCanceledError as de } from "repeated-calls";
10
- import { debounce as le } from "ts-debounce";
11
- const fe = (e, n) => (e.degradationPreference = n.degradationPreference, e), he = (e, n) => {
5
+ import { hasCanceledError as ae } from "repeated-calls";
6
+ import { debounce as ue } from "ts-debounce";
7
+ import I from "debug";
8
+ import { default as Pn } from "debug";
9
+ import { sequentPromises as de } from "sequent-promises";
10
+ import { createStackPromises as le } from "stack-promises";
11
+ const fe = (e) => e instanceof Object && ("originator" in e || "cause" in e), En = (e) => {
12
+ if (K(e))
13
+ return !0;
14
+ if (!fe(e))
15
+ return !1;
16
+ const { originator: n, cause: t } = e;
17
+ return typeof t == "string" ? t === y.REQUEST_TIMEOUT || t === y.REJECTED || n === ce.LOCAL && (t === y.CANCELED || t === y.BYE) : !1;
18
+ }, he = (e, n) => (e.degradationPreference = n.degradationPreference, e), ge = (e, n) => {
12
19
  e.encodings ??= [];
13
20
  for (let t = e.encodings.length; t < n; t += 1)
14
21
  e.encodings.push({});
@@ -16,29 +23,29 @@ const fe = (e, n) => (e.degradationPreference = n.degradationPreference, e), he
16
23
  }, Y = (e) => (n, t) => t !== void 0 && n !== t || t === void 0 && n !== e, Ce = Y(), Se = (e, n) => {
17
24
  if (Ce(e, n))
18
25
  return e;
19
- }, ge = (e, n) => {
26
+ }, me = (e, n) => {
20
27
  const t = e.maxBitrate, o = Se(n, t);
21
28
  return o !== void 0 && (e.maxBitrate = o), e;
22
- }, q = 1, me = Y(
29
+ }, q = 1, pe = Y(
23
30
  q
24
31
  ), Re = (e, n) => {
25
32
  const t = e === void 0 ? void 0 : Math.max(e, q);
26
- if (t !== void 0 && me(
33
+ if (t !== void 0 && pe(
27
34
  t,
28
35
  n
29
36
  ))
30
37
  return t;
31
- }, pe = (e, n) => {
38
+ }, ye = (e, n) => {
32
39
  const t = e.scaleResolutionDownBy, o = Re(
33
40
  n,
34
41
  t
35
42
  );
36
43
  return o !== void 0 && (e.scaleResolutionDownBy = o), e;
37
- }, ye = (e, n) => {
44
+ }, Ee = (e, n) => {
38
45
  const t = n.encodings?.length ?? 0;
39
- return he(e, t), e.encodings.forEach((o, s) => {
46
+ return ge(e, t), e.encodings.forEach((o, s) => {
40
47
  const r = (n?.encodings ?? [])[s], i = r?.maxBitrate, a = r?.scaleResolutionDownBy;
41
- ge(o, i), pe(o, a);
48
+ me(o, i), ye(o, a);
42
49
  }), e;
43
50
  }, Te = (e, n) => {
44
51
  if (e.codecs?.length !== n.codecs?.length)
@@ -61,326 +68,32 @@ const fe = (e, n) => (e.degradationPreference = n.degradationPreference, e), he
61
68
  const t = e.getParameters(), o = JSON.parse(
62
69
  JSON.stringify(t)
63
70
  );
64
- ye(t, n), fe(t, n);
71
+ Ee(t, n), he(t, n);
65
72
  const s = Te(o, t);
66
73
  return s && await e.setParameters(t), { parameters: t, isChanged: s };
67
- }, V = (e) => {
68
- const { url: n, cause: t } = e;
69
- let o = n;
70
- return (t === y.BAD_MEDIA_DESCRIPTION || t === y.NOT_FOUND) && (o = `${e.message.to.uri.user}@${e.message.to.uri.host}`), o;
71
- };
72
- var Q = /* @__PURE__ */ ((e) => (e.CONNECT_SERVER_FAILED = "CONNECT_SERVER_FAILED", e.WRONG_USER_OR_PASSWORD = "WRONG_USER_OR_PASSWORD", e.BAD_MEDIA_ERROR = "BAD_MEDIA_ERROR", e.NOT_FOUND_ERROR = "NOT_FOUND_ERROR", e.WS_CONNECTION_FAILED = "WS_CONNECTION_FAILED", e.CONNECT_SERVER_FAILED_BY_LINK = "CONNECT_SERVER_FAILED_BY_LINK", e))(Q || {});
73
- const Me = new Error("Unknown error"), Ee = (e = Me) => {
74
- const { cause: n, socket: t } = e;
75
- let o = "CONNECT_SERVER_FAILED";
76
- switch (n) {
77
- case "Forbidden": {
78
- o = "WRONG_USER_OR_PASSWORD";
79
- break;
80
- }
81
- case y.BAD_MEDIA_DESCRIPTION: {
82
- o = "BAD_MEDIA_ERROR";
83
- break;
84
- }
85
- case y.NOT_FOUND: {
86
- o = "NOT_FOUND_ERROR";
87
- break;
88
- }
89
- default:
90
- t !== void 0 && t._ws?.readyState === 3 ? o = "WS_CONNECTION_FAILED" : V(e) !== void 0 && V(e) !== "" && (o = "CONNECT_SERVER_FAILED_BY_LINK");
91
- }
92
- return o;
93
- }, Ae = (e) => {
94
- let n = "";
95
- try {
96
- n = JSON.stringify(e);
97
- } catch (t) {
98
- c("failed to stringify message", t);
99
- }
100
- return n;
101
- }, _e = new Error("Unknown error"), Ne = (e = _e) => {
102
- const { code: n, cause: t, message: o } = e, s = V(e), r = { code: "", cause: "", message: "" };
103
- return typeof o == "object" && o !== null ? r.message = Ae(o) : o && (r.message = String(o)), s !== void 0 && s !== "" && (r.link = s), n !== void 0 && n !== "" && (r.code = n), t !== void 0 && t !== "" && (r.cause = t), r;
104
- }, be = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
105
- __proto__: null,
106
- EErrorTypes: Q,
107
- getLinkError: V,
108
- getTypeFromError: Ee,
109
- getValuesFromError: Ne
110
- }, Symbol.toStringTag, { value: "Module" })), ve = ({
111
- sessionId: e,
112
- remoteAddress: n,
113
- isMutedAudio: t,
114
- isMutedVideo: o,
115
- isRegistered: s,
116
- isPresentationCall: r
117
- }) => {
118
- const i = [], a = t ? "0" : "1", u = o ? "0" : "1";
119
- return i.push(`X-Vinteo-Mic-State: ${a}`, `X-Vinteo-MainCam-State: ${u}`), (s === !1 || s === void 0) && i.push("X-Vinteo-Purgatory-Call: yes"), e !== void 0 && e !== "" && i.push(`X-Vinteo-Session: ${e}`), r === !0 && i.push("X-Vinteo-Presentation-Call: yes"), n !== void 0 && n !== "" && i.push(`X-Vinteo-Remote: ${n}`), i;
120
- }, Oe = "[@*!|]", Be = "_", we = (e) => {
121
- let n = e;
122
- return n = n.replaceAll(new RegExp(Oe, "g"), Be), n;
123
- }, De = ({
124
- appName: e,
125
- appVersion: n,
126
- browserName: t,
127
- browserVersion: o
128
- }) => {
129
- const r = `${we(e)} ${n}`;
130
- return `ChromeNew - ${t === void 0 ? r : `${t} ${o}, ${r}`}`;
131
- }, Ie = ({
132
- isUnifiedSdpSemantic: e,
133
- appVersion: n,
134
- browserName: t,
135
- browserVersion: o,
136
- appName: s
137
- }) => e ? De({ appVersion: n, browserName: t, browserVersion: o, appName: s }) : "Chrome", Z = "purgatory", x = (e) => e === Z, Pe = (e) => (n) => [...n].map((o) => async () => e(o)), xe = async ({
138
- accumulatedKeys: e,
139
- sendKey: n,
140
- canRunTask: t
141
- }) => {
142
- const s = Pe(n)(e);
143
- return ae(s, t);
144
- }, Ue = (e) => (t) => (c("onStartMainCam"), e.on("api:admin-start-main-cam", t)), Fe = (e) => (t) => (c("onStartMic"), e.on("api:admin-start-mic", t)), ke = (e) => (t) => (c("onStopMainCam"), e.on("api:admin-stop-main-cam", t)), Ve = (e) => (t) => (c("onStopMic"), e.on("api:admin-stop-mic", t)), Le = ({ sipConnector: e }) => {
145
- const n = (C, R) => ({ isSyncForced: S }) => {
146
- if (S === !0) {
147
- C();
148
- return;
149
- }
150
- R();
151
- }, t = Ue(e), o = ke(e), s = Fe(e), r = Ve(e);
152
- let i, a, u, l;
153
- const h = ({
154
- onStartMainCamForced: C,
155
- onStartMainCamNotForced: R,
156
- onStopMainCamForced: S,
157
- onStopMainCamNotForced: g,
158
- onStartMicForced: p,
159
- onStartMicNotForced: T,
160
- onStopMicForced: M,
161
- onStopMicNotForced: E
162
- }) => {
163
- const N = n(
164
- C,
165
- R
166
- );
167
- i = t(N);
168
- const v = n(
169
- S,
170
- g
171
- );
172
- a = o(v);
173
- const O = n(p, T);
174
- u = s(O);
175
- const B = n(M, E);
176
- l = r(B);
177
- }, f = () => {
178
- i?.(), a?.(), u?.(), l?.();
179
- };
180
- return {
181
- start: (C) => {
182
- h(C);
183
- },
184
- stop: () => {
185
- f();
186
- }
187
- };
188
- }, Tn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
189
- __proto__: null,
190
- PURGATORY_CONFERENCE_NUMBER: Z,
191
- createSyncMediaState: Le,
192
- error: be,
193
- getExtraHeaders: ve,
194
- getUserAgent: Ie,
195
- hasPurgatory: x,
196
- sendDtmfAccumulated: xe
197
- }, Symbol.toStringTag, { value: "Module" })), $e = (e) => [...e.keys()].map((n) => e.get(n)), He = (e, n) => $e(e).find((t) => t?.type === n), Xe = async (e) => e.getStats().then((n) => He(n, "codec")?.mimeType), Je = (e) => e.find((n) => n.track?.kind === "video"), ee = (e, n) => e !== void 0 && n !== void 0 && e.toLowerCase().includes(n.toLowerCase());
198
- var b = /* @__PURE__ */ ((e) => (e.PAUSE_MAIN_CAM = "PAUSEMAINCAM", e.RESUME_MAIN_CAM = "RESUMEMAINCAM", e.MAX_MAIN_CAM_RESOLUTION = "MAXMAINCAMRESOLUTION", e.ADMIN_STOP_MAIN_CAM = "ADMINSTOPMAINCAM", e.ADMIN_START_MAIN_CAM = "ADMINSTARTMAINCAM", e))(b || {});
199
- const We = 1e6, m = (e) => e * We, ne = m(0.06), je = m(4), Ge = (e) => e <= 64 ? ne : e <= 128 ? m(0.12) : e <= 256 ? m(0.25) : e <= 384 ? m(0.32) : e <= 426 ? m(0.38) : e <= 640 ? m(0.5) : e <= 848 ? m(0.7) : e <= 1280 ? m(1) : e <= 1920 ? m(2) : je, Ke = "av1", Ye = (e) => ee(e, Ke), qe = 0.6, te = (e, n) => Ye(n) ? e * qe : e, ze = (e) => te(ne, e), oe = (e, n) => {
200
- const t = Ge(e);
201
- return te(t, n);
202
- }, X = 1, se = ({
74
+ }, Me = (e) => e.getVideoTracks()[0], ve = 1e6, m = (e) => e * ve, Q = m(0.06), be = m(4), _e = (e) => e <= 64 ? Q : e <= 128 ? m(0.12) : e <= 256 ? m(0.25) : e <= 384 ? m(0.32) : e <= 426 ? m(0.38) : e <= 640 ? m(0.5) : e <= 848 ? m(0.7) : e <= 1280 ? m(1) : e <= 1920 ? m(2) : be, Z = (e, n) => e !== void 0 && n !== void 0 && e.toLowerCase().includes(n.toLowerCase()), Oe = "av1", Ae = (e) => Z(e, Oe), Ne = 0.6, ee = (e, n) => Ae(n) ? e * Ne : e, Be = (e) => ee(Q, e), ne = (e, n) => {
75
+ const t = _e(e);
76
+ return ee(t, n);
77
+ }, J = 1, te = ({
203
78
  videoTrack: e,
204
79
  targetSize: n,
205
80
  codec: t
206
81
  }) => {
207
- const o = e.getSettings(), s = o.width, r = o.height, i = s === void 0 ? X : s / n.width, a = r === void 0 ? X : r / n.height, u = Math.max(i, a, X), l = oe(n.width, t);
82
+ const o = e.getSettings(), s = o.width, r = o.height, i = s === void 0 ? J : s / n.width, a = r === void 0 ? J : r / n.height, u = Math.max(i, a, J), l = ne(n.width, t);
208
83
  return { scaleResolutionDownBy: u, maxBitrate: l };
209
- }, Qe = async (e, n, t) => {
210
- const { isChanged: o, parameters: s } = await z(e, {
211
- encodings: [
212
- {
213
- scaleResolutionDownBy: n.scaleResolutionDownBy,
214
- maxBitrate: n.maxBitrate
215
- }
216
- ]
217
- });
218
- return o && t && t(s), { isChanged: o, parameters: s };
219
- }, re = ue(), Ze = async () => re().catch((e) => {
220
- c("videoSendingBalancer: error", e);
221
- }), en = async (e) => (re.add(e), Ze()), W = async ({
222
- sender: e,
223
- scaleResolutionDownBy: n,
224
- maxBitrate: t,
225
- onSetParameters: o
226
- }) => en(async () => Qe(e, { scaleResolutionDownBy: n, maxBitrate: t }, o)), nn = async ({ sender: e, codec: n }, t) => {
227
- const s = ze(n);
228
- return W({
229
- sender: e,
230
- maxBitrate: s,
231
- onSetParameters: t,
232
- scaleResolutionDownBy: 200
233
- });
234
- }, k = async ({
235
- sender: e,
236
- videoTrack: n,
237
- codec: t
238
- }, o) => {
239
- const i = n.getSettings().width, a = oe(i ?? 0, t);
240
- return W({
241
- sender: e,
242
- maxBitrate: a,
243
- onSetParameters: o,
244
- scaleResolutionDownBy: 1
245
- });
246
- }, tn = async ({
247
- sender: e,
248
- videoTrack: n,
249
- resolution: t,
250
- codec: o
251
- }, s) => {
252
- const [r, i] = t.split("x"), { maxBitrate: a, scaleResolutionDownBy: u } = se({
253
- videoTrack: n,
254
- codec: o,
255
- targetSize: {
256
- width: Number(r),
257
- height: Number(i)
258
- }
259
- });
260
- return W({
261
- sender: e,
262
- maxBitrate: a,
263
- onSetParameters: s,
264
- scaleResolutionDownBy: u
265
- });
266
- }, on = async ({
267
- mainCam: e,
268
- resolutionMainCam: n,
269
- sender: t,
270
- videoTrack: o,
271
- codec: s
272
- }, r) => {
273
- switch (e) {
274
- case b.PAUSE_MAIN_CAM:
275
- return nn({ sender: t, codec: s }, r);
276
- case b.RESUME_MAIN_CAM:
277
- return k({ sender: t, videoTrack: o, codec: s }, r);
278
- case b.MAX_MAIN_CAM_RESOLUTION:
279
- return n !== void 0 ? tn(
280
- { sender: t, videoTrack: o, codec: s, resolution: n },
281
- r
282
- ) : k({ sender: t, videoTrack: o, codec: s }, r);
283
- case b.ADMIN_STOP_MAIN_CAM:
284
- case b.ADMIN_START_MAIN_CAM:
285
- case void 0:
286
- return k({ sender: t, videoTrack: o, codec: s }, r);
287
- default:
288
- return k({ sender: t, videoTrack: o, codec: s }, r);
289
- }
290
- }, j = {
291
- isChanged: !1,
292
- parameters: {
293
- encodings: [{}],
294
- transactionId: "0",
295
- codecs: [],
296
- headerExtensions: [],
297
- rtcp: {}
298
- }
299
- }, G = async ({
300
- mainCam: e,
301
- resolutionMainCam: n,
302
- connection: t,
303
- onSetParameters: o,
304
- ignoreForCodec: s
305
- }) => {
306
- const r = t.getSenders(), i = Je(r);
307
- if (!i?.track)
308
- return j;
309
- const a = await Xe(i);
310
- return ee(a, s) ? j : on(
311
- {
312
- mainCam: e,
313
- resolutionMainCam: n,
314
- sender: i,
315
- codec: a,
316
- videoTrack: i.track
317
- },
318
- o
319
- );
320
- }, Mn = (e, {
321
- ignoreForCodec: n,
322
- onSetParameters: t
323
- } = {}) => {
324
- const o = async () => {
325
- const { connection: u } = e;
326
- if (!u)
327
- throw new Error("connection is not exist");
328
- return G({
329
- connection: u,
330
- onSetParameters: t,
331
- ignoreForCodec: n
332
- });
333
- };
334
- let s = o;
335
- const r = (u) => {
336
- s = async () => {
337
- const { mainCam: l, resolutionMainCam: h } = u, { connection: f } = e;
338
- if (!f)
339
- throw new Error("connection is not exist");
340
- return G({
341
- mainCam: l,
342
- resolutionMainCam: h,
343
- connection: f,
344
- onSetParameters: t,
345
- ignoreForCodec: n
346
- });
347
- }, s().catch(P);
348
- };
349
- return {
350
- subscribe: () => {
351
- e.on("api:main-cam-control", r);
352
- },
353
- unsubscribe: () => {
354
- e.off("api:main-cam-control", r);
355
- },
356
- balanceByTrack: o,
357
- resetMainCamControl() {
358
- s = o;
359
- },
360
- async reBalance() {
361
- return s();
362
- }
363
- };
364
- }, sn = (e) => e instanceof Object && ("originator" in e || "cause" in e), En = (e) => {
365
- if (K(e))
366
- return !0;
367
- if (!sn(e))
368
- return !1;
369
- const { originator: n, cause: t } = e;
370
- return typeof t == "string" ? t === y.REQUEST_TIMEOUT || t === y.REJECTED || n === ce.LOCAL && (t === y.CANCELED || t === y.BYE) : !1;
371
- }, rn = (e) => e.getVideoTracks()[0], D = ({
84
+ }, D = ({
372
85
  mediaStream: e,
373
86
  simulcastEncodings: n,
374
87
  sendEncodings: t
375
88
  }) => {
376
89
  if (n && n.length > 0) {
377
- const o = t ?? [], s = rn(e);
90
+ const o = t ?? [], s = Me(e);
378
91
  if (s === void 0)
379
92
  throw new Error("No video track");
380
93
  return n.forEach((r, i) => {
381
94
  const a = o[i] ?? {};
382
95
  a.active = !0, r.rid !== void 0 && (a.rid = r.rid), r.scalabilityMode !== void 0 && (a.scalabilityMode = r.scalabilityMode);
383
- const { maxBitrate: u, scaleResolutionDownBy: l } = se({
96
+ const { maxBitrate: u, scaleResolutionDownBy: l } = te({
384
97
  videoTrack: s,
385
98
  targetSize: {
386
99
  width: r.width,
@@ -391,30 +104,30 @@ const We = 1e6, m = (e) => e * We, ne = m(0.06), je = m(4), Ge = (e) => e <= 64
391
104
  }), o;
392
105
  }
393
106
  return t;
394
- }, cn = (e, n) => e.filter((o) => n.some((s) => s.clockRate === o.clockRate && s.mimeType === o.mimeType && s.channels === o.channels && s.sdpFmtpLine === o.sdpFmtpLine)), an = (e) => {
107
+ }, oe = "purgatory", x = (e) => e === oe, we = (e, n) => e.filter((o) => n.some((s) => s.clockRate === o.clockRate && s.mimeType === o.mimeType && s.channels === o.channels && s.sdpFmtpLine === o.sdpFmtpLine)), De = (e) => {
395
108
  const n = RTCRtpSender.getCapabilities(e), t = RTCRtpReceiver.getCapabilities(e), o = n === null ? [] : n.codecs, s = t === null ? [] : t.codecs;
396
- return cn(o, s);
397
- }, un = (e, n) => n === void 0 || n.length === 0 ? e : e.sort((t, o) => {
109
+ return we(o, s);
110
+ }, Pe = (e, n) => n === void 0 || n.length === 0 ? e : e.sort((t, o) => {
398
111
  const s = n.indexOf(t.mimeType), r = n.indexOf(o.mimeType), i = s === -1 ? Number.MAX_VALUE : s, a = r === -1 ? Number.MAX_VALUE : r;
399
112
  return i - a;
400
- }), dn = (e, n) => n === void 0 || n.length === 0 ? e : e.filter((t) => !n.includes(t.mimeType)), I = (e, {
113
+ }), Ie = (e, n) => n === void 0 || n.length === 0 ? e : e.filter((t) => !n.includes(t.mimeType)), P = (e, {
401
114
  preferredMimeTypesVideoCodecs: n,
402
115
  excludeMimeTypesVideoCodecs: t
403
116
  }) => async (o) => {
404
117
  try {
405
118
  if (typeof o.setCodecPreferences == "function" && o.sender.track?.kind === "video" && (n !== void 0 && n.length > 0 || t !== void 0 && t.length > 0)) {
406
- const s = an("video"), r = dn(s, t), i = un(r, n);
119
+ const s = De("video"), r = Ie(s, t), i = Pe(r, n);
407
120
  o.setCodecPreferences(i);
408
121
  }
409
122
  Object.keys(e).length > 0 && await z(o.sender, e);
410
123
  } catch (s) {
411
124
  c("updateTransceiver error", s);
412
125
  }
413
- }, J = (e) => {
414
- if (!K(e) && !de(e))
126
+ }, X = (e) => {
127
+ if (!K(e) && !ae(e))
415
128
  throw e;
416
129
  return { isSuccessful: !1 };
417
- }, ln = ({ kind: e, readyState: n }) => e === "video" && n === "live", fn = /* @__PURE__ */ new Set([
130
+ }, xe = ({ kind: e, readyState: n }) => e === "video" && n === "live", Fe = /* @__PURE__ */ new Set([
418
131
  "on",
419
132
  "once",
420
133
  "onceRace",
@@ -431,7 +144,7 @@ const We = 1e6, m = (e) => e * We, ne = m(0.06), je = m(4), Ge = (e) => e <= 64
431
144
  "isConfigured",
432
145
  "isRegistered"
433
146
  ]);
434
- class An {
147
+ class Tn {
435
148
  // @ts-expect-error: proxy method
436
149
  on;
437
150
  // @ts-expect-error: proxy method
@@ -471,7 +184,7 @@ class An {
471
184
  } = {}) {
472
185
  return this.preferredMimeTypesVideoCodecs = t, this.excludeMimeTypesVideoCodecs = o, this.sipConnector = n, new Proxy(this, {
473
186
  get: (s, r, i) => {
474
- if (typeof r == "string" && fn.has(r) && r in this.sipConnector) {
187
+ if (typeof r == "string" && Fe.has(r) && r in this.sipConnector) {
475
188
  const u = Reflect.get(this.sipConnector, r, this.sipConnector);
476
189
  return typeof u == "function" ? u.bind(this.sipConnector) : u;
477
190
  }
@@ -501,7 +214,7 @@ class An {
501
214
  password: u,
502
215
  user: a,
503
216
  register: l
504
- }).then((f) => (c("connectToServer then"), { ua: f, isSuccessful: !0 })).catch(async (f) => (c("connectToServer catch: error", f), h === !0 ? this.sipConnector.disconnect().then(() => J(f)).catch(() => J(f)) : J(f)));
217
+ }).then((f) => (c("connectToServer then"), { ua: f, isSuccessful: !0 })).catch(async (f) => (c("connectToServer catch: error", f), h === !0 ? this.sipConnector.disconnect().then(() => X(f)).catch(() => X(f)) : X(f)));
505
218
  };
506
219
  callToServer = async (n) => {
507
220
  const {
@@ -515,23 +228,23 @@ class An {
515
228
  sendEncodings: l,
516
229
  offerToReceiveAudio: h,
517
230
  offerToReceiveVideo: f,
518
- directionVideo: U,
519
- directionAudio: F,
520
- setRemoteStreams: C,
521
- onBeforeProgressCall: R,
522
- onSuccessProgressCall: S,
523
- onEnterPurgatory: g,
524
- onEnterConference: p,
525
- onFailProgressCall: T,
526
- onFinishProgressCall: M,
527
- onEndedCall: E
528
- } = n, N = this.resolveHandleReadyRemoteStreamsDebounced({
529
- onReadyRemoteStreams: C
530
- }), v = this.resolveHandleReadyRemoteStreams({
231
+ directionVideo: F,
232
+ directionAudio: k,
233
+ setRemoteStreams: g,
234
+ onBeforeProgressCall: p,
235
+ onSuccessProgressCall: C,
236
+ onEnterPurgatory: S,
237
+ onEnterConference: R,
238
+ onFailProgressCall: E,
239
+ onFinishProgressCall: T,
240
+ onEndedCall: M
241
+ } = n, _ = this.resolveHandleReadyRemoteStreamsDebounced({
242
+ onReadyRemoteStreams: g
243
+ }), O = this.resolveHandleReadyRemoteStreams({
531
244
  onReadyRemoteStreams: () => {
532
- N().catch(P);
245
+ _().catch(I);
533
246
  }
534
- }), O = I(
247
+ }), A = P(
535
248
  {
536
249
  degradationPreference: u
537
250
  },
@@ -541,36 +254,36 @@ class An {
541
254
  }
542
255
  );
543
256
  c("callToServer", n);
544
- const B = async () => (c("startCall"), this.sipConnector.call({
257
+ const N = async () => (c("startCall"), this.sipConnector.call({
545
258
  mediaStream: o,
546
259
  extraHeaders: s,
547
260
  iceServers: r,
548
261
  contentHint: i,
549
262
  offerToReceiveAudio: h,
550
263
  offerToReceiveVideo: f,
551
- directionVideo: U,
552
- directionAudio: F,
264
+ directionVideo: F,
265
+ directionAudio: k,
553
266
  sendEncodings: D({
554
267
  mediaStream: o,
555
268
  simulcastEncodings: a,
556
269
  sendEncodings: l
557
270
  }),
558
271
  number: t,
559
- onAddedTransceiver: O,
560
- ontrack: v
272
+ onAddedTransceiver: A,
273
+ ontrack: O
561
274
  }));
562
- let A = !1, _;
563
- const w = (c("subscribeEnterConference: onEnterConference", p), g ?? p ? this.sipConnector.on("api:enterRoom", ({ room: d }) => {
564
- c("enterRoom", { _room: d, isSuccessProgressCall: A }), _ = d, x(_) ? g && g() : p && p({ isSuccessProgressCall: A });
275
+ let v = !1, b;
276
+ const B = (c("subscribeEnterConference: onEnterConference", R), S ?? R ? this.sipConnector.on("api:enterRoom", ({ room: d }) => {
277
+ c("enterRoom", { _room: d, isSuccessProgressCall: v }), b = d, x(b) ? S && S() : R && R({ isSuccessProgressCall: v });
565
278
  }) : () => {
566
- }), L = (d) => (c("onSuccess"), A = !0, N().catch(P), S && S({ isPurgatory: x(_) }), this.sipConnector.onceRace(["call:ended", "call:failed"], () => {
567
- w(), E && E();
279
+ }), L = (d) => (c("onSuccess"), v = !0, _().catch(I), C && C({ isPurgatory: x(b) }), this.sipConnector.onceRace(["call:ended", "call:failed"], () => {
280
+ B(), M && M();
568
281
  }), d), $ = (d) => {
569
- throw c("onFail"), T && T(), w(), d;
282
+ throw c("onFail"), E && E(), B(), d;
570
283
  }, H = () => {
571
- c("onFinish"), M && M();
284
+ c("onFinish"), T && T();
572
285
  };
573
- return c("onBeforeProgressCall"), R && R(t), B().then(L).catch((d) => $(d)).finally(H);
286
+ return c("onBeforeProgressCall"), p && p(t), N().then(L).catch((d) => $(d)).finally(H);
574
287
  };
575
288
  disconnectFromServer = async () => this.sipConnector.disconnect().then(() => (c("disconnectFromServer: then"), { isSuccessful: !0 })).catch((n) => (c("disconnectFromServer: catch", n), { isSuccessful: !1 }));
576
289
  answerToIncomingCall = async (n) => {
@@ -585,22 +298,22 @@ class An {
585
298
  offerToReceiveAudio: l,
586
299
  offerToReceiveVideo: h,
587
300
  directionVideo: f,
588
- directionAudio: U,
589
- setRemoteStreams: F,
590
- onBeforeProgressCall: C,
591
- onSuccessProgressCall: R,
592
- onEnterPurgatory: S,
593
- onEnterConference: g,
594
- onFailProgressCall: p,
595
- onFinishProgressCall: T,
596
- onEndedCall: M
597
- } = n, E = this.resolveHandleReadyRemoteStreamsDebounced({
598
- onReadyRemoteStreams: F
599
- }), N = this.resolveHandleReadyRemoteStreams({
301
+ directionAudio: F,
302
+ setRemoteStreams: k,
303
+ onBeforeProgressCall: g,
304
+ onSuccessProgressCall: p,
305
+ onEnterPurgatory: C,
306
+ onEnterConference: S,
307
+ onFailProgressCall: R,
308
+ onFinishProgressCall: E,
309
+ onEndedCall: T
310
+ } = n, M = this.resolveHandleReadyRemoteStreamsDebounced({
311
+ onReadyRemoteStreams: k
312
+ }), _ = this.resolveHandleReadyRemoteStreams({
600
313
  onReadyRemoteStreams: () => {
601
- E().catch(P);
314
+ M().catch(I);
602
315
  }
603
- }), v = I(
316
+ }), O = P(
604
317
  {
605
318
  degradationPreference: a
606
319
  },
@@ -610,7 +323,7 @@ class An {
610
323
  }
611
324
  );
612
325
  c("answerToIncomingCall", n);
613
- const O = async () => this.sipConnector.answerToIncomingCall({
326
+ const A = async () => this.sipConnector.answerToIncomingCall({
614
327
  mediaStream: t,
615
328
  extraHeaders: o,
616
329
  iceServers: s,
@@ -618,34 +331,34 @@ class An {
618
331
  offerToReceiveAudio: l,
619
332
  offerToReceiveVideo: h,
620
333
  directionVideo: f,
621
- directionAudio: U,
334
+ directionAudio: F,
622
335
  sendEncodings: D({
623
336
  mediaStream: t,
624
337
  simulcastEncodings: i,
625
338
  sendEncodings: u
626
339
  }),
627
- onAddedTransceiver: v,
628
- ontrack: N
629
- }), B = () => {
340
+ onAddedTransceiver: O,
341
+ ontrack: _
342
+ }), N = () => {
630
343
  const { remoteCallerData: d } = this.sipConnector;
631
344
  return d.incomingNumber;
632
345
  };
633
- let A = !1, _;
634
- const w = (c("subscribeEnterConference: onEnterConference", g), S ?? g ? this.sipConnector.on("api:enterRoom", (d) => {
635
- c("enterRoom", { _room: d, isSuccessProgressCall: A }), _ = d, x(_) ? S && S() : g && g({ isSuccessProgressCall: A });
346
+ let v = !1, b;
347
+ const B = (c("subscribeEnterConference: onEnterConference", S), C ?? S ? this.sipConnector.on("api:enterRoom", (d) => {
348
+ c("enterRoom", { _room: d, isSuccessProgressCall: v }), b = d, x(b) ? C && C() : S && S({ isSuccessProgressCall: v });
636
349
  }) : () => {
637
- }), L = (d) => (c("onSuccess"), A = !0, E().catch(P), R && R({ isPurgatory: x(_) }), this.sipConnector.onceRace(["call:ended", "call:failed"], () => {
638
- w(), M && M();
350
+ }), L = (d) => (c("onSuccess"), v = !0, M().catch(I), p && p({ isPurgatory: x(b) }), this.sipConnector.onceRace(["call:ended", "call:failed"], () => {
351
+ B(), T && T();
639
352
  }), d), $ = (d) => {
640
- throw c("onFail"), p && p(), w(), d;
353
+ throw c("onFail"), R && R(), B(), d;
641
354
  }, H = () => {
642
- c("onFinish"), T && T();
355
+ c("onFinish"), E && E();
643
356
  };
644
- if (c("onBeforeProgressCall"), C) {
645
- const d = B();
646
- C(d);
357
+ if (c("onBeforeProgressCall"), g) {
358
+ const d = N();
359
+ g(d);
647
360
  }
648
- return O().then(L).catch((d) => $(d)).finally(H);
361
+ return A().then(L).catch((d) => $(d)).finally(H);
649
362
  };
650
363
  updatePresentation = async ({
651
364
  mediaStream: n,
@@ -658,7 +371,7 @@ class An {
658
371
  preferredMimeTypesVideoCodecs: u,
659
372
  excludeMimeTypesVideoCodecs: l
660
373
  }) => {
661
- const h = I(
374
+ const h = P(
662
375
  {
663
376
  degradationPreference: i
664
377
  },
@@ -691,7 +404,7 @@ class An {
691
404
  excludeMimeTypesVideoCodecs: l,
692
405
  callLimit: h
693
406
  }) => {
694
- const f = I(
407
+ const f = P(
695
408
  {
696
409
  degradationPreference: i
697
410
  },
@@ -743,7 +456,7 @@ class An {
743
456
  degradationPreference: a,
744
457
  sendEncodings: u
745
458
  } = {}) => {
746
- const l = I(
459
+ const l = P(
747
460
  {
748
461
  degradationPreference: a
749
462
  },
@@ -770,7 +483,7 @@ class An {
770
483
  };
771
484
  resolveHandleReadyRemoteStreamsDebounced = ({
772
485
  onReadyRemoteStreams: n
773
- }) => le(() => {
486
+ }) => ue(() => {
774
487
  const t = this.sipConnector.getRemoteStreams();
775
488
  c("remoteStreams", t), t && n(t);
776
489
  }, 200);
@@ -778,7 +491,7 @@ class An {
778
491
  resolveHandleReadyRemoteStreams = ({
779
492
  onReadyRemoteStreams: n
780
493
  }) => ({ track: t }) => {
781
- ln(t) && n();
494
+ xe(t) && n();
782
495
  };
783
496
  getRemoteStreams = () => (c("getRemoteStreams"), this.sipConnector.getRemoteStreams());
784
497
  onUseLicense = (n) => (c("onUseLicense"), this.sipConnector.on("api:useLicense", n));
@@ -786,16 +499,304 @@ class An {
786
499
  onMoveToSpectators = (n) => (c("onMoveToSpectators"), this.sipConnector.on("api:participant:move-request-to-spectators", n));
787
500
  onMoveToParticipants = (n) => (c("onMoveToParticipants"), this.sipConnector.on("api:participant:move-request-to-participants", n));
788
501
  }
502
+ const V = (e) => {
503
+ const { url: n, cause: t } = e;
504
+ let o = n;
505
+ return (t === y.BAD_MEDIA_DESCRIPTION || t === y.NOT_FOUND) && (o = `${e.message.to.uri.user}@${e.message.to.uri.host}`), o;
506
+ };
507
+ var se = /* @__PURE__ */ ((e) => (e.CONNECT_SERVER_FAILED = "CONNECT_SERVER_FAILED", e.WRONG_USER_OR_PASSWORD = "WRONG_USER_OR_PASSWORD", e.BAD_MEDIA_ERROR = "BAD_MEDIA_ERROR", e.NOT_FOUND_ERROR = "NOT_FOUND_ERROR", e.WS_CONNECTION_FAILED = "WS_CONNECTION_FAILED", e.CONNECT_SERVER_FAILED_BY_LINK = "CONNECT_SERVER_FAILED_BY_LINK", e))(se || {});
508
+ const ke = new Error("Unknown error"), Ue = (e = ke) => {
509
+ const { cause: n, socket: t } = e;
510
+ let o = "CONNECT_SERVER_FAILED";
511
+ switch (n) {
512
+ case "Forbidden": {
513
+ o = "WRONG_USER_OR_PASSWORD";
514
+ break;
515
+ }
516
+ case y.BAD_MEDIA_DESCRIPTION: {
517
+ o = "BAD_MEDIA_ERROR";
518
+ break;
519
+ }
520
+ case y.NOT_FOUND: {
521
+ o = "NOT_FOUND_ERROR";
522
+ break;
523
+ }
524
+ default:
525
+ t !== void 0 && t._ws?.readyState === 3 ? o = "WS_CONNECTION_FAILED" : V(e) !== void 0 && V(e) !== "" && (o = "CONNECT_SERVER_FAILED_BY_LINK");
526
+ }
527
+ return o;
528
+ }, Ve = (e) => {
529
+ let n = "";
530
+ try {
531
+ n = JSON.stringify(e);
532
+ } catch (t) {
533
+ c("failed to stringify message", t);
534
+ }
535
+ return n;
536
+ }, Le = new Error("Unknown error"), $e = (e = Le) => {
537
+ const { code: n, cause: t, message: o } = e, s = V(e), r = { code: "", cause: "", message: "" };
538
+ return typeof o == "object" && o !== null ? r.message = Ve(o) : o && (r.message = String(o)), s !== void 0 && s !== "" && (r.link = s), n !== void 0 && n !== "" && (r.code = n), t !== void 0 && t !== "" && (r.cause = t), r;
539
+ }, He = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
540
+ __proto__: null,
541
+ EErrorTypes: se,
542
+ getLinkError: V,
543
+ getTypeFromError: Ue,
544
+ getValuesFromError: $e
545
+ }, Symbol.toStringTag, { value: "Module" })), Je = ({
546
+ sessionId: e,
547
+ remoteAddress: n,
548
+ isMutedAudio: t,
549
+ isMutedVideo: o,
550
+ isRegistered: s,
551
+ isPresentationCall: r
552
+ }) => {
553
+ const i = [], a = t ? "0" : "1", u = o ? "0" : "1";
554
+ return i.push(`X-Vinteo-Mic-State: ${a}`, `X-Vinteo-MainCam-State: ${u}`), (s === !1 || s === void 0) && i.push("X-Vinteo-Purgatory-Call: yes"), e !== void 0 && e !== "" && i.push(`X-Vinteo-Session: ${e}`), r === !0 && i.push("X-Vinteo-Presentation-Call: yes"), n !== void 0 && n !== "" && i.push(`X-Vinteo-Remote: ${n}`), i;
555
+ }, Xe = "[@*!|]", We = "_", je = (e) => {
556
+ let n = e;
557
+ return n = n.replaceAll(new RegExp(Xe, "g"), We), n;
558
+ }, Ge = ({
559
+ appName: e,
560
+ appVersion: n,
561
+ browserName: t,
562
+ browserVersion: o
563
+ }) => {
564
+ const r = `${je(e)} ${n}`;
565
+ return `ChromeNew - ${t === void 0 ? r : `${t} ${o}, ${r}`}`;
566
+ }, Ke = ({
567
+ isUnifiedSdpSemantic: e,
568
+ appVersion: n,
569
+ browserName: t,
570
+ browserVersion: o,
571
+ appName: s
572
+ }) => e ? Ge({ appVersion: n, browserName: t, browserVersion: o, appName: s }) : "Chrome", Ye = (e) => (n) => [...n].map((o) => async () => e(o)), qe = async ({
573
+ accumulatedKeys: e,
574
+ sendKey: n,
575
+ canRunTask: t
576
+ }) => {
577
+ const s = Ye(n)(e);
578
+ return de(s, t);
579
+ }, ze = (e) => (t) => (c("onStartMainCam"), e.on("api:admin-start-main-cam", t)), Qe = (e) => (t) => (c("onStartMic"), e.on("api:admin-start-mic", t)), Ze = (e) => (t) => (c("onStopMainCam"), e.on("api:admin-stop-main-cam", t)), en = (e) => (t) => (c("onStopMic"), e.on("api:admin-stop-mic", t)), nn = ({ sipConnector: e }) => {
580
+ const n = (g, p) => ({ isSyncForced: C }) => {
581
+ if (C === !0) {
582
+ g();
583
+ return;
584
+ }
585
+ p();
586
+ }, t = ze(e), o = Ze(e), s = Qe(e), r = en(e);
587
+ let i, a, u, l;
588
+ const h = ({
589
+ onStartMainCamForced: g,
590
+ onStartMainCamNotForced: p,
591
+ onStopMainCamForced: C,
592
+ onStopMainCamNotForced: S,
593
+ onStartMicForced: R,
594
+ onStartMicNotForced: E,
595
+ onStopMicForced: T,
596
+ onStopMicNotForced: M
597
+ }) => {
598
+ const _ = n(
599
+ g,
600
+ p
601
+ );
602
+ i = t(_);
603
+ const O = n(
604
+ C,
605
+ S
606
+ );
607
+ a = o(O);
608
+ const A = n(R, E);
609
+ u = s(A);
610
+ const N = n(T, M);
611
+ l = r(N);
612
+ }, f = () => {
613
+ i?.(), a?.(), u?.(), l?.();
614
+ };
615
+ return {
616
+ start: (g) => {
617
+ h(g);
618
+ },
619
+ stop: () => {
620
+ f();
621
+ }
622
+ };
623
+ }, Mn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
624
+ __proto__: null,
625
+ PURGATORY_CONFERENCE_NUMBER: oe,
626
+ createSyncMediaState: nn,
627
+ error: He,
628
+ getExtraHeaders: Je,
629
+ getUserAgent: Ke,
630
+ hasPurgatory: x,
631
+ sendDtmfAccumulated: qe
632
+ }, Symbol.toStringTag, { value: "Module" })), tn = (e) => [...e.keys()].map((n) => e.get(n)), on = (e, n) => tn(e).find((t) => t?.type === n), sn = async (e) => e.getStats().then((n) => on(n, "codec")?.mimeType), rn = (e) => e.find((n) => n.track?.kind === "video"), cn = async (e, n, t) => {
633
+ const { isChanged: o, parameters: s } = await z(e, {
634
+ encodings: [
635
+ {
636
+ scaleResolutionDownBy: n.scaleResolutionDownBy,
637
+ maxBitrate: n.maxBitrate
638
+ }
639
+ ]
640
+ });
641
+ return o && t && t(s), { isChanged: o, parameters: s };
642
+ }, re = le(), an = async () => re().catch((e) => {
643
+ c("videoSendingBalancer: error", e);
644
+ }), un = async (e) => (re.add(e), an()), W = async ({
645
+ sender: e,
646
+ scaleResolutionDownBy: n,
647
+ maxBitrate: t,
648
+ onSetParameters: o
649
+ }) => un(async () => cn(e, { scaleResolutionDownBy: n, maxBitrate: t }, o)), dn = async ({ sender: e, codec: n }, t) => {
650
+ const s = Be(n);
651
+ return W({
652
+ sender: e,
653
+ maxBitrate: s,
654
+ onSetParameters: t,
655
+ scaleResolutionDownBy: 200
656
+ });
657
+ }, U = async ({
658
+ sender: e,
659
+ videoTrack: n,
660
+ codec: t
661
+ }, o) => {
662
+ const i = n.getSettings().width, a = ne(i ?? 0, t);
663
+ return W({
664
+ sender: e,
665
+ maxBitrate: a,
666
+ onSetParameters: o,
667
+ scaleResolutionDownBy: 1
668
+ });
669
+ }, ln = async ({
670
+ sender: e,
671
+ videoTrack: n,
672
+ resolution: t,
673
+ codec: o
674
+ }, s) => {
675
+ const [r, i] = t.split("x"), { maxBitrate: a, scaleResolutionDownBy: u } = te({
676
+ videoTrack: n,
677
+ codec: o,
678
+ targetSize: {
679
+ width: Number(r),
680
+ height: Number(i)
681
+ }
682
+ });
683
+ return W({
684
+ sender: e,
685
+ maxBitrate: a,
686
+ onSetParameters: s,
687
+ scaleResolutionDownBy: u
688
+ });
689
+ }, fn = async ({
690
+ mainCam: e,
691
+ resolutionMainCam: n,
692
+ sender: t,
693
+ videoTrack: o,
694
+ codec: s
695
+ }, r) => {
696
+ switch (e) {
697
+ case w.PAUSE_MAIN_CAM:
698
+ return dn({ sender: t, codec: s }, r);
699
+ case w.RESUME_MAIN_CAM:
700
+ return U({ sender: t, videoTrack: o, codec: s }, r);
701
+ case w.MAX_MAIN_CAM_RESOLUTION:
702
+ return n !== void 0 ? ln(
703
+ { sender: t, videoTrack: o, codec: s, resolution: n },
704
+ r
705
+ ) : U({ sender: t, videoTrack: o, codec: s }, r);
706
+ case w.ADMIN_STOP_MAIN_CAM:
707
+ case w.ADMIN_START_MAIN_CAM:
708
+ case void 0:
709
+ return U({ sender: t, videoTrack: o, codec: s }, r);
710
+ default:
711
+ return U({ sender: t, videoTrack: o, codec: s }, r);
712
+ }
713
+ }, j = {
714
+ isChanged: !1,
715
+ parameters: {
716
+ encodings: [{}],
717
+ transactionId: "0",
718
+ codecs: [],
719
+ headerExtensions: [],
720
+ rtcp: {}
721
+ }
722
+ }, G = async ({
723
+ mainCam: e,
724
+ resolutionMainCam: n,
725
+ connection: t,
726
+ onSetParameters: o,
727
+ ignoreForCodec: s
728
+ }) => {
729
+ const r = t.getSenders(), i = rn(r);
730
+ if (!i?.track)
731
+ return j;
732
+ const a = await sn(i);
733
+ return Z(a, s) ? j : fn(
734
+ {
735
+ mainCam: e,
736
+ resolutionMainCam: n,
737
+ sender: i,
738
+ codec: a,
739
+ videoTrack: i.track
740
+ },
741
+ o
742
+ );
743
+ }, vn = (e, {
744
+ ignoreForCodec: n,
745
+ onSetParameters: t
746
+ } = {}) => {
747
+ const o = async () => {
748
+ const { connection: u } = e;
749
+ if (!u)
750
+ throw new Error("connection is not exist");
751
+ return G({
752
+ connection: u,
753
+ onSetParameters: t,
754
+ ignoreForCodec: n
755
+ });
756
+ };
757
+ let s = o;
758
+ const r = (u) => {
759
+ s = async () => {
760
+ const { mainCam: l, resolutionMainCam: h } = u, { connection: f } = e;
761
+ if (!f)
762
+ throw new Error("connection is not exist");
763
+ return G({
764
+ mainCam: l,
765
+ resolutionMainCam: h,
766
+ connection: f,
767
+ onSetParameters: t,
768
+ ignoreForCodec: n
769
+ });
770
+ }, s().catch(I);
771
+ };
772
+ return {
773
+ subscribe: () => {
774
+ e.on("api:main-cam-control", r);
775
+ },
776
+ unsubscribe: () => {
777
+ e.off("api:main-cam-control", r);
778
+ },
779
+ balanceByTrack: o,
780
+ resetMainCamControl() {
781
+ s = o;
782
+ },
783
+ async reBalance() {
784
+ return s();
785
+ }
786
+ };
787
+ };
789
788
  export {
790
- bn as SipConnector,
791
- An as SipConnectorFacade,
792
- Dn as debug,
793
- vn as disableDebug,
794
- On as enableDebug,
795
- Xe as getCodecFromSender,
789
+ y as ECallCause,
790
+ On as EUseLicense,
791
+ An as SipConnector,
792
+ Tn as SipConnectorFacade,
793
+ Pn as debug,
794
+ Nn as disableDebug,
795
+ Bn as enableDebug,
796
+ sn as getCodecFromSender,
796
797
  En as hasCanceledCallError,
797
- Bn as hasCanceledStartPresentationError,
798
- Mn as resolveVideoSendingBalancer,
798
+ wn as hasCanceledStartPresentationError,
799
+ vn as resolveVideoSendingBalancer,
799
800
  z as setParametersToSender,
800
- Tn as tools
801
+ Mn as tools
801
802
  };