sip-connector 14.1.2-1 → 14.1.2-2

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.
Files changed (97) hide show
  1. package/dist/SipConnector-DGYQOyHy.cjs +1 -0
  2. package/dist/SipConnector-DTNc5BfW.js +1352 -0
  3. package/dist/doMock.cjs +1 -1
  4. package/dist/doMock.js +1 -1
  5. package/dist/index.cjs +1 -1
  6. package/dist/index.js +85 -86
  7. package/dist/src/SipConnector.d.ts +235 -0
  8. package/dist/{SipConnectorFacade → src/SipConnectorFacade}/SipConnectorFacade.d.ts +1 -1
  9. package/package.json +1 -1
  10. package/dist/SipConnector-CZwqeStw.cjs +0 -1
  11. package/dist/SipConnector-DfaRIKWv.js +0 -1345
  12. package/dist/SipConnector.d.ts +0 -315
  13. package/dist/utils/utils.d.ts +0 -4
  14. /package/dist/{SipConnectorFacade → src/SipConnectorFacade}/index.d.ts +0 -0
  15. /package/dist/{__fixtures__ → src/__fixtures__}/BaseSession.mock.d.ts +0 -0
  16. /package/dist/{__fixtures__ → src/__fixtures__}/RTCPeerConnectionMock.d.ts +0 -0
  17. /package/dist/{__fixtures__ → src/__fixtures__}/RTCRtpSenderMock.d.ts +0 -0
  18. /package/dist/{__fixtures__ → src/__fixtures__}/RTCSessionMock.d.ts +0 -0
  19. /package/dist/{__fixtures__ → src/__fixtures__}/Registrator.mock.d.ts +0 -0
  20. /package/dist/{__fixtures__ → src/__fixtures__}/Request.mock.d.ts +0 -0
  21. /package/dist/{__fixtures__ → src/__fixtures__}/UA.mock.d.ts +0 -0
  22. /package/dist/{__fixtures__ → src/__fixtures__}/WebSocketInterface.mock.d.ts +0 -0
  23. /package/dist/{__fixtures__ → src/__fixtures__}/accountNotify.d.ts +0 -0
  24. /package/dist/{__fixtures__ → src/__fixtures__}/channels.d.ts +0 -0
  25. /package/dist/{__fixtures__ → src/__fixtures__}/channelsNotify.d.ts +0 -0
  26. /package/dist/{__fixtures__ → src/__fixtures__}/conferenceParticipantTokenIssuedNotify.d.ts +0 -0
  27. /package/dist/{__fixtures__ → src/__fixtures__}/delayPromise.d.ts +0 -0
  28. /package/dist/{__fixtures__ → src/__fixtures__}/enterRoom.d.ts +0 -0
  29. /package/dist/{__fixtures__ → src/__fixtures__}/index.d.ts +0 -0
  30. /package/dist/{__fixtures__ → src/__fixtures__}/jssip.mock.d.ts +0 -0
  31. /package/dist/{__fixtures__ → src/__fixtures__}/mediaState.d.ts +0 -0
  32. /package/dist/{__fixtures__ → src/__fixtures__}/participantMoveRequests.d.ts +0 -0
  33. /package/dist/{__fixtures__ → src/__fixtures__}/participantNotify.d.ts +0 -0
  34. /package/dist/{__fixtures__ → src/__fixtures__}/remoteCallerData.d.ts +0 -0
  35. /package/dist/{__fixtures__ → src/__fixtures__}/utils.d.ts +0 -0
  36. /package/dist/{__fixtures__ → src/__fixtures__}/webcastNotify.d.ts +0 -0
  37. /package/dist/{causes.d.ts → src/causes.d.ts} +0 -0
  38. /package/dist/{constants.d.ts → src/constants.d.ts} +0 -0
  39. /package/dist/{doMock.d.ts → src/doMock.d.ts} +0 -0
  40. /package/dist/{eventNames.d.ts → src/eventNames.d.ts} +0 -0
  41. /package/dist/{getExtraHeadersRemoteAddress.d.ts → src/getExtraHeadersRemoteAddress.d.ts} +0 -0
  42. /package/dist/{headers.d.ts → src/headers.d.ts} +0 -0
  43. /package/dist/{index.d.ts → src/index.d.ts} +0 -0
  44. /package/dist/{logger.d.ts → src/logger.d.ts} +0 -0
  45. /package/dist/{setParametersToSender → src/setParametersToSender}/configureDegradationPreference.d.ts +0 -0
  46. /package/dist/{setParametersToSender → src/setParametersToSender}/configureEmptyEncodings.d.ts +0 -0
  47. /package/dist/{setParametersToSender → src/setParametersToSender}/configureEncodings.d.ts +0 -0
  48. /package/dist/{setParametersToSender → src/setParametersToSender}/configureMaxBitrate.d.ts +0 -0
  49. /package/dist/{setParametersToSender → src/setParametersToSender}/configureScaleResolutionDownBy.d.ts +0 -0
  50. /package/dist/{setParametersToSender → src/setParametersToSender}/hasChangedRTCRtpSendParameters.d.ts +0 -0
  51. /package/dist/{setParametersToSender → src/setParametersToSender}/index.d.ts +0 -0
  52. /package/dist/{setParametersToSender → src/setParametersToSender}/resolveHasNeedToUpdateItemEncoding.d.ts +0 -0
  53. /package/dist/{setParametersToSender → src/setParametersToSender}/setParametersToSender.d.ts +0 -0
  54. /package/dist/{tools → src/tools}/__fixtures__/call.d.ts +0 -0
  55. /package/dist/{tools → src/tools}/__fixtures__/connectToServer.d.ts +0 -0
  56. /package/dist/{tools → src/tools}/__fixtures__/hasValidUri.d.ts +0 -0
  57. /package/dist/{tools → src/tools}/__fixtures__/permissions.d.ts +0 -0
  58. /package/dist/{tools → src/tools}/__fixtures__/processRequest.d.ts +0 -0
  59. /package/dist/{tools → src/tools}/__tests-utils__/parseObject.d.ts +0 -0
  60. /package/dist/{tools → src/tools}/__tests-utils__/resolveParseArray.d.ts +0 -0
  61. /package/dist/{tools → src/tools}/error/getLinkError.d.ts +0 -0
  62. /package/dist/{tools → src/tools}/error/getTypeFromError.d.ts +0 -0
  63. /package/dist/{tools → src/tools}/error/getValuesFromError.d.ts +0 -0
  64. /package/dist/{tools → src/tools}/error/index.d.ts +0 -0
  65. /package/dist/{tools → src/tools}/error/stringifyMessage.d.ts +0 -0
  66. /package/dist/{tools → src/tools}/generateSimulcastEncodings.d.ts +0 -0
  67. /package/dist/{tools → src/tools}/getExtraHeaders.d.ts +0 -0
  68. /package/dist/{tools → src/tools}/getUserAgent.d.ts +0 -0
  69. /package/dist/{tools → src/tools}/hasPurgatory.d.ts +0 -0
  70. /package/dist/{tools → src/tools}/index.d.ts +0 -0
  71. /package/dist/{tools → src/tools}/prepareMediaStream.d.ts +0 -0
  72. /package/dist/{tools → src/tools}/resolveUpdateTransceiver.d.ts +0 -0
  73. /package/dist/{tools → src/tools}/sendDTMFAccumulated.d.ts +0 -0
  74. /package/dist/{tools → src/tools}/setVideoTrackContentHints.d.ts +0 -0
  75. /package/dist/{tools → src/tools}/syncMediaState/index.d.ts +0 -0
  76. /package/dist/{tools → src/tools}/syncMediaState/resolveOnStartMainCam.d.ts +0 -0
  77. /package/dist/{tools → src/tools}/syncMediaState/resolveOnStartMic.d.ts +0 -0
  78. /package/dist/{tools → src/tools}/syncMediaState/resolveOnStopMainCam.d.ts +0 -0
  79. /package/dist/{tools → src/tools}/syncMediaState/resolveOnStopMic.d.ts +0 -0
  80. /package/dist/{types.d.ts → src/types.d.ts} +0 -0
  81. /package/dist/{utils → src/utils}/errors.d.ts +0 -0
  82. /package/dist/{utils → src/utils}/findSenderByStream.d.ts +0 -0
  83. /package/dist/{utils → src/utils}/findVideoSender.d.ts +0 -0
  84. /package/dist/{utils → src/utils}/findVideoTrack.d.ts +0 -0
  85. /package/dist/{utils → src/utils}/getCodecFromSender.d.ts +0 -0
  86. /package/dist/{utils → src/utils}/replaceForbiddenSymbolsWithUnderscore.d.ts +0 -0
  87. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/balance.d.ts +0 -0
  88. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/getMaxBitrateByWidth.d.ts +0 -0
  89. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/getMaxBitrateByWidthAndCodec.d.ts +0 -0
  90. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/hasAv1Codec.d.ts +0 -0
  91. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/hasIncludesString.d.ts +0 -0
  92. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/index.d.ts +0 -0
  93. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/processSender.d.ts +0 -0
  94. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/scaleBitrate.d.ts +0 -0
  95. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/scaleBitrateByCodec.d.ts +0 -0
  96. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/scaleResolutionAndBitrate.d.ts +0 -0
  97. /package/dist/{videoSendingBalancer → src/videoSendingBalancer}/setEncodingsToSender.d.ts +0 -0
@@ -0,0 +1,235 @@
1
+ import { RTCSession, RegisteredEvent, UA, URI, UnRegisteredEvent, WebSocketInterface } from '@krivega/jssip';
2
+ import { TEventSession, TEventUA } from './eventNames';
3
+ import { TContentHint, TJsSIP, TOnAddedTransceiver } from './types';
4
+ export declare const hasCanceledCallError: (error: unknown) => boolean;
5
+ export declare const hasCanceledStartPresentationError: (error: unknown) => error is import('node_modules/repeated-calls/dist/utils').TCanceledError<unknown>;
6
+ type TChannels = {
7
+ inputChannels: string;
8
+ outputChannels: string;
9
+ };
10
+ type TMediaState = {
11
+ cam: boolean;
12
+ mic: boolean;
13
+ };
14
+ type TOptionsInfoMediaState = {
15
+ noTerminateWhenError?: boolean;
16
+ };
17
+ type TOptionsExtraHeaders = {
18
+ extraHeaders?: string[];
19
+ };
20
+ type TOntrack = (track: RTCTrackEvent) => void;
21
+ type TParametersConnection = TOptionsExtraHeaders & {
22
+ displayName?: string;
23
+ user?: string;
24
+ password?: string;
25
+ register?: boolean;
26
+ sipServerUrl: string;
27
+ sipWebSocketServerURL: string;
28
+ remoteAddress?: string;
29
+ sessionTimers?: boolean;
30
+ registerExpires?: number;
31
+ connectionRecoveryMinInterval?: number;
32
+ connectionRecoveryMaxInterval?: number;
33
+ userAgent?: string;
34
+ };
35
+ type TParametersCheckTelephony = {
36
+ displayName: string;
37
+ sipServerUrl: string;
38
+ sipWebSocketServerURL: string;
39
+ userAgent?: string;
40
+ remoteAddress?: string;
41
+ extraHeaders?: string[];
42
+ };
43
+ type TConnect = (parameters: TParametersConnection, options?: {
44
+ callLimit?: number;
45
+ }) => Promise<UA>;
46
+ type TSet = ({ displayName, password, }: {
47
+ displayName?: string;
48
+ password?: string;
49
+ }) => Promise<boolean>;
50
+ type TParametersAnswerToIncomingCall = {
51
+ mediaStream: MediaStream;
52
+ extraHeaders?: TOptionsExtraHeaders['extraHeaders'];
53
+ ontrack?: TOntrack;
54
+ iceServers?: RTCIceServer[];
55
+ directionVideo?: RTCRtpTransceiverDirection;
56
+ directionAudio?: RTCRtpTransceiverDirection;
57
+ contentHint?: TContentHint;
58
+ sendEncodings?: RTCRtpEncodingParameters[];
59
+ offerToReceiveAudio?: boolean;
60
+ offerToReceiveVideo?: boolean;
61
+ onAddedTransceiver?: TOnAddedTransceiver;
62
+ };
63
+ type TParametersCall = TParametersAnswerToIncomingCall & {
64
+ number: string;
65
+ };
66
+ type TCall = (parameters: TParametersCall) => Promise<RTCPeerConnection>;
67
+ type TAnswerToIncomingCall = (parameters: TParametersAnswerToIncomingCall) => Promise<RTCPeerConnection>;
68
+ type TSendDTMF = (tone: number | string) => Promise<void>;
69
+ type THangUp = () => Promise<void>;
70
+ export default class SipConnector {
71
+ promisePendingStartPresentation?: Promise<MediaStream>;
72
+ promisePendingStopPresentation?: Promise<MediaStream | undefined>;
73
+ ua?: UA;
74
+ rtcSession?: RTCSession;
75
+ incomingRTCSession?: RTCSession;
76
+ streamPresentationCurrent?: MediaStream;
77
+ socket?: WebSocketInterface;
78
+ private isRegisterConfigInner;
79
+ private connectionConfiguration;
80
+ private remoteStreams;
81
+ private readonly JsSIP;
82
+ private readonly sessionEvents;
83
+ private readonly uaEvents;
84
+ private cancelableConnectWithRepeatedCalls;
85
+ private cancelableSendPresentationWithRepeatedCalls;
86
+ private isPendingConnect;
87
+ private isPendingInitUa;
88
+ private isPendingCall;
89
+ private isPendingAnswer;
90
+ constructor({ JsSIP }: {
91
+ JsSIP: TJsSIP;
92
+ });
93
+ get connection(): RTCPeerConnection | undefined;
94
+ get remoteCallerData(): {
95
+ displayName: string | undefined;
96
+ host: string | undefined;
97
+ incomingNumber: string | undefined;
98
+ rtcSession: RTCSession | undefined;
99
+ };
100
+ get requested(): boolean;
101
+ get establishedRTCSession(): RTCSession | undefined;
102
+ get isRegistered(): boolean;
103
+ get isRegisterConfig(): boolean;
104
+ get isCallActive(): boolean;
105
+ get isAvailableIncomingCall(): boolean;
106
+ get isPendingPresentation(): boolean;
107
+ connect: TConnect;
108
+ hangUp: THangUp;
109
+ register(): Promise<RegisteredEvent>;
110
+ unregister(): Promise<UnRegisteredEvent>;
111
+ readonly tryRegister: () => Promise<RegisteredEvent>;
112
+ sendOptions(target: URI | string, body?: string, extraHeaders?: string[]): Promise<void>;
113
+ ping(body?: string, extraHeaders?: string[]): Promise<void>;
114
+ checkTelephony({ userAgent, displayName, sipServerUrl, sipWebSocketServerURL, remoteAddress, extraHeaders, }: TParametersCheckTelephony): Promise<void>;
115
+ replaceMediaStream(mediaStream: MediaStream, options?: {
116
+ deleteExisting?: boolean;
117
+ addMissing?: boolean;
118
+ forceRenegotiation?: boolean;
119
+ contentHint?: TContentHint;
120
+ sendEncodings?: RTCRtpEncodingParameters[];
121
+ onAddedTransceiver?: TOnAddedTransceiver;
122
+ }): Promise<void>;
123
+ declineToIncomingCall: ({ statusCode, }?: {
124
+ statusCode?: number;
125
+ }) => Promise<void>;
126
+ busyIncomingCall: () => Promise<void>;
127
+ askPermissionToEnableCam(options?: TOptionsInfoMediaState): Promise<void>;
128
+ startPresentation(stream: MediaStream, { isNeedReinvite, isP2P, maxBitrate, contentHint, sendEncodings, onAddedTransceiver, }?: {
129
+ isNeedReinvite?: boolean;
130
+ isP2P?: boolean;
131
+ maxBitrate?: number;
132
+ contentHint?: TContentHint;
133
+ sendEncodings?: RTCRtpEncodingParameters[];
134
+ onAddedTransceiver?: TOnAddedTransceiver;
135
+ }, options?: {
136
+ callLimit: number;
137
+ }): Promise<MediaStream>;
138
+ stopPresentation({ isP2P, }?: {
139
+ isP2P?: boolean;
140
+ }): Promise<MediaStream | undefined>;
141
+ updatePresentation(stream: MediaStream, { isP2P, maxBitrate, contentHint, sendEncodings, onAddedTransceiver, }?: {
142
+ isP2P?: boolean;
143
+ maxBitrate?: number;
144
+ contentHint?: TContentHint;
145
+ sendEncodings?: RTCRtpEncodingParameters[];
146
+ onAddedTransceiver?: TOnAddedTransceiver;
147
+ }): Promise<MediaStream | undefined>;
148
+ on<T>(eventName: TEventUA, handler: (data: T) => void): () => void;
149
+ once<T>(eventName: TEventUA, handler: (data: T) => void): () => void;
150
+ onceRace<T>(eventNames: TEventUA[], handler: (data: T, eventName: string) => void): () => void;
151
+ wait<T>(eventName: TEventUA): Promise<T>;
152
+ off<T>(eventName: TEventUA, handler: (data: T) => void): void;
153
+ onSession<T>(eventName: TEventSession, handler: (data: T) => void): () => void;
154
+ onceSession<T>(eventName: TEventSession, handler: (data: T) => void): () => void;
155
+ onceRaceSession<T>(eventNames: TEventSession[], handler: (data: T, eventName: string) => void): () => void;
156
+ waitSession<T>(eventName: TEventSession): Promise<T>;
157
+ offSession<T>(eventName: TEventSession, handler: (data: T) => void): void;
158
+ isConfigured(): boolean;
159
+ getConnectionConfiguration(): {
160
+ sipServerUrl?: string;
161
+ displayName?: string;
162
+ register?: boolean;
163
+ user?: string;
164
+ password?: string;
165
+ number?: string;
166
+ answer?: boolean;
167
+ };
168
+ getRemoteStreams(): MediaStream[] | undefined;
169
+ getIncomingRTCSession(): RTCSession;
170
+ set: TSet;
171
+ disconnect: () => Promise<void>;
172
+ call: TCall;
173
+ answerToIncomingCall: TAnswerToIncomingCall;
174
+ sendDTMF: TSendDTMF;
175
+ cancelSendPresentationWithRepeatedCalls(): void;
176
+ waitChannels(): Promise<TChannels>;
177
+ waitSyncMediaState(): Promise<{
178
+ isSyncForced: boolean;
179
+ }>;
180
+ sendChannels({ inputChannels, outputChannels }: TChannels): Promise<void>;
181
+ sendMediaState({ cam, mic }: TMediaState, options?: TOptionsInfoMediaState): Promise<void>;
182
+ sendRefusalToTurnOn(type: 'cam' | 'mic', options?: TOptionsInfoMediaState): Promise<void>;
183
+ sendRefusalToTurnOnMic(options?: TOptionsInfoMediaState): Promise<void>;
184
+ sendRefusalToTurnOnCam(options?: TOptionsInfoMediaState): Promise<void>;
185
+ private readonly removeIncomingSession;
186
+ private getSipServerUrl;
187
+ private sendMustStopPresentation;
188
+ private readonly connectWithDuplicatedCalls;
189
+ private sendPresentationWithDuplicatedCalls;
190
+ private hasEqualConnectionConfiguration;
191
+ private createUaConfiguration;
192
+ private sendPresentation;
193
+ private removeStreamPresentationCurrent;
194
+ private resetPresentation;
195
+ private cancelRequestsAndResetPresentation;
196
+ private readonly handleNewRTCSession;
197
+ private readonly connectInner;
198
+ private readonly initUa;
199
+ private readonly createUa;
200
+ private readonly start;
201
+ private readonly handleCall;
202
+ private readonly restoreSession;
203
+ private generateStream;
204
+ private generateAudioStream;
205
+ private generateStreams;
206
+ private generateAudioStreams;
207
+ private readonly hangUpWithoutCancelRequests;
208
+ private cancelRequests;
209
+ private cancelConnectWithRepeatedCalls;
210
+ private readonly handleShareState;
211
+ private readonly maybeTriggerChannels;
212
+ private readonly handleNotify;
213
+ private readonly triggerRemovedFromListModeratorsNotify;
214
+ private readonly triggerAddedToListModeratorsNotify;
215
+ private readonly triggerWebcastStartedNotify;
216
+ private readonly triggerWebcastStoppedNotify;
217
+ private readonly triggerAccountChangedNotify;
218
+ private readonly triggerAccountDeletedNotify;
219
+ private readonly triggerConferenceParticipantTokenIssued;
220
+ private readonly triggerChannelsNotify;
221
+ private readonly triggerParticipationAcceptingWordRequest;
222
+ private readonly triggerParticipationCancellingWordRequest;
223
+ private readonly triggerParticipantMoveRequestToStream;
224
+ private readonly triggerEnterRoom;
225
+ private readonly triggerShareState;
226
+ private readonly maybeTriggerParticipantMoveRequest;
227
+ private readonly triggerMainCamControl;
228
+ private readonly triggerMicControl;
229
+ private readonly triggerUseLicense;
230
+ private readonly handleNewInfo;
231
+ private readonly handleSipEvent;
232
+ private readonly maybeHandleNotify;
233
+ private readonly handleEnded;
234
+ }
235
+ export {};
@@ -145,7 +145,7 @@ declare class SipConnectorFacade implements IProxyMethods {
145
145
  }) => Promise<MediaStream | undefined>;
146
146
  stopShareSipConnector: ({ isP2P }?: {
147
147
  isP2P?: boolean;
148
- }) => Promise<void | MediaStream>;
148
+ }) => Promise<void | MediaStream | undefined>;
149
149
  sendRefusalToTurnOnMic: () => Promise<void>;
150
150
  sendRefusalToTurnOnCam: () => Promise<void>;
151
151
  sendMediaState: ({ isEnabledCam, isEnabledMic, }: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sip-connector",
3
- "version": "14.1.2-1",
3
+ "version": "14.1.2-2",
4
4
  "description": "Module for connect to Vinteo server",
5
5
  "keywords": [
6
6
  "webrtc",
@@ -1 +0,0 @@
1
- "use strict";var Dt=Object.defineProperty;var Mt=(s,e,t)=>e in s?Dt(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var r=(s,e,t)=>Mt(s,typeof e!="symbol"?e+"":e,t);const N=require("@krivega/cancelable-promise"),we=require("events-constructor"),X=require("repeated-calls"),Q=require("debug"),pt="Connection Error",ke="Request Timeout",vt="SIP Failure Code",yt="Internal Error",bt="Busy",z="Rejected",wt="Redirected",Ut="Unavailable",Be="Not Found",Lt="Address Incomplete",Ht="Incompatible SDP",Wt="Missing SDP",qt="Authentication Error",Fe="Terminated",kt="WebRTC Error",xe="Canceled",Bt="No Answer",Ft="Expires",xt="No ACK",Vt="Dialog Error",Yt="User Denied Media Access",Ve="Bad Media Description",$t="RTP Timeout",Gt=Object.freeze(Object.defineProperty({__proto__:null,ADDRESS_INCOMPLETE:Lt,AUTHENTICATION_ERROR:qt,BAD_MEDIA_DESCRIPTION:Ve,BUSY:bt,BYE:Fe,CANCELED:xe,CONNECTION_ERROR:pt,DIALOG_ERROR:Vt,EXPIRES:Ft,INCOMPATIBLE_SDP:Ht,INTERNAL_ERROR:yt,MISSING_SDP:Wt,NOT_FOUND:Be,NO_ACK:xt,NO_ANSWER:Bt,REDIRECTED:wt,REJECTED:z,REQUEST_TIMEOUT:ke,RTP_TIMEOUT:$t,SIP_FAILURE_CODE:vt,UNAVAILABLE:Ut,USER_DENIED_MEDIA_ACCESS:Yt,WEBRTC_ERROR:kt},Symbol.toStringTag,{value:"Module"})),j="incomingCall",K="declinedIncomingCall",Z="failedIncomingCall",ee="terminatedIncomingCall",x="connecting",m="connected",C="disconnected",w="newRTCSession",D="registered",te="unregistered",M="registrationFailed",Ye="newMessage",ne="sipEvent",se="availableSecondRemoteStream",ie="notAvailableSecondRemoteStream",re="mustStopPresentation",U="shareState",oe="enterRoom",ae="useLicense",ce="peerconnection:confirmed",Ee="peerconnection:ontrack",L="channels",_e="channels:notify",le="ended:fromserver",de="main-cam-control",he="admin-stop-main-cam",Se="admin-start-main-cam",Te="admin-stop-mic",ue="admin-start-mic",H="admin-force-sync-media-state",Ce="participant:added-to-list-moderators",Ne="participant:removed-from-list-moderators",ge="participant:move-request-to-stream",V="participant:move-request-to-spectators",Y="participant:move-request-to-participants",Ae="participation:accepting-word-request",Re="participation:cancelling-word-request",Ie="webcast:started",fe="webcast:stopped",Pe="account:changed",Oe="account:deleted",me="conference:participant-token-issued",p="ended",$e="sending",Ge="reinvite",Je="replaces",Xe="refer",Qe="progress",ze="accepted",W="confirmed",q="peerconnection",I="failed",je="muted",Ke="unmuted",De="newDTMF",Me="newInfo",Ze="hold",et="unhold",tt="update",nt="sdp",st="icecandidate",it="getusermediafailed",rt="peerconnection:createofferfailed",ot="peerconnection:createanswerfailed",at="peerconnection:setlocaldescriptionfailed",ct="peerconnection:setremotedescriptionfailed",Et="presentation:start",_t="presentation:started",lt="presentation:end",pe="presentation:ended",k="presentation:failed",dt="SPECTATOR",ht="PARTICIPANT",St=1e6;var R=(s=>(s.LOCAL="local",s.REMOTE="remote",s.SYSTEM="system",s))(R||{});const Jt=Object.freeze(Object.defineProperty({__proto__:null,ACCEPTED:ze,ACCOUNT_CHANGED:Pe,ACCOUNT_DELETED:Oe,ADMIN_FORCE_SYNC_MEDIA_STATE:H,ADMIN_START_MAIN_CAM:Se,ADMIN_START_MIC:ue,ADMIN_STOP_MAIN_CAM:he,ADMIN_STOP_MIC:Te,AVAILABLE_SECOND_REMOTE_STREAM_EVENT:se,CHANNELS:L,CHANNELS_NOTIFY:_e,CONFERENCE_PARTICIPANT_TOKEN_ISSUED:me,CONFIRMED:W,CONNECTED:m,CONNECTING:x,DECLINED_INCOMING_CALL:K,DISCONNECTED:C,ENDED:p,ENDED_FROM_SERVER:le,ENTER_ROOM:oe,FAILED:I,FAILED_INCOMING_CALL:Z,GET_USER_MEDIA_FAILED:it,HOLD:Ze,ICE_CANDIDATE:st,INCOMING_CALL:j,MAIN_CAM_CONTROL:de,MUST_STOP_PRESENTATION_EVENT:re,MUTED:je,NEW_DTMF:De,NEW_INFO:Me,NEW_MESSAGE:Ye,NEW_RTC_SESSION:w,NOT_AVAILABLE_SECOND_REMOTE_STREAM_EVENT:ie,ONE_MEGABIT_IN_BITS:St,Originator:R,PARTICIPANT:ht,PARTICIPANT_ADDED_TO_LIST_MODERATORS:Ce,PARTICIPANT_MOVE_REQUEST_TO_PARTICIPANTS:Y,PARTICIPANT_MOVE_REQUEST_TO_SPECTATORS:V,PARTICIPANT_MOVE_REQUEST_TO_STREAM:ge,PARTICIPANT_REMOVED_FROM_LIST_MODERATORS:Ne,PARTICIPATION_ACCEPTING_WORD_REQUEST:Ae,PARTICIPATION_CANCELLING_WORD_REQUEST:Re,PEER_CONNECTION:q,PEER_CONNECTION_CONFIRMED:ce,PEER_CONNECTION_CREATE_ANSWER_FAILED:ot,PEER_CONNECTION_CREATE_OFFER_FAILED:rt,PEER_CONNECTION_ONTRACK:Ee,PEER_CONNECTION_SET_LOCAL_DESCRIPTION_FAILED:at,PEER_CONNECTION_SET_REMOTE_DESCRIPTION_FAILED:ct,PRESENTATION_END:lt,PRESENTATION_ENDED:pe,PRESENTATION_FAILED:k,PRESENTATION_START:Et,PRESENTATION_STARTED:_t,PROGRESS:Qe,REFER:Xe,REGISTERED:D,REGISTRATION_FAILED:M,REINVITE:Ge,REPLACES:Je,SDP:nt,SENDING:$e,SHARE_STATE:U,SIP_EVENT:ne,SPECTATOR:dt,TERMINATED_INCOMING_CALL:ee,UNHOLD:et,UNMUTED:Ke,UNREGISTERED:te,UPDATE:tt,USE_LICENSE:ae,WEBCAST_STARTED:Ie,WEBCAST_STOPPED:fe},Symbol.toStringTag,{value:"Module"})),Tt=[j,K,ee,Z,Ae,Re,ge,_e,me,Pe,Oe,Ie,fe,Ce,Ne],$=[x,m,C,w,D,te,M,Ye,ne],ut=[se,ie,re,U,oe,ae,ce,Ee,L,le,de,Se,he,Te,ue,H,V,Y],ve=[p,x,$e,Ge,Je,Xe,Qe,ze,W,q,I,je,Ke,De,Me,Ze,et,tt,nt,st,it,rt,ot,at,ct,Et,_t,lt,pe,k],Ct=[...$,...Tt],ye=[...ve,...ut],Xt=Object.freeze(Object.defineProperty({__proto__:null,SESSION_EVENT_NAMES:ye,SESSION_JSSIP_EVENT_NAMES:ve,SESSION_SYNTHETICS_EVENT_NAMES:ut,UA_EVENT_NAMES:Ct,UA_JSSIP_EVENT_NAMES:$,UA_SYNTHETICS_EVENT_NAMES:Tt},Symbol.toStringTag,{value:"Module"})),be="sip-connector",b=Q(be),Qt=()=>{Q.enable(be)},zt=()=>{Q.enable(`-${be}`)},jt=(s,e)=>(s.degradationPreference=e.degradationPreference,s),Kt=(s,e)=>{s.encodings??(s.encodings=[]);for(let t=s.encodings.length;t<e;t+=1)s.encodings.push({});return s},Nt=s=>(e,t)=>t!==void 0&&e!==t||t===void 0&&e!==s,Zt=Nt(),en=(s,e)=>{if(Zt(s,e))return s},tn=(s,e)=>{const t=s.maxBitrate,n=en(e,t);return n!==void 0&&(s.maxBitrate=n),s},gt=1,nn=Nt(gt),sn=(s,e)=>{const t=s===void 0?void 0:Math.max(s,gt);if(t!==void 0&&nn(t,e))return t},rn=(s,e)=>{const t=s.scaleResolutionDownBy,n=sn(e,t);return n!==void 0&&(s.scaleResolutionDownBy=n),s},on=(s,e)=>{var n;const t=((n=e.encodings)==null?void 0:n.length)??0;return Kt(s,t),s.encodings.forEach((i,o)=>{const a=((e==null?void 0:e.encodings)??[])[o],c=a==null?void 0:a.maxBitrate,E=a==null?void 0:a.scaleResolutionDownBy;tn(i,c),rn(i,E)}),s},an=(s,e)=>{var t,n,i,o,a,c,E,_,h,S,l,T;if(((t=s.codecs)==null?void 0:t.length)!==((n=e.codecs)==null?void 0:n.length))return!0;for(let d=0;d<(((i=s.codecs)==null?void 0:i.length)??0);d++)if(JSON.stringify(s.codecs[d])!==JSON.stringify(e.codecs[d]))return!0;if(((o=s.headerExtensions)==null?void 0:o.length)!==((a=e.headerExtensions)==null?void 0:a.length))return!0;for(let d=0;d<(((c=s.headerExtensions)==null?void 0:c.length)??0);d++)if(JSON.stringify(s.headerExtensions[d])!==JSON.stringify(e.headerExtensions[d]))return!0;if(((E=s.encodings)==null?void 0:E.length)!==((_=e.encodings)==null?void 0:_.length))return!0;for(let d=0;d<(s.encodings.length??0);d++)if(JSON.stringify(s.encodings[d])!==JSON.stringify(e.encodings[d]))return!0;return((h=s.rtcp)==null?void 0:h.cname)!==((S=e.rtcp)==null?void 0:S.cname)||((l=s.rtcp)==null?void 0:l.reducedSize)!==((T=e.rtcp)==null?void 0:T.reducedSize)||s.degradationPreference!==e.degradationPreference},At=async(s,e)=>{const t=s.getParameters(),n=JSON.parse(JSON.stringify(t));on(t,e),jt(t,e);const i=an(n,t);return i&&await s.setParameters(t),{parameters:t,isChanged:i}};var f=(s=>(s.PAUSE_MAIN_CAM="PAUSEMAINCAM",s.RESUME_MAIN_CAM="RESUMEMAINCAM",s.MAX_MAIN_CAM_RESOLUTION="MAXMAINCAMRESOLUTION",s.ADMIN_STOP_MAIN_CAM="ADMINSTOPMAINCAM",s.ADMIN_START_MAIN_CAM="ADMINSTARTMAINCAM",s))(f||{}),B=(s=>(s.ADMIN_STOP_MIC="ADMINSTOPMIC",s.ADMIN_START_MIC="ADMINSTARTMIC",s))(B||{}),F=(s=>(s.ADMIN_SYNC_FORCED="1",s.ADMIN_SYNC_NOT_FORCED="0",s))(F||{}),Rt=(s=>(s.AUDIO="AUDIO",s.VIDEO="VIDEO",s.AUDIOPLUSPRESENTATION="AUDIOPLUSPRESENTATION",s))(Rt||{}),It=(s=>(s.VP8="video/VP8",s.VP9="video/VP9",s.H264="video/H264",s.AV1="video/AV1",s.rtx="video/rtx",s.red="video/red",s.flexfec03="video/flexfec-03",s))(It||{});const ft=async(s,e,t)=>{const{isChanged:n,parameters:i}=await At(s,{encodings:[{scaleResolutionDownBy:e.scaleResolutionDownBy,maxBitrate:e.maxBitrate}]});return n&&t&&t(i),{isChanged:n,parameters:i}},cn=s=>{const e=[];return s!==void 0&&s!==""&&e.push(`X-Vinteo-Remote: ${s}`),e},En="content-type",_n="x-webrtc-enter-room",v="application/vinteo.webrtc.sharedesktop",ln="application/vinteo.webrtc.roomname",dn="application/vinteo.webrtc.channels",hn="application/vinteo.webrtc.mediastate",Sn="application/vinteo.webrtc.refusal",Ue="application/vinteo.webrtc.maincam",Tn="application/vinteo.webrtc.mic",un="application/vinteo.webrtc.uselic",Cn="X-WEBRTC-USE-LICENSE",Nn="X-WEBRTC-PARTICIPANT-NAME",Le="X-WEBRTC-INPUT-CHANNELS",He="X-WEBRTC-OUTPUT-CHANNELS",gn="X-WEBRTC-MAINCAM",An="X-WEBRTC-MIC",We="X-WEBRTC-SYNC",Rn="X-WEBRTC-MAINCAM-RESOLUTION",In="X-WEBRTC-MEDIA-STATE",fn="X-Vinteo-Media-Type",Pn="X-Vinteo-MainCam-State",On="X-Vinteo-Mic-State",mn="application/vinteo.webrtc.partstate",Dn="X-WEBRTC-PARTSTATE",Mn="application/vinteo.webrtc.notify",pn="X-VINTEO-NOTIFY",P="x-webrtc-share-state",vn=`${P}: LETMESTARTPRESENTATION`,yn=`${P}: STOPPRESENTATION`,Pt="YOUCANRECEIVECONTENT",Ot="CONTENTEND",mt="YOUMUSTSTOPSENDCONTENT",bn=`${P}: ${mt}`,wn=`${P}: ${Pt}`,Un=`${P}: ${Ot}`,Ln="X-WEBRTC-REQUEST-ENABLE-MEDIA-DEVICE",Hn=`${Ln}: LETMESTARTMAINCAM`,Wn=(s,e)=>{s.getVideoTracks().forEach(n=>{"contentHint"in n&&n.contentHint!==e&&(n.contentHint=e)})},y=(s,{directionVideo:e,directionAudio:t,contentHint:n}={})=>{if(!s||e==="recvonly"&&t==="recvonly")return;const i=t==="recvonly"?[]:s.getAudioTracks(),o=e==="recvonly"?[]:s.getVideoTracks(),a=[...i,...o],c=new MediaStream(a);return c.getTracks=()=>[...c.getAudioTracks(),...c.getVideoTracks()],n&&n!=="none"&&Wn(c,n),c},qn="Error decline with 603",kn=1006,Bn=s=>typeof s=="object"&&s!==null&&"code"in s&&s.code===kn,Fn=s=>s.message===qn;function xn(s){return e=>`sip:${e}@${s}`}const Vn=(s,e)=>()=>Math.floor(Math.random()*(e-s))+s,qe=s=>s.trim().replaceAll(" ","_"),Yn=Vn(1e5,99999999),$n=s=>s.some(t=>{const{kind:n}=t;return n==="video"}),Gn=(s,e)=>s.find(t=>t.track!==null&&e.getTracks().includes(t.track)),Jn=async(s,e,t)=>{const n=Gn(s,e);if(n)return ft(n,{maxBitrate:t})},Xn=486,Qn=487,zn=3,jn=1,Kn=s=>s instanceof Object&&("originator"in s||"cause"in s),Zn=s=>{if(N.isCanceledError(s))return!0;if(!Kn(s))return!1;const{originator:e,cause:t}=s;return typeof t=="string"?t===ke||t===z||e===R.LOCAL&&(t===xe||t===Fe):!1},es=s=>X.hasCanceledError(s),A="SipConnector",ts="channels",ns="WebcastStarted",ss="WebcastStopped",is="accountChanged",rs="accountDeleted",os="addedToListModerators",as="removedFromListModerators",cs="ParticipationRequestAccepted",Es="ParticipationRequestRejected",_s="ParticipantMovedToWebcast",ls="ConferenceParticipantTokenIssued";class ds{constructor({JsSIP:e}){r(this,"_isRegisterConfig",!1);r(this,"_connectionConfiguration",{});r(this,"_remoteStreams",{});r(this,"JsSIP");r(this,"_sessionEvents");r(this,"_uaEvents");r(this,"_cancelableConnect");r(this,"_cancelableConnectWithRepeatedCalls");r(this,"_cancelableSendPresentationWithRepeatedCalls");r(this,"_cancelableInitUa");r(this,"_cancelableDisconnect");r(this,"_cancelableSet");r(this,"_cancelableCall");r(this,"_cancelableAnswer");r(this,"_cancelableSendDTMF");r(this,"getSipServerUrl",e=>e);r(this,"promisePendingStartPresentation");r(this,"promisePendingStopPresentation");r(this,"ua");r(this,"rtcSession");r(this,"incomingRTCSession");r(this,"_streamPresentationCurrent");r(this,"socket");r(this,"connect",async(e,t)=>(this._cancelRequests(),this._connectWithDuplicatedCalls(e,t)));r(this,"initUa",async e=>this._cancelableInitUa.request(e));r(this,"set",async e=>this._cancelableSet.request(e));r(this,"call",async e=>this._cancelableCall.request(e));r(this,"disconnect",async()=>(this._cancelRequests(),this._disconnectWithoutCancelRequests()));r(this,"answerToIncomingCall",async e=>this._cancelableAnswer.request(e));r(this,"sendDTMF",async e=>this._cancelableSendDTMF.request(e));r(this,"hangUp",async()=>(this._cancelRequests(),this._hangUpWithoutCancelRequests()));r(this,"tryRegister",async()=>{if(!this.isRegisterConfig)throw new Error("Config is not registered");this._uaEvents.trigger(x,void 0);try{await this.unregister()}catch(e){b("tryRegister",e)}return this.register()});r(this,"declineToIncomingCall",async({statusCode:e=Qn}={})=>new Promise((t,n)=>{if(!this.isAvailableIncomingCall){n(new Error("no incomingRTCSession"));return}const i=this.incomingRTCSession,o=this.remoteCallerData;this._cancelableCall.cancelRequest(),this._cancelableAnswer.cancelRequest(),this.removeIncomingSession(),this._uaEvents.trigger(K,o),t(i.terminate({status_code:e}))}));r(this,"busyIncomingCall",async()=>this.declineToIncomingCall({statusCode:Xn}));r(this,"removeIncomingSession",()=>{delete this.incomingRTCSession});r(this,"_connectWithDuplicatedCalls",async(e,{callLimit:t=zn}={})=>{const n=async()=>this._cancelableConnect.request(e),i=o=>{var _;const c=!!((_=this.ua)!=null&&_.isConnected())&&this.hasEqualConnectionConfiguration(e),E=!!o&&!Bn(o);return c||E};return this._cancelableConnectWithRepeatedCalls=X.repeatedCallsAsync({targetFunction:n,isComplete:i,callLimit:t,isRejectAsValid:!0,isCheckBeforeCall:!1,onAfterCancel:()=>{this._cancelableConnect.cancelRequest()}}),this._cancelableConnectWithRepeatedCalls.then(o=>{if(o instanceof this.JsSIP.UA)return o;throw o})});r(this,"handleNewRTCSession",({originator:e,session:t})=>{if(e===R.REMOTE){this.incomingRTCSession=t;const n=this.remoteCallerData;t.on(I,i=>{this.removeIncomingSession(),i.originator===R.LOCAL?this._uaEvents.trigger(ee,n):this._uaEvents.trigger(Z,n)}),this._uaEvents.trigger(j,n)}});r(this,"_connect",async e=>this.initUa(e).then(async()=>this._start()));r(this,"_initUa",async({user:e,password:t,sipServerUrl:n,sipWebSocketServerURL:i,remoteAddress:o,sessionTimers:a,registerExpires:c,connectionRecoveryMinInterval:E,connectionRecoveryMaxInterval:_,userAgent:h,displayName:S="",register:l=!1,extraHeaders:T=[]})=>{if(!n)throw new Error("sipServerUrl is required");if(!i)throw new Error("sipWebSocketServerURL is required");if(l&&!e)throw new Error("user is required for authorized connection");if(l&&!t)throw new Error("password is required for authorized connection");this._connectionConfiguration={sipServerUrl:n,displayName:S,register:l,user:e,password:t};const{configuration:d,helpers:u}=this.createUaConfiguration({user:e,sipServerUrl:n,sipWebSocketServerURL:i,password:t,displayName:S,register:l,sessionTimers:a,registerExpires:c,connectionRecoveryMinInterval:E,connectionRecoveryMaxInterval:_,userAgent:h});return this.getSipServerUrl=u.getSipServerUrl,this.socket=u.socket,this.ua&&await this._disconnectWithoutCancelRequests(),this._isRegisterConfig=!!l,this.ua=this._createUa({...d,remoteAddress:o,extraHeaders:T}),this._uaEvents.eachTriggers((g,G)=>{const O=$.find(J=>J===G);O&&this.ua&&this.ua.on(O,g)}),this.ua});r(this,"_createUa",({remoteAddress:e,extraHeaders:t=[],...n})=>{const i=new this.JsSIP.UA(n),a=[...e?cn(e):[],...t];return a.length>0&&i.registrator().setExtraHeaders(a),i});r(this,"_start",async()=>new Promise((e,t)=>{const{ua:n}=this;if(!n){t(new Error("this.ua is not initialized"));return}const i=()=>{c(),e(n)},o=E=>{c(),t(E)},a=()=>{this.isRegisterConfig?(this.on(D,i),this.on(M,o)):this.on(m,i),this.on(C,o)},c=()=>{this.off(D,i),this.off(M,o),this.off(m,i),this.off(C,o)};a(),this.on(w,this.handleNewRTCSession),n.start()}));r(this,"_set",async({displayName:e,password:t})=>new Promise((n,i)=>{const{ua:o}=this;if(!o){i(new Error("this.ua is not initialized"));return}let a=!1,c=!1;e!==void 0&&e!==this._connectionConfiguration.displayName&&(a=o.set("display_name",qe(e)),this._connectionConfiguration.displayName=e),t!==void 0&&t!==this._connectionConfiguration.password&&(c=o.set("password",t),this._connectionConfiguration.password=t);const E=a||c;c&&this.isRegisterConfig?this.register().then(()=>{n(E)}).catch(_=>{i(_)}):E?n(E):i(new Error("nothing changed"))}));r(this,"_disconnectWithoutCancelRequests",async()=>this._cancelableDisconnect.request());r(this,"_disconnect",async()=>{this.off(w,this.handleNewRTCSession);const e=new Promise(t=>{this.once(C,()=>{delete this.ua,t()})});return this.ua?(await this._hangUpWithoutCancelRequests(),this.ua?this.ua.stop():this._uaEvents.trigger(C,void 0)):this._uaEvents.trigger(C,void 0),e});r(this,"_call",async({number:e,mediaStream:t,extraHeaders:n=[],ontrack:i,iceServers:o,directionVideo:a,directionAudio:c,contentHint:E,offerToReceiveAudio:_=!0,offerToReceiveVideo:h=!0,sendEncodings:S,onAddedTransceiver:l})=>new Promise((T,d)=>{const{ua:u}=this;if(!u){d(new Error("this.ua is not initialized"));return}this._connectionConfiguration.number=e,this._connectionConfiguration.answer=!1,this._handleCall({ontrack:i}).then(T).catch(g=>{d(g)}),this.rtcSession=u.call(this.getSipServerUrl(e),{extraHeaders:n,mediaStream:y(t,{directionVideo:a,directionAudio:c,contentHint:E}),eventHandlers:this._sessionEvents.triggers,directionVideo:a,directionAudio:c,pcConfig:{iceServers:o},rtcOfferConstraints:{offerToReceiveAudio:_,offerToReceiveVideo:h},sendEncodings:S,onAddedTransceiver:l})}));r(this,"_answer",async({mediaStream:e,ontrack:t,extraHeaders:n=[],iceServers:i,directionVideo:o,directionAudio:a,offerToReceiveAudio:c,offerToReceiveVideo:E,contentHint:_,sendEncodings:h,onAddedTransceiver:S})=>new Promise((l,T)=>{if(!this.isAvailableIncomingCall){T(new Error("no incomingRTCSession"));return}this.rtcSession=this.incomingRTCSession,this.removeIncomingSession();const{rtcSession:d}=this;if(!d){T(new Error("No rtcSession established"));return}this._sessionEvents.eachTriggers((g,G)=>{const O=ve.find(J=>J===G);O&&d.on(O,g)}),this._connectionConfiguration.answer=!0,this._connectionConfiguration.number=d.remote_identity.uri.user,this._handleCall({ontrack:t}).then(l).catch(g=>{T(g)});const u=y(e,{directionVideo:o,directionAudio:a,contentHint:_});d.answer({extraHeaders:n,directionVideo:o,directionAudio:a,mediaStream:u,pcConfig:{iceServers:i},rtcOfferConstraints:{offerToReceiveAudio:c,offerToReceiveVideo:E},sendEncodings:h,onAddedTransceiver:S})}));r(this,"_handleCall",async({ontrack:e})=>new Promise((t,n)=>{const i=()=>{this.onSession(q,h),this.onSession(W,S)},o=()=>{this.offSession(q,h),this.offSession(W,S)},a=()=>{this.onSession(I,E),this.onSession(p,E)},c=()=>{this.offSession(I,E),this.offSession(p,E)},E=l=>{o(),c(),n(l)};let _;const h=({peerconnection:l})=>{_=l,_.ontrack=T=>{this._sessionEvents.trigger(Ee,_),e&&e(T)}},S=()=>{_&&this._sessionEvents.trigger(ce,_),o(),c(),t(_)};i(),a()}));r(this,"_restoreSession",()=>{this._cancelRequestsAndResetPresentation(),delete this._connectionConfiguration.number,delete this.rtcSession,this._remoteStreams={}});r(this,"_sendDTMF",async e=>new Promise((t,n)=>{const{rtcSession:i}=this;if(!i){n(new Error("No rtcSession established"));return}this.onceSession(De,({originator:o})=>{o===R.LOCAL&&t()}),i.sendDTMF(e,{duration:120,interToneGap:600})}));r(this,"_hangUpWithoutCancelRequests",async()=>{if(this.ua&&this.rtcSession){const{rtcSession:e}=this;if(this._streamPresentationCurrent)try{await this.stopPresentation()}catch(t){b("error stop presentation: ",t)}if(this._restoreSession(),!e.isEnded())return e.terminateAsync()}});r(this,"_handleShareState",e=>{switch(e){case Pt:{this._sessionEvents.trigger(se,void 0);break}case Ot:{this._sessionEvents.trigger(ie,void 0);break}case mt:{this._sessionEvents.trigger(re,void 0);break}}});r(this,"_maybeTriggerChannels",e=>{const t=e.getHeader(Le),n=e.getHeader(He);if(t&&n){const i={inputChannels:t,outputChannels:n};this._sessionEvents.trigger(L,i)}});r(this,"_handleNotify",e=>{switch(e.cmd){case ts:{const t=e;this._triggerChannelsNotify(t);break}case ns:{const t=e;this._triggerWebcastStartedNotify(t);break}case ss:{const t=e;this._triggerWebcastStoppedNotify(t);break}case os:{const t=e;this._triggerAddedToListModeratorsNotify(t);break}case as:{const t=e;this._triggerRemovedFromListModeratorsNotify(t);break}case cs:{const t=e;this._triggerParticipationAcceptingWordRequest(t);break}case Es:{const t=e;this._triggerParticipationCancellingWordRequest(t);break}case _s:{const t=e;this._triggerParticipantMoveRequestToStream(t);break}case is:{this._triggerAccountChangedNotify();break}case rs:{this._triggerAccountDeletedNotify();break}case ls:{const t=e;this._triggerConferenceParticipantTokenIssued(t);break}default:b("unknown cmd",e.cmd)}});r(this,"_triggerRemovedFromListModeratorsNotify",({conference:e})=>{const t={conference:e};this._uaEvents.trigger(Ne,t)});r(this,"_triggerAddedToListModeratorsNotify",({conference:e})=>{const t={conference:e};this._uaEvents.trigger(Ce,t)});r(this,"_triggerWebcastStartedNotify",({body:{conference:e,type:t}})=>{const n={conference:e,type:t};this._uaEvents.trigger(Ie,n)});r(this,"_triggerWebcastStoppedNotify",({body:{conference:e,type:t}})=>{const n={conference:e,type:t};this._uaEvents.trigger(fe,n)});r(this,"_triggerAccountChangedNotify",()=>{this._uaEvents.trigger(Pe,void 0)});r(this,"_triggerAccountDeletedNotify",()=>{this._uaEvents.trigger(Oe,void 0)});r(this,"_triggerConferenceParticipantTokenIssued",({body:{conference:e,participant:t,jwt:n}})=>{const i={conference:e,participant:t,jwt:n};this._uaEvents.trigger(me,i)});r(this,"_triggerChannelsNotify",e=>{const t=e.input,n=e.output,i={inputChannels:t,outputChannels:n};this._uaEvents.trigger(_e,i)});r(this,"_triggerParticipationAcceptingWordRequest",({body:{conference:e}})=>{const t={conference:e};this._uaEvents.trigger(Ae,t)});r(this,"_triggerParticipationCancellingWordRequest",({body:{conference:e}})=>{const t={conference:e};this._uaEvents.trigger(Re,t)});r(this,"_triggerParticipantMoveRequestToStream",({body:{conference:e}})=>{const t={conference:e};this._uaEvents.trigger(ge,t)});r(this,"_triggerEnterRoom",e=>{const t=e.getHeader(_n),n=e.getHeader(Nn);this._sessionEvents.trigger(oe,{room:t,participantName:n})});r(this,"_triggerShareState",e=>{const t=e.getHeader(P);this._sessionEvents.trigger(U,t)});r(this,"_maybeTriggerParticipantMoveRequest",e=>{const t=e.getHeader(Dn);t===dt&&this._sessionEvents.trigger(V,void 0),t===ht&&this._sessionEvents.trigger(Y,void 0)});r(this,"_triggerMainCamControl",e=>{const t=e.getHeader(gn),n=e.getHeader(We),i=n===F.ADMIN_SYNC_FORCED;if(t===f.ADMIN_START_MAIN_CAM){this._sessionEvents.trigger(Se,{isSyncForced:i});return}if(t===f.ADMIN_STOP_MAIN_CAM){this._sessionEvents.trigger(he,{isSyncForced:i});return}(t===f.RESUME_MAIN_CAM||t===f.PAUSE_MAIN_CAM)&&n&&this._sessionEvents.trigger(H,{isSyncForced:i});const o=e.getHeader(Rn);this._sessionEvents.trigger(de,{mainCam:t,resolutionMainCam:o})});r(this,"_triggerMicControl",e=>{const t=e.getHeader(An),i=e.getHeader(We)===F.ADMIN_SYNC_FORCED;t===B.ADMIN_START_MIC?this._sessionEvents.trigger(ue,{isSyncForced:i}):t===B.ADMIN_STOP_MIC&&this._sessionEvents.trigger(Te,{isSyncForced:i})});r(this,"_triggerUseLicense",e=>{const t=e.getHeader(Cn);this._sessionEvents.trigger(ae,t)});r(this,"_handleNewInfo",e=>{const{originator:t}=e;if(t!=="remote")return;const{request:n}=e,i=n.getHeader(En);if(i)switch(i){case ln:{this._triggerEnterRoom(n),this._maybeTriggerChannels(n);break}case Mn:{this._maybeHandleNotify(n);break}case v:{this._triggerShareState(n);break}case Ue:{this._triggerMainCamControl(n);break}case Tn:{this._triggerMicControl(n);break}case un:{this._triggerUseLicense(n);break}case mn:{this._maybeTriggerParticipantMoveRequest(n);break}}});r(this,"_handleSipEvent",({request:e})=>{this._maybeHandleNotify(e)});r(this,"_maybeHandleNotify",e=>{const t=e.getHeader(pn);if(t){const n=JSON.parse(t);this._handleNotify(n)}});r(this,"_handleEnded",e=>{const{originator:t}=e;t===R.REMOTE&&this._sessionEvents.trigger(le,e),this._restoreSession()});this.JsSIP=e,this._sessionEvents=new we(ye),this._uaEvents=new we(Ct),this._cancelableConnect=new N.CancelableRequest(this._connect,{moduleName:A,afterCancelRequest:()=>{this._cancelableInitUa.cancelRequest(),this._cancelableDisconnect.cancelRequest()}}),this._cancelableInitUa=new N.CancelableRequest(this._initUa,{moduleName:A}),this._cancelableDisconnect=new N.CancelableRequest(this._disconnect,{moduleName:A}),this._cancelableSet=new N.CancelableRequest(this._set,{moduleName:A}),this._cancelableCall=new N.CancelableRequest(this._call,{moduleName:A}),this._cancelableAnswer=new N.CancelableRequest(this._answer,{moduleName:A}),this._cancelableSendDTMF=new N.CancelableRequest(this._sendDTMF,{moduleName:A}),this.onSession(U,this._handleShareState),this.onSession(Me,this._handleNewInfo),this.on(ne,this._handleSipEvent),this.onSession(I,this._handleEnded),this.onSession(p,this._handleEnded)}async register(){return new Promise((e,t)=>{this.isRegisterConfig&&this.ua?(this.ua.on(D,e),this.ua.on(M,t),this.ua.register()):t(new Error("Config is not registered"))})}async unregister(){return new Promise((e,t)=>{this.isRegistered&&this.ua?(this.ua.on(te,e),this.ua.unregister()):t(new Error("ua is not registered"))})}async sendOptions(e,t,n){if(!this.ua)throw new Error("is not connected");return new Promise((i,o)=>{try{this.ua.sendOptions(e,t,{extraHeaders:n,eventHandlers:{succeeded:()=>{i()},failed:o}})}catch(a){o(a)}})}async ping(e,t){var i;if(!((i=this.ua)!=null&&i.configuration.uri))throw new Error("is not connected");const n=this.ua.configuration.uri;return this.sendOptions(n,e,t)}async checkTelephony({userAgent:e,displayName:t,sipServerUrl:n,sipWebSocketServerURL:i,remoteAddress:o,extraHeaders:a}){return new Promise((c,E)=>{const{configuration:_}=this.createUaConfiguration({sipWebSocketServerURL:i,displayName:t,userAgent:e,sipServerUrl:n}),h=this._createUa({..._,remoteAddress:o,extraHeaders:a}),S=()=>{const T=new Error("Telephony is not available");E(T)};h.once(C,S);const l=()=>{h.removeAllListeners(),h.once(C,c),h.stop()};h.once(m,l),h.start()})}async replaceMediaStream(e,t){if(!this.rtcSession)throw new Error("No rtcSession established");const{contentHint:n}=t??{},i=y(e,{contentHint:n});return this.rtcSession.replaceMediaStream(i,t)}async askPermissionToEnableCam(e={}){if(!this.rtcSession)throw new Error("No rtcSession established");const t=[Hn];return this.rtcSession.sendInfo(Ue,void 0,{noTerminateWhenError:!0,...e,extraHeaders:t}).catch(n=>{if(Fn(n))throw n})}get isPendingPresentation(){return!!this.promisePendingStartPresentation||!!this.promisePendingStopPresentation}async _sendPresentationWithDuplicatedCalls({rtcSession:e,stream:t,presentationOptions:n,options:i={callLimit:jn}}){const o=async()=>this._sendPresentation(e,t,n),a=()=>!!this._streamPresentationCurrent;return this._cancelableSendPresentationWithRepeatedCalls=X.repeatedCallsAsync({targetFunction:o,isComplete:a,isRejectAsValid:!0,...i}),this._cancelableSendPresentationWithRepeatedCalls.then(c=>c)}hasEqualConnectionConfiguration(e){var i;const{configuration:t}=this.createUaConfiguration(e),n=(i=this.ua)==null?void 0:i.configuration;return(n==null?void 0:n.password)===t.password&&(n==null?void 0:n.register)===t.register&&(n==null?void 0:n.uri.toString())===t.uri&&(n==null?void 0:n.display_name)===t.display_name&&(n==null?void 0:n.user_agent)===t.user_agent&&(n==null?void 0:n.sockets)===t.sockets&&(n==null?void 0:n.session_timers)===t.session_timers&&(n==null?void 0:n.register_expires)===t.register_expires&&(n==null?void 0:n.connection_recovery_min_interval)===t.connection_recovery_min_interval&&(n==null?void 0:n.connection_recovery_max_interval)===t.connection_recovery_max_interval}createUaConfiguration({user:e,password:t,sipWebSocketServerURL:n,displayName:i="",sipServerUrl:o,register:a=!1,sessionTimers:c=!1,registerExpires:E=60*5,connectionRecoveryMinInterval:_=2,connectionRecoveryMaxInterval:h=6,userAgent:S}){if(a&&!t)throw new Error("password is required for authorized connection");const l=a&&e?e.trim():`${Yn()}`,T=xn(o),d=T(l),u=new this.JsSIP.WebSocketInterface(n);return{configuration:{password:t,register:a,uri:d,display_name:qe(i),user_agent:S,sdp_semantics:"unified-plan",sockets:[u],session_timers:c,register_expires:E,connection_recovery_min_interval:_,connection_recovery_max_interval:h},helpers:{socket:u,getSipServerUrl:T}}}async _sendPresentation(e,t,{maxBitrate:n=St,isNeedReinvite:i=!0,isP2P:o=!1,contentHint:a="detail",sendEncodings:c,onAddedTransceiver:E}){const _=y(t,{contentHint:a});this._streamPresentationCurrent=_;const h=o?[wn]:[vn],S=e.sendInfo(v,void 0,{extraHeaders:h}).then(async()=>e.startPresentation(_,i,{sendEncodings:c,onAddedTransceiver:E})).then(async()=>{const{connection:l}=this;if(!l||n===void 0)return;const T=l.getSenders();await Jn(T,t,n)}).then(()=>t).catch(l=>{throw this._removeStreamPresentationCurrent(),this._sessionEvents.trigger(k,l),l});return this.promisePendingStartPresentation=S,S.finally(()=>{this.promisePendingStartPresentation=void 0})}async startPresentation(e,{isNeedReinvite:t,isP2P:n,maxBitrate:i,contentHint:o,sendEncodings:a,onAddedTransceiver:c}={},E){const _=this.establishedRTCSession;if(!_)throw new Error("No rtcSession established");if(this._streamPresentationCurrent)throw new Error("Presentation is already started");return n&&await this.sendMustStopPresentation(_),this._sendPresentationWithDuplicatedCalls({rtcSession:_,stream:e,presentationOptions:{isNeedReinvite:t,isP2P:n,maxBitrate:i,contentHint:o,sendEncodings:a,onAddedTransceiver:c},options:E})}async sendMustStopPresentation(e){await e.sendInfo(v,void 0,{extraHeaders:[bn]})}async stopPresentation({isP2P:e=!1}={}){this._cancelSendPresentationWithRepeatedCalls();const t=this._streamPresentationCurrent;let n=this.promisePendingStartPresentation??Promise.resolve();const i=e?[Un]:[yn],o=this.establishedRTCSession;return o&&t&&(n=n.then(async()=>o.sendInfo(v,void 0,{extraHeaders:i})).then(async()=>o.stopPresentation(t)).catch(a=>{throw this._sessionEvents.trigger(k,a),a})),!o&&t&&this._sessionEvents.trigger(pe,t),this.promisePendingStopPresentation=n,n.finally(()=>{this._resetPresentation()})}async updatePresentation(e,{isP2P:t,maxBitrate:n,contentHint:i,sendEncodings:o,onAddedTransceiver:a}={}){const c=this.establishedRTCSession;if(!c)throw new Error("No rtcSession established");if(!this._streamPresentationCurrent)throw new Error("Presentation has not started yet");return this.promisePendingStartPresentation&&await this.promisePendingStartPresentation,this._sendPresentation(c,e,{isP2P:t,maxBitrate:n,contentHint:i,isNeedReinvite:!1,sendEncodings:o,onAddedTransceiver:a})}_removeStreamPresentationCurrent(){delete this._streamPresentationCurrent}_resetPresentation(){this._removeStreamPresentationCurrent(),this.promisePendingStartPresentation=void 0,this.promisePendingStopPresentation=void 0}_cancelRequestsAndResetPresentation(){this._cancelSendPresentationWithRepeatedCalls(),this._resetPresentation()}on(e,t){return this._uaEvents.on(e,t)}once(e,t){return this._uaEvents.once(e,t)}onceRace(e,t){return this._uaEvents.onceRace(e,t)}async wait(e){return this._uaEvents.wait(e)}off(e,t){this._uaEvents.off(e,t)}onSession(e,t){return this._sessionEvents.on(e,t)}onceSession(e,t){return this._sessionEvents.once(e,t)}onceRaceSession(e,t){return this._sessionEvents.onceRace(e,t)}async waitSession(e){return this._sessionEvents.wait(e)}offSession(e,t){this._sessionEvents.off(e,t)}isConfigured(){return!!this.ua}getConnectionConfiguration(){return{...this._connectionConfiguration}}getRemoteStreams(){if(!this.connection)return;const t=this.connection.getReceivers().map(({track:n})=>n);return $n(t)?this._generateStreams(t):this._generateAudioStreams(t)}get connection(){var t;return(t=this.rtcSession)==null?void 0:t.connection}get remoteCallerData(){var e,t,n,i,o,a;return{displayName:(t=(e=this.incomingRTCSession)==null?void 0:e.remote_identity)==null?void 0:t.display_name,host:(i=(n=this.incomingRTCSession)==null?void 0:n.remote_identity)==null?void 0:i.uri.host,incomingNumber:(a=(o=this.incomingRTCSession)==null?void 0:o.remote_identity)==null?void 0:a.uri.user,rtcSession:this.incomingRTCSession}}get requested(){return this._cancelableConnect.requested||this._cancelableInitUa.requested||this._cancelableCall.requested||this._cancelableAnswer.requested}get establishedRTCSession(){var e;return(e=this.rtcSession)!=null&&e.isEstablished()?this.rtcSession:void 0}get isRegistered(){return!!this.ua&&this.ua.isRegistered()}get isRegisterConfig(){return!!this.ua&&this._isRegisterConfig}get isCallActive(){return!!(this.ua&&this.rtcSession)}get isAvailableIncomingCall(){return!!this.incomingRTCSession}_generateStream(e,t){const{id:n}=e,i=this._remoteStreams[n]||new MediaStream;return t&&i.addTrack(t),i.addTrack(e),this._remoteStreams[n]=i,i}_generateAudioStream(e){const{id:t}=e,n=this._remoteStreams[t]||new MediaStream;return n.addTrack(e),this._remoteStreams[t]=n,n}_generateStreams(e){const t=[];return e.forEach((n,i)=>{if(n.kind==="audio")return;const o=n,a=e[i-1];let c;a&&a.kind==="audio"&&(c=a);const E=this._generateStream(o,c);t.push(E)}),t}_generateAudioStreams(e){return e.map(n=>this._generateAudioStream(n))}_cancelRequests(){this._cancelActionsRequests(),this._cancelCallRequests(),this._cancelConnectWithRepeatedCalls()}_cancelConnectWithRepeatedCalls(){var e;(e=this._cancelableConnectWithRepeatedCalls)==null||e.cancel()}_cancelSendPresentationWithRepeatedCalls(){var e;(e=this._cancelableSendPresentationWithRepeatedCalls)==null||e.cancel()}_cancelCallRequests(){this._cancelableCall.cancelRequest(),this._cancelableAnswer.cancelRequest()}_cancelActionsRequests(){this._cancelableAnswer.cancelRequest(),this._cancelableSendDTMF.cancelRequest()}async waitChannels(){return this.waitSession(L)}async waitSyncMediaState(){return this.waitSession(H)}async sendChannels({inputChannels:e,outputChannels:t}){if(!this.rtcSession)throw new Error("No rtcSession established");const n=`${Le}: ${e}`,i=`${He}: ${t}`,o=[n,i];return this.rtcSession.sendInfo(dn,void 0,{extraHeaders:o})}async sendMediaState({cam:e,mic:t},n={}){if(!this.rtcSession)throw new Error("No rtcSession established");const i=`${In}: currentstate`,o=`${Pn}: ${Number(e)}`,a=`${On}: ${Number(t)}`,c=[i,o,a];return this.rtcSession.sendInfo(hn,void 0,{noTerminateWhenError:!0,...n,extraHeaders:c})}async _sendRefusalToTurnOn(e,t={}){if(!this.rtcSession)throw new Error("No rtcSession established");const c=[`${fn}: ${e==="mic"?0:1}`];return this.rtcSession.sendInfo(Sn,void 0,{noTerminateWhenError:!0,...t,extraHeaders:c})}async sendRefusalToTurnOnMic(e={}){if(!this.rtcSession)throw new Error("No rtcSession established");return this._sendRefusalToTurnOn("mic",{noTerminateWhenError:!0,...e})}async sendRefusalToTurnOnCam(e={}){if(!this.rtcSession)throw new Error("No rtcSession established");return this._sendRefusalToTurnOn("cam",{noTerminateWhenError:!0,...e})}}exports.BAD_MEDIA_DESCRIPTION=Ve;exports.EEventsMainCAM=f;exports.EEventsMic=B;exports.EEventsSyncMediaState=F;exports.EMimeTypesVideoCodecs=It;exports.EUseLicense=Rt;exports.NOT_FOUND=Be;exports.PARTICIPANT_MOVE_REQUEST_TO_PARTICIPANTS=Y;exports.PARTICIPANT_MOVE_REQUEST_TO_SPECTATORS=V;exports.REJECTED=z;exports.SESSION_EVENT_NAMES=ye;exports.SipConnector=ds;exports.UA_JSSIP_EVENT_NAMES=$;exports.causes=Gt;exports.constants=Jt;exports.disableDebug=zt;exports.enableDebug=Qt;exports.eventNames=Xt;exports.hasCanceledCallError=Zn;exports.hasCanceledStartPresentationError=es;exports.logger=b;exports.setEncodingsToSender=ft;exports.setParametersToSender=At;