@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
@@ -3,7 +3,7 @@ import url from 'url';
3
3
  import btoa from 'btoa';
4
4
  import {
5
5
  // @ts-ignore
6
- deconstructHydraId
6
+ deconstructHydraId,
7
7
  } from '@webex/common';
8
8
 
9
9
  import ParameterError from '../common/errors/parameter';
@@ -31,7 +31,7 @@ import {
31
31
  MEET,
32
32
  MEET_M,
33
33
  HTTPS_PROTOCOL,
34
- UUID_REG
34
+ UUID_REG,
35
35
  } from '../constants';
36
36
 
37
37
  const MeetingInfoUtil: any = {};
@@ -62,9 +62,10 @@ MeetingInfoUtil.getParsedUrl = (link) => {
62
62
  }
63
63
 
64
64
  return parsedUrl;
65
- }
66
- catch (error) {
67
- LoggerProxy.logger.warn(`Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`);
65
+ } catch (error) {
66
+ LoggerProxy.logger.warn(
67
+ `Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`
68
+ );
68
69
 
69
70
  return null;
70
71
  }
@@ -78,7 +79,11 @@ MeetingInfoUtil.getParsedUrl = (link) => {
78
79
  MeetingInfoUtil.isMeetingLink = (value: string) => {
79
80
  const parsedUrl = MeetingInfoUtil.getParsedUrl(value);
80
81
  const hostNameBool = parsedUrl.hostname && parsedUrl.hostname.includes(WEBEX_DOT_COM);
81
- const pathNameBool = parsedUrl.pathname && (parsedUrl.pathname.includes(`/${MEET}`) || parsedUrl.pathname.includes(`/${MEET_M}`) || parsedUrl.pathname.includes(`/${JOIN}`));
82
+ const pathNameBool =
83
+ parsedUrl.pathname &&
84
+ (parsedUrl.pathname.includes(`/${MEET}`) ||
85
+ parsedUrl.pathname.includes(`/${MEET_M}`) ||
86
+ parsedUrl.pathname.includes(`/${JOIN}`));
82
87
 
83
88
  return hostNameBool && pathNameBool;
84
89
  };
@@ -123,7 +128,6 @@ MeetingInfoUtil.convertLinkToSip = (value) => {
123
128
  return `${user}@${company}.${WEBEX_DOT_COM}`;
124
129
  };
125
130
 
126
-
127
131
  MeetingInfoUtil.isSipUri = (sipString) => {
128
132
  // TODO: lets remove regex from this equation and user URI matchers and such
129
133
  // have not found a great sip uri parser library as of now
@@ -155,15 +159,21 @@ MeetingInfoUtil.getHydraId = (destination) => {
155
159
  return {};
156
160
  };
157
161
 
158
- MeetingInfoUtil.getSipUriFromHydraPersonId = (destination, webex) => webex.people.get(destination).then((res) => {
159
- if (res.emails && res.emails.length) {
160
- return res.emails[0];
161
- }
162
- throw new ParameterError('Hydra Id Lookup was an invalid hydra person id.');
163
- }).catch((err) => {
164
- LoggerProxy.logger.error(`Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ${err} `);
165
- throw err;
166
- });
162
+ MeetingInfoUtil.getSipUriFromHydraPersonId = (destination, webex) =>
163
+ webex.people
164
+ .get(destination)
165
+ .then((res) => {
166
+ if (res.emails && res.emails.length) {
167
+ return res.emails[0];
168
+ }
169
+ throw new ParameterError('Hydra Id Lookup was an invalid hydra person id.');
170
+ })
171
+ .catch((err) => {
172
+ LoggerProxy.logger.error(
173
+ `Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ${err} `
174
+ );
175
+ throw err;
176
+ });
167
177
 
168
178
  MeetingInfoUtil.generateOptions = async (from) => {
169
179
  const {destination, type, webex} = from;
@@ -171,31 +181,29 @@ MeetingInfoUtil.generateOptions = async (from) => {
171
181
  if (type) {
172
182
  return {
173
183
  destination,
174
- type
184
+ type,
175
185
  };
176
186
  }
177
187
  const options: any = {};
178
188
  const hydraId = MeetingInfoUtil.getHydraId(destination);
179
189
 
180
190
  if (MeetingInfoUtil.isMeetingLink(destination)) {
181
- LoggerProxy.logger.warn('Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead');
191
+ LoggerProxy.logger.warn(
192
+ 'Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead'
193
+ );
182
194
 
183
195
  options.type = _MEETING_LINK_;
184
196
  options.destination = destination;
185
- }
186
- else if (MeetingInfoUtil.isSipUri(destination)) {
197
+ } else if (MeetingInfoUtil.isSipUri(destination)) {
187
198
  options.type = _SIP_URI_;
188
199
  options.destination = destination;
189
- }
190
- else if (MeetingInfoUtil.isPhoneNumber(destination)) {
200
+ } else if (MeetingInfoUtil.isPhoneNumber(destination)) {
191
201
  options.type = _SIP_URI_;
192
202
  options.destination = destination;
193
- }
194
- else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {
203
+ } else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {
195
204
  options.type = _CONVERSATION_URL_;
196
205
  options.destination = destination;
197
- }
198
- else if (hydraId.people) {
206
+ } else if (hydraId.people) {
199
207
  options.type = _SIP_URI_;
200
208
 
201
209
  return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId.destination, webex).then((res) => {
@@ -208,26 +216,25 @@ MeetingInfoUtil.generateOptions = async (from) => {
208
216
 
209
217
  return Promise.resolve(options);
210
218
  });
211
- }
212
- else if (hydraId.room) {
219
+ } else if (hydraId.room) {
213
220
  options.type = _CONVERSATION_URL_;
214
221
  try {
215
222
  await webex.internal.services.waitForCatalog('postauth');
216
223
 
217
224
  const conversationUrl = webex.internal.conversation.getUrlFromClusterId({
218
225
  cluster: hydraId.cluster,
219
- id: hydraId.destination
226
+ id: hydraId.destination,
220
227
  });
221
228
 
222
229
  options.destination = conversationUrl;
223
- }
224
- catch (e) {
230
+ } catch (e) {
225
231
  LoggerProxy.logger.error(`Meeting-info:util#generateOptions --> ${e}`);
226
- throw (e);
232
+ throw e;
227
233
  }
228
- }
229
- else {
230
- throw new ParameterError('MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.');
234
+ } else {
235
+ throw new ParameterError(
236
+ 'MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.'
237
+ );
231
238
  }
232
239
 
233
240
  return Promise.resolve(options);
@@ -248,7 +255,9 @@ MeetingInfoUtil.getResourceUrl = (type: string, value: any) => {
248
255
  case _SIP_URI_:
249
256
  case _PERSONAL_ROOM_:
250
257
  case _MEETING_ID_:
251
- resource = `/${LOCI}/${MEETINGINFO}/${encodeURIComponent(value)}?${TYPE}=${type}&${USE_URI_LOOKUP_FALSE}`;
258
+ resource = `/${LOCI}/${MEETINGINFO}/${encodeURIComponent(
259
+ value
260
+ )}?${TYPE}=${type}&${USE_URI_LOOKUP_FALSE}`;
252
261
  break;
253
262
  case _CONVERSATION_URL_:
254
263
  method = HTTP_VERBS.PUT;
@@ -258,7 +267,9 @@ MeetingInfoUtil.getResourceUrl = (type: string, value: any) => {
258
267
  method = HTTP_VERBS.PUT;
259
268
  break;
260
269
  case _MEETING_LINK_:
261
- resource = `$/${LOCI}/${MEETINGINFO}/${btoa(value)}?${TYPE}=${_MEETING_LINK_}&${USE_URI_LOOKUP_FALSE}`;
270
+ resource = `$/${LOCI}/${MEETINGINFO}/${btoa(
271
+ value
272
+ )}?${TYPE}=${_MEETING_LINK_}&${USE_URI_LOOKUP_FALSE}`;
262
273
  break;
263
274
  default:
264
275
  }
@@ -266,7 +277,7 @@ MeetingInfoUtil.getResourceUrl = (type: string, value: any) => {
266
277
  return {
267
278
  uri,
268
279
  resource,
269
- method
280
+ method,
270
281
  };
271
282
  };
272
283
 
@@ -274,26 +285,23 @@ MeetingInfoUtil.getRequestParams = (resourceOptions, type, value, api) => {
274
285
  let requestParams: any = {
275
286
  method: resourceOptions.method,
276
287
  api,
277
- resource: resourceOptions.resource
288
+ resource: resourceOptions.resource,
278
289
  };
279
290
 
280
291
  if (resourceOptions.method === HTTP_VERBS.GET) {
281
292
  // for handling URL redirections
282
293
  requestParams.resource = requestParams.resource.concat(`&${ALTERNATE_REDIRECT_TRUE}`);
283
- }
284
- else
285
- if (type !== _LOCUS_ID_) {
294
+ } else if (type !== _LOCUS_ID_) {
286
295
  // locus id check is a PUT not sure why
287
296
  requestParams.resource = requestParams.resource.concat(`?${ALTERNATE_REDIRECT_TRUE}`);
288
297
  requestParams.body = {
289
298
  value,
290
- lookupType: type
299
+ lookupType: type,
291
300
  };
292
- }
293
- else if (type === _LOCUS_ID_) {
301
+ } else if (type === _LOCUS_ID_) {
294
302
  requestParams = {
295
303
  method: resourceOptions.method,
296
- uri: resourceOptions.uri
304
+ uri: resourceOptions.uri,
297
305
  };
298
306
  }
299
307
 
@@ -2,7 +2,7 @@ import url from 'url';
2
2
 
3
3
  import {
4
4
  // @ts-ignore
5
- deconstructHydraId
5
+ deconstructHydraId,
6
6
  } from '@webex/common';
7
7
 
8
8
  import {
@@ -23,7 +23,7 @@ import {
23
23
  MEET_M,
24
24
  HTTPS_PROTOCOL,
25
25
  UUID_REG,
26
- VALID_EMAIL_ADDRESS
26
+ VALID_EMAIL_ADDRESS,
27
27
  } from '../constants';
28
28
  import ParameterError from '../common/errors/parameter';
29
29
  import LoggerProxy from '../common/logs/logger-proxy';
@@ -43,9 +43,10 @@ MeetingInfoUtil.getParsedUrl = (link) => {
43
43
  }
44
44
 
45
45
  return parsedUrl;
46
- }
47
- catch (error) {
48
- LoggerProxy.logger.warn(`Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`);
46
+ } catch (error) {
47
+ LoggerProxy.logger.warn(
48
+ `Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`
49
+ );
49
50
 
50
51
  return null;
51
52
  }
@@ -59,7 +60,11 @@ MeetingInfoUtil.getParsedUrl = (link) => {
59
60
  MeetingInfoUtil.isMeetingLink = (value: string) => {
60
61
  const parsedUrl = MeetingInfoUtil.getParsedUrl(value);
61
62
  const hostNameBool = parsedUrl.hostname && parsedUrl.hostname.includes(WEBEX_DOT_COM);
62
- const pathNameBool = parsedUrl.pathname && (parsedUrl.pathname.includes(`/${MEET}`) || parsedUrl.pathname.includes(`/${MEET_M}`) || parsedUrl.pathname.includes(`/${JOIN}`));
63
+ const pathNameBool =
64
+ parsedUrl.pathname &&
65
+ (parsedUrl.pathname.includes(`/${MEET}`) ||
66
+ parsedUrl.pathname.includes(`/${MEET_M}`) ||
67
+ parsedUrl.pathname.includes(`/${JOIN}`));
63
68
 
64
69
  return hostNameBool && pathNameBool;
65
70
  };
@@ -74,7 +79,6 @@ MeetingInfoUtil.isConversationUrl = (value, webex) => {
74
79
  return false;
75
80
  };
76
81
 
77
-
78
82
  MeetingInfoUtil.isSipUri = (sipString) => {
79
83
  // TODO: lets remove regex from this equation and user URI matchers and such
80
84
  // have not found a great sip uri parser library as of now
@@ -106,30 +110,38 @@ MeetingInfoUtil.getHydraId = (destination) => {
106
110
  return {};
107
111
  };
108
112
 
109
- MeetingInfoUtil.getSipUriFromHydraPersonId = (destination, webex) => webex.people.get(destination).then((res) => {
110
- if (res.emails && res.emails.length) {
111
- return res.emails[0];
112
- }
113
- throw new ParameterError('Hydra Id Lookup was an invalid hydra person id.');
114
- }).catch((err) => {
115
- LoggerProxy.logger.error(`Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ${err} `);
116
- throw err;
117
- });
118
-
113
+ MeetingInfoUtil.getSipUriFromHydraPersonId = (destination, webex) =>
114
+ webex.people
115
+ .get(destination)
116
+ .then((res) => {
117
+ if (res.emails && res.emails.length) {
118
+ return res.emails[0];
119
+ }
120
+ throw new ParameterError('Hydra Id Lookup was an invalid hydra person id.');
121
+ })
122
+ .catch((err) => {
123
+ LoggerProxy.logger.error(
124
+ `Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ${err} `
125
+ );
126
+ throw err;
127
+ });
119
128
 
120
129
  MeetingInfoUtil.getDestinationType = async (from) => {
121
130
  const {type, webex} = from;
122
131
  let {destination} = from;
123
132
 
124
- if (type === _PERSONAL_ROOM_) { // this case checks if your type is personal room
125
- if (!destination) { // if we are not getting anything in desination we fetch org and user ids from webex instance
133
+ if (type === _PERSONAL_ROOM_) {
134
+ // this case checks if your type is personal room
135
+ if (!destination) {
136
+ // if we are not getting anything in desination we fetch org and user ids from webex instance
126
137
  destination = {
127
138
  userId: webex.internal.device.userId,
128
- orgId: webex.internal.device.orgId
139
+ orgId: webex.internal.device.orgId,
129
140
  };
130
- }
131
- else {
132
- const options = VALID_EMAIL_ADDRESS.test(destination) ? {email: destination} : {id: destination};// we are assuming userId as default
141
+ } else {
142
+ const options = VALID_EMAIL_ADDRESS.test(destination)
143
+ ? {email: destination}
144
+ : {id: destination}; // we are assuming userId as default
133
145
  const res = await webex.people.list(options);
134
146
 
135
147
  let {orgId, id: userId} = res.items[0];
@@ -142,31 +154,29 @@ MeetingInfoUtil.getDestinationType = async (from) => {
142
154
  if (type) {
143
155
  return {
144
156
  destination,
145
- type
157
+ type,
146
158
  };
147
159
  }
148
160
  const options: any = {};
149
161
  const hydraId = MeetingInfoUtil.getHydraId(destination);
150
162
 
151
163
  if (MeetingInfoUtil.isMeetingLink(destination)) {
152
- LoggerProxy.logger.warn('Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead');
164
+ LoggerProxy.logger.warn(
165
+ 'Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead'
166
+ );
153
167
 
154
168
  options.type = _MEETING_LINK_;
155
169
  options.destination = destination;
156
- }
157
- else if (MeetingInfoUtil.isSipUri(destination)) {
170
+ } else if (MeetingInfoUtil.isSipUri(destination)) {
158
171
  options.type = _SIP_URI_;
159
172
  options.destination = destination;
160
- }
161
- else if (MeetingInfoUtil.isPhoneNumber(destination)) {
173
+ } else if (MeetingInfoUtil.isPhoneNumber(destination)) {
162
174
  options.type = _SIP_URI_;
163
175
  options.destination = destination;
164
- }
165
- else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {
176
+ } else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {
166
177
  options.type = _CONVERSATION_URL_;
167
178
  options.destination = destination;
168
- }
169
- else if (hydraId.people) {
179
+ } else if (hydraId.people) {
170
180
  options.type = _SIP_URI_;
171
181
 
172
182
  return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId.destination, webex).then((res) => {
@@ -179,27 +189,28 @@ MeetingInfoUtil.getDestinationType = async (from) => {
179
189
 
180
190
  return Promise.resolve(options);
181
191
  });
182
- }
183
- else if (hydraId.room) {
192
+ } else if (hydraId.room) {
184
193
  options.type = _CONVERSATION_URL_;
185
194
  try {
186
195
  await webex.internal.services.waitForCatalog('postauth');
187
196
 
188
197
  const conversationUrl = webex.internal.conversation.getUrlFromClusterId({
189
198
  cluster: hydraId.cluster,
190
- id: hydraId.destination
199
+ id: hydraId.destination,
191
200
  });
192
201
 
193
202
  options.destination = conversationUrl;
194
- }
195
- catch (e) {
203
+ } catch (e) {
196
204
  LoggerProxy.logger.error(`Meeting-info:util#getDestinationType --> ${e}`);
197
- throw (e);
205
+ throw e;
198
206
  }
199
- }
200
- else {
201
- LoggerProxy.logger.warn('Meeting-info:util#getDestinationType --> (\'MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.');
202
- throw new ParameterError('MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.');
207
+ } else {
208
+ LoggerProxy.logger.warn(
209
+ "Meeting-info:util#getDestinationType --> ('MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url."
210
+ );
211
+ throw new ParameterError(
212
+ 'MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.'
213
+ );
203
214
  }
204
215
 
205
216
  return Promise.resolve(options);
@@ -212,10 +223,8 @@ MeetingInfoUtil.getDestinationType = async (from) => {
212
223
  * @param {Object} options.destination ?? value.value
213
224
  * @returns {Object} returns an object with {resource, method}
214
225
  */
215
- MeetingInfoUtil.getRequestBody = (options: { type: string; destination: object } | any) => {
216
- const {
217
- type, destination, password, captchaInfo
218
- } = options;
226
+ MeetingInfoUtil.getRequestBody = (options: {type: string; destination: object} | any) => {
227
+ const {type, destination, password, captchaInfo} = options;
219
228
  const body: any = {
220
229
  supportHostKey: true,
221
230
  supportCountryList: true,
@@ -239,8 +248,7 @@ MeetingInfoUtil.getRequestBody = (options: { type: string; destination: object }
239
248
  // use meetingID for the completer meeting info for the already started meeting
240
249
  if (destination.info?.webExMeetingId) {
241
250
  body.meetingKey = destination.info.webExMeetingId;
242
- }
243
- else if (destination.info?.sipUri) {
251
+ } else if (destination.info?.sipUri) {
244
252
  body.sipUrl = destination.info.sipUri;
245
253
  }
246
254
  break;
@@ -285,10 +293,8 @@ MeetingInfoUtil.getWebexSite = (uri: string) => {
285
293
  * @param {Object} options.destination ?? value.value
286
294
  * @returns {String} returns a URI string or null of there is no direct URI
287
295
  */
288
- MeetingInfoUtil.getDirectMeetingInfoURI = (options: { type: string; destination: any }) => {
289
- const {
290
- type, destination
291
- } = options;
296
+ MeetingInfoUtil.getDirectMeetingInfoURI = (options: {type: string; destination: any}) => {
297
+ const {type, destination} = options;
292
298
 
293
299
  let preferredWebexSite = null;
294
300
 
@@ -35,7 +35,7 @@ export default class MeetingCollection extends Collection {
35
35
  public getByKey(key: string, value: any) {
36
36
  if (key && value) {
37
37
  // @ts-ignore
38
- return find(this.meetings, (meeting) => (meeting[key] === value));
38
+ return find(this.meetings, (meeting) => meeting[key] === value);
39
39
  }
40
40
 
41
41
  return null;