sip-connector 11.0.0 → 11.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("./SipConnector-5B3QzrjB.cjs"),K=require("ts-debounce"),Y=require("@krivega/cancelable-promise"),z=require("repeated-calls"),J=require("sequent-promises"),Q=require("stack-promises"),Z=require("debug"),V="purgatory",A=e=>e===V,I=e=>()=>(r.logger("getRemoteStreams"),e.getRemoteStreams()),ee=({kind:e,readyState:t})=>e==="video"&&t==="live",x=e=>({track:t})=>{ee(t)&&e()},w=({getRemoteStreams:e,setRemoteStreams:t})=>K.debounce(()=>{const n=e();r.logger("remoteStreams",n),n&&t(n)},200),ne=e=>async n=>{const{mediaStream:s,extraHeaders:o,iceServers:c,contentHint:a,sendEncodings:i,setRemoteStreams:l,onBeforeProgressCall:d,onSuccessProgressCall:m,onEnterPurgatory:S,onEnterConference:g,onFailProgressCall:C,onFinishProgressCall:f,onEndedCall:R}=n,M=w({setRemoteStreams:l,getRemoteStreams:I(e)}),_=x(M);r.logger("answerIncomingCall",n);const h=async()=>e.answerToIncomingCall({mediaStream:s,extraHeaders:o,iceServers:c,contentHint:a,sendEncodings:i,ontrack:_}),v=()=>{const{remoteCallerData:u}=e;return u.incomingNumber};let T=!1,y;const b=(r.logger("subscribeEnterConference: onEnterConference",g),S??g?e.onSession("enterRoom",u=>{r.logger("enterRoom",{_room:u,isSuccessProgressCall:T}),y=u,A(y)?S&&S():g&&g({isSuccessProgressCall:T})}):()=>{}),O=u=>(r.logger("onSuccess"),T=!0,M(),m&&m({isPurgatory:A(y)}),e.onceRaceSession(["ended","failed"],()=>{b(),R&&R()}),u),p=u=>{throw r.logger("onFail"),C&&C(),b(),u},P=()=>{r.logger("onFinish"),f&&f()};if(r.logger("onBeforeProgressCall"),d){const u=v();d(u)}return h().then(O).catch(u=>p(u)).finally(P)},te=e=>async n=>{const{conference:s,mediaStream:o,extraHeaders:c,iceServers:a,contentHint:i,sendEncodings:l,setRemoteStreams:d,onBeforeProgressCall:m,onSuccessProgressCall:S,onEnterPurgatory:g,onEnterConference:C,onFailProgressCall:f,onFinishProgressCall:R,onEndedCall:M}=n,_=w({setRemoteStreams:d,getRemoteStreams:I(e)}),h=x(_);r.logger("callToServer",n);const v=async()=>(r.logger("startCall"),e.call({mediaStream:o,extraHeaders:c,iceServers:a,contentHint:i,sendEncodings:l,number:s,ontrack:h}));let T=!1,y;const b=(r.logger("subscribeEnterConference: onEnterConference",C),g??C?e.onSession("enterRoom",({room:u})=>{r.logger("enterRoom",{_room:u,isSuccessProgressCall:T}),y=u,A(y)?g&&g():C&&C({isSuccessProgressCall:T})}):()=>{}),O=u=>(r.logger("onSuccess"),T=!0,_(),S&&S({isPurgatory:A(y)}),e.onceRaceSession(["ended","failed"],()=>{b(),M&&M()}),u),p=u=>{throw r.logger("onFail"),f&&f(),b(),u},P=()=>{r.logger("onFinish"),R&&R()};return r.logger("onBeforeProgressCall"),m&&m(s),v().then(O).catch(u=>p(u)).finally(P)},B=e=>{if(!Y.isCanceledError(e)&&!z.hasCanceledError(e))throw e;return{isSuccessful:!1}},re=e=>async n=>{const{userAgent:s,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:i,name:l,password:d,isRegisteredUser:m,isDisconnectOnFail:S}=n;return r.logger("connectToServer",n),e.connect({userAgent:s,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:i,password:d,user:l,register:m}).then(g=>(r.logger("connectToServer then"),{ua:g,isSuccessful:!0})).catch(async g=>(r.logger("connectToServer catch: error",g),S===!0?e.disconnect().then(()=>B(g)).catch(()=>B(g)):B(g)))},se=e=>async()=>(r.logger("disconnectFromServer"),e.disconnect().then(()=>(r.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(t=>(r.logger("disconnectFromServer: catch",t),{isSuccessful:!1}))),F=e=>{const{url:t,cause:n}=e;let s=t;return(n===r.BAD_MEDIA_DESCRIPTION||n===r.NOT_FOUND)&&(s=`${e.message.to.uri.user}@${e.message.to.uri.host}`),s};var $=(e=>(e.CONNECT_SERVER_FAILED="CONNECT_SERVER_FAILED",e.WRONG_USER_OR_PASSWORD="WRONG_USER_OR_PASSWORD",e.BAD_MEDIA_ERROR="BAD_MEDIA_ERROR",e.NOT_FOUND_ERROR="NOT_FOUND_ERROR",e.WS_CONNECTION_FAILED="WS_CONNECTION_FAILED",e.CONNECT_SERVER_FAILED_BY_LINK="CONNECT_SERVER_FAILED_BY_LINK",e))($||{});const oe=(e=new Error)=>{var o;const{cause:t,socket:n}=e;let s="CONNECT_SERVER_FAILED";switch(t){case"Forbidden":{s="WRONG_USER_OR_PASSWORD";break}case r.BAD_MEDIA_DESCRIPTION:{s="BAD_MEDIA_ERROR";break}case r.NOT_FOUND:{s="NOT_FOUND_ERROR";break}default:n&&((o=n==null?void 0:n._ws)==null?void 0:o.readyState)===3?s="WS_CONNECTION_FAILED":F(e)&&(s="CONNECT_SERVER_FAILED_BY_LINK")}return s},ce=e=>{let t="";try{t=JSON.stringify(e)}catch(n){r.logger("failed to stringify message",n)}return t},ae=(e=new Error)=>{const{code:t,cause:n,message:s}=e,o=F(e),c={code:"",cause:"",message:""};return typeof s=="object"&&s!==null?c.message=ce(s):s&&(c.message=String(s)),o&&(c.link=o),t&&(c.code=t),n&&(c.cause=n),c},ie=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:$,getLinkError:F,getTypeFromError:oe,getValuesFromError:ae},Symbol.toStringTag,{value:"Module"})),ue=({sessionId:e,remoteAddress:t,isMutedAudio:n,isMutedVideo:s,isRegistered:o,isPresentationCall:c})=>{const a=[],i=n?"0":"1",l=s?"0":"1";return a.push(`X-Vinteo-Mic-State: ${i}`,`X-Vinteo-MainCam-State: ${l}`),o||a.push("X-Vinteo-Purgatory-Call: yes"),e&&a.push(`X-Vinteo-Session: ${e}`),c&&a.push("X-Vinteo-Presentation-Call: yes"),t&&a.push(`X-Vinteo-Remote: ${t}`),a},le="[@*!|]",ge="_",Se=e=>{let t=e;return t=t.replaceAll(new RegExp(le,"g"),ge),t},de=({appName:e,appVersion:t,browserName:n,browserVersion:s})=>{const c=`${Se(e)} ${t}`;return`ChromeNew - ${n?`${n} ${s}, ${c}`:c}`},me=({isUnifiedSdpSemantic:e,appVersion:t,browserName:n,browserVersion:s,appName:o})=>e?de({appVersion:t,browserName:n,browserVersion:s,appName:o}):"Chrome",fe=e=>async()=>{if(e.isCallActive)return r.logger("askPermissionToEnableCam"),e.askPermissionToEnableCam()},Ce=e=>n=>(r.logger("onMustStopPresentation"),e.onSession("mustStopPresentation",n)),Ee=e=>n=>(r.logger("onMoveToSpectators"),e.onSession("participant:move-request-to-spectators",n)),Re=e=>n=>(r.logger("onUseLicense"),e.onSession("useLicense",n)),Me=e=>async({isEnabledCam:n,isEnabledMic:s})=>{if(e.isCallActive)return r.logger("sendMediaState"),e.sendMediaState({cam:n,mic:s})},Te=e=>async()=>{if(e.isCallActive)return r.logger("sendRefusalToTurnOnCam"),e.sendRefusalToTurnOnCam().catch(n=>{r.logger("sendRefusalToTurnOnCam: error",n)})},ye=e=>async()=>{if(e.isCallActive)return r.logger("sendRefusalToTurnOnMic"),e.sendRefusalToTurnOnMic().catch(n=>{r.logger("sendRefusalToTurnOnMic: error",n)})},be=e=>async({mediaStream:n,isP2P:s,maxBitrate:o,contentHint:c,sendEncodings:a},i)=>(r.logger("startPresentation"),e.startPresentation(n,{isP2P:s,maxBitrate:o,contentHint:c,sendEncodings:a},i)),_e=e=>async({isP2P:n=!1}={})=>(r.logger("stopShareSipConnector"),e.stopPresentation({isP2P:n}).catch(s=>{r.logger(s)})),he=e=>async({mediaStream:n,isP2P:s,maxBitrate:o,contentHint:c,sendEncodings:a})=>(r.logger("updatePresentation"),e.updatePresentation(n,{isP2P:s,maxBitrate:o,contentHint:c,sendEncodings:a})),ve=e=>t=>[...t].map(s=>async()=>e(s)),Oe=async({accumulatedKeys:e,sendKey:t,canRunTask:n})=>{const o=ve(t)(e);return J.sequentPromises(o,n)},pe=e=>n=>(r.logger("onStartMainCam"),e.onSession("admin-start-main-cam",n)),Ae=e=>n=>(r.logger("onStartMic"),e.onSession("admin-start-mic",n)),Ne=e=>n=>(r.logger("onStopMainCam"),e.onSession("admin-stop-main-cam",n)),Pe=e=>n=>(r.logger("onStopMic"),e.onSession("admin-stop-mic",n)),Be=({sipConnector:e})=>{const t=(f,R)=>({isSyncForced:M=!1})=>{if(M){f();return}R()},n=pe(e),s=Ne(e),o=Ae(e),c=Pe(e);let a=()=>{},i=()=>{},l=()=>{},d=()=>{};const m=({onStartMainCamForced:f,onStartMainCamNotForced:R,onStopMainCamForced:M,onStopMainCamNotForced:_,onStartMicForced:h,onStartMicNotForced:v,onStopMicForced:T,onStopMicNotForced:y})=>{const N=t(f,R);a=n(N);const b=t(M,_);i=s(b);const O=t(h,v);l=o(O);const p=t(T,y);d=c(p)},S=()=>{a(),i(),l(),d()};return{start:f=>{m(f)},stop:()=>{S()}}},De=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:V,createSyncMediaState:Be,error:ie,getExtraHeaders:ue,getUserAgent:me,hasPurgatory:A,resolveAnswerIncomingCall:ne,resolveAskPermissionToEnableCam:fe,resolveCallToServer:te,resolveConnectToServer:re,resolveDisconnectFromServer:se,resolveGetRemoteStreams:I,resolveOnMoveToSpectators:Ee,resolveOnMustStopPresentation:Ce,resolveOnUseLicense:Re,resolveSendMediaState:Me,resolveSendRefusalToTurnOnCam:Te,resolveSendRefusalToTurnOnMic:ye,resolveStartPresentation:be,resolveStopShareSipConnector:_e,resolveUpdatePresentation:he,resolveUpdateRemoteStreams:w,sendDTMFAccumulated:Oe},Symbol.toStringTag,{value:"Module"})),Ie=e=>[...e.keys()].map(t=>e.get(t)),we=(e,t)=>Ie(e).find(n=>n.type===t),q=async e=>e.getStats().then(t=>{const n=we(t,"codec");return n==null?void 0:n.mimeType}),Fe=e=>e.find(t=>{var n;return((n=t==null?void 0:t.track)==null?void 0:n.kind)==="video"}),X=(e,t)=>e!==void 0&&t!==void 0&&e.toLowerCase().includes(t.toLowerCase()),ke=1e6,E=e=>e*ke,H=E(.06),Ue=E(4),Le=e=>e<=64?H:e<=128?E(.12):e<=256?E(.25):e<=384?E(.32):e<=426?E(.38):e<=640?E(.5):e<=848?E(.7):e<=1280?E(1):e<=1920?E(2):Ue,Ve="av1",xe=e=>X(e,Ve),$e=.6,W=(e,t)=>xe(t)?e*$e:e,qe=e=>W(H,e),j=(e,t)=>{const n=Le(e);return W(n,t)},G=Q.createStackPromises(),Xe=async()=>G().catch(e=>{r.logger("videoSendingBalancer: error",e)}),He=async e=>(G.add(e),Xe()),k=async({sender:e,scaleResolutionDownBy:t,maxBitrate:n,onSetParameters:s})=>He(async()=>r.setEncodingsToSender(e,{scaleResolutionDownBy:t,maxBitrate:n},s)),We=async({sender:e,codec:t},n)=>{const o=qe(t);return k({sender:e,maxBitrate:o,onSetParameters:n,scaleResolutionDownBy:200})},D=async({sender:e,track:t,codec:n},s)=>{const a=t.getSettings().width,i=j(a,n);return k({sender:e,maxBitrate:i,onSetParameters:s,scaleResolutionDownBy:1})},je=async({sender:e,track:t,resolution:n,codec:s},o)=>{const c=t.getSettings(),a=c.width,i=c.height,[l,d]=n.split("x"),m=a/Number(l),S=i/Number(d),C=Math.max(m,S,1),f=j(Number(l),s);return k({sender:e,maxBitrate:f,onSetParameters:o,scaleResolutionDownBy:C})},Ge=async({mainCam:e,resolutionMainCam:t,sender:n,track:s,codec:o},c)=>{switch(e){case r.EEventsMainCAM.PAUSE_MAIN_CAM:return We({sender:n,codec:o},c);case r.EEventsMainCAM.RESUME_MAIN_CAM:return D({sender:n,track:s,codec:o},c);case r.EEventsMainCAM.MAX_MAIN_CAM_RESOLUTION:return t!==void 0?je({sender:n,track:s,codec:o,resolution:t},c):D({sender:n,track:s,codec:o},c);default:return D({sender:n,track:s,codec:o},c)}},U={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},L=async({mainCam:e,resolutionMainCam:t,connection:n,onSetParameters:s,ignoreForCodec:o})=>{const c=n.getSenders(),a=Fe(c);if(!(a!=null&&a.track))return U;const i=await q(a);return X(i,o)?U:Ge({mainCam:e,resolutionMainCam:t,sender:a,codec:i,track:a.track},s)},Ke=(e,{ignoreForCodec:t,onSetParameters:n}={})=>{const s=async()=>{const{connection:l}=e;if(!l)throw new Error("connection is not exist");return L({connection:l,onSetParameters:n,ignoreForCodec:t})};let o=s;const c=async l=>(o=async()=>{const{mainCam:d,resolutionMainCam:m}=l,{connection:S}=e;if(!S)throw new Error("connection is not exist");return L({mainCam:d,resolutionMainCam:m,connection:S,onSetParameters:n,ignoreForCodec:t})},o());return{subscribe:()=>{e.onSession("main-cam-control",c)},unsubscribe:()=>{e.offSession("main-cam-control",c)},balanceByTrack:s,resetMainCamControl(){o=s},async reBalance(){return o()}}};exports.EEventsMainCAM=r.EEventsMainCAM;exports.EEventsMic=r.EEventsMic;exports.EEventsSyncMediaState=r.EEventsSyncMediaState;exports.EUseLicense=r.EUseLicense;exports.causes=r.causes;exports.constants=r.constants;exports.default=r.SipConnector;exports.disableDebug=r.disableDebug;exports.enableDebug=r.enableDebug;exports.eventNames=r.eventNames;exports.hasCanceledCallError=r.hasCanceledCallError;exports.setParametersToSender=r.setParametersToSender;exports.debug=Z;exports.getCodecFromSender=q;exports.resolveVideoSendingBalancer=Ke;exports.tools=De;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("./SipConnector-5B3QzrjB.cjs"),J=require("ts-debounce"),Q=require("@krivega/cancelable-promise"),Z=require("repeated-calls"),ee=require("sequent-promises"),ne=require("stack-promises"),te=require("debug"),re=e=>e.getVideoTracks()[0],se=1e6,C=e=>e*se,$=C(.06),oe=C(4),ce=e=>e<=64?$:e<=128?C(.12):e<=256?C(.25):e<=384?C(.32):e<=426?C(.38):e<=640?C(.5):e<=848?C(.7):e<=1280?C(1):e<=1920?C(2):oe,q=(e,t)=>e!==void 0&&t!==void 0&&e.toLowerCase().includes(t.toLowerCase()),ae="av1",ie=e=>q(e,ae),ue=.6,X=(e,t)=>ie(t)?e*ue:e,le=e=>X($,e),G=(e,t)=>{const n=ce(e);return X(n,t)},ge=1,H=({videoTrack:e,targetSize:t,codec:n})=>{const r=e.getSettings(),o=r.width,c=r.height,a=o/t.width,i=c/t.height,u=Math.max(a,i,ge),g=G(t.width,n);return{scaleResolutionDownBy:u,maxBitrate:g}},N=({mediaStream:e,simulcastEncodings:t,sendEncodings:n})=>{if(t&&t.length>0){const r=n??[],o=re(e);return t.forEach((c,a)=>{const i=r[a]??{},{maxBitrate:u,scaleResolutionDownBy:g}=H({videoTrack:o,targetSize:{width:c.width,height:c.height}});i.maxBitrate=u,i.scaleResolutionDownBy=g,r[a]=i}),r}return n},W="purgatory",A=e=>e===W,F=e=>()=>(s.logger("getRemoteStreams"),e.getRemoteStreams()),Se=({kind:e,readyState:t})=>e==="video"&&t==="live",j=e=>({track:t})=>{Se(t)&&e()},k=({getRemoteStreams:e,setRemoteStreams:t})=>J.debounce(()=>{const n=e();s.logger("remoteStreams",n),n&&t(n)},200),de=e=>async n=>{const{mediaStream:r,extraHeaders:o,iceServers:c,contentHint:a,simulcastEncodings:i,sendEncodings:u,setRemoteStreams:g,onBeforeProgressCall:f,onSuccessProgressCall:m,onEnterPurgatory:S,onEnterConference:E,onFailProgressCall:d,onFinishProgressCall:R,onEndedCall:M}=n,y=k({setRemoteStreams:g,getRemoteStreams:F(e)}),_=j(y);s.logger("answerIncomingCall",n);const v=async()=>e.answerToIncomingCall({mediaStream:r,extraHeaders:o,iceServers:c,contentHint:a,sendEncodings:N({mediaStream:r,simulcastEncodings:i,sendEncodings:u}),ontrack:_}),O=()=>{const{remoteCallerData:l}=e;return l.incomingNumber};let h=!1,T;const b=(s.logger("subscribeEnterConference: onEnterConference",E),S??E?e.onSession("enterRoom",l=>{s.logger("enterRoom",{_room:l,isSuccessProgressCall:h}),T=l,A(T)?S&&S():E&&E({isSuccessProgressCall:h})}):()=>{}),p=l=>(s.logger("onSuccess"),h=!0,y(),m&&m({isPurgatory:A(T)}),e.onceRaceSession(["ended","failed"],()=>{b(),M&&M()}),l),P=l=>{throw s.logger("onFail"),d&&d(),b(),l},D=()=>{s.logger("onFinish"),R&&R()};if(s.logger("onBeforeProgressCall"),f){const l=O();f(l)}return v().then(p).catch(l=>P(l)).finally(D)},me=e=>async n=>{const{conference:r,mediaStream:o,extraHeaders:c,iceServers:a,contentHint:i,simulcastEncodings:u,sendEncodings:g,setRemoteStreams:f,onBeforeProgressCall:m,onSuccessProgressCall:S,onEnterPurgatory:E,onEnterConference:d,onFailProgressCall:R,onFinishProgressCall:M,onEndedCall:y}=n,_=k({setRemoteStreams:f,getRemoteStreams:F(e)}),v=j(_);s.logger("callToServer",n);const O=async()=>(s.logger("startCall"),e.call({mediaStream:o,extraHeaders:c,iceServers:a,contentHint:i,sendEncodings:N({mediaStream:o,simulcastEncodings:u,sendEncodings:g}),number:r,ontrack:v}));let h=!1,T;const b=(s.logger("subscribeEnterConference: onEnterConference",d),E??d?e.onSession("enterRoom",({room:l})=>{s.logger("enterRoom",{_room:l,isSuccessProgressCall:h}),T=l,A(T)?E&&E():d&&d({isSuccessProgressCall:h})}):()=>{}),p=l=>(s.logger("onSuccess"),h=!0,_(),S&&S({isPurgatory:A(T)}),e.onceRaceSession(["ended","failed"],()=>{b(),y&&y()}),l),P=l=>{throw s.logger("onFail"),R&&R(),b(),l},D=()=>{s.logger("onFinish"),M&&M()};return s.logger("onBeforeProgressCall"),m&&m(r),O().then(p).catch(l=>P(l)).finally(D)},w=e=>{if(!Q.isCanceledError(e)&&!Z.hasCanceledError(e))throw e;return{isSuccessful:!1}},fe=e=>async n=>{const{userAgent:r,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:i,name:u,password:g,isRegisteredUser:f,isDisconnectOnFail:m}=n;return s.logger("connectToServer",n),e.connect({userAgent:r,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:i,password:g,user:u,register:f}).then(S=>(s.logger("connectToServer then"),{ua:S,isSuccessful:!0})).catch(async S=>(s.logger("connectToServer catch: error",S),m===!0?e.disconnect().then(()=>w(S)).catch(()=>w(S)):w(S)))},Ce=e=>async()=>(s.logger("disconnectFromServer"),e.disconnect().then(()=>(s.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(t=>(s.logger("disconnectFromServer: catch",t),{isSuccessful:!1}))),U=e=>{const{url:t,cause:n}=e;let r=t;return(n===s.BAD_MEDIA_DESCRIPTION||n===s.NOT_FOUND)&&(r=`${e.message.to.uri.user}@${e.message.to.uri.host}`),r};var K=(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))(K||{});const Ee=(e=new Error)=>{var o;const{cause:t,socket:n}=e;let r="CONNECT_SERVER_FAILED";switch(t){case"Forbidden":{r="WRONG_USER_OR_PASSWORD";break}case s.BAD_MEDIA_DESCRIPTION:{r="BAD_MEDIA_ERROR";break}case s.NOT_FOUND:{r="NOT_FOUND_ERROR";break}default:n&&((o=n==null?void 0:n._ws)==null?void 0:o.readyState)===3?r="WS_CONNECTION_FAILED":U(e)&&(r="CONNECT_SERVER_FAILED_BY_LINK")}return r},Re=e=>{let t="";try{t=JSON.stringify(e)}catch(n){s.logger("failed to stringify message",n)}return t},Me=(e=new Error)=>{const{code:t,cause:n,message:r}=e,o=U(e),c={code:"",cause:"",message:""};return typeof r=="object"&&r!==null?c.message=Re(r):r&&(c.message=String(r)),o&&(c.link=o),t&&(c.code=t),n&&(c.cause=n),c},he=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:K,getLinkError:U,getTypeFromError:Ee,getValuesFromError:Me},Symbol.toStringTag,{value:"Module"})),Te=({sessionId:e,remoteAddress:t,isMutedAudio:n,isMutedVideo:r,isRegistered:o,isPresentationCall:c})=>{const a=[],i=n?"0":"1",u=r?"0":"1";return a.push(`X-Vinteo-Mic-State: ${i}`,`X-Vinteo-MainCam-State: ${u}`),o||a.push("X-Vinteo-Purgatory-Call: yes"),e&&a.push(`X-Vinteo-Session: ${e}`),c&&a.push("X-Vinteo-Presentation-Call: yes"),t&&a.push(`X-Vinteo-Remote: ${t}`),a},ye="[@*!|]",be="_",_e=e=>{let t=e;return t=t.replaceAll(new RegExp(ye,"g"),be),t},ve=({appName:e,appVersion:t,browserName:n,browserVersion:r})=>{const c=`${_e(e)} ${t}`;return`ChromeNew - ${n?`${n} ${r}, ${c}`:c}`},Oe=({isUnifiedSdpSemantic:e,appVersion:t,browserName:n,browserVersion:r,appName:o})=>e?ve({appVersion:t,browserName:n,browserVersion:r,appName:o}):"Chrome",pe=e=>async()=>{if(e.isCallActive)return s.logger("askPermissionToEnableCam"),e.askPermissionToEnableCam()},Ae=e=>n=>(s.logger("onMustStopPresentation"),e.onSession("mustStopPresentation",n)),Ne=e=>n=>(s.logger("onMoveToSpectators"),e.onSession("participant:move-request-to-spectators",n)),Be=e=>n=>(s.logger("onUseLicense"),e.onSession("useLicense",n)),Pe=e=>async({isEnabledCam:n,isEnabledMic:r})=>{if(e.isCallActive)return s.logger("sendMediaState"),e.sendMediaState({cam:n,mic:r})},De=e=>async()=>{if(e.isCallActive)return s.logger("sendRefusalToTurnOnCam"),e.sendRefusalToTurnOnCam().catch(n=>{s.logger("sendRefusalToTurnOnCam: error",n)})},we=e=>async()=>{if(e.isCallActive)return s.logger("sendRefusalToTurnOnMic"),e.sendRefusalToTurnOnMic().catch(n=>{s.logger("sendRefusalToTurnOnMic: error",n)})},Ie=e=>async({mediaStream:n,isP2P:r,maxBitrate:o,contentHint:c,simulcastEncodings:a,sendEncodings:i},u)=>(s.logger("startPresentation"),e.startPresentation(n,{isP2P:r,maxBitrate:o,contentHint:c,sendEncodings:N({mediaStream:n,simulcastEncodings:a,sendEncodings:i})},u)),Fe=e=>async({isP2P:n=!1}={})=>(s.logger("stopShareSipConnector"),e.stopPresentation({isP2P:n}).catch(r=>{s.logger(r)})),ke=e=>async({mediaStream:n,isP2P:r,maxBitrate:o,contentHint:c,simulcastEncodings:a,sendEncodings:i})=>(s.logger("updatePresentation"),e.updatePresentation(n,{isP2P:r,maxBitrate:o,contentHint:c,sendEncodings:N({mediaStream:n,simulcastEncodings:a,sendEncodings:i})})),Ue=e=>t=>[...t].map(r=>async()=>e(r)),Le=async({accumulatedKeys:e,sendKey:t,canRunTask:n})=>{const o=Ue(t)(e);return ee.sequentPromises(o,n)},Ve=e=>n=>(s.logger("onStartMainCam"),e.onSession("admin-start-main-cam",n)),xe=e=>n=>(s.logger("onStartMic"),e.onSession("admin-start-mic",n)),$e=e=>n=>(s.logger("onStopMainCam"),e.onSession("admin-stop-main-cam",n)),qe=e=>n=>(s.logger("onStopMic"),e.onSession("admin-stop-mic",n)),Xe=({sipConnector:e})=>{const t=(d,R)=>({isSyncForced:M=!1})=>{if(M){d();return}R()},n=Ve(e),r=$e(e),o=xe(e),c=qe(e);let a=()=>{},i=()=>{},u=()=>{},g=()=>{};const f=({onStartMainCamForced:d,onStartMainCamNotForced:R,onStopMainCamForced:M,onStopMainCamNotForced:y,onStartMicForced:_,onStartMicNotForced:v,onStopMicForced:O,onStopMicNotForced:h})=>{const T=t(d,R);a=n(T);const B=t(M,y);i=r(B);const b=t(_,v);u=o(b);const p=t(O,h);g=c(p)},m=()=>{a(),i(),u(),g()};return{start:d=>{f(d)},stop:()=>{m()}}},Ge=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:W,createSyncMediaState:Xe,error:he,getExtraHeaders:Te,getUserAgent:Oe,hasPurgatory:A,resolveAnswerIncomingCall:de,resolveAskPermissionToEnableCam:pe,resolveCallToServer:me,resolveConnectToServer:fe,resolveDisconnectFromServer:Ce,resolveGetRemoteStreams:F,resolveOnMoveToSpectators:Ne,resolveOnMustStopPresentation:Ae,resolveOnUseLicense:Be,resolveSendMediaState:Pe,resolveSendRefusalToTurnOnCam:De,resolveSendRefusalToTurnOnMic:we,resolveStartPresentation:Ie,resolveStopShareSipConnector:Fe,resolveUpdatePresentation:ke,resolveUpdateRemoteStreams:k,sendDTMFAccumulated:Le},Symbol.toStringTag,{value:"Module"})),He=e=>[...e.keys()].map(t=>e.get(t)),We=(e,t)=>He(e).find(n=>n.type===t),Y=async e=>e.getStats().then(t=>{const n=We(t,"codec");return n==null?void 0:n.mimeType}),je=e=>e.find(t=>{var n;return((n=t==null?void 0:t.track)==null?void 0:n.kind)==="video"}),z=ne.createStackPromises(),Ke=async()=>z().catch(e=>{s.logger("videoSendingBalancer: error",e)}),Ye=async e=>(z.add(e),Ke()),L=async({sender:e,scaleResolutionDownBy:t,maxBitrate:n,onSetParameters:r})=>Ye(async()=>s.setEncodingsToSender(e,{scaleResolutionDownBy:t,maxBitrate:n},r)),ze=async({sender:e,codec:t},n)=>{const o=le(t);return L({sender:e,maxBitrate:o,onSetParameters:n,scaleResolutionDownBy:200})},I=async({sender:e,videoTrack:t,codec:n},r)=>{const a=t.getSettings().width,i=G(a,n);return L({sender:e,maxBitrate:i,onSetParameters:r,scaleResolutionDownBy:1})},Je=async({sender:e,videoTrack:t,resolution:n,codec:r},o)=>{const[c,a]=n.split("x"),{maxBitrate:i,scaleResolutionDownBy:u}=H({videoTrack:t,codec:r,targetSize:{width:Number(c),height:Number(a)}});return L({sender:e,maxBitrate:i,onSetParameters:o,scaleResolutionDownBy:u})},Qe=async({mainCam:e,resolutionMainCam:t,sender:n,videoTrack:r,codec:o},c)=>{switch(e){case s.EEventsMainCAM.PAUSE_MAIN_CAM:return ze({sender:n,codec:o},c);case s.EEventsMainCAM.RESUME_MAIN_CAM:return I({sender:n,videoTrack:r,codec:o},c);case s.EEventsMainCAM.MAX_MAIN_CAM_RESOLUTION:return t!==void 0?Je({sender:n,videoTrack:r,codec:o,resolution:t},c):I({sender:n,videoTrack:r,codec:o},c);default:return I({sender:n,videoTrack:r,codec:o},c)}},V={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},x=async({mainCam:e,resolutionMainCam:t,connection:n,onSetParameters:r,ignoreForCodec:o})=>{const c=n.getSenders(),a=je(c);if(!(a!=null&&a.track))return V;const i=await Y(a);return q(i,o)?V:Qe({mainCam:e,resolutionMainCam:t,sender:a,codec:i,videoTrack:a.track},r)},Ze=(e,{ignoreForCodec:t,onSetParameters:n}={})=>{const r=async()=>{const{connection:u}=e;if(!u)throw new Error("connection is not exist");return x({connection:u,onSetParameters:n,ignoreForCodec:t})};let o=r;const c=async u=>(o=async()=>{const{mainCam:g,resolutionMainCam:f}=u,{connection:m}=e;if(!m)throw new Error("connection is not exist");return x({mainCam:g,resolutionMainCam:f,connection:m,onSetParameters:n,ignoreForCodec:t})},o());return{subscribe:()=>{e.onSession("main-cam-control",c)},unsubscribe:()=>{e.offSession("main-cam-control",c)},balanceByTrack:r,resetMainCamControl(){o=r},async reBalance(){return o()}}};exports.EEventsMainCAM=s.EEventsMainCAM;exports.EEventsMic=s.EEventsMic;exports.EEventsSyncMediaState=s.EEventsSyncMediaState;exports.EUseLicense=s.EUseLicense;exports.causes=s.causes;exports.constants=s.constants;exports.default=s.SipConnector;exports.disableDebug=s.disableDebug;exports.enableDebug=s.enableDebug;exports.eventNames=s.eventNames;exports.hasCanceledCallError=s.hasCanceledCallError;exports.setParametersToSender=s.setParametersToSender;exports.debug=te;exports.getCodecFromSender=Y;exports.resolveVideoSendingBalancer=Ze;exports.tools=Ge;
package/dist/index.js CHANGED
@@ -1,141 +1,180 @@
1
- import { l as o, B as x, N as $, E as P, s as z, S as Je } from "./SipConnector-zEWljwQJ.js";
2
- import { g as cn, i as un, j as ln, c as Sn, a as mn, d as dn, b as fn, e as Cn, h as gn, f as Rn } from "./SipConnector-zEWljwQJ.js";
3
- import { debounce as J } from "ts-debounce";
4
- import { isCanceledError as Q } from "@krivega/cancelable-promise";
5
- import { hasCanceledError as Z } from "repeated-calls";
6
- import { sequentPromises as ee } from "sequent-promises";
7
- import { createStackPromises as ne } from "stack-promises";
8
- import { default as Mn } from "debug";
9
- const X = "purgatory", A = (e) => e === X, D = (e) => () => (o("getRemoteStreams"), e.getRemoteStreams()), te = ({ kind: e, readyState: t }) => e === "video" && t === "live", H = (e) => ({ track: t }) => {
10
- te(t) && e();
11
- }, F = ({
1
+ import { l as a, B as X, N as G, E as D, s as Z, S as tn } from "./SipConnector-zEWljwQJ.js";
2
+ import { g as mn, i as fn, j as gn, c as Cn, a as Rn, d as En, b as hn, e as yn, h as Tn, f as Mn } from "./SipConnector-zEWljwQJ.js";
3
+ import { debounce as ee } from "ts-debounce";
4
+ import { isCanceledError as ne } from "@krivega/cancelable-promise";
5
+ import { hasCanceledError as te } from "repeated-calls";
6
+ import { sequentPromises as se } from "sequent-promises";
7
+ import { createStackPromises as re } from "stack-promises";
8
+ import { default as _n } from "debug";
9
+ const oe = (e) => e.getVideoTracks()[0], ae = 1e6, C = (e) => e * ae, H = C(0.06), ce = C(4), ie = (e) => e <= 64 ? H : e <= 128 ? C(0.12) : e <= 256 ? C(0.25) : e <= 384 ? C(0.32) : e <= 426 ? C(0.38) : e <= 640 ? C(0.5) : e <= 848 ? C(0.7) : e <= 1280 ? C(1) : e <= 1920 ? C(2) : ce, W = (e, t) => e !== void 0 && t !== void 0 && e.toLowerCase().includes(t.toLowerCase()), ue = "av1", le = (e) => W(e, ue), Se = 0.6, j = (e, t) => le(t) ? e * Se : e, de = (e) => j(H, e), K = (e, t) => {
10
+ const n = ie(e);
11
+ return j(n, t);
12
+ }, me = 1, Y = ({
13
+ videoTrack: e,
14
+ targetSize: t,
15
+ codec: n
16
+ }) => {
17
+ const s = e.getSettings(), r = s.width, o = s.height, c = r / t.width, i = o / t.height, u = Math.max(c, i, me), S = K(t.width, n);
18
+ return { scaleResolutionDownBy: u, maxBitrate: S };
19
+ }, N = ({
20
+ mediaStream: e,
21
+ simulcastEncodings: t,
22
+ sendEncodings: n
23
+ }) => {
24
+ if (t && t.length > 0) {
25
+ const s = n ?? [], r = oe(e);
26
+ return t.forEach((o, c) => {
27
+ const i = s[c] ?? {}, { maxBitrate: u, scaleResolutionDownBy: S } = Y({
28
+ videoTrack: r,
29
+ targetSize: {
30
+ width: o.width,
31
+ height: o.height
32
+ }
33
+ });
34
+ i.maxBitrate = u, i.scaleResolutionDownBy = S, s[c] = i;
35
+ }), s;
36
+ }
37
+ return n;
38
+ }, q = "purgatory", A = (e) => e === q, k = (e) => () => (a("getRemoteStreams"), e.getRemoteStreams()), fe = ({ kind: e, readyState: t }) => e === "video" && t === "live", z = (e) => ({ track: t }) => {
39
+ fe(t) && e();
40
+ }, U = ({
12
41
  getRemoteStreams: e,
13
42
  setRemoteStreams: t
14
- }) => J(() => {
43
+ }) => ee(() => {
15
44
  const n = e();
16
- o("remoteStreams", n), n && t(n);
17
- }, 200), se = (e) => async (n) => {
45
+ a("remoteStreams", n), n && t(n);
46
+ }, 200), ge = (e) => async (n) => {
18
47
  const {
19
48
  mediaStream: s,
20
49
  extraHeaders: r,
21
- iceServers: a,
50
+ iceServers: o,
22
51
  contentHint: c,
23
- sendEncodings: i,
24
- setRemoteStreams: l,
25
- onBeforeProgressCall: d,
52
+ simulcastEncodings: i,
53
+ sendEncodings: u,
54
+ setRemoteStreams: S,
55
+ onBeforeProgressCall: g,
26
56
  onSuccessProgressCall: f,
27
- onEnterPurgatory: m,
28
- onEnterConference: S,
29
- onFailProgressCall: g,
30
- onFinishProgressCall: C,
31
- onEndedCall: E
32
- } = n, M = F({
33
- setRemoteStreams: l,
34
- getRemoteStreams: D(e)
35
- }), b = H(M);
36
- o("answerIncomingCall", n);
37
- const _ = async () => e.answerToIncomingCall({
57
+ onEnterPurgatory: d,
58
+ onEnterConference: R,
59
+ onFailProgressCall: m,
60
+ onFinishProgressCall: E,
61
+ onEndedCall: h
62
+ } = n, M = U({
63
+ setRemoteStreams: S,
64
+ getRemoteStreams: k(e)
65
+ }), _ = z(M);
66
+ a("answerIncomingCall", n);
67
+ const p = async () => e.answerToIncomingCall({
38
68
  mediaStream: s,
39
69
  extraHeaders: r,
40
- iceServers: a,
70
+ iceServers: o,
41
71
  contentHint: c,
42
- sendEncodings: i,
43
- ontrack: b
44
- }), p = () => {
45
- const { remoteCallerData: u } = e;
46
- return u.incomingNumber;
72
+ sendEncodings: N({
73
+ mediaStream: s,
74
+ simulcastEncodings: i,
75
+ sendEncodings: u
76
+ }),
77
+ ontrack: _
78
+ }), O = () => {
79
+ const { remoteCallerData: l } = e;
80
+ return l.incomingNumber;
47
81
  };
48
- let T = !1, y;
49
- const h = (o("subscribeEnterConference: onEnterConference", S), m ?? S ? e.onSession("enterRoom", (u) => {
50
- o("enterRoom", { _room: u, isSuccessProgressCall: T }), y = u, A(y) ? m && m() : S && S({ isSuccessProgressCall: T });
82
+ let y = !1, T;
83
+ const b = (a("subscribeEnterConference: onEnterConference", R), d ?? R ? e.onSession("enterRoom", (l) => {
84
+ a("enterRoom", { _room: l, isSuccessProgressCall: y }), T = l, A(T) ? d && d() : R && R({ isSuccessProgressCall: y });
51
85
  }) : () => {
52
- }), O = (u) => (o("onSuccess"), T = !0, M(), f && f({ isPurgatory: A(y) }), e.onceRaceSession(["ended", "failed"], () => {
53
- h(), E && E();
54
- }), u), v = (u) => {
55
- throw o("onFail"), g && g(), h(), u;
56
- }, B = () => {
57
- o("onFinish"), C && C();
86
+ }), v = (l) => (a("onSuccess"), y = !0, M(), f && f({ isPurgatory: A(T) }), e.onceRaceSession(["ended", "failed"], () => {
87
+ b(), h && h();
88
+ }), l), w = (l) => {
89
+ throw a("onFail"), m && m(), b(), l;
90
+ }, P = () => {
91
+ a("onFinish"), E && E();
58
92
  };
59
- if (o("onBeforeProgressCall"), d) {
60
- const u = p();
61
- d(u);
93
+ if (a("onBeforeProgressCall"), g) {
94
+ const l = O();
95
+ g(l);
62
96
  }
63
- return _().then(O).catch((u) => v(u)).finally(B);
64
- }, re = (e) => async (n) => {
97
+ return p().then(v).catch((l) => w(l)).finally(P);
98
+ }, Ce = (e) => async (n) => {
65
99
  const {
66
100
  conference: s,
67
101
  mediaStream: r,
68
- extraHeaders: a,
102
+ extraHeaders: o,
69
103
  iceServers: c,
70
104
  contentHint: i,
71
- sendEncodings: l,
72
- setRemoteStreams: d,
105
+ simulcastEncodings: u,
106
+ sendEncodings: S,
107
+ setRemoteStreams: g,
73
108
  onBeforeProgressCall: f,
74
- onSuccessProgressCall: m,
75
- onEnterPurgatory: S,
76
- onEnterConference: g,
77
- onFailProgressCall: C,
78
- onFinishProgressCall: E,
109
+ onSuccessProgressCall: d,
110
+ onEnterPurgatory: R,
111
+ onEnterConference: m,
112
+ onFailProgressCall: E,
113
+ onFinishProgressCall: h,
79
114
  onEndedCall: M
80
- } = n, b = F({
81
- setRemoteStreams: d,
82
- getRemoteStreams: D(e)
83
- }), _ = H(b);
84
- o("callToServer", n);
85
- const p = async () => (o("startCall"), e.call({
115
+ } = n, _ = U({
116
+ setRemoteStreams: g,
117
+ getRemoteStreams: k(e)
118
+ }), p = z(_);
119
+ a("callToServer", n);
120
+ const O = async () => (a("startCall"), e.call({
86
121
  mediaStream: r,
87
- extraHeaders: a,
122
+ extraHeaders: o,
88
123
  iceServers: c,
89
124
  contentHint: i,
90
- sendEncodings: l,
125
+ sendEncodings: N({
126
+ mediaStream: r,
127
+ simulcastEncodings: u,
128
+ sendEncodings: S
129
+ }),
91
130
  number: s,
92
- ontrack: _
131
+ ontrack: p
93
132
  }));
94
- let T = !1, y;
95
- const h = (o("subscribeEnterConference: onEnterConference", g), S ?? g ? e.onSession("enterRoom", ({ room: u }) => {
96
- o("enterRoom", { _room: u, isSuccessProgressCall: T }), y = u, A(y) ? S && S() : g && g({ isSuccessProgressCall: T });
133
+ let y = !1, T;
134
+ const b = (a("subscribeEnterConference: onEnterConference", m), R ?? m ? e.onSession("enterRoom", ({ room: l }) => {
135
+ a("enterRoom", { _room: l, isSuccessProgressCall: y }), T = l, A(T) ? R && R() : m && m({ isSuccessProgressCall: y });
97
136
  }) : () => {
98
- }), O = (u) => (o("onSuccess"), T = !0, b(), m && m({ isPurgatory: A(y) }), e.onceRaceSession(["ended", "failed"], () => {
99
- h(), M && M();
100
- }), u), v = (u) => {
101
- throw o("onFail"), C && C(), h(), u;
102
- }, B = () => {
103
- o("onFinish"), E && E();
137
+ }), v = (l) => (a("onSuccess"), y = !0, _(), d && d({ isPurgatory: A(T) }), e.onceRaceSession(["ended", "failed"], () => {
138
+ b(), M && M();
139
+ }), l), w = (l) => {
140
+ throw a("onFail"), E && E(), b(), l;
141
+ }, P = () => {
142
+ a("onFinish"), h && h();
104
143
  };
105
- return o("onBeforeProgressCall"), f && f(s), p().then(O).catch((u) => v(u)).finally(B);
144
+ return a("onBeforeProgressCall"), f && f(s), O().then(v).catch((l) => w(l)).finally(P);
106
145
  }, I = (e) => {
107
- if (!Q(e) && !Z(e))
146
+ if (!ne(e) && !te(e))
108
147
  throw e;
109
148
  return { isSuccessful: !1 };
110
- }, oe = (e) => async (n) => {
149
+ }, Re = (e) => async (n) => {
111
150
  const {
112
151
  userAgent: s,
113
152
  sipWebSocketServerURL: r,
114
- sipServerUrl: a,
153
+ sipServerUrl: o,
115
154
  remoteAddress: c,
116
155
  displayName: i,
117
- name: l,
118
- password: d,
119
- isRegisteredUser: f,
120
- isDisconnectOnFail: m
156
+ name: u,
157
+ password: S,
158
+ isRegisteredUser: g,
159
+ isDisconnectOnFail: f
121
160
  } = n;
122
- return o("connectToServer", n), e.connect({
161
+ return a("connectToServer", n), e.connect({
123
162
  userAgent: s,
124
163
  sipWebSocketServerURL: r,
125
- sipServerUrl: a,
164
+ sipServerUrl: o,
126
165
  remoteAddress: c,
127
166
  displayName: i,
128
- password: d,
129
- user: l,
130
- register: f
131
- }).then((S) => (o("connectToServer then"), { ua: S, isSuccessful: !0 })).catch(async (S) => (o("connectToServer catch: error", S), m === !0 ? e.disconnect().then(() => I(S)).catch(() => I(S)) : I(S)));
132
- }, ae = (e) => async () => (o("disconnectFromServer"), e.disconnect().then(() => (o("disconnectFromServer: then"), { isSuccessful: !0 })).catch((t) => (o("disconnectFromServer: catch", t), { isSuccessful: !1 }))), k = (e) => {
167
+ password: S,
168
+ user: u,
169
+ register: g
170
+ }).then((d) => (a("connectToServer then"), { ua: d, isSuccessful: !0 })).catch(async (d) => (a("connectToServer catch: error", d), f === !0 ? e.disconnect().then(() => I(d)).catch(() => I(d)) : I(d)));
171
+ }, Ee = (e) => async () => (a("disconnectFromServer"), e.disconnect().then(() => (a("disconnectFromServer: then"), { isSuccessful: !0 })).catch((t) => (a("disconnectFromServer: catch", t), { isSuccessful: !1 }))), L = (e) => {
133
172
  const { url: t, cause: n } = e;
134
173
  let s = t;
135
- return (n === x || n === $) && (s = `${e.message.to.uri.user}@${e.message.to.uri.host}`), s;
174
+ return (n === X || n === G) && (s = `${e.message.to.uri.user}@${e.message.to.uri.host}`), s;
136
175
  };
137
- var W = /* @__PURE__ */ ((e) => (e.CONNECT_SERVER_FAILED = "CONNECT_SERVER_FAILED", e.WRONG_USER_OR_PASSWORD = "WRONG_USER_OR_PASSWORD", e.BAD_MEDIA_ERROR = "BAD_MEDIA_ERROR", e.NOT_FOUND_ERROR = "NOT_FOUND_ERROR", e.WS_CONNECTION_FAILED = "WS_CONNECTION_FAILED", e.CONNECT_SERVER_FAILED_BY_LINK = "CONNECT_SERVER_FAILED_BY_LINK", e))(W || {});
138
- const ce = (e = new Error()) => {
176
+ var J = /* @__PURE__ */ ((e) => (e.CONNECT_SERVER_FAILED = "CONNECT_SERVER_FAILED", e.WRONG_USER_OR_PASSWORD = "WRONG_USER_OR_PASSWORD", e.BAD_MEDIA_ERROR = "BAD_MEDIA_ERROR", e.NOT_FOUND_ERROR = "NOT_FOUND_ERROR", e.WS_CONNECTION_FAILED = "WS_CONNECTION_FAILED", e.CONNECT_SERVER_FAILED_BY_LINK = "CONNECT_SERVER_FAILED_BY_LINK", e))(J || {});
177
+ const he = (e = new Error()) => {
139
178
  var r;
140
179
  const { cause: t, socket: n } = e;
141
180
  let s = "CONNECT_SERVER_FAILED";
@@ -144,257 +183,275 @@ const ce = (e = new Error()) => {
144
183
  s = "WRONG_USER_OR_PASSWORD";
145
184
  break;
146
185
  }
147
- case x: {
186
+ case X: {
148
187
  s = "BAD_MEDIA_ERROR";
149
188
  break;
150
189
  }
151
- case $: {
190
+ case G: {
152
191
  s = "NOT_FOUND_ERROR";
153
192
  break;
154
193
  }
155
194
  default:
156
- n && ((r = n == null ? void 0 : n._ws) == null ? void 0 : r.readyState) === 3 ? s = "WS_CONNECTION_FAILED" : k(e) && (s = "CONNECT_SERVER_FAILED_BY_LINK");
195
+ n && ((r = n == null ? void 0 : n._ws) == null ? void 0 : r.readyState) === 3 ? s = "WS_CONNECTION_FAILED" : L(e) && (s = "CONNECT_SERVER_FAILED_BY_LINK");
157
196
  }
158
197
  return s;
159
- }, ie = (e) => {
198
+ }, ye = (e) => {
160
199
  let t = "";
161
200
  try {
162
201
  t = JSON.stringify(e);
163
202
  } catch (n) {
164
- o("failed to stringify message", n);
203
+ a("failed to stringify message", n);
165
204
  }
166
205
  return t;
167
- }, ue = (e = new Error()) => {
168
- const { code: t, cause: n, message: s } = e, r = k(e), a = { code: "", cause: "", message: "" };
169
- return typeof s == "object" && s !== null ? a.message = ie(s) : s && (a.message = String(s)), r && (a.link = r), t && (a.code = t), n && (a.cause = n), a;
170
- }, le = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
206
+ }, Te = (e = new Error()) => {
207
+ const { code: t, cause: n, message: s } = e, r = L(e), o = { code: "", cause: "", message: "" };
208
+ return typeof s == "object" && s !== null ? o.message = ye(s) : s && (o.message = String(s)), r && (o.link = r), t && (o.code = t), n && (o.cause = n), o;
209
+ }, Me = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
171
210
  __proto__: null,
172
- EErrorTypes: W,
173
- getLinkError: k,
174
- getTypeFromError: ce,
175
- getValuesFromError: ue
176
- }, Symbol.toStringTag, { value: "Module" })), Se = ({
211
+ EErrorTypes: J,
212
+ getLinkError: L,
213
+ getTypeFromError: he,
214
+ getValuesFromError: Te
215
+ }, Symbol.toStringTag, { value: "Module" })), be = ({
177
216
  sessionId: e,
178
217
  remoteAddress: t,
179
218
  isMutedAudio: n,
180
219
  isMutedVideo: s,
181
220
  isRegistered: r,
182
- isPresentationCall: a
221
+ isPresentationCall: o
183
222
  }) => {
184
- const c = [], i = n ? "0" : "1", l = s ? "0" : "1";
185
- return c.push(`X-Vinteo-Mic-State: ${i}`, `X-Vinteo-MainCam-State: ${l}`), r || c.push("X-Vinteo-Purgatory-Call: yes"), e && c.push(`X-Vinteo-Session: ${e}`), a && c.push("X-Vinteo-Presentation-Call: yes"), t && c.push(`X-Vinteo-Remote: ${t}`), c;
186
- }, me = "[@*!|]", de = "_", fe = (e) => {
223
+ const c = [], i = n ? "0" : "1", u = s ? "0" : "1";
224
+ return c.push(`X-Vinteo-Mic-State: ${i}`, `X-Vinteo-MainCam-State: ${u}`), r || c.push("X-Vinteo-Purgatory-Call: yes"), e && c.push(`X-Vinteo-Session: ${e}`), o && c.push("X-Vinteo-Presentation-Call: yes"), t && c.push(`X-Vinteo-Remote: ${t}`), c;
225
+ }, _e = "[@*!|]", pe = "_", Oe = (e) => {
187
226
  let t = e;
188
- return t = t.replaceAll(new RegExp(me, "g"), de), t;
189
- }, Ce = ({
227
+ return t = t.replaceAll(new RegExp(_e, "g"), pe), t;
228
+ }, ve = ({
190
229
  appName: e,
191
230
  appVersion: t,
192
231
  browserName: n,
193
232
  browserVersion: s
194
233
  }) => {
195
- const a = `${fe(e)} ${t}`;
196
- return `ChromeNew - ${n ? `${n} ${s}, ${a}` : a}`;
197
- }, ge = ({
234
+ const o = `${Oe(e)} ${t}`;
235
+ return `ChromeNew - ${n ? `${n} ${s}, ${o}` : o}`;
236
+ }, Ae = ({
198
237
  isUnifiedSdpSemantic: e,
199
238
  appVersion: t,
200
239
  browserName: n,
201
240
  browserVersion: s,
202
241
  appName: r
203
- }) => e ? Ce({ appVersion: t, browserName: n, browserVersion: s, appName: r }) : "Chrome", Re = (e) => async () => {
242
+ }) => e ? ve({ appVersion: t, browserName: n, browserVersion: s, appName: r }) : "Chrome", Ne = (e) => async () => {
204
243
  if (e.isCallActive)
205
- return o("askPermissionToEnableCam"), e.askPermissionToEnableCam();
206
- }, Ee = (e) => (n) => (o("onMustStopPresentation"), e.onSession("mustStopPresentation", n)), Me = (e) => (n) => (o("onMoveToSpectators"), e.onSession("participant:move-request-to-spectators", n)), Te = (e) => (n) => (o("onUseLicense"), e.onSession("useLicense", n)), ye = (e) => async ({
244
+ return a("askPermissionToEnableCam"), e.askPermissionToEnableCam();
245
+ }, Be = (e) => (n) => (a("onMustStopPresentation"), e.onSession("mustStopPresentation", n)), we = (e) => (n) => (a("onMoveToSpectators"), e.onSession("participant:move-request-to-spectators", n)), Pe = (e) => (n) => (a("onUseLicense"), e.onSession("useLicense", n)), De = (e) => async ({
207
246
  isEnabledCam: n,
208
247
  isEnabledMic: s
209
248
  }) => {
210
249
  if (e.isCallActive)
211
- return o("sendMediaState"), e.sendMediaState({ cam: n, mic: s });
212
- }, he = (e) => async () => {
250
+ return a("sendMediaState"), e.sendMediaState({ cam: n, mic: s });
251
+ }, Ie = (e) => async () => {
213
252
  if (e.isCallActive)
214
- return o("sendRefusalToTurnOnCam"), e.sendRefusalToTurnOnCam().catch((n) => {
215
- o("sendRefusalToTurnOnCam: error", n);
253
+ return a("sendRefusalToTurnOnCam"), e.sendRefusalToTurnOnCam().catch((n) => {
254
+ a("sendRefusalToTurnOnCam: error", n);
216
255
  });
217
- }, be = (e) => async () => {
256
+ }, Fe = (e) => async () => {
218
257
  if (e.isCallActive)
219
- return o("sendRefusalToTurnOnMic"), e.sendRefusalToTurnOnMic().catch((n) => {
220
- o("sendRefusalToTurnOnMic: error", n);
258
+ return a("sendRefusalToTurnOnMic"), e.sendRefusalToTurnOnMic().catch((n) => {
259
+ a("sendRefusalToTurnOnMic: error", n);
221
260
  });
222
- }, _e = (e) => async ({
261
+ }, ke = (e) => async ({
223
262
  mediaStream: n,
224
263
  isP2P: s,
225
264
  maxBitrate: r,
226
- contentHint: a,
227
- sendEncodings: c
228
- }, i) => (o("startPresentation"), e.startPresentation(
265
+ contentHint: o,
266
+ simulcastEncodings: c,
267
+ sendEncodings: i
268
+ }, u) => (a("startPresentation"), e.startPresentation(
229
269
  n,
230
270
  {
231
271
  isP2P: s,
232
272
  maxBitrate: r,
233
- contentHint: a,
234
- sendEncodings: c
273
+ contentHint: o,
274
+ sendEncodings: N({
275
+ mediaStream: n,
276
+ simulcastEncodings: c,
277
+ sendEncodings: i
278
+ })
235
279
  },
236
- i
237
- )), pe = (e) => async ({ isP2P: n = !1 } = {}) => (o("stopShareSipConnector"), e.stopPresentation({
280
+ u
281
+ )), Ue = (e) => async ({ isP2P: n = !1 } = {}) => (a("stopShareSipConnector"), e.stopPresentation({
238
282
  isP2P: n
239
283
  }).catch((s) => {
240
- o(s);
241
- })), Oe = (e) => async ({
284
+ a(s);
285
+ })), Le = (e) => async ({
242
286
  mediaStream: n,
243
287
  isP2P: s,
244
288
  maxBitrate: r,
245
- contentHint: a,
246
- sendEncodings: c
247
- }) => (o("updatePresentation"), e.updatePresentation(n, {
289
+ contentHint: o,
290
+ simulcastEncodings: c,
291
+ sendEncodings: i
292
+ }) => (a("updatePresentation"), e.updatePresentation(n, {
248
293
  isP2P: s,
249
294
  maxBitrate: r,
250
- contentHint: a,
251
- sendEncodings: c
252
- })), ve = (e) => (t) => [...t].map((s) => async () => e(s)), Ae = async ({
295
+ contentHint: o,
296
+ sendEncodings: N({
297
+ mediaStream: n,
298
+ simulcastEncodings: c,
299
+ sendEncodings: i
300
+ })
301
+ })), Ve = (e) => (t) => [...t].map((s) => async () => e(s)), xe = async ({
253
302
  accumulatedKeys: e,
254
303
  sendKey: t,
255
304
  canRunTask: n
256
305
  }) => {
257
- const r = ve(t)(e);
258
- return ee(r, n);
259
- }, Ne = (e) => (n) => (o("onStartMainCam"), e.onSession("admin-start-main-cam", n)), Be = (e) => (n) => (o("onStartMic"), e.onSession("admin-start-mic", n)), Pe = (e) => (n) => (o("onStopMainCam"), e.onSession("admin-stop-main-cam", n)), Ie = (e) => (n) => (o("onStopMic"), e.onSession("admin-stop-mic", n)), we = ({ sipConnector: e }) => {
260
- const t = (C, E) => ({ isSyncForced: M = !1 }) => {
261
- if (M) {
262
- C();
306
+ const r = Ve(t)(e);
307
+ return se(r, n);
308
+ }, $e = (e) => (n) => (a("onStartMainCam"), e.onSession("admin-start-main-cam", n)), Xe = (e) => (n) => (a("onStartMic"), e.onSession("admin-start-mic", n)), Ge = (e) => (n) => (a("onStopMainCam"), e.onSession("admin-stop-main-cam", n)), He = (e) => (n) => (a("onStopMic"), e.onSession("admin-stop-mic", n)), We = ({ sipConnector: e }) => {
309
+ const t = (m, E) => ({ isSyncForced: h = !1 }) => {
310
+ if (h) {
311
+ m();
263
312
  return;
264
313
  }
265
314
  E();
266
- }, n = Ne(e), s = Pe(e), r = Be(e), a = Ie(e);
315
+ }, n = $e(e), s = Ge(e), r = Xe(e), o = He(e);
267
316
  let c = () => {
268
317
  }, i = () => {
269
- }, l = () => {
270
- }, d = () => {
318
+ }, u = () => {
319
+ }, S = () => {
271
320
  };
272
- const f = ({
273
- onStartMainCamForced: C,
321
+ const g = ({
322
+ onStartMainCamForced: m,
274
323
  onStartMainCamNotForced: E,
275
- onStopMainCamForced: M,
276
- onStopMainCamNotForced: b,
324
+ onStopMainCamForced: h,
325
+ onStopMainCamNotForced: M,
277
326
  onStartMicForced: _,
278
327
  onStartMicNotForced: p,
279
- onStopMicForced: T,
328
+ onStopMicForced: O,
280
329
  onStopMicNotForced: y
281
330
  }) => {
282
- const N = t(
283
- C,
331
+ const T = t(
332
+ m,
284
333
  E
285
334
  );
286
- c = n(N);
287
- const h = t(
288
- M,
289
- b
335
+ c = n(T);
336
+ const B = t(
337
+ h,
338
+ M
290
339
  );
291
- i = s(h);
292
- const O = t(_, p);
293
- l = r(O);
294
- const v = t(T, y);
295
- d = a(v);
296
- }, m = () => {
297
- c(), i(), l(), d();
340
+ i = s(B);
341
+ const b = t(_, p);
342
+ u = r(b);
343
+ const v = t(O, y);
344
+ S = o(v);
345
+ }, f = () => {
346
+ c(), i(), u(), S();
298
347
  };
299
348
  return {
300
- start: (C) => {
301
- f(C);
349
+ start: (m) => {
350
+ g(m);
302
351
  },
303
352
  stop: () => {
304
- m();
353
+ f();
305
354
  }
306
355
  };
307
- }, sn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
356
+ }, un = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
308
357
  __proto__: null,
309
- PURGATORY_CONFERENCE_NUMBER: X,
310
- createSyncMediaState: we,
311
- error: le,
312
- getExtraHeaders: Se,
313
- getUserAgent: ge,
358
+ PURGATORY_CONFERENCE_NUMBER: q,
359
+ createSyncMediaState: We,
360
+ error: Me,
361
+ getExtraHeaders: be,
362
+ getUserAgent: Ae,
314
363
  hasPurgatory: A,
315
- resolveAnswerIncomingCall: se,
316
- resolveAskPermissionToEnableCam: Re,
317
- resolveCallToServer: re,
318
- resolveConnectToServer: oe,
319
- resolveDisconnectFromServer: ae,
320
- resolveGetRemoteStreams: D,
321
- resolveOnMoveToSpectators: Me,
322
- resolveOnMustStopPresentation: Ee,
323
- resolveOnUseLicense: Te,
324
- resolveSendMediaState: ye,
325
- resolveSendRefusalToTurnOnCam: he,
326
- resolveSendRefusalToTurnOnMic: be,
327
- resolveStartPresentation: _e,
328
- resolveStopShareSipConnector: pe,
329
- resolveUpdatePresentation: Oe,
330
- resolveUpdateRemoteStreams: F,
331
- sendDTMFAccumulated: Ae
332
- }, Symbol.toStringTag, { value: "Module" })), De = (e) => [...e.keys()].map((t) => e.get(t)), Fe = (e, t) => De(e).find((n) => n.type === t), ke = async (e) => e.getStats().then((t) => {
333
- const n = Fe(t, "codec");
364
+ resolveAnswerIncomingCall: ge,
365
+ resolveAskPermissionToEnableCam: Ne,
366
+ resolveCallToServer: Ce,
367
+ resolveConnectToServer: Re,
368
+ resolveDisconnectFromServer: Ee,
369
+ resolveGetRemoteStreams: k,
370
+ resolveOnMoveToSpectators: we,
371
+ resolveOnMustStopPresentation: Be,
372
+ resolveOnUseLicense: Pe,
373
+ resolveSendMediaState: De,
374
+ resolveSendRefusalToTurnOnCam: Ie,
375
+ resolveSendRefusalToTurnOnMic: Fe,
376
+ resolveStartPresentation: ke,
377
+ resolveStopShareSipConnector: Ue,
378
+ resolveUpdatePresentation: Le,
379
+ resolveUpdateRemoteStreams: U,
380
+ sendDTMFAccumulated: xe
381
+ }, Symbol.toStringTag, { value: "Module" })), je = (e) => [...e.keys()].map((t) => e.get(t)), Ke = (e, t) => je(e).find((n) => n.type === t), Ye = async (e) => e.getStats().then((t) => {
382
+ const n = Ke(t, "codec");
334
383
  return n == null ? void 0 : n.mimeType;
335
- }), Ue = (e) => e.find((t) => {
384
+ }), qe = (e) => e.find((t) => {
336
385
  var n;
337
386
  return ((n = t == null ? void 0 : t.track) == null ? void 0 : n.kind) === "video";
338
- }), j = (e, t) => e !== void 0 && t !== void 0 && e.toLowerCase().includes(t.toLowerCase()), Le = 1e6, R = (e) => e * Le, G = R(0.06), Ve = R(4), xe = (e) => e <= 64 ? G : e <= 128 ? R(0.12) : e <= 256 ? R(0.25) : e <= 384 ? R(0.32) : e <= 426 ? R(0.38) : e <= 640 ? R(0.5) : e <= 848 ? R(0.7) : e <= 1280 ? R(1) : e <= 1920 ? R(2) : Ve, $e = "av1", Xe = (e) => j(e, $e), He = 0.6, K = (e, t) => Xe(t) ? e * He : e, We = (e) => K(G, e), Y = (e, t) => {
339
- const n = xe(e);
340
- return K(n, t);
341
- }, q = ne(), je = async () => q().catch((e) => {
342
- o("videoSendingBalancer: error", e);
343
- }), Ge = async (e) => (q.add(e), je()), U = async ({
387
+ }), Q = re(), ze = async () => Q().catch((e) => {
388
+ a("videoSendingBalancer: error", e);
389
+ }), Je = async (e) => (Q.add(e), ze()), V = async ({
344
390
  sender: e,
345
391
  scaleResolutionDownBy: t,
346
392
  maxBitrate: n,
347
393
  onSetParameters: s
348
- }) => Ge(async () => z(e, { scaleResolutionDownBy: t, maxBitrate: n }, s)), Ke = async ({ sender: e, codec: t }, n) => {
349
- const r = We(t);
350
- return U({
394
+ }) => Je(async () => Z(e, { scaleResolutionDownBy: t, maxBitrate: n }, s)), Qe = async ({ sender: e, codec: t }, n) => {
395
+ const r = de(t);
396
+ return V({
351
397
  sender: e,
352
398
  maxBitrate: r,
353
399
  onSetParameters: n,
354
400
  scaleResolutionDownBy: 200
355
401
  });
356
- }, w = async ({ sender: e, track: t, codec: n }, s) => {
357
- const c = t.getSettings().width, i = Y(c, n);
358
- return U({
402
+ }, F = async ({
403
+ sender: e,
404
+ videoTrack: t,
405
+ codec: n
406
+ }, s) => {
407
+ const c = t.getSettings().width, i = K(c, n);
408
+ return V({
359
409
  sender: e,
360
410
  maxBitrate: i,
361
411
  onSetParameters: s,
362
412
  scaleResolutionDownBy: 1
363
413
  });
364
- }, Ye = async ({
414
+ }, Ze = async ({
365
415
  sender: e,
366
- track: t,
416
+ videoTrack: t,
367
417
  resolution: n,
368
418
  codec: s
369
419
  }, r) => {
370
- const a = t.getSettings(), c = a.width, i = a.height, [l, d] = n.split("x"), f = c / Number(l), m = i / Number(d), g = Math.max(f, m, 1), C = Y(Number(l), s);
371
- return U({
420
+ const [o, c] = n.split("x"), { maxBitrate: i, scaleResolutionDownBy: u } = Y({
421
+ videoTrack: t,
422
+ codec: s,
423
+ targetSize: {
424
+ width: Number(o),
425
+ height: Number(c)
426
+ }
427
+ });
428
+ return V({
372
429
  sender: e,
373
- maxBitrate: C,
430
+ maxBitrate: i,
374
431
  onSetParameters: r,
375
- scaleResolutionDownBy: g
432
+ scaleResolutionDownBy: u
376
433
  });
377
- }, qe = async ({
434
+ }, en = async ({
378
435
  mainCam: e,
379
436
  resolutionMainCam: t,
380
437
  sender: n,
381
- track: s,
438
+ videoTrack: s,
382
439
  codec: r
383
- }, a) => {
440
+ }, o) => {
384
441
  switch (e) {
385
- case P.PAUSE_MAIN_CAM:
386
- return Ke({ sender: n, codec: r }, a);
387
- case P.RESUME_MAIN_CAM:
388
- return w({ sender: n, track: s, codec: r }, a);
389
- case P.MAX_MAIN_CAM_RESOLUTION:
390
- return t !== void 0 ? Ye(
391
- { sender: n, track: s, codec: r, resolution: t },
392
- a
393
- ) : w({ sender: n, track: s, codec: r }, a);
442
+ case D.PAUSE_MAIN_CAM:
443
+ return Qe({ sender: n, codec: r }, o);
444
+ case D.RESUME_MAIN_CAM:
445
+ return F({ sender: n, videoTrack: s, codec: r }, o);
446
+ case D.MAX_MAIN_CAM_RESOLUTION:
447
+ return t !== void 0 ? Ze(
448
+ { sender: n, videoTrack: s, codec: r, resolution: t },
449
+ o
450
+ ) : F({ sender: n, videoTrack: s, codec: r }, o);
394
451
  default:
395
- return w({ sender: n, track: s, codec: r }, a);
452
+ return F({ sender: n, videoTrack: s, codec: r }, o);
396
453
  }
397
- }, L = {
454
+ }, x = {
398
455
  isChanged: !1,
399
456
  parameters: {
400
457
  encodings: [{}],
@@ -403,54 +460,60 @@ const ce = (e = new Error()) => {
403
460
  headerExtensions: [],
404
461
  rtcp: {}
405
462
  }
406
- }, V = async ({
463
+ }, $ = async ({
407
464
  mainCam: e,
408
465
  resolutionMainCam: t,
409
466
  connection: n,
410
467
  onSetParameters: s,
411
468
  ignoreForCodec: r
412
469
  }) => {
413
- const a = n.getSenders(), c = Ue(a);
470
+ const o = n.getSenders(), c = qe(o);
414
471
  if (!(c != null && c.track))
415
- return L;
416
- const i = await ke(c);
417
- return j(i, r) ? L : qe(
418
- { mainCam: e, resolutionMainCam: t, sender: c, codec: i, track: c.track },
472
+ return x;
473
+ const i = await Ye(c);
474
+ return W(i, r) ? x : en(
475
+ {
476
+ mainCam: e,
477
+ resolutionMainCam: t,
478
+ sender: c,
479
+ codec: i,
480
+ videoTrack: c.track
481
+ },
419
482
  s
420
483
  );
421
- }, rn = (e, {
484
+ }, ln = (e, {
422
485
  ignoreForCodec: t,
423
486
  onSetParameters: n
424
487
  } = {}) => {
425
488
  const s = async () => {
426
- const { connection: l } = e;
427
- if (!l)
489
+ const { connection: u } = e;
490
+ if (!u)
428
491
  throw new Error("connection is not exist");
429
- return V({
430
- connection: l,
492
+ return $({
493
+ connection: u,
431
494
  onSetParameters: n,
432
495
  ignoreForCodec: t
433
496
  });
434
497
  };
435
498
  let r = s;
436
- const a = async (l) => (r = async () => {
437
- const { mainCam: d, resolutionMainCam: f } = l, { connection: m } = e;
438
- if (!m)
499
+ const o = async (u) => (r = async () => {
500
+ const { mainCam: S, resolutionMainCam: g } = u, { connection: f } = e;
501
+ if (!f)
439
502
  throw new Error("connection is not exist");
440
- return V({
441
- mainCam: d,
442
- resolutionMainCam: f,
443
- connection: m,
503
+ return $({
504
+ mainCam: S,
505
+ resolutionMainCam: g,
506
+ connection: f,
444
507
  onSetParameters: n,
445
508
  ignoreForCodec: t
446
509
  });
447
510
  }, r());
448
511
  return {
449
512
  subscribe: () => {
450
- e.onSession("main-cam-control", a);
513
+ e.onSession("main-cam-control", o);
451
514
  },
452
515
  unsubscribe: () => {
453
- e.offSession("main-cam-control", a);
516
+ e.offSession("main-cam-control", o);
454
517
  },
455
518
  balanceByTrack: s,
456
519
  resetMainCamControl() {
@@ -462,20 +525,20 @@ const ce = (e = new Error()) => {
462
525
  };
463
526
  };
464
527
  export {
465
- P as EEventsMainCAM,
466
- cn as EEventsMic,
467
- un as EEventsSyncMediaState,
468
- ln as EUseLicense,
469
- Sn as causes,
470
- mn as constants,
471
- Mn as debug,
472
- Je as default,
473
- dn as disableDebug,
474
- fn as enableDebug,
475
- Cn as eventNames,
476
- ke as getCodecFromSender,
477
- gn as hasCanceledCallError,
478
- rn as resolveVideoSendingBalancer,
479
- Rn as setParametersToSender,
480
- sn as tools
528
+ D as EEventsMainCAM,
529
+ mn as EEventsMic,
530
+ fn as EEventsSyncMediaState,
531
+ gn as EUseLicense,
532
+ Cn as causes,
533
+ Rn as constants,
534
+ _n as debug,
535
+ tn as default,
536
+ En as disableDebug,
537
+ hn as enableDebug,
538
+ yn as eventNames,
539
+ Ye as getCodecFromSender,
540
+ Tn as hasCanceledCallError,
541
+ ln as resolveVideoSendingBalancer,
542
+ Mn as setParametersToSender,
543
+ un as tools
481
544
  };
@@ -1,10 +1,11 @@
1
1
  import { default as SipConnector } from '../SipConnector';
2
- import { TContentHint } from '../types';
2
+ import { TContentHint, TSimulcastEncodings } from '../types';
3
3
  declare const resolveAnswerIncomingCall: (sipConnector: SipConnector) => (parameters: {
4
4
  mediaStream: MediaStream;
5
5
  extraHeaders?: string[] | undefined;
6
6
  iceServers?: RTCIceServer[];
7
7
  contentHint?: TContentHint;
8
+ simulcastEncodings?: TSimulcastEncodings;
8
9
  sendEncodings?: RTCRtpEncodingParameters[];
9
10
  setRemoteStreams: (streams: MediaStream[]) => void;
10
11
  onBeforeProgressCall?: (conference?: string) => void;
@@ -1,11 +1,12 @@
1
1
  import { default as SipConnector } from '../SipConnector';
2
- import { TContentHint } from '../types';
2
+ import { TContentHint, TSimulcastEncodings } from '../types';
3
3
  declare const resolveCallToServer: (sipConnector: SipConnector) => (parameters: {
4
4
  conference: string;
5
5
  mediaStream: MediaStream;
6
6
  extraHeaders?: string[] | undefined;
7
7
  iceServers?: RTCIceServer[];
8
8
  contentHint?: TContentHint;
9
+ simulcastEncodings?: TSimulcastEncodings;
9
10
  sendEncodings?: RTCRtpEncodingParameters[];
10
11
  setRemoteStreams: (streams: MediaStream[]) => void;
11
12
  onBeforeProgressCall?: (conference: string) => void;
@@ -0,0 +1,7 @@
1
+ import { TSimulcastEncodings } from '../types';
2
+ declare const generateSimulcastEncodings: ({ mediaStream, simulcastEncodings, sendEncodings, }: {
3
+ mediaStream: MediaStream;
4
+ simulcastEncodings?: TSimulcastEncodings;
5
+ sendEncodings?: RTCRtpEncodingParameters[];
6
+ }) => RTCRtpEncodingParameters[] | undefined;
7
+ export default generateSimulcastEncodings;
@@ -1,10 +1,11 @@
1
1
  import { default as SipConnector } from '../SipConnector';
2
- import { TContentHint } from '../types';
3
- declare const resolveStartPresentation: (sipConnector: SipConnector) => ({ mediaStream, isP2P, maxBitrate, contentHint, sendEncodings, }: {
2
+ import { TContentHint, TSimulcastEncodings } from '../types';
3
+ declare const resolveStartPresentation: (sipConnector: SipConnector) => ({ mediaStream, isP2P, maxBitrate, contentHint, simulcastEncodings, sendEncodings, }: {
4
4
  mediaStream: MediaStream;
5
5
  isP2P: boolean;
6
6
  maxBitrate?: number;
7
7
  contentHint?: TContentHint;
8
+ simulcastEncodings?: TSimulcastEncodings;
8
9
  sendEncodings?: RTCRtpEncodingParameters[];
9
10
  }, options?: {
10
11
  callLimit: number;
@@ -1,10 +1,11 @@
1
1
  import { default as SipConnector } from '../SipConnector';
2
- import { TContentHint } from '../types';
3
- declare const resolveUpdatePresentation: (sipConnector: SipConnector) => ({ mediaStream, isP2P, maxBitrate, contentHint, sendEncodings, }: {
2
+ import { TContentHint, TSimulcastEncodings } from '../types';
3
+ declare const resolveUpdatePresentation: (sipConnector: SipConnector) => ({ mediaStream, isP2P, maxBitrate, contentHint, simulcastEncodings, sendEncodings, }: {
4
4
  mediaStream: MediaStream;
5
5
  isP2P: boolean;
6
6
  maxBitrate?: number;
7
7
  contentHint?: TContentHint;
8
+ simulcastEncodings?: TSimulcastEncodings;
8
9
  sendEncodings?: RTCRtpEncodingParameters[];
9
10
  }) => Promise<MediaStream | void>;
10
11
  export default resolveUpdatePresentation;
package/dist/types.d.ts CHANGED
@@ -49,3 +49,8 @@ export type TParametersCreateUaConfiguration = {
49
49
  export type TOnAddedTransceiver = (transceiver: RTCRtpTransceiver, track: MediaStreamTrack, stream: MediaStream) => Promise<void>;
50
50
  export type TContentHint = 'motion' | 'detail' | 'text' | 'none';
51
51
  export type TRtpSendParameters = Partial<Omit<RTCRtpSendParameters, 'transactionId'>>;
52
+ export type TSize = {
53
+ width: number;
54
+ height: number;
55
+ };
56
+ export type TSimulcastEncodings = TSize[];
@@ -0,0 +1,2 @@
1
+ declare const findVideoTrack: (stream: MediaStream) => MediaStreamVideoTrack | undefined;
2
+ export default findVideoTrack;
@@ -1,10 +1,10 @@
1
1
  import { EEventsMainCAM } from '../types';
2
2
  import { TOnSetParameters, TResult } from './setEncodingsToSender';
3
- declare const processSender: ({ mainCam, resolutionMainCam, sender, track, codec, }: {
3
+ declare const processSender: ({ mainCam, resolutionMainCam, sender, videoTrack, codec, }: {
4
4
  mainCam?: EEventsMainCAM;
5
5
  resolutionMainCam?: string;
6
6
  sender: RTCRtpSender;
7
- track: MediaStreamTrack;
7
+ videoTrack: MediaStreamVideoTrack;
8
8
  codec?: string;
9
9
  }, onSetParameters?: TOnSetParameters) => Promise<TResult>;
10
10
  export default processSender;
@@ -0,0 +1,10 @@
1
+ import { TSize } from '../types';
2
+ declare const scaleResolutionAndBitrate: ({ videoTrack, targetSize, codec, }: {
3
+ videoTrack: MediaStreamVideoTrack;
4
+ targetSize: TSize;
5
+ codec?: string;
6
+ }) => {
7
+ scaleResolutionDownBy: number;
8
+ maxBitrate: number;
9
+ };
10
+ export default scaleResolutionAndBitrate;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sip-connector",
3
- "version": "11.0.0",
3
+ "version": "11.1.0",
4
4
  "description": "Module for connect to Vinteo server",
5
5
  "keywords": [
6
6
  "webrtc",