sip-connector 14.1.0-alpha.5 → 14.1.0-alpha.7

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.
@@ -132,7 +132,7 @@ declare class SipConnectorFacade implements IProxyMethods {
132
132
  sendEncodings?: RTCRtpEncodingParameters[];
133
133
  preferredMimeTypesVideoCodecs?: string[];
134
134
  excludeMimeTypesVideoCodecs?: string[];
135
- callLimit: number;
135
+ callLimit?: number;
136
136
  }) => Promise<MediaStream | undefined>;
137
137
  stopShareSipConnector: ({ isP2P }?: {
138
138
  isP2P?: boolean;
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,6 @@ 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';
11
12
  export { default as getCodecFromSender } from './utils/getCodecFromSender';
12
13
  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.5",
3
+ "version": "14.1.0-alpha.7",
4
4
  "description": "Module for connect to Vinteo server",
5
5
  "keywords": [
6
6
  "webrtc",