@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
@@ -4852,6 +4852,34 @@ var chatdMethods = (client , baseUrl ) => ({
4852
4852
  client.get(`${baseUrl}/users/me/rooms/messages`, options),
4853
4853
  });
4854
4854
 
4855
+ //
4856
+
4857
+
4858
+
4859
+
4860
+
4861
+ class MeetingStatus {
4862
+
4863
+
4864
+
4865
+
4866
+ constructor({
4867
+ full,
4868
+ } = {}) {
4869
+ this.full = full;
4870
+
4871
+ // Useful to compare instead of instanceof with minified code
4872
+ this.type = 'MeetingStatus';
4873
+ }
4874
+
4875
+ static parse(plain ) {
4876
+ return new MeetingStatus({
4877
+ full: plain.full,
4878
+ });
4879
+ }
4880
+
4881
+ }
4882
+
4855
4883
  /* */
4856
4884
 
4857
4885
 
@@ -5046,6 +5074,8 @@ var calldMethods = (client , baseUrl ) => ({
5046
5074
  client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
5047
5075
  ApiRequester.successResponseParser),
5048
5076
 
5077
+ guestGetMeetingStatus: (meetingUuid ) =>
5078
+ client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
5049
5079
  });
5050
5080
 
5051
5081
  //
@@ -6689,6 +6719,7 @@ class WebRTCClient extends Emitter {
6689
6719
 
6690
6720
 
6691
6721
 
6722
+
6692
6723
 
6693
6724
  // sugar
6694
6725
 
@@ -6751,6 +6782,7 @@ class WebRTCClient extends Emitter {
6751
6782
  this.conferences = {};
6752
6783
  this.networkMonitoringInterval = {};
6753
6784
  this.sessionNetworkStats = {};
6785
+ this.forceClosed = false;
6754
6786
 
6755
6787
  this._boundOnHeartbeat = this._onHeartbeat.bind(this);
6756
6788
  this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
@@ -6872,6 +6904,8 @@ class WebRTCClient extends Emitter {
6872
6904
  skipRegister: this.skipRegister,
6873
6905
  };
6874
6906
 
6907
+ this.forceClosed = false;
6908
+
6875
6909
  if (this.skipRegister) {
6876
6910
  logger$8.info('sdk webrtc skip register...', logInfo);
6877
6911
  return Promise.resolve();
@@ -6896,7 +6930,15 @@ class WebRTCClient extends Emitter {
6896
6930
  const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
6897
6931
 
6898
6932
  const onRegisterFailed = () => {
6899
- logger$8.info('sdk webrtc registering failed', { tries, registerer: !!this.registerer });
6933
+ logger$8.info('sdk webrtc registering failed', {
6934
+ tries,
6935
+ registerer: !!this.registerer,
6936
+ forceClosed: this.forceClosed,
6937
+ });
6938
+ if (this.forceClosed) {
6939
+ return;
6940
+ }
6941
+
6900
6942
  this.connectionPromise = null;
6901
6943
  if (this.registerer && this.registerer.waiting) {
6902
6944
  this.registerer.waitingToggle(false);
@@ -7174,8 +7216,9 @@ class WebRTCClient extends Emitter {
7174
7216
  }
7175
7217
  }
7176
7218
 
7177
- async close() {
7178
- logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
7219
+ async close(force = false) {
7220
+ logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
7221
+ this.forceClosed = force;
7179
7222
  this._cleanupMedia();
7180
7223
  this.connectionPromise = null;
7181
7224
 
@@ -7194,7 +7237,7 @@ class WebRTCClient extends Emitter {
7194
7237
  this.userAgent.delegate = null;
7195
7238
  this.userAgent.stateChange.removeAllListeners();
7196
7239
 
7197
- await this._disconnectTransport();
7240
+ await this._disconnectTransport(force);
7198
7241
 
7199
7242
  this._cleanupRegister();
7200
7243
 
@@ -8630,7 +8673,15 @@ class WebRTCClient extends Emitter {
8630
8673
  return userAgent.UserAgent.makeURI(`sip:${target}@${this.config.host}`);
8631
8674
  }
8632
8675
 
8633
- async _disconnectTransport() {
8676
+ async _disconnectTransport(force = false) {
8677
+ if (force) {
8678
+ // Bypass sip.js state machine that prevent to close WS with the state `Connecting`
8679
+ this.userAgent.transport.disconnectResolve = () => {};
8680
+ // eslint-disable-next-line
8681
+ this.userAgent.transport._ws.close(1000);
8682
+ return;
8683
+ }
8684
+
8634
8685
  // Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
8635
8686
  if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
8636
8687
  try {
@@ -10037,7 +10088,7 @@ class WebRTCPhone extends Emitter {
10037
10088
  return this.client && this.client.isConference(callSession.sipCallId);
10038
10089
  }
10039
10090
 
10040
- async close() {
10091
+ async close(force = false) {
10041
10092
  logger$7.info('WebRTC close');
10042
10093
 
10043
10094
  try {
@@ -10049,7 +10100,7 @@ class WebRTCPhone extends Emitter {
10049
10100
  logger$7.error('WebRTC close, unregister error', e);
10050
10101
  }
10051
10102
 
10052
- this.client.close();
10103
+ this.client.close(force);
10053
10104
  this.unbind();
10054
10105
 
10055
10106
  this.incomingSessions = [];
@@ -4854,6 +4854,34 @@ var chatdMethods = (client , baseUrl ) => ({
4854
4854
  client.get(`${baseUrl}/users/me/rooms/messages`, options),
4855
4855
  });
4856
4856
 
4857
+ //
4858
+
4859
+
4860
+
4861
+
4862
+
4863
+ class MeetingStatus {
4864
+
4865
+
4866
+
4867
+
4868
+ constructor({
4869
+ full,
4870
+ } = {}) {
4871
+ this.full = full;
4872
+
4873
+ // Useful to compare instead of instanceof with minified code
4874
+ this.type = 'MeetingStatus';
4875
+ }
4876
+
4877
+ static parse(plain ) {
4878
+ return new MeetingStatus({
4879
+ full: plain.full,
4880
+ });
4881
+ }
4882
+
4883
+ }
4884
+
4857
4885
  /* */
4858
4886
 
4859
4887
 
@@ -5048,6 +5076,8 @@ var calldMethods = (client , baseUrl ) => ({
5048
5076
  client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
5049
5077
  ApiRequester.successResponseParser),
5050
5078
 
5079
+ guestGetMeetingStatus: (meetingUuid ) =>
5080
+ client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
5051
5081
  });
5052
5082
 
5053
5083
  //
@@ -6691,6 +6721,7 @@ class WebRTCClient extends Emitter {
6691
6721
 
6692
6722
 
6693
6723
 
6724
+
6694
6725
 
6695
6726
  // sugar
6696
6727
 
@@ -6753,6 +6784,7 @@ class WebRTCClient extends Emitter {
6753
6784
  this.conferences = {};
6754
6785
  this.networkMonitoringInterval = {};
6755
6786
  this.sessionNetworkStats = {};
6787
+ this.forceClosed = false;
6756
6788
 
6757
6789
  this._boundOnHeartbeat = this._onHeartbeat.bind(this);
6758
6790
  this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
@@ -6874,6 +6906,8 @@ class WebRTCClient extends Emitter {
6874
6906
  skipRegister: this.skipRegister,
6875
6907
  };
6876
6908
 
6909
+ this.forceClosed = false;
6910
+
6877
6911
  if (this.skipRegister) {
6878
6912
  logger$8.info('sdk webrtc skip register...', logInfo);
6879
6913
  return Promise.resolve();
@@ -6898,7 +6932,15 @@ class WebRTCClient extends Emitter {
6898
6932
  const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
6899
6933
 
6900
6934
  const onRegisterFailed = () => {
6901
- logger$8.info('sdk webrtc registering failed', { tries, registerer: !!this.registerer });
6935
+ logger$8.info('sdk webrtc registering failed', {
6936
+ tries,
6937
+ registerer: !!this.registerer,
6938
+ forceClosed: this.forceClosed,
6939
+ });
6940
+ if (this.forceClosed) {
6941
+ return;
6942
+ }
6943
+
6902
6944
  this.connectionPromise = null;
6903
6945
  if (this.registerer && this.registerer.waiting) {
6904
6946
  this.registerer.waitingToggle(false);
@@ -7176,8 +7218,9 @@ class WebRTCClient extends Emitter {
7176
7218
  }
7177
7219
  }
7178
7220
 
7179
- async close() {
7180
- logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
7221
+ async close(force = false) {
7222
+ logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
7223
+ this.forceClosed = force;
7181
7224
  this._cleanupMedia();
7182
7225
  this.connectionPromise = null;
7183
7226
 
@@ -7196,7 +7239,7 @@ class WebRTCClient extends Emitter {
7196
7239
  this.userAgent.delegate = null;
7197
7240
  this.userAgent.stateChange.removeAllListeners();
7198
7241
 
7199
- await this._disconnectTransport();
7242
+ await this._disconnectTransport(force);
7200
7243
 
7201
7244
  this._cleanupRegister();
7202
7245
 
@@ -8632,7 +8675,15 @@ class WebRTCClient extends Emitter {
8632
8675
  return userAgent.UserAgent.makeURI(`sip:${target}@${this.config.host}`);
8633
8676
  }
8634
8677
 
8635
- async _disconnectTransport() {
8678
+ async _disconnectTransport(force = false) {
8679
+ if (force) {
8680
+ // Bypass sip.js state machine that prevent to close WS with the state `Connecting`
8681
+ this.userAgent.transport.disconnectResolve = () => {};
8682
+ // eslint-disable-next-line
8683
+ this.userAgent.transport._ws.close(1000);
8684
+ return;
8685
+ }
8686
+
8636
8687
  // Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
8637
8688
  if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
8638
8689
  try {
@@ -10039,7 +10090,7 @@ class WebRTCPhone extends Emitter {
10039
10090
  return this.client && this.client.isConference(callSession.sipCallId);
10040
10091
  }
10041
10092
 
10042
- async close() {
10093
+ async close(force = false) {
10043
10094
  logger$7.info('WebRTC close');
10044
10095
 
10045
10096
  try {
@@ -10051,7 +10102,7 @@ class WebRTCPhone extends Emitter {
10051
10102
  logger$7.error('WebRTC close, unregister error', e);
10052
10103
  }
10053
10104
 
10054
- this.client.close();
10105
+ this.client.close(force);
10055
10106
  this.unbind();
10056
10107
 
10057
10108
  this.incomingSessions = [];
@@ -4852,6 +4852,34 @@ var chatdMethods = (client , baseUrl ) => ({
4852
4852
  client.get(`${baseUrl}/users/me/rooms/messages`, options),
4853
4853
  });
4854
4854
 
4855
+ //
4856
+
4857
+
4858
+
4859
+
4860
+
4861
+ class MeetingStatus {
4862
+
4863
+
4864
+
4865
+
4866
+ constructor({
4867
+ full,
4868
+ } = {}) {
4869
+ this.full = full;
4870
+
4871
+ // Useful to compare instead of instanceof with minified code
4872
+ this.type = 'MeetingStatus';
4873
+ }
4874
+
4875
+ static parse(plain ) {
4876
+ return new MeetingStatus({
4877
+ full: plain.full,
4878
+ });
4879
+ }
4880
+
4881
+ }
4882
+
4855
4883
  /* */
4856
4884
 
4857
4885
 
@@ -5046,6 +5074,8 @@ var calldMethods = (client , baseUrl ) => ({
5046
5074
  client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
5047
5075
  ApiRequester.successResponseParser),
5048
5076
 
5077
+ guestGetMeetingStatus: (meetingUuid ) =>
5078
+ client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
5049
5079
  });
5050
5080
 
5051
5081
  //
@@ -6689,6 +6719,7 @@ class WebRTCClient extends Emitter {
6689
6719
 
6690
6720
 
6691
6721
 
6722
+
6692
6723
 
6693
6724
  // sugar
6694
6725
 
@@ -6751,6 +6782,7 @@ class WebRTCClient extends Emitter {
6751
6782
  this.conferences = {};
6752
6783
  this.networkMonitoringInterval = {};
6753
6784
  this.sessionNetworkStats = {};
6785
+ this.forceClosed = false;
6754
6786
 
6755
6787
  this._boundOnHeartbeat = this._onHeartbeat.bind(this);
6756
6788
  this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
@@ -6872,6 +6904,8 @@ class WebRTCClient extends Emitter {
6872
6904
  skipRegister: this.skipRegister,
6873
6905
  };
6874
6906
 
6907
+ this.forceClosed = false;
6908
+
6875
6909
  if (this.skipRegister) {
6876
6910
  logger$8.info('sdk webrtc skip register...', logInfo);
6877
6911
  return Promise.resolve();
@@ -6896,7 +6930,15 @@ class WebRTCClient extends Emitter {
6896
6930
  const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
6897
6931
 
6898
6932
  const onRegisterFailed = () => {
6899
- logger$8.info('sdk webrtc registering failed', { tries, registerer: !!this.registerer });
6933
+ logger$8.info('sdk webrtc registering failed', {
6934
+ tries,
6935
+ registerer: !!this.registerer,
6936
+ forceClosed: this.forceClosed,
6937
+ });
6938
+ if (this.forceClosed) {
6939
+ return;
6940
+ }
6941
+
6900
6942
  this.connectionPromise = null;
6901
6943
  if (this.registerer && this.registerer.waiting) {
6902
6944
  this.registerer.waitingToggle(false);
@@ -7174,8 +7216,9 @@ class WebRTCClient extends Emitter {
7174
7216
  }
7175
7217
  }
7176
7218
 
7177
- async close() {
7178
- logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
7219
+ async close(force = false) {
7220
+ logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
7221
+ this.forceClosed = force;
7179
7222
  this._cleanupMedia();
7180
7223
  this.connectionPromise = null;
7181
7224
 
@@ -7194,7 +7237,7 @@ class WebRTCClient extends Emitter {
7194
7237
  this.userAgent.delegate = null;
7195
7238
  this.userAgent.stateChange.removeAllListeners();
7196
7239
 
7197
- await this._disconnectTransport();
7240
+ await this._disconnectTransport(force);
7198
7241
 
7199
7242
  this._cleanupRegister();
7200
7243
 
@@ -8630,7 +8673,15 @@ class WebRTCClient extends Emitter {
8630
8673
  return userAgent.UserAgent.makeURI(`sip:${target}@${this.config.host}`);
8631
8674
  }
8632
8675
 
8633
- async _disconnectTransport() {
8676
+ async _disconnectTransport(force = false) {
8677
+ if (force) {
8678
+ // Bypass sip.js state machine that prevent to close WS with the state `Connecting`
8679
+ this.userAgent.transport.disconnectResolve = () => {};
8680
+ // eslint-disable-next-line
8681
+ this.userAgent.transport._ws.close(1000);
8682
+ return;
8683
+ }
8684
+
8634
8685
  // Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
8635
8686
  if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
8636
8687
  try {
@@ -10037,7 +10088,7 @@ class WebRTCPhone extends Emitter {
10037
10088
  return this.client && this.client.isConference(callSession.sipCallId);
10038
10089
  }
10039
10090
 
10040
- async close() {
10091
+ async close(force = false) {
10041
10092
  logger$7.info('WebRTC close');
10042
10093
 
10043
10094
  try {
@@ -10049,7 +10100,7 @@ class WebRTCPhone extends Emitter {
10049
10100
  logger$7.error('WebRTC close, unregister error', e);
10050
10101
  }
10051
10102
 
10052
- this.client.close();
10103
+ this.client.close(force);
10053
10104
  this.unbind();
10054
10105
 
10055
10106
  this.incomingSessions = [];
@@ -4852,6 +4852,34 @@ var chatdMethods = (client , baseUrl ) => ({
4852
4852
  client.get(`${baseUrl}/users/me/rooms/messages`, options),
4853
4853
  });
4854
4854
 
4855
+ //
4856
+
4857
+
4858
+
4859
+
4860
+
4861
+ class MeetingStatus {
4862
+
4863
+
4864
+
4865
+
4866
+ constructor({
4867
+ full,
4868
+ } = {}) {
4869
+ this.full = full;
4870
+
4871
+ // Useful to compare instead of instanceof with minified code
4872
+ this.type = 'MeetingStatus';
4873
+ }
4874
+
4875
+ static parse(plain ) {
4876
+ return new MeetingStatus({
4877
+ full: plain.full,
4878
+ });
4879
+ }
4880
+
4881
+ }
4882
+
4855
4883
  /* */
4856
4884
 
4857
4885
 
@@ -5046,6 +5074,8 @@ var calldMethods = (client , baseUrl ) => ({
5046
5074
  client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
5047
5075
  ApiRequester.successResponseParser),
5048
5076
 
5077
+ guestGetMeetingStatus: (meetingUuid ) =>
5078
+ client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
5049
5079
  });
5050
5080
 
5051
5081
  //
@@ -6689,6 +6719,7 @@ class WebRTCClient extends Emitter {
6689
6719
 
6690
6720
 
6691
6721
 
6722
+
6692
6723
 
6693
6724
  // sugar
6694
6725
 
@@ -6751,6 +6782,7 @@ class WebRTCClient extends Emitter {
6751
6782
  this.conferences = {};
6752
6783
  this.networkMonitoringInterval = {};
6753
6784
  this.sessionNetworkStats = {};
6785
+ this.forceClosed = false;
6754
6786
 
6755
6787
  this._boundOnHeartbeat = this._onHeartbeat.bind(this);
6756
6788
  this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
@@ -6872,6 +6904,8 @@ class WebRTCClient extends Emitter {
6872
6904
  skipRegister: this.skipRegister,
6873
6905
  };
6874
6906
 
6907
+ this.forceClosed = false;
6908
+
6875
6909
  if (this.skipRegister) {
6876
6910
  logger$8.info('sdk webrtc skip register...', logInfo);
6877
6911
  return Promise.resolve();
@@ -6896,7 +6930,15 @@ class WebRTCClient extends Emitter {
6896
6930
  const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
6897
6931
 
6898
6932
  const onRegisterFailed = () => {
6899
- logger$8.info('sdk webrtc registering failed', { tries, registerer: !!this.registerer });
6933
+ logger$8.info('sdk webrtc registering failed', {
6934
+ tries,
6935
+ registerer: !!this.registerer,
6936
+ forceClosed: this.forceClosed,
6937
+ });
6938
+ if (this.forceClosed) {
6939
+ return;
6940
+ }
6941
+
6900
6942
  this.connectionPromise = null;
6901
6943
  if (this.registerer && this.registerer.waiting) {
6902
6944
  this.registerer.waitingToggle(false);
@@ -7174,8 +7216,9 @@ class WebRTCClient extends Emitter {
7174
7216
  }
7175
7217
  }
7176
7218
 
7177
- async close() {
7178
- logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
7219
+ async close(force = false) {
7220
+ logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
7221
+ this.forceClosed = force;
7179
7222
  this._cleanupMedia();
7180
7223
  this.connectionPromise = null;
7181
7224
 
@@ -7194,7 +7237,7 @@ class WebRTCClient extends Emitter {
7194
7237
  this.userAgent.delegate = null;
7195
7238
  this.userAgent.stateChange.removeAllListeners();
7196
7239
 
7197
- await this._disconnectTransport();
7240
+ await this._disconnectTransport(force);
7198
7241
 
7199
7242
  this._cleanupRegister();
7200
7243
 
@@ -8630,7 +8673,15 @@ class WebRTCClient extends Emitter {
8630
8673
  return userAgent.UserAgent.makeURI(`sip:${target}@${this.config.host}`);
8631
8674
  }
8632
8675
 
8633
- async _disconnectTransport() {
8676
+ async _disconnectTransport(force = false) {
8677
+ if (force) {
8678
+ // Bypass sip.js state machine that prevent to close WS with the state `Connecting`
8679
+ this.userAgent.transport.disconnectResolve = () => {};
8680
+ // eslint-disable-next-line
8681
+ this.userAgent.transport._ws.close(1000);
8682
+ return;
8683
+ }
8684
+
8634
8685
  // Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
8635
8686
  if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
8636
8687
  try {
@@ -10037,7 +10088,7 @@ class WebRTCPhone extends Emitter {
10037
10088
  return this.client && this.client.isConference(callSession.sipCallId);
10038
10089
  }
10039
10090
 
10040
- async close() {
10091
+ async close(force = false) {
10041
10092
  logger$7.info('WebRTC close');
10042
10093
 
10043
10094
  try {
@@ -10049,7 +10100,7 @@ class WebRTCPhone extends Emitter {
10049
10100
  logger$7.error('WebRTC close, unregister error', e);
10050
10101
  }
10051
10102
 
10052
- this.client.close();
10103
+ this.client.close(force);
10053
10104
  this.unbind();
10054
10105
 
10055
10106
  this.incomingSessions = [];
@@ -4852,6 +4852,34 @@ var chatdMethods = (client , baseUrl ) => ({
4852
4852
  client.get(`${baseUrl}/users/me/rooms/messages`, options),
4853
4853
  });
4854
4854
 
4855
+ //
4856
+
4857
+
4858
+
4859
+
4860
+
4861
+ class MeetingStatus {
4862
+
4863
+
4864
+
4865
+
4866
+ constructor({
4867
+ full,
4868
+ } = {}) {
4869
+ this.full = full;
4870
+
4871
+ // Useful to compare instead of instanceof with minified code
4872
+ this.type = 'MeetingStatus';
4873
+ }
4874
+
4875
+ static parse(plain ) {
4876
+ return new MeetingStatus({
4877
+ full: plain.full,
4878
+ });
4879
+ }
4880
+
4881
+ }
4882
+
4855
4883
  /* */
4856
4884
 
4857
4885
 
@@ -5046,6 +5074,8 @@ var calldMethods = (client , baseUrl ) => ({
5046
5074
  client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
5047
5075
  ApiRequester.successResponseParser),
5048
5076
 
5077
+ guestGetMeetingStatus: (meetingUuid ) =>
5078
+ client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
5049
5079
  });
5050
5080
 
5051
5081
  //
@@ -6689,6 +6719,7 @@ class WebRTCClient extends Emitter {
6689
6719
 
6690
6720
 
6691
6721
 
6722
+
6692
6723
 
6693
6724
  // sugar
6694
6725
 
@@ -6751,6 +6782,7 @@ class WebRTCClient extends Emitter {
6751
6782
  this.conferences = {};
6752
6783
  this.networkMonitoringInterval = {};
6753
6784
  this.sessionNetworkStats = {};
6785
+ this.forceClosed = false;
6754
6786
 
6755
6787
  this._boundOnHeartbeat = this._onHeartbeat.bind(this);
6756
6788
  this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
@@ -6872,6 +6904,8 @@ class WebRTCClient extends Emitter {
6872
6904
  skipRegister: this.skipRegister,
6873
6905
  };
6874
6906
 
6907
+ this.forceClosed = false;
6908
+
6875
6909
  if (this.skipRegister) {
6876
6910
  logger$8.info('sdk webrtc skip register...', logInfo);
6877
6911
  return Promise.resolve();
@@ -6896,7 +6930,15 @@ class WebRTCClient extends Emitter {
6896
6930
  const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
6897
6931
 
6898
6932
  const onRegisterFailed = () => {
6899
- logger$8.info('sdk webrtc registering failed', { tries, registerer: !!this.registerer });
6933
+ logger$8.info('sdk webrtc registering failed', {
6934
+ tries,
6935
+ registerer: !!this.registerer,
6936
+ forceClosed: this.forceClosed,
6937
+ });
6938
+ if (this.forceClosed) {
6939
+ return;
6940
+ }
6941
+
6900
6942
  this.connectionPromise = null;
6901
6943
  if (this.registerer && this.registerer.waiting) {
6902
6944
  this.registerer.waitingToggle(false);
@@ -7174,8 +7216,9 @@ class WebRTCClient extends Emitter {
7174
7216
  }
7175
7217
  }
7176
7218
 
7177
- async close() {
7178
- logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
7219
+ async close(force = false) {
7220
+ logger$8.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
7221
+ this.forceClosed = force;
7179
7222
  this._cleanupMedia();
7180
7223
  this.connectionPromise = null;
7181
7224
 
@@ -7194,7 +7237,7 @@ class WebRTCClient extends Emitter {
7194
7237
  this.userAgent.delegate = null;
7195
7238
  this.userAgent.stateChange.removeAllListeners();
7196
7239
 
7197
- await this._disconnectTransport();
7240
+ await this._disconnectTransport(force);
7198
7241
 
7199
7242
  this._cleanupRegister();
7200
7243
 
@@ -8630,7 +8673,15 @@ class WebRTCClient extends Emitter {
8630
8673
  return userAgent.UserAgent.makeURI(`sip:${target}@${this.config.host}`);
8631
8674
  }
8632
8675
 
8633
- async _disconnectTransport() {
8676
+ async _disconnectTransport(force = false) {
8677
+ if (force) {
8678
+ // Bypass sip.js state machine that prevent to close WS with the state `Connecting`
8679
+ this.userAgent.transport.disconnectResolve = () => {};
8680
+ // eslint-disable-next-line
8681
+ this.userAgent.transport._ws.close(1000);
8682
+ return;
8683
+ }
8684
+
8634
8685
  // Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
8635
8686
  if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
8636
8687
  try {
@@ -10037,7 +10088,7 @@ class WebRTCPhone extends Emitter {
10037
10088
  return this.client && this.client.isConference(callSession.sipCallId);
10038
10089
  }
10039
10090
 
10040
- async close() {
10091
+ async close(force = false) {
10041
10092
  logger$7.info('WebRTC close');
10042
10093
 
10043
10094
  try {
@@ -10049,7 +10100,7 @@ class WebRTCPhone extends Emitter {
10049
10100
  logger$7.error('WebRTC close, unregister error', e);
10050
10101
  }
10051
10102
 
10052
- this.client.close();
10103
+ this.client.close(force);
10053
10104
  this.unbind();
10054
10105
 
10055
10106
  this.incomingSessions = [];