@webex/plugin-meetings 2.37.0 → 2.37.1

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 (308) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/common/browser-detection.js +1 -20
  4. package/dist/common/browser-detection.js.map +1 -1
  5. package/dist/common/collection.js +5 -20
  6. package/dist/common/collection.js.map +1 -1
  7. package/dist/common/config.js +0 -7
  8. package/dist/common/config.js.map +1 -1
  9. package/dist/common/errors/captcha-error.js +5 -26
  10. package/dist/common/errors/captcha-error.js.map +1 -1
  11. package/dist/common/errors/intent-to-join.js +5 -26
  12. package/dist/common/errors/intent-to-join.js.map +1 -1
  13. package/dist/common/errors/join-meeting.js +6 -27
  14. package/dist/common/errors/join-meeting.js.map +1 -1
  15. package/dist/common/errors/media.js +5 -26
  16. package/dist/common/errors/media.js.map +1 -1
  17. package/dist/common/errors/parameter.js +5 -33
  18. package/dist/common/errors/parameter.js.map +1 -1
  19. package/dist/common/errors/password-error.js +5 -26
  20. package/dist/common/errors/password-error.js.map +1 -1
  21. package/dist/common/errors/permission.js +4 -25
  22. package/dist/common/errors/permission.js.map +1 -1
  23. package/dist/common/errors/reconnection-in-progress.js +0 -17
  24. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  25. package/dist/common/errors/reconnection.js +5 -26
  26. package/dist/common/errors/reconnection.js.map +1 -1
  27. package/dist/common/errors/stats.js +5 -26
  28. package/dist/common/errors/stats.js.map +1 -1
  29. package/dist/common/errors/webex-errors.js +7 -46
  30. package/dist/common/errors/webex-errors.js.map +1 -1
  31. package/dist/common/errors/webex-meetings-error.js +1 -24
  32. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  33. package/dist/common/events/events-scope.js +0 -22
  34. package/dist/common/events/events-scope.js.map +1 -1
  35. package/dist/common/events/events.js +0 -23
  36. package/dist/common/events/events.js.map +1 -1
  37. package/dist/common/events/trigger-proxy.js +0 -12
  38. package/dist/common/events/trigger-proxy.js.map +1 -1
  39. package/dist/common/events/util.js +0 -15
  40. package/dist/common/events/util.js.map +1 -1
  41. package/dist/common/logs/logger-config.js +0 -4
  42. package/dist/common/logs/logger-config.js.map +1 -1
  43. package/dist/common/logs/logger-proxy.js +1 -8
  44. package/dist/common/logs/logger-proxy.js.map +1 -1
  45. package/dist/common/logs/request.js +35 -61
  46. package/dist/common/logs/request.js.map +1 -1
  47. package/dist/common/queue.js +4 -14
  48. package/dist/common/queue.js.map +1 -1
  49. package/dist/config.js +1 -5
  50. package/dist/config.js.map +1 -1
  51. package/dist/constants.js +46 -42
  52. package/dist/constants.js.map +1 -1
  53. package/dist/index.js +1 -17
  54. package/dist/index.js.map +1 -1
  55. package/dist/locus-info/controlsUtils.js +10 -28
  56. package/dist/locus-info/controlsUtils.js.map +1 -1
  57. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  58. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  59. package/dist/locus-info/fullState.js +0 -15
  60. package/dist/locus-info/fullState.js.map +1 -1
  61. package/dist/locus-info/hostUtils.js +4 -12
  62. package/dist/locus-info/hostUtils.js.map +1 -1
  63. package/dist/locus-info/index.js +101 -193
  64. package/dist/locus-info/index.js.map +1 -1
  65. package/dist/locus-info/infoUtils.js +0 -37
  66. package/dist/locus-info/infoUtils.js.map +1 -1
  67. package/dist/locus-info/mediaSharesUtils.js +12 -38
  68. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  69. package/dist/locus-info/parser.js +87 -123
  70. package/dist/locus-info/parser.js.map +1 -1
  71. package/dist/locus-info/selfUtils.js +16 -81
  72. package/dist/locus-info/selfUtils.js.map +1 -1
  73. package/dist/media/index.js +74 -137
  74. package/dist/media/index.js.map +1 -1
  75. package/dist/media/properties.js +64 -110
  76. package/dist/media/properties.js.map +1 -1
  77. package/dist/media/util.js +3 -17
  78. package/dist/media/util.js.map +1 -1
  79. package/dist/mediaQualityMetrics/config.js +10 -12
  80. package/dist/mediaQualityMetrics/config.js.map +1 -1
  81. package/dist/meeting/effectsState.js +120 -192
  82. package/dist/meeting/effectsState.js.map +1 -1
  83. package/dist/meeting/in-meeting-actions.js +0 -13
  84. package/dist/meeting/in-meeting-actions.js.map +1 -1
  85. package/dist/meeting/index.js +812 -1487
  86. package/dist/meeting/index.js.map +1 -1
  87. package/dist/meeting/muteState.js +31 -78
  88. package/dist/meeting/muteState.js.map +1 -1
  89. package/dist/meeting/request.js +157 -227
  90. package/dist/meeting/request.js.map +1 -1
  91. package/dist/meeting/state.js +21 -31
  92. package/dist/meeting/state.js.map +1 -1
  93. package/dist/meeting/util.js +25 -169
  94. package/dist/meeting/util.js.map +1 -1
  95. package/dist/meeting-info/collection.js +3 -25
  96. package/dist/meeting-info/collection.js.map +1 -1
  97. package/dist/meeting-info/index.js +10 -33
  98. package/dist/meeting-info/index.js.map +1 -1
  99. package/dist/meeting-info/meeting-info-v2.js +179 -268
  100. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  101. package/dist/meeting-info/request.js +1 -16
  102. package/dist/meeting-info/request.js.map +1 -1
  103. package/dist/meeting-info/util.js +98 -183
  104. package/dist/meeting-info/util.js.map +1 -1
  105. package/dist/meeting-info/utilv2.js +137 -228
  106. package/dist/meeting-info/utilv2.js.map +1 -1
  107. package/dist/meetings/collection.js +3 -21
  108. package/dist/meetings/collection.js.map +1 -1
  109. package/dist/meetings/index.js +451 -570
  110. package/dist/meetings/index.js.map +1 -1
  111. package/dist/meetings/request.js +7 -30
  112. package/dist/meetings/request.js.map +1 -1
  113. package/dist/meetings/util.js +94 -148
  114. package/dist/meetings/util.js.map +1 -1
  115. package/dist/member/index.js +49 -89
  116. package/dist/member/index.js.map +1 -1
  117. package/dist/member/util.js +17 -68
  118. package/dist/member/util.js.map +1 -1
  119. package/dist/members/collection.js +2 -12
  120. package/dist/members/collection.js.map +1 -1
  121. package/dist/members/index.js +68 -184
  122. package/dist/members/index.js.map +1 -1
  123. package/dist/members/request.js +21 -56
  124. package/dist/members/request.js.map +1 -1
  125. package/dist/members/util.js +9 -38
  126. package/dist/members/util.js.map +1 -1
  127. package/dist/metrics/config.js +0 -2
  128. package/dist/metrics/config.js.map +1 -1
  129. package/dist/metrics/constants.js +1 -2
  130. package/dist/metrics/constants.js.map +1 -1
  131. package/dist/metrics/index.js +48 -136
  132. package/dist/metrics/index.js.map +1 -1
  133. package/dist/networkQualityMonitor/index.js +28 -57
  134. package/dist/networkQualityMonitor/index.js.map +1 -1
  135. package/dist/peer-connection-manager/index.js +60 -190
  136. package/dist/peer-connection-manager/index.js.map +1 -1
  137. package/dist/peer-connection-manager/util.js +10 -24
  138. package/dist/peer-connection-manager/util.js.map +1 -1
  139. package/dist/personal-meeting-room/index.js +10 -45
  140. package/dist/personal-meeting-room/index.js.map +1 -1
  141. package/dist/personal-meeting-room/request.js +2 -33
  142. package/dist/personal-meeting-room/request.js.map +1 -1
  143. package/dist/personal-meeting-room/util.js +0 -13
  144. package/dist/personal-meeting-room/util.js.map +1 -1
  145. package/dist/reachability/index.js +100 -166
  146. package/dist/reachability/index.js.map +1 -1
  147. package/dist/reachability/request.js +2 -18
  148. package/dist/reachability/request.js.map +1 -1
  149. package/dist/reactions/reactions.js +0 -2
  150. package/dist/reactions/reactions.js.map +1 -1
  151. package/dist/reactions/reactions.type.js +0 -5
  152. package/dist/reactions/reactions.type.js.map +1 -1
  153. package/dist/reconnection-manager/index.js +294 -468
  154. package/dist/reconnection-manager/index.js.map +1 -1
  155. package/dist/roap/collection.js +1 -12
  156. package/dist/roap/collection.js.map +1 -1
  157. package/dist/roap/handler.js +15 -85
  158. package/dist/roap/handler.js.map +1 -1
  159. package/dist/roap/index.js +42 -94
  160. package/dist/roap/index.js.map +1 -1
  161. package/dist/roap/request.js +81 -148
  162. package/dist/roap/request.js.map +1 -1
  163. package/dist/roap/state.js +2 -39
  164. package/dist/roap/state.js.map +1 -1
  165. package/dist/roap/turnDiscovery.js +8 -52
  166. package/dist/roap/turnDiscovery.js.map +1 -1
  167. package/dist/roap/util.js +0 -26
  168. package/dist/roap/util.js.map +1 -1
  169. package/dist/statsAnalyzer/global.js +0 -2
  170. package/dist/statsAnalyzer/global.js.map +1 -1
  171. package/dist/statsAnalyzer/index.js +68 -168
  172. package/dist/statsAnalyzer/index.js.map +1 -1
  173. package/dist/statsAnalyzer/mqaUtil.js +54 -53
  174. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  175. package/dist/transcription/index.js +13 -45
  176. package/dist/transcription/index.js.map +1 -1
  177. package/internal-README.md +7 -6
  178. package/package.json +17 -17
  179. package/src/common/browser-detection.ts +9 -6
  180. package/src/common/collection.ts +3 -1
  181. package/src/common/errors/captcha-error.ts +6 -6
  182. package/src/common/errors/intent-to-join.ts +6 -6
  183. package/src/common/errors/join-meeting.ts +12 -8
  184. package/src/common/errors/media.ts +6 -6
  185. package/src/common/errors/parameter.ts +9 -6
  186. package/src/common/errors/password-error.ts +6 -6
  187. package/src/common/errors/permission.ts +5 -5
  188. package/src/common/errors/reconnection.ts +6 -6
  189. package/src/common/errors/stats.ts +6 -6
  190. package/src/common/errors/webex-errors.ts +7 -5
  191. package/src/common/errors/webex-meetings-error.ts +1 -1
  192. package/src/common/events/events-scope.ts +5 -1
  193. package/src/common/events/events.ts +5 -1
  194. package/src/common/events/trigger-proxy.ts +8 -3
  195. package/src/common/events/util.ts +1 -2
  196. package/src/common/logs/logger-proxy.ts +21 -10
  197. package/src/common/logs/request.ts +11 -8
  198. package/src/config.ts +11 -11
  199. package/src/constants.ts +138 -119
  200. package/src/index.js +1 -1
  201. package/src/locus-info/controlsUtils.ts +34 -24
  202. package/src/locus-info/fullState.ts +15 -11
  203. package/src/locus-info/hostUtils.ts +4 -3
  204. package/src/locus-info/index.ts +25 -34
  205. package/src/locus-info/infoUtils.ts +12 -4
  206. package/src/locus-info/mediaSharesUtils.ts +4 -4
  207. package/src/locus-info/parser.ts +45 -68
  208. package/src/locus-info/selfUtils.ts +106 -57
  209. package/src/media/index.ts +118 -109
  210. package/src/media/properties.ts +26 -20
  211. package/src/media/util.ts +2 -2
  212. package/src/mediaQualityMetrics/config.ts +46 -46
  213. package/src/meeting/effectsState.ts +35 -35
  214. package/src/meeting/in-meeting-actions.ts +7 -3
  215. package/src/meeting/index.ts +1435 -1210
  216. package/src/meeting/muteState.ts +62 -31
  217. package/src/meeting/request.ts +160 -113
  218. package/src/meeting/state.ts +45 -30
  219. package/src/meeting/util.ts +131 -90
  220. package/src/meeting-info/collection.ts +2 -1
  221. package/src/meeting-info/index.ts +32 -30
  222. package/src/meeting-info/meeting-info-v2.ts +106 -108
  223. package/src/meeting-info/request.ts +9 -3
  224. package/src/meeting-info/util.ts +54 -46
  225. package/src/meeting-info/utilv2.ts +59 -53
  226. package/src/meetings/collection.ts +1 -1
  227. package/src/meetings/index.ts +513 -441
  228. package/src/meetings/request.ts +26 -24
  229. package/src/meetings/util.ts +26 -23
  230. package/src/member/index.ts +55 -49
  231. package/src/member/util.ts +26 -13
  232. package/src/members/collection.ts +0 -1
  233. package/src/members/index.ts +172 -121
  234. package/src/members/request.ts +46 -14
  235. package/src/members/util.ts +44 -42
  236. package/src/metrics/config.ts +254 -81
  237. package/src/metrics/constants.ts +0 -2
  238. package/src/metrics/index.ts +84 -71
  239. package/src/networkQualityMonitor/index.ts +20 -23
  240. package/src/peer-connection-manager/index.ts +321 -241
  241. package/src/peer-connection-manager/util.ts +4 -2
  242. package/src/personal-meeting-room/index.ts +12 -16
  243. package/src/personal-meeting-room/request.ts +10 -3
  244. package/src/personal-meeting-room/util.ts +3 -3
  245. package/src/reachability/index.ts +61 -59
  246. package/src/reachability/request.ts +36 -32
  247. package/src/reactions/reactions.ts +4 -4
  248. package/src/reactions/reactions.type.ts +2 -3
  249. package/src/reconnection-manager/index.ts +159 -98
  250. package/src/roap/collection.ts +2 -4
  251. package/src/roap/handler.ts +63 -32
  252. package/src/roap/index.ts +78 -58
  253. package/src/roap/request.ts +69 -54
  254. package/src/roap/state.ts +17 -11
  255. package/src/roap/turnDiscovery.ts +60 -31
  256. package/src/roap/util.ts +39 -31
  257. package/src/statsAnalyzer/global.ts +30 -33
  258. package/src/statsAnalyzer/index.ts +397 -169
  259. package/src/statsAnalyzer/mqaUtil.ts +178 -72
  260. package/src/transcription/index.ts +34 -32
  261. package/test/integration/spec/journey.js +666 -462
  262. package/test/integration/spec/space-meeting.js +318 -203
  263. package/test/integration/spec/transcription.js +6 -7
  264. package/test/unit/spec/common/browser-detection.js +9 -28
  265. package/test/unit/spec/fixture/locus.js +92 -90
  266. package/test/unit/spec/locus-info/controlsUtils.js +5 -5
  267. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  268. package/test/unit/spec/locus-info/index.js +1 -2
  269. package/test/unit/spec/locus-info/infoUtils.js +24 -31
  270. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  271. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  272. package/test/unit/spec/locus-info/parser.js +3 -9
  273. package/test/unit/spec/locus-info/selfConstant.js +72 -103
  274. package/test/unit/spec/locus-info/selfUtils.js +21 -12
  275. package/test/unit/spec/meeting/effectsState.js +33 -45
  276. package/test/unit/spec/meeting/in-meeting-actions.ts +2 -3
  277. package/test/unit/spec/meeting/index.js +1141 -649
  278. package/test/unit/spec/meeting/muteState.js +42 -33
  279. package/test/unit/spec/meeting/request.js +56 -45
  280. package/test/unit/spec/meeting/utils.js +66 -49
  281. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  282. package/test/unit/spec/meeting-info/request.js +7 -9
  283. package/test/unit/spec/meeting-info/util.js +11 -12
  284. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  285. package/test/unit/spec/meetings/collection.js +1 -1
  286. package/test/unit/spec/meetings/index.js +438 -257
  287. package/test/unit/spec/meetings/utils.js +14 -12
  288. package/test/unit/spec/member/index.js +0 -1
  289. package/test/unit/spec/member/util.js +5 -6
  290. package/test/unit/spec/members/index.js +84 -35
  291. package/test/unit/spec/members/request.js +29 -20
  292. package/test/unit/spec/members/utils.js +8 -5
  293. package/test/unit/spec/metrics/index.js +16 -21
  294. package/test/unit/spec/networkQualityMonitor/index.js +21 -15
  295. package/test/unit/spec/peerconnection-manager/index.js +88 -58
  296. package/test/unit/spec/peerconnection-manager/utils.js +5 -4
  297. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +7 -8
  298. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  299. package/test/unit/spec/reachability/index.ts +9 -11
  300. package/test/unit/spec/reconnection-manager/index.js +14 -17
  301. package/test/unit/spec/roap/index.ts +18 -8
  302. package/test/unit/spec/roap/turnDiscovery.ts +22 -19
  303. package/test/unit/spec/roap/util.js +3 -3
  304. package/test/unit/spec/stats-analyzer/index.js +29 -24
  305. package/test/utils/cmr.js +44 -42
  306. package/test/utils/testUtils.js +83 -74
  307. package/test/utils/webex-config.js +18 -18
  308. package/test/utils/webex-test-users.js +53 -50
@@ -1,4 +1,4 @@
1
- import { parse } from '@webex/ts-sdp';
1
+ import {parse} from '@webex/ts-sdp';
2
2
 
3
3
  interface IPeerConnectionUtils {
4
4
  convertCLineToIpv4: (sdp: string) => string;
@@ -98,7 +98,9 @@ PeerConnectionUtils.adjustH264Profile = (sdp: string, maxFsValue: number) => {
98
98
  // Object.keys returns keys as strings, so we need to parse it to an int again and then convert to hex
99
99
  const newLevelIdHex = parseInt(newLevelId, 10).toString(16);
100
100
 
101
- return `${stuffBeforeProfileLevelId}profile-level-id=${profile}${newLevelIdHex};max-mbps=${maxFsValue * framesPerSecond}${stuffAfterProfileLevelId}`;
101
+ return `${stuffBeforeProfileLevelId}profile-level-id=${profile}${newLevelIdHex};max-mbps=${
102
+ maxFsValue * framesPerSecond
103
+ }${stuffAfterProfileLevelId}`;
102
104
  }
103
105
 
104
106
  throw new Error(`unsupported maxFsValue: ${maxFsValue}`);
@@ -6,7 +6,6 @@ import ParameterError from '../common/errors/parameter';
6
6
 
7
7
  import PersonalMeetingRoomRequest from './request';
8
8
 
9
-
10
9
  /**
11
10
  * @class PersonalMeetingRoom
12
11
  */
@@ -36,7 +35,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
36
35
  * @type {Object}
37
36
  * @public
38
37
  * @memberof PersonalMeetingRoom
39
- */
38
+ */
40
39
  this.pmr = null;
41
40
  /**
42
41
  * The pmr sip Uri
@@ -44,7 +43,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
44
43
  * @type {String}
45
44
  * @public
46
45
  * @memberof PersonalMeetingRoom
47
- */
46
+ */
48
47
  this.sipUri = null;
49
48
  /**
50
49
  * The pmr link
@@ -52,7 +51,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
52
51
  * @type {String}
53
52
  * @public
54
53
  * @memberof PersonalMeetingRoom
55
- */
54
+ */
56
55
  this.link = null;
57
56
  /**
58
57
  * The pmr server object
@@ -60,7 +59,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
60
59
  * @type {Object}
61
60
  * @public
62
61
  * @memberof PersonalMeetingRoom
63
- */
62
+ */
64
63
  this.userId = null;
65
64
  /**
66
65
  * The pmr name
@@ -68,7 +67,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
68
67
  * @type {String}
69
68
  * @public
70
69
  * @memberof PersonalMeetingRoom
71
- */
70
+ */
72
71
  this.name = null;
73
72
  /**
74
73
  * The meeting info request server interface
@@ -76,7 +75,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
76
75
  * @type {MeetingInfo}
77
76
  * @private
78
77
  * @memberof PersonalMeetingRoom
79
- */
78
+ */
80
79
  this.meetingInfo = attrs.meetingInfo;
81
80
  /**
82
81
  * The pmr server request interface
@@ -84,7 +83,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
84
83
  * @type {Object}
85
84
  * @private
86
85
  * @memberof PersonalMeetingRoom
87
- */
86
+ */
88
87
  // @ts-ignore
89
88
  this.personalMeetingRoomRequest = new PersonalMeetingRoomRequest({}, options);
90
89
  }
@@ -98,20 +97,19 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
98
97
  * @public
99
98
  * @memberof PersonalMeetingRoom
100
99
  */
101
- public claim(link: string, pin: string, preferred: boolean = true) {
100
+ public claim(link: string, pin: string, preferred = true) {
102
101
  const options = {
103
102
  // @ts-ignore
104
103
  userId: this.webex.internal.device.userId,
105
104
  passcode: pin,
106
105
  meetingAddress: link,
107
- preferred
106
+ preferred,
108
107
  };
109
108
 
110
109
  return this.personalMeetingRoomRequest.claimPmr(options).then((pmr) => {
111
110
  if (pmr && pmr.body) {
112
111
  this.set(pmr.body);
113
- }
114
- else {
112
+ } else {
115
113
  return Promise.reject(new ParameterError('No PMR body provided. PMR values not updated.'));
116
114
  }
117
115
 
@@ -143,15 +141,13 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
143
141
  */
144
142
  public get() {
145
143
  const options = {
146
- type: _PERSONAL_ROOM_
147
-
144
+ type: _PERSONAL_ROOM_,
148
145
  };
149
146
 
150
147
  return this.meetingInfo.fetchMeetingInfo(options).then((pmr) => {
151
148
  if (pmr && pmr.body && pmr.body.isPmr) {
152
149
  this.set(pmr.body);
153
- }
154
- else {
150
+ } else {
155
151
  return Promise.reject(new TypeError('The PMR requested is NOT a PMR. PMR values not set.'));
156
152
  }
157
153
 
@@ -6,7 +6,6 @@ import ParameterError from '../common/errors/parameter';
6
6
 
7
7
  import PersonalMeetingRoomUtil from './util';
8
8
 
9
-
10
9
  /**
11
10
  * @class MeetingInfoRequest
12
11
  */
@@ -20,8 +19,16 @@ export default class PersonalMeetingRoomRequest extends StatelessWebexPlugin {
20
19
  * @memberof PersonalMeetingRoomRequest
21
20
  */
22
21
  claimPmr(options: any) {
23
- if (!options || !options.userId || !options.passcode || !options.meetingAddress || !options.preferred) {
24
- throw new ParameterError('Claiming a PMR should be done with userId, passcode, preferred, and meetingAddress in options.');
22
+ if (
23
+ !options ||
24
+ !options.userId ||
25
+ !options.passcode ||
26
+ !options.meetingAddress ||
27
+ !options.preferred
28
+ ) {
29
+ throw new ParameterError(
30
+ 'Claiming a PMR should be done with userId, passcode, preferred, and meetingAddress in options.'
31
+ );
25
32
  }
26
33
  const validPin = PersonalMeetingRoomUtil.getClaimPmrPin(options.passcode);
27
34
 
@@ -6,7 +6,7 @@ import {
6
6
  CMR_MEETINGS,
7
7
  CLAIM,
8
8
  HECATE,
9
- WEBEX_DOT_COM
9
+ WEBEX_DOT_COM,
10
10
  } from '../constants';
11
11
 
12
12
  const PersonalMeetingRoomUtil: any = {};
@@ -42,8 +42,8 @@ PersonalMeetingRoomUtil.getClaimedRequestParams = (link, pin, options) => ({
42
42
  userId: options.userId,
43
43
  passcode: pin,
44
44
  preferred: options.preferred,
45
- meetingAddress: link
46
- }
45
+ meetingAddress: link,
46
+ },
47
47
  });
48
48
 
49
49
  export default PersonalMeetingRoomUtil;
@@ -7,11 +7,7 @@
7
7
  import _ from 'lodash';
8
8
 
9
9
  import LoggerProxy from '../common/logs/logger-proxy';
10
- import {
11
- ICE_GATHERING_STATE,
12
- CONNECTION_STATE,
13
- REACHABILITY
14
- } from '../constants';
10
+ import {ICE_GATHERING_STATE, CONNECTION_STATE, REACHABILITY} from '../constants';
15
11
 
16
12
  import ReachabilityRequest from './request';
17
13
 
@@ -54,7 +50,6 @@ export default class Reachability {
54
50
  this.clusterLatencyResults = {};
55
51
  }
56
52
 
57
-
58
53
  /**
59
54
  * fetches reachability data
60
55
  * @returns {Object} reachability data
@@ -68,9 +63,10 @@ export default class Reachability {
68
63
  // Remove stored reachability results to ensure no stale data
69
64
  if (window?.localStorage?.removeItem) {
70
65
  window.localStorage.removeItem(REACHABILITY.localStorage);
71
- }
72
- else {
73
- LoggerProxy.logger.error('Reachability:index#gatherReachability --> Error in accessing LocalStorage.');
66
+ } else {
67
+ LoggerProxy.logger.error(
68
+ 'Reachability:index#gatherReachability --> Error in accessing LocalStorage.'
69
+ );
74
70
 
75
71
  return {};
76
72
  }
@@ -84,12 +80,15 @@ export default class Reachability {
84
80
 
85
81
  window.localStorage.setItem(REACHABILITY.localStorage, JSON.stringify(results));
86
82
 
87
- LoggerProxy.logger.log('Reachability:index#gatherReachability --> Reachability checks completed');
83
+ LoggerProxy.logger.log(
84
+ 'Reachability:index#gatherReachability --> Reachability checks completed'
85
+ );
88
86
 
89
87
  return results;
90
- }
91
- catch (getClusterError) {
92
- LoggerProxy.logger.error(`Reachability:index#gatherReachability --> Error in calling getClusters(): ${getClusterError}`);
88
+ } catch (getClusterError) {
89
+ LoggerProxy.logger.error(
90
+ `Reachability:index#gatherReachability --> Error in calling getClusters(): ${getClusterError}`
91
+ );
93
92
 
94
93
  return {};
95
94
  }
@@ -109,17 +108,19 @@ export default class Reachability {
109
108
  try {
110
109
  const reachabilityResults = JSON.parse(reachabilityData);
111
110
 
112
- reachable = Object.values(reachabilityResults).some((result: any) => result.udp?.reachable === 'true' || result.tcp?.reachable === 'true');
113
- }
114
- catch (e) {
115
- LoggerProxy.logger.error(`Roap:request#attachReachabilityData --> Error in parsing reachability data: ${e}`);
111
+ reachable = Object.values(reachabilityResults).some(
112
+ (result: any) => result.udp?.reachable === 'true' || result.tcp?.reachable === 'true'
113
+ );
114
+ } catch (e) {
115
+ LoggerProxy.logger.error(
116
+ `Roap:request#attachReachabilityData --> Error in parsing reachability data: ${e}`
117
+ );
116
118
  }
117
119
  }
118
120
 
119
121
  return reachable;
120
122
  }
121
123
 
122
-
123
124
  /**
124
125
  * Generate peerConnection config settings
125
126
  * @param {object} cluster
@@ -128,25 +129,19 @@ export default class Reachability {
128
129
  * @memberof Reachability
129
130
  */
130
131
  private buildPeerConnectionConfig(cluster: any) {
131
- const iceServers = _.uniq([
132
- ...cluster.udp,
133
- ...cluster.tcp
134
- ]).map((url) => ({
132
+ const iceServers = _.uniq([...cluster.udp, ...cluster.tcp]).map((url) => ({
135
133
  username: '',
136
134
  credential: '',
137
- urls: [url]
135
+ urls: [url],
138
136
  }));
139
137
 
140
138
  return {
141
- iceServers: [
142
- ...iceServers
143
- ],
139
+ iceServers: [...iceServers],
144
140
  iceCandidatePoolSize: '0',
145
- iceTransportPolicy: 'all'
141
+ iceTransportPolicy: 'all',
146
142
  };
147
143
  }
148
144
 
149
-
150
145
  /**
151
146
  * Creates an RTCPeerConnection
152
147
  * @param {object} cluster
@@ -164,15 +159,15 @@ export default class Reachability {
164
159
  peerConnection.key = key;
165
160
 
166
161
  return peerConnection;
167
- }
168
- catch (peerConnectionError) {
169
- LoggerProxy.logger.log(`Reachability:index#createPeerConnection --> Error creating peerConnection: ${peerConnectionError}`);
162
+ } catch (peerConnectionError) {
163
+ LoggerProxy.logger.log(
164
+ `Reachability:index#createPeerConnection --> Error creating peerConnection: ${peerConnectionError}`
165
+ );
170
166
 
171
167
  return null;
172
168
  }
173
169
  }
174
170
 
175
-
176
171
  /**
177
172
  * Gets total elapsed time
178
173
  * @param {RTCPeerConnection} peerConnection
@@ -188,7 +183,6 @@ export default class Reachability {
188
183
  return Date.now() - startTime;
189
184
  }
190
185
 
191
-
192
186
  /**
193
187
  * creates offer and generates localSDP
194
188
  * @param {object} clusterList cluster List
@@ -209,10 +203,14 @@ export default class Reachability {
209
203
  peerConnection.begin = Date.now();
210
204
  peerConnection.setLocalDescription(description);
211
205
 
212
- return this.iceGatheringState(peerConnection, cluster.isVideoMesh ? VIDEO_MESH_TIMEOUT : DEFAULT_TIMEOUT)
213
- .catch((iceGatheringStateError) => {
214
- LoggerProxy.logger.log(`Reachability:index#getLocalSDPForClusters --> Error in getLocalSDP : ${iceGatheringStateError}`);
215
- });
206
+ return this.iceGatheringState(
207
+ peerConnection,
208
+ cluster.isVideoMesh ? VIDEO_MESH_TIMEOUT : DEFAULT_TIMEOUT
209
+ ).catch((iceGatheringStateError) => {
210
+ LoggerProxy.logger.log(
211
+ `Reachability:index#getLocalSDPForClusters --> Error in getLocalSDP : ${iceGatheringStateError}`
212
+ );
213
+ });
216
214
  });
217
215
 
218
216
  return Promise.all(clusters)
@@ -225,7 +223,6 @@ export default class Reachability {
225
223
  });
226
224
  }
227
225
 
228
-
229
226
  /**
230
227
  * Get list of all unreachable clusters
231
228
  * @returns {array} Unreachable clusters
@@ -247,7 +244,6 @@ export default class Reachability {
247
244
  return unreachableList;
248
245
  }
249
246
 
250
-
251
247
  /**
252
248
  * Attach an event handler for the icegatheringstatechange
253
249
  * event and measure latency.
@@ -264,13 +260,15 @@ export default class Reachability {
264
260
  const elapsed = this.getElapsedTime(peerConnection);
265
261
 
266
262
  // @ts-ignore
267
- LoggerProxy.logger.log(`Reachability:index#onIceGatheringStateChange --> Successfully pinged ${peerConnection.key}:`, elapsed);
263
+ LoggerProxy.logger.log(
264
+ `Reachability:index#onIceGatheringStateChange --> Successfully pinged ${peerConnection.key}:`,
265
+ elapsed
266
+ );
268
267
  this.setLatencyAndClose(peerConnection, elapsed);
269
268
  }
270
269
  };
271
270
  }
272
271
 
273
-
274
272
  /**
275
273
  * Attach an event handler for the icecandidate
276
274
  * event and measure latency.
@@ -287,7 +285,10 @@ export default class Reachability {
287
285
  const elapsed = this.getElapsedTime(peerConnection);
288
286
 
289
287
  // @ts-ignore
290
- LoggerProxy.logger.log(`Reachability:index#onIceCandidate --> Successfully pinged ${peerConnection.key}:`, elapsed);
288
+ LoggerProxy.logger.log(
289
+ `Reachability:index#onIceCandidate --> Successfully pinged ${peerConnection.key}:`,
290
+ elapsed
291
+ );
291
292
  this.setLatencyAndClose(peerConnection, elapsed);
292
293
  }
293
294
  };
@@ -310,7 +311,7 @@ export default class Reachability {
310
311
  get(target, property) {
311
312
  const targetMember = target[property];
312
313
 
313
- if (typeof (targetMember) === 'function') {
314
+ if (typeof targetMember === 'function') {
314
315
  return targetMember.bind(target);
315
316
  }
316
317
 
@@ -327,7 +328,7 @@ export default class Reachability {
327
328
 
328
329
  // pass thru
329
330
  return window.Reflect.set(target, property, value);
330
- }
331
+ },
331
332
  });
332
333
 
333
334
  // Using peerConnection proxy so handle functions below
@@ -347,7 +348,6 @@ export default class Reachability {
347
348
  });
348
349
  }
349
350
 
350
-
351
351
  /**
352
352
  * Make a log of unreachable clusters.
353
353
  * @returns {undefined}
@@ -358,11 +358,12 @@ export default class Reachability {
358
358
  const list = this.getUnreachablClusters();
359
359
 
360
360
  list.forEach((cluster) => {
361
- LoggerProxy.logger.log(`Reachability:index#logUnreachableClusters --> No ice candidate for ${cluster}.`);
361
+ LoggerProxy.logger.log(
362
+ `Reachability:index#logUnreachableClusters --> No ice candidate for ${cluster}.`
363
+ );
362
364
  });
363
365
  }
364
366
 
365
-
366
367
  /**
367
368
  * Calculates time to establish connection
368
369
  * @param {array} iceResults iceResults
@@ -378,24 +379,22 @@ export default class Reachability {
378
379
 
379
380
  if (elapsed === null) {
380
381
  latencyResult = {reachable: 'false'};
381
- }
382
- else {
382
+ } else {
383
383
  latencyResult = {
384
384
  reachable: 'true',
385
- latencyInMilliseconds: (elapsed).toString()
385
+ latencyInMilliseconds: elapsed.toString(),
386
386
  };
387
387
  }
388
388
 
389
389
  reachabilityMap[clusterId] = {
390
390
  udp: latencyResult,
391
- tcp: latencyResult
391
+ tcp: latencyResult,
392
392
  };
393
393
  });
394
394
 
395
395
  return reachabilityMap;
396
396
  }
397
397
 
398
-
399
398
  /**
400
399
  * fetches reachability data
401
400
  * @param {object} clusterList
@@ -413,21 +412,23 @@ export default class Reachability {
413
412
  .then((localSDPData) => {
414
413
  if (!localSDPData || !Object.keys(localSDPData).length) {
415
414
  // TODO: handle the error condition properly and try retry
416
- LoggerProxy.logger.log('Reachability:index#performReachabilityCheck --> Local SDP is empty or has missing elements..returning');
415
+ LoggerProxy.logger.log(
416
+ 'Reachability:index#performReachabilityCheck --> Local SDP is empty or has missing elements..returning'
417
+ );
417
418
  resolve({});
418
- }
419
- else {
419
+ } else {
420
420
  resolve(localSDPData);
421
421
  }
422
422
  })
423
423
  .catch((error) => {
424
- LoggerProxy.logger.error(`Reachability:index#performReachabilityCheck --> Error in getLocalSDPForClusters: ${error}`);
424
+ LoggerProxy.logger.error(
425
+ `Reachability:index#performReachabilityCheck --> Error in getLocalSDPForClusters: ${error}`
426
+ );
425
427
  resolve({});
426
428
  });
427
429
  });
428
430
  }
429
431
 
430
-
431
432
  /**
432
433
  * Records latency and closes the peerConnection
433
434
  * @param {RTCPeerConnection} peerConnection
@@ -446,7 +447,9 @@ export default class Reachability {
446
447
  const intialState = {[REACHABLE]: 0, [UNREACHABLE]: 0};
447
448
 
448
449
  if (peerConnection.connectionState === CLOSED) {
449
- LoggerProxy.logger.log(`Reachability:index#setLatencyAndClose --> Attempting to set latency of ${elapsed} on closed peerConnection.`);
450
+ LoggerProxy.logger.log(
451
+ `Reachability:index#setLatencyAndClose --> Attempting to set latency of ${elapsed} on closed peerConnection.`
452
+ );
450
453
 
451
454
  return;
452
455
  }
@@ -462,7 +465,6 @@ export default class Reachability {
462
465
  peerConnection.elapsed = elapsed;
463
466
  }
464
467
 
465
-
466
468
  /**
467
469
  * utility function
468
470
  * @returns {undefined}
@@ -1,9 +1,5 @@
1
1
  import LoggerProxy from '../common/logs/logger-proxy';
2
- import {
3
- HTTP_VERBS,
4
- RESOURCE,
5
- API
6
- } from '../constants';
2
+ import {HTTP_VERBS, RESOURCE, API} from '../constants';
7
3
 
8
4
  export interface ClusterNode {
9
5
  isVideoMesh: boolean;
@@ -13,8 +9,8 @@ export interface ClusterNode {
13
9
  }
14
10
 
15
11
  export type ClusterList = {
16
- [key:string]: ClusterNode;
17
- }
12
+ [key: string]: ClusterNode;
13
+ };
18
14
 
19
15
  /**
20
16
  * @class ReachabilityRequest
@@ -37,41 +33,49 @@ class ReachabilityRequest {
37
33
  * @param {boolean} includeVideoMesh whether to include the video mesh clusters in the result or not
38
34
  * @returns {Promise}
39
35
  */
40
- getClusters = (): Promise<ClusterList> => this.webex.request({
41
- method: HTTP_VERBS.GET,
42
- shouldRefreshAccessToken: false,
43
- api: API.CALLIOPEDISCOVERY,
44
- resource: RESOURCE.CLUSTERS
45
- })
46
- .then((res) => {
47
- const {clusters} = res.body;
36
+ getClusters = (): Promise<ClusterList> =>
37
+ this.webex
38
+ .request({
39
+ method: HTTP_VERBS.GET,
40
+ shouldRefreshAccessToken: false,
41
+ api: API.CALLIOPEDISCOVERY,
42
+ resource: RESOURCE.CLUSTERS,
43
+ })
44
+ .then((res) => {
45
+ const {clusters} = res.body;
48
46
 
49
- Object.keys(clusters).forEach((key) => {
50
- clusters[key].isVideoMesh = res.body.clusterClasses?.hybridMedia?.includes(key);
51
- });
47
+ Object.keys(clusters).forEach((key) => {
48
+ clusters[key].isVideoMesh = res.body.clusterClasses?.hybridMedia?.includes(key);
49
+ });
52
50
 
53
- LoggerProxy.logger.log(`Reachability:request#getClusters --> get clusters successful:${JSON.stringify(clusters)}`);
51
+ LoggerProxy.logger.log(
52
+ `Reachability:request#getClusters --> get clusters successful:${JSON.stringify(clusters)}`
53
+ );
54
54
 
55
- return clusters;
56
- });
55
+ return clusters;
56
+ });
57
57
 
58
58
  /**
59
59
  * gets remote SDP For Clusters
60
60
  * @param {Object} localSDPList localSDPs for the cluster
61
61
  * @returns {Object}
62
62
  */
63
- remoteSDPForClusters = (localSDPList: object) => this.webex.request({
64
- method: HTTP_VERBS.POST,
65
- shouldRefreshAccessToken: false,
66
- api: API.CALLIOPEDISCOVERY,
67
- resource: RESOURCE.REACHABILITY,
68
- body: {offers: localSDPList}
69
- })
70
- .then((res) => {
71
- LoggerProxy.logger.log('Reachability:request#remoteSDPForClusters --> Remote SDPs got succcessfully');
63
+ remoteSDPForClusters = (localSDPList: object) =>
64
+ this.webex
65
+ .request({
66
+ method: HTTP_VERBS.POST,
67
+ shouldRefreshAccessToken: false,
68
+ api: API.CALLIOPEDISCOVERY,
69
+ resource: RESOURCE.REACHABILITY,
70
+ body: {offers: localSDPList},
71
+ })
72
+ .then((res) => {
73
+ LoggerProxy.logger.log(
74
+ 'Reachability:request#remoteSDPForClusters --> Remote SDPs got succcessfully'
75
+ );
72
76
 
73
- return res.body;
74
- });
77
+ return res.body;
78
+ });
75
79
  }
76
80
 
77
81
  export default ReachabilityRequest;
@@ -4,7 +4,7 @@ const Reactions: Record<ReactionType, Reaction> = {
4
4
  smile: {
5
5
  type: 'smile',
6
6
  codepoints: '1F642',
7
- shortcodes: ':slightly_smiling_face:'
7
+ shortcodes: ':slightly_smiling_face:',
8
8
  },
9
9
  sad: {
10
10
  type: 'sad',
@@ -19,7 +19,7 @@ const Reactions: Record<ReactionType, Reaction> = {
19
19
  haha: {
20
20
  type: 'haha',
21
21
  codepoints: '1F603',
22
- shortcodes: ':smiley:'
22
+ shortcodes: ':smiley:',
23
23
  },
24
24
  celebrate: {
25
25
  type: 'celebrate',
@@ -65,7 +65,7 @@ const Reactions: Record<ReactionType, Reaction> = {
65
65
  type: 'slow_down',
66
66
  codepoints: '1F422',
67
67
  shortcodes: ':turtle:',
68
- }
68
+ },
69
69
  };
70
70
 
71
71
  const SkinTones: Record<SkinToneType, SkinTone> = {
@@ -98,7 +98,7 @@ const SkinTones: Record<SkinToneType, SkinTone> = {
98
98
  type: 'dark_skin_tone',
99
99
  codepoints: '1F3FF',
100
100
  shortcodes: ':skin-tone-6:',
101
- }
101
+ },
102
102
  };
103
103
 
104
104
  export {Reactions, SkinTones};
@@ -1,14 +1,13 @@
1
-
2
1
  export type EmoticonData = {
3
2
  type: string;
4
3
  codepoints?: string;
5
4
  shortcodes?: string;
6
- }
5
+ };
7
6
 
8
7
  export type SkinTone = EmoticonData;
9
8
  export type Reaction = ReactionData & {
10
9
  tone?: SkinTone;
11
- }
10
+ };
12
11
 
13
12
  export enum ReactionType {
14
13
  smile = 'smile',