sip-connector 7.0.7 → 7.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("./SipConnector-BHUjGzwS.cjs"),j=require("ts-debounce"),H=require("@krivega/cancelable-promise"),Y=require("repeated-calls"),z=require("sequent-promises"),J=require("stack-promises"),Q=require("debug"),L="purgatory",N=e=>e===L,I=e=>()=>(r.logger("getRemoteStreams"),e.getRemoteStreams()),Z=({kind:e,readyState:t})=>e==="video"&&t==="live",V=e=>({track:t})=>{Z(t)&&e()},D=({getRemoteStreams:e,setRemoteStreams:t})=>j.debounce(()=>{const n=e();r.logger("remoteStreams",n),n&&t(n)},200),ee=e=>async n=>{const{mediaStream:s,extraHeaders:o,iceServers:c,degradationPreference:a,setRemoteStreams:l,onBeforeProgressCall:u,onSuccessProgressCall:d,onEnterPurgatory:m,onEnterConference:S,onFailProgressCall:f,onFinishProgressCall:g,onEndedCall:C}=n,M=D({setRemoteStreams:l,getRemoteStreams:I(e)}),_=V(M);r.logger("answerIncomingCall",n);const y=async()=>e.answerToIncomingCall({mediaStream:s,extraHeaders:o,iceServers:c,degradationPreference:a,ontrack:_}),v=()=>{const{remoteCallerData:i}=e;return i.incomingNumber};let R=!1,T;const b=(r.logger("subscribeEnterConference: onEnterConference",S),m??S?e.onSession("enterRoom",i=>{r.logger("enterRoom",{_room:i,isSuccessProgressCall:R}),T=i,N(T)?m&&m():S&&S({isSuccessProgressCall:R})}):()=>{}),h=i=>(r.logger("onSuccess"),R=!0,M(),d&&d({isPurgatory:N(T)}),e.onceRaceSession(["ended","failed"],()=>{b(),C&&C()}),i),O=i=>{throw r.logger("onFail"),f&&f(),b(),i},A=()=>{r.logger("onFinish"),g&&g()};if(r.logger("onBeforeProgressCall"),u){const i=v();u(i)}return y().then(h).catch(i=>O(i)).finally(A)},ne=e=>async n=>{const{conference:s,mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:l,setRemoteStreams:u,onBeforeProgressCall:d,onSuccessProgressCall:m,onEnterPurgatory:S,onEnterConference:f,onFailProgressCall:g,onFinishProgressCall:C,onEndedCall:M}=n,_=D({setRemoteStreams:u,getRemoteStreams:I(e)}),y=V(_);r.logger("callToServer",n);const v=async()=>(r.logger("startCall"),e.call({mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:l,number:s,ontrack:y}));let R=!1,T;const b=(r.logger("subscribeEnterConference: onEnterConference",f),S??f?e.onSession("enterRoom",({room:i})=>{r.logger("enterRoom",{_room:i,isSuccessProgressCall:R}),T=i,N(T)?S&&S():f&&f({isSuccessProgressCall:R})}):()=>{}),h=i=>(r.logger("onSuccess"),R=!0,_(),m&&m({isPurgatory:N(T)}),e.onceRaceSession(["ended","failed"],()=>{b(),M&&M()}),i),O=i=>{throw r.logger("onFail"),g&&g(),b(),i},A=()=>{r.logger("onFinish"),C&&C()};return r.logger("onBeforeProgressCall"),d&&d(s),v().then(h).catch(i=>O(i)).finally(A)},P=e=>{if(!H.isCanceledError(e)&&!Y.hasCanceledError(e))throw e;return{isSuccessful:!1}},te=e=>async n=>{const{userAgent:s,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:l,name:u,password:d,isRegisteredUser:m,sdpSemantics:S,isDisconnectOnFail:f}=n;return r.logger("connectToServer",n),e.connect({userAgent:s,sdpSemantics:S,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:l,password:d,user:u,register:m}).then(g=>(r.logger("connectToServer then"),{ua:g,isSuccessful:!0})).catch(async g=>(r.logger("connectToServer catch: error",g),f===!0?e.disconnect().then(()=>P(g)).catch(()=>P(g)):P(g)))},re=e=>async()=>(r.logger("disconnectFromServer"),e.disconnect().then(()=>(r.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(t=>(r.logger("disconnectFromServer: catch",t),{isSuccessful:!1}))),w=e=>{const{url:t,cause:n}=e;let s=t;return(n===r.BAD_MEDIA_DESCRIPTION||n===r.NOT_FOUND)&&(s=`${e.message.to.uri.user}@${e.message.to.uri.host}`),s};var $=(e=>(e.CONNECT_SERVER_FAILED="CONNECT_SERVER_FAILED",e.WRONG_USER_OR_PASSWORD="WRONG_USER_OR_PASSWORD",e.BAD_MEDIA_ERROR="BAD_MEDIA_ERROR",e.NOT_FOUND_ERROR="NOT_FOUND_ERROR",e.WS_CONNECTION_FAILED="WS_CONNECTION_FAILED",e.CONNECT_SERVER_FAILED_BY_LINK="CONNECT_SERVER_FAILED_BY_LINK",e))($||{});const se=(e=new Error)=>{var o;const{cause:t,socket:n}=e;let s="CONNECT_SERVER_FAILED";switch(t){case"Forbidden":{s="WRONG_USER_OR_PASSWORD";break}case r.BAD_MEDIA_DESCRIPTION:{s="BAD_MEDIA_ERROR";break}case r.NOT_FOUND:{s="NOT_FOUND_ERROR";break}default:n&&((o=n==null?void 0:n._ws)==null?void 0:o.readyState)===3?s="WS_CONNECTION_FAILED":w(e)&&(s="CONNECT_SERVER_FAILED_BY_LINK")}return s},oe=(e=new Error)=>{const{code:t,cause:n,message:s}=e,o=w(e),c={};return s&&(c.message=s),o&&(c.link=o),t&&(c.code=t),n&&(c.cause=n),c},ce=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:$,getLinkError:w,getTypeFromError:se,getValuesFromError:oe},Symbol.toStringTag,{value:"Module"})),ae=({sessionId:e,remoteAddress:t,isMutedAudio:n,isMutedVideo:s,isRegistered:o,isPresentationCall:c})=>{const a=[],l=n?"0":"1",u=s?"0":"1";return a.push(`X-Vinteo-Mic-State: ${l}`,`X-Vinteo-MainCam-State: ${u}`),o||a.push("X-Vinteo-Purgatory-Call: yes"),e&&a.push(`X-Vinteo-Session: ${e}`),c&&a.push("X-Vinteo-Presentation-Call: yes"),t&&a.push(`X-Vinteo-Remote: ${t}`),a},ie=({appName:e,appVersion:t,browserName:n,browserVersion:s})=>{const o=`${e} ${t}`;return`ChromeNew - ${n?`${n} ${s}, ${o}`:o}`},ue=({isUnifiedSdpSemantic:e,appVersion:t,browserName:n,browserVersion:s,appName:o})=>e?ie({appVersion:t,browserName:n,browserVersion:s,appName:o}):"Chrome",le=e=>async()=>{if(e.isCallActive)return r.logger("askPermissionToEnableCam"),e.askPermissionToEnableCam()},Se=e=>n=>(r.logger("onMustStopPresentation"),e.onSession("mustStopPresentation",n)),ge=e=>n=>(r.logger("onMoveToSpectators"),e.onSession("participant:move-request-to-spectators",n)),de=e=>n=>(r.logger("onUseLicense"),e.onSession("useLicense",n)),me=e=>async({isEnabledCam:n,isEnabledMic:s})=>{if(e.isCallActive)return r.logger("sendMediaState"),e.sendMediaState({cam:n,mic:s})},Ce=e=>async()=>{if(e.isCallActive)return r.logger("sendRefusalToTurnOnCam"),e.sendRefusalToTurnOnCam().catch(n=>{r.logger("sendRefusalToTurnOnCam: error",n)})},fe=e=>async()=>{if(e.isCallActive)return r.logger("sendRefusalToTurnOnMic"),e.sendRefusalToTurnOnMic().catch(n=>{r.logger("sendRefusalToTurnOnMic: error",n)})},Ee=1e6,Me=({maxBitrate:e=Ee,sipConnector:t})=>async({mediaStream:s,isP2P:o=!1})=>(r.logger("startPresentation"),t.startPresentation(s,{isP2P:o,maxBitrate:e})),Re=({sipConnector:e})=>async({isP2P:n=!1}={})=>(r.logger("stopShareSipConnector"),e.stopPresentation({isP2P:n}).catch(s=>{r.logger(s)})),Te=1e6,_e=({sipConnector:e,maxBitrate:t=Te})=>async({mediaStream:s,isP2P:o=!1})=>(r.logger("updatePresentation"),e.updatePresentation(s,{isP2P:o,maxBitrate:t})),be=e=>t=>[...t].map(s=>async()=>e(s)),ye=async({accumulatedKeys:e,sendKey:t,canRunTask:n})=>{const o=be(t)(e);return z.sequentPromises(o,n)},ve=e=>n=>(r.logger("onStartMainCam"),e.onSession("admin-start-main-cam",n)),he=e=>n=>(r.logger("onStartMic"),e.onSession("admin-start-mic",n)),Oe=e=>n=>(r.logger("onStopMainCam"),e.onSession("admin-stop-main-cam",n)),Ae=e=>n=>(r.logger("onStopMic"),e.onSession("admin-stop-mic",n)),Ne=({sipConnector:e})=>{const t=(C,M)=>({isSyncForced:_=!1})=>{if(_){C();return}M()},n=ve(e),s=Oe(e),o=he(e),c=Ae(e);let a=()=>{},l=()=>{},u=()=>{},d=()=>{};const m=({onStartMainCamForced:C,onStartMainCamNotForced:M,onStopMainCamForced:_,onStopMainCamNotForced:y,onStartMicForced:v,onStartMicNotForced:R,onStopMicForced:T,onStopMicNotForced:p})=>{const b=t(C,M);a=n(b);const h=t(_,y);l=s(h);const O=t(v,R);u=o(O);const A=t(T,p);d=c(A)},S=()=>{a(),l(),u(),d()};return{start:C=>{m(C)},stop:()=>{S()}}},pe=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:L,createSyncMediaState:Ne,error:ce,getExtraHeaders:ae,getUserAgent:ue,hasPurgatory:N,resolveAnswerIncomingCall:ee,resolveAskPermissionToEnableCam:le,resolveCallToServer:ne,resolveConnectToServer:te,resolveDisconnectFromServer:re,resolveGetRemoteStreams:I,resolveOnMoveToSpectators:ge,resolveOnMustStopPresentation:Se,resolveOnUseLicense:de,resolveSendMediaState:me,resolveSendRefusalToTurnOnCam:Ce,resolveSendRefusalToTurnOnMic:fe,resolveStartPresentation:Me,resolveStopShareSipConnector:Re,resolveUpdatePresentation:_e,resolveUpdateRemoteStreams:D,sendDTMFAccumulated:ye},Symbol.toStringTag,{value:"Module"})),Pe=e=>[...e.keys()].map(t=>e.get(t)),Be=(e,t)=>Pe(e).find(n=>n.type===t),q=async e=>e.getStats().then(t=>{const n=Be(t,"codec");return n==null?void 0:n.mimeType}),Ie=e=>e.find(t=>{var n;return((n=t==null?void 0:t.track)==null?void 0:n.kind)==="video"}),x=(e,t)=>e!==void 0&&t!==void 0&&e.toLowerCase().includes(t.toLowerCase()),De=1e6,E=e=>e*De,G=E(.06),we=E(4),Fe=e=>e<=64?G:e<=128?E(.12):e<=256?E(.25):e<=384?E(.32):e<=426?E(.38):e<=640?E(.5):e<=848?E(.7):e<=1280?E(1):e<=1920?E(2):we,ke="av1",Ue=e=>x(e,ke),Le=.6,X=(e,t)=>Ue(t)?e*Le:e,Ve=e=>X(G,e),K=(e,t)=>{const n=Fe(e);return X(n,t)},W=J.createStackPromises(),$e=async()=>W().catch(e=>{r.logger("videoSendingBalancer: error",e)}),qe=async e=>(W.add(e),$e()),F=async({sender:e,scaleResolutionDownBy:t,maxBitrate:n,onSetParameters:s})=>qe(async()=>r.setEncodingsToSender(e,{scaleResolutionDownBy:t,maxBitrate:n},s)),xe=async({sender:e,codec:t},n)=>{const o=Ve(t);return F({sender:e,maxBitrate:o,onSetParameters:n,scaleResolutionDownBy:200})},B=async({sender:e,track:t,codec:n},s)=>{const a=t.getSettings().width,l=K(a,n);return F({sender:e,maxBitrate:l,onSetParameters:s,scaleResolutionDownBy:1})},Ge=async({sender:e,track:t,resolution:n,codec:s},o)=>{const c=t.getSettings(),a=c.width,l=c.height,[u,d]=n.split("x"),m=a/Number(u),S=l/Number(d),g=Math.max(m,S,1),C=K(Number(u),s);return F({sender:e,maxBitrate:C,onSetParameters:o,scaleResolutionDownBy:g})},Xe=async({mainCam:e,resolutionMainCam:t,sender:n,track:s,codec:o},c)=>{switch(e){case r.EEventsMainCAM.PAUSE_MAIN_CAM:return xe({sender:n,codec:o},c);case r.EEventsMainCAM.RESUME_MAIN_CAM:return B({sender:n,track:s,codec:o},c);case r.EEventsMainCAM.MAX_MAIN_CAM_RESOLUTION:return t!==void 0?Ge({sender:n,track:s,codec:o,resolution:t},c):B({sender:n,track:s,codec:o},c);default:return B({sender:n,track:s,codec:o},c)}},k={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},U=async({mainCam:e,resolutionMainCam:t,connection:n,onSetParameters:s,ignoreForCodec:o})=>{const c=n.getSenders(),a=Ie(c);if(!(a!=null&&a.track))return k;const l=await q(a);return x(l,o)?k:Xe({mainCam:e,resolutionMainCam:t,sender:a,codec:l,track:a.track},s)},Ke=(e,{ignoreForCodec:t,onSetParameters:n}={})=>{const s=async()=>{const{connection:u}=e;if(!u)throw new Error("connection is not exist");return U({connection:u,onSetParameters:n,ignoreForCodec:t})};let o=s;const c=async u=>(o=async()=>{const{mainCam:d,resolutionMainCam:m}=u,{connection:S}=e;if(!S)throw new Error("connection is not exist");return U({mainCam:d,resolutionMainCam:m,connection:S,onSetParameters:n,ignoreForCodec:t})},o());return{subscribe:()=>{e.onSession("main-cam-control",c)},unsubscribe:()=>{e.offSession("main-cam-control",c)},balanceByTrack:s,resetMainCamControl(){o=s},async reBalance(){return o()}}};exports.EEventsMainCAM=r.EEventsMainCAM;exports.EEventsMic=r.EEventsMic;exports.EEventsSyncMediaState=r.EEventsSyncMediaState;exports.EUseLicense=r.EUseLicense;exports.causes=r.causes;exports.constants=r.constants;exports.default=r.SipConnector;exports.disableDebug=r.disableDebug;exports.enableDebug=r.enableDebug;exports.eventNames=r.eventNames;exports.hasCanceledCallError=r.hasCanceledCallError;exports.debug=Q;exports.getCodecFromSender=q;exports.resolveVideoSendingBalancer=Ke;exports.tools=pe;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("./SipConnector-3pnvrFP5.cjs"),W=require("ts-debounce"),H=require("@krivega/cancelable-promise"),Y=require("repeated-calls"),z=require("sequent-promises"),J=require("stack-promises"),Q=require("debug"),L="purgatory",N=e=>e===L,I=e=>()=>(r.logger("getRemoteStreams"),e.getRemoteStreams()),Z=({kind:e,readyState:t})=>e==="video"&&t==="live",V=e=>({track:t})=>{Z(t)&&e()},D=({getRemoteStreams:e,setRemoteStreams:t})=>W.debounce(()=>{const n=e();r.logger("remoteStreams",n),n&&t(n)},200),ee=e=>async n=>{const{mediaStream:s,extraHeaders:o,iceServers:c,degradationPreference:a,setRemoteStreams:l,onBeforeProgressCall:u,onSuccessProgressCall:d,onEnterPurgatory:m,onEnterConference:g,onFailProgressCall:C,onFinishProgressCall:S,onEndedCall:f}=n,M=D({setRemoteStreams:l,getRemoteStreams:I(e)}),y=V(M);r.logger("answerIncomingCall",n);const b=async()=>e.answerToIncomingCall({mediaStream:s,extraHeaders:o,iceServers:c,degradationPreference:a,ontrack:y}),v=()=>{const{remoteCallerData:i}=e;return i.incomingNumber};let R=!1,T;const _=(r.logger("subscribeEnterConference: onEnterConference",g),m??g?e.onSession("enterRoom",i=>{r.logger("enterRoom",{_room:i,isSuccessProgressCall:R}),T=i,N(T)?m&&m():g&&g({isSuccessProgressCall:R})}):()=>{}),h=i=>(r.logger("onSuccess"),R=!0,M(),d&&d({isPurgatory:N(T)}),e.onceRaceSession(["ended","failed"],()=>{_(),f&&f()}),i),O=i=>{throw r.logger("onFail"),C&&C(),_(),i},A=()=>{r.logger("onFinish"),S&&S()};if(r.logger("onBeforeProgressCall"),u){const i=v();u(i)}return b().then(h).catch(i=>O(i)).finally(A)},ne=e=>async n=>{const{conference:s,mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:l,setRemoteStreams:u,onBeforeProgressCall:d,onSuccessProgressCall:m,onEnterPurgatory:g,onEnterConference:C,onFailProgressCall:S,onFinishProgressCall:f,onEndedCall:M}=n,y=D({setRemoteStreams:u,getRemoteStreams:I(e)}),b=V(y);r.logger("callToServer",n);const v=async()=>(r.logger("startCall"),e.call({mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:l,number:s,ontrack:b}));let R=!1,T;const _=(r.logger("subscribeEnterConference: onEnterConference",C),g??C?e.onSession("enterRoom",({room:i})=>{r.logger("enterRoom",{_room:i,isSuccessProgressCall:R}),T=i,N(T)?g&&g():C&&C({isSuccessProgressCall:R})}):()=>{}),h=i=>(r.logger("onSuccess"),R=!0,y(),m&&m({isPurgatory:N(T)}),e.onceRaceSession(["ended","failed"],()=>{_(),M&&M()}),i),O=i=>{throw r.logger("onFail"),S&&S(),_(),i},A=()=>{r.logger("onFinish"),f&&f()};return r.logger("onBeforeProgressCall"),d&&d(s),v().then(h).catch(i=>O(i)).finally(A)},P=e=>{if(!H.isCanceledError(e)&&!Y.hasCanceledError(e))throw e;return{isSuccessful:!1}},te=e=>async n=>{const{userAgent:s,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:l,name:u,password:d,isRegisteredUser:m,sdpSemantics:g,isDisconnectOnFail:C}=n;return r.logger("connectToServer",n),e.connect({userAgent:s,sdpSemantics:g,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:l,password:d,user:u,register:m}).then(S=>(r.logger("connectToServer then"),{ua:S,isSuccessful:!0})).catch(async S=>(r.logger("connectToServer catch: error",S),C===!0?e.disconnect().then(()=>P(S)).catch(()=>P(S)):P(S)))},re=e=>async()=>(r.logger("disconnectFromServer"),e.disconnect().then(()=>(r.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(t=>(r.logger("disconnectFromServer: catch",t),{isSuccessful:!1}))),w=e=>{const{url:t,cause:n}=e;let s=t;return(n===r.BAD_MEDIA_DESCRIPTION||n===r.NOT_FOUND)&&(s=`${e.message.to.uri.user}@${e.message.to.uri.host}`),s};var $=(e=>(e.CONNECT_SERVER_FAILED="CONNECT_SERVER_FAILED",e.WRONG_USER_OR_PASSWORD="WRONG_USER_OR_PASSWORD",e.BAD_MEDIA_ERROR="BAD_MEDIA_ERROR",e.NOT_FOUND_ERROR="NOT_FOUND_ERROR",e.WS_CONNECTION_FAILED="WS_CONNECTION_FAILED",e.CONNECT_SERVER_FAILED_BY_LINK="CONNECT_SERVER_FAILED_BY_LINK",e))($||{});const se=(e=new Error)=>{var o;const{cause:t,socket:n}=e;let s="CONNECT_SERVER_FAILED";switch(t){case"Forbidden":{s="WRONG_USER_OR_PASSWORD";break}case r.BAD_MEDIA_DESCRIPTION:{s="BAD_MEDIA_ERROR";break}case r.NOT_FOUND:{s="NOT_FOUND_ERROR";break}default:n&&((o=n==null?void 0:n._ws)==null?void 0:o.readyState)===3?s="WS_CONNECTION_FAILED":w(e)&&(s="CONNECT_SERVER_FAILED_BY_LINK")}return s},oe=e=>{let t="";try{t=JSON.stringify(e)}catch(n){r.logger("failed to stringify message",n)}return t},ce=(e=new Error)=>{const{code:t,cause:n,message:s}=e,o=w(e),c={code:"",cause:"",message:""};return typeof s=="object"&&s!==null?c.message=oe(s):s&&(c.message=String(s)),o&&(c.link=o),t&&(c.code=t),n&&(c.cause=n),c},ae=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:$,getLinkError:w,getTypeFromError:se,getValuesFromError:ce},Symbol.toStringTag,{value:"Module"})),ie=({sessionId:e,remoteAddress:t,isMutedAudio:n,isMutedVideo:s,isRegistered:o,isPresentationCall:c})=>{const a=[],l=n?"0":"1",u=s?"0":"1";return a.push(`X-Vinteo-Mic-State: ${l}`,`X-Vinteo-MainCam-State: ${u}`),o||a.push("X-Vinteo-Purgatory-Call: yes"),e&&a.push(`X-Vinteo-Session: ${e}`),c&&a.push("X-Vinteo-Presentation-Call: yes"),t&&a.push(`X-Vinteo-Remote: ${t}`),a},ue=({appName:e,appVersion:t,browserName:n,browserVersion:s})=>{const o=`${e} ${t}`;return`ChromeNew - ${n?`${n} ${s}, ${o}`:o}`},le=({isUnifiedSdpSemantic:e,appVersion:t,browserName:n,browserVersion:s,appName:o})=>e?ue({appVersion:t,browserName:n,browserVersion:s,appName:o}):"Chrome",ge=e=>async()=>{if(e.isCallActive)return r.logger("askPermissionToEnableCam"),e.askPermissionToEnableCam()},Se=e=>n=>(r.logger("onMustStopPresentation"),e.onSession("mustStopPresentation",n)),de=e=>n=>(r.logger("onMoveToSpectators"),e.onSession("participant:move-request-to-spectators",n)),me=e=>n=>(r.logger("onUseLicense"),e.onSession("useLicense",n)),fe=e=>async({isEnabledCam:n,isEnabledMic:s})=>{if(e.isCallActive)return r.logger("sendMediaState"),e.sendMediaState({cam:n,mic:s})},Ce=e=>async()=>{if(e.isCallActive)return r.logger("sendRefusalToTurnOnCam"),e.sendRefusalToTurnOnCam().catch(n=>{r.logger("sendRefusalToTurnOnCam: error",n)})},Ee=e=>async()=>{if(e.isCallActive)return r.logger("sendRefusalToTurnOnMic"),e.sendRefusalToTurnOnMic().catch(n=>{r.logger("sendRefusalToTurnOnMic: error",n)})},Me=1e6,Re=({maxBitrate:e=Me,sipConnector:t})=>async({mediaStream:s,isP2P:o=!1})=>(r.logger("startPresentation"),t.startPresentation(s,{isP2P:o,maxBitrate:e})),Te=({sipConnector:e})=>async({isP2P:n=!1}={})=>(r.logger("stopShareSipConnector"),e.stopPresentation({isP2P:n}).catch(s=>{r.logger(s)})),ye=1e6,_e=({sipConnector:e,maxBitrate:t=ye})=>async({mediaStream:s,isP2P:o=!1})=>(r.logger("updatePresentation"),e.updatePresentation(s,{isP2P:o,maxBitrate:t})),be=e=>t=>[...t].map(s=>async()=>e(s)),ve=async({accumulatedKeys:e,sendKey:t,canRunTask:n})=>{const o=be(t)(e);return z.sequentPromises(o,n)},he=e=>n=>(r.logger("onStartMainCam"),e.onSession("admin-start-main-cam",n)),Oe=e=>n=>(r.logger("onStartMic"),e.onSession("admin-start-mic",n)),Ae=e=>n=>(r.logger("onStopMainCam"),e.onSession("admin-stop-main-cam",n)),Ne=e=>n=>(r.logger("onStopMic"),e.onSession("admin-stop-mic",n)),pe=({sipConnector:e})=>{const t=(f,M)=>({isSyncForced:y=!1})=>{if(y){f();return}M()},n=he(e),s=Ae(e),o=Oe(e),c=Ne(e);let a=()=>{},l=()=>{},u=()=>{},d=()=>{};const m=({onStartMainCamForced:f,onStartMainCamNotForced:M,onStopMainCamForced:y,onStopMainCamNotForced:b,onStartMicForced:v,onStartMicNotForced:R,onStopMicForced:T,onStopMicNotForced:p})=>{const _=t(f,M);a=n(_);const h=t(y,b);l=s(h);const O=t(v,R);u=o(O);const A=t(T,p);d=c(A)},g=()=>{a(),l(),u(),d()};return{start:f=>{m(f)},stop:()=>{g()}}},Pe=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:L,createSyncMediaState:pe,error:ae,getExtraHeaders:ie,getUserAgent:le,hasPurgatory:N,resolveAnswerIncomingCall:ee,resolveAskPermissionToEnableCam:ge,resolveCallToServer:ne,resolveConnectToServer:te,resolveDisconnectFromServer:re,resolveGetRemoteStreams:I,resolveOnMoveToSpectators:de,resolveOnMustStopPresentation:Se,resolveOnUseLicense:me,resolveSendMediaState:fe,resolveSendRefusalToTurnOnCam:Ce,resolveSendRefusalToTurnOnMic:Ee,resolveStartPresentation:Re,resolveStopShareSipConnector:Te,resolveUpdatePresentation:_e,resolveUpdateRemoteStreams:D,sendDTMFAccumulated:ve},Symbol.toStringTag,{value:"Module"})),Be=e=>[...e.keys()].map(t=>e.get(t)),Ie=(e,t)=>Be(e).find(n=>n.type===t),q=async e=>e.getStats().then(t=>{const n=Ie(t,"codec");return n==null?void 0:n.mimeType}),De=e=>e.find(t=>{var n;return((n=t==null?void 0:t.track)==null?void 0:n.kind)==="video"}),x=(e,t)=>e!==void 0&&t!==void 0&&e.toLowerCase().includes(t.toLowerCase()),we=1e6,E=e=>e*we,G=E(.06),Fe=E(4),ke=e=>e<=64?G:e<=128?E(.12):e<=256?E(.25):e<=384?E(.32):e<=426?E(.38):e<=640?E(.5):e<=848?E(.7):e<=1280?E(1):e<=1920?E(2):Fe,Ue="av1",Le=e=>x(e,Ue),Ve=.6,X=(e,t)=>Le(t)?e*Ve:e,$e=e=>X(G,e),j=(e,t)=>{const n=ke(e);return X(n,t)},K=J.createStackPromises(),qe=async()=>K().catch(e=>{r.logger("videoSendingBalancer: error",e)}),xe=async e=>(K.add(e),qe()),F=async({sender:e,scaleResolutionDownBy:t,maxBitrate:n,onSetParameters:s})=>xe(async()=>r.setEncodingsToSender(e,{scaleResolutionDownBy:t,maxBitrate:n},s)),Ge=async({sender:e,codec:t},n)=>{const o=$e(t);return F({sender:e,maxBitrate:o,onSetParameters:n,scaleResolutionDownBy:200})},B=async({sender:e,track:t,codec:n},s)=>{const a=t.getSettings().width,l=j(a,n);return F({sender:e,maxBitrate:l,onSetParameters:s,scaleResolutionDownBy:1})},Xe=async({sender:e,track:t,resolution:n,codec:s},o)=>{const c=t.getSettings(),a=c.width,l=c.height,[u,d]=n.split("x"),m=a/Number(u),g=l/Number(d),S=Math.max(m,g,1),f=j(Number(u),s);return F({sender:e,maxBitrate:f,onSetParameters:o,scaleResolutionDownBy:S})},je=async({mainCam:e,resolutionMainCam:t,sender:n,track:s,codec:o},c)=>{switch(e){case r.EEventsMainCAM.PAUSE_MAIN_CAM:return Ge({sender:n,codec:o},c);case r.EEventsMainCAM.RESUME_MAIN_CAM:return B({sender:n,track:s,codec:o},c);case r.EEventsMainCAM.MAX_MAIN_CAM_RESOLUTION:return t!==void 0?Xe({sender:n,track:s,codec:o,resolution:t},c):B({sender:n,track:s,codec:o},c);default:return B({sender:n,track:s,codec:o},c)}},k={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},U=async({mainCam:e,resolutionMainCam:t,connection:n,onSetParameters:s,ignoreForCodec:o})=>{const c=n.getSenders(),a=De(c);if(!(a!=null&&a.track))return k;const l=await q(a);return x(l,o)?k:je({mainCam:e,resolutionMainCam:t,sender:a,codec:l,track:a.track},s)},Ke=(e,{ignoreForCodec:t,onSetParameters:n}={})=>{const s=async()=>{const{connection:u}=e;if(!u)throw new Error("connection is not exist");return U({connection:u,onSetParameters:n,ignoreForCodec:t})};let o=s;const c=async u=>(o=async()=>{const{mainCam:d,resolutionMainCam:m}=u,{connection:g}=e;if(!g)throw new Error("connection is not exist");return U({mainCam:d,resolutionMainCam:m,connection:g,onSetParameters:n,ignoreForCodec:t})},o());return{subscribe:()=>{e.onSession("main-cam-control",c)},unsubscribe:()=>{e.offSession("main-cam-control",c)},balanceByTrack:s,resetMainCamControl(){o=s},async reBalance(){return o()}}};exports.EEventsMainCAM=r.EEventsMainCAM;exports.EEventsMic=r.EEventsMic;exports.EEventsSyncMediaState=r.EEventsSyncMediaState;exports.EUseLicense=r.EUseLicense;exports.causes=r.causes;exports.constants=r.constants;exports.default=r.SipConnector;exports.disableDebug=r.disableDebug;exports.enableDebug=r.enableDebug;exports.eventNames=r.eventNames;exports.hasCanceledCallError=r.hasCanceledCallError;exports.debug=Q;exports.getCodecFromSender=q;exports.resolveVideoSendingBalancer=Ke;exports.tools=Pe;