@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 = [];
@@ -4579,6 +4579,34 @@ var chatdMethods = (client , baseUrl ) => ({
4579
4579
  client.get(`${baseUrl}/users/me/rooms/messages`, options),
4580
4580
  });
4581
4581
 
4582
+ //
4583
+
4584
+
4585
+
4586
+
4587
+
4588
+ class MeetingStatus {
4589
+
4590
+
4591
+
4592
+
4593
+ constructor({
4594
+ full,
4595
+ } = {}) {
4596
+ this.full = full;
4597
+
4598
+ // Useful to compare instead of instanceof with minified code
4599
+ this.type = 'MeetingStatus';
4600
+ }
4601
+
4602
+ static parse(plain ) {
4603
+ return new MeetingStatus({
4604
+ full: plain.full,
4605
+ });
4606
+ }
4607
+
4608
+ }
4609
+
4582
4610
  /* */
4583
4611
 
4584
4612
 
@@ -4773,6 +4801,8 @@ var calldMethods = (client , baseUrl ) => ({
4773
4801
  client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
4774
4802
  ApiRequester.successResponseParser),
4775
4803
 
4804
+ guestGetMeetingStatus: (meetingUuid ) =>
4805
+ client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
4776
4806
  });
4777
4807
 
4778
4808
  //
@@ -5389,6 +5419,7 @@ class WebRTCClient extends Emitter {
5389
5419
 
5390
5420
 
5391
5421
 
5422
+
5392
5423
 
5393
5424
  // sugar
5394
5425
 
@@ -5451,6 +5482,7 @@ class WebRTCClient extends Emitter {
5451
5482
  this.conferences = {};
5452
5483
  this.networkMonitoringInterval = {};
5453
5484
  this.sessionNetworkStats = {};
5485
+ this.forceClosed = false;
5454
5486
 
5455
5487
  this._boundOnHeartbeat = this._onHeartbeat.bind(this);
5456
5488
  this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
@@ -5572,6 +5604,8 @@ class WebRTCClient extends Emitter {
5572
5604
  skipRegister: this.skipRegister,
5573
5605
  };
5574
5606
 
5607
+ this.forceClosed = false;
5608
+
5575
5609
  if (this.skipRegister) {
5576
5610
  logger.info('sdk webrtc skip register...', logInfo);
5577
5611
  return Promise.resolve();
@@ -5596,7 +5630,15 @@ class WebRTCClient extends Emitter {
5596
5630
  const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
5597
5631
 
5598
5632
  const onRegisterFailed = () => {
5599
- logger.info('sdk webrtc registering failed', { tries, registerer: !!this.registerer });
5633
+ logger.info('sdk webrtc registering failed', {
5634
+ tries,
5635
+ registerer: !!this.registerer,
5636
+ forceClosed: this.forceClosed,
5637
+ });
5638
+ if (this.forceClosed) {
5639
+ return;
5640
+ }
5641
+
5600
5642
  this.connectionPromise = null;
5601
5643
  if (this.registerer && this.registerer.waiting) {
5602
5644
  this.registerer.waitingToggle(false);
@@ -5874,8 +5916,9 @@ class WebRTCClient extends Emitter {
5874
5916
  }
5875
5917
  }
5876
5918
 
5877
- async close() {
5878
- logger.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
5919
+ async close(force = false) {
5920
+ logger.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
5921
+ this.forceClosed = force;
5879
5922
  this._cleanupMedia();
5880
5923
  this.connectionPromise = null;
5881
5924
 
@@ -5894,7 +5937,7 @@ class WebRTCClient extends Emitter {
5894
5937
  this.userAgent.delegate = null;
5895
5938
  this.userAgent.stateChange.removeAllListeners();
5896
5939
 
5897
- await this._disconnectTransport();
5940
+ await this._disconnectTransport(force);
5898
5941
 
5899
5942
  this._cleanupRegister();
5900
5943
 
@@ -7330,7 +7373,15 @@ class WebRTCClient extends Emitter {
7330
7373
  return UserAgent.makeURI(`sip:${target}@${this.config.host}`);
7331
7374
  }
7332
7375
 
7333
- async _disconnectTransport() {
7376
+ async _disconnectTransport(force = false) {
7377
+ if (force) {
7378
+ // Bypass sip.js state machine that prevent to close WS with the state `Connecting`
7379
+ this.userAgent.transport.disconnectResolve = () => {};
7380
+ // eslint-disable-next-line
7381
+ this.userAgent.transport._ws.close(1000);
7382
+ return;
7383
+ }
7384
+
7334
7385
  // Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
7335
7386
  if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
7336
7387
  try {
@@ -4037,6 +4037,34 @@ var chatdMethods = (client , baseUrl ) => ({
4037
4037
  client.get(`${baseUrl}/users/me/rooms/messages`, options),
4038
4038
  });
4039
4039
 
4040
+ //
4041
+
4042
+
4043
+
4044
+
4045
+
4046
+ class MeetingStatus {
4047
+
4048
+
4049
+
4050
+
4051
+ constructor({
4052
+ full,
4053
+ } = {}) {
4054
+ this.full = full;
4055
+
4056
+ // Useful to compare instead of instanceof with minified code
4057
+ this.type = 'MeetingStatus';
4058
+ }
4059
+
4060
+ static parse(plain ) {
4061
+ return new MeetingStatus({
4062
+ full: plain.full,
4063
+ });
4064
+ }
4065
+
4066
+ }
4067
+
4040
4068
  /* */
4041
4069
 
4042
4070
 
@@ -4231,6 +4259,8 @@ var calldMethods = (client , baseUrl ) => ({
4231
4259
  client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
4232
4260
  ApiRequester.successResponseParser),
4233
4261
 
4262
+ guestGetMeetingStatus: (meetingUuid ) =>
4263
+ client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
4234
4264
  });
4235
4265
 
4236
4266
  //
@@ -4588,6 +4588,34 @@ var chatdMethods = (client , baseUrl ) => ({
4588
4588
  client.get(`${baseUrl}/users/me/rooms/messages`, options),
4589
4589
  });
4590
4590
 
4591
+ //
4592
+
4593
+
4594
+
4595
+
4596
+
4597
+ class MeetingStatus {
4598
+
4599
+
4600
+
4601
+
4602
+ constructor({
4603
+ full,
4604
+ } = {}) {
4605
+ this.full = full;
4606
+
4607
+ // Useful to compare instead of instanceof with minified code
4608
+ this.type = 'MeetingStatus';
4609
+ }
4610
+
4611
+ static parse(plain ) {
4612
+ return new MeetingStatus({
4613
+ full: plain.full,
4614
+ });
4615
+ }
4616
+
4617
+ }
4618
+
4591
4619
  /* */
4592
4620
 
4593
4621
 
@@ -4782,6 +4810,8 @@ var calldMethods = (client , baseUrl ) => ({
4782
4810
  client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
4783
4811
  ApiRequester.successResponseParser),
4784
4812
 
4813
+ guestGetMeetingStatus: (meetingUuid ) =>
4814
+ client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
4785
4815
  });
4786
4816
 
4787
4817
  //
@@ -5395,6 +5425,7 @@ class WebRTCClient extends Emitter {
5395
5425
 
5396
5426
 
5397
5427
 
5428
+
5398
5429
 
5399
5430
  // sugar
5400
5431
 
@@ -5457,6 +5488,7 @@ class WebRTCClient extends Emitter {
5457
5488
  this.conferences = {};
5458
5489
  this.networkMonitoringInterval = {};
5459
5490
  this.sessionNetworkStats = {};
5491
+ this.forceClosed = false;
5460
5492
 
5461
5493
  this._boundOnHeartbeat = this._onHeartbeat.bind(this);
5462
5494
  this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
@@ -5578,6 +5610,8 @@ class WebRTCClient extends Emitter {
5578
5610
  skipRegister: this.skipRegister,
5579
5611
  };
5580
5612
 
5613
+ this.forceClosed = false;
5614
+
5581
5615
  if (this.skipRegister) {
5582
5616
  logger.info('sdk webrtc skip register...', logInfo);
5583
5617
  return Promise.resolve();
@@ -5602,7 +5636,15 @@ class WebRTCClient extends Emitter {
5602
5636
  const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
5603
5637
 
5604
5638
  const onRegisterFailed = () => {
5605
- logger.info('sdk webrtc registering failed', { tries, registerer: !!this.registerer });
5639
+ logger.info('sdk webrtc registering failed', {
5640
+ tries,
5641
+ registerer: !!this.registerer,
5642
+ forceClosed: this.forceClosed,
5643
+ });
5644
+ if (this.forceClosed) {
5645
+ return;
5646
+ }
5647
+
5606
5648
  this.connectionPromise = null;
5607
5649
  if (this.registerer && this.registerer.waiting) {
5608
5650
  this.registerer.waitingToggle(false);
@@ -5880,8 +5922,9 @@ class WebRTCClient extends Emitter {
5880
5922
  }
5881
5923
  }
5882
5924
 
5883
- async close() {
5884
- logger.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
5925
+ async close(force = false) {
5926
+ logger.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
5927
+ this.forceClosed = force;
5885
5928
  this._cleanupMedia();
5886
5929
  this.connectionPromise = null;
5887
5930
 
@@ -5900,7 +5943,7 @@ class WebRTCClient extends Emitter {
5900
5943
  this.userAgent.delegate = null;
5901
5944
  this.userAgent.stateChange.removeAllListeners();
5902
5945
 
5903
- await this._disconnectTransport();
5946
+ await this._disconnectTransport(force);
5904
5947
 
5905
5948
  this._cleanupRegister();
5906
5949
 
@@ -7336,7 +7379,15 @@ class WebRTCClient extends Emitter {
7336
7379
  return userAgent.UserAgent.makeURI(`sip:${target}@${this.config.host}`);
7337
7380
  }
7338
7381
 
7339
- async _disconnectTransport() {
7382
+ async _disconnectTransport(force = false) {
7383
+ if (force) {
7384
+ // Bypass sip.js state machine that prevent to close WS with the state `Connecting`
7385
+ this.userAgent.transport.disconnectResolve = () => {};
7386
+ // eslint-disable-next-line
7387
+ this.userAgent.transport._ws.close(1000);
7388
+ return;
7389
+ }
7390
+
7340
7391
  // Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
7341
7392
  if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
7342
7393
  try {