sip-connector 16.1.0 → 17.0.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.
package/dist/doMock.js CHANGED
@@ -1,12 +1,12 @@
1
- import { EventEmitter as D } from "node:events";
2
- import y from "@krivega/jssip/lib/NameAddrHeader";
3
- import L from "@krivega/jssip/lib/URI";
4
- import { IncomingRequest as F } from "@krivega/jssip/lib/SIPMessage";
5
- import { NameAddrHeader as b, URI as E, C as N } from "@krivega/jssip";
6
- import { createAudioMediaStreamTrackMock as V, createVideoMediaStreamTrackMock as k } from "webrtc-mock";
1
+ import { EventEmitter as L } from "node:events";
2
+ import F from "@krivega/jssip/lib/NameAddrHeader";
3
+ import b from "@krivega/jssip/lib/URI";
4
+ import { IncomingRequest as k } from "@krivega/jssip/lib/SIPMessage";
5
+ import { NameAddrHeader as V, URI as E, C as N } from "@krivega/jssip";
6
+ import { createAudioMediaStreamTrackMock as W, createVideoMediaStreamTrackMock as U } from "webrtc-mock";
7
7
  import { Events as T } from "events-constructor";
8
- import { O as W, S as U } from "./@SipConnector-BzMLHZRD.js";
9
- class _ extends F {
8
+ import { O as G, S as H } from "./@SipConnector-DADbRZIb.js";
9
+ class _ extends k {
10
10
  headers;
11
11
  constructor(e) {
12
12
  super(), this.headers = new Headers(e);
@@ -15,35 +15,33 @@ class _ extends F {
15
15
  return this.headers.get(e) ?? "";
16
16
  }
17
17
  }
18
- const G = "incomingCall", H = "declinedIncomingCall", x = "failedIncomingCall", q = "terminatedIncomingCall", A = "connecting", Y = "connected", j = "disconnected", z = "newRTCSession", B = "registered", $ = "unregistered", J = "registrationFailed", K = "newMessage", Q = "sipEvent", X = "availableSecondRemoteStream", Z = "notAvailableSecondRemoteStream", ee = "mustStopPresentation", te = "shareState", re = "enterRoom", ne = "useLicense", oe = "peerconnection:confirmed", se = "peerconnection:ontrack", ie = "channels", ae = "channels:notify", ce = "ended:fromserver", de = "main-cam-control", Ee = "admin-stop-main-cam", he = "admin-start-main-cam", me = "admin-stop-mic", ue = "admin-start-mic", le = "admin-force-sync-media-state", pe = "participant:added-to-list-moderators", ge = "participant:removed-from-list-moderators", Te = "participant:move-request-to-stream", _e = "participant:move-request-to-spectators", Ie = "participant:move-request-to-participants", Se = "participation:accepting-word-request", we = "participation:cancelling-word-request", Ne = "webcast:started", fe = "webcast:stopped", Ce = "account:changed", Re = "account:deleted", Me = "conference:participant-token-issued", Ae = "ended", Oe = "sending", Pe = "reinvite", ve = "replaces", De = "refer", ye = "progress", Le = "accepted", Fe = "confirmed", be = "peerconnection", Ve = "failed", ke = "muted", We = "unmuted", Ue = "newDTMF", Ge = "newInfo", He = "hold", xe = "unhold", qe = "update", Ye = "sdp", je = "icecandidate", ze = "getusermediafailed", Be = "peerconnection:createofferfailed", $e = "peerconnection:createanswerfailed", Je = "peerconnection:setlocaldescriptionfailed", Ke = "peerconnection:setremotedescriptionfailed", Qe = "presentation:start", Xe = "presentation:started", Ze = "presentation:end", et = "presentation:ended", tt = "presentation:failed", rt = [
19
- G,
20
- H,
21
- q,
18
+ const x = "incomingCall", q = "declinedIncomingCall", Y = "failedIncomingCall", j = "terminatedIncomingCall", P = "connecting", z = "connected", B = "disconnected", $ = "newRTCSession", J = "registered", K = "unregistered", Q = "registrationFailed", X = "newMessage", Z = "sipEvent", ee = "availableSecondRemoteStream", te = "notAvailableSecondRemoteStream", re = "mustStopPresentation", ne = "shareState", oe = "enterRoom", se = "useLicense", ie = "peerconnection:confirmed", ae = "peerconnection:ontrack", ce = "channels", de = "channels:notify", Ee = "ended:fromserver", he = "main-cam-control", me = "admin-stop-main-cam", ue = "admin-start-main-cam", le = "admin-stop-mic", pe = "admin-start-mic", ge = "admin-force-sync-media-state", Te = "participant:added-to-list-moderators", _e = "participant:removed-from-list-moderators", Ie = "participant:move-request-to-stream", we = "participant:move-request-to-spectators", Se = "participant:move-request-to-participants", Ne = "participation:accepting-word-request", fe = "participation:cancelling-word-request", Ce = "webcast:started", Re = "webcast:stopped", Me = "account:changed", Ae = "account:deleted", Oe = "conference:participant-token-issued", Pe = "ended", ve = "sending", De = "reinvite", ye = "replaces", Le = "refer", Fe = "progress", be = "accepted", ke = "confirmed", Ve = "peerconnection", We = "failed", Ue = "muted", Ge = "unmuted", He = "newDTMF", xe = "newInfo", qe = "hold", Ye = "unhold", je = "update", ze = "sdp", Be = "icecandidate", $e = "getusermediafailed", Je = "peerconnection:createofferfailed", Ke = "peerconnection:createanswerfailed", Qe = "peerconnection:setlocaldescriptionfailed", Xe = "peerconnection:setremotedescriptionfailed", Ze = "presentation:start", et = "presentation:started", tt = "presentation:end", rt = "presentation:ended", nt = "presentation:failed", ot = [
22
19
  x,
23
- Se,
24
- we,
25
- Te,
26
- ae,
20
+ q,
21
+ j,
22
+ Y,
23
+ Ne,
24
+ fe,
25
+ Ie,
26
+ de,
27
+ Oe,
27
28
  Me,
29
+ Ae,
28
30
  Ce,
29
31
  Re,
30
- Ne,
31
- fe,
32
- pe,
33
- ge
34
- ], O = [
35
- A,
36
- Y,
37
- j,
32
+ Te,
33
+ _e
34
+ ], v = [
35
+ P,
38
36
  z,
39
37
  B,
40
38
  $,
41
39
  J,
42
40
  K,
43
- Q
44
- ], nt = [
41
+ Q,
45
42
  X,
46
- Z,
43
+ Z
44
+ ], st = [
47
45
  ee,
48
46
  te,
49
47
  re,
@@ -51,28 +49,28 @@ const G = "incomingCall", H = "declinedIncomingCall", x = "failedIncomingCall",
51
49
  oe,
52
50
  se,
53
51
  ie,
52
+ ae,
54
53
  ce,
55
- de,
56
- he,
57
54
  Ee,
58
- me,
55
+ he,
59
56
  ue,
57
+ me,
60
58
  le,
61
- _e,
62
- Ie
59
+ pe,
60
+ ge,
61
+ we,
62
+ Se
63
63
  ], p = [
64
- Ae,
65
- A,
66
- Oe,
67
64
  Pe,
65
+ P,
68
66
  ve,
69
67
  De,
70
68
  ye,
71
69
  Le,
72
70
  Fe,
73
71
  be,
74
- Ve,
75
72
  ke,
73
+ Ve,
76
74
  We,
77
75
  Ue,
78
76
  Ge,
@@ -90,14 +88,16 @@ const G = "incomingCall", H = "declinedIncomingCall", x = "failedIncomingCall",
90
88
  Xe,
91
89
  Ze,
92
90
  et,
93
- tt
91
+ tt,
92
+ rt,
93
+ nt
94
94
  ];
95
- [...O, ...rt];
95
+ [...v, ...ot];
96
96
  [
97
97
  ...p,
98
- ...nt
98
+ ...st
99
99
  ];
100
- class ot {
100
+ class it {
101
101
  originator;
102
102
  connection;
103
103
  events;
@@ -268,7 +268,7 @@ class ot {
268
268
  return !0;
269
269
  }
270
270
  }
271
- class st {
271
+ class f {
272
272
  stats = (/* @__PURE__ */ new Map()).set("codec", { mimeType: "video/h264" });
273
273
  dtmf = null;
274
274
  track = null;
@@ -311,8 +311,26 @@ class st {
311
311
  throw new Error("Method not implemented.");
312
312
  }
313
313
  }
314
- const it = ["track"];
315
- class at {
314
+ class C {
315
+ currentDirection = "sendrecv";
316
+ direction = "sendrecv";
317
+ // eslint-disable-next-line unicorn/no-null
318
+ mid = null;
319
+ receiver;
320
+ sender;
321
+ stopped = !1;
322
+ constructor(e) {
323
+ this.sender = e;
324
+ }
325
+ // eslint-disable-next-line @typescript-eslint/class-methods-use-this
326
+ setCodecPreferences(e) {
327
+ }
328
+ // eslint-disable-next-line @typescript-eslint/class-methods-use-this
329
+ stop() {
330
+ }
331
+ }
332
+ const at = ["track"];
333
+ class ct {
316
334
  senders = [];
317
335
  receivers = [];
318
336
  canTrickleIceCandidates;
@@ -343,7 +361,7 @@ class at {
343
361
  signalingState;
344
362
  events;
345
363
  constructor(e, t) {
346
- this.events = new T(it), this.receivers = t.map((r) => ({ track: r }));
364
+ this.events = new T(at), this.receivers = t.map((r) => ({ track: r }));
347
365
  }
348
366
  getRemoteStreams() {
349
367
  throw new Error("Method not implemented.");
@@ -404,19 +422,24 @@ class at {
404
422
  }
405
423
  getReceivers = () => this.receivers;
406
424
  getSenders = () => this.senders;
407
- addTrack = (e) => {
408
- const t = new st({ track: e });
409
- return this.senders.push(t), this.events.trigger("track", { track: e }), t;
425
+ addTrack = (e, ...t) => {
426
+ const r = new f({ track: e }), n = new C(r);
427
+ return n.mid = e.kind === "audio" ? "0" : "1", this.senders.push(r), this.events.trigger("track", { track: e, transceiver: n }), r;
428
+ };
429
+ // Дополнительный метод для тестов с возможностью установки mid
430
+ addTrackWithMid = (e, t) => {
431
+ const r = new f({ track: e }), n = new C(r);
432
+ return t === void 0 ? n.mid = e.kind === "audio" ? "0" : "1" : n.mid = t, this.senders.push(r), this.events.trigger("track", { track: e, transceiver: n }), r;
410
433
  };
411
434
  }
412
- function ct(n) {
413
- const e = n.match(/(purgatory)|[\d.]+/g);
435
+ function dt(o) {
436
+ const e = o.match(/(purgatory)|[\d.]+/g);
414
437
  if (!e)
415
438
  throw new Error("wrong sip url");
416
439
  return e[0];
417
440
  }
418
- const f = 400, dt = "777", Et = (n) => n.getVideoTracks().length > 0;
419
- class i extends ot {
441
+ const R = 400, Et = "777", ht = (o) => o.getVideoTracks().length > 0;
442
+ class i extends it {
420
443
  static presentationError;
421
444
  static startPresentationError;
422
445
  static countStartPresentationError = Number.POSITIVE_INFINITY;
@@ -441,10 +464,13 @@ class i extends ot {
441
464
  }, 100), setTimeout(() => {
442
465
  this.trigger("confirmed");
443
466
  }, 200);
444
- }, f);
467
+ }, R);
445
468
  });
446
469
  replaceMediaStream = jest.fn(async (e) => {
447
470
  });
471
+ restartIce = jest.fn(
472
+ async (e) => !0
473
+ );
448
474
  isEndedInner = !1;
449
475
  delayStartPresentation = 0;
450
476
  timeoutStartPresentation;
@@ -455,13 +481,13 @@ class i extends ot {
455
481
  constructor({
456
482
  eventHandlers: e,
457
483
  originator: t,
458
- remoteIdentity: r = new b(
484
+ remoteIdentity: r = new V(
459
485
  new E("sip", "caller1", "test1.com", 5060),
460
486
  "Test Caller 1"
461
487
  ),
462
- delayStartPresentation: s = 0
488
+ delayStartPresentation: n = 0
463
489
  }) {
464
- super({ originator: t, eventHandlers: e, remoteIdentity: r }), this.delayStartPresentation = s;
490
+ super({ originator: t, eventHandlers: e, remoteIdentity: r }), this.delayStartPresentation = n;
465
491
  }
466
492
  static setPresentationError(e) {
467
493
  this.presentationError = e;
@@ -497,28 +523,28 @@ class i extends ot {
497
523
  return e ? (this.createPeerconnection(e), !0) : !1;
498
524
  }
499
525
  createPeerconnection(e) {
500
- const t = V();
526
+ const t = W();
501
527
  t.id = "mainaudio1";
502
528
  const r = [t];
503
- if (Et(e)) {
504
- const a = k();
529
+ if (ht(e)) {
530
+ const a = U();
505
531
  a.id = "mainvideo1", r.push(a);
506
532
  }
507
- this.connection = new at(void 0, r), this.addStream(e), this.trigger("peerconnection", { peerconnection: this.connection });
533
+ this.connection = new ct(void 0, r), this.addStream(e), this.trigger("peerconnection", { peerconnection: this.connection });
508
534
  }
509
535
  connect(e, { mediaStream: t } = {}) {
510
- const r = ct(e);
536
+ const r = dt(e);
511
537
  return this.initPeerconnection(t), this.timeoutConnect = setTimeout(() => {
512
- e.includes(dt) ? this.trigger("failed", {
538
+ e.includes(Et) ? this.trigger("failed", {
513
539
  originator: "remote",
514
540
  message: "IncomingResponse",
515
541
  cause: "Rejected"
516
542
  }) : (this.trigger("connecting"), this.timeoutNewInfo = setTimeout(() => {
517
543
  this.newInfo({
518
- originator: W.REMOTE,
544
+ originator: G.REMOTE,
519
545
  // @ts-expect-error
520
546
  request: {
521
- getHeader: (s) => s === "content-type" ? "application/vinteo.webrtc.roomname" : s === "x-webrtc-enter-room" ? r : s === "x-webrtc-participant-name" ? "Test Caller 1" : ""
547
+ getHeader: (n) => n === "content-type" ? "application/vinteo.webrtc.roomname" : n === "x-webrtc-enter-room" ? r : n === "x-webrtc-participant-name" ? "Test Caller 1" : ""
522
548
  }
523
549
  });
524
550
  }, 100), this.timeoutAccepted = setTimeout(() => {
@@ -526,7 +552,7 @@ class i extends ot {
526
552
  }, 200), this.timeoutConfirmed = setTimeout(() => {
527
553
  this.trigger("confirmed");
528
554
  }, 300));
529
- }, f), this.connection;
555
+ }, R), this.connection;
530
556
  }
531
557
  terminate({ status_code: e, cause: t } = {}) {
532
558
  return this.status_code = e, this.trigger("ended", { status_code: e, cause: t, originator: "local" }), this.isEndedInner = !1, this;
@@ -591,7 +617,7 @@ class i extends ot {
591
617
  }
592
618
  /* eslint-enable no-param-reassign */
593
619
  }
594
- class ht {
620
+ class mt {
595
621
  extraHeaders = [];
596
622
  setExtraHeaders(e) {
597
623
  this.extraHeaders = e;
@@ -600,18 +626,18 @@ class ht {
600
626
  setExtraContactParams() {
601
627
  }
602
628
  }
603
- const c = "PASSWORD_CORRECT", C = "PASSWORD_CORRECT_2", mt = "NAME_INCORRECT", d = 400, l = {
629
+ const c = "PASSWORD_CORRECT", M = "PASSWORD_CORRECT_2", ut = "NAME_INCORRECT", d = 400, l = {
604
630
  url: "wss://sipServerUrl/webrtc/wss/",
605
631
  sip_uri: "sip:sipServerUrl;transport=ws",
606
632
  via_transport: "WSS"
607
- }, R = {
633
+ }, A = {
608
634
  status_code: 200,
609
635
  reason_phrase: "OK"
610
- }, M = {
636
+ }, O = {
611
637
  status_code: 401,
612
638
  reason_phrase: "Unauthorized"
613
639
  };
614
- class o {
640
+ class s {
615
641
  static isAvailableTelephony = !0;
616
642
  static startError;
617
643
  static countStartError = Number.POSITIVE_INFINITY;
@@ -621,8 +647,8 @@ class o {
621
647
  // @ts-expect-error – Jest создаёт функцию-замок.
622
648
  call = jest.fn(
623
649
  (e, t) => {
624
- const { mediaStream: r, eventHandlers: s } = t;
625
- return this.session = new i({ eventHandlers: s, originator: "local" }), this.session.connect(e, { mediaStream: r }), this.session;
650
+ const { mediaStream: r, eventHandlers: n } = t;
651
+ return this.session = new i({ eventHandlers: n, originator: "local" }), this.session.connect(e, { mediaStream: r }), this.session;
626
652
  }
627
653
  );
628
654
  sendOptions = jest.fn(
@@ -634,8 +660,8 @@ class o {
634
660
  * start – имитирует запуск UA.
635
661
  */
636
662
  start = jest.fn(() => {
637
- if (o.countStarts += 1, o.startError && o.countStarts < o.countStartError) {
638
- this.trigger("disconnected", o.startError);
663
+ if (s.countStarts += 1, s.startError && s.countStarts < s.countStartError) {
664
+ this.trigger("disconnected", s.startError);
639
665
  return;
640
666
  }
641
667
  this.register();
@@ -657,27 +683,27 @@ class o {
657
683
  isConnectedInner;
658
684
  configuration;
659
685
  constructor(e) {
660
- this.events = new T(O);
661
- const [t, r] = e.uri.split(":"), [s, a] = r.split("@"), u = {
686
+ this.events = new T(v);
687
+ const [t, r] = e.uri.split(":"), [n, a] = r.split("@"), u = {
662
688
  ...e,
663
- uri: new E(t, s, a)
689
+ uri: new E(t, n, a)
664
690
  };
665
- this.configuration = u, this.registratorInner = new ht();
691
+ this.configuration = u, this.registratorInner = new mt();
666
692
  }
667
693
  static setStartError(e, { count: t = Number.POSITIVE_INFINITY } = {}) {
668
- o.startError = e, o.countStartError = t;
694
+ s.startError = e, s.countStartError = t;
669
695
  }
670
696
  static resetStartError() {
671
- o.startError = void 0, o.countStartError = Number.POSITIVE_INFINITY, o.countStarts = 0;
697
+ s.startError = void 0, s.countStartError = Number.POSITIVE_INFINITY, s.countStarts = 0;
672
698
  }
673
699
  static setAvailableTelephony() {
674
- o.isAvailableTelephony = !0;
700
+ s.isAvailableTelephony = !0;
675
701
  }
676
702
  static setNotAvailableTelephony() {
677
- o.isAvailableTelephony = !1;
703
+ s.isAvailableTelephony = !1;
678
704
  }
679
705
  static reset() {
680
- o.resetStartError(), o.setAvailableTelephony();
706
+ s.resetStartError(), s.setAvailableTelephony();
681
707
  }
682
708
  on(e, t) {
683
709
  return this.events.on(e, t), this;
@@ -707,13 +733,13 @@ class o {
707
733
  register() {
708
734
  this.startedTimeout && clearTimeout(this.startedTimeout);
709
735
  const { password: e, register: t, uri: r } = this.configuration;
710
- t === !0 && r.user.includes(mt) ? (this.isRegisteredInner = !1, this.isConnectedInner = !1, this.startedTimeout = setTimeout(() => {
711
- this.trigger("registrationFailed", { response: M, cause: N.causes.REJECTED });
712
- }, d)) : !this.isRegistered() && t === !0 && (e === c || e === C) ? (this.isRegisteredInner = !0, this.startedTimeout = setTimeout(() => {
713
- this.trigger("registered", { response: R });
714
- }, d)) : t === !0 && e !== c && e !== C && (this.isRegisteredInner = !1, this.isConnectedInner = !1, this.startedTimeout = setTimeout(() => {
715
- this.trigger("registrationFailed", { response: M, cause: N.causes.REJECTED });
716
- }, d)), o.isAvailableTelephony ? (this.trigger("connected", { socket: l }), this.isConnectedInner = !0) : this.stop();
736
+ t === !0 && r.user.includes(ut) ? (this.isRegisteredInner = !1, this.isConnectedInner = !1, this.startedTimeout = setTimeout(() => {
737
+ this.trigger("registrationFailed", { response: O, cause: N.causes.REJECTED });
738
+ }, d)) : !this.isRegistered() && t === !0 && (e === c || e === M) ? (this.isRegisteredInner = !0, this.startedTimeout = setTimeout(() => {
739
+ this.trigger("registered", { response: A });
740
+ }, d)) : t === !0 && e !== c && e !== M && (this.isRegisteredInner = !1, this.isConnectedInner = !1, this.startedTimeout = setTimeout(() => {
741
+ this.trigger("registrationFailed", { response: O, cause: N.causes.REJECTED });
742
+ }, d)), s.isAvailableTelephony ? (this.trigger("connected", { socket: l }), this.isConnectedInner = !0) : this.stop();
717
743
  }
718
744
  /**
719
745
  * unregister
@@ -721,7 +747,7 @@ class o {
721
747
  * @returns {undefined}
722
748
  */
723
749
  unregister() {
724
- this.isRegisteredInner = !1, this.isConnectedInner = !1, this.trigger("unregistered", { response: R });
750
+ this.isRegisteredInner = !1, this.isConnectedInner = !1, this.trigger("unregistered", { response: A });
725
751
  }
726
752
  isRegistered() {
727
753
  return this.isRegisteredInner === !0;
@@ -744,93 +770,93 @@ class o {
744
770
  return this.registratorInner;
745
771
  }
746
772
  }
747
- class ut {
773
+ class lt {
748
774
  url;
749
775
  constructor(e) {
750
776
  this.url = e;
751
777
  }
752
778
  }
753
- class lt extends D {
779
+ class pt extends L {
754
780
  contentType;
755
781
  body;
756
782
  constructor(e, t) {
757
783
  super(), this.contentType = e, this.body = t;
758
784
  }
759
785
  }
760
- const g = "remote", pt = (n, e) => {
786
+ const g = "remote", gt = (o, e) => {
761
787
  const t = new _(e), r = {
762
788
  originator: g,
763
789
  request: t,
764
- info: new lt("", "")
790
+ info: new pt("", "")
765
791
  };
766
- n.newInfo(r);
767
- }, gt = (n, e) => {
792
+ o.newInfo(r);
793
+ }, Tt = (o, e) => {
768
794
  const r = { event: "sipEvent", request: new _(e) };
769
- n.newSipEvent(r);
770
- }, Tt = (n, {
795
+ o.newSipEvent(r);
796
+ }, _t = (o, {
771
797
  incomingNumber: e = "1234",
772
798
  displayName: t,
773
799
  host: r
774
800
  }) => {
775
- const s = new i({ originator: g, eventHandlers: {} }), a = new L("sip", e, r);
776
- s.remote_identity = new y(a, t);
801
+ const n = new i({ originator: g, eventHandlers: {} }), a = new b("sip", e, r);
802
+ n.remote_identity = new F(a, t);
777
803
  const u = new _([]);
778
- n.trigger("newRTCSession", {
804
+ o.trigger("newRTCSession", {
779
805
  originator: g,
780
- session: s,
806
+ session: n,
781
807
  request: u
782
808
  });
783
- }, _t = (n, e) => {
784
- e ? n.trigger("failed", e) : n.trigger("failed", n);
785
- }, P = {
786
- triggerNewInfo: pt,
787
- triggerNewSipEvent: gt,
788
- triggerIncomingSession: Tt,
789
- triggerFailIncomingSession: _t,
790
- WebSocketInterface: ut,
791
- UA: o,
809
+ }, It = (o, e) => {
810
+ e ? o.trigger("failed", e) : o.trigger("failed", o);
811
+ }, D = {
812
+ triggerNewInfo: gt,
813
+ triggerNewSipEvent: Tt,
814
+ triggerIncomingSession: _t,
815
+ triggerFailIncomingSession: It,
816
+ WebSocketInterface: lt,
817
+ UA: s,
792
818
  C: {
793
819
  INVITE: "INVITE"
794
820
  }
795
- }, I = "user", h = "displayName", S = "SIP_SERVER_URL", v = "SIP_WEB_SOCKET_SERVER_URL", It = new P.WebSocketInterface(v), w = {
821
+ }, I = "user", h = "displayName", w = "SIP_SERVER_URL", y = "SIP_WEB_SOCKET_SERVER_URL", wt = new D.WebSocketInterface(y), S = {
796
822
  userAgent: "Chrome",
797
- sipServerUrl: S,
798
- sipWebSocketServerURL: v
799
- }, vt = {
800
- ...w
823
+ sipServerUrl: w,
824
+ sipWebSocketServerURL: y
825
+ }, Dt = {
826
+ ...S
801
827
  }, St = {
802
- ...w,
828
+ ...S,
803
829
  user: I,
804
830
  password: c,
805
831
  register: !0
806
- }, Dt = {
832
+ }, yt = {
807
833
  ...St,
808
834
  displayName: h
809
- }, yt = {
810
- ...w,
835
+ }, Lt = {
836
+ ...S,
811
837
  displayName: h,
812
838
  register: !1
813
839
  }, m = {
814
840
  session_timers: !1,
815
- sockets: [It],
841
+ sockets: [wt],
816
842
  user_agent: "Chrome",
817
843
  sdpSemantics: "unified-plan",
818
844
  register_expires: 300,
819
845
  connection_recovery_max_interval: 6,
820
846
  connection_recovery_min_interval: 2
821
- }, Lt = {
847
+ }, Ft = {
822
848
  ...m,
823
849
  password: c,
824
- uri: new E("sip", I, S),
850
+ uri: new E("sip", I, w),
825
851
  display_name: "",
826
852
  register: !0
827
- }, Ft = {
853
+ }, bt = {
828
854
  ...m,
829
855
  password: c,
830
- uri: new E("sip", I, S),
856
+ uri: new E("sip", I, w),
831
857
  display_name: h,
832
858
  register: !0
833
- }, bt = {
859
+ }, kt = {
834
860
  ...m,
835
861
  display_name: h,
836
862
  register: !1
@@ -838,28 +864,28 @@ const g = "remote", pt = (n, e) => {
838
864
  ...m,
839
865
  display_name: "",
840
866
  register: !1
841
- }, wt = "10.10.10.10", kt = [`X-Vinteo-Remote: ${wt}`], Wt = () => new U({
842
- JsSIP: P
867
+ }, Nt = "10.10.10.10", Wt = [`X-Vinteo-Remote: ${Nt}`], Ut = () => new H({
868
+ JsSIP: D
843
869
  });
844
870
  export {
845
- dt as FAILED_CONFERENCE_NUMBER,
846
- P as JsSIP,
847
- mt as NAME_INCORRECT,
871
+ Et as FAILED_CONFERENCE_NUMBER,
872
+ D as JsSIP,
873
+ ut as NAME_INCORRECT,
848
874
  c as PASSWORD_CORRECT,
849
- C as PASSWORD_CORRECT_2,
850
- S as SIP_SERVER_URL,
851
- v as SIP_WEB_SOCKET_SERVER_URL,
875
+ M as PASSWORD_CORRECT_2,
876
+ w as SIP_SERVER_URL,
877
+ y as SIP_WEB_SOCKET_SERVER_URL,
852
878
  St as dataForConnectionWithAuthorization,
853
- Dt as dataForConnectionWithAuthorizationWithDisplayName,
854
- yt as dataForConnectionWithoutAuthorization,
855
- vt as dataForConnectionWithoutAuthorizationWithoutDisplayName,
879
+ yt as dataForConnectionWithAuthorizationWithDisplayName,
880
+ Lt as dataForConnectionWithoutAuthorization,
881
+ Dt as dataForConnectionWithoutAuthorizationWithoutDisplayName,
856
882
  h as displayName,
857
- Wt as doMockSipConnector,
858
- kt as extraHeadersRemoteAddress,
859
- wt as remoteAddress,
860
- Lt as uaConfigurationWithAuthorization,
861
- Ft as uaConfigurationWithAuthorizationWithDisplayName,
862
- bt as uaConfigurationWithoutAuthorization,
883
+ Ut as doMockSipConnector,
884
+ Wt as extraHeadersRemoteAddress,
885
+ Nt as remoteAddress,
886
+ Ft as uaConfigurationWithAuthorization,
887
+ bt as uaConfigurationWithAuthorizationWithDisplayName,
888
+ kt as uaConfigurationWithoutAuthorization,
863
889
  Vt as uaConfigurationWithoutAuthorizationWithoutDisplayName,
864
890
  I as user
865
891
  };
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("events-constructor");const r=require("./@SipConnector-BDt5-Q2O.cjs"),x=require("@krivega/cancelable-promise"),j=require("repeated-calls"),K=require("ts-debounce"),X=require("ua-parser-js"),Y=require("sequent-promises"),G=n=>n instanceof Object&&("originator"in n||"cause"in n),J=n=>{if(x.isCanceledError(n))return!0;if(!G(n))return!1;const{originator:e,cause:t}=n;return typeof t=="string"?t===r.ECallCause.REQUEST_TIMEOUT||t===r.ECallCause.REJECTED||e===r.Originator.LOCAL&&(t===r.ECallCause.CANCELED||t===r.ECallCause.BYE):!1},z=()=>globalThis.process?.versions?.electron!==void 0,B=()=>{const n=new X.UAParser,{name:e}=n.getBrowser(),t=z();return{isChrome:e==="Chrome"||t}},A=n=>{const{url:e,cause:t}=n;let o=e;return(t===r.ECallCause.BAD_MEDIA_DESCRIPTION||t===r.ECallCause.NOT_FOUND)&&(o=`${n.message.to.uri.user}@${n.message.to.uri.host}`),o};var $=(n=>(n.CONNECT_SERVER_FAILED="CONNECT_SERVER_FAILED",n.WRONG_USER_OR_PASSWORD="WRONG_USER_OR_PASSWORD",n.BAD_MEDIA_ERROR="BAD_MEDIA_ERROR",n.NOT_FOUND_ERROR="NOT_FOUND_ERROR",n.WS_CONNECTION_FAILED="WS_CONNECTION_FAILED",n.CONNECT_SERVER_FAILED_BY_LINK="CONNECT_SERVER_FAILED_BY_LINK",n))($||{});const Q=new Error("Unknown error"),Z=(n=Q)=>{const{cause:e,socket:t}=n;let o="CONNECT_SERVER_FAILED";switch(e){case"Forbidden":{o="WRONG_USER_OR_PASSWORD";break}case r.ECallCause.BAD_MEDIA_DESCRIPTION:{o="BAD_MEDIA_ERROR";break}case r.ECallCause.NOT_FOUND:{o="NOT_FOUND_ERROR";break}default:t!==void 0&&t._ws?.readyState===3?o="WS_CONNECTION_FAILED":A(n)!==void 0&&A(n)!==""&&(o="CONNECT_SERVER_FAILED_BY_LINK")}return o},ee=n=>{let e="";try{e=JSON.stringify(n)}catch(t){r.logger("failed to stringify message",t)}return e},ne=new Error("Unknown error"),te=(n=ne)=>{const{code:e,cause:t,message:o}=n,a=A(n),s={code:"",cause:"",message:""};return typeof o=="object"&&o!==null?s.message=ee(o):o&&(s.message=String(o)),a!==void 0&&a!==""&&(s.link=a),e!==void 0&&e!==""&&(s.code=e),t!==void 0&&t!==""&&(s.cause=t),s},re=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:$,getLinkError:A,getTypeFromError:Z,getValuesFromError:te},Symbol.toStringTag,{value:"Module"})),oe=({sessionId:n,remoteAddress:e,isMutedAudio:t,isMutedVideo:o,isRegistered:a,isPresentationCall:s})=>{const c=[],l=t?"0":"1",u=o?"0":"1";return c.push(`X-Vinteo-Mic-State: ${l}`,`X-Vinteo-MainCam-State: ${u}`),(a===!1||a===void 0)&&c.push("X-Vinteo-Purgatory-Call: yes"),n!==void 0&&n!==""&&c.push(`X-Vinteo-Session: ${n}`),s===!0&&c.push("X-Vinteo-Presentation-Call: yes"),e!==void 0&&e!==""&&c.push(`X-Vinteo-Remote: ${e}`),c},se="[@*!|]",ae="_",ce=n=>{let e=n;return e=e.replaceAll(new RegExp(se,"g"),ae),e},ie=({appName:n,appVersion:e,browserName:t,browserVersion:o})=>{const s=`${ce(n)} ${e}`;return`ChromeNew - ${t===void 0?s:`${t} ${o}, ${s}`}`},le=({isUnifiedSdpSemantic:n,appVersion:e,browserName:t,browserVersion:o,appName:a})=>n?ie({appVersion:e,browserName:t,browserVersion:o,appName:a}):"Chrome",H="purgatory",D=n=>n===H,ue=n=>e=>[...e].map(o=>async()=>n(o)),de=async({accumulatedKeys:n,sendKey:e,canRunTask:t})=>{const a=ue(e)(n);return Y.sequentPromises(a,t)},ge=n=>t=>(r.logger("onStartMainCam"),n.on("api:admin-start-main-cam",t)),Se=n=>t=>(r.logger("onStartMic"),n.on("api:admin-start-mic",t)),Ce=n=>t=>(r.logger("onStopMainCam"),n.on("api:admin-stop-main-cam",t)),me=n=>t=>(r.logger("onStopMic"),n.on("api:admin-stop-mic",t)),fe=({sipConnector:n})=>{const e=(g,C)=>({isSyncForced:S})=>{if(S===!0){g();return}C()},t=ge(n),o=Ce(n),a=Se(n),s=me(n);let c,l,u,f;const h=({onStartMainCamForced:g,onStartMainCamNotForced:C,onStopMainCamForced:S,onStopMainCamNotForced:p,onStartMicForced:E,onStartMicNotForced:b,onStopMicForced:O,onStopMicNotForced:v})=>{const T=e(g,C);c=t(T);const P=e(S,p);l=o(P);const _=e(E,b);u=a(_);const m=e(O,v);f=s(m)},d=()=>{c?.(),l?.(),u?.(),f?.()};return{start:g=>{h(g)},stop:()=>{d()}}},he=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:H,createSyncMediaState:fe,createUaParser:B,error:re,getExtraHeaders:oe,getUserAgent:le,hasPurgatory:D,prepareMediaStream:r.prepareMediaStream,sendDtmfAccumulated:de,setEncodingsToSender:r.setEncodingsToSender,setParametersToSender:r.setParametersToSender},Symbol.toStringTag,{value:"Module"})),pe=()=>B().isChrome,U=n=>{if(!x.isCanceledError(n)&&!j.hasCanceledError(n))throw n;return{isSuccessful:!1}},Re=({kind:n,readyState:e})=>n==="video"&&e==="live",k=(n,e,{onEnterPurgatory:t,onEnterConference:o})=>{D(n)?t&&t():o&&o({isSuccessProgressCall:e})},L=(n,e)=>{n(),e&&e()},V=(n,e,t)=>{throw n&&n(),e(),t},Ee=new Set(["on","once","onceRace","wait","off","sendDTMF","hangUp","declineToIncomingCall","sendChannels","checkTelephony","waitChannels","ping","connection","isConfigured","isRegistered"]);class be{on;once;onceRace;wait;off;sendDTMF;hangUp;declineToIncomingCall;sendChannels;checkTelephony;waitChannels;ping;connection;isConfigured;isRegistered;sipConnector;constructor(e){return this.sipConnector=e,new Proxy(this,{get:(t,o,a)=>{if(typeof o=="string"&&Ee.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(t,o,a);return typeof s=="function"?s.bind(t):s}})}connectToServer=async e=>{const{userAgent:t,sipWebSocketServerURL:o,sipServerUrl:a,remoteAddress:s,displayName:c,name:l,password:u,isRegisteredUser:f,isDisconnectOnFail:h}=e;return r.logger("connectToServer",e),this.sipConnector.connect({userAgent:t,sipWebSocketServerURL:o,sipServerUrl:a,remoteAddress:s,displayName:c,password:u,user:l,register:f}).then(d=>(r.logger("connectToServer then"),{ua:d,isSuccessful:!0})).catch(async d=>(r.logger("connectToServer catch: error",d),h===!0?this.sipConnector.disconnect().then(()=>U(d)).catch(()=>U(d)):U(d)))};callToServer=async e=>{const{conference:t,mediaStream:o,extraHeaders:a,iceServers:s,contentHint:c,degradationPreference:l,sendEncodings:u,offerToReceiveAudio:f,offerToReceiveVideo:h,directionVideo:d,directionAudio:N,setRemoteStreams:y,onBeforeProgressCall:g,onSuccessProgressCall:C,onEnterPurgatory:S,onEnterConference:p,onFailProgressCall:E,onFinishProgressCall:b,onEndedCall:O,onAddedTransceiver:v}=e,T=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:y}),P=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{T().catch(r.logger)}});r.logger("callToServer",e);const _=async()=>(r.logger("startCall"),this.sipConnector.call({mediaStream:o,extraHeaders:a,iceServers:s,contentHint:c,offerToReceiveAudio:f,offerToReceiveVideo:h,directionVideo:d,directionAudio:N,degradationPreference:l,onAddedTransceiver:v,sendEncodings:u,number:t,ontrack:P}));let m=!1,R;const M=(r.logger("subscribeEnterConference: onEnterConference",p),this.sipConnector.on("api:enterRoom",({room:i})=>{r.logger("enterRoom",{_room:i,isSuccessProgressCall:m}),R=i,(S??p)&&k(R,m,{onEnterPurgatory:S,onEnterConference:p})})),F=i=>(r.logger("onSuccess"),m=!0,T().catch(r.logger),C&&C({isPurgatory:D(R)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{L(M,O)}),i),w=i=>(r.logger("onFail"),V(E,M,i)),I=()=>{r.logger("onFinish"),b&&b()};return r.logger("onBeforeProgressCall"),g&&g(t),_().then(F).catch(i=>w(i)).finally(I)};disconnectFromServer=async()=>this.sipConnector.disconnect().then(()=>(r.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(e=>(r.logger("disconnectFromServer: catch",e),{isSuccessful:!1}));answerToIncomingCall=async e=>{const{mediaStream:t,extraHeaders:o,iceServers:a,contentHint:s,degradationPreference:c,sendEncodings:l,offerToReceiveAudio:u,offerToReceiveVideo:f,directionVideo:h,directionAudio:d,setRemoteStreams:N,onBeforeProgressCall:y,onSuccessProgressCall:g,onEnterPurgatory:C,onEnterConference:S,onFailProgressCall:p,onFinishProgressCall:E,onEndedCall:b,onAddedTransceiver:O}=e,v=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:N}),T=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{v().catch(r.logger)}});r.logger("answerToIncomingCall",e);const P=async()=>this.sipConnector.answerToIncomingCall({mediaStream:t,extraHeaders:o,iceServers:a,contentHint:s,offerToReceiveAudio:u,offerToReceiveVideo:f,directionVideo:h,directionAudio:d,degradationPreference:c,onAddedTransceiver:O,sendEncodings:l,ontrack:T}),_=()=>{const{remoteCallerData:i}=this.sipConnector;return i.incomingNumber};let m=!1,R;const M=(r.logger("subscribeEnterConference: onEnterConference",S),this.sipConnector.on("api:enterRoom",i=>{r.logger("enterRoom",{_room:i,isSuccessProgressCall:m}),R=i,(C??S)&&k(R,m,{onEnterPurgatory:C,onEnterConference:S})})),F=i=>(r.logger("onSuccess"),m=!0,v().catch(r.logger),g&&g({isPurgatory:D(R)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{L(M,b)}),i),w=i=>(r.logger("onFail"),V(p,M,i)),I=()=>{r.logger("onFinish"),E&&E()};if(r.logger("onBeforeProgressCall"),y){const i=_();y(i)}return P().then(F).catch(i=>w(i)).finally(I)};updatePresentation=async({mediaStream:e,isP2P:t,contentHint:o,degradationPreference:a,sendEncodings:s,onAddedTransceiver:c})=>(r.logger("updatePresentation"),this.sipConnector.updatePresentation(e,{isP2P:t,contentHint:o,degradationPreference:a,onAddedTransceiver:c,sendEncodings:s}));startPresentation=async({mediaStream:e,isP2P:t,contentHint:o,degradationPreference:a,sendEncodings:s,callLimit:c,onAddedTransceiver:l})=>(r.logger("startPresentation"),this.sipConnector.startPresentation(e,{isP2P:t,contentHint:o,callLimit:c,degradationPreference:a,onAddedTransceiver:l,sendEncodings:s}));stopShareSipConnector=async({isP2P:e=!1}={})=>(r.logger("stopShareSipConnector"),this.sipConnector.stopPresentation({isP2P:e}).catch(t=>{r.logger(t)}));sendRefusalToTurnOnMic=async()=>{r.logger("sendRefusalToTurnOnMic"),await this.sipConnector.sendRefusalToTurnOnMic().catch(e=>{r.logger("sendRefusalToTurnOnMic: error",e)})};sendRefusalToTurnOnCam=async()=>{r.logger("sendRefusalToTurnOnCam"),await this.sipConnector.sendRefusalToTurnOnCam().catch(e=>{r.logger("sendRefusalToTurnOnCam: error",e)})};sendMediaState=async({isEnabledCam:e,isEnabledMic:t})=>{r.logger("sendMediaState"),await this.sipConnector.sendMediaState({cam:e,mic:t})};replaceMediaStream=async(e,{deleteExisting:t,addMissing:o,forceRenegotiation:a,contentHint:s,degradationPreference:c,sendEncodings:l,onAddedTransceiver:u})=>(r.logger("replaceMediaStream"),this.sipConnector.replaceMediaStream(e,{deleteExisting:t,addMissing:o,forceRenegotiation:a,contentHint:s,degradationPreference:c,onAddedTransceiver:u,sendEncodings:l}));askPermissionToEnableCam=async()=>{r.logger("askPermissionToEnableCam"),await this.sipConnector.askPermissionToEnableCam()};resolveHandleReadyRemoteStreamsDebounced=({onReadyRemoteStreams:e})=>K.debounce(()=>{const t=this.sipConnector.getRemoteStreams();r.logger("remoteStreams",t),t&&e(t)},200);resolveHandleReadyRemoteStreams=({onReadyRemoteStreams:e})=>({track:t})=>{Re(t)&&e()};getRemoteStreams=()=>(r.logger("getRemoteStreams"),this.sipConnector.getRemoteStreams());onUseLicense=e=>(r.logger("onUseLicense"),this.sipConnector.on("api:useLicense",e));onMustStopPresentation=e=>(r.logger("onMustStopPresentation"),this.sipConnector.on("api:mustStopPresentation",e));onMoveToSpectators=e=>(r.logger("onMoveToSpectators"),this.sipConnector.on("api:participant:move-request-to-spectators",e));onMoveToParticipants=e=>(r.logger("onMoveToParticipants"),this.sipConnector.on("api:participant:move-request-to-participants",e));onStats=e=>(r.logger("onStats"),this.sipConnector.on("stats:collected",e));offStats=e=>{r.logger("offStats"),this.sipConnector.off("stats:collected",e)}}var W=(n=>(n.VP8="video/VP8",n.VP9="video/VP9",n.H264="video/H264",n.AV1="video/AV1",n.rtx="video/rtx",n.red="video/red",n.flexfec03="video/flexfec-03",n))(W||{});exports.ECallCause=r.ECallCause;exports.EStatsTypes=r.EStatsTypes;exports.EUseLicense=r.EUseLicense;exports.SipConnector=r.SipConnector;exports.StatsPeerConnection=r.StatsPeerConnection;exports.disableDebug=r.disableDebug;exports.enableDebug=r.enableDebug;exports.getCodecFromSender=r.getCodecFromSender;exports.hasCanceledStartPresentationError=r.hasCanceledStartPresentationError;exports.EMimeTypesVideoCodecs=W;exports.SipConnectorFacade=be;exports.hasAvailableStats=pe;exports.hasCanceledCallError=J;exports.tools=he;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("events-constructor");const r=require("./@SipConnector-aB66gnC6.cjs"),x=require("@krivega/cancelable-promise"),j=require("repeated-calls"),K=require("ts-debounce"),X=require("ua-parser-js"),Y=require("sequent-promises"),G=n=>n instanceof Object&&("originator"in n||"cause"in n),J=n=>{if(x.isCanceledError(n))return!0;if(!G(n))return!1;const{originator:e,cause:t}=n;return typeof t=="string"?t===r.ECallCause.REQUEST_TIMEOUT||t===r.ECallCause.REJECTED||e===r.Originator.LOCAL&&(t===r.ECallCause.CANCELED||t===r.ECallCause.BYE):!1},z=()=>globalThis.process?.versions?.electron!==void 0,B=()=>{const n=new X.UAParser,{name:e}=n.getBrowser(),t=z();return{isChrome:e==="Chrome"||t}},A=n=>{const{url:e,cause:t}=n;let o=e;return(t===r.ECallCause.BAD_MEDIA_DESCRIPTION||t===r.ECallCause.NOT_FOUND)&&(o=`${n.message.to.uri.user}@${n.message.to.uri.host}`),o};var $=(n=>(n.CONNECT_SERVER_FAILED="CONNECT_SERVER_FAILED",n.WRONG_USER_OR_PASSWORD="WRONG_USER_OR_PASSWORD",n.BAD_MEDIA_ERROR="BAD_MEDIA_ERROR",n.NOT_FOUND_ERROR="NOT_FOUND_ERROR",n.WS_CONNECTION_FAILED="WS_CONNECTION_FAILED",n.CONNECT_SERVER_FAILED_BY_LINK="CONNECT_SERVER_FAILED_BY_LINK",n))($||{});const Q=new Error("Unknown error"),Z=(n=Q)=>{const{cause:e,socket:t}=n;let o="CONNECT_SERVER_FAILED";switch(e){case"Forbidden":{o="WRONG_USER_OR_PASSWORD";break}case r.ECallCause.BAD_MEDIA_DESCRIPTION:{o="BAD_MEDIA_ERROR";break}case r.ECallCause.NOT_FOUND:{o="NOT_FOUND_ERROR";break}default:t!==void 0&&t._ws?.readyState===3?o="WS_CONNECTION_FAILED":A(n)!==void 0&&A(n)!==""&&(o="CONNECT_SERVER_FAILED_BY_LINK")}return o},ee=n=>{let e="";try{e=JSON.stringify(n)}catch(t){r.logger("failed to stringify message",t)}return e},ne=new Error("Unknown error"),te=(n=ne)=>{const{code:e,cause:t,message:o}=n,a=A(n),s={code:"",cause:"",message:""};return typeof o=="object"&&o!==null?s.message=ee(o):o&&(s.message=String(o)),a!==void 0&&a!==""&&(s.link=a),e!==void 0&&e!==""&&(s.code=e),t!==void 0&&t!==""&&(s.cause=t),s},re=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:$,getLinkError:A,getTypeFromError:Z,getValuesFromError:te},Symbol.toStringTag,{value:"Module"})),oe=({sessionId:n,remoteAddress:e,isMutedAudio:t,isMutedVideo:o,isRegistered:a,isPresentationCall:s})=>{const c=[],l=t?"0":"1",u=o?"0":"1";return c.push(`X-Vinteo-Mic-State: ${l}`,`X-Vinteo-MainCam-State: ${u}`),(a===!1||a===void 0)&&c.push("X-Vinteo-Purgatory-Call: yes"),n!==void 0&&n!==""&&c.push(`X-Vinteo-Session: ${n}`),s===!0&&c.push("X-Vinteo-Presentation-Call: yes"),e!==void 0&&e!==""&&c.push(`X-Vinteo-Remote: ${e}`),c},se="[@*!|]",ae="_",ce=n=>{let e=n;return e=e.replaceAll(new RegExp(se,"g"),ae),e},ie=({appName:n,appVersion:e,browserName:t,browserVersion:o})=>{const s=`${ce(n)} ${e}`;return`ChromeNew - ${t===void 0?s:`${t} ${o}, ${s}`}`},le=({isUnifiedSdpSemantic:n,appVersion:e,browserName:t,browserVersion:o,appName:a})=>n?ie({appVersion:e,browserName:t,browserVersion:o,appName:a}):"Chrome",H="purgatory",D=n=>n===H,ue=n=>e=>[...e].map(o=>async()=>n(o)),de=async({accumulatedKeys:n,sendKey:e,canRunTask:t})=>{const a=ue(e)(n);return Y.sequentPromises(a,t)},ge=n=>t=>(r.logger("onStartMainCam"),n.on("api:admin-start-main-cam",t)),Se=n=>t=>(r.logger("onStartMic"),n.on("api:admin-start-mic",t)),Ce=n=>t=>(r.logger("onStopMainCam"),n.on("api:admin-stop-main-cam",t)),me=n=>t=>(r.logger("onStopMic"),n.on("api:admin-stop-mic",t)),fe=({sipConnector:n})=>{const e=(g,C)=>({isSyncForced:S})=>{if(S===!0){g();return}C()},t=ge(n),o=Ce(n),a=Se(n),s=me(n);let c,l,u,f;const h=({onStartMainCamForced:g,onStartMainCamNotForced:C,onStopMainCamForced:S,onStopMainCamNotForced:p,onStartMicForced:E,onStartMicNotForced:b,onStopMicForced:O,onStopMicNotForced:v})=>{const T=e(g,C);c=t(T);const P=e(S,p);l=o(P);const _=e(E,b);u=a(_);const m=e(O,v);f=s(m)},d=()=>{c?.(),l?.(),u?.(),f?.()};return{start:g=>{h(g)},stop:()=>{d()}}},he=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:H,createSyncMediaState:fe,createUaParser:B,error:re,getExtraHeaders:oe,getUserAgent:le,hasPurgatory:D,prepareMediaStream:r.prepareMediaStream,sendDtmfAccumulated:de,setEncodingsToSender:r.setEncodingsToSender,setParametersToSender:r.setParametersToSender},Symbol.toStringTag,{value:"Module"})),pe=()=>B().isChrome,U=n=>{if(!x.isCanceledError(n)&&!j.hasCanceledError(n))throw n;return{isSuccessful:!1}},Re=({kind:n,readyState:e})=>n==="video"&&e==="live",k=(n,e,{onEnterPurgatory:t,onEnterConference:o})=>{D(n)?t&&t():o&&o({isSuccessProgressCall:e})},L=(n,e)=>{n(),e&&e()},V=(n,e,t)=>{throw n&&n(),e(),t},Ee=new Set(["on","once","onceRace","wait","off","sendDTMF","hangUp","declineToIncomingCall","sendChannels","checkTelephony","waitChannels","ping","connection","isConfigured","isRegistered"]);class be{on;once;onceRace;wait;off;sendDTMF;hangUp;declineToIncomingCall;sendChannels;checkTelephony;waitChannels;ping;connection;isConfigured;isRegistered;sipConnector;constructor(e){return this.sipConnector=e,new Proxy(this,{get:(t,o,a)=>{if(typeof o=="string"&&Ee.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(t,o,a);return typeof s=="function"?s.bind(t):s}})}connectToServer=async e=>{const{userAgent:t,sipWebSocketServerURL:o,sipServerUrl:a,remoteAddress:s,displayName:c,name:l,password:u,isRegisteredUser:f,isDisconnectOnFail:h}=e;return r.logger("connectToServer",e),this.sipConnector.connect({userAgent:t,sipWebSocketServerURL:o,sipServerUrl:a,remoteAddress:s,displayName:c,password:u,user:l,register:f}).then(d=>(r.logger("connectToServer then"),{ua:d,isSuccessful:!0})).catch(async d=>(r.logger("connectToServer catch: error",d),h===!0?this.sipConnector.disconnect().then(()=>U(d)).catch(()=>U(d)):U(d)))};callToServer=async e=>{const{conference:t,mediaStream:o,extraHeaders:a,iceServers:s,contentHint:c,degradationPreference:l,sendEncodings:u,offerToReceiveAudio:f,offerToReceiveVideo:h,directionVideo:d,directionAudio:N,setRemoteStreams:y,onBeforeProgressCall:g,onSuccessProgressCall:C,onEnterPurgatory:S,onEnterConference:p,onFailProgressCall:E,onFinishProgressCall:b,onEndedCall:O,onAddedTransceiver:v}=e,T=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:y}),P=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{T().catch(r.logger)}});r.logger("callToServer",e);const _=async()=>(r.logger("startCall"),this.sipConnector.call({mediaStream:o,extraHeaders:a,iceServers:s,contentHint:c,offerToReceiveAudio:f,offerToReceiveVideo:h,directionVideo:d,directionAudio:N,degradationPreference:l,onAddedTransceiver:v,sendEncodings:u,number:t,ontrack:P}));let m=!1,R;const M=(r.logger("subscribeEnterConference: onEnterConference",p),this.sipConnector.on("api:enterRoom",({room:i})=>{r.logger("enterRoom",{_room:i,isSuccessProgressCall:m}),R=i,(S??p)&&k(R,m,{onEnterPurgatory:S,onEnterConference:p})})),F=i=>(r.logger("onSuccess"),m=!0,T().catch(r.logger),C&&C({isPurgatory:D(R)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{L(M,O)}),i),w=i=>(r.logger("onFail"),V(E,M,i)),I=()=>{r.logger("onFinish"),b&&b()};return r.logger("onBeforeProgressCall"),g&&g(t),_().then(F).catch(i=>w(i)).finally(I)};disconnectFromServer=async()=>this.sipConnector.disconnect().then(()=>(r.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(e=>(r.logger("disconnectFromServer: catch",e),{isSuccessful:!1}));answerToIncomingCall=async e=>{const{mediaStream:t,extraHeaders:o,iceServers:a,contentHint:s,degradationPreference:c,sendEncodings:l,offerToReceiveAudio:u,offerToReceiveVideo:f,directionVideo:h,directionAudio:d,setRemoteStreams:N,onBeforeProgressCall:y,onSuccessProgressCall:g,onEnterPurgatory:C,onEnterConference:S,onFailProgressCall:p,onFinishProgressCall:E,onEndedCall:b,onAddedTransceiver:O}=e,v=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:N}),T=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{v().catch(r.logger)}});r.logger("answerToIncomingCall",e);const P=async()=>this.sipConnector.answerToIncomingCall({mediaStream:t,extraHeaders:o,iceServers:a,contentHint:s,offerToReceiveAudio:u,offerToReceiveVideo:f,directionVideo:h,directionAudio:d,degradationPreference:c,onAddedTransceiver:O,sendEncodings:l,ontrack:T}),_=()=>{const{remoteCallerData:i}=this.sipConnector;return i.incomingNumber};let m=!1,R;const M=(r.logger("subscribeEnterConference: onEnterConference",S),this.sipConnector.on("api:enterRoom",i=>{r.logger("enterRoom",{_room:i,isSuccessProgressCall:m}),R=i,(C??S)&&k(R,m,{onEnterPurgatory:C,onEnterConference:S})})),F=i=>(r.logger("onSuccess"),m=!0,v().catch(r.logger),g&&g({isPurgatory:D(R)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{L(M,b)}),i),w=i=>(r.logger("onFail"),V(p,M,i)),I=()=>{r.logger("onFinish"),E&&E()};if(r.logger("onBeforeProgressCall"),y){const i=_();y(i)}return P().then(F).catch(i=>w(i)).finally(I)};updatePresentation=async({mediaStream:e,isP2P:t,contentHint:o,degradationPreference:a,sendEncodings:s,onAddedTransceiver:c})=>(r.logger("updatePresentation"),this.sipConnector.updatePresentation(e,{isP2P:t,contentHint:o,degradationPreference:a,onAddedTransceiver:c,sendEncodings:s}));startPresentation=async({mediaStream:e,isP2P:t,contentHint:o,degradationPreference:a,sendEncodings:s,callLimit:c,onAddedTransceiver:l})=>(r.logger("startPresentation"),this.sipConnector.startPresentation(e,{isP2P:t,contentHint:o,callLimit:c,degradationPreference:a,onAddedTransceiver:l,sendEncodings:s}));stopShareSipConnector=async({isP2P:e=!1}={})=>(r.logger("stopShareSipConnector"),this.sipConnector.stopPresentation({isP2P:e}).catch(t=>{r.logger(t)}));sendRefusalToTurnOnMic=async()=>{r.logger("sendRefusalToTurnOnMic"),await this.sipConnector.sendRefusalToTurnOnMic().catch(e=>{r.logger("sendRefusalToTurnOnMic: error",e)})};sendRefusalToTurnOnCam=async()=>{r.logger("sendRefusalToTurnOnCam"),await this.sipConnector.sendRefusalToTurnOnCam().catch(e=>{r.logger("sendRefusalToTurnOnCam: error",e)})};sendMediaState=async({isEnabledCam:e,isEnabledMic:t})=>{r.logger("sendMediaState"),await this.sipConnector.sendMediaState({cam:e,mic:t})};replaceMediaStream=async(e,{deleteExisting:t,addMissing:o,forceRenegotiation:a,contentHint:s,degradationPreference:c,sendEncodings:l,onAddedTransceiver:u})=>(r.logger("replaceMediaStream"),this.sipConnector.replaceMediaStream(e,{deleteExisting:t,addMissing:o,forceRenegotiation:a,contentHint:s,degradationPreference:c,onAddedTransceiver:u,sendEncodings:l}));askPermissionToEnableCam=async()=>{r.logger("askPermissionToEnableCam"),await this.sipConnector.askPermissionToEnableCam()};resolveHandleReadyRemoteStreamsDebounced=({onReadyRemoteStreams:e})=>K.debounce(()=>{const t=this.sipConnector.getRemoteStreams();r.logger("remoteStreams",t),t&&e(t)},200);resolveHandleReadyRemoteStreams=({onReadyRemoteStreams:e})=>({track:t})=>{Re(t)&&e()};getRemoteStreams=()=>(r.logger("getRemoteStreams"),this.sipConnector.getRemoteStreams());onUseLicense=e=>(r.logger("onUseLicense"),this.sipConnector.on("api:useLicense",e));onMustStopPresentation=e=>(r.logger("onMustStopPresentation"),this.sipConnector.on("api:mustStopPresentation",e));onMoveToSpectators=e=>(r.logger("onMoveToSpectators"),this.sipConnector.on("api:participant:move-request-to-spectators",e));onMoveToParticipants=e=>(r.logger("onMoveToParticipants"),this.sipConnector.on("api:participant:move-request-to-participants",e));onStats=e=>(r.logger("onStats"),this.sipConnector.on("stats:collected",e));offStats=e=>{r.logger("offStats"),this.sipConnector.off("stats:collected",e)}}var W=(n=>(n.VP8="video/VP8",n.VP9="video/VP9",n.H264="video/H264",n.AV1="video/AV1",n.rtx="video/rtx",n.red="video/red",n.flexfec03="video/flexfec-03",n))(W||{});exports.ECallCause=r.ECallCause;exports.EStatsTypes=r.EStatsTypes;exports.EUseLicense=r.EUseLicense;exports.SipConnector=r.SipConnector;exports.StatsPeerConnection=r.StatsPeerConnection;exports.disableDebug=r.disableDebug;exports.enableDebug=r.enableDebug;exports.getCodecFromSender=r.getCodecFromSender;exports.hasCanceledStartPresentationError=r.hasCanceledStartPresentationError;exports.EMimeTypesVideoCodecs=W;exports.SipConnectorFacade=be;exports.hasAvailableStats=pe;exports.hasCanceledCallError=J;exports.tools=he;
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import "events-constructor";
2
- import { E as h, O as K, l as o, p as X, s as Y, a as G } from "./@SipConnector-BzMLHZRD.js";
3
- import { c as ke, b as Le, S as xe, f as Ve, d as Be, e as $e, g as He, h as We } from "./@SipConnector-BzMLHZRD.js";
2
+ import { E as h, O as K, l as o, p as X, s as Y, a as G } from "./@SipConnector-DADbRZIb.js";
3
+ import { c as ke, b as Le, S as xe, f as Ve, d as Be, e as $e, g as He, h as We } from "./@SipConnector-DADbRZIb.js";
4
4
  import { isCanceledError as B } from "@krivega/cancelable-promise";
5
5
  import { hasCanceledError as q } from "repeated-calls";
6
6
  import { debounce as z } from "ts-debounce";