sip-connector 6.24.0 → 6.24.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/doMock.js CHANGED
@@ -1,13 +1,14 @@
1
- var I = Object.defineProperty;
2
- var A = (i, e, t) => e in i ? I(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t;
3
- var n = (i, e, t) => (A(i, typeof e != "symbol" ? e + "" : e, t), t);
4
- import { j as O, R as k, U as N, S as L } from "./SipConnector-1HoiCnsj.js";
5
- import D from "@krivega/jssip/lib/NameAddrHeader";
6
- import W from "@krivega/jssip/lib/URI";
7
- import { EventEmitter as P } from "node:events";
8
- import { IncomingRequest as x } from "@krivega/jssip/lib/SIPMessage";
9
- import w from "events-constructor";
10
- class y extends x {
1
+ var A = Object.defineProperty;
2
+ var O = (i, e, t) => e in i ? A(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t;
3
+ var n = (i, e, t) => (O(i, typeof e != "symbol" ? e + "" : e, t), t);
4
+ import { j as k, R as N, U as L, S as D } from "./SipConnector-BmPmOGi6.js";
5
+ import W from "@krivega/jssip/lib/NameAddrHeader";
6
+ import P from "@krivega/jssip/lib/URI";
7
+ import { EventEmitter as x } from "node:events";
8
+ import { IncomingRequest as V } from "@krivega/jssip/lib/SIPMessage";
9
+ import E from "events-constructor";
10
+ import { URI as f } from "@krivega/jssip";
11
+ class R extends V {
11
12
  constructor(t) {
12
13
  super();
13
14
  n(this, "headers");
@@ -17,18 +18,18 @@ class y extends x {
17
18
  return this.headers.get(t) || "";
18
19
  }
19
20
  }
20
- var V = Object.defineProperty, F = (i, e, t) => e in i ? V(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t, s = (i, e, t) => (F(i, typeof e != "symbol" ? e + "" : e, t), t);
21
- const c = "ended", H = "mute", U = "isolationchange", j = "overconstrained", z = "unmute", $ = [c, H, z, U, j];
22
- class R {
21
+ var F = Object.defineProperty, U = (i, e, t) => e in i ? F(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t, s = (i, e, t) => (U(i, typeof e != "symbol" ? e + "" : e, t), t);
22
+ const m = "ended", H = "mute", j = "isolationchange", z = "overconstrained", q = "unmute", $ = [m, H, q, j, z];
23
+ class S {
23
24
  constructor(e, { id: t = "identifier", constraints: r = {} } = {}) {
24
25
  s(this, "events"), s(this, "id"), s(this, "kind"), s(this, "constraints"), s(this, "enabled"), s(this, "contentHint", ""), s(this, "readyState", "live"), s(this, "isolated", !1), s(this, "label", ""), s(this, "muted", !1), s(this, "onended", null), s(this, "onisolationchange", null), s(this, "onmute", null), s(this, "onunmute", null), s(this, "getConstraints", () => this.constraints), s(this, "stop", () => {
25
- const o = { ...new Event(c) };
26
- this.events.trigger(c, o), this.readyState = c, this.onended && this.onended(o);
26
+ const o = { ...new Event(m) };
27
+ this.events.trigger(m, o), this.readyState = m, this.onended && this.onended(o);
27
28
  }), s(this, "addEventListener", (o, a) => {
28
29
  this.events.on(o, a);
29
30
  }), s(this, "removeEventListener", (o, a) => {
30
31
  this.events.off(o, a);
31
- }), this.id = `${t}-${e}-track`, this.kind = e, this.enabled = !0, this.constraints = { ...r }, this.events = new w($);
32
+ }), this.id = `${t}-${e}-track`, this.kind = e, this.enabled = !0, this.constraints = { ...r }, this.events = new E($);
32
33
  }
33
34
  clone() {
34
35
  return { ...this };
@@ -54,8 +55,8 @@ class R {
54
55
  return this.events.trigger(t, e), !0;
55
56
  }
56
57
  }
57
- const q = (i) => new R("audio", i), B = (i) => new R("video", i);
58
- class K {
58
+ const B = (i) => new S("audio", i), K = (i) => new S("video", i);
59
+ class Y {
59
60
  // @ts-expect-error
60
61
  constructor({ originator: e = "local", eventHandlers: t }) {
61
62
  n(this, "originator");
@@ -63,7 +64,7 @@ class K {
63
64
  n(this, "_events");
64
65
  n(this, "_remote_identity");
65
66
  n(this, "_mutedOptions", { audio: !1, video: !1 });
66
- this.originator = e, this._events = new w(O), this.initEvents(t);
67
+ this.originator = e, this._events = new E(k), this.initEvents(t);
67
68
  }
68
69
  // @ts-expect-error
69
70
  get C() {
@@ -236,7 +237,7 @@ class K {
236
237
  return !0;
237
238
  }
238
239
  }
239
- class Y {
240
+ class J {
240
241
  constructor(e, t) {
241
242
  n(this, "_senders", []);
242
243
  n(this, "_receivers", []);
@@ -330,14 +331,14 @@ class Y {
330
331
  throw new Error("Method not implemented.");
331
332
  }
332
333
  }
333
- function J(i) {
334
+ function G(i) {
334
335
  const e = i.match(/[\d.]+/g);
335
336
  if (!e)
336
337
  throw new Error("wrong sip url");
337
338
  return e[0];
338
339
  }
339
- const g = 400, G = "777", X = (i) => i.getVideoTracks().length > 0;
340
- class S extends K {
340
+ const p = 400, X = "777", Q = (i) => i.getVideoTracks().length > 0;
341
+ class C extends Y {
341
342
  constructor({
342
343
  url: t = "",
343
344
  mediaStream: r,
@@ -366,7 +367,7 @@ class S extends K {
366
367
  }, 100), setTimeout(() => {
367
368
  this.trigger("confirmed");
368
369
  }, 200);
369
- }, g);
370
+ }, p);
370
371
  }));
371
372
  this.url = t, this.initPeerconnection(r);
372
373
  }
@@ -374,24 +375,24 @@ class S extends K {
374
375
  return t ? (this.createPeerconnection(t), !0) : !1;
375
376
  }
376
377
  createPeerconnection(t) {
377
- const r = q();
378
+ const r = B();
378
379
  r.id = "mainaudio1";
379
380
  const o = [r];
380
- if (X(t)) {
381
- const M = B();
382
- M.id = "mainvideo1", o.push(M);
381
+ if (Q(t)) {
382
+ const h = K();
383
+ h.id = "mainvideo1", o.push(h);
383
384
  }
384
- this._connection = new Y(void 0, o), this._addStream(t), setTimeout(() => {
385
+ this._connection = new J(void 0, o), this._addStream(t), setTimeout(() => {
385
386
  this.trigger("peerconnection", { peerconnection: this.connection });
386
- }, g);
387
+ }, p);
387
388
  }
388
389
  connect(t) {
389
- const r = J(t);
390
+ const r = G(t);
390
391
  setTimeout(() => {
391
- this.url.includes(G) ? this.trigger("failed", {
392
+ this.url.includes(X) ? this.trigger("failed", {
392
393
  originator: "remote",
393
394
  message: "IncomingResponse",
394
- cause: k
395
+ cause: N
395
396
  }) : (this.trigger("connecting"), setTimeout(() => {
396
397
  this.trigger("enterRoom", r);
397
398
  }, 100), setTimeout(() => {
@@ -399,7 +400,7 @@ class S extends K {
399
400
  }, 200), setTimeout(() => {
400
401
  this.trigger("confirmed");
401
402
  }, 300));
402
- }, g);
403
+ }, p);
403
404
  }
404
405
  terminate({ status_code: t } = {}) {
405
406
  return this.status_code = t, this.trigger("ended", { status_code: t }), this._isEnded = !1, this;
@@ -457,7 +458,7 @@ class S extends K {
457
458
  }
458
459
  /* eslint-enable no-param-reassign */
459
460
  }
460
- class Q {
461
+ class Z {
461
462
  constructor() {
462
463
  n(this, "extraHeaders");
463
464
  }
@@ -467,7 +468,7 @@ class Q {
467
468
  setExtraContactParams() {
468
469
  }
469
470
  }
470
- const d = "PASSWORD_CORRECT", T = "PASSWORD_CORRECT_2", Z = "NAME_INCORRECT", h = 400, m = class m {
471
+ const d = "PASSWORD_CORRECT", y = "PASSWORD_CORRECT_2", ee = "NAME_INCORRECT", c = 400, l = class l {
471
472
  constructor(e) {
472
473
  n(this, "_events");
473
474
  n(this, "_startedTimeout");
@@ -480,9 +481,14 @@ const d = "PASSWORD_CORRECT", T = "PASSWORD_CORRECT_2", Z = "NAME_INCORRECT", h
480
481
  // @ts-expect-error
481
482
  n(this, "call", jest.fn((e, t) => {
482
483
  const { mediaStream: r, eventHandlers: o } = t;
483
- return this.session = new S({ url: e, mediaStream: r, eventHandlers: o, originator: "local" }), this.session.connect(e), this.session;
484
+ return this.session = new C({ url: e, mediaStream: r, eventHandlers: o, originator: "local" }), this.session.connect(e), this.session;
484
485
  }));
485
- this._events = new w(N), this.configuration = e, this._registrator = new Q();
486
+ this._events = new E(L);
487
+ const [t, r] = e.uri.split(":"), [o, a] = r.split("@"), h = {
488
+ ...e,
489
+ uri: new f(t, o, a)
490
+ };
491
+ this.configuration = h, this._registrator = new Z();
486
492
  }
487
493
  static setAvailableTelephony() {
488
494
  this.isAvailableTelephony = !0;
@@ -506,7 +512,7 @@ const d = "PASSWORD_CORRECT", T = "PASSWORD_CORRECT_2", Z = "NAME_INCORRECT", h
506
512
  stop() {
507
513
  this._startedTimeout && clearTimeout(this._startedTimeout), this._stopedTimeout && clearTimeout(this._stopedTimeout), this.unregister(), this.isStarted() ? this._stopedTimeout = setTimeout(() => {
508
514
  this.trigger("disconnected", { error: new Error("stoped") });
509
- }, h) : this.trigger("disconnected", { error: new Error("stoped") });
515
+ }, c) : this.trigger("disconnected", { error: new Error("stoped") });
510
516
  }
511
517
  // @ts-expect-error
512
518
  on(e, t) {
@@ -553,13 +559,13 @@ const d = "PASSWORD_CORRECT", T = "PASSWORD_CORRECT_2", Z = "NAME_INCORRECT", h
553
559
  register() {
554
560
  this._startedTimeout && clearTimeout(this._startedTimeout);
555
561
  const { password: e, register: t, uri: r } = this.configuration;
556
- t && r.includes(Z) ? (this._isRegistered = !1, this._isConnected = !1, this._startedTimeout = setTimeout(() => {
562
+ t && r.user.includes(ee) ? (this._isRegistered = !1, this._isConnected = !1, this._startedTimeout = setTimeout(() => {
557
563
  this.trigger("registrationFailed", { response: null, cause: "Request Timeout" });
558
- }, h)) : !this._isRegistered && t && (e === d || e === T) ? (this._isRegistered = !0, this._startedTimeout = setTimeout(() => {
564
+ }, c)) : !this._isRegistered && t && (e === d || e === y) ? (this._isRegistered = !0, this._startedTimeout = setTimeout(() => {
559
565
  this.trigger("registered");
560
- }, h)) : t && e !== d && e !== T && (this._isRegistered = !1, this._isConnected = !1, this._startedTimeout = setTimeout(() => {
566
+ }, c)) : t && e !== d && e !== y && (this._isRegistered = !1, this._isConnected = !1, this._startedTimeout = setTimeout(() => {
561
567
  this.trigger("registrationFailed", { response: null, cause: "Wrong credentials" });
562
- }, h)), m.isAvailableTelephony ? (this.trigger("connected"), this._isConnected = !0) : this.stop();
568
+ }, c)), l.isAvailableTelephony ? (this.trigger("connected"), this._isConnected = !0) : this.stop();
563
569
  }
564
570
  /**
565
571
  * unregister
@@ -592,15 +598,15 @@ const d = "PASSWORD_CORRECT", T = "PASSWORD_CORRECT_2", Z = "NAME_INCORRECT", h
592
598
  this.trigger("sipEvent", e);
593
599
  }
594
600
  };
595
- n(m, "isAvailableTelephony", !0);
596
- let p = m;
597
- class ee {
601
+ n(l, "isAvailableTelephony", !0);
602
+ let _ = l;
603
+ class te {
598
604
  constructor(e) {
599
605
  n(this, "url");
600
606
  this.url = e;
601
607
  }
602
608
  }
603
- class te extends P {
609
+ class ne extends x {
604
610
  constructor(t, r) {
605
611
  super();
606
612
  n(this, "contentType");
@@ -608,102 +614,102 @@ class te extends P {
608
614
  this.contentType = t, this.body = r;
609
615
  }
610
616
  }
611
- const _ = "remote", ne = (i, e) => {
612
- const t = new y(e), r = {
613
- originator: _,
617
+ const w = "remote", re = (i, e) => {
618
+ const t = new R(e), r = {
619
+ originator: w,
614
620
  request: t,
615
- info: new te("", "")
621
+ info: new ne("", "")
616
622
  };
617
623
  i.newInfo(r);
618
- }, re = (i, e) => {
619
- const r = { request: new y(e) };
624
+ }, ie = (i, e) => {
625
+ const r = { request: new R(e) };
620
626
  i.newSipEvent(r);
621
- }, ie = (i, {
627
+ }, oe = (i, {
622
628
  incomingNumber: e = "1234",
623
629
  displayName: t,
624
630
  host: r
625
631
  }) => {
626
- const o = new S({ originator: _ }), a = new W("sip", e, r);
627
- o._remote_identity = new D(a, t), i.trigger("newRTCSession", { originator: _, session: o });
628
- }, oe = (i, e) => {
632
+ const o = new C({ originator: w }), a = new P("sip", e, r);
633
+ o._remote_identity = new W(a, t), i.trigger("newRTCSession", { originator: w, session: o });
634
+ }, se = (i, e) => {
629
635
  e ? i.trigger("failed", e) : i.trigger("failed", i);
630
- }, C = {
631
- triggerNewInfo: ne,
632
- triggerNewSipEvent: re,
633
- triggerIncomingSession: ie,
634
- triggerFailIncomingSession: oe,
635
- WebSocketInterface: ee,
636
- UA: p,
636
+ }, b = {
637
+ triggerNewInfo: re,
638
+ triggerNewSipEvent: ie,
639
+ triggerIncomingSession: oe,
640
+ triggerFailIncomingSession: se,
641
+ WebSocketInterface: te,
642
+ UA: _,
637
643
  C: {
638
644
  INVITE: "INVITE"
639
645
  }
640
- }, E = "user", l = "displayName", f = "SIP_SERVER_URL", b = "SIP_WEB_SOCKET_SERVER_URL", se = new C.WebSocketInterface(b), v = {
646
+ }, v = "user", u = "displayName", M = "SIP_SERVER_URL", I = "SIP_WEB_SOCKET_SERVER_URL", ae = new b.WebSocketInterface(I), T = {
641
647
  userAgent: "Chrome",
642
- sipServerUrl: f,
643
- sipWebSocketServerURL: b
644
- }, _e = {
645
- ...v
646
- }, ae = {
647
- ...v,
648
- user: E,
648
+ sipServerUrl: M,
649
+ sipWebSocketServerURL: I
650
+ }, Ee = {
651
+ ...T
652
+ }, de = {
653
+ ...T,
654
+ user: v,
649
655
  password: d,
650
656
  register: !0
651
- }, we = {
652
- ...ae,
653
- displayName: l
654
- }, Ee = {
655
- ...v,
656
- displayName: l,
657
+ }, fe = {
658
+ ...de,
659
+ displayName: u
660
+ }, ve = {
661
+ ...T,
662
+ displayName: u,
657
663
  register: !1
658
- }, u = {
664
+ }, g = {
659
665
  session_timers: !1,
660
- sockets: [se],
666
+ sockets: [ae],
661
667
  user_agent: "Chrome",
662
668
  sdp_semantics: "plan-b",
663
669
  register_expires: 300,
664
670
  connection_recovery_max_interval: 6,
665
671
  connection_recovery_min_interval: 2
666
- }, fe = {
667
- ...u,
672
+ }, Me = {
673
+ ...g,
668
674
  password: d,
669
- uri: `sip:${E}@${f}`,
675
+ uri: new f("sip", v, M),
670
676
  display_name: "",
671
677
  register: !0
672
- }, ve = {
673
- ...u,
678
+ }, Te = {
679
+ ...g,
674
680
  password: d,
675
- uri: `sip:${E}@${f}`,
676
- display_name: l,
681
+ uri: new f("sip", v, M),
682
+ display_name: u,
677
683
  register: !0
678
- }, Me = {
679
- ...u,
680
- display_name: l,
684
+ }, ye = {
685
+ ...g,
686
+ display_name: u,
681
687
  register: !1
682
- }, Te = {
683
- ...u,
688
+ }, Re = {
689
+ ...g,
684
690
  display_name: "",
685
691
  register: !1
686
- }, de = "10.10.10.10", ye = [`X-Vinteo-Remote: ${de}`], Re = () => new L({
687
- JsSIP: C
692
+ }, he = "10.10.10.10", Se = [`X-Vinteo-Remote: ${he}`], Ce = () => new D({
693
+ JsSIP: b
688
694
  });
689
695
  export {
690
- G as FAILED_CONFERENCE_NUMBER,
691
- Z as NAME_INCORRECT,
696
+ X as FAILED_CONFERENCE_NUMBER,
697
+ ee as NAME_INCORRECT,
692
698
  d as PASSWORD_CORRECT,
693
- T as PASSWORD_CORRECT_2,
694
- f as SIP_SERVER_URL,
695
- b as SIP_WEB_SOCKET_SERVER_URL,
696
- ae as dataForConnectionWithAuthorization,
697
- we as dataForConnectionWithAuthorizationWithDisplayName,
698
- Ee as dataForConnectionWithoutAuthorization,
699
- _e as dataForConnectionWithoutAuthorizationWithoutDisplayName,
700
- Re as default,
701
- l as displayName,
702
- ye as extraHeadersRemoteAddress,
703
- de as remoteAddress,
704
- fe as uaConfigurationWithAuthorization,
705
- ve as uaConfigurationWithAuthorizationWithDisplayName,
706
- Me as uaConfigurationWithoutAuthorization,
707
- Te as uaConfigurationWithoutAuthorizationWithoutDisplayName,
708
- E as user
699
+ y as PASSWORD_CORRECT_2,
700
+ M as SIP_SERVER_URL,
701
+ I as SIP_WEB_SOCKET_SERVER_URL,
702
+ de as dataForConnectionWithAuthorization,
703
+ fe as dataForConnectionWithAuthorizationWithDisplayName,
704
+ ve as dataForConnectionWithoutAuthorization,
705
+ Ee as dataForConnectionWithoutAuthorizationWithoutDisplayName,
706
+ Ce as default,
707
+ u as displayName,
708
+ Se as extraHeadersRemoteAddress,
709
+ he as remoteAddress,
710
+ Me as uaConfigurationWithAuthorization,
711
+ Te as uaConfigurationWithAuthorizationWithDisplayName,
712
+ ye as uaConfigurationWithoutAuthorization,
713
+ Re as uaConfigurationWithoutAuthorizationWithoutDisplayName,
714
+ v as user
709
715
  };
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("./SipConnector-eRr2JbY9.cjs"),q=require("ts-debounce"),Y=require("@krivega/cancelable-promise"),z=require("debug"),x="purgatory",P=e=>e===x,B=e=>()=>(s.logger("getRemoteStreams"),e.getRemoteStreams()),J=({kind:e,readyState:n})=>e==="video"&&n==="live",V=e=>({track:n})=>{J(n)&&e()},D=({getRemoteStreams:e,setRemoteStreams:n})=>q.debounce(()=>{const t=e();s.logger("remoteStreams",t),t&&n(t)},200),Q=e=>async t=>{const{mediaStream:r,extraHeaders:o,iceServers:c,degradationPreference:a,setRemoteStreams:u,onBeforeProgressCall:d,onSuccessProgressCall:C,onEnterPurgatory:f,onEnterConference:m,onFailProgressCall:y,onFinishProgressCall:E,onEndedCall:M}=t,R=D({setRemoteStreams:u,getRemoteStreams:B(e)}),T=V(R);s.logger("answerIncomingCall",t);const O=async()=>e.answerToIncomingCall({mediaStream:r,extraHeaders:o,iceServers:c,degradationPreference:a,ontrack:T}),A=()=>{const{remoteCallerData:S}=e;return S.incomingNumber};let _=!1,i;const l=(s.logger("subscribeEnterConference: onEnterConference",m),f??m?e.onSession("enterRoom",S=>{s.logger("enterRoom",{_room:S,isSuccessProgressCall:_}),i=S,P(i)?f&&f():m&&m({isSuccessProgressCall:_})}):()=>{}),h=S=>(s.logger("onSuccess"),_=!0,R(),C&&C({isPurgatory:P(i)}),e.onceRaceSession(["ended","failed"],()=>{l(),M&&M()}),S),b=S=>{throw s.logger("onFail"),y&&y(),l(),S},N=()=>{s.logger("onFinish"),E&&E()};if(s.logger("onBeforeProgressCall"),d){const S=A();d(S)}return O().then(h).catch(b).finally(N)},Z=e=>async t=>{const{conference:r,mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:u,setRemoteStreams:d,onBeforeProgressCall:C,onSuccessProgressCall:f,onEnterPurgatory:m,onEnterConference:y,onFailProgressCall:E,onFinishProgressCall:M,onEndedCall:R}=t,T=D({setRemoteStreams:d,getRemoteStreams:B(e)}),O=V(T);s.logger("callToServer",t);const A=async()=>(s.logger("startCall"),e.call({mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:u,number:r,ontrack:O}));let _=!1,i;const l=(s.logger("subscribeEnterConference: onEnterConference",y),m??y?e.onSession("enterRoom",S=>{s.logger("enterRoom",{_room:S,isSuccessProgressCall:_}),i=S,P(i)?m&&m():y&&y({isSuccessProgressCall:_})}):()=>{}),h=S=>(s.logger("onSuccess"),_=!0,T(),f&&f({isPurgatory:P(i)}),e.onceRaceSession(["ended","failed"],()=>{l(),R&&R()}),S),b=S=>{throw s.logger("onFail"),E&&E(),l(),S},N=()=>{s.logger("onFinish"),M&&M()};return s.logger("onBeforeProgressCall"),C&&C(r),A().then(h).catch(b).finally(N)},p=e=>{if(!Y.isCanceledError(e))throw e;return{isSuccessful:!1}},ee=e=>async t=>{const{userAgent:r,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:u,name:d,password:C,isRegisteredUser:f,sdpSemantics:m,isDisconnectOnFail:y}=t;return s.logger("connectToServer",t),e.connect({userAgent:r,sdpSemantics:m,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:u,password:C,user:d,register:f}).then(E=>(s.logger("connectToServer then"),{ua:E,isSuccessful:!0})).catch(async E=>(s.logger("connectToServer catch: error",E),y===!0?e.disconnect().then(()=>p(E)).catch(()=>p(E)):p(E)))},ne=e=>async()=>(s.logger("disconnectFromServer"),e.disconnect().then(()=>(s.logger("disconnectFromServer: then"),!1)).catch(n=>(s.logger("disconnectFromServer: catch",n),!1))),k=e=>{const{url:n,cause:t}=e;let r=n;return(t===s.BAD_MEDIA_DESCRIPTION||t===s.NOT_FOUND)&&(r=`${e.message.to.uri.user}@${e.message.to.uri.host}`),r};var $=(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))($||{});const te=(e=new Error)=>{var o;const{cause:n,socket:t}=e;let r="CONNECT_SERVER_FAILED";switch(n){case"Forbidden":{r="WRONG_USER_OR_PASSWORD";break}case s.BAD_MEDIA_DESCRIPTION:{r="BAD_MEDIA_ERROR";break}case s.NOT_FOUND:{r="NOT_FOUND_ERROR";break}default:t&&((o=t==null?void 0:t._ws)==null?void 0:o.readyState)===3?r="WS_CONNECTION_FAILED":k(e)&&(r="CONNECT_SERVER_FAILED_BY_LINK")}return r},re=(e=new Error)=>{const{code:n,cause:t,message:r}=e,o=k(e),c={};return r&&(c.message=r),o&&(c.link=o),n&&(c.code=n),t&&(c.cause=t),c},se=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:$,getLinkError:k,getTypeFromError:te,getValuesFromError:re},Symbol.toStringTag,{value:"Module"})),oe=({sessionId:e,remoteAddress:n,isMutedAudio:t,isMutedVideo:r,isRegistered:o,isPresentationCall:c})=>{const a=[],u=t?"0":"1",d=r?"0":"1";return a.push(`X-Vinteo-Mic-State: ${u}`,`X-Vinteo-MainCam-State: ${d}`),o||a.push("X-Vinteo-Purgatory-Call: yes"),e&&a.push(`X-Vinteo-Session: ${e}`),c&&a.push("X-Vinteo-Presentation-Call: yes"),n&&a.push(`X-Vinteo-Remote: ${n}`),a},ce=({appName:e,appVersion:n,browserName:t,browserVersion:r})=>{const o=`${e} ${n}`;return`ChromeNew - ${t?`${t} ${r}, ${o}`:o}`},ae=({isUnifiedSdpSemantic:e,appVersion:n,browserName:t,browserVersion:r,appName:o})=>e?ce({appVersion:n,browserName:t,browserVersion:r,appName:o}):"Chrome",ie=e=>async()=>{if(e.isCallActive)return s.logger("askPermissionToEnableCam"),e.askPermissionToEnableCam()},ue=e=>t=>(s.logger("onMustStopPresentation"),e.onSession("mustStopPresentation",t)),le=e=>t=>(s.logger("onUseLicense"),e.onSession("useLicense",t)),ge=e=>async({isEnabledCam:t,isEnabledMic:r})=>{if(e.isCallActive)return s.logger("sendMediaState"),e.sendMediaState({cam:t,mic:r})},Se=e=>async()=>{if(e.isCallActive)return s.logger("sendRefusalToTurnOnCam"),e.sendRefusalToTurnOnCam().catch(t=>{s.logger("sendRefusalToTurnOnCam: error",t)})},de=e=>async()=>{if(e.isCallActive)return s.logger("sendRefusalToTurnOnMic"),e.sendRefusalToTurnOnMic().catch(t=>{s.logger("sendRefusalToTurnOnMic: error",t)})},me=1e6,fe=({maxBitrate:e=me,sipConnector:n})=>async({mediaStream:r,isP2P:o=!1})=>(s.logger("startPresentation"),n.startPresentation(r,{isP2P:o,maxBitrate:e})),Ee=({sipConnector:e})=>async({isP2P:t=!1}={})=>(s.logger("stopShareSipConnector"),e.stopPresentation({isP2P:t}).catch(s.logger)),Ce=1e6,Re=({sipConnector:e,maxBitrate:n=Ce})=>async({mediaStream:r,isP2P:o=!1})=>(s.logger("updatePresentation"),e.updatePresentation(r,{isP2P:o,maxBitrate:n})),he="ERROR_NOT_RUNNING",Me=e=>{const n=new Error("Promise was not running");return n.basePromise=e,n.id=he,n.name="Not running",n},ye=async(e,n)=>e.reduce(async(t,r)=>t.then(async({success:o,errors:c,results:a})=>(!n||n(r)?r():Promise.reject(Me(r))).then(u=>({errors:c,success:[...o,u],results:[...a,u],isSuccessful:!0,isError:!1})).catch(u=>({success:o,errors:[...c,u],results:[...a,u],isSuccessful:!1,isError:!0}))),Promise.resolve({success:[],errors:[],results:[],isSuccessful:!1,isError:!1})),Te=e=>n=>[...n].map(r=>async()=>e(r)),_e=async({accumulatedKeys:e,sendKey:n,canRunTask:t})=>{const o=Te(n)(e);return ye(o,t)},be=e=>t=>(s.logger("onStartMainCam"),e.onSession("admin-start-main-cam",t)),ve=e=>t=>(s.logger("onStartMic"),e.onSession("admin-start-mic",t)),Ne=e=>t=>(s.logger("onStopMainCam"),e.onSession("admin-stop-main-cam",t)),Oe=e=>t=>(s.logger("onStopMic"),e.onSession("admin-stop-mic",t)),Ae=({sipConnector:e})=>{const n=(M,R)=>({isSyncForced:T=!1})=>{if(T){M();return}R()},t=be(e),r=Ne(e),o=ve(e),c=Oe(e);let a=()=>{},u=()=>{},d=()=>{},C=()=>{};const f=({onStartMainCamForced:M,onStartMainCamNotForced:R,onStopMainCamForced:T,onStopMainCamNotForced:O,onStartMicForced:A,onStartMicNotForced:_,onStopMicForced:i,onStopMicNotForced:g})=>{const l=n(M,R);a=t(l);const h=n(T,O);u=r(h);const b=n(A,_);d=o(b);const N=n(i,g);C=c(N)},m=()=>{a(),u(),d(),C()};return{start:M=>{f(M)},stop:()=>{m()}}},Pe=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:x,createSyncMediaState:Ae,error:se,getExtraHeaders:oe,getUserAgent:ae,hasPurgatory:P,resolveAnswerIncomingCall:Q,resolveAskPermissionToEnableCam:ie,resolveCallToServer:Z,resolveConnectToServer:ee,resolveDisconnectFromServer:ne,resolveGetRemoteStreams:B,resolveOnMustStopPresentation:ue,resolveOnUseLicense:le,resolveSendMediaState:ge,resolveSendRefusalToTurnOnCam:Se,resolveSendRefusalToTurnOnMic:de,resolveStartPresentation:fe,resolveStopShareSipConnector:Ee,resolveUpdatePresentation:Re,resolveUpdateRemoteStreams:D,sendDTMFAccumulated:_e},Symbol.toStringTag,{value:"Module"})),pe=e=>[...e.keys()].map(n=>e.get(n)),Ie=(e,n)=>pe(e).find(t=>t.type===n),j=async e=>e.getStats().then(n=>{const t=Ie(n,"codec");return t==null?void 0:t.mimeType}),we=e=>e.find(n=>{var t;return((t=n==null?void 0:n.track)==null?void 0:t.kind)==="video"}),G=(e,n)=>e!==void 0&&n!==void 0&&e.toLowerCase().includes(n.toLowerCase()),Be="ERROR_NOT_RUNNING",De=e=>{const n=new Error("Promise was not running");return n.basePromise=e,n.id=Be,n.name="Not running",n},ke=async(e,n)=>e.reduce(async(t,r)=>t.then(async({success:o,errors:c,results:a})=>(!n||n(r)?r():Promise.reject(De(r))).then(u=>({errors:c,success:[...o,u],results:[...a,u],isSuccessful:!0,isError:!1})).catch(u=>({success:o,errors:[...c,u],results:[...a,u],isSuccessful:!1,isError:!0}))),Promise.resolve({success:[],errors:[],results:[],isSuccessful:!1,isError:!1})),Fe=new Error("Stack is empty"),I=e=>e[e.length-1],Ue=new Error("Promise is not actual"),Le=new Error("stackPromises only works with functions that returns a Promise"),xe=({noRejectIsNotActual:e=!1,noRunIsNotActual:n=!1}={})=>{const t=[],r=[],o=({task:i,index:g})=>{r.push({task:i,index:g})},c=(i,{task:g,index:l})=>{const h=r.find(({task:b,index:N})=>g===b&&l===N);if(!h)throw new Error("Task not found");if(h.promise)throw new Error("Task is already running");h.promise=i},a=({task:i,index:g})=>{const l=r.find(({task:h,index:b})=>i===h&&g===b);if(l)return l.promise},u=({task:i})=>{const g=I(r);return(g==null?void 0:g.task)===i},d=({task:i,index:g})=>(o({task:i,index:g}),async()=>{let l=a({task:i,index:g});const h=u({task:i});return!l&&n&&!h?Promise.resolve():(l||(l=i({isActual:h}),c(l,{task:i,index:g})),l)}),C=({resolve:i,reject:g})=>({results:l,isSuccessful:h})=>{const b=l.length,N=t.length;if(b===N){const S=I(l);if(h){i(S);return}g(S);return}if(e){const S=I(l);i(S);return}g(Ue)};let f=!1;const m=()=>{f=!0},y=()=>{f=!1},E=()=>f,M=async()=>(m(),ke(t,E)),R=async()=>{if(t.length===0)throw Fe;return new Promise((i,g)=>{const l=C({resolve:i,reject:g});M().then(l).catch(l)})},T=i=>{if(typeof i!="function")throw Le;const g=t.length;return t.push(d({task:i,index:g})),R},O=async i=>(T(i),R()),A=()=>{t.length=0,r.length=0},_=()=>{y(),A()};return R.add=T,R.run=O,R.stop=_,R},Ve=1e6,v=e=>e*Ve,X=v(.06),$e=v(4),je=e=>e<=64?X:e<=128?v(.12):e<=256?v(.25):e<=384?v(.32):e<=426?v(.38):e<=640?v(.5):e<=848?v(.7):e<=1280?v(1):e<=1920?v(2):$e,Ge="av1",Xe=e=>G(e,Ge),Ke=.6,K=(e,n)=>Xe(n)?e*Ke:e,We=e=>K(X,e),W=(e,n)=>{const t=je(e);return K(t,n)},H=xe(),He=async()=>H().catch(e=>{s.logger("videoSendingBalancer: error",e)}),qe=async e=>(H.add(e),He()),F=async({sender:e,scaleResolutionDownBy:n,maxBitrate:t,onSetParameters:r})=>qe(async()=>s.setEncodingsToSender(e,{scaleResolutionDownBy:n,maxBitrate:t},r)),Ye=async({sender:e,codec:n},t)=>{const o=We(n);return F({sender:e,maxBitrate:o,onSetParameters:t,scaleResolutionDownBy:200})},w=async({sender:e,track:n,codec:t},r)=>{const a=n.getSettings().width,u=W(a,t);return F({sender:e,maxBitrate:u,onSetParameters:r,scaleResolutionDownBy:1})},ze=async({sender:e,track:n,resolution:t,codec:r},o)=>{const c=n.getSettings(),a=c.width,u=c.height,[d,C]=t.split("x"),f=a/Number(d),m=u/Number(C),E=Math.max(f,m,1),M=W(Number(d),r);return F({sender:e,maxBitrate:M,onSetParameters:o,scaleResolutionDownBy:E})},Je=async({mainCam:e,resolutionMainCam:n,sender:t,track:r,codec:o},c)=>{switch(e){case s.EEventsMainCAM.PAUSE_MAIN_CAM:return Ye({sender:t,codec:o},c);case s.EEventsMainCAM.RESUME_MAIN_CAM:return w({sender:t,track:r,codec:o},c);case s.EEventsMainCAM.MAX_MAIN_CAM_RESOLUTION:return n!==void 0?ze({sender:t,track:r,codec:o,resolution:n},c):w({sender:t,track:r,codec:o},c);default:return w({sender:t,track:r,codec:o},c)}},U={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},L=async({mainCam:e,resolutionMainCam:n,connection:t,onSetParameters:r,ignoreForCodec:o})=>{const c=t.getSenders(),a=we(c);if(!(a!=null&&a.track))return U;const u=await j(a);return G(u,o)?U:Je({mainCam:e,resolutionMainCam:n,sender:a,codec:u,track:a.track},r)},Qe=(e,{ignoreForCodec:n,onSetParameters:t}={})=>{const r=async()=>{const{connection:d}=e;if(!d)throw new Error("connection is not exist");return L({connection:d,onSetParameters:t,ignoreForCodec:n})};let o=r;const c=async d=>(o=async()=>{const{mainCam:C,resolutionMainCam:f}=d,{connection:m}=e;if(!m)throw new Error("connection is not exist");return L({mainCam:C,resolutionMainCam:f,connection:m,onSetParameters:t,ignoreForCodec:n})},o());return{subscribe:()=>{e.onSession("main-cam-control",c)},unsubscribe:()=>{e.offSession("main-cam-control",c)},balanceByTrack:r,resetMainCamControl(){o=r},async reBalance(){return o()}}};exports.EEventsMainCAM=s.EEventsMainCAM;exports.EEventsMic=s.EEventsMic;exports.EEventsSyncMediaState=s.EEventsSyncMediaState;exports.EUseLicense=s.EUseLicense;exports.causes=s.causes;exports.constants=s.constants;exports.default=s.SipConnector;exports.disableDebug=s.disableDebug;exports.enableDebug=s.enableDebug;exports.eventNames=s.eventNames;exports.hasCanceledCallError=s.hasCanceledCallError;exports.debug=z;exports.getCodecFromSender=j;exports.resolveVideoSendingBalancer=Qe;exports.tools=Pe;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("./SipConnector-DMjzYyq_.cjs"),q=require("ts-debounce"),Y=require("@krivega/cancelable-promise"),z=require("debug"),x="purgatory",P=e=>e===x,B=e=>()=>(s.logger("getRemoteStreams"),e.getRemoteStreams()),J=({kind:e,readyState:n})=>e==="video"&&n==="live",V=e=>({track:n})=>{J(n)&&e()},D=({getRemoteStreams:e,setRemoteStreams:n})=>q.debounce(()=>{const t=e();s.logger("remoteStreams",t),t&&n(t)},200),Q=e=>async t=>{const{mediaStream:r,extraHeaders:o,iceServers:c,degradationPreference:a,setRemoteStreams:u,onBeforeProgressCall:d,onSuccessProgressCall:C,onEnterPurgatory:f,onEnterConference:m,onFailProgressCall:y,onFinishProgressCall:E,onEndedCall:M}=t,R=D({setRemoteStreams:u,getRemoteStreams:B(e)}),T=V(R);s.logger("answerIncomingCall",t);const O=async()=>e.answerToIncomingCall({mediaStream:r,extraHeaders:o,iceServers:c,degradationPreference:a,ontrack:T}),A=()=>{const{remoteCallerData:l}=e;return l.incomingNumber};let _=!1,i;const g=(s.logger("subscribeEnterConference: onEnterConference",m),f??m?e.onSession("enterRoom",l=>{s.logger("enterRoom",{_room:l,isSuccessProgressCall:_}),i=l,P(i)?f&&f():m&&m({isSuccessProgressCall:_})}):()=>{}),h=l=>(s.logger("onSuccess"),_=!0,R(),C&&C({isPurgatory:P(i)}),e.onceRaceSession(["ended","failed"],()=>{g(),M&&M()}),l),b=l=>{throw s.logger("onFail"),y&&y(),g(),l},N=()=>{s.logger("onFinish"),E&&E()};if(s.logger("onBeforeProgressCall"),d){const l=A();d(l)}return O().then(h).catch(l=>b(l)).finally(N)},Z=e=>async t=>{const{conference:r,mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:u,setRemoteStreams:d,onBeforeProgressCall:C,onSuccessProgressCall:f,onEnterPurgatory:m,onEnterConference:y,onFailProgressCall:E,onFinishProgressCall:M,onEndedCall:R}=t,T=D({setRemoteStreams:d,getRemoteStreams:B(e)}),O=V(T);s.logger("callToServer",t);const A=async()=>(s.logger("startCall"),e.call({mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:u,number:r,ontrack:O}));let _=!1,i;const g=(s.logger("subscribeEnterConference: onEnterConference",y),m??y?e.onSession("enterRoom",l=>{s.logger("enterRoom",{_room:l,isSuccessProgressCall:_}),i=l,P(i)?m&&m():y&&y({isSuccessProgressCall:_})}):()=>{}),h=l=>(s.logger("onSuccess"),_=!0,T(),f&&f({isPurgatory:P(i)}),e.onceRaceSession(["ended","failed"],()=>{g(),R&&R()}),l),b=l=>{throw s.logger("onFail"),E&&E(),g(),l},N=()=>{s.logger("onFinish"),M&&M()};return s.logger("onBeforeProgressCall"),C&&C(r),A().then(h).catch(l=>b(l)).finally(N)},p=e=>{if(!Y.isCanceledError(e))throw e;return{isSuccessful:!1}},ee=e=>async t=>{const{userAgent:r,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:u,name:d,password:C,isRegisteredUser:f,sdpSemantics:m,isDisconnectOnFail:y}=t;return s.logger("connectToServer",t),e.connect({userAgent:r,sdpSemantics:m,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:u,password:C,user:d,register:f}).then(E=>(s.logger("connectToServer then"),{ua:E,isSuccessful:!0})).catch(async E=>(s.logger("connectToServer catch: error",E),y===!0?e.disconnect().then(()=>p(E)).catch(()=>p(E)):p(E)))},ne=e=>async()=>(s.logger("disconnectFromServer"),e.disconnect().then(()=>(s.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(n=>(s.logger("disconnectFromServer: catch",n),{isSuccessful:!1}))),k=e=>{const{url:n,cause:t}=e;let r=n;return(t===s.BAD_MEDIA_DESCRIPTION||t===s.NOT_FOUND)&&(r=`${e.message.to.uri.user}@${e.message.to.uri.host}`),r};var $=(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))($||{});const te=(e=new Error)=>{var o;const{cause:n,socket:t}=e;let r="CONNECT_SERVER_FAILED";switch(n){case"Forbidden":{r="WRONG_USER_OR_PASSWORD";break}case s.BAD_MEDIA_DESCRIPTION:{r="BAD_MEDIA_ERROR";break}case s.NOT_FOUND:{r="NOT_FOUND_ERROR";break}default:t&&((o=t==null?void 0:t._ws)==null?void 0:o.readyState)===3?r="WS_CONNECTION_FAILED":k(e)&&(r="CONNECT_SERVER_FAILED_BY_LINK")}return r},re=(e=new Error)=>{const{code:n,cause:t,message:r}=e,o=k(e),c={};return r&&(c.message=r),o&&(c.link=o),n&&(c.code=n),t&&(c.cause=t),c},se=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:$,getLinkError:k,getTypeFromError:te,getValuesFromError:re},Symbol.toStringTag,{value:"Module"})),oe=({sessionId:e,remoteAddress:n,isMutedAudio:t,isMutedVideo:r,isRegistered:o,isPresentationCall:c})=>{const a=[],u=t?"0":"1",d=r?"0":"1";return a.push(`X-Vinteo-Mic-State: ${u}`,`X-Vinteo-MainCam-State: ${d}`),o||a.push("X-Vinteo-Purgatory-Call: yes"),e&&a.push(`X-Vinteo-Session: ${e}`),c&&a.push("X-Vinteo-Presentation-Call: yes"),n&&a.push(`X-Vinteo-Remote: ${n}`),a},ce=({appName:e,appVersion:n,browserName:t,browserVersion:r})=>{const o=`${e} ${n}`;return`ChromeNew - ${t?`${t} ${r}, ${o}`:o}`},ae=({isUnifiedSdpSemantic:e,appVersion:n,browserName:t,browserVersion:r,appName:o})=>e?ce({appVersion:n,browserName:t,browserVersion:r,appName:o}):"Chrome",ie=e=>async()=>{if(e.isCallActive)return s.logger("askPermissionToEnableCam"),e.askPermissionToEnableCam()},ue=e=>t=>(s.logger("onMustStopPresentation"),e.onSession("mustStopPresentation",t)),le=e=>t=>(s.logger("onUseLicense"),e.onSession("useLicense",t)),ge=e=>async({isEnabledCam:t,isEnabledMic:r})=>{if(e.isCallActive)return s.logger("sendMediaState"),e.sendMediaState({cam:t,mic:r})},Se=e=>async()=>{if(e.isCallActive)return s.logger("sendRefusalToTurnOnCam"),e.sendRefusalToTurnOnCam().catch(t=>{s.logger("sendRefusalToTurnOnCam: error",t)})},de=e=>async()=>{if(e.isCallActive)return s.logger("sendRefusalToTurnOnMic"),e.sendRefusalToTurnOnMic().catch(t=>{s.logger("sendRefusalToTurnOnMic: error",t)})},me=1e6,fe=({maxBitrate:e=me,sipConnector:n})=>async({mediaStream:r,isP2P:o=!1})=>(s.logger("startPresentation"),n.startPresentation(r,{isP2P:o,maxBitrate:e})),Ee=({sipConnector:e})=>async({isP2P:t=!1}={})=>(s.logger("stopShareSipConnector"),e.stopPresentation({isP2P:t}).catch(r=>{s.logger(r)})),Ce=1e6,Re=({sipConnector:e,maxBitrate:n=Ce})=>async({mediaStream:r,isP2P:o=!1})=>(s.logger("updatePresentation"),e.updatePresentation(r,{isP2P:o,maxBitrate:n})),he="ERROR_NOT_RUNNING",Me=e=>{const n=new Error("Promise was not running");return n.basePromise=e,n.id=he,n.name="Not running",n},ye=async(e,n)=>e.reduce(async(t,r)=>t.then(async({success:o,errors:c,results:a})=>(!n||n(r)?r():Promise.reject(Me(r))).then(u=>({errors:c,success:[...o,u],results:[...a,u],isSuccessful:!0,isError:!1})).catch(u=>({success:o,errors:[...c,u],results:[...a,u],isSuccessful:!1,isError:!0}))),Promise.resolve({success:[],errors:[],results:[],isSuccessful:!1,isError:!1})),Te=e=>n=>[...n].map(r=>async()=>e(r)),_e=async({accumulatedKeys:e,sendKey:n,canRunTask:t})=>{const o=Te(n)(e);return ye(o,t)},be=e=>t=>(s.logger("onStartMainCam"),e.onSession("admin-start-main-cam",t)),ve=e=>t=>(s.logger("onStartMic"),e.onSession("admin-start-mic",t)),Ne=e=>t=>(s.logger("onStopMainCam"),e.onSession("admin-stop-main-cam",t)),Oe=e=>t=>(s.logger("onStopMic"),e.onSession("admin-stop-mic",t)),Ae=({sipConnector:e})=>{const n=(M,R)=>({isSyncForced:T=!1})=>{if(T){M();return}R()},t=be(e),r=Ne(e),o=ve(e),c=Oe(e);let a=()=>{},u=()=>{},d=()=>{},C=()=>{};const f=({onStartMainCamForced:M,onStartMainCamNotForced:R,onStopMainCamForced:T,onStopMainCamNotForced:O,onStartMicForced:A,onStartMicNotForced:_,onStopMicForced:i,onStopMicNotForced:S})=>{const g=n(M,R);a=t(g);const h=n(T,O);u=r(h);const b=n(A,_);d=o(b);const N=n(i,S);C=c(N)},m=()=>{a(),u(),d(),C()};return{start:M=>{f(M)},stop:()=>{m()}}},Pe=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:x,createSyncMediaState:Ae,error:se,getExtraHeaders:oe,getUserAgent:ae,hasPurgatory:P,resolveAnswerIncomingCall:Q,resolveAskPermissionToEnableCam:ie,resolveCallToServer:Z,resolveConnectToServer:ee,resolveDisconnectFromServer:ne,resolveGetRemoteStreams:B,resolveOnMustStopPresentation:ue,resolveOnUseLicense:le,resolveSendMediaState:ge,resolveSendRefusalToTurnOnCam:Se,resolveSendRefusalToTurnOnMic:de,resolveStartPresentation:fe,resolveStopShareSipConnector:Ee,resolveUpdatePresentation:Re,resolveUpdateRemoteStreams:D,sendDTMFAccumulated:_e},Symbol.toStringTag,{value:"Module"})),pe=e=>[...e.keys()].map(n=>e.get(n)),Ie=(e,n)=>pe(e).find(t=>t.type===n),j=async e=>e.getStats().then(n=>{const t=Ie(n,"codec");return t==null?void 0:t.mimeType}),we=e=>e.find(n=>{var t;return((t=n==null?void 0:n.track)==null?void 0:t.kind)==="video"}),G=(e,n)=>e!==void 0&&n!==void 0&&e.toLowerCase().includes(n.toLowerCase()),Be="ERROR_NOT_RUNNING",De=e=>{const n=new Error("Promise was not running");return n.basePromise=e,n.id=Be,n.name="Not running",n},ke=async(e,n)=>e.reduce(async(t,r)=>t.then(async({success:o,errors:c,results:a})=>(!n||n(r)?r():Promise.reject(De(r))).then(u=>({errors:c,success:[...o,u],results:[...a,u],isSuccessful:!0,isError:!1})).catch(u=>({success:o,errors:[...c,u],results:[...a,u],isSuccessful:!1,isError:!0}))),Promise.resolve({success:[],errors:[],results:[],isSuccessful:!1,isError:!1})),Fe=new Error("Stack is empty"),I=e=>e[e.length-1],Ue=new Error("Promise is not actual"),Le=new Error("stackPromises only works with functions that returns a Promise"),xe=({noRejectIsNotActual:e=!1,noRunIsNotActual:n=!1}={})=>{const t=[],r=[],o=({task:i,index:S})=>{r.push({task:i,index:S})},c=(i,{task:S,index:g})=>{const h=r.find(({task:b,index:N})=>S===b&&g===N);if(!h)throw new Error("Task not found");if(h.promise)throw new Error("Task is already running");h.promise=i},a=({task:i,index:S})=>{const g=r.find(({task:h,index:b})=>i===h&&S===b);if(g)return g.promise},u=({task:i})=>{const S=I(r);return(S==null?void 0:S.task)===i},d=({task:i,index:S})=>(o({task:i,index:S}),async()=>{let g=a({task:i,index:S});const h=u({task:i});return!g&&n&&!h?Promise.resolve():(g||(g=i({isActual:h}),c(g,{task:i,index:S})),g)}),C=({resolve:i,reject:S})=>({results:g,isSuccessful:h})=>{const b=g.length,N=t.length;if(b===N){const l=I(g);if(h){i(l);return}S(l);return}if(e){const l=I(g);i(l);return}S(Ue)};let f=!1;const m=()=>{f=!0},y=()=>{f=!1},E=()=>f,M=async()=>(m(),ke(t,E)),R=async()=>{if(t.length===0)throw Fe;return new Promise((i,S)=>{const g=C({resolve:i,reject:S});M().then(g).catch(g)})},T=i=>{if(typeof i!="function")throw Le;const S=t.length;return t.push(d({task:i,index:S})),R},O=async i=>(T(i),R()),A=()=>{t.length=0,r.length=0},_=()=>{y(),A()};return R.add=T,R.run=O,R.stop=_,R},Ve=1e6,v=e=>e*Ve,X=v(.06),$e=v(4),je=e=>e<=64?X:e<=128?v(.12):e<=256?v(.25):e<=384?v(.32):e<=426?v(.38):e<=640?v(.5):e<=848?v(.7):e<=1280?v(1):e<=1920?v(2):$e,Ge="av1",Xe=e=>G(e,Ge),Ke=.6,K=(e,n)=>Xe(n)?e*Ke:e,We=e=>K(X,e),W=(e,n)=>{const t=je(e);return K(t,n)},H=xe(),He=async()=>H().catch(e=>{s.logger("videoSendingBalancer: error",e)}),qe=async e=>(H.add(e),He()),F=async({sender:e,scaleResolutionDownBy:n,maxBitrate:t,onSetParameters:r})=>qe(async()=>s.setEncodingsToSender(e,{scaleResolutionDownBy:n,maxBitrate:t},r)),Ye=async({sender:e,codec:n},t)=>{const o=We(n);return F({sender:e,maxBitrate:o,onSetParameters:t,scaleResolutionDownBy:200})},w=async({sender:e,track:n,codec:t},r)=>{const a=n.getSettings().width,u=W(a,t);return F({sender:e,maxBitrate:u,onSetParameters:r,scaleResolutionDownBy:1})},ze=async({sender:e,track:n,resolution:t,codec:r},o)=>{const c=n.getSettings(),a=c.width,u=c.height,[d,C]=t.split("x"),f=a/Number(d),m=u/Number(C),E=Math.max(f,m,1),M=W(Number(d),r);return F({sender:e,maxBitrate:M,onSetParameters:o,scaleResolutionDownBy:E})},Je=async({mainCam:e,resolutionMainCam:n,sender:t,track:r,codec:o},c)=>{switch(e){case s.EEventsMainCAM.PAUSE_MAIN_CAM:return Ye({sender:t,codec:o},c);case s.EEventsMainCAM.RESUME_MAIN_CAM:return w({sender:t,track:r,codec:o},c);case s.EEventsMainCAM.MAX_MAIN_CAM_RESOLUTION:return n!==void 0?ze({sender:t,track:r,codec:o,resolution:n},c):w({sender:t,track:r,codec:o},c);default:return w({sender:t,track:r,codec:o},c)}},U={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},L=async({mainCam:e,resolutionMainCam:n,connection:t,onSetParameters:r,ignoreForCodec:o})=>{const c=t.getSenders(),a=we(c);if(!(a!=null&&a.track))return U;const u=await j(a);return G(u,o)?U:Je({mainCam:e,resolutionMainCam:n,sender:a,codec:u,track:a.track},r)},Qe=(e,{ignoreForCodec:n,onSetParameters:t}={})=>{const r=async()=>{const{connection:d}=e;if(!d)throw new Error("connection is not exist");return L({connection:d,onSetParameters:t,ignoreForCodec:n})};let o=r;const c=async d=>(o=async()=>{const{mainCam:C,resolutionMainCam:f}=d,{connection:m}=e;if(!m)throw new Error("connection is not exist");return L({mainCam:C,resolutionMainCam:f,connection:m,onSetParameters:t,ignoreForCodec:n})},o());return{subscribe:()=>{e.onSession("main-cam-control",c)},unsubscribe:()=>{e.offSession("main-cam-control",c)},balanceByTrack:r,resetMainCamControl(){o=r},async reBalance(){return o()}}};exports.EEventsMainCAM=s.EEventsMainCAM;exports.EEventsMic=s.EEventsMic;exports.EEventsSyncMediaState=s.EEventsSyncMediaState;exports.EUseLicense=s.EUseLicense;exports.causes=s.causes;exports.constants=s.constants;exports.default=s.SipConnector;exports.disableDebug=s.disableDebug;exports.enableDebug=s.enableDebug;exports.eventNames=s.eventNames;exports.hasCanceledCallError=s.hasCanceledCallError;exports.debug=z;exports.getCodecFromSender=j;exports.resolveVideoSendingBalancer=Qe;exports.tools=Pe;