sip-connector 14.1.2-6 → 15.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/dist/@SipConnector-CZo7A8_q.cjs +1 -0
  2. package/dist/@SipConnector-DbvV1Leg.js +2247 -0
  3. package/dist/ApiManager/@ApiManager.d.ts +59 -0
  4. package/dist/ApiManager/constants.d.ts +71 -0
  5. package/dist/ApiManager/eventNames.d.ts +33 -0
  6. package/dist/ApiManager/index.d.ts +3 -0
  7. package/dist/ApiManager/types.d.ts +99 -0
  8. package/dist/CallManager/@CallManager.d.ts +26 -0
  9. package/dist/CallManager/AbstractCallStrategy.d.ts +47 -0
  10. package/dist/CallManager/MCUCallStrategy.d.ts +30 -0
  11. package/dist/CallManager/RemoteStreamsManager.d.ts +8 -0
  12. package/dist/CallManager/causes.d.ts +13 -0
  13. package/dist/CallManager/eventNames.d.ts +45 -0
  14. package/dist/CallManager/hasCanceledCallError.d.ts +2 -0
  15. package/dist/CallManager/index.d.ts +7 -0
  16. package/dist/CallManager/types.d.ts +59 -0
  17. package/dist/ConnectionManager/@ConnectionManager.d.ts +48 -0
  18. package/dist/ConnectionManager/ConfigurationManager.d.ts +60 -0
  19. package/dist/ConnectionManager/ConnectionFlow.d.ts +84 -0
  20. package/dist/ConnectionManager/ConnectionStateMachine.d.ts +61 -0
  21. package/dist/ConnectionManager/RegistrationManager.d.ts +17 -0
  22. package/dist/ConnectionManager/SipOperations.d.ts +32 -0
  23. package/dist/ConnectionManager/UAFactory.d.ts +50 -0
  24. package/dist/ConnectionManager/eventNames.d.ts +16 -0
  25. package/dist/ConnectionManager/index.d.ts +3 -0
  26. package/dist/IncomingCallManager/@IncomingCallManager.d.ts +37 -0
  27. package/dist/IncomingCallManager/eventNames.d.ts +13 -0
  28. package/dist/IncomingCallManager/index.d.ts +2 -0
  29. package/dist/PresentationManager/@PresentationManager.d.ts +47 -0
  30. package/dist/PresentationManager/constants.d.ts +1 -0
  31. package/dist/PresentationManager/eventNames.d.ts +11 -0
  32. package/dist/PresentationManager/index.d.ts +2 -0
  33. package/dist/PresentationManager/types.d.ts +2 -0
  34. package/dist/SipConnector/@SipConnector.d.ts +96 -0
  35. package/dist/SipConnector/eventNames.d.ts +4 -0
  36. package/dist/SipConnector/index.d.ts +2 -0
  37. package/dist/{src/SipConnectorFacade → SipConnectorFacade}/SipConnectorFacade.d.ts +7 -16
  38. package/dist/{src/__fixtures__ → __fixtures__}/BaseSession.mock.d.ts +9 -9
  39. package/dist/{src/__fixtures__ → __fixtures__}/RTCPeerConnectionMock.d.ts +6 -0
  40. package/dist/{src/__fixtures__ → __fixtures__}/RTCSessionMock.d.ts +13 -8
  41. package/dist/{src/__fixtures__ → __fixtures__}/UA.mock.d.ts +13 -15
  42. package/dist/{src → __fixtures__}/eventNames.d.ts +1 -1
  43. package/dist/{src/__fixtures__ → __fixtures__}/index.d.ts +4 -4
  44. package/dist/{src/__fixtures__ → __fixtures__}/jssip.mock.d.ts +3 -3
  45. package/dist/doMock.cjs +1 -1
  46. package/dist/{src/doMock.d.ts → doMock.d.ts} +2 -1
  47. package/dist/doMock.js +442 -341
  48. package/dist/index.cjs +1 -1
  49. package/dist/index.d.ts +14 -0
  50. package/dist/index.js +721 -674
  51. package/dist/{src/setParametersToSender → setParametersToSender}/resolveHasNeedToUpdateItemEncoding.d.ts +1 -1
  52. package/dist/{src/tools → tools}/__fixtures__/connectToServer.d.ts +2 -2
  53. package/dist/{src/tools → tools}/__fixtures__/processRequest.d.ts +1 -1
  54. package/dist/{src/tools → tools}/error/getLinkError.d.ts +1 -1
  55. package/dist/{src/tools → tools}/error/getTypeFromError.d.ts +1 -1
  56. package/dist/{src/tools → tools}/error/getValuesFromError.d.ts +1 -1
  57. package/dist/{src/tools → tools}/index.d.ts +1 -1
  58. package/dist/{src/tools → tools}/prepareMediaStream.d.ts +1 -1
  59. package/dist/{src/tools → tools}/setVideoTrackContentHints.d.ts +1 -1
  60. package/dist/{src/tools → tools}/syncMediaState/index.d.ts +1 -1
  61. package/dist/{src/tools → tools}/syncMediaState/resolveOnStartMainCam.d.ts +1 -1
  62. package/dist/{src/tools → tools}/syncMediaState/resolveOnStartMic.d.ts +1 -1
  63. package/dist/{src/tools → tools}/syncMediaState/resolveOnStopMainCam.d.ts +1 -1
  64. package/dist/{src/tools → tools}/syncMediaState/resolveOnStopMic.d.ts +1 -1
  65. package/dist/types.d.ts +23 -0
  66. package/dist/{src/videoSendingBalancer → videoSendingBalancer}/balance.d.ts +1 -1
  67. package/dist/{src/videoSendingBalancer → videoSendingBalancer}/getMaxBitrateByWidth.d.ts +1 -0
  68. package/dist/{src/videoSendingBalancer → videoSendingBalancer}/getMaxBitrateByWidthAndCodec.d.ts +1 -0
  69. package/dist/{src/videoSendingBalancer → videoSendingBalancer}/index.d.ts +1 -1
  70. package/dist/{src/videoSendingBalancer → videoSendingBalancer}/processSender.d.ts +1 -1
  71. package/package.json +35 -42
  72. package/dist/SipConnector-D9frFCEK.js +0 -1352
  73. package/dist/SipConnector-J07EhbbA.cjs +0 -1
  74. package/dist/src/SipConnector.d.ts +0 -235
  75. package/dist/src/causes.d.ts +0 -23
  76. package/dist/src/headers.d.ts +0 -37
  77. package/dist/src/index.d.ts +0 -11
  78. package/dist/src/types.d.ts +0 -69
  79. /package/dist/{src → ConnectionManager}/getExtraHeadersRemoteAddress.d.ts +0 -0
  80. /package/dist/{src/SipConnectorFacade → SipConnectorFacade}/index.d.ts +0 -0
  81. /package/dist/{src/__fixtures__ → __fixtures__}/RTCRtpSenderMock.d.ts +0 -0
  82. /package/dist/{src/__fixtures__ → __fixtures__}/Registrator.mock.d.ts +0 -0
  83. /package/dist/{src/__fixtures__ → __fixtures__}/Request.mock.d.ts +0 -0
  84. /package/dist/{src/__fixtures__ → __fixtures__}/WebSocketInterface.mock.d.ts +0 -0
  85. /package/dist/{src/__fixtures__ → __fixtures__}/accountNotify.d.ts +0 -0
  86. /package/dist/{src/__fixtures__ → __fixtures__}/channels.d.ts +0 -0
  87. /package/dist/{src/__fixtures__ → __fixtures__}/channelsNotify.d.ts +0 -0
  88. /package/dist/{src/__fixtures__ → __fixtures__}/conferenceParticipantTokenIssuedNotify.d.ts +0 -0
  89. /package/dist/{src → __fixtures__}/constants.d.ts +0 -0
  90. /package/dist/{src/__fixtures__ → __fixtures__}/delayPromise.d.ts +0 -0
  91. /package/dist/{src/__fixtures__ → __fixtures__}/enterRoom.d.ts +0 -0
  92. /package/dist/{src/__fixtures__ → __fixtures__}/mediaState.d.ts +0 -0
  93. /package/dist/{src/__fixtures__ → __fixtures__}/participantMoveRequests.d.ts +0 -0
  94. /package/dist/{src/__fixtures__ → __fixtures__}/participantNotify.d.ts +0 -0
  95. /package/dist/{src/__fixtures__ → __fixtures__}/remoteCallerData.d.ts +0 -0
  96. /package/dist/{src/__fixtures__ → __fixtures__}/utils.d.ts +0 -0
  97. /package/dist/{src/__fixtures__ → __fixtures__}/webcastNotify.d.ts +0 -0
  98. /package/dist/{src/logger.d.ts → logger.d.ts} +0 -0
  99. /package/dist/{src/setParametersToSender → setParametersToSender}/configureDegradationPreference.d.ts +0 -0
  100. /package/dist/{src/setParametersToSender → setParametersToSender}/configureEmptyEncodings.d.ts +0 -0
  101. /package/dist/{src/setParametersToSender → setParametersToSender}/configureEncodings.d.ts +0 -0
  102. /package/dist/{src/setParametersToSender → setParametersToSender}/configureMaxBitrate.d.ts +0 -0
  103. /package/dist/{src/setParametersToSender → setParametersToSender}/configureScaleResolutionDownBy.d.ts +0 -0
  104. /package/dist/{src/setParametersToSender → setParametersToSender}/hasChangedRTCRtpSendParameters.d.ts +0 -0
  105. /package/dist/{src/setParametersToSender → setParametersToSender}/index.d.ts +0 -0
  106. /package/dist/{src/setParametersToSender → setParametersToSender}/setParametersToSender.d.ts +0 -0
  107. /package/dist/{src/tools → tools}/__fixtures__/call.d.ts +0 -0
  108. /package/dist/{src/tools → tools}/__fixtures__/hasValidUri.d.ts +0 -0
  109. /package/dist/{src/tools → tools}/__fixtures__/permissions.d.ts +0 -0
  110. /package/dist/{src/tools → tools}/__tests-utils__/parseObject.d.ts +0 -0
  111. /package/dist/{src/tools → tools}/__tests-utils__/resolveParseArray.d.ts +0 -0
  112. /package/dist/{src/tools → tools}/error/index.d.ts +0 -0
  113. /package/dist/{src/tools → tools}/error/stringifyMessage.d.ts +0 -0
  114. /package/dist/{src/tools → tools}/generateSimulcastEncodings.d.ts +0 -0
  115. /package/dist/{src/tools → tools}/getExtraHeaders.d.ts +0 -0
  116. /package/dist/{src/tools → tools}/getUserAgent.d.ts +0 -0
  117. /package/dist/{src/tools → tools}/hasPurgatory.d.ts +0 -0
  118. /package/dist/{src/tools → tools}/resolveUpdateTransceiver.d.ts +0 -0
  119. /package/dist/{src/tools/sendDTMFAccumulated.d.ts → tools/sendDtmfFAccumulated.d.ts} +0 -0
  120. /package/dist/{src/utils → utils}/errors.d.ts +0 -0
  121. /package/dist/{src/utils → utils}/findSenderByStream.d.ts +0 -0
  122. /package/dist/{src/utils → utils}/findVideoSender.d.ts +0 -0
  123. /package/dist/{src/utils → utils}/findVideoTrack.d.ts +0 -0
  124. /package/dist/{src/utils → utils}/getCodecFromSender.d.ts +0 -0
  125. /package/dist/{src/utils → utils}/replaceForbiddenSymbolsWithUnderscore.d.ts +0 -0
  126. /package/dist/{src/videoSendingBalancer → videoSendingBalancer}/hasAv1Codec.d.ts +0 -0
  127. /package/dist/{src/videoSendingBalancer → videoSendingBalancer}/hasIncludesString.d.ts +0 -0
  128. /package/dist/{src/videoSendingBalancer → videoSendingBalancer}/scaleBitrate.d.ts +0 -0
  129. /package/dist/{src/videoSendingBalancer → videoSendingBalancer}/scaleBitrateByCodec.d.ts +0 -0
  130. /package/dist/{src/videoSendingBalancer → videoSendingBalancer}/scaleResolutionAndBitrate.d.ts +0 -0
  131. /package/dist/{src/videoSendingBalancer → videoSendingBalancer}/setEncodingsToSender.d.ts +0 -0
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var te=Object.defineProperty;var oe=(n,e,t)=>e in n?te(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var a=(n,e,t)=>oe(n,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./SipConnector-J07EhbbA.cjs"),se=require("sequent-promises"),re=require("stack-promises"),_=require("debug"),ie=require("@krivega/cancelable-promise"),ce=require("repeated-calls"),ae=require("ts-debounce"),U=n=>{const{url:e,cause:t}=n;let o=e;return(t===s.BAD_MEDIA_DESCRIPTION||t===s.NOT_FOUND)&&(o=`${n.message.to.uri.user}@${n.message.to.uri.host}`),o};var W=(n=>(n.CONNECT_SERVER_FAILED="CONNECT_SERVER_FAILED",n.WRONG_USER_OR_PASSWORD="WRONG_USER_OR_PASSWORD",n.BAD_MEDIA_ERROR="BAD_MEDIA_ERROR",n.NOT_FOUND_ERROR="NOT_FOUND_ERROR",n.WS_CONNECTION_FAILED="WS_CONNECTION_FAILED",n.CONNECT_SERVER_FAILED_BY_LINK="CONNECT_SERVER_FAILED_BY_LINK",n))(W||{});const le=new Error("Unknown error"),ue=(n=le)=>{var r;const{cause:e,socket:t}=n;let o="CONNECT_SERVER_FAILED";switch(e){case"Forbidden":{o="WRONG_USER_OR_PASSWORD";break}case s.BAD_MEDIA_DESCRIPTION:{o="BAD_MEDIA_ERROR";break}case s.NOT_FOUND:{o="NOT_FOUND_ERROR";break}default:t!==void 0&&((r=t._ws)==null?void 0:r.readyState)===3?o="WS_CONNECTION_FAILED":U(n)!==void 0&&U(n)!==""&&(o="CONNECT_SERVER_FAILED_BY_LINK")}return o},de=n=>{let e="";try{e=JSON.stringify(n)}catch(t){s.logger("failed to stringify message",t)}return e},ge=new Error("Unknown error"),Ce=(n=ge)=>{const{code:e,cause:t,message:o}=n,r=U(n),i={code:"",cause:"",message:""};return typeof o=="object"&&o!==null?i.message=de(o):o&&(i.message=String(o)),r!==void 0&&r!==""&&(i.link=r),e!==void 0&&e!==""&&(i.code=e),t!==void 0&&t!==""&&(i.cause=t),i},Se=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:W,getLinkError:U,getTypeFromError:ue,getValuesFromError:Ce},Symbol.toStringTag,{value:"Module"})),fe=({sessionId:n,remoteAddress:e,isMutedAudio:t,isMutedVideo:o,isRegistered:r,isPresentationCall:i})=>{const c=[],l=t?"0":"1",u=o?"0":"1";return c.push(`X-Vinteo-Mic-State: ${l}`,`X-Vinteo-MainCam-State: ${u}`),(r===!1||r===void 0)&&c.push("X-Vinteo-Purgatory-Call: yes"),n!==void 0&&n!==""&&c.push(`X-Vinteo-Session: ${n}`),i===!0&&c.push("X-Vinteo-Presentation-Call: yes"),e!==void 0&&e!==""&&c.push(`X-Vinteo-Remote: ${e}`),c},me="[@*!|]",he="_",Re=n=>{let e=n;return e=e.replaceAll(new RegExp(me,"g"),he),e},pe=({appName:n,appVersion:e,browserName:t,browserVersion:o})=>{const i=`${Re(n)} ${e}`;return`ChromeNew - ${t?`${t} ${o}, ${i}`:i}`},Ee=({isUnifiedSdpSemantic:n,appVersion:e,browserName:t,browserVersion:o,appName:r})=>n?pe({appVersion:e,browserName:t,browserVersion:o,appName:r}):"Chrome",G="purgatory",I=n=>n===G,ye=n=>e=>[...e].map(o=>async()=>n(o)),Te=async({accumulatedKeys:n,sendKey:e,canRunTask:t})=>{const r=ye(e)(n);return se.sequentPromises(r,t)},Me=n=>t=>(s.logger("onStartMainCam"),n.onSession("admin-start-main-cam",t)),be=n=>t=>(s.logger("onStartMic"),n.onSession("admin-start-mic",t)),ve=n=>t=>(s.logger("onStopMainCam"),n.onSession("admin-stop-main-cam",t)),Ae=n=>t=>(s.logger("onStopMic"),n.onSession("admin-stop-mic",t)),_e=({sipConnector:n})=>{const e=(f,p)=>({isSyncForced:m=!1})=>{if(m){f();return}p()},t=Me(n),o=ve(n),r=be(n),i=Ae(n);let c=()=>{},l=()=>{},u=()=>{},g=()=>{};const S=({onStartMainCamForced:f,onStartMainCamNotForced:p,onStopMainCamForced:m,onStopMainCamNotForced:h,onStartMicForced:E,onStartMicNotForced:y,onStopMicForced:T,onStopMicNotForced:M})=>{const A=e(f,p);c=t(A);const O=e(m,h);l=o(O);const N=e(E,y);u=r(N);const w=e(T,M);g=i(w)},C=()=>{c(),l(),u(),g()};return{start:f=>{S(f)},stop:()=>{C()}}},Oe=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:G,createSyncMediaState:_e,error:Se,getExtraHeaders:fe,getUserAgent:Ee,hasPurgatory:I,sendDtmfAccumulated:Te},Symbol.toStringTag,{value:"Module"})),Ne=n=>[...n.keys()].map(e=>n.get(e)),we=(n,e)=>Ne(n).find(t=>t.type===e),K=async n=>n.getStats().then(e=>{const t=we(e,"codec");return t==null?void 0:t.mimeType}),Pe=n=>n.find(e=>{var t;return((t=e==null?void 0:e.track)==null?void 0:t.kind)==="video"}),Y=(n,e)=>n!==void 0&&e!==void 0&&n.toLowerCase().includes(e.toLowerCase()),De=1e6,R=n=>n*De,z=R(.06),Be=R(4),Ie=n=>n<=64?z:n<=128?R(.12):n<=256?R(.25):n<=384?R(.32):n<=426?R(.38):n<=640?R(.5):n<=848?R(.7):n<=1280?R(1):n<=1920?R(2):Be,Fe="av1",ke=n=>Y(n,Fe),Ve=.6,Q=(n,e)=>ke(e)?n*Ve:n,Ue=n=>Q(z,n),J=(n,e)=>{const t=Ie(n);return Q(t,e)},xe=1,Z=({videoTrack:n,targetSize:e,codec:t})=>{const o=n.getSettings(),r=o.width,i=o.height,c=r/e.width,l=i/e.height,u=Math.max(c,l,xe),g=J(e.width,t);return{scaleResolutionDownBy:u,maxBitrate:g}},ee=re.createStackPromises(),Le=async()=>ee().catch(n=>{s.logger("videoSendingBalancer: error",n)}),$e=async n=>(ee.add(n),Le()),q=async({sender:n,scaleResolutionDownBy:e,maxBitrate:t,onSetParameters:o})=>$e(async()=>s.setEncodingsToSender(n,{scaleResolutionDownBy:e,maxBitrate:t},o)),He=async({sender:n,codec:e},t)=>{const r=Ue(e);return q({sender:n,maxBitrate:r,onSetParameters:t,scaleResolutionDownBy:200})},V=async({sender:n,videoTrack:e,codec:t},o)=>{const c=e.getSettings().width,l=J(c??0,t);return q({sender:n,maxBitrate:l,onSetParameters:o,scaleResolutionDownBy:1})},qe=async({sender:n,videoTrack:e,resolution:t,codec:o},r)=>{const[i,c]=t.split("x"),{maxBitrate:l,scaleResolutionDownBy:u}=Z({videoTrack:e,codec:o,targetSize:{width:Number(i),height:Number(c)}});return q({sender:n,maxBitrate:l,onSetParameters:r,scaleResolutionDownBy:u})},Xe=async({mainCam:n,resolutionMainCam:e,sender:t,videoTrack:o,codec:r},i)=>{switch(n){case s.EEventsMainCAM.PAUSE_MAIN_CAM:return He({sender:t,codec:r},i);case s.EEventsMainCAM.RESUME_MAIN_CAM:return V({sender:t,videoTrack:o,codec:r},i);case s.EEventsMainCAM.MAX_MAIN_CAM_RESOLUTION:return e!==void 0?qe({sender:t,videoTrack:o,codec:r,resolution:e},i):V({sender:t,videoTrack:o,codec:r},i);case s.EEventsMainCAM.ADMIN_STOP_MAIN_CAM:case s.EEventsMainCAM.ADMIN_START_MAIN_CAM:case void 0:return V({sender:t,videoTrack:o,codec:r},i);default:return V({sender:t,videoTrack:o,codec:r},i)}},X={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},j=async({mainCam:n,resolutionMainCam:e,connection:t,onSetParameters:o,ignoreForCodec:r})=>{const i=t.getSenders(),c=Pe(i);if(!(c!=null&&c.track))return X;const l=await K(c);return Y(l,r)?X:Xe({mainCam:n,resolutionMainCam:e,sender:c,codec:l,videoTrack:c.track},o)},je=(n,{ignoreForCodec:e,onSetParameters:t}={})=>{const o=async()=>{const{connection:u}=n;if(!u)throw new Error("connection is not exist");return j({connection:u,onSetParameters:t,ignoreForCodec:e})};let r=o;const i=u=>{r=async()=>{const{mainCam:g,resolutionMainCam:S}=u,{connection:C}=n;if(!C)throw new Error("connection is not exist");return j({mainCam:g,resolutionMainCam:S,connection:C,onSetParameters:t,ignoreForCodec:e})},r().catch(_)};return{subscribe:()=>{n.onSession("main-cam-control",i)},unsubscribe:()=>{n.offSession("main-cam-control",i)},balanceByTrack:o,resetMainCamControl(){r=o},async reBalance(){return r()}}},We=n=>n.getVideoTracks()[0],D=({mediaStream:n,simulcastEncodings:e,sendEncodings:t})=>{if(e&&e.length>0){const o=t??[],r=We(n);if(r===void 0)throw new Error("No video track");return e.forEach((i,c)=>{const l=o[c]??{};l.active=!0,i.rid!==void 0&&(l.rid=i.rid),i.scalabilityMode!==void 0&&(l.scalabilityMode=i.scalabilityMode);const{maxBitrate:u,scaleResolutionDownBy:g}=Z({videoTrack:r,targetSize:{width:i.width,height:i.height}});l.maxBitrate=u,l.scaleResolutionDownBy=g,o[c]=l}),o}return t},Ge=(n,e)=>n.filter(o=>e.some(r=>r.clockRate===o.clockRate&&r.mimeType===o.mimeType&&r.channels===o.channels&&r.sdpFmtpLine===o.sdpFmtpLine)),Ke=n=>{const e=RTCRtpSender.getCapabilities(n),t=RTCRtpReceiver.getCapabilities(n),o=e===null?[]:e.codecs,r=t===null?[]:t.codecs;return Ge(o,r)},Ye=(n,e)=>e===void 0||e.length===0?n:n.sort((t,o)=>{const r=e.indexOf(t.mimeType),i=e.indexOf(o.mimeType),c=r===-1?Number.MAX_VALUE:r,l=i===-1?Number.MAX_VALUE:i;return c-l}),ze=(n,e)=>e===void 0||e.length===0?n:n.filter(t=>!e.includes(t.mimeType)),B=(n,{preferredMimeTypesVideoCodecs:e,excludeMimeTypesVideoCodecs:t})=>async o=>{var r;try{if(typeof o.setCodecPreferences=="function"&&((r=o.sender.track)==null?void 0:r.kind)==="video"&&(e!==void 0&&e.length>0||t!==void 0&&t.length>0)){const i=Ke("video"),c=ze(i,t),l=Ye(c,e);o.setCodecPreferences(l)}Object.keys(n).length>0&&await s.setParametersToSender(o.sender,n)}catch(i){s.logger("updateTransceiver error",i)}},H=n=>{if(!ie.isCanceledError(n)&&!ce.hasCanceledError(n))throw n;return{isSuccessful:!1}},Qe=({kind:n,readyState:e})=>n==="video"&&e==="live",Je=new Set(["on","once","onceRace","wait","off","onSession","onceSession","onceRaceSession","waitSession","offSession","sendDTMF","hangUp","declineToIncomingCall","sendChannels","checkTelephony","waitChannels","ping","connection","isConfigured","isRegistered"]);class Ze{constructor(e,{preferredMimeTypesVideoCodecs:t,excludeMimeTypesVideoCodecs:o}={}){a(this,"on");a(this,"once");a(this,"onceRace");a(this,"wait");a(this,"off");a(this,"onSession");a(this,"onceSession");a(this,"onceRaceSession");a(this,"waitSession");a(this,"offSession");a(this,"sendDTMF");a(this,"hangUp");a(this,"declineToIncomingCall");a(this,"sendChannels");a(this,"checkTelephony");a(this,"waitChannels");a(this,"ping");a(this,"connection");a(this,"isConfigured");a(this,"isRegistered");a(this,"sipConnector");a(this,"preferredMimeTypesVideoCodecs");a(this,"excludeMimeTypesVideoCodecs");a(this,"connectToServer",async e=>{const{userAgent:t,sipWebSocketServerURL:o,sipServerUrl:r,remoteAddress:i,displayName:c,name:l,password:u,isRegisteredUser:g,isDisconnectOnFail:S}=e;return s.logger("connectToServer",e),this.sipConnector.connect({userAgent:t,sipWebSocketServerURL:o,sipServerUrl:r,remoteAddress:i,displayName:c,password:u,user:l,register:g}).then(C=>(s.logger("connectToServer then"),{ua:C,isSuccessful:!0})).catch(async C=>(s.logger("connectToServer catch: error",C),S===!0?this.sipConnector.disconnect().then(()=>H(C)).catch(()=>H(C)):H(C)))});a(this,"callToServer",async e=>{const{conference:t,mediaStream:o,extraHeaders:r,iceServers:i,contentHint:c,simulcastEncodings:l,degradationPreference:u,sendEncodings:g,offerToReceiveAudio:S,offerToReceiveVideo:C,directionVideo:F,directionAudio:k,setRemoteStreams:f,onBeforeProgressCall:p,onSuccessProgressCall:m,onEnterPurgatory:h,onEnterConference:E,onFailProgressCall:y,onFinishProgressCall:T,onEndedCall:M}=e,A=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:f}),O=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{A().catch(_)}}),N=B({degradationPreference:u},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});s.logger("callToServer",e);const w=async()=>(s.logger("startCall"),this.sipConnector.call({mediaStream:o,extraHeaders:r,iceServers:i,contentHint:c,offerToReceiveAudio:S,offerToReceiveVideo:C,directionVideo:F,directionAudio:k,sendEncodings:D({mediaStream:o,simulcastEncodings:l,sendEncodings:g}),number:t,onAddedTransceiver:N,ontrack:O}));let b=!1,v;const P=(s.logger("subscribeEnterConference: onEnterConference",E),h??E?this.sipConnector.onSession("enterRoom",({room:d})=>{s.logger("enterRoom",{_room:d,isSuccessProgressCall:b}),v=d,I(v)?h&&h():E&&E({isSuccessProgressCall:b})}):()=>{}),x=d=>(s.logger("onSuccess"),b=!0,A().catch(_),m&&m({isPurgatory:I(v)}),this.sipConnector.onceRaceSession(["ended","failed"],()=>{P(),M&&M()}),d),L=d=>{throw s.logger("onFail"),y&&y(),P(),d},$=()=>{s.logger("onFinish"),T&&T()};return s.logger("onBeforeProgressCall"),p&&p(t),w().then(x).catch(d=>L(d)).finally($)});a(this,"disconnectFromServer",async()=>this.sipConnector.disconnect().then(()=>(s.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(e=>(s.logger("disconnectFromServer: catch",e),{isSuccessful:!1})));a(this,"answerIncomingCall",async e=>{const{mediaStream:t,extraHeaders:o,iceServers:r,contentHint:i,simulcastEncodings:c,degradationPreference:l,sendEncodings:u,offerToReceiveAudio:g,offerToReceiveVideo:S,directionVideo:C,directionAudio:F,setRemoteStreams:k,onBeforeProgressCall:f,onSuccessProgressCall:p,onEnterPurgatory:m,onEnterConference:h,onFailProgressCall:E,onFinishProgressCall:y,onEndedCall:T}=e,M=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:k}),A=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{M().catch(_)}}),O=B({degradationPreference:l},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});s.logger("answerIncomingCall",e);const N=async()=>this.sipConnector.answerToIncomingCall({mediaStream:t,extraHeaders:o,iceServers:r,contentHint:i,offerToReceiveAudio:g,offerToReceiveVideo:S,directionVideo:C,directionAudio:F,sendEncodings:D({mediaStream:t,simulcastEncodings:c,sendEncodings:u}),onAddedTransceiver:O,ontrack:A}),w=()=>{const{remoteCallerData:d}=this.sipConnector;return d.incomingNumber};let b=!1,v;const P=(s.logger("subscribeEnterConference: onEnterConference",h),m??h?this.sipConnector.onSession("enterRoom",d=>{s.logger("enterRoom",{_room:d,isSuccessProgressCall:b}),v=d,I(v)?m&&m():h&&h({isSuccessProgressCall:b})}):()=>{}),x=d=>(s.logger("onSuccess"),b=!0,M().catch(_),p&&p({isPurgatory:I(v)}),this.sipConnector.onceRaceSession(["ended","failed"],()=>{P(),T&&T()}),d),L=d=>{throw s.logger("onFail"),E&&E(),P(),d},$=()=>{s.logger("onFinish"),y&&y()};if(s.logger("onBeforeProgressCall"),f){const d=w();f(d)}return N().then(x).catch(d=>L(d)).finally($)});a(this,"updatePresentation",async({mediaStream:e,isP2P:t,maxBitrate:o,contentHint:r,simulcastEncodings:i,degradationPreference:c,sendEncodings:l,preferredMimeTypesVideoCodecs:u,excludeMimeTypesVideoCodecs:g})=>{const S=B({degradationPreference:c},{preferredMimeTypesVideoCodecs:u,excludeMimeTypesVideoCodecs:g});return s.logger("updatePresentation"),this.sipConnector.updatePresentation(e,{isP2P:t,maxBitrate:o,contentHint:r,sendEncodings:D({mediaStream:e,simulcastEncodings:i,sendEncodings:l}),onAddedTransceiver:S})});a(this,"startPresentation",async({mediaStream:e,isP2P:t,maxBitrate:o,contentHint:r,simulcastEncodings:i,degradationPreference:c,sendEncodings:l,preferredMimeTypesVideoCodecs:u,excludeMimeTypesVideoCodecs:g},S)=>{const C=B({degradationPreference:c},{preferredMimeTypesVideoCodecs:u,excludeMimeTypesVideoCodecs:g});return s.logger("startPresentation"),this.sipConnector.startPresentation(e,{isP2P:t,maxBitrate:o,contentHint:r,sendEncodings:D({mediaStream:e,simulcastEncodings:i,sendEncodings:l}),onAddedTransceiver:C},S)});a(this,"stopShareSipConnector",async({isP2P:e=!1}={})=>(s.logger("stopShareSipConnector"),this.sipConnector.stopPresentation({isP2P:e}).catch(t=>{s.logger(t)})));a(this,"sendRefusalToTurnOnMic",async()=>{this.sipConnector.isCallActive&&(s.logger("sendRefusalToTurnOnMic"),await this.sipConnector.sendRefusalToTurnOnMic().catch(e=>{s.logger("sendRefusalToTurnOnMic: error",e)}))});a(this,"sendRefusalToTurnOnCam",async()=>{this.sipConnector.isCallActive&&(s.logger("sendRefusalToTurnOnCam"),await this.sipConnector.sendRefusalToTurnOnCam().catch(e=>{s.logger("sendRefusalToTurnOnCam: error",e)}))});a(this,"sendMediaState",async({isEnabledCam:e,isEnabledMic:t})=>{this.sipConnector.isCallActive&&(s.logger("sendMediaState"),await this.sipConnector.sendMediaState({cam:e,mic:t}))});a(this,"replaceMediaStream",async(e,{deleteExisting:t,addMissing:o,forceRenegotiation:r,contentHint:i,simulcastEncodings:c,degradationPreference:l,sendEncodings:u}={})=>{const g=B({degradationPreference:l},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});return s.logger("replaceMediaStream"),this.sipConnector.replaceMediaStream(e,{deleteExisting:t,addMissing:o,forceRenegotiation:r,contentHint:i,sendEncodings:D({mediaStream:e,simulcastEncodings:c,sendEncodings:u}),onAddedTransceiver:g})});a(this,"askPermissionToEnableCam",async()=>{this.sipConnector.isCallActive&&(s.logger("askPermissionToEnableCam"),await this.sipConnector.askPermissionToEnableCam())});a(this,"resolveHandleReadyRemoteStreamsDebounced",({onReadyRemoteStreams:e})=>ae.debounce(()=>{const t=this.sipConnector.getRemoteStreams();s.logger("remoteStreams",t),t&&e(t)},200));a(this,"resolveHandleReadyRemoteStreams",({onReadyRemoteStreams:e})=>({track:t})=>{Qe(t)&&e()});a(this,"getRemoteStreams",()=>(s.logger("getRemoteStreams"),this.sipConnector.getRemoteStreams()));a(this,"onUseLicense",e=>(s.logger("onUseLicense"),this.sipConnector.onSession("useLicense",e)));a(this,"onMustStopPresentation",e=>(s.logger("onMustStopPresentation"),this.sipConnector.onSession("mustStopPresentation",e)));a(this,"onMoveToSpectators",e=>(s.logger("onMoveToSpectators"),this.sipConnector.onSession(s.PARTICIPANT_MOVE_REQUEST_TO_SPECTATORS,e)));a(this,"onMoveToParticipants",e=>(s.logger("onMoveToParticipants"),this.sipConnector.onSession(s.PARTICIPANT_MOVE_REQUEST_TO_PARTICIPANTS,e)));return this.preferredMimeTypesVideoCodecs=t,this.excludeMimeTypesVideoCodecs=o,this.sipConnector=e,new Proxy(this,{get:(r,i,c)=>{if(typeof i=="string"&&Je.has(i)&&i in this.sipConnector){const u=Reflect.get(this.sipConnector,i,this.sipConnector);return typeof u=="function"?u.bind(this.sipConnector):u}const l=Reflect.get(r,i,c);return typeof l=="function"?l.bind(r):l}})}}exports.EEventsMainCAM=s.EEventsMainCAM;exports.EEventsMic=s.EEventsMic;exports.EEventsSyncMediaState=s.EEventsSyncMediaState;exports.EMimeTypesVideoCodecs=s.EMimeTypesVideoCodecs;exports.EUseLicense=s.EUseLicense;exports.SipConnector=s.SipConnector;exports.causes=s.causes;exports.constants=s.constants;exports.disableDebug=s.disableDebug;exports.enableDebug=s.enableDebug;exports.eventNames=s.eventNames;exports.hasCanceledCallError=s.hasCanceledCallError;exports.hasCanceledStartPresentationError=s.hasCanceledStartPresentationError;exports.setParametersToSender=s.setParametersToSender;exports.debug=_;exports.SipConnectorFacade=Ze;exports.getCodecFromSender=K;exports.resolveVideoSendingBalancer=je;exports.tools=Oe;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("events-constructor");const i=require("./@SipConnector-CZo7A8_q.cjs"),G=require("@krivega/cancelable-promise"),ae=require("repeated-calls"),le=require("ts-debounce"),_=require("debug"),ue=require("sequent-promises"),de=require("stack-promises"),ge=e=>e instanceof Object&&("originator"in e||"cause"in e),fe=e=>{if(G.isCanceledError(e))return!0;if(!ge(e))return!1;const{originator:n,cause:t}=e;return typeof t=="string"?t===i.ECallCause.REQUEST_TIMEOUT||t===i.ECallCause.REJECTED||n===i.Originator.LOCAL&&(t===i.ECallCause.CANCELED||t===i.ECallCause.BYE):!1},Ce=(e,n)=>(e.degradationPreference=n.degradationPreference,e),he=(e,n)=>{e.encodings??=[];for(let t=e.encodings.length;t<n;t+=1)e.encodings.push({});return e},K=e=>(n,t)=>t!==void 0&&n!==t||t===void 0&&n!==e,Se=K(),me=(e,n)=>{if(Se(e,n))return e},Re=(e,n)=>{const t=e.maxBitrate,o=me(n,t);return o!==void 0&&(e.maxBitrate=o),e},Y=1,pe=K(Y),ye=(e,n)=>{const t=e===void 0?void 0:Math.max(e,Y);if(t!==void 0&&pe(t,n))return t},Ee=(e,n)=>{const t=e.scaleResolutionDownBy,o=ye(n,t);return o!==void 0&&(e.scaleResolutionDownBy=o),e},Te=(e,n)=>{const t=n.encodings?.length??0;return he(e,t),e.encodings.forEach((o,r)=>{const s=(n?.encodings??[])[r],c=s?.maxBitrate,a=s?.scaleResolutionDownBy;Re(o,c),Ee(o,a)}),e},ve=(e,n)=>{if(e.codecs?.length!==n.codecs?.length)return!0;for(let t=0;t<(e.codecs?.length??0);t++)if(JSON.stringify(e.codecs[t])!==JSON.stringify(n.codecs[t]))return!0;if(e.headerExtensions?.length!==n.headerExtensions?.length)return!0;for(let t=0;t<(e.headerExtensions?.length??0);t++)if(JSON.stringify(e.headerExtensions[t])!==JSON.stringify(n.headerExtensions[t]))return!0;if(e.encodings?.length!==n.encodings?.length)return!0;for(let t=0;t<(e.encodings.length??0);t++)if(JSON.stringify(e.encodings[t])!==JSON.stringify(n.encodings[t]))return!0;return e.rtcp?.cname!==n.rtcp?.cname||e.rtcp?.reducedSize!==n.rtcp?.reducedSize||e.degradationPreference!==n.degradationPreference},q=async(e,n)=>{const t=e.getParameters(),o=JSON.parse(JSON.stringify(t));Te(t,n),Ce(t,n);const r=ve(o,t);return r&&await e.setParameters(t),{parameters:t,isChanged:r}},Me=e=>e.getVideoTracks()[0],be=1e6,m=e=>e*be,z=m(.06),Q=m(4),_e=e=>e<=64?z:e<=128?m(.12):e<=256?m(.25):e<=384?m(.32):e<=426?m(.38):e<=640?m(.5):e<=848?m(.7):e<=1280?m(1):e<=1920?m(2):Q,Z=(e,n)=>e!==void 0&&n!==void 0&&e.toLowerCase().includes(n.toLowerCase()),Ae="av1",Oe=e=>Z(e,Ae),Ne=.6,J=(e,n)=>Oe(n)?e*Ne:e,Be=e=>J(z,e),we=e=>J(Q,e),ee=(e,n)=>{const t=_e(e);return J(t,n)},H=1,ne=({videoTrack:e,targetSize:n,codec:t})=>{const o=e.getSettings(),r=o.width,s=o.height,c=r===void 0?H:r/n.width,a=s===void 0?H:s/n.height,l=Math.max(c,a,H),d=ee(n.width,t);return{scaleResolutionDownBy:l,maxBitrate:d}},w=({mediaStream:e,simulcastEncodings:n,sendEncodings:t})=>{if(n&&n.length>0){const o=t??[],r=Me(e);if(r===void 0)throw new Error("No video track");return n.forEach((s,c)=>{const a=o[c]??{};a.active=!0,s.rid!==void 0&&(a.rid=s.rid),s.scalabilityMode!==void 0&&(a.scalabilityMode=s.scalabilityMode);const{maxBitrate:l,scaleResolutionDownBy:d}=ne({videoTrack:r,targetSize:{width:s.width,height:s.height}});a.maxBitrate=l,a.scaleResolutionDownBy=d,o[c]=a}),o}return t},te="purgatory",P=e=>e===te,De=(e,n)=>e.filter(o=>n.some(r=>r.clockRate===o.clockRate&&r.mimeType===o.mimeType&&r.channels===o.channels&&r.sdpFmtpLine===o.sdpFmtpLine)),Pe=e=>{const n=RTCRtpSender.getCapabilities(e),t=RTCRtpReceiver.getCapabilities(e),o=n===null?[]:n.codecs,r=t===null?[]:t.codecs;return De(o,r)},Ie=(e,n)=>n===void 0||n.length===0?e:e.sort((t,o)=>{const r=n.indexOf(t.mimeType),s=n.indexOf(o.mimeType),c=r===-1?Number.MAX_VALUE:r,a=s===-1?Number.MAX_VALUE:s;return c-a}),xe=(e,n)=>n===void 0||n.length===0?e:e.filter(t=>!n.includes(t.mimeType)),Fe=(e,{preferredMimeTypesVideoCodecs:n,excludeMimeTypesVideoCodecs:t})=>{if(typeof e.setCodecPreferences=="function"&&e.sender.track?.kind==="video"&&(n!==void 0&&n.length>0||t!==void 0&&t.length>0)){const o=Pe("video"),r=xe(o,t),s=Ie(r,n);e.setCodecPreferences(s)}},D=(e,{preferredMimeTypesVideoCodecs:n,excludeMimeTypesVideoCodecs:t})=>async o=>{try{Fe(o,{preferredMimeTypesVideoCodecs:n,excludeMimeTypesVideoCodecs:t}),Object.values(e).filter(s=>s!=null).length>0&&(i.logger("updateTransceiver setParametersToSender",e),await q(o.sender,e))}catch(r){i.logger("updateTransceiver error",r)}},$=e=>{if(!G.isCanceledError(e)&&!ae.hasCanceledError(e))throw e;return{isSuccessful:!1}},Ue=({kind:e,readyState:n})=>e==="video"&&n==="live",ke=new Set(["on","once","onceRace","wait","off","sendDTMF","hangUp","declineToIncomingCall","sendChannels","checkTelephony","waitChannels","ping","connection","isConfigured","isRegistered"]);class Ve{on;once;onceRace;wait;off;sendDTMF;hangUp;declineToIncomingCall;sendChannels;checkTelephony;waitChannels;ping;connection;isConfigured;isRegistered;sipConnector;preferredMimeTypesVideoCodecs;excludeMimeTypesVideoCodecs;constructor(n,{preferredMimeTypesVideoCodecs:t,excludeMimeTypesVideoCodecs:o}={}){return this.preferredMimeTypesVideoCodecs=t,this.excludeMimeTypesVideoCodecs=o,this.sipConnector=n,new Proxy(this,{get:(r,s,c)=>{if(typeof s=="string"&&ke.has(s)&&s in this.sipConnector){const l=Reflect.get(this.sipConnector,s,this.sipConnector);return typeof l=="function"?l.bind(this.sipConnector):l}const a=Reflect.get(r,s,c);return typeof a=="function"?a.bind(r):a}})}connectToServer=async n=>{const{userAgent:t,sipWebSocketServerURL:o,sipServerUrl:r,remoteAddress:s,displayName:c,name:a,password:l,isRegisteredUser:d,isDisconnectOnFail:f}=n;return i.logger("connectToServer",n),this.sipConnector.connect({userAgent:t,sipWebSocketServerURL:o,sipServerUrl:r,remoteAddress:s,displayName:c,password:l,user:a,register:d}).then(g=>(i.logger("connectToServer then"),{ua:g,isSuccessful:!0})).catch(async g=>(i.logger("connectToServer catch: error",g),f===!0?this.sipConnector.disconnect().then(()=>$(g)).catch(()=>$(g)):$(g)))};callToServer=async n=>{const{conference:t,mediaStream:o,extraHeaders:r,iceServers:s,contentHint:c,simulcastEncodings:a,degradationPreference:l,sendEncodings:d,offerToReceiveAudio:f,offerToReceiveVideo:g,directionVideo:I,directionAudio:x,setRemoteStreams:C,onBeforeProgressCall:R,onSuccessProgressCall:h,onEnterPurgatory:S,onEnterConference:p,onFailProgressCall:y,onFinishProgressCall:E,onEndedCall:T}=n,b=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:C}),A=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{b().catch(_)}}),O=D({degradationPreference:l},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});i.logger("callToServer",n);const N=async()=>(i.logger("startCall"),this.sipConnector.call({mediaStream:o,extraHeaders:r,iceServers:s,contentHint:c,offerToReceiveAudio:f,offerToReceiveVideo:g,directionVideo:I,directionAudio:x,sendEncodings:w({mediaStream:o,simulcastEncodings:a,sendEncodings:d}),number:t,onAddedTransceiver:O,ontrack:A}));let v=!1,M;const B=(i.logger("subscribeEnterConference: onEnterConference",p),S??p?this.sipConnector.on("api:enterRoom",({room:u})=>{i.logger("enterRoom",{_room:u,isSuccessProgressCall:v}),M=u,P(M)?S&&S():p&&p({isSuccessProgressCall:v})}):()=>{}),k=u=>(i.logger("onSuccess"),v=!0,b().catch(_),h&&h({isPurgatory:P(M)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{B(),T&&T()}),u),V=u=>{throw i.logger("onFail"),y&&y(),B(),u},L=()=>{i.logger("onFinish"),E&&E()};return i.logger("onBeforeProgressCall"),R&&R(t),N().then(k).catch(u=>V(u)).finally(L)};disconnectFromServer=async()=>this.sipConnector.disconnect().then(()=>(i.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(n=>(i.logger("disconnectFromServer: catch",n),{isSuccessful:!1}));answerToIncomingCall=async n=>{const{mediaStream:t,extraHeaders:o,iceServers:r,contentHint:s,simulcastEncodings:c,degradationPreference:a,sendEncodings:l,offerToReceiveAudio:d,offerToReceiveVideo:f,directionVideo:g,directionAudio:I,setRemoteStreams:x,onBeforeProgressCall:C,onSuccessProgressCall:R,onEnterPurgatory:h,onEnterConference:S,onFailProgressCall:p,onFinishProgressCall:y,onEndedCall:E}=n,T=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:x}),b=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{T().catch(_)}}),A=D({degradationPreference:a},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});i.logger("answerToIncomingCall",n);const O=async()=>this.sipConnector.answerToIncomingCall({mediaStream:t,extraHeaders:o,iceServers:r,contentHint:s,offerToReceiveAudio:d,offerToReceiveVideo:f,directionVideo:g,directionAudio:I,sendEncodings:w({mediaStream:t,simulcastEncodings:c,sendEncodings:l}),onAddedTransceiver:A,ontrack:b}),N=()=>{const{remoteCallerData:u}=this.sipConnector;return u.incomingNumber};let v=!1,M;const B=(i.logger("subscribeEnterConference: onEnterConference",S),h??S?this.sipConnector.on("api:enterRoom",u=>{i.logger("enterRoom",{_room:u,isSuccessProgressCall:v}),M=u,P(M)?h&&h():S&&S({isSuccessProgressCall:v})}):()=>{}),k=u=>(i.logger("onSuccess"),v=!0,T().catch(_),R&&R({isPurgatory:P(M)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{B(),E&&E()}),u),V=u=>{throw i.logger("onFail"),p&&p(),B(),u},L=()=>{i.logger("onFinish"),y&&y()};if(i.logger("onBeforeProgressCall"),C){const u=N();C(u)}return O().then(k).catch(u=>V(u)).finally(L)};updatePresentation=async({mediaStream:n,isP2P:t,maxBitrate:o,contentHint:r,simulcastEncodings:s,degradationPreference:c,sendEncodings:a,preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d})=>{const f=D({degradationPreference:c},{preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d});return i.logger("updatePresentation"),this.sipConnector.updatePresentation(n,{isP2P:t,maxBitrate:o,contentHint:r,sendEncodings:w({mediaStream:n,simulcastEncodings:s,sendEncodings:a}),onAddedTransceiver:f})};startPresentation=async({mediaStream:n,isP2P:t,maxBitrate:o,contentHint:r,simulcastEncodings:s,degradationPreference:c,sendEncodings:a,preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d,callLimit:f})=>{const g=D({degradationPreference:c},{preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d});return i.logger("startPresentation"),this.sipConnector.startPresentation(n,{isP2P:t,maxBitrate:o,contentHint:r,callLimit:f,sendEncodings:w({mediaStream:n,simulcastEncodings:s,sendEncodings:a}),onAddedTransceiver:g})};stopShareSipConnector=async({isP2P:n=!1}={})=>(i.logger("stopShareSipConnector"),this.sipConnector.stopPresentation({isP2P:n}).catch(t=>{i.logger(t)}));sendRefusalToTurnOnMic=async()=>{i.logger("sendRefusalToTurnOnMic"),await this.sipConnector.sendRefusalToTurnOnMic().catch(n=>{i.logger("sendRefusalToTurnOnMic: error",n)})};sendRefusalToTurnOnCam=async()=>{i.logger("sendRefusalToTurnOnCam"),await this.sipConnector.sendRefusalToTurnOnCam().catch(n=>{i.logger("sendRefusalToTurnOnCam: error",n)})};sendMediaState=async({isEnabledCam:n,isEnabledMic:t})=>{i.logger("sendMediaState"),await this.sipConnector.sendMediaState({cam:n,mic:t})};replaceMediaStream=async(n,{deleteExisting:t,addMissing:o,forceRenegotiation:r,contentHint:s,simulcastEncodings:c,degradationPreference:a,sendEncodings:l}={})=>{const d=D({degradationPreference:a},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});return i.logger("replaceMediaStream"),this.sipConnector.replaceMediaStream(n,{deleteExisting:t,addMissing:o,forceRenegotiation:r,contentHint:s,sendEncodings:w({mediaStream:n,simulcastEncodings:c,sendEncodings:l}),onAddedTransceiver:d})};askPermissionToEnableCam=async()=>{i.logger("askPermissionToEnableCam"),await this.sipConnector.askPermissionToEnableCam()};resolveHandleReadyRemoteStreamsDebounced=({onReadyRemoteStreams:n})=>le.debounce(()=>{const t=this.sipConnector.getRemoteStreams();i.logger("remoteStreams",t),t&&n(t)},200);resolveHandleReadyRemoteStreams=({onReadyRemoteStreams:n})=>({track:t})=>{Ue(t)&&n()};getRemoteStreams=()=>(i.logger("getRemoteStreams"),this.sipConnector.getRemoteStreams());onUseLicense=n=>(i.logger("onUseLicense"),this.sipConnector.on("api:useLicense",n));onMustStopPresentation=n=>(i.logger("onMustStopPresentation"),this.sipConnector.on("api:mustStopPresentation",n));onMoveToSpectators=n=>(i.logger("onMoveToSpectators"),this.sipConnector.on("api:participant:move-request-to-spectators",n));onMoveToParticipants=n=>(i.logger("onMoveToParticipants"),this.sipConnector.on("api:participant:move-request-to-participants",n))}const U=e=>{const{url:n,cause:t}=e;let o=n;return(t===i.ECallCause.BAD_MEDIA_DESCRIPTION||t===i.ECallCause.NOT_FOUND)&&(o=`${e.message.to.uri.user}@${e.message.to.uri.host}`),o};var oe=(e=>(e.CONNECT_SERVER_FAILED="CONNECT_SERVER_FAILED",e.WRONG_USER_OR_PASSWORD="WRONG_USER_OR_PASSWORD",e.BAD_MEDIA_ERROR="BAD_MEDIA_ERROR",e.NOT_FOUND_ERROR="NOT_FOUND_ERROR",e.WS_CONNECTION_FAILED="WS_CONNECTION_FAILED",e.CONNECT_SERVER_FAILED_BY_LINK="CONNECT_SERVER_FAILED_BY_LINK",e))(oe||{});const Le=new Error("Unknown error"),He=(e=Le)=>{const{cause:n,socket:t}=e;let o="CONNECT_SERVER_FAILED";switch(n){case"Forbidden":{o="WRONG_USER_OR_PASSWORD";break}case i.ECallCause.BAD_MEDIA_DESCRIPTION:{o="BAD_MEDIA_ERROR";break}case i.ECallCause.NOT_FOUND:{o="NOT_FOUND_ERROR";break}default:t!==void 0&&t._ws?.readyState===3?o="WS_CONNECTION_FAILED":U(e)!==void 0&&U(e)!==""&&(o="CONNECT_SERVER_FAILED_BY_LINK")}return o},$e=e=>{let n="";try{n=JSON.stringify(e)}catch(t){i.logger("failed to stringify message",t)}return n},qe=new Error("Unknown error"),Je=(e=qe)=>{const{code:n,cause:t,message:o}=e,r=U(e),s={code:"",cause:"",message:""};return typeof o=="object"&&o!==null?s.message=$e(o):o&&(s.message=String(o)),r!==void 0&&r!==""&&(s.link=r),n!==void 0&&n!==""&&(s.code=n),t!==void 0&&t!==""&&(s.cause=t),s},Xe=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:oe,getLinkError:U,getTypeFromError:He,getValuesFromError:Je},Symbol.toStringTag,{value:"Module"})),je=({sessionId:e,remoteAddress:n,isMutedAudio:t,isMutedVideo:o,isRegistered:r,isPresentationCall:s})=>{const c=[],a=t?"0":"1",l=o?"0":"1";return c.push(`X-Vinteo-Mic-State: ${a}`,`X-Vinteo-MainCam-State: ${l}`),(r===!1||r===void 0)&&c.push("X-Vinteo-Purgatory-Call: yes"),e!==void 0&&e!==""&&c.push(`X-Vinteo-Session: ${e}`),s===!0&&c.push("X-Vinteo-Presentation-Call: yes"),n!==void 0&&n!==""&&c.push(`X-Vinteo-Remote: ${n}`),c},We="[@*!|]",Ge="_",Ke=e=>{let n=e;return n=n.replaceAll(new RegExp(We,"g"),Ge),n},Ye=({appName:e,appVersion:n,browserName:t,browserVersion:o})=>{const s=`${Ke(e)} ${n}`;return`ChromeNew - ${t===void 0?s:`${t} ${o}, ${s}`}`},ze=({isUnifiedSdpSemantic:e,appVersion:n,browserName:t,browserVersion:o,appName:r})=>e?Ye({appVersion:n,browserName:t,browserVersion:o,appName:r}):"Chrome",Qe=e=>n=>[...n].map(o=>async()=>e(o)),Ze=async({accumulatedKeys:e,sendKey:n,canRunTask:t})=>{const r=Qe(n)(e);return ue.sequentPromises(r,t)},en=e=>t=>(i.logger("onStartMainCam"),e.on("api:admin-start-main-cam",t)),nn=e=>t=>(i.logger("onStartMic"),e.on("api:admin-start-mic",t)),tn=e=>t=>(i.logger("onStopMainCam"),e.on("api:admin-stop-main-cam",t)),on=e=>t=>(i.logger("onStopMic"),e.on("api:admin-stop-mic",t)),rn=({sipConnector:e})=>{const n=(C,R)=>({isSyncForced:h})=>{if(h===!0){C();return}R()},t=en(e),o=tn(e),r=nn(e),s=on(e);let c,a,l,d;const f=({onStartMainCamForced:C,onStartMainCamNotForced:R,onStopMainCamForced:h,onStopMainCamNotForced:S,onStartMicForced:p,onStartMicNotForced:y,onStopMicForced:E,onStopMicNotForced:T})=>{const b=n(C,R);c=t(b);const A=n(h,S);a=o(A);const O=n(p,y);l=r(O);const N=n(E,T);d=s(N)},g=()=>{c?.(),a?.(),l?.(),d?.()};return{start:C=>{f(C)},stop:()=>{g()}}},sn=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:te,createSyncMediaState:rn,error:Xe,getExtraHeaders:je,getUserAgent:ze,hasPurgatory:P,sendDtmfAccumulated:Ze},Symbol.toStringTag,{value:"Module"}));var re=(e=>(e.VP8="video/VP8",e.VP9="video/VP9",e.H264="video/H264",e.AV1="video/AV1",e.rtx="video/rtx",e.red="video/red",e.flexfec03="video/flexfec-03",e))(re||{});const cn=e=>[...e.keys()].map(n=>e.get(n)),an=(e,n)=>cn(e).find(t=>t?.type===n),se=async e=>e.getStats().then(n=>an(n,"codec")?.mimeType),ln=e=>e.find(n=>n.track?.kind==="video"),un=async(e,n,t)=>{const{isChanged:o,parameters:r}=await q(e,{encodings:[{scaleResolutionDownBy:n.scaleResolutionDownBy,maxBitrate:n.maxBitrate}]});return o&&t&&t(r),{isChanged:o,parameters:r}},ie=de.createStackPromises(),dn=async()=>ie().catch(e=>{i.logger("videoSendingBalancer: error",e)}),gn=async e=>(ie.add(e),dn()),X=async({sender:e,scaleResolutionDownBy:n,maxBitrate:t,onSetParameters:o})=>gn(async()=>un(e,{scaleResolutionDownBy:n,maxBitrate:t},o)),fn=async({sender:e,codec:n},t)=>{const r=Be(n);return X({sender:e,maxBitrate:r,onSetParameters:t,scaleResolutionDownBy:200})},F=async({sender:e,videoTrack:n,codec:t},o)=>{const c=n.getSettings().width,a=c===void 0?we(t):ee(c,t);return X({sender:e,maxBitrate:a,onSetParameters:o,scaleResolutionDownBy:1})},Cn=async({sender:e,videoTrack:n,resolution:t,codec:o},r)=>{const[s,c]=t.split("x"),{maxBitrate:a,scaleResolutionDownBy:l}=ne({videoTrack:n,codec:o,targetSize:{width:Number(s),height:Number(c)}});return X({sender:e,maxBitrate:a,onSetParameters:r,scaleResolutionDownBy:l})},hn=async({mainCam:e,resolutionMainCam:n,sender:t,videoTrack:o,codec:r},s)=>{switch(e){case i.EEventsMainCAM.PAUSE_MAIN_CAM:return fn({sender:t,codec:r},s);case i.EEventsMainCAM.RESUME_MAIN_CAM:return F({sender:t,videoTrack:o,codec:r},s);case i.EEventsMainCAM.MAX_MAIN_CAM_RESOLUTION:return n!==void 0?Cn({sender:t,videoTrack:o,codec:r,resolution:n},s):F({sender:t,videoTrack:o,codec:r},s);case i.EEventsMainCAM.ADMIN_STOP_MAIN_CAM:case i.EEventsMainCAM.ADMIN_START_MAIN_CAM:case void 0:return F({sender:t,videoTrack:o,codec:r},s);default:return F({sender:t,videoTrack:o,codec:r},s)}},j={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},W=async({mainCam:e,resolutionMainCam:n,connection:t,onSetParameters:o,ignoreForCodec:r})=>{const s=t.getSenders(),c=ln(s);if(!c?.track)return j;const a=await se(c);return Z(a,r)?j:hn({mainCam:e,resolutionMainCam:n,sender:c,codec:a,videoTrack:c.track},o)},Sn=(e,{ignoreForCodec:n,onSetParameters:t}={})=>{const o=async()=>{const{connection:l}=e;if(!l)throw new Error("connection is not exist");return W({connection:l,onSetParameters:t,ignoreForCodec:n})};let r=o;const s=l=>{r=async()=>{const{mainCam:d,resolutionMainCam:f}=l,{connection:g}=e;if(!g)throw new Error("connection is not exist");return W({mainCam:d,resolutionMainCam:f,connection:g,onSetParameters:t,ignoreForCodec:n})},r().catch(_)};return{subscribe:()=>{e.on("api:main-cam-control",s)},unsubscribe:()=>{e.off("api:main-cam-control",s)},balanceByTrack:o,resetMainCamControl(){r=o},async reBalance(){return r()}}};exports.ECallCause=i.ECallCause;exports.EUseLicense=i.EUseLicense;exports.SipConnector=i.SipConnector;exports.disableDebug=i.disableDebug;exports.enableDebug=i.enableDebug;exports.hasCanceledStartPresentationError=i.hasCanceledStartPresentationError;exports.debug=_;exports.EMimeTypesVideoCodecs=re;exports.SipConnectorFacade=Ve;exports.getCodecFromSender=se;exports.hasCanceledCallError=fe;exports.resolveVideoSendingBalancer=Sn;exports.setParametersToSender=q;exports.tools=sn;
@@ -0,0 +1,14 @@
1
+ export { EUseLicense } from './ApiManager';
2
+ export { ECallCause, hasCanceledCallError } from './CallManager';
3
+ export type { TCustomError } from './CallManager';
4
+ export { debug, disableDebug, enableDebug } from './logger';
5
+ export { hasCanceledStartPresentationError } from './PresentationManager';
6
+ export type { TContentHint } from './PresentationManager';
7
+ export { default as setParametersToSender } from './setParametersToSender';
8
+ export { SipConnector } from './SipConnector';
9
+ export { SipConnectorFacade } from './SipConnectorFacade';
10
+ export * as tools from './tools';
11
+ export { EMimeTypesVideoCodecs } from './types';
12
+ export type { TJsSIP } from './types';
13
+ export { default as getCodecFromSender } from './utils/getCodecFromSender';
14
+ export { default as resolveVideoSendingBalancer } from './videoSendingBalancer';