sip-connector 14.1.0-alpha.11 → 14.1.0-alpha.13

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.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("events-constructor");const i=require("./@SipConnector-Xh6_JpUI.cjs"),W=require("@krivega/cancelable-promise"),ce=require("repeated-calls"),ae=require("ts-debounce"),_=require("debug"),le=require("sequent-promises"),ue=require("stack-promises"),de=e=>e instanceof Object&&("originator"in e||"cause"in e),ge=e=>{if(W.isCanceledError(e))return!0;if(!de(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},fe=(e,n)=>(e.degradationPreference=n.degradationPreference,e),Ce=(e,n)=>{e.encodings??=[];for(let t=e.encodings.length;t<n;t+=1)e.encodings.push({});return e},G=e=>(n,t)=>t!==void 0&&n!==t||t===void 0&&n!==e,he=G(),Se=(e,n)=>{if(he(e,n))return e},me=(e,n)=>{const t=e.maxBitrate,o=Se(n,t);return o!==void 0&&(e.maxBitrate=o),e},K=1,Re=G(K),ye=(e,n)=>{const t=e===void 0?void 0:Math.max(e,K);if(t!==void 0&&Re(t,n))return t},pe=(e,n)=>{const t=e.scaleResolutionDownBy,o=ye(n,t);return o!==void 0&&(e.scaleResolutionDownBy=o),e},Ee=(e,n)=>{const t=n.encodings?.length??0;return Ce(e,t),e.encodings.forEach((o,r)=>{const s=(n?.encodings??[])[r],c=s?.maxBitrate,a=s?.scaleResolutionDownBy;me(o,c),pe(o,a)}),e},Te=(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));Ee(t,n),fe(t,n);const r=Te(o,t);return r&&await e.setParameters(t),{parameters:t,isChanged:r}},Me=e=>e.getVideoTracks()[0],ve=1e6,m=e=>e*ve,Y=m(.06),be=m(4),_e=e=>e<=64?Y: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):be,z=(e,n)=>e!==void 0&&n!==void 0&&e.toLowerCase().includes(n.toLowerCase()),Ae="av1",Oe=e=>z(e,Ae),Ne=.6,Q=(e,n)=>Oe(n)?e*Ne:e,Be=e=>Q(Y,e),Z=(e,n)=>{const t=_e(e);return Q(t,n)},H=1,ee=({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=Z(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}=ee({videoTrack:r,targetSize:{width:s.width,height:s.height}});a.maxBitrate=l,a.scaleResolutionDownBy=d,o[c]=a}),o}return t},ne="purgatory",P=e=>e===ne,we=(e,n)=>e.filter(o=>n.some(r=>r.clockRate===o.clockRate&&r.mimeType===o.mimeType&&r.channels===o.channels&&r.sdpFmtpLine===o.sdpFmtpLine)),De=e=>{const n=RTCRtpSender.getCapabilities(e),t=RTCRtpReceiver.getCapabilities(e),o=n===null?[]:n.codecs,r=t===null?[]:t.codecs;return we(o,r)},Pe=(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}),Ie=(e,n)=>n===void 0||n.length===0?e:e.filter(t=>!n.includes(t.mimeType)),D=(e,{preferredMimeTypesVideoCodecs:n,excludeMimeTypesVideoCodecs:t})=>async o=>{try{if(typeof o.setCodecPreferences=="function"&&o.sender.track?.kind==="video"&&(n!==void 0&&n.length>0||t!==void 0&&t.length>0)){const r=De("video"),s=Ie(r,t),c=Pe(s,n);o.setCodecPreferences(c)}Object.keys(e).length>0&&await q(o.sender,e)}catch(r){i.logger("updateTransceiver error",r)}},$=e=>{if(!W.isCanceledError(e)&&!ce.hasCanceledError(e))throw e;return{isSuccessful:!1}},xe=({kind:e,readyState:n})=>e==="video"&&n==="live",Fe=new Set(["on","once","onceRace","wait","off","sendDTMF","hangUp","declineToIncomingCall","sendChannels","checkTelephony","waitChannels","ping","connection","isConfigured","isRegistered"]);class ke{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"&&Fe.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:y,onFailProgressCall:p,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 M=!1,v;const B=(i.logger("subscribeEnterConference: onEnterConference",y),S??y?this.sipConnector.on("api:enterRoom",({room:u})=>{i.logger("enterRoom",{_room:u,isSuccessProgressCall:M}),v=u,P(v)?S&&S():y&&y({isSuccessProgressCall:M})}):()=>{}),U=u=>(i.logger("onSuccess"),M=!0,b().catch(_),h&&h({isPurgatory:P(v)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{B(),T&&T()}),u),V=u=>{throw i.logger("onFail"),p&&p(),B(),u},L=()=>{i.logger("onFinish"),E&&E()};return i.logger("onBeforeProgressCall"),R&&R(t),N().then(U).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:y,onFinishProgressCall:p,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 M=!1,v;const B=(i.logger("subscribeEnterConference: onEnterConference",S),h??S?this.sipConnector.on("api:enterRoom",u=>{i.logger("enterRoom",{_room:u,isSuccessProgressCall:M}),v=u,P(v)?h&&h():S&&S({isSuccessProgressCall:M})}):()=>{}),U=u=>(i.logger("onSuccess"),M=!0,T().catch(_),R&&R({isPurgatory:P(v)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{B(),E&&E()}),u),V=u=>{throw i.logger("onFail"),y&&y(),B(),u},L=()=>{i.logger("onFinish"),p&&p()};if(i.logger("onBeforeProgressCall"),C){const u=N();C(u)}return O().then(U).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})=>ae.debounce(()=>{const t=this.sipConnector.getRemoteStreams();i.logger("remoteStreams",t),t&&n(t)},200);resolveHandleReadyRemoteStreams=({onReadyRemoteStreams:n})=>({track:t})=>{xe(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 k=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 te=(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))(te||{});const Ue=new Error("Unknown error"),Ve=(e=Ue)=>{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":k(e)!==void 0&&k(e)!==""&&(o="CONNECT_SERVER_FAILED_BY_LINK")}return o},Le=e=>{let n="";try{n=JSON.stringify(e)}catch(t){i.logger("failed to stringify message",t)}return n},He=new Error("Unknown error"),$e=(e=He)=>{const{code:n,cause:t,message:o}=e,r=k(e),s={code:"",cause:"",message:""};return typeof o=="object"&&o!==null?s.message=Le(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},qe=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:te,getLinkError:k,getTypeFromError:Ve,getValuesFromError:$e},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},Xe="[@*!|]",je="_",We=e=>{let n=e;return n=n.replaceAll(new RegExp(Xe,"g"),je),n},Ge=({appName:e,appVersion:n,browserName:t,browserVersion:o})=>{const s=`${We(e)} ${n}`;return`ChromeNew - ${t===void 0?s:`${t} ${o}, ${s}`}`},Ke=({isUnifiedSdpSemantic:e,appVersion:n,browserName:t,browserVersion:o,appName:r})=>e?Ge({appVersion:n,browserName:t,browserVersion:o,appName:r}):"Chrome",Ye=e=>n=>[...n].map(o=>async()=>e(o)),ze=async({accumulatedKeys:e,sendKey:n,canRunTask:t})=>{const r=Ye(n)(e);return le.sequentPromises(r,t)},Qe=e=>t=>(i.logger("onStartMainCam"),e.on("api:admin-start-main-cam",t)),Ze=e=>t=>(i.logger("onStartMic"),e.on("api:admin-start-mic",t)),en=e=>t=>(i.logger("onStopMainCam"),e.on("api:admin-stop-main-cam",t)),nn=e=>t=>(i.logger("onStopMic"),e.on("api:admin-stop-mic",t)),tn=({sipConnector:e})=>{const n=(C,R)=>({isSyncForced:h})=>{if(h===!0){C();return}R()},t=Qe(e),o=en(e),r=Ze(e),s=nn(e);let c,a,l,d;const f=({onStartMainCamForced:C,onStartMainCamNotForced:R,onStopMainCamForced:h,onStopMainCamNotForced:S,onStartMicForced:y,onStartMicNotForced:p,onStopMicForced:E,onStopMicNotForced:T})=>{const b=n(C,R);c=t(b);const A=n(h,S);a=o(A);const O=n(y,p);l=r(O);const N=n(E,T);d=s(N)},g=()=>{c?.(),a?.(),l?.(),d?.()};return{start:C=>{f(C)},stop:()=>{g()}}},on=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:ne,createSyncMediaState:tn,error:qe,getExtraHeaders:Je,getUserAgent:Ke,hasPurgatory:P,sendDtmfAccumulated:ze},Symbol.toStringTag,{value:"Module"}));var oe=(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))(oe||{});const rn=e=>[...e.keys()].map(n=>e.get(n)),sn=(e,n)=>rn(e).find(t=>t?.type===n),re=async e=>e.getStats().then(n=>sn(n,"codec")?.mimeType),cn=e=>e.find(n=>n.track?.kind==="video"),an=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}},se=ue.createStackPromises(),ln=async()=>se().catch(e=>{i.logger("videoSendingBalancer: error",e)}),un=async e=>(se.add(e),ln()),J=async({sender:e,scaleResolutionDownBy:n,maxBitrate:t,onSetParameters:o})=>un(async()=>an(e,{scaleResolutionDownBy:n,maxBitrate:t},o)),dn=async({sender:e,codec:n},t)=>{const r=Be(n);return J({sender:e,maxBitrate:r,onSetParameters:t,scaleResolutionDownBy:200})},F=async({sender:e,videoTrack:n,codec:t},o)=>{const c=n.getSettings().width,a=Z(c??0,t);return J({sender:e,maxBitrate:a,onSetParameters:o,scaleResolutionDownBy:1})},gn=async({sender:e,videoTrack:n,resolution:t,codec:o},r)=>{const[s,c]=t.split("x"),{maxBitrate:a,scaleResolutionDownBy:l}=ee({videoTrack:n,codec:o,targetSize:{width:Number(s),height:Number(c)}});return J({sender:e,maxBitrate:a,onSetParameters:r,scaleResolutionDownBy:l})},fn=async({mainCam:e,resolutionMainCam:n,sender:t,videoTrack:o,codec:r},s)=>{switch(e){case i.EEventsMainCAM.PAUSE_MAIN_CAM:return dn({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?gn({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)}},X={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},j=async({mainCam:e,resolutionMainCam:n,connection:t,onSetParameters:o,ignoreForCodec:r})=>{const s=t.getSenders(),c=cn(s);if(!c?.track)return X;const a=await re(c);return z(a,r)?X:fn({mainCam:e,resolutionMainCam:n,sender:c,codec:a,videoTrack:c.track},o)},Cn=(e,{ignoreForCodec:n,onSetParameters:t}={})=>{const o=async()=>{const{connection:l}=e;if(!l)throw new Error("connection is not exist");return j({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 j({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=oe;exports.SipConnectorFacade=ke;exports.getCodecFromSender=re;exports.hasCanceledCallError=ge;exports.resolveVideoSendingBalancer=Cn;exports.setParametersToSender=q;exports.tools=on;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("events-constructor");const i=require("./@SipConnector-Xh6_JpUI.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;
package/dist/index.js CHANGED
@@ -1,53 +1,53 @@
1
1
  import "events-constructor";
2
- import { E as y, O as ce, l as c, a as w } from "./@SipConnector-C-ThpS1P.js";
3
- import { b as On, S as Nn, d as Bn, e as wn, h as Dn } from "./@SipConnector-C-ThpS1P.js";
4
- import { isCanceledError as K } from "@krivega/cancelable-promise";
5
- import { hasCanceledError as ae } from "repeated-calls";
6
- import { debounce as ue } from "ts-debounce";
7
- import I from "debug";
8
- import { default as In } from "debug";
9
- import { sequentPromises as de } from "sequent-promises";
10
- import { createStackPromises as le } from "stack-promises";
11
- const fe = (e) => e instanceof Object && ("originator" in e || "cause" in e), Tn = (e) => {
12
- if (K(e))
2
+ import { E as y, O as ae, l as i, a as w } from "./@SipConnector-C-ThpS1P.js";
3
+ import { b as Bn, S as wn, d as Dn, e as Pn, h as xn } from "./@SipConnector-C-ThpS1P.js";
4
+ import { isCanceledError as Y } from "@krivega/cancelable-promise";
5
+ import { hasCanceledError as ue } from "repeated-calls";
6
+ import { debounce as de } from "ts-debounce";
7
+ import x from "debug";
8
+ import { default as Fn } from "debug";
9
+ import { sequentPromises as le } from "sequent-promises";
10
+ import { createStackPromises as fe } from "stack-promises";
11
+ const he = (e) => e instanceof Object && ("originator" in e || "cause" in e), Mn = (e) => {
12
+ if (Y(e))
13
13
  return !0;
14
- if (!fe(e))
14
+ if (!he(e))
15
15
  return !1;
16
16
  const { originator: n, cause: t } = e;
17
- return typeof t == "string" ? t === y.REQUEST_TIMEOUT || t === y.REJECTED || n === ce.LOCAL && (t === y.CANCELED || t === y.BYE) : !1;
18
- }, he = (e, n) => (e.degradationPreference = n.degradationPreference, e), ge = (e, n) => {
17
+ return typeof t == "string" ? t === y.REQUEST_TIMEOUT || t === y.REJECTED || n === ae.LOCAL && (t === y.CANCELED || t === y.BYE) : !1;
18
+ }, ge = (e, n) => (e.degradationPreference = n.degradationPreference, e), Ce = (e, n) => {
19
19
  e.encodings ??= [];
20
20
  for (let t = e.encodings.length; t < n; t += 1)
21
21
  e.encodings.push({});
22
22
  return e;
23
- }, Y = (e) => (n, t) => t !== void 0 && n !== t || t === void 0 && n !== e, Ce = Y(), Se = (e, n) => {
24
- if (Ce(e, n))
23
+ }, q = (e) => (n, t) => t !== void 0 && n !== t || t === void 0 && n !== e, Se = q(), me = (e, n) => {
24
+ if (Se(e, n))
25
25
  return e;
26
- }, me = (e, n) => {
27
- const t = e.maxBitrate, o = Se(n, t);
26
+ }, Re = (e, n) => {
27
+ const t = e.maxBitrate, o = me(n, t);
28
28
  return o !== void 0 && (e.maxBitrate = o), e;
29
- }, q = 1, Re = Y(
30
- q
31
- ), pe = (e, n) => {
32
- const t = e === void 0 ? void 0 : Math.max(e, q);
33
- if (t !== void 0 && Re(
29
+ }, z = 1, pe = q(
30
+ z
31
+ ), ye = (e, n) => {
32
+ const t = e === void 0 ? void 0 : Math.max(e, z);
33
+ if (t !== void 0 && pe(
34
34
  t,
35
35
  n
36
36
  ))
37
37
  return t;
38
- }, ye = (e, n) => {
39
- const t = e.scaleResolutionDownBy, o = pe(
38
+ }, Ee = (e, n) => {
39
+ const t = e.scaleResolutionDownBy, o = ye(
40
40
  n,
41
41
  t
42
42
  );
43
43
  return o !== void 0 && (e.scaleResolutionDownBy = o), e;
44
- }, Ee = (e, n) => {
44
+ }, Te = (e, n) => {
45
45
  const t = n.encodings?.length ?? 0;
46
- return ge(e, t), e.encodings.forEach((o, s) => {
47
- const r = (n?.encodings ?? [])[s], i = r?.maxBitrate, a = r?.scaleResolutionDownBy;
48
- me(o, i), ye(o, a);
46
+ return Ce(e, t), e.encodings.forEach((o, s) => {
47
+ const r = (n?.encodings ?? [])[s], c = r?.maxBitrate, a = r?.scaleResolutionDownBy;
48
+ Re(o, c), Ee(o, a);
49
49
  }), e;
50
- }, Te = (e, n) => {
50
+ }, ve = (e, n) => {
51
51
  if (e.codecs?.length !== n.codecs?.length)
52
52
  return !0;
53
53
  for (let t = 0; t < (e.codecs?.length ?? 0); t++)
@@ -64,22 +64,22 @@ const fe = (e) => e instanceof Object && ("originator" in e || "cause" in e), Tn
64
64
  if (JSON.stringify(e.encodings[t]) !== JSON.stringify(n.encodings[t]))
65
65
  return !0;
66
66
  return e.rtcp?.cname !== n.rtcp?.cname || e.rtcp?.reducedSize !== n.rtcp?.reducedSize || e.degradationPreference !== n.degradationPreference;
67
- }, z = async (e, n) => {
67
+ }, Q = async (e, n) => {
68
68
  const t = e.getParameters(), o = JSON.parse(
69
69
  JSON.stringify(t)
70
70
  );
71
- Ee(t, n), he(t, n);
72
- const s = Te(o, t);
71
+ Te(t, n), ge(t, n);
72
+ const s = ve(o, t);
73
73
  return s && await e.setParameters(t), { parameters: t, isChanged: s };
74
- }, ve = (e) => e.getVideoTracks()[0], Me = 1e6, m = (e) => e * Me, Q = m(0.06), be = m(4), _e = (e) => e <= 64 ? Q : e <= 128 ? m(0.12) : e <= 256 ? m(0.25) : e <= 384 ? m(0.32) : e <= 426 ? m(0.38) : e <= 640 ? m(0.5) : e <= 848 ? m(0.7) : e <= 1280 ? m(1) : e <= 1920 ? m(2) : be, Z = (e, n) => e !== void 0 && n !== void 0 && e.toLowerCase().includes(n.toLowerCase()), Ae = "av1", Oe = (e) => Z(e, Ae), Ne = 0.6, ee = (e, n) => Oe(n) ? e * Ne : e, Be = (e) => ee(Q, e), ne = (e, n) => {
74
+ }, Me = (e) => e.getVideoTracks()[0], be = 1e6, m = (e) => e * be, Z = m(0.06), ee = m(4), _e = (e) => e <= 64 ? Z : e <= 128 ? m(0.12) : e <= 256 ? m(0.25) : e <= 384 ? m(0.32) : e <= 426 ? m(0.38) : e <= 640 ? m(0.5) : e <= 848 ? m(0.7) : e <= 1280 ? m(1) : e <= 1920 ? m(2) : ee, ne = (e, n) => e !== void 0 && n !== void 0 && e.toLowerCase().includes(n.toLowerCase()), Ae = "av1", Oe = (e) => ne(e, Ae), Ne = 0.6, W = (e, n) => Oe(n) ? e * Ne : e, Be = (e) => W(Z, e), we = (e) => W(ee, e), te = (e, n) => {
75
75
  const t = _e(e);
76
- return ee(t, n);
77
- }, J = 1, te = ({
76
+ return W(t, n);
77
+ }, J = 1, oe = ({
78
78
  videoTrack: e,
79
79
  targetSize: n,
80
80
  codec: t
81
81
  }) => {
82
- const o = e.getSettings(), s = o.width, r = o.height, i = s === void 0 ? J : s / n.width, a = r === void 0 ? J : r / n.height, u = Math.max(i, a, J), l = ne(n.width, t);
82
+ const o = e.getSettings(), s = o.width, r = o.height, c = s === void 0 ? J : s / n.width, a = r === void 0 ? J : r / n.height, u = Math.max(c, a, J), l = te(n.width, t);
83
83
  return { scaleResolutionDownBy: u, maxBitrate: l };
84
84
  }, D = ({
85
85
  mediaStream: e,
@@ -87,47 +87,54 @@ const fe = (e) => e instanceof Object && ("originator" in e || "cause" in e), Tn
87
87
  sendEncodings: t
88
88
  }) => {
89
89
  if (n && n.length > 0) {
90
- const o = t ?? [], s = ve(e);
90
+ const o = t ?? [], s = Me(e);
91
91
  if (s === void 0)
92
92
  throw new Error("No video track");
93
- return n.forEach((r, i) => {
94
- const a = o[i] ?? {};
93
+ return n.forEach((r, c) => {
94
+ const a = o[c] ?? {};
95
95
  a.active = !0, r.rid !== void 0 && (a.rid = r.rid), r.scalabilityMode !== void 0 && (a.scalabilityMode = r.scalabilityMode);
96
- const { maxBitrate: u, scaleResolutionDownBy: l } = te({
96
+ const { maxBitrate: u, scaleResolutionDownBy: l } = oe({
97
97
  videoTrack: s,
98
98
  targetSize: {
99
99
  width: r.width,
100
100
  height: r.height
101
101
  }
102
102
  });
103
- a.maxBitrate = u, a.scaleResolutionDownBy = l, o[i] = a;
103
+ a.maxBitrate = u, a.scaleResolutionDownBy = l, o[c] = a;
104
104
  }), o;
105
105
  }
106
106
  return t;
107
- }, oe = "purgatory", x = (e) => e === oe, we = (e, n) => e.filter((o) => n.some((s) => s.clockRate === o.clockRate && s.mimeType === o.mimeType && s.channels === o.channels && s.sdpFmtpLine === o.sdpFmtpLine)), De = (e) => {
107
+ }, se = "purgatory", I = (e) => e === se, De = (e, n) => e.filter((o) => n.some((s) => s.clockRate === o.clockRate && s.mimeType === o.mimeType && s.channels === o.channels && s.sdpFmtpLine === o.sdpFmtpLine)), Pe = (e) => {
108
108
  const n = RTCRtpSender.getCapabilities(e), t = RTCRtpReceiver.getCapabilities(e), o = n === null ? [] : n.codecs, s = t === null ? [] : t.codecs;
109
- return we(o, s);
110
- }, Pe = (e, n) => n === void 0 || n.length === 0 ? e : e.sort((t, o) => {
111
- const s = n.indexOf(t.mimeType), r = n.indexOf(o.mimeType), i = s === -1 ? Number.MAX_VALUE : s, a = r === -1 ? Number.MAX_VALUE : r;
112
- return i - a;
113
- }), Ie = (e, n) => n === void 0 || n.length === 0 ? e : e.filter((t) => !n.includes(t.mimeType)), P = (e, {
109
+ return De(o, s);
110
+ }, xe = (e, n) => n === void 0 || n.length === 0 ? e : e.sort((t, o) => {
111
+ const s = n.indexOf(t.mimeType), r = n.indexOf(o.mimeType), c = s === -1 ? Number.MAX_VALUE : s, a = r === -1 ? Number.MAX_VALUE : r;
112
+ return c - a;
113
+ }), Ie = (e, n) => n === void 0 || n.length === 0 ? e : e.filter((t) => !n.includes(t.mimeType)), Fe = (e, {
114
+ preferredMimeTypesVideoCodecs: n,
115
+ excludeMimeTypesVideoCodecs: t
116
+ }) => {
117
+ if (typeof e.setCodecPreferences == "function" && e.sender.track?.kind === "video" && (n !== void 0 && n.length > 0 || t !== void 0 && t.length > 0)) {
118
+ const o = Pe("video"), s = Ie(o, t), r = xe(s, n);
119
+ e.setCodecPreferences(r);
120
+ }
121
+ }, P = (e, {
114
122
  preferredMimeTypesVideoCodecs: n,
115
123
  excludeMimeTypesVideoCodecs: t
116
124
  }) => async (o) => {
117
125
  try {
118
- if (typeof o.setCodecPreferences == "function" && o.sender.track?.kind === "video" && (n !== void 0 && n.length > 0 || t !== void 0 && t.length > 0)) {
119
- const s = De("video"), r = Ie(s, t), i = Pe(r, n);
120
- o.setCodecPreferences(i);
121
- }
122
- Object.keys(e).length > 0 && await z(o.sender, e);
126
+ Fe(o, {
127
+ preferredMimeTypesVideoCodecs: n,
128
+ excludeMimeTypesVideoCodecs: t
129
+ }), Object.values(e).filter((r) => r != null).length > 0 && (i("updateTransceiver setParametersToSender", e), await Q(o.sender, e));
123
130
  } catch (s) {
124
- c("updateTransceiver error", s);
131
+ i("updateTransceiver error", s);
125
132
  }
126
133
  }, X = (e) => {
127
- if (!K(e) && !ae(e))
134
+ if (!Y(e) && !ue(e))
128
135
  throw e;
129
136
  return { isSuccessful: !1 };
130
- }, xe = ({ kind: e, readyState: n }) => e === "video" && n === "live", Fe = /* @__PURE__ */ new Set([
137
+ }, Ue = ({ kind: e, readyState: n }) => e === "video" && n === "live", ke = /* @__PURE__ */ new Set([
131
138
  "on",
132
139
  "once",
133
140
  "onceRace",
@@ -144,7 +151,7 @@ const fe = (e) => e instanceof Object && ("originator" in e || "cause" in e), Tn
144
151
  "isConfigured",
145
152
  "isRegistered"
146
153
  ]);
147
- class vn {
154
+ class bn {
148
155
  // @ts-expect-error: proxy method
149
156
  on;
150
157
  // @ts-expect-error: proxy method
@@ -183,12 +190,12 @@ class vn {
183
190
  excludeMimeTypesVideoCodecs: o
184
191
  } = {}) {
185
192
  return this.preferredMimeTypesVideoCodecs = t, this.excludeMimeTypesVideoCodecs = o, this.sipConnector = n, new Proxy(this, {
186
- get: (s, r, i) => {
187
- if (typeof r == "string" && Fe.has(r) && r in this.sipConnector) {
193
+ get: (s, r, c) => {
194
+ if (typeof r == "string" && ke.has(r) && r in this.sipConnector) {
188
195
  const u = Reflect.get(this.sipConnector, r, this.sipConnector);
189
196
  return typeof u == "function" ? u.bind(this.sipConnector) : u;
190
197
  }
191
- const a = Reflect.get(s, r, i);
198
+ const a = Reflect.get(s, r, c);
192
199
  return typeof a == "function" ? a.bind(s) : a;
193
200
  }
194
201
  });
@@ -199,22 +206,22 @@ class vn {
199
206
  sipWebSocketServerURL: o,
200
207
  sipServerUrl: s,
201
208
  remoteAddress: r,
202
- displayName: i,
209
+ displayName: c,
203
210
  name: a,
204
211
  password: u,
205
212
  isRegisteredUser: l,
206
213
  isDisconnectOnFail: h
207
214
  } = n;
208
- return c("connectToServer", n), this.sipConnector.connect({
215
+ return i("connectToServer", n), this.sipConnector.connect({
209
216
  userAgent: t,
210
217
  sipWebSocketServerURL: o,
211
218
  sipServerUrl: s,
212
219
  remoteAddress: r,
213
- displayName: i,
220
+ displayName: c,
214
221
  password: u,
215
222
  user: a,
216
223
  register: l
217
- }).then((f) => (c("connectToServer then"), { ua: f, isSuccessful: !0 })).catch(async (f) => (c("connectToServer catch: error", f), h === !0 ? this.sipConnector.disconnect().then(() => X(f)).catch(() => X(f)) : X(f)));
224
+ }).then((f) => (i("connectToServer then"), { ua: f, isSuccessful: !0 })).catch(async (f) => (i("connectToServer catch: error", f), h === !0 ? this.sipConnector.disconnect().then(() => X(f)).catch(() => X(f)) : X(f)));
218
225
  };
219
226
  callToServer = async (n) => {
220
227
  const {
@@ -222,14 +229,14 @@ class vn {
222
229
  mediaStream: o,
223
230
  extraHeaders: s,
224
231
  iceServers: r,
225
- contentHint: i,
232
+ contentHint: c,
226
233
  simulcastEncodings: a,
227
234
  degradationPreference: u,
228
235
  sendEncodings: l,
229
236
  offerToReceiveAudio: h,
230
237
  offerToReceiveVideo: f,
231
238
  directionVideo: F,
232
- directionAudio: k,
239
+ directionAudio: U,
233
240
  setRemoteStreams: g,
234
241
  onBeforeProgressCall: R,
235
242
  onSuccessProgressCall: C,
@@ -242,7 +249,7 @@ class vn {
242
249
  onReadyRemoteStreams: g
243
250
  }), A = this.resolveHandleReadyRemoteStreams({
244
251
  onReadyRemoteStreams: () => {
245
- _().catch(I);
252
+ _().catch(x);
246
253
  }
247
254
  }), O = P(
248
255
  {
@@ -253,16 +260,16 @@ class vn {
253
260
  excludeMimeTypesVideoCodecs: this.excludeMimeTypesVideoCodecs
254
261
  }
255
262
  );
256
- c("callToServer", n);
257
- const N = async () => (c("startCall"), this.sipConnector.call({
263
+ i("callToServer", n);
264
+ const N = async () => (i("startCall"), this.sipConnector.call({
258
265
  mediaStream: o,
259
266
  extraHeaders: s,
260
267
  iceServers: r,
261
- contentHint: i,
268
+ contentHint: c,
262
269
  offerToReceiveAudio: h,
263
270
  offerToReceiveVideo: f,
264
271
  directionVideo: F,
265
- directionAudio: k,
272
+ directionAudio: U,
266
273
  sendEncodings: D({
267
274
  mediaStream: o,
268
275
  simulcastEncodings: a,
@@ -273,33 +280,33 @@ class vn {
273
280
  ontrack: A
274
281
  }));
275
282
  let M = !1, b;
276
- const B = (c("subscribeEnterConference: onEnterConference", p), S ?? p ? this.sipConnector.on("api:enterRoom", ({ room: d }) => {
277
- c("enterRoom", { _room: d, isSuccessProgressCall: M }), b = d, x(b) ? S && S() : p && p({ isSuccessProgressCall: M });
283
+ const B = (i("subscribeEnterConference: onEnterConference", p), S ?? p ? this.sipConnector.on("api:enterRoom", ({ room: d }) => {
284
+ i("enterRoom", { _room: d, isSuccessProgressCall: M }), b = d, I(b) ? S && S() : p && p({ isSuccessProgressCall: M });
278
285
  }) : () => {
279
- }), L = (d) => (c("onSuccess"), M = !0, _().catch(I), C && C({ isPurgatory: x(b) }), this.sipConnector.onceRace(["call:ended", "call:failed"], () => {
286
+ }), L = (d) => (i("onSuccess"), M = !0, _().catch(x), C && C({ isPurgatory: I(b) }), this.sipConnector.onceRace(["call:ended", "call:failed"], () => {
280
287
  B(), v && v();
281
288
  }), d), H = (d) => {
282
- throw c("onFail"), E && E(), B(), d;
289
+ throw i("onFail"), E && E(), B(), d;
283
290
  }, $ = () => {
284
- c("onFinish"), T && T();
291
+ i("onFinish"), T && T();
285
292
  };
286
- return c("onBeforeProgressCall"), R && R(t), N().then(L).catch((d) => H(d)).finally($);
293
+ return i("onBeforeProgressCall"), R && R(t), N().then(L).catch((d) => H(d)).finally($);
287
294
  };
288
- disconnectFromServer = async () => this.sipConnector.disconnect().then(() => (c("disconnectFromServer: then"), { isSuccessful: !0 })).catch((n) => (c("disconnectFromServer: catch", n), { isSuccessful: !1 }));
295
+ disconnectFromServer = async () => this.sipConnector.disconnect().then(() => (i("disconnectFromServer: then"), { isSuccessful: !0 })).catch((n) => (i("disconnectFromServer: catch", n), { isSuccessful: !1 }));
289
296
  answerToIncomingCall = async (n) => {
290
297
  const {
291
298
  mediaStream: t,
292
299
  extraHeaders: o,
293
300
  iceServers: s,
294
301
  contentHint: r,
295
- simulcastEncodings: i,
302
+ simulcastEncodings: c,
296
303
  degradationPreference: a,
297
304
  sendEncodings: u,
298
305
  offerToReceiveAudio: l,
299
306
  offerToReceiveVideo: h,
300
307
  directionVideo: f,
301
308
  directionAudio: F,
302
- setRemoteStreams: k,
309
+ setRemoteStreams: U,
303
310
  onBeforeProgressCall: g,
304
311
  onSuccessProgressCall: R,
305
312
  onEnterPurgatory: C,
@@ -308,10 +315,10 @@ class vn {
308
315
  onFinishProgressCall: E,
309
316
  onEndedCall: T
310
317
  } = n, v = this.resolveHandleReadyRemoteStreamsDebounced({
311
- onReadyRemoteStreams: k
318
+ onReadyRemoteStreams: U
312
319
  }), _ = this.resolveHandleReadyRemoteStreams({
313
320
  onReadyRemoteStreams: () => {
314
- v().catch(I);
321
+ v().catch(x);
315
322
  }
316
323
  }), A = P(
317
324
  {
@@ -322,7 +329,7 @@ class vn {
322
329
  excludeMimeTypesVideoCodecs: this.excludeMimeTypesVideoCodecs
323
330
  }
324
331
  );
325
- c("answerToIncomingCall", n);
332
+ i("answerToIncomingCall", n);
326
333
  const O = async () => this.sipConnector.answerToIncomingCall({
327
334
  mediaStream: t,
328
335
  extraHeaders: o,
@@ -334,7 +341,7 @@ class vn {
334
341
  directionAudio: F,
335
342
  sendEncodings: D({
336
343
  mediaStream: t,
337
- simulcastEncodings: i,
344
+ simulcastEncodings: c,
338
345
  sendEncodings: u
339
346
  }),
340
347
  onAddedTransceiver: A,
@@ -344,17 +351,17 @@ class vn {
344
351
  return d.incomingNumber;
345
352
  };
346
353
  let M = !1, b;
347
- const B = (c("subscribeEnterConference: onEnterConference", S), C ?? S ? this.sipConnector.on("api:enterRoom", (d) => {
348
- c("enterRoom", { _room: d, isSuccessProgressCall: M }), b = d, x(b) ? C && C() : S && S({ isSuccessProgressCall: M });
354
+ const B = (i("subscribeEnterConference: onEnterConference", S), C ?? S ? this.sipConnector.on("api:enterRoom", (d) => {
355
+ i("enterRoom", { _room: d, isSuccessProgressCall: M }), b = d, I(b) ? C && C() : S && S({ isSuccessProgressCall: M });
349
356
  }) : () => {
350
- }), L = (d) => (c("onSuccess"), M = !0, v().catch(I), R && R({ isPurgatory: x(b) }), this.sipConnector.onceRace(["call:ended", "call:failed"], () => {
357
+ }), L = (d) => (i("onSuccess"), M = !0, v().catch(x), R && R({ isPurgatory: I(b) }), this.sipConnector.onceRace(["call:ended", "call:failed"], () => {
351
358
  B(), T && T();
352
359
  }), d), H = (d) => {
353
- throw c("onFail"), p && p(), B(), d;
360
+ throw i("onFail"), p && p(), B(), d;
354
361
  }, $ = () => {
355
- c("onFinish"), E && E();
362
+ i("onFinish"), E && E();
356
363
  };
357
- if (c("onBeforeProgressCall"), g) {
364
+ if (i("onBeforeProgressCall"), g) {
358
365
  const d = N();
359
366
  g(d);
360
367
  }
@@ -366,21 +373,21 @@ class vn {
366
373
  maxBitrate: o,
367
374
  contentHint: s,
368
375
  simulcastEncodings: r,
369
- degradationPreference: i,
376
+ degradationPreference: c,
370
377
  sendEncodings: a,
371
378
  preferredMimeTypesVideoCodecs: u,
372
379
  excludeMimeTypesVideoCodecs: l
373
380
  }) => {
374
381
  const h = P(
375
382
  {
376
- degradationPreference: i
383
+ degradationPreference: c
377
384
  },
378
385
  {
379
386
  preferredMimeTypesVideoCodecs: u,
380
387
  excludeMimeTypesVideoCodecs: l
381
388
  }
382
389
  );
383
- return c("updatePresentation"), this.sipConnector.updatePresentation(n, {
390
+ return i("updatePresentation"), this.sipConnector.updatePresentation(n, {
384
391
  isP2P: t,
385
392
  maxBitrate: o,
386
393
  contentHint: s,
@@ -398,7 +405,7 @@ class vn {
398
405
  maxBitrate: o,
399
406
  contentHint: s,
400
407
  simulcastEncodings: r,
401
- degradationPreference: i,
408
+ degradationPreference: c,
402
409
  sendEncodings: a,
403
410
  preferredMimeTypesVideoCodecs: u,
404
411
  excludeMimeTypesVideoCodecs: l,
@@ -406,14 +413,14 @@ class vn {
406
413
  }) => {
407
414
  const f = P(
408
415
  {
409
- degradationPreference: i
416
+ degradationPreference: c
410
417
  },
411
418
  {
412
419
  preferredMimeTypesVideoCodecs: u,
413
420
  excludeMimeTypesVideoCodecs: l
414
421
  }
415
422
  );
416
- return c("startPresentation"), this.sipConnector.startPresentation(n, {
423
+ return i("startPresentation"), this.sipConnector.startPresentation(n, {
417
424
  isP2P: t,
418
425
  maxBitrate: o,
419
426
  contentHint: s,
@@ -426,33 +433,33 @@ class vn {
426
433
  onAddedTransceiver: f
427
434
  });
428
435
  };
429
- stopShareSipConnector = async ({ isP2P: n = !1 } = {}) => (c("stopShareSipConnector"), this.sipConnector.stopPresentation({
436
+ stopShareSipConnector = async ({ isP2P: n = !1 } = {}) => (i("stopShareSipConnector"), this.sipConnector.stopPresentation({
430
437
  isP2P: n
431
438
  }).catch((t) => {
432
- c(t);
439
+ i(t);
433
440
  }));
434
441
  sendRefusalToTurnOnMic = async () => {
435
- c("sendRefusalToTurnOnMic"), await this.sipConnector.sendRefusalToTurnOnMic().catch((n) => {
436
- c("sendRefusalToTurnOnMic: error", n);
442
+ i("sendRefusalToTurnOnMic"), await this.sipConnector.sendRefusalToTurnOnMic().catch((n) => {
443
+ i("sendRefusalToTurnOnMic: error", n);
437
444
  });
438
445
  };
439
446
  sendRefusalToTurnOnCam = async () => {
440
- c("sendRefusalToTurnOnCam"), await this.sipConnector.sendRefusalToTurnOnCam().catch((n) => {
441
- c("sendRefusalToTurnOnCam: error", n);
447
+ i("sendRefusalToTurnOnCam"), await this.sipConnector.sendRefusalToTurnOnCam().catch((n) => {
448
+ i("sendRefusalToTurnOnCam: error", n);
442
449
  });
443
450
  };
444
451
  sendMediaState = async ({
445
452
  isEnabledCam: n,
446
453
  isEnabledMic: t
447
454
  }) => {
448
- c("sendMediaState"), await this.sipConnector.sendMediaState({ cam: n, mic: t });
455
+ i("sendMediaState"), await this.sipConnector.sendMediaState({ cam: n, mic: t });
449
456
  };
450
457
  replaceMediaStream = async (n, {
451
458
  deleteExisting: t,
452
459
  addMissing: o,
453
460
  forceRenegotiation: s,
454
461
  contentHint: r,
455
- simulcastEncodings: i,
462
+ simulcastEncodings: c,
456
463
  degradationPreference: a,
457
464
  sendEncodings: u
458
465
  } = {}) => {
@@ -465,47 +472,47 @@ class vn {
465
472
  excludeMimeTypesVideoCodecs: this.excludeMimeTypesVideoCodecs
466
473
  }
467
474
  );
468
- return c("replaceMediaStream"), this.sipConnector.replaceMediaStream(n, {
475
+ return i("replaceMediaStream"), this.sipConnector.replaceMediaStream(n, {
469
476
  deleteExisting: t,
470
477
  addMissing: o,
471
478
  forceRenegotiation: s,
472
479
  contentHint: r,
473
480
  sendEncodings: D({
474
481
  mediaStream: n,
475
- simulcastEncodings: i,
482
+ simulcastEncodings: c,
476
483
  sendEncodings: u
477
484
  }),
478
485
  onAddedTransceiver: l
479
486
  });
480
487
  };
481
488
  askPermissionToEnableCam = async () => {
482
- c("askPermissionToEnableCam"), await this.sipConnector.askPermissionToEnableCam();
489
+ i("askPermissionToEnableCam"), await this.sipConnector.askPermissionToEnableCam();
483
490
  };
484
491
  resolveHandleReadyRemoteStreamsDebounced = ({
485
492
  onReadyRemoteStreams: n
486
- }) => ue(() => {
493
+ }) => de(() => {
487
494
  const t = this.sipConnector.getRemoteStreams();
488
- c("remoteStreams", t), t && n(t);
495
+ i("remoteStreams", t), t && n(t);
489
496
  }, 200);
490
497
  // eslint-disable-next-line class-methods-use-this
491
498
  resolveHandleReadyRemoteStreams = ({
492
499
  onReadyRemoteStreams: n
493
500
  }) => ({ track: t }) => {
494
- xe(t) && n();
501
+ Ue(t) && n();
495
502
  };
496
- getRemoteStreams = () => (c("getRemoteStreams"), this.sipConnector.getRemoteStreams());
497
- onUseLicense = (n) => (c("onUseLicense"), this.sipConnector.on("api:useLicense", n));
498
- onMustStopPresentation = (n) => (c("onMustStopPresentation"), this.sipConnector.on("api:mustStopPresentation", n));
499
- onMoveToSpectators = (n) => (c("onMoveToSpectators"), this.sipConnector.on("api:participant:move-request-to-spectators", n));
500
- onMoveToParticipants = (n) => (c("onMoveToParticipants"), this.sipConnector.on("api:participant:move-request-to-participants", n));
503
+ getRemoteStreams = () => (i("getRemoteStreams"), this.sipConnector.getRemoteStreams());
504
+ onUseLicense = (n) => (i("onUseLicense"), this.sipConnector.on("api:useLicense", n));
505
+ onMustStopPresentation = (n) => (i("onMustStopPresentation"), this.sipConnector.on("api:mustStopPresentation", n));
506
+ onMoveToSpectators = (n) => (i("onMoveToSpectators"), this.sipConnector.on("api:participant:move-request-to-spectators", n));
507
+ onMoveToParticipants = (n) => (i("onMoveToParticipants"), this.sipConnector.on("api:participant:move-request-to-participants", n));
501
508
  }
502
509
  const V = (e) => {
503
510
  const { url: n, cause: t } = e;
504
511
  let o = n;
505
512
  return (t === y.BAD_MEDIA_DESCRIPTION || t === y.NOT_FOUND) && (o = `${e.message.to.uri.user}@${e.message.to.uri.host}`), o;
506
513
  };
507
- var se = /* @__PURE__ */ ((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))(se || {});
508
- const ke = new Error("Unknown error"), Ue = (e = ke) => {
514
+ var re = /* @__PURE__ */ ((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))(re || {});
515
+ const Ve = new Error("Unknown error"), Le = (e = Ve) => {
509
516
  const { cause: n, socket: t } = e;
510
517
  let o = "CONNECT_SERVER_FAILED";
511
518
  switch (n) {
@@ -525,24 +532,24 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
525
532
  t !== void 0 && t._ws?.readyState === 3 ? o = "WS_CONNECTION_FAILED" : V(e) !== void 0 && V(e) !== "" && (o = "CONNECT_SERVER_FAILED_BY_LINK");
526
533
  }
527
534
  return o;
528
- }, Ve = (e) => {
535
+ }, He = (e) => {
529
536
  let n = "";
530
537
  try {
531
538
  n = JSON.stringify(e);
532
539
  } catch (t) {
533
- c("failed to stringify message", t);
540
+ i("failed to stringify message", t);
534
541
  }
535
542
  return n;
536
- }, Le = new Error("Unknown error"), He = (e = Le) => {
543
+ }, $e = new Error("Unknown error"), Je = (e = $e) => {
537
544
  const { code: n, cause: t, message: o } = e, s = V(e), r = { code: "", cause: "", message: "" };
538
- return typeof o == "object" && o !== null ? r.message = Ve(o) : o && (r.message = String(o)), s !== void 0 && s !== "" && (r.link = s), n !== void 0 && n !== "" && (r.code = n), t !== void 0 && t !== "" && (r.cause = t), r;
539
- }, $e = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
545
+ return typeof o == "object" && o !== null ? r.message = He(o) : o && (r.message = String(o)), s !== void 0 && s !== "" && (r.link = s), n !== void 0 && n !== "" && (r.code = n), t !== void 0 && t !== "" && (r.cause = t), r;
546
+ }, Xe = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
540
547
  __proto__: null,
541
- EErrorTypes: se,
548
+ EErrorTypes: re,
542
549
  getLinkError: V,
543
- getTypeFromError: Ue,
544
- getValuesFromError: He
545
- }, Symbol.toStringTag, { value: "Module" })), Je = ({
550
+ getTypeFromError: Le,
551
+ getValuesFromError: Je
552
+ }, Symbol.toStringTag, { value: "Module" })), We = ({
546
553
  sessionId: e,
547
554
  remoteAddress: n,
548
555
  isMutedAudio: t,
@@ -550,41 +557,41 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
550
557
  isRegistered: s,
551
558
  isPresentationCall: r
552
559
  }) => {
553
- const i = [], a = t ? "0" : "1", u = o ? "0" : "1";
554
- return i.push(`X-Vinteo-Mic-State: ${a}`, `X-Vinteo-MainCam-State: ${u}`), (s === !1 || s === void 0) && i.push("X-Vinteo-Purgatory-Call: yes"), e !== void 0 && e !== "" && i.push(`X-Vinteo-Session: ${e}`), r === !0 && i.push("X-Vinteo-Presentation-Call: yes"), n !== void 0 && n !== "" && i.push(`X-Vinteo-Remote: ${n}`), i;
555
- }, Xe = "[@*!|]", We = "_", je = (e) => {
560
+ const c = [], a = t ? "0" : "1", u = o ? "0" : "1";
561
+ return c.push(`X-Vinteo-Mic-State: ${a}`, `X-Vinteo-MainCam-State: ${u}`), (s === !1 || s === void 0) && c.push("X-Vinteo-Purgatory-Call: yes"), e !== void 0 && e !== "" && c.push(`X-Vinteo-Session: ${e}`), r === !0 && c.push("X-Vinteo-Presentation-Call: yes"), n !== void 0 && n !== "" && c.push(`X-Vinteo-Remote: ${n}`), c;
562
+ }, je = "[@*!|]", Ge = "_", Ke = (e) => {
556
563
  let n = e;
557
- return n = n.replaceAll(new RegExp(Xe, "g"), We), n;
558
- }, Ge = ({
564
+ return n = n.replaceAll(new RegExp(je, "g"), Ge), n;
565
+ }, Ye = ({
559
566
  appName: e,
560
567
  appVersion: n,
561
568
  browserName: t,
562
569
  browserVersion: o
563
570
  }) => {
564
- const r = `${je(e)} ${n}`;
571
+ const r = `${Ke(e)} ${n}`;
565
572
  return `ChromeNew - ${t === void 0 ? r : `${t} ${o}, ${r}`}`;
566
- }, Ke = ({
573
+ }, qe = ({
567
574
  isUnifiedSdpSemantic: e,
568
575
  appVersion: n,
569
576
  browserName: t,
570
577
  browserVersion: o,
571
578
  appName: s
572
- }) => e ? Ge({ appVersion: n, browserName: t, browserVersion: o, appName: s }) : "Chrome", Ye = (e) => (n) => [...n].map((o) => async () => e(o)), qe = async ({
579
+ }) => e ? Ye({ appVersion: n, browserName: t, browserVersion: o, appName: s }) : "Chrome", ze = (e) => (n) => [...n].map((o) => async () => e(o)), Qe = async ({
573
580
  accumulatedKeys: e,
574
581
  sendKey: n,
575
582
  canRunTask: t
576
583
  }) => {
577
- const s = Ye(n)(e);
578
- return de(s, t);
579
- }, ze = (e) => (t) => (c("onStartMainCam"), e.on("api:admin-start-main-cam", t)), Qe = (e) => (t) => (c("onStartMic"), e.on("api:admin-start-mic", t)), Ze = (e) => (t) => (c("onStopMainCam"), e.on("api:admin-stop-main-cam", t)), en = (e) => (t) => (c("onStopMic"), e.on("api:admin-stop-mic", t)), nn = ({ sipConnector: e }) => {
584
+ const s = ze(n)(e);
585
+ return le(s, t);
586
+ }, Ze = (e) => (t) => (i("onStartMainCam"), e.on("api:admin-start-main-cam", t)), en = (e) => (t) => (i("onStartMic"), e.on("api:admin-start-mic", t)), nn = (e) => (t) => (i("onStopMainCam"), e.on("api:admin-stop-main-cam", t)), tn = (e) => (t) => (i("onStopMic"), e.on("api:admin-stop-mic", t)), on = ({ sipConnector: e }) => {
580
587
  const n = (g, R) => ({ isSyncForced: C }) => {
581
588
  if (C === !0) {
582
589
  g();
583
590
  return;
584
591
  }
585
592
  R();
586
- }, t = ze(e), o = Ze(e), s = Qe(e), r = en(e);
587
- let i, a, u, l;
593
+ }, t = Ze(e), o = nn(e), s = en(e), r = tn(e);
594
+ let c, a, u, l;
588
595
  const h = ({
589
596
  onStartMainCamForced: g,
590
597
  onStartMainCamNotForced: R,
@@ -599,7 +606,7 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
599
606
  g,
600
607
  R
601
608
  );
602
- i = t(_);
609
+ c = t(_);
603
610
  const A = n(
604
611
  C,
605
612
  S
@@ -610,7 +617,7 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
610
617
  const N = n(T, v);
611
618
  l = r(N);
612
619
  }, f = () => {
613
- i?.(), a?.(), u?.(), l?.();
620
+ c?.(), a?.(), u?.(), l?.();
614
621
  };
615
622
  return {
616
623
  start: (g) => {
@@ -620,19 +627,19 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
620
627
  f();
621
628
  }
622
629
  };
623
- }, Mn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
630
+ }, _n = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
624
631
  __proto__: null,
625
- PURGATORY_CONFERENCE_NUMBER: oe,
626
- createSyncMediaState: nn,
627
- error: $e,
628
- getExtraHeaders: Je,
629
- getUserAgent: Ke,
630
- hasPurgatory: x,
631
- sendDtmfAccumulated: qe
632
+ PURGATORY_CONFERENCE_NUMBER: se,
633
+ createSyncMediaState: on,
634
+ error: Xe,
635
+ getExtraHeaders: We,
636
+ getUserAgent: qe,
637
+ hasPurgatory: I,
638
+ sendDtmfAccumulated: Qe
632
639
  }, Symbol.toStringTag, { value: "Module" }));
633
- var tn = /* @__PURE__ */ ((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))(tn || {});
634
- const on = (e) => [...e.keys()].map((n) => e.get(n)), sn = (e, n) => on(e).find((t) => t?.type === n), rn = async (e) => e.getStats().then((n) => sn(n, "codec")?.mimeType), cn = (e) => e.find((n) => n.track?.kind === "video"), an = async (e, n, t) => {
635
- const { isChanged: o, parameters: s } = await z(e, {
640
+ var sn = /* @__PURE__ */ ((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))(sn || {});
641
+ const rn = (e) => [...e.keys()].map((n) => e.get(n)), cn = (e, n) => rn(e).find((t) => t?.type === n), an = async (e) => e.getStats().then((n) => cn(n, "codec")?.mimeType), un = (e) => e.find((n) => n.track?.kind === "video"), dn = async (e, n, t) => {
642
+ const { isChanged: o, parameters: s } = await Q(e, {
636
643
  encodings: [
637
644
  {
638
645
  scaleResolutionDownBy: n.scaleResolutionDownBy,
@@ -641,54 +648,54 @@ const on = (e) => [...e.keys()].map((n) => e.get(n)), sn = (e, n) => on(e).find(
641
648
  ]
642
649
  });
643
650
  return o && t && t(s), { isChanged: o, parameters: s };
644
- }, re = le(), un = async () => re().catch((e) => {
645
- c("videoSendingBalancer: error", e);
646
- }), dn = async (e) => (re.add(e), un()), W = async ({
651
+ }, ie = fe(), ln = async () => ie().catch((e) => {
652
+ i("videoSendingBalancer: error", e);
653
+ }), fn = async (e) => (ie.add(e), ln()), j = async ({
647
654
  sender: e,
648
655
  scaleResolutionDownBy: n,
649
656
  maxBitrate: t,
650
657
  onSetParameters: o
651
- }) => dn(async () => an(e, { scaleResolutionDownBy: n, maxBitrate: t }, o)), ln = async ({ sender: e, codec: n }, t) => {
658
+ }) => fn(async () => dn(e, { scaleResolutionDownBy: n, maxBitrate: t }, o)), hn = async ({ sender: e, codec: n }, t) => {
652
659
  const s = Be(n);
653
- return W({
660
+ return j({
654
661
  sender: e,
655
662
  maxBitrate: s,
656
663
  onSetParameters: t,
657
664
  scaleResolutionDownBy: 200
658
665
  });
659
- }, U = async ({
666
+ }, k = async ({
660
667
  sender: e,
661
668
  videoTrack: n,
662
669
  codec: t
663
670
  }, o) => {
664
- const i = n.getSettings().width, a = ne(i ?? 0, t);
665
- return W({
671
+ const c = n.getSettings().width, a = c === void 0 ? we(t) : te(c, t);
672
+ return j({
666
673
  sender: e,
667
674
  maxBitrate: a,
668
675
  onSetParameters: o,
669
676
  scaleResolutionDownBy: 1
670
677
  });
671
- }, fn = async ({
678
+ }, gn = async ({
672
679
  sender: e,
673
680
  videoTrack: n,
674
681
  resolution: t,
675
682
  codec: o
676
683
  }, s) => {
677
- const [r, i] = t.split("x"), { maxBitrate: a, scaleResolutionDownBy: u } = te({
684
+ const [r, c] = t.split("x"), { maxBitrate: a, scaleResolutionDownBy: u } = oe({
678
685
  videoTrack: n,
679
686
  codec: o,
680
687
  targetSize: {
681
688
  width: Number(r),
682
- height: Number(i)
689
+ height: Number(c)
683
690
  }
684
691
  });
685
- return W({
692
+ return j({
686
693
  sender: e,
687
694
  maxBitrate: a,
688
695
  onSetParameters: s,
689
696
  scaleResolutionDownBy: u
690
697
  });
691
- }, hn = async ({
698
+ }, Cn = async ({
692
699
  mainCam: e,
693
700
  resolutionMainCam: n,
694
701
  sender: t,
@@ -697,22 +704,22 @@ const on = (e) => [...e.keys()].map((n) => e.get(n)), sn = (e, n) => on(e).find(
697
704
  }, r) => {
698
705
  switch (e) {
699
706
  case w.PAUSE_MAIN_CAM:
700
- return ln({ sender: t, codec: s }, r);
707
+ return hn({ sender: t, codec: s }, r);
701
708
  case w.RESUME_MAIN_CAM:
702
- return U({ sender: t, videoTrack: o, codec: s }, r);
709
+ return k({ sender: t, videoTrack: o, codec: s }, r);
703
710
  case w.MAX_MAIN_CAM_RESOLUTION:
704
- return n !== void 0 ? fn(
711
+ return n !== void 0 ? gn(
705
712
  { sender: t, videoTrack: o, codec: s, resolution: n },
706
713
  r
707
- ) : U({ sender: t, videoTrack: o, codec: s }, r);
714
+ ) : k({ sender: t, videoTrack: o, codec: s }, r);
708
715
  case w.ADMIN_STOP_MAIN_CAM:
709
716
  case w.ADMIN_START_MAIN_CAM:
710
717
  case void 0:
711
- return U({ sender: t, videoTrack: o, codec: s }, r);
718
+ return k({ sender: t, videoTrack: o, codec: s }, r);
712
719
  default:
713
- return U({ sender: t, videoTrack: o, codec: s }, r);
720
+ return k({ sender: t, videoTrack: o, codec: s }, r);
714
721
  }
715
- }, j = {
722
+ }, G = {
716
723
  isChanged: !1,
717
724
  parameters: {
718
725
  encodings: [{}],
@@ -721,28 +728,28 @@ const on = (e) => [...e.keys()].map((n) => e.get(n)), sn = (e, n) => on(e).find(
721
728
  headerExtensions: [],
722
729
  rtcp: {}
723
730
  }
724
- }, G = async ({
731
+ }, K = async ({
725
732
  mainCam: e,
726
733
  resolutionMainCam: n,
727
734
  connection: t,
728
735
  onSetParameters: o,
729
736
  ignoreForCodec: s
730
737
  }) => {
731
- const r = t.getSenders(), i = cn(r);
732
- if (!i?.track)
733
- return j;
734
- const a = await rn(i);
735
- return Z(a, s) ? j : hn(
738
+ const r = t.getSenders(), c = un(r);
739
+ if (!c?.track)
740
+ return G;
741
+ const a = await an(c);
742
+ return ne(a, s) ? G : Cn(
736
743
  {
737
744
  mainCam: e,
738
745
  resolutionMainCam: n,
739
- sender: i,
746
+ sender: c,
740
747
  codec: a,
741
- videoTrack: i.track
748
+ videoTrack: c.track
742
749
  },
743
750
  o
744
751
  );
745
- }, bn = (e, {
752
+ }, An = (e, {
746
753
  ignoreForCodec: n,
747
754
  onSetParameters: t
748
755
  } = {}) => {
@@ -750,7 +757,7 @@ const on = (e) => [...e.keys()].map((n) => e.get(n)), sn = (e, n) => on(e).find(
750
757
  const { connection: u } = e;
751
758
  if (!u)
752
759
  throw new Error("connection is not exist");
753
- return G({
760
+ return K({
754
761
  connection: u,
755
762
  onSetParameters: t,
756
763
  ignoreForCodec: n
@@ -762,14 +769,14 @@ const on = (e) => [...e.keys()].map((n) => e.get(n)), sn = (e, n) => on(e).find(
762
769
  const { mainCam: l, resolutionMainCam: h } = u, { connection: f } = e;
763
770
  if (!f)
764
771
  throw new Error("connection is not exist");
765
- return G({
772
+ return K({
766
773
  mainCam: l,
767
774
  resolutionMainCam: h,
768
775
  connection: f,
769
776
  onSetParameters: t,
770
777
  ignoreForCodec: n
771
778
  });
772
- }, s().catch(I);
779
+ }, s().catch(x);
773
780
  };
774
781
  return {
775
782
  subscribe: () => {
@@ -789,17 +796,17 @@ const on = (e) => [...e.keys()].map((n) => e.get(n)), sn = (e, n) => on(e).find(
789
796
  };
790
797
  export {
791
798
  y as ECallCause,
792
- tn as EMimeTypesVideoCodecs,
793
- On as EUseLicense,
794
- Nn as SipConnector,
795
- vn as SipConnectorFacade,
796
- In as debug,
797
- Bn as disableDebug,
798
- wn as enableDebug,
799
- rn as getCodecFromSender,
800
- Tn as hasCanceledCallError,
801
- Dn as hasCanceledStartPresentationError,
802
- bn as resolveVideoSendingBalancer,
803
- z as setParametersToSender,
804
- Mn as tools
799
+ sn as EMimeTypesVideoCodecs,
800
+ Bn as EUseLicense,
801
+ wn as SipConnector,
802
+ bn as SipConnectorFacade,
803
+ Fn as debug,
804
+ Dn as disableDebug,
805
+ Pn as enableDebug,
806
+ an as getCodecFromSender,
807
+ Mn as hasCanceledCallError,
808
+ xn as hasCanceledStartPresentationError,
809
+ An as resolveVideoSendingBalancer,
810
+ Q as setParametersToSender,
811
+ _n as tools
805
812
  };
@@ -1,2 +1,2 @@
1
- declare const resolveHasNeedToUpdateItemEncoding: (defaultValue?: number) => (itemEncodingTarget: typeof defaultValue, itemEncodingCurrent?: number) => boolean;
1
+ declare const resolveHasNeedToUpdateItemEncoding: (defaultValue?: number) => (itemEncodingTarget?: number, itemEncodingCurrent?: number) => boolean;
2
2
  export default resolveHasNeedToUpdateItemEncoding;
@@ -1,3 +1,4 @@
1
1
  export declare const MINIMUM_BITRATE: number;
2
+ export declare const MAXIMUM_BITRATE: number;
2
3
  declare const getMaxBitrateByWidth: (maxWidth: number) => number;
3
4
  export default getMaxBitrateByWidth;
@@ -1,3 +1,4 @@
1
1
  export declare const getMinimumBitrate: (codec?: string) => number;
2
+ export declare const getMaximumBitrate: (codec?: string) => number;
2
3
  declare const getMaxBitrateByWidthAndCodec: (maxWidth: number, codec?: string) => number;
3
4
  export default getMaxBitrateByWidthAndCodec;
@@ -1,2 +1,2 @@
1
- declare const scaleMaxBitrateBySender: (senders: RTCRtpSender[], mediaStream: MediaStream, maxBitrate: number) => Promise<import('./setEncodingsToSender').TResult | undefined>;
2
- export default scaleMaxBitrateBySender;
1
+ declare const scaleBitrate: (senders: RTCRtpSender[], mediaStream: MediaStream, maxBitrate: number) => Promise<import('./setEncodingsToSender').TResult | undefined>;
2
+ export default scaleBitrate;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sip-connector",
3
- "version": "14.1.0-alpha.11",
3
+ "version": "14.1.0-alpha.13",
4
4
  "description": "Module for connect to Vinteo server",
5
5
  "keywords": [
6
6
  "webrtc",
@@ -98,7 +98,7 @@
98
98
  "ts-jest": "^29.4.0",
99
99
  "ts-node": "^10.9.2",
100
100
  "tsc-files": "^1.1.4",
101
- "typescript": "^5.8.3",
101
+ "typescript": "^5.9.2",
102
102
  "vite": "^7.0.6",
103
103
  "vite-plugin-dts": "^4.5.4",
104
104
  "vite-tsconfig-paths": "^5.1.4"