sip-connector 6.20.1 → 6.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,1450 +1,376 @@
1
- var xt = Object.defineProperty;
2
- var Yt = (n, e, t) => e in n ? xt(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t;
3
- var a = (n, e, t) => (Yt(n, typeof e != "symbol" ? e + "" : e, t), t);
4
- import { CancelableRequest as O, isCanceledError as et } from "@krivega/cancelable-promise";
5
- import Ye from "events-constructor";
6
- import ne from "debug";
7
- import { default as mr } from "debug";
8
- import { debounce as Gt } from "ts-debounce";
9
- import Xt from "sequent-promises";
10
- import zt from "stack-promises";
11
- const Kt = "Connection Error", tt = "Request Timeout", Jt = "SIP Failure Code", Qt = "Internal Error", jt = "Busy", nt = "Rejected", Zt = "Redirected", en = "Unavailable", se = "Not Found", tn = "Address Incomplete", nn = "Incompatible SDP", sn = "Missing SDP", rn = "Authentication Error", st = "Terminated", on = "WebRTC Error", rt = "Canceled", an = "No Answer", cn = "Expires", un = "No ACK", En = "Dialog Error", _n = "User Denied Media Access", re = "Bad Media Description", ln = "RTP Timeout", ur = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12
- __proto__: null,
13
- ADDRESS_INCOMPLETE: tn,
14
- AUTHENTICATION_ERROR: rn,
15
- BAD_MEDIA_DESCRIPTION: re,
16
- BUSY: jt,
17
- BYE: st,
18
- CANCELED: rt,
19
- CONNECTION_ERROR: Kt,
20
- DIALOG_ERROR: En,
21
- EXPIRES: cn,
22
- INCOMPATIBLE_SDP: nn,
23
- INTERNAL_ERROR: Qt,
24
- MISSING_SDP: sn,
25
- NOT_FOUND: se,
26
- NO_ACK: un,
27
- NO_ANSWER: an,
28
- REDIRECTED: Zt,
29
- REJECTED: nt,
30
- REQUEST_TIMEOUT: tt,
31
- RTP_TIMEOUT: ln,
32
- SIP_FAILURE_CODE: Jt,
33
- UNAVAILABLE: en,
34
- USER_DENIED_MEDIA_ACCESS: _n,
35
- WEBRTC_ERROR: on
36
- }, Symbol.toStringTag, { value: "Module" })), oe = "incomingCall", ie = "declinedIncomingCall", ae = "failedIncomingCall", ce = "terminatedIncomingCall", z = "connecting", V = "connected", D = "disconnected", W = "newRTCSession", L = "registered", ue = "unregistered", B = "registrationFailed", ot = "newMessage", Ee = "sipEvent", _e = "availableSecondRemoteStream", le = "notAvailableSecondRemoteStream", de = "mustStopPresentation", q = "shareState", Se = "enterRoom", he = "useLicense", Te = "peerconnection:confirmed", Ce = "peerconnection:ontrack", $ = "channels", ge = "channels:notify", Ne = "ended:fromserver", me = "main-cam-control", Re = "admin-stop-main-cam", Ae = "admin-start-main-cam", fe = "admin-stop-mic", Ie = "admin-start-mic", x = "admin-force-sync-media-state", Me = "participant:added-to-list-moderators", Oe = "participant:removed-from-list-moderators", Pe = "participant:move-request-to-conference", De = "participant:move-request-to-stream", pe = "participant:canceling-word-request", ve = "webcast:started", ye = "webcast:stopped", be = "account:changed", we = "account:deleted", Ue = "conference:participant-token-issued", F = "ended", it = "sending", at = "reinvite", ct = "replaces", ut = "refer", Et = "progress", _t = "accepted", Y = "confirmed", G = "peerconnection", y = "failed", lt = "muted", dt = "unmuted", Le = "newDTMF", Be = "newInfo", St = "hold", ht = "unhold", Tt = "update", Ct = "sdp", gt = "icecandidate", Nt = "getusermediafailed", mt = "peerconnection:createofferfailed", Rt = "peerconnection:createanswerfailed", At = "peerconnection:setlocaldescriptionfailed", ft = "peerconnection:setremotedescriptionfailed", It = "presentation:start", Mt = "presentation:started", Ot = "presentation:end", Fe = "presentation:ended", X = "presentation:failed", Er = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
37
- __proto__: null,
38
- ACCEPTED: _t,
39
- ACCOUNT_CHANGED: be,
40
- ACCOUNT_DELETED: we,
41
- ADMIN_FORCE_SYNC_MEDIA_STATE: x,
42
- ADMIN_START_MAIN_CAM: Ae,
43
- ADMIN_START_MIC: Ie,
44
- ADMIN_STOP_MAIN_CAM: Re,
45
- ADMIN_STOP_MIC: fe,
46
- AVAILABLE_SECOND_REMOTE_STREAM_EVENT: _e,
47
- CHANNELS: $,
48
- CHANNELS_NOTIFY: ge,
49
- CONFERENCE_PARTICIPANT_TOKEN_ISSUED: Ue,
50
- CONFIRMED: Y,
51
- CONNECTED: V,
52
- CONNECTING: z,
53
- DECLINED_INCOMING_CALL: ie,
54
- DISCONNECTED: D,
55
- ENDED: F,
56
- ENDED_FROM_SERVER: Ne,
57
- ENTER_ROOM: Se,
58
- FAILED: y,
59
- FAILED_INCOMING_CALL: ae,
60
- GET_USER_MEDIA_FAILED: Nt,
61
- HOLD: St,
62
- ICE_CANDIDATE: gt,
63
- INCOMING_CALL: oe,
64
- MAIN_CAM_CONTROL: me,
65
- MUST_STOP_PRESENTATION_EVENT: de,
66
- MUTED: lt,
67
- NEW_DTMF: Le,
68
- NEW_INFO: Be,
69
- NEW_MESSAGE: ot,
70
- NEW_RTC_SESSION: W,
71
- NOT_AVAILABLE_SECOND_REMOTE_STREAM_EVENT: le,
72
- PARTICIPANT_ADDED_TO_LIST_MODERATORS: Me,
73
- PARTICIPANT_CANCELLING_WORD_REQUEST: pe,
74
- PARTICIPANT_MOVE_REQUEST_TO_CONFERENCE: Pe,
75
- PARTICIPANT_MOVE_REQUEST_TO_STREAM: De,
76
- PARTICIPANT_REMOVED_FROM_LIST_MODERATORS: Oe,
77
- PEER_CONNECTION: G,
78
- PEER_CONNECTION_CONFIRMED: Te,
79
- PEER_CONNECTION_CREATE_ANSWER_FAILED: Rt,
80
- PEER_CONNECTION_CREATE_OFFER_FAILED: mt,
81
- PEER_CONNECTION_ONTRACK: Ce,
82
- PEER_CONNECTION_SET_LOCAL_DESCRIPTION_FAILED: At,
83
- PEER_CONNECTION_SET_REMOTE_DESCRIPTION_FAILED: ft,
84
- PRESENTATION_END: Ot,
85
- PRESENTATION_ENDED: Fe,
86
- PRESENTATION_FAILED: X,
87
- PRESENTATION_START: It,
88
- PRESENTATION_STARTED: Mt,
89
- PROGRESS: Et,
90
- REFER: ut,
91
- REGISTERED: L,
92
- REGISTRATION_FAILED: B,
93
- REINVITE: at,
94
- REPLACES: ct,
95
- SDP: Ct,
96
- SENDING: it,
97
- SHARE_STATE: q,
98
- SIP_EVENT: Ee,
99
- TERMINATED_INCOMING_CALL: ce,
100
- UNHOLD: ht,
101
- UNMUTED: dt,
102
- UNREGISTERED: ue,
103
- UPDATE: Tt,
104
- USE_LICENSE: he,
105
- WEBCAST_STARTED: ve,
106
- WEBCAST_STOPPED: ye
107
- }, Symbol.toStringTag, { value: "Module" })), Pt = [
108
- oe,
109
- ie,
110
- ce,
111
- ae,
112
- pe,
113
- De,
114
- Pe,
115
- ge,
116
- Ue,
117
- be,
118
- we,
119
- ve,
120
- ye,
121
- Me,
122
- Oe
123
- ], ke = [
124
- z,
125
- V,
126
- D,
127
- W,
128
- L,
129
- ue,
130
- B,
131
- ot,
132
- Ee
133
- ], Dt = [
134
- _e,
135
- le,
136
- de,
137
- q,
138
- Se,
139
- he,
140
- Te,
141
- Ce,
142
- $,
143
- Ne,
144
- me,
145
- Ae,
146
- Re,
147
- fe,
148
- Ie,
149
- x
150
- ], He = [
151
- F,
152
- z,
153
- it,
154
- at,
155
- ct,
156
- ut,
157
- Et,
158
- _t,
159
- Y,
160
- G,
161
- y,
162
- lt,
163
- dt,
164
- Le,
165
- Be,
166
- St,
167
- ht,
168
- Tt,
169
- Ct,
170
- gt,
171
- Nt,
172
- mt,
173
- Rt,
174
- At,
175
- ft,
176
- It,
177
- Mt,
178
- Ot,
179
- Fe,
180
- X
181
- ], pt = [...ke, ...Pt], vt = [
182
- ...He,
183
- ...Dt
184
- ], _r = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
185
- __proto__: null,
186
- SESSION_EVENT_NAMES: vt,
187
- SESSION_JSSIP_EVENT_NAMES: He,
188
- SESSION_SYNTHETICS_EVENT_NAMES: Dt,
189
- UA_EVENT_NAMES: pt,
190
- UA_JSSIP_EVENT_NAMES: ke,
191
- UA_SYNTHETICS_EVENT_NAMES: Pt
192
- }, Symbol.toStringTag, { value: "Module" })), dn = (n) => {
193
- const e = [];
194
- return n && e.push(`X-Vinteo-Remote: ${n}`), e;
195
- }, Sn = "content-type", hn = "x-webrtc-enter-room", K = "application/vinteo.webrtc.sharedesktop", Tn = "application/vinteo.webrtc.roomname", Cn = "application/vinteo.webrtc.channels", gn = "application/vinteo.webrtc.mediastate", Nn = "application/vinteo.webrtc.refusal", Ge = "application/vinteo.webrtc.maincam", mn = "application/vinteo.webrtc.mic", Rn = "application/vinteo.webrtc.uselic", An = "X-WEBRTC-USE-LICENSE", Xe = "X-WEBRTC-INPUT-CHANNELS", ze = "X-WEBRTC-OUTPUT-CHANNELS", fn = "X-WEBRTC-MAINCAM", In = "X-WEBRTC-MIC", Ke = "X-WEBRTC-SYNC", Mn = "X-WEBRTC-MAINCAM-RESOLUTION", On = "X-WEBRTC-MEDIA-STATE", Pn = "X-Vinteo-Media-Type", Dn = "X-Vinteo-MainCam-State", pn = "X-Vinteo-Mic-State", vn = "application/vinteo.webrtc.notify", yn = "X-VINTEO-NOTIFY", H = "x-webrtc-share-state", bn = `${H}: LETMESTARTPRESENTATION`, wn = `${H}: STOPPRESENTATION`, yt = "YOUCANRECEIVECONTENT", bt = "CONTENTEND", Un = "YOUMUSTSTOPSENDCONTENT", Ln = `${H}: ${yt}`, Bn = `${H}: ${bt}`, Fn = "X-WEBRTC-REQUEST-ENABLE-MEDIA-DEVICE", kn = `${Fn}: LETMESTARTMAINCAM`, Ve = "sip-connector", E = ne(Ve), lr = () => {
196
- ne.enable(`${Ve}`);
197
- }, dr = () => {
198
- ne.enable(`-${Ve}`);
199
- };
200
- var I = /* @__PURE__ */ ((n) => (n.PAUSE_MAIN_CAM = "PAUSEMAINCAM", n.RESUME_MAIN_CAM = "RESUMEMAINCAM", n.MAX_MAIN_CAM_RESOLUTION = "MAXMAINCAMRESOLUTION", n.ADMIN_STOP_MAIN_CAM = "ADMINSTOPMAINCAM", n.ADMIN_START_MAIN_CAM = "ADMINSTARTMAINCAM", n))(I || {}), Z = /* @__PURE__ */ ((n) => (n.ADMIN_STOP_MIC = "ADMINSTOPMIC", n.ADMIN_START_MIC = "ADMINSTARTMIC", n))(Z || {}), ee = /* @__PURE__ */ ((n) => (n.ADMIN_SYNC_FORCED = "1", n.ADMIN_SYNC_NOT_FORCED = "0", n))(ee || {}), Hn = /* @__PURE__ */ ((n) => (n.AUDIO = "AUDIO", n.VIDEO = "VIDEO", n.AUDIOPLUSPRESENTATION = "AUDIOPLUSPRESENTATION", n))(Hn || {});
201
- function Vn(n) {
202
- return (e) => `sip:${e}@${n}`;
203
- }
204
- const Wn = (n, e) => () => Math.floor(Math.random() * (e - n)) + n, Je = (n) => n.trim().replaceAll(" ", "_"), qn = Wn(1e5, 99999999), J = (n, {
205
- videoMode: e,
206
- audioMode: t
207
- } = {}) => {
208
- if (!n || e === "recvonly" && t === "recvonly")
209
- return;
210
- const s = t === "recvonly" ? [] : n.getAudioTracks(), r = e === "recvonly" ? [] : n.getVideoTracks(), o = [...s, ...r], i = new MediaStream(o);
211
- return i.getTracks = () => [...i.getAudioTracks(), ...i.getVideoTracks()], i;
212
- }, $n = (n) => n.some((t) => {
213
- const { kind: s } = t;
214
- return s === "video";
215
- }), xn = "Error decline with 603", Yn = (n) => n.message === xn, Gn = (n, e) => n.find((t) => t.track && e.getTracks().includes(t.track)), wt = 1, Ut = (n) => (e, t) => t !== void 0 && e !== t || t === void 0 && e !== n, Xn = Ut(
216
- wt
217
- ), zn = (n, e) => {
218
- const t = n === void 0 ? void 0 : Math.max(n, wt);
219
- if (t !== void 0 && Xn(
220
- t,
221
- e
222
- ))
223
- return t;
224
- }, Kn = Ut(), Jn = (n, e) => {
225
- if (Kn(n, e))
226
- return n;
227
- }, Lt = async (n, e, t) => {
228
- const s = n.getParameters();
229
- (s.encodings === void 0 || s.encodings.length === 0) && (s.encodings = [{}]);
230
- const [r] = s.encodings, o = r.scaleResolutionDownBy, i = zn(
231
- e.scaleResolutionDownBy,
232
- o
233
- );
234
- let c = !1;
235
- i !== void 0 && (s.encodings[0].scaleResolutionDownBy = i, c = !0);
236
- const u = r.maxBitrate, _ = Jn(e.maxBitrate, u);
237
- return _ !== void 0 && (s.encodings[0].maxBitrate = _, c = !0), c ? (t && t(s), n.setParameters(s).then(() => ({ parameters: s, isChanged: c }))) : { parameters: s, isChanged: c };
238
- }, Qn = async (n, e, t) => {
239
- const s = Gn(n, e);
240
- if (s)
241
- return Lt(s, { maxBitrate: t });
242
- }, jn = 486, Zn = 487, te = "local", Qe = "remote", Sr = (n = new Error()) => {
243
- const { originator: e, cause: t } = n;
244
- return et(n) ? !0 : typeof t == "string" ? t === tt || t === nt || e === te && (t === rt || t === st) : !1;
245
- }, P = "SipConnector", es = "channels", ts = "WebcastStarted", ns = "WebcastStopped", ss = "accountChanged", rs = "accountDeleted", os = "addedToListModerators", is = "removedFromListModerators", as = "WebcastParticipationAccepted", cs = "WebcastParticipationRejected", us = "ParticipantMovedToWebcast", Es = "ConferenceParticipantTokenIssued";
246
- class hr {
247
- constructor({ JsSIP: e }) {
248
- a(this, "_isRegisterConfig", !1);
249
- a(this, "_connectionConfiguration", {});
250
- a(this, "_remoteStreams", {});
251
- a(this, "JsSIP");
252
- a(this, "_sessionEvents");
253
- a(this, "_uaEvents");
254
- a(this, "_cancelableConnect");
255
- a(this, "_cancelableCreateUa");
256
- a(this, "_cancelableDisconnect");
257
- a(this, "_cancelableSet");
258
- a(this, "_cancelableCall");
259
- a(this, "_cancelableAnswer");
260
- a(this, "_cancelableSendDTMF");
261
- a(this, "getSipServerUrl", (e) => e);
262
- a(this, "promisePendingStartPresentation");
263
- a(this, "promisePendingStopPresentation");
264
- a(this, "ua");
265
- a(this, "session");
266
- a(this, "incomingSession");
267
- a(this, "_streamPresentationCurrent");
268
- a(this, "socket");
269
- a(this, "connect", async (e) => (this._cancelRequests(), this._cancelableConnect.request(e)));
270
- a(this, "createUa", async (e) => this._cancelableCreateUa.request(e));
271
- a(this, "set", async (e) => this._cancelableSet.request(e));
272
- a(this, "call", async (e) => this._cancelableCall.request(e));
273
- a(this, "disconnect", async () => (this._cancelRequests(), this._disconnectWithoutCancelRequests()));
274
- a(this, "answerToIncomingCall", async (e) => this._cancelableAnswer.request(e));
275
- a(this, "sendDTMF", async (e) => this._cancelableSendDTMF.request(e));
276
- a(this, "hangUp", async () => (this._cancelRequests(), this._hangUpWithoutCancelRequests()));
277
- a(this, "tryRegister", async () => {
278
- if (!this.isRegisterConfig)
279
- throw new Error("Config is not registered");
280
- this._uaEvents.trigger(z, void 0);
281
- try {
282
- await this.unregister();
283
- } catch (e) {
284
- E("tryRegister", e);
285
- }
286
- return this.register();
287
- });
288
- a(this, "declineToIncomingCall", async ({ statusCode: e = Zn } = {}) => new Promise((t, s) => {
289
- if (!this.isAvailableIncomingCall) {
290
- s(new Error("no incomingSession"));
291
- return;
292
- }
293
- const r = this.incomingSession, o = this.remoteCallerData;
294
- this._cancelableCall.cancelRequest(), this._cancelableAnswer.cancelRequest(), this.removeIncomingSession(), this._uaEvents.trigger(ie, o), t(r.terminate({ status_code: e }));
295
- }));
296
- a(this, "busyIncomingCall", async () => this.declineToIncomingCall({ statusCode: jn }));
297
- a(this, "removeIncomingSession", () => {
298
- delete this.incomingSession;
299
- });
300
- a(this, "handleNewRTCSession", ({ originator: e, session: t }) => {
301
- if (e === Qe) {
302
- this.incomingSession = t;
303
- const s = this.remoteCallerData;
304
- t.on(y, (r) => {
305
- this.removeIncomingSession(), r.originator === te ? this._uaEvents.trigger(ce, s) : this._uaEvents.trigger(ae, s);
306
- }), this._uaEvents.trigger(oe, s);
307
- }
308
- });
309
- a(this, "_connect", async (e) => this.createUa(e).then(async () => this._start()));
310
- a(this, "_createUa", async ({
311
- displayName: e = "",
312
- user: t,
313
- password: s,
314
- register: r = !1,
315
- sipServerUrl: o,
316
- sipWebSocketServerURL: i,
317
- remoteAddress: c,
318
- extraHeaders: u = [],
319
- sdpSemantics: _ = "plan-b",
320
- sessionTimers: l = !1,
321
- registerExpires: d = 60 * 5,
322
- // 5 minutes in sec
323
- connectionRecoveryMinInterval: S = 2,
324
- connectionRecoveryMaxInterval: h = 6,
325
- userAgent: T
326
- }) => {
327
- if (!o)
328
- throw new Error("sipServerUrl is required");
329
- if (!i)
330
- throw new Error("sipWebSocketServerURL is required");
331
- if (r && !t)
332
- throw new Error("user is required for authorized connection");
333
- if (r && !s)
334
- throw new Error("password is required for authorized connection");
335
- this._connectionConfiguration = {
336
- sipServerUrl: o,
337
- displayName: e,
338
- register: r,
339
- user: t,
340
- password: s
341
- }, this._init({ sipServerUrl: o, sipWebSocketServerURL: i });
342
- const g = r && t ? t.trim() : `${qn()}`, N = {
343
- password: s,
344
- register: r,
345
- display_name: Je(e),
346
- user_agent: T,
347
- sdp_semantics: _,
348
- sockets: [this.socket],
349
- uri: this.getSipServerUrl(g),
350
- session_timers: l,
351
- register_expires: d,
352
- connection_recovery_min_interval: S,
353
- connection_recovery_max_interval: h
354
- };
355
- this.ua && await this._disconnectWithoutCancelRequests(), this._isRegisterConfig = !!N.register, this.ua = new this.JsSIP.UA(N), this._uaEvents.eachTriggers((m, R) => {
356
- const v = ke.find((f) => f === R);
357
- v && this.ua && this.ua.on(v, m);
358
- });
359
- const M = [...dn(c), ...u];
360
- return this.ua.registrator().setExtraHeaders(M), this.ua;
361
- });
362
- a(this, "_start", async () => new Promise((e, t) => {
363
- const { ua: s } = this;
364
- if (!s) {
365
- t(new Error("this.ua is not initialized"));
366
- return;
367
- }
368
- const r = () => {
369
- c(), e(s);
370
- }, o = (u) => {
371
- c(), t(u);
372
- }, i = () => {
373
- this.isRegisterConfig ? (this.on(L, r), this.on(B, o)) : this.on(V, r), this.on(D, o);
374
- }, c = () => {
375
- this.off(L, r), this.off(B, o), this.off(V, r), this.off(D, o);
376
- };
377
- i(), this.on(W, this.handleNewRTCSession), s.start();
378
- }));
379
- a(this, "_set", async ({ displayName: e, password: t }) => new Promise((s, r) => {
380
- const { ua: o } = this;
381
- if (!o) {
382
- r(new Error("this.ua is not initialized"));
383
- return;
384
- }
385
- let i = !1, c = !1;
386
- e !== void 0 && e !== this._connectionConfiguration.displayName && (i = o.set("display_name", Je(e)), this._connectionConfiguration.displayName = e), t !== void 0 && t !== this._connectionConfiguration.password && (c = o.set("password", t), this._connectionConfiguration.password = t);
387
- const u = i || c;
388
- c && this.isRegisterConfig ? this.register().then(() => {
389
- s(u);
390
- }).catch(r) : u ? s(u) : r(u);
391
- }));
392
- a(this, "_disconnectWithoutCancelRequests", async () => this._cancelableDisconnect.request());
393
- a(this, "_disconnect", async () => {
394
- this.off(W, this.handleNewRTCSession);
395
- const e = new Promise((t) => {
396
- this.once(D, () => {
397
- delete this.ua, t();
398
- });
399
- });
400
- return this.ua ? (await this._hangUpWithoutCancelRequests(), this.ua ? this.ua.stop() : this._uaEvents.trigger(D, void 0)) : this._uaEvents.trigger(D, void 0), e;
401
- });
402
- a(this, "_call", async ({
403
- number: e,
404
- mediaStream: t,
405
- extraHeaders: s = [],
406
- ontrack: r,
407
- iceServers: o,
408
- videoMode: i,
409
- audioMode: c,
410
- degradationPreference: u,
411
- offerToReceiveAudio: _ = !0,
412
- offerToReceiveVideo: l = !0
413
- }) => new Promise((d, S) => {
414
- const { ua: h } = this;
415
- if (!h) {
416
- S(new Error("this.ua is not initialized"));
417
- return;
418
- }
419
- this._connectionConfiguration.number = e, this._connectionConfiguration.answer = !1, this._handleCall({ ontrack: r }).then(d).catch(S), this.session = h.call(this.getSipServerUrl(e), {
420
- extraHeaders: s,
421
- mediaStream: J(t, {
422
- videoMode: i,
423
- audioMode: c
424
- }),
425
- eventHandlers: this._sessionEvents.triggers,
426
- videoMode: i,
427
- audioMode: c,
428
- degradationPreference: u,
429
- pcConfig: {
430
- iceServers: o
431
- },
432
- rtcOfferConstraints: {
433
- offerToReceiveAudio: _,
434
- offerToReceiveVideo: l
435
- }
436
- });
437
- }));
438
- a(this, "_answer", async ({
439
- mediaStream: e,
440
- ontrack: t,
441
- extraHeaders: s = [],
442
- iceServers: r,
443
- videoMode: o,
444
- audioMode: i,
445
- degradationPreference: c
446
- }) => new Promise((u, _) => {
447
- if (!this.isAvailableIncomingCall) {
448
- _(new Error("no incomingSession"));
449
- return;
450
- }
451
- this.session = this.incomingSession, this.removeIncomingSession();
452
- const { session: l } = this;
453
- if (!l) {
454
- _(new Error("No session established"));
455
- return;
456
- }
457
- this._sessionEvents.eachTriggers((S, h) => {
458
- const T = He.find((g) => g === h);
459
- T && l.on(T, S);
460
- }), this._connectionConfiguration.answer = !0, this._connectionConfiguration.number = l.remote_identity.uri.user, this._handleCall({ ontrack: t }).then(u).catch(_);
461
- const d = J(e, {
462
- videoMode: o,
463
- audioMode: i
464
- });
465
- l.answer({
466
- extraHeaders: s,
467
- videoMode: o,
468
- audioMode: i,
469
- degradationPreference: c,
470
- mediaStream: d,
471
- pcConfig: {
472
- iceServers: r
473
- }
474
- });
475
- }));
476
- a(this, "_handleCall", async ({ ontrack: e }) => new Promise((t, s) => {
477
- const r = () => {
478
- this.onSession(G, l), this.onSession(Y, d);
479
- }, o = () => {
480
- this.offSession(G, l), this.offSession(Y, d);
481
- }, i = () => {
482
- this.onSession(y, u), this.onSession(F, u);
483
- }, c = () => {
484
- this.offSession(y, u), this.offSession(F, u);
485
- }, u = (S) => {
486
- o(), c(), s(S);
487
- };
488
- let _;
489
- const l = ({ peerconnection: S }) => {
490
- _ = S, _.ontrack = (h) => {
491
- this._sessionEvents.trigger(Ce, _), e && e(h);
492
- };
493
- }, d = () => {
494
- _ && this._sessionEvents.trigger(Te, _), o(), c(), t(_);
495
- };
496
- r(), i();
497
- }));
498
- a(this, "_restoreSession", () => {
499
- this._resetPresentation(), delete this._connectionConfiguration.number, delete this.session, this._remoteStreams = {};
500
- });
501
- a(this, "_sendDTMF", async (e) => new Promise((t, s) => {
502
- const { session: r } = this;
503
- if (!r) {
504
- s(new Error("No session established"));
505
- return;
506
- }
507
- this.onceSession(Le, ({ originator: o }) => {
508
- o === te && t();
509
- }), r.sendDTMF(e, {
510
- duration: 120,
511
- interToneGap: 600
512
- });
513
- }));
514
- a(this, "_hangUpWithoutCancelRequests", async () => {
515
- if (this.ua && this.session) {
516
- const { session: e } = this;
517
- this._streamPresentationCurrent && await this.stopPresentation(), this._restoreSession(), e.isEnded() || e.terminate();
518
- }
519
- });
520
- a(this, "_handleShareState", (e) => {
521
- switch (e) {
522
- case yt: {
523
- this._sessionEvents.trigger(_e, void 0);
524
- break;
525
- }
526
- case bt: {
527
- this._sessionEvents.trigger(le, void 0);
528
- break;
529
- }
530
- case Un: {
531
- this._sessionEvents.trigger(de, void 0);
532
- break;
533
- }
534
- }
535
- });
536
- a(this, "_maybeTriggerChannels", (e) => {
537
- const t = e.getHeader(Xe), s = e.getHeader(ze);
538
- if (t && s) {
539
- const r = {
540
- inputChannels: t,
541
- outputChannels: s
542
- };
543
- this._sessionEvents.trigger($, r);
544
- }
545
- });
546
- a(this, "_handleNotify", (e) => {
547
- switch (e.cmd) {
548
- case es: {
549
- const t = e;
550
- this._triggerChannelsNotify(t);
551
- break;
552
- }
553
- case ts: {
554
- const t = e;
555
- this._triggerWebcastStartedNotify(t);
556
- break;
557
- }
558
- case ns: {
559
- const t = e;
560
- this._triggerWebcastStoppedNotify(t);
561
- break;
562
- }
563
- case os: {
564
- const t = e;
565
- this._triggerAddedToListModeratorsNotify(t);
566
- break;
567
- }
568
- case is: {
569
- const t = e;
570
- this._triggerRemovedFromListModeratorsNotify(t);
571
- break;
572
- }
573
- case as: {
574
- const t = e;
575
- this._triggerParticipantMoveRequestToConference(t);
576
- break;
577
- }
578
- case cs: {
579
- const t = e;
580
- this._triggerParticipantCancelingWordRequest(t);
581
- break;
582
- }
583
- case us: {
584
- const t = e;
585
- this._triggerParticipantMoveRequestToStream(t);
586
- break;
587
- }
588
- case ss: {
589
- this._triggerAccountChangedNotify();
590
- break;
591
- }
592
- case rs: {
593
- this._triggerAccountDeletedNotify();
594
- break;
595
- }
596
- case Es: {
597
- const t = e;
598
- this._triggerConferenceParticipantTokenIssued(t);
599
- break;
600
- }
601
- default:
602
- E("unknown cmd", e.cmd);
603
- }
604
- });
605
- a(this, "_triggerRemovedFromListModeratorsNotify", ({
606
- conference: e
607
- }) => {
608
- const t = {
609
- conference: e
610
- };
611
- this._uaEvents.trigger(
612
- Oe,
613
- t
614
- );
615
- });
616
- a(this, "_triggerAddedToListModeratorsNotify", ({ conference: e }) => {
617
- const t = {
618
- conference: e
619
- };
620
- this._uaEvents.trigger(Me, t);
621
- });
622
- a(this, "_triggerWebcastStartedNotify", ({ body: { conference: e, type: t } }) => {
623
- const s = {
624
- conference: e,
625
- type: t
626
- };
627
- this._uaEvents.trigger(ve, s);
628
- });
629
- a(this, "_triggerWebcastStoppedNotify", ({ body: { conference: e, type: t } }) => {
630
- const s = {
631
- conference: e,
632
- type: t
633
- };
634
- this._uaEvents.trigger(ye, s);
635
- });
636
- a(this, "_triggerAccountChangedNotify", () => {
637
- this._uaEvents.trigger(be, void 0);
638
- });
639
- a(this, "_triggerAccountDeletedNotify", () => {
640
- this._uaEvents.trigger(we, void 0);
641
- });
642
- a(this, "_triggerConferenceParticipantTokenIssued", ({
643
- body: { conference: e, participant: t, jwt: s }
644
- }) => {
645
- const r = {
646
- conference: e,
647
- participant: t,
648
- jwt: s
649
- };
650
- this._uaEvents.trigger(
651
- Ue,
652
- r
653
- );
654
- });
655
- a(this, "_triggerChannelsNotify", (e) => {
656
- const t = e.input, s = e.output, r = {
657
- inputChannels: t,
658
- outputChannels: s
659
- };
660
- this._uaEvents.trigger(ge, r);
661
- });
662
- a(this, "_triggerParticipantMoveRequestToConference", ({
663
- body: { conference: e }
664
- }) => {
665
- const t = {
666
- conference: e
667
- };
668
- this._uaEvents.trigger(Pe, t);
669
- });
670
- a(this, "_triggerParticipantCancelingWordRequest", ({
671
- body: { conference: e }
672
- }) => {
673
- const t = {
674
- conference: e
675
- };
676
- this._uaEvents.trigger(pe, t);
677
- });
678
- a(this, "_triggerParticipantMoveRequestToStream", ({
679
- body: { conference: e }
680
- }) => {
681
- const t = {
682
- conference: e
683
- };
684
- this._uaEvents.trigger(De, t);
685
- });
686
- a(this, "_triggerEnterRoom", (e) => {
687
- const t = e.getHeader(hn);
688
- this._sessionEvents.trigger(Se, t);
689
- });
690
- a(this, "_triggerShareState", (e) => {
691
- const t = e.getHeader(H);
692
- this._sessionEvents.trigger(q, t);
693
- });
694
- a(this, "_triggerMainCamControl", (e) => {
695
- const t = e.getHeader(fn), s = e.getHeader(Ke), r = s === ee.ADMIN_SYNC_FORCED;
696
- if (t === I.ADMIN_START_MAIN_CAM)
697
- this._sessionEvents.trigger(Ae, { isSyncForced: r });
698
- else if (t === I.ADMIN_STOP_MAIN_CAM)
699
- this._sessionEvents.trigger(Re, { isSyncForced: r });
700
- else if ((t === I.RESUME_MAIN_CAM || t === I.PAUSE_MAIN_CAM) && s)
701
- this._sessionEvents.trigger(x, { isSyncForced: r });
702
- else {
703
- const o = e.getHeader(Mn);
704
- this._sessionEvents.trigger(me, {
705
- mainCam: t,
706
- resolutionMainCam: o
707
- });
708
- }
709
- });
710
- a(this, "_triggerMicControl", (e) => {
711
- const t = e.getHeader(In), r = e.getHeader(Ke) === ee.ADMIN_SYNC_FORCED;
712
- t === Z.ADMIN_START_MIC ? this._sessionEvents.trigger(Ie, { isSyncForced: r }) : t === Z.ADMIN_STOP_MIC && this._sessionEvents.trigger(fe, { isSyncForced: r });
713
- });
714
- a(this, "_triggerUseLicense", (e) => {
715
- const t = e.getHeader(An);
716
- this._sessionEvents.trigger(he, t);
717
- });
718
- a(this, "_handleNewInfo", (e) => {
719
- const { originator: t } = e;
720
- if (t !== "remote")
721
- return;
722
- const { request: s } = e, r = s.getHeader(Sn);
723
- if (r)
724
- switch (r) {
725
- case Tn: {
726
- this._triggerEnterRoom(s), this._maybeTriggerChannels(s);
727
- break;
728
- }
729
- case vn: {
730
- this._maybeHandleNotify(s);
731
- break;
732
- }
733
- case K: {
734
- this._triggerShareState(s);
735
- break;
736
- }
737
- case Ge: {
738
- this._triggerMainCamControl(s);
739
- break;
740
- }
741
- case mn: {
742
- this._triggerMicControl(s);
743
- break;
744
- }
745
- case Rn: {
746
- this._triggerUseLicense(s);
747
- break;
748
- }
749
- }
750
- });
751
- a(this, "_handleSipEvent", ({ request: e }) => {
752
- this._maybeHandleNotify(e);
753
- });
754
- a(this, "_maybeHandleNotify", (e) => {
755
- const t = e.getHeader(yn);
756
- if (t) {
757
- const s = JSON.parse(t);
758
- this._handleNotify(s);
759
- }
760
- });
761
- a(this, "_handleEnded", (e) => {
762
- const { originator: t } = e;
763
- t === Qe && this._sessionEvents.trigger(Ne, e), this._restoreSession();
764
- });
765
- this.JsSIP = e, this._sessionEvents = new Ye(vt), this._uaEvents = new Ye(pt), this._cancelableConnect = new O(
766
- this._connect,
767
- {
768
- moduleName: P,
769
- afterCancelRequest: () => {
770
- this._cancelableCreateUa.cancelRequest(), this._cancelableDisconnect.cancelRequest();
771
- }
772
- }
773
- ), this._cancelableCreateUa = new O(this._createUa, { moduleName: P }), this._cancelableDisconnect = new O(
774
- this._disconnect,
775
- { moduleName: P }
776
- ), this._cancelableSet = new O(this._set, {
777
- moduleName: P
778
- }), this._cancelableCall = new O(
779
- this._call,
780
- { moduleName: P }
781
- ), this._cancelableAnswer = new O(this._answer, { moduleName: P }), this._cancelableSendDTMF = new O(this._sendDTMF, { moduleName: P }), this.onSession(q, this._handleShareState), this.onSession(Be, this._handleNewInfo), this.on(Ee, this._handleSipEvent), this.onSession(y, this._handleEnded), this.onSession(F, this._handleEnded);
782
- }
783
- async register() {
784
- return new Promise((e, t) => {
785
- this.isRegisterConfig && this.ua ? (this.ua.on(L, e), this.ua.on(B, t), this.ua.register()) : t(new Error("Config is not registered"));
786
- });
787
- }
788
- async unregister() {
789
- return new Promise((e, t) => {
790
- this.isRegistered && this.ua ? (this.ua.on(ue, e), this.ua.unregister()) : t(new Error("ua is not registered"));
791
- });
792
- }
793
- async sendOptions(e, t, s) {
794
- if (!this.ua)
795
- throw new Error("is not connected");
796
- return new Promise((r, o) => {
797
- try {
798
- this.ua.sendOptions(e, t, {
799
- extraHeaders: s,
800
- eventHandlers: {
801
- succeeded: () => {
802
- r();
803
- },
804
- failed: o
805
- }
806
- });
807
- } catch (i) {
808
- o(i);
809
- }
810
- });
811
- }
812
- async ping(e, t) {
813
- var r;
814
- if (!((r = this.ua) != null && r.configuration.uri))
815
- throw new Error("is not connected");
816
- const s = this.ua.configuration.uri;
817
- return this.sendOptions(s, e, t);
818
- }
819
- async replaceMediaStream(e, t) {
820
- if (!this.session)
821
- throw new Error("No session established");
822
- return this.session.replaceMediaStream(e, t);
823
- }
824
- async askPermissionToEnableCam(e = {}) {
825
- if (!this.session)
826
- throw new Error("No session established");
827
- const t = [kn];
828
- return this.session.sendInfo(Ge, void 0, {
829
- noTerminateWhenError: !0,
830
- ...e,
831
- extraHeaders: t
832
- }).catch((s) => {
833
- if (Yn(s))
834
- throw s;
835
- });
836
- }
837
- get isPendingPresentation() {
838
- return !!this.promisePendingStartPresentation || !!this.promisePendingStopPresentation;
839
- }
840
- async _sendPresentation(e, t, {
841
- maxBitrate: s,
842
- degradationPreference: r,
843
- isNeedReinvite: o = !0,
844
- isP2P: i = !1
845
- }) {
846
- const c = J(t);
847
- this._streamPresentationCurrent = c;
848
- const u = i ? [Ln] : [bn], _ = e.sendInfo(K, void 0, {
849
- extraHeaders: u
850
- }).then(async () => e.startPresentation(
851
- c,
852
- o,
853
- r
854
- )).then(async () => {
855
- const { connection: l } = this;
856
- if (!l || s === void 0)
857
- return;
858
- const d = l.getSenders();
859
- return Qn(d, t, s);
860
- }).then(() => t).catch((l) => {
861
- throw this._sessionEvents.trigger(X, l), l;
862
- });
863
- return this.promisePendingStartPresentation = _, _.finally(() => {
864
- this.promisePendingStartPresentation = void 0;
865
- });
866
- }
867
- async startPresentation(e, {
868
- isNeedReinvite: t = !0,
869
- isP2P: s = !1,
870
- maxBitrate: r,
871
- degradationPreference: o
872
- } = {}) {
873
- const i = this.establishedSession;
874
- if (!i)
875
- throw new Error("No session established");
876
- if (this._streamPresentationCurrent)
877
- throw new Error("Presentation is already started");
878
- return this._sendPresentation(i, e, {
879
- isNeedReinvite: t,
880
- isP2P: s,
881
- maxBitrate: r,
882
- degradationPreference: o
883
- });
884
- }
885
- async stopPresentation({
886
- isP2P: e = !1
887
- } = {}) {
888
- const t = this._streamPresentationCurrent;
889
- let s = this.promisePendingStartPresentation ?? Promise.resolve();
890
- const r = e ? [Bn] : [wn], o = this.establishedSession;
891
- return o && t && (s = s.then(async () => o.sendInfo(K, void 0, {
892
- extraHeaders: r
893
- })).then(async () => o.stopPresentation(t)).catch((i) => {
894
- throw this._sessionEvents.trigger(X, i), i;
895
- })), !o && t && this._sessionEvents.trigger(Fe, t), this.promisePendingStopPresentation = s, s.finally(() => {
896
- this._resetPresentation();
897
- });
898
- }
899
- async updatePresentation(e, {
900
- isP2P: t = !1,
901
- maxBitrate: s,
902
- degradationPreference: r
903
- } = {}) {
904
- const o = this.establishedSession;
905
- if (!o)
906
- throw new Error("No session established");
907
- if (!this._streamPresentationCurrent)
908
- throw new Error("Presentation has not started yet");
909
- return this.promisePendingStartPresentation && await this.promisePendingStartPresentation, this._sendPresentation(o, e, {
910
- isP2P: t,
911
- maxBitrate: s,
912
- degradationPreference: r,
913
- isNeedReinvite: !1
914
- });
915
- }
916
- _resetPresentation() {
917
- delete this._streamPresentationCurrent, this.promisePendingStartPresentation = void 0, this.promisePendingStopPresentation = void 0;
918
- }
919
- on(e, t) {
920
- return this._uaEvents.on(e, t);
921
- }
922
- once(e, t) {
923
- return this._uaEvents.once(e, t);
924
- }
925
- onceRace(e, t) {
926
- return this._uaEvents.onceRace(e, t);
927
- }
928
- async wait(e) {
929
- return this._uaEvents.wait(e);
930
- }
931
- off(e, t) {
932
- this._uaEvents.off(e, t);
933
- }
934
- onSession(e, t) {
935
- return this._sessionEvents.on(e, t);
936
- }
937
- onceSession(e, t) {
938
- return this._sessionEvents.once(e, t);
939
- }
940
- onceRaceSession(e, t) {
941
- return this._sessionEvents.onceRace(e, t);
942
- }
943
- async waitSession(e) {
944
- return this._sessionEvents.wait(e);
945
- }
946
- offSession(e, t) {
947
- this._sessionEvents.off(e, t);
948
- }
949
- isConfigured() {
950
- return !!this.ua;
951
- }
952
- getConnectionConfiguration() {
953
- return { ...this._connectionConfiguration };
954
- }
955
- getRemoteStreams() {
956
- if (!this.connection)
957
- return;
958
- const t = this.connection.getReceivers().map(({ track: s }) => s);
959
- return $n(t) ? this._generateStreams(t) : this._generateAudioStreams(t);
960
- }
961
- get connection() {
962
- var t;
963
- return (t = this.session) == null ? void 0 : t.connection;
964
- }
965
- get remoteCallerData() {
966
- var e, t, s, r, o, i;
967
- return {
968
- displayName: (t = (e = this.incomingSession) == null ? void 0 : e.remote_identity) == null ? void 0 : t.display_name,
969
- host: (r = (s = this.incomingSession) == null ? void 0 : s.remote_identity) == null ? void 0 : r.uri.host,
970
- incomingNumber: (i = (o = this.incomingSession) == null ? void 0 : o.remote_identity) == null ? void 0 : i.uri.user,
971
- session: this.incomingSession
972
- };
973
- }
974
- get requested() {
975
- return this._cancelableConnect.requested || this._cancelableCreateUa.requested || this._cancelableCall.requested || this._cancelableAnswer.requested;
976
- }
977
- get establishedSession() {
978
- return this.session && this.session.isEstablished() ? this.session : void 0;
979
- }
980
- get isRegistered() {
981
- return !!this.ua && this.ua.isRegistered();
982
- }
983
- get isRegisterConfig() {
984
- return !!this.ua && this._isRegisterConfig;
985
- }
986
- get isCallActive() {
987
- return !!(this.ua && this.session);
988
- }
989
- get isAvailableIncomingCall() {
990
- return !!this.incomingSession;
991
- }
992
- _init({
993
- sipServerUrl: e,
994
- sipWebSocketServerURL: t
995
- }) {
996
- this.getSipServerUrl = Vn(e), this.socket = new this.JsSIP.WebSocketInterface(t);
997
- }
998
- _generateStream(e, t) {
999
- const { id: s } = e, r = this._remoteStreams[s] || new MediaStream();
1000
- return t && r.addTrack(t), r.addTrack(e), this._remoteStreams[s] = r, r;
1001
- }
1002
- _generateAudioStream(e) {
1003
- const { id: t } = e, s = this._remoteStreams[t] || new MediaStream();
1004
- return s.addTrack(e), this._remoteStreams[t] = s, s;
1005
- }
1006
- _generateStreams(e) {
1007
- const t = [];
1008
- return e.forEach((s, r) => {
1009
- if (s.kind === "audio")
1010
- return;
1011
- const o = s, i = e[r - 1];
1012
- let c;
1013
- i && i.kind === "audio" && (c = i);
1014
- const u = this._generateStream(o, c);
1015
- t.push(u);
1016
- }), t;
1017
- }
1018
- _generateAudioStreams(e) {
1019
- return e.map((s) => this._generateAudioStream(s));
1020
- }
1021
- _cancelRequests() {
1022
- this._cancelActionsRequests(), this._cancelCallRequests(), this._cancelConnectRequests();
1023
- }
1024
- _cancelConnectRequests() {
1025
- this._cancelableConnect.cancelRequest();
1026
- }
1027
- _cancelCallRequests() {
1028
- this._cancelableCall.cancelRequest(), this._cancelableAnswer.cancelRequest();
1029
- }
1030
- _cancelActionsRequests() {
1031
- this._cancelableAnswer.cancelRequest(), this._cancelableSendDTMF.cancelRequest();
1032
- }
1033
- async waitChannels() {
1034
- return this.waitSession($);
1035
- }
1036
- async waitSyncMediaState() {
1037
- return this.waitSession(x);
1038
- }
1039
- async sendChannels({ inputChannels: e, outputChannels: t }) {
1040
- if (!this.session)
1041
- throw new Error("No session established");
1042
- const s = `${Xe}: ${e}`, r = `${ze}: ${t}`, o = [
1043
- s,
1044
- r
1045
- ];
1046
- return this.session.sendInfo(Cn, void 0, { extraHeaders: o });
1047
- }
1048
- async sendMediaState({ cam: e, mic: t }, s = {}) {
1049
- if (!this.session)
1050
- throw new Error("No session established");
1051
- const r = `${On}: currentstate`, o = `${Dn}: ${Number(e)}`, i = `${pn}: ${Number(t)}`, c = [
1052
- r,
1053
- o,
1054
- i
1055
- ];
1056
- return this.session.sendInfo(gn, void 0, {
1057
- noTerminateWhenError: !0,
1058
- ...s,
1059
- extraHeaders: c
1060
- });
1061
- }
1062
- async _sendRefusalToTurnOn(e, t = {}) {
1063
- if (!this.session)
1064
- throw new Error("No session established");
1065
- const c = [`${Pn}: ${e === "mic" ? 0 : 1}`];
1066
- return this.session.sendInfo(Nn, void 0, {
1067
- noTerminateWhenError: !0,
1068
- ...t,
1069
- extraHeaders: c
1070
- });
1071
- }
1072
- async sendRefusalToTurnOnMic(e = {}) {
1073
- if (!this.session)
1074
- throw new Error("No session established");
1075
- return this._sendRefusalToTurnOn("mic", { noTerminateWhenError: !0, ...e });
1076
- }
1077
- async sendRefusalToTurnOnCam(e = {}) {
1078
- if (!this.session)
1079
- throw new Error("No session established");
1080
- return this._sendRefusalToTurnOn("cam", { noTerminateWhenError: !0, ...e });
1081
- }
1082
- }
1083
- const Bt = "purgatory", k = (n) => n === Bt, We = (n) => () => (E("getRemoteStreams"), n.getRemoteStreams()), _s = ({ kind: n, readyState: e }) => n === "video" && e === "live", Ft = (n) => ({ track: e }) => {
1084
- _s(e) && n();
1085
- }, qe = ({
1086
- getRemoteStreams: n,
1087
- setRemoteStreams: e
1088
- }) => Gt(() => {
1089
- const t = n();
1090
- E("remoteStreams", t), t && e(t);
1091
- }, 200), ls = (n) => async (t) => {
1
+ import { l as o, B as V, N as $, E as B, s as z, S as He } from "./SipConnector-abcad4a1.js";
2
+ import { f as tn, g as rn, i as sn, c as on, a as an, d as cn, b as un, e as ln, h as Sn } from "./SipConnector-abcad4a1.js";
3
+ import { debounce as q } from "ts-debounce";
4
+ import { isCanceledError as J } from "@krivega/cancelable-promise";
5
+ import Q from "sequent-promises";
6
+ import Z from "stack-promises";
7
+ import { default as dn } from "debug";
8
+ import "events-constructor";
9
+ const x = "purgatory", A = (e) => e === x, D = (e) => () => (o("getRemoteStreams"), e.getRemoteStreams()), ee = ({ kind: e, readyState: t }) => e === "video" && t === "live", G = (e) => ({ track: t }) => {
10
+ ee(t) && e();
11
+ }, w = ({
12
+ getRemoteStreams: e,
13
+ setRemoteStreams: t
14
+ }) => q(() => {
15
+ const n = e();
16
+ o("remoteStreams", n), n && t(n);
17
+ }, 200), ne = (e) => async (n) => {
1092
18
  const {
1093
- mediaStream: s,
1094
- extraHeaders: r,
1095
- iceServers: o,
1096
- degradationPreference: i,
1097
- setRemoteStreams: c,
1098
- onBeforeProgressCall: u,
1099
- onSuccessProgressCall: _,
1100
- onEnterPurgatory: l,
1101
- onEnterConference: d,
1102
- onFailProgressCall: S,
1103
- onFinishProgressCall: h,
1104
- onEndedCall: T
1105
- } = t, g = qe({
1106
- setRemoteStreams: c,
1107
- getRemoteStreams: We(n)
1108
- }), N = Ft(g);
1109
- E("answerIncomingCall", t);
1110
- const p = async () => n.answerToIncomingCall({
1111
- mediaStream: s,
1112
- extraHeaders: r,
1113
- iceServers: o,
1114
- degradationPreference: i,
1115
- ontrack: N
1116
- }), M = () => {
1117
- const { remoteCallerData: C } = n;
1118
- return C.incomingNumber;
1119
- };
1120
- let m = !1, R;
1121
- const f = (() => (E("subscribeEnterConference: onEnterConference", d), l ?? d ? n.onSession("enterRoom", (C) => {
1122
- E("enterRoom", { _room: C, isSuccessProgressCall: m }), R = C, k(R) ? l && l() : d && d({ isSuccessProgressCall: m });
1123
- }) : () => {
1124
- }))(), b = (C) => (E("onSuccess"), m = !0, g(), _ && _({ isPurgatory: k(R) }), n.onceRaceSession(["ended", "failed"], () => {
1125
- f(), T && T();
1126
- }), C), w = (C) => {
1127
- throw E("onFail"), S && S(), f(), C;
1128
- }, U = () => {
1129
- E("onFinish"), h && h();
1130
- };
1131
- if (E("onBeforeProgressCall"), u) {
1132
- const C = M();
1133
- u(C);
1134
- }
1135
- return p().then(b).catch(w).finally(U);
1136
- }, ds = (n) => async (t) => {
1137
- const {
1138
- conference: s,
1139
19
  mediaStream: r,
1140
- extraHeaders: o,
1141
- iceServers: i,
20
+ extraHeaders: s,
21
+ iceServers: a,
1142
22
  degradationPreference: c,
1143
23
  setRemoteStreams: u,
1144
- onBeforeProgressCall: _,
1145
- onSuccessProgressCall: l,
24
+ onBeforeProgressCall: i,
25
+ onSuccessProgressCall: m,
1146
26
  onEnterPurgatory: d,
1147
- onEnterConference: S,
1148
- onFailProgressCall: h,
1149
- onFinishProgressCall: T,
1150
- onEndedCall: g
1151
- } = t, N = qe({
27
+ onEnterConference: l,
28
+ onFailProgressCall: R,
29
+ onFinishProgressCall: f,
30
+ onEndedCall: C
31
+ } = n, E = w({
1152
32
  setRemoteStreams: u,
1153
- getRemoteStreams: We(n)
1154
- }), p = Ft(N);
1155
- E("callToServer", t);
1156
- const M = async () => (E("startCall"), n.call({
33
+ getRemoteStreams: D(e)
34
+ }), _ = G(E);
35
+ o("answerIncomingCall", n);
36
+ const b = async () => e.answerToIncomingCall({
1157
37
  mediaStream: r,
1158
- extraHeaders: o,
1159
- iceServers: i,
38
+ extraHeaders: s,
39
+ iceServers: a,
1160
40
  degradationPreference: c,
1161
- number: s,
1162
- ontrack: p
41
+ ontrack: _
42
+ }), h = () => {
43
+ const { remoteCallerData: S } = e;
44
+ return S.incomingNumber;
45
+ };
46
+ let T = !1, M;
47
+ const y = (() => (o("subscribeEnterConference: onEnterConference", l), d ?? l ? e.onSession("enterRoom", (S) => {
48
+ o("enterRoom", { _room: S, isSuccessProgressCall: T }), M = S, A(M) ? d && d() : l && l({ isSuccessProgressCall: T });
49
+ }) : () => {
50
+ }))(), O = (S) => (o("onSuccess"), T = !0, E(), m && m({ isPurgatory: A(M) }), e.onceRaceSession(["ended", "failed"], () => {
51
+ y(), C && C();
52
+ }), S), v = (S) => {
53
+ throw o("onFail"), R && R(), y(), S;
54
+ }, N = () => {
55
+ o("onFinish"), f && f();
56
+ };
57
+ if (o("onBeforeProgressCall"), i) {
58
+ const S = h();
59
+ i(S);
60
+ }
61
+ return b().then(O).catch(v).finally(N);
62
+ }, te = (e) => async (n) => {
63
+ const {
64
+ conference: r,
65
+ mediaStream: s,
66
+ extraHeaders: a,
67
+ iceServers: c,
68
+ degradationPreference: u,
69
+ setRemoteStreams: i,
70
+ onBeforeProgressCall: m,
71
+ onSuccessProgressCall: d,
72
+ onEnterPurgatory: l,
73
+ onEnterConference: R,
74
+ onFailProgressCall: f,
75
+ onFinishProgressCall: C,
76
+ onEndedCall: E
77
+ } = n, _ = w({
78
+ setRemoteStreams: i,
79
+ getRemoteStreams: D(e)
80
+ }), b = G(_);
81
+ o("callToServer", n);
82
+ const h = async () => (o("startCall"), e.call({
83
+ mediaStream: s,
84
+ extraHeaders: a,
85
+ iceServers: c,
86
+ degradationPreference: u,
87
+ number: r,
88
+ ontrack: b
1163
89
  }));
1164
- let m = !1, R;
1165
- const f = (() => (E("subscribeEnterConference: onEnterConference", S), d ?? S ? n.onSession("enterRoom", (C) => {
1166
- E("enterRoom", { _room: C, isSuccessProgressCall: m }), R = C, k(R) ? d && d() : S && S({ isSuccessProgressCall: m });
90
+ let T = !1, M;
91
+ const y = (() => (o("subscribeEnterConference: onEnterConference", R), l ?? R ? e.onSession("enterRoom", (S) => {
92
+ o("enterRoom", { _room: S, isSuccessProgressCall: T }), M = S, A(M) ? l && l() : R && R({ isSuccessProgressCall: T });
1167
93
  }) : () => {
1168
- }))(), b = (C) => (E("onSuccess"), m = !0, N(), l && l({ isPurgatory: k(R) }), n.onceRaceSession(["ended", "failed"], () => {
1169
- f(), g && g();
1170
- }), C), w = (C) => {
1171
- throw E("onFail"), h && h(), f(), C;
1172
- }, U = () => {
1173
- E("onFinish"), T && T();
94
+ }))(), O = (S) => (o("onSuccess"), T = !0, _(), d && d({ isPurgatory: A(M) }), e.onceRaceSession(["ended", "failed"], () => {
95
+ y(), E && E();
96
+ }), S), v = (S) => {
97
+ throw o("onFail"), f && f(), y(), S;
98
+ }, N = () => {
99
+ o("onFinish"), C && C();
1174
100
  };
1175
- return E("onBeforeProgressCall"), _ && _(s), M().then(b).catch(w).finally(U);
1176
- }, Q = (n) => {
1177
- if (!et(n))
1178
- throw n;
101
+ return o("onBeforeProgressCall"), m && m(r), h().then(O).catch(v).finally(N);
102
+ }, I = (e) => {
103
+ if (!J(e))
104
+ throw e;
1179
105
  return !1;
1180
- }, Ss = (n) => async (t) => {
106
+ }, re = (e) => async (n) => {
1181
107
  const {
1182
- userAgent: s,
1183
- sipWebSocketServerURL: r,
1184
- sipServerUrl: o,
1185
- remoteAddress: i,
1186
- displayName: c,
1187
- name: u,
1188
- password: _,
1189
- isRegisteredUser: l,
1190
- sdpSemantics: d,
1191
- isDisconnectOnFail: S
1192
- } = t;
1193
- return E("connectToServer", t), n.connect({
1194
- userAgent: s,
1195
- sdpSemantics: d,
1196
- sipWebSocketServerURL: r,
1197
- sipServerUrl: o,
1198
- remoteAddress: i,
1199
- displayName: c,
1200
- password: _,
1201
- user: u,
1202
- register: l
1203
- }).then(() => (E("connectToServer then"), !0)).catch(async (h) => (E("connectToServer catch: error", h), S === !0 ? n.disconnect().then(() => Q(h)).catch(() => Q(h)) : Q(h)));
1204
- }, hs = (n) => async () => (E("disconnectFromServer"), n.disconnect().then(() => (E("disconnectFromServer: then"), !1)).catch((e) => (E("disconnectFromServer: catch", e), !1))), $e = (n) => {
1205
- const { url: e, cause: t } = n;
1206
- let s = e;
1207
- return (t === re || t === se) && (s = `${n.message.to.uri.user}@${n.message.to.uri.host}`), s;
108
+ userAgent: r,
109
+ sipWebSocketServerURL: s,
110
+ sipServerUrl: a,
111
+ remoteAddress: c,
112
+ displayName: u,
113
+ name: i,
114
+ password: m,
115
+ isRegisteredUser: d,
116
+ sdpSemantics: l,
117
+ isDisconnectOnFail: R
118
+ } = n;
119
+ return o("connectToServer", n), e.connect({
120
+ userAgent: r,
121
+ sdpSemantics: l,
122
+ sipWebSocketServerURL: s,
123
+ sipServerUrl: a,
124
+ remoteAddress: c,
125
+ displayName: u,
126
+ password: m,
127
+ user: i,
128
+ register: d
129
+ }).then(() => (o("connectToServer then"), !0)).catch(async (f) => (o("connectToServer catch: error", f), R === !0 ? e.disconnect().then(() => I(f)).catch(() => I(f)) : I(f)));
130
+ }, se = (e) => async () => (o("disconnectFromServer"), e.disconnect().then(() => (o("disconnectFromServer: then"), !1)).catch((t) => (o("disconnectFromServer: catch", t), !1))), F = (e) => {
131
+ const { url: t, cause: n } = e;
132
+ let r = t;
133
+ return (n === V || n === $) && (r = `${e.message.to.uri.user}@${e.message.to.uri.host}`), r;
1208
134
  };
1209
- var kt = /* @__PURE__ */ ((n) => (n.CONNECT_SERVER_FAILED = "CONNECT_SERVER_FAILED", n.WRONG_USER_OR_PASSWORD = "WRONG_USER_OR_PASSWORD", n.BAD_MEDIA_ERROR = "BAD_MEDIA_ERROR", n.NOT_FOUND_ERROR = "NOT_FOUND_ERROR", n.WS_CONNECTION_FAILED = "WS_CONNECTION_FAILED", n.CONNECT_SERVER_FAILED_BY_LINK = "CONNECT_SERVER_FAILED_BY_LINK", n))(kt || {});
1210
- const Ts = (n = new Error()) => {
1211
- var r;
1212
- const { cause: e, socket: t } = n;
1213
- let s = "CONNECT_SERVER_FAILED";
1214
- switch (e) {
135
+ var X = /* @__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))(X || {});
136
+ const oe = (e = new Error()) => {
137
+ var s;
138
+ const { cause: t, socket: n } = e;
139
+ let r = "CONNECT_SERVER_FAILED";
140
+ switch (t) {
1215
141
  case "Forbidden": {
1216
- s = "WRONG_USER_OR_PASSWORD";
142
+ r = "WRONG_USER_OR_PASSWORD";
1217
143
  break;
1218
144
  }
1219
- case re: {
1220
- s = "BAD_MEDIA_ERROR";
145
+ case V: {
146
+ r = "BAD_MEDIA_ERROR";
1221
147
  break;
1222
148
  }
1223
- case se: {
1224
- s = "NOT_FOUND_ERROR";
149
+ case $: {
150
+ r = "NOT_FOUND_ERROR";
1225
151
  break;
1226
152
  }
1227
153
  default:
1228
- t && ((r = t == null ? void 0 : t._ws) == null ? void 0 : r.readyState) === 3 ? s = "WS_CONNECTION_FAILED" : $e(n) && (s = "CONNECT_SERVER_FAILED_BY_LINK");
154
+ n && ((s = n == null ? void 0 : n._ws) == null ? void 0 : s.readyState) === 3 ? r = "WS_CONNECTION_FAILED" : F(e) && (r = "CONNECT_SERVER_FAILED_BY_LINK");
1229
155
  }
1230
- return s;
1231
- }, Cs = (n = new Error()) => {
1232
- const { code: e, cause: t, message: s } = n, r = $e(n), o = {};
1233
- return s && (o.message = s), r && (o.link = r), e && (o.code = e), t && (o.cause = t), o;
1234
- }, gs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
156
+ return r;
157
+ }, ae = (e = new Error()) => {
158
+ const { code: t, cause: n, message: r } = e, s = F(e), a = {};
159
+ return r && (a.message = r), s && (a.link = s), t && (a.code = t), n && (a.cause = n), a;
160
+ }, ce = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1235
161
  __proto__: null,
1236
- EErrorTypes: kt,
1237
- getLinkError: $e,
1238
- getTypeFromError: Ts,
1239
- getValuesFromError: Cs
1240
- }, Symbol.toStringTag, { value: "Module" })), Ns = ({
1241
- sessionId: n,
1242
- remoteAddress: e,
1243
- isMutedAudio: t,
1244
- isMutedVideo: s,
1245
- isRegistered: r,
1246
- isPresentationCall: o
162
+ EErrorTypes: X,
163
+ getLinkError: F,
164
+ getTypeFromError: oe,
165
+ getValuesFromError: ae
166
+ }, Symbol.toStringTag, { value: "Module" })), ie = ({
167
+ sessionId: e,
168
+ remoteAddress: t,
169
+ isMutedAudio: n,
170
+ isMutedVideo: r,
171
+ isRegistered: s,
172
+ isPresentationCall: a
1247
173
  }) => {
1248
- const i = [], c = t ? "0" : "1", u = s ? "0" : "1";
1249
- return i.push(`X-Vinteo-Mic-State: ${c}`, `X-Vinteo-MainCam-State: ${u}`), r || i.push("X-Vinteo-Purgatory-Call: yes"), n && i.push(`X-Vinteo-Session: ${n}`), o && i.push("X-Vinteo-Presentation-Call: yes"), e && i.push(`X-Vinteo-Remote: ${e}`), i;
1250
- }, ms = ({
1251
- appName: n,
1252
- appVersion: e,
1253
- browserName: t,
1254
- browserVersion: s
174
+ const c = [], u = n ? "0" : "1", i = r ? "0" : "1";
175
+ return c.push(`X-Vinteo-Mic-State: ${u}`, `X-Vinteo-MainCam-State: ${i}`), s || c.push("X-Vinteo-Purgatory-Call: yes"), e && c.push(`X-Vinteo-Session: ${e}`), a && c.push("X-Vinteo-Presentation-Call: yes"), t && c.push(`X-Vinteo-Remote: ${t}`), c;
176
+ }, ue = ({
177
+ appName: e,
178
+ appVersion: t,
179
+ browserName: n,
180
+ browserVersion: r
1255
181
  }) => {
1256
- const r = `${n} ${e}`;
1257
- return `ChromeNew - ${t ? `${t} ${s}, ${r}` : r}`;
1258
- }, Rs = ({
1259
- isUnifiedSdpSemantic: n,
1260
- appVersion: e,
1261
- browserName: t,
1262
- browserVersion: s,
1263
- appName: r
1264
- }) => n ? ms({ appVersion: e, browserName: t, browserVersion: s, appName: r }) : "Chrome", As = (n) => async () => {
1265
- if (n.isCallActive)
1266
- return E("askPermissionToEnableCam"), n.askPermissionToEnableCam();
1267
- }, fs = (n) => (t) => (E("onMustStopPresentation"), n.onSession("mustStopPresentation", t)), Is = (n) => (t) => (E("onUseLicense"), n.onSession("useLicense", t)), Ms = (n) => async ({
1268
- isEnabledCam: t,
1269
- isEnabledMic: s
182
+ const s = `${e} ${t}`;
183
+ return `ChromeNew - ${n ? `${n} ${r}, ${s}` : s}`;
184
+ }, le = ({
185
+ isUnifiedSdpSemantic: e,
186
+ appVersion: t,
187
+ browserName: n,
188
+ browserVersion: r,
189
+ appName: s
190
+ }) => e ? ue({ appVersion: t, browserName: n, browserVersion: r, appName: s }) : "Chrome", Se = (e) => async () => {
191
+ if (e.isCallActive)
192
+ return o("askPermissionToEnableCam"), e.askPermissionToEnableCam();
193
+ }, me = (e) => (n) => (o("onMustStopPresentation"), e.onSession("mustStopPresentation", n)), de = (e) => (n) => (o("onUseLicense"), e.onSession("useLicense", n)), fe = (e) => async ({
194
+ isEnabledCam: n,
195
+ isEnabledMic: r
1270
196
  }) => {
1271
- if (n.isCallActive)
1272
- return E("sendMediaState"), n.sendMediaState({ cam: t, mic: s });
1273
- }, Os = (n) => async () => {
1274
- if (n.isCallActive)
1275
- return E("sendRefusalToTurnOnCam"), n.sendRefusalToTurnOnCam().catch((t) => {
1276
- E("sendRefusalToTurnOnCam: error", t);
1277
- });
1278
- }, Ps = (n) => async () => {
1279
- if (n.isCallActive)
1280
- return E("sendRefusalToTurnOnMic"), n.sendRefusalToTurnOnMic().catch((t) => {
1281
- E("sendRefusalToTurnOnMic: error", t);
1282
- });
1283
- }, Ds = 1e6, ps = ({
1284
- maxBitrate: n = Ds,
1285
- sipConnector: e
1286
- }) => async ({
1287
- mediaStream: s,
1288
- isP2P: r = !1
1289
- }) => (E("startPresentation"), e.startPresentation(s, {
1290
- isP2P: r,
1291
- maxBitrate: n
1292
- })), vs = ({ sipConnector: n }) => async ({ isP2P: t = !1 } = {}) => (E("stopShareSipConnector"), n.stopPresentation({
1293
- isP2P: t
1294
- }).catch(E)), ys = 1e6, bs = ({
1295
- sipConnector: n,
1296
- maxBitrate: e = ys
197
+ if (e.isCallActive)
198
+ return o("sendMediaState"), e.sendMediaState({ cam: n, mic: r });
199
+ }, Ce = (e) => async () => {
200
+ if (e.isCallActive)
201
+ return o("sendRefusalToTurnOnCam"), e.sendRefusalToTurnOnCam().catch((n) => {
202
+ o("sendRefusalToTurnOnCam: error", n);
203
+ });
204
+ }, Re = (e) => async () => {
205
+ if (e.isCallActive)
206
+ return o("sendRefusalToTurnOnMic"), e.sendRefusalToTurnOnMic().catch((n) => {
207
+ o("sendRefusalToTurnOnMic: error", n);
208
+ });
209
+ }, ge = 1e6, Ee = ({
210
+ maxBitrate: e = ge,
211
+ sipConnector: t
1297
212
  }) => async ({
1298
- mediaStream: s,
1299
- isP2P: r = !1
1300
- }) => (E("updatePresentation"), n.updatePresentation(s, {
1301
- isP2P: r,
213
+ mediaStream: r,
214
+ isP2P: s = !1
215
+ }) => (o("startPresentation"), t.startPresentation(r, {
216
+ isP2P: s,
1302
217
  maxBitrate: e
1303
- })), ws = (n) => (e) => [...e].map((s) => async () => n(s)), Us = async ({
1304
- accumulatedKeys: n,
1305
- sendKey: e,
1306
- canRunTask: t
218
+ })), Te = ({ sipConnector: e }) => async ({ isP2P: n = !1 } = {}) => (o("stopShareSipConnector"), e.stopPresentation({
219
+ isP2P: n
220
+ }).catch(o)), Me = 1e6, _e = ({
221
+ sipConnector: e,
222
+ maxBitrate: t = Me
223
+ }) => async ({
224
+ mediaStream: r,
225
+ isP2P: s = !1
226
+ }) => (o("updatePresentation"), e.updatePresentation(r, {
227
+ isP2P: s,
228
+ maxBitrate: t
229
+ })), ye = (e) => (t) => [...t].map((r) => async () => e(r)), be = async ({
230
+ accumulatedKeys: e,
231
+ sendKey: t,
232
+ canRunTask: n
1307
233
  }) => {
1308
- const r = ws(e)(n);
1309
- return Xt(r, t);
1310
- }, Ls = (n) => (t) => (E("onStartMainCam"), n.onSession("admin-start-main-cam", t)), Bs = (n) => (t) => (E("onStartMic"), n.onSession("admin-start-mic", t)), Fs = (n) => (t) => (E("onStopMainCam"), n.onSession("admin-stop-main-cam", t)), ks = (n) => (t) => (E("onStopMic"), n.onSession("admin-stop-mic", t)), Hs = ({ sipConnector: n }) => {
1311
- const e = (T, g) => ({ isSyncForced: N = !1 }) => {
1312
- if (N) {
1313
- T();
234
+ const s = ye(t)(e);
235
+ return Q(s, n);
236
+ }, he = (e) => (n) => (o("onStartMainCam"), e.onSession("admin-start-main-cam", n)), Oe = (e) => (n) => (o("onStartMic"), e.onSession("admin-start-mic", n)), ve = (e) => (n) => (o("onStopMainCam"), e.onSession("admin-stop-main-cam", n)), Ne = (e) => (n) => (o("onStopMic"), e.onSession("admin-stop-mic", n)), Ae = ({ sipConnector: e }) => {
237
+ const t = (C, E) => ({ isSyncForced: _ = !1 }) => {
238
+ if (_) {
239
+ C();
1314
240
  return;
1315
241
  }
1316
- g();
1317
- }, t = Ls(n), s = Fs(n), r = Bs(n), o = ks(n);
1318
- let i = () => {
1319
- }, c = () => {
242
+ E();
243
+ }, n = he(e), r = ve(e), s = Oe(e), a = Ne(e);
244
+ let c = () => {
1320
245
  }, u = () => {
1321
- }, _ = () => {
246
+ }, i = () => {
247
+ }, m = () => {
1322
248
  };
1323
- const l = ({
1324
- onStartMainCamForced: T,
1325
- onStartMainCamNotForced: g,
1326
- onStopMainCamForced: N,
1327
- onStopMainCamNotForced: p,
1328
- onStartMicForced: M,
1329
- onStartMicNotForced: m,
1330
- onStopMicForced: R,
1331
- onStopMicNotForced: v
249
+ const d = ({
250
+ onStartMainCamForced: C,
251
+ onStartMainCamNotForced: E,
252
+ onStopMainCamForced: _,
253
+ onStopMainCamNotForced: b,
254
+ onStartMicForced: h,
255
+ onStartMicNotForced: T,
256
+ onStopMicForced: M,
257
+ onStopMicNotForced: p
1332
258
  }) => {
1333
- const f = e(
1334
- T,
1335
- g
259
+ const y = t(
260
+ C,
261
+ E
1336
262
  );
1337
- i = t(f);
1338
- const b = e(
1339
- N,
1340
- p
263
+ c = n(y);
264
+ const O = t(
265
+ _,
266
+ b
1341
267
  );
1342
- c = s(b);
1343
- const w = e(M, m);
1344
- u = r(w);
1345
- const U = e(R, v);
1346
- _ = o(U);
1347
- }, d = () => {
1348
- i(), c(), u(), _();
268
+ u = r(O);
269
+ const v = t(h, T);
270
+ i = s(v);
271
+ const N = t(M, p);
272
+ m = a(N);
273
+ }, l = () => {
274
+ c(), u(), i(), m();
1349
275
  };
1350
276
  return {
1351
- start: (T) => {
1352
- l(T);
277
+ start: (C) => {
278
+ d(C);
1353
279
  },
1354
280
  stop: () => {
1355
- d();
281
+ l();
1356
282
  }
1357
283
  };
1358
- }, Tr = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
284
+ }, Qe = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1359
285
  __proto__: null,
1360
- PURGATORY_CONFERENCE_NUMBER: Bt,
1361
- createSyncMediaState: Hs,
1362
- error: gs,
1363
- getExtraHeaders: Ns,
1364
- getUserAgent: Rs,
1365
- hasPurgatory: k,
1366
- resolveAnswerIncomingCall: ls,
1367
- resolveAskPermissionToEnableCam: As,
1368
- resolveCallToServer: ds,
1369
- resolveConnectToServer: Ss,
1370
- resolveDisconnectFromServer: hs,
1371
- resolveGetRemoteStreams: We,
1372
- resolveOnMustStopPresentation: fs,
1373
- resolveOnUseLicense: Is,
1374
- resolveSendMediaState: Ms,
1375
- resolveSendRefusalToTurnOnCam: Os,
1376
- resolveSendRefusalToTurnOnMic: Ps,
1377
- resolveStartPresentation: ps,
1378
- resolveStopShareSipConnector: vs,
1379
- resolveUpdatePresentation: bs,
1380
- resolveUpdateRemoteStreams: qe,
1381
- sendDTMFAccumulated: Us
1382
- }, Symbol.toStringTag, { value: "Module" })), Vs = (n) => [...n.keys()].map((e) => n.get(e)), Ws = (n, e) => Vs(n).find((t) => t.type === e), qs = async (n) => n.getStats().then((e) => {
1383
- const t = Ws(e, "codec");
1384
- return t == null ? void 0 : t.mimeType;
1385
- }), $s = (n) => n.find((e) => {
1386
- var t;
1387
- return ((t = e == null ? void 0 : e.track) == null ? void 0 : t.kind) === "video";
1388
- }), Ht = (n, e) => n !== void 0 && e !== void 0 && n.toLowerCase().includes(e.toLowerCase()), xs = 1e6, A = (n) => n * xs, Vt = A(0.06), Ys = A(4), Gs = (n) => n <= 64 ? Vt : n <= 128 ? A(0.12) : n <= 256 ? A(0.25) : n <= 384 ? A(0.32) : n <= 426 ? A(0.38) : n <= 640 ? A(0.5) : n <= 848 ? A(0.7) : n <= 1280 ? A(1) : n <= 1920 ? A(2) : Ys, Xs = "av1", zs = (n) => Ht(n, Xs), Ks = 0.6, Wt = (n, e) => zs(e) ? n * Ks : n, Js = (n) => Wt(Vt, n), qt = (n, e) => {
1389
- const t = Gs(n);
1390
- return Wt(t, e);
1391
- }, $t = zt(), Qs = async () => $t().catch((n) => {
1392
- E("videoSendingBalancer: error", n);
1393
- }), js = async (n) => ($t.add(n), Qs()), xe = async ({
1394
- sender: n,
1395
- scaleResolutionDownBy: e,
1396
- maxBitrate: t,
1397
- onSetParameters: s
1398
- }) => js(async () => Lt(n, { scaleResolutionDownBy: e, maxBitrate: t }, s)), Zs = async ({ sender: n, codec: e }, t) => {
1399
- const r = Js(e);
1400
- return xe({
1401
- sender: n,
1402
- maxBitrate: r,
1403
- onSetParameters: t,
286
+ PURGATORY_CONFERENCE_NUMBER: x,
287
+ createSyncMediaState: Ae,
288
+ error: ce,
289
+ getExtraHeaders: ie,
290
+ getUserAgent: le,
291
+ hasPurgatory: A,
292
+ resolveAnswerIncomingCall: ne,
293
+ resolveAskPermissionToEnableCam: Se,
294
+ resolveCallToServer: te,
295
+ resolveConnectToServer: re,
296
+ resolveDisconnectFromServer: se,
297
+ resolveGetRemoteStreams: D,
298
+ resolveOnMustStopPresentation: me,
299
+ resolveOnUseLicense: de,
300
+ resolveSendMediaState: fe,
301
+ resolveSendRefusalToTurnOnCam: Ce,
302
+ resolveSendRefusalToTurnOnMic: Re,
303
+ resolveStartPresentation: Ee,
304
+ resolveStopShareSipConnector: Te,
305
+ resolveUpdatePresentation: _e,
306
+ resolveUpdateRemoteStreams: w,
307
+ sendDTMFAccumulated: be
308
+ }, Symbol.toStringTag, { value: "Module" })), pe = (e) => [...e.keys()].map((t) => e.get(t)), Be = (e, t) => pe(e).find((n) => n.type === t), Ie = async (e) => e.getStats().then((t) => {
309
+ const n = Be(t, "codec");
310
+ return n == null ? void 0 : n.mimeType;
311
+ }), Pe = (e) => e.find((t) => {
312
+ var n;
313
+ return ((n = t == null ? void 0 : t.track) == null ? void 0 : n.kind) === "video";
314
+ }), K = (e, t) => e !== void 0 && t !== void 0 && e.toLowerCase().includes(t.toLowerCase()), De = 1e6, g = (e) => e * De, W = g(0.06), we = g(4), Fe = (e) => e <= 64 ? W : e <= 128 ? g(0.12) : e <= 256 ? g(0.25) : e <= 384 ? g(0.32) : e <= 426 ? g(0.38) : e <= 640 ? g(0.5) : e <= 848 ? g(0.7) : e <= 1280 ? g(1) : e <= 1920 ? g(2) : we, ke = "av1", Ue = (e) => K(e, ke), Le = 0.6, H = (e, t) => Ue(t) ? e * Le : e, Ve = (e) => H(W, e), j = (e, t) => {
315
+ const n = Fe(e);
316
+ return H(n, t);
317
+ }, Y = Z(), $e = async () => Y().catch((e) => {
318
+ o("videoSendingBalancer: error", e);
319
+ }), xe = async (e) => (Y.add(e), $e()), k = async ({
320
+ sender: e,
321
+ scaleResolutionDownBy: t,
322
+ maxBitrate: n,
323
+ onSetParameters: r
324
+ }) => xe(async () => z(e, { scaleResolutionDownBy: t, maxBitrate: n }, r)), Ge = async ({ sender: e, codec: t }, n) => {
325
+ const s = Ve(t);
326
+ return k({
327
+ sender: e,
328
+ maxBitrate: s,
329
+ onSetParameters: n,
1404
330
  scaleResolutionDownBy: 200
1405
331
  });
1406
- }, j = async ({ sender: n, track: e, codec: t }, s) => {
1407
- const i = e.getSettings().width, c = qt(i, t);
1408
- return xe({
1409
- sender: n,
1410
- maxBitrate: c,
1411
- onSetParameters: s,
332
+ }, P = async ({ sender: e, track: t, codec: n }, r) => {
333
+ const c = t.getSettings().width, u = j(c, n);
334
+ return k({
335
+ sender: e,
336
+ maxBitrate: u,
337
+ onSetParameters: r,
1412
338
  scaleResolutionDownBy: 1
1413
339
  });
1414
- }, er = async ({
340
+ }, Xe = async ({
341
+ sender: e,
342
+ track: t,
343
+ resolution: n,
344
+ codec: r
345
+ }, s) => {
346
+ const a = t.getSettings(), c = a.width, u = a.height, [i, m] = n.split("x"), d = c / Number(i), l = u / Number(m), f = Math.max(d, l, 1), C = j(Number(i), r);
347
+ return k({
348
+ sender: e,
349
+ maxBitrate: C,
350
+ onSetParameters: s,
351
+ scaleResolutionDownBy: f
352
+ });
353
+ }, Ke = async ({
354
+ mainCam: e,
355
+ resolutionMainCam: t,
1415
356
  sender: n,
1416
- track: e,
1417
- resolution: t,
357
+ track: r,
1418
358
  codec: s
1419
- }, r) => {
1420
- const o = e.getSettings(), i = o.width, c = o.height, [u, _] = t.split("x"), l = i / Number(u), d = c / Number(_), h = Math.max(l, d, 1), T = qt(Number(u), s);
1421
- return xe({
1422
- sender: n,
1423
- maxBitrate: T,
1424
- onSetParameters: r,
1425
- scaleResolutionDownBy: h
1426
- });
1427
- }, tr = async ({
1428
- mainCam: n,
1429
- resolutionMainCam: e,
1430
- sender: t,
1431
- track: s,
1432
- codec: r
1433
- }, o) => {
1434
- switch (n) {
1435
- case I.PAUSE_MAIN_CAM:
1436
- return Zs({ sender: t, codec: r }, o);
1437
- case I.RESUME_MAIN_CAM:
1438
- return j({ sender: t, track: s, codec: r }, o);
1439
- case I.MAX_MAIN_CAM_RESOLUTION:
1440
- return e !== void 0 ? er(
1441
- { sender: t, track: s, codec: r, resolution: e },
1442
- o
1443
- ) : j({ sender: t, track: s, codec: r }, o);
359
+ }, a) => {
360
+ switch (e) {
361
+ case B.PAUSE_MAIN_CAM:
362
+ return Ge({ sender: n, codec: s }, a);
363
+ case B.RESUME_MAIN_CAM:
364
+ return P({ sender: n, track: r, codec: s }, a);
365
+ case B.MAX_MAIN_CAM_RESOLUTION:
366
+ return t !== void 0 ? Xe(
367
+ { sender: n, track: r, codec: s, resolution: t },
368
+ a
369
+ ) : P({ sender: n, track: r, codec: s }, a);
1444
370
  default:
1445
- return j({ sender: t, track: s, codec: r }, o);
371
+ return P({ sender: n, track: r, codec: s }, a);
1446
372
  }
1447
- }, je = {
373
+ }, U = {
1448
374
  isChanged: !1,
1449
375
  parameters: {
1450
376
  encodings: [{}],
@@ -1453,78 +379,78 @@ const Ts = (n = new Error()) => {
1453
379
  headerExtensions: [],
1454
380
  rtcp: {}
1455
381
  }
1456
- }, Ze = async ({
1457
- mainCam: n,
1458
- resolutionMainCam: e,
1459
- connection: t,
1460
- onSetParameters: s,
1461
- ignoreForCodec: r
382
+ }, L = async ({
383
+ mainCam: e,
384
+ resolutionMainCam: t,
385
+ connection: n,
386
+ onSetParameters: r,
387
+ ignoreForCodec: s
1462
388
  }) => {
1463
- const o = t.getSenders(), i = $s(o);
1464
- if (!(i != null && i.track))
1465
- return je;
1466
- const c = await qs(i);
1467
- return Ht(c, r) ? je : tr(
1468
- { mainCam: n, resolutionMainCam: e, sender: i, codec: c, track: i.track },
1469
- s
389
+ const a = n.getSenders(), c = Pe(a);
390
+ if (!(c != null && c.track))
391
+ return U;
392
+ const u = await Ie(c);
393
+ return K(u, s) ? U : Ke(
394
+ { mainCam: e, resolutionMainCam: t, sender: c, codec: u, track: c.track },
395
+ r
1470
396
  );
1471
- }, Cr = (n, {
1472
- ignoreForCodec: e,
1473
- onSetParameters: t
397
+ }, Ze = (e, {
398
+ ignoreForCodec: t,
399
+ onSetParameters: n
1474
400
  } = {}) => {
1475
- const s = async () => {
1476
- const { connection: u } = n;
1477
- if (!u)
401
+ const r = async () => {
402
+ const { connection: i } = e;
403
+ if (!i)
1478
404
  throw new Error("connection is not exist");
1479
- return Ze({
1480
- connection: u,
1481
- onSetParameters: t,
1482
- ignoreForCodec: e
405
+ return L({
406
+ connection: i,
407
+ onSetParameters: n,
408
+ ignoreForCodec: t
1483
409
  });
1484
410
  };
1485
- let r = s;
1486
- const o = async (u) => (r = async () => {
1487
- const { mainCam: _, resolutionMainCam: l } = u, { connection: d } = n;
1488
- if (!d)
411
+ let s = r;
412
+ const a = async (i) => (s = async () => {
413
+ const { mainCam: m, resolutionMainCam: d } = i, { connection: l } = e;
414
+ if (!l)
1489
415
  throw new Error("connection is not exist");
1490
- return Ze({
1491
- mainCam: _,
1492
- resolutionMainCam: l,
1493
- connection: d,
1494
- onSetParameters: t,
1495
- ignoreForCodec: e
1496
- });
1497
- }, r());
416
+ return L({
417
+ mainCam: m,
418
+ resolutionMainCam: d,
419
+ connection: l,
420
+ onSetParameters: n,
421
+ ignoreForCodec: t
422
+ });
423
+ }, s());
1498
424
  return {
1499
425
  subscribe: () => {
1500
- n.onSession("main-cam-control", o);
426
+ e.onSession("main-cam-control", a);
1501
427
  },
1502
428
  unsubscribe: () => {
1503
- n.offSession("main-cam-control", o);
429
+ e.offSession("main-cam-control", a);
1504
430
  },
1505
- balanceByTrack: s,
431
+ balanceByTrack: r,
1506
432
  resetMainCamControl() {
1507
- r = s;
433
+ s = r;
1508
434
  },
1509
435
  async reBalance() {
1510
- return r();
436
+ return s();
1511
437
  }
1512
438
  };
1513
439
  };
1514
440
  export {
1515
- I as EEventsMainCAM,
1516
- Z as EEventsMic,
1517
- ee as EEventsSyncMediaState,
1518
- Hn as EUseLicense,
1519
- ur as causes,
1520
- Er as constants,
1521
- mr as debug,
1522
- hr as default,
1523
- dr as disableDebug,
1524
- lr as enableDebug,
1525
- _r as eventNames,
1526
- qs as getCodecFromSender,
1527
- Sr as hasCanceledCallError,
1528
- Cr as resolveVideoSendingBalancer,
1529
- Tr as tools
441
+ B as EEventsMainCAM,
442
+ tn as EEventsMic,
443
+ rn as EEventsSyncMediaState,
444
+ sn as EUseLicense,
445
+ on as causes,
446
+ an as constants,
447
+ dn as debug,
448
+ He as default,
449
+ cn as disableDebug,
450
+ un as enableDebug,
451
+ ln as eventNames,
452
+ Ie as getCodecFromSender,
453
+ Sn as hasCanceledCallError,
454
+ Ze as resolveVideoSendingBalancer,
455
+ Qe as tools
1530
456
  };