sip-connector 19.8.3 → 19.9.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/README.md +0 -101
- package/dist/@SipConnector-DhKRV_I3.cjs +1 -0
- package/dist/{@SipConnector-BmkeKEDD.js → @SipConnector-LWYRHYnw.js} +597 -714
- package/dist/ApiManager/@ApiManager.d.ts +0 -1
- package/dist/ApiManager/constants.d.ts +3 -8
- package/dist/ApiManager/eventNames.d.ts +7 -5
- package/dist/ApiManager/index.d.ts +0 -1
- package/dist/ApiManager/types.d.ts +0 -6
- package/dist/AutoConnectorManager/@AutoConnectorManager.d.ts +3 -0
- package/dist/AutoConnectorManager/NotActiveCallSubscriber.d.ts +15 -0
- package/dist/AutoConnectorManager/PingServerIfNotActiveCallRequester.d.ts +1 -3
- package/dist/AutoConnectorManager/RegistrationFailedOutOfCallSubscriber.d.ts +1 -1
- package/dist/CallManager/@CallManager.d.ts +30 -15
- package/dist/CallManager/MCUSession.d.ts +0 -1
- package/dist/CallManager/RecvSession.d.ts +29 -0
- package/dist/CallManager/index.d.ts +0 -1
- package/dist/CallManager/types.d.ts +13 -31
- package/dist/SipConnector/@SipConnector.d.ts +1 -2
- package/dist/SipConnector/eventNames.d.ts +4 -2
- package/dist/__fixtures__/RTCPeerConnectionMock.d.ts +13 -17
- package/dist/doMock.cjs +1 -1
- package/dist/doMock.js +131 -130
- package/dist/index.cjs +1 -1
- package/dist/index.js +2 -2
- package/package.json +13 -5
- package/dist/@SipConnector-BHakZWEK.cjs +0 -1
- package/dist/CallManager/AbstractCallStrategy.d.ts +0 -54
- package/dist/CallManager/MCUCallStrategy.d.ts +0 -31
- package/dist/TransceiverManager/@TransceiverManager.d.ts +0 -70
- package/dist/TransceiverManager/index.d.ts +0 -1
- package/dist/TransceiverManager/types.d.ts +0 -11
package/dist/doMock.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { EventEmitter as L } from "node:events";
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { IncomingRequest as
|
|
2
|
+
import k from "@krivega/jssip/lib/NameAddrHeader";
|
|
3
|
+
import F from "@krivega/jssip/lib/URI";
|
|
4
|
+
import { IncomingRequest as b } from "@krivega/jssip/lib/SIPMessage";
|
|
5
5
|
import { NameAddrHeader as V, URI as E, SessionStatus as W, C as N } from "@krivega/jssip";
|
|
6
|
-
import {
|
|
7
|
-
import { Events as
|
|
8
|
-
import { O as
|
|
9
|
-
class T extends
|
|
6
|
+
import { MediaStreamTrackMock as U, createAudioMediaStreamTrackMock as G, createVideoMediaStreamTrackMock as H } from "webrtc-mock";
|
|
7
|
+
import { Events as O } from "events-constructor";
|
|
8
|
+
import { O as j, S as x } from "./@SipConnector-LWYRHYnw.js";
|
|
9
|
+
class T extends b {
|
|
10
10
|
headers;
|
|
11
11
|
constructor(e) {
|
|
12
12
|
super(), this.headers = new Headers(e);
|
|
@@ -15,34 +15,33 @@ class T extends k {
|
|
|
15
15
|
return this.headers.get(e) ?? "";
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
const Y = "incomingCall",
|
|
18
|
+
const Y = "incomingCall", q = "declinedIncomingCall", z = "failedIncomingCall", B = "terminatedIncomingCall", P = "connecting", K = "connected", J = "disconnected", $ = "newRTCSession", Q = "registered", X = "unregistered", Z = "registrationFailed", ee = "newMessage", te = "sipEvent", re = "availableSecondRemoteStream", ne = "notAvailableSecondRemoteStream", oe = "mustStopPresentation", se = "shareState", ie = "enterRoom", ae = "useLicense", ce = "peerconnection:confirmed", de = "peerconnection:ontrack", Ee = "channels", he = "channels:notify", me = "ended:fromserver", ue = "main-cam-control", le = "admin-stop-main-cam", pe = "admin-start-main-cam", ge = "admin-stop-mic", Te = "admin-start-mic", _e = "admin-force-sync-media-state", Ie = "participant:added-to-list-moderators", Se = "participant:removed-from-list-moderators", Ne = "participant:move-request-to-stream", we = "participant:move-request-to-spectators", fe = "participant:move-request-to-participants", Ce = "participation:accepting-word-request", Re = "participation:cancelling-word-request", Ae = "webcast:started", Me = "webcast:stopped", Oe = "account:changed", Pe = "account:deleted", ve = "conference:participant-token-issued", De = "ended", ye = "sending", Le = "reinvite", ke = "replaces", Fe = "refer", be = "progress", Ve = "accepted", We = "confirmed", Ue = "peerconnection", Ge = "failed", He = "muted", je = "unmuted", xe = "newDTMF", Ye = "newInfo", qe = "hold", ze = "unhold", Be = "update", Ke = "sdp", Je = "icecandidate", $e = "getusermediafailed", Qe = "peerconnection:createofferfailed", Xe = "peerconnection:createanswerfailed", Ze = "peerconnection:setlocaldescriptionfailed", et = "peerconnection:setremotedescriptionfailed", tt = "presentation:start", rt = "presentation:started", nt = "presentation:end", ot = "presentation:ended", st = "presentation:failed", it = [
|
|
19
19
|
Y,
|
|
20
|
-
j,
|
|
21
|
-
z,
|
|
22
20
|
q,
|
|
23
|
-
|
|
21
|
+
B,
|
|
22
|
+
z,
|
|
24
23
|
Ce,
|
|
25
|
-
Se,
|
|
26
|
-
Ee,
|
|
27
|
-
Pe,
|
|
28
|
-
Me,
|
|
29
|
-
Oe,
|
|
30
24
|
Re,
|
|
25
|
+
Ne,
|
|
26
|
+
he,
|
|
27
|
+
ve,
|
|
28
|
+
Oe,
|
|
29
|
+
Pe,
|
|
31
30
|
Ae,
|
|
32
|
-
|
|
33
|
-
Ie
|
|
31
|
+
Me,
|
|
32
|
+
Ie,
|
|
33
|
+
Se
|
|
34
34
|
], v = [
|
|
35
35
|
P,
|
|
36
|
-
B,
|
|
37
36
|
K,
|
|
38
|
-
$,
|
|
39
37
|
J,
|
|
38
|
+
$,
|
|
40
39
|
Q,
|
|
41
40
|
X,
|
|
42
41
|
Z,
|
|
43
|
-
ee
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
ee,
|
|
43
|
+
te
|
|
44
|
+
], at = [
|
|
46
45
|
re,
|
|
47
46
|
ne,
|
|
48
47
|
oe,
|
|
@@ -51,38 +50,38 @@ const Y = "incomingCall", j = "declinedIncomingCall", q = "failedIncomingCall",
|
|
|
51
50
|
ae,
|
|
52
51
|
ce,
|
|
53
52
|
de,
|
|
54
|
-
|
|
53
|
+
Ee,
|
|
55
54
|
me,
|
|
56
|
-
le,
|
|
57
55
|
ue,
|
|
58
56
|
pe,
|
|
57
|
+
le,
|
|
59
58
|
ge,
|
|
59
|
+
Te,
|
|
60
60
|
_e,
|
|
61
61
|
we,
|
|
62
|
-
|
|
62
|
+
fe
|
|
63
63
|
], p = [
|
|
64
|
-
ve,
|
|
65
|
-
P,
|
|
66
64
|
De,
|
|
65
|
+
P,
|
|
67
66
|
ye,
|
|
68
67
|
Le,
|
|
68
|
+
ke,
|
|
69
69
|
Fe,
|
|
70
70
|
be,
|
|
71
|
-
ke,
|
|
72
71
|
Ve,
|
|
73
72
|
We,
|
|
74
73
|
Ue,
|
|
75
74
|
Ge,
|
|
76
75
|
He,
|
|
76
|
+
je,
|
|
77
77
|
xe,
|
|
78
78
|
Ye,
|
|
79
|
-
je,
|
|
80
79
|
qe,
|
|
81
80
|
ze,
|
|
82
81
|
Be,
|
|
83
82
|
Ke,
|
|
84
|
-
$e,
|
|
85
83
|
Je,
|
|
84
|
+
$e,
|
|
86
85
|
Qe,
|
|
87
86
|
Xe,
|
|
88
87
|
Ze,
|
|
@@ -90,14 +89,15 @@ const Y = "incomingCall", j = "declinedIncomingCall", q = "failedIncomingCall",
|
|
|
90
89
|
tt,
|
|
91
90
|
rt,
|
|
92
91
|
nt,
|
|
93
|
-
ot
|
|
92
|
+
ot,
|
|
93
|
+
st
|
|
94
94
|
];
|
|
95
|
-
[...v, ...
|
|
95
|
+
[...v, ...it];
|
|
96
96
|
[
|
|
97
97
|
...p,
|
|
98
|
-
...
|
|
98
|
+
...at
|
|
99
99
|
];
|
|
100
|
-
class
|
|
100
|
+
class ct {
|
|
101
101
|
originator;
|
|
102
102
|
connection;
|
|
103
103
|
events;
|
|
@@ -108,7 +108,7 @@ class at {
|
|
|
108
108
|
eventHandlers: t,
|
|
109
109
|
remoteIdentity: r
|
|
110
110
|
}) {
|
|
111
|
-
this.originator = e, this.events = new
|
|
111
|
+
this.originator = e, this.events = new O(p), this.initEvents(t), this.remote_identity = r;
|
|
112
112
|
}
|
|
113
113
|
get contact() {
|
|
114
114
|
throw new Error("Method not implemented.");
|
|
@@ -268,7 +268,7 @@ class at {
|
|
|
268
268
|
return !0;
|
|
269
269
|
}
|
|
270
270
|
}
|
|
271
|
-
class
|
|
271
|
+
class w {
|
|
272
272
|
stats = (/* @__PURE__ */ new Map()).set("codec", { mimeType: "video/h264" });
|
|
273
273
|
dtmf = null;
|
|
274
274
|
track = null;
|
|
@@ -311,7 +311,7 @@ class f {
|
|
|
311
311
|
throw new Error("Method not implemented.");
|
|
312
312
|
}
|
|
313
313
|
}
|
|
314
|
-
class
|
|
314
|
+
class f {
|
|
315
315
|
currentDirection = "sendrecv";
|
|
316
316
|
direction = "sendrecv";
|
|
317
317
|
// eslint-disable-next-line unicorn/no-null
|
|
@@ -329,8 +329,7 @@ class C {
|
|
|
329
329
|
stop() {
|
|
330
330
|
}
|
|
331
331
|
}
|
|
332
|
-
|
|
333
|
-
class dt {
|
|
332
|
+
class dt extends EventTarget {
|
|
334
333
|
senders = [];
|
|
335
334
|
receivers = [];
|
|
336
335
|
canTrickleIceCandidates;
|
|
@@ -359,9 +358,23 @@ class dt {
|
|
|
359
358
|
// eslint-disable-next-line unicorn/no-null
|
|
360
359
|
sctp = null;
|
|
361
360
|
signalingState;
|
|
362
|
-
|
|
361
|
+
close = jest.fn();
|
|
362
|
+
setLocalDescription = jest.fn(
|
|
363
|
+
async (e) => {
|
|
364
|
+
}
|
|
365
|
+
);
|
|
366
|
+
setRemoteDescription = jest.fn(
|
|
367
|
+
async (e) => {
|
|
368
|
+
}
|
|
369
|
+
);
|
|
370
|
+
addTransceiver = jest.fn(
|
|
371
|
+
(e, t) => ({})
|
|
372
|
+
);
|
|
373
|
+
createOffer = jest.fn(
|
|
374
|
+
async (e, t, r) => ({ type: "offer", sdp: "offer-sdp" })
|
|
375
|
+
);
|
|
363
376
|
constructor(e, t) {
|
|
364
|
-
|
|
377
|
+
super(), this.receivers = t?.map((r) => ({ track: r })) ?? [];
|
|
365
378
|
}
|
|
366
379
|
getRemoteStreams() {
|
|
367
380
|
throw new Error("Method not implemented.");
|
|
@@ -369,12 +382,6 @@ class dt {
|
|
|
369
382
|
async addIceCandidate(e) {
|
|
370
383
|
throw new Error("Method not implemented.");
|
|
371
384
|
}
|
|
372
|
-
addTransceiver(e, t) {
|
|
373
|
-
throw new Error("Method not implemented.");
|
|
374
|
-
}
|
|
375
|
-
close() {
|
|
376
|
-
throw new Error("Method not implemented.");
|
|
377
|
-
}
|
|
378
385
|
restartIce() {
|
|
379
386
|
throw new Error("Method not implemented.");
|
|
380
387
|
}
|
|
@@ -384,9 +391,6 @@ class dt {
|
|
|
384
391
|
createDataChannel(e, t) {
|
|
385
392
|
throw new Error("Method not implemented.");
|
|
386
393
|
}
|
|
387
|
-
async createOffer(e, t, r) {
|
|
388
|
-
throw new Error("Method not implemented.");
|
|
389
|
-
}
|
|
390
394
|
getConfiguration() {
|
|
391
395
|
throw new Error("Method not implemented.");
|
|
392
396
|
}
|
|
@@ -405,41 +409,38 @@ class dt {
|
|
|
405
409
|
setConfiguration(e) {
|
|
406
410
|
throw new Error("Method not implemented.");
|
|
407
411
|
}
|
|
408
|
-
async setLocalDescription(e) {
|
|
409
|
-
throw new Error("Method not implemented.");
|
|
410
|
-
}
|
|
411
|
-
async setRemoteDescription(e) {
|
|
412
|
-
throw new Error("Method not implemented.");
|
|
413
|
-
}
|
|
414
|
-
addEventListener(e, t, r) {
|
|
415
|
-
this.events.on(e, t);
|
|
416
|
-
}
|
|
417
|
-
removeEventListener(e, t, r) {
|
|
418
|
-
this.events.off(e, t);
|
|
419
|
-
}
|
|
420
|
-
dispatchEvent(e) {
|
|
421
|
-
throw new Error("Method not implemented.");
|
|
422
|
-
}
|
|
423
412
|
getReceivers = () => this.receivers;
|
|
424
413
|
getSenders = () => this.senders;
|
|
425
414
|
addTrack = (e, ...t) => {
|
|
426
|
-
const r = new
|
|
427
|
-
return
|
|
415
|
+
const r = new w({ track: e }), o = new f(r);
|
|
416
|
+
return o.mid = e.kind === "audio" ? "0" : "1", this.senders.push(r), this.dispatchTrackInternal(e), r;
|
|
428
417
|
};
|
|
429
418
|
// Дополнительный метод для тестов с возможностью установки mid
|
|
430
419
|
addTrackWithMid = (e, t) => {
|
|
431
|
-
const r = new
|
|
432
|
-
return t === void 0 ?
|
|
420
|
+
const r = new w({ track: e }), o = new f(r);
|
|
421
|
+
return t === void 0 ? o.mid = e.kind === "audio" ? "0" : "1" : o.mid = t, this.senders.push(r), this.dispatchTrackInternal(e), r;
|
|
433
422
|
};
|
|
423
|
+
dispatchTrack(e) {
|
|
424
|
+
this.dispatchTrackInternal(new U(e));
|
|
425
|
+
}
|
|
426
|
+
dispatchTrackInternal(e) {
|
|
427
|
+
const t = new Event(
|
|
428
|
+
"track"
|
|
429
|
+
/* TRACK */
|
|
430
|
+
);
|
|
431
|
+
Object.defineProperty(t, "track", {
|
|
432
|
+
value: e
|
|
433
|
+
}), this.dispatchEvent(t);
|
|
434
|
+
}
|
|
434
435
|
}
|
|
435
|
-
function Et(
|
|
436
|
-
const e =
|
|
436
|
+
function Et(n) {
|
|
437
|
+
const e = n.match(/(purgatory)|[\d.]+/g);
|
|
437
438
|
if (!e)
|
|
438
439
|
throw new Error("wrong sip url");
|
|
439
440
|
return e[0];
|
|
440
441
|
}
|
|
441
|
-
const
|
|
442
|
-
class i extends
|
|
442
|
+
const C = 400, ht = "777", mt = (n) => n.getVideoTracks().length > 0;
|
|
443
|
+
class i extends ct {
|
|
443
444
|
static presentationError;
|
|
444
445
|
static startPresentationError;
|
|
445
446
|
static countStartPresentationError = Number.POSITIVE_INFINITY;
|
|
@@ -464,7 +465,7 @@ class i extends at {
|
|
|
464
465
|
}, 100), setTimeout(() => {
|
|
465
466
|
this.trigger("confirmed");
|
|
466
467
|
}, 200);
|
|
467
|
-
},
|
|
468
|
+
}, C);
|
|
468
469
|
});
|
|
469
470
|
replaceMediaStream = jest.fn(async (e) => {
|
|
470
471
|
});
|
|
@@ -489,9 +490,9 @@ class i extends at {
|
|
|
489
490
|
new E("sip", "caller1", "test1.com", 5060),
|
|
490
491
|
"Test Caller 1"
|
|
491
492
|
),
|
|
492
|
-
delayStartPresentation:
|
|
493
|
+
delayStartPresentation: o = 0
|
|
493
494
|
}) {
|
|
494
|
-
super({ originator: t, eventHandlers: e, remoteIdentity: r }), this.delayStartPresentation =
|
|
495
|
+
super({ originator: t, eventHandlers: e, remoteIdentity: r }), this.delayStartPresentation = o;
|
|
495
496
|
}
|
|
496
497
|
static get C() {
|
|
497
498
|
return W;
|
|
@@ -530,11 +531,11 @@ class i extends at {
|
|
|
530
531
|
return e ? (this.createPeerconnection(e), !0) : !1;
|
|
531
532
|
}
|
|
532
533
|
createPeerconnection(e) {
|
|
533
|
-
const t =
|
|
534
|
+
const t = G();
|
|
534
535
|
t.id = "mainaudio1";
|
|
535
536
|
const r = [t];
|
|
536
537
|
if (mt(e)) {
|
|
537
|
-
const a =
|
|
538
|
+
const a = H();
|
|
538
539
|
a.id = "mainvideo1", r.push(a);
|
|
539
540
|
}
|
|
540
541
|
this.connection = new dt(void 0, r), this.addStream(e), this.trigger("peerconnection", { peerconnection: this.connection });
|
|
@@ -548,10 +549,10 @@ class i extends at {
|
|
|
548
549
|
cause: "Rejected"
|
|
549
550
|
}) : (this.trigger("connecting"), this.timeoutNewInfo = setTimeout(() => {
|
|
550
551
|
this.newInfo({
|
|
551
|
-
originator:
|
|
552
|
+
originator: j.REMOTE,
|
|
552
553
|
// @ts-expect-error
|
|
553
554
|
request: {
|
|
554
|
-
getHeader: (
|
|
555
|
+
getHeader: (o) => o === "content-type" ? "application/vinteo.webrtc.roomname" : o === "x-webrtc-enter-room" ? r : o === "x-webrtc-participant-name" ? "Test Caller 1" : ""
|
|
555
556
|
}
|
|
556
557
|
});
|
|
557
558
|
}, 100), this.timeoutAccepted = setTimeout(() => {
|
|
@@ -559,7 +560,7 @@ class i extends at {
|
|
|
559
560
|
}, 200), this.timeoutConfirmed = setTimeout(() => {
|
|
560
561
|
this.trigger("confirmed");
|
|
561
562
|
}, 300));
|
|
562
|
-
},
|
|
563
|
+
}, C), this.connection;
|
|
563
564
|
}
|
|
564
565
|
terminate({ status_code: e, cause: t } = {}) {
|
|
565
566
|
return this.status_code = e, this.trigger("ended", { status_code: e, cause: t, originator: "local" }), this.isEndedInner = !1, this;
|
|
@@ -629,14 +630,14 @@ class ut {
|
|
|
629
630
|
setExtraContactParams() {
|
|
630
631
|
}
|
|
631
632
|
}
|
|
632
|
-
const c = "PASSWORD_CORRECT",
|
|
633
|
+
const c = "PASSWORD_CORRECT", R = "PASSWORD_CORRECT_2", lt = "NAME_INCORRECT", d = 400, l = {
|
|
633
634
|
url: "wss://sipServerUrl/webrtc/wss/",
|
|
634
635
|
sip_uri: "sip:sipServerUrl;transport=ws",
|
|
635
636
|
via_transport: "WSS"
|
|
636
|
-
},
|
|
637
|
+
}, A = {
|
|
637
638
|
status_code: 200,
|
|
638
639
|
reason_phrase: "OK"
|
|
639
|
-
},
|
|
640
|
+
}, M = {
|
|
640
641
|
status_code: 401,
|
|
641
642
|
reason_phrase: "Unauthorized"
|
|
642
643
|
};
|
|
@@ -650,8 +651,8 @@ class s {
|
|
|
650
651
|
// @ts-expect-error – Jest создаёт функцию-замок.
|
|
651
652
|
call = jest.fn(
|
|
652
653
|
(e, t) => {
|
|
653
|
-
const { mediaStream: r, eventHandlers:
|
|
654
|
-
return this.session = new i({ eventHandlers:
|
|
654
|
+
const { mediaStream: r, eventHandlers: o } = t;
|
|
655
|
+
return this.session = new i({ eventHandlers: o, originator: "local" }), this.session.connect(e, { mediaStream: r }), this.session;
|
|
655
656
|
}
|
|
656
657
|
);
|
|
657
658
|
sendOptions = jest.fn(
|
|
@@ -686,10 +687,10 @@ class s {
|
|
|
686
687
|
isConnectedInner;
|
|
687
688
|
configuration;
|
|
688
689
|
constructor(e) {
|
|
689
|
-
this.events = new
|
|
690
|
-
const [t, r] = e.uri.split(":"), [
|
|
690
|
+
this.events = new O(v);
|
|
691
|
+
const [t, r] = e.uri.split(":"), [o, a] = r.split("@"), u = {
|
|
691
692
|
...e,
|
|
692
|
-
uri: new E(t,
|
|
693
|
+
uri: new E(t, o, a)
|
|
693
694
|
};
|
|
694
695
|
this.configuration = u, this.registratorInner = new ut();
|
|
695
696
|
}
|
|
@@ -737,11 +738,11 @@ class s {
|
|
|
737
738
|
this.startedTimeout && clearTimeout(this.startedTimeout);
|
|
738
739
|
const { password: e, register: t, uri: r } = this.configuration;
|
|
739
740
|
t === !0 && r.user.includes(lt) ? (this.isRegisteredInner = !1, this.isConnectedInner = !1, this.startedTimeout = setTimeout(() => {
|
|
740
|
-
this.trigger("registrationFailed", { response:
|
|
741
|
-
}, d)) : !this.isRegistered() && t === !0 && (e === c || e ===
|
|
742
|
-
this.trigger("registered", { response:
|
|
743
|
-
}, d)) : t === !0 && e !== c && e !==
|
|
744
|
-
this.trigger("registrationFailed", { response:
|
|
741
|
+
this.trigger("registrationFailed", { response: M, cause: N.causes.REJECTED });
|
|
742
|
+
}, d)) : !this.isRegistered() && t === !0 && (e === c || e === R) ? (this.isRegisteredInner = !0, this.startedTimeout = setTimeout(() => {
|
|
743
|
+
this.trigger("registered", { response: A });
|
|
744
|
+
}, d)) : t === !0 && e !== c && e !== R && (this.isRegisteredInner = !1, this.isConnectedInner = !1, this.startedTimeout = setTimeout(() => {
|
|
745
|
+
this.trigger("registrationFailed", { response: M, cause: N.causes.REJECTED });
|
|
745
746
|
}, d)), s.isAvailableTelephony ? (this.trigger("connected", { socket: l }), this.isConnectedInner = !0) : this.stop();
|
|
746
747
|
}
|
|
747
748
|
/**
|
|
@@ -750,7 +751,7 @@ class s {
|
|
|
750
751
|
* @returns {undefined}
|
|
751
752
|
*/
|
|
752
753
|
unregister() {
|
|
753
|
-
this.isRegisteredInner = !1, this.isConnectedInner = !1, this.trigger("unregistered", { response:
|
|
754
|
+
this.isRegisteredInner = !1, this.isConnectedInner = !1, this.trigger("unregistered", { response: A });
|
|
754
755
|
}
|
|
755
756
|
isRegistered() {
|
|
756
757
|
return this.isRegisteredInner === !0;
|
|
@@ -786,34 +787,34 @@ class gt extends L {
|
|
|
786
787
|
super(), this.contentType = e, this.body = t;
|
|
787
788
|
}
|
|
788
789
|
}
|
|
789
|
-
const g = "remote",
|
|
790
|
+
const g = "remote", Tt = (n, e) => {
|
|
790
791
|
const t = new T(e), r = {
|
|
791
792
|
originator: g,
|
|
792
793
|
request: t,
|
|
793
794
|
info: new gt("", "")
|
|
794
795
|
};
|
|
795
|
-
|
|
796
|
-
},
|
|
796
|
+
n.newInfo(r);
|
|
797
|
+
}, _t = (n, e) => {
|
|
797
798
|
const r = { event: "sipEvent", request: new T(e) };
|
|
798
|
-
|
|
799
|
-
}, It = (
|
|
799
|
+
n.newSipEvent(r);
|
|
800
|
+
}, It = (n, {
|
|
800
801
|
incomingNumber: e = "1234",
|
|
801
802
|
displayName: t,
|
|
802
803
|
host: r
|
|
803
804
|
}) => {
|
|
804
|
-
const
|
|
805
|
-
|
|
805
|
+
const o = new i({ originator: g, eventHandlers: {} }), a = new F("sip", e, r);
|
|
806
|
+
o.remote_identity = new k(a, t);
|
|
806
807
|
const u = new T([]);
|
|
807
|
-
|
|
808
|
+
n.trigger("newRTCSession", {
|
|
808
809
|
originator: g,
|
|
809
|
-
session:
|
|
810
|
+
session: o,
|
|
810
811
|
request: u
|
|
811
812
|
});
|
|
812
|
-
}, St = (
|
|
813
|
-
e ?
|
|
813
|
+
}, St = (n, e) => {
|
|
814
|
+
e ? n.trigger("failed", e) : n.trigger("failed", n);
|
|
814
815
|
}, D = {
|
|
815
|
-
triggerNewInfo:
|
|
816
|
-
triggerNewSipEvent:
|
|
816
|
+
triggerNewInfo: Tt,
|
|
817
|
+
triggerNewSipEvent: _t,
|
|
817
818
|
triggerIncomingSession: It,
|
|
818
819
|
triggerFailIncomingSession: St,
|
|
819
820
|
WebSocketInterface: pt,
|
|
@@ -821,45 +822,45 @@ const g = "remote", _t = (o, e) => {
|
|
|
821
822
|
C: {
|
|
822
823
|
INVITE: "INVITE"
|
|
823
824
|
}
|
|
824
|
-
},
|
|
825
|
+
}, _ = "user", h = "displayName", I = "SIP_SERVER_URL", y = "SIP_WEB_SOCKET_SERVER_URL", Nt = new D.WebSocketInterface(y), S = {
|
|
825
826
|
displayName: "DISPLAY_NAME",
|
|
826
827
|
userAgent: "Chrome",
|
|
827
|
-
sipServerUrl:
|
|
828
|
+
sipServerUrl: I,
|
|
828
829
|
sipWebSocketServerURL: y
|
|
829
830
|
}, yt = {
|
|
830
|
-
...
|
|
831
|
+
...S,
|
|
831
832
|
displayName: "DISPLAY_NAME",
|
|
832
833
|
register: !1
|
|
833
|
-
},
|
|
834
|
-
...
|
|
835
|
-
user:
|
|
834
|
+
}, wt = {
|
|
835
|
+
...S,
|
|
836
|
+
user: _,
|
|
836
837
|
password: c,
|
|
837
838
|
register: !0
|
|
838
839
|
}, Lt = {
|
|
839
|
-
...
|
|
840
|
+
...wt,
|
|
840
841
|
displayName: h
|
|
841
|
-
},
|
|
842
|
-
...
|
|
842
|
+
}, kt = {
|
|
843
|
+
...S,
|
|
843
844
|
displayName: h,
|
|
844
845
|
register: !1
|
|
845
846
|
}, m = {
|
|
846
847
|
session_timers: !1,
|
|
847
|
-
sockets: [
|
|
848
|
+
sockets: [Nt],
|
|
848
849
|
user_agent: "Chrome",
|
|
849
850
|
sdpSemantics: "unified-plan",
|
|
850
851
|
register_expires: 300,
|
|
851
852
|
connection_recovery_max_interval: 6,
|
|
852
853
|
connection_recovery_min_interval: 2
|
|
853
|
-
},
|
|
854
|
+
}, Ft = {
|
|
854
855
|
...m,
|
|
855
856
|
password: c,
|
|
856
|
-
uri: new E("sip",
|
|
857
|
+
uri: new E("sip", _, I),
|
|
857
858
|
display_name: "DISPLAY_NAME",
|
|
858
859
|
register: !0
|
|
859
|
-
},
|
|
860
|
+
}, bt = {
|
|
860
861
|
...m,
|
|
861
862
|
password: c,
|
|
862
|
-
uri: new E("sip",
|
|
863
|
+
uri: new E("sip", _, I),
|
|
863
864
|
display_name: h,
|
|
864
865
|
register: !0
|
|
865
866
|
}, Vt = {
|
|
@@ -878,20 +879,20 @@ export {
|
|
|
878
879
|
D as JsSIP,
|
|
879
880
|
lt as NAME_INCORRECT,
|
|
880
881
|
c as PASSWORD_CORRECT,
|
|
881
|
-
|
|
882
|
-
|
|
882
|
+
R as PASSWORD_CORRECT_2,
|
|
883
|
+
I as SIP_SERVER_URL,
|
|
883
884
|
y as SIP_WEB_SOCKET_SERVER_URL,
|
|
884
|
-
|
|
885
|
+
wt as dataForConnectionWithAuthorization,
|
|
885
886
|
Lt as dataForConnectionWithAuthorizationWithDisplayName,
|
|
886
|
-
|
|
887
|
+
kt as dataForConnectionWithoutAuthorization,
|
|
887
888
|
yt as dataForConnectionWithoutAuthorizationWithoutDisplayName,
|
|
888
889
|
h as displayName,
|
|
889
890
|
Gt as doMockSipConnector,
|
|
890
891
|
Ut as extraHeadersRemoteAddress,
|
|
891
892
|
ft as remoteAddress,
|
|
892
|
-
|
|
893
|
-
|
|
893
|
+
Ft as uaConfigurationWithAuthorization,
|
|
894
|
+
bt as uaConfigurationWithAuthorizationWithDisplayName,
|
|
894
895
|
Vt as uaConfigurationWithoutAuthorization,
|
|
895
896
|
Wt as uaConfigurationWithoutAuthorizationWithoutDisplayName,
|
|
896
|
-
|
|
897
|
+
_ as user
|
|
897
898
|
};
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("events-constructor");const o=require("./@SipConnector-BHakZWEK.cjs"),V=require("@krivega/cancelable-promise"),W=require("repeated-calls"),j=require("ts-debounce"),K=require("ua-parser-js"),X=require("sequent-promises"),Y=require("stack-promises"),G=n=>n instanceof Object&&("originator"in n||"cause"in n),J=n=>{if(V.isCanceledError(n))return!0;if(!G(n))return!1;const{originator:e,cause:t}=n;return typeof t=="string"?t===o.ECallCause.REQUEST_TIMEOUT||t===o.ECallCause.REJECTED||e==="local"&&(t===o.ECallCause.CANCELED||t===o.ECallCause.BYE):!1},z=()=>globalThis.process?.versions?.electron!==void 0,x=()=>{const n=new K.UAParser,{name:e}=n.getBrowser(),t=z();return{isChrome:e==="Chrome"||t}},A=n=>{const{url:e,cause:t}=n;let r=e;return(t===o.ECallCause.BAD_MEDIA_DESCRIPTION||t===o.ECallCause.NOT_FOUND)&&(r=`${n.message.to.uri.user}@${n.message.to.uri.host}`),r};var B=(n=>(n.CONNECT_SERVER_FAILED="CONNECT_SERVER_FAILED",n.WRONG_USER_OR_PASSWORD="WRONG_USER_OR_PASSWORD",n.BAD_MEDIA_ERROR="BAD_MEDIA_ERROR",n.NOT_FOUND_ERROR="NOT_FOUND_ERROR",n.WS_CONNECTION_FAILED="WS_CONNECTION_FAILED",n.CONNECT_SERVER_FAILED_BY_LINK="CONNECT_SERVER_FAILED_BY_LINK",n))(B||{});const Q=new Error("Unknown error"),Z=(n=Q)=>{const{cause:e,socket:t}=n;let r="CONNECT_SERVER_FAILED";switch(e){case"Forbidden":{r="WRONG_USER_OR_PASSWORD";break}case o.ECallCause.BAD_MEDIA_DESCRIPTION:{r="BAD_MEDIA_ERROR";break}case o.ECallCause.NOT_FOUND:{r="NOT_FOUND_ERROR";break}default:t!==void 0&&t._ws?.readyState===3?r="WS_CONNECTION_FAILED":A(n)!==void 0&&A(n)!==""&&(r="CONNECT_SERVER_FAILED_BY_LINK")}return r},ee=n=>{let e="";try{e=JSON.stringify(n)}catch(t){o.logger("failed to stringify message",t)}return e},ne=new Error("Unknown error"),te=(n=ne)=>{const{code:e,cause:t,message:r}=n,a=A(n),s={code:"",cause:"",message:""};return typeof r=="object"&&r!==null?s.message=ee(r):r&&(s.message=String(r)),a!==void 0&&a!==""&&(s.link=a),e!==void 0&&e!==""&&(s.code=e),t!==void 0&&t!==""&&(s.cause=t),s},oe=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:B,getLinkError:A,getTypeFromError:Z,getValuesFromError:te},Symbol.toStringTag,{value:"Module"})),re=({sessionId:n,remoteAddress:e,isMutedAudio:t,isMutedVideo:r,isRegistered:a,isPresentationCall:s})=>{const c=[],l=t?"0":"1",d=r?"0":"1";return c.push(`X-Vinteo-Mic-State: ${l}`,`X-Vinteo-MainCam-State: ${d}`),(a===!1||a===void 0)&&c.push("X-Vinteo-Purgatory-Call: yes"),n!==void 0&&n!==""&&c.push(`X-Vinteo-Session: ${n}`),s===!0&&c.push("X-Vinteo-Presentation-Call: yes"),e!==void 0&&e!==""&&c.push(`X-Vinteo-Remote: ${e}`),c},se="[@*!|]",ae="_",ce=n=>{let e=n;return e=e.replaceAll(new RegExp(se,"g"),ae),e},ie=({appName:n,appVersion:e,browserName:t,browserVersion:r})=>{const s=`${ce(n)} ${e}`;return`ChromeNew - ${t===void 0?s:`${t} ${r}, ${s}`}`},le=({isUnifiedSdpSemantic:n,appVersion:e,browserName:t,browserVersion:r,appName:a})=>n?ie({appVersion:e,browserName:t,browserVersion:r,appName:a}):"Chrome",$="purgatory",D=n=>n===$,ue=n=>e=>[...e].map(r=>async()=>n(r)),de=async({accumulatedKeys:n,sendKey:e,canRunTask:t})=>{const a=ue(e)(n);return X.sequentPromises(a,t)},ge=n=>t=>(o.logger("onStartMainCam"),n.on("api:admin-start-main-cam",t)),Ce=n=>t=>(o.logger("onStartMic"),n.on("api:admin-start-mic",t)),Se=n=>t=>(o.logger("onStopMainCam"),n.on("api:admin-stop-main-cam",t)),me=n=>t=>(o.logger("onStopMic"),n.on("api:admin-stop-mic",t)),fe=({sipConnector:n})=>{const e=(u,C)=>({isSyncForced:g})=>{if(g===!0){u();return}C()},t=ge(n),r=Se(n),a=Ce(n),s=me(n);let c,l,d,h;const P=({onStartMainCamForced:u,onStartMainCamNotForced:C,onStopMainCamForced:g,onStopMainCamNotForced:m,onStartMicForced:p,onStartMicNotForced:R,onStopMicForced:y,onStopMicNotForced:E})=>{const b=e(u,C);c=t(b);const _=e(g,m);l=r(_);const O=e(p,R);d=a(O);const S=e(y,E);h=s(S)},T=()=>{c?.(),l?.(),d?.(),h?.()};return{start:u=>{P(u)},stop:()=>{T()}}},he=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:$,createSyncMediaState:fe,createUaParser:x,error:oe,getExtraHeaders:re,getUserAgent:le,hasPurgatory:D,prepareMediaStream:o.prepareMediaStream,sendDtmfAccumulated:de,setEncodingsToSender:o.setEncodingsToSender,setParametersToSender:o.setParametersToSender},Symbol.toStringTag,{value:"Module"})),pe=()=>x().isChrome,Re=n=>{if(!V.isCanceledError(n)&&!W.hasCanceledError(n)&&!o.hasNotReadyForConnectionError(n))throw n;return{configuration:void 0,isSuccessful:!1}},Ee=({kind:n,readyState:e})=>n==="video"&&e==="live",U=(n,e,{onEnterPurgatory:t,onEnterConference:r})=>{D(n)?t&&t():r&&r({isSuccessProgressCall:e})},k=(n,e)=>{n(),e&&e()},L=(n,e,t)=>{throw n&&n(),e(),t},be=new Set(["on","once","onceRace","wait","off","sendDTMF","hangUp","declineToIncomingCall","sendChannels","checkTelephony","waitChannels","ping","startAutoConnect","stopAutoConnect","connection","isConfigured","isRegistered"]);class Pe{on;once;onceRace;wait;off;sendDTMF;hangUp;declineToIncomingCall;sendChannels;checkTelephony;waitChannels;ping;startAutoConnect;stopAutoConnect;connection;isConfigured;isRegistered;sipConnector;constructor(e){return this.sipConnector=e,new Proxy(this,{get:(t,r,a)=>{if(typeof r=="string"&&be.has(r)&&r in this.sipConnector){const c=Reflect.get(this.sipConnector,r,this.sipConnector);return typeof c=="function"?c.bind(this.sipConnector):c}const s=Reflect.get(t,r,a);return typeof s=="function"?s.bind(t):s}})}connectToServer=async(e,t)=>this.sipConnector.connect(e,t).then(r=>(o.logger("connectToServer then"),{configuration:r,isSuccessful:!0})).catch(async r=>(o.logger("connectToServer catch: error",r),Re(r)));callToServer=async e=>{const{conference:t,mediaStream:r,extraHeaders:a,iceServers:s,contentHint:c,degradationPreference:l,sendEncodings:d,offerToReceiveAudio:h,offerToReceiveVideo:P,directionVideo:T,directionAudio:N,setRemoteStreams:v,onBeforeProgressCall:u,onSuccessProgressCall:C,onEnterPurgatory:g,onEnterConference:m,onFailProgressCall:p,onFinishProgressCall:R,onEndedCall:y,onAddedTransceiver:E}=e,b=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:v}),_=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{b().catch(o.logger)}});o.logger("callToServer",e);const O=async()=>(o.logger("startCall"),this.sipConnector.call({mediaStream:r,extraHeaders:a,iceServers:s,contentHint:c,offerToReceiveAudio:h,offerToReceiveVideo:P,directionVideo:T,directionAudio:N,degradationPreference:l,onAddedTransceiver:E,sendEncodings:d,number:t,ontrack:_}));let S=!1,f;const M=(o.logger("subscribeEnterConference: onEnterConference",m),this.sipConnector.on("api:enterRoom",({room:i})=>{o.logger("enterRoom",{_room:i,isSuccessProgressCall:S}),f=i,(g??m)&&U(f,S,{onEnterPurgatory:g,onEnterConference:m})})),F=i=>(o.logger("onSuccess"),S=!0,b().catch(o.logger),C&&C({isPurgatory:D(f)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{k(M,y)}),i),w=i=>(o.logger("onFail"),L(p,M,i)),I=()=>{o.logger("onFinish"),R&&R()};return o.logger("onBeforeProgressCall"),u&&u(t),O().then(F).catch(i=>w(i)).finally(I)};disconnectFromServer=async()=>this.sipConnector.disconnect().then(()=>(o.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(e=>(o.logger("disconnectFromServer: catch",e),{isSuccessful:!1}));answerToIncomingCall=async e=>{const{mediaStream:t,extraHeaders:r,iceServers:a,contentHint:s,degradationPreference:c,sendEncodings:l,offerToReceiveAudio:d,offerToReceiveVideo:h,directionVideo:P,directionAudio:T,setRemoteStreams:N,onBeforeProgressCall:v,onSuccessProgressCall:u,onEnterPurgatory:C,onEnterConference:g,onFailProgressCall:m,onFinishProgressCall:p,onEndedCall:R,onAddedTransceiver:y}=e,E=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:N}),b=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{E().catch(o.logger)}});o.logger("answerToIncomingCall",e);const _=async()=>this.sipConnector.answerToIncomingCall({mediaStream:t,extraHeaders:r,iceServers:a,contentHint:s,offerToReceiveAudio:d,offerToReceiveVideo:h,directionVideo:P,directionAudio:T,degradationPreference:c,onAddedTransceiver:y,sendEncodings:l,ontrack:b}),O=()=>{const{remoteCallerData:i}=this.sipConnector;return i.incomingNumber};let S=!1,f;const M=(o.logger("subscribeEnterConference: onEnterConference",g),this.sipConnector.on("api:enterRoom",i=>{o.logger("enterRoom",{room:i.room,isSuccessProgressCall:S}),f=i.room,(C??g)&&U(f,S,{onEnterPurgatory:C,onEnterConference:g})})),F=i=>(o.logger("onSuccess"),S=!0,E().catch(o.logger),u&&u({isPurgatory:D(f)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{k(M,R)}),i),w=i=>(o.logger("onFail"),L(m,M,i)),I=()=>{o.logger("onFinish"),p&&p()};if(o.logger("onBeforeProgressCall"),v){const i=O();v(i)}return _().then(F).catch(i=>w(i)).finally(I)};updatePresentation=async({mediaStream:e,isP2P:t,contentHint:r,degradationPreference:a,sendEncodings:s,onAddedTransceiver:c})=>(o.logger("updatePresentation"),this.sipConnector.updatePresentation(e,{isP2P:t,contentHint:r,degradationPreference:a,onAddedTransceiver:c,sendEncodings:s}));startPresentation=async({mediaStream:e,isP2P:t,contentHint:r,degradationPreference:a,sendEncodings:s,callLimit:c,onAddedTransceiver:l})=>(o.logger("startPresentation"),this.sipConnector.startPresentation(e,{isP2P:t,contentHint:r,callLimit:c,degradationPreference:a,onAddedTransceiver:l,sendEncodings:s}));stopShareSipConnector=async({isP2P:e=!1}={})=>(o.logger("stopShareSipConnector"),this.sipConnector.stopPresentation({isP2P:e}).catch(t=>{o.logger(t)}));sendRefusalToTurnOnMic=async()=>{o.logger("sendRefusalToTurnOnMic"),await this.sipConnector.sendRefusalToTurnOnMic().catch(e=>{o.logger("sendRefusalToTurnOnMic: error",e)})};sendRefusalToTurnOnCam=async()=>{o.logger("sendRefusalToTurnOnCam"),await this.sipConnector.sendRefusalToTurnOnCam().catch(e=>{o.logger("sendRefusalToTurnOnCam: error",e)})};sendMediaState=async({isEnabledCam:e,isEnabledMic:t})=>{o.logger("sendMediaState"),await this.sipConnector.sendMediaState({cam:e,mic:t})};replaceMediaStream=async(e,{deleteExisting:t,addMissing:r,forceRenegotiation:a,contentHint:s,degradationPreference:c,sendEncodings:l,onAddedTransceiver:d})=>(o.logger("replaceMediaStream"),this.sipConnector.replaceMediaStream(e,{deleteExisting:t,addMissing:r,forceRenegotiation:a,contentHint:s,degradationPreference:c,onAddedTransceiver:d,sendEncodings:l}));askPermissionToEnableCam=async()=>{o.logger("askPermissionToEnableCam"),await this.sipConnector.askPermissionToEnableCam()};resolveHandleReadyRemoteStreamsDebounced=({onReadyRemoteStreams:e})=>j.debounce(()=>{const t=this.sipConnector.getRemoteStreams();o.logger("remoteStreams",t),t&&e(t)},200);resolveHandleReadyRemoteStreams=({onReadyRemoteStreams:e})=>({track:t})=>{Ee(t)&&e()};getRemoteStreams=()=>(o.logger("getRemoteStreams"),this.sipConnector.getRemoteStreams());onUseLicense=e=>(o.logger("onUseLicense"),this.sipConnector.on("api:useLicense",e));onMustStopPresentation=e=>(o.logger("onMustStopPresentation"),this.sipConnector.on("api:mustStopPresentation",e));onMoveToSpectators=e=>(o.logger("onMoveToSpectators"),this.sipConnector.on("api:participant:move-request-to-spectators",e));onMoveToParticipants=e=>(o.logger("onMoveToParticipants"),this.sipConnector.on("api:participant:move-request-to-participants",e));onStats=e=>(o.logger("onStats"),this.sipConnector.on("stats:collected",e));offStats=e=>{o.logger("offStats"),this.sipConnector.off("stats:collected",e)}}var H=(n=>(n.VP8="video/VP8",n.VP9="video/VP9",n.H264="video/H264",n.AV1="video/AV1",n.rtx="video/rtx",n.red="video/red",n.flexfec03="video/flexfec-03",n))(H||{});exports.ECallCause=o.ECallCause;exports.EStatsTypes=o.EStatsTypes;exports.EUseLicense=o.EUseLicense;exports.SipConnector=o.SipConnector;exports.StatsPeerConnection=o.StatsPeerConnection;exports.disableDebug=o.disableDebug;exports.enableDebug=o.enableDebug;exports.getCodecFromSender=o.getCodecFromSender;exports.hasCanceledStartPresentationError=o.hasCanceledStartPresentationError;Object.defineProperty(exports,"hasConnectionPromiseIsNotActualError",{enumerable:!0,get:()=>Y.isPromiseIsNotActualError});exports.EMimeTypesVideoCodecs=H;exports.SipConnectorFacade=Pe;exports.hasAvailableStats=pe;exports.hasCanceledCallError=J;exports.tools=he;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("events-constructor");const o=require("./@SipConnector-DhKRV_I3.cjs"),V=require("@krivega/cancelable-promise"),W=require("repeated-calls"),j=require("ts-debounce"),K=require("ua-parser-js"),X=require("sequent-promises"),Y=require("stack-promises"),G=n=>n instanceof Object&&("originator"in n||"cause"in n),J=n=>{if(V.isCanceledError(n))return!0;if(!G(n))return!1;const{originator:e,cause:t}=n;return typeof t=="string"?t===o.ECallCause.REQUEST_TIMEOUT||t===o.ECallCause.REJECTED||e==="local"&&(t===o.ECallCause.CANCELED||t===o.ECallCause.BYE):!1},z=()=>globalThis.process?.versions?.electron!==void 0,x=()=>{const n=new K.UAParser,{name:e}=n.getBrowser(),t=z();return{isChrome:e==="Chrome"||t}},A=n=>{const{url:e,cause:t}=n;let r=e;return(t===o.ECallCause.BAD_MEDIA_DESCRIPTION||t===o.ECallCause.NOT_FOUND)&&(r=`${n.message.to.uri.user}@${n.message.to.uri.host}`),r};var B=(n=>(n.CONNECT_SERVER_FAILED="CONNECT_SERVER_FAILED",n.WRONG_USER_OR_PASSWORD="WRONG_USER_OR_PASSWORD",n.BAD_MEDIA_ERROR="BAD_MEDIA_ERROR",n.NOT_FOUND_ERROR="NOT_FOUND_ERROR",n.WS_CONNECTION_FAILED="WS_CONNECTION_FAILED",n.CONNECT_SERVER_FAILED_BY_LINK="CONNECT_SERVER_FAILED_BY_LINK",n))(B||{});const Q=new Error("Unknown error"),Z=(n=Q)=>{const{cause:e,socket:t}=n;let r="CONNECT_SERVER_FAILED";switch(e){case"Forbidden":{r="WRONG_USER_OR_PASSWORD";break}case o.ECallCause.BAD_MEDIA_DESCRIPTION:{r="BAD_MEDIA_ERROR";break}case o.ECallCause.NOT_FOUND:{r="NOT_FOUND_ERROR";break}default:t!==void 0&&t._ws?.readyState===3?r="WS_CONNECTION_FAILED":A(n)!==void 0&&A(n)!==""&&(r="CONNECT_SERVER_FAILED_BY_LINK")}return r},ee=n=>{let e="";try{e=JSON.stringify(n)}catch(t){o.logger("failed to stringify message",t)}return e},ne=new Error("Unknown error"),te=(n=ne)=>{const{code:e,cause:t,message:r}=n,a=A(n),s={code:"",cause:"",message:""};return typeof r=="object"&&r!==null?s.message=ee(r):r&&(s.message=String(r)),a!==void 0&&a!==""&&(s.link=a),e!==void 0&&e!==""&&(s.code=e),t!==void 0&&t!==""&&(s.cause=t),s},oe=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:B,getLinkError:A,getTypeFromError:Z,getValuesFromError:te},Symbol.toStringTag,{value:"Module"})),re=({sessionId:n,remoteAddress:e,isMutedAudio:t,isMutedVideo:r,isRegistered:a,isPresentationCall:s})=>{const c=[],l=t?"0":"1",d=r?"0":"1";return c.push(`X-Vinteo-Mic-State: ${l}`,`X-Vinteo-MainCam-State: ${d}`),(a===!1||a===void 0)&&c.push("X-Vinteo-Purgatory-Call: yes"),n!==void 0&&n!==""&&c.push(`X-Vinteo-Session: ${n}`),s===!0&&c.push("X-Vinteo-Presentation-Call: yes"),e!==void 0&&e!==""&&c.push(`X-Vinteo-Remote: ${e}`),c},se="[@*!|]",ae="_",ce=n=>{let e=n;return e=e.replaceAll(new RegExp(se,"g"),ae),e},ie=({appName:n,appVersion:e,browserName:t,browserVersion:r})=>{const s=`${ce(n)} ${e}`;return`ChromeNew - ${t===void 0?s:`${t} ${r}, ${s}`}`},le=({isUnifiedSdpSemantic:n,appVersion:e,browserName:t,browserVersion:r,appName:a})=>n?ie({appVersion:e,browserName:t,browserVersion:r,appName:a}):"Chrome",$="purgatory",D=n=>n===$,ue=n=>e=>[...e].map(r=>async()=>n(r)),de=async({accumulatedKeys:n,sendKey:e,canRunTask:t})=>{const a=ue(e)(n);return X.sequentPromises(a,t)},ge=n=>t=>(o.logger("onStartMainCam"),n.on("api:admin-start-main-cam",t)),Ce=n=>t=>(o.logger("onStartMic"),n.on("api:admin-start-mic",t)),Se=n=>t=>(o.logger("onStopMainCam"),n.on("api:admin-stop-main-cam",t)),me=n=>t=>(o.logger("onStopMic"),n.on("api:admin-stop-mic",t)),fe=({sipConnector:n})=>{const e=(u,C)=>({isSyncForced:g})=>{if(g===!0){u();return}C()},t=ge(n),r=Se(n),a=Ce(n),s=me(n);let c,l,d,h;const P=({onStartMainCamForced:u,onStartMainCamNotForced:C,onStopMainCamForced:g,onStopMainCamNotForced:m,onStartMicForced:p,onStartMicNotForced:R,onStopMicForced:y,onStopMicNotForced:E})=>{const b=e(u,C);c=t(b);const _=e(g,m);l=r(_);const O=e(p,R);d=a(O);const S=e(y,E);h=s(S)},T=()=>{c?.(),l?.(),d?.(),h?.()};return{start:u=>{P(u)},stop:()=>{T()}}},he=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:$,createSyncMediaState:fe,createUaParser:x,error:oe,getExtraHeaders:re,getUserAgent:le,hasPurgatory:D,prepareMediaStream:o.prepareMediaStream,sendDtmfAccumulated:de,setEncodingsToSender:o.setEncodingsToSender,setParametersToSender:o.setParametersToSender},Symbol.toStringTag,{value:"Module"})),pe=()=>x().isChrome,Re=n=>{if(!V.isCanceledError(n)&&!W.hasCanceledError(n)&&!o.hasNotReadyForConnectionError(n))throw n;return{configuration:void 0,isSuccessful:!1}},Ee=({kind:n,readyState:e})=>n==="video"&&e==="live",U=(n,e,{onEnterPurgatory:t,onEnterConference:r})=>{D(n)?t&&t():r&&r({isSuccessProgressCall:e})},k=(n,e)=>{n(),e&&e()},L=(n,e,t)=>{throw n&&n(),e(),t},be=new Set(["on","once","onceRace","wait","off","sendDTMF","hangUp","declineToIncomingCall","sendChannels","checkTelephony","waitChannels","ping","startAutoConnect","stopAutoConnect","connection","isConfigured","isRegistered"]);class Pe{on;once;onceRace;wait;off;sendDTMF;hangUp;declineToIncomingCall;sendChannels;checkTelephony;waitChannels;ping;startAutoConnect;stopAutoConnect;connection;isConfigured;isRegistered;sipConnector;constructor(e){return this.sipConnector=e,new Proxy(this,{get:(t,r,a)=>{if(typeof r=="string"&&be.has(r)&&r in this.sipConnector){const c=Reflect.get(this.sipConnector,r,this.sipConnector);return typeof c=="function"?c.bind(this.sipConnector):c}const s=Reflect.get(t,r,a);return typeof s=="function"?s.bind(t):s}})}connectToServer=async(e,t)=>this.sipConnector.connect(e,t).then(r=>(o.logger("connectToServer then"),{configuration:r,isSuccessful:!0})).catch(async r=>(o.logger("connectToServer catch: error",r),Re(r)));callToServer=async e=>{const{conference:t,mediaStream:r,extraHeaders:a,iceServers:s,contentHint:c,degradationPreference:l,sendEncodings:d,offerToReceiveAudio:h,offerToReceiveVideo:P,directionVideo:T,directionAudio:N,setRemoteStreams:v,onBeforeProgressCall:u,onSuccessProgressCall:C,onEnterPurgatory:g,onEnterConference:m,onFailProgressCall:p,onFinishProgressCall:R,onEndedCall:y,onAddedTransceiver:E}=e,b=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:v}),_=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{b().catch(o.logger)}});o.logger("callToServer",e);const O=async()=>(o.logger("startCall"),this.sipConnector.call({mediaStream:r,extraHeaders:a,iceServers:s,contentHint:c,offerToReceiveAudio:h,offerToReceiveVideo:P,directionVideo:T,directionAudio:N,degradationPreference:l,onAddedTransceiver:E,sendEncodings:d,number:t,ontrack:_}));let S=!1,f;const M=(o.logger("subscribeEnterConference: onEnterConference",m),this.sipConnector.on("api:enterRoom",({room:i})=>{o.logger("enterRoom",{_room:i,isSuccessProgressCall:S}),f=i,(g??m)&&U(f,S,{onEnterPurgatory:g,onEnterConference:m})})),F=i=>(o.logger("onSuccess"),S=!0,b().catch(o.logger),C&&C({isPurgatory:D(f)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{k(M,y)}),i),w=i=>(o.logger("onFail"),L(p,M,i)),I=()=>{o.logger("onFinish"),R&&R()};return o.logger("onBeforeProgressCall"),u&&u(t),O().then(F).catch(i=>w(i)).finally(I)};disconnectFromServer=async()=>this.sipConnector.disconnect().then(()=>(o.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(e=>(o.logger("disconnectFromServer: catch",e),{isSuccessful:!1}));answerToIncomingCall=async e=>{const{mediaStream:t,extraHeaders:r,iceServers:a,contentHint:s,degradationPreference:c,sendEncodings:l,offerToReceiveAudio:d,offerToReceiveVideo:h,directionVideo:P,directionAudio:T,setRemoteStreams:N,onBeforeProgressCall:v,onSuccessProgressCall:u,onEnterPurgatory:C,onEnterConference:g,onFailProgressCall:m,onFinishProgressCall:p,onEndedCall:R,onAddedTransceiver:y}=e,E=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:N}),b=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{E().catch(o.logger)}});o.logger("answerToIncomingCall",e);const _=async()=>this.sipConnector.answerToIncomingCall({mediaStream:t,extraHeaders:r,iceServers:a,contentHint:s,offerToReceiveAudio:d,offerToReceiveVideo:h,directionVideo:P,directionAudio:T,degradationPreference:c,onAddedTransceiver:y,sendEncodings:l,ontrack:b}),O=()=>{const{remoteCallerData:i}=this.sipConnector;return i.incomingNumber};let S=!1,f;const M=(o.logger("subscribeEnterConference: onEnterConference",g),this.sipConnector.on("api:enterRoom",i=>{o.logger("enterRoom",{room:i.room,isSuccessProgressCall:S}),f=i.room,(C??g)&&U(f,S,{onEnterPurgatory:C,onEnterConference:g})})),F=i=>(o.logger("onSuccess"),S=!0,E().catch(o.logger),u&&u({isPurgatory:D(f)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{k(M,R)}),i),w=i=>(o.logger("onFail"),L(m,M,i)),I=()=>{o.logger("onFinish"),p&&p()};if(o.logger("onBeforeProgressCall"),v){const i=O();v(i)}return _().then(F).catch(i=>w(i)).finally(I)};updatePresentation=async({mediaStream:e,isP2P:t,contentHint:r,degradationPreference:a,sendEncodings:s,onAddedTransceiver:c})=>(o.logger("updatePresentation"),this.sipConnector.updatePresentation(e,{isP2P:t,contentHint:r,degradationPreference:a,onAddedTransceiver:c,sendEncodings:s}));startPresentation=async({mediaStream:e,isP2P:t,contentHint:r,degradationPreference:a,sendEncodings:s,callLimit:c,onAddedTransceiver:l})=>(o.logger("startPresentation"),this.sipConnector.startPresentation(e,{isP2P:t,contentHint:r,callLimit:c,degradationPreference:a,onAddedTransceiver:l,sendEncodings:s}));stopShareSipConnector=async({isP2P:e=!1}={})=>(o.logger("stopShareSipConnector"),this.sipConnector.stopPresentation({isP2P:e}).catch(t=>{o.logger(t)}));sendRefusalToTurnOnMic=async()=>{o.logger("sendRefusalToTurnOnMic"),await this.sipConnector.sendRefusalToTurnOnMic().catch(e=>{o.logger("sendRefusalToTurnOnMic: error",e)})};sendRefusalToTurnOnCam=async()=>{o.logger("sendRefusalToTurnOnCam"),await this.sipConnector.sendRefusalToTurnOnCam().catch(e=>{o.logger("sendRefusalToTurnOnCam: error",e)})};sendMediaState=async({isEnabledCam:e,isEnabledMic:t})=>{o.logger("sendMediaState"),await this.sipConnector.sendMediaState({cam:e,mic:t})};replaceMediaStream=async(e,{deleteExisting:t,addMissing:r,forceRenegotiation:a,contentHint:s,degradationPreference:c,sendEncodings:l,onAddedTransceiver:d})=>(o.logger("replaceMediaStream"),this.sipConnector.replaceMediaStream(e,{deleteExisting:t,addMissing:r,forceRenegotiation:a,contentHint:s,degradationPreference:c,onAddedTransceiver:d,sendEncodings:l}));askPermissionToEnableCam=async()=>{o.logger("askPermissionToEnableCam"),await this.sipConnector.askPermissionToEnableCam()};resolveHandleReadyRemoteStreamsDebounced=({onReadyRemoteStreams:e})=>j.debounce(()=>{const t=this.sipConnector.getRemoteStreams();o.logger("remoteStreams",t),t&&e(t)},200);resolveHandleReadyRemoteStreams=({onReadyRemoteStreams:e})=>({track:t})=>{Ee(t)&&e()};getRemoteStreams=()=>(o.logger("getRemoteStreams"),this.sipConnector.getRemoteStreams());onUseLicense=e=>(o.logger("onUseLicense"),this.sipConnector.on("api:useLicense",e));onMustStopPresentation=e=>(o.logger("onMustStopPresentation"),this.sipConnector.on("api:mustStopPresentation",e));onMoveToSpectators=e=>(o.logger("onMoveToSpectators"),this.sipConnector.on("api:participant:move-request-to-spectators",e));onMoveToParticipants=e=>(o.logger("onMoveToParticipants"),this.sipConnector.on("api:participant:move-request-to-participants",e));onStats=e=>(o.logger("onStats"),this.sipConnector.on("stats:collected",e));offStats=e=>{o.logger("offStats"),this.sipConnector.off("stats:collected",e)}}var H=(n=>(n.VP8="video/VP8",n.VP9="video/VP9",n.H264="video/H264",n.AV1="video/AV1",n.rtx="video/rtx",n.red="video/red",n.flexfec03="video/flexfec-03",n))(H||{});exports.ECallCause=o.ECallCause;exports.EStatsTypes=o.EStatsTypes;exports.EUseLicense=o.EUseLicense;exports.SipConnector=o.SipConnector;exports.StatsPeerConnection=o.StatsPeerConnection;exports.disableDebug=o.disableDebug;exports.enableDebug=o.enableDebug;exports.getCodecFromSender=o.getCodecFromSender;exports.hasCanceledStartPresentationError=o.hasCanceledStartPresentationError;Object.defineProperty(exports,"hasConnectionPromiseIsNotActualError",{enumerable:!0,get:()=>Y.isPromiseIsNotActualError});exports.EMimeTypesVideoCodecs=H;exports.SipConnectorFacade=Pe;exports.hasAvailableStats=pe;exports.hasCanceledCallError=J;exports.tools=he;
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "events-constructor";
|
|
2
|
-
import { E as C, l as r, p as j, s as K, a as X, h as Y } from "./@SipConnector-
|
|
3
|
-
import { f as ke, b as xe, S as Le, g as Ve, d as Be, e as $e, i as He, c as We } from "./@SipConnector-
|
|
2
|
+
import { E as C, l as r, p as j, s as K, a as X, h as Y } from "./@SipConnector-LWYRHYnw.js";
|
|
3
|
+
import { f as ke, b as xe, S as Le, g as Ve, d as Be, e as $e, i as He, c as We } from "./@SipConnector-LWYRHYnw.js";
|
|
4
4
|
import { isCanceledError as V } from "@krivega/cancelable-promise";
|
|
5
5
|
import { hasCanceledError as G } from "repeated-calls";
|
|
6
6
|
import { debounce as q } from "ts-debounce";
|