sip-connector 7.0.4 → 7.0.5

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-DxGNVRHG.cjs"),j=require("ts-debounce"),H=require("@krivega/cancelable-promise"),Y=require("sequent-promises"),z=require("stack-promises"),J=require("debug"),L="purgatory",N=e=>e===L,P=e=>()=>(r.logger("getRemoteStreams"),e.getRemoteStreams()),Q=({kind:e,readyState:t})=>e==="video"&&t==="live",V=e=>({track:t})=>{Q(t)&&e()},D=({getRemoteStreams:e,setRemoteStreams:t})=>j.debounce(()=>{const n=e();r.logger("remoteStreams",n),n&&t(n)},200),Z=e=>async n=>{const{mediaStream:s,extraHeaders:o,iceServers:c,degradationPreference:a,setRemoteStreams:l,onBeforeProgressCall:u,onSuccessProgressCall:d,onEnterPurgatory:m,onEnterConference:S,onFailProgressCall:C,onFinishProgressCall:g,onEndedCall:f}=n,M=D({setRemoteStreams:l,getRemoteStreams:P(e)}),_=V(M);r.logger("answerIncomingCall",n);const y=async()=>e.answerToIncomingCall({mediaStream:s,extraHeaders:o,iceServers:c,degradationPreference:a,ontrack:_}),v=()=>{const{remoteCallerData:i}=e;return i.incomingNumber};let R=!1,T;const b=(r.logger("subscribeEnterConference: onEnterConference",S),m??S?e.onSession("enterRoom",i=>{r.logger("enterRoom",{_room:i,isSuccessProgressCall:R}),T=i,N(T)?m&&m():S&&S({isSuccessProgressCall:R})}):()=>{}),h=i=>(r.logger("onSuccess"),R=!0,M(),d&&d({isPurgatory:N(T)}),e.onceRaceSession(["ended","failed"],()=>{b(),f&&f()}),i),O=i=>{throw r.logger("onFail"),C&&C(),b(),i},A=()=>{r.logger("onFinish"),g&&g()};if(r.logger("onBeforeProgressCall"),u){const i=v();u(i)}return y().then(h).catch(i=>O(i)).finally(A)},ee=e=>async n=>{const{conference:s,mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:l,setRemoteStreams:u,onBeforeProgressCall:d,onSuccessProgressCall:m,onEnterPurgatory:S,onEnterConference:C,onFailProgressCall:g,onFinishProgressCall:f,onEndedCall:M}=n,_=D({setRemoteStreams:u,getRemoteStreams:P(e)}),y=V(_);r.logger("callToServer",n);const v=async()=>(r.logger("startCall"),e.call({mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:l,number:s,ontrack:y}));let R=!1,T;const b=(r.logger("subscribeEnterConference: onEnterConference",C),S??C?e.onSession("enterRoom",({room:i})=>{r.logger("enterRoom",{_room:i,isSuccessProgressCall:R}),T=i,N(T)?S&&S():C&&C({isSuccessProgressCall:R})}):()=>{}),h=i=>(r.logger("onSuccess"),R=!0,_(),m&&m({isPurgatory:N(T)}),e.onceRaceSession(["ended","failed"],()=>{b(),M&&M()}),i),O=i=>{throw r.logger("onFail"),g&&g(),b(),i},A=()=>{r.logger("onFinish"),f&&f()};return r.logger("onBeforeProgressCall"),d&&d(s),v().then(h).catch(i=>O(i)).finally(A)},B=e=>{if(!H.isCanceledError(e))throw e;return{isSuccessful:!1}},ne=e=>async n=>{const{userAgent:s,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:l,name:u,password:d,isRegisteredUser:m,sdpSemantics:S,isDisconnectOnFail:C}=n;return r.logger("connectToServer",n),e.connect({userAgent:s,sdpSemantics:S,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:l,password:d,user:u,register:m}).then(g=>(r.logger("connectToServer then"),{ua:g,isSuccessful:!0})).catch(async g=>(r.logger("connectToServer catch: error",g),C===!0?e.disconnect().then(()=>B(g)).catch(()=>B(g)):B(g)))},te=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 re=(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},se=(e=new Error)=>{const{code:t,cause:n,message:s}=e,o=w(e),c={};return s&&(c.message=s),o&&(c.link=o),t&&(c.code=t),n&&(c.cause=n),c},oe=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:$,getLinkError:w,getTypeFromError:re,getValuesFromError:se},Symbol.toStringTag,{value:"Module"})),ce=({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},ae=({appName:e,appVersion:t,browserName:n,browserVersion:s})=>{const o=`${e} ${t}`;return`ChromeNew - ${n?`${n} ${s}, ${o}`:o}`},ie=({isUnifiedSdpSemantic:e,appVersion:t,browserName:n,browserVersion:s,appName:o})=>e?ae({appVersion:t,browserName:n,browserVersion:s,appName:o}):"Chrome",ue=e=>async()=>{if(e.isCallActive)return r.logger("askPermissionToEnableCam"),e.askPermissionToEnableCam()},le=e=>n=>(r.logger("onMustStopPresentation"),e.onSession("mustStopPresentation",n)),Se=e=>n=>(r.logger("onMoveToSpectators"),e.onSession("participant:move-request-to-spectators",n)),ge=e=>n=>(r.logger("onUseLicense"),e.onSession("useLicense",n)),de=e=>async({isEnabledCam:n,isEnabledMic:s})=>{if(e.isCallActive)return r.logger("sendMediaState"),e.sendMediaState({cam:n,mic:s})},me=e=>async()=>{if(e.isCallActive)return r.logger("sendRefusalToTurnOnCam"),e.sendRefusalToTurnOnCam().catch(n=>{r.logger("sendRefusalToTurnOnCam: error",n)})},fe=e=>async()=>{if(e.isCallActive)return r.logger("sendRefusalToTurnOnMic"),e.sendRefusalToTurnOnMic().catch(n=>{r.logger("sendRefusalToTurnOnMic: error",n)})},Ce=1e6,Ee=({maxBitrate:e=Ce,sipConnector:t})=>async({mediaStream:s,isP2P:o=!1})=>(r.logger("startPresentation"),t.startPresentation(s,{isP2P:o,maxBitrate:e})),Me=({sipConnector:e})=>async({isP2P:n=!1}={})=>(r.logger("stopShareSipConnector"),e.stopPresentation({isP2P:n}).catch(s=>{r.logger(s)})),Re=1e6,Te=({sipConnector:e,maxBitrate:t=Re})=>async({mediaStream:s,isP2P:o=!1})=>(r.logger("updatePresentation"),e.updatePresentation(s,{isP2P:o,maxBitrate:t})),_e=e=>t=>[...t].map(s=>async()=>e(s)),be=async({accumulatedKeys:e,sendKey:t,canRunTask:n})=>{const o=_e(t)(e);return Y.sequentPromises(o,n)},ye=e=>n=>(r.logger("onStartMainCam"),e.onSession("admin-start-main-cam",n)),ve=e=>n=>(r.logger("onStartMic"),e.onSession("admin-start-mic",n)),he=e=>n=>(r.logger("onStopMainCam"),e.onSession("admin-stop-main-cam",n)),Oe=e=>n=>(r.logger("onStopMic"),e.onSession("admin-stop-mic",n)),Ae=({sipConnector:e})=>{const t=(f,M)=>({isSyncForced:_=!1})=>{if(_){f();return}M()},n=ye(e),s=he(e),o=ve(e),c=Oe(e);let a=()=>{},l=()=>{},u=()=>{},d=()=>{};const m=({onStartMainCamForced:f,onStartMainCamNotForced:M,onStopMainCamForced:_,onStopMainCamNotForced:y,onStartMicForced:v,onStartMicNotForced:R,onStopMicForced:T,onStopMicNotForced:p})=>{const b=t(f,M);a=n(b);const h=t(_,y);l=s(h);const O=t(v,R);u=o(O);const A=t(T,p);d=c(A)},S=()=>{a(),l(),u(),d()};return{start:f=>{m(f)},stop:()=>{S()}}},Ne=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:L,createSyncMediaState:Ae,error:oe,getExtraHeaders:ce,getUserAgent:ie,hasPurgatory:N,resolveAnswerIncomingCall:Z,resolveAskPermissionToEnableCam:ue,resolveCallToServer:ee,resolveConnectToServer:ne,resolveDisconnectFromServer:te,resolveGetRemoteStreams:P,resolveOnMoveToSpectators:Se,resolveOnMustStopPresentation:le,resolveOnUseLicense:ge,resolveSendMediaState:de,resolveSendRefusalToTurnOnCam:me,resolveSendRefusalToTurnOnMic:fe,resolveStartPresentation:Ee,resolveStopShareSipConnector:Me,resolveUpdatePresentation:Te,resolveUpdateRemoteStreams:D,sendDTMFAccumulated:be},Symbol.toStringTag,{value:"Module"})),pe=e=>[...e.keys()].map(t=>e.get(t)),Be=(e,t)=>pe(e).find(n=>n.type===t),x=async e=>e.getStats().then(t=>{const n=Be(t,"codec");return n==null?void 0:n.mimeType}),Ie=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()),Pe=1e6,E=e=>e*Pe,G=E(.06),De=E(4),we=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):De,Fe="av1",ke=e=>q(e,Fe),Ue=.6,X=(e,t)=>ke(t)?e*Ue:e,Le=e=>X(G,e),K=(e,t)=>{const n=we(e);return X(n,t)},W=z(),Ve=async()=>W().catch(e=>{r.logger("videoSendingBalancer: error",e)}),$e=async e=>(W.add(e),Ve()),F=async({sender:e,scaleResolutionDownBy:t,maxBitrate:n,onSetParameters:s})=>$e(async()=>r.setEncodingsToSender(e,{scaleResolutionDownBy:t,maxBitrate:n},s)),xe=async({sender:e,codec:t},n)=>{const o=Le(t);return F({sender:e,maxBitrate:o,onSetParameters:n,scaleResolutionDownBy:200})},I=async({sender:e,track:t,codec:n},s)=>{const a=t.getSettings().width,l=K(a,n);return F({sender:e,maxBitrate:l,onSetParameters:s,scaleResolutionDownBy:1})},qe=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),S=l/Number(d),g=Math.max(m,S,1),f=K(Number(u),s);return F({sender:e,maxBitrate:f,onSetParameters:o,scaleResolutionDownBy:g})},Ge=async({mainCam:e,resolutionMainCam:t,sender:n,track:s,codec:o},c)=>{switch(e){case r.EEventsMainCAM.PAUSE_MAIN_CAM:return xe({sender:n,codec:o},c);case r.EEventsMainCAM.RESUME_MAIN_CAM:return I({sender:n,track:s,codec:o},c);case r.EEventsMainCAM.MAX_MAIN_CAM_RESOLUTION:return t!==void 0?qe({sender:n,track:s,codec:o,resolution:t},c):I({sender:n,track:s,codec:o},c);default:return I({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=Ie(c);if(!(a!=null&&a.track))return k;const l=await x(a);return q(l,o)?k:Ge({mainCam:e,resolutionMainCam:t,sender:a,codec:l,track:a.track},s)},Xe=(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:S}=e;if(!S)throw new Error("connection is not exist");return U({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.debug=J;exports.getCodecFromSender=x;exports.resolveVideoSendingBalancer=Xe;exports.tools=Ne;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("./SipConnector-DxGNVRHG.cjs"),j=require("ts-debounce"),H=require("@krivega/cancelable-promise"),Y=require("sequent-promises"),z=require("stack-promises"),J=require("debug"),L="purgatory",N=e=>e===L,I=e=>()=>(r.logger("getRemoteStreams"),e.getRemoteStreams()),Q=({kind:e,readyState:t})=>e==="video"&&t==="live",V=e=>({track:t})=>{Q(t)&&e()},D=({getRemoteStreams:e,setRemoteStreams:t})=>j.debounce(()=>{const n=e();r.logger("remoteStreams",n),n&&t(n)},200),Z=e=>async n=>{const{mediaStream:s,extraHeaders:o,iceServers:c,degradationPreference:a,setRemoteStreams:l,onBeforeProgressCall:u,onSuccessProgressCall:d,onEnterPurgatory:m,onEnterConference:S,onFailProgressCall:C,onFinishProgressCall:g,onEndedCall:f}=n,M=D({setRemoteStreams:l,getRemoteStreams:I(e)}),_=V(M);r.logger("answerIncomingCall",n);const y=async()=>e.answerToIncomingCall({mediaStream:s,extraHeaders:o,iceServers:c,degradationPreference:a,ontrack:_}),v=()=>{const{remoteCallerData:i}=e;return i.incomingNumber};let R=!1,T;const b=(r.logger("subscribeEnterConference: onEnterConference",S),m??S?e.onSession("enterRoom",i=>{r.logger("enterRoom",{_room:i,isSuccessProgressCall:R}),T=i,N(T)?m&&m():S&&S({isSuccessProgressCall:R})}):()=>{}),h=i=>(r.logger("onSuccess"),R=!0,M(),d&&d({isPurgatory:N(T)}),e.onceRaceSession(["ended","failed"],()=>{b(),f&&f()}),i),O=i=>{throw r.logger("onFail"),C&&C(),b(),i},A=()=>{r.logger("onFinish"),g&&g()};if(r.logger("onBeforeProgressCall"),u){const i=v();u(i)}return y().then(h).catch(i=>O(i)).finally(A)},ee=e=>async n=>{const{conference:s,mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:l,setRemoteStreams:u,onBeforeProgressCall:d,onSuccessProgressCall:m,onEnterPurgatory:S,onEnterConference:C,onFailProgressCall:g,onFinishProgressCall:f,onEndedCall:M}=n,_=D({setRemoteStreams:u,getRemoteStreams:I(e)}),y=V(_);r.logger("callToServer",n);const v=async()=>(r.logger("startCall"),e.call({mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:l,number:s,ontrack:y}));let R=!1,T;const b=(r.logger("subscribeEnterConference: onEnterConference",C),S??C?e.onSession("enterRoom",({room:i})=>{r.logger("enterRoom",{_room:i,isSuccessProgressCall:R}),T=i,N(T)?S&&S():C&&C({isSuccessProgressCall:R})}):()=>{}),h=i=>(r.logger("onSuccess"),R=!0,_(),m&&m({isPurgatory:N(T)}),e.onceRaceSession(["ended","failed"],()=>{b(),M&&M()}),i),O=i=>{throw r.logger("onFail"),g&&g(),b(),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))throw e;return{isSuccessful:!1}},ne=e=>async n=>{const{userAgent:s,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:l,name:u,password:d,isRegisteredUser:m,sdpSemantics:S,isDisconnectOnFail:C}=n;return r.logger("connectToServer",n),e.connect({userAgent:s,sdpSemantics:S,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:l,password:d,user:u,register:m}).then(g=>(r.logger("connectToServer then"),{ua:g,isSuccessful:!0})).catch(async g=>(r.logger("connectToServer catch: error",g),C===!0?e.disconnect().then(()=>P(g)).catch(()=>P(g)):P(g)))},te=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 re=(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},se=(e=new Error)=>{const{code:t,cause:n,message:s}=e,o=w(e),c={};return s&&(c.message=s),o&&(c.link=o),t&&(c.code=t),n&&(c.cause=n),c},oe=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:$,getLinkError:w,getTypeFromError:re,getValuesFromError:se},Symbol.toStringTag,{value:"Module"})),ce=({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},ae=({appName:e,appVersion:t,browserName:n,browserVersion:s})=>{const o=`${e} ${t}`;return`ChromeNew - ${n?`${n} ${s}, ${o}`:o}`},ie=({isUnifiedSdpSemantic:e,appVersion:t,browserName:n,browserVersion:s,appName:o})=>e?ae({appVersion:t,browserName:n,browserVersion:s,appName:o}):"Chrome",ue=e=>async()=>{if(e.isCallActive)return r.logger("askPermissionToEnableCam"),e.askPermissionToEnableCam()},le=e=>n=>(r.logger("onMustStopPresentation"),e.onSession("mustStopPresentation",n)),Se=e=>n=>(r.logger("onMoveToSpectators"),e.onSession("participant:move-request-to-spectators",n)),ge=e=>n=>(r.logger("onUseLicense"),e.onSession("useLicense",n)),de=e=>async({isEnabledCam:n,isEnabledMic:s})=>{if(e.isCallActive)return r.logger("sendMediaState"),e.sendMediaState({cam:n,mic:s})},me=e=>async()=>{if(e.isCallActive)return r.logger("sendRefusalToTurnOnCam"),e.sendRefusalToTurnOnCam().catch(n=>{r.logger("sendRefusalToTurnOnCam: error",n)})},fe=e=>async()=>{if(e.isCallActive)return r.logger("sendRefusalToTurnOnMic"),e.sendRefusalToTurnOnMic().catch(n=>{r.logger("sendRefusalToTurnOnMic: error",n)})},Ce=1e6,Ee=({maxBitrate:e=Ce,sipConnector:t})=>async({mediaStream:s,isP2P:o=!1})=>(r.logger("startPresentation"),t.startPresentation(s,{isP2P:o,maxBitrate:e})),Me=({sipConnector:e})=>async({isP2P:n=!1}={})=>(r.logger("stopShareSipConnector"),e.stopPresentation({isP2P:n}).catch(s=>{r.logger(s)})),Re=1e6,Te=({sipConnector:e,maxBitrate:t=Re})=>async({mediaStream:s,isP2P:o=!1})=>(r.logger("updatePresentation"),e.updatePresentation(s,{isP2P:o,maxBitrate:t})),_e=e=>t=>[...t].map(s=>async()=>e(s)),be=async({accumulatedKeys:e,sendKey:t,canRunTask:n})=>{const o=_e(t)(e);return Y.sequentPromises(o,n)},ye=e=>n=>(r.logger("onStartMainCam"),e.onSession("admin-start-main-cam",n)),ve=e=>n=>(r.logger("onStartMic"),e.onSession("admin-start-mic",n)),he=e=>n=>(r.logger("onStopMainCam"),e.onSession("admin-stop-main-cam",n)),Oe=e=>n=>(r.logger("onStopMic"),e.onSession("admin-stop-mic",n)),Ae=({sipConnector:e})=>{const t=(f,M)=>({isSyncForced:_=!1})=>{if(_){f();return}M()},n=ye(e),s=he(e),o=ve(e),c=Oe(e);let a=()=>{},l=()=>{},u=()=>{},d=()=>{};const m=({onStartMainCamForced:f,onStartMainCamNotForced:M,onStopMainCamForced:_,onStopMainCamNotForced:y,onStartMicForced:v,onStartMicNotForced:R,onStopMicForced:T,onStopMicNotForced:p})=>{const b=t(f,M);a=n(b);const h=t(_,y);l=s(h);const O=t(v,R);u=o(O);const A=t(T,p);d=c(A)},S=()=>{a(),l(),u(),d()};return{start:f=>{m(f)},stop:()=>{S()}}},Ne=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:L,createSyncMediaState:Ae,error:oe,getExtraHeaders:ce,getUserAgent:ie,hasPurgatory:N,resolveAnswerIncomingCall:Z,resolveAskPermissionToEnableCam:ue,resolveCallToServer:ee,resolveConnectToServer:ne,resolveDisconnectFromServer:te,resolveGetRemoteStreams:I,resolveOnMoveToSpectators:Se,resolveOnMustStopPresentation:le,resolveOnUseLicense:ge,resolveSendMediaState:de,resolveSendRefusalToTurnOnCam:me,resolveSendRefusalToTurnOnMic:fe,resolveStartPresentation:Ee,resolveStopShareSipConnector:Me,resolveUpdatePresentation:Te,resolveUpdateRemoteStreams:D,sendDTMFAccumulated:be},Symbol.toStringTag,{value:"Module"})),pe=e=>[...e.keys()].map(t=>e.get(t)),Pe=(e,t)=>pe(e).find(n=>n.type===t),x=async e=>e.getStats().then(t=>{const n=Pe(t,"codec");return n==null?void 0:n.mimeType}),Be=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()),Ie=1e6,E=e=>e*Ie,G=E(.06),De=E(4),we=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):De,Fe="av1",ke=e=>q(e,Fe),Ue=.6,X=(e,t)=>ke(t)?e*Ue:e,Le=e=>X(G,e),K=(e,t)=>{const n=we(e);return X(n,t)},W=z.createStackPromises(),Ve=async()=>W().catch(e=>{r.logger("videoSendingBalancer: error",e)}),$e=async e=>(W.add(e),Ve()),F=async({sender:e,scaleResolutionDownBy:t,maxBitrate:n,onSetParameters:s})=>$e(async()=>r.setEncodingsToSender(e,{scaleResolutionDownBy:t,maxBitrate:n},s)),xe=async({sender:e,codec:t},n)=>{const o=Le(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=K(a,n);return F({sender:e,maxBitrate:l,onSetParameters:s,scaleResolutionDownBy:1})},qe=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),S=l/Number(d),g=Math.max(m,S,1),f=K(Number(u),s);return F({sender:e,maxBitrate:f,onSetParameters:o,scaleResolutionDownBy:g})},Ge=async({mainCam:e,resolutionMainCam:t,sender:n,track:s,codec:o},c)=>{switch(e){case r.EEventsMainCAM.PAUSE_MAIN_CAM:return xe({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?qe({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=Be(c);if(!(a!=null&&a.track))return k;const l=await x(a);return q(l,o)?k:Ge({mainCam:e,resolutionMainCam:t,sender:a,codec:l,track:a.track},s)},Xe=(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:S}=e;if(!S)throw new Error("connection is not exist");return U({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.debug=J;exports.getCodecFromSender=x;exports.resolveVideoSendingBalancer=Xe;exports.tools=Ne;
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import { f as tn, g as rn, i as sn, c as on, a as an, d as cn, b as un, e as ln,
3
3
  import { debounce as z } from "ts-debounce";
4
4
  import { isCanceledError as J } from "@krivega/cancelable-promise";
5
5
  import { sequentPromises as Q } from "sequent-promises";
6
- import Z from "stack-promises";
6
+ import { createStackPromises as Z } from "stack-promises";
7
7
  import { default as dn } from "debug";
8
8
  const x = "purgatory", N = (e) => e === x, D = (e) => () => (o("getRemoteStreams"), e.getRemoteStreams()), ee = ({ kind: e, readyState: t }) => e === "video" && t === "live", G = (e) => ({ track: t }) => {
9
9
  ee(t) && e();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sip-connector",
3
- "version": "7.0.4",
3
+ "version": "7.0.5",
4
4
  "description": "Module for connect to Vinteo server",
5
5
  "keywords": [
6
6
  "webrtc",
@@ -67,7 +67,7 @@
67
67
  "debug": "^4.3.4",
68
68
  "events-constructor": "^1.2.2",
69
69
  "sequent-promises": "^2.0.0",
70
- "stack-promises": "^1.0.2",
70
+ "stack-promises": "^2.0.1",
71
71
  "ts-debounce": "^4.0.0",
72
72
  "webrtc-mock": "^1.0.2"
73
73
  },
@@ -113,7 +113,7 @@
113
113
  "debug": "^4.3.4",
114
114
  "events-constructor": "^1.2.2",
115
115
  "sequent-promises": "^2.0.0",
116
- "stack-promises": "^1.0.2",
116
+ "stack-promises": "^2.0.1",
117
117
  "ts-debounce": "^4.0.0",
118
118
  "webrtc-mock": "^1.0.2"
119
119
  },