sip-connector 22.0.0 → 23.1.0

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