sip-connector 23.0.0 → 23.1.1
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-CmHfa0Ce.js → @SipConnector-B4LkZ26j.js} +332 -313
- package/dist/@SipConnector-LDsMtM-F.cjs +1 -0
- package/dist/CallManager/@CallManager.d.ts +2 -0
- package/dist/CallManager/RecvSession.d.ts +1 -0
- package/dist/CallManager/StreamsManagerProvider.d.ts +1 -0
- package/dist/__fixtures__/Request.mock.d.ts +1 -1
- package/dist/__fixtures__/UA.mock.d.ts +13 -3
- package/dist/doMock.cjs +1 -1
- package/dist/doMock.js +162 -134
- package/dist/index.cjs +1 -1
- package/dist/index.js +2 -2
- package/package.json +3 -3
- package/dist/@SipConnector-DwgaqxCG.cjs +0 -1
package/dist/doMock.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import { EventEmitter as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
import { Events as O } from "events-constructor";
|
|
8
|
-
import { O as H, S as x } from "./@SipConnector-CmHfa0Ce.js";
|
|
9
|
-
class T extends b {
|
|
1
|
+
import { EventEmitter as O } from "node:events";
|
|
2
|
+
import { IncomingRequest as F, NameAddrHeader as P, URI as d, SessionStatus as b, C as S } from "@krivega/jssip";
|
|
3
|
+
import { MediaStreamTrackMock as V, createAudioMediaStreamTrackMock as W, createVideoMediaStreamTrackMock as j } from "webrtc-mock";
|
|
4
|
+
import { Events as v } from "events-constructor";
|
|
5
|
+
import { O as G, S as U } from "./@SipConnector-B4LkZ26j.js";
|
|
6
|
+
class T extends F {
|
|
10
7
|
headers;
|
|
11
8
|
constructor(e) {
|
|
12
9
|
super(), this.headers = new Headers(e);
|
|
@@ -15,53 +12,55 @@ class T extends b {
|
|
|
15
12
|
return this.headers.get(e) ?? "";
|
|
16
13
|
}
|
|
17
14
|
}
|
|
18
|
-
const
|
|
19
|
-
|
|
15
|
+
const x = "incomingCall", H = "declinedIncomingCall", Y = "failedIncomingCall", q = "terminatedIncomingCall", D = "connecting", z = "connected", B = "disconnected", K = "newRTCSession", J = "registered", Q = "unregistered", $ = "registrationFailed", X = "newMessage", Z = "sipEvent", ee = "availableSecondRemoteStream", te = "notAvailableSecondRemoteStream", re = "mustStopPresentation", ne = "enterRoom", oe = "useLicense", se = "peerconnection:confirmed", ie = "peerconnection:ontrack", ae = "channels", ce = "channels:notify", de = "ended:fromserver", he = "main-cam-control", Ee = "admin:stop-main-cam", me = "admin:start-main-cam", ue = "admin:stop-mic", le = "admin:start-mic", pe = "admin:force-sync-media-state", ge = "participant:added-to-list-moderators", Te = "participant:removed-from-list-moderators", _e = "participant:move-request-to-stream", Ie = "participant:move-request-to-spectators", we = "participant:move-request-to-participants", Se = "participation:accepting-word-request", Ne = "participation:cancelling-word-request", fe = "webcast:started", Ce = "webcast:stopped", Re = "account:changed", Me = "account:deleted", Ae = "conference:participant-token-issued", Oe = "ended", Pe = "sending", ve = "reinvite", De = "replaces", ye = "refer", Le = "progress", ke = "accepted", Fe = "confirmed", be = "peerconnection", Ve = "failed", We = "muted", je = "unmuted", Ge = "newDTMF", Ue = "newInfo", xe = "hold", He = "unhold", Ye = "update", qe = "sdp", ze = "icecandidate", Be = "getusermediafailed", Ke = "peerconnection:createofferfailed", Je = "peerconnection:createanswerfailed", Qe = "peerconnection:setlocaldescriptionfailed", $e = "peerconnection:setremotedescriptionfailed", Xe = "presentation:start", Ze = "presentation:started", et = "presentation:end", tt = "presentation:ended", rt = "presentation:failed", nt = [
|
|
16
|
+
x,
|
|
17
|
+
H,
|
|
20
18
|
q,
|
|
21
|
-
|
|
22
|
-
z,
|
|
23
|
-
fe,
|
|
24
|
-
Ce,
|
|
19
|
+
Y,
|
|
25
20
|
Se,
|
|
26
|
-
|
|
27
|
-
Pe,
|
|
28
|
-
Me,
|
|
29
|
-
Oe,
|
|
30
|
-
Re,
|
|
31
|
-
Ae,
|
|
21
|
+
Ne,
|
|
32
22
|
_e,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
23
|
+
ce,
|
|
24
|
+
Ae,
|
|
25
|
+
Re,
|
|
26
|
+
Me,
|
|
27
|
+
fe,
|
|
28
|
+
Ce,
|
|
29
|
+
ge,
|
|
30
|
+
Te
|
|
31
|
+
], y = [
|
|
32
|
+
D,
|
|
33
|
+
z,
|
|
34
|
+
B,
|
|
36
35
|
K,
|
|
37
|
-
$,
|
|
38
36
|
J,
|
|
39
37
|
Q,
|
|
38
|
+
$,
|
|
40
39
|
X,
|
|
41
|
-
Z
|
|
40
|
+
Z
|
|
41
|
+
], ot = [
|
|
42
42
|
ee,
|
|
43
|
-
te
|
|
44
|
-
], it = [
|
|
43
|
+
te,
|
|
45
44
|
re,
|
|
46
45
|
ne,
|
|
47
46
|
oe,
|
|
48
47
|
se,
|
|
49
48
|
ie,
|
|
50
49
|
ae,
|
|
51
|
-
ce,
|
|
52
50
|
de,
|
|
53
51
|
he,
|
|
54
52
|
me,
|
|
55
|
-
|
|
53
|
+
Ee,
|
|
56
54
|
ue,
|
|
55
|
+
le,
|
|
57
56
|
pe,
|
|
58
|
-
|
|
59
|
-
Te,
|
|
60
|
-
Ne,
|
|
57
|
+
Ie,
|
|
61
58
|
we
|
|
62
59
|
], p = [
|
|
60
|
+
Oe,
|
|
61
|
+
D,
|
|
62
|
+
Pe,
|
|
63
63
|
ve,
|
|
64
|
-
P,
|
|
65
64
|
De,
|
|
66
65
|
ye,
|
|
67
66
|
Le,
|
|
@@ -71,32 +70,30 @@ const Y = "incomingCall", q = "declinedIncomingCall", z = "failedIncomingCall",
|
|
|
71
70
|
Ve,
|
|
72
71
|
We,
|
|
73
72
|
je,
|
|
74
|
-
Ue,
|
|
75
73
|
Ge,
|
|
76
|
-
|
|
74
|
+
Ue,
|
|
77
75
|
xe,
|
|
76
|
+
He,
|
|
78
77
|
Ye,
|
|
79
78
|
qe,
|
|
80
79
|
ze,
|
|
81
80
|
Be,
|
|
82
81
|
Ke,
|
|
83
|
-
$e,
|
|
84
82
|
Je,
|
|
85
83
|
Qe,
|
|
84
|
+
$e,
|
|
86
85
|
Xe,
|
|
87
86
|
Ze,
|
|
88
87
|
et,
|
|
89
88
|
tt,
|
|
90
|
-
rt
|
|
91
|
-
nt,
|
|
92
|
-
ot
|
|
89
|
+
rt
|
|
93
90
|
];
|
|
94
|
-
[...
|
|
91
|
+
[...y, ...nt];
|
|
95
92
|
[
|
|
96
93
|
...p,
|
|
97
|
-
...
|
|
94
|
+
...ot
|
|
98
95
|
];
|
|
99
|
-
class
|
|
96
|
+
class st {
|
|
100
97
|
originator;
|
|
101
98
|
connection;
|
|
102
99
|
events;
|
|
@@ -107,7 +104,7 @@ class at {
|
|
|
107
104
|
eventHandlers: t,
|
|
108
105
|
remoteIdentity: r
|
|
109
106
|
}) {
|
|
110
|
-
this.originator = e, this.events = new
|
|
107
|
+
this.originator = e, this.events = new v(p), this.initEvents(t), this.remote_identity = r;
|
|
111
108
|
}
|
|
112
109
|
get contact() {
|
|
113
110
|
throw new Error("Method not implemented.");
|
|
@@ -267,7 +264,7 @@ class at {
|
|
|
267
264
|
return !0;
|
|
268
265
|
}
|
|
269
266
|
}
|
|
270
|
-
class
|
|
267
|
+
class N {
|
|
271
268
|
stats = (/* @__PURE__ */ new Map()).set("codec", { mimeType: "video/h264" });
|
|
272
269
|
dtmf = null;
|
|
273
270
|
track = null;
|
|
@@ -328,7 +325,7 @@ class f {
|
|
|
328
325
|
stop() {
|
|
329
326
|
}
|
|
330
327
|
}
|
|
331
|
-
class
|
|
328
|
+
class it extends EventTarget {
|
|
332
329
|
senders = [];
|
|
333
330
|
receivers = [];
|
|
334
331
|
canTrickleIceCandidates;
|
|
@@ -411,16 +408,16 @@ class ct extends EventTarget {
|
|
|
411
408
|
getReceivers = () => this.receivers;
|
|
412
409
|
getSenders = () => this.senders;
|
|
413
410
|
addTrack = (e, ...t) => {
|
|
414
|
-
const r = new
|
|
411
|
+
const r = new N({ track: e }), o = new f(r);
|
|
415
412
|
return o.mid = e.kind === "audio" ? "0" : "1", this.senders.push(r), this.dispatchTrackInternal(e, ...t), r;
|
|
416
413
|
};
|
|
417
414
|
// Дополнительный метод для тестов с возможностью установки mid
|
|
418
415
|
addTrackWithMid = (e, t) => {
|
|
419
|
-
const r = new
|
|
416
|
+
const r = new N({ track: e }), o = new f(r);
|
|
420
417
|
return t === void 0 ? o.mid = e.kind === "audio" ? "0" : "1" : o.mid = t, this.senders.push(r), this.dispatchTrackInternal(e), r;
|
|
421
418
|
};
|
|
422
419
|
dispatchTrack(e) {
|
|
423
|
-
this.dispatchTrackInternal(new
|
|
420
|
+
this.dispatchTrackInternal(new V(e));
|
|
424
421
|
}
|
|
425
422
|
dispatchTrackInternal(e, ...t) {
|
|
426
423
|
const r = new Event(
|
|
@@ -434,14 +431,14 @@ class ct extends EventTarget {
|
|
|
434
431
|
}), this.dispatchEvent(r);
|
|
435
432
|
}
|
|
436
433
|
}
|
|
437
|
-
function
|
|
434
|
+
function at(n) {
|
|
438
435
|
const e = n.match(/(purgatory)|[\d.]+/g);
|
|
439
436
|
if (!e)
|
|
440
437
|
throw new Error("wrong sip url");
|
|
441
438
|
return e[0];
|
|
442
439
|
}
|
|
443
|
-
const C = 400,
|
|
444
|
-
class i extends
|
|
440
|
+
const C = 400, ct = "777", dt = (n) => n.getVideoTracks().length > 0;
|
|
441
|
+
class i extends st {
|
|
445
442
|
static presentationError;
|
|
446
443
|
static startPresentationError;
|
|
447
444
|
static countStartPresentationError = Number.POSITIVE_INFINITY;
|
|
@@ -488,8 +485,8 @@ class i extends at {
|
|
|
488
485
|
constructor({
|
|
489
486
|
eventHandlers: e,
|
|
490
487
|
originator: t,
|
|
491
|
-
remoteIdentity: r = new
|
|
492
|
-
new
|
|
488
|
+
remoteIdentity: r = new P(
|
|
489
|
+
new d("sip", "caller1", "test1.com", 5060),
|
|
493
490
|
"Test Caller 1"
|
|
494
491
|
),
|
|
495
492
|
delayStartPresentation: o = 0
|
|
@@ -497,7 +494,7 @@ class i extends at {
|
|
|
497
494
|
super({ originator: t, eventHandlers: e, remoteIdentity: r }), this.delayStartPresentation = o;
|
|
498
495
|
}
|
|
499
496
|
static get C() {
|
|
500
|
-
return
|
|
497
|
+
return b;
|
|
501
498
|
}
|
|
502
499
|
static setPresentationError(e) {
|
|
503
500
|
this.presentationError = e;
|
|
@@ -533,25 +530,25 @@ class i extends at {
|
|
|
533
530
|
return e ? (this.createPeerconnection(e), !0) : !1;
|
|
534
531
|
}
|
|
535
532
|
createPeerconnection(e) {
|
|
536
|
-
const t =
|
|
533
|
+
const t = W();
|
|
537
534
|
t.id = "mainaudio1";
|
|
538
535
|
const r = [t];
|
|
539
|
-
if (
|
|
540
|
-
const a =
|
|
536
|
+
if (dt(e)) {
|
|
537
|
+
const a = j();
|
|
541
538
|
a.id = "mainvideo1", r.push(a);
|
|
542
539
|
}
|
|
543
|
-
this.connection = new
|
|
540
|
+
this.connection = new it(void 0, r), this.trigger("peerconnection", { peerconnection: this.connection }), this.addStream(e);
|
|
544
541
|
}
|
|
545
542
|
connect(e, { mediaStream: t } = {}) {
|
|
546
|
-
const r =
|
|
543
|
+
const r = at(e);
|
|
547
544
|
return this.initPeerconnection(t), this.timeoutConnect = setTimeout(() => {
|
|
548
|
-
e.includes(
|
|
545
|
+
e.includes(ct) ? this.trigger("failed", {
|
|
549
546
|
originator: "remote",
|
|
550
547
|
message: "IncomingResponse",
|
|
551
548
|
cause: "Rejected"
|
|
552
549
|
}) : (this.trigger("connecting"), this.timeoutNewInfo = setTimeout(() => {
|
|
553
550
|
this.newInfo({
|
|
554
|
-
originator:
|
|
551
|
+
originator: G.REMOTE,
|
|
555
552
|
// @ts-expect-error
|
|
556
553
|
request: {
|
|
557
554
|
getHeader: (o) => o === "content-type" ? "application/vinteo.webrtc.roomname" : o === "x-webrtc-enter-room" ? r : o === "x-webrtc-participant-name" ? "Test Caller 1" : ""
|
|
@@ -623,7 +620,7 @@ class i extends at {
|
|
|
623
620
|
clearTimeout(this.timeoutStartPresentation), clearTimeout(this.timeoutConnect), clearTimeout(this.timeoutNewInfo), clearTimeout(this.timeoutAccepted), clearTimeout(this.timeoutConfirmed);
|
|
624
621
|
}
|
|
625
622
|
}
|
|
626
|
-
class
|
|
623
|
+
class ht {
|
|
627
624
|
extraHeaders = [];
|
|
628
625
|
setExtraHeaders(e) {
|
|
629
626
|
this.extraHeaders = e;
|
|
@@ -632,25 +629,25 @@ class mt {
|
|
|
632
629
|
setExtraContactParams() {
|
|
633
630
|
}
|
|
634
631
|
}
|
|
635
|
-
const c = "PASSWORD_CORRECT", R = "PASSWORD_CORRECT_2",
|
|
632
|
+
const c = "PASSWORD_CORRECT", R = "PASSWORD_CORRECT_2", Et = "NAME_INCORRECT", h = 400, l = {
|
|
636
633
|
url: "wss://sipServerUrl/webrtc/wss/",
|
|
637
634
|
sip_uri: "sip:sipServerUrl;transport=ws",
|
|
638
635
|
via_transport: "WSS"
|
|
639
|
-
},
|
|
636
|
+
}, M = {
|
|
640
637
|
status_code: 200,
|
|
641
638
|
reason_phrase: "OK"
|
|
642
|
-
},
|
|
639
|
+
}, A = {
|
|
643
640
|
status_code: 401,
|
|
644
641
|
reason_phrase: "Unauthorized"
|
|
645
642
|
};
|
|
646
|
-
class s {
|
|
643
|
+
class s extends O {
|
|
647
644
|
static isAvailableTelephony = !0;
|
|
648
645
|
static startError;
|
|
649
646
|
static countStartError = Number.POSITIVE_INFINITY;
|
|
650
647
|
static countStarts = 0;
|
|
651
648
|
events;
|
|
652
649
|
registratorInner;
|
|
653
|
-
// @ts-expect-error
|
|
650
|
+
// @ts-expect-error
|
|
654
651
|
call = jest.fn(
|
|
655
652
|
(e, t) => {
|
|
656
653
|
const { mediaStream: r, eventHandlers: o } = t;
|
|
@@ -678,23 +675,42 @@ class s {
|
|
|
678
675
|
stop = jest.fn(() => {
|
|
679
676
|
this.startedTimeout && clearTimeout(this.startedTimeout), this.stopedTimeout && clearTimeout(this.stopedTimeout), this.unregister(), this.isStarted() ? this.stopedTimeout = setTimeout(() => {
|
|
680
677
|
this.trigger("disconnected", { error: !0, socket: l });
|
|
681
|
-
},
|
|
678
|
+
}, h) : this.trigger("disconnected", { error: !0, socket: l });
|
|
682
679
|
});
|
|
683
680
|
removeAllListeners = jest.fn(() => (this.events.removeEventHandlers(), this));
|
|
684
681
|
once = jest.fn((e, t) => (this.events.once(e, t), this));
|
|
682
|
+
configuration;
|
|
685
683
|
startedTimeout;
|
|
686
684
|
stopedTimeout;
|
|
687
685
|
session;
|
|
688
686
|
isRegisteredInner;
|
|
689
687
|
isConnectedInner;
|
|
690
|
-
configuration;
|
|
691
688
|
constructor(e) {
|
|
692
|
-
this.events = new
|
|
689
|
+
super(), this.events = new v(y);
|
|
693
690
|
const [t, r] = e.uri.split(":"), [o, a] = r.split("@"), u = {
|
|
694
691
|
...e,
|
|
695
|
-
uri: new
|
|
692
|
+
uri: new d(t, o, a)
|
|
696
693
|
};
|
|
697
|
-
this.configuration = u, this.registratorInner = new
|
|
694
|
+
this.configuration = u, this.registratorInner = new ht();
|
|
695
|
+
}
|
|
696
|
+
// eslint-disable-next-line @typescript-eslint/class-methods-use-this
|
|
697
|
+
get C() {
|
|
698
|
+
throw new Error("Method not implemented.");
|
|
699
|
+
}
|
|
700
|
+
// eslint-disable-next-line @typescript-eslint/class-methods-use-this
|
|
701
|
+
get status() {
|
|
702
|
+
throw new Error("Method not implemented.");
|
|
703
|
+
}
|
|
704
|
+
// eslint-disable-next-line @typescript-eslint/class-methods-use-this
|
|
705
|
+
get contact() {
|
|
706
|
+
throw new Error("Method not implemented.");
|
|
707
|
+
}
|
|
708
|
+
// eslint-disable-next-line @typescript-eslint/class-methods-use-this
|
|
709
|
+
get transport() {
|
|
710
|
+
throw new Error("Method not implemented.");
|
|
711
|
+
}
|
|
712
|
+
static C() {
|
|
713
|
+
throw new Error("Method not implemented.");
|
|
698
714
|
}
|
|
699
715
|
static setStartError(e, { count: t = Number.POSITIVE_INFINITY } = {}) {
|
|
700
716
|
s.startError = e, s.countStartError = t;
|
|
@@ -714,6 +730,18 @@ class s {
|
|
|
714
730
|
on(e, t) {
|
|
715
731
|
return this.events.on(e, t), this;
|
|
716
732
|
}
|
|
733
|
+
// eslint-disable-next-line @typescript-eslint/class-methods-use-this
|
|
734
|
+
sendMessage() {
|
|
735
|
+
throw new Error("Method not implemented.");
|
|
736
|
+
}
|
|
737
|
+
// eslint-disable-next-line @typescript-eslint/class-methods-use-this
|
|
738
|
+
normalizeTarget() {
|
|
739
|
+
throw new Error("Method not implemented.");
|
|
740
|
+
}
|
|
741
|
+
// eslint-disable-next-line @typescript-eslint/class-methods-use-this, @typescript-eslint/no-unnecessary-type-parameters
|
|
742
|
+
get() {
|
|
743
|
+
throw new Error("Method not implemented.");
|
|
744
|
+
}
|
|
717
745
|
off(e, t) {
|
|
718
746
|
return this.events.off(e, t), this;
|
|
719
747
|
}
|
|
@@ -739,13 +767,13 @@ class s {
|
|
|
739
767
|
register() {
|
|
740
768
|
this.startedTimeout && clearTimeout(this.startedTimeout);
|
|
741
769
|
const { password: e, register: t, uri: r } = this.configuration;
|
|
742
|
-
t === !0 && r.user.includes(
|
|
743
|
-
this.trigger("registrationFailed", { response:
|
|
744
|
-
},
|
|
745
|
-
this.trigger("registered", { response:
|
|
746
|
-
},
|
|
747
|
-
this.trigger("registrationFailed", { response:
|
|
748
|
-
},
|
|
770
|
+
t === !0 && r.user.includes(Et) ? (this.isRegisteredInner = !1, this.isConnectedInner = !1, this.startedTimeout = setTimeout(() => {
|
|
771
|
+
this.trigger("registrationFailed", { response: A, cause: S.causes.REJECTED });
|
|
772
|
+
}, h)) : !this.isRegistered() && t === !0 && (e === c || e === R) ? (this.isRegisteredInner = !0, this.startedTimeout = setTimeout(() => {
|
|
773
|
+
this.trigger("registered", { response: M });
|
|
774
|
+
}, h)) : t === !0 && e !== c && e !== R && (this.isRegisteredInner = !1, this.isConnectedInner = !1, this.startedTimeout = setTimeout(() => {
|
|
775
|
+
this.trigger("registrationFailed", { response: A, cause: S.causes.REJECTED });
|
|
776
|
+
}, h)), s.isAvailableTelephony ? (this.trigger("connected", { socket: l }), this.isConnectedInner = !0) : this.stop();
|
|
749
777
|
}
|
|
750
778
|
/**
|
|
751
779
|
* unregister
|
|
@@ -753,7 +781,7 @@ class s {
|
|
|
753
781
|
* @returns {undefined}
|
|
754
782
|
*/
|
|
755
783
|
unregister() {
|
|
756
|
-
this.isRegisteredInner = !1, this.isConnectedInner = !1, this.trigger("unregistered", { response:
|
|
784
|
+
this.isRegisteredInner = !1, this.isConnectedInner = !1, this.trigger("unregistered", { response: M });
|
|
757
785
|
}
|
|
758
786
|
isRegistered() {
|
|
759
787
|
return this.isRegisteredInner === !0;
|
|
@@ -776,125 +804,125 @@ class s {
|
|
|
776
804
|
return this.registratorInner;
|
|
777
805
|
}
|
|
778
806
|
}
|
|
779
|
-
class
|
|
807
|
+
class mt {
|
|
780
808
|
url;
|
|
781
809
|
constructor(e) {
|
|
782
810
|
this.url = e;
|
|
783
811
|
}
|
|
784
812
|
}
|
|
785
|
-
class
|
|
813
|
+
class ut extends O {
|
|
786
814
|
contentType;
|
|
787
815
|
body;
|
|
788
816
|
constructor(e, t) {
|
|
789
817
|
super(), this.contentType = e, this.body = t;
|
|
790
818
|
}
|
|
791
819
|
}
|
|
792
|
-
const g = "remote",
|
|
820
|
+
const g = "remote", lt = (n, e) => {
|
|
793
821
|
const t = new T(e), r = {
|
|
794
822
|
originator: g,
|
|
795
823
|
request: t,
|
|
796
|
-
info: new
|
|
824
|
+
info: new ut("", "")
|
|
797
825
|
};
|
|
798
826
|
n.newInfo(r);
|
|
799
|
-
},
|
|
827
|
+
}, pt = (n, e) => {
|
|
800
828
|
const r = { event: "sipEvent", request: new T(e) };
|
|
801
829
|
n.newSipEvent(r);
|
|
802
|
-
},
|
|
830
|
+
}, gt = (n, {
|
|
803
831
|
incomingNumber: e = "1234",
|
|
804
832
|
displayName: t,
|
|
805
833
|
host: r
|
|
806
834
|
}) => {
|
|
807
|
-
const o = new i({ originator: g, eventHandlers: {} }), a = new
|
|
808
|
-
o.remote_identity = new
|
|
835
|
+
const o = new i({ originator: g, eventHandlers: {} }), a = new d("sip", e, r);
|
|
836
|
+
o.remote_identity = new P(a, t);
|
|
809
837
|
const u = new T([]);
|
|
810
838
|
n.trigger("newRTCSession", {
|
|
811
839
|
originator: g,
|
|
812
840
|
session: o,
|
|
813
841
|
request: u
|
|
814
842
|
});
|
|
815
|
-
},
|
|
843
|
+
}, Tt = (n, e) => {
|
|
816
844
|
e ? n.trigger("failed", e) : n.trigger("failed", n);
|
|
817
|
-
},
|
|
818
|
-
triggerNewInfo:
|
|
819
|
-
triggerNewSipEvent:
|
|
820
|
-
triggerIncomingSession:
|
|
821
|
-
triggerFailIncomingSession:
|
|
822
|
-
WebSocketInterface:
|
|
845
|
+
}, L = {
|
|
846
|
+
triggerNewInfo: lt,
|
|
847
|
+
triggerNewSipEvent: pt,
|
|
848
|
+
triggerIncomingSession: gt,
|
|
849
|
+
triggerFailIncomingSession: Tt,
|
|
850
|
+
WebSocketInterface: mt,
|
|
823
851
|
UA: s,
|
|
824
852
|
C: {
|
|
825
853
|
INVITE: "INVITE"
|
|
826
854
|
}
|
|
827
|
-
}, _ = "user",
|
|
855
|
+
}, _ = "user", E = "displayName", I = "SIP_SERVER_URL", k = "SIP_WEB_SOCKET_SERVER_URL", _t = new L.WebSocketInterface(`wss://${k}/webrtc/wss/`), w = {
|
|
828
856
|
displayName: "DISPLAY_NAME",
|
|
829
857
|
userAgent: "Chrome",
|
|
830
858
|
sipServerIp: I,
|
|
831
|
-
sipServerUrl:
|
|
832
|
-
},
|
|
833
|
-
...
|
|
859
|
+
sipServerUrl: k
|
|
860
|
+
}, Mt = {
|
|
861
|
+
...w,
|
|
834
862
|
displayName: "DISPLAY_NAME",
|
|
835
863
|
register: !1
|
|
836
|
-
},
|
|
837
|
-
...
|
|
864
|
+
}, It = {
|
|
865
|
+
...w,
|
|
838
866
|
user: _,
|
|
839
867
|
password: c,
|
|
840
868
|
register: !0
|
|
841
|
-
},
|
|
842
|
-
...
|
|
843
|
-
displayName:
|
|
844
|
-
},
|
|
845
|
-
...
|
|
846
|
-
displayName:
|
|
869
|
+
}, At = {
|
|
870
|
+
...It,
|
|
871
|
+
displayName: E
|
|
872
|
+
}, Ot = {
|
|
873
|
+
...w,
|
|
874
|
+
displayName: E,
|
|
847
875
|
register: !1
|
|
848
876
|
}, m = {
|
|
849
877
|
session_timers: !1,
|
|
850
|
-
sockets: [
|
|
878
|
+
sockets: [_t],
|
|
851
879
|
user_agent: "Chrome",
|
|
852
880
|
sdpSemantics: "unified-plan",
|
|
853
881
|
register_expires: 300,
|
|
854
882
|
connection_recovery_max_interval: 6,
|
|
855
883
|
connection_recovery_min_interval: 2
|
|
856
|
-
},
|
|
884
|
+
}, Pt = {
|
|
857
885
|
...m,
|
|
858
886
|
password: c,
|
|
859
|
-
uri: new
|
|
887
|
+
uri: new d("sip", _, I),
|
|
860
888
|
display_name: "DISPLAY_NAME",
|
|
861
889
|
register: !0
|
|
862
|
-
},
|
|
890
|
+
}, vt = {
|
|
863
891
|
...m,
|
|
864
892
|
password: c,
|
|
865
|
-
uri: new
|
|
866
|
-
display_name:
|
|
893
|
+
uri: new d("sip", _, I),
|
|
894
|
+
display_name: E,
|
|
867
895
|
register: !0
|
|
868
|
-
},
|
|
896
|
+
}, Dt = {
|
|
869
897
|
...m,
|
|
870
|
-
display_name:
|
|
898
|
+
display_name: E,
|
|
871
899
|
register: !1
|
|
872
|
-
},
|
|
900
|
+
}, yt = {
|
|
873
901
|
...m,
|
|
874
902
|
display_name: "DISPLAY_NAME",
|
|
875
903
|
register: !1
|
|
876
|
-
}, wt = "10.10.10.10",
|
|
877
|
-
JsSIP:
|
|
904
|
+
}, wt = "10.10.10.10", Lt = [`X-Vinteo-Remote: ${wt}`], kt = () => new U({
|
|
905
|
+
JsSIP: L
|
|
878
906
|
});
|
|
879
907
|
export {
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
908
|
+
ct as FAILED_CONFERENCE_NUMBER,
|
|
909
|
+
L as JsSIP,
|
|
910
|
+
Et as NAME_INCORRECT,
|
|
883
911
|
c as PASSWORD_CORRECT,
|
|
884
912
|
R as PASSWORD_CORRECT_2,
|
|
885
913
|
I as SIP_SERVER_URL,
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
914
|
+
k as SIP_WEB_SOCKET_SERVER_URL,
|
|
915
|
+
It as dataForConnectionWithAuthorization,
|
|
916
|
+
At as dataForConnectionWithAuthorizationWithDisplayName,
|
|
917
|
+
Ot as dataForConnectionWithoutAuthorization,
|
|
918
|
+
Mt as dataForConnectionWithoutAuthorizationWithoutDisplayName,
|
|
919
|
+
E as displayName,
|
|
920
|
+
kt as doMockSipConnector,
|
|
921
|
+
Lt as extraHeadersRemoteAddress,
|
|
894
922
|
wt as remoteAddress,
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
923
|
+
Pt as uaConfigurationWithAuthorization,
|
|
924
|
+
vt as uaConfigurationWithAuthorizationWithDisplayName,
|
|
925
|
+
Dt as uaConfigurationWithoutAuthorization,
|
|
926
|
+
yt as uaConfigurationWithoutAuthorizationWithoutDisplayName,
|
|
899
927
|
_ as user
|
|
900
928
|
};
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./@SipConnector-DwgaqxCG.cjs");require("events-constructor");const k=require("@krivega/cancelable-promise"),W=require("repeated-calls"),H=require("ts-debounce"),Y=require("ua-parser-js"),j=require("sequent-promises"),K=require("stack-promises"),X=e=>e instanceof Object&&("originator"in e||"cause"in e),J=e=>{if(k.isCanceledError(e))return!0;if(!X(e))return!1;const{originator:n,cause:r}=e;return typeof r=="string"?r===t.ECallCause.REQUEST_TIMEOUT||r===t.ECallCause.REJECTED||n==="local"&&(r===t.ECallCause.CANCELED||r===t.ECallCause.BYE):!1};var C=(e=>(e.DISCONNECTED="system:disconnected",e.CONNECTING="system:connecting",e.READY_TO_CALL="system:readyToCall",e.CALL_CONNECTING="system:callConnecting",e.CALL_ACTIVE="system:callActive",e.CONNECTION_FAILED="system:connectionFailed",e.CALL_FAILED="system:callFailed",e))(C||{});const V=e=>e.connection.value,F=e=>e.call.value,z=e=>e.incoming.value,Q=e=>{if(e.incoming.value!==t.EState$2.IDLE)return e.incoming.context.remoteCallerData},Z=e=>e.presentation.value,ee=e=>{const n=F(e);return n===t.EState$1.IN_CALL||n===t.EState$1.ACCEPTED},ne=e=>{const n=V(e),r=F(e);if(n===t.EState.IDLE||n===t.EState.DISCONNECTED)return C.DISCONNECTED;if(n===t.EState.FAILED)return C.CONNECTION_FAILED;if(n===t.EState.PREPARING||n===t.EState.CONNECTING||n===t.EState.CONNECTED||n===t.EState.REGISTERED)return C.CONNECTING;switch(r){case t.EState$1.IDLE:return C.READY_TO_CALL;case t.EState$1.CONNECTING:return C.CALL_CONNECTING;case t.EState$1.ACCEPTED:case t.EState$1.IN_CALL:return C.CALL_ACTIVE;case t.EState$1.ENDED:return C.READY_TO_CALL;case t.EState$1.FAILED:return C.CALL_FAILED;default:return C.READY_TO_CALL}},te={selectConnectionStatus:V,selectCallStatus:F,selectIncomingStatus:z,selectIncomingRemoteCaller:Q,selectPresentationStatus:Z,selectIsInCall:ee,selectSystemStatus:ne},re=()=>globalThis.process?.versions?.electron!==void 0,x=()=>{const e=new Y.UAParser,{name:n}=e.getBrowser(),r=re();return{isChrome:n==="Chrome"||r}},v=e=>{const{url:n,cause:r}=e;let o=n;return(r===t.ECallCause.BAD_MEDIA_DESCRIPTION||r===t.ECallCause.NOT_FOUND)&&(o=`${e.message.to.uri.user}@${e.message.to.uri.host}`),o};var B=(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))(B||{});const oe=new Error("Unknown error"),se=(e=oe)=>{const{cause:n,socket:r}=e;let o="CONNECT_SERVER_FAILED";switch(n){case"Forbidden":{o="WRONG_USER_OR_PASSWORD";break}case t.ECallCause.BAD_MEDIA_DESCRIPTION:{o="BAD_MEDIA_ERROR";break}case t.ECallCause.NOT_FOUND:{o="NOT_FOUND_ERROR";break}default:r!==void 0&&r._ws?.readyState===3?o="WS_CONNECTION_FAILED":v(e)!==void 0&&v(e)!==""&&(o="CONNECT_SERVER_FAILED_BY_LINK")}return o},ae=e=>{let n="";try{n=JSON.stringify(e)}catch(r){t.logger("failed to stringify message",r)}return n},ce=new Error("Unknown error"),ie=(e=ce)=>{const{code:n,cause:r,message:o}=e,a=v(e),s={code:"",cause:"",message:""};return typeof o=="object"&&o!==null?s.message=ae(o):o&&(s.message=String(o)),a!==void 0&&a!==""&&(s.link=a),n!==void 0&&n!==""&&(s.code=n),r!==void 0&&r!==""&&(s.cause=r),s},le=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:B,getLinkError:v,getTypeFromError:se,getValuesFromError:ie},Symbol.toStringTag,{value:"Module"})),ue=({sessionId:e,remoteAddress:n,isMutedAudio:r,isMutedVideo:o,isRegistered:a,isPresentationCall:s})=>{const c=[],l=r?"0":"1",g=o?"0":"1";return c.push(`X-Vinteo-Mic-State: ${l}`,`X-Vinteo-MainCam-State: ${g}`),(a===!1||a===void 0)&&c.push("X-Vinteo-Purgatory-Call: yes"),e!==void 0&&e!==""&&c.push(`X-Vinteo-Session: ${e}`),s===!0&&c.push("X-Vinteo-Presentation-Call: yes"),n!==void 0&&n!==""&&c.push(`X-Vinteo-Remote: ${n}`),c},Ce="[@*!|]",ge="_",de=e=>{let n=e;return n=n.replaceAll(new RegExp(Ce,"g"),ge),n},Se=({appName:e,appVersion:n,browserName:r,browserVersion:o})=>{const s=`${de(e)} ${n}`;return`ChromeNew - ${r===void 0?s:`${r} ${o}, ${s}`}`},Ee=({isUnifiedSdpSemantic:e,appVersion:n,browserName:r,browserVersion:o,appName:a})=>e?Se({appVersion:n,browserName:r,browserVersion:o,appName:a}):"Chrome",q="purgatory",D=e=>e===q,fe=e=>n=>[...n].map(o=>async()=>e(o)),me=async({accumulatedKeys:e,sendKey:n,canRunTask:r})=>{const a=fe(n)(e);return j.sequentPromises(a,r)},pe=e=>r=>(t.logger("onStartMainCam"),e.on("api:admin:start-main-cam",r)),he=e=>r=>(t.logger("onStartMic"),e.on("api:admin:start-mic",r)),Re=e=>r=>(t.logger("onStopMainCam"),e.on("api:admin:stop-main-cam",r)),Te=e=>r=>(t.logger("onStopMic"),e.on("api:admin:stop-mic",r)),Ne=({sipConnector:e})=>{const n=(u,d)=>({isSyncForced:S})=>{if(S===!0){u();return}d()},r=pe(e),o=Re(e),a=he(e),s=Te(e);let c,l,g,p;const N=({onStartMainCamForced:u,onStartMainCamNotForced:d,onStopMainCamForced:S,onStopMainCamNotForced:R,onStartMicForced:T,onStartMicNotForced:A,onStopMicForced:b,onStopMicNotForced:P})=>{const E=n(u,d);c=r(E);const f=n(S,R);l=o(f);const I=n(T,A);g=a(I);const m=n(b,P);p=s(m)},O=()=>{c?.(),l?.(),g?.(),p?.()};return{start:u=>{N(u)},stop:()=>{O()}}},Oe=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:q,createSyncMediaState:Ne,createUaParser:x,error:le,getExtraHeaders:ue,getUserAgent:Ee,hasPurgatory:D,prepareMediaStream:t.prepareMediaStream,sendDtmfAccumulated:me,sendOffer:t.sendOffer,setEncodingsToSender:t.setEncodingsToSender,setParametersToSender:t.setParametersToSender},Symbol.toStringTag,{value:"Module"})),_e=()=>x().isChrome,Ae=e=>{if(!k.isCanceledError(e)&&!W.hasCanceledError(e)&&!t.hasNotReadyForConnectionError(e))throw e;return{configuration:void 0,isSuccessful:!1}},be=({kind:e,readyState:n})=>e==="video"&&n==="live",w=(e,n,{onEnterPurgatory:r,onEnterConference:o})=>{D(e)?r&&r():o&&o({isSuccessProgressCall:n})},U=(e,n)=>{e(),n&&n()},$=(e,n,r)=>{throw e&&e(),n(),r},Pe=new Set(["on","once","onceRace","wait","off","sendDTMF","hangUp","declineToIncomingCall","sendChannels","checkTelephony","waitChannels","ping","startAutoConnect","stopAutoConnect","connection","isConfigured","isRegistered"]);class ve{on;once;onceRace;wait;off;sendDTMF;hangUp;declineToIncomingCall;sendChannels;checkTelephony;waitChannels;ping;startAutoConnect;stopAutoConnect;connection;isConfigured;isRegistered;sipConnector;constructor(n){return this.sipConnector=n,new Proxy(this,{get:(r,o,a)=>{if(typeof o=="string"&&Pe.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(r,o,a);return typeof s=="function"?s.bind(r):s}})}connectToServer=async(n,r)=>this.sipConnector.connect(n,r).then(o=>(t.logger("connectToServer then"),{configuration:o,isSuccessful:!0})).catch(async o=>(t.logger("connectToServer catch: error",o),Ae(o)));callToServer=async n=>{const{conference:r,mediaStream:o,extraHeaders:a,iceServers:s,contentHint:c,degradationPreference:l,sendEncodings:g,offerToReceiveAudio:p,offerToReceiveVideo:N,directionVideo:O,directionAudio:_,onBeforeProgressCall:h,onSuccessProgressCall:u,onEnterPurgatory:d,onEnterConference:S,onFailProgressCall:R,onFinishProgressCall:T,onEndedCall:A,onAddedTransceiver:b}=n;t.logger("callToServer",n);const P=async()=>(t.logger("startCall"),this.sipConnector.call({mediaStream:o,extraHeaders:a,iceServers:s,contentHint:c,offerToReceiveAudio:p,offerToReceiveVideo:N,directionVideo:O,directionAudio:_,degradationPreference:l,onAddedTransceiver:b,sendEncodings:g,number:r}));let E=!1,f;const m=(t.logger("subscribeEnterConference: onEnterConference",S),this.sipConnector.on("api:enter-room",({room:i})=>{t.logger("enterRoom",{_room:i,isSuccessProgressCall:E}),f=i,(d??S)&&w(f,E,{onEnterPurgatory:d,onEnterConference:S})})),M=i=>(t.logger("onSuccess"),E=!0,u&&u({isPurgatory:D(f)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{U(m,A)}),i),y=i=>(t.logger("onFail"),$(R,m,i)),L=()=>{t.logger("onFinish"),T&&T()};return t.logger("onBeforeProgressCall"),h&&h(r),P().then(M).catch(i=>y(i)).finally(L)};disconnectFromServer=async()=>this.sipConnector.disconnect().then(()=>(t.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(n=>(t.logger("disconnectFromServer: catch",n),{isSuccessful:!1}));answerToIncomingCall=async n=>{const{mediaStream:r,extraHeaders:o,iceServers:a,contentHint:s,degradationPreference:c,sendEncodings:l,offerToReceiveAudio:g,offerToReceiveVideo:p,directionVideo:N,directionAudio:O,onBeforeProgressCall:_,onSuccessProgressCall:h,onEnterPurgatory:u,onEnterConference:d,onFailProgressCall:S,onFinishProgressCall:R,onEndedCall:T,onAddedTransceiver:A}=n;t.logger("answerToIncomingCall",n);const b=async()=>this.sipConnector.answerToIncomingCall({mediaStream:r,extraHeaders:o,iceServers:a,contentHint:s,offerToReceiveAudio:g,offerToReceiveVideo:p,directionVideo:N,directionAudio:O,degradationPreference:c,onAddedTransceiver:A,sendEncodings:l}),P=()=>{const{remoteCallerData:i}=this.sipConnector;return i.incomingNumber};let E=!1,f;const m=(t.logger("subscribeEnterConference: onEnterConference",d),this.sipConnector.on("api:enter-room",i=>{t.logger("enterRoom",{room:i.room,isSuccessProgressCall:E}),f=i.room,(u??d)&&w(f,E,{onEnterPurgatory:u,onEnterConference:d})})),M=i=>(t.logger("onSuccess"),E=!0,h&&h({isPurgatory:D(f)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{U(m,T)}),i),y=i=>(t.logger("onFail"),$(S,m,i)),L=()=>{t.logger("onFinish"),R&&R()};if(t.logger("onBeforeProgressCall"),_){const i=P();_(i)}return b().then(M).catch(i=>y(i)).finally(L)};updatePresentation=async({mediaStream:n,isP2P:r,contentHint:o,degradationPreference:a,sendEncodings:s,onAddedTransceiver:c})=>(t.logger("updatePresentation"),this.sipConnector.updatePresentation(n,{isP2P:r,contentHint:o,degradationPreference:a,onAddedTransceiver:c,sendEncodings:s}));startPresentation=async({mediaStream:n,isP2P:r,contentHint:o,degradationPreference:a,sendEncodings:s,callLimit:c,onAddedTransceiver:l})=>(t.logger("startPresentation"),this.sipConnector.startPresentation(n,{isP2P:r,contentHint:o,callLimit:c,degradationPreference:a,onAddedTransceiver:l,sendEncodings:s}));stopPresentation=async({isP2P:n=!1}={})=>(t.logger("stopPresentation"),this.sipConnector.stopPresentation({isP2P:n}).catch(r=>{t.logger(r)}));sendRefusalToTurnOnMic=async()=>{t.logger("sendRefusalToTurnOnMic"),await this.sipConnector.sendRefusalToTurnOnMic().catch(n=>{t.logger("sendRefusalToTurnOnMic: error",n)})};sendRefusalToTurnOnCam=async()=>{t.logger("sendRefusalToTurnOnCam"),await this.sipConnector.sendRefusalToTurnOnCam().catch(n=>{t.logger("sendRefusalToTurnOnCam: error",n)})};sendMediaState=async({isEnabledCam:n,isEnabledMic:r})=>{t.logger("sendMediaState"),await this.sipConnector.sendMediaState({cam:n,mic:r})};replaceMediaStream=async(n,{deleteExisting:r,addMissing:o,forceRenegotiation:a,contentHint:s,degradationPreference:c,sendEncodings:l,onAddedTransceiver:g})=>(t.logger("replaceMediaStream"),this.sipConnector.replaceMediaStream(n,{deleteExisting:r,addMissing:o,forceRenegotiation:a,contentHint:s,degradationPreference:c,onAddedTransceiver:g,sendEncodings:l}));askPermissionToEnableCam=async()=>{t.logger("askPermissionToEnableCam"),await this.sipConnector.askPermissionToEnableCam()};resolveHandleReadyRemoteStreamsDebounced=({onReadyRemoteStreams:n})=>H.debounce(()=>{const r=this.sipConnector.getRemoteStreams();t.logger("remoteStreams",r),n(r)},200);resolveHandleReadyRemoteStreams=({onReadyRemoteStreams:n})=>({track:r})=>{be(r)&&n()};getRemoteStreams=()=>(t.logger("getRemoteStreams"),this.sipConnector.getRemoteStreams());onUseLicense=n=>(t.logger("onUseLicense"),this.sipConnector.on("api:use-license",n));onMustStopPresentation=n=>(t.logger("onMustStopPresentation"),this.sipConnector.on("api:presentation:must-stop",n));onMoveToSpectators=n=>(t.logger("onMoveToSpectators"),this.sipConnector.on("api:participant:move-request-to-spectators",n));onMoveToParticipants=n=>(t.logger("onMoveToParticipants"),this.sipConnector.on("api:participant:move-request-to-participants",n));onStats=n=>(t.logger("onStats"),this.sipConnector.on("stats:collected",n));offStats=n=>{t.logger("offStats"),this.sipConnector.off("stats:collected",n)}}var G=(e=>(e.VP8="video/VP8",e.VP9="video/VP9",e.H264="video/H264",e.AV1="video/AV1",e.rtx="video/rtx",e.red="video/red",e.flexfec03="video/flexfec-03",e))(G||{});exports.ECallCause=t.ECallCause;exports.ECallStatus=t.EState$1;exports.EConnectionStatus=t.EState;exports.EContentUseLicense=t.EContentUseLicense;exports.EIncomingStatus=t.EState$2;exports.EPresentationStatus=t.EState$3;exports.EStatsTypes=t.EStatsTypes;exports.SipConnector=t.SipConnector;exports.StatsPeerConnection=t.StatsPeerConnection;exports.disableDebug=t.disableDebug;exports.enableDebug=t.enableDebug;exports.getCodecFromSender=t.getCodecFromSender;exports.hasCanceledStartPresentationError=t.hasCanceledStartPresentationError;Object.defineProperty(exports,"hasConnectionPromiseIsNotActualError",{enumerable:!0,get:()=>K.isPromiseIsNotActualError});exports.EMimeTypesVideoCodecs=G;exports.ESystemStatus=C;exports.SipConnectorFacade=ve;exports.hasAvailableStats=_e;exports.hasCanceledCallError=J;exports.sessionSelectors=te;exports.tools=Oe;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./@SipConnector-LDsMtM-F.cjs");require("events-constructor");const k=require("@krivega/cancelable-promise"),W=require("repeated-calls"),H=require("ts-debounce"),Y=require("ua-parser-js"),j=require("sequent-promises"),K=require("stack-promises"),X=e=>e instanceof Object&&("originator"in e||"cause"in e),J=e=>{if(k.isCanceledError(e))return!0;if(!X(e))return!1;const{originator:n,cause:r}=e;return typeof r=="string"?r===t.ECallCause.REQUEST_TIMEOUT||r===t.ECallCause.REJECTED||n==="local"&&(r===t.ECallCause.CANCELED||r===t.ECallCause.BYE):!1};var C=(e=>(e.DISCONNECTED="system:disconnected",e.CONNECTING="system:connecting",e.READY_TO_CALL="system:readyToCall",e.CALL_CONNECTING="system:callConnecting",e.CALL_ACTIVE="system:callActive",e.CONNECTION_FAILED="system:connectionFailed",e.CALL_FAILED="system:callFailed",e))(C||{});const V=e=>e.connection.value,F=e=>e.call.value,z=e=>e.incoming.value,Q=e=>{if(e.incoming.value!==t.EState$2.IDLE)return e.incoming.context.remoteCallerData},Z=e=>e.presentation.value,ee=e=>{const n=F(e);return n===t.EState$1.IN_CALL||n===t.EState$1.ACCEPTED},ne=e=>{const n=V(e),r=F(e);if(n===t.EState.IDLE||n===t.EState.DISCONNECTED)return C.DISCONNECTED;if(n===t.EState.FAILED)return C.CONNECTION_FAILED;if(n===t.EState.PREPARING||n===t.EState.CONNECTING||n===t.EState.CONNECTED||n===t.EState.REGISTERED)return C.CONNECTING;switch(r){case t.EState$1.IDLE:return C.READY_TO_CALL;case t.EState$1.CONNECTING:return C.CALL_CONNECTING;case t.EState$1.ACCEPTED:case t.EState$1.IN_CALL:return C.CALL_ACTIVE;case t.EState$1.ENDED:return C.READY_TO_CALL;case t.EState$1.FAILED:return C.CALL_FAILED;default:return C.READY_TO_CALL}},te={selectConnectionStatus:V,selectCallStatus:F,selectIncomingStatus:z,selectIncomingRemoteCaller:Q,selectPresentationStatus:Z,selectIsInCall:ee,selectSystemStatus:ne},re=()=>globalThis.process?.versions?.electron!==void 0,x=()=>{const e=new Y.UAParser,{name:n}=e.getBrowser(),r=re();return{isChrome:n==="Chrome"||r}},v=e=>{const{url:n,cause:r}=e;let o=n;return(r===t.ECallCause.BAD_MEDIA_DESCRIPTION||r===t.ECallCause.NOT_FOUND)&&(o=`${e.message.to.uri.user}@${e.message.to.uri.host}`),o};var B=(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))(B||{});const oe=new Error("Unknown error"),se=(e=oe)=>{const{cause:n,socket:r}=e;let o="CONNECT_SERVER_FAILED";switch(n){case"Forbidden":{o="WRONG_USER_OR_PASSWORD";break}case t.ECallCause.BAD_MEDIA_DESCRIPTION:{o="BAD_MEDIA_ERROR";break}case t.ECallCause.NOT_FOUND:{o="NOT_FOUND_ERROR";break}default:r!==void 0&&r._ws?.readyState===3?o="WS_CONNECTION_FAILED":v(e)!==void 0&&v(e)!==""&&(o="CONNECT_SERVER_FAILED_BY_LINK")}return o},ae=e=>{let n="";try{n=JSON.stringify(e)}catch(r){t.logger("failed to stringify message",r)}return n},ce=new Error("Unknown error"),ie=(e=ce)=>{const{code:n,cause:r,message:o}=e,a=v(e),s={code:"",cause:"",message:""};return typeof o=="object"&&o!==null?s.message=ae(o):o&&(s.message=String(o)),a!==void 0&&a!==""&&(s.link=a),n!==void 0&&n!==""&&(s.code=n),r!==void 0&&r!==""&&(s.cause=r),s},le=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:B,getLinkError:v,getTypeFromError:se,getValuesFromError:ie},Symbol.toStringTag,{value:"Module"})),ue=({sessionId:e,remoteAddress:n,isMutedAudio:r,isMutedVideo:o,isRegistered:a,isPresentationCall:s})=>{const c=[],l=r?"0":"1",g=o?"0":"1";return c.push(`X-Vinteo-Mic-State: ${l}`,`X-Vinteo-MainCam-State: ${g}`),(a===!1||a===void 0)&&c.push("X-Vinteo-Purgatory-Call: yes"),e!==void 0&&e!==""&&c.push(`X-Vinteo-Session: ${e}`),s===!0&&c.push("X-Vinteo-Presentation-Call: yes"),n!==void 0&&n!==""&&c.push(`X-Vinteo-Remote: ${n}`),c},Ce="[@*!|]",ge="_",de=e=>{let n=e;return n=n.replaceAll(new RegExp(Ce,"g"),ge),n},Se=({appName:e,appVersion:n,browserName:r,browserVersion:o})=>{const s=`${de(e)} ${n}`;return`ChromeNew - ${r===void 0?s:`${r} ${o}, ${s}`}`},Ee=({isUnifiedSdpSemantic:e,appVersion:n,browserName:r,browserVersion:o,appName:a})=>e?Se({appVersion:n,browserName:r,browserVersion:o,appName:a}):"Chrome",q="purgatory",D=e=>e===q,fe=e=>n=>[...n].map(o=>async()=>e(o)),me=async({accumulatedKeys:e,sendKey:n,canRunTask:r})=>{const a=fe(n)(e);return j.sequentPromises(a,r)},pe=e=>r=>(t.logger("onStartMainCam"),e.on("api:admin:start-main-cam",r)),he=e=>r=>(t.logger("onStartMic"),e.on("api:admin:start-mic",r)),Re=e=>r=>(t.logger("onStopMainCam"),e.on("api:admin:stop-main-cam",r)),Te=e=>r=>(t.logger("onStopMic"),e.on("api:admin:stop-mic",r)),Ne=({sipConnector:e})=>{const n=(u,d)=>({isSyncForced:S})=>{if(S===!0){u();return}d()},r=pe(e),o=Re(e),a=he(e),s=Te(e);let c,l,g,p;const N=({onStartMainCamForced:u,onStartMainCamNotForced:d,onStopMainCamForced:S,onStopMainCamNotForced:R,onStartMicForced:T,onStartMicNotForced:A,onStopMicForced:b,onStopMicNotForced:P})=>{const E=n(u,d);c=r(E);const f=n(S,R);l=o(f);const I=n(T,A);g=a(I);const m=n(b,P);p=s(m)},O=()=>{c?.(),l?.(),g?.(),p?.()};return{start:u=>{N(u)},stop:()=>{O()}}},Oe=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:q,createSyncMediaState:Ne,createUaParser:x,error:le,getExtraHeaders:ue,getUserAgent:Ee,hasPurgatory:D,prepareMediaStream:t.prepareMediaStream,sendDtmfAccumulated:me,sendOffer:t.sendOffer,setEncodingsToSender:t.setEncodingsToSender,setParametersToSender:t.setParametersToSender},Symbol.toStringTag,{value:"Module"})),_e=()=>x().isChrome,Ae=e=>{if(!k.isCanceledError(e)&&!W.hasCanceledError(e)&&!t.hasNotReadyForConnectionError(e))throw e;return{configuration:void 0,isSuccessful:!1}},be=({kind:e,readyState:n})=>e==="video"&&n==="live",w=(e,n,{onEnterPurgatory:r,onEnterConference:o})=>{D(e)?r&&r():o&&o({isSuccessProgressCall:n})},U=(e,n)=>{e(),n&&n()},$=(e,n,r)=>{throw e&&e(),n(),r},Pe=new Set(["on","once","onceRace","wait","off","sendDTMF","hangUp","declineToIncomingCall","sendChannels","checkTelephony","waitChannels","ping","startAutoConnect","stopAutoConnect","connection","isConfigured","isRegistered"]);class ve{on;once;onceRace;wait;off;sendDTMF;hangUp;declineToIncomingCall;sendChannels;checkTelephony;waitChannels;ping;startAutoConnect;stopAutoConnect;connection;isConfigured;isRegistered;sipConnector;constructor(n){return this.sipConnector=n,new Proxy(this,{get:(r,o,a)=>{if(typeof o=="string"&&Pe.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(r,o,a);return typeof s=="function"?s.bind(r):s}})}connectToServer=async(n,r)=>this.sipConnector.connect(n,r).then(o=>(t.logger("connectToServer then"),{configuration:o,isSuccessful:!0})).catch(async o=>(t.logger("connectToServer catch: error",o),Ae(o)));callToServer=async n=>{const{conference:r,mediaStream:o,extraHeaders:a,iceServers:s,contentHint:c,degradationPreference:l,sendEncodings:g,offerToReceiveAudio:p,offerToReceiveVideo:N,directionVideo:O,directionAudio:_,onBeforeProgressCall:h,onSuccessProgressCall:u,onEnterPurgatory:d,onEnterConference:S,onFailProgressCall:R,onFinishProgressCall:T,onEndedCall:A,onAddedTransceiver:b}=n;t.logger("callToServer",n);const P=async()=>(t.logger("startCall"),this.sipConnector.call({mediaStream:o,extraHeaders:a,iceServers:s,contentHint:c,offerToReceiveAudio:p,offerToReceiveVideo:N,directionVideo:O,directionAudio:_,degradationPreference:l,onAddedTransceiver:b,sendEncodings:g,number:r}));let E=!1,f;const m=(t.logger("subscribeEnterConference: onEnterConference",S),this.sipConnector.on("api:enter-room",({room:i})=>{t.logger("enterRoom",{_room:i,isSuccessProgressCall:E}),f=i,(d??S)&&w(f,E,{onEnterPurgatory:d,onEnterConference:S})})),M=i=>(t.logger("onSuccess"),E=!0,u&&u({isPurgatory:D(f)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{U(m,A)}),i),y=i=>(t.logger("onFail"),$(R,m,i)),L=()=>{t.logger("onFinish"),T&&T()};return t.logger("onBeforeProgressCall"),h&&h(r),P().then(M).catch(i=>y(i)).finally(L)};disconnectFromServer=async()=>this.sipConnector.disconnect().then(()=>(t.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(n=>(t.logger("disconnectFromServer: catch",n),{isSuccessful:!1}));answerToIncomingCall=async n=>{const{mediaStream:r,extraHeaders:o,iceServers:a,contentHint:s,degradationPreference:c,sendEncodings:l,offerToReceiveAudio:g,offerToReceiveVideo:p,directionVideo:N,directionAudio:O,onBeforeProgressCall:_,onSuccessProgressCall:h,onEnterPurgatory:u,onEnterConference:d,onFailProgressCall:S,onFinishProgressCall:R,onEndedCall:T,onAddedTransceiver:A}=n;t.logger("answerToIncomingCall",n);const b=async()=>this.sipConnector.answerToIncomingCall({mediaStream:r,extraHeaders:o,iceServers:a,contentHint:s,offerToReceiveAudio:g,offerToReceiveVideo:p,directionVideo:N,directionAudio:O,degradationPreference:c,onAddedTransceiver:A,sendEncodings:l}),P=()=>{const{remoteCallerData:i}=this.sipConnector;return i.incomingNumber};let E=!1,f;const m=(t.logger("subscribeEnterConference: onEnterConference",d),this.sipConnector.on("api:enter-room",i=>{t.logger("enterRoom",{room:i.room,isSuccessProgressCall:E}),f=i.room,(u??d)&&w(f,E,{onEnterPurgatory:u,onEnterConference:d})})),M=i=>(t.logger("onSuccess"),E=!0,h&&h({isPurgatory:D(f)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{U(m,T)}),i),y=i=>(t.logger("onFail"),$(S,m,i)),L=()=>{t.logger("onFinish"),R&&R()};if(t.logger("onBeforeProgressCall"),_){const i=P();_(i)}return b().then(M).catch(i=>y(i)).finally(L)};updatePresentation=async({mediaStream:n,isP2P:r,contentHint:o,degradationPreference:a,sendEncodings:s,onAddedTransceiver:c})=>(t.logger("updatePresentation"),this.sipConnector.updatePresentation(n,{isP2P:r,contentHint:o,degradationPreference:a,onAddedTransceiver:c,sendEncodings:s}));startPresentation=async({mediaStream:n,isP2P:r,contentHint:o,degradationPreference:a,sendEncodings:s,callLimit:c,onAddedTransceiver:l})=>(t.logger("startPresentation"),this.sipConnector.startPresentation(n,{isP2P:r,contentHint:o,callLimit:c,degradationPreference:a,onAddedTransceiver:l,sendEncodings:s}));stopPresentation=async({isP2P:n=!1}={})=>(t.logger("stopPresentation"),this.sipConnector.stopPresentation({isP2P:n}).catch(r=>{t.logger(r)}));sendRefusalToTurnOnMic=async()=>{t.logger("sendRefusalToTurnOnMic"),await this.sipConnector.sendRefusalToTurnOnMic().catch(n=>{t.logger("sendRefusalToTurnOnMic: error",n)})};sendRefusalToTurnOnCam=async()=>{t.logger("sendRefusalToTurnOnCam"),await this.sipConnector.sendRefusalToTurnOnCam().catch(n=>{t.logger("sendRefusalToTurnOnCam: error",n)})};sendMediaState=async({isEnabledCam:n,isEnabledMic:r})=>{t.logger("sendMediaState"),await this.sipConnector.sendMediaState({cam:n,mic:r})};replaceMediaStream=async(n,{deleteExisting:r,addMissing:o,forceRenegotiation:a,contentHint:s,degradationPreference:c,sendEncodings:l,onAddedTransceiver:g})=>(t.logger("replaceMediaStream"),this.sipConnector.replaceMediaStream(n,{deleteExisting:r,addMissing:o,forceRenegotiation:a,contentHint:s,degradationPreference:c,onAddedTransceiver:g,sendEncodings:l}));askPermissionToEnableCam=async()=>{t.logger("askPermissionToEnableCam"),await this.sipConnector.askPermissionToEnableCam()};resolveHandleReadyRemoteStreamsDebounced=({onReadyRemoteStreams:n})=>H.debounce(()=>{const r=this.sipConnector.getRemoteStreams();t.logger("remoteStreams",r),n(r)},200);resolveHandleReadyRemoteStreams=({onReadyRemoteStreams:n})=>({track:r})=>{be(r)&&n()};getRemoteStreams=()=>(t.logger("getRemoteStreams"),this.sipConnector.getRemoteStreams());onUseLicense=n=>(t.logger("onUseLicense"),this.sipConnector.on("api:use-license",n));onMustStopPresentation=n=>(t.logger("onMustStopPresentation"),this.sipConnector.on("api:presentation:must-stop",n));onMoveToSpectators=n=>(t.logger("onMoveToSpectators"),this.sipConnector.on("api:participant:move-request-to-spectators",n));onMoveToParticipants=n=>(t.logger("onMoveToParticipants"),this.sipConnector.on("api:participant:move-request-to-participants",n));onStats=n=>(t.logger("onStats"),this.sipConnector.on("stats:collected",n));offStats=n=>{t.logger("offStats"),this.sipConnector.off("stats:collected",n)}}var G=(e=>(e.VP8="video/VP8",e.VP9="video/VP9",e.H264="video/H264",e.AV1="video/AV1",e.rtx="video/rtx",e.red="video/red",e.flexfec03="video/flexfec-03",e))(G||{});exports.ECallCause=t.ECallCause;exports.ECallStatus=t.EState$1;exports.EConnectionStatus=t.EState;exports.EContentUseLicense=t.EContentUseLicense;exports.EIncomingStatus=t.EState$2;exports.EPresentationStatus=t.EState$3;exports.EStatsTypes=t.EStatsTypes;exports.SipConnector=t.SipConnector;exports.StatsPeerConnection=t.StatsPeerConnection;exports.disableDebug=t.disableDebug;exports.enableDebug=t.enableDebug;exports.getCodecFromSender=t.getCodecFromSender;exports.hasCanceledStartPresentationError=t.hasCanceledStartPresentationError;Object.defineProperty(exports,"hasConnectionPromiseIsNotActualError",{enumerable:!0,get:()=>K.isPromiseIsNotActualError});exports.EMimeTypesVideoCodecs=G;exports.ESystemStatus=C;exports.SipConnectorFacade=ve;exports.hasAvailableStats=_e;exports.hasCanceledCallError=J;exports.sessionSelectors=te;exports.tools=Oe;
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { E as h, a as R, b as p, c as j, l as r, p as K, s as X, d as q, e as z, h as J } from "./@SipConnector-
|
|
2
|
-
import { f as je, o as Ke, k as Xe, S as qe, m as ze, g as Je, i as Qe, n as Ze, j as en } from "./@SipConnector-
|
|
1
|
+
import { E as h, a as R, b as p, c as j, l as r, p as K, s as X, d as q, e as z, h as J } from "./@SipConnector-B4LkZ26j.js";
|
|
2
|
+
import { f as je, o as Ke, k as Xe, S as qe, m as ze, g as Je, i as Qe, n as Ze, j as en } from "./@SipConnector-B4LkZ26j.js";
|
|
3
3
|
import "events-constructor";
|
|
4
4
|
import { isCanceledError as B } from "@krivega/cancelable-promise";
|
|
5
5
|
import { hasCanceledError as Q } from "repeated-calls";
|