sip-connector 7.0.9 → 7.0.10

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