sip-connector 6.19.0 → 6.20.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.
@@ -4,12 +4,8 @@ import type { IncomingInfoEvent, OutgoingInfoEvent } from '@krivega/jssip/lib/RT
4
4
  import type { IncomingRequest } from '@krivega/jssip/lib/SIPMessage';
5
5
  import type { IncomingRTCSessionEvent, RegisteredEvent, UnRegisteredEvent } from '@krivega/jssip/lib/UA';
6
6
  import type { TEventSession, TEventUA } from './eventNames';
7
- import type { TCustomError } from './types';
7
+ import type { TCustomError, TJsSIP } from './types';
8
8
  export declare const hasCanceledCallError: (error?: TCustomError) => boolean;
9
- export type TJsSIP = {
10
- UA: typeof UA;
11
- WebSocketInterface: typeof WebSocketInterface;
12
- };
13
9
  type TChannels = {
14
10
  inputChannels: string;
15
11
  outputChannels: string;
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var $n=Object.defineProperty;var Ln=(e,t,n)=>t in e?$n(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var c=(e,t,n)=>(Ln(e,typeof t!="symbol"?t+"":t,n),n);Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const O=require("@krivega/cancelable-promise"),we=require("events-constructor"),J=require("debug"),Un=require("sequent-promises"),Fn=require("stack-promises"),kn="Connection Error",dt="Request Timeout",Bn="SIP Failure Code",Hn="Internal Error",xn="Busy",Et="Rejected",Wn="Redirected",qn="Unavailable",Ce="Not Found",Vn="Address Incomplete",jn="Incompatible SDP",Gn="Missing SDP",Yn="Authentication Error",ht="Terminated",Xn="WebRTC Error",ft="Canceled",zn="No Answer",Jn="Expires",Kn="No ACK",Qn="Dialog Error",Zn="User Denied Media Access",me="Bad Media Description",er="RTP Timeout",tr=Object.freeze(Object.defineProperty({__proto__:null,ADDRESS_INCOMPLETE:Vn,AUTHENTICATION_ERROR:Yn,BAD_MEDIA_DESCRIPTION:me,BUSY:xn,BYE:ht,CANCELED:ft,CONNECTION_ERROR:kn,DIALOG_ERROR:Qn,EXPIRES:Jn,INCOMPATIBLE_SDP:jn,INTERNAL_ERROR:Hn,MISSING_SDP:Gn,NOT_FOUND:Ce,NO_ACK:Kn,NO_ANSWER:zn,REDIRECTED:Wn,REJECTED:Et,REQUEST_TIMEOUT:dt,RTP_TIMEOUT:er,SIP_FAILURE_CODE:Bn,UNAVAILABLE:qn,USER_DENIED_MEDIA_ACCESS:Zn,WEBRTC_ERROR:Xn},Symbol.toStringTag,{value:"Module"})),St="incomingCall",gt="declinedIncomingCall",Tt="failedIncomingCall",Ct="terminatedIncomingCall",Re="connecting",ce="connected",w="disconnected",ue="newRTCSession",x="registered",mt="unregistered",W="registrationFailed",nr="newMessage",Rt="sipEvent",Nt="availableSecondRemoteStream",vt="notAvailableSecondRemoteStream",At="mustStopPresentation",le="shareState",pt="enterRoom",bt="useLicense",yt="peerconnection:confirmed",It="peerconnection:ontrack",_e="channels",Ot="channels:notify",Mt="ended:fromserver",Pt="main-cam-control",Dt="admin-stop-main-cam",wt="admin-start-main-cam",$t="admin-stop-mic",Lt="admin-start-mic",de="admin-force-sync-media-state",Ut="participant:added-to-list-moderators",Ft="participant:removed-from-list-moderators",kt="participant:move-request-to-conference",Bt="participant:move-request-to-stream",Ht="participant:canceling-word-request",xt="webcast:started",Wt="webcast:stopped",qt="account:changed",Vt="account:deleted",jt="conference:participant-token-issued",q="ended",rr="sending",sr="reinvite",or="replaces",ir="refer",ar="progress",cr="accepted",Ee="confirmed",he="peerconnection",U="failed",ur="muted",lr="unmuted",Gt="newDTMF",Yt="newInfo",_r="hold",dr="unhold",Er="update",hr="sdp",fr="icecandidate",Sr="getusermediafailed",gr="peerconnection:createofferfailed",Tr="peerconnection:createanswerfailed",Cr="peerconnection:setlocaldescriptionfailed",mr="peerconnection:setremotedescriptionfailed",Rr="presentation:start",Nr="presentation:started",vr="presentation:end",Xt="presentation:ended",fe="presentation:failed",zt=[St,gt,Ct,Tt,Ht,Bt,kt,Ot,jt,qt,Vt,xt,Wt,Ut,Ft],Ne=[Re,ce,w,ue,x,mt,W,nr,Rt],Jt=[Nt,vt,At,le,pt,bt,yt,It,_e,Mt,Pt,wt,Dt,$t,Lt,de],ve=[q,Re,rr,sr,or,ir,ar,cr,Ee,he,U,ur,lr,Gt,Yt,_r,dr,Er,hr,fr,Sr,gr,Tr,Cr,mr,Rr,Nr,vr,Xt,fe],Kt=[...Ne,...zt],Qt=[...ve,...Jt],Ar=Object.freeze(Object.defineProperty({__proto__:null,SESSION_EVENT_NAMES:Qt,SESSION_JSSIP_EVENT_NAMES:ve,SESSION_SYNTHETICS_EVENT_NAMES:Jt,UA_EVENT_NAMES:Kt,UA_JSSIP_EVENT_NAMES:Ne,UA_SYNTHETICS_EVENT_NAMES:zt},Symbol.toStringTag,{value:"Module"})),pr=e=>{const t=[];return e&&t.push(`X-Vinteo-Remote: ${e}`),t},br="content-type",yr="x-webrtc-enter-room",te="application/vinteo.webrtc.sharedesktop",Ir="application/vinteo.webrtc.roomname",Or="application/vinteo.webrtc.channels",Mr="application/vinteo.webrtc.mediastate",Pr="application/vinteo.webrtc.refusal",$e="application/vinteo.webrtc.maincam",Dr="application/vinteo.webrtc.mic",wr="application/vinteo.webrtc.uselic",$r="X-WEBRTC-USE-LICENSE",Le="X-WEBRTC-INPUT-CHANNELS",Ue="X-WEBRTC-OUTPUT-CHANNELS",Lr="X-WEBRTC-MAINCAM",Ur="X-WEBRTC-MIC",Fe="X-WEBRTC-SYNC",Fr="X-WEBRTC-MAINCAM-RESOLUTION",kr="X-WEBRTC-MEDIA-STATE",Br="X-Vinteo-Media-Type",Hr="X-Vinteo-MainCam-State",xr="X-Vinteo-Mic-State",Wr="application/vinteo.webrtc.notify",qr="X-VINTEO-NOTIFY",k="x-webrtc-share-state",Vr=`${k}: LETMESTARTPRESENTATION`,jr=`${k}: STOPPRESENTATION`,Zt="YOUCANRECEIVECONTENT",en="CONTENTEND",Gr="YOUMUSTSTOPSENDCONTENT",Yr=`${k}: ${Zt}`,Xr=`${k}: ${en}`,zr="X-WEBRTC-REQUEST-ENABLE-MEDIA-DEVICE",Jr=`${zr}: LETMESTARTMAINCAM`,Ae="sip-connector",_=J(Ae),Kr=()=>{J.enable(`${Ae}`)},Qr=()=>{J.enable(`-${Ae}`)};var M=(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))(M||{}),V=(e=>(e.ADMIN_STOP_MIC="ADMINSTOPMIC",e.ADMIN_START_MIC="ADMINSTARTMIC",e))(V||{}),j=(e=>(e.ADMIN_SYNC_FORCED="1",e.ADMIN_SYNC_NOT_FORCED="0",e))(j||{}),tn=(e=>(e.AUDIO="AUDIO",e.VIDEO="VIDEO",e.AUDIOPLUSPRESENTATION="AUDIOPLUSPRESENTATION",e))(tn||{});function Zr(e){return t=>`sip:${t}@${e}`}const es=(e,t)=>()=>Math.floor(Math.random()*(t-e))+e,ke=e=>e.trim().replaceAll(" ","_"),ts=es(1e5,99999999),ne=(e,{videoMode:t,audioMode:n}={})=>{if(!e||t==="recvonly"&&n==="recvonly")return;const r=n==="recvonly"?[]:e.getAudioTracks(),s=t==="recvonly"?[]:e.getVideoTracks(),o=[...r,...s],i=new MediaStream(o);return i.getTracks=()=>[...i.getAudioTracks(),...i.getVideoTracks()],i},ns=e=>e.some(n=>{const{kind:r}=n;return r==="video"}),rs="Error decline with 603",ss=e=>e.message===rs,os=(e,t)=>e.find(n=>n.track&&t.getTracks().includes(n.track)),nn=1,rn=e=>(t,n)=>n!==void 0&&t!==n||n===void 0&&t!==e,is=rn(nn),as=(e,t)=>{const n=e===void 0?void 0:Math.max(e,nn);if(n!==void 0&&is(n,t))return n},cs=rn(),us=(e,t)=>{if(cs(e,t))return e},sn=async(e,t,n)=>{const r=e.getParameters();(r.encodings===void 0||r.encodings.length===0)&&(r.encodings=[{}]);const[s]=r.encodings,o=s.scaleResolutionDownBy,i=as(t.scaleResolutionDownBy,o);let a=!1;i!==void 0&&(r.encodings[0].scaleResolutionDownBy=i,a=!0);const u=s.maxBitrate,l=us(t.maxBitrate,u);return l!==void 0&&(r.encodings[0].maxBitrate=l,a=!0),a?(n&&n(r),e.setParameters(r).then(()=>({parameters:r,isChanged:a}))):{parameters:r,isChanged:a}},ls=async(e,t,n)=>{const r=os(e,t);if(r)return sn(r,{maxBitrate:n})},_s=486,ds=487,Se="local",Be="remote",Es=(e=new Error)=>{const{originator:t,cause:n}=e;return O.isCanceledError(e)?!0:typeof n=="string"?n===dt||n===Et||t===Se&&(n===ft||n===ht):!1},D="SipConnector",hs="channels",fs="WebcastStarted",Ss="WebcastStopped",gs="accountChanged",Ts="accountDeleted",Cs="addedToListModerators",ms="removedFromListModerators",Rs="WebcastParticipationAccepted",Ns="WebcastParticipationRejected",vs="ParticipantMovedToWebcast",As="ConferenceParticipantTokenIssued";class ps{constructor({JsSIP:t}){c(this,"_isRegisterConfig",!1);c(this,"_connectionConfiguration",{});c(this,"_remoteStreams",{});c(this,"JsSIP");c(this,"_sessionEvents");c(this,"_uaEvents");c(this,"_cancelableConnect");c(this,"_cancelableCreateUa");c(this,"_cancelableDisconnect");c(this,"_cancelableSet");c(this,"_cancelableCall");c(this,"_cancelableAnswer");c(this,"_cancelableSendDTMF");c(this,"getSipServerUrl",t=>t);c(this,"promisePendingStartPresentation");c(this,"promisePendingStopPresentation");c(this,"ua");c(this,"session");c(this,"incomingSession");c(this,"_streamPresentationCurrent");c(this,"socket");c(this,"connect",async t=>(this._cancelRequests(),this._cancelableConnect.request(t)));c(this,"createUa",async t=>this._cancelableCreateUa.request(t));c(this,"set",async t=>this._cancelableSet.request(t));c(this,"call",async t=>this._cancelableCall.request(t));c(this,"disconnect",async()=>(this._cancelRequests(),this._disconnectWithoutCancelRequests()));c(this,"answerToIncomingCall",async t=>this._cancelableAnswer.request(t));c(this,"sendDTMF",async t=>this._cancelableSendDTMF.request(t));c(this,"hangUp",async()=>(this._cancelRequests(),this._hangUpWithoutCancelRequests()));c(this,"tryRegister",async()=>{if(!this.isRegisterConfig)throw new Error("Config is not registered");this._uaEvents.trigger(Re,void 0);try{await this.unregister()}catch(t){_("tryRegister",t)}return this.register()});c(this,"declineToIncomingCall",async({statusCode:t=ds}={})=>new Promise((n,r)=>{if(!this.isAvailableIncomingCall){r(new Error("no incomingSession"));return}const s=this.incomingSession,o=this.remoteCallerData;this._cancelableCall.cancelRequest(),this._cancelableAnswer.cancelRequest(),this.removeIncomingSession(),this._uaEvents.trigger(gt,o),n(s.terminate({status_code:t}))}));c(this,"busyIncomingCall",async()=>this.declineToIncomingCall({statusCode:_s}));c(this,"removeIncomingSession",()=>{delete this.incomingSession});c(this,"handleNewRTCSession",({originator:t,session:n})=>{if(t===Be){this.incomingSession=n;const r=this.remoteCallerData;n.on(U,s=>{this.removeIncomingSession(),s.originator===Se?this._uaEvents.trigger(Ct,r):this._uaEvents.trigger(Tt,r)}),this._uaEvents.trigger(St,r)}});c(this,"_connect",async t=>this.createUa(t).then(async()=>this._start()));c(this,"_createUa",async({displayName:t="",user:n,password:r,register:s=!1,sipServerUrl:o,sipWebSocketServerURL:i,remoteAddress:a,extraHeaders:u=[],sdpSemantics:l="plan-b",sessionTimers:d=!1,registerExpires:E=60*5,connectionRecoveryMinInterval:h=2,connectionRecoveryMaxInterval:S=6,userAgent:g})=>{if(!o)throw new Error("sipServerUrl is required");if(!i)throw new Error("sipWebSocketServerURL is required");if(s&&!n)throw new Error("user is required for authorized connection");if(s&&!r)throw new Error("password is required for authorized connection");this._connectionConfiguration={sipServerUrl:o,displayName:t,register:s,user:n,password:r},this._init({sipServerUrl:o,sipWebSocketServerURL:i});const C=s&&n?n.trim():`${ts()}`,m={password:r,register:s,display_name:ke(t),user_agent:g,sdp_semantics:l,sockets:[this.socket],uri:this.getSipServerUrl(C),session_timers:d,register_expires:E,connection_recovery_min_interval:h,connection_recovery_max_interval:S};this.ua&&await this._disconnectWithoutCancelRequests(),this._isRegisterConfig=!!m.register,this.ua=new this.JsSIP.UA(m),this._uaEvents.eachTriggers((N,v)=>{const y=Ne.find(f=>f===v);y&&this.ua&&this.ua.on(y,N)});const b=[...pr(a),...u];return this.ua.registrator().setExtraHeaders(b),this.ua});c(this,"_start",async()=>new Promise((t,n)=>{const{ua:r}=this;if(!r){n(new Error("this.ua is not initialized"));return}const s=()=>{a(),t(r)},o=u=>{a(),n(u)},i=()=>{this.isRegisterConfig?(this.on(x,s),this.on(W,o)):this.on(ce,s),this.on(w,o)},a=()=>{this.off(x,s),this.off(W,o),this.off(ce,s),this.off(w,o)};i(),this.on(ue,this.handleNewRTCSession),r.start()}));c(this,"_set",async({displayName:t,password:n})=>new Promise((r,s)=>{const{ua:o}=this;if(!o){s(new Error("this.ua is not initialized"));return}let i=!1,a=!1;t!==void 0&&t!==this._connectionConfiguration.displayName&&(i=o.set("display_name",ke(t)),this._connectionConfiguration.displayName=t),n!==void 0&&n!==this._connectionConfiguration.password&&(a=o.set("password",n),this._connectionConfiguration.password=n);const u=i||a;a&&this.isRegisterConfig?this.register().then(()=>{r(u)}).catch(s):u?r(u):s(u)}));c(this,"_disconnectWithoutCancelRequests",async()=>this._cancelableDisconnect.request());c(this,"_disconnect",async()=>{this.off(ue,this.handleNewRTCSession);const t=new Promise(n=>{this.once(w,()=>{delete this.ua,n()})});return this.ua?(await this._hangUpWithoutCancelRequests(),this.ua?this.ua.stop():this._uaEvents.trigger(w,void 0)):this._uaEvents.trigger(w,void 0),t});c(this,"_call",async({number:t,mediaStream:n,extraHeaders:r=[],ontrack:s,iceServers:o,videoMode:i,audioMode:a,degradationPreference:u,offerToReceiveAudio:l=!0,offerToReceiveVideo:d=!0})=>new Promise((E,h)=>{const{ua:S}=this;if(!S){h(new Error("this.ua is not initialized"));return}this._connectionConfiguration.number=t,this._connectionConfiguration.answer=!1,this._handleCall({ontrack:s}).then(E).catch(h),this.session=S.call(this.getSipServerUrl(t),{extraHeaders:r,mediaStream:ne(n,{videoMode:i,audioMode:a}),eventHandlers:this._sessionEvents.triggers,videoMode:i,audioMode:a,degradationPreference:u,pcConfig:{iceServers:o},rtcOfferConstraints:{offerToReceiveAudio:l,offerToReceiveVideo:d}})}));c(this,"_answer",async({mediaStream:t,ontrack:n,extraHeaders:r=[],iceServers:s,videoMode:o,audioMode:i,degradationPreference:a})=>new Promise((u,l)=>{if(!this.isAvailableIncomingCall){l(new Error("no incomingSession"));return}this.session=this.incomingSession,this.removeIncomingSession();const{session:d}=this;if(!d){l(new Error("No session established"));return}this._sessionEvents.eachTriggers((h,S)=>{const g=ve.find(C=>C===S);g&&d.on(g,h)}),this._connectionConfiguration.answer=!0,this._connectionConfiguration.number=d.remote_identity.uri.user,this._handleCall({ontrack:n}).then(u).catch(l);const E=ne(t,{videoMode:o,audioMode:i});d.answer({extraHeaders:r,videoMode:o,audioMode:i,degradationPreference:a,mediaStream:E,pcConfig:{iceServers:s}})}));c(this,"_handleCall",async({ontrack:t})=>new Promise((n,r)=>{const s=()=>{this.onSession(he,d),this.onSession(Ee,E)},o=()=>{this.offSession(he,d),this.offSession(Ee,E)},i=()=>{this.onSession(U,u),this.onSession(q,u)},a=()=>{this.offSession(U,u),this.offSession(q,u)},u=h=>{o(),a(),r(h)};let l;const d=({peerconnection:h})=>{l=h,l.ontrack=S=>{this._sessionEvents.trigger(It,l),t&&t(S)}},E=()=>{l&&this._sessionEvents.trigger(yt,l),o(),a(),n(l)};s(),i()}));c(this,"_restoreSession",()=>{this._resetPresentation(),delete this._connectionConfiguration.number,delete this.session,this._remoteStreams={}});c(this,"_sendDTMF",async t=>new Promise((n,r)=>{const{session:s}=this;if(!s){r(new Error("No session established"));return}this.onceSession(Gt,({originator:o})=>{o===Se&&n()}),s.sendDTMF(t,{duration:120,interToneGap:600})}));c(this,"_hangUpWithoutCancelRequests",async()=>{if(this.ua&&this.session){const{session:t}=this;this._streamPresentationCurrent&&await this.stopPresentation(),this._restoreSession(),t.isEnded()||t.terminate()}});c(this,"_handleShareState",t=>{switch(t){case Zt:{this._sessionEvents.trigger(Nt,void 0);break}case en:{this._sessionEvents.trigger(vt,void 0);break}case Gr:{this._sessionEvents.trigger(At,void 0);break}}});c(this,"_maybeTriggerChannels",t=>{const n=t.getHeader(Le),r=t.getHeader(Ue);if(n&&r){const s={inputChannels:n,outputChannels:r};this._sessionEvents.trigger(_e,s)}});c(this,"_handleNotify",t=>{switch(t.cmd){case hs:{const n=t;this._triggerChannelsNotify(n);break}case fs:{const n=t;this._triggerWebcastStartedNotify(n);break}case Ss:{const n=t;this._triggerWebcastStoppedNotify(n);break}case Cs:{const n=t;this._triggerAddedToListModeratorsNotify(n);break}case ms:{const n=t;this._triggerRemovedFromListModeratorsNotify(n);break}case Rs:{const n=t;this._triggerParticipantMoveRequestToConference(n);break}case Ns:{const n=t;this._triggerParticipantCancelingWordRequest(n);break}case vs:{const n=t;this._triggerParticipantMoveRequestToStream(n);break}case gs:{this._triggerAccountChangedNotify();break}case Ts:{this._triggerAccountDeletedNotify();break}case As:{const n=t;this._triggerConferenceParticipantTokenIssued(n);break}default:_("unknown cmd",t.cmd)}});c(this,"_triggerRemovedFromListModeratorsNotify",({conference:t})=>{const n={conference:t};this._uaEvents.trigger(Ft,n)});c(this,"_triggerAddedToListModeratorsNotify",({conference:t})=>{const n={conference:t};this._uaEvents.trigger(Ut,n)});c(this,"_triggerWebcastStartedNotify",({body:{conference:t,type:n}})=>{const r={conference:t,type:n};this._uaEvents.trigger(xt,r)});c(this,"_triggerWebcastStoppedNotify",({body:{conference:t,type:n}})=>{const r={conference:t,type:n};this._uaEvents.trigger(Wt,r)});c(this,"_triggerAccountChangedNotify",()=>{this._uaEvents.trigger(qt,void 0)});c(this,"_triggerAccountDeletedNotify",()=>{this._uaEvents.trigger(Vt,void 0)});c(this,"_triggerConferenceParticipantTokenIssued",({body:{conference:t,participant:n,jwt:r}})=>{const s={conference:t,participant:n,jwt:r};this._uaEvents.trigger(jt,s)});c(this,"_triggerChannelsNotify",t=>{const n=t.input,r=t.output,s={inputChannels:n,outputChannels:r};this._uaEvents.trigger(Ot,s)});c(this,"_triggerParticipantMoveRequestToConference",({body:{conference:t}})=>{const n={conference:t};this._uaEvents.trigger(kt,n)});c(this,"_triggerParticipantCancelingWordRequest",({body:{conference:t}})=>{const n={conference:t};this._uaEvents.trigger(Ht,n)});c(this,"_triggerParticipantMoveRequestToStream",({body:{conference:t}})=>{const n={conference:t};this._uaEvents.trigger(Bt,n)});c(this,"_triggerEnterRoom",t=>{const n=t.getHeader(yr);this._sessionEvents.trigger(pt,n)});c(this,"_triggerShareState",t=>{const n=t.getHeader(k);this._sessionEvents.trigger(le,n)});c(this,"_triggerMainCamControl",t=>{const n=t.getHeader(Lr),r=t.getHeader(Fe),s=r===j.ADMIN_SYNC_FORCED;if(n===M.ADMIN_START_MAIN_CAM)this._sessionEvents.trigger(wt,{isSyncForced:s});else if(n===M.ADMIN_STOP_MAIN_CAM)this._sessionEvents.trigger(Dt,{isSyncForced:s});else if((n===M.RESUME_MAIN_CAM||n===M.PAUSE_MAIN_CAM)&&r)this._sessionEvents.trigger(de,{isSyncForced:s});else{const o=t.getHeader(Fr);this._sessionEvents.trigger(Pt,{mainCam:n,resolutionMainCam:o})}});c(this,"_triggerMicControl",t=>{const n=t.getHeader(Ur),s=t.getHeader(Fe)===j.ADMIN_SYNC_FORCED;n===V.ADMIN_START_MIC?this._sessionEvents.trigger(Lt,{isSyncForced:s}):n===V.ADMIN_STOP_MIC&&this._sessionEvents.trigger($t,{isSyncForced:s})});c(this,"_triggerUseLicense",t=>{const n=t.getHeader($r);this._sessionEvents.trigger(bt,n)});c(this,"_handleNewInfo",t=>{const{originator:n}=t;if(n!=="remote")return;const{request:r}=t,s=r.getHeader(br);if(s)switch(s){case Ir:{this._triggerEnterRoom(r),this._maybeTriggerChannels(r);break}case Wr:{this._maybeHandleNotify(r);break}case te:{this._triggerShareState(r);break}case $e:{this._triggerMainCamControl(r);break}case Dr:{this._triggerMicControl(r);break}case wr:{this._triggerUseLicense(r);break}}});c(this,"_handleSipEvent",({request:t})=>{this._maybeHandleNotify(t)});c(this,"_maybeHandleNotify",t=>{const n=t.getHeader(qr);if(n){const r=JSON.parse(n);this._handleNotify(r)}});c(this,"_handleEnded",t=>{const{originator:n}=t;n===Be&&this._sessionEvents.trigger(Mt,t),this._restoreSession()});this.JsSIP=t,this._sessionEvents=new we(Qt),this._uaEvents=new we(Kt),this._cancelableConnect=new O.CancelableRequest(this._connect,{moduleName:D,afterCancelRequest:()=>{this._cancelableCreateUa.cancelRequest(),this._cancelableDisconnect.cancelRequest()}}),this._cancelableCreateUa=new O.CancelableRequest(this._createUa,{moduleName:D}),this._cancelableDisconnect=new O.CancelableRequest(this._disconnect,{moduleName:D}),this._cancelableSet=new O.CancelableRequest(this._set,{moduleName:D}),this._cancelableCall=new O.CancelableRequest(this._call,{moduleName:D}),this._cancelableAnswer=new O.CancelableRequest(this._answer,{moduleName:D}),this._cancelableSendDTMF=new O.CancelableRequest(this._sendDTMF,{moduleName:D}),this.onSession(le,this._handleShareState),this.onSession(Yt,this._handleNewInfo),this.on(Rt,this._handleSipEvent),this.onSession(U,this._handleEnded),this.onSession(q,this._handleEnded)}async register(){return new Promise((t,n)=>{this.isRegisterConfig&&this.ua?(this.ua.on(x,t),this.ua.on(W,n),this.ua.register()):n(new Error("Config is not registered"))})}async unregister(){return new Promise((t,n)=>{this.isRegistered&&this.ua?(this.ua.on(mt,t),this.ua.unregister()):n(new Error("ua is not registered"))})}async sendOptions(t,n,r){if(!this.ua)throw new Error("is not connected");return new Promise((s,o)=>{try{this.ua.sendOptions(t,n,{extraHeaders:r,eventHandlers:{succeeded:()=>{s()},failed:o}})}catch(i){o(i)}})}async ping(t,n){var s;if(!((s=this.ua)!=null&&s.configuration.uri))throw new Error("is not connected");const r=this.ua.configuration.uri;return this.sendOptions(r,t,n)}async replaceMediaStream(t,n){if(!this.session)throw new Error("No session established");return this.session.replaceMediaStream(t,n)}async askPermissionToEnableCam(t={}){if(!this.session)throw new Error("No session established");const n=[Jr];return this.session.sendInfo($e,void 0,{noTerminateWhenError:!0,...t,extraHeaders:n}).catch(r=>{if(ss(r))throw r})}get isPendingPresentation(){return!!this.promisePendingStartPresentation||!!this.promisePendingStopPresentation}async _sendPresentation(t,n,{maxBitrate:r,degradationPreference:s,isNeedReinvite:o=!0,isP2P:i=!1}){const a=ne(n);this._streamPresentationCurrent=a;const u=i?[Yr]:[Vr],l=t.sendInfo(te,void 0,{extraHeaders:u}).then(async()=>t.startPresentation(a,o,s)).then(async()=>{const{connection:d}=this;if(!d||r===void 0)return;const E=d.getSenders();return ls(E,n,r)}).then(()=>n).catch(d=>{throw this._sessionEvents.trigger(fe,d),d});return this.promisePendingStartPresentation=l,l.finally(()=>{this.promisePendingStartPresentation=void 0})}async startPresentation(t,{isNeedReinvite:n=!0,isP2P:r=!1,maxBitrate:s,degradationPreference:o}={}){const i=this.establishedSession;if(!i)throw new Error("No session established");if(this._streamPresentationCurrent)throw new Error("Presentation is already started");return this._sendPresentation(i,t,{isNeedReinvite:n,isP2P:r,maxBitrate:s,degradationPreference:o})}async stopPresentation({isP2P:t=!1}={}){const n=this._streamPresentationCurrent;let r=this.promisePendingStartPresentation??Promise.resolve();const s=t?[Xr]:[jr],o=this.establishedSession;return o&&n&&(r=r.then(async()=>o.sendInfo(te,void 0,{extraHeaders:s})).then(async()=>o.stopPresentation(n)).catch(i=>{throw this._sessionEvents.trigger(fe,i),i})),!o&&n&&this._sessionEvents.trigger(Xt,n),this.promisePendingStopPresentation=r,r.finally(()=>{this._resetPresentation()})}async updatePresentation(t,{isP2P:n=!1,maxBitrate:r,degradationPreference:s}={}){const o=this.establishedSession;if(!o)throw new Error("No session established");if(!this._streamPresentationCurrent)throw new Error("Presentation has not started yet");return this.promisePendingStartPresentation&&await this.promisePendingStartPresentation,this._sendPresentation(o,t,{isP2P:n,maxBitrate:r,degradationPreference:s,isNeedReinvite:!1})}_resetPresentation(){delete this._streamPresentationCurrent,this.promisePendingStartPresentation=void 0,this.promisePendingStopPresentation=void 0}on(t,n){return this._uaEvents.on(t,n)}once(t,n){return this._uaEvents.once(t,n)}onceRace(t,n){return this._uaEvents.onceRace(t,n)}async wait(t){return this._uaEvents.wait(t)}off(t,n){this._uaEvents.off(t,n)}onSession(t,n){return this._sessionEvents.on(t,n)}onceSession(t,n){return this._sessionEvents.once(t,n)}onceRaceSession(t,n){return this._sessionEvents.onceRace(t,n)}async waitSession(t){return this._sessionEvents.wait(t)}offSession(t,n){this._sessionEvents.off(t,n)}isConfigured(){return!!this.ua}getConnectionConfiguration(){return{...this._connectionConfiguration}}getRemoteStreams(){if(!this.connection)return;const n=this.connection.getReceivers().map(({track:r})=>r);return ns(n)?this._generateStreams(n):this._generateAudioStreams(n)}get connection(){var n;return(n=this.session)==null?void 0:n.connection}get remoteCallerData(){var t,n,r,s,o,i;return{displayName:(n=(t=this.incomingSession)==null?void 0:t.remote_identity)==null?void 0:n.display_name,host:(s=(r=this.incomingSession)==null?void 0:r.remote_identity)==null?void 0:s.uri.host,incomingNumber:(i=(o=this.incomingSession)==null?void 0:o.remote_identity)==null?void 0:i.uri.user,session:this.incomingSession}}get requested(){return this._cancelableConnect.requested||this._cancelableCreateUa.requested||this._cancelableCall.requested||this._cancelableAnswer.requested}get establishedSession(){return this.session&&this.session.isEstablished()?this.session:void 0}get isRegistered(){return!!this.ua&&this.ua.isRegistered()}get isRegisterConfig(){return!!this.ua&&this._isRegisterConfig}get isCallActive(){return!!(this.ua&&this.session)}get isAvailableIncomingCall(){return!!this.incomingSession}_init({sipServerUrl:t,sipWebSocketServerURL:n}){this.getSipServerUrl=Zr(t),this.socket=new this.JsSIP.WebSocketInterface(n)}_generateStream(t,n){const{id:r}=t,s=this._remoteStreams[r]||new MediaStream;return n&&s.addTrack(n),s.addTrack(t),this._remoteStreams[r]=s,s}_generateAudioStream(t){const{id:n}=t,r=this._remoteStreams[n]||new MediaStream;return r.addTrack(t),this._remoteStreams[n]=r,r}_generateStreams(t){const n=[];return t.forEach((r,s)=>{if(r.kind==="audio")return;const o=r,i=t[s-1];let a;i&&i.kind==="audio"&&(a=i);const u=this._generateStream(o,a);n.push(u)}),n}_generateAudioStreams(t){return t.map(r=>this._generateAudioStream(r))}_cancelRequests(){this._cancelActionsRequests(),this._cancelCallRequests(),this._cancelConnectRequests()}_cancelConnectRequests(){this._cancelableConnect.cancelRequest()}_cancelCallRequests(){this._cancelableCall.cancelRequest(),this._cancelableAnswer.cancelRequest()}_cancelActionsRequests(){this._cancelableAnswer.cancelRequest(),this._cancelableSendDTMF.cancelRequest()}async waitChannels(){return this.waitSession(_e)}async waitSyncMediaState(){return this.waitSession(de)}async sendChannels({inputChannels:t,outputChannels:n}){if(!this.session)throw new Error("No session established");const r=`${Le}: ${t}`,s=`${Ue}: ${n}`,o=[r,s];return this.session.sendInfo(Or,void 0,{extraHeaders:o})}async sendMediaState({cam:t,mic:n},r={}){if(!this.session)throw new Error("No session established");const s=`${kr}: currentstate`,o=`${Hr}: ${Number(t)}`,i=`${xr}: ${Number(n)}`,a=[s,o,i];return this.session.sendInfo(Mr,void 0,{noTerminateWhenError:!0,...r,extraHeaders:a})}async _sendRefusalToTurnOn(t,n={}){if(!this.session)throw new Error("No session established");const a=[`${Br}: ${t==="mic"?0:1}`];return this.session.sendInfo(Pr,void 0,{noTerminateWhenError:!0,...n,extraHeaders:a})}async sendRefusalToTurnOnMic(t={}){if(!this.session)throw new Error("No session established");return this._sendRefusalToTurnOn("mic",{noTerminateWhenError:!0,...t})}async sendRefusalToTurnOnCam(t={}){if(!this.session)throw new Error("No session established");return this._sendRefusalToTurnOn("cam",{noTerminateWhenError:!0,...t})}}const on="purgatory",F=e=>e===on,pe=e=>()=>(_("getRemoteStreams"),e.getRemoteStreams()),bs=({kind:e,readyState:t})=>e==="video"&&t==="live",an=e=>({track:t})=>{bs(t)&&e()};var H=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function be(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function ys(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var $=ys,Is=typeof H=="object"&&H&&H.Object===Object&&H,cn=Is,Os=cn,Ms=typeof self=="object"&&self&&self.Object===Object&&self,Ps=Os||Ms||Function("return this")(),K=Ps,Ds=K,ws=function(){return Ds.Date.now()},$s=ws,Ls=/\s/;function Us(e){for(var t=e.length;t--&&Ls.test(e.charAt(t)););return t}var Fs=Us,ks=Fs,Bs=/^\s+/;function Hs(e){return e&&e.slice(0,ks(e)+1).replace(Bs,"")}var xs=Hs,Ws=K,qs=Ws.Symbol,Q=qs,He=Q,un=Object.prototype,Vs=un.hasOwnProperty,js=un.toString,L=He?He.toStringTag:void 0;function Gs(e){var t=Vs.call(e,L),n=e[L];try{e[L]=void 0;var r=!0}catch{}var s=js.call(e);return r&&(t?e[L]=n:delete e[L]),s}var Ys=Gs,Xs=Object.prototype,zs=Xs.toString;function Js(e){return zs.call(e)}var Ks=Js,xe=Q,Qs=Ys,Zs=Ks,eo="[object Null]",to="[object Undefined]",We=xe?xe.toStringTag:void 0;function no(e){return e==null?e===void 0?to:eo:We&&We in Object(e)?Qs(e):Zs(e)}var Z=no;function ro(e){return e!=null&&typeof e=="object"}var B=ro,so=Z,oo=B,io="[object Symbol]";function ao(e){return typeof e=="symbol"||oo(e)&&so(e)==io}var ln=ao,co=xs,qe=$,uo=ln,Ve=0/0,lo=/^[-+]0x[0-9a-f]+$/i,_o=/^0b[01]+$/i,Eo=/^0o[0-7]+$/i,ho=parseInt;function fo(e){if(typeof e=="number")return e;if(uo(e))return Ve;if(qe(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=qe(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=co(e);var n=_o.test(e);return n||Eo.test(e)?ho(e.slice(2),n?2:8):lo.test(e)?Ve:+e}var So=fo,go=$,re=$s,je=So,To="Expected a function",Co=Math.max,mo=Math.min;function Ro(e,t,n){var r,s,o,i,a,u,l=0,d=!1,E=!1,h=!0;if(typeof e!="function")throw new TypeError(To);t=je(t)||0,go(n)&&(d=!!n.leading,E="maxWait"in n,o=E?Co(je(n.maxWait)||0,t):o,h="trailing"in n?!!n.trailing:h);function S(f){var R=r,p=s;return r=s=void 0,l=f,i=e.apply(p,R),i}function g(f){return l=f,a=setTimeout(A,t),d?S(f):i}function C(f){var R=f-u,p=f-l,P=t-R;return E?mo(P,o-p):P}function m(f){var R=f-u,p=f-l;return u===void 0||R>=t||R<0||E&&p>=o}function A(){var f=re();if(m(f))return b(f);a=setTimeout(A,C(f))}function b(f){return a=void 0,h&&r?S(f):(r=s=void 0,i)}function N(){a!==void 0&&clearTimeout(a),l=0,r=u=s=a=void 0}function v(){return a===void 0?i:b(re())}function y(){var f=re(),R=m(f);if(r=arguments,s=this,u=f,R){if(a===void 0)return g(u);if(E)return clearTimeout(a),a=setTimeout(A,t),S(u)}return a===void 0&&(a=setTimeout(A,t)),i}return y.cancel=N,y.flush=v,y}var No=Ro;const vo=be(No),ye=({getRemoteStreams:e,setRemoteStreams:t})=>vo(()=>{const n=e();_("remoteStreams",n),n&&t(n)},200),Ao=e=>async n=>{const{mediaStream:r,extraHeaders:s,iceServers:o,degradationPreference:i,setRemoteStreams:a,onBeforeProgressCall:u,onSuccessProgressCall:l,onEnterPurgatory:d,onEnterConference:E,onFailProgressCall:h,onFinishProgressCall:S,onEndedCall:g}=n,C=ye({setRemoteStreams:a,getRemoteStreams:pe(e)}),m=an(C);_("answerIncomingCall",n);const A=async()=>e.answerToIncomingCall({mediaStream:r,extraHeaders:s,iceServers:o,degradationPreference:i,ontrack:m}),b=()=>{const{remoteCallerData:T}=e;return T.incomingNumber};let N=!1,v;const f=(()=>(_("subscribeEnterConference: onEnterConference",E),d??E?e.onSession("enterRoom",T=>{_("enterRoom",{_room:T,isSuccessProgressCall:N}),v=T,F(v)?d&&d():E&&E({isSuccessProgressCall:N})}):()=>{}))(),R=T=>(_("onSuccess"),N=!0,C(),l&&l({isPurgatory:F(v)}),e.onceRaceSession(["ended","failed"],()=>{f(),g&&g()}),T),p=T=>{throw _("onFail"),h&&h(),f(),T},P=()=>{_("onFinish"),S&&S()};if(_("onBeforeProgressCall"),u){const T=b();u(T)}return A().then(R).catch(p).finally(P)},po=e=>async n=>{const{conference:r,mediaStream:s,extraHeaders:o,iceServers:i,degradationPreference:a,setRemoteStreams:u,onBeforeProgressCall:l,onSuccessProgressCall:d,onEnterPurgatory:E,onEnterConference:h,onFailProgressCall:S,onFinishProgressCall:g,onEndedCall:C}=n,m=ye({setRemoteStreams:u,getRemoteStreams:pe(e)}),A=an(m);_("callToServer",n);const b=async()=>(_("startCall"),e.call({mediaStream:s,extraHeaders:o,iceServers:i,degradationPreference:a,number:r,ontrack:A}));let N=!1,v;const f=(()=>(_("subscribeEnterConference: onEnterConference",h),E??h?e.onSession("enterRoom",T=>{_("enterRoom",{_room:T,isSuccessProgressCall:N}),v=T,F(v)?E&&E():h&&h({isSuccessProgressCall:N})}):()=>{}))(),R=T=>(_("onSuccess"),N=!0,m(),d&&d({isPurgatory:F(v)}),e.onceRaceSession(["ended","failed"],()=>{f(),C&&C()}),T),p=T=>{throw _("onFail"),S&&S(),f(),T},P=()=>{_("onFinish"),g&&g()};return _("onBeforeProgressCall"),l&&l(r),b().then(R).catch(p).finally(P)},se=e=>{if(!O.isCanceledError(e))throw e;return!1},bo=e=>async n=>{const{userAgent:r,sipWebSocketServerURL:s,sipServerUrl:o,remoteAddress:i,displayName:a,name:u,password:l,isRegisteredUser:d,sdpSemantics:E,isDisconnectOnFail:h}=n;return _("connectToServer",n),e.connect({userAgent:r,sdpSemantics:E,sipWebSocketServerURL:s,sipServerUrl:o,remoteAddress:i,displayName:a,password:l,user:u,register:d}).then(()=>(_("connectToServer then"),!0)).catch(async S=>(_("connectToServer catch: error",S),h===!0?e.disconnect().then(()=>se(S)).catch(()=>se(S)):se(S)))},yo=e=>async()=>(_("disconnectFromServer"),e.disconnect().then(()=>(_("disconnectFromServer: then"),!1)).catch(t=>(_("disconnectFromServer: catch",t),!1))),Ie=e=>{const{url:t,cause:n}=e;let r=t;return(n===me||n===Ce)&&(r=`${e.message.to.uri.user}@${e.message.to.uri.host}`),r};var _n=(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))(_n||{});const Io=(e=new Error)=>{var s;const{cause:t,socket:n}=e;let r="CONNECT_SERVER_FAILED";switch(t){case"Forbidden":{r="WRONG_USER_OR_PASSWORD";break}case me:{r="BAD_MEDIA_ERROR";break}case Ce:{r="NOT_FOUND_ERROR";break}default:n&&((s=n==null?void 0:n._ws)==null?void 0:s.readyState)===3?r="WS_CONNECTION_FAILED":Ie(e)&&(r="CONNECT_SERVER_FAILED_BY_LINK")}return r},Oo=(e=new Error)=>{const{code:t,cause:n,message:r}=e,s=Ie(e),o={};return r&&(o.message=r),s&&(o.link=s),t&&(o.code=t),n&&(o.cause=n),o},Mo=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:_n,getLinkError:Ie,getTypeFromError:Io,getValuesFromError:Oo},Symbol.toStringTag,{value:"Module"})),Po=({sessionId:e,remoteAddress:t,isMutedAudio:n,isMutedVideo:r,isRegistered:s,isPresentationCall:o})=>{const i=[],a=n?"0":"1",u=r?"0":"1";return i.push(`X-Vinteo-Mic-State: ${a}`,`X-Vinteo-MainCam-State: ${u}`),s||i.push("X-Vinteo-Purgatory-Call: yes"),e&&i.push(`X-Vinteo-Session: ${e}`),o&&i.push("X-Vinteo-Presentation-Call: yes"),t&&i.push(`X-Vinteo-Remote: ${t}`),i},Do=({appName:e,appVersion:t,browserName:n,browserVersion:r})=>{const s=`${e} ${t}`;return`ChromeNew - ${n?`${n} ${r}, ${s}`:s}`},wo=({isUnifiedSdpSemantic:e,appVersion:t,browserName:n,browserVersion:r,appName:s})=>e?Do({appVersion:t,browserName:n,browserVersion:r,appName:s}):"Chrome",$o=e=>async()=>{if(e.isCallActive)return _("askPermissionToEnableCam"),e.askPermissionToEnableCam()},Lo=e=>n=>(_("onMustStopPresentation"),e.onSession("mustStopPresentation",n)),Uo=e=>n=>(_("onUseLicense"),e.onSession("useLicense",n)),Fo=e=>async({isEnabledCam:n,isEnabledMic:r})=>{if(e.isCallActive)return _("sendMediaState"),e.sendMediaState({cam:n,mic:r})},ko=e=>async()=>{if(e.isCallActive)return _("sendRefusalToTurnOnCam"),e.sendRefusalToTurnOnCam().catch(n=>{_("sendRefusalToTurnOnCam: error",n)})},Bo=e=>async()=>{if(e.isCallActive)return _("sendRefusalToTurnOnMic"),e.sendRefusalToTurnOnMic().catch(n=>{_("sendRefusalToTurnOnMic: error",n)})},Ho=1e6,xo=({maxBitrate:e=Ho,sipConnector:t})=>async({mediaStream:r,isP2P:s=!1})=>(_("startPresentation"),t.startPresentation(r,{isP2P:s,maxBitrate:e})),Wo=({sipConnector:e})=>async({isP2P:n=!1}={})=>(_("stopShareSipConnector"),e.stopPresentation({isP2P:n}).catch(_)),qo=1e6,Vo=({sipConnector:e,maxBitrate:t=qo})=>async({mediaStream:r,isP2P:s=!1})=>(_("updatePresentation"),e.updatePresentation(r,{isP2P:s,maxBitrate:t}));var jo=$,Ge=Object.create,Go=function(){function e(){}return function(t){if(!jo(t))return{};if(Ge)return Ge(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}(),dn=Go;function Yo(){}var Oe=Yo,Xo=dn,zo=Oe;function G(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}G.prototype=Xo(zo.prototype);G.prototype.constructor=G;var Me=G;function Jo(e,t){for(var n=-1,r=t.length,s=e.length;++n<r;)e[s+n]=t[n];return e}var Ko=Jo,Qo=Z,Zo=B,ei="[object Arguments]";function ti(e){return Zo(e)&&Qo(e)==ei}var ni=ti,Ye=ni,ri=B,En=Object.prototype,si=En.hasOwnProperty,oi=En.propertyIsEnumerable,ii=Ye(function(){return arguments}())?Ye:function(e){return ri(e)&&si.call(e,"callee")&&!oi.call(e,"callee")},ai=ii,ci=Array.isArray,ee=ci,Xe=Q,ui=ai,li=ee,ze=Xe?Xe.isConcatSpreadable:void 0;function _i(e){return li(e)||ui(e)||!!(ze&&e&&e[ze])}var di=_i,Ei=Ko,hi=di;function hn(e,t,n,r,s){var o=-1,i=e.length;for(n||(n=hi),s||(s=[]);++o<i;){var a=e[o];t>0&&n(a)?t>1?hn(a,t-1,n,r,s):Ei(s,a):r||(s[s.length]=a)}return s}var fi=hn,Si=fi;function gi(e){var t=e==null?0:e.length;return t?Si(e,1):[]}var Ti=gi;function Ci(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}var mi=Ci,Ri=mi,Je=Math.max;function Ni(e,t,n){return t=Je(t===void 0?e.length-1:t,0),function(){for(var r=arguments,s=-1,o=Je(r.length-t,0),i=Array(o);++s<o;)i[s]=r[t+s];s=-1;for(var a=Array(t+1);++s<t;)a[s]=r[s];return a[t]=n(i),Ri(e,this,a)}}var vi=Ni;function Ai(e){return function(){return e}}var pi=Ai,bi=Z,yi=$,Ii="[object AsyncFunction]",Oi="[object Function]",Mi="[object GeneratorFunction]",Pi="[object Proxy]";function Di(e){if(!yi(e))return!1;var t=bi(e);return t==Oi||t==Mi||t==Ii||t==Pi}var fn=Di,wi=K,$i=wi["__core-js_shared__"],Li=$i,oe=Li,Ke=function(){var e=/[^.]+$/.exec(oe&&oe.keys&&oe.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Ui(e){return!!Ke&&Ke in e}var Fi=Ui,ki=Function.prototype,Bi=ki.toString;function Hi(e){if(e!=null){try{return Bi.call(e)}catch{}try{return e+""}catch{}}return""}var xi=Hi,Wi=fn,qi=Fi,Vi=$,ji=xi,Gi=/[\\^$.*+?()[\]{}|]/g,Yi=/^\[object .+?Constructor\]$/,Xi=Function.prototype,zi=Object.prototype,Ji=Xi.toString,Ki=zi.hasOwnProperty,Qi=RegExp("^"+Ji.call(Ki).replace(Gi,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Zi(e){if(!Vi(e)||qi(e))return!1;var t=Wi(e)?Qi:Yi;return t.test(ji(e))}var ea=Zi;function ta(e,t){return e==null?void 0:e[t]}var na=ta,ra=ea,sa=na;function oa(e,t){var n=sa(e,t);return ra(n)?n:void 0}var Sn=oa,ia=Sn,aa=function(){try{var e=ia(Object,"defineProperty");return e({},"",{}),e}catch{}}(),ca=aa;function ua(e){return e}var la=ua,_a=pi,Qe=ca,da=la,Ea=Qe?function(e,t){return Qe(e,"toString",{configurable:!0,enumerable:!1,value:_a(t),writable:!0})}:da,ha=Ea,fa=800,Sa=16,ga=Date.now;function Ta(e){var t=0,n=0;return function(){var r=ga(),s=Sa-(r-n);if(n=r,s>0){if(++t>=fa)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var Ca=Ta,ma=ha,Ra=Ca,Na=Ra(ma),va=Na,Aa=Ti,pa=vi,ba=va;function ya(e){return ba(pa(e,void 0,Aa),e+"")}var Ia=ya,Oa=Sn,Ma=K,Pa=Oa(Ma,"WeakMap"),Da=Pa,Ze=Da,wa=Ze&&new Ze,$a=wa;function La(){}var Ua=La,et=$a,Fa=Ua,ka=et?function(e){return et.get(e)}:Fa,gn=ka,Ba={},Ha=Ba,tt=Ha,xa=Object.prototype,Wa=xa.hasOwnProperty;function qa(e){for(var t=e.name+"",n=tt[t],r=Wa.call(tt,t)?n.length:0;r--;){var s=n[r],o=s.func;if(o==null||o==e)return s.name}return t}var Tn=qa,Va=dn,ja=Oe,Ga=4294967295;function Y(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Ga,this.__views__=[]}Y.prototype=Va(ja.prototype);Y.prototype.constructor=Y;var Pe=Y;function Ya(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}var Xa=Ya,za=Pe,Ja=Me,Ka=Xa;function Qa(e){if(e instanceof za)return e.clone();var t=new Ja(e.__wrapped__,e.__chain__);return t.__actions__=Ka(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}var Za=Qa,ec=Pe,nt=Me,tc=Oe,nc=ee,rc=B,sc=Za,oc=Object.prototype,ic=oc.hasOwnProperty;function X(e){if(rc(e)&&!nc(e)&&!(e instanceof ec)){if(e instanceof nt)return e;if(ic.call(e,"__wrapped__"))return sc(e)}return new nt(e)}X.prototype=tc.prototype;X.prototype.constructor=X;var ac=X,cc=Pe,uc=gn,lc=Tn,_c=ac;function dc(e){var t=lc(e),n=_c[t];if(typeof n!="function"||!(t in cc.prototype))return!1;if(e===n)return!0;var r=uc(n);return!!r&&e===r[0]}var Ec=dc,rt=Me,hc=Ia,fc=gn,ie=Tn,Sc=ee,st=Ec,gc="Expected a function",Tc=8,Cc=32,mc=128,Rc=256;function Nc(e){return hc(function(t){var n=t.length,r=n,s=rt.prototype.thru;for(e&&t.reverse();r--;){var o=t[r];if(typeof o!="function")throw new TypeError(gc);if(s&&!i&&ie(o)=="wrapper")var i=new rt([],!0)}for(r=i?r:n;++r<n;){o=t[r];var a=ie(o),u=a=="wrapper"?fc(o):void 0;u&&st(u[0])&&u[1]==(mc|Tc|Cc|Rc)&&!u[4].length&&u[9]==1?i=i[ie(u[0])].apply(i,u[3]):i=o.length==1&&st(o)?i[a]():i.thru(o)}return function(){var l=arguments,d=l[0];if(i&&l.length==1&&Sc(d))return i.plant(d).value();for(var E=0,h=n?t[E].apply(this,l):d;++E<n;)h=t[E].call(this,h);return h}})}var vc=Nc,Ac=vc,pc=Ac(),bc=pc;const yc=be(bc);function Ic(e,t){for(var n=-1,r=e==null?0:e.length,s=Array(r);++n<r;)s[n]=t(e[n],n,e);return s}var Oc=Ic,ot=Q,Mc=Oc,Pc=ee,Dc=ln,wc=1/0,it=ot?ot.prototype:void 0,at=it?it.toString:void 0;function Cn(e){if(typeof e=="string")return e;if(Pc(e))return Mc(e,Cn)+"";if(Dc(e))return at?at.call(e):"";var t=e+"";return t=="0"&&1/e==-wc?"-0":t}var mn=Cn;function $c(e,t,n){var r=-1,s=e.length;t<0&&(t=-t>s?0:s+t),n=n>s?s:n,n<0&&(n+=s),s=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(s);++r<s;)o[r]=e[r+t];return o}var Lc=$c,Uc=Lc;function Fc(e,t,n){var r=e.length;return n=n===void 0?r:n,!t&&n>=r?e:Uc(e,t,n)}var kc=Fc,Bc="\\ud800-\\udfff",Hc="\\u0300-\\u036f",xc="\\ufe20-\\ufe2f",Wc="\\u20d0-\\u20ff",qc=Hc+xc+Wc,Vc="\\ufe0e\\ufe0f",jc="\\u200d",Gc=RegExp("["+jc+Bc+qc+Vc+"]");function Yc(e){return Gc.test(e)}var Rn=Yc;function Xc(e,t){return e===t||e!==e&&t!==t}var zc=Xc,Jc=9007199254740991;function Kc(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Jc}var Qc=Kc,Zc=fn,eu=Qc;function tu(e){return e!=null&&eu(e.length)&&!Zc(e)}var nu=tu,ru=9007199254740991,su=/^(?:0|[1-9]\d*)$/;function ou(e,t){var n=typeof e;return t=t??ru,!!t&&(n=="number"||n!="symbol"&&su.test(e))&&e>-1&&e%1==0&&e<t}var iu=ou,au=zc,cu=nu,uu=iu,lu=$;function _u(e,t,n){if(!lu(n))return!1;var r=typeof t;return(r=="number"?cu(n)&&uu(t,n.length):r=="string"&&t in n)?au(n[t],e):!1}var du=_u,Eu=Z,hu=B,fu="[object RegExp]";function Su(e){return hu(e)&&Eu(e)==fu}var gu=Su;function Tu(e){return function(t){return e(t)}}var Cu=Tu,z={exports:{}};z.exports;(function(e,t){var n=cn,r=t&&!t.nodeType&&t,s=r&&!0&&e&&!e.nodeType&&e,o=s&&s.exports===r,i=o&&n.process,a=function(){try{var u=s&&s.require&&s.require("util").types;return u||i&&i.binding&&i.binding("util")}catch{}}();e.exports=a})(z,z.exports);var mu=z.exports,Ru=gu,Nu=Cu,ct=mu,ut=ct&&ct.isRegExp,vu=ut?Nu(ut):Ru,Au=vu;function pu(e){return e.split("")}var bu=pu,Nn="\\ud800-\\udfff",yu="\\u0300-\\u036f",Iu="\\ufe20-\\ufe2f",Ou="\\u20d0-\\u20ff",Mu=yu+Iu+Ou,Pu="\\ufe0e\\ufe0f",Du="["+Nn+"]",ge="["+Mu+"]",Te="\\ud83c[\\udffb-\\udfff]",wu="(?:"+ge+"|"+Te+")",vn="[^"+Nn+"]",An="(?:\\ud83c[\\udde6-\\uddff]){2}",pn="[\\ud800-\\udbff][\\udc00-\\udfff]",$u="\\u200d",bn=wu+"?",yn="["+Pu+"]?",Lu="(?:"+$u+"(?:"+[vn,An,pn].join("|")+")"+yn+bn+")*",Uu=yn+bn+Lu,Fu="(?:"+[vn+ge+"?",ge,An,pn,Du].join("|")+")",ku=RegExp(Te+"(?="+Te+")|"+Fu+Uu,"g");function Bu(e){return e.match(ku)||[]}var Hu=Bu,xu=bu,Wu=Rn,qu=Hu;function Vu(e){return Wu(e)?qu(e):xu(e)}var ju=Vu,Gu=mn;function Yu(e){return e==null?"":Gu(e)}var Xu=Yu,zu=mn,Ju=kc,Ku=Rn,Qu=du,Zu=Au,el=ju,tl=Xu,nl=4294967295;function rl(e,t,n){return n&&typeof n!="number"&&Qu(e,t,n)&&(t=n=void 0),n=n===void 0?nl:n>>>0,n?(e=tl(e),e&&(typeof t=="string"||t!=null&&!Zu(t))&&(t=zu(t),!t&&Ku(e))?Ju(el(e),0,n):e.split(t,n)):[]}var sl=rl;const ol=be(sl),il=e=>yc(t=>ol(t,""),t=>t.map(n=>async()=>e(n))),al=async({accumulatedKeys:e,sendKey:t,canRunTask:n})=>{const s=il(t)(e);return Un(s,n)},cl=e=>n=>(_("onStartMainCam"),e.onSession("admin-start-main-cam",n)),ul=e=>n=>(_("onStartMic"),e.onSession("admin-start-mic",n)),ll=e=>n=>(_("onStopMainCam"),e.onSession("admin-stop-main-cam",n)),_l=e=>n=>(_("onStopMic"),e.onSession("admin-stop-mic",n)),dl=({sipConnector:e})=>{const t=(g,C)=>({isSyncForced:m=!1})=>{if(m){g();return}C()},n=cl(e),r=ll(e),s=ul(e),o=_l(e);let i=()=>{},a=()=>{},u=()=>{},l=()=>{};const d=({onStartMainCamForced:g,onStartMainCamNotForced:C,onStopMainCamForced:m,onStopMainCamNotForced:A,onStartMicForced:b,onStartMicNotForced:N,onStopMicForced:v,onStopMicNotForced:y})=>{const f=t(g,C);i=n(f);const R=t(m,A);a=r(R);const p=t(b,N);u=s(p);const P=t(v,y);l=o(P)},E=()=>{i(),a(),u(),l()};return{start:g=>{d(g)},stop:()=>{E()}}},El=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:on,createSyncMediaState:dl,error:Mo,getExtraHeaders:Po,getUserAgent:wo,hasPurgatory:F,resolveAnswerIncomingCall:Ao,resolveAskPermissionToEnableCam:$o,resolveCallToServer:po,resolveConnectToServer:bo,resolveDisconnectFromServer:yo,resolveGetRemoteStreams:pe,resolveOnMustStopPresentation:Lo,resolveOnUseLicense:Uo,resolveSendMediaState:Fo,resolveSendRefusalToTurnOnCam:ko,resolveSendRefusalToTurnOnMic:Bo,resolveStartPresentation:xo,resolveStopShareSipConnector:Wo,resolveUpdatePresentation:Vo,resolveUpdateRemoteStreams:ye,sendDTMFAccumulated:al},Symbol.toStringTag,{value:"Module"})),hl=e=>[...e.keys()].map(t=>e.get(t)),fl=(e,t)=>hl(e).find(n=>n.type===t),In=async e=>e.getStats().then(t=>{const n=fl(t,"codec");return n==null?void 0:n.mimeType}),Sl=e=>e.find(t=>{var n;return((n=t==null?void 0:t.track)==null?void 0:n.kind)==="video"}),On=(e,t)=>e!==void 0&&t!==void 0&&e.toLowerCase().includes(t.toLowerCase()),gl=1e6,I=e=>e*gl,Mn=I(.06),Tl=I(4),Cl=e=>e<=64?Mn:e<=128?I(.12):e<=256?I(.25):e<=384?I(.32):e<=426?I(.38):e<=640?I(.5):e<=848?I(.7):e<=1280?I(1):e<=1920?I(2):Tl,ml="av1",Rl=e=>On(e,ml),Nl=.6,Pn=(e,t)=>Rl(t)?e*Nl:e,vl=e=>Pn(Mn,e),Dn=(e,t)=>{const n=Cl(e);return Pn(n,t)},wn=Fn(),Al=async()=>wn().catch(e=>{_("videoSendingBalancer: error",e)}),pl=async e=>(wn.add(e),Al()),De=async({sender:e,scaleResolutionDownBy:t,maxBitrate:n,onSetParameters:r})=>pl(async()=>sn(e,{scaleResolutionDownBy:t,maxBitrate:n},r)),bl=async({sender:e,codec:t},n)=>{const s=vl(t);return De({sender:e,maxBitrate:s,onSetParameters:n,scaleResolutionDownBy:200})},ae=async({sender:e,track:t,codec:n},r)=>{const i=t.getSettings().width,a=Dn(i,n);return De({sender:e,maxBitrate:a,onSetParameters:r,scaleResolutionDownBy:1})},yl=async({sender:e,track:t,resolution:n,codec:r},s)=>{const o=t.getSettings(),i=o.width,a=o.height,[u,l]=n.split("x"),d=i/Number(u),E=a/Number(l),S=Math.max(d,E,1),g=Dn(Number(u),r);return De({sender:e,maxBitrate:g,onSetParameters:s,scaleResolutionDownBy:S})},Il=async({mainCam:e,resolutionMainCam:t,sender:n,track:r,codec:s},o)=>{switch(e){case M.PAUSE_MAIN_CAM:return bl({sender:n,codec:s},o);case M.RESUME_MAIN_CAM:return ae({sender:n,track:r,codec:s},o);case M.MAX_MAIN_CAM_RESOLUTION:return t!==void 0?yl({sender:n,track:r,codec:s,resolution:t},o):ae({sender:n,track:r,codec:s},o);default:return ae({sender:n,track:r,codec:s},o)}},lt={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},_t=async({mainCam:e,resolutionMainCam:t,connection:n,onSetParameters:r,ignoreForCodec:s})=>{const o=n.getSenders(),i=Sl(o);if(!(i!=null&&i.track))return lt;const a=await In(i);return On(a,s)?lt:Il({mainCam:e,resolutionMainCam:t,sender:i,codec:a,track:i.track},r)},Ol=(e,{ignoreForCodec:t,onSetParameters:n}={})=>{const r=async()=>{const{connection:u}=e;if(!u)throw new Error("connection is not exist");return _t({connection:u,onSetParameters:n,ignoreForCodec:t})};let s=r;const o=async u=>(s=async()=>{const{mainCam:l,resolutionMainCam:d}=u,{connection:E}=e;if(!E)throw new Error("connection is not exist");return _t({mainCam:l,resolutionMainCam:d,connection:E,onSetParameters:n,ignoreForCodec:t})},s());return{subscribe:()=>{e.onSession("main-cam-control",o)},unsubscribe:()=>{e.offSession("main-cam-control",o)},balanceByTrack:r,resetMainCamControl(){s=r},async reBalance(){return s()}}};exports.debug=J;exports.EEventsMainCAM=M;exports.EEventsMic=V;exports.EEventsSyncMediaState=j;exports.EUseLicense=tn;exports.causes=tr;exports.default=ps;exports.disableDebug=Qr;exports.enableDebug=Kr;exports.eventNames=Ar;exports.getCodecFromSender=In;exports.hasCanceledCallError=Es;exports.resolveVideoSendingBalancer=Ol;exports.tools=El;
1
+ "use strict";var nr=Object.defineProperty;var rr=(e,t,n)=>t in e?nr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var c=(e,t,n)=>(rr(e,typeof t!="symbol"?t+"":t,n),n);Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const I=require("@krivega/cancelable-promise"),dt=require("events-constructor"),se=require("debug"),sr=require("sequent-promises"),or=require("stack-promises"),ir="Connection Error",Vt="Request Timeout",ar="SIP Failure Code",cr="Internal Error",ur="Busy",Gt="Rejected",lr="Redirected",_r="Unavailable",me="Not Found",dr="Address Incomplete",Er="Incompatible SDP",hr="Missing SDP",fr="Authentication Error",Yt="Terminated",Sr="WebRTC Error",Xt="Canceled",gr="No Answer",Tr="Expires",Cr="No ACK",mr="Dialog Error",Rr="User Denied Media Access",Re="Bad Media Description",Nr="RTP Timeout",vr=Object.freeze(Object.defineProperty({__proto__:null,ADDRESS_INCOMPLETE:dr,AUTHENTICATION_ERROR:fr,BAD_MEDIA_DESCRIPTION:Re,BUSY:ur,BYE:Yt,CANCELED:Xt,CONNECTION_ERROR:ir,DIALOG_ERROR:mr,EXPIRES:Tr,INCOMPATIBLE_SDP:Er,INTERNAL_ERROR:cr,MISSING_SDP:hr,NOT_FOUND:me,NO_ACK:Cr,NO_ANSWER:gr,REDIRECTED:lr,REJECTED:Gt,REQUEST_TIMEOUT:Vt,RTP_TIMEOUT:Nr,SIP_FAILURE_CODE:ar,UNAVAILABLE:_r,USER_DENIED_MEDIA_ACCESS:Rr,WEBRTC_ERROR:Sr},Symbol.toStringTag,{value:"Module"})),Ne="incomingCall",ve="declinedIncomingCall",Ae="failedIncomingCall",pe="terminatedIncomingCall",oe="connecting",j="connected",w="disconnected",V="newRTCSession",F="registered",be="unregistered",k="registrationFailed",zt="newMessage",ye="sipEvent",Oe="availableSecondRemoteStream",Ie="notAvailableSecondRemoteStream",Me="mustStopPresentation",G="shareState",Pe="enterRoom",De="useLicense",we="peerconnection:confirmed",$e="peerconnection:ontrack",Y="channels",Le="channels:notify",Ue="ended:fromserver",Fe="main-cam-control",ke="admin-stop-main-cam",Be="admin-start-main-cam",He="admin-stop-mic",xe="admin-start-mic",X="admin-force-sync-media-state",We="participant:added-to-list-moderators",qe="participant:removed-from-list-moderators",je="participant:move-request-to-conference",Ve="participant:move-request-to-stream",Ge="participant:canceling-word-request",Ye="webcast:started",Xe="webcast:stopped",ze="account:changed",Je="account:deleted",Ke="conference:participant-token-issued",B="ended",Jt="sending",Kt="reinvite",Qt="replaces",Zt="refer",en="progress",tn="accepted",z="confirmed",J="peerconnection",$="failed",nn="muted",rn="unmuted",Qe="newDTMF",Ze="newInfo",sn="hold",on="unhold",an="update",cn="sdp",un="icecandidate",ln="getusermediafailed",_n="peerconnection:createofferfailed",dn="peerconnection:createanswerfailed",En="peerconnection:setlocaldescriptionfailed",hn="peerconnection:setremotedescriptionfailed",fn="presentation:start",Sn="presentation:started",gn="presentation:end",et="presentation:ended",K="presentation:failed",Ar=Object.freeze(Object.defineProperty({__proto__:null,ACCEPTED:tn,ACCOUNT_CHANGED:ze,ACCOUNT_DELETED:Je,ADMIN_FORCE_SYNC_MEDIA_STATE:X,ADMIN_START_MAIN_CAM:Be,ADMIN_START_MIC:xe,ADMIN_STOP_MAIN_CAM:ke,ADMIN_STOP_MIC:He,AVAILABLE_SECOND_REMOTE_STREAM_EVENT:Oe,CHANNELS:Y,CHANNELS_NOTIFY:Le,CONFERENCE_PARTICIPANT_TOKEN_ISSUED:Ke,CONFIRMED:z,CONNECTED:j,CONNECTING:oe,DECLINED_INCOMING_CALL:ve,DISCONNECTED:w,ENDED:B,ENDED_FROM_SERVER:Ue,ENTER_ROOM:Pe,FAILED:$,FAILED_INCOMING_CALL:Ae,GET_USER_MEDIA_FAILED:ln,HOLD:sn,ICE_CANDIDATE:un,INCOMING_CALL:Ne,MAIN_CAM_CONTROL:Fe,MUST_STOP_PRESENTATION_EVENT:Me,MUTED:nn,NEW_DTMF:Qe,NEW_INFO:Ze,NEW_MESSAGE:zt,NEW_RTC_SESSION:V,NOT_AVAILABLE_SECOND_REMOTE_STREAM_EVENT:Ie,PARTICIPANT_ADDED_TO_LIST_MODERATORS:We,PARTICIPANT_CANCELLING_WORD_REQUEST:Ge,PARTICIPANT_MOVE_REQUEST_TO_CONFERENCE:je,PARTICIPANT_MOVE_REQUEST_TO_STREAM:Ve,PARTICIPANT_REMOVED_FROM_LIST_MODERATORS:qe,PEER_CONNECTION:J,PEER_CONNECTION_CONFIRMED:we,PEER_CONNECTION_CREATE_ANSWER_FAILED:dn,PEER_CONNECTION_CREATE_OFFER_FAILED:_n,PEER_CONNECTION_ONTRACK:$e,PEER_CONNECTION_SET_LOCAL_DESCRIPTION_FAILED:En,PEER_CONNECTION_SET_REMOTE_DESCRIPTION_FAILED:hn,PRESENTATION_END:gn,PRESENTATION_ENDED:et,PRESENTATION_FAILED:K,PRESENTATION_START:fn,PRESENTATION_STARTED:Sn,PROGRESS:en,REFER:Zt,REGISTERED:F,REGISTRATION_FAILED:k,REINVITE:Kt,REPLACES:Qt,SDP:cn,SENDING:Jt,SHARE_STATE:G,SIP_EVENT:ye,TERMINATED_INCOMING_CALL:pe,UNHOLD:on,UNMUTED:rn,UNREGISTERED:be,UPDATE:an,USE_LICENSE:De,WEBCAST_STARTED:Ye,WEBCAST_STOPPED:Xe},Symbol.toStringTag,{value:"Module"})),Tn=[Ne,ve,pe,Ae,Ge,Ve,je,Le,Ke,ze,Je,Ye,Xe,We,qe],tt=[oe,j,w,V,F,be,k,zt,ye],Cn=[Oe,Ie,Me,G,Pe,De,we,$e,Y,Ue,Fe,Be,ke,He,xe,X],nt=[B,oe,Jt,Kt,Qt,Zt,en,tn,z,J,$,nn,rn,Qe,Ze,sn,on,an,cn,un,ln,_n,dn,En,hn,fn,Sn,gn,et,K],mn=[...tt,...Tn],Rn=[...nt,...Cn],pr=Object.freeze(Object.defineProperty({__proto__:null,SESSION_EVENT_NAMES:Rn,SESSION_JSSIP_EVENT_NAMES:nt,SESSION_SYNTHETICS_EVENT_NAMES:Cn,UA_EVENT_NAMES:mn,UA_JSSIP_EVENT_NAMES:tt,UA_SYNTHETICS_EVENT_NAMES:Tn},Symbol.toStringTag,{value:"Module"})),br=e=>{const t=[];return e&&t.push(`X-Vinteo-Remote: ${e}`),t},yr="content-type",Or="x-webrtc-enter-room",le="application/vinteo.webrtc.sharedesktop",Ir="application/vinteo.webrtc.roomname",Mr="application/vinteo.webrtc.channels",Pr="application/vinteo.webrtc.mediastate",Dr="application/vinteo.webrtc.refusal",Et="application/vinteo.webrtc.maincam",wr="application/vinteo.webrtc.mic",$r="application/vinteo.webrtc.uselic",Lr="X-WEBRTC-USE-LICENSE",ht="X-WEBRTC-INPUT-CHANNELS",ft="X-WEBRTC-OUTPUT-CHANNELS",Ur="X-WEBRTC-MAINCAM",Fr="X-WEBRTC-MIC",St="X-WEBRTC-SYNC",kr="X-WEBRTC-MAINCAM-RESOLUTION",Br="X-WEBRTC-MEDIA-STATE",Hr="X-Vinteo-Media-Type",xr="X-Vinteo-MainCam-State",Wr="X-Vinteo-Mic-State",qr="application/vinteo.webrtc.notify",jr="X-VINTEO-NOTIFY",x="x-webrtc-share-state",Vr=`${x}: LETMESTARTPRESENTATION`,Gr=`${x}: STOPPRESENTATION`,Nn="YOUCANRECEIVECONTENT",vn="CONTENTEND",Yr="YOUMUSTSTOPSENDCONTENT",Xr=`${x}: ${Nn}`,zr=`${x}: ${vn}`,Jr="X-WEBRTC-REQUEST-ENABLE-MEDIA-DEVICE",Kr=`${Jr}: LETMESTARTMAINCAM`,rt="sip-connector",_=se(rt),Qr=()=>{se.enable(`${rt}`)},Zr=()=>{se.enable(`-${rt}`)};var M=(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))(M||{}),Q=(e=>(e.ADMIN_STOP_MIC="ADMINSTOPMIC",e.ADMIN_START_MIC="ADMINSTARTMIC",e))(Q||{}),Z=(e=>(e.ADMIN_SYNC_FORCED="1",e.ADMIN_SYNC_NOT_FORCED="0",e))(Z||{}),An=(e=>(e.AUDIO="AUDIO",e.VIDEO="VIDEO",e.AUDIOPLUSPRESENTATION="AUDIOPLUSPRESENTATION",e))(An||{});function es(e){return t=>`sip:${t}@${e}`}const ts=(e,t)=>()=>Math.floor(Math.random()*(t-e))+e,gt=e=>e.trim().replaceAll(" ","_"),ns=ts(1e5,99999999),_e=(e,{videoMode:t,audioMode:n}={})=>{if(!e||t==="recvonly"&&n==="recvonly")return;const r=n==="recvonly"?[]:e.getAudioTracks(),s=t==="recvonly"?[]:e.getVideoTracks(),o=[...r,...s],i=new MediaStream(o);return i.getTracks=()=>[...i.getAudioTracks(),...i.getVideoTracks()],i},rs=e=>e.some(n=>{const{kind:r}=n;return r==="video"}),ss="Error decline with 603",os=e=>e.message===ss,is=(e,t)=>e.find(n=>n.track&&t.getTracks().includes(n.track)),pn=1,bn=e=>(t,n)=>n!==void 0&&t!==n||n===void 0&&t!==e,as=bn(pn),cs=(e,t)=>{const n=e===void 0?void 0:Math.max(e,pn);if(n!==void 0&&as(n,t))return n},us=bn(),ls=(e,t)=>{if(us(e,t))return e},yn=async(e,t,n)=>{const r=e.getParameters();(r.encodings===void 0||r.encodings.length===0)&&(r.encodings=[{}]);const[s]=r.encodings,o=s.scaleResolutionDownBy,i=cs(t.scaleResolutionDownBy,o);let a=!1;i!==void 0&&(r.encodings[0].scaleResolutionDownBy=i,a=!0);const u=s.maxBitrate,l=ls(t.maxBitrate,u);return l!==void 0&&(r.encodings[0].maxBitrate=l,a=!0),a?(n&&n(r),e.setParameters(r).then(()=>({parameters:r,isChanged:a}))):{parameters:r,isChanged:a}},_s=async(e,t,n)=>{const r=is(e,t);if(r)return yn(r,{maxBitrate:n})},ds=486,Es=487,ge="local",Tt="remote",hs=(e=new Error)=>{const{originator:t,cause:n}=e;return I.isCanceledError(e)?!0:typeof n=="string"?n===Vt||n===Gt||t===ge&&(n===Xt||n===Yt):!1},D="SipConnector",fs="channels",Ss="WebcastStarted",gs="WebcastStopped",Ts="accountChanged",Cs="accountDeleted",ms="addedToListModerators",Rs="removedFromListModerators",Ns="WebcastParticipationAccepted",vs="WebcastParticipationRejected",As="ParticipantMovedToWebcast",ps="ConferenceParticipantTokenIssued";class bs{constructor({JsSIP:t}){c(this,"_isRegisterConfig",!1);c(this,"_connectionConfiguration",{});c(this,"_remoteStreams",{});c(this,"JsSIP");c(this,"_sessionEvents");c(this,"_uaEvents");c(this,"_cancelableConnect");c(this,"_cancelableCreateUa");c(this,"_cancelableDisconnect");c(this,"_cancelableSet");c(this,"_cancelableCall");c(this,"_cancelableAnswer");c(this,"_cancelableSendDTMF");c(this,"getSipServerUrl",t=>t);c(this,"promisePendingStartPresentation");c(this,"promisePendingStopPresentation");c(this,"ua");c(this,"session");c(this,"incomingSession");c(this,"_streamPresentationCurrent");c(this,"socket");c(this,"connect",async t=>(this._cancelRequests(),this._cancelableConnect.request(t)));c(this,"createUa",async t=>this._cancelableCreateUa.request(t));c(this,"set",async t=>this._cancelableSet.request(t));c(this,"call",async t=>this._cancelableCall.request(t));c(this,"disconnect",async()=>(this._cancelRequests(),this._disconnectWithoutCancelRequests()));c(this,"answerToIncomingCall",async t=>this._cancelableAnswer.request(t));c(this,"sendDTMF",async t=>this._cancelableSendDTMF.request(t));c(this,"hangUp",async()=>(this._cancelRequests(),this._hangUpWithoutCancelRequests()));c(this,"tryRegister",async()=>{if(!this.isRegisterConfig)throw new Error("Config is not registered");this._uaEvents.trigger(oe,void 0);try{await this.unregister()}catch(t){_("tryRegister",t)}return this.register()});c(this,"declineToIncomingCall",async({statusCode:t=Es}={})=>new Promise((n,r)=>{if(!this.isAvailableIncomingCall){r(new Error("no incomingSession"));return}const s=this.incomingSession,o=this.remoteCallerData;this._cancelableCall.cancelRequest(),this._cancelableAnswer.cancelRequest(),this.removeIncomingSession(),this._uaEvents.trigger(ve,o),n(s.terminate({status_code:t}))}));c(this,"busyIncomingCall",async()=>this.declineToIncomingCall({statusCode:ds}));c(this,"removeIncomingSession",()=>{delete this.incomingSession});c(this,"handleNewRTCSession",({originator:t,session:n})=>{if(t===Tt){this.incomingSession=n;const r=this.remoteCallerData;n.on($,s=>{this.removeIncomingSession(),s.originator===ge?this._uaEvents.trigger(pe,r):this._uaEvents.trigger(Ae,r)}),this._uaEvents.trigger(Ne,r)}});c(this,"_connect",async t=>this.createUa(t).then(async()=>this._start()));c(this,"_createUa",async({displayName:t="",user:n,password:r,register:s=!1,sipServerUrl:o,sipWebSocketServerURL:i,remoteAddress:a,extraHeaders:u=[],sdpSemantics:l="plan-b",sessionTimers:d=!1,registerExpires:E=60*5,connectionRecoveryMinInterval:h=2,connectionRecoveryMaxInterval:S=6,userAgent:g})=>{if(!o)throw new Error("sipServerUrl is required");if(!i)throw new Error("sipWebSocketServerURL is required");if(s&&!n)throw new Error("user is required for authorized connection");if(s&&!r)throw new Error("password is required for authorized connection");this._connectionConfiguration={sipServerUrl:o,displayName:t,register:s,user:n,password:r},this._init({sipServerUrl:o,sipWebSocketServerURL:i});const C=s&&n?n.trim():`${ns()}`,m={password:r,register:s,display_name:gt(t),user_agent:g,sdp_semantics:l,sockets:[this.socket],uri:this.getSipServerUrl(C),session_timers:d,register_expires:E,connection_recovery_min_interval:h,connection_recovery_max_interval:S};this.ua&&await this._disconnectWithoutCancelRequests(),this._isRegisterConfig=!!m.register,this.ua=new this.JsSIP.UA(m),this._uaEvents.eachTriggers((N,v)=>{const y=tt.find(f=>f===v);y&&this.ua&&this.ua.on(y,N)});const b=[...br(a),...u];return this.ua.registrator().setExtraHeaders(b),this.ua});c(this,"_start",async()=>new Promise((t,n)=>{const{ua:r}=this;if(!r){n(new Error("this.ua is not initialized"));return}const s=()=>{a(),t(r)},o=u=>{a(),n(u)},i=()=>{this.isRegisterConfig?(this.on(F,s),this.on(k,o)):this.on(j,s),this.on(w,o)},a=()=>{this.off(F,s),this.off(k,o),this.off(j,s),this.off(w,o)};i(),this.on(V,this.handleNewRTCSession),r.start()}));c(this,"_set",async({displayName:t,password:n})=>new Promise((r,s)=>{const{ua:o}=this;if(!o){s(new Error("this.ua is not initialized"));return}let i=!1,a=!1;t!==void 0&&t!==this._connectionConfiguration.displayName&&(i=o.set("display_name",gt(t)),this._connectionConfiguration.displayName=t),n!==void 0&&n!==this._connectionConfiguration.password&&(a=o.set("password",n),this._connectionConfiguration.password=n);const u=i||a;a&&this.isRegisterConfig?this.register().then(()=>{r(u)}).catch(s):u?r(u):s(u)}));c(this,"_disconnectWithoutCancelRequests",async()=>this._cancelableDisconnect.request());c(this,"_disconnect",async()=>{this.off(V,this.handleNewRTCSession);const t=new Promise(n=>{this.once(w,()=>{delete this.ua,n()})});return this.ua?(await this._hangUpWithoutCancelRequests(),this.ua?this.ua.stop():this._uaEvents.trigger(w,void 0)):this._uaEvents.trigger(w,void 0),t});c(this,"_call",async({number:t,mediaStream:n,extraHeaders:r=[],ontrack:s,iceServers:o,videoMode:i,audioMode:a,degradationPreference:u,offerToReceiveAudio:l=!0,offerToReceiveVideo:d=!0})=>new Promise((E,h)=>{const{ua:S}=this;if(!S){h(new Error("this.ua is not initialized"));return}this._connectionConfiguration.number=t,this._connectionConfiguration.answer=!1,this._handleCall({ontrack:s}).then(E).catch(h),this.session=S.call(this.getSipServerUrl(t),{extraHeaders:r,mediaStream:_e(n,{videoMode:i,audioMode:a}),eventHandlers:this._sessionEvents.triggers,videoMode:i,audioMode:a,degradationPreference:u,pcConfig:{iceServers:o},rtcOfferConstraints:{offerToReceiveAudio:l,offerToReceiveVideo:d}})}));c(this,"_answer",async({mediaStream:t,ontrack:n,extraHeaders:r=[],iceServers:s,videoMode:o,audioMode:i,degradationPreference:a})=>new Promise((u,l)=>{if(!this.isAvailableIncomingCall){l(new Error("no incomingSession"));return}this.session=this.incomingSession,this.removeIncomingSession();const{session:d}=this;if(!d){l(new Error("No session established"));return}this._sessionEvents.eachTriggers((h,S)=>{const g=nt.find(C=>C===S);g&&d.on(g,h)}),this._connectionConfiguration.answer=!0,this._connectionConfiguration.number=d.remote_identity.uri.user,this._handleCall({ontrack:n}).then(u).catch(l);const E=_e(t,{videoMode:o,audioMode:i});d.answer({extraHeaders:r,videoMode:o,audioMode:i,degradationPreference:a,mediaStream:E,pcConfig:{iceServers:s}})}));c(this,"_handleCall",async({ontrack:t})=>new Promise((n,r)=>{const s=()=>{this.onSession(J,d),this.onSession(z,E)},o=()=>{this.offSession(J,d),this.offSession(z,E)},i=()=>{this.onSession($,u),this.onSession(B,u)},a=()=>{this.offSession($,u),this.offSession(B,u)},u=h=>{o(),a(),r(h)};let l;const d=({peerconnection:h})=>{l=h,l.ontrack=S=>{this._sessionEvents.trigger($e,l),t&&t(S)}},E=()=>{l&&this._sessionEvents.trigger(we,l),o(),a(),n(l)};s(),i()}));c(this,"_restoreSession",()=>{this._resetPresentation(),delete this._connectionConfiguration.number,delete this.session,this._remoteStreams={}});c(this,"_sendDTMF",async t=>new Promise((n,r)=>{const{session:s}=this;if(!s){r(new Error("No session established"));return}this.onceSession(Qe,({originator:o})=>{o===ge&&n()}),s.sendDTMF(t,{duration:120,interToneGap:600})}));c(this,"_hangUpWithoutCancelRequests",async()=>{if(this.ua&&this.session){const{session:t}=this;this._streamPresentationCurrent&&await this.stopPresentation(),this._restoreSession(),t.isEnded()||t.terminate()}});c(this,"_handleShareState",t=>{switch(t){case Nn:{this._sessionEvents.trigger(Oe,void 0);break}case vn:{this._sessionEvents.trigger(Ie,void 0);break}case Yr:{this._sessionEvents.trigger(Me,void 0);break}}});c(this,"_maybeTriggerChannels",t=>{const n=t.getHeader(ht),r=t.getHeader(ft);if(n&&r){const s={inputChannels:n,outputChannels:r};this._sessionEvents.trigger(Y,s)}});c(this,"_handleNotify",t=>{switch(t.cmd){case fs:{const n=t;this._triggerChannelsNotify(n);break}case Ss:{const n=t;this._triggerWebcastStartedNotify(n);break}case gs:{const n=t;this._triggerWebcastStoppedNotify(n);break}case ms:{const n=t;this._triggerAddedToListModeratorsNotify(n);break}case Rs:{const n=t;this._triggerRemovedFromListModeratorsNotify(n);break}case Ns:{const n=t;this._triggerParticipantMoveRequestToConference(n);break}case vs:{const n=t;this._triggerParticipantCancelingWordRequest(n);break}case As:{const n=t;this._triggerParticipantMoveRequestToStream(n);break}case Ts:{this._triggerAccountChangedNotify();break}case Cs:{this._triggerAccountDeletedNotify();break}case ps:{const n=t;this._triggerConferenceParticipantTokenIssued(n);break}default:_("unknown cmd",t.cmd)}});c(this,"_triggerRemovedFromListModeratorsNotify",({conference:t})=>{const n={conference:t};this._uaEvents.trigger(qe,n)});c(this,"_triggerAddedToListModeratorsNotify",({conference:t})=>{const n={conference:t};this._uaEvents.trigger(We,n)});c(this,"_triggerWebcastStartedNotify",({body:{conference:t,type:n}})=>{const r={conference:t,type:n};this._uaEvents.trigger(Ye,r)});c(this,"_triggerWebcastStoppedNotify",({body:{conference:t,type:n}})=>{const r={conference:t,type:n};this._uaEvents.trigger(Xe,r)});c(this,"_triggerAccountChangedNotify",()=>{this._uaEvents.trigger(ze,void 0)});c(this,"_triggerAccountDeletedNotify",()=>{this._uaEvents.trigger(Je,void 0)});c(this,"_triggerConferenceParticipantTokenIssued",({body:{conference:t,participant:n,jwt:r}})=>{const s={conference:t,participant:n,jwt:r};this._uaEvents.trigger(Ke,s)});c(this,"_triggerChannelsNotify",t=>{const n=t.input,r=t.output,s={inputChannels:n,outputChannels:r};this._uaEvents.trigger(Le,s)});c(this,"_triggerParticipantMoveRequestToConference",({body:{conference:t}})=>{const n={conference:t};this._uaEvents.trigger(je,n)});c(this,"_triggerParticipantCancelingWordRequest",({body:{conference:t}})=>{const n={conference:t};this._uaEvents.trigger(Ge,n)});c(this,"_triggerParticipantMoveRequestToStream",({body:{conference:t}})=>{const n={conference:t};this._uaEvents.trigger(Ve,n)});c(this,"_triggerEnterRoom",t=>{const n=t.getHeader(Or);this._sessionEvents.trigger(Pe,n)});c(this,"_triggerShareState",t=>{const n=t.getHeader(x);this._sessionEvents.trigger(G,n)});c(this,"_triggerMainCamControl",t=>{const n=t.getHeader(Ur),r=t.getHeader(St),s=r===Z.ADMIN_SYNC_FORCED;if(n===M.ADMIN_START_MAIN_CAM)this._sessionEvents.trigger(Be,{isSyncForced:s});else if(n===M.ADMIN_STOP_MAIN_CAM)this._sessionEvents.trigger(ke,{isSyncForced:s});else if((n===M.RESUME_MAIN_CAM||n===M.PAUSE_MAIN_CAM)&&r)this._sessionEvents.trigger(X,{isSyncForced:s});else{const o=t.getHeader(kr);this._sessionEvents.trigger(Fe,{mainCam:n,resolutionMainCam:o})}});c(this,"_triggerMicControl",t=>{const n=t.getHeader(Fr),s=t.getHeader(St)===Z.ADMIN_SYNC_FORCED;n===Q.ADMIN_START_MIC?this._sessionEvents.trigger(xe,{isSyncForced:s}):n===Q.ADMIN_STOP_MIC&&this._sessionEvents.trigger(He,{isSyncForced:s})});c(this,"_triggerUseLicense",t=>{const n=t.getHeader(Lr);this._sessionEvents.trigger(De,n)});c(this,"_handleNewInfo",t=>{const{originator:n}=t;if(n!=="remote")return;const{request:r}=t,s=r.getHeader(yr);if(s)switch(s){case Ir:{this._triggerEnterRoom(r),this._maybeTriggerChannels(r);break}case qr:{this._maybeHandleNotify(r);break}case le:{this._triggerShareState(r);break}case Et:{this._triggerMainCamControl(r);break}case wr:{this._triggerMicControl(r);break}case $r:{this._triggerUseLicense(r);break}}});c(this,"_handleSipEvent",({request:t})=>{this._maybeHandleNotify(t)});c(this,"_maybeHandleNotify",t=>{const n=t.getHeader(jr);if(n){const r=JSON.parse(n);this._handleNotify(r)}});c(this,"_handleEnded",t=>{const{originator:n}=t;n===Tt&&this._sessionEvents.trigger(Ue,t),this._restoreSession()});this.JsSIP=t,this._sessionEvents=new dt(Rn),this._uaEvents=new dt(mn),this._cancelableConnect=new I.CancelableRequest(this._connect,{moduleName:D,afterCancelRequest:()=>{this._cancelableCreateUa.cancelRequest(),this._cancelableDisconnect.cancelRequest()}}),this._cancelableCreateUa=new I.CancelableRequest(this._createUa,{moduleName:D}),this._cancelableDisconnect=new I.CancelableRequest(this._disconnect,{moduleName:D}),this._cancelableSet=new I.CancelableRequest(this._set,{moduleName:D}),this._cancelableCall=new I.CancelableRequest(this._call,{moduleName:D}),this._cancelableAnswer=new I.CancelableRequest(this._answer,{moduleName:D}),this._cancelableSendDTMF=new I.CancelableRequest(this._sendDTMF,{moduleName:D}),this.onSession(G,this._handleShareState),this.onSession(Ze,this._handleNewInfo),this.on(ye,this._handleSipEvent),this.onSession($,this._handleEnded),this.onSession(B,this._handleEnded)}async register(){return new Promise((t,n)=>{this.isRegisterConfig&&this.ua?(this.ua.on(F,t),this.ua.on(k,n),this.ua.register()):n(new Error("Config is not registered"))})}async unregister(){return new Promise((t,n)=>{this.isRegistered&&this.ua?(this.ua.on(be,t),this.ua.unregister()):n(new Error("ua is not registered"))})}async sendOptions(t,n,r){if(!this.ua)throw new Error("is not connected");return new Promise((s,o)=>{try{this.ua.sendOptions(t,n,{extraHeaders:r,eventHandlers:{succeeded:()=>{s()},failed:o}})}catch(i){o(i)}})}async ping(t,n){var s;if(!((s=this.ua)!=null&&s.configuration.uri))throw new Error("is not connected");const r=this.ua.configuration.uri;return this.sendOptions(r,t,n)}async replaceMediaStream(t,n){if(!this.session)throw new Error("No session established");return this.session.replaceMediaStream(t,n)}async askPermissionToEnableCam(t={}){if(!this.session)throw new Error("No session established");const n=[Kr];return this.session.sendInfo(Et,void 0,{noTerminateWhenError:!0,...t,extraHeaders:n}).catch(r=>{if(os(r))throw r})}get isPendingPresentation(){return!!this.promisePendingStartPresentation||!!this.promisePendingStopPresentation}async _sendPresentation(t,n,{maxBitrate:r,degradationPreference:s,isNeedReinvite:o=!0,isP2P:i=!1}){const a=_e(n);this._streamPresentationCurrent=a;const u=i?[Xr]:[Vr],l=t.sendInfo(le,void 0,{extraHeaders:u}).then(async()=>t.startPresentation(a,o,s)).then(async()=>{const{connection:d}=this;if(!d||r===void 0)return;const E=d.getSenders();return _s(E,n,r)}).then(()=>n).catch(d=>{throw this._sessionEvents.trigger(K,d),d});return this.promisePendingStartPresentation=l,l.finally(()=>{this.promisePendingStartPresentation=void 0})}async startPresentation(t,{isNeedReinvite:n=!0,isP2P:r=!1,maxBitrate:s,degradationPreference:o}={}){const i=this.establishedSession;if(!i)throw new Error("No session established");if(this._streamPresentationCurrent)throw new Error("Presentation is already started");return this._sendPresentation(i,t,{isNeedReinvite:n,isP2P:r,maxBitrate:s,degradationPreference:o})}async stopPresentation({isP2P:t=!1}={}){const n=this._streamPresentationCurrent;let r=this.promisePendingStartPresentation??Promise.resolve();const s=t?[zr]:[Gr],o=this.establishedSession;return o&&n&&(r=r.then(async()=>o.sendInfo(le,void 0,{extraHeaders:s})).then(async()=>o.stopPresentation(n)).catch(i=>{throw this._sessionEvents.trigger(K,i),i})),!o&&n&&this._sessionEvents.trigger(et,n),this.promisePendingStopPresentation=r,r.finally(()=>{this._resetPresentation()})}async updatePresentation(t,{isP2P:n=!1,maxBitrate:r,degradationPreference:s}={}){const o=this.establishedSession;if(!o)throw new Error("No session established");if(!this._streamPresentationCurrent)throw new Error("Presentation has not started yet");return this.promisePendingStartPresentation&&await this.promisePendingStartPresentation,this._sendPresentation(o,t,{isP2P:n,maxBitrate:r,degradationPreference:s,isNeedReinvite:!1})}_resetPresentation(){delete this._streamPresentationCurrent,this.promisePendingStartPresentation=void 0,this.promisePendingStopPresentation=void 0}on(t,n){return this._uaEvents.on(t,n)}once(t,n){return this._uaEvents.once(t,n)}onceRace(t,n){return this._uaEvents.onceRace(t,n)}async wait(t){return this._uaEvents.wait(t)}off(t,n){this._uaEvents.off(t,n)}onSession(t,n){return this._sessionEvents.on(t,n)}onceSession(t,n){return this._sessionEvents.once(t,n)}onceRaceSession(t,n){return this._sessionEvents.onceRace(t,n)}async waitSession(t){return this._sessionEvents.wait(t)}offSession(t,n){this._sessionEvents.off(t,n)}isConfigured(){return!!this.ua}getConnectionConfiguration(){return{...this._connectionConfiguration}}getRemoteStreams(){if(!this.connection)return;const n=this.connection.getReceivers().map(({track:r})=>r);return rs(n)?this._generateStreams(n):this._generateAudioStreams(n)}get connection(){var n;return(n=this.session)==null?void 0:n.connection}get remoteCallerData(){var t,n,r,s,o,i;return{displayName:(n=(t=this.incomingSession)==null?void 0:t.remote_identity)==null?void 0:n.display_name,host:(s=(r=this.incomingSession)==null?void 0:r.remote_identity)==null?void 0:s.uri.host,incomingNumber:(i=(o=this.incomingSession)==null?void 0:o.remote_identity)==null?void 0:i.uri.user,session:this.incomingSession}}get requested(){return this._cancelableConnect.requested||this._cancelableCreateUa.requested||this._cancelableCall.requested||this._cancelableAnswer.requested}get establishedSession(){return this.session&&this.session.isEstablished()?this.session:void 0}get isRegistered(){return!!this.ua&&this.ua.isRegistered()}get isRegisterConfig(){return!!this.ua&&this._isRegisterConfig}get isCallActive(){return!!(this.ua&&this.session)}get isAvailableIncomingCall(){return!!this.incomingSession}_init({sipServerUrl:t,sipWebSocketServerURL:n}){this.getSipServerUrl=es(t),this.socket=new this.JsSIP.WebSocketInterface(n)}_generateStream(t,n){const{id:r}=t,s=this._remoteStreams[r]||new MediaStream;return n&&s.addTrack(n),s.addTrack(t),this._remoteStreams[r]=s,s}_generateAudioStream(t){const{id:n}=t,r=this._remoteStreams[n]||new MediaStream;return r.addTrack(t),this._remoteStreams[n]=r,r}_generateStreams(t){const n=[];return t.forEach((r,s)=>{if(r.kind==="audio")return;const o=r,i=t[s-1];let a;i&&i.kind==="audio"&&(a=i);const u=this._generateStream(o,a);n.push(u)}),n}_generateAudioStreams(t){return t.map(r=>this._generateAudioStream(r))}_cancelRequests(){this._cancelActionsRequests(),this._cancelCallRequests(),this._cancelConnectRequests()}_cancelConnectRequests(){this._cancelableConnect.cancelRequest()}_cancelCallRequests(){this._cancelableCall.cancelRequest(),this._cancelableAnswer.cancelRequest()}_cancelActionsRequests(){this._cancelableAnswer.cancelRequest(),this._cancelableSendDTMF.cancelRequest()}async waitChannels(){return this.waitSession(Y)}async waitSyncMediaState(){return this.waitSession(X)}async sendChannels({inputChannels:t,outputChannels:n}){if(!this.session)throw new Error("No session established");const r=`${ht}: ${t}`,s=`${ft}: ${n}`,o=[r,s];return this.session.sendInfo(Mr,void 0,{extraHeaders:o})}async sendMediaState({cam:t,mic:n},r={}){if(!this.session)throw new Error("No session established");const s=`${Br}: currentstate`,o=`${xr}: ${Number(t)}`,i=`${Wr}: ${Number(n)}`,a=[s,o,i];return this.session.sendInfo(Pr,void 0,{noTerminateWhenError:!0,...r,extraHeaders:a})}async _sendRefusalToTurnOn(t,n={}){if(!this.session)throw new Error("No session established");const a=[`${Hr}: ${t==="mic"?0:1}`];return this.session.sendInfo(Dr,void 0,{noTerminateWhenError:!0,...n,extraHeaders:a})}async sendRefusalToTurnOnMic(t={}){if(!this.session)throw new Error("No session established");return this._sendRefusalToTurnOn("mic",{noTerminateWhenError:!0,...t})}async sendRefusalToTurnOnCam(t={}){if(!this.session)throw new Error("No session established");return this._sendRefusalToTurnOn("cam",{noTerminateWhenError:!0,...t})}}const On="purgatory",H=e=>e===On,st=e=>()=>(_("getRemoteStreams"),e.getRemoteStreams()),ys=({kind:e,readyState:t})=>e==="video"&&t==="live",In=e=>({track:t})=>{ys(t)&&e()};var q=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ot(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Os(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var L=Os,Is=typeof q=="object"&&q&&q.Object===Object&&q,Mn=Is,Ms=Mn,Ps=typeof self=="object"&&self&&self.Object===Object&&self,Ds=Ms||Ps||Function("return this")(),ie=Ds,ws=ie,$s=function(){return ws.Date.now()},Ls=$s,Us=/\s/;function Fs(e){for(var t=e.length;t--&&Us.test(e.charAt(t)););return t}var ks=Fs,Bs=ks,Hs=/^\s+/;function xs(e){return e&&e.slice(0,Bs(e)+1).replace(Hs,"")}var Ws=xs,qs=ie,js=qs.Symbol,ae=js,Ct=ae,Pn=Object.prototype,Vs=Pn.hasOwnProperty,Gs=Pn.toString,U=Ct?Ct.toStringTag:void 0;function Ys(e){var t=Vs.call(e,U),n=e[U];try{e[U]=void 0;var r=!0}catch{}var s=Gs.call(e);return r&&(t?e[U]=n:delete e[U]),s}var Xs=Ys,zs=Object.prototype,Js=zs.toString;function Ks(e){return Js.call(e)}var Qs=Ks,mt=ae,Zs=Xs,eo=Qs,to="[object Null]",no="[object Undefined]",Rt=mt?mt.toStringTag:void 0;function ro(e){return e==null?e===void 0?no:to:Rt&&Rt in Object(e)?Zs(e):eo(e)}var ce=ro;function so(e){return e!=null&&typeof e=="object"}var W=so,oo=ce,io=W,ao="[object Symbol]";function co(e){return typeof e=="symbol"||io(e)&&oo(e)==ao}var Dn=co,uo=Ws,Nt=L,lo=Dn,vt=0/0,_o=/^[-+]0x[0-9a-f]+$/i,Eo=/^0b[01]+$/i,ho=/^0o[0-7]+$/i,fo=parseInt;function So(e){if(typeof e=="number")return e;if(lo(e))return vt;if(Nt(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Nt(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=uo(e);var n=Eo.test(e);return n||ho.test(e)?fo(e.slice(2),n?2:8):_o.test(e)?vt:+e}var go=So,To=L,de=Ls,At=go,Co="Expected a function",mo=Math.max,Ro=Math.min;function No(e,t,n){var r,s,o,i,a,u,l=0,d=!1,E=!1,h=!0;if(typeof e!="function")throw new TypeError(Co);t=At(t)||0,To(n)&&(d=!!n.leading,E="maxWait"in n,o=E?mo(At(n.maxWait)||0,t):o,h="trailing"in n?!!n.trailing:h);function S(f){var R=r,p=s;return r=s=void 0,l=f,i=e.apply(p,R),i}function g(f){return l=f,a=setTimeout(A,t),d?S(f):i}function C(f){var R=f-u,p=f-l,P=t-R;return E?Ro(P,o-p):P}function m(f){var R=f-u,p=f-l;return u===void 0||R>=t||R<0||E&&p>=o}function A(){var f=de();if(m(f))return b(f);a=setTimeout(A,C(f))}function b(f){return a=void 0,h&&r?S(f):(r=s=void 0,i)}function N(){a!==void 0&&clearTimeout(a),l=0,r=u=s=a=void 0}function v(){return a===void 0?i:b(de())}function y(){var f=de(),R=m(f);if(r=arguments,s=this,u=f,R){if(a===void 0)return g(u);if(E)return clearTimeout(a),a=setTimeout(A,t),S(u)}return a===void 0&&(a=setTimeout(A,t)),i}return y.cancel=N,y.flush=v,y}var vo=No;const Ao=ot(vo),it=({getRemoteStreams:e,setRemoteStreams:t})=>Ao(()=>{const n=e();_("remoteStreams",n),n&&t(n)},200),po=e=>async n=>{const{mediaStream:r,extraHeaders:s,iceServers:o,degradationPreference:i,setRemoteStreams:a,onBeforeProgressCall:u,onSuccessProgressCall:l,onEnterPurgatory:d,onEnterConference:E,onFailProgressCall:h,onFinishProgressCall:S,onEndedCall:g}=n,C=it({setRemoteStreams:a,getRemoteStreams:st(e)}),m=In(C);_("answerIncomingCall",n);const A=async()=>e.answerToIncomingCall({mediaStream:r,extraHeaders:s,iceServers:o,degradationPreference:i,ontrack:m}),b=()=>{const{remoteCallerData:T}=e;return T.incomingNumber};let N=!1,v;const f=(()=>(_("subscribeEnterConference: onEnterConference",E),d??E?e.onSession("enterRoom",T=>{_("enterRoom",{_room:T,isSuccessProgressCall:N}),v=T,H(v)?d&&d():E&&E({isSuccessProgressCall:N})}):()=>{}))(),R=T=>(_("onSuccess"),N=!0,C(),l&&l({isPurgatory:H(v)}),e.onceRaceSession(["ended","failed"],()=>{f(),g&&g()}),T),p=T=>{throw _("onFail"),h&&h(),f(),T},P=()=>{_("onFinish"),S&&S()};if(_("onBeforeProgressCall"),u){const T=b();u(T)}return A().then(R).catch(p).finally(P)},bo=e=>async n=>{const{conference:r,mediaStream:s,extraHeaders:o,iceServers:i,degradationPreference:a,setRemoteStreams:u,onBeforeProgressCall:l,onSuccessProgressCall:d,onEnterPurgatory:E,onEnterConference:h,onFailProgressCall:S,onFinishProgressCall:g,onEndedCall:C}=n,m=it({setRemoteStreams:u,getRemoteStreams:st(e)}),A=In(m);_("callToServer",n);const b=async()=>(_("startCall"),e.call({mediaStream:s,extraHeaders:o,iceServers:i,degradationPreference:a,number:r,ontrack:A}));let N=!1,v;const f=(()=>(_("subscribeEnterConference: onEnterConference",h),E??h?e.onSession("enterRoom",T=>{_("enterRoom",{_room:T,isSuccessProgressCall:N}),v=T,H(v)?E&&E():h&&h({isSuccessProgressCall:N})}):()=>{}))(),R=T=>(_("onSuccess"),N=!0,m(),d&&d({isPurgatory:H(v)}),e.onceRaceSession(["ended","failed"],()=>{f(),C&&C()}),T),p=T=>{throw _("onFail"),S&&S(),f(),T},P=()=>{_("onFinish"),g&&g()};return _("onBeforeProgressCall"),l&&l(r),b().then(R).catch(p).finally(P)},Ee=e=>{if(!I.isCanceledError(e))throw e;return!1},yo=e=>async n=>{const{userAgent:r,sipWebSocketServerURL:s,sipServerUrl:o,remoteAddress:i,displayName:a,name:u,password:l,isRegisteredUser:d,sdpSemantics:E,isDisconnectOnFail:h}=n;return _("connectToServer",n),e.connect({userAgent:r,sdpSemantics:E,sipWebSocketServerURL:s,sipServerUrl:o,remoteAddress:i,displayName:a,password:l,user:u,register:d}).then(()=>(_("connectToServer then"),!0)).catch(async S=>(_("connectToServer catch: error",S),h===!0?e.disconnect().then(()=>Ee(S)).catch(()=>Ee(S)):Ee(S)))},Oo=e=>async()=>(_("disconnectFromServer"),e.disconnect().then(()=>(_("disconnectFromServer: then"),!1)).catch(t=>(_("disconnectFromServer: catch",t),!1))),at=e=>{const{url:t,cause:n}=e;let r=t;return(n===Re||n===me)&&(r=`${e.message.to.uri.user}@${e.message.to.uri.host}`),r};var wn=(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))(wn||{});const Io=(e=new Error)=>{var s;const{cause:t,socket:n}=e;let r="CONNECT_SERVER_FAILED";switch(t){case"Forbidden":{r="WRONG_USER_OR_PASSWORD";break}case Re:{r="BAD_MEDIA_ERROR";break}case me:{r="NOT_FOUND_ERROR";break}default:n&&((s=n==null?void 0:n._ws)==null?void 0:s.readyState)===3?r="WS_CONNECTION_FAILED":at(e)&&(r="CONNECT_SERVER_FAILED_BY_LINK")}return r},Mo=(e=new Error)=>{const{code:t,cause:n,message:r}=e,s=at(e),o={};return r&&(o.message=r),s&&(o.link=s),t&&(o.code=t),n&&(o.cause=n),o},Po=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:wn,getLinkError:at,getTypeFromError:Io,getValuesFromError:Mo},Symbol.toStringTag,{value:"Module"})),Do=({sessionId:e,remoteAddress:t,isMutedAudio:n,isMutedVideo:r,isRegistered:s,isPresentationCall:o})=>{const i=[],a=n?"0":"1",u=r?"0":"1";return i.push(`X-Vinteo-Mic-State: ${a}`,`X-Vinteo-MainCam-State: ${u}`),s||i.push("X-Vinteo-Purgatory-Call: yes"),e&&i.push(`X-Vinteo-Session: ${e}`),o&&i.push("X-Vinteo-Presentation-Call: yes"),t&&i.push(`X-Vinteo-Remote: ${t}`),i},wo=({appName:e,appVersion:t,browserName:n,browserVersion:r})=>{const s=`${e} ${t}`;return`ChromeNew - ${n?`${n} ${r}, ${s}`:s}`},$o=({isUnifiedSdpSemantic:e,appVersion:t,browserName:n,browserVersion:r,appName:s})=>e?wo({appVersion:t,browserName:n,browserVersion:r,appName:s}):"Chrome",Lo=e=>async()=>{if(e.isCallActive)return _("askPermissionToEnableCam"),e.askPermissionToEnableCam()},Uo=e=>n=>(_("onMustStopPresentation"),e.onSession("mustStopPresentation",n)),Fo=e=>n=>(_("onUseLicense"),e.onSession("useLicense",n)),ko=e=>async({isEnabledCam:n,isEnabledMic:r})=>{if(e.isCallActive)return _("sendMediaState"),e.sendMediaState({cam:n,mic:r})},Bo=e=>async()=>{if(e.isCallActive)return _("sendRefusalToTurnOnCam"),e.sendRefusalToTurnOnCam().catch(n=>{_("sendRefusalToTurnOnCam: error",n)})},Ho=e=>async()=>{if(e.isCallActive)return _("sendRefusalToTurnOnMic"),e.sendRefusalToTurnOnMic().catch(n=>{_("sendRefusalToTurnOnMic: error",n)})},xo=1e6,Wo=({maxBitrate:e=xo,sipConnector:t})=>async({mediaStream:r,isP2P:s=!1})=>(_("startPresentation"),t.startPresentation(r,{isP2P:s,maxBitrate:e})),qo=({sipConnector:e})=>async({isP2P:n=!1}={})=>(_("stopShareSipConnector"),e.stopPresentation({isP2P:n}).catch(_)),jo=1e6,Vo=({sipConnector:e,maxBitrate:t=jo})=>async({mediaStream:r,isP2P:s=!1})=>(_("updatePresentation"),e.updatePresentation(r,{isP2P:s,maxBitrate:t}));var Go=L,pt=Object.create,Yo=function(){function e(){}return function(t){if(!Go(t))return{};if(pt)return pt(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}(),$n=Yo;function Xo(){}var ct=Xo,zo=$n,Jo=ct;function ee(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}ee.prototype=zo(Jo.prototype);ee.prototype.constructor=ee;var ut=ee;function Ko(e,t){for(var n=-1,r=t.length,s=e.length;++n<r;)e[s+n]=t[n];return e}var Qo=Ko,Zo=ce,ei=W,ti="[object Arguments]";function ni(e){return ei(e)&&Zo(e)==ti}var ri=ni,bt=ri,si=W,Ln=Object.prototype,oi=Ln.hasOwnProperty,ii=Ln.propertyIsEnumerable,ai=bt(function(){return arguments}())?bt:function(e){return si(e)&&oi.call(e,"callee")&&!ii.call(e,"callee")},ci=ai,ui=Array.isArray,ue=ui,yt=ae,li=ci,_i=ue,Ot=yt?yt.isConcatSpreadable:void 0;function di(e){return _i(e)||li(e)||!!(Ot&&e&&e[Ot])}var Ei=di,hi=Qo,fi=Ei;function Un(e,t,n,r,s){var o=-1,i=e.length;for(n||(n=fi),s||(s=[]);++o<i;){var a=e[o];t>0&&n(a)?t>1?Un(a,t-1,n,r,s):hi(s,a):r||(s[s.length]=a)}return s}var Si=Un,gi=Si;function Ti(e){var t=e==null?0:e.length;return t?gi(e,1):[]}var Ci=Ti;function mi(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}var Ri=mi,Ni=Ri,It=Math.max;function vi(e,t,n){return t=It(t===void 0?e.length-1:t,0),function(){for(var r=arguments,s=-1,o=It(r.length-t,0),i=Array(o);++s<o;)i[s]=r[t+s];s=-1;for(var a=Array(t+1);++s<t;)a[s]=r[s];return a[t]=n(i),Ni(e,this,a)}}var Ai=vi;function pi(e){return function(){return e}}var bi=pi,yi=ce,Oi=L,Ii="[object AsyncFunction]",Mi="[object Function]",Pi="[object GeneratorFunction]",Di="[object Proxy]";function wi(e){if(!Oi(e))return!1;var t=yi(e);return t==Mi||t==Pi||t==Ii||t==Di}var Fn=wi,$i=ie,Li=$i["__core-js_shared__"],Ui=Li,he=Ui,Mt=function(){var e=/[^.]+$/.exec(he&&he.keys&&he.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Fi(e){return!!Mt&&Mt in e}var ki=Fi,Bi=Function.prototype,Hi=Bi.toString;function xi(e){if(e!=null){try{return Hi.call(e)}catch{}try{return e+""}catch{}}return""}var Wi=xi,qi=Fn,ji=ki,Vi=L,Gi=Wi,Yi=/[\\^$.*+?()[\]{}|]/g,Xi=/^\[object .+?Constructor\]$/,zi=Function.prototype,Ji=Object.prototype,Ki=zi.toString,Qi=Ji.hasOwnProperty,Zi=RegExp("^"+Ki.call(Qi).replace(Yi,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ea(e){if(!Vi(e)||ji(e))return!1;var t=qi(e)?Zi:Xi;return t.test(Gi(e))}var ta=ea;function na(e,t){return e==null?void 0:e[t]}var ra=na,sa=ta,oa=ra;function ia(e,t){var n=oa(e,t);return sa(n)?n:void 0}var kn=ia,aa=kn,ca=function(){try{var e=aa(Object,"defineProperty");return e({},"",{}),e}catch{}}(),ua=ca;function la(e){return e}var _a=la,da=bi,Pt=ua,Ea=_a,ha=Pt?function(e,t){return Pt(e,"toString",{configurable:!0,enumerable:!1,value:da(t),writable:!0})}:Ea,fa=ha,Sa=800,ga=16,Ta=Date.now;function Ca(e){var t=0,n=0;return function(){var r=Ta(),s=ga-(r-n);if(n=r,s>0){if(++t>=Sa)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var ma=Ca,Ra=fa,Na=ma,va=Na(Ra),Aa=va,pa=Ci,ba=Ai,ya=Aa;function Oa(e){return ya(ba(e,void 0,pa),e+"")}var Ia=Oa,Ma=kn,Pa=ie,Da=Ma(Pa,"WeakMap"),wa=Da,Dt=wa,$a=Dt&&new Dt,La=$a;function Ua(){}var Fa=Ua,wt=La,ka=Fa,Ba=wt?function(e){return wt.get(e)}:ka,Bn=Ba,Ha={},xa=Ha,$t=xa,Wa=Object.prototype,qa=Wa.hasOwnProperty;function ja(e){for(var t=e.name+"",n=$t[t],r=qa.call($t,t)?n.length:0;r--;){var s=n[r],o=s.func;if(o==null||o==e)return s.name}return t}var Hn=ja,Va=$n,Ga=ct,Ya=4294967295;function te(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Ya,this.__views__=[]}te.prototype=Va(Ga.prototype);te.prototype.constructor=te;var lt=te;function Xa(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}var za=Xa,Ja=lt,Ka=ut,Qa=za;function Za(e){if(e instanceof Ja)return e.clone();var t=new Ka(e.__wrapped__,e.__chain__);return t.__actions__=Qa(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}var ec=Za,tc=lt,Lt=ut,nc=ct,rc=ue,sc=W,oc=ec,ic=Object.prototype,ac=ic.hasOwnProperty;function ne(e){if(sc(e)&&!rc(e)&&!(e instanceof tc)){if(e instanceof Lt)return e;if(ac.call(e,"__wrapped__"))return oc(e)}return new Lt(e)}ne.prototype=nc.prototype;ne.prototype.constructor=ne;var cc=ne,uc=lt,lc=Bn,_c=Hn,dc=cc;function Ec(e){var t=_c(e),n=dc[t];if(typeof n!="function"||!(t in uc.prototype))return!1;if(e===n)return!0;var r=lc(n);return!!r&&e===r[0]}var hc=Ec,Ut=ut,fc=Ia,Sc=Bn,fe=Hn,gc=ue,Ft=hc,Tc="Expected a function",Cc=8,mc=32,Rc=128,Nc=256;function vc(e){return fc(function(t){var n=t.length,r=n,s=Ut.prototype.thru;for(e&&t.reverse();r--;){var o=t[r];if(typeof o!="function")throw new TypeError(Tc);if(s&&!i&&fe(o)=="wrapper")var i=new Ut([],!0)}for(r=i?r:n;++r<n;){o=t[r];var a=fe(o),u=a=="wrapper"?Sc(o):void 0;u&&Ft(u[0])&&u[1]==(Rc|Cc|mc|Nc)&&!u[4].length&&u[9]==1?i=i[fe(u[0])].apply(i,u[3]):i=o.length==1&&Ft(o)?i[a]():i.thru(o)}return function(){var l=arguments,d=l[0];if(i&&l.length==1&&gc(d))return i.plant(d).value();for(var E=0,h=n?t[E].apply(this,l):d;++E<n;)h=t[E].call(this,h);return h}})}var Ac=vc,pc=Ac,bc=pc(),yc=bc;const Oc=ot(yc);function Ic(e,t){for(var n=-1,r=e==null?0:e.length,s=Array(r);++n<r;)s[n]=t(e[n],n,e);return s}var Mc=Ic,kt=ae,Pc=Mc,Dc=ue,wc=Dn,$c=1/0,Bt=kt?kt.prototype:void 0,Ht=Bt?Bt.toString:void 0;function xn(e){if(typeof e=="string")return e;if(Dc(e))return Pc(e,xn)+"";if(wc(e))return Ht?Ht.call(e):"";var t=e+"";return t=="0"&&1/e==-$c?"-0":t}var Wn=xn;function Lc(e,t,n){var r=-1,s=e.length;t<0&&(t=-t>s?0:s+t),n=n>s?s:n,n<0&&(n+=s),s=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(s);++r<s;)o[r]=e[r+t];return o}var Uc=Lc,Fc=Uc;function kc(e,t,n){var r=e.length;return n=n===void 0?r:n,!t&&n>=r?e:Fc(e,t,n)}var Bc=kc,Hc="\\ud800-\\udfff",xc="\\u0300-\\u036f",Wc="\\ufe20-\\ufe2f",qc="\\u20d0-\\u20ff",jc=xc+Wc+qc,Vc="\\ufe0e\\ufe0f",Gc="\\u200d",Yc=RegExp("["+Gc+Hc+jc+Vc+"]");function Xc(e){return Yc.test(e)}var qn=Xc;function zc(e,t){return e===t||e!==e&&t!==t}var Jc=zc,Kc=9007199254740991;function Qc(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Kc}var Zc=Qc,eu=Fn,tu=Zc;function nu(e){return e!=null&&tu(e.length)&&!eu(e)}var ru=nu,su=9007199254740991,ou=/^(?:0|[1-9]\d*)$/;function iu(e,t){var n=typeof e;return t=t??su,!!t&&(n=="number"||n!="symbol"&&ou.test(e))&&e>-1&&e%1==0&&e<t}var au=iu,cu=Jc,uu=ru,lu=au,_u=L;function du(e,t,n){if(!_u(n))return!1;var r=typeof t;return(r=="number"?uu(n)&&lu(t,n.length):r=="string"&&t in n)?cu(n[t],e):!1}var Eu=du,hu=ce,fu=W,Su="[object RegExp]";function gu(e){return fu(e)&&hu(e)==Su}var Tu=gu;function Cu(e){return function(t){return e(t)}}var mu=Cu,re={exports:{}};re.exports;(function(e,t){var n=Mn,r=t&&!t.nodeType&&t,s=r&&!0&&e&&!e.nodeType&&e,o=s&&s.exports===r,i=o&&n.process,a=function(){try{var u=s&&s.require&&s.require("util").types;return u||i&&i.binding&&i.binding("util")}catch{}}();e.exports=a})(re,re.exports);var Ru=re.exports,Nu=Tu,vu=mu,xt=Ru,Wt=xt&&xt.isRegExp,Au=Wt?vu(Wt):Nu,pu=Au;function bu(e){return e.split("")}var yu=bu,jn="\\ud800-\\udfff",Ou="\\u0300-\\u036f",Iu="\\ufe20-\\ufe2f",Mu="\\u20d0-\\u20ff",Pu=Ou+Iu+Mu,Du="\\ufe0e\\ufe0f",wu="["+jn+"]",Te="["+Pu+"]",Ce="\\ud83c[\\udffb-\\udfff]",$u="(?:"+Te+"|"+Ce+")",Vn="[^"+jn+"]",Gn="(?:\\ud83c[\\udde6-\\uddff]){2}",Yn="[\\ud800-\\udbff][\\udc00-\\udfff]",Lu="\\u200d",Xn=$u+"?",zn="["+Du+"]?",Uu="(?:"+Lu+"(?:"+[Vn,Gn,Yn].join("|")+")"+zn+Xn+")*",Fu=zn+Xn+Uu,ku="(?:"+[Vn+Te+"?",Te,Gn,Yn,wu].join("|")+")",Bu=RegExp(Ce+"(?="+Ce+")|"+ku+Fu,"g");function Hu(e){return e.match(Bu)||[]}var xu=Hu,Wu=yu,qu=qn,ju=xu;function Vu(e){return qu(e)?ju(e):Wu(e)}var Gu=Vu,Yu=Wn;function Xu(e){return e==null?"":Yu(e)}var zu=Xu,Ju=Wn,Ku=Bc,Qu=qn,Zu=Eu,el=pu,tl=Gu,nl=zu,rl=4294967295;function sl(e,t,n){return n&&typeof n!="number"&&Zu(e,t,n)&&(t=n=void 0),n=n===void 0?rl:n>>>0,n?(e=nl(e),e&&(typeof t=="string"||t!=null&&!el(t))&&(t=Ju(t),!t&&Qu(e))?Ku(tl(e),0,n):e.split(t,n)):[]}var ol=sl;const il=ot(ol),al=e=>Oc(t=>il(t,""),t=>t.map(n=>async()=>e(n))),cl=async({accumulatedKeys:e,sendKey:t,canRunTask:n})=>{const s=al(t)(e);return sr(s,n)},ul=e=>n=>(_("onStartMainCam"),e.onSession("admin-start-main-cam",n)),ll=e=>n=>(_("onStartMic"),e.onSession("admin-start-mic",n)),_l=e=>n=>(_("onStopMainCam"),e.onSession("admin-stop-main-cam",n)),dl=e=>n=>(_("onStopMic"),e.onSession("admin-stop-mic",n)),El=({sipConnector:e})=>{const t=(g,C)=>({isSyncForced:m=!1})=>{if(m){g();return}C()},n=ul(e),r=_l(e),s=ll(e),o=dl(e);let i=()=>{},a=()=>{},u=()=>{},l=()=>{};const d=({onStartMainCamForced:g,onStartMainCamNotForced:C,onStopMainCamForced:m,onStopMainCamNotForced:A,onStartMicForced:b,onStartMicNotForced:N,onStopMicForced:v,onStopMicNotForced:y})=>{const f=t(g,C);i=n(f);const R=t(m,A);a=r(R);const p=t(b,N);u=s(p);const P=t(v,y);l=o(P)},E=()=>{i(),a(),u(),l()};return{start:g=>{d(g)},stop:()=>{E()}}},hl=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:On,createSyncMediaState:El,error:Po,getExtraHeaders:Do,getUserAgent:$o,hasPurgatory:H,resolveAnswerIncomingCall:po,resolveAskPermissionToEnableCam:Lo,resolveCallToServer:bo,resolveConnectToServer:yo,resolveDisconnectFromServer:Oo,resolveGetRemoteStreams:st,resolveOnMustStopPresentation:Uo,resolveOnUseLicense:Fo,resolveSendMediaState:ko,resolveSendRefusalToTurnOnCam:Bo,resolveSendRefusalToTurnOnMic:Ho,resolveStartPresentation:Wo,resolveStopShareSipConnector:qo,resolveUpdatePresentation:Vo,resolveUpdateRemoteStreams:it,sendDTMFAccumulated:cl},Symbol.toStringTag,{value:"Module"})),fl=e=>[...e.keys()].map(t=>e.get(t)),Sl=(e,t)=>fl(e).find(n=>n.type===t),Jn=async e=>e.getStats().then(t=>{const n=Sl(t,"codec");return n==null?void 0:n.mimeType}),gl=e=>e.find(t=>{var n;return((n=t==null?void 0:t.track)==null?void 0:n.kind)==="video"}),Kn=(e,t)=>e!==void 0&&t!==void 0&&e.toLowerCase().includes(t.toLowerCase()),Tl=1e6,O=e=>e*Tl,Qn=O(.06),Cl=O(4),ml=e=>e<=64?Qn:e<=128?O(.12):e<=256?O(.25):e<=384?O(.32):e<=426?O(.38):e<=640?O(.5):e<=848?O(.7):e<=1280?O(1):e<=1920?O(2):Cl,Rl="av1",Nl=e=>Kn(e,Rl),vl=.6,Zn=(e,t)=>Nl(t)?e*vl:e,Al=e=>Zn(Qn,e),er=(e,t)=>{const n=ml(e);return Zn(n,t)},tr=or(),pl=async()=>tr().catch(e=>{_("videoSendingBalancer: error",e)}),bl=async e=>(tr.add(e),pl()),_t=async({sender:e,scaleResolutionDownBy:t,maxBitrate:n,onSetParameters:r})=>bl(async()=>yn(e,{scaleResolutionDownBy:t,maxBitrate:n},r)),yl=async({sender:e,codec:t},n)=>{const s=Al(t);return _t({sender:e,maxBitrate:s,onSetParameters:n,scaleResolutionDownBy:200})},Se=async({sender:e,track:t,codec:n},r)=>{const i=t.getSettings().width,a=er(i,n);return _t({sender:e,maxBitrate:a,onSetParameters:r,scaleResolutionDownBy:1})},Ol=async({sender:e,track:t,resolution:n,codec:r},s)=>{const o=t.getSettings(),i=o.width,a=o.height,[u,l]=n.split("x"),d=i/Number(u),E=a/Number(l),S=Math.max(d,E,1),g=er(Number(u),r);return _t({sender:e,maxBitrate:g,onSetParameters:s,scaleResolutionDownBy:S})},Il=async({mainCam:e,resolutionMainCam:t,sender:n,track:r,codec:s},o)=>{switch(e){case M.PAUSE_MAIN_CAM:return yl({sender:n,codec:s},o);case M.RESUME_MAIN_CAM:return Se({sender:n,track:r,codec:s},o);case M.MAX_MAIN_CAM_RESOLUTION:return t!==void 0?Ol({sender:n,track:r,codec:s,resolution:t},o):Se({sender:n,track:r,codec:s},o);default:return Se({sender:n,track:r,codec:s},o)}},qt={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},jt=async({mainCam:e,resolutionMainCam:t,connection:n,onSetParameters:r,ignoreForCodec:s})=>{const o=n.getSenders(),i=gl(o);if(!(i!=null&&i.track))return qt;const a=await Jn(i);return Kn(a,s)?qt:Il({mainCam:e,resolutionMainCam:t,sender:i,codec:a,track:i.track},r)},Ml=(e,{ignoreForCodec:t,onSetParameters:n}={})=>{const r=async()=>{const{connection:u}=e;if(!u)throw new Error("connection is not exist");return jt({connection:u,onSetParameters:n,ignoreForCodec:t})};let s=r;const o=async u=>(s=async()=>{const{mainCam:l,resolutionMainCam:d}=u,{connection:E}=e;if(!E)throw new Error("connection is not exist");return jt({mainCam:l,resolutionMainCam:d,connection:E,onSetParameters:n,ignoreForCodec:t})},s());return{subscribe:()=>{e.onSession("main-cam-control",o)},unsubscribe:()=>{e.offSession("main-cam-control",o)},balanceByTrack:r,resetMainCamControl(){s=r},async reBalance(){return s()}}};exports.debug=se;exports.EEventsMainCAM=M;exports.EEventsMic=Q;exports.EEventsSyncMediaState=Z;exports.EUseLicense=An;exports.causes=vr;exports.constants=Ar;exports.default=bs;exports.disableDebug=Zr;exports.enableDebug=Qr;exports.eventNames=pr;exports.getCodecFromSender=Jn;exports.hasCanceledCallError=hs;exports.resolveVideoSendingBalancer=Ml;exports.tools=hl;
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import SipConnector from './SipConnector';
2
2
  export { hasCanceledCallError } from './SipConnector';
3
3
  export * as causes from './causes';
4
+ export * as constants from './constants';
4
5
  export * as eventNames from './eventNames';
5
6
  export { debug, disableDebug, enableDebug } from './logger';
6
7
  export * as tools from './tools';