sip-connector 16.2.0 → 18.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +128 -45
- package/dist/@SipConnector-CFYT0HQB.cjs +1 -0
- package/dist/{@SipConnector-D1YBDd7g.js → @SipConnector-UTHCoMXw.js} +880 -800
- package/dist/ApiManager/__tests-utils__/helpers.d.ts +2 -4
- package/dist/ApiManager/constants.d.ts +1 -2
- package/dist/ApiManager/eventNames.d.ts +1 -2
- package/dist/ApiManager/index.d.ts +1 -0
- package/dist/CallManager/@CallManager.d.ts +7 -6
- package/dist/CallManager/AbstractCallStrategy.d.ts +5 -1
- package/dist/CallManager/MCUCallStrategy.d.ts +1 -0
- package/dist/CallManager/eventNames.d.ts +42 -2
- package/dist/CallManager/index.d.ts +2 -1
- package/dist/CallManager/types.d.ts +5 -4
- package/dist/PresentationManager/types.d.ts +1 -1
- package/dist/SipConnector/@SipConnector.d.ts +4 -1
- package/dist/SipConnector/eventNames.d.ts +1 -1
- package/dist/SipConnectorFacade/index.d.ts +1 -1
- package/dist/StatsPeerConnection/index.d.ts +1 -1
- package/dist/TransceiverManager/@TransceiverManager.d.ts +70 -0
- package/dist/TransceiverManager/index.d.ts +1 -0
- package/dist/TransceiverManager/types.d.ts +11 -0
- package/dist/VideoSendingBalancer/index.d.ts +1 -1
- package/dist/__fixtures__/RTCPeerConnectionMock.d.ts +2 -1
- package/dist/__fixtures__/RTCRtpTransceiverMock.d.ts +16 -0
- package/dist/__fixtures__/eventNames.d.ts +1 -1
- package/dist/doMock.cjs +1 -1
- package/dist/doMock.js +166 -143
- package/dist/index.cjs +1 -1
- package/dist/index.js +83 -83
- package/package.json +12 -12
- package/dist/@SipConnector-B5FFHZzJ.cjs +0 -1
- /package/dist/SipConnectorFacade/{SipConnectorFacade.d.ts → @SipConnectorFacade.d.ts} +0 -0
- /package/dist/StatsPeerConnection/{StatsPeerConnection.d.ts → @StatsPeerConnection.d.ts} +0 -0
- /package/dist/VideoSendingBalancer/{VideoSendingBalancer.d.ts → @VideoSendingBalancer.d.ts} +0 -0
package/dist/doMock.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { EventEmitter as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { IncomingRequest as
|
|
5
|
-
import { NameAddrHeader as
|
|
6
|
-
import { createAudioMediaStreamTrackMock as
|
|
1
|
+
import { EventEmitter as L } from "node:events";
|
|
2
|
+
import F from "@krivega/jssip/lib/NameAddrHeader";
|
|
3
|
+
import b from "@krivega/jssip/lib/URI";
|
|
4
|
+
import { IncomingRequest as k } from "@krivega/jssip/lib/SIPMessage";
|
|
5
|
+
import { NameAddrHeader as V, URI as E, C as N } from "@krivega/jssip";
|
|
6
|
+
import { createAudioMediaStreamTrackMock as W, createVideoMediaStreamTrackMock as U } from "webrtc-mock";
|
|
7
7
|
import { Events as T } from "events-constructor";
|
|
8
|
-
import { O as
|
|
9
|
-
class _ extends
|
|
8
|
+
import { O as G, S as H } from "./@SipConnector-UTHCoMXw.js";
|
|
9
|
+
class _ extends k {
|
|
10
10
|
headers;
|
|
11
11
|
constructor(e) {
|
|
12
12
|
super(), this.headers = new Headers(e);
|
|
@@ -15,35 +15,33 @@ class _ extends F {
|
|
|
15
15
|
return this.headers.get(e) ?? "";
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
const
|
|
19
|
-
G,
|
|
20
|
-
H,
|
|
21
|
-
q,
|
|
18
|
+
const x = "incomingCall", q = "declinedIncomingCall", Y = "failedIncomingCall", j = "terminatedIncomingCall", P = "connecting", z = "connected", B = "disconnected", $ = "newRTCSession", J = "registered", K = "unregistered", Q = "registrationFailed", X = "newMessage", Z = "sipEvent", ee = "availableSecondRemoteStream", te = "notAvailableSecondRemoteStream", re = "mustStopPresentation", ne = "shareState", oe = "enterRoom", se = "useLicense", ie = "peerconnection:confirmed", ae = "peerconnection:ontrack", ce = "channels", de = "channels:notify", Ee = "ended:fromserver", he = "main-cam-control", me = "admin-stop-main-cam", ue = "admin-start-main-cam", le = "admin-stop-mic", pe = "admin-start-mic", ge = "admin-force-sync-media-state", Te = "participant:added-to-list-moderators", _e = "participant:removed-from-list-moderators", Ie = "participant:move-request-to-stream", we = "participant:move-request-to-spectators", Se = "participant:move-request-to-participants", Ne = "participation:accepting-word-request", fe = "participation:cancelling-word-request", Ce = "webcast:started", Re = "webcast:stopped", Me = "account:changed", Ae = "account:deleted", Oe = "conference:participant-token-issued", Pe = "ended", ve = "sending", De = "reinvite", ye = "replaces", Le = "refer", Fe = "progress", be = "accepted", ke = "confirmed", Ve = "peerconnection", We = "failed", Ue = "muted", Ge = "unmuted", He = "newDTMF", xe = "newInfo", qe = "hold", Ye = "unhold", je = "update", ze = "sdp", Be = "icecandidate", $e = "getusermediafailed", Je = "peerconnection:createofferfailed", Ke = "peerconnection:createanswerfailed", Qe = "peerconnection:setlocaldescriptionfailed", Xe = "peerconnection:setremotedescriptionfailed", Ze = "presentation:start", et = "presentation:started", tt = "presentation:end", rt = "presentation:ended", nt = "presentation:failed", ot = [
|
|
22
19
|
x,
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
q,
|
|
21
|
+
j,
|
|
22
|
+
Y,
|
|
23
|
+
Ne,
|
|
24
|
+
fe,
|
|
25
|
+
Ie,
|
|
26
|
+
de,
|
|
27
|
+
Oe,
|
|
27
28
|
Me,
|
|
29
|
+
Ae,
|
|
28
30
|
Ce,
|
|
29
31
|
Re,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
], O = [
|
|
35
|
-
A,
|
|
36
|
-
Y,
|
|
37
|
-
j,
|
|
32
|
+
Te,
|
|
33
|
+
_e
|
|
34
|
+
], v = [
|
|
35
|
+
P,
|
|
38
36
|
z,
|
|
39
37
|
B,
|
|
40
38
|
$,
|
|
41
39
|
J,
|
|
42
40
|
K,
|
|
43
|
-
Q
|
|
44
|
-
], nt = [
|
|
41
|
+
Q,
|
|
45
42
|
X,
|
|
46
|
-
Z
|
|
43
|
+
Z
|
|
44
|
+
], st = [
|
|
47
45
|
ee,
|
|
48
46
|
te,
|
|
49
47
|
re,
|
|
@@ -51,28 +49,28 @@ const G = "incomingCall", H = "declinedIncomingCall", x = "failedIncomingCall",
|
|
|
51
49
|
oe,
|
|
52
50
|
se,
|
|
53
51
|
ie,
|
|
52
|
+
ae,
|
|
54
53
|
ce,
|
|
55
|
-
de,
|
|
56
|
-
he,
|
|
57
54
|
Ee,
|
|
58
|
-
|
|
55
|
+
he,
|
|
59
56
|
ue,
|
|
57
|
+
me,
|
|
60
58
|
le,
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
pe,
|
|
60
|
+
ge,
|
|
61
|
+
we,
|
|
62
|
+
Se
|
|
63
63
|
], p = [
|
|
64
|
-
Ae,
|
|
65
|
-
A,
|
|
66
|
-
Oe,
|
|
67
64
|
Pe,
|
|
65
|
+
P,
|
|
68
66
|
ve,
|
|
69
67
|
De,
|
|
70
68
|
ye,
|
|
71
69
|
Le,
|
|
72
70
|
Fe,
|
|
73
71
|
be,
|
|
74
|
-
Ve,
|
|
75
72
|
ke,
|
|
73
|
+
Ve,
|
|
76
74
|
We,
|
|
77
75
|
Ue,
|
|
78
76
|
Ge,
|
|
@@ -90,14 +88,16 @@ const G = "incomingCall", H = "declinedIncomingCall", x = "failedIncomingCall",
|
|
|
90
88
|
Xe,
|
|
91
89
|
Ze,
|
|
92
90
|
et,
|
|
93
|
-
tt
|
|
91
|
+
tt,
|
|
92
|
+
rt,
|
|
93
|
+
nt
|
|
94
94
|
];
|
|
95
|
-
[...
|
|
95
|
+
[...v, ...ot];
|
|
96
96
|
[
|
|
97
97
|
...p,
|
|
98
|
-
...
|
|
98
|
+
...st
|
|
99
99
|
];
|
|
100
|
-
class
|
|
100
|
+
class it {
|
|
101
101
|
originator;
|
|
102
102
|
connection;
|
|
103
103
|
events;
|
|
@@ -268,7 +268,7 @@ class ot {
|
|
|
268
268
|
return !0;
|
|
269
269
|
}
|
|
270
270
|
}
|
|
271
|
-
class
|
|
271
|
+
class f {
|
|
272
272
|
stats = (/* @__PURE__ */ new Map()).set("codec", { mimeType: "video/h264" });
|
|
273
273
|
dtmf = null;
|
|
274
274
|
track = null;
|
|
@@ -311,8 +311,26 @@ class st {
|
|
|
311
311
|
throw new Error("Method not implemented.");
|
|
312
312
|
}
|
|
313
313
|
}
|
|
314
|
-
|
|
315
|
-
|
|
314
|
+
class C {
|
|
315
|
+
currentDirection = "sendrecv";
|
|
316
|
+
direction = "sendrecv";
|
|
317
|
+
// eslint-disable-next-line unicorn/no-null
|
|
318
|
+
mid = null;
|
|
319
|
+
receiver;
|
|
320
|
+
sender;
|
|
321
|
+
stopped = !1;
|
|
322
|
+
constructor(e) {
|
|
323
|
+
this.sender = e;
|
|
324
|
+
}
|
|
325
|
+
// eslint-disable-next-line @typescript-eslint/class-methods-use-this
|
|
326
|
+
setCodecPreferences(e) {
|
|
327
|
+
}
|
|
328
|
+
// eslint-disable-next-line @typescript-eslint/class-methods-use-this
|
|
329
|
+
stop() {
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
const at = ["track"];
|
|
333
|
+
class ct {
|
|
316
334
|
senders = [];
|
|
317
335
|
receivers = [];
|
|
318
336
|
canTrickleIceCandidates;
|
|
@@ -343,7 +361,7 @@ class at {
|
|
|
343
361
|
signalingState;
|
|
344
362
|
events;
|
|
345
363
|
constructor(e, t) {
|
|
346
|
-
this.events = new T(
|
|
364
|
+
this.events = new T(at), this.receivers = t.map((r) => ({ track: r }));
|
|
347
365
|
}
|
|
348
366
|
getRemoteStreams() {
|
|
349
367
|
throw new Error("Method not implemented.");
|
|
@@ -404,19 +422,24 @@ class at {
|
|
|
404
422
|
}
|
|
405
423
|
getReceivers = () => this.receivers;
|
|
406
424
|
getSenders = () => this.senders;
|
|
407
|
-
addTrack = (e) => {
|
|
408
|
-
const
|
|
409
|
-
return this.senders.push(
|
|
425
|
+
addTrack = (e, ...t) => {
|
|
426
|
+
const r = new f({ track: e }), n = new C(r);
|
|
427
|
+
return n.mid = e.kind === "audio" ? "0" : "1", this.senders.push(r), this.events.trigger("track", { track: e, transceiver: n }), r;
|
|
428
|
+
};
|
|
429
|
+
// Дополнительный метод для тестов с возможностью установки mid
|
|
430
|
+
addTrackWithMid = (e, t) => {
|
|
431
|
+
const r = new f({ track: e }), n = new C(r);
|
|
432
|
+
return t === void 0 ? n.mid = e.kind === "audio" ? "0" : "1" : n.mid = t, this.senders.push(r), this.events.trigger("track", { track: e, transceiver: n }), r;
|
|
410
433
|
};
|
|
411
434
|
}
|
|
412
|
-
function
|
|
413
|
-
const e =
|
|
435
|
+
function dt(o) {
|
|
436
|
+
const e = o.match(/(purgatory)|[\d.]+/g);
|
|
414
437
|
if (!e)
|
|
415
438
|
throw new Error("wrong sip url");
|
|
416
439
|
return e[0];
|
|
417
440
|
}
|
|
418
|
-
const
|
|
419
|
-
class i extends
|
|
441
|
+
const R = 400, Et = "777", ht = (o) => o.getVideoTracks().length > 0;
|
|
442
|
+
class i extends it {
|
|
420
443
|
static presentationError;
|
|
421
444
|
static startPresentationError;
|
|
422
445
|
static countStartPresentationError = Number.POSITIVE_INFINITY;
|
|
@@ -441,7 +464,7 @@ class i extends ot {
|
|
|
441
464
|
}, 100), setTimeout(() => {
|
|
442
465
|
this.trigger("confirmed");
|
|
443
466
|
}, 200);
|
|
444
|
-
},
|
|
467
|
+
}, R);
|
|
445
468
|
});
|
|
446
469
|
replaceMediaStream = jest.fn(async (e) => {
|
|
447
470
|
});
|
|
@@ -458,13 +481,13 @@ class i extends ot {
|
|
|
458
481
|
constructor({
|
|
459
482
|
eventHandlers: e,
|
|
460
483
|
originator: t,
|
|
461
|
-
remoteIdentity: r = new
|
|
484
|
+
remoteIdentity: r = new V(
|
|
462
485
|
new E("sip", "caller1", "test1.com", 5060),
|
|
463
486
|
"Test Caller 1"
|
|
464
487
|
),
|
|
465
|
-
delayStartPresentation:
|
|
488
|
+
delayStartPresentation: n = 0
|
|
466
489
|
}) {
|
|
467
|
-
super({ originator: t, eventHandlers: e, remoteIdentity: r }), this.delayStartPresentation =
|
|
490
|
+
super({ originator: t, eventHandlers: e, remoteIdentity: r }), this.delayStartPresentation = n;
|
|
468
491
|
}
|
|
469
492
|
static setPresentationError(e) {
|
|
470
493
|
this.presentationError = e;
|
|
@@ -500,28 +523,28 @@ class i extends ot {
|
|
|
500
523
|
return e ? (this.createPeerconnection(e), !0) : !1;
|
|
501
524
|
}
|
|
502
525
|
createPeerconnection(e) {
|
|
503
|
-
const t =
|
|
526
|
+
const t = W();
|
|
504
527
|
t.id = "mainaudio1";
|
|
505
528
|
const r = [t];
|
|
506
|
-
if (
|
|
507
|
-
const a =
|
|
529
|
+
if (ht(e)) {
|
|
530
|
+
const a = U();
|
|
508
531
|
a.id = "mainvideo1", r.push(a);
|
|
509
532
|
}
|
|
510
|
-
this.connection = new
|
|
533
|
+
this.connection = new ct(void 0, r), this.addStream(e), this.trigger("peerconnection", { peerconnection: this.connection });
|
|
511
534
|
}
|
|
512
535
|
connect(e, { mediaStream: t } = {}) {
|
|
513
|
-
const r =
|
|
536
|
+
const r = dt(e);
|
|
514
537
|
return this.initPeerconnection(t), this.timeoutConnect = setTimeout(() => {
|
|
515
|
-
e.includes(
|
|
538
|
+
e.includes(Et) ? this.trigger("failed", {
|
|
516
539
|
originator: "remote",
|
|
517
540
|
message: "IncomingResponse",
|
|
518
541
|
cause: "Rejected"
|
|
519
542
|
}) : (this.trigger("connecting"), this.timeoutNewInfo = setTimeout(() => {
|
|
520
543
|
this.newInfo({
|
|
521
|
-
originator:
|
|
544
|
+
originator: G.REMOTE,
|
|
522
545
|
// @ts-expect-error
|
|
523
546
|
request: {
|
|
524
|
-
getHeader: (
|
|
547
|
+
getHeader: (n) => n === "content-type" ? "application/vinteo.webrtc.roomname" : n === "x-webrtc-enter-room" ? r : n === "x-webrtc-participant-name" ? "Test Caller 1" : ""
|
|
525
548
|
}
|
|
526
549
|
});
|
|
527
550
|
}, 100), this.timeoutAccepted = setTimeout(() => {
|
|
@@ -529,7 +552,7 @@ class i extends ot {
|
|
|
529
552
|
}, 200), this.timeoutConfirmed = setTimeout(() => {
|
|
530
553
|
this.trigger("confirmed");
|
|
531
554
|
}, 300));
|
|
532
|
-
},
|
|
555
|
+
}, R), this.connection;
|
|
533
556
|
}
|
|
534
557
|
terminate({ status_code: e, cause: t } = {}) {
|
|
535
558
|
return this.status_code = e, this.trigger("ended", { status_code: e, cause: t, originator: "local" }), this.isEndedInner = !1, this;
|
|
@@ -594,7 +617,7 @@ class i extends ot {
|
|
|
594
617
|
}
|
|
595
618
|
/* eslint-enable no-param-reassign */
|
|
596
619
|
}
|
|
597
|
-
class
|
|
620
|
+
class mt {
|
|
598
621
|
extraHeaders = [];
|
|
599
622
|
setExtraHeaders(e) {
|
|
600
623
|
this.extraHeaders = e;
|
|
@@ -603,18 +626,18 @@ class ht {
|
|
|
603
626
|
setExtraContactParams() {
|
|
604
627
|
}
|
|
605
628
|
}
|
|
606
|
-
const c = "PASSWORD_CORRECT",
|
|
629
|
+
const c = "PASSWORD_CORRECT", M = "PASSWORD_CORRECT_2", ut = "NAME_INCORRECT", d = 400, l = {
|
|
607
630
|
url: "wss://sipServerUrl/webrtc/wss/",
|
|
608
631
|
sip_uri: "sip:sipServerUrl;transport=ws",
|
|
609
632
|
via_transport: "WSS"
|
|
610
|
-
},
|
|
633
|
+
}, A = {
|
|
611
634
|
status_code: 200,
|
|
612
635
|
reason_phrase: "OK"
|
|
613
|
-
},
|
|
636
|
+
}, O = {
|
|
614
637
|
status_code: 401,
|
|
615
638
|
reason_phrase: "Unauthorized"
|
|
616
639
|
};
|
|
617
|
-
class
|
|
640
|
+
class s {
|
|
618
641
|
static isAvailableTelephony = !0;
|
|
619
642
|
static startError;
|
|
620
643
|
static countStartError = Number.POSITIVE_INFINITY;
|
|
@@ -624,8 +647,8 @@ class o {
|
|
|
624
647
|
// @ts-expect-error – Jest создаёт функцию-замок.
|
|
625
648
|
call = jest.fn(
|
|
626
649
|
(e, t) => {
|
|
627
|
-
const { mediaStream: r, eventHandlers:
|
|
628
|
-
return this.session = new i({ eventHandlers:
|
|
650
|
+
const { mediaStream: r, eventHandlers: n } = t;
|
|
651
|
+
return this.session = new i({ eventHandlers: n, originator: "local" }), this.session.connect(e, { mediaStream: r }), this.session;
|
|
629
652
|
}
|
|
630
653
|
);
|
|
631
654
|
sendOptions = jest.fn(
|
|
@@ -637,8 +660,8 @@ class o {
|
|
|
637
660
|
* start – имитирует запуск UA.
|
|
638
661
|
*/
|
|
639
662
|
start = jest.fn(() => {
|
|
640
|
-
if (
|
|
641
|
-
this.trigger("disconnected",
|
|
663
|
+
if (s.countStarts += 1, s.startError && s.countStarts < s.countStartError) {
|
|
664
|
+
this.trigger("disconnected", s.startError);
|
|
642
665
|
return;
|
|
643
666
|
}
|
|
644
667
|
this.register();
|
|
@@ -660,27 +683,27 @@ class o {
|
|
|
660
683
|
isConnectedInner;
|
|
661
684
|
configuration;
|
|
662
685
|
constructor(e) {
|
|
663
|
-
this.events = new T(
|
|
664
|
-
const [t, r] = e.uri.split(":"), [
|
|
686
|
+
this.events = new T(v);
|
|
687
|
+
const [t, r] = e.uri.split(":"), [n, a] = r.split("@"), u = {
|
|
665
688
|
...e,
|
|
666
|
-
uri: new E(t,
|
|
689
|
+
uri: new E(t, n, a)
|
|
667
690
|
};
|
|
668
|
-
this.configuration = u, this.registratorInner = new
|
|
691
|
+
this.configuration = u, this.registratorInner = new mt();
|
|
669
692
|
}
|
|
670
693
|
static setStartError(e, { count: t = Number.POSITIVE_INFINITY } = {}) {
|
|
671
|
-
|
|
694
|
+
s.startError = e, s.countStartError = t;
|
|
672
695
|
}
|
|
673
696
|
static resetStartError() {
|
|
674
|
-
|
|
697
|
+
s.startError = void 0, s.countStartError = Number.POSITIVE_INFINITY, s.countStarts = 0;
|
|
675
698
|
}
|
|
676
699
|
static setAvailableTelephony() {
|
|
677
|
-
|
|
700
|
+
s.isAvailableTelephony = !0;
|
|
678
701
|
}
|
|
679
702
|
static setNotAvailableTelephony() {
|
|
680
|
-
|
|
703
|
+
s.isAvailableTelephony = !1;
|
|
681
704
|
}
|
|
682
705
|
static reset() {
|
|
683
|
-
|
|
706
|
+
s.resetStartError(), s.setAvailableTelephony();
|
|
684
707
|
}
|
|
685
708
|
on(e, t) {
|
|
686
709
|
return this.events.on(e, t), this;
|
|
@@ -710,13 +733,13 @@ class o {
|
|
|
710
733
|
register() {
|
|
711
734
|
this.startedTimeout && clearTimeout(this.startedTimeout);
|
|
712
735
|
const { password: e, register: t, uri: r } = this.configuration;
|
|
713
|
-
t === !0 && r.user.includes(
|
|
714
|
-
this.trigger("registrationFailed", { response:
|
|
715
|
-
}, d)) : !this.isRegistered() && t === !0 && (e === c || e ===
|
|
716
|
-
this.trigger("registered", { response:
|
|
717
|
-
}, d)) : t === !0 && e !== c && e !==
|
|
718
|
-
this.trigger("registrationFailed", { response:
|
|
719
|
-
}, d)),
|
|
736
|
+
t === !0 && r.user.includes(ut) ? (this.isRegisteredInner = !1, this.isConnectedInner = !1, this.startedTimeout = setTimeout(() => {
|
|
737
|
+
this.trigger("registrationFailed", { response: O, cause: N.causes.REJECTED });
|
|
738
|
+
}, d)) : !this.isRegistered() && t === !0 && (e === c || e === M) ? (this.isRegisteredInner = !0, this.startedTimeout = setTimeout(() => {
|
|
739
|
+
this.trigger("registered", { response: A });
|
|
740
|
+
}, d)) : t === !0 && e !== c && e !== M && (this.isRegisteredInner = !1, this.isConnectedInner = !1, this.startedTimeout = setTimeout(() => {
|
|
741
|
+
this.trigger("registrationFailed", { response: O, cause: N.causes.REJECTED });
|
|
742
|
+
}, d)), s.isAvailableTelephony ? (this.trigger("connected", { socket: l }), this.isConnectedInner = !0) : this.stop();
|
|
720
743
|
}
|
|
721
744
|
/**
|
|
722
745
|
* unregister
|
|
@@ -724,7 +747,7 @@ class o {
|
|
|
724
747
|
* @returns {undefined}
|
|
725
748
|
*/
|
|
726
749
|
unregister() {
|
|
727
|
-
this.isRegisteredInner = !1, this.isConnectedInner = !1, this.trigger("unregistered", { response:
|
|
750
|
+
this.isRegisteredInner = !1, this.isConnectedInner = !1, this.trigger("unregistered", { response: A });
|
|
728
751
|
}
|
|
729
752
|
isRegistered() {
|
|
730
753
|
return this.isRegisteredInner === !0;
|
|
@@ -747,93 +770,93 @@ class o {
|
|
|
747
770
|
return this.registratorInner;
|
|
748
771
|
}
|
|
749
772
|
}
|
|
750
|
-
class
|
|
773
|
+
class lt {
|
|
751
774
|
url;
|
|
752
775
|
constructor(e) {
|
|
753
776
|
this.url = e;
|
|
754
777
|
}
|
|
755
778
|
}
|
|
756
|
-
class
|
|
779
|
+
class pt extends L {
|
|
757
780
|
contentType;
|
|
758
781
|
body;
|
|
759
782
|
constructor(e, t) {
|
|
760
783
|
super(), this.contentType = e, this.body = t;
|
|
761
784
|
}
|
|
762
785
|
}
|
|
763
|
-
const g = "remote",
|
|
786
|
+
const g = "remote", gt = (o, e) => {
|
|
764
787
|
const t = new _(e), r = {
|
|
765
788
|
originator: g,
|
|
766
789
|
request: t,
|
|
767
|
-
info: new
|
|
790
|
+
info: new pt("", "")
|
|
768
791
|
};
|
|
769
|
-
|
|
770
|
-
},
|
|
792
|
+
o.newInfo(r);
|
|
793
|
+
}, Tt = (o, e) => {
|
|
771
794
|
const r = { event: "sipEvent", request: new _(e) };
|
|
772
|
-
|
|
773
|
-
},
|
|
795
|
+
o.newSipEvent(r);
|
|
796
|
+
}, _t = (o, {
|
|
774
797
|
incomingNumber: e = "1234",
|
|
775
798
|
displayName: t,
|
|
776
799
|
host: r
|
|
777
800
|
}) => {
|
|
778
|
-
const
|
|
779
|
-
|
|
801
|
+
const n = new i({ originator: g, eventHandlers: {} }), a = new b("sip", e, r);
|
|
802
|
+
n.remote_identity = new F(a, t);
|
|
780
803
|
const u = new _([]);
|
|
781
|
-
|
|
804
|
+
o.trigger("newRTCSession", {
|
|
782
805
|
originator: g,
|
|
783
|
-
session:
|
|
806
|
+
session: n,
|
|
784
807
|
request: u
|
|
785
808
|
});
|
|
786
|
-
},
|
|
787
|
-
e ?
|
|
788
|
-
},
|
|
789
|
-
triggerNewInfo:
|
|
790
|
-
triggerNewSipEvent:
|
|
791
|
-
triggerIncomingSession:
|
|
792
|
-
triggerFailIncomingSession:
|
|
793
|
-
WebSocketInterface:
|
|
794
|
-
UA:
|
|
809
|
+
}, It = (o, e) => {
|
|
810
|
+
e ? o.trigger("failed", e) : o.trigger("failed", o);
|
|
811
|
+
}, D = {
|
|
812
|
+
triggerNewInfo: gt,
|
|
813
|
+
triggerNewSipEvent: Tt,
|
|
814
|
+
triggerIncomingSession: _t,
|
|
815
|
+
triggerFailIncomingSession: It,
|
|
816
|
+
WebSocketInterface: lt,
|
|
817
|
+
UA: s,
|
|
795
818
|
C: {
|
|
796
819
|
INVITE: "INVITE"
|
|
797
820
|
}
|
|
798
|
-
}, I = "user", h = "displayName",
|
|
821
|
+
}, I = "user", h = "displayName", w = "SIP_SERVER_URL", y = "SIP_WEB_SOCKET_SERVER_URL", wt = new D.WebSocketInterface(y), S = {
|
|
799
822
|
userAgent: "Chrome",
|
|
800
|
-
sipServerUrl:
|
|
801
|
-
sipWebSocketServerURL:
|
|
802
|
-
},
|
|
803
|
-
...
|
|
823
|
+
sipServerUrl: w,
|
|
824
|
+
sipWebSocketServerURL: y
|
|
825
|
+
}, Dt = {
|
|
826
|
+
...S
|
|
804
827
|
}, St = {
|
|
805
|
-
...
|
|
828
|
+
...S,
|
|
806
829
|
user: I,
|
|
807
830
|
password: c,
|
|
808
831
|
register: !0
|
|
809
|
-
},
|
|
832
|
+
}, yt = {
|
|
810
833
|
...St,
|
|
811
834
|
displayName: h
|
|
812
|
-
},
|
|
813
|
-
...
|
|
835
|
+
}, Lt = {
|
|
836
|
+
...S,
|
|
814
837
|
displayName: h,
|
|
815
838
|
register: !1
|
|
816
839
|
}, m = {
|
|
817
840
|
session_timers: !1,
|
|
818
|
-
sockets: [
|
|
841
|
+
sockets: [wt],
|
|
819
842
|
user_agent: "Chrome",
|
|
820
843
|
sdpSemantics: "unified-plan",
|
|
821
844
|
register_expires: 300,
|
|
822
845
|
connection_recovery_max_interval: 6,
|
|
823
846
|
connection_recovery_min_interval: 2
|
|
824
|
-
},
|
|
847
|
+
}, Ft = {
|
|
825
848
|
...m,
|
|
826
849
|
password: c,
|
|
827
|
-
uri: new E("sip", I,
|
|
850
|
+
uri: new E("sip", I, w),
|
|
828
851
|
display_name: "",
|
|
829
852
|
register: !0
|
|
830
|
-
},
|
|
853
|
+
}, bt = {
|
|
831
854
|
...m,
|
|
832
855
|
password: c,
|
|
833
|
-
uri: new E("sip", I,
|
|
856
|
+
uri: new E("sip", I, w),
|
|
834
857
|
display_name: h,
|
|
835
858
|
register: !0
|
|
836
|
-
},
|
|
859
|
+
}, kt = {
|
|
837
860
|
...m,
|
|
838
861
|
display_name: h,
|
|
839
862
|
register: !1
|
|
@@ -841,28 +864,28 @@ const g = "remote", pt = (n, e) => {
|
|
|
841
864
|
...m,
|
|
842
865
|
display_name: "",
|
|
843
866
|
register: !1
|
|
844
|
-
},
|
|
845
|
-
JsSIP:
|
|
867
|
+
}, Nt = "10.10.10.10", Wt = [`X-Vinteo-Remote: ${Nt}`], Ut = () => new H({
|
|
868
|
+
JsSIP: D
|
|
846
869
|
});
|
|
847
870
|
export {
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
871
|
+
Et as FAILED_CONFERENCE_NUMBER,
|
|
872
|
+
D as JsSIP,
|
|
873
|
+
ut as NAME_INCORRECT,
|
|
851
874
|
c as PASSWORD_CORRECT,
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
875
|
+
M as PASSWORD_CORRECT_2,
|
|
876
|
+
w as SIP_SERVER_URL,
|
|
877
|
+
y as SIP_WEB_SOCKET_SERVER_URL,
|
|
855
878
|
St as dataForConnectionWithAuthorization,
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
879
|
+
yt as dataForConnectionWithAuthorizationWithDisplayName,
|
|
880
|
+
Lt as dataForConnectionWithoutAuthorization,
|
|
881
|
+
Dt as dataForConnectionWithoutAuthorizationWithoutDisplayName,
|
|
859
882
|
h as displayName,
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
883
|
+
Ut as doMockSipConnector,
|
|
884
|
+
Wt as extraHeadersRemoteAddress,
|
|
885
|
+
Nt as remoteAddress,
|
|
886
|
+
Ft as uaConfigurationWithAuthorization,
|
|
887
|
+
bt as uaConfigurationWithAuthorizationWithDisplayName,
|
|
888
|
+
kt as uaConfigurationWithoutAuthorization,
|
|
866
889
|
Vt as uaConfigurationWithoutAuthorizationWithoutDisplayName,
|
|
867
890
|
I as user
|
|
868
891
|
};
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("events-constructor");const r=require("./@SipConnector-B5FFHZzJ.cjs"),x=require("@krivega/cancelable-promise"),j=require("repeated-calls"),K=require("ts-debounce"),X=require("ua-parser-js"),Y=require("sequent-promises"),G=n=>n instanceof Object&&("originator"in n||"cause"in n),J=n=>{if(x.isCanceledError(n))return!0;if(!G(n))return!1;const{originator:e,cause:t}=n;return typeof t=="string"?t===r.ECallCause.REQUEST_TIMEOUT||t===r.ECallCause.REJECTED||e===r.Originator.LOCAL&&(t===r.ECallCause.CANCELED||t===r.ECallCause.BYE):!1},z=()=>globalThis.process?.versions?.electron!==void 0,B=()=>{const n=new X.UAParser,{name:e}=n.getBrowser(),t=z();return{isChrome:e==="Chrome"||t}},A=n=>{const{url:e,cause:t}=n;let o=e;return(t===r.ECallCause.BAD_MEDIA_DESCRIPTION||t===r.ECallCause.NOT_FOUND)&&(o=`${n.message.to.uri.user}@${n.message.to.uri.host}`),o};var $=(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))($||{});const Q=new Error("Unknown error"),Z=(n=Q)=>{const{cause:e,socket:t}=n;let o="CONNECT_SERVER_FAILED";switch(e){case"Forbidden":{o="WRONG_USER_OR_PASSWORD";break}case r.ECallCause.BAD_MEDIA_DESCRIPTION:{o="BAD_MEDIA_ERROR";break}case r.ECallCause.NOT_FOUND:{o="NOT_FOUND_ERROR";break}default:t!==void 0&&t._ws?.readyState===3?o="WS_CONNECTION_FAILED":A(n)!==void 0&&A(n)!==""&&(o="CONNECT_SERVER_FAILED_BY_LINK")}return o},ee=n=>{let e="";try{e=JSON.stringify(n)}catch(t){r.logger("failed to stringify message",t)}return e},ne=new Error("Unknown error"),te=(n=ne)=>{const{code:e,cause:t,message:o}=n,a=A(n),s={code:"",cause:"",message:""};return typeof o=="object"&&o!==null?s.message=ee(o):o&&(s.message=String(o)),a!==void 0&&a!==""&&(s.link=a),e!==void 0&&e!==""&&(s.code=e),t!==void 0&&t!==""&&(s.cause=t),s},re=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:$,getLinkError:A,getTypeFromError:Z,getValuesFromError:te},Symbol.toStringTag,{value:"Module"})),oe=({sessionId:n,remoteAddress:e,isMutedAudio:t,isMutedVideo:o,isRegistered:a,isPresentationCall:s})=>{const c=[],l=t?"0":"1",u=o?"0":"1";return c.push(`X-Vinteo-Mic-State: ${l}`,`X-Vinteo-MainCam-State: ${u}`),(a===!1||a===void 0)&&c.push("X-Vinteo-Purgatory-Call: yes"),n!==void 0&&n!==""&&c.push(`X-Vinteo-Session: ${n}`),s===!0&&c.push("X-Vinteo-Presentation-Call: yes"),e!==void 0&&e!==""&&c.push(`X-Vinteo-Remote: ${e}`),c},se="[@*!|]",ae="_",ce=n=>{let e=n;return e=e.replaceAll(new RegExp(se,"g"),ae),e},ie=({appName:n,appVersion:e,browserName:t,browserVersion:o})=>{const s=`${ce(n)} ${e}`;return`ChromeNew - ${t===void 0?s:`${t} ${o}, ${s}`}`},le=({isUnifiedSdpSemantic:n,appVersion:e,browserName:t,browserVersion:o,appName:a})=>n?ie({appVersion:e,browserName:t,browserVersion:o,appName:a}):"Chrome",H="purgatory",D=n=>n===H,ue=n=>e=>[...e].map(o=>async()=>n(o)),de=async({accumulatedKeys:n,sendKey:e,canRunTask:t})=>{const a=ue(e)(n);return Y.sequentPromises(a,t)},ge=n=>t=>(r.logger("onStartMainCam"),n.on("api:admin-start-main-cam",t)),Se=n=>t=>(r.logger("onStartMic"),n.on("api:admin-start-mic",t)),Ce=n=>t=>(r.logger("onStopMainCam"),n.on("api:admin-stop-main-cam",t)),me=n=>t=>(r.logger("onStopMic"),n.on("api:admin-stop-mic",t)),fe=({sipConnector:n})=>{const e=(g,C)=>({isSyncForced:S})=>{if(S===!0){g();return}C()},t=ge(n),o=Ce(n),a=Se(n),s=me(n);let c,l,u,f;const h=({onStartMainCamForced:g,onStartMainCamNotForced:C,onStopMainCamForced:S,onStopMainCamNotForced:p,onStartMicForced:E,onStartMicNotForced:b,onStopMicForced:O,onStopMicNotForced:v})=>{const T=e(g,C);c=t(T);const P=e(S,p);l=o(P);const _=e(E,b);u=a(_);const m=e(O,v);f=s(m)},d=()=>{c?.(),l?.(),u?.(),f?.()};return{start:g=>{h(g)},stop:()=>{d()}}},he=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:H,createSyncMediaState:fe,createUaParser:B,error:re,getExtraHeaders:oe,getUserAgent:le,hasPurgatory:D,prepareMediaStream:r.prepareMediaStream,sendDtmfAccumulated:de,setEncodingsToSender:r.setEncodingsToSender,setParametersToSender:r.setParametersToSender},Symbol.toStringTag,{value:"Module"})),pe=()=>B().isChrome,U=n=>{if(!x.isCanceledError(n)&&!j.hasCanceledError(n))throw n;return{isSuccessful:!1}},Re=({kind:n,readyState:e})=>n==="video"&&e==="live",k=(n,e,{onEnterPurgatory:t,onEnterConference:o})=>{D(n)?t&&t():o&&o({isSuccessProgressCall:e})},L=(n,e)=>{n(),e&&e()},V=(n,e,t)=>{throw n&&n(),e(),t},Ee=new Set(["on","once","onceRace","wait","off","sendDTMF","hangUp","declineToIncomingCall","sendChannels","checkTelephony","waitChannels","ping","connection","isConfigured","isRegistered"]);class be{on;once;onceRace;wait;off;sendDTMF;hangUp;declineToIncomingCall;sendChannels;checkTelephony;waitChannels;ping;connection;isConfigured;isRegistered;sipConnector;constructor(e){return this.sipConnector=e,new Proxy(this,{get:(t,o,a)=>{if(typeof o=="string"&&Ee.has(o)&&o in this.sipConnector){const c=Reflect.get(this.sipConnector,o,this.sipConnector);return typeof c=="function"?c.bind(this.sipConnector):c}const s=Reflect.get(t,o,a);return typeof s=="function"?s.bind(t):s}})}connectToServer=async e=>{const{userAgent:t,sipWebSocketServerURL:o,sipServerUrl:a,remoteAddress:s,displayName:c,name:l,password:u,isRegisteredUser:f,isDisconnectOnFail:h}=e;return r.logger("connectToServer",e),this.sipConnector.connect({userAgent:t,sipWebSocketServerURL:o,sipServerUrl:a,remoteAddress:s,displayName:c,password:u,user:l,register:f}).then(d=>(r.logger("connectToServer then"),{ua:d,isSuccessful:!0})).catch(async d=>(r.logger("connectToServer catch: error",d),h===!0?this.sipConnector.disconnect().then(()=>U(d)).catch(()=>U(d)):U(d)))};callToServer=async e=>{const{conference:t,mediaStream:o,extraHeaders:a,iceServers:s,contentHint:c,degradationPreference:l,sendEncodings:u,offerToReceiveAudio:f,offerToReceiveVideo:h,directionVideo:d,directionAudio:N,setRemoteStreams:y,onBeforeProgressCall:g,onSuccessProgressCall:C,onEnterPurgatory:S,onEnterConference:p,onFailProgressCall:E,onFinishProgressCall:b,onEndedCall:O,onAddedTransceiver:v}=e,T=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:y}),P=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{T().catch(r.logger)}});r.logger("callToServer",e);const _=async()=>(r.logger("startCall"),this.sipConnector.call({mediaStream:o,extraHeaders:a,iceServers:s,contentHint:c,offerToReceiveAudio:f,offerToReceiveVideo:h,directionVideo:d,directionAudio:N,degradationPreference:l,onAddedTransceiver:v,sendEncodings:u,number:t,ontrack:P}));let m=!1,R;const M=(r.logger("subscribeEnterConference: onEnterConference",p),this.sipConnector.on("api:enterRoom",({room:i})=>{r.logger("enterRoom",{_room:i,isSuccessProgressCall:m}),R=i,(S??p)&&k(R,m,{onEnterPurgatory:S,onEnterConference:p})})),F=i=>(r.logger("onSuccess"),m=!0,T().catch(r.logger),C&&C({isPurgatory:D(R)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{L(M,O)}),i),w=i=>(r.logger("onFail"),V(E,M,i)),I=()=>{r.logger("onFinish"),b&&b()};return r.logger("onBeforeProgressCall"),g&&g(t),_().then(F).catch(i=>w(i)).finally(I)};disconnectFromServer=async()=>this.sipConnector.disconnect().then(()=>(r.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(e=>(r.logger("disconnectFromServer: catch",e),{isSuccessful:!1}));answerToIncomingCall=async e=>{const{mediaStream:t,extraHeaders:o,iceServers:a,contentHint:s,degradationPreference:c,sendEncodings:l,offerToReceiveAudio:u,offerToReceiveVideo:f,directionVideo:h,directionAudio:d,setRemoteStreams:N,onBeforeProgressCall:y,onSuccessProgressCall:g,onEnterPurgatory:C,onEnterConference:S,onFailProgressCall:p,onFinishProgressCall:E,onEndedCall:b,onAddedTransceiver:O}=e,v=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:N}),T=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{v().catch(r.logger)}});r.logger("answerToIncomingCall",e);const P=async()=>this.sipConnector.answerToIncomingCall({mediaStream:t,extraHeaders:o,iceServers:a,contentHint:s,offerToReceiveAudio:u,offerToReceiveVideo:f,directionVideo:h,directionAudio:d,degradationPreference:c,onAddedTransceiver:O,sendEncodings:l,ontrack:T}),_=()=>{const{remoteCallerData:i}=this.sipConnector;return i.incomingNumber};let m=!1,R;const M=(r.logger("subscribeEnterConference: onEnterConference",S),this.sipConnector.on("api:enterRoom",i=>{r.logger("enterRoom",{_room:i,isSuccessProgressCall:m}),R=i,(C??S)&&k(R,m,{onEnterPurgatory:C,onEnterConference:S})})),F=i=>(r.logger("onSuccess"),m=!0,v().catch(r.logger),g&&g({isPurgatory:D(R)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{L(M,b)}),i),w=i=>(r.logger("onFail"),V(p,M,i)),I=()=>{r.logger("onFinish"),E&&E()};if(r.logger("onBeforeProgressCall"),y){const i=_();y(i)}return P().then(F).catch(i=>w(i)).finally(I)};updatePresentation=async({mediaStream:e,isP2P:t,contentHint:o,degradationPreference:a,sendEncodings:s,onAddedTransceiver:c})=>(r.logger("updatePresentation"),this.sipConnector.updatePresentation(e,{isP2P:t,contentHint:o,degradationPreference:a,onAddedTransceiver:c,sendEncodings:s}));startPresentation=async({mediaStream:e,isP2P:t,contentHint:o,degradationPreference:a,sendEncodings:s,callLimit:c,onAddedTransceiver:l})=>(r.logger("startPresentation"),this.sipConnector.startPresentation(e,{isP2P:t,contentHint:o,callLimit:c,degradationPreference:a,onAddedTransceiver:l,sendEncodings:s}));stopShareSipConnector=async({isP2P:e=!1}={})=>(r.logger("stopShareSipConnector"),this.sipConnector.stopPresentation({isP2P:e}).catch(t=>{r.logger(t)}));sendRefusalToTurnOnMic=async()=>{r.logger("sendRefusalToTurnOnMic"),await this.sipConnector.sendRefusalToTurnOnMic().catch(e=>{r.logger("sendRefusalToTurnOnMic: error",e)})};sendRefusalToTurnOnCam=async()=>{r.logger("sendRefusalToTurnOnCam"),await this.sipConnector.sendRefusalToTurnOnCam().catch(e=>{r.logger("sendRefusalToTurnOnCam: error",e)})};sendMediaState=async({isEnabledCam:e,isEnabledMic:t})=>{r.logger("sendMediaState"),await this.sipConnector.sendMediaState({cam:e,mic:t})};replaceMediaStream=async(e,{deleteExisting:t,addMissing:o,forceRenegotiation:a,contentHint:s,degradationPreference:c,sendEncodings:l,onAddedTransceiver:u})=>(r.logger("replaceMediaStream"),this.sipConnector.replaceMediaStream(e,{deleteExisting:t,addMissing:o,forceRenegotiation:a,contentHint:s,degradationPreference:c,onAddedTransceiver:u,sendEncodings:l}));askPermissionToEnableCam=async()=>{r.logger("askPermissionToEnableCam"),await this.sipConnector.askPermissionToEnableCam()};resolveHandleReadyRemoteStreamsDebounced=({onReadyRemoteStreams:e})=>K.debounce(()=>{const t=this.sipConnector.getRemoteStreams();r.logger("remoteStreams",t),t&&e(t)},200);resolveHandleReadyRemoteStreams=({onReadyRemoteStreams:e})=>({track:t})=>{Re(t)&&e()};getRemoteStreams=()=>(r.logger("getRemoteStreams"),this.sipConnector.getRemoteStreams());onUseLicense=e=>(r.logger("onUseLicense"),this.sipConnector.on("api:useLicense",e));onMustStopPresentation=e=>(r.logger("onMustStopPresentation"),this.sipConnector.on("api:mustStopPresentation",e));onMoveToSpectators=e=>(r.logger("onMoveToSpectators"),this.sipConnector.on("api:participant:move-request-to-spectators",e));onMoveToParticipants=e=>(r.logger("onMoveToParticipants"),this.sipConnector.on("api:participant:move-request-to-participants",e));onStats=e=>(r.logger("onStats"),this.sipConnector.on("stats:collected",e));offStats=e=>{r.logger("offStats"),this.sipConnector.off("stats:collected",e)}}var W=(n=>(n.VP8="video/VP8",n.VP9="video/VP9",n.H264="video/H264",n.AV1="video/AV1",n.rtx="video/rtx",n.red="video/red",n.flexfec03="video/flexfec-03",n))(W||{});exports.ECallCause=r.ECallCause;exports.EStatsTypes=r.EStatsTypes;exports.EUseLicense=r.EUseLicense;exports.SipConnector=r.SipConnector;exports.StatsPeerConnection=r.StatsPeerConnection;exports.disableDebug=r.disableDebug;exports.enableDebug=r.enableDebug;exports.getCodecFromSender=r.getCodecFromSender;exports.hasCanceledStartPresentationError=r.hasCanceledStartPresentationError;exports.EMimeTypesVideoCodecs=W;exports.SipConnectorFacade=be;exports.hasAvailableStats=pe;exports.hasCanceledCallError=J;exports.tools=he;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("events-constructor");const r=require("./@SipConnector-CFYT0HQB.cjs"),x=require("@krivega/cancelable-promise"),j=require("repeated-calls"),K=require("ts-debounce"),X=require("ua-parser-js"),Y=require("sequent-promises"),G=n=>n instanceof Object&&("originator"in n||"cause"in n),J=n=>{if(x.isCanceledError(n))return!0;if(!G(n))return!1;const{originator:e,cause:t}=n;return typeof t=="string"?t===r.ECallCause.REQUEST_TIMEOUT||t===r.ECallCause.REJECTED||e==="local"&&(t===r.ECallCause.CANCELED||t===r.ECallCause.BYE):!1},z=()=>globalThis.process?.versions?.electron!==void 0,B=()=>{const n=new X.UAParser,{name:e}=n.getBrowser(),t=z();return{isChrome:e==="Chrome"||t}},A=n=>{const{url:e,cause:t}=n;let o=e;return(t===r.ECallCause.BAD_MEDIA_DESCRIPTION||t===r.ECallCause.NOT_FOUND)&&(o=`${n.message.to.uri.user}@${n.message.to.uri.host}`),o};var $=(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))($||{});const Q=new Error("Unknown error"),Z=(n=Q)=>{const{cause:e,socket:t}=n;let o="CONNECT_SERVER_FAILED";switch(e){case"Forbidden":{o="WRONG_USER_OR_PASSWORD";break}case r.ECallCause.BAD_MEDIA_DESCRIPTION:{o="BAD_MEDIA_ERROR";break}case r.ECallCause.NOT_FOUND:{o="NOT_FOUND_ERROR";break}default:t!==void 0&&t._ws?.readyState===3?o="WS_CONNECTION_FAILED":A(n)!==void 0&&A(n)!==""&&(o="CONNECT_SERVER_FAILED_BY_LINK")}return o},ee=n=>{let e="";try{e=JSON.stringify(n)}catch(t){r.logger("failed to stringify message",t)}return e},ne=new Error("Unknown error"),te=(n=ne)=>{const{code:e,cause:t,message:o}=n,a=A(n),s={code:"",cause:"",message:""};return typeof o=="object"&&o!==null?s.message=ee(o):o&&(s.message=String(o)),a!==void 0&&a!==""&&(s.link=a),e!==void 0&&e!==""&&(s.code=e),t!==void 0&&t!==""&&(s.cause=t),s},re=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:$,getLinkError:A,getTypeFromError:Z,getValuesFromError:te},Symbol.toStringTag,{value:"Module"})),oe=({sessionId:n,remoteAddress:e,isMutedAudio:t,isMutedVideo:o,isRegistered:a,isPresentationCall:s})=>{const c=[],l=t?"0":"1",u=o?"0":"1";return c.push(`X-Vinteo-Mic-State: ${l}`,`X-Vinteo-MainCam-State: ${u}`),(a===!1||a===void 0)&&c.push("X-Vinteo-Purgatory-Call: yes"),n!==void 0&&n!==""&&c.push(`X-Vinteo-Session: ${n}`),s===!0&&c.push("X-Vinteo-Presentation-Call: yes"),e!==void 0&&e!==""&&c.push(`X-Vinteo-Remote: ${e}`),c},se="[@*!|]",ae="_",ce=n=>{let e=n;return e=e.replaceAll(new RegExp(se,"g"),ae),e},ie=({appName:n,appVersion:e,browserName:t,browserVersion:o})=>{const s=`${ce(n)} ${e}`;return`ChromeNew - ${t===void 0?s:`${t} ${o}, ${s}`}`},le=({isUnifiedSdpSemantic:n,appVersion:e,browserName:t,browserVersion:o,appName:a})=>n?ie({appVersion:e,browserName:t,browserVersion:o,appName:a}):"Chrome",H="purgatory",D=n=>n===H,ue=n=>e=>[...e].map(o=>async()=>n(o)),de=async({accumulatedKeys:n,sendKey:e,canRunTask:t})=>{const a=ue(e)(n);return Y.sequentPromises(a,t)},ge=n=>t=>(r.logger("onStartMainCam"),n.on("api:admin-start-main-cam",t)),Se=n=>t=>(r.logger("onStartMic"),n.on("api:admin-start-mic",t)),Ce=n=>t=>(r.logger("onStopMainCam"),n.on("api:admin-stop-main-cam",t)),me=n=>t=>(r.logger("onStopMic"),n.on("api:admin-stop-mic",t)),fe=({sipConnector:n})=>{const e=(g,C)=>({isSyncForced:S})=>{if(S===!0){g();return}C()},t=ge(n),o=Ce(n),a=Se(n),s=me(n);let c,l,u,f;const h=({onStartMainCamForced:g,onStartMainCamNotForced:C,onStopMainCamForced:S,onStopMainCamNotForced:p,onStartMicForced:E,onStartMicNotForced:b,onStopMicForced:P,onStopMicNotForced:v})=>{const T=e(g,C);c=t(T);const O=e(S,p);l=o(O);const _=e(E,b);u=a(_);const m=e(P,v);f=s(m)},d=()=>{c?.(),l?.(),u?.(),f?.()};return{start:g=>{h(g)},stop:()=>{d()}}},he=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:H,createSyncMediaState:fe,createUaParser:B,error:re,getExtraHeaders:oe,getUserAgent:le,hasPurgatory:D,prepareMediaStream:r.prepareMediaStream,sendDtmfAccumulated:de,setEncodingsToSender:r.setEncodingsToSender,setParametersToSender:r.setParametersToSender},Symbol.toStringTag,{value:"Module"})),pe=()=>B().isChrome,U=n=>{if(!x.isCanceledError(n)&&!j.hasCanceledError(n))throw n;return{isSuccessful:!1}},Re=({kind:n,readyState:e})=>n==="video"&&e==="live",k=(n,e,{onEnterPurgatory:t,onEnterConference:o})=>{D(n)?t&&t():o&&o({isSuccessProgressCall:e})},L=(n,e)=>{n(),e&&e()},V=(n,e,t)=>{throw n&&n(),e(),t},Ee=new Set(["on","once","onceRace","wait","off","sendDTMF","hangUp","declineToIncomingCall","sendChannels","checkTelephony","waitChannels","ping","connection","isConfigured","isRegistered"]);class be{on;once;onceRace;wait;off;sendDTMF;hangUp;declineToIncomingCall;sendChannels;checkTelephony;waitChannels;ping;connection;isConfigured;isRegistered;sipConnector;constructor(e){return this.sipConnector=e,new Proxy(this,{get:(t,o,a)=>{if(typeof o=="string"&&Ee.has(o)&&o in this.sipConnector){const c=Reflect.get(this.sipConnector,o,this.sipConnector);return typeof c=="function"?c.bind(this.sipConnector):c}const s=Reflect.get(t,o,a);return typeof s=="function"?s.bind(t):s}})}connectToServer=async e=>{const{userAgent:t,sipWebSocketServerURL:o,sipServerUrl:a,remoteAddress:s,displayName:c,name:l,password:u,isRegisteredUser:f,isDisconnectOnFail:h}=e;return r.logger("connectToServer",e),this.sipConnector.connect({userAgent:t,sipWebSocketServerURL:o,sipServerUrl:a,remoteAddress:s,displayName:c,password:u,user:l,register:f}).then(d=>(r.logger("connectToServer then"),{ua:d,isSuccessful:!0})).catch(async d=>(r.logger("connectToServer catch: error",d),h===!0?this.sipConnector.disconnect().then(()=>U(d)).catch(()=>U(d)):U(d)))};callToServer=async e=>{const{conference:t,mediaStream:o,extraHeaders:a,iceServers:s,contentHint:c,degradationPreference:l,sendEncodings:u,offerToReceiveAudio:f,offerToReceiveVideo:h,directionVideo:d,directionAudio:N,setRemoteStreams:y,onBeforeProgressCall:g,onSuccessProgressCall:C,onEnterPurgatory:S,onEnterConference:p,onFailProgressCall:E,onFinishProgressCall:b,onEndedCall:P,onAddedTransceiver:v}=e,T=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:y}),O=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{T().catch(r.logger)}});r.logger("callToServer",e);const _=async()=>(r.logger("startCall"),this.sipConnector.call({mediaStream:o,extraHeaders:a,iceServers:s,contentHint:c,offerToReceiveAudio:f,offerToReceiveVideo:h,directionVideo:d,directionAudio:N,degradationPreference:l,onAddedTransceiver:v,sendEncodings:u,number:t,ontrack:O}));let m=!1,R;const M=(r.logger("subscribeEnterConference: onEnterConference",p),this.sipConnector.on("api:enterRoom",({room:i})=>{r.logger("enterRoom",{_room:i,isSuccessProgressCall:m}),R=i,(S??p)&&k(R,m,{onEnterPurgatory:S,onEnterConference:p})})),F=i=>(r.logger("onSuccess"),m=!0,T().catch(r.logger),C&&C({isPurgatory:D(R)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{L(M,P)}),i),w=i=>(r.logger("onFail"),V(E,M,i)),I=()=>{r.logger("onFinish"),b&&b()};return r.logger("onBeforeProgressCall"),g&&g(t),_().then(F).catch(i=>w(i)).finally(I)};disconnectFromServer=async()=>this.sipConnector.disconnect().then(()=>(r.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(e=>(r.logger("disconnectFromServer: catch",e),{isSuccessful:!1}));answerToIncomingCall=async e=>{const{mediaStream:t,extraHeaders:o,iceServers:a,contentHint:s,degradationPreference:c,sendEncodings:l,offerToReceiveAudio:u,offerToReceiveVideo:f,directionVideo:h,directionAudio:d,setRemoteStreams:N,onBeforeProgressCall:y,onSuccessProgressCall:g,onEnterPurgatory:C,onEnterConference:S,onFailProgressCall:p,onFinishProgressCall:E,onEndedCall:b,onAddedTransceiver:P}=e,v=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:N}),T=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{v().catch(r.logger)}});r.logger("answerToIncomingCall",e);const O=async()=>this.sipConnector.answerToIncomingCall({mediaStream:t,extraHeaders:o,iceServers:a,contentHint:s,offerToReceiveAudio:u,offerToReceiveVideo:f,directionVideo:h,directionAudio:d,degradationPreference:c,onAddedTransceiver:P,sendEncodings:l,ontrack:T}),_=()=>{const{remoteCallerData:i}=this.sipConnector;return i.incomingNumber};let m=!1,R;const M=(r.logger("subscribeEnterConference: onEnterConference",S),this.sipConnector.on("api:enterRoom",i=>{r.logger("enterRoom",{_room:i,isSuccessProgressCall:m}),R=i,(C??S)&&k(R,m,{onEnterPurgatory:C,onEnterConference:S})})),F=i=>(r.logger("onSuccess"),m=!0,v().catch(r.logger),g&&g({isPurgatory:D(R)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{L(M,b)}),i),w=i=>(r.logger("onFail"),V(p,M,i)),I=()=>{r.logger("onFinish"),E&&E()};if(r.logger("onBeforeProgressCall"),y){const i=_();y(i)}return O().then(F).catch(i=>w(i)).finally(I)};updatePresentation=async({mediaStream:e,isP2P:t,contentHint:o,degradationPreference:a,sendEncodings:s,onAddedTransceiver:c})=>(r.logger("updatePresentation"),this.sipConnector.updatePresentation(e,{isP2P:t,contentHint:o,degradationPreference:a,onAddedTransceiver:c,sendEncodings:s}));startPresentation=async({mediaStream:e,isP2P:t,contentHint:o,degradationPreference:a,sendEncodings:s,callLimit:c,onAddedTransceiver:l})=>(r.logger("startPresentation"),this.sipConnector.startPresentation(e,{isP2P:t,contentHint:o,callLimit:c,degradationPreference:a,onAddedTransceiver:l,sendEncodings:s}));stopShareSipConnector=async({isP2P:e=!1}={})=>(r.logger("stopShareSipConnector"),this.sipConnector.stopPresentation({isP2P:e}).catch(t=>{r.logger(t)}));sendRefusalToTurnOnMic=async()=>{r.logger("sendRefusalToTurnOnMic"),await this.sipConnector.sendRefusalToTurnOnMic().catch(e=>{r.logger("sendRefusalToTurnOnMic: error",e)})};sendRefusalToTurnOnCam=async()=>{r.logger("sendRefusalToTurnOnCam"),await this.sipConnector.sendRefusalToTurnOnCam().catch(e=>{r.logger("sendRefusalToTurnOnCam: error",e)})};sendMediaState=async({isEnabledCam:e,isEnabledMic:t})=>{r.logger("sendMediaState"),await this.sipConnector.sendMediaState({cam:e,mic:t})};replaceMediaStream=async(e,{deleteExisting:t,addMissing:o,forceRenegotiation:a,contentHint:s,degradationPreference:c,sendEncodings:l,onAddedTransceiver:u})=>(r.logger("replaceMediaStream"),this.sipConnector.replaceMediaStream(e,{deleteExisting:t,addMissing:o,forceRenegotiation:a,contentHint:s,degradationPreference:c,onAddedTransceiver:u,sendEncodings:l}));askPermissionToEnableCam=async()=>{r.logger("askPermissionToEnableCam"),await this.sipConnector.askPermissionToEnableCam()};resolveHandleReadyRemoteStreamsDebounced=({onReadyRemoteStreams:e})=>K.debounce(()=>{const t=this.sipConnector.getRemoteStreams();r.logger("remoteStreams",t),t&&e(t)},200);resolveHandleReadyRemoteStreams=({onReadyRemoteStreams:e})=>({track:t})=>{Re(t)&&e()};getRemoteStreams=()=>(r.logger("getRemoteStreams"),this.sipConnector.getRemoteStreams());onUseLicense=e=>(r.logger("onUseLicense"),this.sipConnector.on("api:useLicense",e));onMustStopPresentation=e=>(r.logger("onMustStopPresentation"),this.sipConnector.on("api:mustStopPresentation",e));onMoveToSpectators=e=>(r.logger("onMoveToSpectators"),this.sipConnector.on("api:participant:move-request-to-spectators",e));onMoveToParticipants=e=>(r.logger("onMoveToParticipants"),this.sipConnector.on("api:participant:move-request-to-participants",e));onStats=e=>(r.logger("onStats"),this.sipConnector.on("stats:collected",e));offStats=e=>{r.logger("offStats"),this.sipConnector.off("stats:collected",e)}}var W=(n=>(n.VP8="video/VP8",n.VP9="video/VP9",n.H264="video/H264",n.AV1="video/AV1",n.rtx="video/rtx",n.red="video/red",n.flexfec03="video/flexfec-03",n))(W||{});exports.ECallCause=r.ECallCause;exports.EStatsTypes=r.EStatsTypes;exports.EUseLicense=r.EUseLicense;exports.SipConnector=r.SipConnector;exports.StatsPeerConnection=r.StatsPeerConnection;exports.disableDebug=r.disableDebug;exports.enableDebug=r.enableDebug;exports.getCodecFromSender=r.getCodecFromSender;exports.hasCanceledStartPresentationError=r.hasCanceledStartPresentationError;exports.EMimeTypesVideoCodecs=W;exports.SipConnectorFacade=be;exports.hasAvailableStats=pe;exports.hasCanceledCallError=J;exports.tools=he;
|