sip-connector 14.0.0 → 14.1.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/dist/SipConnector-CK3GgjXE.js +2492 -0
  2. package/dist/SipConnector-CwI8aFEA.cjs +1 -0
  3. package/dist/doMock.cjs +1 -1
  4. package/dist/doMock.js +439 -419
  5. package/dist/index.cjs +1 -1
  6. package/dist/index.js +708 -623
  7. package/dist/src/ApiManager/@ApiManager.d.ts +58 -0
  8. package/dist/src/ApiManager/constants.d.ts +71 -0
  9. package/dist/src/ApiManager/eventNames.d.ts +33 -0
  10. package/dist/src/ApiManager/index.d.ts +2 -0
  11. package/dist/src/ApiManager/types.d.ts +99 -0
  12. package/dist/src/CallManager/@CallManager.d.ts +26 -0
  13. package/dist/src/CallManager/AbstractCallStrategy.d.ts +47 -0
  14. package/dist/src/CallManager/MCUCallStrategy.d.ts +30 -0
  15. package/dist/src/CallManager/RemoteStreamsManager.d.ts +8 -0
  16. package/dist/src/CallManager/causes.d.ts +12 -0
  17. package/dist/src/CallManager/eventNames.d.ts +45 -0
  18. package/dist/src/CallManager/hasCanceledCallError.d.ts +2 -0
  19. package/dist/src/CallManager/index.d.ts +5 -0
  20. package/dist/src/CallManager/types.d.ts +59 -0
  21. package/dist/src/ConnectionManager/@ConnectionManager.d.ts +47 -0
  22. package/dist/src/ConnectionManager/ConfigurationManager.d.ts +60 -0
  23. package/dist/src/ConnectionManager/ConnectionFlow.d.ts +83 -0
  24. package/dist/src/ConnectionManager/ConnectionStateMachine.d.ts +61 -0
  25. package/dist/src/ConnectionManager/RegistrationManager.d.ts +17 -0
  26. package/dist/src/ConnectionManager/SipOperations.d.ts +32 -0
  27. package/dist/src/ConnectionManager/UAFactory.d.ts +50 -0
  28. package/dist/src/ConnectionManager/eventNames.d.ts +16 -0
  29. package/dist/src/ConnectionManager/index.d.ts +3 -0
  30. package/dist/src/IncomingCallManager/@IncomingCallManager.d.ts +36 -0
  31. package/dist/src/IncomingCallManager/eventNames.d.ts +13 -0
  32. package/dist/src/IncomingCallManager/index.d.ts +2 -0
  33. package/dist/src/PresentationManager/@PresentationManager.d.ts +47 -0
  34. package/dist/src/PresentationManager/constants.d.ts +1 -0
  35. package/dist/src/PresentationManager/eventNames.d.ts +11 -0
  36. package/dist/src/PresentationManager/index.d.ts +1 -0
  37. package/dist/src/PresentationManager/types.d.ts +2 -0
  38. package/dist/src/SipConnector.d.ts +107 -0
  39. package/dist/{SipConnectorFacade → src/SipConnectorFacade}/SipConnectorFacade.d.ts +34 -25
  40. package/dist/{__fixtures__ → src/__fixtures__}/BaseSession.mock.d.ts +23 -35
  41. package/dist/{__fixtures__ → src/__fixtures__}/RTCPeerConnectionMock.d.ts +15 -15
  42. package/dist/{__fixtures__ → src/__fixtures__}/RTCRtpSenderMock.d.ts +2 -2
  43. package/dist/src/__fixtures__/RTCSessionMock.d.ts +79 -0
  44. package/dist/src/__fixtures__/UA.mock.d.ts +82 -0
  45. package/dist/{__fixtures__ → src/__fixtures__}/channelsNotify.d.ts +2 -2
  46. package/dist/{__fixtures__ → src/__fixtures__}/index.d.ts +4 -4
  47. package/dist/{__fixtures__ → src/__fixtures__}/jssip.mock.d.ts +4 -4
  48. package/dist/{__fixtures__ → src/__fixtures__}/participantNotify.d.ts +2 -2
  49. package/dist/{constants.d.ts → src/constants.d.ts} +5 -0
  50. package/dist/{doMock.d.ts → src/doMock.d.ts} +1 -0
  51. package/dist/{index.d.ts → src/index.d.ts} +3 -1
  52. package/dist/{tools → src/tools}/__fixtures__/connectToServer.d.ts +2 -2
  53. package/dist/{tools → src/tools}/index.d.ts +2 -2
  54. package/dist/{tools/sendDTMFAccumulated.d.ts → src/tools/sendDtmfFAccumulated.d.ts} +2 -2
  55. package/dist/{types.d.ts → src/types.d.ts} +2 -1
  56. package/package.json +40 -37
  57. package/dist/SipConnector-Cc1z-VjV.js +0 -1335
  58. package/dist/SipConnector-K7IHfEEm.cjs +0 -1
  59. package/dist/SipConnector.d.ts +0 -314
  60. package/dist/__fixtures__/RTCSessionMock.d.ts +0 -78
  61. package/dist/__fixtures__/UA.mock.d.ts +0 -103
  62. package/dist/utils.d.ts +0 -4
  63. /package/dist/{SipConnectorFacade → src/SipConnectorFacade}/index.d.ts +0 -0
  64. /package/dist/{__fixtures__ → src/__fixtures__}/Registrator.mock.d.ts +0 -0
  65. /package/dist/{__fixtures__ → src/__fixtures__}/Request.mock.d.ts +0 -0
  66. /package/dist/{__fixtures__ → src/__fixtures__}/WebSocketInterface.mock.d.ts +0 -0
  67. /package/dist/{__fixtures__ → src/__fixtures__}/accountNotify.d.ts +0 -0
  68. /package/dist/{__fixtures__ → src/__fixtures__}/channels.d.ts +0 -0
  69. /package/dist/{__fixtures__ → src/__fixtures__}/conferenceParticipantTokenIssuedNotify.d.ts +0 -0
  70. /package/dist/{__fixtures__ → src/__fixtures__}/delayPromise.d.ts +0 -0
  71. /package/dist/{__fixtures__ → src/__fixtures__}/enterRoom.d.ts +0 -0
  72. /package/dist/{__fixtures__ → src/__fixtures__}/mediaState.d.ts +0 -0
  73. /package/dist/{__fixtures__ → src/__fixtures__}/participantMoveRequests.d.ts +0 -0
  74. /package/dist/{__fixtures__ → src/__fixtures__}/remoteCallerData.d.ts +0 -0
  75. /package/dist/{__fixtures__ → src/__fixtures__}/utils.d.ts +0 -0
  76. /package/dist/{__fixtures__ → src/__fixtures__}/webcastNotify.d.ts +0 -0
  77. /package/dist/{causes.d.ts → src/causes.d.ts} +0 -0
  78. /package/dist/{eventNames.d.ts → src/eventNames.d.ts} +0 -0
  79. /package/dist/{getExtraHeadersRemoteAddress.d.ts → src/getExtraHeadersRemoteAddress.d.ts} +0 -0
  80. /package/dist/{headers.d.ts → src/headers.d.ts} +0 -0
  81. /package/dist/{logger.d.ts → src/logger.d.ts} +0 -0
  82. /package/dist/{setParametersToSender → src/setParametersToSender}/configureDegradationPreference.d.ts +0 -0
  83. /package/dist/{setParametersToSender → src/setParametersToSender}/configureEmptyEncodings.d.ts +0 -0
  84. /package/dist/{setParametersToSender → src/setParametersToSender}/configureEncodings.d.ts +0 -0
  85. /package/dist/{setParametersToSender → src/setParametersToSender}/configureMaxBitrate.d.ts +0 -0
  86. /package/dist/{setParametersToSender → src/setParametersToSender}/configureScaleResolutionDownBy.d.ts +0 -0
  87. /package/dist/{setParametersToSender → src/setParametersToSender}/hasChangedRTCRtpSendParameters.d.ts +0 -0
  88. /package/dist/{setParametersToSender → src/setParametersToSender}/index.d.ts +0 -0
  89. /package/dist/{setParametersToSender → src/setParametersToSender}/resolveHasNeedToUpdateItemEncoding.d.ts +0 -0
  90. /package/dist/{setParametersToSender → src/setParametersToSender}/setParametersToSender.d.ts +0 -0
  91. /package/dist/{tools → src/tools}/__fixtures__/call.d.ts +0 -0
  92. /package/dist/{tools → src/tools}/__fixtures__/hasValidUri.d.ts +0 -0
  93. /package/dist/{tools → src/tools}/__fixtures__/permissions.d.ts +0 -0
  94. /package/dist/{tools → src/tools}/__fixtures__/processRequest.d.ts +0 -0
  95. /package/dist/{tools → src/tools}/__tests-utils__/parseObject.d.ts +0 -0
  96. /package/dist/{tools → src/tools}/__tests-utils__/resolveParseArray.d.ts +0 -0
  97. /package/dist/{tools → src/tools}/error/getLinkError.d.ts +0 -0
  98. /package/dist/{tools → src/tools}/error/getTypeFromError.d.ts +0 -0
  99. /package/dist/{tools → src/tools}/error/getValuesFromError.d.ts +0 -0
  100. /package/dist/{tools → src/tools}/error/index.d.ts +0 -0
  101. /package/dist/{tools → src/tools}/error/stringifyMessage.d.ts +0 -0
  102. /package/dist/{tools → src/tools}/generateSimulcastEncodings.d.ts +0 -0
  103. /package/dist/{tools → src/tools}/getExtraHeaders.d.ts +0 -0
  104. /package/dist/{tools → src/tools}/getUserAgent.d.ts +0 -0
  105. /package/dist/{tools → src/tools}/hasPurgatory.d.ts +0 -0
  106. /package/dist/{tools → src/tools}/prepareMediaStream.d.ts +0 -0
  107. /package/dist/{tools → src/tools}/resolveUpdateTransceiver.d.ts +0 -0
  108. /package/dist/{tools → src/tools}/setVideoTrackContentHints.d.ts +0 -0
  109. /package/dist/{tools → src/tools}/syncMediaState/index.d.ts +0 -0
  110. /package/dist/{tools → src/tools}/syncMediaState/resolveOnStartMainCam.d.ts +0 -0
  111. /package/dist/{tools → src/tools}/syncMediaState/resolveOnStartMic.d.ts +0 -0
  112. /package/dist/{tools → src/tools}/syncMediaState/resolveOnStopMainCam.d.ts +0 -0
  113. /package/dist/{tools → src/tools}/syncMediaState/resolveOnStopMic.d.ts +0 -0
  114. /package/dist/{utils → src/utils}/errors.d.ts +0 -0
  115. /package/dist/{utils → src/utils}/findSenderByStream.d.ts +0 -0
  116. /package/dist/{utils → src/utils}/findVideoSender.d.ts +0 -0
  117. /package/dist/{utils → src/utils}/findVideoTrack.d.ts +0 -0
  118. /package/dist/{utils → src/utils}/getCodecFromSender.d.ts +0 -0
  119. /package/dist/{utils → src/utils}/replaceForbiddenSymbolsWithUnderscore.d.ts +0 -0
  120. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/balance.d.ts +0 -0
  121. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/getMaxBitrateByWidth.d.ts +0 -0
  122. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/getMaxBitrateByWidthAndCodec.d.ts +0 -0
  123. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/hasAv1Codec.d.ts +0 -0
  124. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/hasIncludesString.d.ts +0 -0
  125. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/index.d.ts +0 -0
  126. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/processSender.d.ts +0 -0
  127. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/scaleBitrate.d.ts +0 -0
  128. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/scaleBitrateByCodec.d.ts +0 -0
  129. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/scaleResolutionAndBitrate.d.ts +0 -0
  130. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/setEncodingsToSender.d.ts +0 -0
@@ -1 +0,0 @@
1
- "use strict";var Mt=Object.defineProperty;var pt=(s,e,t)=>e in s?Mt(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var r=(s,e,t)=>pt(s,typeof e!="symbol"?e+"":e,t);const N=require("@krivega/cancelable-promise"),we=require("events-constructor"),Ue=require("repeated-calls"),J=require("debug"),vt="Connection Error",Fe="Request Timeout",yt="SIP Failure Code",bt="Internal Error",wt="Busy",X="Rejected",Ut="Redirected",Lt="Unavailable",xe="Not Found",Ht="Address Incomplete",Wt="Incompatible SDP",qt="Missing SDP",kt="Authentication Error",Ve="Terminated",Bt="WebRTC Error",Ye="Canceled",Ft="No Answer",xt="Expires",Vt="No ACK",Yt="Dialog Error",Gt="User Denied Media Access",Ge="Bad Media Description",$t="RTP Timeout",Jt=Object.freeze(Object.defineProperty({__proto__:null,ADDRESS_INCOMPLETE:Ht,AUTHENTICATION_ERROR:kt,BAD_MEDIA_DESCRIPTION:Ge,BUSY:wt,BYE:Ve,CANCELED:Ye,CONNECTION_ERROR:vt,DIALOG_ERROR:Yt,EXPIRES:xt,INCOMPATIBLE_SDP:Wt,INTERNAL_ERROR:bt,MISSING_SDP:qt,NOT_FOUND:xe,NO_ACK:Vt,NO_ANSWER:Ft,REDIRECTED:Ut,REJECTED:X,REQUEST_TIMEOUT:Fe,RTP_TIMEOUT:$t,SIP_FAILURE_CODE:yt,UNAVAILABLE:Lt,USER_DENIED_MEDIA_ACCESS:Gt,WEBRTC_ERROR:Bt},Symbol.toStringTag,{value:"Module"})),Q="incomingCall",z="declinedIncomingCall",j="failedIncomingCall",K="terminatedIncomingCall",F="connecting",O="connected",C="disconnected",b="newRTCSession",m="registered",Z="unregistered",D="registrationFailed",$e="newMessage",ee="sipEvent",te="availableSecondRemoteStream",ne="notAvailableSecondRemoteStream",se="mustStopPresentation",w="shareState",ie="enterRoom",re="useLicense",oe="peerconnection:confirmed",ae="peerconnection:ontrack",U="channels",ce="channels:notify",Ee="ended:fromserver",_e="main-cam-control",le="admin-stop-main-cam",de="admin-start-main-cam",he="admin-stop-mic",Se="admin-start-mic",L="admin-force-sync-media-state",Te="participant:added-to-list-moderators",ue="participant:removed-from-list-moderators",Ce="participant:move-request-to-stream",x="participant:move-request-to-spectators",V="participant:move-request-to-participants",Ne="participation:accepting-word-request",ge="participation:cancelling-word-request",Re="webcast:started",Ae="webcast:stopped",Ie="account:changed",fe="account:deleted",Pe="conference:participant-token-issued",M="ended",Je="sending",Xe="reinvite",Qe="replaces",ze="refer",je="progress",Ke="accepted",H="confirmed",W="peerconnection",A="failed",Ze="muted",et="unmuted",Oe="newDTMF",me="newInfo",tt="hold",nt="unhold",st="update",it="sdp",rt="icecandidate",ot="getusermediafailed",at="peerconnection:createofferfailed",ct="peerconnection:createanswerfailed",Et="peerconnection:setlocaldescriptionfailed",_t="peerconnection:setremotedescriptionfailed",lt="presentation:start",dt="presentation:started",ht="presentation:end",De="presentation:ended",q="presentation:failed",St="SPECTATOR",Tt="PARTICIPANT",ut=1e6,Xt=Object.freeze(Object.defineProperty({__proto__:null,ACCEPTED:Ke,ACCOUNT_CHANGED:Ie,ACCOUNT_DELETED:fe,ADMIN_FORCE_SYNC_MEDIA_STATE:L,ADMIN_START_MAIN_CAM:de,ADMIN_START_MIC:Se,ADMIN_STOP_MAIN_CAM:le,ADMIN_STOP_MIC:he,AVAILABLE_SECOND_REMOTE_STREAM_EVENT:te,CHANNELS:U,CHANNELS_NOTIFY:ce,CONFERENCE_PARTICIPANT_TOKEN_ISSUED:Pe,CONFIRMED:H,CONNECTED:O,CONNECTING:F,DECLINED_INCOMING_CALL:z,DISCONNECTED:C,ENDED:M,ENDED_FROM_SERVER:Ee,ENTER_ROOM:ie,FAILED:A,FAILED_INCOMING_CALL:j,GET_USER_MEDIA_FAILED:ot,HOLD:tt,ICE_CANDIDATE:rt,INCOMING_CALL:Q,MAIN_CAM_CONTROL:_e,MUST_STOP_PRESENTATION_EVENT:se,MUTED:Ze,NEW_DTMF:Oe,NEW_INFO:me,NEW_MESSAGE:$e,NEW_RTC_SESSION:b,NOT_AVAILABLE_SECOND_REMOTE_STREAM_EVENT:ne,ONE_MEGABIT_IN_BITS:ut,PARTICIPANT:Tt,PARTICIPANT_ADDED_TO_LIST_MODERATORS:Te,PARTICIPANT_MOVE_REQUEST_TO_PARTICIPANTS:V,PARTICIPANT_MOVE_REQUEST_TO_SPECTATORS:x,PARTICIPANT_MOVE_REQUEST_TO_STREAM:Ce,PARTICIPANT_REMOVED_FROM_LIST_MODERATORS:ue,PARTICIPATION_ACCEPTING_WORD_REQUEST:Ne,PARTICIPATION_CANCELLING_WORD_REQUEST:ge,PEER_CONNECTION:W,PEER_CONNECTION_CONFIRMED:oe,PEER_CONNECTION_CREATE_ANSWER_FAILED:ct,PEER_CONNECTION_CREATE_OFFER_FAILED:at,PEER_CONNECTION_ONTRACK:ae,PEER_CONNECTION_SET_LOCAL_DESCRIPTION_FAILED:Et,PEER_CONNECTION_SET_REMOTE_DESCRIPTION_FAILED:_t,PRESENTATION_END:ht,PRESENTATION_ENDED:De,PRESENTATION_FAILED:q,PRESENTATION_START:lt,PRESENTATION_STARTED:dt,PROGRESS:je,REFER:ze,REGISTERED:m,REGISTRATION_FAILED:D,REINVITE:Xe,REPLACES:Qe,SDP:it,SENDING:Je,SHARE_STATE:w,SIP_EVENT:ee,SPECTATOR:St,TERMINATED_INCOMING_CALL:K,UNHOLD:nt,UNMUTED:et,UNREGISTERED:Z,UPDATE:st,USE_LICENSE:re,WEBCAST_STARTED:Re,WEBCAST_STOPPED:Ae},Symbol.toStringTag,{value:"Module"})),Ct=[Q,z,K,j,Ne,ge,Ce,ce,Pe,Ie,fe,Re,Ae,Te,ue],Me=[F,O,C,b,m,Z,D,$e,ee],Nt=[te,ne,se,w,ie,re,oe,ae,U,Ee,_e,de,le,he,Se,L,x,V],pe=[M,F,Je,Xe,Qe,ze,je,Ke,H,W,A,Ze,et,Oe,me,tt,nt,st,it,rt,ot,at,ct,Et,_t,lt,dt,ht,De,q],ve=[...Me,...Ct],ye=[...pe,...Nt],Qt=Object.freeze(Object.defineProperty({__proto__:null,SESSION_EVENT_NAMES:ye,SESSION_JSSIP_EVENT_NAMES:pe,SESSION_SYNTHETICS_EVENT_NAMES:Nt,UA_EVENT_NAMES:ve,UA_JSSIP_EVENT_NAMES:Me,UA_SYNTHETICS_EVENT_NAMES:Ct},Symbol.toStringTag,{value:"Module"})),be="sip-connector",y=J(be),zt=()=>{J.enable(be)},jt=()=>{J.enable(`-${be}`)},Kt=(s,e)=>(s.degradationPreference=e.degradationPreference,s),Zt=(s,e)=>{s.encodings===void 0&&(s.encodings=[]);for(let t=s.encodings.length;t<e;t+=1)s.encodings.push({});return s},gt=s=>(e,t)=>t!==void 0&&e!==t||t===void 0&&e!==s,en=gt(),tn=(s,e)=>{if(en(s,e))return s},nn=(s,e)=>{const t=s.maxBitrate,n=tn(e,t);return n!==void 0&&(s.maxBitrate=n),s},Rt=1,sn=gt(Rt),rn=(s,e)=>{const t=s===void 0?void 0:Math.max(s,Rt);if(t!==void 0&&sn(t,e))return t},on=(s,e)=>{const t=s.scaleResolutionDownBy,n=rn(e,t);return n!==void 0&&(s.scaleResolutionDownBy=n),s},an=(s,e)=>{var n;const t=((n=e.encodings)==null?void 0:n.length)??0;return Zt(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;nn(i,c),on(i,E)}),s},cn=(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));an(t,e),Kt(t,e);const i=cn(n,t);return i&&await s.setParameters(t),{parameters:t,isChanged:i}};var I=(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))(I||{}),k=(s=>(s.ADMIN_STOP_MIC="ADMINSTOPMIC",s.ADMIN_START_MIC="ADMINSTARTMIC",s))(k||{}),B=(s=>(s.ADMIN_SYNC_FORCED="1",s.ADMIN_SYNC_NOT_FORCED="0",s))(B||{}),It=(s=>(s.AUDIO="AUDIO",s.VIDEO="VIDEO",s.AUDIOPLUSPRESENTATION="AUDIOPLUSPRESENTATION",s))(It||{}),ft=(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))(ft||{});const Pt=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}},En=s=>{const e=[];return s&&e.push(`X-Vinteo-Remote: ${s}`),e},_n="content-type",ln="x-webrtc-enter-room",p="application/vinteo.webrtc.sharedesktop",dn="application/vinteo.webrtc.roomname",hn="application/vinteo.webrtc.channels",Sn="application/vinteo.webrtc.mediastate",Tn="application/vinteo.webrtc.refusal",Le="application/vinteo.webrtc.maincam",un="application/vinteo.webrtc.mic",Cn="application/vinteo.webrtc.uselic",Nn="X-WEBRTC-USE-LICENSE",gn="X-WEBRTC-PARTICIPANT-NAME",He="X-WEBRTC-INPUT-CHANNELS",We="X-WEBRTC-OUTPUT-CHANNELS",Rn="X-WEBRTC-MAINCAM",An="X-WEBRTC-MIC",qe="X-WEBRTC-SYNC",In="X-WEBRTC-MAINCAM-RESOLUTION",fn="X-WEBRTC-MEDIA-STATE",Pn="X-Vinteo-Media-Type",On="X-Vinteo-MainCam-State",mn="X-Vinteo-Mic-State",Dn="application/vinteo.webrtc.partstate",Mn="X-WEBRTC-PARTSTATE",pn="application/vinteo.webrtc.notify",vn="X-VINTEO-NOTIFY",f="x-webrtc-share-state",yn=`${f}: LETMESTARTPRESENTATION`,bn=`${f}: STOPPRESENTATION`,Ot="YOUCANRECEIVECONTENT",mt="CONTENTEND",Dt="YOUMUSTSTOPSENDCONTENT",wn=`${f}: ${Dt}`,Un=`${f}: ${Ot}`,Ln=`${f}: ${mt}`,Hn="X-WEBRTC-REQUEST-ENABLE-MEDIA-DEVICE",Wn=`${Hn}: LETMESTARTMAINCAM`,qn=(s,e)=>{s.getVideoTracks().forEach(n=>{"contentHint"in n&&n.contentHint!==e&&(n.contentHint=e)})},v=(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"&&qn(c,n),c};function kn(s){return e=>`sip:${e}@${s}`}const Bn=(s,e)=>()=>Math.floor(Math.random()*(e-s))+s,ke=s=>s.trim().replaceAll(" ","_"),Fn=Bn(1e5,99999999),xn=s=>s.some(t=>{const{kind:n}=t;return n==="video"}),Vn="Error decline with 603",Yn=1006,Gn=s=>typeof s=="object"&&s!==null&&"code"in s&&s.code===Yn,$n=s=>s.message===Vn,Jn=(s,e)=>s.find(t=>t.track&&e.getTracks().includes(t.track)),Xn=async(s,e,t)=>{const n=Jn(s,e);if(n)return Pt(n,{maxBitrate:t})},Qn=486,zn=487,$="local",Be="remote",jn=3,Kn=1,Zn=(s=new Error)=>{const{originator:e,cause:t}=s;return N.isCanceledError(s)?!0:typeof t=="string"?t===Fe||t===X||e===$&&(t===Ye||t===Ve):!1},R="SipConnector",es="channels",ts="WebcastStarted",ns="WebcastStopped",ss="accountChanged",is="accountDeleted",rs="addedToListModerators",os="removedFromListModerators",as="ParticipationRequestAccepted",cs="ParticipationRequestRejected",Es="ParticipantMovedToWebcast",_s="ConferenceParticipantTokenIssued";class ls{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(F,void 0);try{await this.unregister()}catch(e){y("tryRegister",e)}return this.register()});r(this,"declineToIncomingCall",async({statusCode:e=zn}={})=>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(z,o),t(i.terminate({status_code:e}))}));r(this,"busyIncomingCall",async()=>this.declineToIncomingCall({statusCode:Qn}));r(this,"removeIncomingSession",()=>{delete this.incomingRTCSession});r(this,"_connectWithDuplicatedCalls",async(e,{callLimit:t=jn}={})=>{const n=async()=>this._cancelableConnect.request(e),i=o=>{var _;const c=!!((_=this.ua)!=null&&_.isConnected())&&this.hasEqualConnectionConfiguration(e),E=!!o&&!Gn(o);return c||E};return this._cancelableConnectWithRepeatedCalls=Ue.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===Be){this.incomingRTCSession=t;const n=this.remoteCallerData;t.on(A,i=>{this.removeIncomingSession(),i.originator===$?this._uaEvents.trigger(K,n):this._uaEvents.trigger(j,n)}),this._uaEvents.trigger(Q,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,Y)=>{const P=Me.find(G=>G===Y);P&&this.ua&&this.ua.on(P,g)}),this.ua});r(this,"_createUa",({remoteAddress:e,extraHeaders:t=[],...n})=>{const i=new this.JsSIP.UA(n),a=[...e?En(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(m,i),this.on(D,o)):this.on(O,i),this.on(C,o)},c=()=>{this.off(m,i),this.off(D,o),this.off(O,i),this.off(C,o)};a(),this.on(b,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",ke(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(b,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:v(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,Y)=>{const P=pe.find(G=>G===Y);P&&d.on(P,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=v(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(W,h),this.onSession(H,S)},o=()=>{this.offSession(W,h),this.offSession(H,S)},a=()=>{this.onSession(A,E),this.onSession(M,E)},c=()=>{this.offSession(A,E),this.offSession(M,E)},E=l=>{o(),c(),n(l)};let _;const h=({peerconnection:l})=>{_=l,_.ontrack=T=>{this._sessionEvents.trigger(ae,_),e&&e(T)}},S=()=>{_&&this._sessionEvents.trigger(oe,_),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(Oe,({originator:o})=>{o===$&&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){y("error stop presentation: ",t)}if(this._restoreSession(),!e.isEnded())return e.terminateAsync()}});r(this,"_handleShareState",e=>{switch(e){case Ot:{this._sessionEvents.trigger(te,void 0);break}case mt:{this._sessionEvents.trigger(ne,void 0);break}case Dt:{this._sessionEvents.trigger(se,void 0);break}}});r(this,"_maybeTriggerChannels",e=>{const t=e.getHeader(He),n=e.getHeader(We);if(t&&n){const i={inputChannels:t,outputChannels:n};this._sessionEvents.trigger(U,i)}});r(this,"_handleNotify",e=>{switch(e.cmd){case es:{const t=e;this._triggerChannelsNotify(t);break}case ts:{const t=e;this._triggerWebcastStartedNotify(t);break}case ns:{const t=e;this._triggerWebcastStoppedNotify(t);break}case rs:{const t=e;this._triggerAddedToListModeratorsNotify(t);break}case os:{const t=e;this._triggerRemovedFromListModeratorsNotify(t);break}case as:{const t=e;this._triggerParticipationAcceptingWordRequest(t);break}case cs:{const t=e;this._triggerParticipationCancellingWordRequest(t);break}case Es:{const t=e;this._triggerParticipantMoveRequestToStream(t);break}case ss:{this._triggerAccountChangedNotify();break}case is:{this._triggerAccountDeletedNotify();break}case _s:{const t=e;this._triggerConferenceParticipantTokenIssued(t);break}default:y("unknown cmd",e.cmd)}});r(this,"_triggerRemovedFromListModeratorsNotify",({conference:e})=>{const t={conference:e};this._uaEvents.trigger(ue,t)});r(this,"_triggerAddedToListModeratorsNotify",({conference:e})=>{const t={conference:e};this._uaEvents.trigger(Te,t)});r(this,"_triggerWebcastStartedNotify",({body:{conference:e,type:t}})=>{const n={conference:e,type:t};this._uaEvents.trigger(Re,n)});r(this,"_triggerWebcastStoppedNotify",({body:{conference:e,type:t}})=>{const n={conference:e,type:t};this._uaEvents.trigger(Ae,n)});r(this,"_triggerAccountChangedNotify",()=>{this._uaEvents.trigger(Ie,void 0)});r(this,"_triggerAccountDeletedNotify",()=>{this._uaEvents.trigger(fe,void 0)});r(this,"_triggerConferenceParticipantTokenIssued",({body:{conference:e,participant:t,jwt:n}})=>{const i={conference:e,participant:t,jwt:n};this._uaEvents.trigger(Pe,i)});r(this,"_triggerChannelsNotify",e=>{const t=e.input,n=e.output,i={inputChannels:t,outputChannels:n};this._uaEvents.trigger(ce,i)});r(this,"_triggerParticipationAcceptingWordRequest",({body:{conference:e}})=>{const t={conference:e};this._uaEvents.trigger(Ne,t)});r(this,"_triggerParticipationCancellingWordRequest",({body:{conference:e}})=>{const t={conference:e};this._uaEvents.trigger(ge,t)});r(this,"_triggerParticipantMoveRequestToStream",({body:{conference:e}})=>{const t={conference:e};this._uaEvents.trigger(Ce,t)});r(this,"_triggerEnterRoom",e=>{const t=e.getHeader(ln),n=e.getHeader(gn);this._sessionEvents.trigger(ie,{room:t,participantName:n})});r(this,"_triggerShareState",e=>{const t=e.getHeader(f);this._sessionEvents.trigger(w,t)});r(this,"_maybeTriggerParticipantMoveRequest",e=>{const t=e.getHeader(Mn);t===St&&this._sessionEvents.trigger(x,void 0),t===Tt&&this._sessionEvents.trigger(V,void 0)});r(this,"_triggerMainCamControl",e=>{const t=e.getHeader(Rn),n=e.getHeader(qe),i=n===B.ADMIN_SYNC_FORCED;if(t===I.ADMIN_START_MAIN_CAM){this._sessionEvents.trigger(de,{isSyncForced:i});return}if(t===I.ADMIN_STOP_MAIN_CAM){this._sessionEvents.trigger(le,{isSyncForced:i});return}(t===I.RESUME_MAIN_CAM||t===I.PAUSE_MAIN_CAM)&&n&&this._sessionEvents.trigger(L,{isSyncForced:i});const o=e.getHeader(In);this._sessionEvents.trigger(_e,{mainCam:t,resolutionMainCam:o})});r(this,"_triggerMicControl",e=>{const t=e.getHeader(An),i=e.getHeader(qe)===B.ADMIN_SYNC_FORCED;t===k.ADMIN_START_MIC?this._sessionEvents.trigger(Se,{isSyncForced:i}):t===k.ADMIN_STOP_MIC&&this._sessionEvents.trigger(he,{isSyncForced:i})});r(this,"_triggerUseLicense",e=>{const t=e.getHeader(Nn);this._sessionEvents.trigger(re,t)});r(this,"_handleNewInfo",e=>{const{originator:t}=e;if(t!=="remote")return;const{request:n}=e,i=n.getHeader(_n);if(i)switch(i){case dn:{this._triggerEnterRoom(n),this._maybeTriggerChannels(n);break}case pn:{this._maybeHandleNotify(n);break}case p:{this._triggerShareState(n);break}case Le:{this._triggerMainCamControl(n);break}case un:{this._triggerMicControl(n);break}case Cn:{this._triggerUseLicense(n);break}case Dn:{this._maybeTriggerParticipantMoveRequest(n);break}}});r(this,"_handleSipEvent",({request:e})=>{this._maybeHandleNotify(e)});r(this,"_maybeHandleNotify",e=>{const t=e.getHeader(vn);if(t){const n=JSON.parse(t);this._handleNotify(n)}});r(this,"_handleEnded",e=>{const{originator:t}=e;t===Be&&this._sessionEvents.trigger(Ee,e),this._restoreSession()});this.JsSIP=e,this._sessionEvents=new we(ye),this._uaEvents=new we(ve),this._cancelableConnect=new N.CancelableRequest(this._connect,{moduleName:R,afterCancelRequest:()=>{this._cancelableInitUa.cancelRequest(),this._cancelableDisconnect.cancelRequest()}}),this._cancelableInitUa=new N.CancelableRequest(this._initUa,{moduleName:R}),this._cancelableDisconnect=new N.CancelableRequest(this._disconnect,{moduleName:R}),this._cancelableSet=new N.CancelableRequest(this._set,{moduleName:R}),this._cancelableCall=new N.CancelableRequest(this._call,{moduleName:R}),this._cancelableAnswer=new N.CancelableRequest(this._answer,{moduleName:R}),this._cancelableSendDTMF=new N.CancelableRequest(this._sendDTMF,{moduleName:R}),this.onSession(w,this._handleShareState),this.onSession(me,this._handleNewInfo),this.on(ee,this._handleSipEvent),this.onSession(A,this._handleEnded),this.onSession(M,this._handleEnded)}async register(){return new Promise((e,t)=>{this.isRegisterConfig&&this.ua?(this.ua.on(m,e),this.ua.on(D,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(Z,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(O,l),h.start()})}async replaceMediaStream(e,t){if(!this.rtcSession)throw new Error("No rtcSession established");const{contentHint:n}=t??{},i=v(e,{contentHint:n});return this.rtcSession.replaceMediaStream(i,t)}async askPermissionToEnableCam(e={}){if(!this.rtcSession)throw new Error("No rtcSession established");const t=[Wn];return this.rtcSession.sendInfo(Le,void 0,{noTerminateWhenError:!0,...e,extraHeaders:t}).catch(n=>{if($n(n))throw n})}get isPendingPresentation(){return!!this.promisePendingStartPresentation||!!this.promisePendingStopPresentation}async _sendPresentationWithDuplicatedCalls({rtcSession:e,stream:t,presentationOptions:n,options:i={callLimit:Kn}}){const o=async()=>this._sendPresentation(e,t,n),a=()=>!!this._streamPresentationCurrent;return this._cancelableSendPresentationWithRepeatedCalls=Ue.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():`${Fn()}`,T=kn(o),d=T(l),u=new this.JsSIP.WebSocketInterface(n);return{configuration:{password:t,register:a,uri:d,display_name:ke(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=ut,isNeedReinvite:i=!0,isP2P:o=!1,contentHint:a="detail",sendEncodings:c,onAddedTransceiver:E}){const _=v(t,{contentHint:a});this._streamPresentationCurrent=_;const h=o?[Un]:[yn],S=e.sendInfo(p,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 Xn(T,t,n)}).then(()=>t).catch(l=>{throw this._removeStreamPresentationCurrent(),this._sessionEvents.trigger(q,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(p,void 0,{extraHeaders:[wn]})}async stopPresentation({isP2P:e=!1}={}){this._cancelSendPresentationWithRepeatedCalls();const t=this._streamPresentationCurrent;let n=this.promisePendingStartPresentation??Promise.resolve();const i=e?[Ln]:[bn],o=this.establishedRTCSession;return o&&t&&(n=n.then(async()=>o.sendInfo(p,void 0,{extraHeaders:i})).then(async()=>o.stopPresentation(t)).catch(a=>{throw this._sessionEvents.trigger(q,a),a})),!o&&t&&this._sessionEvents.trigger(De,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 xn(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(U)}async waitSyncMediaState(){return this.waitSession(L)}async sendChannels({inputChannels:e,outputChannels:t}){if(!this.rtcSession)throw new Error("No rtcSession established");const n=`${He}: ${e}`,i=`${We}: ${t}`,o=[n,i];return this.rtcSession.sendInfo(hn,void 0,{extraHeaders:o})}async sendMediaState({cam:e,mic:t},n={}){if(!this.rtcSession)throw new Error("No rtcSession established");const i=`${fn}: currentstate`,o=`${On}: ${Number(e)}`,a=`${mn}: ${Number(t)}`,c=[i,o,a];return this.rtcSession.sendInfo(Sn,void 0,{noTerminateWhenError:!0,...n,extraHeaders:c})}async _sendRefusalToTurnOn(e,t={}){if(!this.rtcSession)throw new Error("No rtcSession established");const c=[`${Pn}: ${e==="mic"?0:1}`];return this.rtcSession.sendInfo(Tn,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=Ge;exports.EEventsMainCAM=I;exports.EEventsMic=k;exports.EEventsSyncMediaState=B;exports.EMimeTypesVideoCodecs=ft;exports.EUseLicense=It;exports.NOT_FOUND=xe;exports.PARTICIPANT_MOVE_REQUEST_TO_PARTICIPANTS=V;exports.PARTICIPANT_MOVE_REQUEST_TO_SPECTATORS=x;exports.REJECTED=X;exports.SESSION_EVENT_NAMES=ye;exports.SipConnector=ls;exports.UA_EVENT_NAMES=ve;exports.causes=Jt;exports.constants=Xt;exports.disableDebug=jt;exports.enableDebug=zt;exports.eventNames=Qt;exports.hasCanceledCallError=Zn;exports.logger=y;exports.setEncodingsToSender=Pt;exports.setParametersToSender=At;
@@ -1,314 +0,0 @@
1
- import { IncomingInfoEvent, IncomingRTCSessionEvent, IncomingRequest, OutgoingInfoEvent, RTCSession, RegisteredEvent, UA, UAConfigurationParams, URI, UnRegisteredEvent, WebSocketInterface } from '@krivega/jssip';
2
- import { TEventSession, TEventUA } from './eventNames';
3
- import { TContentHint, TCustomError, TJsSIP, TOnAddedTransceiver } from './types';
4
- export declare const hasCanceledCallError: (error?: TCustomError) => boolean;
5
- type TChannels = {
6
- inputChannels: string;
7
- outputChannels: string;
8
- };
9
- type TMediaState = {
10
- cam: boolean;
11
- mic: boolean;
12
- };
13
- type TOptionsInfoMediaState = {
14
- noTerminateWhenError?: boolean;
15
- };
16
- declare const CMD_CHANNELS = "channels";
17
- declare const CMD_WEBCAST_STARTED = "WebcastStarted";
18
- declare const CMD_ADDED_TO_LIST_MODERATORS = "addedToListModerators";
19
- declare const CMD_REMOVED_FROM_LIST_MODERATORS = "removedFromListModerators";
20
- declare const CMD_ACCEPTING_WORD_REQUEST = "ParticipationRequestAccepted";
21
- declare const CMD_CANCELLING_WORD_REQUEST = "ParticipationRequestRejected";
22
- declare const CMD_MOVE_REQUEST_TO_STREAM = "ParticipantMovedToWebcast";
23
- declare const CMD_CONFERENCE_PARTICIPANT_TOKEN_ISSUED = "ConferenceParticipantTokenIssued";
24
- type TAddedToListModeratorsInfoNotify = {
25
- cmd: typeof CMD_ADDED_TO_LIST_MODERATORS;
26
- conference: string;
27
- };
28
- type TRemovedFromListModeratorsInfoNotify = {
29
- cmd: typeof CMD_REMOVED_FROM_LIST_MODERATORS;
30
- conference: string;
31
- };
32
- type TAcceptingWordRequestInfoNotify = {
33
- cmd: typeof CMD_ACCEPTING_WORD_REQUEST;
34
- body: {
35
- conference: string;
36
- };
37
- };
38
- type TCancellingWordRequestInfoNotify = {
39
- cmd: typeof CMD_CANCELLING_WORD_REQUEST;
40
- body: {
41
- conference: string;
42
- };
43
- };
44
- type TMoveRequestToStreamInfoNotify = {
45
- cmd: typeof CMD_MOVE_REQUEST_TO_STREAM;
46
- body: {
47
- conference: string;
48
- };
49
- };
50
- type TConferenceParticipantTokenIssued = {
51
- cmd: typeof CMD_CONFERENCE_PARTICIPANT_TOKEN_ISSUED;
52
- body: {
53
- conference: string;
54
- participant: string;
55
- jwt: string;
56
- };
57
- };
58
- type TWebcastInfoNotify = {
59
- cmd: typeof CMD_WEBCAST_STARTED;
60
- body: {
61
- conference: string;
62
- type: string;
63
- };
64
- };
65
- type TChannelsInfoNotify = {
66
- cmd: typeof CMD_CHANNELS;
67
- input: string;
68
- output: string;
69
- };
70
- type TInfoNotify = Omit<TAddedToListModeratorsInfoNotify | TChannelsInfoNotify | TRemovedFromListModeratorsInfoNotify, 'cmd'> & {
71
- cmd: string;
72
- };
73
- type TOptionsExtraHeaders = {
74
- extraHeaders?: string[];
75
- };
76
- type TOntrack = (track: RTCTrackEvent) => void;
77
- type TParametersConnection = TOptionsExtraHeaders & {
78
- displayName?: string;
79
- user?: string;
80
- password?: string;
81
- register?: boolean;
82
- sipServerUrl: string;
83
- sipWebSocketServerURL: string;
84
- remoteAddress?: string;
85
- sessionTimers?: boolean;
86
- registerExpires?: number;
87
- connectionRecoveryMinInterval?: number;
88
- connectionRecoveryMaxInterval?: number;
89
- userAgent?: string;
90
- };
91
- type TParametersCheckTelephony = {
92
- displayName: string;
93
- sipServerUrl: string;
94
- sipWebSocketServerURL: string;
95
- userAgent?: string;
96
- remoteAddress?: string;
97
- extraHeaders?: string[];
98
- };
99
- type TParametersCreateUa = UAConfigurationParams & {
100
- remoteAddress?: string;
101
- extraHeaders?: string[];
102
- };
103
- type TConnect = (parameters: TParametersConnection, options?: {
104
- callLimit?: number;
105
- }) => Promise<UA>;
106
- type TInitUa = (parameters: TParametersConnection) => Promise<UA>;
107
- type TCreateUa = (parameters: TParametersCreateUa) => UA;
108
- type TStart = () => Promise<UA>;
109
- type TSet = ({ displayName, password, }: {
110
- displayName?: string;
111
- password?: string;
112
- }) => Promise<boolean>;
113
- type TParametersAnswerToIncomingCall = {
114
- mediaStream: MediaStream;
115
- extraHeaders?: TOptionsExtraHeaders['extraHeaders'];
116
- ontrack?: TOntrack;
117
- iceServers?: RTCIceServer[];
118
- directionVideo?: RTCRtpTransceiverDirection;
119
- directionAudio?: RTCRtpTransceiverDirection;
120
- contentHint?: TContentHint;
121
- sendEncodings?: RTCRtpEncodingParameters[];
122
- offerToReceiveAudio?: boolean;
123
- offerToReceiveVideo?: boolean;
124
- onAddedTransceiver?: TOnAddedTransceiver;
125
- };
126
- type TParametersCall = TParametersAnswerToIncomingCall & {
127
- number: string;
128
- };
129
- type TCall = (parameters: TParametersCall) => Promise<RTCPeerConnection>;
130
- type TDisconnect = () => Promise<void>;
131
- type TAnswerToIncomingCall = (parameters: TParametersAnswerToIncomingCall) => Promise<RTCPeerConnection>;
132
- type TSendDTMF = (tone: number | string) => Promise<void>;
133
- type THangUp = () => Promise<void>;
134
- export default class SipConnector {
135
- private _isRegisterConfig;
136
- private _connectionConfiguration;
137
- private _remoteStreams;
138
- private readonly JsSIP;
139
- private readonly _sessionEvents;
140
- private readonly _uaEvents;
141
- private readonly _cancelableConnect;
142
- private _cancelableConnectWithRepeatedCalls;
143
- private _cancelableSendPresentationWithRepeatedCalls;
144
- private readonly _cancelableInitUa;
145
- private readonly _cancelableDisconnect;
146
- private readonly _cancelableSet;
147
- private readonly _cancelableCall;
148
- private readonly _cancelableAnswer;
149
- private readonly _cancelableSendDTMF;
150
- private getSipServerUrl;
151
- promisePendingStartPresentation?: Promise<MediaStream>;
152
- promisePendingStopPresentation?: Promise<MediaStream | void>;
153
- ua?: UA;
154
- rtcSession?: RTCSession;
155
- incomingRTCSession?: RTCSession;
156
- _streamPresentationCurrent?: MediaStream;
157
- socket?: WebSocketInterface;
158
- constructor({ JsSIP }: {
159
- JsSIP: TJsSIP;
160
- });
161
- connect: TConnect;
162
- initUa: TInitUa;
163
- set: TSet;
164
- call: TCall;
165
- disconnect: TDisconnect;
166
- answerToIncomingCall: TAnswerToIncomingCall;
167
- sendDTMF: TSendDTMF;
168
- hangUp: THangUp;
169
- register(): Promise<RegisteredEvent>;
170
- unregister(): Promise<UnRegisteredEvent>;
171
- tryRegister: () => Promise<RegisteredEvent>;
172
- sendOptions(target: URI | string, body?: string, extraHeaders?: string[]): Promise<void>;
173
- ping(body?: string, extraHeaders?: string[]): Promise<void>;
174
- checkTelephony({ userAgent, displayName, sipServerUrl, sipWebSocketServerURL, remoteAddress, extraHeaders, }: TParametersCheckTelephony): Promise<void>;
175
- replaceMediaStream(mediaStream: MediaStream, options?: {
176
- deleteExisting?: boolean;
177
- addMissing?: boolean;
178
- forceRenegotiation?: boolean;
179
- contentHint?: TContentHint;
180
- sendEncodings?: RTCRtpEncodingParameters[];
181
- onAddedTransceiver?: TOnAddedTransceiver;
182
- }): Promise<void>;
183
- declineToIncomingCall: ({ statusCode }?: {
184
- statusCode?: number | undefined;
185
- }) => Promise<unknown>;
186
- busyIncomingCall: () => Promise<unknown>;
187
- removeIncomingSession: () => void;
188
- askPermissionToEnableCam(options?: TOptionsInfoMediaState): Promise<void>;
189
- get isPendingPresentation(): boolean;
190
- private readonly _connectWithDuplicatedCalls;
191
- private _sendPresentationWithDuplicatedCalls;
192
- private hasEqualConnectionConfiguration;
193
- private createUaConfiguration;
194
- private _sendPresentation;
195
- startPresentation(stream: MediaStream, { isNeedReinvite, isP2P, maxBitrate, contentHint, sendEncodings, onAddedTransceiver, }?: {
196
- isNeedReinvite?: boolean;
197
- isP2P?: boolean;
198
- maxBitrate?: number;
199
- contentHint?: TContentHint;
200
- sendEncodings?: RTCRtpEncodingParameters[];
201
- onAddedTransceiver?: TOnAddedTransceiver;
202
- }, options?: {
203
- callLimit: number;
204
- }): Promise<MediaStream>;
205
- private sendMustStopPresentation;
206
- stopPresentation({ isP2P, }?: {
207
- isP2P?: boolean;
208
- }): Promise<MediaStream | void>;
209
- updatePresentation(stream: MediaStream, { isP2P, maxBitrate, contentHint, sendEncodings, onAddedTransceiver, }?: {
210
- isP2P?: boolean;
211
- maxBitrate?: number;
212
- contentHint?: TContentHint;
213
- sendEncodings?: RTCRtpEncodingParameters[];
214
- onAddedTransceiver?: TOnAddedTransceiver;
215
- }): Promise<MediaStream | void>;
216
- _removeStreamPresentationCurrent(): void;
217
- _resetPresentation(): void;
218
- _cancelRequestsAndResetPresentation(): void;
219
- handleNewRTCSession: ({ originator, session: rtcSession }: IncomingRTCSessionEvent) => void;
220
- on<T = void>(eventName: TEventUA, handler: (data: T) => void): () => void;
221
- once<T>(eventName: TEventUA, handler: (data: T) => void): () => void;
222
- onceRace<T>(eventNames: TEventUA[], handler: (data: T, eventName: string) => void): () => void;
223
- wait<T>(eventName: TEventUA): Promise<T>;
224
- off<T>(eventName: TEventUA, handler: (data: T) => void): void;
225
- onSession<T>(eventName: TEventSession, handler: (data: T) => void): () => void;
226
- onceSession<T>(eventName: TEventSession, handler: (data: T) => void): () => void;
227
- onceRaceSession<T>(eventNames: TEventSession[], handler: (data: T, eventName: string) => void): () => void;
228
- waitSession<T>(eventName: TEventSession): Promise<T>;
229
- offSession<T>(eventName: TEventSession, handler: (data: T) => void): void;
230
- isConfigured(): boolean;
231
- getConnectionConfiguration(): {
232
- sipServerUrl?: string;
233
- displayName?: string;
234
- register?: boolean;
235
- user?: string;
236
- password?: string;
237
- number?: string;
238
- answer?: boolean;
239
- };
240
- getRemoteStreams(): MediaStream[] | undefined;
241
- get connection(): RTCPeerConnection | undefined;
242
- get remoteCallerData(): {
243
- displayName: string | undefined;
244
- host: string | undefined;
245
- incomingNumber: string | undefined;
246
- rtcSession: RTCSession | undefined;
247
- };
248
- get requested(): boolean;
249
- get establishedRTCSession(): RTCSession | undefined;
250
- get isRegistered(): boolean;
251
- get isRegisterConfig(): boolean;
252
- get isCallActive(): boolean;
253
- get isAvailableIncomingCall(): boolean;
254
- _connect: TConnect;
255
- _initUa: TInitUa;
256
- _createUa: TCreateUa;
257
- _start: TStart;
258
- _set: TSet;
259
- _disconnectWithoutCancelRequests: TDisconnect;
260
- _disconnect: () => Promise<void>;
261
- _call: TCall;
262
- _answer: TAnswerToIncomingCall;
263
- _handleCall: ({ ontrack }: {
264
- ontrack?: TOntrack;
265
- }) => Promise<RTCPeerConnection>;
266
- _restoreSession: () => void;
267
- _sendDTMF: TSendDTMF;
268
- _generateStream(videoTrack: MediaStreamTrack, audioTrack?: MediaStreamTrack): MediaStream;
269
- _generateAudioStream(audioTrack: MediaStreamTrack): MediaStream;
270
- _generateStreams(remoteTracks: MediaStreamTrack[]): MediaStream[];
271
- _generateAudioStreams(remoteTracks: MediaStreamTrack[]): MediaStream[];
272
- _hangUpWithoutCancelRequests: THangUp;
273
- _cancelRequests(): void;
274
- _cancelConnectWithRepeatedCalls(): void;
275
- _cancelSendPresentationWithRepeatedCalls(): void;
276
- _cancelCallRequests(): void;
277
- _cancelActionsRequests(): void;
278
- _handleShareState: (eventName: string) => void;
279
- _maybeTriggerChannels: (request: IncomingRequest) => void;
280
- _handleNotify: (header: TInfoNotify) => void;
281
- _triggerRemovedFromListModeratorsNotify: ({ conference, }: TRemovedFromListModeratorsInfoNotify) => void;
282
- _triggerAddedToListModeratorsNotify: ({ conference }: TAddedToListModeratorsInfoNotify) => void;
283
- _triggerWebcastStartedNotify: ({ body: { conference, type } }: TWebcastInfoNotify) => void;
284
- _triggerWebcastStoppedNotify: ({ body: { conference, type } }: TWebcastInfoNotify) => void;
285
- _triggerAccountChangedNotify: () => void;
286
- _triggerAccountDeletedNotify: () => void;
287
- _triggerConferenceParticipantTokenIssued: ({ body: { conference, participant, jwt }, }: TConferenceParticipantTokenIssued) => void;
288
- _triggerChannelsNotify: (channelsInfo: TChannelsInfoNotify) => void;
289
- _triggerParticipationAcceptingWordRequest: ({ body: { conference }, }: TAcceptingWordRequestInfoNotify) => void;
290
- _triggerParticipationCancellingWordRequest: ({ body: { conference }, }: TCancellingWordRequestInfoNotify) => void;
291
- _triggerParticipantMoveRequestToStream: ({ body: { conference }, }: TMoveRequestToStreamInfoNotify) => void;
292
- _triggerEnterRoom: (request: IncomingRequest) => void;
293
- _triggerShareState: (request: IncomingRequest) => void;
294
- _maybeTriggerParticipantMoveRequest: (request: IncomingRequest) => void;
295
- _triggerMainCamControl: (request: IncomingRequest) => void;
296
- _triggerMicControl: (request: IncomingRequest) => void;
297
- _triggerUseLicense: (request: IncomingRequest) => void;
298
- _handleNewInfo: (info: IncomingInfoEvent | OutgoingInfoEvent) => void;
299
- _handleSipEvent: ({ request }: {
300
- request: IncomingRequest;
301
- }) => void;
302
- _maybeHandleNotify: (request: IncomingRequest) => void;
303
- waitChannels(): Promise<TChannels>;
304
- waitSyncMediaState(): Promise<{
305
- isSyncForced: boolean;
306
- }>;
307
- sendChannels({ inputChannels, outputChannels }: TChannels): Promise<void>;
308
- sendMediaState({ cam, mic }: TMediaState, options?: TOptionsInfoMediaState): Promise<void>;
309
- _sendRefusalToTurnOn(type: 'cam' | 'mic', options?: TOptionsInfoMediaState): Promise<void>;
310
- sendRefusalToTurnOnMic(options?: TOptionsInfoMediaState): Promise<void>;
311
- sendRefusalToTurnOnCam(options?: TOptionsInfoMediaState): Promise<void>;
312
- _handleEnded: (error: TCustomError) => void;
313
- }
314
- export {};
@@ -1,78 +0,0 @@
1
- import { IncomingInfoEvent } from '@krivega/jssip';
2
- import { default as BaseSession } from './BaseSession.mock';
3
- export declare const FAILED_CONFERENCE_NUMBER = "777";
4
- export declare const createDeclineStartPresentationError: () => Error;
5
- declare class RTCSessionMock extends BaseSession {
6
- url: string;
7
- status_code?: number;
8
- private _isEnded;
9
- private static startPresentationError?;
10
- private static countStartPresentationError;
11
- private static countStartsPresentation;
12
- constructor({ url, mediaStream, eventHandlers, originator, }: {
13
- url?: string;
14
- mediaStream?: any;
15
- eventHandlers?: any;
16
- originator: string;
17
- });
18
- static setStartPresentationError(startPresentationError: Error, { count }?: {
19
- count?: number;
20
- }): void;
21
- static resetStartPresentationError(): void;
22
- startPresentation(stream: MediaStream): Promise<MediaStream>;
23
- initPeerconnection(mediaStream: any): boolean;
24
- createPeerconnection(sendedStream: any): void;
25
- connect(target: string): void;
26
- /**
27
- * answer
28
- *
29
- * @param {Object} arg1 - The argument 1
30
- * @param {Object} arg1.mediaStream - The media stream
31
- * @param {Array} arg1.eventHandlers - The event handlers
32
-
33
- * @returns {undefined}
34
- */
35
- answer: jest.Mock<void, [any], any>;
36
- terminate({ status_code }?: {
37
- status_code?: number;
38
- }): this;
39
- terminateAsync({ status_code }?: {
40
- status_code?: number;
41
- }): Promise<void>;
42
- terminateRemote({ status_code }?: {
43
- status_code?: number;
44
- }): this;
45
- _addStream(stream: Record<string, () => any[]>, action?: string): void;
46
- _forEachSenders(callback: {
47
- ({ track }: {
48
- track: any;
49
- }): void;
50
- ({ track }: {
51
- track: any;
52
- }): void;
53
- (argument0: any): void;
54
- }): RTCRtpSender[];
55
- _toggleMuteAudio(mute: boolean): void;
56
- _toggleMuteVideo(mute: boolean): void;
57
- mute(options: {
58
- audio: any;
59
- video: any;
60
- }): void;
61
- unmute(options: {
62
- audio: any;
63
- video: any;
64
- }): void;
65
- isMuted(): {
66
- audio: boolean;
67
- video: boolean;
68
- };
69
- replaceMediaStream(mediaStream: any): Promise<any>;
70
- _onmute({ audio, video }: {
71
- audio: boolean;
72
- video: boolean;
73
- }): void;
74
- sendInfo(): Promise<void>;
75
- isEnded(): boolean;
76
- newInfo(data: IncomingInfoEvent): void;
77
- }
78
- export default RTCSessionMock;
@@ -1,103 +0,0 @@
1
- import { UA as IUA, IncomingRequest, UAConfiguration, UAConfigurationParams } from '@krivega/jssip';
2
- import { default as Events } from 'events-constructor';
3
- import { TEventUA, UA_EVENT_NAMES } from '../eventNames';
4
- import { default as Registrator } from './Registrator.mock';
5
- import { default as RTCSessionMock } from './RTCSessionMock';
6
- export declare const PASSWORD_CORRECT = "PASSWORD_CORRECT";
7
- export declare const PASSWORD_CORRECT_2 = "PASSWORD_CORRECT_2";
8
- export declare const NAME_INCORRECT = "NAME_INCORRECT";
9
- export declare const createWebsocketHandshakeTimeoutError: (sipServerUrl: string) => {
10
- socket: {
11
- _url: string;
12
- _sip_uri: string;
13
- _via_transport: string;
14
- _ws: null;
15
- };
16
- error: boolean;
17
- code: number;
18
- reason: string;
19
- };
20
- declare class UA implements IUA {
21
- private static isAvailableTelephony;
22
- private static startError?;
23
- private static countStartError;
24
- private static countStarts;
25
- static setStartError(startError: unknown, { count }?: {
26
- count?: number;
27
- }): void;
28
- static resetStartError(): void;
29
- static setAvailableTelephony(): void;
30
- static setNotAvailableTelephony(): void;
31
- _events: Events<typeof UA_EVENT_NAMES>;
32
- _startedTimeout?: ReturnType<typeof setTimeout>;
33
- _stopedTimeout?: ReturnType<typeof setTimeout>;
34
- session?: RTCSessionMock;
35
- _isRegistered?: boolean;
36
- _isConnected?: boolean;
37
- configuration: UAConfiguration;
38
- _registrator: Registrator;
39
- constructor(_configuration: UAConfigurationParams);
40
- isConnected(): boolean;
41
- /**
42
- * start
43
- *
44
- * @returns {undefined}
45
- */
46
- start(): void;
47
- /**
48
- * stop
49
- *
50
- * @returns {undefined}
51
- */
52
- stop(): void;
53
- call: jest.Mock<RTCSessionMock, [url: string, parameters: any], any>;
54
- on(eventName: TEventUA, handler: any): this;
55
- once(eventName: TEventUA, handler: any): this;
56
- off(eventName: TEventUA, handler: any): this;
57
- removeAllListeners(): this;
58
- trigger(eventName: TEventUA, data?: any): void;
59
- /**
60
- * terminateSessions
61
- *
62
- * @returns {undefined}
63
- */
64
- terminateSessions(): void;
65
- /**
66
- * set
67
- *
68
- * @param {string} key - key
69
- * @param {string} value - value
70
- *
71
- * @returns {boolean} true
72
- */
73
- set(key: string, value: any): boolean;
74
- /**
75
- * register
76
- *
77
- * @returns {undefined}
78
- */
79
- register(): void;
80
- /**
81
- * unregister
82
- *
83
- * @returns {undefined}
84
- */
85
- unregister(): void;
86
- /**
87
- * isRegistered
88
- *
89
- * @returns {boolean} isRegistered
90
- */
91
- isRegistered(): boolean;
92
- /**
93
- * isStarted
94
- *
95
- * @returns {boolean} isStarted
96
- */
97
- isStarted(): boolean;
98
- registrator(): Registrator;
99
- newSipEvent(data: {
100
- request: IncomingRequest;
101
- }): void;
102
- }
103
- export default UA;
package/dist/utils.d.ts DELETED
@@ -1,4 +0,0 @@
1
- export declare function resolveSipUrl(serverUrl: string): (string: string) => string;
2
- export declare const parseDisplayName: (displayName: string) => string;
3
- export declare const generateUserId: () => number;
4
- export declare const hasVideoTracks: (remoteTracks: MediaStreamTrack[]) => boolean;
File without changes
File without changes
File without changes
File without changes