sip-connector 14.1.0-alpha.6 → 14.1.0-alpha.8

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-C09fG-9w.cjs"),W=require("@krivega/cancelable-promise"),ie=require("repeated-calls"),ce=require("ts-debounce"),_=require("debug"),ae=require("sequent-promises"),le=require("stack-promises"),ue=e=>e instanceof Object&&("originator"in e||"cause"in e),de=e=>{if(W.isCanceledError(e))return!0;if(!ue(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},ge=(e,n)=>(e.degradationPreference=n.degradationPreference,e),fe=(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,Ce=G(),he=(e,n)=>{if(Ce(e,n))return e},Se=(e,n)=>{const t=e.maxBitrate,o=he(n,t);return o!==void 0&&(e.maxBitrate=o),e},K=1,me=G(K),Re=(e,n)=>{const t=e===void 0?void 0:Math.max(e,K);if(t!==void 0&&me(t,n))return t},ye=(e,n)=>{const t=e.scaleResolutionDownBy,o=Re(n,t);return o!==void 0&&(e.scaleResolutionDownBy=o),e},pe=(e,n)=>{const t=n.encodings?.length??0;return fe(e,t),e.encodings.forEach((o,r)=>{const s=(n?.encodings??[])[r],c=s?.maxBitrate,a=s?.scaleResolutionDownBy;Se(o,c),ye(o,a)}),e},Ee=(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},H=async(e,n)=>{const t=e.getParameters(),o=JSON.parse(JSON.stringify(t));pe(t,n),ge(t,n);const r=Ee(o,t);return r&&await e.setParameters(t),{parameters:t,isChanged:r}},Te=e=>e.getVideoTracks()[0],Me=1e6,m=e=>e*Me,Y=m(.06),be=m(4),ve=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()),_e="av1",Ae=e=>z(e,_e),Oe=.6,Q=(e,n)=>Ae(n)?e*Oe:e,Ne=e=>Q(Y,e),Z=(e,n)=>{const t=ve(e);return Q(t,n)},$=1,ee=({videoTrack:e,targetSize:n,codec:t})=>{const o=e.getSettings(),r=o.width,s=o.height,c=r===void 0?$:r/n.width,a=s===void 0?$:s/n.height,l=Math.max(c,a,$),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=Te(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,Be=(e,n)=>e.filter(o=>n.some(r=>r.clockRate===o.clockRate&&r.mimeType===o.mimeType&&r.channels===o.channels&&r.sdpFmtpLine===o.sdpFmtpLine)),we=e=>{const n=RTCRtpSender.getCapabilities(e),t=RTCRtpReceiver.getCapabilities(e),o=n===null?[]:n.codecs,r=t===null?[]:t.codecs;return Be(o,r)},De=(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}),Pe=(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=we("video"),s=Pe(r,t),c=De(s,n);o.setCodecPreferences(c)}Object.keys(e).length>0&&await H(o.sender,e)}catch(r){i.logger("updateTransceiver error",r)}},q=e=>{if(!W.isCanceledError(e)&&!ie.hasCanceledError(e))throw e;return{isSuccessful:!1}},Ie=({kind:e,readyState:n})=>e==="video"&&n==="live",xe=new Set(["on","once","onceRace","wait","off","sendDTMF","hangUp","declineToIncomingCall","sendChannels","checkTelephony","waitChannels","ping","connection","isConfigured","isRegistered"]);class Fe{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"&&xe.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(()=>q(g)).catch(()=>q(g)):q(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,v=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:C}),A=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{v().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,b;const B=(i.logger("subscribeEnterConference: onEnterConference",y),S??y?this.sipConnector.on("api:enterRoom",({room:u})=>{i.logger("enterRoom",{_room:u,isSuccessProgressCall:M}),b=u,P(b)?S&&S():y&&y({isSuccessProgressCall:M})}):()=>{}),U=u=>(i.logger("onSuccess"),M=!0,v().catch(_),h&&h({isPurgatory:P(b)}),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}),v=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:v}),N=()=>{const{remoteCallerData:u}=this.sipConnector;return u.incomingNumber};let M=!1,b;const B=(i.logger("subscribeEnterConference: onEnterConference",S),h??S?this.sipConnector.on("api:enterRoom",u=>{i.logger("enterRoom",{_room:u,isSuccessProgressCall:M}),b=u,P(b)?h&&h():S&&S({isSuccessProgressCall:M})}):()=>{}),U=u=>(i.logger("onSuccess"),M=!0,T().catch(_),R&&R({isPurgatory:P(b)}),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})=>ce.debounce(()=>{const t=this.sipConnector.getRemoteStreams();i.logger("remoteStreams",t),t&&n(t)},200);resolveHandleReadyRemoteStreams=({onReadyRemoteStreams:n})=>({track:t})=>{Ie(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 ke=new Error("Unknown error"),Ue=(e=ke)=>{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},Ve=e=>{let n="";try{n=JSON.stringify(e)}catch(t){i.logger("failed to stringify message",t)}return n},Le=new Error("Unknown error"),$e=(e=Le)=>{const{code:n,cause:t,message:o}=e,r=k(e),s={code:"",cause:"",message:""};return typeof o=="object"&&o!==null?s.message=Ve(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:Ue,getValuesFromError:$e},Symbol.toStringTag,{value:"Module"})),He=({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},Je="[@*!|]",Xe="_",je=e=>{let n=e;return n=n.replaceAll(new RegExp(Je,"g"),Xe),n},We=({appName:e,appVersion:n,browserName:t,browserVersion:o})=>{const s=`${je(e)} ${n}`;return`ChromeNew - ${t===void 0?s:`${t} ${o}, ${s}`}`},Ge=({isUnifiedSdpSemantic:e,appVersion:n,browserName:t,browserVersion:o,appName:r})=>e?We({appVersion:n,browserName:t,browserVersion:o,appName:r}):"Chrome",Ke=e=>n=>[...n].map(o=>async()=>e(o)),Ye=async({accumulatedKeys:e,sendKey:n,canRunTask:t})=>{const r=Ke(n)(e);return ae.sequentPromises(r,t)},ze=e=>t=>(i.logger("onStartMainCam"),e.on("api:admin-start-main-cam",t)),Qe=e=>t=>(i.logger("onStartMic"),e.on("api:admin-start-mic",t)),Ze=e=>t=>(i.logger("onStopMainCam"),e.on("api:admin-stop-main-cam",t)),en=e=>t=>(i.logger("onStopMic"),e.on("api:admin-stop-mic",t)),nn=({sipConnector:e})=>{const n=(C,R)=>({isSyncForced:h})=>{if(h===!0){C();return}R()},t=ze(e),o=Ze(e),r=Qe(e),s=en(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 v=n(C,R);c=t(v);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()}}},tn=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:ne,createSyncMediaState:nn,error:qe,getExtraHeaders:He,getUserAgent:Ge,hasPurgatory:P,sendDtmfAccumulated:Ye},Symbol.toStringTag,{value:"Module"})),on=e=>[...e.keys()].map(n=>e.get(n)),rn=(e,n)=>on(e).find(t=>t?.type===n),oe=async e=>e.getStats().then(n=>rn(n,"codec")?.mimeType),sn=e=>e.find(n=>n.track?.kind==="video"),cn=async(e,n,t)=>{const{isChanged:o,parameters:r}=await H(e,{encodings:[{scaleResolutionDownBy:n.scaleResolutionDownBy,maxBitrate:n.maxBitrate}]});return o&&t&&t(r),{isChanged:o,parameters:r}},re=le.createStackPromises(),an=async()=>re().catch(e=>{i.logger("videoSendingBalancer: error",e)}),ln=async e=>(re.add(e),an()),J=async({sender:e,scaleResolutionDownBy:n,maxBitrate:t,onSetParameters:o})=>ln(async()=>cn(e,{scaleResolutionDownBy:n,maxBitrate:t},o)),un=async({sender:e,codec:n},t)=>{const r=Ne(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})},dn=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})},gn=async({mainCam:e,resolutionMainCam:n,sender:t,videoTrack:o,codec:r},s)=>{switch(e){case i.EEventsMainCAM.PAUSE_MAIN_CAM:return un({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?dn({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=sn(s);if(!c?.track)return X;const a=await oe(c);return z(a,r)?X:gn({mainCam:e,resolutionMainCam:n,sender:c,codec:a,videoTrack:c.track},o)},fn=(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.SipConnectorFacade=Fe;exports.getCodecFromSender=oe;exports.hasCanceledCallError=de;exports.resolveVideoSendingBalancer=fn;exports.setParametersToSender=H;exports.tools=tn;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("events-constructor");const i=require("./@SipConnector-C09fG-9w.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;
package/dist/index.d.ts CHANGED
@@ -8,5 +8,7 @@ export { default as setParametersToSender } from './setParametersToSender';
8
8
  export { SipConnector } from './SipConnector';
9
9
  export { SipConnectorFacade } from './SipConnectorFacade';
10
10
  export * as tools from './tools';
11
+ export { EMimeTypesVideoCodecs } from './types';
12
+ export type { TJsSIP } from './types';
11
13
  export { default as getCodecFromSender } from './utils/getCodecFromSender';
12
14
  export { default as resolveVideoSendingBalancer } from './videoSendingBalancer';
package/dist/index.js CHANGED
@@ -1,14 +1,14 @@
1
1
  import "events-constructor";
2
2
  import { E as y, O as ce, l as c, a as w } from "./@SipConnector-7Q9X7euI.js";
3
- import { b as On, S as An, d as Nn, e as Bn, h as wn } from "./@SipConnector-7Q9X7euI.js";
3
+ import { b as On, S as Nn, d as Bn, e as wn, h as Dn } from "./@SipConnector-7Q9X7euI.js";
4
4
  import { isCanceledError as K } from "@krivega/cancelable-promise";
5
5
  import { hasCanceledError as ae } from "repeated-calls";
6
6
  import { debounce as ue } from "ts-debounce";
7
7
  import I from "debug";
8
- import { default as Pn } from "debug";
8
+ import { default as In } from "debug";
9
9
  import { sequentPromises as de } from "sequent-promises";
10
10
  import { createStackPromises as le } from "stack-promises";
11
- const fe = (e) => e instanceof Object && ("originator" in e || "cause" in e), En = (e) => {
11
+ const fe = (e) => e instanceof Object && ("originator" in e || "cause" in e), Tn = (e) => {
12
12
  if (K(e))
13
13
  return !0;
14
14
  if (!fe(e))
@@ -26,17 +26,17 @@ const fe = (e) => e instanceof Object && ("originator" in e || "cause" in e), En
26
26
  }, me = (e, n) => {
27
27
  const t = e.maxBitrate, o = Se(n, t);
28
28
  return o !== void 0 && (e.maxBitrate = o), e;
29
- }, q = 1, pe = Y(
29
+ }, q = 1, Re = Y(
30
30
  q
31
- ), Re = (e, n) => {
31
+ ), pe = (e, n) => {
32
32
  const t = e === void 0 ? void 0 : Math.max(e, q);
33
- if (t !== void 0 && pe(
33
+ if (t !== void 0 && Re(
34
34
  t,
35
35
  n
36
36
  ))
37
37
  return t;
38
38
  }, ye = (e, n) => {
39
- const t = e.scaleResolutionDownBy, o = Re(
39
+ const t = e.scaleResolutionDownBy, o = pe(
40
40
  n,
41
41
  t
42
42
  );
@@ -71,7 +71,7 @@ const fe = (e) => e instanceof Object && ("originator" in e || "cause" in e), En
71
71
  Ee(t, n), he(t, n);
72
72
  const s = Te(o, t);
73
73
  return s && await e.setParameters(t), { parameters: t, isChanged: s };
74
- }, Me = (e) => e.getVideoTracks()[0], ve = 1e6, m = (e) => e * ve, 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()), Oe = "av1", Ae = (e) => Z(e, Oe), Ne = 0.6, ee = (e, n) => Ae(n) ? e * Ne : e, Be = (e) => ee(Q, e), ne = (e, n) => {
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) => {
75
75
  const t = _e(e);
76
76
  return ee(t, n);
77
77
  }, J = 1, te = ({
@@ -87,7 +87,7 @@ const fe = (e) => e instanceof Object && ("originator" in e || "cause" in e), En
87
87
  sendEncodings: t
88
88
  }) => {
89
89
  if (n && n.length > 0) {
90
- const o = t ?? [], s = Me(e);
90
+ const o = t ?? [], s = ve(e);
91
91
  if (s === void 0)
92
92
  throw new Error("No video track");
93
93
  return n.forEach((r, i) => {
@@ -144,7 +144,7 @@ const fe = (e) => e instanceof Object && ("originator" in e || "cause" in e), En
144
144
  "isConfigured",
145
145
  "isRegistered"
146
146
  ]);
147
- class Tn {
147
+ class vn {
148
148
  // @ts-expect-error: proxy method
149
149
  on;
150
150
  // @ts-expect-error: proxy method
@@ -231,20 +231,20 @@ class Tn {
231
231
  directionVideo: F,
232
232
  directionAudio: k,
233
233
  setRemoteStreams: g,
234
- onBeforeProgressCall: p,
234
+ onBeforeProgressCall: R,
235
235
  onSuccessProgressCall: C,
236
236
  onEnterPurgatory: S,
237
- onEnterConference: R,
237
+ onEnterConference: p,
238
238
  onFailProgressCall: E,
239
239
  onFinishProgressCall: T,
240
- onEndedCall: M
240
+ onEndedCall: v
241
241
  } = n, _ = this.resolveHandleReadyRemoteStreamsDebounced({
242
242
  onReadyRemoteStreams: g
243
- }), O = this.resolveHandleReadyRemoteStreams({
243
+ }), A = this.resolveHandleReadyRemoteStreams({
244
244
  onReadyRemoteStreams: () => {
245
245
  _().catch(I);
246
246
  }
247
- }), A = P(
247
+ }), O = P(
248
248
  {
249
249
  degradationPreference: u
250
250
  },
@@ -269,21 +269,21 @@ class Tn {
269
269
  sendEncodings: l
270
270
  }),
271
271
  number: t,
272
- onAddedTransceiver: A,
273
- ontrack: O
272
+ onAddedTransceiver: O,
273
+ ontrack: A
274
274
  }));
275
- let v = !1, b;
276
- const B = (c("subscribeEnterConference: onEnterConference", R), S ?? R ? this.sipConnector.on("api:enterRoom", ({ room: d }) => {
277
- c("enterRoom", { _room: d, isSuccessProgressCall: v }), b = d, x(b) ? S && S() : R && R({ isSuccessProgressCall: v });
275
+ 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 });
278
278
  }) : () => {
279
- }), L = (d) => (c("onSuccess"), v = !0, _().catch(I), C && C({ isPurgatory: x(b) }), this.sipConnector.onceRace(["call:ended", "call:failed"], () => {
280
- B(), M && M();
281
- }), d), $ = (d) => {
279
+ }), L = (d) => (c("onSuccess"), M = !0, _().catch(I), C && C({ isPurgatory: x(b) }), this.sipConnector.onceRace(["call:ended", "call:failed"], () => {
280
+ B(), v && v();
281
+ }), d), H = (d) => {
282
282
  throw c("onFail"), E && E(), B(), d;
283
- }, H = () => {
283
+ }, $ = () => {
284
284
  c("onFinish"), T && T();
285
285
  };
286
- return c("onBeforeProgressCall"), p && p(t), N().then(L).catch((d) => $(d)).finally(H);
286
+ return c("onBeforeProgressCall"), R && R(t), N().then(L).catch((d) => H(d)).finally($);
287
287
  };
288
288
  disconnectFromServer = async () => this.sipConnector.disconnect().then(() => (c("disconnectFromServer: then"), { isSuccessful: !0 })).catch((n) => (c("disconnectFromServer: catch", n), { isSuccessful: !1 }));
289
289
  answerToIncomingCall = async (n) => {
@@ -301,19 +301,19 @@ class Tn {
301
301
  directionAudio: F,
302
302
  setRemoteStreams: k,
303
303
  onBeforeProgressCall: g,
304
- onSuccessProgressCall: p,
304
+ onSuccessProgressCall: R,
305
305
  onEnterPurgatory: C,
306
306
  onEnterConference: S,
307
- onFailProgressCall: R,
307
+ onFailProgressCall: p,
308
308
  onFinishProgressCall: E,
309
309
  onEndedCall: T
310
- } = n, M = this.resolveHandleReadyRemoteStreamsDebounced({
310
+ } = n, v = this.resolveHandleReadyRemoteStreamsDebounced({
311
311
  onReadyRemoteStreams: k
312
312
  }), _ = this.resolveHandleReadyRemoteStreams({
313
313
  onReadyRemoteStreams: () => {
314
- M().catch(I);
314
+ v().catch(I);
315
315
  }
316
- }), O = P(
316
+ }), A = P(
317
317
  {
318
318
  degradationPreference: a
319
319
  },
@@ -323,7 +323,7 @@ class Tn {
323
323
  }
324
324
  );
325
325
  c("answerToIncomingCall", n);
326
- const A = async () => this.sipConnector.answerToIncomingCall({
326
+ const O = async () => this.sipConnector.answerToIncomingCall({
327
327
  mediaStream: t,
328
328
  extraHeaders: o,
329
329
  iceServers: s,
@@ -337,28 +337,28 @@ class Tn {
337
337
  simulcastEncodings: i,
338
338
  sendEncodings: u
339
339
  }),
340
- onAddedTransceiver: O,
340
+ onAddedTransceiver: A,
341
341
  ontrack: _
342
342
  }), N = () => {
343
343
  const { remoteCallerData: d } = this.sipConnector;
344
344
  return d.incomingNumber;
345
345
  };
346
- let v = !1, b;
346
+ let M = !1, b;
347
347
  const B = (c("subscribeEnterConference: onEnterConference", S), C ?? S ? this.sipConnector.on("api:enterRoom", (d) => {
348
- c("enterRoom", { _room: d, isSuccessProgressCall: v }), b = d, x(b) ? C && C() : S && S({ isSuccessProgressCall: v });
348
+ c("enterRoom", { _room: d, isSuccessProgressCall: M }), b = d, x(b) ? C && C() : S && S({ isSuccessProgressCall: M });
349
349
  }) : () => {
350
- }), L = (d) => (c("onSuccess"), v = !0, M().catch(I), p && p({ isPurgatory: x(b) }), this.sipConnector.onceRace(["call:ended", "call:failed"], () => {
350
+ }), L = (d) => (c("onSuccess"), M = !0, v().catch(I), R && R({ isPurgatory: x(b) }), this.sipConnector.onceRace(["call:ended", "call:failed"], () => {
351
351
  B(), T && T();
352
- }), d), $ = (d) => {
353
- throw c("onFail"), R && R(), B(), d;
354
- }, H = () => {
352
+ }), d), H = (d) => {
353
+ throw c("onFail"), p && p(), B(), d;
354
+ }, $ = () => {
355
355
  c("onFinish"), E && E();
356
356
  };
357
357
  if (c("onBeforeProgressCall"), g) {
358
358
  const d = N();
359
359
  g(d);
360
360
  }
361
- return A().then(L).catch((d) => $(d)).finally(H);
361
+ return O().then(L).catch((d) => H(d)).finally($);
362
362
  };
363
363
  updatePresentation = async ({
364
364
  mediaStream: n,
@@ -533,15 +533,15 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
533
533
  c("failed to stringify message", t);
534
534
  }
535
535
  return n;
536
- }, Le = new Error("Unknown error"), $e = (e = Le) => {
536
+ }, Le = new Error("Unknown error"), He = (e = Le) => {
537
537
  const { code: n, cause: t, message: o } = e, s = V(e), r = { code: "", cause: "", message: "" };
538
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
- }, He = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
539
+ }, $e = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
540
540
  __proto__: null,
541
541
  EErrorTypes: se,
542
542
  getLinkError: V,
543
543
  getTypeFromError: Ue,
544
- getValuesFromError: $e
544
+ getValuesFromError: He
545
545
  }, Symbol.toStringTag, { value: "Module" })), Je = ({
546
546
  sessionId: e,
547
547
  remoteAddress: n,
@@ -577,37 +577,37 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
577
577
  const s = Ye(n)(e);
578
578
  return de(s, t);
579
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 }) => {
580
- const n = (g, p) => ({ isSyncForced: C }) => {
580
+ const n = (g, R) => ({ isSyncForced: C }) => {
581
581
  if (C === !0) {
582
582
  g();
583
583
  return;
584
584
  }
585
- p();
585
+ R();
586
586
  }, t = ze(e), o = Ze(e), s = Qe(e), r = en(e);
587
587
  let i, a, u, l;
588
588
  const h = ({
589
589
  onStartMainCamForced: g,
590
- onStartMainCamNotForced: p,
590
+ onStartMainCamNotForced: R,
591
591
  onStopMainCamForced: C,
592
592
  onStopMainCamNotForced: S,
593
- onStartMicForced: R,
593
+ onStartMicForced: p,
594
594
  onStartMicNotForced: E,
595
595
  onStopMicForced: T,
596
- onStopMicNotForced: M
596
+ onStopMicNotForced: v
597
597
  }) => {
598
598
  const _ = n(
599
599
  g,
600
- p
600
+ R
601
601
  );
602
602
  i = t(_);
603
- const O = n(
603
+ const A = n(
604
604
  C,
605
605
  S
606
606
  );
607
- a = o(O);
608
- const A = n(R, E);
609
- u = s(A);
610
- const N = n(T, M);
607
+ a = o(A);
608
+ const O = n(p, E);
609
+ u = s(O);
610
+ const N = n(T, v);
611
611
  l = r(N);
612
612
  }, f = () => {
613
613
  i?.(), a?.(), u?.(), l?.();
@@ -624,12 +624,14 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
624
624
  __proto__: null,
625
625
  PURGATORY_CONFERENCE_NUMBER: oe,
626
626
  createSyncMediaState: nn,
627
- error: He,
627
+ error: $e,
628
628
  getExtraHeaders: Je,
629
629
  getUserAgent: Ke,
630
630
  hasPurgatory: x,
631
631
  sendDtmfAccumulated: qe
632
- }, Symbol.toStringTag, { value: "Module" })), tn = (e) => [...e.keys()].map((n) => e.get(n)), on = (e, n) => tn(e).find((t) => t?.type === n), sn = async (e) => e.getStats().then((n) => on(n, "codec")?.mimeType), rn = (e) => e.find((n) => n.track?.kind === "video"), cn = async (e, n, t) => {
632
+ }, 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) => {
633
635
  const { isChanged: o, parameters: s } = await z(e, {
634
636
  encodings: [
635
637
  {
@@ -639,14 +641,14 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
639
641
  ]
640
642
  });
641
643
  return o && t && t(s), { isChanged: o, parameters: s };
642
- }, re = le(), an = async () => re().catch((e) => {
644
+ }, re = le(), un = async () => re().catch((e) => {
643
645
  c("videoSendingBalancer: error", e);
644
- }), un = async (e) => (re.add(e), an()), W = async ({
646
+ }), dn = async (e) => (re.add(e), un()), W = async ({
645
647
  sender: e,
646
648
  scaleResolutionDownBy: n,
647
649
  maxBitrate: t,
648
650
  onSetParameters: o
649
- }) => un(async () => cn(e, { scaleResolutionDownBy: n, maxBitrate: t }, o)), dn = async ({ sender: e, codec: n }, t) => {
651
+ }) => dn(async () => an(e, { scaleResolutionDownBy: n, maxBitrate: t }, o)), ln = async ({ sender: e, codec: n }, t) => {
650
652
  const s = Be(n);
651
653
  return W({
652
654
  sender: e,
@@ -666,7 +668,7 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
666
668
  onSetParameters: o,
667
669
  scaleResolutionDownBy: 1
668
670
  });
669
- }, ln = async ({
671
+ }, fn = async ({
670
672
  sender: e,
671
673
  videoTrack: n,
672
674
  resolution: t,
@@ -686,7 +688,7 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
686
688
  onSetParameters: s,
687
689
  scaleResolutionDownBy: u
688
690
  });
689
- }, fn = async ({
691
+ }, hn = async ({
690
692
  mainCam: e,
691
693
  resolutionMainCam: n,
692
694
  sender: t,
@@ -695,11 +697,11 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
695
697
  }, r) => {
696
698
  switch (e) {
697
699
  case w.PAUSE_MAIN_CAM:
698
- return dn({ sender: t, codec: s }, r);
700
+ return ln({ sender: t, codec: s }, r);
699
701
  case w.RESUME_MAIN_CAM:
700
702
  return U({ sender: t, videoTrack: o, codec: s }, r);
701
703
  case w.MAX_MAIN_CAM_RESOLUTION:
702
- return n !== void 0 ? ln(
704
+ return n !== void 0 ? fn(
703
705
  { sender: t, videoTrack: o, codec: s, resolution: n },
704
706
  r
705
707
  ) : U({ sender: t, videoTrack: o, codec: s }, r);
@@ -726,11 +728,11 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
726
728
  onSetParameters: o,
727
729
  ignoreForCodec: s
728
730
  }) => {
729
- const r = t.getSenders(), i = rn(r);
731
+ const r = t.getSenders(), i = cn(r);
730
732
  if (!i?.track)
731
733
  return j;
732
- const a = await sn(i);
733
- return Z(a, s) ? j : fn(
734
+ const a = await rn(i);
735
+ return Z(a, s) ? j : hn(
734
736
  {
735
737
  mainCam: e,
736
738
  resolutionMainCam: n,
@@ -740,7 +742,7 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
740
742
  },
741
743
  o
742
744
  );
743
- }, vn = (e, {
745
+ }, bn = (e, {
744
746
  ignoreForCodec: n,
745
747
  onSetParameters: t
746
748
  } = {}) => {
@@ -787,16 +789,17 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
787
789
  };
788
790
  export {
789
791
  y as ECallCause,
792
+ tn as EMimeTypesVideoCodecs,
790
793
  On as EUseLicense,
791
- An as SipConnector,
792
- Tn as SipConnectorFacade,
793
- Pn as debug,
794
- Nn as disableDebug,
795
- Bn as enableDebug,
796
- sn as getCodecFromSender,
797
- En as hasCanceledCallError,
798
- wn as hasCanceledStartPresentationError,
799
- vn as resolveVideoSendingBalancer,
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,
800
803
  z as setParametersToSender,
801
804
  Mn as tools
802
805
  };
package/dist/types.d.ts CHANGED
@@ -13,3 +13,12 @@ export type TSimulcastEncoding = TSize & {
13
13
  rid?: string;
14
14
  scalabilityMode?: string;
15
15
  };
16
+ export declare enum EMimeTypesVideoCodecs {
17
+ VP8 = "video/VP8",
18
+ VP9 = "video/VP9",
19
+ H264 = "video/H264",
20
+ AV1 = "video/AV1",
21
+ rtx = "video/rtx",
22
+ red = "video/red",
23
+ flexfec03 = "video/flexfec-03"
24
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sip-connector",
3
- "version": "14.1.0-alpha.6",
3
+ "version": "14.1.0-alpha.8",
4
4
  "description": "Module for connect to Vinteo server",
5
5
  "keywords": [
6
6
  "webrtc",