sip-connector 14.0.1-0 → 14.1.0-alpha.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/SipConnector-CK3GgjXE.js +2492 -0
- package/dist/SipConnector-CwI8aFEA.cjs +1 -0
- package/dist/doMock.cjs +1 -1
- package/dist/doMock.js +248 -217
- package/dist/index.cjs +1 -1
- package/dist/index.js +529 -436
- package/dist/src/ApiManager/@ApiManager.d.ts +58 -0
- package/dist/src/ApiManager/constants.d.ts +71 -0
- package/dist/src/ApiManager/eventNames.d.ts +33 -0
- package/dist/src/ApiManager/index.d.ts +2 -0
- package/dist/src/ApiManager/types.d.ts +99 -0
- package/dist/src/CallManager/@CallManager.d.ts +26 -0
- package/dist/src/CallManager/AbstractCallStrategy.d.ts +47 -0
- package/dist/src/CallManager/MCUCallStrategy.d.ts +30 -0
- package/dist/src/CallManager/RemoteStreamsManager.d.ts +8 -0
- package/dist/src/CallManager/causes.d.ts +12 -0
- package/dist/src/CallManager/eventNames.d.ts +45 -0
- package/dist/src/CallManager/hasCanceledCallError.d.ts +2 -0
- package/dist/src/CallManager/index.d.ts +5 -0
- package/dist/src/CallManager/types.d.ts +59 -0
- package/dist/src/ConnectionManager/@ConnectionManager.d.ts +47 -0
- package/dist/src/ConnectionManager/ConfigurationManager.d.ts +60 -0
- package/dist/src/ConnectionManager/ConnectionFlow.d.ts +83 -0
- package/dist/src/ConnectionManager/ConnectionStateMachine.d.ts +61 -0
- package/dist/src/ConnectionManager/RegistrationManager.d.ts +17 -0
- package/dist/src/ConnectionManager/SipOperations.d.ts +32 -0
- package/dist/src/ConnectionManager/UAFactory.d.ts +50 -0
- package/dist/src/ConnectionManager/eventNames.d.ts +16 -0
- package/dist/src/ConnectionManager/index.d.ts +3 -0
- package/dist/src/IncomingCallManager/@IncomingCallManager.d.ts +36 -0
- package/dist/src/IncomingCallManager/eventNames.d.ts +13 -0
- package/dist/src/IncomingCallManager/index.d.ts +2 -0
- package/dist/src/PresentationManager/@PresentationManager.d.ts +47 -0
- package/dist/src/PresentationManager/constants.d.ts +1 -0
- package/dist/src/PresentationManager/eventNames.d.ts +11 -0
- package/dist/src/PresentationManager/index.d.ts +1 -0
- package/dist/src/PresentationManager/types.d.ts +2 -0
- package/dist/src/SipConnector.d.ts +89 -283
- package/dist/src/SipConnectorFacade/SipConnectorFacade.d.ts +34 -25
- package/dist/src/__fixtures__/BaseSession.mock.d.ts +9 -9
- package/dist/src/__fixtures__/RTCPeerConnectionMock.d.ts +1 -1
- package/dist/src/__fixtures__/RTCSessionMock.d.ts +25 -20
- package/dist/src/__fixtures__/UA.mock.d.ts +23 -25
- package/dist/src/__fixtures__/index.d.ts +4 -4
- package/dist/src/__fixtures__/jssip.mock.d.ts +3 -3
- package/dist/src/doMock.d.ts +1 -0
- package/dist/src/index.d.ts +3 -1
- package/dist/src/tools/__fixtures__/connectToServer.d.ts +2 -2
- package/dist/src/tools/index.d.ts +2 -2
- package/dist/src/tools/{sendDTMFAccumulated.d.ts → sendDtmfFAccumulated.d.ts} +2 -2
- package/package.json +17 -14
- package/dist/SipConnector-CJN8qKAC.js +0 -1316
- package/dist/SipConnector-DO0YvSq6.cjs +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./SipConnector-DO0YvSq6.cjs"),ne=require("sequent-promises"),te=require("stack-promises"),L=require("debug"),se=require("@krivega/cancelable-promise"),oe=require("repeated-calls"),re=require("ts-debounce"),$=n=>{const{url:e,cause:t}=n;let s=e;return(t===o.BAD_MEDIA_DESCRIPTION||t===o.NOT_FOUND)&&(s=`${n.message.to.uri.user}@${n.message.to.uri.host}`),s};var j=(n=>(n.CONNECT_SERVER_FAILED="CONNECT_SERVER_FAILED",n.WRONG_USER_OR_PASSWORD="WRONG_USER_OR_PASSWORD",n.BAD_MEDIA_ERROR="BAD_MEDIA_ERROR",n.NOT_FOUND_ERROR="NOT_FOUND_ERROR",n.WS_CONNECTION_FAILED="WS_CONNECTION_FAILED",n.CONNECT_SERVER_FAILED_BY_LINK="CONNECT_SERVER_FAILED_BY_LINK",n))(j||{});const ie=(n=new Error)=>{const{cause:e,socket:t}=n;let s="CONNECT_SERVER_FAILED";switch(e){case"Forbidden":{s="WRONG_USER_OR_PASSWORD";break}case o.BAD_MEDIA_DESCRIPTION:{s="BAD_MEDIA_ERROR";break}case o.NOT_FOUND:{s="NOT_FOUND_ERROR";break}default:t&&t?._ws?.readyState===3?s="WS_CONNECTION_FAILED":$(n)&&(s="CONNECT_SERVER_FAILED_BY_LINK")}return s},ce=n=>{let e="";try{e=JSON.stringify(n)}catch(t){o.logger("failed to stringify message",t)}return e},ae=(n=new Error)=>{const{code:e,cause:t,message:s}=n,r=$(n),i={code:"",cause:"",message:""};return typeof s=="object"&&s!==null?i.message=ce(s):s&&(i.message=String(s)),r&&(i.link=r),e&&(i.code=e),t&&(i.cause=t),i},le=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:j,getLinkError:$,getTypeFromError:ie,getValuesFromError:ae},Symbol.toStringTag,{value:"Module"})),ue=({sessionId:n,remoteAddress:e,isMutedAudio:t,isMutedVideo:s,isRegistered:r,isPresentationCall:i})=>{const c=[],a=t?"0":"1",l=s?"0":"1";return c.push(`X-Vinteo-Mic-State: ${a}`,`X-Vinteo-MainCam-State: ${l}`),r||c.push("X-Vinteo-Purgatory-Call: yes"),n&&c.push(`X-Vinteo-Session: ${n}`),i&&c.push("X-Vinteo-Presentation-Call: yes"),e&&c.push(`X-Vinteo-Remote: ${e}`),c},de="[@*!|]",ge="_",Ce=n=>{let e=n;return e=e.replaceAll(new RegExp(de,"g"),ge),e},Se=({appName:n,appVersion:e,browserName:t,browserVersion:s})=>{const i=`${Ce(n)} ${e}`;return`ChromeNew - ${t?`${t} ${s}, ${i}`:i}`},fe=({isUnifiedSdpSemantic:n,appVersion:e,browserName:t,browserVersion:s,appName:r})=>n?Se({appVersion:e,browserName:t,browserVersion:s,appName:r}):"Chrome",W="purgatory",D=n=>n===W,me=n=>e=>[...e].map(s=>async()=>n(s)),he=async({accumulatedKeys:n,sendKey:e,canRunTask:t})=>{const r=me(e)(n);return ne.sequentPromises(r,t)},Re=n=>t=>(o.logger("onStartMainCam"),n.onSession("admin-start-main-cam",t)),pe=n=>t=>(o.logger("onStartMic"),n.onSession("admin-start-mic",t)),ye=n=>t=>(o.logger("onStopMainCam"),n.onSession("admin-stop-main-cam",t)),Ee=n=>t=>(o.logger("onStopMic"),n.onSession("admin-stop-mic",t)),Te=({sipConnector:n})=>{const e=(S,R)=>({isSyncForced:f=!1})=>{if(f){S();return}R()},t=Re(n),s=ye(n),r=pe(n),i=Ee(n);let c=()=>{},a=()=>{},l=()=>{},d=()=>{};const C=({onStartMainCamForced:S,onStartMainCamNotForced:R,onStopMainCamForced:f,onStopMainCamNotForced:m,onStartMicForced:p,onStartMicNotForced:y,onStopMicForced:E,onStopMicNotForced:T})=>{const A=e(S,R);c=t(A);const _=e(f,m);a=s(_);const v=e(p,y);l=r(v);const O=e(E,T);d=i(O)},g=()=>{c(),a(),l(),d()};return{start:S=>{C(S)},stop:()=>{g()}}},Me=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:W,createSyncMediaState:Te,error:le,getExtraHeaders:ue,getUserAgent:fe,hasPurgatory:D,sendDTMFAccumulated:he},Symbol.toStringTag,{value:"Module"})),be=n=>[...n.keys()].map(e=>n.get(e)),Ae=(n,e)=>be(n).find(t=>t?.type===e),G=async n=>n.getStats().then(e=>Ae(e,"codec")?.mimeType),_e=n=>n.find(e=>e?.track?.kind==="video"),K=(n,e)=>n!==void 0&&e!==void 0&&n.toLowerCase().includes(e.toLowerCase()),ve=1e6,h=n=>n*ve,Y=h(.06),Oe=h(4),Ne=n=>n<=64?Y:n<=128?h(.12):n<=256?h(.25):n<=384?h(.32):n<=426?h(.38):n<=640?h(.5):n<=848?h(.7):n<=1280?h(1):n<=1920?h(2):Oe,Pe="av1",we=n=>K(n,Pe),De=.6,z=(n,e)=>we(e)?n*De:n,Be=n=>z(Y,n),Q=(n,e)=>{const t=Ne(n);return z(t,e)},Ie=1,J=({videoTrack:n,targetSize:e,codec:t})=>{const s=n.getSettings(),r=s.width,i=s.height,c=r/e.width,a=i/e.height,l=Math.max(c,a,Ie),d=Q(e.width,t);return{scaleResolutionDownBy:l,maxBitrate:d}},Z=te.createStackPromises(),Fe=async()=>Z().catch(n=>{o.logger("videoSendingBalancer: error",n)}),Ve=async n=>(Z.add(n),Fe()),H=async({sender:n,scaleResolutionDownBy:e,maxBitrate:t,onSetParameters:s})=>Ve(async()=>o.setEncodingsToSender(n,{scaleResolutionDownBy:e,maxBitrate:t},s)),ke=async({sender:n,codec:e},t)=>{const r=Be(e);return H({sender:n,maxBitrate:r,onSetParameters:t,scaleResolutionDownBy:200})},F=async({sender:n,videoTrack:e,codec:t},s)=>{const c=e.getSettings().width,a=Q(c,t);return H({sender:n,maxBitrate:a,onSetParameters:s,scaleResolutionDownBy:1})},Ue=async({sender:n,videoTrack:e,resolution:t,codec:s},r)=>{const[i,c]=t.split("x"),{maxBitrate:a,scaleResolutionDownBy:l}=J({videoTrack:e,codec:s,targetSize:{width:Number(i),height:Number(c)}});return H({sender:n,maxBitrate:a,onSetParameters:r,scaleResolutionDownBy:l})},xe=async({mainCam:n,resolutionMainCam:e,sender:t,videoTrack:s,codec:r},i)=>{switch(n){case o.EEventsMainCAM.PAUSE_MAIN_CAM:return ke({sender:t,codec:r},i);case o.EEventsMainCAM.RESUME_MAIN_CAM:return F({sender:t,videoTrack:s,codec:r},i);case o.EEventsMainCAM.MAX_MAIN_CAM_RESOLUTION:return e!==void 0?Ue({sender:t,videoTrack:s,codec:r,resolution:e},i):F({sender:t,videoTrack:s,codec:r},i);case o.EEventsMainCAM.ADMIN_STOP_MAIN_CAM:case o.EEventsMainCAM.ADMIN_START_MAIN_CAM:case void 0:return F({sender:t,videoTrack:s,codec:r},i);default:return F({sender:t,videoTrack:s,codec:r},i)}},q={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},X=async({mainCam:n,resolutionMainCam:e,connection:t,onSetParameters:s,ignoreForCodec:r})=>{const i=t.getSenders(),c=_e(i);if(!c?.track)return q;const a=await G(c);return K(a,r)?q:xe({mainCam:n,resolutionMainCam:e,sender:c,codec:a,videoTrack:c.track},s)},Le=(n,{ignoreForCodec:e,onSetParameters:t}={})=>{const s=async()=>{const{connection:l}=n;if(!l)throw new Error("connection is not exist");return X({connection:l,onSetParameters:t,ignoreForCodec:e})};let r=s;const i=l=>{r=async()=>{const{mainCam:d,resolutionMainCam:C}=l,{connection:g}=n;if(!g)throw new Error("connection is not exist");return X({mainCam:d,resolutionMainCam:C,connection:g,onSetParameters:t,ignoreForCodec:e})},r().catch(L)};return{subscribe:()=>{n.onSession("main-cam-control",i)},unsubscribe:()=>{n.offSession("main-cam-control",i)},balanceByTrack:s,resetMainCamControl(){r=s},async reBalance(){return r()}}},$e=n=>n.getVideoTracks()[0],P=({mediaStream:n,simulcastEncodings:e,sendEncodings:t})=>{if(e&&e.length>0){const s=t??[],r=$e(n);return e.forEach((i,c)=>{const a=s[c]??{};a.active=!0,i.rid!==void 0&&(a.rid=i.rid),i.scalabilityMode!==void 0&&(a.scalabilityMode=i.scalabilityMode);const{maxBitrate:l,scaleResolutionDownBy:d}=J({videoTrack:r,targetSize:{width:i.width,height:i.height}});a.maxBitrate=l,a.scaleResolutionDownBy=d,s[c]=a}),s}return t},He=(n,e)=>n.filter(s=>e.some(r=>r.clockRate===s.clockRate&&r.mimeType===s.mimeType&&r.channels===s.channels&&r.sdpFmtpLine===s.sdpFmtpLine)),qe=n=>{const e=RTCRtpSender.getCapabilities(n),t=RTCRtpReceiver.getCapabilities(n),s=e===null?[]:e.codecs,r=t===null?[]:t.codecs;return He(s,r)},Xe=(n,e)=>e===void 0||e.length===0?n:n.sort((t,s)=>{const r=e.indexOf(t.mimeType),i=e.indexOf(s.mimeType),c=r===-1?Number.MAX_VALUE:r,a=i===-1?Number.MAX_VALUE:i;return c-a}),je=(n,e)=>e===void 0||e.length===0?n:n.filter(t=>!e.includes(t.mimeType)),w=(n,{preferredMimeTypesVideoCodecs:e,excludeMimeTypesVideoCodecs:t})=>async s=>{try{if(typeof s.setCodecPreferences=="function"&&s.sender.track?.kind==="video"&&(e!==void 0&&e?.length>0||t!==void 0&&t?.length>0)){const r=qe("video"),i=je(r,t),c=Xe(i,e);s.setCodecPreferences(c)}Object.keys(n).length>0&&await o.setParametersToSender(s.sender,n)}catch(r){o.logger("updateTransceiver error",r)}},x=n=>{if(!se.isCanceledError(n)&&!oe.hasCanceledError(n))throw n;return{isSuccessful:!1}},We=({kind:n,readyState:e})=>n==="video"&&e==="live",Ge=new Set(["on","once","onceRace","wait","off","onSession","onceSession","onceRaceSession","waitSession","offSession","sendDTMF","hangUp","declineToIncomingCall","sendChannels","checkTelephony","waitChannels","ping","connection","isConfigured","isRegistered"]);class Ke{sipConnector;preferredMimeTypesVideoCodecs;excludeMimeTypesVideoCodecs;on;once;onceRace;wait;off;onSession;onceSession;onceRaceSession;waitSession;offSession;sendDTMF;hangUp;declineToIncomingCall;sendChannels;checkTelephony;waitChannels;ping;connection;isConfigured;isRegistered;constructor(e,{preferredMimeTypesVideoCodecs:t,excludeMimeTypesVideoCodecs:s}={}){return this.preferredMimeTypesVideoCodecs=t,this.excludeMimeTypesVideoCodecs=s,this.sipConnector=e,new Proxy(this,{get:(r,i,c)=>{if(typeof i=="string"&&Ge.has(i)&&i in this.sipConnector){const l=Reflect.get(this.sipConnector,i,this.sipConnector);return typeof l=="function"?l.bind(this.sipConnector):l}const a=Reflect.get(r,i,c);return typeof a=="function"?a.bind(r):a}})}connectToServer=async e=>{const{userAgent:t,sipWebSocketServerURL:s,sipServerUrl:r,remoteAddress:i,displayName:c,name:a,password:l,isRegisteredUser:d,isDisconnectOnFail:C}=e;return o.logger("connectToServer",e),this.sipConnector.connect({userAgent:t,sipWebSocketServerURL:s,sipServerUrl:r,remoteAddress:i,displayName:c,password:l,user:a,register:d}).then(g=>(o.logger("connectToServer then"),{ua:g,isSuccessful:!0})).catch(async g=>(o.logger("connectToServer catch: error",g),C===!0?this.sipConnector.disconnect().then(()=>x(g)).catch(()=>x(g)):x(g)))};callToServer=async e=>{const{conference:t,mediaStream:s,extraHeaders:r,iceServers:i,contentHint:c,simulcastEncodings:a,degradationPreference:l,sendEncodings:d,offerToReceiveAudio:C,offerToReceiveVideo:g,directionVideo:B,directionAudio:I,setRemoteStreams:S,onBeforeProgressCall:R,onSuccessProgressCall:f,onEnterPurgatory:m,onEnterConference:p,onFailProgressCall:y,onFinishProgressCall:E,onEndedCall:T}=e,A=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:S}),_=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:A}),v=w({degradationPreference:l},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});o.logger("callToServer",e);const O=async()=>(o.logger("startCall"),this.sipConnector.call({mediaStream:s,extraHeaders:r,iceServers:i,contentHint:c,offerToReceiveAudio:C,offerToReceiveVideo:g,directionVideo:B,directionAudio:I,sendEncodings:P({mediaStream:s,simulcastEncodings:a,sendEncodings:d}),number:t,onAddedTransceiver:v,ontrack:_}));let M=!1,b;const N=(o.logger("subscribeEnterConference: onEnterConference",p),m??p?this.sipConnector.onSession("enterRoom",({room:u})=>{o.logger("enterRoom",{_room:u,isSuccessProgressCall:M}),b=u,D(b)?m&&m():p&&p({isSuccessProgressCall:M})}):()=>{}),V=u=>(o.logger("onSuccess"),M=!0,A().catch(L),f&&f({isPurgatory:D(b)}),this.sipConnector.onceRaceSession(["ended","failed"],()=>{N(),T&&T()}),u),k=u=>{throw o.logger("onFail"),y&&y(),N(),u},U=()=>{o.logger("onFinish"),E&&E()};return o.logger("onBeforeProgressCall"),R&&R(t),O().then(V).catch(u=>k(u)).finally(U)};disconnectFromServer=async()=>this.sipConnector.disconnect().then(()=>(o.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(e=>(o.logger("disconnectFromServer: catch",e),{isSuccessful:!1}));answerIncomingCall=async e=>{const{mediaStream:t,extraHeaders:s,iceServers:r,contentHint:i,simulcastEncodings:c,degradationPreference:a,sendEncodings:l,offerToReceiveAudio:d,offerToReceiveVideo:C,directionVideo:g,directionAudio:B,setRemoteStreams:I,onBeforeProgressCall:S,onSuccessProgressCall:R,onEnterPurgatory:f,onEnterConference:m,onFailProgressCall:p,onFinishProgressCall:y,onEndedCall:E}=e,T=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:I}),A=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:T}),_=w({degradationPreference:a},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});o.logger("answerIncomingCall",e);const v=async()=>this.sipConnector.answerToIncomingCall({mediaStream:t,extraHeaders:s,iceServers:r,contentHint:i,offerToReceiveAudio:d,offerToReceiveVideo:C,directionVideo:g,directionAudio:B,sendEncodings:P({mediaStream:t,simulcastEncodings:c,sendEncodings:l}),onAddedTransceiver:_,ontrack:A}),O=()=>{const{remoteCallerData:u}=this.sipConnector;return u.incomingNumber};let M=!1,b;const N=(o.logger("subscribeEnterConference: onEnterConference",m),f??m?this.sipConnector.onSession("enterRoom",u=>{o.logger("enterRoom",{_room:u,isSuccessProgressCall:M}),b=u,D(b)?f&&f():m&&m({isSuccessProgressCall:M})}):()=>{}),V=u=>(o.logger("onSuccess"),M=!0,T(),R&&R({isPurgatory:D(b)}),this.sipConnector.onceRaceSession(["ended","failed"],()=>{N(),E&&E()}),u),k=u=>{throw o.logger("onFail"),p&&p(),N(),u},U=()=>{o.logger("onFinish"),y&&y()};if(o.logger("onBeforeProgressCall"),S){const u=O();S(u)}return v().then(V).catch(u=>k(u)).finally(U)};updatePresentation=async({mediaStream:e,isP2P:t,maxBitrate:s,contentHint:r,simulcastEncodings:i,degradationPreference:c,sendEncodings:a,preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d})=>{const C=w({degradationPreference:c},{preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d});return o.logger("updatePresentation"),this.sipConnector.updatePresentation(e,{isP2P:t,maxBitrate:s,contentHint:r,sendEncodings:P({mediaStream:e,simulcastEncodings:i,sendEncodings:a}),onAddedTransceiver:C})};startPresentation=async({mediaStream:e,isP2P:t,maxBitrate:s,contentHint:r,simulcastEncodings:i,degradationPreference:c,sendEncodings:a,preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d},C)=>{const g=w({degradationPreference:c},{preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d});return o.logger("startPresentation"),this.sipConnector.startPresentation(e,{isP2P:t,maxBitrate:s,contentHint:r,sendEncodings:P({mediaStream:e,simulcastEncodings:i,sendEncodings:a}),onAddedTransceiver:g},C)};stopShareSipConnector=async({isP2P:e=!1}={})=>(o.logger("stopShareSipConnector"),this.sipConnector.stopPresentation({isP2P:e}).catch(t=>{o.logger(t)}));sendRefusalToTurnOnMic=async()=>{this.sipConnector.isCallActive&&(o.logger("sendRefusalToTurnOnMic"),await this.sipConnector.sendRefusalToTurnOnMic().catch(e=>{o.logger("sendRefusalToTurnOnMic: error",e)}))};sendRefusalToTurnOnCam=async()=>{this.sipConnector.isCallActive&&(o.logger("sendRefusalToTurnOnCam"),await this.sipConnector.sendRefusalToTurnOnCam().catch(e=>{o.logger("sendRefusalToTurnOnCam: error",e)}))};sendMediaState=async({isEnabledCam:e,isEnabledMic:t})=>{this.sipConnector.isCallActive&&(o.logger("sendMediaState"),await this.sipConnector.sendMediaState({cam:e,mic:t}))};replaceMediaStream=async(e,{deleteExisting:t,addMissing:s,forceRenegotiation:r,contentHint:i,simulcastEncodings:c,degradationPreference:a,sendEncodings:l}={})=>{const d=w({degradationPreference:a},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});return o.logger("replaceMediaStream"),this.sipConnector.replaceMediaStream(e,{deleteExisting:t,addMissing:s,forceRenegotiation:r,contentHint:i,sendEncodings:P({mediaStream:e,simulcastEncodings:c,sendEncodings:l}),onAddedTransceiver:d})};askPermissionToEnableCam=async()=>{this.sipConnector.isCallActive&&(o.logger("askPermissionToEnableCam"),await this.sipConnector.askPermissionToEnableCam())};resolveHandleReadyRemoteStreamsDebounced=({onReadyRemoteStreams:e})=>re.debounce(()=>{const t=this.sipConnector.getRemoteStreams();o.logger("remoteStreams",t),t&&e(t)},200);resolveHandleReadyRemoteStreams=({onReadyRemoteStreams:e})=>({track:t})=>{We(t)&&e()};getRemoteStreams=()=>(o.logger("getRemoteStreams"),this.sipConnector.getRemoteStreams());onUseLicense=e=>(o.logger("onUseLicense"),this.sipConnector.onSession("useLicense",e));onMustStopPresentation=e=>(o.logger("onMustStopPresentation"),this.sipConnector.onSession("mustStopPresentation",e));onMoveToSpectators=e=>(o.logger("onMoveToSpectators"),this.sipConnector.onSession(o.PARTICIPANT_MOVE_REQUEST_TO_SPECTATORS,e));onMoveToParticipants=e=>(o.logger("onMoveToParticipants"),this.sipConnector.onSession(o.PARTICIPANT_MOVE_REQUEST_TO_PARTICIPANTS,e))}exports.EEventsMainCAM=o.EEventsMainCAM;exports.EEventsMic=o.EEventsMic;exports.EEventsSyncMediaState=o.EEventsSyncMediaState;exports.EMimeTypesVideoCodecs=o.EMimeTypesVideoCodecs;exports.EUseLicense=o.EUseLicense;exports.SipConnector=o.SipConnector;exports.causes=o.causes;exports.constants=o.constants;exports.disableDebug=o.disableDebug;exports.enableDebug=o.enableDebug;exports.eventNames=o.eventNames;exports.hasCanceledCallError=o.hasCanceledCallError;exports.setParametersToSender=o.setParametersToSender;exports.debug=L;exports.SipConnectorFacade=Ke;exports.getCodecFromSender=G;exports.resolveVideoSendingBalancer=Le;exports.tools=Me;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./SipConnector-CwI8aFEA.cjs"),de=require("sequent-promises"),ge=require("stack-promises"),v=require("debug");require("events-constructor");const Y=require("@krivega/cancelable-promise"),Ce=require("repeated-calls"),fe=require("ts-debounce"),Se=(e,n)=>(e.degradationPreference=n.degradationPreference,e),he=(e,n)=>{e.encodings??=[];for(let t=e.encodings.length;t<n;t+=1)e.encodings.push({});return e},G=e=>(n,t)=>t!==void 0&&n!==t||t===void 0&&n!==e,Re=G(),me=(e,n)=>{if(Re(e,n))return e},ye=(e,n)=>{const t=e.maxBitrate,o=me(n,t);return o!==void 0&&(e.maxBitrate=o),e},K=1,pe=G(K),Ae=(e,n)=>{const t=e===void 0?void 0:Math.max(e,K);if(t!==void 0&&pe(t,n))return t},Te=(e,n)=>{const t=e.scaleResolutionDownBy,o=Ae(n,t);return o!==void 0&&(e.scaleResolutionDownBy=o),e},Me=(e,n)=>{const t=n.encodings?.length??0;return he(e,t),e.encodings.forEach((o,r)=>{const s=(n?.encodings??[])[r],i=s?.maxBitrate,a=s?.scaleResolutionDownBy;ye(o,i),Te(o,a)}),e},Ee=(e,n)=>{if(e.codecs?.length!==n.codecs?.length)return!0;for(let t=0;t<(e.codecs?.length??0);t++)if(JSON.stringify(e.codecs[t])!==JSON.stringify(n.codecs[t]))return!0;if(e.headerExtensions?.length!==n.headerExtensions?.length)return!0;for(let t=0;t<(e.headerExtensions?.length??0);t++)if(JSON.stringify(e.headerExtensions[t])!==JSON.stringify(n.headerExtensions[t]))return!0;if(e.encodings?.length!==n.encodings?.length)return!0;for(let t=0;t<(e.encodings.length??0);t++)if(JSON.stringify(e.encodings[t])!==JSON.stringify(n.encodings[t]))return!0;return e.rtcp?.cname!==n.rtcp?.cname||e.rtcp?.reducedSize!==n.rtcp?.reducedSize||e.degradationPreference!==n.degradationPreference},X=async(e,n)=>{const t=e.getParameters(),o=JSON.parse(JSON.stringify(t));Me(t,n),Se(t,n);const r=Ee(o,t);return r&&await e.setParameters(t),{parameters:t,isChanged:r}},k=e=>{const{url:n,cause:t}=e;let o=n;return(t===c.BAD_MEDIA_DESCRIPTION||t===c.NOT_FOUND)&&(o=`${e.message.to.uri.user}@${e.message.to.uri.host}`),o};var z=(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))(z||{});const Ne=new Error("Unknown error"),_e=(e=Ne)=>{const{cause:n,socket:t}=e;let o="CONNECT_SERVER_FAILED";switch(n){case"Forbidden":{o="WRONG_USER_OR_PASSWORD";break}case c.BAD_MEDIA_DESCRIPTION:{o="BAD_MEDIA_ERROR";break}case c.NOT_FOUND:{o="NOT_FOUND_ERROR";break}default:t!==void 0&&t._ws?.readyState===3?o="WS_CONNECTION_FAILED":k(e)!==void 0&&k(e)!==""&&(o="CONNECT_SERVER_FAILED_BY_LINK")}return o},ve=e=>{let n="";try{n=JSON.stringify(e)}catch(t){c.logger("failed to stringify message",t)}return n},Oe=new Error("Unknown error"),be=(e=Oe)=>{const{code:n,cause:t,message:o}=e,r=k(e),s={code:"",cause:"",message:""};return typeof o=="object"&&o!==null?s.message=ve(o):o&&(s.message=String(o)),r!==void 0&&r!==""&&(s.link=r),n!==void 0&&n!==""&&(s.code=n),t!==void 0&&t!==""&&(s.cause=t),s},Ie=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:z,getLinkError:k,getTypeFromError:_e,getValuesFromError:be},Symbol.toStringTag,{value:"Module"})),De=({sessionId:e,remoteAddress:n,isMutedAudio:t,isMutedVideo:o,isRegistered:r,isPresentationCall:s})=>{const i=[],a=t?"0":"1",l=o?"0":"1";return i.push(`X-Vinteo-Mic-State: ${a}`,`X-Vinteo-MainCam-State: ${l}`),(r===!1||r===void 0)&&i.push("X-Vinteo-Purgatory-Call: yes"),e!==void 0&&e!==""&&i.push(`X-Vinteo-Session: ${e}`),s===!0&&i.push("X-Vinteo-Presentation-Call: yes"),n!==void 0&&n!==""&&i.push(`X-Vinteo-Remote: ${n}`),i},we="[@*!|]",Be="_",Pe=e=>{let n=e;return n=n.replaceAll(new RegExp(we,"g"),Be),n},xe=({appName:e,appVersion:n,browserName:t,browserVersion:o})=>{const s=`${Pe(e)} ${n}`;return`ChromeNew - ${t===void 0?s:`${t} ${o}, ${s}`}`},Ue=({isUnifiedSdpSemantic:e,appVersion:n,browserName:t,browserVersion:o,appName:r})=>e?xe({appVersion:n,browserName:t,browserVersion:o,appName:r}):"Chrome",Q="purgatory",P=e=>e===Q,Fe=e=>n=>[...n].map(o=>async()=>e(o)),ke=async({accumulatedKeys:e,sendKey:n,canRunTask:t})=>{const r=Fe(n)(e);return de.sequentPromises(r,t)},Ve=e=>t=>(c.logger("onStartMainCam"),e.onApi("admin-start-main-cam",t)),Le=e=>t=>(c.logger("onStartMic"),e.onApi("admin-start-mic",t)),He=e=>t=>(c.logger("onStopMainCam"),e.onApi("admin-stop-main-cam",t)),$e=e=>t=>(c.logger("onStopMic"),e.onApi("admin-stop-mic",t)),qe=({sipConnector:e})=>{const n=(f,m)=>({isSyncForced:S})=>{if(S===!0){f();return}m()},t=Ve(e),o=He(e),r=Le(e),s=$e(e);let i,a,l,d;const C=({onStartMainCamForced:f,onStartMainCamNotForced:m,onStopMainCamForced:S,onStopMainCamNotForced:h,onStartMicForced:y,onStartMicNotForced:p,onStopMicForced:A,onStopMicNotForced:T})=>{const _=n(f,m);i=t(_);const O=n(S,h);a=o(O);const b=n(y,p);l=r(b);const I=n(A,T);d=s(I)},g=()=>{i?.(),a?.(),l?.(),d?.()};return{start:f=>{C(f)},stop:()=>{g()}}},Xe=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:Q,createSyncMediaState:qe,error:Ie,getExtraHeaders:De,getUserAgent:Ue,hasPurgatory:P,sendDtmfAccumulated:ke},Symbol.toStringTag,{value:"Module"}));var N=(e=>(e.PAUSE_MAIN_CAM="PAUSEMAINCAM",e.RESUME_MAIN_CAM="RESUMEMAINCAM",e.MAX_MAIN_CAM_RESOLUTION="MAXMAINCAMRESOLUTION",e.ADMIN_STOP_MAIN_CAM="ADMINSTOPMAINCAM",e.ADMIN_START_MAIN_CAM="ADMINSTARTMAINCAM",e))(N||{}),Z=(e=>(e.ADMIN_STOP_MIC="ADMINSTOPMIC",e.ADMIN_START_MIC="ADMINSTARTMIC",e))(Z||{}),ee=(e=>(e.ADMIN_SYNC_FORCED="1",e.ADMIN_SYNC_NOT_FORCED="0",e))(ee||{}),ne=(e=>(e.AUDIO="AUDIO",e.VIDEO="VIDEO",e.AUDIOPLUSPRESENTATION="AUDIOPLUSPRESENTATION",e))(ne||{}),te=(e=>(e.VP8="video/VP8",e.VP9="video/VP9",e.H264="video/H264",e.AV1="video/AV1",e.rtx="video/rtx",e.red="video/red",e.flexfec03="video/flexfec-03",e))(te||{});const Je=e=>[...e.keys()].map(n=>e.get(n)),je=(e,n)=>Je(e).find(t=>t?.type===n),oe=async e=>e.getStats().then(n=>je(n,"codec")?.mimeType),We=e=>e.find(n=>n.track?.kind==="video"),re=(e,n)=>e!==void 0&&n!==void 0&&e.toLowerCase().includes(n.toLowerCase()),Ye=1e6,R=e=>e*Ye,se=R(.06),Ge=R(4),Ke=e=>e<=64?se:e<=128?R(.12):e<=256?R(.25):e<=384?R(.32):e<=426?R(.38):e<=640?R(.5):e<=848?R(.7):e<=1280?R(1):e<=1920?R(2):Ge,ze="av1",Qe=e=>re(e,ze),Ze=.6,ce=(e,n)=>Qe(n)?e*Ze:e,en=e=>ce(se,e),ie=(e,n)=>{const t=Ke(e);return ce(t,n)},$=1,ae=({videoTrack:e,targetSize:n,codec:t})=>{const o=e.getSettings(),r=o.width,s=o.height,i=r===void 0?$:r/n.width,a=s===void 0?$:s/n.height,l=Math.max(i,a,$),d=ie(n.width,t);return{scaleResolutionDownBy:l,maxBitrate:d}},nn=async(e,n,t)=>{const{isChanged:o,parameters:r}=await X(e,{encodings:[{scaleResolutionDownBy:n.scaleResolutionDownBy,maxBitrate:n.maxBitrate}]});return o&&t&&t(r),{isChanged:o,parameters:r}},le=ge.createStackPromises(),tn=async()=>le().catch(e=>{c.logger("videoSendingBalancer: error",e)}),on=async e=>(le.add(e),tn()),J=async({sender:e,scaleResolutionDownBy:n,maxBitrate:t,onSetParameters:o})=>on(async()=>nn(e,{scaleResolutionDownBy:n,maxBitrate:t},o)),rn=async({sender:e,codec:n},t)=>{const r=en(n);return J({sender:e,maxBitrate:r,onSetParameters:t,scaleResolutionDownBy:200})},F=async({sender:e,videoTrack:n,codec:t},o)=>{const i=n.getSettings().width,a=ie(i??0,t);return J({sender:e,maxBitrate:a,onSetParameters:o,scaleResolutionDownBy:1})},sn=async({sender:e,videoTrack:n,resolution:t,codec:o},r)=>{const[s,i]=t.split("x"),{maxBitrate:a,scaleResolutionDownBy:l}=ae({videoTrack:n,codec:o,targetSize:{width:Number(s),height:Number(i)}});return J({sender:e,maxBitrate:a,onSetParameters:r,scaleResolutionDownBy:l})},cn=async({mainCam:e,resolutionMainCam:n,sender:t,videoTrack:o,codec:r},s)=>{switch(e){case N.PAUSE_MAIN_CAM:return rn({sender:t,codec:r},s);case N.RESUME_MAIN_CAM:return F({sender:t,videoTrack:o,codec:r},s);case N.MAX_MAIN_CAM_RESOLUTION:return n!==void 0?sn({sender:t,videoTrack:o,codec:r,resolution:n},s):F({sender:t,videoTrack:o,codec:r},s);case N.ADMIN_STOP_MAIN_CAM:case N.ADMIN_START_MAIN_CAM:case void 0:return F({sender:t,videoTrack:o,codec:r},s);default:return F({sender:t,videoTrack:o,codec:r},s)}},j={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},W=async({mainCam:e,resolutionMainCam:n,connection:t,onSetParameters:o,ignoreForCodec:r})=>{const s=t.getSenders(),i=We(s);if(!i?.track)return j;const a=await oe(i);return re(a,r)?j:cn({mainCam:e,resolutionMainCam:n,sender:i,codec:a,videoTrack:i.track},o)},an=(e,{ignoreForCodec:n,onSetParameters:t}={})=>{const o=async()=>{const{connection:l}=e;if(!l)throw new Error("connection is not exist");return W({connection:l,onSetParameters:t,ignoreForCodec:n})};let r=o;const s=l=>{r=async()=>{const{mainCam:d,resolutionMainCam:C}=l,{connection:g}=e;if(!g)throw new Error("connection is not exist");return W({mainCam:d,resolutionMainCam:C,connection:g,onSetParameters:t,ignoreForCodec:n})},r().catch(v)};return{subscribe:()=>{e.onApi("main-cam-control",s)},unsubscribe:()=>{e.offApi("main-cam-control",s)},balanceByTrack:o,resetMainCamControl(){r=o},async reBalance(){return r()}}},ln=e=>e instanceof Object&&("originator"in e||"cause"in e),un=e=>{if(Y.isCanceledError(e))return!0;if(!ln(e))return!1;const{originator:n,cause:t}=e;return typeof t=="string"?t===c.ECallCause.REQUEST_TIMEOUT||t===c.ECallCause.REJECTED||n===c.Originator.LOCAL&&(t===c.ECallCause.CANCELED||t===c.ECallCause.BYE):!1},dn=e=>e.getVideoTracks()[0],w=({mediaStream:e,simulcastEncodings:n,sendEncodings:t})=>{if(n&&n.length>0){const o=t??[],r=dn(e);if(r===void 0)throw new Error("No video track");return n.forEach((s,i)=>{const a=o[i]??{};a.active=!0,s.rid!==void 0&&(a.rid=s.rid),s.scalabilityMode!==void 0&&(a.scalabilityMode=s.scalabilityMode);const{maxBitrate:l,scaleResolutionDownBy:d}=ae({videoTrack:r,targetSize:{width:s.width,height:s.height}});a.maxBitrate=l,a.scaleResolutionDownBy=d,o[i]=a}),o}return t},gn=(e,n)=>e.filter(o=>n.some(r=>r.clockRate===o.clockRate&&r.mimeType===o.mimeType&&r.channels===o.channels&&r.sdpFmtpLine===o.sdpFmtpLine)),Cn=e=>{const n=RTCRtpSender.getCapabilities(e),t=RTCRtpReceiver.getCapabilities(e),o=n===null?[]:n.codecs,r=t===null?[]:t.codecs;return gn(o,r)},fn=(e,n)=>n===void 0||n.length===0?e:e.sort((t,o)=>{const r=n.indexOf(t.mimeType),s=n.indexOf(o.mimeType),i=r===-1?Number.MAX_VALUE:r,a=s===-1?Number.MAX_VALUE:s;return i-a}),Sn=(e,n)=>n===void 0||n.length===0?e:e.filter(t=>!n.includes(t.mimeType)),B=(e,{preferredMimeTypesVideoCodecs:n,excludeMimeTypesVideoCodecs:t})=>async o=>{try{if(typeof o.setCodecPreferences=="function"&&o.sender.track?.kind==="video"&&(n!==void 0&&n.length>0||t!==void 0&&t.length>0)){const r=Cn("video"),s=Sn(r,t),i=fn(s,n);o.setCodecPreferences(i)}Object.keys(e).length>0&&await X(o.sender,e)}catch(r){c.logger("updateTransceiver error",r)}},q=e=>{if(!Y.isCanceledError(e)&&!Ce.hasCanceledError(e))throw e;return{isSuccessful:!1}},hn=({kind:e,readyState:n})=>e==="video"&&n==="live",Rn=new Set(["on","once","onceRace","wait","off","onCall","onceCall","onceRaceCall","waitCall","offCall","onIncomingCall","onceIncomingCall","onceRaceIncomingCall","waitIncomingCall","offIncomingCall","sendDTMF","hangUp","declineToIncomingCall","sendChannels","checkTelephony","waitChannels","ping","connection","isConfigured","isRegistered"]);class mn{on;once;onceRace;wait;off;onCall;onceCall;onceRaceCall;waitCall;offCall;onIncomingCall;onceIncomingCall;onceRaceIncomingCall;waitIncomingCall;offIncomingCall;sendDTMF;hangUp;declineToIncomingCall;sendChannels;checkTelephony;waitChannels;ping;connection;isConfigured;isRegistered;sipConnector;preferredMimeTypesVideoCodecs;excludeMimeTypesVideoCodecs;constructor(n,{preferredMimeTypesVideoCodecs:t,excludeMimeTypesVideoCodecs:o}={}){return this.preferredMimeTypesVideoCodecs=t,this.excludeMimeTypesVideoCodecs=o,this.sipConnector=n,new Proxy(this,{get:(r,s,i)=>{if(typeof s=="string"&&Rn.has(s)&&s in this.sipConnector){const l=Reflect.get(this.sipConnector,s,this.sipConnector);return typeof l=="function"?l.bind(this.sipConnector):l}const a=Reflect.get(r,s,i);return typeof a=="function"?a.bind(r):a}})}connectToServer=async n=>{const{userAgent:t,sipWebSocketServerURL:o,sipServerUrl:r,remoteAddress:s,displayName:i,name:a,password:l,isRegisteredUser:d,isDisconnectOnFail:C}=n;return c.logger("connectToServer",n),this.sipConnector.connect({userAgent:t,sipWebSocketServerURL:o,sipServerUrl:r,remoteAddress:s,displayName:i,password:l,user:a,register:d}).then(g=>(c.logger("connectToServer then"),{ua:g,isSuccessful:!0})).catch(async g=>(c.logger("connectToServer catch: error",g),C===!0?this.sipConnector.disconnect().then(()=>q(g)).catch(()=>q(g)):q(g)))};callToServer=async n=>{const{conference:t,mediaStream:o,extraHeaders:r,iceServers:s,contentHint:i,simulcastEncodings:a,degradationPreference:l,sendEncodings:d,offerToReceiveAudio:C,offerToReceiveVideo:g,directionVideo:x,directionAudio:U,setRemoteStreams:f,onBeforeProgressCall:m,onSuccessProgressCall:S,onEnterPurgatory:h,onEnterConference:y,onFailProgressCall:p,onFinishProgressCall:A,onEndedCall:T}=n,_=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:f}),O=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{_().catch(v)}}),b=B({degradationPreference:l},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});c.logger("callToServer",n);const I=async()=>(c.logger("startCall"),this.sipConnector.call({mediaStream:o,extraHeaders:r,iceServers:s,contentHint:i,offerToReceiveAudio:C,offerToReceiveVideo:g,directionVideo:x,directionAudio:U,sendEncodings:w({mediaStream:o,simulcastEncodings:a,sendEncodings:d}),number:t,onAddedTransceiver:b,ontrack:O}));let M=!1,E;const D=(c.logger("subscribeEnterConference: onEnterConference",y),h??y?this.sipConnector.onApi("enterRoom",({room:u})=>{c.logger("enterRoom",{_room:u,isSuccessProgressCall:M}),E=u,P(E)?h&&h():y&&y({isSuccessProgressCall:M})}):()=>{}),V=u=>(c.logger("onSuccess"),M=!0,_().catch(v),S&&S({isPurgatory:P(E)}),this.sipConnector.onceRaceCall(["ended","failed"],()=>{D(),T&&T()}),u),L=u=>{throw c.logger("onFail"),p&&p(),D(),u},H=()=>{c.logger("onFinish"),A&&A()};return c.logger("onBeforeProgressCall"),m&&m(t),I().then(V).catch(u=>L(u)).finally(H)};disconnectFromServer=async()=>this.sipConnector.disconnect().then(()=>(c.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(n=>(c.logger("disconnectFromServer: catch",n),{isSuccessful:!1}));answerToIncomingCall=async n=>{const{mediaStream:t,extraHeaders:o,iceServers:r,contentHint:s,simulcastEncodings:i,degradationPreference:a,sendEncodings:l,offerToReceiveAudio:d,offerToReceiveVideo:C,directionVideo:g,directionAudio:x,setRemoteStreams:U,onBeforeProgressCall:f,onSuccessProgressCall:m,onEnterPurgatory:S,onEnterConference:h,onFailProgressCall:y,onFinishProgressCall:p,onEndedCall:A}=n,T=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:U}),_=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{T().catch(v)}}),O=B({degradationPreference:a},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});c.logger("answerToIncomingCall",n);const b=async()=>this.sipConnector.answerToIncomingCall({mediaStream:t,extraHeaders:o,iceServers:r,contentHint:s,offerToReceiveAudio:d,offerToReceiveVideo:C,directionVideo:g,directionAudio:x,sendEncodings:w({mediaStream:t,simulcastEncodings:i,sendEncodings:l}),onAddedTransceiver:O,ontrack:_}),I=()=>{const{remoteCallerData:u}=this.sipConnector;return u.incomingNumber};let M=!1,E;const D=(c.logger("subscribeEnterConference: onEnterConference",h),S??h?this.sipConnector.onApi("enterRoom",u=>{c.logger("enterRoom",{_room:u,isSuccessProgressCall:M}),E=u,P(E)?S&&S():h&&h({isSuccessProgressCall:M})}):()=>{}),V=u=>(c.logger("onSuccess"),M=!0,T().catch(v),m&&m({isPurgatory:P(E)}),this.sipConnector.onceRaceCall(["ended","failed"],()=>{D(),A&&A()}),u),L=u=>{throw c.logger("onFail"),y&&y(),D(),u},H=()=>{c.logger("onFinish"),p&&p()};if(c.logger("onBeforeProgressCall"),f){const u=I();f(u)}return b().then(V).catch(u=>L(u)).finally(H)};updatePresentation=async({mediaStream:n,isP2P:t,maxBitrate:o,contentHint:r,simulcastEncodings:s,degradationPreference:i,sendEncodings:a,preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d})=>{const C=B({degradationPreference:i},{preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d});return c.logger("updatePresentation"),this.sipConnector.updatePresentation(n,{isP2P:t,maxBitrate:o,contentHint:r,sendEncodings:w({mediaStream:n,simulcastEncodings:s,sendEncodings:a}),onAddedTransceiver:C})};startPresentation=async({mediaStream:n,isP2P:t,maxBitrate:o,contentHint:r,simulcastEncodings:s,degradationPreference:i,sendEncodings:a,preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d,callLimit:C})=>{const g=B({degradationPreference:i},{preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d});return c.logger("startPresentation"),this.sipConnector.startPresentation(n,{isP2P:t,maxBitrate:o,contentHint:r,callLimit:C,sendEncodings:w({mediaStream:n,simulcastEncodings:s,sendEncodings:a}),onAddedTransceiver:g})};stopShareSipConnector=async({isP2P:n=!1}={})=>(c.logger("stopShareSipConnector"),this.sipConnector.stopPresentation({isP2P:n}).catch(t=>{c.logger(t)}));sendRefusalToTurnOnMic=async()=>{c.logger("sendRefusalToTurnOnMic"),await this.sipConnector.sendRefusalToTurnOnMic().catch(n=>{c.logger("sendRefusalToTurnOnMic: error",n)})};sendRefusalToTurnOnCam=async()=>{c.logger("sendRefusalToTurnOnCam"),await this.sipConnector.sendRefusalToTurnOnCam().catch(n=>{c.logger("sendRefusalToTurnOnCam: error",n)})};sendMediaState=async({isEnabledCam:n,isEnabledMic:t})=>{c.logger("sendMediaState"),await this.sipConnector.sendMediaState({cam:n,mic:t})};replaceMediaStream=async(n,{deleteExisting:t,addMissing:o,forceRenegotiation:r,contentHint:s,simulcastEncodings:i,degradationPreference:a,sendEncodings:l}={})=>{const d=B({degradationPreference:a},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});return c.logger("replaceMediaStream"),this.sipConnector.replaceMediaStream(n,{deleteExisting:t,addMissing:o,forceRenegotiation:r,contentHint:s,sendEncodings:w({mediaStream:n,simulcastEncodings:i,sendEncodings:l}),onAddedTransceiver:d})};askPermissionToEnableCam=async()=>{c.logger("askPermissionToEnableCam"),await this.sipConnector.askPermissionToEnableCam()};resolveHandleReadyRemoteStreamsDebounced=({onReadyRemoteStreams:n})=>fe.debounce(()=>{const t=this.sipConnector.getRemoteStreams();c.logger("remoteStreams",t),t&&n(t)},200);resolveHandleReadyRemoteStreams=({onReadyRemoteStreams:n})=>({track:t})=>{hn(t)&&n()};getRemoteStreams=()=>(c.logger("getRemoteStreams"),this.sipConnector.getRemoteStreams());onUseLicense=n=>(c.logger("onUseLicense"),this.sipConnector.onApi("useLicense",n));onMustStopPresentation=n=>(c.logger("onMustStopPresentation"),this.sipConnector.onApi("mustStopPresentation",n));onMoveToSpectators=n=>(c.logger("onMoveToSpectators"),this.sipConnector.onApi("participant:move-request-to-spectators",n));onMoveToParticipants=n=>(c.logger("onMoveToParticipants"),this.sipConnector.onApi("participant:move-request-to-participants",n))}exports.SipConnector=c.SipConnector;exports.causes=c.causes;exports.constants=c.constants;exports.disableDebug=c.disableDebug;exports.enableDebug=c.enableDebug;exports.eventNames=c.eventNames;exports.hasCanceledStartPresentationError=c.hasCanceledStartPresentationError;exports.debug=v;exports.EEventsMainCAM=N;exports.EEventsMic=Z;exports.EEventsSyncMediaState=ee;exports.EMimeTypesVideoCodecs=te;exports.EUseLicense=ne;exports.SipConnectorFacade=mn;exports.getCodecFromSender=oe;exports.hasCanceledCallError=un;exports.resolveVideoSendingBalancer=an;exports.setParametersToSender=X;exports.tools=Xe;
|