sip-connector 6.24.0 → 6.24.2
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/{SipConnector-1HoiCnsj.js → SipConnector-BmPmOGi6.js} +229 -218
- package/dist/SipConnector-DMjzYyq_.cjs +1 -0
- package/dist/SipConnector.d.ts +9 -8
- package/dist/__fixtures__/BaseSession.mock.d.ts +4 -4
- package/dist/__fixtures__/RTCRtpSenderMock.d.ts +1 -0
- package/dist/__fixtures__/UA.mock.d.ts +2 -2
- package/dist/__fixtures__/index.d.ts +7 -6
- package/dist/doMock.cjs +1 -1
- package/dist/doMock.js +118 -112
- package/dist/index.cjs +1 -1
- package/dist/index.js +55 -53
- package/dist/tools/__fixtures__/call.d.ts +1 -1
- package/dist/tools/__fixtures__/connectToServer.d.ts +6 -5
- package/dist/tools/__fixtures__/hasValidUri.d.ts +2 -8
- package/dist/tools/__fixtures__/processRequest.d.ts +1 -1
- package/dist/tools/disconnectFromServer.d.ts +5 -1
- package/dist/tools/hasPurgatory.d.ts +1 -1
- package/package.json +12 -12
- package/dist/SipConnector-eRr2JbY9.cjs +0 -1
package/dist/doMock.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var n = (i, e, t) => (
|
|
4
|
-
import { j as
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import { EventEmitter as
|
|
8
|
-
import { IncomingRequest as
|
|
9
|
-
import
|
|
10
|
-
|
|
1
|
+
var A = Object.defineProperty;
|
|
2
|
+
var O = (i, e, t) => e in i ? A(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t;
|
|
3
|
+
var n = (i, e, t) => (O(i, typeof e != "symbol" ? e + "" : e, t), t);
|
|
4
|
+
import { j as k, R as N, U as L, S as D } from "./SipConnector-BmPmOGi6.js";
|
|
5
|
+
import W from "@krivega/jssip/lib/NameAddrHeader";
|
|
6
|
+
import P from "@krivega/jssip/lib/URI";
|
|
7
|
+
import { EventEmitter as x } from "node:events";
|
|
8
|
+
import { IncomingRequest as V } from "@krivega/jssip/lib/SIPMessage";
|
|
9
|
+
import E from "events-constructor";
|
|
10
|
+
import { URI as f } from "@krivega/jssip";
|
|
11
|
+
class R extends V {
|
|
11
12
|
constructor(t) {
|
|
12
13
|
super();
|
|
13
14
|
n(this, "headers");
|
|
@@ -17,18 +18,18 @@ class y extends x {
|
|
|
17
18
|
return this.headers.get(t) || "";
|
|
18
19
|
}
|
|
19
20
|
}
|
|
20
|
-
var
|
|
21
|
-
const
|
|
22
|
-
class
|
|
21
|
+
var F = Object.defineProperty, U = (i, e, t) => e in i ? F(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t, s = (i, e, t) => (U(i, typeof e != "symbol" ? e + "" : e, t), t);
|
|
22
|
+
const m = "ended", H = "mute", j = "isolationchange", z = "overconstrained", q = "unmute", $ = [m, H, q, j, z];
|
|
23
|
+
class S {
|
|
23
24
|
constructor(e, { id: t = "identifier", constraints: r = {} } = {}) {
|
|
24
25
|
s(this, "events"), s(this, "id"), s(this, "kind"), s(this, "constraints"), s(this, "enabled"), s(this, "contentHint", ""), s(this, "readyState", "live"), s(this, "isolated", !1), s(this, "label", ""), s(this, "muted", !1), s(this, "onended", null), s(this, "onisolationchange", null), s(this, "onmute", null), s(this, "onunmute", null), s(this, "getConstraints", () => this.constraints), s(this, "stop", () => {
|
|
25
|
-
const o = { ...new Event(
|
|
26
|
-
this.events.trigger(
|
|
26
|
+
const o = { ...new Event(m) };
|
|
27
|
+
this.events.trigger(m, o), this.readyState = m, this.onended && this.onended(o);
|
|
27
28
|
}), s(this, "addEventListener", (o, a) => {
|
|
28
29
|
this.events.on(o, a);
|
|
29
30
|
}), s(this, "removeEventListener", (o, a) => {
|
|
30
31
|
this.events.off(o, a);
|
|
31
|
-
}), this.id = `${t}-${e}-track`, this.kind = e, this.enabled = !0, this.constraints = { ...r }, this.events = new
|
|
32
|
+
}), this.id = `${t}-${e}-track`, this.kind = e, this.enabled = !0, this.constraints = { ...r }, this.events = new E($);
|
|
32
33
|
}
|
|
33
34
|
clone() {
|
|
34
35
|
return { ...this };
|
|
@@ -54,8 +55,8 @@ class R {
|
|
|
54
55
|
return this.events.trigger(t, e), !0;
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
|
-
const
|
|
58
|
-
class
|
|
58
|
+
const B = (i) => new S("audio", i), K = (i) => new S("video", i);
|
|
59
|
+
class Y {
|
|
59
60
|
// @ts-expect-error
|
|
60
61
|
constructor({ originator: e = "local", eventHandlers: t }) {
|
|
61
62
|
n(this, "originator");
|
|
@@ -63,7 +64,7 @@ class K {
|
|
|
63
64
|
n(this, "_events");
|
|
64
65
|
n(this, "_remote_identity");
|
|
65
66
|
n(this, "_mutedOptions", { audio: !1, video: !1 });
|
|
66
|
-
this.originator = e, this._events = new
|
|
67
|
+
this.originator = e, this._events = new E(k), this.initEvents(t);
|
|
67
68
|
}
|
|
68
69
|
// @ts-expect-error
|
|
69
70
|
get C() {
|
|
@@ -236,7 +237,7 @@ class K {
|
|
|
236
237
|
return !0;
|
|
237
238
|
}
|
|
238
239
|
}
|
|
239
|
-
class
|
|
240
|
+
class J {
|
|
240
241
|
constructor(e, t) {
|
|
241
242
|
n(this, "_senders", []);
|
|
242
243
|
n(this, "_receivers", []);
|
|
@@ -330,14 +331,14 @@ class Y {
|
|
|
330
331
|
throw new Error("Method not implemented.");
|
|
331
332
|
}
|
|
332
333
|
}
|
|
333
|
-
function
|
|
334
|
+
function G(i) {
|
|
334
335
|
const e = i.match(/[\d.]+/g);
|
|
335
336
|
if (!e)
|
|
336
337
|
throw new Error("wrong sip url");
|
|
337
338
|
return e[0];
|
|
338
339
|
}
|
|
339
|
-
const
|
|
340
|
-
class
|
|
340
|
+
const p = 400, X = "777", Q = (i) => i.getVideoTracks().length > 0;
|
|
341
|
+
class C extends Y {
|
|
341
342
|
constructor({
|
|
342
343
|
url: t = "",
|
|
343
344
|
mediaStream: r,
|
|
@@ -366,7 +367,7 @@ class S extends K {
|
|
|
366
367
|
}, 100), setTimeout(() => {
|
|
367
368
|
this.trigger("confirmed");
|
|
368
369
|
}, 200);
|
|
369
|
-
},
|
|
370
|
+
}, p);
|
|
370
371
|
}));
|
|
371
372
|
this.url = t, this.initPeerconnection(r);
|
|
372
373
|
}
|
|
@@ -374,24 +375,24 @@ class S extends K {
|
|
|
374
375
|
return t ? (this.createPeerconnection(t), !0) : !1;
|
|
375
376
|
}
|
|
376
377
|
createPeerconnection(t) {
|
|
377
|
-
const r =
|
|
378
|
+
const r = B();
|
|
378
379
|
r.id = "mainaudio1";
|
|
379
380
|
const o = [r];
|
|
380
|
-
if (
|
|
381
|
-
const
|
|
382
|
-
|
|
381
|
+
if (Q(t)) {
|
|
382
|
+
const h = K();
|
|
383
|
+
h.id = "mainvideo1", o.push(h);
|
|
383
384
|
}
|
|
384
|
-
this._connection = new
|
|
385
|
+
this._connection = new J(void 0, o), this._addStream(t), setTimeout(() => {
|
|
385
386
|
this.trigger("peerconnection", { peerconnection: this.connection });
|
|
386
|
-
},
|
|
387
|
+
}, p);
|
|
387
388
|
}
|
|
388
389
|
connect(t) {
|
|
389
|
-
const r =
|
|
390
|
+
const r = G(t);
|
|
390
391
|
setTimeout(() => {
|
|
391
|
-
this.url.includes(
|
|
392
|
+
this.url.includes(X) ? this.trigger("failed", {
|
|
392
393
|
originator: "remote",
|
|
393
394
|
message: "IncomingResponse",
|
|
394
|
-
cause:
|
|
395
|
+
cause: N
|
|
395
396
|
}) : (this.trigger("connecting"), setTimeout(() => {
|
|
396
397
|
this.trigger("enterRoom", r);
|
|
397
398
|
}, 100), setTimeout(() => {
|
|
@@ -399,7 +400,7 @@ class S extends K {
|
|
|
399
400
|
}, 200), setTimeout(() => {
|
|
400
401
|
this.trigger("confirmed");
|
|
401
402
|
}, 300));
|
|
402
|
-
},
|
|
403
|
+
}, p);
|
|
403
404
|
}
|
|
404
405
|
terminate({ status_code: t } = {}) {
|
|
405
406
|
return this.status_code = t, this.trigger("ended", { status_code: t }), this._isEnded = !1, this;
|
|
@@ -457,7 +458,7 @@ class S extends K {
|
|
|
457
458
|
}
|
|
458
459
|
/* eslint-enable no-param-reassign */
|
|
459
460
|
}
|
|
460
|
-
class
|
|
461
|
+
class Z {
|
|
461
462
|
constructor() {
|
|
462
463
|
n(this, "extraHeaders");
|
|
463
464
|
}
|
|
@@ -467,7 +468,7 @@ class Q {
|
|
|
467
468
|
setExtraContactParams() {
|
|
468
469
|
}
|
|
469
470
|
}
|
|
470
|
-
const d = "PASSWORD_CORRECT",
|
|
471
|
+
const d = "PASSWORD_CORRECT", y = "PASSWORD_CORRECT_2", ee = "NAME_INCORRECT", c = 400, l = class l {
|
|
471
472
|
constructor(e) {
|
|
472
473
|
n(this, "_events");
|
|
473
474
|
n(this, "_startedTimeout");
|
|
@@ -480,9 +481,14 @@ const d = "PASSWORD_CORRECT", T = "PASSWORD_CORRECT_2", Z = "NAME_INCORRECT", h
|
|
|
480
481
|
// @ts-expect-error
|
|
481
482
|
n(this, "call", jest.fn((e, t) => {
|
|
482
483
|
const { mediaStream: r, eventHandlers: o } = t;
|
|
483
|
-
return this.session = new
|
|
484
|
+
return this.session = new C({ url: e, mediaStream: r, eventHandlers: o, originator: "local" }), this.session.connect(e), this.session;
|
|
484
485
|
}));
|
|
485
|
-
this._events = new
|
|
486
|
+
this._events = new E(L);
|
|
487
|
+
const [t, r] = e.uri.split(":"), [o, a] = r.split("@"), h = {
|
|
488
|
+
...e,
|
|
489
|
+
uri: new f(t, o, a)
|
|
490
|
+
};
|
|
491
|
+
this.configuration = h, this._registrator = new Z();
|
|
486
492
|
}
|
|
487
493
|
static setAvailableTelephony() {
|
|
488
494
|
this.isAvailableTelephony = !0;
|
|
@@ -506,7 +512,7 @@ const d = "PASSWORD_CORRECT", T = "PASSWORD_CORRECT_2", Z = "NAME_INCORRECT", h
|
|
|
506
512
|
stop() {
|
|
507
513
|
this._startedTimeout && clearTimeout(this._startedTimeout), this._stopedTimeout && clearTimeout(this._stopedTimeout), this.unregister(), this.isStarted() ? this._stopedTimeout = setTimeout(() => {
|
|
508
514
|
this.trigger("disconnected", { error: new Error("stoped") });
|
|
509
|
-
},
|
|
515
|
+
}, c) : this.trigger("disconnected", { error: new Error("stoped") });
|
|
510
516
|
}
|
|
511
517
|
// @ts-expect-error
|
|
512
518
|
on(e, t) {
|
|
@@ -553,13 +559,13 @@ const d = "PASSWORD_CORRECT", T = "PASSWORD_CORRECT_2", Z = "NAME_INCORRECT", h
|
|
|
553
559
|
register() {
|
|
554
560
|
this._startedTimeout && clearTimeout(this._startedTimeout);
|
|
555
561
|
const { password: e, register: t, uri: r } = this.configuration;
|
|
556
|
-
t && r.includes(
|
|
562
|
+
t && r.user.includes(ee) ? (this._isRegistered = !1, this._isConnected = !1, this._startedTimeout = setTimeout(() => {
|
|
557
563
|
this.trigger("registrationFailed", { response: null, cause: "Request Timeout" });
|
|
558
|
-
},
|
|
564
|
+
}, c)) : !this._isRegistered && t && (e === d || e === y) ? (this._isRegistered = !0, this._startedTimeout = setTimeout(() => {
|
|
559
565
|
this.trigger("registered");
|
|
560
|
-
},
|
|
566
|
+
}, c)) : t && e !== d && e !== y && (this._isRegistered = !1, this._isConnected = !1, this._startedTimeout = setTimeout(() => {
|
|
561
567
|
this.trigger("registrationFailed", { response: null, cause: "Wrong credentials" });
|
|
562
|
-
},
|
|
568
|
+
}, c)), l.isAvailableTelephony ? (this.trigger("connected"), this._isConnected = !0) : this.stop();
|
|
563
569
|
}
|
|
564
570
|
/**
|
|
565
571
|
* unregister
|
|
@@ -592,15 +598,15 @@ const d = "PASSWORD_CORRECT", T = "PASSWORD_CORRECT_2", Z = "NAME_INCORRECT", h
|
|
|
592
598
|
this.trigger("sipEvent", e);
|
|
593
599
|
}
|
|
594
600
|
};
|
|
595
|
-
n(
|
|
596
|
-
let
|
|
597
|
-
class
|
|
601
|
+
n(l, "isAvailableTelephony", !0);
|
|
602
|
+
let _ = l;
|
|
603
|
+
class te {
|
|
598
604
|
constructor(e) {
|
|
599
605
|
n(this, "url");
|
|
600
606
|
this.url = e;
|
|
601
607
|
}
|
|
602
608
|
}
|
|
603
|
-
class
|
|
609
|
+
class ne extends x {
|
|
604
610
|
constructor(t, r) {
|
|
605
611
|
super();
|
|
606
612
|
n(this, "contentType");
|
|
@@ -608,102 +614,102 @@ class te extends P {
|
|
|
608
614
|
this.contentType = t, this.body = r;
|
|
609
615
|
}
|
|
610
616
|
}
|
|
611
|
-
const
|
|
612
|
-
const t = new
|
|
613
|
-
originator:
|
|
617
|
+
const w = "remote", re = (i, e) => {
|
|
618
|
+
const t = new R(e), r = {
|
|
619
|
+
originator: w,
|
|
614
620
|
request: t,
|
|
615
|
-
info: new
|
|
621
|
+
info: new ne("", "")
|
|
616
622
|
};
|
|
617
623
|
i.newInfo(r);
|
|
618
|
-
},
|
|
619
|
-
const r = { request: new
|
|
624
|
+
}, ie = (i, e) => {
|
|
625
|
+
const r = { request: new R(e) };
|
|
620
626
|
i.newSipEvent(r);
|
|
621
|
-
},
|
|
627
|
+
}, oe = (i, {
|
|
622
628
|
incomingNumber: e = "1234",
|
|
623
629
|
displayName: t,
|
|
624
630
|
host: r
|
|
625
631
|
}) => {
|
|
626
|
-
const o = new
|
|
627
|
-
o._remote_identity = new
|
|
628
|
-
},
|
|
632
|
+
const o = new C({ originator: w }), a = new P("sip", e, r);
|
|
633
|
+
o._remote_identity = new W(a, t), i.trigger("newRTCSession", { originator: w, session: o });
|
|
634
|
+
}, se = (i, e) => {
|
|
629
635
|
e ? i.trigger("failed", e) : i.trigger("failed", i);
|
|
630
|
-
},
|
|
631
|
-
triggerNewInfo:
|
|
632
|
-
triggerNewSipEvent:
|
|
633
|
-
triggerIncomingSession:
|
|
634
|
-
triggerFailIncomingSession:
|
|
635
|
-
WebSocketInterface:
|
|
636
|
-
UA:
|
|
636
|
+
}, b = {
|
|
637
|
+
triggerNewInfo: re,
|
|
638
|
+
triggerNewSipEvent: ie,
|
|
639
|
+
triggerIncomingSession: oe,
|
|
640
|
+
triggerFailIncomingSession: se,
|
|
641
|
+
WebSocketInterface: te,
|
|
642
|
+
UA: _,
|
|
637
643
|
C: {
|
|
638
644
|
INVITE: "INVITE"
|
|
639
645
|
}
|
|
640
|
-
},
|
|
646
|
+
}, v = "user", u = "displayName", M = "SIP_SERVER_URL", I = "SIP_WEB_SOCKET_SERVER_URL", ae = new b.WebSocketInterface(I), T = {
|
|
641
647
|
userAgent: "Chrome",
|
|
642
|
-
sipServerUrl:
|
|
643
|
-
sipWebSocketServerURL:
|
|
644
|
-
},
|
|
645
|
-
...
|
|
646
|
-
},
|
|
647
|
-
...
|
|
648
|
-
user:
|
|
648
|
+
sipServerUrl: M,
|
|
649
|
+
sipWebSocketServerURL: I
|
|
650
|
+
}, Ee = {
|
|
651
|
+
...T
|
|
652
|
+
}, de = {
|
|
653
|
+
...T,
|
|
654
|
+
user: v,
|
|
649
655
|
password: d,
|
|
650
656
|
register: !0
|
|
651
|
-
},
|
|
652
|
-
...
|
|
653
|
-
displayName:
|
|
654
|
-
},
|
|
655
|
-
...
|
|
656
|
-
displayName:
|
|
657
|
+
}, fe = {
|
|
658
|
+
...de,
|
|
659
|
+
displayName: u
|
|
660
|
+
}, ve = {
|
|
661
|
+
...T,
|
|
662
|
+
displayName: u,
|
|
657
663
|
register: !1
|
|
658
|
-
},
|
|
664
|
+
}, g = {
|
|
659
665
|
session_timers: !1,
|
|
660
|
-
sockets: [
|
|
666
|
+
sockets: [ae],
|
|
661
667
|
user_agent: "Chrome",
|
|
662
668
|
sdp_semantics: "plan-b",
|
|
663
669
|
register_expires: 300,
|
|
664
670
|
connection_recovery_max_interval: 6,
|
|
665
671
|
connection_recovery_min_interval: 2
|
|
666
|
-
},
|
|
667
|
-
...
|
|
672
|
+
}, Me = {
|
|
673
|
+
...g,
|
|
668
674
|
password: d,
|
|
669
|
-
uri:
|
|
675
|
+
uri: new f("sip", v, M),
|
|
670
676
|
display_name: "",
|
|
671
677
|
register: !0
|
|
672
|
-
},
|
|
673
|
-
...
|
|
678
|
+
}, Te = {
|
|
679
|
+
...g,
|
|
674
680
|
password: d,
|
|
675
|
-
uri:
|
|
676
|
-
display_name:
|
|
681
|
+
uri: new f("sip", v, M),
|
|
682
|
+
display_name: u,
|
|
677
683
|
register: !0
|
|
678
|
-
},
|
|
679
|
-
...
|
|
680
|
-
display_name:
|
|
684
|
+
}, ye = {
|
|
685
|
+
...g,
|
|
686
|
+
display_name: u,
|
|
681
687
|
register: !1
|
|
682
|
-
},
|
|
683
|
-
...
|
|
688
|
+
}, Re = {
|
|
689
|
+
...g,
|
|
684
690
|
display_name: "",
|
|
685
691
|
register: !1
|
|
686
|
-
},
|
|
687
|
-
JsSIP:
|
|
692
|
+
}, he = "10.10.10.10", Se = [`X-Vinteo-Remote: ${he}`], Ce = () => new D({
|
|
693
|
+
JsSIP: b
|
|
688
694
|
});
|
|
689
695
|
export {
|
|
690
|
-
|
|
691
|
-
|
|
696
|
+
X as FAILED_CONFERENCE_NUMBER,
|
|
697
|
+
ee as NAME_INCORRECT,
|
|
692
698
|
d as PASSWORD_CORRECT,
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
699
|
+
y as PASSWORD_CORRECT_2,
|
|
700
|
+
M as SIP_SERVER_URL,
|
|
701
|
+
I as SIP_WEB_SOCKET_SERVER_URL,
|
|
702
|
+
de as dataForConnectionWithAuthorization,
|
|
703
|
+
fe as dataForConnectionWithAuthorizationWithDisplayName,
|
|
704
|
+
ve as dataForConnectionWithoutAuthorization,
|
|
705
|
+
Ee as dataForConnectionWithoutAuthorizationWithoutDisplayName,
|
|
706
|
+
Ce as default,
|
|
707
|
+
u as displayName,
|
|
708
|
+
Se as extraHeadersRemoteAddress,
|
|
709
|
+
he as remoteAddress,
|
|
710
|
+
Me as uaConfigurationWithAuthorization,
|
|
711
|
+
Te as uaConfigurationWithAuthorizationWithDisplayName,
|
|
712
|
+
ye as uaConfigurationWithoutAuthorization,
|
|
713
|
+
Re as uaConfigurationWithoutAuthorizationWithoutDisplayName,
|
|
714
|
+
v as user
|
|
709
715
|
};
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("./SipConnector-eRr2JbY9.cjs"),q=require("ts-debounce"),Y=require("@krivega/cancelable-promise"),z=require("debug"),x="purgatory",P=e=>e===x,B=e=>()=>(s.logger("getRemoteStreams"),e.getRemoteStreams()),J=({kind:e,readyState:n})=>e==="video"&&n==="live",V=e=>({track:n})=>{J(n)&&e()},D=({getRemoteStreams:e,setRemoteStreams:n})=>q.debounce(()=>{const t=e();s.logger("remoteStreams",t),t&&n(t)},200),Q=e=>async t=>{const{mediaStream:r,extraHeaders:o,iceServers:c,degradationPreference:a,setRemoteStreams:u,onBeforeProgressCall:d,onSuccessProgressCall:C,onEnterPurgatory:f,onEnterConference:m,onFailProgressCall:y,onFinishProgressCall:E,onEndedCall:M}=t,R=D({setRemoteStreams:u,getRemoteStreams:B(e)}),T=V(R);s.logger("answerIncomingCall",t);const O=async()=>e.answerToIncomingCall({mediaStream:r,extraHeaders:o,iceServers:c,degradationPreference:a,ontrack:T}),A=()=>{const{remoteCallerData:S}=e;return S.incomingNumber};let _=!1,i;const l=(s.logger("subscribeEnterConference: onEnterConference",m),f??m?e.onSession("enterRoom",S=>{s.logger("enterRoom",{_room:S,isSuccessProgressCall:_}),i=S,P(i)?f&&f():m&&m({isSuccessProgressCall:_})}):()=>{}),h=S=>(s.logger("onSuccess"),_=!0,R(),C&&C({isPurgatory:P(i)}),e.onceRaceSession(["ended","failed"],()=>{l(),M&&M()}),S),b=S=>{throw s.logger("onFail"),y&&y(),l(),S},N=()=>{s.logger("onFinish"),E&&E()};if(s.logger("onBeforeProgressCall"),d){const S=A();d(S)}return O().then(h).catch(b).finally(N)},Z=e=>async t=>{const{conference:r,mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:u,setRemoteStreams:d,onBeforeProgressCall:C,onSuccessProgressCall:f,onEnterPurgatory:m,onEnterConference:y,onFailProgressCall:E,onFinishProgressCall:M,onEndedCall:R}=t,T=D({setRemoteStreams:d,getRemoteStreams:B(e)}),O=V(T);s.logger("callToServer",t);const A=async()=>(s.logger("startCall"),e.call({mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:u,number:r,ontrack:O}));let _=!1,i;const l=(s.logger("subscribeEnterConference: onEnterConference",y),m??y?e.onSession("enterRoom",S=>{s.logger("enterRoom",{_room:S,isSuccessProgressCall:_}),i=S,P(i)?m&&m():y&&y({isSuccessProgressCall:_})}):()=>{}),h=S=>(s.logger("onSuccess"),_=!0,T(),f&&f({isPurgatory:P(i)}),e.onceRaceSession(["ended","failed"],()=>{l(),R&&R()}),S),b=S=>{throw s.logger("onFail"),E&&E(),l(),S},N=()=>{s.logger("onFinish"),M&&M()};return s.logger("onBeforeProgressCall"),C&&C(r),A().then(h).catch(b).finally(N)},p=e=>{if(!Y.isCanceledError(e))throw e;return{isSuccessful:!1}},ee=e=>async t=>{const{userAgent:r,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:u,name:d,password:C,isRegisteredUser:f,sdpSemantics:m,isDisconnectOnFail:y}=t;return s.logger("connectToServer",t),e.connect({userAgent:r,sdpSemantics:m,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:u,password:C,user:d,register:f}).then(E=>(s.logger("connectToServer then"),{ua:E,isSuccessful:!0})).catch(async E=>(s.logger("connectToServer catch: error",E),y===!0?e.disconnect().then(()=>p(E)).catch(()=>p(E)):p(E)))},ne=e=>async()=>(s.logger("disconnectFromServer"),e.disconnect().then(()=>(s.logger("disconnectFromServer: then"),!1)).catch(n=>(s.logger("disconnectFromServer: catch",n),!1))),k=e=>{const{url:n,cause:t}=e;let r=n;return(t===s.BAD_MEDIA_DESCRIPTION||t===s.NOT_FOUND)&&(r=`${e.message.to.uri.user}@${e.message.to.uri.host}`),r};var $=(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))($||{});const te=(e=new Error)=>{var o;const{cause:n,socket:t}=e;let r="CONNECT_SERVER_FAILED";switch(n){case"Forbidden":{r="WRONG_USER_OR_PASSWORD";break}case s.BAD_MEDIA_DESCRIPTION:{r="BAD_MEDIA_ERROR";break}case s.NOT_FOUND:{r="NOT_FOUND_ERROR";break}default:t&&((o=t==null?void 0:t._ws)==null?void 0:o.readyState)===3?r="WS_CONNECTION_FAILED":k(e)&&(r="CONNECT_SERVER_FAILED_BY_LINK")}return r},re=(e=new Error)=>{const{code:n,cause:t,message:r}=e,o=k(e),c={};return r&&(c.message=r),o&&(c.link=o),n&&(c.code=n),t&&(c.cause=t),c},se=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:$,getLinkError:k,getTypeFromError:te,getValuesFromError:re},Symbol.toStringTag,{value:"Module"})),oe=({sessionId:e,remoteAddress:n,isMutedAudio:t,isMutedVideo:r,isRegistered:o,isPresentationCall:c})=>{const a=[],u=t?"0":"1",d=r?"0":"1";return a.push(`X-Vinteo-Mic-State: ${u}`,`X-Vinteo-MainCam-State: ${d}`),o||a.push("X-Vinteo-Purgatory-Call: yes"),e&&a.push(`X-Vinteo-Session: ${e}`),c&&a.push("X-Vinteo-Presentation-Call: yes"),n&&a.push(`X-Vinteo-Remote: ${n}`),a},ce=({appName:e,appVersion:n,browserName:t,browserVersion:r})=>{const o=`${e} ${n}`;return`ChromeNew - ${t?`${t} ${r}, ${o}`:o}`},ae=({isUnifiedSdpSemantic:e,appVersion:n,browserName:t,browserVersion:r,appName:o})=>e?ce({appVersion:n,browserName:t,browserVersion:r,appName:o}):"Chrome",ie=e=>async()=>{if(e.isCallActive)return s.logger("askPermissionToEnableCam"),e.askPermissionToEnableCam()},ue=e=>t=>(s.logger("onMustStopPresentation"),e.onSession("mustStopPresentation",t)),le=e=>t=>(s.logger("onUseLicense"),e.onSession("useLicense",t)),ge=e=>async({isEnabledCam:t,isEnabledMic:r})=>{if(e.isCallActive)return s.logger("sendMediaState"),e.sendMediaState({cam:t,mic:r})},Se=e=>async()=>{if(e.isCallActive)return s.logger("sendRefusalToTurnOnCam"),e.sendRefusalToTurnOnCam().catch(t=>{s.logger("sendRefusalToTurnOnCam: error",t)})},de=e=>async()=>{if(e.isCallActive)return s.logger("sendRefusalToTurnOnMic"),e.sendRefusalToTurnOnMic().catch(t=>{s.logger("sendRefusalToTurnOnMic: error",t)})},me=1e6,fe=({maxBitrate:e=me,sipConnector:n})=>async({mediaStream:r,isP2P:o=!1})=>(s.logger("startPresentation"),n.startPresentation(r,{isP2P:o,maxBitrate:e})),Ee=({sipConnector:e})=>async({isP2P:t=!1}={})=>(s.logger("stopShareSipConnector"),e.stopPresentation({isP2P:t}).catch(s.logger)),Ce=1e6,Re=({sipConnector:e,maxBitrate:n=Ce})=>async({mediaStream:r,isP2P:o=!1})=>(s.logger("updatePresentation"),e.updatePresentation(r,{isP2P:o,maxBitrate:n})),he="ERROR_NOT_RUNNING",Me=e=>{const n=new Error("Promise was not running");return n.basePromise=e,n.id=he,n.name="Not running",n},ye=async(e,n)=>e.reduce(async(t,r)=>t.then(async({success:o,errors:c,results:a})=>(!n||n(r)?r():Promise.reject(Me(r))).then(u=>({errors:c,success:[...o,u],results:[...a,u],isSuccessful:!0,isError:!1})).catch(u=>({success:o,errors:[...c,u],results:[...a,u],isSuccessful:!1,isError:!0}))),Promise.resolve({success:[],errors:[],results:[],isSuccessful:!1,isError:!1})),Te=e=>n=>[...n].map(r=>async()=>e(r)),_e=async({accumulatedKeys:e,sendKey:n,canRunTask:t})=>{const o=Te(n)(e);return ye(o,t)},be=e=>t=>(s.logger("onStartMainCam"),e.onSession("admin-start-main-cam",t)),ve=e=>t=>(s.logger("onStartMic"),e.onSession("admin-start-mic",t)),Ne=e=>t=>(s.logger("onStopMainCam"),e.onSession("admin-stop-main-cam",t)),Oe=e=>t=>(s.logger("onStopMic"),e.onSession("admin-stop-mic",t)),Ae=({sipConnector:e})=>{const n=(M,R)=>({isSyncForced:T=!1})=>{if(T){M();return}R()},t=be(e),r=Ne(e),o=ve(e),c=Oe(e);let a=()=>{},u=()=>{},d=()=>{},C=()=>{};const f=({onStartMainCamForced:M,onStartMainCamNotForced:R,onStopMainCamForced:T,onStopMainCamNotForced:O,onStartMicForced:A,onStartMicNotForced:_,onStopMicForced:i,onStopMicNotForced:g})=>{const l=n(M,R);a=t(l);const h=n(T,O);u=r(h);const b=n(A,_);d=o(b);const N=n(i,g);C=c(N)},m=()=>{a(),u(),d(),C()};return{start:M=>{f(M)},stop:()=>{m()}}},Pe=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:x,createSyncMediaState:Ae,error:se,getExtraHeaders:oe,getUserAgent:ae,hasPurgatory:P,resolveAnswerIncomingCall:Q,resolveAskPermissionToEnableCam:ie,resolveCallToServer:Z,resolveConnectToServer:ee,resolveDisconnectFromServer:ne,resolveGetRemoteStreams:B,resolveOnMustStopPresentation:ue,resolveOnUseLicense:le,resolveSendMediaState:ge,resolveSendRefusalToTurnOnCam:Se,resolveSendRefusalToTurnOnMic:de,resolveStartPresentation:fe,resolveStopShareSipConnector:Ee,resolveUpdatePresentation:Re,resolveUpdateRemoteStreams:D,sendDTMFAccumulated:_e},Symbol.toStringTag,{value:"Module"})),pe=e=>[...e.keys()].map(n=>e.get(n)),Ie=(e,n)=>pe(e).find(t=>t.type===n),j=async e=>e.getStats().then(n=>{const t=Ie(n,"codec");return t==null?void 0:t.mimeType}),we=e=>e.find(n=>{var t;return((t=n==null?void 0:n.track)==null?void 0:t.kind)==="video"}),G=(e,n)=>e!==void 0&&n!==void 0&&e.toLowerCase().includes(n.toLowerCase()),Be="ERROR_NOT_RUNNING",De=e=>{const n=new Error("Promise was not running");return n.basePromise=e,n.id=Be,n.name="Not running",n},ke=async(e,n)=>e.reduce(async(t,r)=>t.then(async({success:o,errors:c,results:a})=>(!n||n(r)?r():Promise.reject(De(r))).then(u=>({errors:c,success:[...o,u],results:[...a,u],isSuccessful:!0,isError:!1})).catch(u=>({success:o,errors:[...c,u],results:[...a,u],isSuccessful:!1,isError:!0}))),Promise.resolve({success:[],errors:[],results:[],isSuccessful:!1,isError:!1})),Fe=new Error("Stack is empty"),I=e=>e[e.length-1],Ue=new Error("Promise is not actual"),Le=new Error("stackPromises only works with functions that returns a Promise"),xe=({noRejectIsNotActual:e=!1,noRunIsNotActual:n=!1}={})=>{const t=[],r=[],o=({task:i,index:g})=>{r.push({task:i,index:g})},c=(i,{task:g,index:l})=>{const h=r.find(({task:b,index:N})=>g===b&&l===N);if(!h)throw new Error("Task not found");if(h.promise)throw new Error("Task is already running");h.promise=i},a=({task:i,index:g})=>{const l=r.find(({task:h,index:b})=>i===h&&g===b);if(l)return l.promise},u=({task:i})=>{const g=I(r);return(g==null?void 0:g.task)===i},d=({task:i,index:g})=>(o({task:i,index:g}),async()=>{let l=a({task:i,index:g});const h=u({task:i});return!l&&n&&!h?Promise.resolve():(l||(l=i({isActual:h}),c(l,{task:i,index:g})),l)}),C=({resolve:i,reject:g})=>({results:l,isSuccessful:h})=>{const b=l.length,N=t.length;if(b===N){const S=I(l);if(h){i(S);return}g(S);return}if(e){const S=I(l);i(S);return}g(Ue)};let f=!1;const m=()=>{f=!0},y=()=>{f=!1},E=()=>f,M=async()=>(m(),ke(t,E)),R=async()=>{if(t.length===0)throw Fe;return new Promise((i,g)=>{const l=C({resolve:i,reject:g});M().then(l).catch(l)})},T=i=>{if(typeof i!="function")throw Le;const g=t.length;return t.push(d({task:i,index:g})),R},O=async i=>(T(i),R()),A=()=>{t.length=0,r.length=0},_=()=>{y(),A()};return R.add=T,R.run=O,R.stop=_,R},Ve=1e6,v=e=>e*Ve,X=v(.06),$e=v(4),je=e=>e<=64?X:e<=128?v(.12):e<=256?v(.25):e<=384?v(.32):e<=426?v(.38):e<=640?v(.5):e<=848?v(.7):e<=1280?v(1):e<=1920?v(2):$e,Ge="av1",Xe=e=>G(e,Ge),Ke=.6,K=(e,n)=>Xe(n)?e*Ke:e,We=e=>K(X,e),W=(e,n)=>{const t=je(e);return K(t,n)},H=xe(),He=async()=>H().catch(e=>{s.logger("videoSendingBalancer: error",e)}),qe=async e=>(H.add(e),He()),F=async({sender:e,scaleResolutionDownBy:n,maxBitrate:t,onSetParameters:r})=>qe(async()=>s.setEncodingsToSender(e,{scaleResolutionDownBy:n,maxBitrate:t},r)),Ye=async({sender:e,codec:n},t)=>{const o=We(n);return F({sender:e,maxBitrate:o,onSetParameters:t,scaleResolutionDownBy:200})},w=async({sender:e,track:n,codec:t},r)=>{const a=n.getSettings().width,u=W(a,t);return F({sender:e,maxBitrate:u,onSetParameters:r,scaleResolutionDownBy:1})},ze=async({sender:e,track:n,resolution:t,codec:r},o)=>{const c=n.getSettings(),a=c.width,u=c.height,[d,C]=t.split("x"),f=a/Number(d),m=u/Number(C),E=Math.max(f,m,1),M=W(Number(d),r);return F({sender:e,maxBitrate:M,onSetParameters:o,scaleResolutionDownBy:E})},Je=async({mainCam:e,resolutionMainCam:n,sender:t,track:r,codec:o},c)=>{switch(e){case s.EEventsMainCAM.PAUSE_MAIN_CAM:return Ye({sender:t,codec:o},c);case s.EEventsMainCAM.RESUME_MAIN_CAM:return w({sender:t,track:r,codec:o},c);case s.EEventsMainCAM.MAX_MAIN_CAM_RESOLUTION:return n!==void 0?ze({sender:t,track:r,codec:o,resolution:n},c):w({sender:t,track:r,codec:o},c);default:return w({sender:t,track:r,codec:o},c)}},U={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},L=async({mainCam:e,resolutionMainCam:n,connection:t,onSetParameters:r,ignoreForCodec:o})=>{const c=t.getSenders(),a=we(c);if(!(a!=null&&a.track))return U;const u=await j(a);return G(u,o)?U:Je({mainCam:e,resolutionMainCam:n,sender:a,codec:u,track:a.track},r)},Qe=(e,{ignoreForCodec:n,onSetParameters:t}={})=>{const r=async()=>{const{connection:d}=e;if(!d)throw new Error("connection is not exist");return L({connection:d,onSetParameters:t,ignoreForCodec:n})};let o=r;const c=async d=>(o=async()=>{const{mainCam:C,resolutionMainCam:f}=d,{connection:m}=e;if(!m)throw new Error("connection is not exist");return L({mainCam:C,resolutionMainCam:f,connection:m,onSetParameters:t,ignoreForCodec:n})},o());return{subscribe:()=>{e.onSession("main-cam-control",c)},unsubscribe:()=>{e.offSession("main-cam-control",c)},balanceByTrack:r,resetMainCamControl(){o=r},async reBalance(){return o()}}};exports.EEventsMainCAM=s.EEventsMainCAM;exports.EEventsMic=s.EEventsMic;exports.EEventsSyncMediaState=s.EEventsSyncMediaState;exports.EUseLicense=s.EUseLicense;exports.causes=s.causes;exports.constants=s.constants;exports.default=s.SipConnector;exports.disableDebug=s.disableDebug;exports.enableDebug=s.enableDebug;exports.eventNames=s.eventNames;exports.hasCanceledCallError=s.hasCanceledCallError;exports.debug=z;exports.getCodecFromSender=j;exports.resolveVideoSendingBalancer=Qe;exports.tools=Pe;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("./SipConnector-DMjzYyq_.cjs"),q=require("ts-debounce"),Y=require("@krivega/cancelable-promise"),z=require("debug"),x="purgatory",P=e=>e===x,B=e=>()=>(s.logger("getRemoteStreams"),e.getRemoteStreams()),J=({kind:e,readyState:n})=>e==="video"&&n==="live",V=e=>({track:n})=>{J(n)&&e()},D=({getRemoteStreams:e,setRemoteStreams:n})=>q.debounce(()=>{const t=e();s.logger("remoteStreams",t),t&&n(t)},200),Q=e=>async t=>{const{mediaStream:r,extraHeaders:o,iceServers:c,degradationPreference:a,setRemoteStreams:u,onBeforeProgressCall:d,onSuccessProgressCall:C,onEnterPurgatory:f,onEnterConference:m,onFailProgressCall:y,onFinishProgressCall:E,onEndedCall:M}=t,R=D({setRemoteStreams:u,getRemoteStreams:B(e)}),T=V(R);s.logger("answerIncomingCall",t);const O=async()=>e.answerToIncomingCall({mediaStream:r,extraHeaders:o,iceServers:c,degradationPreference:a,ontrack:T}),A=()=>{const{remoteCallerData:l}=e;return l.incomingNumber};let _=!1,i;const g=(s.logger("subscribeEnterConference: onEnterConference",m),f??m?e.onSession("enterRoom",l=>{s.logger("enterRoom",{_room:l,isSuccessProgressCall:_}),i=l,P(i)?f&&f():m&&m({isSuccessProgressCall:_})}):()=>{}),h=l=>(s.logger("onSuccess"),_=!0,R(),C&&C({isPurgatory:P(i)}),e.onceRaceSession(["ended","failed"],()=>{g(),M&&M()}),l),b=l=>{throw s.logger("onFail"),y&&y(),g(),l},N=()=>{s.logger("onFinish"),E&&E()};if(s.logger("onBeforeProgressCall"),d){const l=A();d(l)}return O().then(h).catch(l=>b(l)).finally(N)},Z=e=>async t=>{const{conference:r,mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:u,setRemoteStreams:d,onBeforeProgressCall:C,onSuccessProgressCall:f,onEnterPurgatory:m,onEnterConference:y,onFailProgressCall:E,onFinishProgressCall:M,onEndedCall:R}=t,T=D({setRemoteStreams:d,getRemoteStreams:B(e)}),O=V(T);s.logger("callToServer",t);const A=async()=>(s.logger("startCall"),e.call({mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:u,number:r,ontrack:O}));let _=!1,i;const g=(s.logger("subscribeEnterConference: onEnterConference",y),m??y?e.onSession("enterRoom",l=>{s.logger("enterRoom",{_room:l,isSuccessProgressCall:_}),i=l,P(i)?m&&m():y&&y({isSuccessProgressCall:_})}):()=>{}),h=l=>(s.logger("onSuccess"),_=!0,T(),f&&f({isPurgatory:P(i)}),e.onceRaceSession(["ended","failed"],()=>{g(),R&&R()}),l),b=l=>{throw s.logger("onFail"),E&&E(),g(),l},N=()=>{s.logger("onFinish"),M&&M()};return s.logger("onBeforeProgressCall"),C&&C(r),A().then(h).catch(l=>b(l)).finally(N)},p=e=>{if(!Y.isCanceledError(e))throw e;return{isSuccessful:!1}},ee=e=>async t=>{const{userAgent:r,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:u,name:d,password:C,isRegisteredUser:f,sdpSemantics:m,isDisconnectOnFail:y}=t;return s.logger("connectToServer",t),e.connect({userAgent:r,sdpSemantics:m,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:u,password:C,user:d,register:f}).then(E=>(s.logger("connectToServer then"),{ua:E,isSuccessful:!0})).catch(async E=>(s.logger("connectToServer catch: error",E),y===!0?e.disconnect().then(()=>p(E)).catch(()=>p(E)):p(E)))},ne=e=>async()=>(s.logger("disconnectFromServer"),e.disconnect().then(()=>(s.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(n=>(s.logger("disconnectFromServer: catch",n),{isSuccessful:!1}))),k=e=>{const{url:n,cause:t}=e;let r=n;return(t===s.BAD_MEDIA_DESCRIPTION||t===s.NOT_FOUND)&&(r=`${e.message.to.uri.user}@${e.message.to.uri.host}`),r};var $=(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))($||{});const te=(e=new Error)=>{var o;const{cause:n,socket:t}=e;let r="CONNECT_SERVER_FAILED";switch(n){case"Forbidden":{r="WRONG_USER_OR_PASSWORD";break}case s.BAD_MEDIA_DESCRIPTION:{r="BAD_MEDIA_ERROR";break}case s.NOT_FOUND:{r="NOT_FOUND_ERROR";break}default:t&&((o=t==null?void 0:t._ws)==null?void 0:o.readyState)===3?r="WS_CONNECTION_FAILED":k(e)&&(r="CONNECT_SERVER_FAILED_BY_LINK")}return r},re=(e=new Error)=>{const{code:n,cause:t,message:r}=e,o=k(e),c={};return r&&(c.message=r),o&&(c.link=o),n&&(c.code=n),t&&(c.cause=t),c},se=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:$,getLinkError:k,getTypeFromError:te,getValuesFromError:re},Symbol.toStringTag,{value:"Module"})),oe=({sessionId:e,remoteAddress:n,isMutedAudio:t,isMutedVideo:r,isRegistered:o,isPresentationCall:c})=>{const a=[],u=t?"0":"1",d=r?"0":"1";return a.push(`X-Vinteo-Mic-State: ${u}`,`X-Vinteo-MainCam-State: ${d}`),o||a.push("X-Vinteo-Purgatory-Call: yes"),e&&a.push(`X-Vinteo-Session: ${e}`),c&&a.push("X-Vinteo-Presentation-Call: yes"),n&&a.push(`X-Vinteo-Remote: ${n}`),a},ce=({appName:e,appVersion:n,browserName:t,browserVersion:r})=>{const o=`${e} ${n}`;return`ChromeNew - ${t?`${t} ${r}, ${o}`:o}`},ae=({isUnifiedSdpSemantic:e,appVersion:n,browserName:t,browserVersion:r,appName:o})=>e?ce({appVersion:n,browserName:t,browserVersion:r,appName:o}):"Chrome",ie=e=>async()=>{if(e.isCallActive)return s.logger("askPermissionToEnableCam"),e.askPermissionToEnableCam()},ue=e=>t=>(s.logger("onMustStopPresentation"),e.onSession("mustStopPresentation",t)),le=e=>t=>(s.logger("onUseLicense"),e.onSession("useLicense",t)),ge=e=>async({isEnabledCam:t,isEnabledMic:r})=>{if(e.isCallActive)return s.logger("sendMediaState"),e.sendMediaState({cam:t,mic:r})},Se=e=>async()=>{if(e.isCallActive)return s.logger("sendRefusalToTurnOnCam"),e.sendRefusalToTurnOnCam().catch(t=>{s.logger("sendRefusalToTurnOnCam: error",t)})},de=e=>async()=>{if(e.isCallActive)return s.logger("sendRefusalToTurnOnMic"),e.sendRefusalToTurnOnMic().catch(t=>{s.logger("sendRefusalToTurnOnMic: error",t)})},me=1e6,fe=({maxBitrate:e=me,sipConnector:n})=>async({mediaStream:r,isP2P:o=!1})=>(s.logger("startPresentation"),n.startPresentation(r,{isP2P:o,maxBitrate:e})),Ee=({sipConnector:e})=>async({isP2P:t=!1}={})=>(s.logger("stopShareSipConnector"),e.stopPresentation({isP2P:t}).catch(r=>{s.logger(r)})),Ce=1e6,Re=({sipConnector:e,maxBitrate:n=Ce})=>async({mediaStream:r,isP2P:o=!1})=>(s.logger("updatePresentation"),e.updatePresentation(r,{isP2P:o,maxBitrate:n})),he="ERROR_NOT_RUNNING",Me=e=>{const n=new Error("Promise was not running");return n.basePromise=e,n.id=he,n.name="Not running",n},ye=async(e,n)=>e.reduce(async(t,r)=>t.then(async({success:o,errors:c,results:a})=>(!n||n(r)?r():Promise.reject(Me(r))).then(u=>({errors:c,success:[...o,u],results:[...a,u],isSuccessful:!0,isError:!1})).catch(u=>({success:o,errors:[...c,u],results:[...a,u],isSuccessful:!1,isError:!0}))),Promise.resolve({success:[],errors:[],results:[],isSuccessful:!1,isError:!1})),Te=e=>n=>[...n].map(r=>async()=>e(r)),_e=async({accumulatedKeys:e,sendKey:n,canRunTask:t})=>{const o=Te(n)(e);return ye(o,t)},be=e=>t=>(s.logger("onStartMainCam"),e.onSession("admin-start-main-cam",t)),ve=e=>t=>(s.logger("onStartMic"),e.onSession("admin-start-mic",t)),Ne=e=>t=>(s.logger("onStopMainCam"),e.onSession("admin-stop-main-cam",t)),Oe=e=>t=>(s.logger("onStopMic"),e.onSession("admin-stop-mic",t)),Ae=({sipConnector:e})=>{const n=(M,R)=>({isSyncForced:T=!1})=>{if(T){M();return}R()},t=be(e),r=Ne(e),o=ve(e),c=Oe(e);let a=()=>{},u=()=>{},d=()=>{},C=()=>{};const f=({onStartMainCamForced:M,onStartMainCamNotForced:R,onStopMainCamForced:T,onStopMainCamNotForced:O,onStartMicForced:A,onStartMicNotForced:_,onStopMicForced:i,onStopMicNotForced:S})=>{const g=n(M,R);a=t(g);const h=n(T,O);u=r(h);const b=n(A,_);d=o(b);const N=n(i,S);C=c(N)},m=()=>{a(),u(),d(),C()};return{start:M=>{f(M)},stop:()=>{m()}}},Pe=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:x,createSyncMediaState:Ae,error:se,getExtraHeaders:oe,getUserAgent:ae,hasPurgatory:P,resolveAnswerIncomingCall:Q,resolveAskPermissionToEnableCam:ie,resolveCallToServer:Z,resolveConnectToServer:ee,resolveDisconnectFromServer:ne,resolveGetRemoteStreams:B,resolveOnMustStopPresentation:ue,resolveOnUseLicense:le,resolveSendMediaState:ge,resolveSendRefusalToTurnOnCam:Se,resolveSendRefusalToTurnOnMic:de,resolveStartPresentation:fe,resolveStopShareSipConnector:Ee,resolveUpdatePresentation:Re,resolveUpdateRemoteStreams:D,sendDTMFAccumulated:_e},Symbol.toStringTag,{value:"Module"})),pe=e=>[...e.keys()].map(n=>e.get(n)),Ie=(e,n)=>pe(e).find(t=>t.type===n),j=async e=>e.getStats().then(n=>{const t=Ie(n,"codec");return t==null?void 0:t.mimeType}),we=e=>e.find(n=>{var t;return((t=n==null?void 0:n.track)==null?void 0:t.kind)==="video"}),G=(e,n)=>e!==void 0&&n!==void 0&&e.toLowerCase().includes(n.toLowerCase()),Be="ERROR_NOT_RUNNING",De=e=>{const n=new Error("Promise was not running");return n.basePromise=e,n.id=Be,n.name="Not running",n},ke=async(e,n)=>e.reduce(async(t,r)=>t.then(async({success:o,errors:c,results:a})=>(!n||n(r)?r():Promise.reject(De(r))).then(u=>({errors:c,success:[...o,u],results:[...a,u],isSuccessful:!0,isError:!1})).catch(u=>({success:o,errors:[...c,u],results:[...a,u],isSuccessful:!1,isError:!0}))),Promise.resolve({success:[],errors:[],results:[],isSuccessful:!1,isError:!1})),Fe=new Error("Stack is empty"),I=e=>e[e.length-1],Ue=new Error("Promise is not actual"),Le=new Error("stackPromises only works with functions that returns a Promise"),xe=({noRejectIsNotActual:e=!1,noRunIsNotActual:n=!1}={})=>{const t=[],r=[],o=({task:i,index:S})=>{r.push({task:i,index:S})},c=(i,{task:S,index:g})=>{const h=r.find(({task:b,index:N})=>S===b&&g===N);if(!h)throw new Error("Task not found");if(h.promise)throw new Error("Task is already running");h.promise=i},a=({task:i,index:S})=>{const g=r.find(({task:h,index:b})=>i===h&&S===b);if(g)return g.promise},u=({task:i})=>{const S=I(r);return(S==null?void 0:S.task)===i},d=({task:i,index:S})=>(o({task:i,index:S}),async()=>{let g=a({task:i,index:S});const h=u({task:i});return!g&&n&&!h?Promise.resolve():(g||(g=i({isActual:h}),c(g,{task:i,index:S})),g)}),C=({resolve:i,reject:S})=>({results:g,isSuccessful:h})=>{const b=g.length,N=t.length;if(b===N){const l=I(g);if(h){i(l);return}S(l);return}if(e){const l=I(g);i(l);return}S(Ue)};let f=!1;const m=()=>{f=!0},y=()=>{f=!1},E=()=>f,M=async()=>(m(),ke(t,E)),R=async()=>{if(t.length===0)throw Fe;return new Promise((i,S)=>{const g=C({resolve:i,reject:S});M().then(g).catch(g)})},T=i=>{if(typeof i!="function")throw Le;const S=t.length;return t.push(d({task:i,index:S})),R},O=async i=>(T(i),R()),A=()=>{t.length=0,r.length=0},_=()=>{y(),A()};return R.add=T,R.run=O,R.stop=_,R},Ve=1e6,v=e=>e*Ve,X=v(.06),$e=v(4),je=e=>e<=64?X:e<=128?v(.12):e<=256?v(.25):e<=384?v(.32):e<=426?v(.38):e<=640?v(.5):e<=848?v(.7):e<=1280?v(1):e<=1920?v(2):$e,Ge="av1",Xe=e=>G(e,Ge),Ke=.6,K=(e,n)=>Xe(n)?e*Ke:e,We=e=>K(X,e),W=(e,n)=>{const t=je(e);return K(t,n)},H=xe(),He=async()=>H().catch(e=>{s.logger("videoSendingBalancer: error",e)}),qe=async e=>(H.add(e),He()),F=async({sender:e,scaleResolutionDownBy:n,maxBitrate:t,onSetParameters:r})=>qe(async()=>s.setEncodingsToSender(e,{scaleResolutionDownBy:n,maxBitrate:t},r)),Ye=async({sender:e,codec:n},t)=>{const o=We(n);return F({sender:e,maxBitrate:o,onSetParameters:t,scaleResolutionDownBy:200})},w=async({sender:e,track:n,codec:t},r)=>{const a=n.getSettings().width,u=W(a,t);return F({sender:e,maxBitrate:u,onSetParameters:r,scaleResolutionDownBy:1})},ze=async({sender:e,track:n,resolution:t,codec:r},o)=>{const c=n.getSettings(),a=c.width,u=c.height,[d,C]=t.split("x"),f=a/Number(d),m=u/Number(C),E=Math.max(f,m,1),M=W(Number(d),r);return F({sender:e,maxBitrate:M,onSetParameters:o,scaleResolutionDownBy:E})},Je=async({mainCam:e,resolutionMainCam:n,sender:t,track:r,codec:o},c)=>{switch(e){case s.EEventsMainCAM.PAUSE_MAIN_CAM:return Ye({sender:t,codec:o},c);case s.EEventsMainCAM.RESUME_MAIN_CAM:return w({sender:t,track:r,codec:o},c);case s.EEventsMainCAM.MAX_MAIN_CAM_RESOLUTION:return n!==void 0?ze({sender:t,track:r,codec:o,resolution:n},c):w({sender:t,track:r,codec:o},c);default:return w({sender:t,track:r,codec:o},c)}},U={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},L=async({mainCam:e,resolutionMainCam:n,connection:t,onSetParameters:r,ignoreForCodec:o})=>{const c=t.getSenders(),a=we(c);if(!(a!=null&&a.track))return U;const u=await j(a);return G(u,o)?U:Je({mainCam:e,resolutionMainCam:n,sender:a,codec:u,track:a.track},r)},Qe=(e,{ignoreForCodec:n,onSetParameters:t}={})=>{const r=async()=>{const{connection:d}=e;if(!d)throw new Error("connection is not exist");return L({connection:d,onSetParameters:t,ignoreForCodec:n})};let o=r;const c=async d=>(o=async()=>{const{mainCam:C,resolutionMainCam:f}=d,{connection:m}=e;if(!m)throw new Error("connection is not exist");return L({mainCam:C,resolutionMainCam:f,connection:m,onSetParameters:t,ignoreForCodec:n})},o());return{subscribe:()=>{e.onSession("main-cam-control",c)},unsubscribe:()=>{e.offSession("main-cam-control",c)},balanceByTrack:r,resetMainCamControl(){o=r},async reBalance(){return o()}}};exports.EEventsMainCAM=s.EEventsMainCAM;exports.EEventsMic=s.EEventsMic;exports.EEventsSyncMediaState=s.EEventsSyncMediaState;exports.EUseLicense=s.EUseLicense;exports.causes=s.causes;exports.constants=s.constants;exports.default=s.SipConnector;exports.disableDebug=s.disableDebug;exports.enableDebug=s.enableDebug;exports.eventNames=s.eventNames;exports.hasCanceledCallError=s.hasCanceledCallError;exports.debug=z;exports.getCodecFromSender=j;exports.resolveVideoSendingBalancer=Qe;exports.tools=Pe;
|