@wazo/sdk 0.38.7 → 0.38.10

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 (121) hide show
  1. package/dist/wazo-sdk.js +2 -2
  2. package/esm/__tests__/api-client.test.js +163 -2
  3. package/esm/__tests__/web-rtc-client.test.js +248 -27
  4. package/esm/api/auth.js +12 -0
  5. package/esm/api/calld.js +8 -0
  6. package/esm/api/confd.js +134 -2
  7. package/esm/api/ctid-ng.js +1 -0
  8. package/esm/api-client.js +163 -2
  9. package/esm/checker/Checker.js +204 -24
  10. package/esm/checker/checks/aor.js +163 -2
  11. package/esm/checker/checks/api.js +163 -2
  12. package/esm/checker/checks/index.js +204 -24
  13. package/esm/checker/checks/wazo-websocket.js +2 -0
  14. package/esm/checker/checks/webrtc-transport.js +202 -24
  15. package/esm/checker/checks/webrtc.js +202 -24
  16. package/esm/domain/AdHocAPIConference.js +170 -4
  17. package/esm/domain/Features.js +170 -4
  18. package/esm/domain/Meeting.js +18 -0
  19. package/esm/domain/MeetingAuthorization.js +70 -0
  20. package/esm/domain/Phone/CTIPhone.js +170 -4
  21. package/esm/domain/Phone/WebRTCPhone.js +2 -3
  22. package/esm/domain/__tests__/Meeting.test.js +87 -1
  23. package/esm/domain/__tests__/MeetingAuthorization.test.js +109 -0
  24. package/esm/index.js +300 -36
  25. package/esm/service/CallApi.js +170 -4
  26. package/esm/service/getApiClient.js +176 -5
  27. package/esm/simple/Auth.js +301 -37
  28. package/esm/simple/Configuration.js +300 -36
  29. package/esm/simple/Directory.js +170 -4
  30. package/esm/simple/Phone.js +300 -36
  31. package/esm/simple/Softphone.js +5 -0
  32. package/esm/simple/Websocket.js +3 -0
  33. package/esm/simple/index.js +300 -36
  34. package/esm/simple/room/LocalParticipant.js +300 -36
  35. package/esm/simple/room/Participant.js +300 -36
  36. package/esm/simple/room/RemoteParticipant.js +300 -36
  37. package/esm/simple/room/Room.js +300 -36
  38. package/esm/simple/room/SipRoom.js +300 -36
  39. package/esm/simple/room/Stream.js +300 -36
  40. package/esm/simple/room/__tests__/Participant.test.js +14812 -0
  41. package/esm/simple/room/__tests__/RemoteParticipant.test.js +300 -36
  42. package/esm/simple/utils.js +300 -36
  43. package/esm/utils/__tests__/object.test.js +57 -0
  44. package/esm/utils/__tests__/string.test.js +30 -0
  45. package/esm/utils/object.js +24 -0
  46. package/esm/utils/string.js +10 -0
  47. package/esm/web-rtc-client.js +202 -24
  48. package/esm/websocket-client.js +3 -1
  49. package/lib/__tests__/api-client.test.js +163 -2
  50. package/lib/__tests__/web-rtc-client.test.js +248 -27
  51. package/lib/api/auth.js +12 -0
  52. package/lib/api/calld.js +8 -0
  53. package/lib/api/confd.js +134 -2
  54. package/lib/api/ctid-ng.js +1 -0
  55. package/lib/api-client.js +163 -2
  56. package/lib/checker/Checker.js +204 -24
  57. package/lib/checker/checks/aor.js +163 -2
  58. package/lib/checker/checks/api.js +163 -2
  59. package/lib/checker/checks/index.js +204 -24
  60. package/lib/checker/checks/wazo-websocket.js +2 -0
  61. package/lib/checker/checks/webrtc-transport.js +202 -24
  62. package/lib/checker/checks/webrtc.js +202 -24
  63. package/lib/domain/AdHocAPIConference.js +170 -4
  64. package/lib/domain/Features.js +170 -4
  65. package/lib/domain/Meeting.js +18 -0
  66. package/lib/domain/MeetingAuthorization.js +79 -0
  67. package/lib/domain/Phone/CTIPhone.js +170 -4
  68. package/lib/domain/Phone/WebRTCPhone.js +2 -3
  69. package/lib/domain/__tests__/Meeting.test.js +87 -1
  70. package/lib/domain/__tests__/MeetingAuthorization.test.js +111 -0
  71. package/lib/index.js +300 -36
  72. package/lib/service/CallApi.js +170 -4
  73. package/lib/service/getApiClient.js +176 -4
  74. package/lib/simple/Auth.js +301 -36
  75. package/lib/simple/Configuration.js +300 -36
  76. package/lib/simple/Directory.js +170 -4
  77. package/lib/simple/Phone.js +300 -36
  78. package/lib/simple/Softphone.js +5 -0
  79. package/lib/simple/Websocket.js +3 -0
  80. package/lib/simple/index.js +300 -36
  81. package/lib/simple/room/LocalParticipant.js +300 -36
  82. package/lib/simple/room/Participant.js +300 -36
  83. package/lib/simple/room/RemoteParticipant.js +300 -36
  84. package/lib/simple/room/Room.js +300 -36
  85. package/lib/simple/room/SipRoom.js +300 -36
  86. package/lib/simple/room/Stream.js +300 -36
  87. package/lib/simple/room/__tests__/Participant.test.js +14822 -0
  88. package/lib/simple/room/__tests__/RemoteParticipant.test.js +300 -36
  89. package/lib/simple/utils.js +300 -36
  90. package/lib/utils/__tests__/object.test.js +59 -0
  91. package/lib/utils/__tests__/string.test.js +32 -0
  92. package/lib/utils/object.js +28 -0
  93. package/lib/utils/string.js +14 -0
  94. package/lib/web-rtc-client.js +202 -24
  95. package/lib/websocket-client.js +3 -0
  96. package/package.json +1 -1
  97. package/src/__tests__/web-rtc-client.test.js +46 -3
  98. package/src/api/auth.js +12 -0
  99. package/src/api/calld.js +8 -0
  100. package/src/api/confd.js +43 -2
  101. package/src/api-client.js +8 -0
  102. package/src/domain/Meeting.js +20 -0
  103. package/src/domain/MeetingAuthorization.js +67 -0
  104. package/src/domain/Phone/WebRTCPhone.js +1 -3
  105. package/src/domain/__tests__/Meeting.test.js +70 -1
  106. package/src/domain/__tests__/MeetingAuthorization.test.js +58 -0
  107. package/src/service/getApiClient.js +13 -2
  108. package/src/simple/Auth.js +35 -4
  109. package/src/simple/Softphone.js +5 -0
  110. package/src/simple/index.js +2 -1
  111. package/src/simple/room/Participant.js +40 -0
  112. package/src/simple/room/Room.js +2 -2
  113. package/src/simple/room/SipRoom.js +1 -1
  114. package/src/simple/room/__tests__/Participant.test.js +81 -0
  115. package/src/types/WebSocketMessage.js +7 -1
  116. package/src/utils/__tests__/object.test.js +35 -0
  117. package/src/utils/__tests__/string.test.js +23 -0
  118. package/src/utils/object.js +15 -0
  119. package/src/utils/string.js +8 -0
  120. package/src/web-rtc-client.js +39 -22
  121. package/src/websocket-client.js +2 -0
@@ -0,0 +1,57 @@
1
+ //
2
+
3
+ const camelToUnderscore = (key ) => {
4
+ if (typeof key !== 'string') {
5
+ throw new Error('Input is not a string');
6
+ }
7
+ return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
8
+ };
9
+
10
+ //
11
+
12
+ const convertKeysFromCamelToUnderscore = (args ) => {
13
+ if (!args || typeof args !== 'object' || Array.isArray(args)) {
14
+ throw new Error('Input is not an object');
15
+ }
16
+
17
+ return Object.keys(args).reduce((acc, key) => {
18
+ acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
19
+ ? convertKeysFromCamelToUnderscore(args[key]) : args[key];
20
+ return acc;
21
+ }, {});
22
+ };
23
+
24
+ //
25
+
26
+ describe('object utils', () => {
27
+ describe('convertKeysFromCamelToUnderscore', () => {
28
+ it('should throw an error when input is not an object', () => {
29
+ const msg = 'Input is not an object';
30
+ expect(() => convertKeysFromCamelToUnderscore(true)).toThrow(msg);
31
+ expect(() => convertKeysFromCamelToUnderscore(null)).toThrow(msg);
32
+ expect(() => convertKeysFromCamelToUnderscore(undefined)).toThrow(msg);
33
+ expect(() => convertKeysFromCamelToUnderscore([])).toThrow(msg);
34
+ expect(() => convertKeysFromCamelToUnderscore('some-string')).toThrow(msg);
35
+ });
36
+
37
+ it('should convert camel-cased keys to underscore', () => {
38
+ let value = Math.random();
39
+ expect(convertKeysFromCamelToUnderscore({ LoremIpsum: value })).toEqual({ lorem_ipsum: value });
40
+ value = Math.random();
41
+ expect(convertKeysFromCamelToUnderscore({ loremIpsum: value })).toEqual({ lorem_ipsum: value });
42
+ value = Math.random();
43
+ expect(convertKeysFromCamelToUnderscore({ 'lorem-ipsum': value })).toEqual({ 'lorem-ipsum': value });
44
+ value = Math.random();
45
+ expect(convertKeysFromCamelToUnderscore({ L123: value })).toEqual({ l123: value });
46
+ });
47
+
48
+ it('should handle multi-leveled object', () => {
49
+ const value = Math.random();
50
+ expect(convertKeysFromCamelToUnderscore({ LoremIpsum: { DoloreSit: { Amet: value }, regular: 'reg' } }))
51
+ .toEqual({ lorem_ipsum: { dolore_sit: { amet: value }, regular: 'reg' } });
52
+
53
+ expect(convertKeysFromCamelToUnderscore({ LoremIpsum: { DoloreSit: { Amet: [value] }, regular: ['something'] } }))
54
+ .toEqual({ lorem_ipsum: { dolore_sit: { amet: [value] }, regular: ['something'] } });
55
+ });
56
+ });
57
+ });
@@ -0,0 +1,30 @@
1
+ //
2
+
3
+ const camelToUnderscore = (key ) => {
4
+ if (typeof key !== 'string') {
5
+ throw new Error('Input is not a string');
6
+ }
7
+ return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
8
+ };
9
+
10
+ describe('string utils', () => {
11
+ describe('camelToUnderscore', () => {
12
+ it('', () => {
13
+ expect(() => camelToUnderscore(null)).toThrow('Input is not a string');
14
+ expect(() => camelToUnderscore(undefined)).toThrow('Input is not a string');
15
+ expect(() => camelToUnderscore({})).toThrow('Input is not a string');
16
+ expect(() => camelToUnderscore([])).toThrow('Input is not a string');
17
+ });
18
+
19
+ it('should convert camel-cased string to underscore', () => {
20
+ expect(camelToUnderscore('loremIpsum')).toEqual('lorem_ipsum');
21
+ expect(camelToUnderscore('lorem-ipsum')).toEqual('lorem-ipsum');
22
+ expect(camelToUnderscore('')).toEqual('');
23
+ });
24
+
25
+ it('should not prefix string with an underscore', () => {
26
+ expect(camelToUnderscore('LoremIpsum')).toEqual('lorem_ipsum');
27
+ expect(camelToUnderscore('L123')).toEqual('l123');
28
+ });
29
+ });
30
+ });
@@ -0,0 +1,24 @@
1
+ //
2
+
3
+ const camelToUnderscore = (key ) => {
4
+ if (typeof key !== 'string') {
5
+ throw new Error('Input is not a string');
6
+ }
7
+ return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
8
+ };
9
+
10
+ //
11
+
12
+ const convertKeysFromCamelToUnderscore = (args ) => {
13
+ if (!args || typeof args !== 'object' || Array.isArray(args)) {
14
+ throw new Error('Input is not an object');
15
+ }
16
+
17
+ return Object.keys(args).reduce((acc, key) => {
18
+ acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
19
+ ? convertKeysFromCamelToUnderscore(args[key]) : args[key];
20
+ return acc;
21
+ }, {});
22
+ };
23
+
24
+ export { convertKeysFromCamelToUnderscore };
@@ -0,0 +1,10 @@
1
+ //
2
+
3
+ const camelToUnderscore = (key ) => {
4
+ if (typeof key !== 'string') {
5
+ throw new Error('Input is not a string');
6
+ }
7
+ return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
8
+ };
9
+
10
+ export { camelToUnderscore };
@@ -2786,6 +2786,7 @@ var authMethods = (client , baseUrl ) => ({
2786
2786
 
2787
2787
 
2788
2788
 
2789
+
2789
2790
  ) {
2790
2791
  const body = {
2791
2792
  backend: params.backend || DEFAULT_BACKEND_USER,
@@ -2806,9 +2807,14 @@ var authMethods = (client , baseUrl ) => ({
2806
2807
  }
2807
2808
 
2808
2809
  if (params.tenantId) {
2810
+ console.warn('Use of `tenantId` is deprecated when calling logIn() method, use `domainName` instead.');
2809
2811
  body.tenant_id = params.tenantId;
2810
2812
  }
2811
2813
 
2814
+ if (params.domainName) {
2815
+ body.domain_name = params.domainName;
2816
+ }
2817
+
2812
2818
  return client.post(`${baseUrl}/token`, body, headers).then(response => Session.parse(response));
2813
2819
  },
2814
2820
 
@@ -2821,6 +2827,7 @@ var authMethods = (client , baseUrl ) => ({
2821
2827
  expiration ,
2822
2828
  isMobile = false,
2823
2829
  tenantId ,
2830
+ domainName ,
2824
2831
  ) => {
2825
2832
  const body = {
2826
2833
  backend: backend || DEFAULT_BACKEND_USER,
@@ -2830,9 +2837,14 @@ var authMethods = (client , baseUrl ) => ({
2830
2837
  };
2831
2838
 
2832
2839
  if (tenantId) {
2840
+ console.warn('Use of `tenantId` is deprecated when calling refreshToken() method, use `domainName` instead.');
2833
2841
  body.tenant_id = tenantId;
2834
2842
  }
2835
2843
 
2844
+ if (domainName) {
2845
+ body.domain_name = domainName;
2846
+ }
2847
+
2836
2848
  const headers = {
2837
2849
  'Content-Type': 'application/json',
2838
2850
  ...(isMobile ? { 'Wazo-Session-Type': 'mobile' } : {}),
@@ -3202,6 +3214,70 @@ class ExternalApp {
3202
3214
 
3203
3215
  //
3204
3216
 
3217
+ class MeetingAuthorization {
3218
+
3219
+
3220
+
3221
+
3222
+
3223
+
3224
+ constructor({
3225
+ meetingUuid,
3226
+ uuid,
3227
+ userUuid,
3228
+ userName,
3229
+ } = {}) {
3230
+ this.meetingUuid = meetingUuid;
3231
+ this.uuid = uuid;
3232
+ this.userUuid = userUuid;
3233
+ this.userName = userName;
3234
+ }
3235
+
3236
+ setStatus(status ) {
3237
+ this.status = status;
3238
+ }
3239
+
3240
+ getStatus() {
3241
+ return this.status;
3242
+ }
3243
+
3244
+ static parse(plain ) {
3245
+ const {
3246
+ meeting_uuid: meetingUuid,
3247
+ uuid,
3248
+ guest_uuid: userUuid,
3249
+ guest_name: userName,
3250
+ } = plain;
3251
+
3252
+ return new MeetingAuthorization({
3253
+ meetingUuid,
3254
+ uuid,
3255
+ userUuid,
3256
+ userName,
3257
+ });
3258
+ }
3259
+
3260
+ static parseMany(items ) {
3261
+ if (!items) {
3262
+ return [];
3263
+ }
3264
+ return items.map(MeetingAuthorization.parse);
3265
+ }
3266
+ }
3267
+
3268
+ //
3269
+
3270
+
3271
+
3272
+
3273
+
3274
+
3275
+
3276
+
3277
+
3278
+
3279
+
3280
+
3205
3281
 
3206
3282
 
3207
3283
 
@@ -3212,6 +3288,7 @@ class ExternalApp {
3212
3288
 
3213
3289
 
3214
3290
 
3291
+
3215
3292
 
3216
3293
 
3217
3294
  class Meeting {
@@ -3226,6 +3303,8 @@ class Meeting {
3226
3303
 
3227
3304
 
3228
3305
 
3306
+
3307
+
3229
3308
 
3230
3309
  static parse(plain ) {
3231
3310
  return new Meeting({
@@ -3238,6 +3317,7 @@ class Meeting {
3238
3317
  extension: plain.exten,
3239
3318
  persistent: plain.persistent,
3240
3319
  creationTime: moment(plain.creation_time).toDate(),
3320
+ requireAuthorization: plain.require_authorization,
3241
3321
  });
3242
3322
  }
3243
3323
 
@@ -3262,6 +3342,7 @@ class Meeting {
3262
3342
  extension,
3263
3343
  persistent,
3264
3344
  creationTime,
3345
+ requireAuthorization,
3265
3346
  } = {}) {
3266
3347
  this.guestSipAuthorization = guestSipAuthorization;
3267
3348
  this.uri = uri;
@@ -3272,6 +3353,7 @@ class Meeting {
3272
3353
  this.extension = extension;
3273
3354
  this.persistent = persistent;
3274
3355
  this.creationTime = creationTime;
3356
+ this.requireAuthorization = requireAuthorization;
3275
3357
 
3276
3358
  // Useful to compare instead of instanceof with minified code
3277
3359
  this.type = 'Meeting';
@@ -3282,8 +3364,32 @@ class Meeting {
3282
3364
  const [username, secret] = atob(this.guestSipAuthorization).split(':');
3283
3365
  return { username, secret };
3284
3366
  }
3367
+
3285
3368
  }
3286
3369
 
3370
+ //
3371
+
3372
+ const camelToUnderscore = (key ) => {
3373
+ if (typeof key !== 'string') {
3374
+ throw new Error('Input is not a string');
3375
+ }
3376
+ return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
3377
+ };
3378
+
3379
+ //
3380
+
3381
+ const convertKeysFromCamelToUnderscore = (args ) => {
3382
+ if (!args || typeof args !== 'object' || Array.isArray(args)) {
3383
+ throw new Error('Input is not an object');
3384
+ }
3385
+
3386
+ return Object.keys(args).reduce((acc, key) => {
3387
+ acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
3388
+ ? convertKeysFromCamelToUnderscore(args[key]) : args[key];
3389
+ return acc;
3390
+ }, {});
3391
+ };
3392
+
3287
3393
  /* */
3288
3394
 
3289
3395
  var confdMethods = (client , baseUrl ) => ({
@@ -3352,8 +3458,18 @@ var confdMethods = (client , baseUrl ) => ({
3352
3458
  getMyMeetings: () =>
3353
3459
  client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
3354
3460
 
3355
- createMyMeeting: (name , persistent ) =>
3356
- client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
3461
+ createMyMeeting: (args ) =>
3462
+ client
3463
+ .post(`${baseUrl}/users/me/meetings`, convertKeysFromCamelToUnderscore(args))
3464
+ .then(Meeting.parse),
3465
+
3466
+ updateMyMeeting: (meetingUuid , data ) =>
3467
+ client.put(
3468
+ `${baseUrl}/users/me/meetings/${meetingUuid}`,
3469
+ convertKeysFromCamelToUnderscore(data),
3470
+ null,
3471
+ ApiRequester.successResponseParser,
3472
+ ),
3357
3473
 
3358
3474
  deleteMyMeeting: (meetingUuid ) =>
3359
3475
  client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
@@ -3361,8 +3477,36 @@ var confdMethods = (client , baseUrl ) => ({
3361
3477
  getMeeting: (meetingUuid ) =>
3362
3478
  client.get(`${baseUrl}/meetings/${meetingUuid}`, null).then(Meeting.parse),
3363
3479
 
3480
+ meetingAuthorizations: (meetingUuid ) =>
3481
+ client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations`, null).then(MeetingAuthorization.parseMany),
3482
+
3483
+ meetingAuthorizationReject: (meetingUuid , authorizationUuid ) =>
3484
+ client.put(
3485
+ `${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/reject`,
3486
+ {},
3487
+ null,
3488
+ ApiRequester.successResponseParser,
3489
+ ),
3490
+
3491
+ meetingAuthorizationAccept: (meetingUuid , authorizationUuid ) =>
3492
+ client.put(
3493
+ `${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/accept`,
3494
+ {},
3495
+ null,
3496
+ ApiRequester.successResponseParser,
3497
+ ),
3498
+
3364
3499
  guestGetMeeting: (meetingUuid ) =>
3365
3500
  client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}`, null).then(Meeting.parse),
3501
+
3502
+ guestAuthorizationRequest: (userUuid , meetingUuid , username ) =>
3503
+ client
3504
+ .post(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations`, { guest_name: username })
3505
+ .then(MeetingAuthorization.parse),
3506
+
3507
+ guestAuthorizationCheck: (userUuid , meetingUuid , authorizationUuid ) =>
3508
+ client.get(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations/${authorizationUuid}`, null),
3509
+
3366
3510
  });
3367
3511
 
3368
3512
  //
@@ -4127,6 +4271,7 @@ global.wazoClientId = global.wazoClientId || {};
4127
4271
  global.wazoClientToken = global.wazoClientToken || {};
4128
4272
  global.wazoRefreshToken = global.wazoRefreshToken || {};
4129
4273
  global.wazoRefreshTenantId = global.wazoRefreshTenantId || {};
4274
+ global.wazoRefreshDomainName = global.wazoRefreshDomainName || {};
4130
4275
  global.wazoOnRefreshToken = global.wazoOnRefreshToken || {};
4131
4276
  global.wazoOnRefreshTokenError = global.wazoOnRefreshTokenError || {};
4132
4277
  global.wazoRefreshExpiration = global.wazoRefreshExpiration || {};
@@ -4801,6 +4946,14 @@ var calldMethods = (client , baseUrl ) => ({
4801
4946
  getMeetingParticipantsAsUser: async (meetingUuid ) =>
4802
4947
  client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/participants`),
4803
4948
 
4949
+ banMeetingParticipant: (meetingUuid , participantUuid ) =>
4950
+ client.delete(
4951
+ `${baseUrl}/users/me/meetings/${meetingUuid}/participants/${participantUuid}`,
4952
+ null,
4953
+ null,
4954
+ ApiRequester.successResponseParser,
4955
+ ),
4956
+
4804
4957
  listTrunks: () => client.get(`${baseUrl}/trunks`),
4805
4958
 
4806
4959
  mute: (callId ) =>
@@ -5178,6 +5331,7 @@ class ApiClient {
5178
5331
 
5179
5332
 
5180
5333
 
5334
+
5181
5335
 
5182
5336
 
5183
5337
 
@@ -5219,6 +5373,7 @@ class ApiClient {
5219
5373
  refreshToken: this.refreshToken,
5220
5374
  refreshBackend: this.refreshBackend,
5221
5375
  refreshTenantId: this.refreshTenantId,
5376
+ refreshDomainName: this.refreshDomainName,
5222
5377
  refreshExpiration: this.refreshExpiration,
5223
5378
  isMobile: this.isMobile,
5224
5379
  });
@@ -5234,6 +5389,7 @@ class ApiClient {
5234
5389
  this.refreshExpiration,
5235
5390
  this.isMobile,
5236
5391
  this.refreshTenantId,
5392
+ this.refreshDomainName,
5237
5393
  );
5238
5394
 
5239
5395
  logger$1.info('token refreshed', { token: session.token });
@@ -5287,9 +5443,14 @@ class ApiClient {
5287
5443
  }
5288
5444
 
5289
5445
  setRefreshTenantId(tenantId ) {
5446
+ console.warn('Use of `setRefreshTenantId` is deprecated, use `setRefreshDomainName` instead');
5290
5447
  this.refreshTenantId = tenantId;
5291
5448
  }
5292
5449
 
5450
+ setRefreshDomainName(domainName ) {
5451
+ this.refreshDomainName = domainName;
5452
+ }
5453
+
5293
5454
  setIsMobile(isMobile ) {
5294
5455
  this.isMobile = isMobile;
5295
5456
  }
@@ -6444,7 +6605,7 @@ class WebRTCClient extends Emitter {
6444
6605
  });
6445
6606
  }
6446
6607
 
6447
- changeAudioInputDevice(id , session , force ) {
6608
+ async changeAudioInputDevice(id , session , force ) {
6448
6609
  const currentId = this.getAudioDeviceId();
6449
6610
  logger.info('setting audio input device', { id, currentId, session: !!session });
6450
6611
 
@@ -6452,33 +6613,50 @@ class WebRTCClient extends Emitter {
6452
6613
  return null;
6453
6614
  }
6454
6615
 
6616
+ // in order to handle an audio track change for default devices
6617
+ // we need the actual id of the device (not 'default')
6618
+ let deviceId = id;
6619
+ if (id === 'default' && navigator.mediaDevices) {
6620
+ const devices = await navigator.mediaDevices.enumerateDevices();
6621
+ const defaultDevice = devices.find(device => device.deviceId === 'default');
6622
+ if (defaultDevice) {
6623
+ const deviceLabel = defaultDevice.label.replace('Default - ', '');
6624
+ const targetDevice = devices.find(device => device.label === deviceLabel);
6625
+ if (targetDevice) {
6626
+ deviceId = targetDevice.deviceId;
6627
+ if (!force && deviceId === currentId) {
6628
+ return null;
6629
+ }
6630
+ }
6631
+ }
6632
+ }
6633
+
6455
6634
  // let's update the local audio value
6456
6635
  if (this.audio) {
6457
6636
  this.audio = {
6458
6637
  deviceId: {
6459
- exact: id,
6638
+ exact: deviceId,
6460
6639
  },
6461
6640
  };
6462
6641
  }
6463
6642
 
6464
- if (session) {
6643
+ if (session && navigator.mediaDevices) {
6465
6644
  const sdh = session.sessionDescriptionHandler;
6466
6645
  const pc = sdh.peerConnection;
6467
6646
 
6468
- // $FlowFixMe
6469
- return navigator.mediaDevices.getUserMedia({ audio: { deviceId: { exact: id } } }).then(async stream => {
6470
- const audioTrack = stream.getAudioTracks()[0];
6471
- const sender = pc && pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
6647
+ const constraints = { audio: { deviceId: { exact: deviceId } } };
6648
+ const stream = await navigator.mediaDevices.getUserMedia(constraints);
6649
+ const audioTrack = stream.getAudioTracks()[0];
6650
+ const sender = pc && pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
6472
6651
 
6473
- if (sender) {
6474
- if (sender.track) {
6475
- audioTrack.enabled = sender.track.enabled;
6476
- }
6477
- sender.replaceTrack(audioTrack);
6652
+ if (sender) {
6653
+ if (sender.track) {
6654
+ audioTrack.enabled = sender.track.enabled;
6478
6655
  }
6656
+ sender.replaceTrack(audioTrack);
6657
+ }
6479
6658
 
6480
- return stream;
6481
- });
6659
+ return stream;
6482
6660
  }
6483
6661
  }
6484
6662
 
@@ -6498,14 +6676,14 @@ class WebRTCClient extends Emitter {
6498
6676
  return null;
6499
6677
  }
6500
6678
 
6501
- // let's update the local video value
6502
- if (this.video) {
6503
- this.video = {
6504
- deviceId: {
6505
- exact: id,
6506
- },
6507
- };
6508
- }
6679
+ // let's make sure we don't lose other video constraints settings -- width, height, frameRate...
6680
+ const videoObject = typeof this.video === 'object' ? this.video : {};
6681
+ this.video = {
6682
+ ...videoObject,
6683
+ deviceId: {
6684
+ exact: id,
6685
+ },
6686
+ };
6509
6687
  }
6510
6688
 
6511
6689
  changeSessionVideoInputDevice(id , session ) {
@@ -607,6 +607,7 @@ const AGENT_UNPAUSED = 'agent_unpaused';
607
607
  const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
608
608
  const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
609
609
  const MEETING_USER_PROGRESS = 'meeting_user_progress';
610
+ const MEETING_USER_GUEST_AUTHORIZATION_CREATED = 'meeting_user_guest_authorization_created';
610
611
 
611
612
  const BLACKLIST_EVENTS = [
612
613
  CHAT_MESSAGE_SENT,
@@ -958,7 +959,8 @@ WebSocketClient.eventLists = [
958
959
  CONFERENCE_ADHOC_PARTICIPANT_LEFT,
959
960
  CONFERENCE_ADHOC_DELETED,
960
961
  MEETING_USER_PROGRESS,
962
+ MEETING_USER_GUEST_AUTHORIZATION_CREATED,
961
963
  ];
962
964
 
963
965
  export default WebSocketClient;
964
- export { AGENT_PAUSED, AGENT_STATUS_UPDATE, AGENT_UNPAUSED, APPLICATION_CALL_ANSWERED, APPLICATION_CALL_DELETED, APPLICATION_CALL_DTMF_RECEIVED, APPLICATION_CALL_ENTERED, APPLICATION_CALL_INITIATED, APPLICATION_CALL_UPDATED, APPLICATION_DESTINATION_NODE_CREATED, APPLICATION_NODE_CREATED, APPLICATION_NODE_DELETED, APPLICATION_NODE_UPDATED, APPLICATION_PLAYBACK_CREATED, APPLICATION_PLAYBACK_DELETED, APPLICATION_PROGRESS_STARTED, APPLICATION_PROGRESS_STOPPED, APPLICATION_SNOOP_CREATED, APPLICATION_SNOOP_DELETED, APPLICATION_SNOOP_UPDATED, APPLICATION_USER_OUTGOING_CALL_CREATED, AUTH_SESSION_EXPIRE_SOON, AUTH_USER_EXTERNAL_AUTH_ADDED, AUTH_USER_EXTERNAL_AUTH_DELETED, CALL_ANSWERED, CALL_CREATED, CALL_DTMF_CREATED, CALL_ENDED, CALL_HELD, CALL_LOG_USER_CREATED, CALL_RESUMED, CALL_UPDATED, CHATD_PRESENCE_UPDATED, CHATD_USER_ROOM_CREATED, CHATD_USER_ROOM_MESSAGE_CREATED, CHAT_MESSAGE_RECEIVED, CHAT_MESSAGE_SENT, CONFERENCE_ADHOC_DELETED, CONFERENCE_ADHOC_PARTICIPANT_LEFT, CONFERENCE_USER_PARTICIPANT_JOINED, CONFERENCE_USER_PARTICIPANT_LEFT, CONFERENCE_USER_PARTICIPANT_TALK_STARTED, CONFERENCE_USER_PARTICIPANT_TALK_STOPPED, ENDPOINT_STATUS_UPDATE, FAVORITE_ADDED, FAVORITE_DELETED, FAX_OUTBOUND_USER_CREATED, FAX_OUTBOUND_USER_FAILED, FAX_OUTBOUND_USER_SUCCEEDED, HEARTBEAT_ENGINE_VERSION, LINE_STATUS_UPDATED, MEETING_USER_PARTICIPANT_JOINED, MEETING_USER_PARTICIPANT_LEFT, MEETING_USER_PROGRESS, SOCKET_EVENTS, SWITCHBOARD_HELD_CALLS_UPDATED, SWITCHBOARD_HELD_CALL_ANSWERED, SWITCHBOARD_QUEUED_CALLS_UPDATED, SWITCHBOARD_QUEUED_CALL_ANSWERED, TRUNK_STATUS_UPDATED, USERS_FORWARDS_BUSY_UPDATED, USERS_FORWARDS_NOANSWER_UPDATED, USERS_FORWARDS_UNCONDITIONAL_UPDATED, USERS_SERVICES_DND_UPDATED, USER_STATUS_UPDATE, USER_VOICEMAIL_MESSAGE_CREATED, USER_VOICEMAIL_MESSAGE_DELETED, USER_VOICEMAIL_MESSAGE_UPDATED };
966
+ export { AGENT_PAUSED, AGENT_STATUS_UPDATE, AGENT_UNPAUSED, APPLICATION_CALL_ANSWERED, APPLICATION_CALL_DELETED, APPLICATION_CALL_DTMF_RECEIVED, APPLICATION_CALL_ENTERED, APPLICATION_CALL_INITIATED, APPLICATION_CALL_UPDATED, APPLICATION_DESTINATION_NODE_CREATED, APPLICATION_NODE_CREATED, APPLICATION_NODE_DELETED, APPLICATION_NODE_UPDATED, APPLICATION_PLAYBACK_CREATED, APPLICATION_PLAYBACK_DELETED, APPLICATION_PROGRESS_STARTED, APPLICATION_PROGRESS_STOPPED, APPLICATION_SNOOP_CREATED, APPLICATION_SNOOP_DELETED, APPLICATION_SNOOP_UPDATED, APPLICATION_USER_OUTGOING_CALL_CREATED, AUTH_SESSION_EXPIRE_SOON, AUTH_USER_EXTERNAL_AUTH_ADDED, AUTH_USER_EXTERNAL_AUTH_DELETED, CALL_ANSWERED, CALL_CREATED, CALL_DTMF_CREATED, CALL_ENDED, CALL_HELD, CALL_LOG_USER_CREATED, CALL_RESUMED, CALL_UPDATED, CHATD_PRESENCE_UPDATED, CHATD_USER_ROOM_CREATED, CHATD_USER_ROOM_MESSAGE_CREATED, CHAT_MESSAGE_RECEIVED, CHAT_MESSAGE_SENT, CONFERENCE_ADHOC_DELETED, CONFERENCE_ADHOC_PARTICIPANT_LEFT, CONFERENCE_USER_PARTICIPANT_JOINED, CONFERENCE_USER_PARTICIPANT_LEFT, CONFERENCE_USER_PARTICIPANT_TALK_STARTED, CONFERENCE_USER_PARTICIPANT_TALK_STOPPED, ENDPOINT_STATUS_UPDATE, FAVORITE_ADDED, FAVORITE_DELETED, FAX_OUTBOUND_USER_CREATED, FAX_OUTBOUND_USER_FAILED, FAX_OUTBOUND_USER_SUCCEEDED, HEARTBEAT_ENGINE_VERSION, LINE_STATUS_UPDATED, MEETING_USER_GUEST_AUTHORIZATION_CREATED, MEETING_USER_PARTICIPANT_JOINED, MEETING_USER_PARTICIPANT_LEFT, MEETING_USER_PROGRESS, SOCKET_EVENTS, SWITCHBOARD_HELD_CALLS_UPDATED, SWITCHBOARD_HELD_CALL_ANSWERED, SWITCHBOARD_QUEUED_CALLS_UPDATED, SWITCHBOARD_QUEUED_CALL_ANSWERED, TRUNK_STATUS_UPDATED, USERS_FORWARDS_BUSY_UPDATED, USERS_FORWARDS_NOANSWER_UPDATED, USERS_FORWARDS_UNCONDITIONAL_UPDATED, USERS_SERVICES_DND_UPDATED, USER_STATUS_UPDATE, USER_VOICEMAIL_MESSAGE_CREATED, USER_VOICEMAIL_MESSAGE_DELETED, USER_VOICEMAIL_MESSAGE_UPDATED };