@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
@@ -4022,6 +4022,34 @@ var chatdMethods = (client , baseUrl ) => ({
4022
4022
  client.get(`${baseUrl}/users/me/rooms/messages`, options),
4023
4023
  });
4024
4024
 
4025
+ //
4026
+
4027
+
4028
+
4029
+
4030
+
4031
+ class MeetingStatus {
4032
+
4033
+
4034
+
4035
+
4036
+ constructor({
4037
+ full,
4038
+ } = {}) {
4039
+ this.full = full;
4040
+
4041
+ // Useful to compare instead of instanceof with minified code
4042
+ this.type = 'MeetingStatus';
4043
+ }
4044
+
4045
+ static parse(plain ) {
4046
+ return new MeetingStatus({
4047
+ full: plain.full,
4048
+ });
4049
+ }
4050
+
4051
+ }
4052
+
4025
4053
  /* */
4026
4054
 
4027
4055
 
@@ -4216,6 +4244,8 @@ var calldMethods = (client , baseUrl ) => ({
4216
4244
  client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
4217
4245
  ApiRequester.successResponseParser),
4218
4246
 
4247
+ guestGetMeetingStatus: (meetingUuid ) =>
4248
+ client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
4219
4249
  });
4220
4250
 
4221
4251
  //
@@ -4024,6 +4024,34 @@ var chatdMethods = (client , baseUrl ) => ({
4024
4024
  client.get(`${baseUrl}/users/me/rooms/messages`, options),
4025
4025
  });
4026
4026
 
4027
+ //
4028
+
4029
+
4030
+
4031
+
4032
+
4033
+ class MeetingStatus {
4034
+
4035
+
4036
+
4037
+
4038
+ constructor({
4039
+ full,
4040
+ } = {}) {
4041
+ this.full = full;
4042
+
4043
+ // Useful to compare instead of instanceof with minified code
4044
+ this.type = 'MeetingStatus';
4045
+ }
4046
+
4047
+ static parse(plain ) {
4048
+ return new MeetingStatus({
4049
+ full: plain.full,
4050
+ });
4051
+ }
4052
+
4053
+ }
4054
+
4027
4055
  /* */
4028
4056
 
4029
4057
 
@@ -4218,6 +4246,8 @@ var calldMethods = (client , baseUrl ) => ({
4218
4246
  client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
4219
4247
  ApiRequester.successResponseParser),
4220
4248
 
4249
+ guestGetMeetingStatus: (meetingUuid ) =>
4250
+ client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
4221
4251
  });
4222
4252
 
4223
4253
  //
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ //
4
+
5
+
6
+
7
+
8
+
9
+ class MeetingStatus {
10
+
11
+
12
+
13
+
14
+ constructor({
15
+ full,
16
+ } = {}) {
17
+ this.full = full;
18
+
19
+ // Useful to compare instead of instanceof with minified code
20
+ this.type = 'MeetingStatus';
21
+ }
22
+
23
+ static parse(plain ) {
24
+ return new MeetingStatus({
25
+ full: plain.full,
26
+ });
27
+ }
28
+
29
+ }
30
+
31
+ module.exports = MeetingStatus;
@@ -4416,6 +4416,34 @@ class IndirectTransfer {
4416
4416
  }
4417
4417
  }
4418
4418
 
4419
+ //
4420
+
4421
+
4422
+
4423
+
4424
+
4425
+ class MeetingStatus {
4426
+
4427
+
4428
+
4429
+
4430
+ constructor({
4431
+ full,
4432
+ } = {}) {
4433
+ this.full = full;
4434
+
4435
+ // Useful to compare instead of instanceof with minified code
4436
+ this.type = 'MeetingStatus';
4437
+ }
4438
+
4439
+ static parse(plain ) {
4440
+ return new MeetingStatus({
4441
+ full: plain.full,
4442
+ });
4443
+ }
4444
+
4445
+ }
4446
+
4419
4447
  /* */
4420
4448
 
4421
4449
 
@@ -4610,6 +4638,8 @@ var calldMethods = (client , baseUrl ) => ({
4610
4638
  client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
4611
4639
  ApiRequester.successResponseParser),
4612
4640
 
4641
+ guestGetMeetingStatus: (meetingUuid ) =>
4642
+ client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
4613
4643
  });
4614
4644
 
4615
4645
  //
@@ -2183,7 +2183,7 @@ class WebRTCPhone extends Emitter {
2183
2183
  return this.client && this.client.isConference(callSession.sipCallId);
2184
2184
  }
2185
2185
 
2186
- async close() {
2186
+ async close(force = false) {
2187
2187
  logger.info('WebRTC close');
2188
2188
 
2189
2189
  try {
@@ -2195,7 +2195,7 @@ class WebRTCPhone extends Emitter {
2195
2195
  logger.error('WebRTC close, unregister error', e);
2196
2196
  }
2197
2197
 
2198
- this.client.close();
2198
+ this.client.close(force);
2199
2199
  this.unbind();
2200
2200
 
2201
2201
  this.incomingSessions = [];
package/lib/index.js CHANGED
@@ -4937,6 +4937,34 @@ var chatdMethods = (client , baseUrl ) => ({
4937
4937
  client.get(`${baseUrl}/users/me/rooms/messages`, options),
4938
4938
  });
4939
4939
 
4940
+ //
4941
+
4942
+
4943
+
4944
+
4945
+
4946
+ class MeetingStatus {
4947
+
4948
+
4949
+
4950
+
4951
+ constructor({
4952
+ full,
4953
+ } = {}) {
4954
+ this.full = full;
4955
+
4956
+ // Useful to compare instead of instanceof with minified code
4957
+ this.type = 'MeetingStatus';
4958
+ }
4959
+
4960
+ static parse(plain ) {
4961
+ return new MeetingStatus({
4962
+ full: plain.full,
4963
+ });
4964
+ }
4965
+
4966
+ }
4967
+
4940
4968
  /* */
4941
4969
 
4942
4970
 
@@ -5131,6 +5159,8 @@ var calldMethods = (client , baseUrl ) => ({
5131
5159
  client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
5132
5160
  ApiRequester.successResponseParser),
5133
5161
 
5162
+ guestGetMeetingStatus: (meetingUuid ) =>
5163
+ client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
5134
5164
  });
5135
5165
 
5136
5166
  //
@@ -6252,6 +6282,7 @@ class WebRTCClient extends Emitter {
6252
6282
 
6253
6283
 
6254
6284
 
6285
+
6255
6286
 
6256
6287
  // sugar
6257
6288
 
@@ -6314,6 +6345,7 @@ class WebRTCClient extends Emitter {
6314
6345
  this.conferences = {};
6315
6346
  this.networkMonitoringInterval = {};
6316
6347
  this.sessionNetworkStats = {};
6348
+ this.forceClosed = false;
6317
6349
 
6318
6350
  this._boundOnHeartbeat = this._onHeartbeat.bind(this);
6319
6351
  this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
@@ -6435,6 +6467,8 @@ class WebRTCClient extends Emitter {
6435
6467
  skipRegister: this.skipRegister,
6436
6468
  };
6437
6469
 
6470
+ this.forceClosed = false;
6471
+
6438
6472
  if (this.skipRegister) {
6439
6473
  logger$9.info('sdk webrtc skip register...', logInfo);
6440
6474
  return Promise.resolve();
@@ -6459,7 +6493,15 @@ class WebRTCClient extends Emitter {
6459
6493
  const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
6460
6494
 
6461
6495
  const onRegisterFailed = () => {
6462
- logger$9.info('sdk webrtc registering failed', { tries, registerer: !!this.registerer });
6496
+ logger$9.info('sdk webrtc registering failed', {
6497
+ tries,
6498
+ registerer: !!this.registerer,
6499
+ forceClosed: this.forceClosed,
6500
+ });
6501
+ if (this.forceClosed) {
6502
+ return;
6503
+ }
6504
+
6463
6505
  this.connectionPromise = null;
6464
6506
  if (this.registerer && this.registerer.waiting) {
6465
6507
  this.registerer.waitingToggle(false);
@@ -6737,8 +6779,9 @@ class WebRTCClient extends Emitter {
6737
6779
  }
6738
6780
  }
6739
6781
 
6740
- async close() {
6741
- logger$9.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
6782
+ async close(force = false) {
6783
+ logger$9.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
6784
+ this.forceClosed = force;
6742
6785
  this._cleanupMedia();
6743
6786
  this.connectionPromise = null;
6744
6787
 
@@ -6757,7 +6800,7 @@ class WebRTCClient extends Emitter {
6757
6800
  this.userAgent.delegate = null;
6758
6801
  this.userAgent.stateChange.removeAllListeners();
6759
6802
 
6760
- await this._disconnectTransport();
6803
+ await this._disconnectTransport(force);
6761
6804
 
6762
6805
  this._cleanupRegister();
6763
6806
 
@@ -8193,7 +8236,15 @@ class WebRTCClient extends Emitter {
8193
8236
  return userAgent.UserAgent.makeURI(`sip:${target}@${this.config.host}`);
8194
8237
  }
8195
8238
 
8196
- async _disconnectTransport() {
8239
+ async _disconnectTransport(force = false) {
8240
+ if (force) {
8241
+ // Bypass sip.js state machine that prevent to close WS with the state `Connecting`
8242
+ this.userAgent.transport.disconnectResolve = () => {};
8243
+ // eslint-disable-next-line
8244
+ this.userAgent.transport._ws.close(1000);
8245
+ return;
8246
+ }
8247
+
8197
8248
  // Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
8198
8249
  if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
8199
8250
  try {
@@ -10501,7 +10552,7 @@ class WebRTCPhone extends Emitter {
10501
10552
  return this.client && this.client.isConference(callSession.sipCallId);
10502
10553
  }
10503
10554
 
10504
- async close() {
10555
+ async close(force = false) {
10505
10556
  logger$7.info('WebRTC close');
10506
10557
 
10507
10558
  try {
@@ -10513,7 +10564,7 @@ class WebRTCPhone extends Emitter {
10513
10564
  logger$7.error('WebRTC close, unregister error', e);
10514
10565
  }
10515
10566
 
10516
- this.client.close();
10567
+ this.client.close(force);
10517
10568
  this.unbind();
10518
10569
 
10519
10570
  this.incomingSessions = [];
@@ -4022,6 +4022,34 @@ class IndirectTransfer {
4022
4022
  }
4023
4023
  }
4024
4024
 
4025
+ //
4026
+
4027
+
4028
+
4029
+
4030
+
4031
+ class MeetingStatus {
4032
+
4033
+
4034
+
4035
+
4036
+ constructor({
4037
+ full,
4038
+ } = {}) {
4039
+ this.full = full;
4040
+
4041
+ // Useful to compare instead of instanceof with minified code
4042
+ this.type = 'MeetingStatus';
4043
+ }
4044
+
4045
+ static parse(plain ) {
4046
+ return new MeetingStatus({
4047
+ full: plain.full,
4048
+ });
4049
+ }
4050
+
4051
+ }
4052
+
4025
4053
  /* */
4026
4054
 
4027
4055
 
@@ -4216,6 +4244,8 @@ var calldMethods = (client , baseUrl ) => ({
4216
4244
  client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
4217
4245
  ApiRequester.successResponseParser),
4218
4246
 
4247
+ guestGetMeetingStatus: (meetingUuid ) =>
4248
+ client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
4219
4249
  });
4220
4250
 
4221
4251
  //
@@ -4024,6 +4024,34 @@ var chatdMethods = (client , baseUrl ) => ({
4024
4024
  client.get(`${baseUrl}/users/me/rooms/messages`, options),
4025
4025
  });
4026
4026
 
4027
+ //
4028
+
4029
+
4030
+
4031
+
4032
+
4033
+ class MeetingStatus {
4034
+
4035
+
4036
+
4037
+
4038
+ constructor({
4039
+ full,
4040
+ } = {}) {
4041
+ this.full = full;
4042
+
4043
+ // Useful to compare instead of instanceof with minified code
4044
+ this.type = 'MeetingStatus';
4045
+ }
4046
+
4047
+ static parse(plain ) {
4048
+ return new MeetingStatus({
4049
+ full: plain.full,
4050
+ });
4051
+ }
4052
+
4053
+ }
4054
+
4027
4055
  /* */
4028
4056
 
4029
4057
 
@@ -4218,6 +4246,8 @@ var calldMethods = (client , baseUrl ) => ({
4218
4246
  client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
4219
4247
  ApiRequester.successResponseParser),
4220
4248
 
4249
+ guestGetMeetingStatus: (meetingUuid ) =>
4250
+ client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
4221
4251
  });
4222
4252
 
4223
4253
  //
@@ -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
  //
@@ -6427,6 +6457,7 @@ class WebRTCClient extends Emitter {
6427
6457
 
6428
6458
 
6429
6459
 
6460
+
6430
6461
 
6431
6462
  // sugar
6432
6463
 
@@ -6489,6 +6520,7 @@ class WebRTCClient extends Emitter {
6489
6520
  this.conferences = {};
6490
6521
  this.networkMonitoringInterval = {};
6491
6522
  this.sessionNetworkStats = {};
6523
+ this.forceClosed = false;
6492
6524
 
6493
6525
  this._boundOnHeartbeat = this._onHeartbeat.bind(this);
6494
6526
  this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
@@ -6610,6 +6642,8 @@ class WebRTCClient extends Emitter {
6610
6642
  skipRegister: this.skipRegister,
6611
6643
  };
6612
6644
 
6645
+ this.forceClosed = false;
6646
+
6613
6647
  if (this.skipRegister) {
6614
6648
  logger$9.info('sdk webrtc skip register...', logInfo);
6615
6649
  return Promise.resolve();
@@ -6634,7 +6668,15 @@ class WebRTCClient extends Emitter {
6634
6668
  const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
6635
6669
 
6636
6670
  const onRegisterFailed = () => {
6637
- logger$9.info('sdk webrtc registering failed', { tries, registerer: !!this.registerer });
6671
+ logger$9.info('sdk webrtc registering failed', {
6672
+ tries,
6673
+ registerer: !!this.registerer,
6674
+ forceClosed: this.forceClosed,
6675
+ });
6676
+ if (this.forceClosed) {
6677
+ return;
6678
+ }
6679
+
6638
6680
  this.connectionPromise = null;
6639
6681
  if (this.registerer && this.registerer.waiting) {
6640
6682
  this.registerer.waitingToggle(false);
@@ -6912,8 +6954,9 @@ class WebRTCClient extends Emitter {
6912
6954
  }
6913
6955
  }
6914
6956
 
6915
- async close() {
6916
- logger$9.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
6957
+ async close(force = false) {
6958
+ logger$9.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
6959
+ this.forceClosed = force;
6917
6960
  this._cleanupMedia();
6918
6961
  this.connectionPromise = null;
6919
6962
 
@@ -6932,7 +6975,7 @@ class WebRTCClient extends Emitter {
6932
6975
  this.userAgent.delegate = null;
6933
6976
  this.userAgent.stateChange.removeAllListeners();
6934
6977
 
6935
- await this._disconnectTransport();
6978
+ await this._disconnectTransport(force);
6936
6979
 
6937
6980
  this._cleanupRegister();
6938
6981
 
@@ -8368,7 +8411,15 @@ class WebRTCClient extends Emitter {
8368
8411
  return userAgent.UserAgent.makeURI(`sip:${target}@${this.config.host}`);
8369
8412
  }
8370
8413
 
8371
- async _disconnectTransport() {
8414
+ async _disconnectTransport(force = false) {
8415
+ if (force) {
8416
+ // Bypass sip.js state machine that prevent to close WS with the state `Connecting`
8417
+ this.userAgent.transport.disconnectResolve = () => {};
8418
+ // eslint-disable-next-line
8419
+ this.userAgent.transport._ws.close(1000);
8420
+ return;
8421
+ }
8422
+
8372
8423
  // Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
8373
8424
  if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
8374
8425
  try {
@@ -9775,7 +9826,7 @@ class WebRTCPhone extends Emitter {
9775
9826
  return this.client && this.client.isConference(callSession.sipCallId);
9776
9827
  }
9777
9828
 
9778
- async close() {
9829
+ async close(force = false) {
9779
9830
  logger$8.info('WebRTC close');
9780
9831
 
9781
9832
  try {
@@ -9787,7 +9838,7 @@ class WebRTCPhone extends Emitter {
9787
9838
  logger$8.error('WebRTC close, unregister error', e);
9788
9839
  }
9789
9840
 
9790
- this.client.close();
9841
+ this.client.close(force);
9791
9842
  this.unbind();
9792
9843
 
9793
9844
  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
  //
@@ -6425,6 +6455,7 @@ class WebRTCClient extends Emitter {
6425
6455
 
6426
6456
 
6427
6457
 
6458
+
6428
6459
 
6429
6460
  // sugar
6430
6461
 
@@ -6487,6 +6518,7 @@ class WebRTCClient extends Emitter {
6487
6518
  this.conferences = {};
6488
6519
  this.networkMonitoringInterval = {};
6489
6520
  this.sessionNetworkStats = {};
6521
+ this.forceClosed = false;
6490
6522
 
6491
6523
  this._boundOnHeartbeat = this._onHeartbeat.bind(this);
6492
6524
  this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
@@ -6608,6 +6640,8 @@ class WebRTCClient extends Emitter {
6608
6640
  skipRegister: this.skipRegister,
6609
6641
  };
6610
6642
 
6643
+ this.forceClosed = false;
6644
+
6611
6645
  if (this.skipRegister) {
6612
6646
  logger$9.info('sdk webrtc skip register...', logInfo);
6613
6647
  return Promise.resolve();
@@ -6632,7 +6666,15 @@ class WebRTCClient extends Emitter {
6632
6666
  const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
6633
6667
 
6634
6668
  const onRegisterFailed = () => {
6635
- logger$9.info('sdk webrtc registering failed', { tries, registerer: !!this.registerer });
6669
+ logger$9.info('sdk webrtc registering failed', {
6670
+ tries,
6671
+ registerer: !!this.registerer,
6672
+ forceClosed: this.forceClosed,
6673
+ });
6674
+ if (this.forceClosed) {
6675
+ return;
6676
+ }
6677
+
6636
6678
  this.connectionPromise = null;
6637
6679
  if (this.registerer && this.registerer.waiting) {
6638
6680
  this.registerer.waitingToggle(false);
@@ -6910,8 +6952,9 @@ class WebRTCClient extends Emitter {
6910
6952
  }
6911
6953
  }
6912
6954
 
6913
- async close() {
6914
- logger$9.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
6955
+ async close(force = false) {
6956
+ logger$9.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
6957
+ this.forceClosed = force;
6915
6958
  this._cleanupMedia();
6916
6959
  this.connectionPromise = null;
6917
6960
 
@@ -6930,7 +6973,7 @@ class WebRTCClient extends Emitter {
6930
6973
  this.userAgent.delegate = null;
6931
6974
  this.userAgent.stateChange.removeAllListeners();
6932
6975
 
6933
- await this._disconnectTransport();
6976
+ await this._disconnectTransport(force);
6934
6977
 
6935
6978
  this._cleanupRegister();
6936
6979
 
@@ -8366,7 +8409,15 @@ class WebRTCClient extends Emitter {
8366
8409
  return userAgent.UserAgent.makeURI(`sip:${target}@${this.config.host}`);
8367
8410
  }
8368
8411
 
8369
- async _disconnectTransport() {
8412
+ async _disconnectTransport(force = false) {
8413
+ if (force) {
8414
+ // Bypass sip.js state machine that prevent to close WS with the state `Connecting`
8415
+ this.userAgent.transport.disconnectResolve = () => {};
8416
+ // eslint-disable-next-line
8417
+ this.userAgent.transport._ws.close(1000);
8418
+ return;
8419
+ }
8420
+
8370
8421
  // Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
8371
8422
  if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
8372
8423
  try {
@@ -9773,7 +9824,7 @@ class WebRTCPhone extends Emitter {
9773
9824
  return this.client && this.client.isConference(callSession.sipCallId);
9774
9825
  }
9775
9826
 
9776
- async close() {
9827
+ async close(force = false) {
9777
9828
  logger$8.info('WebRTC close');
9778
9829
 
9779
9830
  try {
@@ -9785,7 +9836,7 @@ class WebRTCPhone extends Emitter {
9785
9836
  logger$8.error('WebRTC close, unregister error', e);
9786
9837
  }
9787
9838
 
9788
- this.client.close();
9839
+ this.client.close(force);
9789
9840
  this.unbind();
9790
9841
 
9791
9842
  this.incomingSessions = [];