sip-connector 11.6.0 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{SipConnector-DhuPlarI.js → SipConnector-Dq5DrJxd.js} +4 -4
- package/dist/SipConnectorFacade/SipConnectorFacade.d.ts +132 -0
- package/dist/SipConnectorFacade/index.d.ts +1 -0
- package/dist/doMock.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +581 -568
- package/dist/tools/index.d.ts +0 -18
- package/package.json +3 -3
- package/dist/tools/answerIncomingCall.d.ts +0 -26
- package/dist/tools/callToServer.d.ts +0 -27
- package/dist/tools/connectToServer.d.ts +0 -17
- package/dist/tools/disconnectFromServer.d.ts +0 -7
- package/dist/tools/resolveAskPermissionToEnableCam.d.ts +0 -3
- package/dist/tools/resolveGetRemoteStreams.d.ts +0 -3
- package/dist/tools/resolveHandleChangeTracks.d.ts +0 -4
- package/dist/tools/resolveOnMoveToParticipants.d.ts +0 -3
- package/dist/tools/resolveOnMoveToSpectators.d.ts +0 -3
- package/dist/tools/resolveOnMustStopPresentation.d.ts +0 -3
- package/dist/tools/resolveOnUseLicense.d.ts +0 -4
- package/dist/tools/resolveReplaceMediaStream.d.ts +0 -14
- package/dist/tools/resolveSendMediaState.d.ts +0 -6
- package/dist/tools/resolveSendRefusalToTurnOnCam.d.ts +0 -3
- package/dist/tools/resolveSendRefusalToTurnOnMic.d.ts +0 -3
- package/dist/tools/resolveStartPresentation.d.ts +0 -16
- package/dist/tools/resolveStopShareSipConnector.d.ts +0 -5
- package/dist/tools/resolveUpdatePresentation.d.ts +0 -14
- package/dist/tools/resolveUpdateRemoteStreams.d.ts +0 -8
|
@@ -1306,12 +1306,12 @@ export {
|
|
|
1306
1306
|
xt as B,
|
|
1307
1307
|
f as E,
|
|
1308
1308
|
yt as N,
|
|
1309
|
-
|
|
1309
|
+
le as P,
|
|
1310
1310
|
ke as R,
|
|
1311
1311
|
Ss as S,
|
|
1312
1312
|
Tt as U,
|
|
1313
|
-
|
|
1314
|
-
|
|
1313
|
+
Fn as a,
|
|
1314
|
+
Te as b,
|
|
1315
1315
|
Es as c,
|
|
1316
1316
|
ds as d,
|
|
1317
1317
|
hs as e,
|
|
@@ -1323,5 +1323,5 @@ export {
|
|
|
1323
1323
|
Rn as k,
|
|
1324
1324
|
B as l,
|
|
1325
1325
|
ut as m,
|
|
1326
|
-
|
|
1326
|
+
xn as s
|
|
1327
1327
|
};
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { UA } from '@krivega/jssip';
|
|
2
|
+
import { default as SipConnector } from '../SipConnector';
|
|
3
|
+
import { EUseLicense, TContentHint, TSimulcastEncodings } from '../types';
|
|
4
|
+
declare class SipConnectorFacade {
|
|
5
|
+
private readonly sipConnector;
|
|
6
|
+
private readonly preferredMimeTypesVideoCodecs?;
|
|
7
|
+
private readonly excludeMimeTypesVideoCodecs?;
|
|
8
|
+
constructor(sipConnector: SipConnector, { preferredMimeTypesVideoCodecs, excludeMimeTypesVideoCodecs, }?: {
|
|
9
|
+
preferredMimeTypesVideoCodecs?: string[];
|
|
10
|
+
excludeMimeTypesVideoCodecs?: string[];
|
|
11
|
+
});
|
|
12
|
+
connectToServer: (parameters: {
|
|
13
|
+
userAgent: string;
|
|
14
|
+
sipWebSocketServerURL: string;
|
|
15
|
+
sipServerUrl: string;
|
|
16
|
+
remoteAddress?: string;
|
|
17
|
+
displayName?: string;
|
|
18
|
+
name?: string;
|
|
19
|
+
password?: string;
|
|
20
|
+
isRegisteredUser?: boolean;
|
|
21
|
+
isDisconnectOnFail?: boolean;
|
|
22
|
+
}) => Promise<{
|
|
23
|
+
ua?: UA;
|
|
24
|
+
isSuccessful: boolean;
|
|
25
|
+
}>;
|
|
26
|
+
callToServer: (parameters: {
|
|
27
|
+
conference: string;
|
|
28
|
+
mediaStream: MediaStream;
|
|
29
|
+
extraHeaders?: string[] | undefined;
|
|
30
|
+
iceServers?: RTCIceServer[];
|
|
31
|
+
contentHint?: TContentHint;
|
|
32
|
+
simulcastEncodings?: TSimulcastEncodings;
|
|
33
|
+
degradationPreference?: RTCDegradationPreference;
|
|
34
|
+
sendEncodings?: RTCRtpEncodingParameters[];
|
|
35
|
+
setRemoteStreams: (streams: MediaStream[]) => void;
|
|
36
|
+
onBeforeProgressCall?: (conference: string) => void;
|
|
37
|
+
onSuccessProgressCall?: (parameters_: {
|
|
38
|
+
isPurgatory: boolean;
|
|
39
|
+
}) => void;
|
|
40
|
+
onEnterPurgatory?: () => void;
|
|
41
|
+
onEnterConference?: (parameters_: {
|
|
42
|
+
isSuccessProgressCall: boolean;
|
|
43
|
+
}) => void;
|
|
44
|
+
onFailProgressCall?: () => void;
|
|
45
|
+
onFinishProgressCall?: () => void;
|
|
46
|
+
onEndedCall?: () => void;
|
|
47
|
+
}) => Promise<RTCPeerConnection>;
|
|
48
|
+
disconnectFromServer: () => Promise<{
|
|
49
|
+
isSuccessful: boolean;
|
|
50
|
+
}>;
|
|
51
|
+
answerIncomingCall: (parameters: {
|
|
52
|
+
mediaStream: MediaStream;
|
|
53
|
+
extraHeaders?: string[] | undefined;
|
|
54
|
+
iceServers?: RTCIceServer[];
|
|
55
|
+
contentHint?: TContentHint;
|
|
56
|
+
simulcastEncodings?: TSimulcastEncodings;
|
|
57
|
+
degradationPreference?: RTCDegradationPreference;
|
|
58
|
+
sendEncodings?: RTCRtpEncodingParameters[];
|
|
59
|
+
setRemoteStreams: (streams: MediaStream[]) => void;
|
|
60
|
+
onBeforeProgressCall?: (conference?: string) => void;
|
|
61
|
+
onSuccessProgressCall?: (parameters_: {
|
|
62
|
+
isPurgatory: boolean;
|
|
63
|
+
}) => void;
|
|
64
|
+
onFailProgressCall?: () => void;
|
|
65
|
+
onFinishProgressCall?: () => void;
|
|
66
|
+
onEnterPurgatory?: () => void;
|
|
67
|
+
onEnterConference?: (parameters_: {
|
|
68
|
+
isSuccessProgressCall: boolean;
|
|
69
|
+
}) => void;
|
|
70
|
+
onEndedCall?: () => void;
|
|
71
|
+
}) => Promise<RTCPeerConnection | void>;
|
|
72
|
+
updatePresentation: ({ mediaStream, isP2P, maxBitrate, contentHint, simulcastEncodings, degradationPreference, sendEncodings, preferredMimeTypesVideoCodecs, excludeMimeTypesVideoCodecs, }: {
|
|
73
|
+
mediaStream: MediaStream;
|
|
74
|
+
isP2P: boolean;
|
|
75
|
+
maxBitrate?: number;
|
|
76
|
+
contentHint?: TContentHint;
|
|
77
|
+
simulcastEncodings?: TSimulcastEncodings;
|
|
78
|
+
degradationPreference?: RTCDegradationPreference;
|
|
79
|
+
sendEncodings?: RTCRtpEncodingParameters[];
|
|
80
|
+
preferredMimeTypesVideoCodecs?: string[];
|
|
81
|
+
excludeMimeTypesVideoCodecs?: string[];
|
|
82
|
+
}) => Promise<MediaStream | void>;
|
|
83
|
+
startPresentation: ({ mediaStream, isP2P, maxBitrate, contentHint, simulcastEncodings, degradationPreference, sendEncodings, preferredMimeTypesVideoCodecs, excludeMimeTypesVideoCodecs, }: {
|
|
84
|
+
mediaStream: MediaStream;
|
|
85
|
+
isP2P: boolean;
|
|
86
|
+
maxBitrate?: number;
|
|
87
|
+
contentHint?: TContentHint;
|
|
88
|
+
simulcastEncodings?: TSimulcastEncodings;
|
|
89
|
+
degradationPreference?: RTCDegradationPreference;
|
|
90
|
+
sendEncodings?: RTCRtpEncodingParameters[];
|
|
91
|
+
preferredMimeTypesVideoCodecs?: string[];
|
|
92
|
+
excludeMimeTypesVideoCodecs?: string[];
|
|
93
|
+
}, options?: {
|
|
94
|
+
callLimit: number;
|
|
95
|
+
}) => Promise<MediaStream | void>;
|
|
96
|
+
stopShareSipConnector: ({ isP2P }?: {
|
|
97
|
+
isP2P?: boolean;
|
|
98
|
+
}) => Promise<void | MediaStream>;
|
|
99
|
+
sendRefusalToTurnOnMic: () => Promise<void>;
|
|
100
|
+
sendRefusalToTurnOnCam: () => Promise<void>;
|
|
101
|
+
sendMediaState: ({ isEnabledCam, isEnabledMic, }: {
|
|
102
|
+
isEnabledCam: boolean;
|
|
103
|
+
isEnabledMic: boolean;
|
|
104
|
+
}) => Promise<void>;
|
|
105
|
+
replaceMediaStream: (mediaStream: MediaStream, { deleteExisting, addMissing, forceRenegotiation, contentHint, simulcastEncodings, degradationPreference, sendEncodings, }?: {
|
|
106
|
+
deleteExisting?: boolean;
|
|
107
|
+
addMissing?: boolean;
|
|
108
|
+
forceRenegotiation?: boolean;
|
|
109
|
+
contentHint?: TContentHint;
|
|
110
|
+
simulcastEncodings?: TSimulcastEncodings;
|
|
111
|
+
degradationPreference?: RTCDegradationPreference;
|
|
112
|
+
sendEncodings?: RTCRtpEncodingParameters[];
|
|
113
|
+
}) => Promise<void>;
|
|
114
|
+
askPermissionToEnableCam: () => Promise<void>;
|
|
115
|
+
resolveHandleReadyRemoteStreamsDebounced: ({ onReadyRemoteStreams, }: {
|
|
116
|
+
onReadyRemoteStreams: (streams: MediaStream[]) => void;
|
|
117
|
+
}) => {
|
|
118
|
+
(this: unknown, ...args: [] & any[]): Promise<void>;
|
|
119
|
+
cancel: (reason?: any) => void;
|
|
120
|
+
};
|
|
121
|
+
resolveHandleReadyRemoteStreams: ({ onReadyRemoteStreams, }: {
|
|
122
|
+
onReadyRemoteStreams: () => void;
|
|
123
|
+
}) => ({ track }: {
|
|
124
|
+
track: MediaStreamTrack;
|
|
125
|
+
}) => void;
|
|
126
|
+
getRemoteStreams: () => MediaStream[] | undefined;
|
|
127
|
+
onUseLicense: (handler: (license: EUseLicense) => void) => (() => void);
|
|
128
|
+
onMustStopPresentation: (handler: () => void) => (() => void);
|
|
129
|
+
onMoveToSpectators: (handler: () => void) => (() => void);
|
|
130
|
+
onMoveToParticipants: (handler: () => void) => (() => void);
|
|
131
|
+
}
|
|
132
|
+
export default SipConnectorFacade;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as SipConnectorFacade } from './SipConnectorFacade';
|
package/dist/doMock.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var y = Object.defineProperty;
|
|
2
2
|
var N = (o, t, e) => t in o ? y(o, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : o[t] = e;
|
|
3
3
|
var r = (o, t, e) => N(o, typeof t != "symbol" ? t + "" : t, e);
|
|
4
|
-
import { m as P, R as O, U as k, S as A } from "./SipConnector-
|
|
4
|
+
import { m as P, R as O, U as k, S as A } from "./SipConnector-Dq5DrJxd.js";
|
|
5
5
|
import b from "@krivega/jssip/lib/NameAddrHeader";
|
|
6
6
|
import D from "@krivega/jssip/lib/URI";
|
|
7
7
|
import { EventEmitter as L } from "node:events";
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("./SipConnector-BWx586hI.cjs"),te=require("ts-debounce"),re=require("@krivega/cancelable-promise"),se=require("repeated-calls"),oe=require("sequent-promises"),ce=require("stack-promises"),ae=require("debug"),ie=e=>e.getVideoTracks()[0],ue=1e6,R=e=>e*ue,G=R(.06),le=R(4),ge=e=>e<=64?G:e<=128?R(.12):e<=256?R(.25):e<=384?R(.32):e<=426?R(.38):e<=640?R(.5):e<=848?R(.7):e<=1280?R(1):e<=1920?R(2):le,H=(e,t)=>e!==void 0&&t!==void 0&&e.toLowerCase().includes(t.toLowerCase()),de="av1",Se=e=>H(e,de),me=.6,W=(e,t)=>Se(t)?e*me:e,fe=e=>W(G,e),K=(e,t)=>{const n=ge(e);return W(n,t)},Ce=1,Y=({videoTrack:e,targetSize:t,codec:n})=>{const r=e.getSettings(),o=r.width,c=r.height,a=o/t.width,i=c/t.height,u=Math.max(a,i,Ce),g=K(t.width,n);return{scaleResolutionDownBy:u,maxBitrate:g}},I=({mediaStream:e,simulcastEncodings:t,sendEncodings:n})=>{if(t&&t.length>0){const r=n??[],o=ie(e);return t.forEach((c,a)=>{const i=r[a]??{},{maxBitrate:u,scaleResolutionDownBy:g}=Y({videoTrack:o,targetSize:{width:c.width,height:c.height}});i.maxBitrate=u,i.scaleResolutionDownBy=g,r[a]=i}),r}return n},z="purgatory",B=e=>e===z,x=e=>()=>(s.logger("getRemoteStreams"),e.getRemoteStreams()),Ee=({kind:e,readyState:t})=>e==="video"&&t==="live",Q=e=>({track:t})=>{Ee(t)&&e()},$=({getRemoteStreams:e,setRemoteStreams:t})=>te.debounce(()=>{const n=e();s.logger("remoteStreams",n),n&&t(n)},200),Re=(e,t)=>[...e,...t].filter((o,c,a)=>c===a.findIndex(i=>i.clockRate===o.clockRate&&i.mimeType===o.mimeType&&i.channels===o.channels&&i.sdpFmtpLine===o.sdpFmtpLine)),Te=e=>{const t=RTCRtpSender.getCapabilities(e),n=RTCRtpReceiver.getCapabilities(e),r=t===null?[]:t.codecs,o=n===null?[]:n.codecs;return Re(r,o)},he=(e,t)=>t===void 0||t.length===0?e:e.sort((n,r)=>{const o=t.indexOf(n.mimeType),c=t.indexOf(r.mimeType),a=o===-1?Number.MAX_VALUE:o,i=c===-1?Number.MAX_VALUE:c;return a-i}),Me=(e,t)=>t===void 0||t.length===0?e:e.filter(n=>!t.includes(n.mimeType)),D=(e,{preferredMimeTypesVideoCodecs:t,excludeMimeTypesVideoCodecs:n})=>async r=>{var o;if(typeof r.setCodecPreferences=="function"&&((o=r.sender.track)==null?void 0:o.kind)==="video"&&(t!==void 0&&(t==null?void 0:t.length)>0||n!==void 0&&(n==null?void 0:n.length)>0)){const c=Te("video"),a=Me(c,n),i=he(a,t);r.setCodecPreferences(i)}Object.keys(e).length>0&&await s.setParametersToSender(r.sender,e)},ve=e=>async n=>{const{mediaStream:r,extraHeaders:o,iceServers:c,contentHint:a,simulcastEncodings:i,degradationPreference:u,sendEncodings:g,preferredMimeTypesVideoCodecs:S,excludeMimeTypesVideoCodecs:d,setRemoteStreams:m,onBeforeProgressCall:_,onSuccessProgressCall:C,onEnterPurgatory:E,onEnterConference:f,onFailProgressCall:T,onFinishProgressCall:M,onEndedCall:v}=n,b=$({setRemoteStreams:m,getRemoteStreams:x(e)}),A=Q(b),O=D({degradationPreference:u},{preferredMimeTypesVideoCodecs:S,excludeMimeTypesVideoCodecs:d});s.logger("answerIncomingCall",n);const p=async()=>e.answerToIncomingCall({mediaStream:r,extraHeaders:o,iceServers:c,contentHint:a,sendEncodings:I({mediaStream:r,simulcastEncodings:i,sendEncodings:g}),onAddedTransceiver:O,ontrack:A}),P=()=>{const{remoteCallerData:l}=e;return l.incomingNumber};let h=!1,y;const N=(s.logger("subscribeEnterConference: onEnterConference",f),E??f?e.onSession("enterRoom",l=>{s.logger("enterRoom",{_room:l,isSuccessProgressCall:h}),y=l,B(y)?E&&E():f&&f({isSuccessProgressCall:h})}):()=>{}),w=l=>(s.logger("onSuccess"),h=!0,b(),C&&C({isPurgatory:B(y)}),e.onceRaceSession(["ended","failed"],()=>{N(),v&&v()}),l),F=l=>{throw s.logger("onFail"),T&&T(),N(),l},k=()=>{s.logger("onFinish"),M&&M()};if(s.logger("onBeforeProgressCall"),_){const l=P();_(l)}return p().then(w).catch(l=>F(l)).finally(k)},be=e=>async n=>{const{conference:r,mediaStream:o,extraHeaders:c,iceServers:a,contentHint:i,simulcastEncodings:u,degradationPreference:g,sendEncodings:S,preferredMimeTypesVideoCodecs:d,excludeMimeTypesVideoCodecs:m,setRemoteStreams:_,onBeforeProgressCall:C,onSuccessProgressCall:E,onEnterPurgatory:f,onEnterConference:T,onFailProgressCall:M,onFinishProgressCall:v,onEndedCall:b}=n,A=$({setRemoteStreams:_,getRemoteStreams:x(e)}),O=Q(A),p=D({degradationPreference:g},{preferredMimeTypesVideoCodecs:d,excludeMimeTypesVideoCodecs:m});s.logger("callToServer",n);const P=async()=>(s.logger("startCall"),e.call({mediaStream:o,extraHeaders:c,iceServers:a,contentHint:i,sendEncodings:I({mediaStream:o,simulcastEncodings:u,sendEncodings:S}),number:r,onAddedTransceiver:p,ontrack:O}));let h=!1,y;const N=(s.logger("subscribeEnterConference: onEnterConference",T),f??T?e.onSession("enterRoom",({room:l})=>{s.logger("enterRoom",{_room:l,isSuccessProgressCall:h}),y=l,B(y)?f&&f():T&&T({isSuccessProgressCall:h})}):()=>{}),w=l=>(s.logger("onSuccess"),h=!0,A(),E&&E({isPurgatory:B(y)}),e.onceRaceSession(["ended","failed"],()=>{N(),b&&b()}),l),F=l=>{throw s.logger("onFail"),M&&M(),N(),l},k=()=>{s.logger("onFinish"),v&&v()};return s.logger("onBeforeProgressCall"),C&&C(r),P().then(w).catch(l=>F(l)).finally(k)},U=e=>{if(!re.isCanceledError(e)&&!se.hasCanceledError(e))throw e;return{isSuccessful:!1}},ye=e=>async n=>{const{userAgent:r,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:i,name:u,password:g,isRegisteredUser:S,isDisconnectOnFail:d}=n;return s.logger("connectToServer",n),e.connect({userAgent:r,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:i,password:g,user:u,register:S}).then(m=>(s.logger("connectToServer then"),{ua:m,isSuccessful:!0})).catch(async m=>(s.logger("connectToServer catch: error",m),d===!0?e.disconnect().then(()=>U(m)).catch(()=>U(m)):U(m)))},Ae=e=>async()=>(s.logger("disconnectFromServer"),e.disconnect().then(()=>(s.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(t=>(s.logger("disconnectFromServer: catch",t),{isSuccessful:!1}))),q=e=>{const{url:t,cause:n}=e;let r=t;return(n===s.BAD_MEDIA_DESCRIPTION||n===s.NOT_FOUND)&&(r=`${e.message.to.uri.user}@${e.message.to.uri.host}`),r};var J=(e=>(e.CONNECT_SERVER_FAILED="CONNECT_SERVER_FAILED",e.WRONG_USER_OR_PASSWORD="WRONG_USER_OR_PASSWORD",e.BAD_MEDIA_ERROR="BAD_MEDIA_ERROR",e.NOT_FOUND_ERROR="NOT_FOUND_ERROR",e.WS_CONNECTION_FAILED="WS_CONNECTION_FAILED",e.CONNECT_SERVER_FAILED_BY_LINK="CONNECT_SERVER_FAILED_BY_LINK",e))(J||{});const _e=(e=new Error)=>{var o;const{cause:t,socket:n}=e;let r="CONNECT_SERVER_FAILED";switch(t){case"Forbidden":{r="WRONG_USER_OR_PASSWORD";break}case s.BAD_MEDIA_DESCRIPTION:{r="BAD_MEDIA_ERROR";break}case s.NOT_FOUND:{r="NOT_FOUND_ERROR";break}default:n&&((o=n==null?void 0:n._ws)==null?void 0:o.readyState)===3?r="WS_CONNECTION_FAILED":q(e)&&(r="CONNECT_SERVER_FAILED_BY_LINK")}return r},Oe=e=>{let t="";try{t=JSON.stringify(e)}catch(n){s.logger("failed to stringify message",n)}return t},pe=(e=new Error)=>{const{code:t,cause:n,message:r}=e,o=q(e),c={code:"",cause:"",message:""};return typeof r=="object"&&r!==null?c.message=Oe(r):r&&(c.message=String(r)),o&&(c.link=o),t&&(c.code=t),n&&(c.cause=n),c},Pe=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:J,getLinkError:q,getTypeFromError:_e,getValuesFromError:pe},Symbol.toStringTag,{value:"Module"})),Ne=({sessionId:e,remoteAddress:t,isMutedAudio:n,isMutedVideo:r,isRegistered:o,isPresentationCall:c})=>{const a=[],i=n?"0":"1",u=r?"0":"1";return a.push(`X-Vinteo-Mic-State: ${i}`,`X-Vinteo-MainCam-State: ${u}`),o||a.push("X-Vinteo-Purgatory-Call: yes"),e&&a.push(`X-Vinteo-Session: ${e}`),c&&a.push("X-Vinteo-Presentation-Call: yes"),t&&a.push(`X-Vinteo-Remote: ${t}`),a},Be="[@*!|]",Ie="_",De=e=>{let t=e;return t=t.replaceAll(new RegExp(Be,"g"),Ie),t},we=({appName:e,appVersion:t,browserName:n,browserVersion:r})=>{const c=`${De(e)} ${t}`;return`ChromeNew - ${n?`${n} ${r}, ${c}`:c}`},Fe=({isUnifiedSdpSemantic:e,appVersion:t,browserName:n,browserVersion:r,appName:o})=>e?we({appVersion:t,browserName:n,browserVersion:r,appName:o}):"Chrome",ke=e=>async()=>{if(e.isCallActive)return s.logger("askPermissionToEnableCam"),e.askPermissionToEnableCam()},Ue=e=>n=>(s.logger("onMoveToParticipants"),e.onSession(s.PARTICIPANT_MOVE_REQUEST_TO_PARTICIPANTS,n)),Le=e=>n=>(s.logger("onMoveToSpectators"),e.onSession(s.PARTICIPANT_MOVE_REQUEST_TO_SPECTATORS,n)),xe=e=>n=>(s.logger("onMustStopPresentation"),e.onSession("mustStopPresentation",n)),$e=e=>n=>(s.logger("onUseLicense"),e.onSession("useLicense",n)),qe=e=>async(n,{deleteExisting:r,addMissing:o,forceRenegotiation:c,contentHint:a,simulcastEncodings:i,degradationPreference:u,sendEncodings:g,preferredMimeTypesVideoCodecs:S,excludeMimeTypesVideoCodecs:d}={})=>{const m=D({degradationPreference:u},{preferredMimeTypesVideoCodecs:S,excludeMimeTypesVideoCodecs:d});return s.logger("replaceMediaStream"),e.replaceMediaStream(n,{deleteExisting:r,addMissing:o,forceRenegotiation:c,contentHint:a,sendEncodings:I({mediaStream:n,simulcastEncodings:i,sendEncodings:g}),onAddedTransceiver:m})},Ve=e=>async({isEnabledCam:n,isEnabledMic:r})=>{if(e.isCallActive)return s.logger("sendMediaState"),e.sendMediaState({cam:n,mic:r})},Xe=e=>async()=>{if(e.isCallActive)return s.logger("sendRefusalToTurnOnCam"),e.sendRefusalToTurnOnCam().catch(n=>{s.logger("sendRefusalToTurnOnCam: error",n)})},je=e=>async()=>{if(e.isCallActive)return s.logger("sendRefusalToTurnOnMic"),e.sendRefusalToTurnOnMic().catch(n=>{s.logger("sendRefusalToTurnOnMic: error",n)})},Ge=e=>async({mediaStream:n,isP2P:r,maxBitrate:o,contentHint:c,simulcastEncodings:a,degradationPreference:i,sendEncodings:u,preferredMimeTypesVideoCodecs:g,excludeMimeTypesVideoCodecs:S},d)=>{const m=D({degradationPreference:i},{preferredMimeTypesVideoCodecs:g,excludeMimeTypesVideoCodecs:S});return s.logger("startPresentation"),e.startPresentation(n,{isP2P:r,maxBitrate:o,contentHint:c,sendEncodings:I({mediaStream:n,simulcastEncodings:a,sendEncodings:u}),onAddedTransceiver:m},d)},He=e=>async({isP2P:n=!1}={})=>(s.logger("stopShareSipConnector"),e.stopPresentation({isP2P:n}).catch(r=>{s.logger(r)})),We=e=>async({mediaStream:n,isP2P:r,maxBitrate:o,contentHint:c,simulcastEncodings:a,degradationPreference:i,sendEncodings:u,preferredMimeTypesVideoCodecs:g,excludeMimeTypesVideoCodecs:S})=>{const d=D({degradationPreference:i},{preferredMimeTypesVideoCodecs:g,excludeMimeTypesVideoCodecs:S});return s.logger("updatePresentation"),e.updatePresentation(n,{isP2P:r,maxBitrate:o,contentHint:c,sendEncodings:I({mediaStream:n,simulcastEncodings:a,sendEncodings:u}),onAddedTransceiver:d})},Ke=e=>t=>[...t].map(r=>async()=>e(r)),Ye=async({accumulatedKeys:e,sendKey:t,canRunTask:n})=>{const o=Ke(t)(e);return oe.sequentPromises(o,n)},ze=e=>n=>(s.logger("onStartMainCam"),e.onSession("admin-start-main-cam",n)),Qe=e=>n=>(s.logger("onStartMic"),e.onSession("admin-start-mic",n)),Je=e=>n=>(s.logger("onStopMainCam"),e.onSession("admin-stop-main-cam",n)),Ze=e=>n=>(s.logger("onStopMic"),e.onSession("admin-stop-mic",n)),en=({sipConnector:e})=>{const t=(C,E)=>({isSyncForced:f=!1})=>{if(f){C();return}E()},n=ze(e),r=Je(e),o=Qe(e),c=Ze(e);let a=()=>{},i=()=>{},u=()=>{},g=()=>{};const S=({onStartMainCamForced:C,onStartMainCamNotForced:E,onStopMainCamForced:f,onStopMainCamNotForced:T,onStartMicForced:M,onStartMicNotForced:v,onStopMicForced:b,onStopMicNotForced:A})=>{const O=t(C,E);a=n(O);const p=t(f,T);i=r(p);const P=t(M,v);u=o(P);const h=t(b,A);g=c(h)},d=()=>{a(),i(),u(),g()};return{start:C=>{S(C)},stop:()=>{d()}}},nn=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:z,createSyncMediaState:en,error:Pe,getExtraHeaders:Ne,getUserAgent:Fe,hasPurgatory:B,resolveAnswerIncomingCall:ve,resolveAskPermissionToEnableCam:ke,resolveCallToServer:be,resolveConnectToServer:ye,resolveDisconnectFromServer:Ae,resolveGetRemoteStreams:x,resolveOnMoveToParticipants:Ue,resolveOnMoveToSpectators:Le,resolveOnMustStopPresentation:xe,resolveOnUseLicense:$e,resolveReplaceMediaStream:qe,resolveSendMediaState:Ve,resolveSendRefusalToTurnOnCam:Xe,resolveSendRefusalToTurnOnMic:je,resolveStartPresentation:Ge,resolveStopShareSipConnector:He,resolveUpdatePresentation:We,resolveUpdateRemoteStreams:$,sendDTMFAccumulated:Ye},Symbol.toStringTag,{value:"Module"})),tn=e=>[...e.keys()].map(t=>e.get(t)),rn=(e,t)=>tn(e).find(n=>n.type===t),Z=async e=>e.getStats().then(t=>{const n=rn(t,"codec");return n==null?void 0:n.mimeType}),sn=e=>e.find(t=>{var n;return((n=t==null?void 0:t.track)==null?void 0:n.kind)==="video"}),ee=ce.createStackPromises(),on=async()=>ee().catch(e=>{s.logger("videoSendingBalancer: error",e)}),cn=async e=>(ee.add(e),on()),V=async({sender:e,scaleResolutionDownBy:t,maxBitrate:n,onSetParameters:r})=>cn(async()=>s.setEncodingsToSender(e,{scaleResolutionDownBy:t,maxBitrate:n},r)),an=async({sender:e,codec:t},n)=>{const o=fe(t);return V({sender:e,maxBitrate:o,onSetParameters:n,scaleResolutionDownBy:200})},L=async({sender:e,videoTrack:t,codec:n},r)=>{const a=t.getSettings().width,i=K(a,n);return V({sender:e,maxBitrate:i,onSetParameters:r,scaleResolutionDownBy:1})},un=async({sender:e,videoTrack:t,resolution:n,codec:r},o)=>{const[c,a]=n.split("x"),{maxBitrate:i,scaleResolutionDownBy:u}=Y({videoTrack:t,codec:r,targetSize:{width:Number(c),height:Number(a)}});return V({sender:e,maxBitrate:i,onSetParameters:o,scaleResolutionDownBy:u})},ln=async({mainCam:e,resolutionMainCam:t,sender:n,videoTrack:r,codec:o},c)=>{switch(e){case s.EEventsMainCAM.PAUSE_MAIN_CAM:return an({sender:n,codec:o},c);case s.EEventsMainCAM.RESUME_MAIN_CAM:return L({sender:n,videoTrack:r,codec:o},c);case s.EEventsMainCAM.MAX_MAIN_CAM_RESOLUTION:return t!==void 0?un({sender:n,videoTrack:r,codec:o,resolution:t},c):L({sender:n,videoTrack:r,codec:o},c);default:return L({sender:n,videoTrack:r,codec:o},c)}},X={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},j=async({mainCam:e,resolutionMainCam:t,connection:n,onSetParameters:r,ignoreForCodec:o})=>{const c=n.getSenders(),a=sn(c);if(!(a!=null&&a.track))return X;const i=await Z(a);return H(i,o)?X:ln({mainCam:e,resolutionMainCam:t,sender:a,codec:i,videoTrack:a.track},r)},gn=(e,{ignoreForCodec:t,onSetParameters:n}={})=>{const r=async()=>{const{connection:u}=e;if(!u)throw new Error("connection is not exist");return j({connection:u,onSetParameters:n,ignoreForCodec:t})};let o=r;const c=async u=>(o=async()=>{const{mainCam:g,resolutionMainCam:S}=u,{connection:d}=e;if(!d)throw new Error("connection is not exist");return j({mainCam:g,resolutionMainCam:S,connection:d,onSetParameters:n,ignoreForCodec:t})},o());return{subscribe:()=>{e.onSession("main-cam-control",c)},unsubscribe:()=>{e.offSession("main-cam-control",c)},balanceByTrack:r,resetMainCamControl(){o=r},async reBalance(){return o()}}};exports.EEventsMainCAM=s.EEventsMainCAM;exports.EEventsMic=s.EEventsMic;exports.EEventsSyncMediaState=s.EEventsSyncMediaState;exports.EUseLicense=s.EUseLicense;exports.causes=s.causes;exports.constants=s.constants;exports.default=s.SipConnector;exports.disableDebug=s.disableDebug;exports.enableDebug=s.enableDebug;exports.eventNames=s.eventNames;exports.hasCanceledCallError=s.hasCanceledCallError;exports.setParametersToSender=s.setParametersToSender;exports.debug=ae;exports.getCodecFromSender=Z;exports.resolveVideoSendingBalancer=gn;exports.tools=nn;
|
|
1
|
+
"use strict";var Q=Object.defineProperty;var J=(n,e,t)=>e in n?Q(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var l=(n,e,t)=>J(n,typeof e!="symbol"?e+"":e,t);Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("./SipConnector-BWx586hI.cjs"),Z=require("sequent-promises"),ee=require("stack-promises"),ne=require("@krivega/cancelable-promise"),te=require("repeated-calls"),re=require("ts-debounce"),se=require("debug"),L=n=>{const{url:e,cause:t}=n;let r=e;return(t===s.BAD_MEDIA_DESCRIPTION||t===s.NOT_FOUND)&&(r=`${n.message.to.uri.user}@${n.message.to.uri.host}`),r};var q=(n=>(n.CONNECT_SERVER_FAILED="CONNECT_SERVER_FAILED",n.WRONG_USER_OR_PASSWORD="WRONG_USER_OR_PASSWORD",n.BAD_MEDIA_ERROR="BAD_MEDIA_ERROR",n.NOT_FOUND_ERROR="NOT_FOUND_ERROR",n.WS_CONNECTION_FAILED="WS_CONNECTION_FAILED",n.CONNECT_SERVER_FAILED_BY_LINK="CONNECT_SERVER_FAILED_BY_LINK",n))(q||{});const oe=(n=new Error)=>{var o;const{cause:e,socket:t}=n;let r="CONNECT_SERVER_FAILED";switch(e){case"Forbidden":{r="WRONG_USER_OR_PASSWORD";break}case s.BAD_MEDIA_DESCRIPTION:{r="BAD_MEDIA_ERROR";break}case s.NOT_FOUND:{r="NOT_FOUND_ERROR";break}default:t&&((o=t==null?void 0:t._ws)==null?void 0:o.readyState)===3?r="WS_CONNECTION_FAILED":L(n)&&(r="CONNECT_SERVER_FAILED_BY_LINK")}return r},ce=n=>{let e="";try{e=JSON.stringify(n)}catch(t){s.logger("failed to stringify message",t)}return e},ie=(n=new Error)=>{const{code:e,cause:t,message:r}=n,o=L(n),c={code:"",cause:"",message:""};return typeof r=="object"&&r!==null?c.message=ce(r):r&&(c.message=String(r)),o&&(c.link=o),e&&(c.code=e),t&&(c.cause=t),c},ae=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:q,getLinkError:L,getTypeFromError:oe,getValuesFromError:ie},Symbol.toStringTag,{value:"Module"})),ue=({sessionId:n,remoteAddress:e,isMutedAudio:t,isMutedVideo:r,isRegistered:o,isPresentationCall:c})=>{const i=[],a=t?"0":"1",u=r?"0":"1";return i.push(`X-Vinteo-Mic-State: ${a}`,`X-Vinteo-MainCam-State: ${u}`),o||i.push("X-Vinteo-Purgatory-Call: yes"),n&&i.push(`X-Vinteo-Session: ${n}`),c&&i.push("X-Vinteo-Presentation-Call: yes"),e&&i.push(`X-Vinteo-Remote: ${e}`),i},le="[@*!|]",de="_",ge=n=>{let e=n;return e=e.replaceAll(new RegExp(le,"g"),de),e},Se=({appName:n,appVersion:e,browserName:t,browserVersion:r})=>{const c=`${ge(n)} ${e}`;return`ChromeNew - ${t?`${t} ${r}, ${c}`:c}`},Ce=({isUnifiedSdpSemantic:n,appVersion:e,browserName:t,browserVersion:r,appName:o})=>n?Se({appVersion:e,browserName:t,browserVersion:r,appName:o}):"Chrome",H="purgatory",B=n=>n===H,me=n=>e=>[...e].map(r=>async()=>n(r)),fe=async({accumulatedKeys:n,sendKey:e,canRunTask:t})=>{const o=me(e)(n);return Z.sequentPromises(o,t)},he=n=>t=>(s.logger("onStartMainCam"),n.onSession("admin-start-main-cam",t)),Re=n=>t=>(s.logger("onStartMic"),n.onSession("admin-start-mic",t)),Ee=n=>t=>(s.logger("onStopMainCam"),n.onSession("admin-stop-main-cam",t)),pe=n=>t=>(s.logger("onStopMic"),n.onSession("admin-stop-mic",t)),ye=({sipConnector:n})=>{const e=(m,R)=>({isSyncForced:E=!1})=>{if(E){m();return}R()},t=he(n),r=Ee(n),o=Re(n),c=pe(n);let i=()=>{},a=()=>{},u=()=>{},g=()=>{};const C=({onStartMainCamForced:m,onStartMainCamNotForced:R,onStopMainCamForced:E,onStopMainCamNotForced:M,onStartMicForced:_,onStartMicNotForced:A,onStopMicForced:v,onStopMicNotForced:O})=>{const p=e(m,R);i=t(p);const y=e(E,M);a=r(y);const D=e(_,A);u=o(D);const b=e(v,O);g=c(b)},S=()=>{i(),a(),u(),g()};return{start:m=>{C(m)},stop:()=>{S()}}},Te=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:H,createSyncMediaState:ye,error:ae,getExtraHeaders:ue,getUserAgent:Ce,hasPurgatory:B,sendDTMFAccumulated:fe},Symbol.toStringTag,{value:"Module"})),Me=n=>[...n.keys()].map(e=>n.get(e)),be=(n,e)=>Me(n).find(t=>t.type===e),X=async n=>n.getStats().then(e=>{const t=be(e,"codec");return t==null?void 0:t.mimeType}),_e=n=>n.find(e=>{var t;return((t=e==null?void 0:e.track)==null?void 0:t.kind)==="video"}),j=(n,e)=>n!==void 0&&e!==void 0&&n.toLowerCase().includes(e.toLowerCase()),Ae=1e6,f=n=>n*Ae,W=f(.06),ve=f(4),Oe=n=>n<=64?W:n<=128?f(.12):n<=256?f(.25):n<=384?f(.32):n<=426?f(.38):n<=640?f(.5):n<=848?f(.7):n<=1280?f(1):n<=1920?f(2):ve,Ne="av1",Pe=n=>j(n,Ne),Be=.6,G=(n,e)=>Pe(e)?n*Be:n,De=n=>G(W,n),K=(n,e)=>{const t=Oe(n);return G(t,e)},Ie=1,Y=({videoTrack:n,targetSize:e,codec:t})=>{const r=n.getSettings(),o=r.width,c=r.height,i=o/e.width,a=c/e.height,u=Math.max(i,a,Ie),g=K(e.width,t);return{scaleResolutionDownBy:u,maxBitrate:g}},z=ee.createStackPromises(),we=async()=>z().catch(n=>{s.logger("videoSendingBalancer: error",n)}),Fe=async n=>(z.add(n),we()),V=async({sender:n,scaleResolutionDownBy:e,maxBitrate:t,onSetParameters:r})=>Fe(async()=>s.setEncodingsToSender(n,{scaleResolutionDownBy:e,maxBitrate:t},r)),ke=async({sender:n,codec:e},t)=>{const o=De(e);return V({sender:n,maxBitrate:o,onSetParameters:t,scaleResolutionDownBy:200})},k=async({sender:n,videoTrack:e,codec:t},r)=>{const i=e.getSettings().width,a=K(i,t);return V({sender:n,maxBitrate:a,onSetParameters:r,scaleResolutionDownBy:1})},Ue=async({sender:n,videoTrack:e,resolution:t,codec:r},o)=>{const[c,i]=t.split("x"),{maxBitrate:a,scaleResolutionDownBy:u}=Y({videoTrack:e,codec:r,targetSize:{width:Number(c),height:Number(i)}});return V({sender:n,maxBitrate:a,onSetParameters:o,scaleResolutionDownBy:u})},Le=async({mainCam:n,resolutionMainCam:e,sender:t,videoTrack:r,codec:o},c)=>{switch(n){case s.EEventsMainCAM.PAUSE_MAIN_CAM:return ke({sender:t,codec:o},c);case s.EEventsMainCAM.RESUME_MAIN_CAM:return k({sender:t,videoTrack:r,codec:o},c);case s.EEventsMainCAM.MAX_MAIN_CAM_RESOLUTION:return e!==void 0?Ue({sender:t,videoTrack:r,codec:o,resolution:e},c):k({sender:t,videoTrack:r,codec:o},c);default:return k({sender:t,videoTrack:r,codec:o},c)}},x={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},$=async({mainCam:n,resolutionMainCam:e,connection:t,onSetParameters:r,ignoreForCodec:o})=>{const c=t.getSenders(),i=_e(c);if(!(i!=null&&i.track))return x;const a=await X(i);return j(a,o)?x:Le({mainCam:n,resolutionMainCam:e,sender:i,codec:a,videoTrack:i.track},r)},Ve=(n,{ignoreForCodec:e,onSetParameters:t}={})=>{const r=async()=>{const{connection:u}=n;if(!u)throw new Error("connection is not exist");return $({connection:u,onSetParameters:t,ignoreForCodec:e})};let o=r;const c=async u=>(o=async()=>{const{mainCam:g,resolutionMainCam:C}=u,{connection:S}=n;if(!S)throw new Error("connection is not exist");return $({mainCam:g,resolutionMainCam:C,connection:S,onSetParameters:t,ignoreForCodec:e})},o());return{subscribe:()=>{n.onSession("main-cam-control",c)},unsubscribe:()=>{n.offSession("main-cam-control",c)},balanceByTrack:r,resetMainCamControl(){o=r},async reBalance(){return o()}}},xe=n=>n.getVideoTracks()[0],N=({mediaStream:n,simulcastEncodings:e,sendEncodings:t})=>{if(e&&e.length>0){const r=t??[],o=xe(n);return e.forEach((c,i)=>{const a=r[i]??{},{maxBitrate:u,scaleResolutionDownBy:g}=Y({videoTrack:o,targetSize:{width:c.width,height:c.height}});a.maxBitrate=u,a.scaleResolutionDownBy=g,r[i]=a}),r}return t},$e=(n,e)=>[...n,...e].filter((o,c,i)=>c===i.findIndex(a=>a.clockRate===o.clockRate&&a.mimeType===o.mimeType&&a.channels===o.channels&&a.sdpFmtpLine===o.sdpFmtpLine)),qe=n=>{const e=RTCRtpSender.getCapabilities(n),t=RTCRtpReceiver.getCapabilities(n),r=e===null?[]:e.codecs,o=t===null?[]:t.codecs;return $e(r,o)},He=(n,e)=>e===void 0||e.length===0?n:n.sort((t,r)=>{const o=e.indexOf(t.mimeType),c=e.indexOf(r.mimeType),i=o===-1?Number.MAX_VALUE:o,a=c===-1?Number.MAX_VALUE:c;return i-a}),Xe=(n,e)=>e===void 0||e.length===0?n:n.filter(t=>!e.includes(t.mimeType)),P=(n,{preferredMimeTypesVideoCodecs:e,excludeMimeTypesVideoCodecs:t})=>async r=>{var o;if(typeof r.setCodecPreferences=="function"&&((o=r.sender.track)==null?void 0:o.kind)==="video"&&(e!==void 0&&(e==null?void 0:e.length)>0||t!==void 0&&(t==null?void 0:t.length)>0)){const c=qe("video"),i=Xe(c,t),a=He(i,e);r.setCodecPreferences(a)}Object.keys(n).length>0&&await s.setParametersToSender(r.sender,n)},U=n=>{if(!ne.isCanceledError(n)&&!te.hasCanceledError(n))throw n;return{isSuccessful:!1}},je=({kind:n,readyState:e})=>n==="video"&&e==="live";class We{constructor(e,{preferredMimeTypesVideoCodecs:t,excludeMimeTypesVideoCodecs:r}={}){l(this,"sipConnector");l(this,"preferredMimeTypesVideoCodecs");l(this,"excludeMimeTypesVideoCodecs");l(this,"connectToServer",async e=>{const{userAgent:t,sipWebSocketServerURL:r,sipServerUrl:o,remoteAddress:c,displayName:i,name:a,password:u,isRegisteredUser:g,isDisconnectOnFail:C}=e;return s.logger("connectToServer",e),this.sipConnector.connect({userAgent:t,sipWebSocketServerURL:r,sipServerUrl:o,remoteAddress:c,displayName:i,password:u,user:a,register:g}).then(S=>(s.logger("connectToServer then"),{ua:S,isSuccessful:!0})).catch(async S=>(s.logger("connectToServer catch: error",S),C===!0?this.sipConnector.disconnect().then(()=>U(S)).catch(()=>U(S)):U(S)))});l(this,"callToServer",async e=>{const{conference:t,mediaStream:r,extraHeaders:o,iceServers:c,contentHint:i,simulcastEncodings:a,degradationPreference:u,sendEncodings:g,setRemoteStreams:C,onBeforeProgressCall:S,onSuccessProgressCall:T,onEnterPurgatory:h,onEnterConference:m,onFailProgressCall:R,onFinishProgressCall:E,onEndedCall:M}=e,_=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:C}),A=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:_}),v=P({degradationPreference:u},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});s.logger("callToServer",e);const O=async()=>(s.logger("startCall"),this.sipConnector.call({mediaStream:r,extraHeaders:o,iceServers:c,contentHint:i,sendEncodings:N({mediaStream:r,simulcastEncodings:a,sendEncodings:g}),number:t,onAddedTransceiver:v,ontrack:A}));let p=!1,y;const b=(s.logger("subscribeEnterConference: onEnterConference",m),h??m?this.sipConnector.onSession("enterRoom",({room:d})=>{s.logger("enterRoom",{_room:d,isSuccessProgressCall:p}),y=d,B(y)?h&&h():m&&m({isSuccessProgressCall:p})}):()=>{}),I=d=>(s.logger("onSuccess"),p=!0,_(),T&&T({isPurgatory:B(y)}),this.sipConnector.onceRaceSession(["ended","failed"],()=>{b(),M&&M()}),d),w=d=>{throw s.logger("onFail"),R&&R(),b(),d},F=()=>{s.logger("onFinish"),E&&E()};return s.logger("onBeforeProgressCall"),S&&S(t),O().then(I).catch(d=>w(d)).finally(F)});l(this,"disconnectFromServer",async()=>this.sipConnector.disconnect().then(()=>(s.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(e=>(s.logger("disconnectFromServer: catch",e),{isSuccessful:!1})));l(this,"answerIncomingCall",async e=>{const{mediaStream:t,extraHeaders:r,iceServers:o,contentHint:c,simulcastEncodings:i,degradationPreference:a,sendEncodings:u,setRemoteStreams:g,onBeforeProgressCall:C,onSuccessProgressCall:S,onEnterPurgatory:T,onEnterConference:h,onFailProgressCall:m,onFinishProgressCall:R,onEndedCall:E}=e,M=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:g}),_=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:M}),A=P({degradationPreference:a},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});s.logger("answerIncomingCall",e);const v=async()=>this.sipConnector.answerToIncomingCall({mediaStream:t,extraHeaders:r,iceServers:o,contentHint:c,sendEncodings:N({mediaStream:t,simulcastEncodings:i,sendEncodings:u}),onAddedTransceiver:A,ontrack:_}),O=()=>{const{remoteCallerData:d}=this.sipConnector;return d.incomingNumber};let p=!1,y;const b=(s.logger("subscribeEnterConference: onEnterConference",h),T??h?this.sipConnector.onSession("enterRoom",d=>{s.logger("enterRoom",{_room:d,isSuccessProgressCall:p}),y=d,B(y)?T&&T():h&&h({isSuccessProgressCall:p})}):()=>{}),I=d=>(s.logger("onSuccess"),p=!0,M(),S&&S({isPurgatory:B(y)}),this.sipConnector.onceRaceSession(["ended","failed"],()=>{b(),E&&E()}),d),w=d=>{throw s.logger("onFail"),m&&m(),b(),d},F=()=>{s.logger("onFinish"),R&&R()};if(s.logger("onBeforeProgressCall"),C){const d=O();C(d)}return v().then(I).catch(d=>w(d)).finally(F)});l(this,"updatePresentation",async({mediaStream:e,isP2P:t,maxBitrate:r,contentHint:o,simulcastEncodings:c,degradationPreference:i,sendEncodings:a,preferredMimeTypesVideoCodecs:u,excludeMimeTypesVideoCodecs:g})=>{const C=P({degradationPreference:i},{preferredMimeTypesVideoCodecs:u,excludeMimeTypesVideoCodecs:g});return s.logger("updatePresentation"),this.sipConnector.updatePresentation(e,{isP2P:t,maxBitrate:r,contentHint:o,sendEncodings:N({mediaStream:e,simulcastEncodings:c,sendEncodings:a}),onAddedTransceiver:C})});l(this,"startPresentation",async({mediaStream:e,isP2P:t,maxBitrate:r,contentHint:o,simulcastEncodings:c,degradationPreference:i,sendEncodings:a,preferredMimeTypesVideoCodecs:u,excludeMimeTypesVideoCodecs:g},C)=>{const S=P({degradationPreference:i},{preferredMimeTypesVideoCodecs:u,excludeMimeTypesVideoCodecs:g});return s.logger("startPresentation"),this.sipConnector.startPresentation(e,{isP2P:t,maxBitrate:r,contentHint:o,sendEncodings:N({mediaStream:e,simulcastEncodings:c,sendEncodings:a}),onAddedTransceiver:S},C)});l(this,"stopShareSipConnector",async({isP2P:e=!1}={})=>(s.logger("stopShareSipConnector"),this.sipConnector.stopPresentation({isP2P:e}).catch(t=>{s.logger(t)})));l(this,"sendRefusalToTurnOnMic",async()=>{if(this.sipConnector.isCallActive)return s.logger("sendRefusalToTurnOnMic"),this.sipConnector.sendRefusalToTurnOnMic().catch(e=>{s.logger("sendRefusalToTurnOnMic: error",e)})});l(this,"sendRefusalToTurnOnCam",async()=>{if(this.sipConnector.isCallActive)return s.logger("sendRefusalToTurnOnCam"),this.sipConnector.sendRefusalToTurnOnCam().catch(e=>{s.logger("sendRefusalToTurnOnCam: error",e)})});l(this,"sendMediaState",async({isEnabledCam:e,isEnabledMic:t})=>{if(this.sipConnector.isCallActive)return s.logger("sendMediaState"),this.sipConnector.sendMediaState({cam:e,mic:t})});l(this,"replaceMediaStream",async(e,{deleteExisting:t,addMissing:r,forceRenegotiation:o,contentHint:c,simulcastEncodings:i,degradationPreference:a,sendEncodings:u}={})=>{const g=P({degradationPreference:a},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});return s.logger("replaceMediaStream"),this.sipConnector.replaceMediaStream(e,{deleteExisting:t,addMissing:r,forceRenegotiation:o,contentHint:c,sendEncodings:N({mediaStream:e,simulcastEncodings:i,sendEncodings:u}),onAddedTransceiver:g})});l(this,"askPermissionToEnableCam",async()=>{if(this.sipConnector.isCallActive)return s.logger("askPermissionToEnableCam"),this.sipConnector.askPermissionToEnableCam()});l(this,"resolveHandleReadyRemoteStreamsDebounced",({onReadyRemoteStreams:e})=>re.debounce(()=>{const t=this.sipConnector.getRemoteStreams();s.logger("remoteStreams",t),t&&e(t)},200));l(this,"resolveHandleReadyRemoteStreams",({onReadyRemoteStreams:e})=>({track:t})=>{je(t)&&e()});l(this,"getRemoteStreams",()=>(s.logger("getRemoteStreams"),this.sipConnector.getRemoteStreams()));l(this,"onUseLicense",e=>(s.logger("onUseLicense"),this.sipConnector.onSession("useLicense",e)));l(this,"onMustStopPresentation",e=>(s.logger("onMustStopPresentation"),this.sipConnector.onSession("mustStopPresentation",e)));l(this,"onMoveToSpectators",e=>(s.logger("onMoveToSpectators"),this.sipConnector.onSession(s.PARTICIPANT_MOVE_REQUEST_TO_SPECTATORS,e)));l(this,"onMoveToParticipants",e=>(s.logger("onMoveToParticipants"),this.sipConnector.onSession(s.PARTICIPANT_MOVE_REQUEST_TO_PARTICIPANTS,e)));this.sipConnector=e,this.preferredMimeTypesVideoCodecs=t,this.excludeMimeTypesVideoCodecs=r}}exports.EEventsMainCAM=s.EEventsMainCAM;exports.EEventsMic=s.EEventsMic;exports.EEventsSyncMediaState=s.EEventsSyncMediaState;exports.EUseLicense=s.EUseLicense;exports.causes=s.causes;exports.constants=s.constants;exports.default=s.SipConnector;exports.disableDebug=s.disableDebug;exports.enableDebug=s.enableDebug;exports.eventNames=s.eventNames;exports.hasCanceledCallError=s.hasCanceledCallError;exports.setParametersToSender=s.setParametersToSender;exports.debug=se;exports.SipConnectorFacade=We;exports.getCodecFromSender=X;exports.resolveVideoSendingBalancer=Ve;exports.tools=Te;
|
package/dist/index.d.ts
CHANGED
|
@@ -10,3 +10,4 @@ export * from './types';
|
|
|
10
10
|
export { default as getCodecFromSender } from './utils/getCodecFromSender';
|
|
11
11
|
export { default as resolveVideoSendingBalancer } from './videoSendingBalancer';
|
|
12
12
|
export default SipConnector;
|
|
13
|
+
export { SipConnectorFacade } from './SipConnectorFacade';
|