sip-connector 14.1.1 → 14.1.2-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dist/SipConnector-CZwqeStw.cjs +1 -0
  2. package/dist/SipConnector-DfaRIKWv.js +1345 -0
  3. package/dist/SipConnector.d.ts +315 -0
  4. package/dist/{src/SipConnectorFacade → SipConnectorFacade}/SipConnectorFacade.d.ts +1 -1
  5. package/dist/doMock.cjs +1 -1
  6. package/dist/doMock.js +302 -298
  7. package/dist/index.cjs +1 -1
  8. package/dist/index.js +533 -522
  9. package/dist/utils/utils.d.ts +4 -0
  10. package/package.json +6 -5
  11. package/dist/SipConnector-DRjfFGAZ.js +0 -1339
  12. package/dist/SipConnector-EXAO9Z-2.cjs +0 -1
  13. package/dist/src/SipConnector.d.ts +0 -235
  14. /package/dist/{src/SipConnectorFacade → SipConnectorFacade}/index.d.ts +0 -0
  15. /package/dist/{src/__fixtures__ → __fixtures__}/BaseSession.mock.d.ts +0 -0
  16. /package/dist/{src/__fixtures__ → __fixtures__}/RTCPeerConnectionMock.d.ts +0 -0
  17. /package/dist/{src/__fixtures__ → __fixtures__}/RTCRtpSenderMock.d.ts +0 -0
  18. /package/dist/{src/__fixtures__ → __fixtures__}/RTCSessionMock.d.ts +0 -0
  19. /package/dist/{src/__fixtures__ → __fixtures__}/Registrator.mock.d.ts +0 -0
  20. /package/dist/{src/__fixtures__ → __fixtures__}/Request.mock.d.ts +0 -0
  21. /package/dist/{src/__fixtures__ → __fixtures__}/UA.mock.d.ts +0 -0
  22. /package/dist/{src/__fixtures__ → __fixtures__}/WebSocketInterface.mock.d.ts +0 -0
  23. /package/dist/{src/__fixtures__ → __fixtures__}/accountNotify.d.ts +0 -0
  24. /package/dist/{src/__fixtures__ → __fixtures__}/channels.d.ts +0 -0
  25. /package/dist/{src/__fixtures__ → __fixtures__}/channelsNotify.d.ts +0 -0
  26. /package/dist/{src/__fixtures__ → __fixtures__}/conferenceParticipantTokenIssuedNotify.d.ts +0 -0
  27. /package/dist/{src/__fixtures__ → __fixtures__}/delayPromise.d.ts +0 -0
  28. /package/dist/{src/__fixtures__ → __fixtures__}/enterRoom.d.ts +0 -0
  29. /package/dist/{src/__fixtures__ → __fixtures__}/index.d.ts +0 -0
  30. /package/dist/{src/__fixtures__ → __fixtures__}/jssip.mock.d.ts +0 -0
  31. /package/dist/{src/__fixtures__ → __fixtures__}/mediaState.d.ts +0 -0
  32. /package/dist/{src/__fixtures__ → __fixtures__}/participantMoveRequests.d.ts +0 -0
  33. /package/dist/{src/__fixtures__ → __fixtures__}/participantNotify.d.ts +0 -0
  34. /package/dist/{src/__fixtures__ → __fixtures__}/remoteCallerData.d.ts +0 -0
  35. /package/dist/{src/__fixtures__ → __fixtures__}/utils.d.ts +0 -0
  36. /package/dist/{src/__fixtures__ → __fixtures__}/webcastNotify.d.ts +0 -0
  37. /package/dist/{src/causes.d.ts → causes.d.ts} +0 -0
  38. /package/dist/{src/constants.d.ts → constants.d.ts} +0 -0
  39. /package/dist/{src/doMock.d.ts → doMock.d.ts} +0 -0
  40. /package/dist/{src/eventNames.d.ts → eventNames.d.ts} +0 -0
  41. /package/dist/{src/getExtraHeadersRemoteAddress.d.ts → getExtraHeadersRemoteAddress.d.ts} +0 -0
  42. /package/dist/{src/headers.d.ts → headers.d.ts} +0 -0
  43. /package/dist/{src/index.d.ts → index.d.ts} +0 -0
  44. /package/dist/{src/logger.d.ts → logger.d.ts} +0 -0
  45. /package/dist/{src/setParametersToSender → setParametersToSender}/configureDegradationPreference.d.ts +0 -0
  46. /package/dist/{src/setParametersToSender → setParametersToSender}/configureEmptyEncodings.d.ts +0 -0
  47. /package/dist/{src/setParametersToSender → setParametersToSender}/configureEncodings.d.ts +0 -0
  48. /package/dist/{src/setParametersToSender → setParametersToSender}/configureMaxBitrate.d.ts +0 -0
  49. /package/dist/{src/setParametersToSender → setParametersToSender}/configureScaleResolutionDownBy.d.ts +0 -0
  50. /package/dist/{src/setParametersToSender → setParametersToSender}/hasChangedRTCRtpSendParameters.d.ts +0 -0
  51. /package/dist/{src/setParametersToSender → setParametersToSender}/index.d.ts +0 -0
  52. /package/dist/{src/setParametersToSender → setParametersToSender}/resolveHasNeedToUpdateItemEncoding.d.ts +0 -0
  53. /package/dist/{src/setParametersToSender → setParametersToSender}/setParametersToSender.d.ts +0 -0
  54. /package/dist/{src/tools → tools}/__fixtures__/call.d.ts +0 -0
  55. /package/dist/{src/tools → tools}/__fixtures__/connectToServer.d.ts +0 -0
  56. /package/dist/{src/tools → tools}/__fixtures__/hasValidUri.d.ts +0 -0
  57. /package/dist/{src/tools → tools}/__fixtures__/permissions.d.ts +0 -0
  58. /package/dist/{src/tools → tools}/__fixtures__/processRequest.d.ts +0 -0
  59. /package/dist/{src/tools → tools}/__tests-utils__/parseObject.d.ts +0 -0
  60. /package/dist/{src/tools → tools}/__tests-utils__/resolveParseArray.d.ts +0 -0
  61. /package/dist/{src/tools → tools}/error/getLinkError.d.ts +0 -0
  62. /package/dist/{src/tools → tools}/error/getTypeFromError.d.ts +0 -0
  63. /package/dist/{src/tools → tools}/error/getValuesFromError.d.ts +0 -0
  64. /package/dist/{src/tools → tools}/error/index.d.ts +0 -0
  65. /package/dist/{src/tools → tools}/error/stringifyMessage.d.ts +0 -0
  66. /package/dist/{src/tools → tools}/generateSimulcastEncodings.d.ts +0 -0
  67. /package/dist/{src/tools → tools}/getExtraHeaders.d.ts +0 -0
  68. /package/dist/{src/tools → tools}/getUserAgent.d.ts +0 -0
  69. /package/dist/{src/tools → tools}/hasPurgatory.d.ts +0 -0
  70. /package/dist/{src/tools → tools}/index.d.ts +0 -0
  71. /package/dist/{src/tools → tools}/prepareMediaStream.d.ts +0 -0
  72. /package/dist/{src/tools → tools}/resolveUpdateTransceiver.d.ts +0 -0
  73. /package/dist/{src/tools → tools}/sendDTMFAccumulated.d.ts +0 -0
  74. /package/dist/{src/tools → tools}/setVideoTrackContentHints.d.ts +0 -0
  75. /package/dist/{src/tools → tools}/syncMediaState/index.d.ts +0 -0
  76. /package/dist/{src/tools → tools}/syncMediaState/resolveOnStartMainCam.d.ts +0 -0
  77. /package/dist/{src/tools → tools}/syncMediaState/resolveOnStartMic.d.ts +0 -0
  78. /package/dist/{src/tools → tools}/syncMediaState/resolveOnStopMainCam.d.ts +0 -0
  79. /package/dist/{src/tools → tools}/syncMediaState/resolveOnStopMic.d.ts +0 -0
  80. /package/dist/{src/types.d.ts → types.d.ts} +0 -0
  81. /package/dist/{src/utils → utils}/errors.d.ts +0 -0
  82. /package/dist/{src/utils → utils}/findSenderByStream.d.ts +0 -0
  83. /package/dist/{src/utils → utils}/findVideoSender.d.ts +0 -0
  84. /package/dist/{src/utils → utils}/findVideoTrack.d.ts +0 -0
  85. /package/dist/{src/utils → utils}/getCodecFromSender.d.ts +0 -0
  86. /package/dist/{src/utils → utils}/replaceForbiddenSymbolsWithUnderscore.d.ts +0 -0
  87. /package/dist/{src/videoSendingBalancer → videoSendingBalancer}/balance.d.ts +0 -0
  88. /package/dist/{src/videoSendingBalancer → videoSendingBalancer}/getMaxBitrateByWidth.d.ts +0 -0
  89. /package/dist/{src/videoSendingBalancer → videoSendingBalancer}/getMaxBitrateByWidthAndCodec.d.ts +0 -0
  90. /package/dist/{src/videoSendingBalancer → videoSendingBalancer}/hasAv1Codec.d.ts +0 -0
  91. /package/dist/{src/videoSendingBalancer → videoSendingBalancer}/hasIncludesString.d.ts +0 -0
  92. /package/dist/{src/videoSendingBalancer → videoSendingBalancer}/index.d.ts +0 -0
  93. /package/dist/{src/videoSendingBalancer → videoSendingBalancer}/processSender.d.ts +0 -0
  94. /package/dist/{src/videoSendingBalancer → videoSendingBalancer}/scaleBitrate.d.ts +0 -0
  95. /package/dist/{src/videoSendingBalancer → videoSendingBalancer}/scaleBitrateByCodec.d.ts +0 -0
  96. /package/dist/{src/videoSendingBalancer → videoSendingBalancer}/scaleResolutionAndBitrate.d.ts +0 -0
  97. /package/dist/{src/videoSendingBalancer → videoSendingBalancer}/setEncodingsToSender.d.ts +0 -0
@@ -0,0 +1 @@
1
+ "use strict";var Dt=Object.defineProperty;var Mt=(s,e,t)=>e in s?Dt(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var r=(s,e,t)=>Mt(s,typeof e!="symbol"?e+"":e,t);const N=require("@krivega/cancelable-promise"),we=require("events-constructor"),X=require("repeated-calls"),Q=require("debug"),pt="Connection Error",ke="Request Timeout",vt="SIP Failure Code",yt="Internal Error",bt="Busy",z="Rejected",wt="Redirected",Ut="Unavailable",Be="Not Found",Lt="Address Incomplete",Ht="Incompatible SDP",Wt="Missing SDP",qt="Authentication Error",Fe="Terminated",kt="WebRTC Error",xe="Canceled",Bt="No Answer",Ft="Expires",xt="No ACK",Vt="Dialog Error",Yt="User Denied Media Access",Ve="Bad Media Description",$t="RTP Timeout",Gt=Object.freeze(Object.defineProperty({__proto__:null,ADDRESS_INCOMPLETE:Lt,AUTHENTICATION_ERROR:qt,BAD_MEDIA_DESCRIPTION:Ve,BUSY:bt,BYE:Fe,CANCELED:xe,CONNECTION_ERROR:pt,DIALOG_ERROR:Vt,EXPIRES:Ft,INCOMPATIBLE_SDP:Ht,INTERNAL_ERROR:yt,MISSING_SDP:Wt,NOT_FOUND:Be,NO_ACK:xt,NO_ANSWER:Bt,REDIRECTED:wt,REJECTED:z,REQUEST_TIMEOUT:ke,RTP_TIMEOUT:$t,SIP_FAILURE_CODE:vt,UNAVAILABLE:Ut,USER_DENIED_MEDIA_ACCESS:Yt,WEBRTC_ERROR:kt},Symbol.toStringTag,{value:"Module"})),j="incomingCall",K="declinedIncomingCall",Z="failedIncomingCall",ee="terminatedIncomingCall",x="connecting",m="connected",C="disconnected",w="newRTCSession",D="registered",te="unregistered",M="registrationFailed",Ye="newMessage",ne="sipEvent",se="availableSecondRemoteStream",ie="notAvailableSecondRemoteStream",re="mustStopPresentation",U="shareState",oe="enterRoom",ae="useLicense",ce="peerconnection:confirmed",Ee="peerconnection:ontrack",L="channels",_e="channels:notify",le="ended:fromserver",de="main-cam-control",he="admin-stop-main-cam",Se="admin-start-main-cam",Te="admin-stop-mic",ue="admin-start-mic",H="admin-force-sync-media-state",Ce="participant:added-to-list-moderators",Ne="participant:removed-from-list-moderators",ge="participant:move-request-to-stream",V="participant:move-request-to-spectators",Y="participant:move-request-to-participants",Ae="participation:accepting-word-request",Re="participation:cancelling-word-request",Ie="webcast:started",fe="webcast:stopped",Pe="account:changed",Oe="account:deleted",me="conference:participant-token-issued",p="ended",$e="sending",Ge="reinvite",Je="replaces",Xe="refer",Qe="progress",ze="accepted",W="confirmed",q="peerconnection",I="failed",je="muted",Ke="unmuted",De="newDTMF",Me="newInfo",Ze="hold",et="unhold",tt="update",nt="sdp",st="icecandidate",it="getusermediafailed",rt="peerconnection:createofferfailed",ot="peerconnection:createanswerfailed",at="peerconnection:setlocaldescriptionfailed",ct="peerconnection:setremotedescriptionfailed",Et="presentation:start",_t="presentation:started",lt="presentation:end",pe="presentation:ended",k="presentation:failed",dt="SPECTATOR",ht="PARTICIPANT",St=1e6;var R=(s=>(s.LOCAL="local",s.REMOTE="remote",s.SYSTEM="system",s))(R||{});const Jt=Object.freeze(Object.defineProperty({__proto__:null,ACCEPTED:ze,ACCOUNT_CHANGED:Pe,ACCOUNT_DELETED:Oe,ADMIN_FORCE_SYNC_MEDIA_STATE:H,ADMIN_START_MAIN_CAM:Se,ADMIN_START_MIC:ue,ADMIN_STOP_MAIN_CAM:he,ADMIN_STOP_MIC:Te,AVAILABLE_SECOND_REMOTE_STREAM_EVENT:se,CHANNELS:L,CHANNELS_NOTIFY:_e,CONFERENCE_PARTICIPANT_TOKEN_ISSUED:me,CONFIRMED:W,CONNECTED:m,CONNECTING:x,DECLINED_INCOMING_CALL:K,DISCONNECTED:C,ENDED:p,ENDED_FROM_SERVER:le,ENTER_ROOM:oe,FAILED:I,FAILED_INCOMING_CALL:Z,GET_USER_MEDIA_FAILED:it,HOLD:Ze,ICE_CANDIDATE:st,INCOMING_CALL:j,MAIN_CAM_CONTROL:de,MUST_STOP_PRESENTATION_EVENT:re,MUTED:je,NEW_DTMF:De,NEW_INFO:Me,NEW_MESSAGE:Ye,NEW_RTC_SESSION:w,NOT_AVAILABLE_SECOND_REMOTE_STREAM_EVENT:ie,ONE_MEGABIT_IN_BITS:St,Originator:R,PARTICIPANT:ht,PARTICIPANT_ADDED_TO_LIST_MODERATORS:Ce,PARTICIPANT_MOVE_REQUEST_TO_PARTICIPANTS:Y,PARTICIPANT_MOVE_REQUEST_TO_SPECTATORS:V,PARTICIPANT_MOVE_REQUEST_TO_STREAM:ge,PARTICIPANT_REMOVED_FROM_LIST_MODERATORS:Ne,PARTICIPATION_ACCEPTING_WORD_REQUEST:Ae,PARTICIPATION_CANCELLING_WORD_REQUEST:Re,PEER_CONNECTION:q,PEER_CONNECTION_CONFIRMED:ce,PEER_CONNECTION_CREATE_ANSWER_FAILED:ot,PEER_CONNECTION_CREATE_OFFER_FAILED:rt,PEER_CONNECTION_ONTRACK:Ee,PEER_CONNECTION_SET_LOCAL_DESCRIPTION_FAILED:at,PEER_CONNECTION_SET_REMOTE_DESCRIPTION_FAILED:ct,PRESENTATION_END:lt,PRESENTATION_ENDED:pe,PRESENTATION_FAILED:k,PRESENTATION_START:Et,PRESENTATION_STARTED:_t,PROGRESS:Qe,REFER:Xe,REGISTERED:D,REGISTRATION_FAILED:M,REINVITE:Ge,REPLACES:Je,SDP:nt,SENDING:$e,SHARE_STATE:U,SIP_EVENT:ne,SPECTATOR:dt,TERMINATED_INCOMING_CALL:ee,UNHOLD:et,UNMUTED:Ke,UNREGISTERED:te,UPDATE:tt,USE_LICENSE:ae,WEBCAST_STARTED:Ie,WEBCAST_STOPPED:fe},Symbol.toStringTag,{value:"Module"})),Tt=[j,K,ee,Z,Ae,Re,ge,_e,me,Pe,Oe,Ie,fe,Ce,Ne],$=[x,m,C,w,D,te,M,Ye,ne],ut=[se,ie,re,U,oe,ae,ce,Ee,L,le,de,Se,he,Te,ue,H,V,Y],ve=[p,x,$e,Ge,Je,Xe,Qe,ze,W,q,I,je,Ke,De,Me,Ze,et,tt,nt,st,it,rt,ot,at,ct,Et,_t,lt,pe,k],Ct=[...$,...Tt],ye=[...ve,...ut],Xt=Object.freeze(Object.defineProperty({__proto__:null,SESSION_EVENT_NAMES:ye,SESSION_JSSIP_EVENT_NAMES:ve,SESSION_SYNTHETICS_EVENT_NAMES:ut,UA_EVENT_NAMES:Ct,UA_JSSIP_EVENT_NAMES:$,UA_SYNTHETICS_EVENT_NAMES:Tt},Symbol.toStringTag,{value:"Module"})),be="sip-connector",b=Q(be),Qt=()=>{Q.enable(be)},zt=()=>{Q.enable(`-${be}`)},jt=(s,e)=>(s.degradationPreference=e.degradationPreference,s),Kt=(s,e)=>{s.encodings??(s.encodings=[]);for(let t=s.encodings.length;t<e;t+=1)s.encodings.push({});return s},Nt=s=>(e,t)=>t!==void 0&&e!==t||t===void 0&&e!==s,Zt=Nt(),en=(s,e)=>{if(Zt(s,e))return s},tn=(s,e)=>{const t=s.maxBitrate,n=en(e,t);return n!==void 0&&(s.maxBitrate=n),s},gt=1,nn=Nt(gt),sn=(s,e)=>{const t=s===void 0?void 0:Math.max(s,gt);if(t!==void 0&&nn(t,e))return t},rn=(s,e)=>{const t=s.scaleResolutionDownBy,n=sn(e,t);return n!==void 0&&(s.scaleResolutionDownBy=n),s},on=(s,e)=>{var n;const t=((n=e.encodings)==null?void 0:n.length)??0;return Kt(s,t),s.encodings.forEach((i,o)=>{const a=((e==null?void 0:e.encodings)??[])[o],c=a==null?void 0:a.maxBitrate,E=a==null?void 0:a.scaleResolutionDownBy;tn(i,c),rn(i,E)}),s},an=(s,e)=>{var t,n,i,o,a,c,E,_,h,S,l,T;if(((t=s.codecs)==null?void 0:t.length)!==((n=e.codecs)==null?void 0:n.length))return!0;for(let d=0;d<(((i=s.codecs)==null?void 0:i.length)??0);d++)if(JSON.stringify(s.codecs[d])!==JSON.stringify(e.codecs[d]))return!0;if(((o=s.headerExtensions)==null?void 0:o.length)!==((a=e.headerExtensions)==null?void 0:a.length))return!0;for(let d=0;d<(((c=s.headerExtensions)==null?void 0:c.length)??0);d++)if(JSON.stringify(s.headerExtensions[d])!==JSON.stringify(e.headerExtensions[d]))return!0;if(((E=s.encodings)==null?void 0:E.length)!==((_=e.encodings)==null?void 0:_.length))return!0;for(let d=0;d<(s.encodings.length??0);d++)if(JSON.stringify(s.encodings[d])!==JSON.stringify(e.encodings[d]))return!0;return((h=s.rtcp)==null?void 0:h.cname)!==((S=e.rtcp)==null?void 0:S.cname)||((l=s.rtcp)==null?void 0:l.reducedSize)!==((T=e.rtcp)==null?void 0:T.reducedSize)||s.degradationPreference!==e.degradationPreference},At=async(s,e)=>{const t=s.getParameters(),n=JSON.parse(JSON.stringify(t));on(t,e),jt(t,e);const i=an(n,t);return i&&await s.setParameters(t),{parameters:t,isChanged:i}};var f=(s=>(s.PAUSE_MAIN_CAM="PAUSEMAINCAM",s.RESUME_MAIN_CAM="RESUMEMAINCAM",s.MAX_MAIN_CAM_RESOLUTION="MAXMAINCAMRESOLUTION",s.ADMIN_STOP_MAIN_CAM="ADMINSTOPMAINCAM",s.ADMIN_START_MAIN_CAM="ADMINSTARTMAINCAM",s))(f||{}),B=(s=>(s.ADMIN_STOP_MIC="ADMINSTOPMIC",s.ADMIN_START_MIC="ADMINSTARTMIC",s))(B||{}),F=(s=>(s.ADMIN_SYNC_FORCED="1",s.ADMIN_SYNC_NOT_FORCED="0",s))(F||{}),Rt=(s=>(s.AUDIO="AUDIO",s.VIDEO="VIDEO",s.AUDIOPLUSPRESENTATION="AUDIOPLUSPRESENTATION",s))(Rt||{}),It=(s=>(s.VP8="video/VP8",s.VP9="video/VP9",s.H264="video/H264",s.AV1="video/AV1",s.rtx="video/rtx",s.red="video/red",s.flexfec03="video/flexfec-03",s))(It||{});const ft=async(s,e,t)=>{const{isChanged:n,parameters:i}=await At(s,{encodings:[{scaleResolutionDownBy:e.scaleResolutionDownBy,maxBitrate:e.maxBitrate}]});return n&&t&&t(i),{isChanged:n,parameters:i}},cn=s=>{const e=[];return s!==void 0&&s!==""&&e.push(`X-Vinteo-Remote: ${s}`),e},En="content-type",_n="x-webrtc-enter-room",v="application/vinteo.webrtc.sharedesktop",ln="application/vinteo.webrtc.roomname",dn="application/vinteo.webrtc.channels",hn="application/vinteo.webrtc.mediastate",Sn="application/vinteo.webrtc.refusal",Ue="application/vinteo.webrtc.maincam",Tn="application/vinteo.webrtc.mic",un="application/vinteo.webrtc.uselic",Cn="X-WEBRTC-USE-LICENSE",Nn="X-WEBRTC-PARTICIPANT-NAME",Le="X-WEBRTC-INPUT-CHANNELS",He="X-WEBRTC-OUTPUT-CHANNELS",gn="X-WEBRTC-MAINCAM",An="X-WEBRTC-MIC",We="X-WEBRTC-SYNC",Rn="X-WEBRTC-MAINCAM-RESOLUTION",In="X-WEBRTC-MEDIA-STATE",fn="X-Vinteo-Media-Type",Pn="X-Vinteo-MainCam-State",On="X-Vinteo-Mic-State",mn="application/vinteo.webrtc.partstate",Dn="X-WEBRTC-PARTSTATE",Mn="application/vinteo.webrtc.notify",pn="X-VINTEO-NOTIFY",P="x-webrtc-share-state",vn=`${P}: LETMESTARTPRESENTATION`,yn=`${P}: STOPPRESENTATION`,Pt="YOUCANRECEIVECONTENT",Ot="CONTENTEND",mt="YOUMUSTSTOPSENDCONTENT",bn=`${P}: ${mt}`,wn=`${P}: ${Pt}`,Un=`${P}: ${Ot}`,Ln="X-WEBRTC-REQUEST-ENABLE-MEDIA-DEVICE",Hn=`${Ln}: LETMESTARTMAINCAM`,Wn=(s,e)=>{s.getVideoTracks().forEach(n=>{"contentHint"in n&&n.contentHint!==e&&(n.contentHint=e)})},y=(s,{directionVideo:e,directionAudio:t,contentHint:n}={})=>{if(!s||e==="recvonly"&&t==="recvonly")return;const i=t==="recvonly"?[]:s.getAudioTracks(),o=e==="recvonly"?[]:s.getVideoTracks(),a=[...i,...o],c=new MediaStream(a);return c.getTracks=()=>[...c.getAudioTracks(),...c.getVideoTracks()],n&&n!=="none"&&Wn(c,n),c},qn="Error decline with 603",kn=1006,Bn=s=>typeof s=="object"&&s!==null&&"code"in s&&s.code===kn,Fn=s=>s.message===qn;function xn(s){return e=>`sip:${e}@${s}`}const Vn=(s,e)=>()=>Math.floor(Math.random()*(e-s))+s,qe=s=>s.trim().replaceAll(" ","_"),Yn=Vn(1e5,99999999),$n=s=>s.some(t=>{const{kind:n}=t;return n==="video"}),Gn=(s,e)=>s.find(t=>t.track!==null&&e.getTracks().includes(t.track)),Jn=async(s,e,t)=>{const n=Gn(s,e);if(n)return ft(n,{maxBitrate:t})},Xn=486,Qn=487,zn=3,jn=1,Kn=s=>s instanceof Object&&("originator"in s||"cause"in s),Zn=s=>{if(N.isCanceledError(s))return!0;if(!Kn(s))return!1;const{originator:e,cause:t}=s;return typeof t=="string"?t===ke||t===z||e===R.LOCAL&&(t===xe||t===Fe):!1},es=s=>X.hasCanceledError(s),A="SipConnector",ts="channels",ns="WebcastStarted",ss="WebcastStopped",is="accountChanged",rs="accountDeleted",os="addedToListModerators",as="removedFromListModerators",cs="ParticipationRequestAccepted",Es="ParticipationRequestRejected",_s="ParticipantMovedToWebcast",ls="ConferenceParticipantTokenIssued";class ds{constructor({JsSIP:e}){r(this,"_isRegisterConfig",!1);r(this,"_connectionConfiguration",{});r(this,"_remoteStreams",{});r(this,"JsSIP");r(this,"_sessionEvents");r(this,"_uaEvents");r(this,"_cancelableConnect");r(this,"_cancelableConnectWithRepeatedCalls");r(this,"_cancelableSendPresentationWithRepeatedCalls");r(this,"_cancelableInitUa");r(this,"_cancelableDisconnect");r(this,"_cancelableSet");r(this,"_cancelableCall");r(this,"_cancelableAnswer");r(this,"_cancelableSendDTMF");r(this,"getSipServerUrl",e=>e);r(this,"promisePendingStartPresentation");r(this,"promisePendingStopPresentation");r(this,"ua");r(this,"rtcSession");r(this,"incomingRTCSession");r(this,"_streamPresentationCurrent");r(this,"socket");r(this,"connect",async(e,t)=>(this._cancelRequests(),this._connectWithDuplicatedCalls(e,t)));r(this,"initUa",async e=>this._cancelableInitUa.request(e));r(this,"set",async e=>this._cancelableSet.request(e));r(this,"call",async e=>this._cancelableCall.request(e));r(this,"disconnect",async()=>(this._cancelRequests(),this._disconnectWithoutCancelRequests()));r(this,"answerToIncomingCall",async e=>this._cancelableAnswer.request(e));r(this,"sendDTMF",async e=>this._cancelableSendDTMF.request(e));r(this,"hangUp",async()=>(this._cancelRequests(),this._hangUpWithoutCancelRequests()));r(this,"tryRegister",async()=>{if(!this.isRegisterConfig)throw new Error("Config is not registered");this._uaEvents.trigger(x,void 0);try{await this.unregister()}catch(e){b("tryRegister",e)}return this.register()});r(this,"declineToIncomingCall",async({statusCode:e=Qn}={})=>new Promise((t,n)=>{if(!this.isAvailableIncomingCall){n(new Error("no incomingRTCSession"));return}const i=this.incomingRTCSession,o=this.remoteCallerData;this._cancelableCall.cancelRequest(),this._cancelableAnswer.cancelRequest(),this.removeIncomingSession(),this._uaEvents.trigger(K,o),t(i.terminate({status_code:e}))}));r(this,"busyIncomingCall",async()=>this.declineToIncomingCall({statusCode:Xn}));r(this,"removeIncomingSession",()=>{delete this.incomingRTCSession});r(this,"_connectWithDuplicatedCalls",async(e,{callLimit:t=zn}={})=>{const n=async()=>this._cancelableConnect.request(e),i=o=>{var _;const c=!!((_=this.ua)!=null&&_.isConnected())&&this.hasEqualConnectionConfiguration(e),E=!!o&&!Bn(o);return c||E};return this._cancelableConnectWithRepeatedCalls=X.repeatedCallsAsync({targetFunction:n,isComplete:i,callLimit:t,isRejectAsValid:!0,isCheckBeforeCall:!1,onAfterCancel:()=>{this._cancelableConnect.cancelRequest()}}),this._cancelableConnectWithRepeatedCalls.then(o=>{if(o instanceof this.JsSIP.UA)return o;throw o})});r(this,"handleNewRTCSession",({originator:e,session:t})=>{if(e===R.REMOTE){this.incomingRTCSession=t;const n=this.remoteCallerData;t.on(I,i=>{this.removeIncomingSession(),i.originator===R.LOCAL?this._uaEvents.trigger(ee,n):this._uaEvents.trigger(Z,n)}),this._uaEvents.trigger(j,n)}});r(this,"_connect",async e=>this.initUa(e).then(async()=>this._start()));r(this,"_initUa",async({user:e,password:t,sipServerUrl:n,sipWebSocketServerURL:i,remoteAddress:o,sessionTimers:a,registerExpires:c,connectionRecoveryMinInterval:E,connectionRecoveryMaxInterval:_,userAgent:h,displayName:S="",register:l=!1,extraHeaders:T=[]})=>{if(!n)throw new Error("sipServerUrl is required");if(!i)throw new Error("sipWebSocketServerURL is required");if(l&&!e)throw new Error("user is required for authorized connection");if(l&&!t)throw new Error("password is required for authorized connection");this._connectionConfiguration={sipServerUrl:n,displayName:S,register:l,user:e,password:t};const{configuration:d,helpers:u}=this.createUaConfiguration({user:e,sipServerUrl:n,sipWebSocketServerURL:i,password:t,displayName:S,register:l,sessionTimers:a,registerExpires:c,connectionRecoveryMinInterval:E,connectionRecoveryMaxInterval:_,userAgent:h});return this.getSipServerUrl=u.getSipServerUrl,this.socket=u.socket,this.ua&&await this._disconnectWithoutCancelRequests(),this._isRegisterConfig=!!l,this.ua=this._createUa({...d,remoteAddress:o,extraHeaders:T}),this._uaEvents.eachTriggers((g,G)=>{const O=$.find(J=>J===G);O&&this.ua&&this.ua.on(O,g)}),this.ua});r(this,"_createUa",({remoteAddress:e,extraHeaders:t=[],...n})=>{const i=new this.JsSIP.UA(n),a=[...e?cn(e):[],...t];return a.length>0&&i.registrator().setExtraHeaders(a),i});r(this,"_start",async()=>new Promise((e,t)=>{const{ua:n}=this;if(!n){t(new Error("this.ua is not initialized"));return}const i=()=>{c(),e(n)},o=E=>{c(),t(E)},a=()=>{this.isRegisterConfig?(this.on(D,i),this.on(M,o)):this.on(m,i),this.on(C,o)},c=()=>{this.off(D,i),this.off(M,o),this.off(m,i),this.off(C,o)};a(),this.on(w,this.handleNewRTCSession),n.start()}));r(this,"_set",async({displayName:e,password:t})=>new Promise((n,i)=>{const{ua:o}=this;if(!o){i(new Error("this.ua is not initialized"));return}let a=!1,c=!1;e!==void 0&&e!==this._connectionConfiguration.displayName&&(a=o.set("display_name",qe(e)),this._connectionConfiguration.displayName=e),t!==void 0&&t!==this._connectionConfiguration.password&&(c=o.set("password",t),this._connectionConfiguration.password=t);const E=a||c;c&&this.isRegisterConfig?this.register().then(()=>{n(E)}).catch(_=>{i(_)}):E?n(E):i(new Error("nothing changed"))}));r(this,"_disconnectWithoutCancelRequests",async()=>this._cancelableDisconnect.request());r(this,"_disconnect",async()=>{this.off(w,this.handleNewRTCSession);const e=new Promise(t=>{this.once(C,()=>{delete this.ua,t()})});return this.ua?(await this._hangUpWithoutCancelRequests(),this.ua?this.ua.stop():this._uaEvents.trigger(C,void 0)):this._uaEvents.trigger(C,void 0),e});r(this,"_call",async({number:e,mediaStream:t,extraHeaders:n=[],ontrack:i,iceServers:o,directionVideo:a,directionAudio:c,contentHint:E,offerToReceiveAudio:_=!0,offerToReceiveVideo:h=!0,sendEncodings:S,onAddedTransceiver:l})=>new Promise((T,d)=>{const{ua:u}=this;if(!u){d(new Error("this.ua is not initialized"));return}this._connectionConfiguration.number=e,this._connectionConfiguration.answer=!1,this._handleCall({ontrack:i}).then(T).catch(g=>{d(g)}),this.rtcSession=u.call(this.getSipServerUrl(e),{extraHeaders:n,mediaStream:y(t,{directionVideo:a,directionAudio:c,contentHint:E}),eventHandlers:this._sessionEvents.triggers,directionVideo:a,directionAudio:c,pcConfig:{iceServers:o},rtcOfferConstraints:{offerToReceiveAudio:_,offerToReceiveVideo:h},sendEncodings:S,onAddedTransceiver:l})}));r(this,"_answer",async({mediaStream:e,ontrack:t,extraHeaders:n=[],iceServers:i,directionVideo:o,directionAudio:a,offerToReceiveAudio:c,offerToReceiveVideo:E,contentHint:_,sendEncodings:h,onAddedTransceiver:S})=>new Promise((l,T)=>{if(!this.isAvailableIncomingCall){T(new Error("no incomingRTCSession"));return}this.rtcSession=this.incomingRTCSession,this.removeIncomingSession();const{rtcSession:d}=this;if(!d){T(new Error("No rtcSession established"));return}this._sessionEvents.eachTriggers((g,G)=>{const O=ve.find(J=>J===G);O&&d.on(O,g)}),this._connectionConfiguration.answer=!0,this._connectionConfiguration.number=d.remote_identity.uri.user,this._handleCall({ontrack:t}).then(l).catch(g=>{T(g)});const u=y(e,{directionVideo:o,directionAudio:a,contentHint:_});d.answer({extraHeaders:n,directionVideo:o,directionAudio:a,mediaStream:u,pcConfig:{iceServers:i},rtcOfferConstraints:{offerToReceiveAudio:c,offerToReceiveVideo:E},sendEncodings:h,onAddedTransceiver:S})}));r(this,"_handleCall",async({ontrack:e})=>new Promise((t,n)=>{const i=()=>{this.onSession(q,h),this.onSession(W,S)},o=()=>{this.offSession(q,h),this.offSession(W,S)},a=()=>{this.onSession(I,E),this.onSession(p,E)},c=()=>{this.offSession(I,E),this.offSession(p,E)},E=l=>{o(),c(),n(l)};let _;const h=({peerconnection:l})=>{_=l,_.ontrack=T=>{this._sessionEvents.trigger(Ee,_),e&&e(T)}},S=()=>{_&&this._sessionEvents.trigger(ce,_),o(),c(),t(_)};i(),a()}));r(this,"_restoreSession",()=>{this._cancelRequestsAndResetPresentation(),delete this._connectionConfiguration.number,delete this.rtcSession,this._remoteStreams={}});r(this,"_sendDTMF",async e=>new Promise((t,n)=>{const{rtcSession:i}=this;if(!i){n(new Error("No rtcSession established"));return}this.onceSession(De,({originator:o})=>{o===R.LOCAL&&t()}),i.sendDTMF(e,{duration:120,interToneGap:600})}));r(this,"_hangUpWithoutCancelRequests",async()=>{if(this.ua&&this.rtcSession){const{rtcSession:e}=this;if(this._streamPresentationCurrent)try{await this.stopPresentation()}catch(t){b("error stop presentation: ",t)}if(this._restoreSession(),!e.isEnded())return e.terminateAsync()}});r(this,"_handleShareState",e=>{switch(e){case Pt:{this._sessionEvents.trigger(se,void 0);break}case Ot:{this._sessionEvents.trigger(ie,void 0);break}case mt:{this._sessionEvents.trigger(re,void 0);break}}});r(this,"_maybeTriggerChannels",e=>{const t=e.getHeader(Le),n=e.getHeader(He);if(t&&n){const i={inputChannels:t,outputChannels:n};this._sessionEvents.trigger(L,i)}});r(this,"_handleNotify",e=>{switch(e.cmd){case ts:{const t=e;this._triggerChannelsNotify(t);break}case ns:{const t=e;this._triggerWebcastStartedNotify(t);break}case ss:{const t=e;this._triggerWebcastStoppedNotify(t);break}case os:{const t=e;this._triggerAddedToListModeratorsNotify(t);break}case as:{const t=e;this._triggerRemovedFromListModeratorsNotify(t);break}case cs:{const t=e;this._triggerParticipationAcceptingWordRequest(t);break}case Es:{const t=e;this._triggerParticipationCancellingWordRequest(t);break}case _s:{const t=e;this._triggerParticipantMoveRequestToStream(t);break}case is:{this._triggerAccountChangedNotify();break}case rs:{this._triggerAccountDeletedNotify();break}case ls:{const t=e;this._triggerConferenceParticipantTokenIssued(t);break}default:b("unknown cmd",e.cmd)}});r(this,"_triggerRemovedFromListModeratorsNotify",({conference:e})=>{const t={conference:e};this._uaEvents.trigger(Ne,t)});r(this,"_triggerAddedToListModeratorsNotify",({conference:e})=>{const t={conference:e};this._uaEvents.trigger(Ce,t)});r(this,"_triggerWebcastStartedNotify",({body:{conference:e,type:t}})=>{const n={conference:e,type:t};this._uaEvents.trigger(Ie,n)});r(this,"_triggerWebcastStoppedNotify",({body:{conference:e,type:t}})=>{const n={conference:e,type:t};this._uaEvents.trigger(fe,n)});r(this,"_triggerAccountChangedNotify",()=>{this._uaEvents.trigger(Pe,void 0)});r(this,"_triggerAccountDeletedNotify",()=>{this._uaEvents.trigger(Oe,void 0)});r(this,"_triggerConferenceParticipantTokenIssued",({body:{conference:e,participant:t,jwt:n}})=>{const i={conference:e,participant:t,jwt:n};this._uaEvents.trigger(me,i)});r(this,"_triggerChannelsNotify",e=>{const t=e.input,n=e.output,i={inputChannels:t,outputChannels:n};this._uaEvents.trigger(_e,i)});r(this,"_triggerParticipationAcceptingWordRequest",({body:{conference:e}})=>{const t={conference:e};this._uaEvents.trigger(Ae,t)});r(this,"_triggerParticipationCancellingWordRequest",({body:{conference:e}})=>{const t={conference:e};this._uaEvents.trigger(Re,t)});r(this,"_triggerParticipantMoveRequestToStream",({body:{conference:e}})=>{const t={conference:e};this._uaEvents.trigger(ge,t)});r(this,"_triggerEnterRoom",e=>{const t=e.getHeader(_n),n=e.getHeader(Nn);this._sessionEvents.trigger(oe,{room:t,participantName:n})});r(this,"_triggerShareState",e=>{const t=e.getHeader(P);this._sessionEvents.trigger(U,t)});r(this,"_maybeTriggerParticipantMoveRequest",e=>{const t=e.getHeader(Dn);t===dt&&this._sessionEvents.trigger(V,void 0),t===ht&&this._sessionEvents.trigger(Y,void 0)});r(this,"_triggerMainCamControl",e=>{const t=e.getHeader(gn),n=e.getHeader(We),i=n===F.ADMIN_SYNC_FORCED;if(t===f.ADMIN_START_MAIN_CAM){this._sessionEvents.trigger(Se,{isSyncForced:i});return}if(t===f.ADMIN_STOP_MAIN_CAM){this._sessionEvents.trigger(he,{isSyncForced:i});return}(t===f.RESUME_MAIN_CAM||t===f.PAUSE_MAIN_CAM)&&n&&this._sessionEvents.trigger(H,{isSyncForced:i});const o=e.getHeader(Rn);this._sessionEvents.trigger(de,{mainCam:t,resolutionMainCam:o})});r(this,"_triggerMicControl",e=>{const t=e.getHeader(An),i=e.getHeader(We)===F.ADMIN_SYNC_FORCED;t===B.ADMIN_START_MIC?this._sessionEvents.trigger(ue,{isSyncForced:i}):t===B.ADMIN_STOP_MIC&&this._sessionEvents.trigger(Te,{isSyncForced:i})});r(this,"_triggerUseLicense",e=>{const t=e.getHeader(Cn);this._sessionEvents.trigger(ae,t)});r(this,"_handleNewInfo",e=>{const{originator:t}=e;if(t!=="remote")return;const{request:n}=e,i=n.getHeader(En);if(i)switch(i){case ln:{this._triggerEnterRoom(n),this._maybeTriggerChannels(n);break}case Mn:{this._maybeHandleNotify(n);break}case v:{this._triggerShareState(n);break}case Ue:{this._triggerMainCamControl(n);break}case Tn:{this._triggerMicControl(n);break}case un:{this._triggerUseLicense(n);break}case mn:{this._maybeTriggerParticipantMoveRequest(n);break}}});r(this,"_handleSipEvent",({request:e})=>{this._maybeHandleNotify(e)});r(this,"_maybeHandleNotify",e=>{const t=e.getHeader(pn);if(t){const n=JSON.parse(t);this._handleNotify(n)}});r(this,"_handleEnded",e=>{const{originator:t}=e;t===R.REMOTE&&this._sessionEvents.trigger(le,e),this._restoreSession()});this.JsSIP=e,this._sessionEvents=new we(ye),this._uaEvents=new we(Ct),this._cancelableConnect=new N.CancelableRequest(this._connect,{moduleName:A,afterCancelRequest:()=>{this._cancelableInitUa.cancelRequest(),this._cancelableDisconnect.cancelRequest()}}),this._cancelableInitUa=new N.CancelableRequest(this._initUa,{moduleName:A}),this._cancelableDisconnect=new N.CancelableRequest(this._disconnect,{moduleName:A}),this._cancelableSet=new N.CancelableRequest(this._set,{moduleName:A}),this._cancelableCall=new N.CancelableRequest(this._call,{moduleName:A}),this._cancelableAnswer=new N.CancelableRequest(this._answer,{moduleName:A}),this._cancelableSendDTMF=new N.CancelableRequest(this._sendDTMF,{moduleName:A}),this.onSession(U,this._handleShareState),this.onSession(Me,this._handleNewInfo),this.on(ne,this._handleSipEvent),this.onSession(I,this._handleEnded),this.onSession(p,this._handleEnded)}async register(){return new Promise((e,t)=>{this.isRegisterConfig&&this.ua?(this.ua.on(D,e),this.ua.on(M,t),this.ua.register()):t(new Error("Config is not registered"))})}async unregister(){return new Promise((e,t)=>{this.isRegistered&&this.ua?(this.ua.on(te,e),this.ua.unregister()):t(new Error("ua is not registered"))})}async sendOptions(e,t,n){if(!this.ua)throw new Error("is not connected");return new Promise((i,o)=>{try{this.ua.sendOptions(e,t,{extraHeaders:n,eventHandlers:{succeeded:()=>{i()},failed:o}})}catch(a){o(a)}})}async ping(e,t){var i;if(!((i=this.ua)!=null&&i.configuration.uri))throw new Error("is not connected");const n=this.ua.configuration.uri;return this.sendOptions(n,e,t)}async checkTelephony({userAgent:e,displayName:t,sipServerUrl:n,sipWebSocketServerURL:i,remoteAddress:o,extraHeaders:a}){return new Promise((c,E)=>{const{configuration:_}=this.createUaConfiguration({sipWebSocketServerURL:i,displayName:t,userAgent:e,sipServerUrl:n}),h=this._createUa({..._,remoteAddress:o,extraHeaders:a}),S=()=>{const T=new Error("Telephony is not available");E(T)};h.once(C,S);const l=()=>{h.removeAllListeners(),h.once(C,c),h.stop()};h.once(m,l),h.start()})}async replaceMediaStream(e,t){if(!this.rtcSession)throw new Error("No rtcSession established");const{contentHint:n}=t??{},i=y(e,{contentHint:n});return this.rtcSession.replaceMediaStream(i,t)}async askPermissionToEnableCam(e={}){if(!this.rtcSession)throw new Error("No rtcSession established");const t=[Hn];return this.rtcSession.sendInfo(Ue,void 0,{noTerminateWhenError:!0,...e,extraHeaders:t}).catch(n=>{if(Fn(n))throw n})}get isPendingPresentation(){return!!this.promisePendingStartPresentation||!!this.promisePendingStopPresentation}async _sendPresentationWithDuplicatedCalls({rtcSession:e,stream:t,presentationOptions:n,options:i={callLimit:jn}}){const o=async()=>this._sendPresentation(e,t,n),a=()=>!!this._streamPresentationCurrent;return this._cancelableSendPresentationWithRepeatedCalls=X.repeatedCallsAsync({targetFunction:o,isComplete:a,isRejectAsValid:!0,...i}),this._cancelableSendPresentationWithRepeatedCalls.then(c=>c)}hasEqualConnectionConfiguration(e){var i;const{configuration:t}=this.createUaConfiguration(e),n=(i=this.ua)==null?void 0:i.configuration;return(n==null?void 0:n.password)===t.password&&(n==null?void 0:n.register)===t.register&&(n==null?void 0:n.uri.toString())===t.uri&&(n==null?void 0:n.display_name)===t.display_name&&(n==null?void 0:n.user_agent)===t.user_agent&&(n==null?void 0:n.sockets)===t.sockets&&(n==null?void 0:n.session_timers)===t.session_timers&&(n==null?void 0:n.register_expires)===t.register_expires&&(n==null?void 0:n.connection_recovery_min_interval)===t.connection_recovery_min_interval&&(n==null?void 0:n.connection_recovery_max_interval)===t.connection_recovery_max_interval}createUaConfiguration({user:e,password:t,sipWebSocketServerURL:n,displayName:i="",sipServerUrl:o,register:a=!1,sessionTimers:c=!1,registerExpires:E=60*5,connectionRecoveryMinInterval:_=2,connectionRecoveryMaxInterval:h=6,userAgent:S}){if(a&&!t)throw new Error("password is required for authorized connection");const l=a&&e?e.trim():`${Yn()}`,T=xn(o),d=T(l),u=new this.JsSIP.WebSocketInterface(n);return{configuration:{password:t,register:a,uri:d,display_name:qe(i),user_agent:S,sdp_semantics:"unified-plan",sockets:[u],session_timers:c,register_expires:E,connection_recovery_min_interval:_,connection_recovery_max_interval:h},helpers:{socket:u,getSipServerUrl:T}}}async _sendPresentation(e,t,{maxBitrate:n=St,isNeedReinvite:i=!0,isP2P:o=!1,contentHint:a="detail",sendEncodings:c,onAddedTransceiver:E}){const _=y(t,{contentHint:a});this._streamPresentationCurrent=_;const h=o?[wn]:[vn],S=e.sendInfo(v,void 0,{extraHeaders:h}).then(async()=>e.startPresentation(_,i,{sendEncodings:c,onAddedTransceiver:E})).then(async()=>{const{connection:l}=this;if(!l||n===void 0)return;const T=l.getSenders();await Jn(T,t,n)}).then(()=>t).catch(l=>{throw this._removeStreamPresentationCurrent(),this._sessionEvents.trigger(k,l),l});return this.promisePendingStartPresentation=S,S.finally(()=>{this.promisePendingStartPresentation=void 0})}async startPresentation(e,{isNeedReinvite:t,isP2P:n,maxBitrate:i,contentHint:o,sendEncodings:a,onAddedTransceiver:c}={},E){const _=this.establishedRTCSession;if(!_)throw new Error("No rtcSession established");if(this._streamPresentationCurrent)throw new Error("Presentation is already started");return n&&await this.sendMustStopPresentation(_),this._sendPresentationWithDuplicatedCalls({rtcSession:_,stream:e,presentationOptions:{isNeedReinvite:t,isP2P:n,maxBitrate:i,contentHint:o,sendEncodings:a,onAddedTransceiver:c},options:E})}async sendMustStopPresentation(e){await e.sendInfo(v,void 0,{extraHeaders:[bn]})}async stopPresentation({isP2P:e=!1}={}){this._cancelSendPresentationWithRepeatedCalls();const t=this._streamPresentationCurrent;let n=this.promisePendingStartPresentation??Promise.resolve();const i=e?[Un]:[yn],o=this.establishedRTCSession;return o&&t&&(n=n.then(async()=>o.sendInfo(v,void 0,{extraHeaders:i})).then(async()=>o.stopPresentation(t)).catch(a=>{throw this._sessionEvents.trigger(k,a),a})),!o&&t&&this._sessionEvents.trigger(pe,t),this.promisePendingStopPresentation=n,n.finally(()=>{this._resetPresentation()})}async updatePresentation(e,{isP2P:t,maxBitrate:n,contentHint:i,sendEncodings:o,onAddedTransceiver:a}={}){const c=this.establishedRTCSession;if(!c)throw new Error("No rtcSession established");if(!this._streamPresentationCurrent)throw new Error("Presentation has not started yet");return this.promisePendingStartPresentation&&await this.promisePendingStartPresentation,this._sendPresentation(c,e,{isP2P:t,maxBitrate:n,contentHint:i,isNeedReinvite:!1,sendEncodings:o,onAddedTransceiver:a})}_removeStreamPresentationCurrent(){delete this._streamPresentationCurrent}_resetPresentation(){this._removeStreamPresentationCurrent(),this.promisePendingStartPresentation=void 0,this.promisePendingStopPresentation=void 0}_cancelRequestsAndResetPresentation(){this._cancelSendPresentationWithRepeatedCalls(),this._resetPresentation()}on(e,t){return this._uaEvents.on(e,t)}once(e,t){return this._uaEvents.once(e,t)}onceRace(e,t){return this._uaEvents.onceRace(e,t)}async wait(e){return this._uaEvents.wait(e)}off(e,t){this._uaEvents.off(e,t)}onSession(e,t){return this._sessionEvents.on(e,t)}onceSession(e,t){return this._sessionEvents.once(e,t)}onceRaceSession(e,t){return this._sessionEvents.onceRace(e,t)}async waitSession(e){return this._sessionEvents.wait(e)}offSession(e,t){this._sessionEvents.off(e,t)}isConfigured(){return!!this.ua}getConnectionConfiguration(){return{...this._connectionConfiguration}}getRemoteStreams(){if(!this.connection)return;const t=this.connection.getReceivers().map(({track:n})=>n);return $n(t)?this._generateStreams(t):this._generateAudioStreams(t)}get connection(){var t;return(t=this.rtcSession)==null?void 0:t.connection}get remoteCallerData(){var e,t,n,i,o,a;return{displayName:(t=(e=this.incomingRTCSession)==null?void 0:e.remote_identity)==null?void 0:t.display_name,host:(i=(n=this.incomingRTCSession)==null?void 0:n.remote_identity)==null?void 0:i.uri.host,incomingNumber:(a=(o=this.incomingRTCSession)==null?void 0:o.remote_identity)==null?void 0:a.uri.user,rtcSession:this.incomingRTCSession}}get requested(){return this._cancelableConnect.requested||this._cancelableInitUa.requested||this._cancelableCall.requested||this._cancelableAnswer.requested}get establishedRTCSession(){var e;return(e=this.rtcSession)!=null&&e.isEstablished()?this.rtcSession:void 0}get isRegistered(){return!!this.ua&&this.ua.isRegistered()}get isRegisterConfig(){return!!this.ua&&this._isRegisterConfig}get isCallActive(){return!!(this.ua&&this.rtcSession)}get isAvailableIncomingCall(){return!!this.incomingRTCSession}_generateStream(e,t){const{id:n}=e,i=this._remoteStreams[n]||new MediaStream;return t&&i.addTrack(t),i.addTrack(e),this._remoteStreams[n]=i,i}_generateAudioStream(e){const{id:t}=e,n=this._remoteStreams[t]||new MediaStream;return n.addTrack(e),this._remoteStreams[t]=n,n}_generateStreams(e){const t=[];return e.forEach((n,i)=>{if(n.kind==="audio")return;const o=n,a=e[i-1];let c;a&&a.kind==="audio"&&(c=a);const E=this._generateStream(o,c);t.push(E)}),t}_generateAudioStreams(e){return e.map(n=>this._generateAudioStream(n))}_cancelRequests(){this._cancelActionsRequests(),this._cancelCallRequests(),this._cancelConnectWithRepeatedCalls()}_cancelConnectWithRepeatedCalls(){var e;(e=this._cancelableConnectWithRepeatedCalls)==null||e.cancel()}_cancelSendPresentationWithRepeatedCalls(){var e;(e=this._cancelableSendPresentationWithRepeatedCalls)==null||e.cancel()}_cancelCallRequests(){this._cancelableCall.cancelRequest(),this._cancelableAnswer.cancelRequest()}_cancelActionsRequests(){this._cancelableAnswer.cancelRequest(),this._cancelableSendDTMF.cancelRequest()}async waitChannels(){return this.waitSession(L)}async waitSyncMediaState(){return this.waitSession(H)}async sendChannels({inputChannels:e,outputChannels:t}){if(!this.rtcSession)throw new Error("No rtcSession established");const n=`${Le}: ${e}`,i=`${He}: ${t}`,o=[n,i];return this.rtcSession.sendInfo(dn,void 0,{extraHeaders:o})}async sendMediaState({cam:e,mic:t},n={}){if(!this.rtcSession)throw new Error("No rtcSession established");const i=`${In}: currentstate`,o=`${Pn}: ${Number(e)}`,a=`${On}: ${Number(t)}`,c=[i,o,a];return this.rtcSession.sendInfo(hn,void 0,{noTerminateWhenError:!0,...n,extraHeaders:c})}async _sendRefusalToTurnOn(e,t={}){if(!this.rtcSession)throw new Error("No rtcSession established");const c=[`${fn}: ${e==="mic"?0:1}`];return this.rtcSession.sendInfo(Sn,void 0,{noTerminateWhenError:!0,...t,extraHeaders:c})}async sendRefusalToTurnOnMic(e={}){if(!this.rtcSession)throw new Error("No rtcSession established");return this._sendRefusalToTurnOn("mic",{noTerminateWhenError:!0,...e})}async sendRefusalToTurnOnCam(e={}){if(!this.rtcSession)throw new Error("No rtcSession established");return this._sendRefusalToTurnOn("cam",{noTerminateWhenError:!0,...e})}}exports.BAD_MEDIA_DESCRIPTION=Ve;exports.EEventsMainCAM=f;exports.EEventsMic=B;exports.EEventsSyncMediaState=F;exports.EMimeTypesVideoCodecs=It;exports.EUseLicense=Rt;exports.NOT_FOUND=Be;exports.PARTICIPANT_MOVE_REQUEST_TO_PARTICIPANTS=Y;exports.PARTICIPANT_MOVE_REQUEST_TO_SPECTATORS=V;exports.REJECTED=z;exports.SESSION_EVENT_NAMES=ye;exports.SipConnector=ds;exports.UA_JSSIP_EVENT_NAMES=$;exports.causes=Gt;exports.constants=Jt;exports.disableDebug=zt;exports.enableDebug=Qt;exports.eventNames=Xt;exports.hasCanceledCallError=Zn;exports.hasCanceledStartPresentationError=es;exports.logger=b;exports.setEncodingsToSender=ft;exports.setParametersToSender=At;