sip-connector 14.1.0-alpha.1 → 14.1.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/@SipConnector-CrRymJFW.cjs +1 -0
- package/dist/{SipConnector-CK3GgjXE.js → @SipConnector-hNVaYCWj.js} +295 -522
- package/dist/ApiManager/@ApiManager.d.ts +2 -2
- package/dist/CallManager/causes.d.ts +2 -1
- package/dist/IncomingCallManager/@IncomingCallManager.d.ts +3 -2
- package/dist/PresentationManager/@PresentationManager.d.ts +2 -2
- package/dist/{SipConnector.d.ts → SipConnector/@SipConnector.d.ts} +19 -30
- package/dist/SipConnector/eventNames.d.ts +4 -0
- package/dist/SipConnector/index.d.ts +2 -0
- package/dist/SipConnectorFacade/SipConnectorFacade.d.ts +6 -26
- package/dist/__fixtures__/BaseSession.mock.d.ts +1 -1
- package/dist/{eventNames.d.ts → __fixtures__/eventNames.d.ts} +1 -1
- package/dist/doMock.cjs +1 -1
- package/dist/doMock.d.ts +1 -1
- package/dist/doMock.js +212 -130
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -5
- package/dist/index.js +328 -366
- package/dist/tools/__fixtures__/processRequest.d.ts +1 -1
- package/dist/tools/syncMediaState/index.d.ts +1 -1
- package/dist/tools/syncMediaState/resolveOnStartMainCam.d.ts +1 -1
- package/dist/tools/syncMediaState/resolveOnStartMic.d.ts +1 -1
- package/dist/tools/syncMediaState/resolveOnStopMainCam.d.ts +1 -1
- package/dist/tools/syncMediaState/resolveOnStopMic.d.ts +1 -1
- package/dist/types.d.ts +1 -24
- package/dist/videoSendingBalancer/index.d.ts +1 -1
- package/package.json +1 -1
- package/dist/SipConnector-CwI8aFEA.cjs +0 -1
- package/dist/causes.d.ts +0 -23
- /package/dist/{constants.d.ts → __fixtures__/constants.d.ts} +0 -0
package/dist/doMock.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { EventEmitter as
|
|
5
|
-
import { IncomingRequest as
|
|
6
|
-
import { NameAddrHeader as V, URI as
|
|
7
|
-
import { createAudioMediaStreamTrackMock as
|
|
1
|
+
import { O as v, S as D } from "./@SipConnector-hNVaYCWj.js";
|
|
2
|
+
import y from "@krivega/jssip/lib/NameAddrHeader";
|
|
3
|
+
import L from "@krivega/jssip/lib/URI";
|
|
4
|
+
import { EventEmitter as F } from "node:events";
|
|
5
|
+
import { IncomingRequest as b } from "@krivega/jssip/lib/SIPMessage";
|
|
6
|
+
import { NameAddrHeader as V, URI as E, C as S } from "@krivega/jssip";
|
|
7
|
+
import { createAudioMediaStreamTrackMock as k, createVideoMediaStreamTrackMock as W } from "webrtc-mock";
|
|
8
8
|
import R from "events-constructor";
|
|
9
|
-
class
|
|
9
|
+
class _ extends b {
|
|
10
10
|
headers;
|
|
11
11
|
constructor(e) {
|
|
12
12
|
super(), this.headers = new Headers(e);
|
|
@@ -15,7 +15,89 @@ class w extends W {
|
|
|
15
15
|
return this.headers.get(e) ?? "";
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
|
|
18
|
+
const U = "incomingCall", G = "declinedIncomingCall", H = "failedIncomingCall", x = "terminatedIncomingCall", M = "connecting", q = "connected", Y = "disconnected", j = "newRTCSession", z = "registered", B = "unregistered", J = "registrationFailed", K = "newMessage", $ = "sipEvent", Q = "availableSecondRemoteStream", X = "notAvailableSecondRemoteStream", Z = "mustStopPresentation", ee = "shareState", te = "enterRoom", re = "useLicense", ne = "peerconnection:confirmed", oe = "peerconnection:ontrack", se = "channels", ie = "channels:notify", ae = "ended:fromserver", ce = "main-cam-control", de = "admin-stop-main-cam", Ee = "admin-start-main-cam", he = "admin-stop-mic", me = "admin-start-mic", le = "admin-force-sync-media-state", ue = "participant:added-to-list-moderators", pe = "participant:removed-from-list-moderators", ge = "participant:move-request-to-stream", _e = "participant:move-request-to-spectators", Te = "participant:move-request-to-participants", Ie = "participation:accepting-word-request", we = "participation:cancelling-word-request", Se = "webcast:started", Ne = "webcast:stopped", fe = "account:changed", Ce = "account:deleted", Re = "conference:participant-token-issued", Me = "ended", Ae = "sending", Oe = "reinvite", Pe = "replaces", ve = "refer", De = "progress", ye = "accepted", Le = "confirmed", Fe = "peerconnection", be = "failed", Ve = "muted", ke = "unmuted", We = "newDTMF", Ue = "newInfo", Ge = "hold", He = "unhold", xe = "update", qe = "sdp", Ye = "icecandidate", je = "getusermediafailed", ze = "peerconnection:createofferfailed", Be = "peerconnection:createanswerfailed", Je = "peerconnection:setlocaldescriptionfailed", Ke = "peerconnection:setremotedescriptionfailed", $e = "presentation:start", Qe = "presentation:started", Xe = "presentation:end", Ze = "presentation:ended", et = "presentation:failed", tt = [
|
|
19
|
+
U,
|
|
20
|
+
G,
|
|
21
|
+
x,
|
|
22
|
+
H,
|
|
23
|
+
Ie,
|
|
24
|
+
we,
|
|
25
|
+
ge,
|
|
26
|
+
ie,
|
|
27
|
+
Re,
|
|
28
|
+
fe,
|
|
29
|
+
Ce,
|
|
30
|
+
Se,
|
|
31
|
+
Ne,
|
|
32
|
+
ue,
|
|
33
|
+
pe
|
|
34
|
+
], A = [
|
|
35
|
+
M,
|
|
36
|
+
q,
|
|
37
|
+
Y,
|
|
38
|
+
j,
|
|
39
|
+
z,
|
|
40
|
+
B,
|
|
41
|
+
J,
|
|
42
|
+
K,
|
|
43
|
+
$
|
|
44
|
+
], rt = [
|
|
45
|
+
Q,
|
|
46
|
+
X,
|
|
47
|
+
Z,
|
|
48
|
+
ee,
|
|
49
|
+
te,
|
|
50
|
+
re,
|
|
51
|
+
ne,
|
|
52
|
+
oe,
|
|
53
|
+
se,
|
|
54
|
+
ae,
|
|
55
|
+
ce,
|
|
56
|
+
Ee,
|
|
57
|
+
de,
|
|
58
|
+
he,
|
|
59
|
+
me,
|
|
60
|
+
le,
|
|
61
|
+
_e,
|
|
62
|
+
Te
|
|
63
|
+
], nt = [
|
|
64
|
+
Me,
|
|
65
|
+
M,
|
|
66
|
+
Ae,
|
|
67
|
+
Oe,
|
|
68
|
+
Pe,
|
|
69
|
+
ve,
|
|
70
|
+
De,
|
|
71
|
+
ye,
|
|
72
|
+
Le,
|
|
73
|
+
Fe,
|
|
74
|
+
be,
|
|
75
|
+
Ve,
|
|
76
|
+
ke,
|
|
77
|
+
We,
|
|
78
|
+
Ue,
|
|
79
|
+
Ge,
|
|
80
|
+
He,
|
|
81
|
+
xe,
|
|
82
|
+
qe,
|
|
83
|
+
Ye,
|
|
84
|
+
je,
|
|
85
|
+
ze,
|
|
86
|
+
Be,
|
|
87
|
+
Je,
|
|
88
|
+
Ke,
|
|
89
|
+
$e,
|
|
90
|
+
Qe,
|
|
91
|
+
Xe,
|
|
92
|
+
Ze,
|
|
93
|
+
et
|
|
94
|
+
];
|
|
95
|
+
[...A, ...tt];
|
|
96
|
+
const ot = [
|
|
97
|
+
...nt,
|
|
98
|
+
...rt
|
|
99
|
+
];
|
|
100
|
+
class st {
|
|
19
101
|
originator;
|
|
20
102
|
connection;
|
|
21
103
|
events;
|
|
@@ -26,7 +108,7 @@ class H {
|
|
|
26
108
|
eventHandlers: t,
|
|
27
109
|
remoteIdentity: r
|
|
28
110
|
}) {
|
|
29
|
-
this.originator = e, this.events = new R(
|
|
111
|
+
this.originator = e, this.events = new R(ot), this.initEvents(t), this.remote_identity = r;
|
|
30
112
|
}
|
|
31
113
|
get contact() {
|
|
32
114
|
throw new Error("Method not implemented.");
|
|
@@ -184,7 +266,7 @@ class H {
|
|
|
184
266
|
return !0;
|
|
185
267
|
}
|
|
186
268
|
}
|
|
187
|
-
class
|
|
269
|
+
class it {
|
|
188
270
|
dtmf = null;
|
|
189
271
|
track = null;
|
|
190
272
|
transport = null;
|
|
@@ -227,7 +309,7 @@ class j {
|
|
|
227
309
|
throw new Error("Method not implemented.");
|
|
228
310
|
}
|
|
229
311
|
}
|
|
230
|
-
class
|
|
312
|
+
class at {
|
|
231
313
|
senders = [];
|
|
232
314
|
receivers = [];
|
|
233
315
|
canTrickleIceCandidates;
|
|
@@ -319,18 +401,18 @@ class z {
|
|
|
319
401
|
getReceivers = () => this.receivers;
|
|
320
402
|
getSenders = () => this.senders;
|
|
321
403
|
addTrack = (e) => {
|
|
322
|
-
const t = new
|
|
404
|
+
const t = new it({ track: e });
|
|
323
405
|
return this.senders.push(t), t;
|
|
324
406
|
};
|
|
325
407
|
}
|
|
326
|
-
function
|
|
408
|
+
function ct(n) {
|
|
327
409
|
const e = n.match(/(purgatory)|[\d.]+/g);
|
|
328
410
|
if (!e)
|
|
329
411
|
throw new Error("wrong sip url");
|
|
330
412
|
return e[0];
|
|
331
413
|
}
|
|
332
|
-
const
|
|
333
|
-
class
|
|
414
|
+
const u = 400, dt = "777", Et = (n) => n.getVideoTracks().length > 0;
|
|
415
|
+
class s extends st {
|
|
334
416
|
static presentationError;
|
|
335
417
|
static startPresentationError;
|
|
336
418
|
static countStartPresentationError = Number.POSITIVE_INFINITY;
|
|
@@ -355,7 +437,7 @@ class i extends H {
|
|
|
355
437
|
}, 100), setTimeout(() => {
|
|
356
438
|
this.trigger("confirmed");
|
|
357
439
|
}, 200);
|
|
358
|
-
},
|
|
440
|
+
}, u);
|
|
359
441
|
});
|
|
360
442
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
361
443
|
replaceMediaStream = jest.fn(async (e) => {
|
|
@@ -365,13 +447,13 @@ class i extends H {
|
|
|
365
447
|
url: e = "",
|
|
366
448
|
mediaStream: t,
|
|
367
449
|
eventHandlers: r,
|
|
368
|
-
originator:
|
|
450
|
+
originator: i,
|
|
369
451
|
remoteIdentity: a = new V(
|
|
370
|
-
new
|
|
452
|
+
new E("sip", "caller1", "test1.com", 5060),
|
|
371
453
|
"Test Caller 1"
|
|
372
454
|
)
|
|
373
455
|
}) {
|
|
374
|
-
super({ originator:
|
|
456
|
+
super({ originator: i, eventHandlers: r, remoteIdentity: a }), this.url = e, this.initPeerconnection(t);
|
|
375
457
|
}
|
|
376
458
|
static setPresentationError(e) {
|
|
377
459
|
this.presentationError = e;
|
|
@@ -386,42 +468,42 @@ class i extends H {
|
|
|
386
468
|
this.startPresentationError = void 0, this.countStartPresentationError = Number.POSITIVE_INFINITY, this.countStartsPresentation = 0;
|
|
387
469
|
}
|
|
388
470
|
startPresentation = async (e) => {
|
|
389
|
-
if (
|
|
390
|
-
throw this.trigger("presentation:start", e), this.trigger("presentation:failed", e),
|
|
391
|
-
if (
|
|
392
|
-
throw this.trigger("presentation:start", e), this.trigger("presentation:failed", e),
|
|
471
|
+
if (s.countStartsPresentation += 1, s.presentationError)
|
|
472
|
+
throw this.trigger("presentation:start", e), this.trigger("presentation:failed", e), s.presentationError;
|
|
473
|
+
if (s.startPresentationError && s.countStartsPresentation < s.countStartPresentationError)
|
|
474
|
+
throw this.trigger("presentation:start", e), this.trigger("presentation:failed", e), s.startPresentationError;
|
|
393
475
|
return super.startPresentation(e);
|
|
394
476
|
};
|
|
395
477
|
stopPresentation = async (e) => {
|
|
396
|
-
if (
|
|
397
|
-
throw this.trigger("presentation:end", e), this.trigger("presentation:failed", e),
|
|
478
|
+
if (s.presentationError)
|
|
479
|
+
throw this.trigger("presentation:end", e), this.trigger("presentation:failed", e), s.presentationError;
|
|
398
480
|
return super.stopPresentation(e);
|
|
399
481
|
};
|
|
400
482
|
initPeerconnection(e) {
|
|
401
483
|
return e ? (this.createPeerconnection(e), !0) : !1;
|
|
402
484
|
}
|
|
403
485
|
createPeerconnection(e) {
|
|
404
|
-
const t =
|
|
486
|
+
const t = k();
|
|
405
487
|
t.id = "mainaudio1";
|
|
406
488
|
const r = [t];
|
|
407
|
-
if (
|
|
408
|
-
const a =
|
|
489
|
+
if (Et(e)) {
|
|
490
|
+
const a = W();
|
|
409
491
|
a.id = "mainvideo1", r.push(a);
|
|
410
492
|
}
|
|
411
|
-
this.connection = new
|
|
493
|
+
this.connection = new at(void 0, r), this.addStream(e), setTimeout(() => {
|
|
412
494
|
this.trigger("peerconnection", { peerconnection: this.connection });
|
|
413
|
-
},
|
|
495
|
+
}, u);
|
|
414
496
|
}
|
|
415
497
|
connect(e) {
|
|
416
|
-
const t =
|
|
498
|
+
const t = ct(e);
|
|
417
499
|
setTimeout(() => {
|
|
418
|
-
this.url.includes(
|
|
500
|
+
this.url.includes(dt) ? this.trigger("failed", {
|
|
419
501
|
originator: "remote",
|
|
420
502
|
message: "IncomingResponse",
|
|
421
|
-
cause:
|
|
503
|
+
cause: "Rejected"
|
|
422
504
|
}) : (this.trigger("connecting"), setTimeout(() => {
|
|
423
505
|
this.newInfo({
|
|
424
|
-
originator:
|
|
506
|
+
originator: v.REMOTE,
|
|
425
507
|
// @ts-expect-error
|
|
426
508
|
request: {
|
|
427
509
|
getHeader: (r) => r === "content-type" ? "application/vinteo.webrtc.roomname" : r === "x-webrtc-enter-room" ? t : r === "x-webrtc-participant-name" ? "Test Caller 1" : ""
|
|
@@ -432,7 +514,7 @@ class i extends H {
|
|
|
432
514
|
}, 200), setTimeout(() => {
|
|
433
515
|
this.trigger("confirmed");
|
|
434
516
|
}, 300));
|
|
435
|
-
},
|
|
517
|
+
}, u);
|
|
436
518
|
}
|
|
437
519
|
terminate({ status_code: e, cause: t } = {}) {
|
|
438
520
|
return this.status_code = e, this.trigger("ended", { status_code: e, cause: t, originator: "local" }), this.isEndedInner = !1, this;
|
|
@@ -494,7 +576,7 @@ class i extends H {
|
|
|
494
576
|
}
|
|
495
577
|
/* eslint-enable no-param-reassign */
|
|
496
578
|
}
|
|
497
|
-
class
|
|
579
|
+
class ht {
|
|
498
580
|
extraHeaders = [];
|
|
499
581
|
setExtraHeaders(e) {
|
|
500
582
|
this.extraHeaders = e;
|
|
@@ -503,14 +585,14 @@ class $ {
|
|
|
503
585
|
setExtraContactParams() {
|
|
504
586
|
}
|
|
505
587
|
}
|
|
506
|
-
const
|
|
588
|
+
const c = "PASSWORD_CORRECT", N = "PASSWORD_CORRECT_2", mt = "NAME_INCORRECT", d = 400, p = {
|
|
507
589
|
url: "wss://sipServerUrl/webrtc/wss/",
|
|
508
590
|
sip_uri: "sip:sipServerUrl;transport=ws",
|
|
509
591
|
via_transport: "WSS"
|
|
510
|
-
},
|
|
592
|
+
}, f = {
|
|
511
593
|
status_code: 200,
|
|
512
594
|
reason_phrase: "OK"
|
|
513
|
-
},
|
|
595
|
+
}, C = {
|
|
514
596
|
status_code: 401,
|
|
515
597
|
reason_phrase: "Unauthorized"
|
|
516
598
|
};
|
|
@@ -524,8 +606,8 @@ class o {
|
|
|
524
606
|
// @ts-expect-error – Jest создаёт функцию-замок.
|
|
525
607
|
call = jest.fn(
|
|
526
608
|
(e, t) => {
|
|
527
|
-
const { mediaStream: r, eventHandlers:
|
|
528
|
-
return this.session = new
|
|
609
|
+
const { mediaStream: r, eventHandlers: i } = t;
|
|
610
|
+
return this.session = new s({ url: e, mediaStream: r, eventHandlers: i, originator: "local" }), this.session.connect(e), this.session;
|
|
529
611
|
}
|
|
530
612
|
);
|
|
531
613
|
sendOptions = jest.fn(
|
|
@@ -548,8 +630,8 @@ class o {
|
|
|
548
630
|
*/
|
|
549
631
|
stop = jest.fn(() => {
|
|
550
632
|
this.startedTimeout && clearTimeout(this.startedTimeout), this.stopedTimeout && clearTimeout(this.stopedTimeout), this.unregister(), this.isStarted() ? this.stopedTimeout = setTimeout(() => {
|
|
551
|
-
this.trigger("disconnected", { error: !0, socket:
|
|
552
|
-
},
|
|
633
|
+
this.trigger("disconnected", { error: !0, socket: p });
|
|
634
|
+
}, d) : this.trigger("disconnected", { error: !0, socket: p });
|
|
553
635
|
});
|
|
554
636
|
removeAllListeners = jest.fn(() => (this.events.removeEventHandlers(), this));
|
|
555
637
|
once = jest.fn((e, t) => (this.events.once(e, t), this));
|
|
@@ -560,12 +642,12 @@ class o {
|
|
|
560
642
|
isConnectedInner;
|
|
561
643
|
configuration;
|
|
562
644
|
constructor(e) {
|
|
563
|
-
this.events = new R(
|
|
564
|
-
const [t, r] = e.uri.split(":"), [
|
|
645
|
+
this.events = new R(A);
|
|
646
|
+
const [t, r] = e.uri.split(":"), [i, a] = r.split("@"), l = {
|
|
565
647
|
...e,
|
|
566
|
-
uri: new
|
|
648
|
+
uri: new E(t, i, a)
|
|
567
649
|
};
|
|
568
|
-
this.configuration = l, this.registratorInner = new
|
|
650
|
+
this.configuration = l, this.registratorInner = new ht();
|
|
569
651
|
}
|
|
570
652
|
static setStartError(e, { count: t = Number.POSITIVE_INFINITY } = {}) {
|
|
571
653
|
o.startError = e, o.countStartError = t;
|
|
@@ -610,13 +692,13 @@ class o {
|
|
|
610
692
|
register() {
|
|
611
693
|
this.startedTimeout && clearTimeout(this.startedTimeout);
|
|
612
694
|
const { password: e, register: t, uri: r } = this.configuration;
|
|
613
|
-
t === !0 && r.user.includes(
|
|
614
|
-
this.trigger("registrationFailed", { response:
|
|
615
|
-
},
|
|
616
|
-
this.trigger("registered", { response:
|
|
617
|
-
},
|
|
618
|
-
this.trigger("registrationFailed", { response:
|
|
619
|
-
},
|
|
695
|
+
t === !0 && r.user.includes(mt) ? (this.isRegisteredInner = !1, this.isConnectedInner = !1, this.startedTimeout = setTimeout(() => {
|
|
696
|
+
this.trigger("registrationFailed", { response: C, cause: S.causes.REJECTED });
|
|
697
|
+
}, d)) : !this.isRegistered() && t === !0 && (e === c || e === N) ? (this.isRegisteredInner = !0, this.startedTimeout = setTimeout(() => {
|
|
698
|
+
this.trigger("registered", { response: f });
|
|
699
|
+
}, d)) : t === !0 && e !== c && e !== N && (this.isRegisteredInner = !1, this.isConnectedInner = !1, this.startedTimeout = setTimeout(() => {
|
|
700
|
+
this.trigger("registrationFailed", { response: C, cause: S.causes.REJECTED });
|
|
701
|
+
}, d)), o.isAvailableTelephony ? (this.trigger("connected", { socket: p }), this.isConnectedInner = !0) : this.stop();
|
|
620
702
|
}
|
|
621
703
|
/**
|
|
622
704
|
* unregister
|
|
@@ -624,7 +706,7 @@ class o {
|
|
|
624
706
|
* @returns {undefined}
|
|
625
707
|
*/
|
|
626
708
|
unregister() {
|
|
627
|
-
this.isRegisteredInner = !1, this.isConnectedInner = !1, this.trigger("unregistered", { response:
|
|
709
|
+
this.isRegisteredInner = !1, this.isConnectedInner = !1, this.trigger("unregistered", { response: f });
|
|
628
710
|
}
|
|
629
711
|
isRegistered() {
|
|
630
712
|
return this.isRegisteredInner === !0;
|
|
@@ -647,122 +729,122 @@ class o {
|
|
|
647
729
|
return this.registratorInner;
|
|
648
730
|
}
|
|
649
731
|
}
|
|
650
|
-
class
|
|
732
|
+
class lt {
|
|
651
733
|
url;
|
|
652
734
|
constructor(e) {
|
|
653
735
|
this.url = e;
|
|
654
736
|
}
|
|
655
737
|
}
|
|
656
|
-
class
|
|
738
|
+
class ut extends F {
|
|
657
739
|
contentType;
|
|
658
740
|
body;
|
|
659
741
|
constructor(e, t) {
|
|
660
742
|
super(), this.contentType = e, this.body = t;
|
|
661
743
|
}
|
|
662
744
|
}
|
|
663
|
-
const
|
|
664
|
-
const t = new
|
|
665
|
-
originator:
|
|
745
|
+
const g = "remote", pt = (n, e) => {
|
|
746
|
+
const t = new _(e), r = {
|
|
747
|
+
originator: g,
|
|
666
748
|
request: t,
|
|
667
|
-
info: new
|
|
749
|
+
info: new ut("", "")
|
|
668
750
|
};
|
|
669
751
|
n.newInfo(r);
|
|
670
|
-
},
|
|
671
|
-
const r = { event: "sipEvent", request: new
|
|
752
|
+
}, gt = (n, e) => {
|
|
753
|
+
const r = { event: "sipEvent", request: new _(e) };
|
|
672
754
|
n.newSipEvent(r);
|
|
673
|
-
},
|
|
755
|
+
}, _t = (n, {
|
|
674
756
|
incomingNumber: e = "1234",
|
|
675
757
|
displayName: t,
|
|
676
758
|
host: r
|
|
677
759
|
}) => {
|
|
678
|
-
const
|
|
679
|
-
|
|
680
|
-
const l = new
|
|
760
|
+
const i = new s({ originator: g, eventHandlers: {} }), a = new L("sip", e, r);
|
|
761
|
+
i.remote_identity = new y(a, t);
|
|
762
|
+
const l = new _([]);
|
|
681
763
|
n.trigger("newRTCSession", {
|
|
682
|
-
originator:
|
|
683
|
-
session:
|
|
764
|
+
originator: g,
|
|
765
|
+
session: i,
|
|
684
766
|
request: l
|
|
685
767
|
});
|
|
686
|
-
},
|
|
768
|
+
}, Tt = (n, e) => {
|
|
687
769
|
e ? n.trigger("failed", e) : n.trigger("failed", n);
|
|
688
|
-
},
|
|
689
|
-
triggerNewInfo:
|
|
690
|
-
triggerNewSipEvent:
|
|
691
|
-
triggerIncomingSession:
|
|
692
|
-
triggerFailIncomingSession:
|
|
693
|
-
WebSocketInterface:
|
|
770
|
+
}, O = {
|
|
771
|
+
triggerNewInfo: pt,
|
|
772
|
+
triggerNewSipEvent: gt,
|
|
773
|
+
triggerIncomingSession: _t,
|
|
774
|
+
triggerFailIncomingSession: Tt,
|
|
775
|
+
WebSocketInterface: lt,
|
|
694
776
|
UA: o,
|
|
695
777
|
C: {
|
|
696
778
|
INVITE: "INVITE"
|
|
697
779
|
}
|
|
698
|
-
},
|
|
780
|
+
}, T = "user", h = "displayName", I = "SIP_SERVER_URL", P = "SIP_WEB_SOCKET_SERVER_URL", It = new O.WebSocketInterface(P), w = {
|
|
699
781
|
userAgent: "Chrome",
|
|
700
|
-
sipServerUrl:
|
|
701
|
-
sipWebSocketServerURL:
|
|
702
|
-
},
|
|
703
|
-
...
|
|
704
|
-
},
|
|
705
|
-
...
|
|
706
|
-
user:
|
|
707
|
-
password:
|
|
782
|
+
sipServerUrl: I,
|
|
783
|
+
sipWebSocketServerURL: P
|
|
784
|
+
}, vt = {
|
|
785
|
+
...w
|
|
786
|
+
}, wt = {
|
|
787
|
+
...w,
|
|
788
|
+
user: T,
|
|
789
|
+
password: c,
|
|
708
790
|
register: !0
|
|
709
|
-
},
|
|
710
|
-
...
|
|
711
|
-
displayName:
|
|
712
|
-
},
|
|
713
|
-
...
|
|
714
|
-
displayName:
|
|
791
|
+
}, Dt = {
|
|
792
|
+
...wt,
|
|
793
|
+
displayName: h
|
|
794
|
+
}, yt = {
|
|
795
|
+
...w,
|
|
796
|
+
displayName: h,
|
|
715
797
|
register: !1
|
|
716
|
-
},
|
|
798
|
+
}, m = {
|
|
717
799
|
session_timers: !1,
|
|
718
|
-
sockets: [
|
|
800
|
+
sockets: [It],
|
|
719
801
|
user_agent: "Chrome",
|
|
720
802
|
sdpSemantics: "unified-plan",
|
|
721
803
|
register_expires: 300,
|
|
722
804
|
connection_recovery_max_interval: 6,
|
|
723
805
|
connection_recovery_min_interval: 2
|
|
724
|
-
},
|
|
725
|
-
...
|
|
726
|
-
password:
|
|
727
|
-
uri: new
|
|
806
|
+
}, Lt = {
|
|
807
|
+
...m,
|
|
808
|
+
password: c,
|
|
809
|
+
uri: new E("sip", T, I),
|
|
728
810
|
display_name: "",
|
|
729
811
|
register: !0
|
|
730
|
-
},
|
|
731
|
-
...
|
|
732
|
-
password:
|
|
733
|
-
uri: new
|
|
734
|
-
display_name:
|
|
812
|
+
}, Ft = {
|
|
813
|
+
...m,
|
|
814
|
+
password: c,
|
|
815
|
+
uri: new E("sip", T, I),
|
|
816
|
+
display_name: h,
|
|
735
817
|
register: !0
|
|
736
|
-
},
|
|
737
|
-
...
|
|
738
|
-
display_name:
|
|
818
|
+
}, bt = {
|
|
819
|
+
...m,
|
|
820
|
+
display_name: h,
|
|
739
821
|
register: !1
|
|
740
|
-
},
|
|
741
|
-
...
|
|
822
|
+
}, Vt = {
|
|
823
|
+
...m,
|
|
742
824
|
display_name: "",
|
|
743
825
|
register: !1
|
|
744
|
-
},
|
|
745
|
-
JsSIP:
|
|
826
|
+
}, St = "10.10.10.10", kt = [`X-Vinteo-Remote: ${St}`], Wt = () => new D({
|
|
827
|
+
JsSIP: O
|
|
746
828
|
});
|
|
747
829
|
export {
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
830
|
+
dt as FAILED_CONFERENCE_NUMBER,
|
|
831
|
+
O as JsSIP,
|
|
832
|
+
mt as NAME_INCORRECT,
|
|
833
|
+
c as PASSWORD_CORRECT,
|
|
834
|
+
N as PASSWORD_CORRECT_2,
|
|
835
|
+
I as SIP_SERVER_URL,
|
|
836
|
+
P as SIP_WEB_SOCKET_SERVER_URL,
|
|
837
|
+
wt as dataForConnectionWithAuthorization,
|
|
838
|
+
Dt as dataForConnectionWithAuthorizationWithDisplayName,
|
|
839
|
+
yt as dataForConnectionWithoutAuthorization,
|
|
840
|
+
vt as dataForConnectionWithoutAuthorizationWithoutDisplayName,
|
|
841
|
+
h as displayName,
|
|
842
|
+
Wt as doMockSipConnector,
|
|
843
|
+
kt as extraHeadersRemoteAddress,
|
|
844
|
+
St as remoteAddress,
|
|
845
|
+
Lt as uaConfigurationWithAuthorization,
|
|
846
|
+
Ft as uaConfigurationWithAuthorizationWithDisplayName,
|
|
847
|
+
bt as uaConfigurationWithoutAuthorization,
|
|
848
|
+
Vt as uaConfigurationWithoutAuthorizationWithoutDisplayName,
|
|
849
|
+
T as user
|
|
768
850
|
};
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./SipConnector-CwI8aFEA.cjs"),de=require("sequent-promises"),ge=require("stack-promises"),v=require("debug");require("events-constructor");const Y=require("@krivega/cancelable-promise"),Ce=require("repeated-calls"),fe=require("ts-debounce"),Se=(e,n)=>(e.degradationPreference=n.degradationPreference,e),he=(e,n)=>{e.encodings??=[];for(let t=e.encodings.length;t<n;t+=1)e.encodings.push({});return e},G=e=>(n,t)=>t!==void 0&&n!==t||t===void 0&&n!==e,Re=G(),me=(e,n)=>{if(Re(e,n))return e},ye=(e,n)=>{const t=e.maxBitrate,o=me(n,t);return o!==void 0&&(e.maxBitrate=o),e},K=1,pe=G(K),Ae=(e,n)=>{const t=e===void 0?void 0:Math.max(e,K);if(t!==void 0&&pe(t,n))return t},Te=(e,n)=>{const t=e.scaleResolutionDownBy,o=Ae(n,t);return o!==void 0&&(e.scaleResolutionDownBy=o),e},Me=(e,n)=>{const t=n.encodings?.length??0;return he(e,t),e.encodings.forEach((o,r)=>{const s=(n?.encodings??[])[r],i=s?.maxBitrate,a=s?.scaleResolutionDownBy;ye(o,i),Te(o,a)}),e},Ee=(e,n)=>{if(e.codecs?.length!==n.codecs?.length)return!0;for(let t=0;t<(e.codecs?.length??0);t++)if(JSON.stringify(e.codecs[t])!==JSON.stringify(n.codecs[t]))return!0;if(e.headerExtensions?.length!==n.headerExtensions?.length)return!0;for(let t=0;t<(e.headerExtensions?.length??0);t++)if(JSON.stringify(e.headerExtensions[t])!==JSON.stringify(n.headerExtensions[t]))return!0;if(e.encodings?.length!==n.encodings?.length)return!0;for(let t=0;t<(e.encodings.length??0);t++)if(JSON.stringify(e.encodings[t])!==JSON.stringify(n.encodings[t]))return!0;return e.rtcp?.cname!==n.rtcp?.cname||e.rtcp?.reducedSize!==n.rtcp?.reducedSize||e.degradationPreference!==n.degradationPreference},X=async(e,n)=>{const t=e.getParameters(),o=JSON.parse(JSON.stringify(t));Me(t,n),Se(t,n);const r=Ee(o,t);return r&&await e.setParameters(t),{parameters:t,isChanged:r}},k=e=>{const{url:n,cause:t}=e;let o=n;return(t===c.BAD_MEDIA_DESCRIPTION||t===c.NOT_FOUND)&&(o=`${e.message.to.uri.user}@${e.message.to.uri.host}`),o};var z=(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))(z||{});const Ne=new Error("Unknown error"),_e=(e=Ne)=>{const{cause:n,socket:t}=e;let o="CONNECT_SERVER_FAILED";switch(n){case"Forbidden":{o="WRONG_USER_OR_PASSWORD";break}case c.BAD_MEDIA_DESCRIPTION:{o="BAD_MEDIA_ERROR";break}case c.NOT_FOUND:{o="NOT_FOUND_ERROR";break}default:t!==void 0&&t._ws?.readyState===3?o="WS_CONNECTION_FAILED":k(e)!==void 0&&k(e)!==""&&(o="CONNECT_SERVER_FAILED_BY_LINK")}return o},ve=e=>{let n="";try{n=JSON.stringify(e)}catch(t){c.logger("failed to stringify message",t)}return n},Oe=new Error("Unknown error"),be=(e=Oe)=>{const{code:n,cause:t,message:o}=e,r=k(e),s={code:"",cause:"",message:""};return typeof o=="object"&&o!==null?s.message=ve(o):o&&(s.message=String(o)),r!==void 0&&r!==""&&(s.link=r),n!==void 0&&n!==""&&(s.code=n),t!==void 0&&t!==""&&(s.cause=t),s},Ie=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:z,getLinkError:k,getTypeFromError:_e,getValuesFromError:be},Symbol.toStringTag,{value:"Module"})),De=({sessionId:e,remoteAddress:n,isMutedAudio:t,isMutedVideo:o,isRegistered:r,isPresentationCall:s})=>{const i=[],a=t?"0":"1",l=o?"0":"1";return i.push(`X-Vinteo-Mic-State: ${a}`,`X-Vinteo-MainCam-State: ${l}`),(r===!1||r===void 0)&&i.push("X-Vinteo-Purgatory-Call: yes"),e!==void 0&&e!==""&&i.push(`X-Vinteo-Session: ${e}`),s===!0&&i.push("X-Vinteo-Presentation-Call: yes"),n!==void 0&&n!==""&&i.push(`X-Vinteo-Remote: ${n}`),i},we="[@*!|]",Be="_",Pe=e=>{let n=e;return n=n.replaceAll(new RegExp(we,"g"),Be),n},xe=({appName:e,appVersion:n,browserName:t,browserVersion:o})=>{const s=`${Pe(e)} ${n}`;return`ChromeNew - ${t===void 0?s:`${t} ${o}, ${s}`}`},Ue=({isUnifiedSdpSemantic:e,appVersion:n,browserName:t,browserVersion:o,appName:r})=>e?xe({appVersion:n,browserName:t,browserVersion:o,appName:r}):"Chrome",Q="purgatory",P=e=>e===Q,Fe=e=>n=>[...n].map(o=>async()=>e(o)),ke=async({accumulatedKeys:e,sendKey:n,canRunTask:t})=>{const r=Fe(n)(e);return de.sequentPromises(r,t)},Ve=e=>t=>(c.logger("onStartMainCam"),e.onApi("admin-start-main-cam",t)),Le=e=>t=>(c.logger("onStartMic"),e.onApi("admin-start-mic",t)),He=e=>t=>(c.logger("onStopMainCam"),e.onApi("admin-stop-main-cam",t)),$e=e=>t=>(c.logger("onStopMic"),e.onApi("admin-stop-mic",t)),qe=({sipConnector:e})=>{const n=(f,m)=>({isSyncForced:S})=>{if(S===!0){f();return}m()},t=Ve(e),o=He(e),r=Le(e),s=$e(e);let i,a,l,d;const C=({onStartMainCamForced:f,onStartMainCamNotForced:m,onStopMainCamForced:S,onStopMainCamNotForced:h,onStartMicForced:y,onStartMicNotForced:p,onStopMicForced:A,onStopMicNotForced:T})=>{const _=n(f,m);i=t(_);const O=n(S,h);a=o(O);const b=n(y,p);l=r(b);const I=n(A,T);d=s(I)},g=()=>{i?.(),a?.(),l?.(),d?.()};return{start:f=>{C(f)},stop:()=>{g()}}},Xe=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:Q,createSyncMediaState:qe,error:Ie,getExtraHeaders:De,getUserAgent:Ue,hasPurgatory:P,sendDtmfAccumulated:ke},Symbol.toStringTag,{value:"Module"}));var N=(e=>(e.PAUSE_MAIN_CAM="PAUSEMAINCAM",e.RESUME_MAIN_CAM="RESUMEMAINCAM",e.MAX_MAIN_CAM_RESOLUTION="MAXMAINCAMRESOLUTION",e.ADMIN_STOP_MAIN_CAM="ADMINSTOPMAINCAM",e.ADMIN_START_MAIN_CAM="ADMINSTARTMAINCAM",e))(N||{}),Z=(e=>(e.ADMIN_STOP_MIC="ADMINSTOPMIC",e.ADMIN_START_MIC="ADMINSTARTMIC",e))(Z||{}),ee=(e=>(e.ADMIN_SYNC_FORCED="1",e.ADMIN_SYNC_NOT_FORCED="0",e))(ee||{}),ne=(e=>(e.AUDIO="AUDIO",e.VIDEO="VIDEO",e.AUDIOPLUSPRESENTATION="AUDIOPLUSPRESENTATION",e))(ne||{}),te=(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))(te||{});const Je=e=>[...e.keys()].map(n=>e.get(n)),je=(e,n)=>Je(e).find(t=>t?.type===n),oe=async e=>e.getStats().then(n=>je(n,"codec")?.mimeType),We=e=>e.find(n=>n.track?.kind==="video"),re=(e,n)=>e!==void 0&&n!==void 0&&e.toLowerCase().includes(n.toLowerCase()),Ye=1e6,R=e=>e*Ye,se=R(.06),Ge=R(4),Ke=e=>e<=64?se:e<=128?R(.12):e<=256?R(.25):e<=384?R(.32):e<=426?R(.38):e<=640?R(.5):e<=848?R(.7):e<=1280?R(1):e<=1920?R(2):Ge,ze="av1",Qe=e=>re(e,ze),Ze=.6,ce=(e,n)=>Qe(n)?e*Ze:e,en=e=>ce(se,e),ie=(e,n)=>{const t=Ke(e);return ce(t,n)},$=1,ae=({videoTrack:e,targetSize:n,codec:t})=>{const o=e.getSettings(),r=o.width,s=o.height,i=r===void 0?$:r/n.width,a=s===void 0?$:s/n.height,l=Math.max(i,a,$),d=ie(n.width,t);return{scaleResolutionDownBy:l,maxBitrate:d}},nn=async(e,n,t)=>{const{isChanged:o,parameters:r}=await X(e,{encodings:[{scaleResolutionDownBy:n.scaleResolutionDownBy,maxBitrate:n.maxBitrate}]});return o&&t&&t(r),{isChanged:o,parameters:r}},le=ge.createStackPromises(),tn=async()=>le().catch(e=>{c.logger("videoSendingBalancer: error",e)}),on=async e=>(le.add(e),tn()),J=async({sender:e,scaleResolutionDownBy:n,maxBitrate:t,onSetParameters:o})=>on(async()=>nn(e,{scaleResolutionDownBy:n,maxBitrate:t},o)),rn=async({sender:e,codec:n},t)=>{const r=en(n);return J({sender:e,maxBitrate:r,onSetParameters:t,scaleResolutionDownBy:200})},F=async({sender:e,videoTrack:n,codec:t},o)=>{const i=n.getSettings().width,a=ie(i??0,t);return J({sender:e,maxBitrate:a,onSetParameters:o,scaleResolutionDownBy:1})},sn=async({sender:e,videoTrack:n,resolution:t,codec:o},r)=>{const[s,i]=t.split("x"),{maxBitrate:a,scaleResolutionDownBy:l}=ae({videoTrack:n,codec:o,targetSize:{width:Number(s),height:Number(i)}});return J({sender:e,maxBitrate:a,onSetParameters:r,scaleResolutionDownBy:l})},cn=async({mainCam:e,resolutionMainCam:n,sender:t,videoTrack:o,codec:r},s)=>{switch(e){case N.PAUSE_MAIN_CAM:return rn({sender:t,codec:r},s);case N.RESUME_MAIN_CAM:return F({sender:t,videoTrack:o,codec:r},s);case N.MAX_MAIN_CAM_RESOLUTION:return n!==void 0?sn({sender:t,videoTrack:o,codec:r,resolution:n},s):F({sender:t,videoTrack:o,codec:r},s);case N.ADMIN_STOP_MAIN_CAM:case N.ADMIN_START_MAIN_CAM:case void 0:return F({sender:t,videoTrack:o,codec:r},s);default:return F({sender:t,videoTrack:o,codec:r},s)}},j={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},W=async({mainCam:e,resolutionMainCam:n,connection:t,onSetParameters:o,ignoreForCodec:r})=>{const s=t.getSenders(),i=We(s);if(!i?.track)return j;const a=await oe(i);return re(a,r)?j:cn({mainCam:e,resolutionMainCam:n,sender:i,codec:a,videoTrack:i.track},o)},an=(e,{ignoreForCodec:n,onSetParameters:t}={})=>{const o=async()=>{const{connection:l}=e;if(!l)throw new Error("connection is not exist");return W({connection:l,onSetParameters:t,ignoreForCodec:n})};let r=o;const s=l=>{r=async()=>{const{mainCam:d,resolutionMainCam:C}=l,{connection:g}=e;if(!g)throw new Error("connection is not exist");return W({mainCam:d,resolutionMainCam:C,connection:g,onSetParameters:t,ignoreForCodec:n})},r().catch(v)};return{subscribe:()=>{e.onApi("main-cam-control",s)},unsubscribe:()=>{e.offApi("main-cam-control",s)},balanceByTrack:o,resetMainCamControl(){r=o},async reBalance(){return r()}}},ln=e=>e instanceof Object&&("originator"in e||"cause"in e),un=e=>{if(Y.isCanceledError(e))return!0;if(!ln(e))return!1;const{originator:n,cause:t}=e;return typeof t=="string"?t===c.ECallCause.REQUEST_TIMEOUT||t===c.ECallCause.REJECTED||n===c.Originator.LOCAL&&(t===c.ECallCause.CANCELED||t===c.ECallCause.BYE):!1},dn=e=>e.getVideoTracks()[0],w=({mediaStream:e,simulcastEncodings:n,sendEncodings:t})=>{if(n&&n.length>0){const o=t??[],r=dn(e);if(r===void 0)throw new Error("No video track");return n.forEach((s,i)=>{const a=o[i]??{};a.active=!0,s.rid!==void 0&&(a.rid=s.rid),s.scalabilityMode!==void 0&&(a.scalabilityMode=s.scalabilityMode);const{maxBitrate:l,scaleResolutionDownBy:d}=ae({videoTrack:r,targetSize:{width:s.width,height:s.height}});a.maxBitrate=l,a.scaleResolutionDownBy=d,o[i]=a}),o}return t},gn=(e,n)=>e.filter(o=>n.some(r=>r.clockRate===o.clockRate&&r.mimeType===o.mimeType&&r.channels===o.channels&&r.sdpFmtpLine===o.sdpFmtpLine)),Cn=e=>{const n=RTCRtpSender.getCapabilities(e),t=RTCRtpReceiver.getCapabilities(e),o=n===null?[]:n.codecs,r=t===null?[]:t.codecs;return gn(o,r)},fn=(e,n)=>n===void 0||n.length===0?e:e.sort((t,o)=>{const r=n.indexOf(t.mimeType),s=n.indexOf(o.mimeType),i=r===-1?Number.MAX_VALUE:r,a=s===-1?Number.MAX_VALUE:s;return i-a}),Sn=(e,n)=>n===void 0||n.length===0?e:e.filter(t=>!n.includes(t.mimeType)),B=(e,{preferredMimeTypesVideoCodecs:n,excludeMimeTypesVideoCodecs:t})=>async o=>{try{if(typeof o.setCodecPreferences=="function"&&o.sender.track?.kind==="video"&&(n!==void 0&&n.length>0||t!==void 0&&t.length>0)){const r=Cn("video"),s=Sn(r,t),i=fn(s,n);o.setCodecPreferences(i)}Object.keys(e).length>0&&await X(o.sender,e)}catch(r){c.logger("updateTransceiver error",r)}},q=e=>{if(!Y.isCanceledError(e)&&!Ce.hasCanceledError(e))throw e;return{isSuccessful:!1}},hn=({kind:e,readyState:n})=>e==="video"&&n==="live",Rn=new Set(["on","once","onceRace","wait","off","onCall","onceCall","onceRaceCall","waitCall","offCall","onIncomingCall","onceIncomingCall","onceRaceIncomingCall","waitIncomingCall","offIncomingCall","sendDTMF","hangUp","declineToIncomingCall","sendChannels","checkTelephony","waitChannels","ping","connection","isConfigured","isRegistered"]);class mn{on;once;onceRace;wait;off;onCall;onceCall;onceRaceCall;waitCall;offCall;onIncomingCall;onceIncomingCall;onceRaceIncomingCall;waitIncomingCall;offIncomingCall;sendDTMF;hangUp;declineToIncomingCall;sendChannels;checkTelephony;waitChannels;ping;connection;isConfigured;isRegistered;sipConnector;preferredMimeTypesVideoCodecs;excludeMimeTypesVideoCodecs;constructor(n,{preferredMimeTypesVideoCodecs:t,excludeMimeTypesVideoCodecs:o}={}){return this.preferredMimeTypesVideoCodecs=t,this.excludeMimeTypesVideoCodecs=o,this.sipConnector=n,new Proxy(this,{get:(r,s,i)=>{if(typeof s=="string"&&Rn.has(s)&&s in this.sipConnector){const l=Reflect.get(this.sipConnector,s,this.sipConnector);return typeof l=="function"?l.bind(this.sipConnector):l}const a=Reflect.get(r,s,i);return typeof a=="function"?a.bind(r):a}})}connectToServer=async n=>{const{userAgent:t,sipWebSocketServerURL:o,sipServerUrl:r,remoteAddress:s,displayName:i,name:a,password:l,isRegisteredUser:d,isDisconnectOnFail:C}=n;return c.logger("connectToServer",n),this.sipConnector.connect({userAgent:t,sipWebSocketServerURL:o,sipServerUrl:r,remoteAddress:s,displayName:i,password:l,user:a,register:d}).then(g=>(c.logger("connectToServer then"),{ua:g,isSuccessful:!0})).catch(async g=>(c.logger("connectToServer catch: error",g),C===!0?this.sipConnector.disconnect().then(()=>q(g)).catch(()=>q(g)):q(g)))};callToServer=async n=>{const{conference:t,mediaStream:o,extraHeaders:r,iceServers:s,contentHint:i,simulcastEncodings:a,degradationPreference:l,sendEncodings:d,offerToReceiveAudio:C,offerToReceiveVideo:g,directionVideo:x,directionAudio:U,setRemoteStreams:f,onBeforeProgressCall:m,onSuccessProgressCall:S,onEnterPurgatory:h,onEnterConference:y,onFailProgressCall:p,onFinishProgressCall:A,onEndedCall:T}=n,_=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:f}),O=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{_().catch(v)}}),b=B({degradationPreference:l},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});c.logger("callToServer",n);const I=async()=>(c.logger("startCall"),this.sipConnector.call({mediaStream:o,extraHeaders:r,iceServers:s,contentHint:i,offerToReceiveAudio:C,offerToReceiveVideo:g,directionVideo:x,directionAudio:U,sendEncodings:w({mediaStream:o,simulcastEncodings:a,sendEncodings:d}),number:t,onAddedTransceiver:b,ontrack:O}));let M=!1,E;const D=(c.logger("subscribeEnterConference: onEnterConference",y),h??y?this.sipConnector.onApi("enterRoom",({room:u})=>{c.logger("enterRoom",{_room:u,isSuccessProgressCall:M}),E=u,P(E)?h&&h():y&&y({isSuccessProgressCall:M})}):()=>{}),V=u=>(c.logger("onSuccess"),M=!0,_().catch(v),S&&S({isPurgatory:P(E)}),this.sipConnector.onceRaceCall(["ended","failed"],()=>{D(),T&&T()}),u),L=u=>{throw c.logger("onFail"),p&&p(),D(),u},H=()=>{c.logger("onFinish"),A&&A()};return c.logger("onBeforeProgressCall"),m&&m(t),I().then(V).catch(u=>L(u)).finally(H)};disconnectFromServer=async()=>this.sipConnector.disconnect().then(()=>(c.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(n=>(c.logger("disconnectFromServer: catch",n),{isSuccessful:!1}));answerToIncomingCall=async n=>{const{mediaStream:t,extraHeaders:o,iceServers:r,contentHint:s,simulcastEncodings:i,degradationPreference:a,sendEncodings:l,offerToReceiveAudio:d,offerToReceiveVideo:C,directionVideo:g,directionAudio:x,setRemoteStreams:U,onBeforeProgressCall:f,onSuccessProgressCall:m,onEnterPurgatory:S,onEnterConference:h,onFailProgressCall:y,onFinishProgressCall:p,onEndedCall:A}=n,T=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:U}),_=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{T().catch(v)}}),O=B({degradationPreference:a},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});c.logger("answerToIncomingCall",n);const b=async()=>this.sipConnector.answerToIncomingCall({mediaStream:t,extraHeaders:o,iceServers:r,contentHint:s,offerToReceiveAudio:d,offerToReceiveVideo:C,directionVideo:g,directionAudio:x,sendEncodings:w({mediaStream:t,simulcastEncodings:i,sendEncodings:l}),onAddedTransceiver:O,ontrack:_}),I=()=>{const{remoteCallerData:u}=this.sipConnector;return u.incomingNumber};let M=!1,E;const D=(c.logger("subscribeEnterConference: onEnterConference",h),S??h?this.sipConnector.onApi("enterRoom",u=>{c.logger("enterRoom",{_room:u,isSuccessProgressCall:M}),E=u,P(E)?S&&S():h&&h({isSuccessProgressCall:M})}):()=>{}),V=u=>(c.logger("onSuccess"),M=!0,T().catch(v),m&&m({isPurgatory:P(E)}),this.sipConnector.onceRaceCall(["ended","failed"],()=>{D(),A&&A()}),u),L=u=>{throw c.logger("onFail"),y&&y(),D(),u},H=()=>{c.logger("onFinish"),p&&p()};if(c.logger("onBeforeProgressCall"),f){const u=I();f(u)}return b().then(V).catch(u=>L(u)).finally(H)};updatePresentation=async({mediaStream:n,isP2P:t,maxBitrate:o,contentHint:r,simulcastEncodings:s,degradationPreference:i,sendEncodings:a,preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d})=>{const C=B({degradationPreference:i},{preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d});return c.logger("updatePresentation"),this.sipConnector.updatePresentation(n,{isP2P:t,maxBitrate:o,contentHint:r,sendEncodings:w({mediaStream:n,simulcastEncodings:s,sendEncodings:a}),onAddedTransceiver:C})};startPresentation=async({mediaStream:n,isP2P:t,maxBitrate:o,contentHint:r,simulcastEncodings:s,degradationPreference:i,sendEncodings:a,preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d,callLimit:C})=>{const g=B({degradationPreference:i},{preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d});return c.logger("startPresentation"),this.sipConnector.startPresentation(n,{isP2P:t,maxBitrate:o,contentHint:r,callLimit:C,sendEncodings:w({mediaStream:n,simulcastEncodings:s,sendEncodings:a}),onAddedTransceiver:g})};stopShareSipConnector=async({isP2P:n=!1}={})=>(c.logger("stopShareSipConnector"),this.sipConnector.stopPresentation({isP2P:n}).catch(t=>{c.logger(t)}));sendRefusalToTurnOnMic=async()=>{c.logger("sendRefusalToTurnOnMic"),await this.sipConnector.sendRefusalToTurnOnMic().catch(n=>{c.logger("sendRefusalToTurnOnMic: error",n)})};sendRefusalToTurnOnCam=async()=>{c.logger("sendRefusalToTurnOnCam"),await this.sipConnector.sendRefusalToTurnOnCam().catch(n=>{c.logger("sendRefusalToTurnOnCam: error",n)})};sendMediaState=async({isEnabledCam:n,isEnabledMic:t})=>{c.logger("sendMediaState"),await this.sipConnector.sendMediaState({cam:n,mic:t})};replaceMediaStream=async(n,{deleteExisting:t,addMissing:o,forceRenegotiation:r,contentHint:s,simulcastEncodings:i,degradationPreference:a,sendEncodings:l}={})=>{const d=B({degradationPreference:a},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});return c.logger("replaceMediaStream"),this.sipConnector.replaceMediaStream(n,{deleteExisting:t,addMissing:o,forceRenegotiation:r,contentHint:s,sendEncodings:w({mediaStream:n,simulcastEncodings:i,sendEncodings:l}),onAddedTransceiver:d})};askPermissionToEnableCam=async()=>{c.logger("askPermissionToEnableCam"),await this.sipConnector.askPermissionToEnableCam()};resolveHandleReadyRemoteStreamsDebounced=({onReadyRemoteStreams:n})=>fe.debounce(()=>{const t=this.sipConnector.getRemoteStreams();c.logger("remoteStreams",t),t&&n(t)},200);resolveHandleReadyRemoteStreams=({onReadyRemoteStreams:n})=>({track:t})=>{hn(t)&&n()};getRemoteStreams=()=>(c.logger("getRemoteStreams"),this.sipConnector.getRemoteStreams());onUseLicense=n=>(c.logger("onUseLicense"),this.sipConnector.onApi("useLicense",n));onMustStopPresentation=n=>(c.logger("onMustStopPresentation"),this.sipConnector.onApi("mustStopPresentation",n));onMoveToSpectators=n=>(c.logger("onMoveToSpectators"),this.sipConnector.onApi("participant:move-request-to-spectators",n));onMoveToParticipants=n=>(c.logger("onMoveToParticipants"),this.sipConnector.onApi("participant:move-request-to-participants",n))}exports.SipConnector=c.SipConnector;exports.causes=c.causes;exports.constants=c.constants;exports.disableDebug=c.disableDebug;exports.enableDebug=c.enableDebug;exports.eventNames=c.eventNames;exports.hasCanceledStartPresentationError=c.hasCanceledStartPresentationError;exports.debug=v;exports.EEventsMainCAM=N;exports.EEventsMic=Z;exports.EEventsSyncMediaState=ee;exports.EMimeTypesVideoCodecs=te;exports.EUseLicense=ne;exports.SipConnectorFacade=mn;exports.getCodecFromSender=oe;exports.hasCanceledCallError=un;exports.resolveVideoSendingBalancer=an;exports.setParametersToSender=X;exports.tools=Xe;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./@SipConnector-CrRymJFW.cjs"),ie=require("sequent-promises"),ae=require("stack-promises"),N=require("debug");require("events-constructor");const G=require("@krivega/cancelable-promise"),le=require("repeated-calls"),ue=require("ts-debounce"),de=(e,n)=>(e.degradationPreference=n.degradationPreference,e),ge=(e,n)=>{e.encodings??=[];for(let t=e.encodings.length;t<n;t+=1)e.encodings.push({});return e},K=e=>(n,t)=>t!==void 0&&n!==t||t===void 0&&n!==e,fe=K(),Ce=(e,n)=>{if(fe(e,n))return e},Se=(e,n)=>{const t=e.maxBitrate,o=Ce(n,t);return o!==void 0&&(e.maxBitrate=o),e},Y=1,he=K(Y),Re=(e,n)=>{const t=e===void 0?void 0:Math.max(e,Y);if(t!==void 0&&he(t,n))return t},me=(e,n)=>{const t=e.scaleResolutionDownBy,o=Re(n,t);return o!==void 0&&(e.scaleResolutionDownBy=o),e},ye=(e,n)=>{const t=n.encodings?.length??0;return ge(e,t),e.encodings.forEach((o,r)=>{const s=(n?.encodings??[])[r],i=s?.maxBitrate,a=s?.scaleResolutionDownBy;Se(o,i),me(o,a)}),e},pe=(e,n)=>{if(e.codecs?.length!==n.codecs?.length)return!0;for(let t=0;t<(e.codecs?.length??0);t++)if(JSON.stringify(e.codecs[t])!==JSON.stringify(n.codecs[t]))return!0;if(e.headerExtensions?.length!==n.headerExtensions?.length)return!0;for(let t=0;t<(e.headerExtensions?.length??0);t++)if(JSON.stringify(e.headerExtensions[t])!==JSON.stringify(n.headerExtensions[t]))return!0;if(e.encodings?.length!==n.encodings?.length)return!0;for(let t=0;t<(e.encodings.length??0);t++)if(JSON.stringify(e.encodings[t])!==JSON.stringify(n.encodings[t]))return!0;return e.rtcp?.cname!==n.rtcp?.cname||e.rtcp?.reducedSize!==n.rtcp?.reducedSize||e.degradationPreference!==n.degradationPreference},X=async(e,n)=>{const t=e.getParameters(),o=JSON.parse(JSON.stringify(t));ye(t,n),de(t,n);const r=pe(o,t);return r&&await e.setParameters(t),{parameters:t,isChanged:r}},k=e=>{const{url:n,cause:t}=e;let o=n;return(t===c.ECallCause.BAD_MEDIA_DESCRIPTION||t===c.ECallCause.NOT_FOUND)&&(o=`${e.message.to.uri.user}@${e.message.to.uri.host}`),o};var z=(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))(z||{});const Ee=new Error("Unknown error"),Te=(e=Ee)=>{const{cause:n,socket:t}=e;let o="CONNECT_SERVER_FAILED";switch(n){case"Forbidden":{o="WRONG_USER_OR_PASSWORD";break}case c.ECallCause.BAD_MEDIA_DESCRIPTION:{o="BAD_MEDIA_ERROR";break}case c.ECallCause.NOT_FOUND:{o="NOT_FOUND_ERROR";break}default:t!==void 0&&t._ws?.readyState===3?o="WS_CONNECTION_FAILED":k(e)!==void 0&&k(e)!==""&&(o="CONNECT_SERVER_FAILED_BY_LINK")}return o},Me=e=>{let n="";try{n=JSON.stringify(e)}catch(t){c.logger("failed to stringify message",t)}return n},Ae=new Error("Unknown error"),_e=(e=Ae)=>{const{code:n,cause:t,message:o}=e,r=k(e),s={code:"",cause:"",message:""};return typeof o=="object"&&o!==null?s.message=Me(o):o&&(s.message=String(o)),r!==void 0&&r!==""&&(s.link=r),n!==void 0&&n!==""&&(s.code=n),t!==void 0&&t!==""&&(s.cause=t),s},be=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:z,getLinkError:k,getTypeFromError:Te,getValuesFromError:_e},Symbol.toStringTag,{value:"Module"})),Ne=({sessionId:e,remoteAddress:n,isMutedAudio:t,isMutedVideo:o,isRegistered:r,isPresentationCall:s})=>{const i=[],a=t?"0":"1",l=o?"0":"1";return i.push(`X-Vinteo-Mic-State: ${a}`,`X-Vinteo-MainCam-State: ${l}`),(r===!1||r===void 0)&&i.push("X-Vinteo-Purgatory-Call: yes"),e!==void 0&&e!==""&&i.push(`X-Vinteo-Session: ${e}`),s===!0&&i.push("X-Vinteo-Presentation-Call: yes"),n!==void 0&&n!==""&&i.push(`X-Vinteo-Remote: ${n}`),i},ve="[@*!|]",Oe="_",Be=e=>{let n=e;return n=n.replaceAll(new RegExp(ve,"g"),Oe),n},De=({appName:e,appVersion:n,browserName:t,browserVersion:o})=>{const s=`${Be(e)} ${n}`;return`ChromeNew - ${t===void 0?s:`${t} ${o}, ${s}`}`},we=({isUnifiedSdpSemantic:e,appVersion:n,browserName:t,browserVersion:o,appName:r})=>e?De({appVersion:n,browserName:t,browserVersion:o,appName:r}):"Chrome",Q="purgatory",P=e=>e===Q,Ie=e=>n=>[...n].map(o=>async()=>e(o)),Pe=async({accumulatedKeys:e,sendKey:n,canRunTask:t})=>{const r=Ie(n)(e);return ie.sequentPromises(r,t)},xe=e=>t=>(c.logger("onStartMainCam"),e.on("api:admin-start-main-cam",t)),Ue=e=>t=>(c.logger("onStartMic"),e.on("api:admin-start-mic",t)),Fe=e=>t=>(c.logger("onStopMainCam"),e.on("api:admin-stop-main-cam",t)),ke=e=>t=>(c.logger("onStopMic"),e.on("api:admin-stop-mic",t)),Ve=({sipConnector:e})=>{const n=(C,m)=>({isSyncForced:S})=>{if(S===!0){C();return}m()},t=xe(e),o=Fe(e),r=Ue(e),s=ke(e);let i,a,l,d;const f=({onStartMainCamForced:C,onStartMainCamNotForced:m,onStopMainCamForced:S,onStopMainCamNotForced:h,onStartMicForced:y,onStartMicNotForced:p,onStopMicForced:E,onStopMicNotForced:T})=>{const _=n(C,m);i=t(_);const v=n(S,h);a=o(v);const O=n(y,p);l=r(O);const B=n(E,T);d=s(B)},g=()=>{i?.(),a?.(),l?.(),d?.()};return{start:C=>{f(C)},stop:()=>{g()}}},Le=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:Q,createSyncMediaState:Ve,error:be,getExtraHeaders:Ne,getUserAgent:we,hasPurgatory:P,sendDtmfAccumulated:Pe},Symbol.toStringTag,{value:"Module"})),$e=e=>[...e.keys()].map(n=>e.get(n)),qe=(e,n)=>$e(e).find(t=>t?.type===n),Z=async e=>e.getStats().then(n=>qe(n,"codec")?.mimeType),He=e=>e.find(n=>n.track?.kind==="video"),ee=(e,n)=>e!==void 0&&n!==void 0&&e.toLowerCase().includes(n.toLowerCase());var b=(e=>(e.PAUSE_MAIN_CAM="PAUSEMAINCAM",e.RESUME_MAIN_CAM="RESUMEMAINCAM",e.MAX_MAIN_CAM_RESOLUTION="MAXMAINCAMRESOLUTION",e.ADMIN_STOP_MAIN_CAM="ADMINSTOPMAINCAM",e.ADMIN_START_MAIN_CAM="ADMINSTARTMAINCAM",e))(b||{});const Xe=1e6,R=e=>e*Xe,ne=R(.06),Je=R(4),je=e=>e<=64?ne:e<=128?R(.12):e<=256?R(.25):e<=384?R(.32):e<=426?R(.38):e<=640?R(.5):e<=848?R(.7):e<=1280?R(1):e<=1920?R(2):Je,We="av1",Ge=e=>ee(e,We),Ke=.6,te=(e,n)=>Ge(n)?e*Ke:e,Ye=e=>te(ne,e),oe=(e,n)=>{const t=je(e);return te(t,n)},q=1,re=({videoTrack:e,targetSize:n,codec:t})=>{const o=e.getSettings(),r=o.width,s=o.height,i=r===void 0?q:r/n.width,a=s===void 0?q:s/n.height,l=Math.max(i,a,q),d=oe(n.width,t);return{scaleResolutionDownBy:l,maxBitrate:d}},ze=async(e,n,t)=>{const{isChanged:o,parameters:r}=await X(e,{encodings:[{scaleResolutionDownBy:n.scaleResolutionDownBy,maxBitrate:n.maxBitrate}]});return o&&t&&t(r),{isChanged:o,parameters:r}},se=ae.createStackPromises(),Qe=async()=>se().catch(e=>{c.logger("videoSendingBalancer: error",e)}),Ze=async e=>(se.add(e),Qe()),J=async({sender:e,scaleResolutionDownBy:n,maxBitrate:t,onSetParameters:o})=>Ze(async()=>ze(e,{scaleResolutionDownBy:n,maxBitrate:t},o)),en=async({sender:e,codec:n},t)=>{const r=Ye(n);return J({sender:e,maxBitrate:r,onSetParameters:t,scaleResolutionDownBy:200})},F=async({sender:e,videoTrack:n,codec:t},o)=>{const i=n.getSettings().width,a=oe(i??0,t);return J({sender:e,maxBitrate:a,onSetParameters:o,scaleResolutionDownBy:1})},nn=async({sender:e,videoTrack:n,resolution:t,codec:o},r)=>{const[s,i]=t.split("x"),{maxBitrate:a,scaleResolutionDownBy:l}=re({videoTrack:n,codec:o,targetSize:{width:Number(s),height:Number(i)}});return J({sender:e,maxBitrate:a,onSetParameters:r,scaleResolutionDownBy:l})},tn=async({mainCam:e,resolutionMainCam:n,sender:t,videoTrack:o,codec:r},s)=>{switch(e){case b.PAUSE_MAIN_CAM:return en({sender:t,codec:r},s);case b.RESUME_MAIN_CAM:return F({sender:t,videoTrack:o,codec:r},s);case b.MAX_MAIN_CAM_RESOLUTION:return n!==void 0?nn({sender:t,videoTrack:o,codec:r,resolution:n},s):F({sender:t,videoTrack:o,codec:r},s);case b.ADMIN_STOP_MAIN_CAM:case b.ADMIN_START_MAIN_CAM:case void 0:return F({sender:t,videoTrack:o,codec:r},s);default:return F({sender:t,videoTrack:o,codec:r},s)}},j={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},W=async({mainCam:e,resolutionMainCam:n,connection:t,onSetParameters:o,ignoreForCodec:r})=>{const s=t.getSenders(),i=He(s);if(!i?.track)return j;const a=await Z(i);return ee(a,r)?j:tn({mainCam:e,resolutionMainCam:n,sender:i,codec:a,videoTrack:i.track},o)},on=(e,{ignoreForCodec:n,onSetParameters:t}={})=>{const o=async()=>{const{connection:l}=e;if(!l)throw new Error("connection is not exist");return W({connection:l,onSetParameters:t,ignoreForCodec:n})};let r=o;const s=l=>{r=async()=>{const{mainCam:d,resolutionMainCam:f}=l,{connection:g}=e;if(!g)throw new Error("connection is not exist");return W({mainCam:d,resolutionMainCam:f,connection:g,onSetParameters:t,ignoreForCodec:n})},r().catch(N)};return{subscribe:()=>{e.on("api:main-cam-control",s)},unsubscribe:()=>{e.off("api:main-cam-control",s)},balanceByTrack:o,resetMainCamControl(){r=o},async reBalance(){return r()}}},rn=e=>e instanceof Object&&("originator"in e||"cause"in e),sn=e=>{if(G.isCanceledError(e))return!0;if(!rn(e))return!1;const{originator:n,cause:t}=e;return typeof t=="string"?t===c.ECallCause.REQUEST_TIMEOUT||t===c.ECallCause.REJECTED||n===c.Originator.LOCAL&&(t===c.ECallCause.CANCELED||t===c.ECallCause.BYE):!1},cn=e=>e.getVideoTracks()[0],w=({mediaStream:e,simulcastEncodings:n,sendEncodings:t})=>{if(n&&n.length>0){const o=t??[],r=cn(e);if(r===void 0)throw new Error("No video track");return n.forEach((s,i)=>{const a=o[i]??{};a.active=!0,s.rid!==void 0&&(a.rid=s.rid),s.scalabilityMode!==void 0&&(a.scalabilityMode=s.scalabilityMode);const{maxBitrate:l,scaleResolutionDownBy:d}=re({videoTrack:r,targetSize:{width:s.width,height:s.height}});a.maxBitrate=l,a.scaleResolutionDownBy=d,o[i]=a}),o}return t},an=(e,n)=>e.filter(o=>n.some(r=>r.clockRate===o.clockRate&&r.mimeType===o.mimeType&&r.channels===o.channels&&r.sdpFmtpLine===o.sdpFmtpLine)),ln=e=>{const n=RTCRtpSender.getCapabilities(e),t=RTCRtpReceiver.getCapabilities(e),o=n===null?[]:n.codecs,r=t===null?[]:t.codecs;return an(o,r)},un=(e,n)=>n===void 0||n.length===0?e:e.sort((t,o)=>{const r=n.indexOf(t.mimeType),s=n.indexOf(o.mimeType),i=r===-1?Number.MAX_VALUE:r,a=s===-1?Number.MAX_VALUE:s;return i-a}),dn=(e,n)=>n===void 0||n.length===0?e:e.filter(t=>!n.includes(t.mimeType)),I=(e,{preferredMimeTypesVideoCodecs:n,excludeMimeTypesVideoCodecs:t})=>async o=>{try{if(typeof o.setCodecPreferences=="function"&&o.sender.track?.kind==="video"&&(n!==void 0&&n.length>0||t!==void 0&&t.length>0)){const r=ln("video"),s=dn(r,t),i=un(s,n);o.setCodecPreferences(i)}Object.keys(e).length>0&&await X(o.sender,e)}catch(r){c.logger("updateTransceiver error",r)}},H=e=>{if(!G.isCanceledError(e)&&!le.hasCanceledError(e))throw e;return{isSuccessful:!1}},gn=({kind:e,readyState:n})=>e==="video"&&n==="live",fn=new Set(["on","once","onceRace","wait","off","sendDTMF","hangUp","declineToIncomingCall","sendChannels","checkTelephony","waitChannels","ping","connection","isConfigured","isRegistered"]);class Cn{on;once;onceRace;wait;off;sendDTMF;hangUp;declineToIncomingCall;sendChannels;checkTelephony;waitChannels;ping;connection;isConfigured;isRegistered;sipConnector;preferredMimeTypesVideoCodecs;excludeMimeTypesVideoCodecs;constructor(n,{preferredMimeTypesVideoCodecs:t,excludeMimeTypesVideoCodecs:o}={}){return this.preferredMimeTypesVideoCodecs=t,this.excludeMimeTypesVideoCodecs=o,this.sipConnector=n,new Proxy(this,{get:(r,s,i)=>{if(typeof s=="string"&&fn.has(s)&&s in this.sipConnector){const l=Reflect.get(this.sipConnector,s,this.sipConnector);return typeof l=="function"?l.bind(this.sipConnector):l}const a=Reflect.get(r,s,i);return typeof a=="function"?a.bind(r):a}})}connectToServer=async n=>{const{userAgent:t,sipWebSocketServerURL:o,sipServerUrl:r,remoteAddress:s,displayName:i,name:a,password:l,isRegisteredUser:d,isDisconnectOnFail:f}=n;return c.logger("connectToServer",n),this.sipConnector.connect({userAgent:t,sipWebSocketServerURL:o,sipServerUrl:r,remoteAddress:s,displayName:i,password:l,user:a,register:d}).then(g=>(c.logger("connectToServer then"),{ua:g,isSuccessful:!0})).catch(async g=>(c.logger("connectToServer catch: error",g),f===!0?this.sipConnector.disconnect().then(()=>H(g)).catch(()=>H(g)):H(g)))};callToServer=async n=>{const{conference:t,mediaStream:o,extraHeaders:r,iceServers:s,contentHint:i,simulcastEncodings:a,degradationPreference:l,sendEncodings:d,offerToReceiveAudio:f,offerToReceiveVideo:g,directionVideo:x,directionAudio:U,setRemoteStreams:C,onBeforeProgressCall:m,onSuccessProgressCall:S,onEnterPurgatory:h,onEnterConference:y,onFailProgressCall:p,onFinishProgressCall:E,onEndedCall:T}=n,_=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:C}),v=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{_().catch(N)}}),O=I({degradationPreference:l},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});c.logger("callToServer",n);const B=async()=>(c.logger("startCall"),this.sipConnector.call({mediaStream:o,extraHeaders:r,iceServers:s,contentHint:i,offerToReceiveAudio:f,offerToReceiveVideo:g,directionVideo:x,directionAudio:U,sendEncodings:w({mediaStream:o,simulcastEncodings:a,sendEncodings:d}),number:t,onAddedTransceiver:O,ontrack:v}));let M=!1,A;const D=(c.logger("subscribeEnterConference: onEnterConference",y),h??y?this.sipConnector.on("api:enterRoom",({room:u})=>{c.logger("enterRoom",{_room:u,isSuccessProgressCall:M}),A=u,P(A)?h&&h():y&&y({isSuccessProgressCall:M})}):()=>{}),V=u=>(c.logger("onSuccess"),M=!0,_().catch(N),S&&S({isPurgatory:P(A)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{D(),T&&T()}),u),L=u=>{throw c.logger("onFail"),p&&p(),D(),u},$=()=>{c.logger("onFinish"),E&&E()};return c.logger("onBeforeProgressCall"),m&&m(t),B().then(V).catch(u=>L(u)).finally($)};disconnectFromServer=async()=>this.sipConnector.disconnect().then(()=>(c.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(n=>(c.logger("disconnectFromServer: catch",n),{isSuccessful:!1}));answerToIncomingCall=async n=>{const{mediaStream:t,extraHeaders:o,iceServers:r,contentHint:s,simulcastEncodings:i,degradationPreference:a,sendEncodings:l,offerToReceiveAudio:d,offerToReceiveVideo:f,directionVideo:g,directionAudio:x,setRemoteStreams:U,onBeforeProgressCall:C,onSuccessProgressCall:m,onEnterPurgatory:S,onEnterConference:h,onFailProgressCall:y,onFinishProgressCall:p,onEndedCall:E}=n,T=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:U}),_=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{T().catch(N)}}),v=I({degradationPreference:a},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});c.logger("answerToIncomingCall",n);const O=async()=>this.sipConnector.answerToIncomingCall({mediaStream:t,extraHeaders:o,iceServers:r,contentHint:s,offerToReceiveAudio:d,offerToReceiveVideo:f,directionVideo:g,directionAudio:x,sendEncodings:w({mediaStream:t,simulcastEncodings:i,sendEncodings:l}),onAddedTransceiver:v,ontrack:_}),B=()=>{const{remoteCallerData:u}=this.sipConnector;return u.incomingNumber};let M=!1,A;const D=(c.logger("subscribeEnterConference: onEnterConference",h),S??h?this.sipConnector.on("api:enterRoom",u=>{c.logger("enterRoom",{_room:u,isSuccessProgressCall:M}),A=u,P(A)?S&&S():h&&h({isSuccessProgressCall:M})}):()=>{}),V=u=>(c.logger("onSuccess"),M=!0,T().catch(N),m&&m({isPurgatory:P(A)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{D(),E&&E()}),u),L=u=>{throw c.logger("onFail"),y&&y(),D(),u},$=()=>{c.logger("onFinish"),p&&p()};if(c.logger("onBeforeProgressCall"),C){const u=B();C(u)}return O().then(V).catch(u=>L(u)).finally($)};updatePresentation=async({mediaStream:n,isP2P:t,maxBitrate:o,contentHint:r,simulcastEncodings:s,degradationPreference:i,sendEncodings:a,preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d})=>{const f=I({degradationPreference:i},{preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d});return c.logger("updatePresentation"),this.sipConnector.updatePresentation(n,{isP2P:t,maxBitrate:o,contentHint:r,sendEncodings:w({mediaStream:n,simulcastEncodings:s,sendEncodings:a}),onAddedTransceiver:f})};startPresentation=async({mediaStream:n,isP2P:t,maxBitrate:o,contentHint:r,simulcastEncodings:s,degradationPreference:i,sendEncodings:a,preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d,callLimit:f})=>{const g=I({degradationPreference:i},{preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d});return c.logger("startPresentation"),this.sipConnector.startPresentation(n,{isP2P:t,maxBitrate:o,contentHint:r,callLimit:f,sendEncodings:w({mediaStream:n,simulcastEncodings:s,sendEncodings:a}),onAddedTransceiver:g})};stopShareSipConnector=async({isP2P:n=!1}={})=>(c.logger("stopShareSipConnector"),this.sipConnector.stopPresentation({isP2P:n}).catch(t=>{c.logger(t)}));sendRefusalToTurnOnMic=async()=>{c.logger("sendRefusalToTurnOnMic"),await this.sipConnector.sendRefusalToTurnOnMic().catch(n=>{c.logger("sendRefusalToTurnOnMic: error",n)})};sendRefusalToTurnOnCam=async()=>{c.logger("sendRefusalToTurnOnCam"),await this.sipConnector.sendRefusalToTurnOnCam().catch(n=>{c.logger("sendRefusalToTurnOnCam: error",n)})};sendMediaState=async({isEnabledCam:n,isEnabledMic:t})=>{c.logger("sendMediaState"),await this.sipConnector.sendMediaState({cam:n,mic:t})};replaceMediaStream=async(n,{deleteExisting:t,addMissing:o,forceRenegotiation:r,contentHint:s,simulcastEncodings:i,degradationPreference:a,sendEncodings:l}={})=>{const d=I({degradationPreference:a},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});return c.logger("replaceMediaStream"),this.sipConnector.replaceMediaStream(n,{deleteExisting:t,addMissing:o,forceRenegotiation:r,contentHint:s,sendEncodings:w({mediaStream:n,simulcastEncodings:i,sendEncodings:l}),onAddedTransceiver:d})};askPermissionToEnableCam=async()=>{c.logger("askPermissionToEnableCam"),await this.sipConnector.askPermissionToEnableCam()};resolveHandleReadyRemoteStreamsDebounced=({onReadyRemoteStreams:n})=>ue.debounce(()=>{const t=this.sipConnector.getRemoteStreams();c.logger("remoteStreams",t),t&&n(t)},200);resolveHandleReadyRemoteStreams=({onReadyRemoteStreams:n})=>({track:t})=>{gn(t)&&n()};getRemoteStreams=()=>(c.logger("getRemoteStreams"),this.sipConnector.getRemoteStreams());onUseLicense=n=>(c.logger("onUseLicense"),this.sipConnector.on("api:useLicense",n));onMustStopPresentation=n=>(c.logger("onMustStopPresentation"),this.sipConnector.on("api:mustStopPresentation",n));onMoveToSpectators=n=>(c.logger("onMoveToSpectators"),this.sipConnector.on("api:participant:move-request-to-spectators",n));onMoveToParticipants=n=>(c.logger("onMoveToParticipants"),this.sipConnector.on("api:participant:move-request-to-participants",n))}exports.SipConnector=c.SipConnector;exports.disableDebug=c.disableDebug;exports.enableDebug=c.enableDebug;exports.hasCanceledStartPresentationError=c.hasCanceledStartPresentationError;exports.debug=N;exports.SipConnectorFacade=Cn;exports.getCodecFromSender=Z;exports.hasCanceledCallError=sn;exports.resolveVideoSendingBalancer=on;exports.setParametersToSender=X;exports.tools=Le;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
export * as causes from './causes';
|
|
2
|
-
export * as constants from './constants';
|
|
3
|
-
export * as eventNames from './eventNames';
|
|
4
1
|
export { debug, disableDebug, enableDebug } from './logger';
|
|
5
2
|
export { default as setParametersToSender } from './setParametersToSender';
|
|
6
3
|
export * as tools from './tools';
|
|
7
|
-
export * from './types';
|
|
8
4
|
export { default as getCodecFromSender } from './utils/getCodecFromSender';
|
|
9
5
|
export { default as resolveVideoSendingBalancer } from './videoSendingBalancer';
|
|
10
6
|
export { hasCanceledCallError } from './CallManager';
|
|
11
7
|
export { hasCanceledStartPresentationError } from './PresentationManager';
|
|
12
|
-
export {
|
|
8
|
+
export { SipConnector } from './SipConnector';
|
|
13
9
|
export { SipConnectorFacade } from './SipConnectorFacade';
|