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.
Files changed (30) hide show
  1. package/dist/@SipConnector-CrRymJFW.cjs +1 -0
  2. package/dist/{SipConnector-CK3GgjXE.js → @SipConnector-hNVaYCWj.js} +295 -522
  3. package/dist/ApiManager/@ApiManager.d.ts +2 -2
  4. package/dist/CallManager/causes.d.ts +2 -1
  5. package/dist/IncomingCallManager/@IncomingCallManager.d.ts +3 -2
  6. package/dist/PresentationManager/@PresentationManager.d.ts +2 -2
  7. package/dist/{SipConnector.d.ts → SipConnector/@SipConnector.d.ts} +19 -30
  8. package/dist/SipConnector/eventNames.d.ts +4 -0
  9. package/dist/SipConnector/index.d.ts +2 -0
  10. package/dist/SipConnectorFacade/SipConnectorFacade.d.ts +6 -26
  11. package/dist/__fixtures__/BaseSession.mock.d.ts +1 -1
  12. package/dist/{eventNames.d.ts → __fixtures__/eventNames.d.ts} +1 -1
  13. package/dist/doMock.cjs +1 -1
  14. package/dist/doMock.d.ts +1 -1
  15. package/dist/doMock.js +212 -130
  16. package/dist/index.cjs +1 -1
  17. package/dist/index.d.ts +1 -5
  18. package/dist/index.js +328 -366
  19. package/dist/tools/__fixtures__/processRequest.d.ts +1 -1
  20. package/dist/tools/syncMediaState/index.d.ts +1 -1
  21. package/dist/tools/syncMediaState/resolveOnStartMainCam.d.ts +1 -1
  22. package/dist/tools/syncMediaState/resolveOnStartMic.d.ts +1 -1
  23. package/dist/tools/syncMediaState/resolveOnStopMainCam.d.ts +1 -1
  24. package/dist/tools/syncMediaState/resolveOnStopMic.d.ts +1 -1
  25. package/dist/types.d.ts +1 -24
  26. package/dist/videoSendingBalancer/index.d.ts +1 -1
  27. package/package.json +1 -1
  28. package/dist/SipConnector-CwI8aFEA.cjs +0 -1
  29. package/dist/causes.d.ts +0 -23
  30. /package/dist/{constants.d.ts → __fixtures__/constants.d.ts} +0 -0
package/dist/doMock.js CHANGED
@@ -1,12 +1,12 @@
1
- import { f as P, R as N, g as O, U as b, S as k } from "./SipConnector-CK3GgjXE.js";
2
- import A from "@krivega/jssip/lib/NameAddrHeader";
3
- import D from "@krivega/jssip/lib/URI";
4
- import { EventEmitter as L } from "node:events";
5
- import { IncomingRequest as W } from "@krivega/jssip/lib/SIPMessage";
6
- import { NameAddrHeader as V, URI as h, C as _ } from "@krivega/jssip";
7
- import { createAudioMediaStreamTrackMock as F, createVideoMediaStreamTrackMock as x } from "webrtc-mock";
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 w extends W {
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
- class H {
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(P), this.initEvents(t), this.remote_identity = 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 j {
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 z {
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 j({ track: e });
404
+ const t = new it({ track: e });
323
405
  return this.senders.push(t), t;
324
406
  };
325
407
  }
326
- function Y(n) {
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 p = 400, q = "777", J = (n) => n.getVideoTracks().length > 0;
333
- class i extends H {
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
- }, p);
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: s,
450
+ originator: i,
369
451
  remoteIdentity: a = new V(
370
- new h("sip", "caller1", "test1.com", 5060),
452
+ new E("sip", "caller1", "test1.com", 5060),
371
453
  "Test Caller 1"
372
454
  )
373
455
  }) {
374
- super({ originator: s, eventHandlers: r, remoteIdentity: a }), this.url = e, this.initPeerconnection(t);
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 (i.countStartsPresentation += 1, i.presentationError)
390
- throw this.trigger("presentation:start", e), this.trigger("presentation:failed", e), i.presentationError;
391
- if (i.startPresentationError && i.countStartsPresentation < i.countStartPresentationError)
392
- throw this.trigger("presentation:start", e), this.trigger("presentation:failed", e), i.startPresentationError;
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 (i.presentationError)
397
- throw this.trigger("presentation:end", e), this.trigger("presentation:failed", e), i.presentationError;
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 = F();
486
+ const t = k();
405
487
  t.id = "mainaudio1";
406
488
  const r = [t];
407
- if (J(e)) {
408
- const a = x();
489
+ if (Et(e)) {
490
+ const a = W();
409
491
  a.id = "mainvideo1", r.push(a);
410
492
  }
411
- this.connection = new z(void 0, r), this.addStream(e), setTimeout(() => {
493
+ this.connection = new at(void 0, r), this.addStream(e), setTimeout(() => {
412
494
  this.trigger("peerconnection", { peerconnection: this.connection });
413
- }, p);
495
+ }, u);
414
496
  }
415
497
  connect(e) {
416
- const t = Y(e);
498
+ const t = ct(e);
417
499
  setTimeout(() => {
418
- this.url.includes(q) ? this.trigger("failed", {
500
+ this.url.includes(dt) ? this.trigger("failed", {
419
501
  originator: "remote",
420
502
  message: "IncomingResponse",
421
- cause: N
503
+ cause: "Rejected"
422
504
  }) : (this.trigger("connecting"), setTimeout(() => {
423
505
  this.newInfo({
424
- originator: O.REMOTE,
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
- }, p);
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 d = "PASSWORD_CORRECT", v = "PASSWORD_CORRECT_2", G = "NAME_INCORRECT", c = 400, g = {
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
- }, M = {
592
+ }, f = {
511
593
  status_code: 200,
512
594
  reason_phrase: "OK"
513
- }, T = {
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: s } = t;
528
- return this.session = new i({ url: e, mediaStream: r, eventHandlers: s, originator: "local" }), this.session.connect(e), this.session;
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: g });
552
- }, c) : this.trigger("disconnected", { error: !0, socket: g });
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(b);
564
- const [t, r] = e.uri.split(":"), [s, a] = r.split("@"), l = {
645
+ this.events = new R(A);
646
+ const [t, r] = e.uri.split(":"), [i, a] = r.split("@"), l = {
565
647
  ...e,
566
- uri: new h(t, s, a)
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(G) ? (this.isRegisteredInner = !1, this.isConnectedInner = !1, this.startedTimeout = setTimeout(() => {
614
- this.trigger("registrationFailed", { response: T, cause: _.causes.REJECTED });
615
- }, c)) : !this.isRegistered() && t === !0 && (e === d || e === v) ? (this.isRegisteredInner = !0, this.startedTimeout = setTimeout(() => {
616
- this.trigger("registered", { response: M });
617
- }, c)) : t === !0 && e !== d && e !== v && (this.isRegisteredInner = !1, this.isConnectedInner = !1, this.startedTimeout = setTimeout(() => {
618
- this.trigger("registrationFailed", { response: T, cause: _.causes.REJECTED });
619
- }, c)), o.isAvailableTelephony ? (this.trigger("connected", { socket: g }), this.isConnectedInner = !0) : this.stop();
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: M });
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 U {
732
+ class lt {
651
733
  url;
652
734
  constructor(e) {
653
735
  this.url = e;
654
736
  }
655
737
  }
656
- class B extends L {
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 E = "remote", K = (n, e) => {
664
- const t = new w(e), r = {
665
- originator: E,
745
+ const g = "remote", pt = (n, e) => {
746
+ const t = new _(e), r = {
747
+ originator: g,
666
748
  request: t,
667
- info: new B("", "")
749
+ info: new ut("", "")
668
750
  };
669
751
  n.newInfo(r);
670
- }, X = (n, e) => {
671
- const r = { event: "sipEvent", request: new w(e) };
752
+ }, gt = (n, e) => {
753
+ const r = { event: "sipEvent", request: new _(e) };
672
754
  n.newSipEvent(r);
673
- }, Q = (n, {
755
+ }, _t = (n, {
674
756
  incomingNumber: e = "1234",
675
757
  displayName: t,
676
758
  host: r
677
759
  }) => {
678
- const s = new i({ originator: E, eventHandlers: {} }), a = new D("sip", e, r);
679
- s.remote_identity = new A(a, t);
680
- const l = new w([]);
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: E,
683
- session: s,
764
+ originator: g,
765
+ session: i,
684
766
  request: l
685
767
  });
686
- }, Z = (n, e) => {
768
+ }, Tt = (n, e) => {
687
769
  e ? n.trigger("failed", e) : n.trigger("failed", n);
688
- }, C = {
689
- triggerNewInfo: K,
690
- triggerNewSipEvent: X,
691
- triggerIncomingSession: Q,
692
- triggerFailIncomingSession: Z,
693
- WebSocketInterface: U,
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
- }, f = "user", m = "displayName", S = "SIP_SERVER_URL", y = "SIP_WEB_SOCKET_SERVER_URL", ee = new C.WebSocketInterface(y), I = {
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: S,
701
- sipWebSocketServerURL: y
702
- }, me = {
703
- ...I
704
- }, te = {
705
- ...I,
706
- user: f,
707
- password: d,
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
- }, ue = {
710
- ...te,
711
- displayName: m
712
- }, le = {
713
- ...I,
714
- displayName: m,
791
+ }, Dt = {
792
+ ...wt,
793
+ displayName: h
794
+ }, yt = {
795
+ ...w,
796
+ displayName: h,
715
797
  register: !1
716
- }, u = {
798
+ }, m = {
717
799
  session_timers: !1,
718
- sockets: [ee],
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
- }, pe = {
725
- ...u,
726
- password: d,
727
- uri: new h("sip", f, S),
806
+ }, Lt = {
807
+ ...m,
808
+ password: c,
809
+ uri: new E("sip", T, I),
728
810
  display_name: "",
729
811
  register: !0
730
- }, ge = {
731
- ...u,
732
- password: d,
733
- uri: new h("sip", f, S),
734
- display_name: m,
812
+ }, Ft = {
813
+ ...m,
814
+ password: c,
815
+ uri: new E("sip", T, I),
816
+ display_name: h,
735
817
  register: !0
736
- }, Ee = {
737
- ...u,
738
- display_name: m,
818
+ }, bt = {
819
+ ...m,
820
+ display_name: h,
739
821
  register: !1
740
- }, we = {
741
- ...u,
822
+ }, Vt = {
823
+ ...m,
742
824
  display_name: "",
743
825
  register: !1
744
- }, re = "10.10.10.10", fe = [`X-Vinteo-Remote: ${re}`], Se = () => new k({
745
- JsSIP: C
826
+ }, St = "10.10.10.10", kt = [`X-Vinteo-Remote: ${St}`], Wt = () => new D({
827
+ JsSIP: O
746
828
  });
747
829
  export {
748
- q as FAILED_CONFERENCE_NUMBER,
749
- C as JsSIP,
750
- G as NAME_INCORRECT,
751
- d as PASSWORD_CORRECT,
752
- v as PASSWORD_CORRECT_2,
753
- S as SIP_SERVER_URL,
754
- y as SIP_WEB_SOCKET_SERVER_URL,
755
- te as dataForConnectionWithAuthorization,
756
- ue as dataForConnectionWithAuthorizationWithDisplayName,
757
- le as dataForConnectionWithoutAuthorization,
758
- me as dataForConnectionWithoutAuthorizationWithoutDisplayName,
759
- m as displayName,
760
- Se as doMockSipConnector,
761
- fe as extraHeadersRemoteAddress,
762
- re as remoteAddress,
763
- pe as uaConfigurationWithAuthorization,
764
- ge as uaConfigurationWithAuthorizationWithDisplayName,
765
- Ee as uaConfigurationWithoutAuthorization,
766
- we as uaConfigurationWithoutAuthorizationWithoutDisplayName,
767
- f as user
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 { default as SipConnector } from './SipConnector';
8
+ export { SipConnector } from './SipConnector';
13
9
  export { SipConnectorFacade } from './SipConnectorFacade';