@wazo/sdk 0.37.31 → 0.37.32

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 (70) hide show
  1. package/dist/wazo-sdk.js +2 -2
  2. package/esm/__tests__/api-client.test.js +30 -0
  3. package/esm/__tests__/web-rtc-client.test.js +56 -5
  4. package/esm/api/calld.js +30 -0
  5. package/esm/api-client.js +30 -0
  6. package/esm/checker/Checker.js +56 -5
  7. package/esm/checker/checks/aor.js +30 -0
  8. package/esm/checker/checks/api.js +30 -0
  9. package/esm/checker/checks/index.js +56 -5
  10. package/esm/checker/checks/webrtc-transport.js +56 -5
  11. package/esm/checker/checks/webrtc.js +56 -5
  12. package/esm/domain/AdHocAPIConference.js +30 -0
  13. package/esm/domain/Features.js +30 -0
  14. package/esm/domain/MeetingStatus.js +29 -0
  15. package/esm/domain/Phone/CTIPhone.js +30 -0
  16. package/esm/domain/Phone/WebRTCPhone.js +2 -2
  17. package/esm/index.js +58 -7
  18. package/esm/service/CallApi.js +30 -0
  19. package/esm/service/getApiClient.js +30 -0
  20. package/esm/simple/Auth.js +58 -7
  21. package/esm/simple/Configuration.js +58 -7
  22. package/esm/simple/Directory.js +30 -0
  23. package/esm/simple/Phone.js +58 -7
  24. package/esm/simple/index.js +58 -7
  25. package/esm/simple/room/LocalParticipant.js +58 -7
  26. package/esm/simple/room/Participant.js +58 -7
  27. package/esm/simple/room/RemoteParticipant.js +58 -7
  28. package/esm/simple/room/Room.js +58 -7
  29. package/esm/simple/room/SipRoom.js +58 -7
  30. package/esm/simple/room/Stream.js +58 -7
  31. package/esm/simple/room/__tests__/RemoteParticipant.test.js +58 -7
  32. package/esm/simple/utils.js +58 -7
  33. package/esm/web-rtc-client.js +56 -5
  34. package/lib/__tests__/api-client.test.js +30 -0
  35. package/lib/__tests__/web-rtc-client.test.js +56 -5
  36. package/lib/api/calld.js +30 -0
  37. package/lib/api-client.js +30 -0
  38. package/lib/checker/Checker.js +56 -5
  39. package/lib/checker/checks/aor.js +30 -0
  40. package/lib/checker/checks/api.js +30 -0
  41. package/lib/checker/checks/index.js +56 -5
  42. package/lib/checker/checks/webrtc-transport.js +56 -5
  43. package/lib/checker/checks/webrtc.js +56 -5
  44. package/lib/domain/AdHocAPIConference.js +30 -0
  45. package/lib/domain/Features.js +30 -0
  46. package/lib/domain/MeetingStatus.js +31 -0
  47. package/lib/domain/Phone/CTIPhone.js +30 -0
  48. package/lib/domain/Phone/WebRTCPhone.js +2 -2
  49. package/lib/index.js +58 -7
  50. package/lib/service/CallApi.js +30 -0
  51. package/lib/service/getApiClient.js +30 -0
  52. package/lib/simple/Auth.js +58 -7
  53. package/lib/simple/Configuration.js +58 -7
  54. package/lib/simple/Directory.js +30 -0
  55. package/lib/simple/Phone.js +58 -7
  56. package/lib/simple/index.js +58 -7
  57. package/lib/simple/room/LocalParticipant.js +58 -7
  58. package/lib/simple/room/Participant.js +58 -7
  59. package/lib/simple/room/RemoteParticipant.js +58 -7
  60. package/lib/simple/room/Room.js +58 -7
  61. package/lib/simple/room/SipRoom.js +58 -7
  62. package/lib/simple/room/Stream.js +58 -7
  63. package/lib/simple/room/__tests__/RemoteParticipant.test.js +58 -7
  64. package/lib/simple/utils.js +58 -7
  65. package/lib/web-rtc-client.js +56 -5
  66. package/package.json +1 -1
  67. package/src/api/calld.js +3 -0
  68. package/src/domain/MeetingStatus.js +27 -0
  69. package/src/domain/Phone/WebRTCPhone.js +2 -2
  70. package/src/web-rtc-client.js +26 -5
@@ -4842,6 +4842,34 @@ var chatdMethods = (client , baseUrl ) => ({
4842
4842
  client.get(`${baseUrl}/users/me/rooms/messages`, options),
4843
4843
  });
4844
4844
 
4845
+ //
4846
+
4847
+
4848
+
4849
+
4850
+
4851
+ class MeetingStatus {
4852
+
4853
+
4854
+
4855
+
4856
+ constructor({
4857
+ full,
4858
+ } = {}) {
4859
+ this.full = full;
4860
+
4861
+ // Useful to compare instead of instanceof with minified code
4862
+ this.type = 'MeetingStatus';
4863
+ }
4864
+
4865
+ static parse(plain ) {
4866
+ return new MeetingStatus({
4867
+ full: plain.full,
4868
+ });
4869
+ }
4870
+
4871
+ }
4872
+
4845
4873
  /* */
4846
4874
 
4847
4875
 
@@ -5036,6 +5064,8 @@ var calldMethods = (client , baseUrl ) => ({
5036
5064
  client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
5037
5065
  ApiRequester.successResponseParser),
5038
5066
 
5067
+ guestGetMeetingStatus: (meetingUuid ) =>
5068
+ client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
5039
5069
  });
5040
5070
 
5041
5071
  //
@@ -6679,6 +6709,7 @@ class WebRTCClient extends Emitter {
6679
6709
 
6680
6710
 
6681
6711
 
6712
+
6682
6713
 
6683
6714
  // sugar
6684
6715
 
@@ -6741,6 +6772,7 @@ class WebRTCClient extends Emitter {
6741
6772
  this.conferences = {};
6742
6773
  this.networkMonitoringInterval = {};
6743
6774
  this.sessionNetworkStats = {};
6775
+ this.forceClosed = false;
6744
6776
 
6745
6777
  this._boundOnHeartbeat = this._onHeartbeat.bind(this);
6746
6778
  this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
@@ -6862,6 +6894,8 @@ class WebRTCClient extends Emitter {
6862
6894
  skipRegister: this.skipRegister,
6863
6895
  };
6864
6896
 
6897
+ this.forceClosed = false;
6898
+
6865
6899
  if (this.skipRegister) {
6866
6900
  logger$8.info('sdk webrtc skip register...', logInfo);
6867
6901
  return Promise.resolve();
@@ -6886,7 +6920,15 @@ class WebRTCClient extends Emitter {
6886
6920
  const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
6887
6921
 
6888
6922
  const onRegisterFailed = () => {
6889
- logger$8.info('sdk webrtc registering failed', { tries, registerer: !!this.registerer });
6923
+ logger$8.info('sdk webrtc registering failed', {
6924
+ tries,
6925
+ registerer: !!this.registerer,
6926
+ forceClosed: this.forceClosed,
6927
+ });
6928
+ if (this.forceClosed) {
6929
+ return;
6930
+ }
6931
+
6890
6932
  this.connectionPromise = null;
6891
6933
  if (this.registerer && this.registerer.waiting) {
6892
6934
  this.registerer.waitingToggle(false);
@@ -7164,8 +7206,9 @@ class WebRTCClient extends Emitter {
7164
7206
  }
7165
7207
  }
7166
7208
 
7167
- async close() {
7168
- logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
7209
+ async close(force = false) {
7210
+ logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
7211
+ this.forceClosed = force;
7169
7212
  this._cleanupMedia();
7170
7213
  this.connectionPromise = null;
7171
7214
 
@@ -7184,7 +7227,7 @@ class WebRTCClient extends Emitter {
7184
7227
  this.userAgent.delegate = null;
7185
7228
  this.userAgent.stateChange.removeAllListeners();
7186
7229
 
7187
- await this._disconnectTransport();
7230
+ await this._disconnectTransport(force);
7188
7231
 
7189
7232
  this._cleanupRegister();
7190
7233
 
@@ -8620,7 +8663,15 @@ class WebRTCClient extends Emitter {
8620
8663
  return UserAgent.makeURI(`sip:${target}@${this.config.host}`);
8621
8664
  }
8622
8665
 
8623
- async _disconnectTransport() {
8666
+ async _disconnectTransport(force = false) {
8667
+ if (force) {
8668
+ // Bypass sip.js state machine that prevent to close WS with the state `Connecting`
8669
+ this.userAgent.transport.disconnectResolve = () => {};
8670
+ // eslint-disable-next-line
8671
+ this.userAgent.transport._ws.close(1000);
8672
+ return;
8673
+ }
8674
+
8624
8675
  // Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
8625
8676
  if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
8626
8677
  try {
@@ -10027,7 +10078,7 @@ class WebRTCPhone extends Emitter {
10027
10078
  return this.client && this.client.isConference(callSession.sipCallId);
10028
10079
  }
10029
10080
 
10030
- async close() {
10081
+ async close(force = false) {
10031
10082
  logger$7.info('WebRTC close');
10032
10083
 
10033
10084
  try {
@@ -10039,7 +10090,7 @@ class WebRTCPhone extends Emitter {
10039
10090
  logger$7.error('WebRTC close, unregister error', e);
10040
10091
  }
10041
10092
 
10042
- this.client.close();
10093
+ this.client.close(force);
10043
10094
  this.unbind();
10044
10095
 
10045
10096
  this.incomingSessions = [];
@@ -4842,6 +4842,34 @@ var chatdMethods = (client , baseUrl ) => ({
4842
4842
  client.get(`${baseUrl}/users/me/rooms/messages`, options),
4843
4843
  });
4844
4844
 
4845
+ //
4846
+
4847
+
4848
+
4849
+
4850
+
4851
+ class MeetingStatus {
4852
+
4853
+
4854
+
4855
+
4856
+ constructor({
4857
+ full,
4858
+ } = {}) {
4859
+ this.full = full;
4860
+
4861
+ // Useful to compare instead of instanceof with minified code
4862
+ this.type = 'MeetingStatus';
4863
+ }
4864
+
4865
+ static parse(plain ) {
4866
+ return new MeetingStatus({
4867
+ full: plain.full,
4868
+ });
4869
+ }
4870
+
4871
+ }
4872
+
4845
4873
  /* */
4846
4874
 
4847
4875
 
@@ -5036,6 +5064,8 @@ var calldMethods = (client , baseUrl ) => ({
5036
5064
  client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
5037
5065
  ApiRequester.successResponseParser),
5038
5066
 
5067
+ guestGetMeetingStatus: (meetingUuid ) =>
5068
+ client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
5039
5069
  });
5040
5070
 
5041
5071
  //
@@ -6679,6 +6709,7 @@ class WebRTCClient extends Emitter {
6679
6709
 
6680
6710
 
6681
6711
 
6712
+
6682
6713
 
6683
6714
  // sugar
6684
6715
 
@@ -6741,6 +6772,7 @@ class WebRTCClient extends Emitter {
6741
6772
  this.conferences = {};
6742
6773
  this.networkMonitoringInterval = {};
6743
6774
  this.sessionNetworkStats = {};
6775
+ this.forceClosed = false;
6744
6776
 
6745
6777
  this._boundOnHeartbeat = this._onHeartbeat.bind(this);
6746
6778
  this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
@@ -6862,6 +6894,8 @@ class WebRTCClient extends Emitter {
6862
6894
  skipRegister: this.skipRegister,
6863
6895
  };
6864
6896
 
6897
+ this.forceClosed = false;
6898
+
6865
6899
  if (this.skipRegister) {
6866
6900
  logger$8.info('sdk webrtc skip register...', logInfo);
6867
6901
  return Promise.resolve();
@@ -6886,7 +6920,15 @@ class WebRTCClient extends Emitter {
6886
6920
  const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
6887
6921
 
6888
6922
  const onRegisterFailed = () => {
6889
- logger$8.info('sdk webrtc registering failed', { tries, registerer: !!this.registerer });
6923
+ logger$8.info('sdk webrtc registering failed', {
6924
+ tries,
6925
+ registerer: !!this.registerer,
6926
+ forceClosed: this.forceClosed,
6927
+ });
6928
+ if (this.forceClosed) {
6929
+ return;
6930
+ }
6931
+
6890
6932
  this.connectionPromise = null;
6891
6933
  if (this.registerer && this.registerer.waiting) {
6892
6934
  this.registerer.waitingToggle(false);
@@ -7164,8 +7206,9 @@ class WebRTCClient extends Emitter {
7164
7206
  }
7165
7207
  }
7166
7208
 
7167
- async close() {
7168
- logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
7209
+ async close(force = false) {
7210
+ logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
7211
+ this.forceClosed = force;
7169
7212
  this._cleanupMedia();
7170
7213
  this.connectionPromise = null;
7171
7214
 
@@ -7184,7 +7227,7 @@ class WebRTCClient extends Emitter {
7184
7227
  this.userAgent.delegate = null;
7185
7228
  this.userAgent.stateChange.removeAllListeners();
7186
7229
 
7187
- await this._disconnectTransport();
7230
+ await this._disconnectTransport(force);
7188
7231
 
7189
7232
  this._cleanupRegister();
7190
7233
 
@@ -8620,7 +8663,15 @@ class WebRTCClient extends Emitter {
8620
8663
  return UserAgent.makeURI(`sip:${target}@${this.config.host}`);
8621
8664
  }
8622
8665
 
8623
- async _disconnectTransport() {
8666
+ async _disconnectTransport(force = false) {
8667
+ if (force) {
8668
+ // Bypass sip.js state machine that prevent to close WS with the state `Connecting`
8669
+ this.userAgent.transport.disconnectResolve = () => {};
8670
+ // eslint-disable-next-line
8671
+ this.userAgent.transport._ws.close(1000);
8672
+ return;
8673
+ }
8674
+
8624
8675
  // Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
8625
8676
  if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
8626
8677
  try {
@@ -10027,7 +10078,7 @@ class WebRTCPhone extends Emitter {
10027
10078
  return this.client && this.client.isConference(callSession.sipCallId);
10028
10079
  }
10029
10080
 
10030
- async close() {
10081
+ async close(force = false) {
10031
10082
  logger$7.info('WebRTC close');
10032
10083
 
10033
10084
  try {
@@ -10039,7 +10090,7 @@ class WebRTCPhone extends Emitter {
10039
10090
  logger$7.error('WebRTC close, unregister error', e);
10040
10091
  }
10041
10092
 
10042
- this.client.close();
10093
+ this.client.close(force);
10043
10094
  this.unbind();
10044
10095
 
10045
10096
  this.incomingSessions = [];
@@ -4842,6 +4842,34 @@ var chatdMethods = (client , baseUrl ) => ({
4842
4842
  client.get(`${baseUrl}/users/me/rooms/messages`, options),
4843
4843
  });
4844
4844
 
4845
+ //
4846
+
4847
+
4848
+
4849
+
4850
+
4851
+ class MeetingStatus {
4852
+
4853
+
4854
+
4855
+
4856
+ constructor({
4857
+ full,
4858
+ } = {}) {
4859
+ this.full = full;
4860
+
4861
+ // Useful to compare instead of instanceof with minified code
4862
+ this.type = 'MeetingStatus';
4863
+ }
4864
+
4865
+ static parse(plain ) {
4866
+ return new MeetingStatus({
4867
+ full: plain.full,
4868
+ });
4869
+ }
4870
+
4871
+ }
4872
+
4845
4873
  /* */
4846
4874
 
4847
4875
 
@@ -5036,6 +5064,8 @@ var calldMethods = (client , baseUrl ) => ({
5036
5064
  client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
5037
5065
  ApiRequester.successResponseParser),
5038
5066
 
5067
+ guestGetMeetingStatus: (meetingUuid ) =>
5068
+ client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
5039
5069
  });
5040
5070
 
5041
5071
  //
@@ -6679,6 +6709,7 @@ class WebRTCClient extends Emitter {
6679
6709
 
6680
6710
 
6681
6711
 
6712
+
6682
6713
 
6683
6714
  // sugar
6684
6715
 
@@ -6741,6 +6772,7 @@ class WebRTCClient extends Emitter {
6741
6772
  this.conferences = {};
6742
6773
  this.networkMonitoringInterval = {};
6743
6774
  this.sessionNetworkStats = {};
6775
+ this.forceClosed = false;
6744
6776
 
6745
6777
  this._boundOnHeartbeat = this._onHeartbeat.bind(this);
6746
6778
  this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
@@ -6862,6 +6894,8 @@ class WebRTCClient extends Emitter {
6862
6894
  skipRegister: this.skipRegister,
6863
6895
  };
6864
6896
 
6897
+ this.forceClosed = false;
6898
+
6865
6899
  if (this.skipRegister) {
6866
6900
  logger$8.info('sdk webrtc skip register...', logInfo);
6867
6901
  return Promise.resolve();
@@ -6886,7 +6920,15 @@ class WebRTCClient extends Emitter {
6886
6920
  const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
6887
6921
 
6888
6922
  const onRegisterFailed = () => {
6889
- logger$8.info('sdk webrtc registering failed', { tries, registerer: !!this.registerer });
6923
+ logger$8.info('sdk webrtc registering failed', {
6924
+ tries,
6925
+ registerer: !!this.registerer,
6926
+ forceClosed: this.forceClosed,
6927
+ });
6928
+ if (this.forceClosed) {
6929
+ return;
6930
+ }
6931
+
6890
6932
  this.connectionPromise = null;
6891
6933
  if (this.registerer && this.registerer.waiting) {
6892
6934
  this.registerer.waitingToggle(false);
@@ -7164,8 +7206,9 @@ class WebRTCClient extends Emitter {
7164
7206
  }
7165
7207
  }
7166
7208
 
7167
- async close() {
7168
- logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
7209
+ async close(force = false) {
7210
+ logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
7211
+ this.forceClosed = force;
7169
7212
  this._cleanupMedia();
7170
7213
  this.connectionPromise = null;
7171
7214
 
@@ -7184,7 +7227,7 @@ class WebRTCClient extends Emitter {
7184
7227
  this.userAgent.delegate = null;
7185
7228
  this.userAgent.stateChange.removeAllListeners();
7186
7229
 
7187
- await this._disconnectTransport();
7230
+ await this._disconnectTransport(force);
7188
7231
 
7189
7232
  this._cleanupRegister();
7190
7233
 
@@ -8620,7 +8663,15 @@ class WebRTCClient extends Emitter {
8620
8663
  return UserAgent.makeURI(`sip:${target}@${this.config.host}`);
8621
8664
  }
8622
8665
 
8623
- async _disconnectTransport() {
8666
+ async _disconnectTransport(force = false) {
8667
+ if (force) {
8668
+ // Bypass sip.js state machine that prevent to close WS with the state `Connecting`
8669
+ this.userAgent.transport.disconnectResolve = () => {};
8670
+ // eslint-disable-next-line
8671
+ this.userAgent.transport._ws.close(1000);
8672
+ return;
8673
+ }
8674
+
8624
8675
  // Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
8625
8676
  if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
8626
8677
  try {
@@ -10027,7 +10078,7 @@ class WebRTCPhone extends Emitter {
10027
10078
  return this.client && this.client.isConference(callSession.sipCallId);
10028
10079
  }
10029
10080
 
10030
- async close() {
10081
+ async close(force = false) {
10031
10082
  logger$7.info('WebRTC close');
10032
10083
 
10033
10084
  try {
@@ -10039,7 +10090,7 @@ class WebRTCPhone extends Emitter {
10039
10090
  logger$7.error('WebRTC close, unregister error', e);
10040
10091
  }
10041
10092
 
10042
- this.client.close();
10093
+ this.client.close(force);
10043
10094
  this.unbind();
10044
10095
 
10045
10096
  this.incomingSessions = [];
@@ -4842,6 +4842,34 @@ var chatdMethods = (client , baseUrl ) => ({
4842
4842
  client.get(`${baseUrl}/users/me/rooms/messages`, options),
4843
4843
  });
4844
4844
 
4845
+ //
4846
+
4847
+
4848
+
4849
+
4850
+
4851
+ class MeetingStatus {
4852
+
4853
+
4854
+
4855
+
4856
+ constructor({
4857
+ full,
4858
+ } = {}) {
4859
+ this.full = full;
4860
+
4861
+ // Useful to compare instead of instanceof with minified code
4862
+ this.type = 'MeetingStatus';
4863
+ }
4864
+
4865
+ static parse(plain ) {
4866
+ return new MeetingStatus({
4867
+ full: plain.full,
4868
+ });
4869
+ }
4870
+
4871
+ }
4872
+
4845
4873
  /* */
4846
4874
 
4847
4875
 
@@ -5036,6 +5064,8 @@ var calldMethods = (client , baseUrl ) => ({
5036
5064
  client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
5037
5065
  ApiRequester.successResponseParser),
5038
5066
 
5067
+ guestGetMeetingStatus: (meetingUuid ) =>
5068
+ client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
5039
5069
  });
5040
5070
 
5041
5071
  //
@@ -6679,6 +6709,7 @@ class WebRTCClient extends Emitter {
6679
6709
 
6680
6710
 
6681
6711
 
6712
+
6682
6713
 
6683
6714
  // sugar
6684
6715
 
@@ -6741,6 +6772,7 @@ class WebRTCClient extends Emitter {
6741
6772
  this.conferences = {};
6742
6773
  this.networkMonitoringInterval = {};
6743
6774
  this.sessionNetworkStats = {};
6775
+ this.forceClosed = false;
6744
6776
 
6745
6777
  this._boundOnHeartbeat = this._onHeartbeat.bind(this);
6746
6778
  this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
@@ -6862,6 +6894,8 @@ class WebRTCClient extends Emitter {
6862
6894
  skipRegister: this.skipRegister,
6863
6895
  };
6864
6896
 
6897
+ this.forceClosed = false;
6898
+
6865
6899
  if (this.skipRegister) {
6866
6900
  logger$8.info('sdk webrtc skip register...', logInfo);
6867
6901
  return Promise.resolve();
@@ -6886,7 +6920,15 @@ class WebRTCClient extends Emitter {
6886
6920
  const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
6887
6921
 
6888
6922
  const onRegisterFailed = () => {
6889
- logger$8.info('sdk webrtc registering failed', { tries, registerer: !!this.registerer });
6923
+ logger$8.info('sdk webrtc registering failed', {
6924
+ tries,
6925
+ registerer: !!this.registerer,
6926
+ forceClosed: this.forceClosed,
6927
+ });
6928
+ if (this.forceClosed) {
6929
+ return;
6930
+ }
6931
+
6890
6932
  this.connectionPromise = null;
6891
6933
  if (this.registerer && this.registerer.waiting) {
6892
6934
  this.registerer.waitingToggle(false);
@@ -7164,8 +7206,9 @@ class WebRTCClient extends Emitter {
7164
7206
  }
7165
7207
  }
7166
7208
 
7167
- async close() {
7168
- logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
7209
+ async close(force = false) {
7210
+ logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
7211
+ this.forceClosed = force;
7169
7212
  this._cleanupMedia();
7170
7213
  this.connectionPromise = null;
7171
7214
 
@@ -7184,7 +7227,7 @@ class WebRTCClient extends Emitter {
7184
7227
  this.userAgent.delegate = null;
7185
7228
  this.userAgent.stateChange.removeAllListeners();
7186
7229
 
7187
- await this._disconnectTransport();
7230
+ await this._disconnectTransport(force);
7188
7231
 
7189
7232
  this._cleanupRegister();
7190
7233
 
@@ -8620,7 +8663,15 @@ class WebRTCClient extends Emitter {
8620
8663
  return UserAgent.makeURI(`sip:${target}@${this.config.host}`);
8621
8664
  }
8622
8665
 
8623
- async _disconnectTransport() {
8666
+ async _disconnectTransport(force = false) {
8667
+ if (force) {
8668
+ // Bypass sip.js state machine that prevent to close WS with the state `Connecting`
8669
+ this.userAgent.transport.disconnectResolve = () => {};
8670
+ // eslint-disable-next-line
8671
+ this.userAgent.transport._ws.close(1000);
8672
+ return;
8673
+ }
8674
+
8624
8675
  // Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
8625
8676
  if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
8626
8677
  try {
@@ -10027,7 +10078,7 @@ class WebRTCPhone extends Emitter {
10027
10078
  return this.client && this.client.isConference(callSession.sipCallId);
10028
10079
  }
10029
10080
 
10030
- async close() {
10081
+ async close(force = false) {
10031
10082
  logger$7.info('WebRTC close');
10032
10083
 
10033
10084
  try {
@@ -10039,7 +10090,7 @@ class WebRTCPhone extends Emitter {
10039
10090
  logger$7.error('WebRTC close, unregister error', e);
10040
10091
  }
10041
10092
 
10042
- this.client.close();
10093
+ this.client.close(force);
10043
10094
  this.unbind();
10044
10095
 
10045
10096
  this.incomingSessions = [];
@@ -4842,6 +4842,34 @@ var chatdMethods = (client , baseUrl ) => ({
4842
4842
  client.get(`${baseUrl}/users/me/rooms/messages`, options),
4843
4843
  });
4844
4844
 
4845
+ //
4846
+
4847
+
4848
+
4849
+
4850
+
4851
+ class MeetingStatus {
4852
+
4853
+
4854
+
4855
+
4856
+ constructor({
4857
+ full,
4858
+ } = {}) {
4859
+ this.full = full;
4860
+
4861
+ // Useful to compare instead of instanceof with minified code
4862
+ this.type = 'MeetingStatus';
4863
+ }
4864
+
4865
+ static parse(plain ) {
4866
+ return new MeetingStatus({
4867
+ full: plain.full,
4868
+ });
4869
+ }
4870
+
4871
+ }
4872
+
4845
4873
  /* */
4846
4874
 
4847
4875
 
@@ -5036,6 +5064,8 @@ var calldMethods = (client , baseUrl ) => ({
5036
5064
  client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
5037
5065
  ApiRequester.successResponseParser),
5038
5066
 
5067
+ guestGetMeetingStatus: (meetingUuid ) =>
5068
+ client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
5039
5069
  });
5040
5070
 
5041
5071
  //
@@ -6679,6 +6709,7 @@ class WebRTCClient extends Emitter {
6679
6709
 
6680
6710
 
6681
6711
 
6712
+
6682
6713
 
6683
6714
  // sugar
6684
6715
 
@@ -6741,6 +6772,7 @@ class WebRTCClient extends Emitter {
6741
6772
  this.conferences = {};
6742
6773
  this.networkMonitoringInterval = {};
6743
6774
  this.sessionNetworkStats = {};
6775
+ this.forceClosed = false;
6744
6776
 
6745
6777
  this._boundOnHeartbeat = this._onHeartbeat.bind(this);
6746
6778
  this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
@@ -6862,6 +6894,8 @@ class WebRTCClient extends Emitter {
6862
6894
  skipRegister: this.skipRegister,
6863
6895
  };
6864
6896
 
6897
+ this.forceClosed = false;
6898
+
6865
6899
  if (this.skipRegister) {
6866
6900
  logger$8.info('sdk webrtc skip register...', logInfo);
6867
6901
  return Promise.resolve();
@@ -6886,7 +6920,15 @@ class WebRTCClient extends Emitter {
6886
6920
  const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
6887
6921
 
6888
6922
  const onRegisterFailed = () => {
6889
- logger$8.info('sdk webrtc registering failed', { tries, registerer: !!this.registerer });
6923
+ logger$8.info('sdk webrtc registering failed', {
6924
+ tries,
6925
+ registerer: !!this.registerer,
6926
+ forceClosed: this.forceClosed,
6927
+ });
6928
+ if (this.forceClosed) {
6929
+ return;
6930
+ }
6931
+
6890
6932
  this.connectionPromise = null;
6891
6933
  if (this.registerer && this.registerer.waiting) {
6892
6934
  this.registerer.waitingToggle(false);
@@ -7164,8 +7206,9 @@ class WebRTCClient extends Emitter {
7164
7206
  }
7165
7207
  }
7166
7208
 
7167
- async close() {
7168
- logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
7209
+ async close(force = false) {
7210
+ logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
7211
+ this.forceClosed = force;
7169
7212
  this._cleanupMedia();
7170
7213
  this.connectionPromise = null;
7171
7214
 
@@ -7184,7 +7227,7 @@ class WebRTCClient extends Emitter {
7184
7227
  this.userAgent.delegate = null;
7185
7228
  this.userAgent.stateChange.removeAllListeners();
7186
7229
 
7187
- await this._disconnectTransport();
7230
+ await this._disconnectTransport(force);
7188
7231
 
7189
7232
  this._cleanupRegister();
7190
7233
 
@@ -8620,7 +8663,15 @@ class WebRTCClient extends Emitter {
8620
8663
  return UserAgent.makeURI(`sip:${target}@${this.config.host}`);
8621
8664
  }
8622
8665
 
8623
- async _disconnectTransport() {
8666
+ async _disconnectTransport(force = false) {
8667
+ if (force) {
8668
+ // Bypass sip.js state machine that prevent to close WS with the state `Connecting`
8669
+ this.userAgent.transport.disconnectResolve = () => {};
8670
+ // eslint-disable-next-line
8671
+ this.userAgent.transport._ws.close(1000);
8672
+ return;
8673
+ }
8674
+
8624
8675
  // Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
8625
8676
  if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
8626
8677
  try {
@@ -10027,7 +10078,7 @@ class WebRTCPhone extends Emitter {
10027
10078
  return this.client && this.client.isConference(callSession.sipCallId);
10028
10079
  }
10029
10080
 
10030
- async close() {
10081
+ async close(force = false) {
10031
10082
  logger$7.info('WebRTC close');
10032
10083
 
10033
10084
  try {
@@ -10039,7 +10090,7 @@ class WebRTCPhone extends Emitter {
10039
10090
  logger$7.error('WebRTC close, unregister error', e);
10040
10091
  }
10041
10092
 
10042
- this.client.close();
10093
+ this.client.close(force);
10043
10094
  this.unbind();
10044
10095
 
10045
10096
  this.incomingSessions = [];