@webex/plugin-meetings 3.0.0-beta.2 → 3.0.0-beta.21

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 (365) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +116 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/index.js +226 -0
  8. package/dist/breakouts/index.js.map +1 -0
  9. package/dist/common/browser-detection.js +1 -20
  10. package/dist/common/browser-detection.js.map +1 -1
  11. package/dist/common/collection.js +5 -20
  12. package/dist/common/collection.js.map +1 -1
  13. package/dist/common/config.js +0 -7
  14. package/dist/common/config.js.map +1 -1
  15. package/dist/common/errors/captcha-error.js +10 -24
  16. package/dist/common/errors/captcha-error.js.map +1 -1
  17. package/dist/common/errors/intent-to-join.js +11 -24
  18. package/dist/common/errors/intent-to-join.js.map +1 -1
  19. package/dist/common/errors/join-meeting.js +12 -25
  20. package/dist/common/errors/join-meeting.js.map +1 -1
  21. package/dist/common/errors/media.js +10 -24
  22. package/dist/common/errors/media.js.map +1 -1
  23. package/dist/common/errors/parameter.js +5 -33
  24. package/dist/common/errors/parameter.js.map +1 -1
  25. package/dist/common/errors/password-error.js +10 -24
  26. package/dist/common/errors/password-error.js.map +1 -1
  27. package/dist/common/errors/permission.js +9 -23
  28. package/dist/common/errors/permission.js.map +1 -1
  29. package/dist/common/errors/reconnection-in-progress.js +0 -17
  30. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  31. package/dist/common/errors/reconnection.js +10 -24
  32. package/dist/common/errors/reconnection.js.map +1 -1
  33. package/dist/common/errors/stats.js +10 -24
  34. package/dist/common/errors/stats.js.map +1 -1
  35. package/dist/common/errors/webex-errors.js +6 -41
  36. package/dist/common/errors/webex-errors.js.map +1 -1
  37. package/dist/common/errors/webex-meetings-error.js +5 -25
  38. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  39. package/dist/common/events/events-scope.js +0 -22
  40. package/dist/common/events/events-scope.js.map +1 -1
  41. package/dist/common/events/events.js +0 -23
  42. package/dist/common/events/events.js.map +1 -1
  43. package/dist/common/events/trigger-proxy.js +0 -12
  44. package/dist/common/events/trigger-proxy.js.map +1 -1
  45. package/dist/common/events/util.js +0 -15
  46. package/dist/common/events/util.js.map +1 -1
  47. package/dist/common/logs/logger-config.js +0 -4
  48. package/dist/common/logs/logger-config.js.map +1 -1
  49. package/dist/common/logs/logger-proxy.js +1 -8
  50. package/dist/common/logs/logger-proxy.js.map +1 -1
  51. package/dist/common/logs/request.js +37 -60
  52. package/dist/common/logs/request.js.map +1 -1
  53. package/dist/common/queue.js +4 -14
  54. package/dist/common/queue.js.map +1 -1
  55. package/dist/config.js +6 -6
  56. package/dist/config.js.map +1 -1
  57. package/dist/constants.js +88 -46
  58. package/dist/constants.js.map +1 -1
  59. package/dist/index.js +4 -18
  60. package/dist/index.js.map +1 -1
  61. package/dist/locus-info/controlsUtils.js +12 -29
  62. package/dist/locus-info/controlsUtils.js.map +1 -1
  63. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  64. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  65. package/dist/locus-info/fullState.js +0 -15
  66. package/dist/locus-info/fullState.js.map +1 -1
  67. package/dist/locus-info/hostUtils.js +4 -12
  68. package/dist/locus-info/hostUtils.js.map +1 -1
  69. package/dist/locus-info/index.js +184 -190
  70. package/dist/locus-info/index.js.map +1 -1
  71. package/dist/locus-info/infoUtils.js +3 -37
  72. package/dist/locus-info/infoUtils.js.map +1 -1
  73. package/dist/locus-info/mediaSharesUtils.js +12 -38
  74. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  75. package/dist/locus-info/parser.js +92 -118
  76. package/dist/locus-info/parser.js.map +1 -1
  77. package/dist/locus-info/selfUtils.js +34 -91
  78. package/dist/locus-info/selfUtils.js.map +1 -1
  79. package/dist/media/index.js +67 -111
  80. package/dist/media/index.js.map +1 -1
  81. package/dist/media/properties.js +80 -114
  82. package/dist/media/properties.js.map +1 -1
  83. package/dist/media/util.js +2 -9
  84. package/dist/media/util.js.map +1 -1
  85. package/dist/mediaQualityMetrics/config.js +10 -12
  86. package/dist/mediaQualityMetrics/config.js.map +1 -1
  87. package/dist/meeting/effectsState.js +125 -190
  88. package/dist/meeting/effectsState.js.map +1 -1
  89. package/dist/meeting/in-meeting-actions.js +5 -14
  90. package/dist/meeting/in-meeting-actions.js.map +1 -1
  91. package/dist/meeting/index.js +1692 -1925
  92. package/dist/meeting/index.js.map +1 -1
  93. package/dist/meeting/muteState.js +36 -77
  94. package/dist/meeting/muteState.js.map +1 -1
  95. package/dist/meeting/request.js +224 -230
  96. package/dist/meeting/request.js.map +1 -1
  97. package/dist/meeting/request.type.js +7 -0
  98. package/dist/meeting/request.type.js.map +1 -0
  99. package/dist/meeting/state.js +21 -31
  100. package/dist/meeting/state.js.map +1 -1
  101. package/dist/meeting/util.js +43 -215
  102. package/dist/meeting/util.js.map +1 -1
  103. package/dist/meeting-info/collection.js +6 -25
  104. package/dist/meeting-info/collection.js.map +1 -1
  105. package/dist/meeting-info/index.js +14 -32
  106. package/dist/meeting-info/index.js.map +1 -1
  107. package/dist/meeting-info/meeting-info-v2.js +193 -268
  108. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  109. package/dist/meeting-info/request.js +3 -15
  110. package/dist/meeting-info/request.js.map +1 -1
  111. package/dist/meeting-info/util.js +98 -183
  112. package/dist/meeting-info/util.js.map +1 -1
  113. package/dist/meeting-info/utilv2.js +137 -228
  114. package/dist/meeting-info/utilv2.js.map +1 -1
  115. package/dist/meetings/collection.js +5 -20
  116. package/dist/meetings/collection.js.map +1 -1
  117. package/dist/meetings/index.js +490 -560
  118. package/dist/meetings/index.js.map +1 -1
  119. package/dist/meetings/request.js +24 -41
  120. package/dist/meetings/request.js.map +1 -1
  121. package/dist/meetings/util.js +99 -155
  122. package/dist/meetings/util.js.map +1 -1
  123. package/dist/member/index.js +78 -86
  124. package/dist/member/index.js.map +1 -1
  125. package/dist/member/util.js +31 -68
  126. package/dist/member/util.js.map +1 -1
  127. package/dist/members/collection.js +3 -12
  128. package/dist/members/collection.js.map +1 -1
  129. package/dist/members/index.js +93 -200
  130. package/dist/members/index.js.map +1 -1
  131. package/dist/members/request.js +16 -39
  132. package/dist/members/request.js.map +1 -1
  133. package/dist/members/util.js +9 -38
  134. package/dist/members/util.js.map +1 -1
  135. package/dist/metrics/config.js +0 -2
  136. package/dist/metrics/config.js.map +1 -1
  137. package/dist/metrics/constants.js +1 -2
  138. package/dist/metrics/constants.js.map +1 -1
  139. package/dist/metrics/index.js +55 -135
  140. package/dist/metrics/index.js.map +1 -1
  141. package/dist/multistream/mediaRequestManager.js +57 -32
  142. package/dist/multistream/mediaRequestManager.js.map +1 -1
  143. package/dist/multistream/multistreamMedia.js +15 -21
  144. package/dist/multistream/multistreamMedia.js.map +1 -1
  145. package/dist/multistream/receiveSlot.js +10 -50
  146. package/dist/multistream/receiveSlot.js.map +1 -1
  147. package/dist/multistream/receiveSlotManager.js +45 -82
  148. package/dist/multistream/receiveSlotManager.js.map +1 -1
  149. package/dist/multistream/remoteMedia.js +18 -58
  150. package/dist/multistream/remoteMedia.js.map +1 -1
  151. package/dist/multistream/remoteMediaGroup.js +6 -40
  152. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  153. package/dist/multistream/remoteMediaManager.js +362 -416
  154. package/dist/multistream/remoteMediaManager.js.map +1 -1
  155. package/dist/networkQualityMonitor/index.js +36 -57
  156. package/dist/networkQualityMonitor/index.js.map +1 -1
  157. package/dist/personal-meeting-room/index.js +21 -45
  158. package/dist/personal-meeting-room/index.js.map +1 -1
  159. package/dist/personal-meeting-room/request.js +1 -31
  160. package/dist/personal-meeting-room/request.js.map +1 -1
  161. package/dist/personal-meeting-room/util.js +0 -13
  162. package/dist/personal-meeting-room/util.js.map +1 -1
  163. package/dist/reachability/index.js +138 -182
  164. package/dist/reachability/index.js.map +1 -1
  165. package/dist/reachability/request.js +3 -18
  166. package/dist/reachability/request.js.map +1 -1
  167. package/dist/reactions/constants.js +13 -0
  168. package/dist/reactions/constants.js.map +1 -0
  169. package/dist/reactions/reactions.js +109 -0
  170. package/dist/reactions/reactions.js.map +1 -0
  171. package/dist/reactions/reactions.type.js +36 -0
  172. package/dist/reactions/reactions.type.js.map +1 -0
  173. package/dist/reconnection-manager/index.js +322 -455
  174. package/dist/reconnection-manager/index.js.map +1 -1
  175. package/dist/recording-controller/enums.js +17 -0
  176. package/dist/recording-controller/enums.js.map +1 -0
  177. package/dist/recording-controller/index.js +343 -0
  178. package/dist/recording-controller/index.js.map +1 -0
  179. package/dist/recording-controller/util.js +63 -0
  180. package/dist/recording-controller/util.js.map +1 -0
  181. package/dist/roap/index.js +39 -64
  182. package/dist/roap/index.js.map +1 -1
  183. package/dist/roap/request.js +94 -113
  184. package/dist/roap/request.js.map +1 -1
  185. package/dist/roap/turnDiscovery.js +85 -94
  186. package/dist/roap/turnDiscovery.js.map +1 -1
  187. package/dist/statsAnalyzer/global.js +0 -2
  188. package/dist/statsAnalyzer/global.js.map +1 -1
  189. package/dist/statsAnalyzer/index.js +85 -175
  190. package/dist/statsAnalyzer/index.js.map +1 -1
  191. package/dist/statsAnalyzer/mqaUtil.js +72 -53
  192. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  193. package/dist/transcription/index.js +22 -47
  194. package/dist/transcription/index.js.map +1 -1
  195. package/internal-README.md +7 -6
  196. package/package.json +25 -20
  197. package/src/breakouts/README.md +190 -0
  198. package/src/breakouts/breakout.ts +110 -0
  199. package/src/breakouts/collection.ts +19 -0
  200. package/src/breakouts/index.ts +225 -0
  201. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  202. package/src/common/collection.ts +9 -7
  203. package/src/common/{config.js → config.ts} +1 -1
  204. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  205. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  206. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  207. package/src/common/errors/{media.js → media.ts} +11 -7
  208. package/src/common/errors/parameter.ts +11 -7
  209. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  210. package/src/common/errors/{permission.js → permission.ts} +10 -6
  211. package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
  212. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  213. package/src/common/errors/{stats.js → stats.ts} +11 -7
  214. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  215. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  216. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  217. package/src/common/events/{events.js → events.ts} +5 -1
  218. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  219. package/src/common/events/{util.js → util.ts} +2 -3
  220. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  221. package/src/common/logs/logger-proxy.ts +44 -0
  222. package/src/common/logs/{request.js → request.ts} +22 -9
  223. package/src/common/queue.ts +1 -2
  224. package/src/{config.js → config.ts} +17 -12
  225. package/src/constants.ts +40 -1
  226. package/src/index.js +2 -1
  227. package/src/locus-info/controlsUtils.ts +114 -0
  228. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  229. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  230. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  231. package/src/locus-info/{index.js → index.ts} +148 -64
  232. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  233. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  234. package/src/locus-info/{parser.js → parser.ts} +67 -79
  235. package/src/locus-info/{selfUtils.js → selfUtils.ts} +123 -68
  236. package/src/media/{index.js → index.ts} +181 -131
  237. package/src/media/{properties.js → properties.ts} +47 -28
  238. package/src/media/{util.js → util.ts} +2 -2
  239. package/src/mediaQualityMetrics/{config.js → config.ts} +46 -46
  240. package/src/meeting/{effectsState.js → effectsState.ts} +47 -41
  241. package/src/meeting/in-meeting-actions.ts +15 -3
  242. package/src/meeting/{index.js → index.ts} +2263 -1427
  243. package/src/meeting/{muteState.js → muteState.ts} +78 -42
  244. package/src/meeting/{request.js → request.ts} +292 -142
  245. package/src/meeting/request.type.ts +13 -0
  246. package/src/meeting/{state.js → state.ts} +50 -35
  247. package/src/meeting/{util.js → util.ts} +112 -115
  248. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  249. package/src/meeting-info/{index.js → index.ts} +42 -36
  250. package/src/meeting-info/meeting-info-v2.ts +273 -0
  251. package/src/meeting-info/{request.js → request.ts} +14 -4
  252. package/src/meeting-info/{util.js → util.ts} +60 -51
  253. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  254. package/src/meetings/{collection.js → collection.ts} +6 -3
  255. package/src/meetings/index.ts +1159 -0
  256. package/src/meetings/{request.js → request.ts} +32 -25
  257. package/src/meetings/{util.js → util.ts} +34 -32
  258. package/src/member/{index.js → index.ts} +102 -56
  259. package/src/member/{util.js → util.ts} +52 -25
  260. package/src/members/{collection.js → collection.ts} +2 -2
  261. package/src/members/{index.js → index.ts} +219 -142
  262. package/src/members/{request.js → request.ts} +60 -16
  263. package/src/members/{util.js → util.ts} +50 -48
  264. package/src/metrics/{config.js → config.ts} +254 -83
  265. package/src/metrics/{constants.js → constants.ts} +0 -2
  266. package/src/metrics/{index.js → index.ts} +106 -74
  267. package/src/multistream/mediaRequestManager.ts +81 -15
  268. package/src/multistream/multistreamMedia.ts +5 -0
  269. package/src/multistream/receiveSlot.ts +18 -12
  270. package/src/multistream/receiveSlotManager.ts +23 -21
  271. package/src/multistream/remoteMedia.ts +15 -5
  272. package/src/multistream/remoteMediaGroup.ts +4 -3
  273. package/src/multistream/remoteMediaManager.ts +153 -37
  274. package/src/networkQualityMonitor/{index.js → index.ts} +37 -25
  275. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  276. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  277. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  278. package/src/reachability/{index.js → index.ts} +99 -83
  279. package/src/reachability/request.ts +39 -33
  280. package/src/reactions/constants.ts +4 -0
  281. package/src/reactions/reactions.ts +104 -0
  282. package/src/reactions/reactions.type.ts +62 -0
  283. package/src/reconnection-manager/{index.js → index.ts} +195 -102
  284. package/src/recording-controller/enums.ts +8 -0
  285. package/src/recording-controller/index.ts +315 -0
  286. package/src/recording-controller/util.ts +58 -0
  287. package/src/roap/{index.js → index.ts} +73 -56
  288. package/src/roap/request.ts +157 -0
  289. package/src/roap/turnDiscovery.ts +77 -37
  290. package/src/statsAnalyzer/{global.js → global.ts} +30 -33
  291. package/src/statsAnalyzer/{index.js → index.ts} +468 -192
  292. package/src/statsAnalyzer/mqaUtil.ts +290 -0
  293. package/src/transcription/{index.js → index.ts} +46 -39
  294. package/test/integration/spec/journey.js +664 -463
  295. package/test/integration/spec/space-meeting.js +320 -206
  296. package/test/integration/spec/transcription.js +7 -8
  297. package/test/unit/spec/breakouts/breakout.ts +119 -0
  298. package/test/unit/spec/breakouts/collection.ts +15 -0
  299. package/test/unit/spec/breakouts/index.ts +293 -0
  300. package/test/unit/spec/common/browser-detection.js +9 -28
  301. package/test/unit/spec/fixture/locus.js +92 -90
  302. package/test/unit/spec/locus-info/controlsUtils.js +25 -5
  303. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  304. package/test/unit/spec/locus-info/index.js +104 -2
  305. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  306. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  307. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  308. package/test/unit/spec/locus-info/parser.js +3 -9
  309. package/test/unit/spec/locus-info/selfConstant.js +97 -103
  310. package/test/unit/spec/locus-info/selfUtils.js +105 -12
  311. package/test/unit/spec/media/index.ts +31 -47
  312. package/test/unit/spec/media/properties.ts +9 -9
  313. package/test/unit/spec/meeting/effectsState.js +39 -45
  314. package/test/unit/spec/meeting/in-meeting-actions.ts +5 -2
  315. package/test/unit/spec/meeting/index.js +2017 -742
  316. package/test/unit/spec/meeting/muteState.js +42 -33
  317. package/test/unit/spec/meeting/request.js +115 -44
  318. package/test/unit/spec/meeting/utils.js +104 -171
  319. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  320. package/test/unit/spec/meeting-info/request.js +7 -9
  321. package/test/unit/spec/meeting-info/util.js +11 -12
  322. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  323. package/test/unit/spec/meetings/collection.js +1 -1
  324. package/test/unit/spec/meetings/index.js +439 -257
  325. package/test/unit/spec/meetings/utils.js +14 -12
  326. package/test/unit/spec/member/index.js +0 -1
  327. package/test/unit/spec/member/util.js +31 -7
  328. package/test/unit/spec/members/index.js +104 -54
  329. package/test/unit/spec/members/request.js +29 -20
  330. package/test/unit/spec/members/utils.js +8 -5
  331. package/test/unit/spec/metrics/index.js +16 -21
  332. package/test/unit/spec/multistream/mediaRequestManager.ts +316 -50
  333. package/test/unit/spec/multistream/receiveSlot.ts +6 -6
  334. package/test/unit/spec/multistream/receiveSlotManager.ts +13 -13
  335. package/test/unit/spec/multistream/remoteMedia.ts +10 -2
  336. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  337. package/test/unit/spec/multistream/remoteMediaManager.ts +412 -65
  338. package/test/unit/spec/networkQualityMonitor/index.js +21 -15
  339. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  340. package/test/unit/spec/reachability/index.ts +58 -26
  341. package/test/unit/spec/reconnection-manager/index.js +102 -9
  342. package/test/unit/spec/recording-controller/index.js +231 -0
  343. package/test/unit/spec/recording-controller/util.js +102 -0
  344. package/test/unit/spec/roap/index.ts +2 -1
  345. package/test/unit/spec/roap/request.ts +114 -0
  346. package/test/unit/spec/roap/turnDiscovery.ts +64 -45
  347. package/test/unit/spec/stats-analyzer/index.js +27 -22
  348. package/test/utils/cmr.js +44 -42
  349. package/test/utils/testUtils.js +83 -74
  350. package/test/utils/webex-config.js +18 -18
  351. package/test/utils/webex-test-users.js +54 -50
  352. package/tsconfig.json +6 -0
  353. package/dist/media/internal-media-core-wrapper.js +0 -22
  354. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  355. package/dist/peer-connection-manager/util.js +0 -124
  356. package/dist/peer-connection-manager/util.js.map +0 -1
  357. package/src/common/logs/logger-proxy.js +0 -33
  358. package/src/locus-info/controlsUtils.js +0 -102
  359. package/src/media/internal-media-core-wrapper.ts +0 -9
  360. package/src/meeting-info/meeting-info-v2.js +0 -255
  361. package/src/meetings/index.js +0 -1015
  362. package/src/peer-connection-manager/util.ts +0 -117
  363. package/src/roap/request.js +0 -127
  364. package/src/statsAnalyzer/mqaUtil.js +0 -173
  365. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
@@ -1 +1 @@
1
- {"version":3,"names":["MeetingInfoUtil","extractDestination","destination","type","dest","_LOCUS_ID_","url","ParameterError","getParsedUrl","link","parsedUrl","parse","protocol","HTTPS_PROTOCOL","error","LoggerProxy","logger","warn","isMeetingLink","value","hostNameBool","hostname","includes","WEBEX_DOT_COM","pathNameBool","pathname","MEET","MEET_M","JOIN","isConversationUrl","webex","clusterId","internal","services","getClusterId","endsWith","CONVERSATION_SERVICE","convertLinkToSip","user","userIndex","lastIndexOf","substring","company","companyIndex","replace","WWW_DOT","isSipUri","sipString","sipUri","DIALER_REGEX","SIP_ADDRESS","exec","isPhoneNumber","phoneNumber","isValidNumber","PHONE_NUMBER","test","getHydraId","deconstructHydraId","id","cluster","UUID_REG","_ROOM_","room","_PEOPLE_","people","getSipUriFromHydraPersonId","get","then","res","emails","length","catch","err","generateOptions","from","options","hydraId","_MEETING_LINK_","_SIP_URI_","_CONVERSATION_URL_","wasHydraPerson","resolve","waitForCatalog","conversationUrl","conversation","getUrlFromClusterId","getResourceUrl","resource","LOCI","MEETINGINFO","method","HTTP_VERBS","GET","uri","_PERSONAL_ROOM_","_MEETING_ID_","encodeURIComponent","TYPE","USE_URI_LOOKUP_FALSE","PUT","btoa","getRequestParams","resourceOptions","api","requestParams","concat","ALTERNATE_REDIRECT_TRUE","body","lookupType"],"sources":["util.js"],"sourcesContent":["import url from 'url';\n\nimport btoa from 'btoa';\nimport {\n deconstructHydraId\n} from '@webex/common';\n\nimport ParameterError from '../common/errors/parameter';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n _SIP_URI_,\n _PERSONAL_ROOM_,\n _MEETING_ID_,\n _CONVERSATION_URL_,\n _LOCUS_ID_,\n _MEETING_LINK_,\n _PEOPLE_,\n _ROOM_,\n HTTP_VERBS,\n USE_URI_LOOKUP_FALSE,\n TYPE,\n LOCI,\n MEETINGINFO,\n ALTERNATE_REDIRECT_TRUE,\n DIALER_REGEX,\n WEBEX_DOT_COM,\n CONVERSATION_SERVICE,\n WWW_DOT,\n JOIN,\n MEET,\n MEET_M,\n HTTPS_PROTOCOL,\n UUID_REG\n} from '../constants';\n\nconst MeetingInfoUtil = {};\n\nMeetingInfoUtil.extractDestination = (destination, type) => {\n let dest = destination;\n\n if (type === _LOCUS_ID_) {\n if (!(destination && destination.url)) {\n throw new ParameterError('You cannot create a meeting by locus without a locus.url defined');\n }\n dest = destination.url;\n }\n\n return dest;\n};\n\nMeetingInfoUtil.getParsedUrl = (link) => {\n try {\n let parsedUrl = url.parse(link);\n\n if (!parsedUrl) {\n return false;\n }\n // hack for links such as <company>.webex.com/meet/<user> without a protocol\n if (!parsedUrl.protocol) {\n parsedUrl = url.parse(`${HTTPS_PROTOCOL}${link}`);\n }\n\n return parsedUrl;\n }\n catch (error) {\n LoggerProxy.logger.warn(`Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`);\n\n return null;\n }\n};\n\n/**\n * Helper function to check if a string matches a known meeting link pattern\n * @param {String} value string to parse and see if it matches a meeting link\n * @returns {Boolean}\n */\nMeetingInfoUtil.isMeetingLink = (value) => {\n const parsedUrl = MeetingInfoUtil.getParsedUrl(value);\n const hostNameBool = parsedUrl.hostname && parsedUrl.hostname.includes(WEBEX_DOT_COM);\n const pathNameBool = parsedUrl.pathname && (parsedUrl.pathname.includes(`/${MEET}`) || parsedUrl.pathname.includes(`/${MEET_M}`) || parsedUrl.pathname.includes(`/${JOIN}`));\n\n return hostNameBool && pathNameBool;\n};\n\nMeetingInfoUtil.isConversationUrl = (value, webex) => {\n const clusterId = webex.internal.services.getClusterId(value);\n\n if (clusterId) {\n return clusterId.endsWith(CONVERSATION_SERVICE);\n }\n\n return false;\n};\n\nMeetingInfoUtil.convertLinkToSip = (value) => {\n const parsedUrl = MeetingInfoUtil.getParsedUrl(value);\n\n if (!parsedUrl) {\n return null;\n }\n let user;\n\n if (parsedUrl.pathname) {\n const userIndex = parsedUrl.pathname.lastIndexOf('/');\n\n user = parsedUrl.pathname.substring(userIndex + 1);\n }\n if (!user) {\n return null;\n }\n let company;\n\n if (parsedUrl.hostname) {\n const companyIndex = parsedUrl.hostname.lastIndexOf(`.${WEBEX_DOT_COM}`);\n\n company = parsedUrl.hostname.substring(0, companyIndex).replace(WWW_DOT, '');\n }\n if (!company) {\n return null;\n }\n\n return `${user}@${company}.${WEBEX_DOT_COM}`;\n};\n\n\nMeetingInfoUtil.isSipUri = (sipString) => {\n // TODO: lets remove regex from this equation and user URI matchers and such\n // have not found a great sip uri parser library as of now\n const sipUri = DIALER_REGEX.SIP_ADDRESS.exec(sipString);\n\n return sipUri;\n};\n\nMeetingInfoUtil.isPhoneNumber = (phoneNumber) => {\n const isValidNumber = DIALER_REGEX.PHONE_NUMBER.test(phoneNumber);\n\n return isValidNumber;\n};\n\nMeetingInfoUtil.getHydraId = (destination) => {\n const {type, id, cluster} = deconstructHydraId(destination);\n\n if (id && UUID_REG.test(id)) {\n if (type === _ROOM_) {\n return {room: true, destination: id, cluster};\n }\n if (type === _PEOPLE_) {\n return {people: true, destination: id, cluster};\n }\n\n return {};\n }\n\n return {};\n};\n\nMeetingInfoUtil.getSipUriFromHydraPersonId = (destination, webex) => webex.people.get(destination).then((res) => {\n if (res.emails && res.emails.length) {\n return res.emails[0];\n }\n throw new ParameterError('Hydra Id Lookup was an invalid hydra person id.');\n}).catch((err) => {\n LoggerProxy.logger.error(`Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ${err} `);\n throw err;\n});\n\nMeetingInfoUtil.generateOptions = async (from) => {\n const {destination, type, webex} = from;\n\n if (type) {\n return {\n destination,\n type\n };\n }\n const options = {};\n const hydraId = MeetingInfoUtil.getHydraId(destination);\n\n if (MeetingInfoUtil.isMeetingLink(destination)) {\n LoggerProxy.logger.warn('Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead');\n\n options.type = _MEETING_LINK_;\n options.destination = destination;\n }\n else if (MeetingInfoUtil.isSipUri(destination)) {\n options.type = _SIP_URI_;\n options.destination = destination;\n }\n else if (MeetingInfoUtil.isPhoneNumber(destination)) {\n options.type = _SIP_URI_;\n options.destination = destination;\n }\n else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {\n options.type = _CONVERSATION_URL_;\n options.destination = destination;\n }\n else if (hydraId.people) {\n options.type = _SIP_URI_;\n\n return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId.destination, webex).then((res) => {\n options.destination = res;\n\n // Since hydra person ids require a unique case in which they are\n // entirely converted to a SIP URI, we need to set a flag for detecting\n // this type of destination.\n options.wasHydraPerson = true;\n\n return Promise.resolve(options);\n });\n }\n else if (hydraId.room) {\n options.type = _CONVERSATION_URL_;\n try {\n await webex.internal.services.waitForCatalog('postauth');\n\n const conversationUrl = webex.internal.conversation.getUrlFromClusterId({\n cluster: hydraId.cluster,\n id: hydraId.destination\n });\n\n options.destination = conversationUrl;\n }\n catch (e) {\n LoggerProxy.logger.error(`Meeting-info:util#generateOptions --> ${e}`);\n throw (e);\n }\n }\n else {\n throw new ParameterError('MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.');\n }\n\n return Promise.resolve(options);\n};\n\n/**\n * Helper function to build up a correct locus url depending on the value passed\n * @param {String} type One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]\n * @param {Object} value ?? value.value\n * @returns {Object} returns an object with {resource, method}\n */\nMeetingInfoUtil.getResourceUrl = (type, value) => {\n let resource = `/${LOCI}/${MEETINGINFO}`;\n let method = HTTP_VERBS.GET;\n let uri = null;\n\n switch (type) {\n case _SIP_URI_:\n case _PERSONAL_ROOM_:\n case _MEETING_ID_:\n resource = `/${LOCI}/${MEETINGINFO}/${encodeURIComponent(value)}?${TYPE}=${type}&${USE_URI_LOOKUP_FALSE}`;\n break;\n case _CONVERSATION_URL_:\n method = HTTP_VERBS.PUT;\n break;\n case _LOCUS_ID_:\n uri = `${value}/${MEETINGINFO}`;\n method = HTTP_VERBS.PUT;\n break;\n case _MEETING_LINK_:\n resource = `$/${LOCI}/${MEETINGINFO}/${btoa(value)}?${TYPE}=${_MEETING_LINK_}&${USE_URI_LOOKUP_FALSE}`;\n break;\n default:\n }\n\n return {\n uri,\n resource,\n method\n };\n};\n\nMeetingInfoUtil.getRequestParams = (resourceOptions, type, value, api) => {\n let requestParams = {\n method: resourceOptions.method,\n api,\n resource: resourceOptions.resource\n };\n\n if (resourceOptions.method === HTTP_VERBS.GET) {\n // for handling URL redirections\n requestParams.resource = requestParams.resource.concat(`&${ALTERNATE_REDIRECT_TRUE}`);\n }\n else\n if (type !== _LOCUS_ID_) {\n // locus id check is a PUT not sure why\n requestParams.resource = requestParams.resource.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n requestParams.body = {\n value,\n lookupType: type\n };\n }\n else if (type === _LOCUS_ID_) {\n requestParams = {\n method: resourceOptions.method,\n uri: resourceOptions.uri\n };\n }\n\n return requestParams;\n};\n\nexport default MeetingInfoUtil;\n"],"mappings":"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"}
1
+ {"version":3,"names":["MeetingInfoUtil","extractDestination","destination","type","dest","_LOCUS_ID_","url","ParameterError","getParsedUrl","link","parsedUrl","parse","protocol","HTTPS_PROTOCOL","error","LoggerProxy","logger","warn","isMeetingLink","value","hostNameBool","hostname","includes","WEBEX_DOT_COM","pathNameBool","pathname","MEET","MEET_M","JOIN","isConversationUrl","webex","clusterId","internal","services","getClusterId","endsWith","CONVERSATION_SERVICE","convertLinkToSip","user","userIndex","lastIndexOf","substring","company","companyIndex","replace","WWW_DOT","isSipUri","sipString","sipUri","DIALER_REGEX","SIP_ADDRESS","exec","isPhoneNumber","phoneNumber","isValidNumber","PHONE_NUMBER","test","getHydraId","deconstructHydraId","id","cluster","UUID_REG","_ROOM_","room","_PEOPLE_","people","getSipUriFromHydraPersonId","get","then","res","emails","length","catch","err","generateOptions","from","options","hydraId","_MEETING_LINK_","_SIP_URI_","_CONVERSATION_URL_","wasHydraPerson","resolve","waitForCatalog","conversationUrl","conversation","getUrlFromClusterId","getResourceUrl","resource","LOCI","MEETINGINFO","method","HTTP_VERBS","GET","uri","_PERSONAL_ROOM_","_MEETING_ID_","encodeURIComponent","TYPE","USE_URI_LOOKUP_FALSE","PUT","btoa","getRequestParams","resourceOptions","api","requestParams","concat","ALTERNATE_REDIRECT_TRUE","body","lookupType"],"sources":["util.ts"],"sourcesContent":["import url from 'url';\n\nimport btoa from 'btoa';\nimport {\n // @ts-ignore\n deconstructHydraId,\n} from '@webex/common';\n\nimport ParameterError from '../common/errors/parameter';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n _SIP_URI_,\n _PERSONAL_ROOM_,\n _MEETING_ID_,\n _CONVERSATION_URL_,\n _LOCUS_ID_,\n _MEETING_LINK_,\n _PEOPLE_,\n _ROOM_,\n HTTP_VERBS,\n USE_URI_LOOKUP_FALSE,\n TYPE,\n LOCI,\n MEETINGINFO,\n ALTERNATE_REDIRECT_TRUE,\n DIALER_REGEX,\n WEBEX_DOT_COM,\n CONVERSATION_SERVICE,\n WWW_DOT,\n JOIN,\n MEET,\n MEET_M,\n HTTPS_PROTOCOL,\n UUID_REG,\n} from '../constants';\n\nconst MeetingInfoUtil: any = {};\n\nMeetingInfoUtil.extractDestination = (destination, type) => {\n let dest = destination;\n\n if (type === _LOCUS_ID_) {\n if (!(destination && destination.url)) {\n throw new ParameterError('You cannot create a meeting by locus without a locus.url defined');\n }\n dest = destination.url;\n }\n\n return dest;\n};\n\nMeetingInfoUtil.getParsedUrl = (link) => {\n try {\n let parsedUrl = url.parse(link);\n\n if (!parsedUrl) {\n return false;\n }\n // hack for links such as <company>.webex.com/meet/<user> without a protocol\n if (!parsedUrl.protocol) {\n parsedUrl = url.parse(`${HTTPS_PROTOCOL}${link}`);\n }\n\n return parsedUrl;\n } catch (error) {\n LoggerProxy.logger.warn(\n `Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`\n );\n\n return null;\n }\n};\n\n/**\n * Helper function to check if a string matches a known meeting link pattern\n * @param {String} value string to parse and see if it matches a meeting link\n * @returns {Boolean}\n */\nMeetingInfoUtil.isMeetingLink = (value: string) => {\n const parsedUrl = MeetingInfoUtil.getParsedUrl(value);\n const hostNameBool = parsedUrl.hostname && parsedUrl.hostname.includes(WEBEX_DOT_COM);\n const pathNameBool =\n parsedUrl.pathname &&\n (parsedUrl.pathname.includes(`/${MEET}`) ||\n parsedUrl.pathname.includes(`/${MEET_M}`) ||\n parsedUrl.pathname.includes(`/${JOIN}`));\n\n return hostNameBool && pathNameBool;\n};\n\nMeetingInfoUtil.isConversationUrl = (value, webex) => {\n const clusterId = webex.internal.services.getClusterId(value);\n\n if (clusterId) {\n return clusterId.endsWith(CONVERSATION_SERVICE);\n }\n\n return false;\n};\n\nMeetingInfoUtil.convertLinkToSip = (value) => {\n const parsedUrl = MeetingInfoUtil.getParsedUrl(value);\n\n if (!parsedUrl) {\n return null;\n }\n let user;\n\n if (parsedUrl.pathname) {\n const userIndex = parsedUrl.pathname.lastIndexOf('/');\n\n user = parsedUrl.pathname.substring(userIndex + 1);\n }\n if (!user) {\n return null;\n }\n let company;\n\n if (parsedUrl.hostname) {\n const companyIndex = parsedUrl.hostname.lastIndexOf(`.${WEBEX_DOT_COM}`);\n\n company = parsedUrl.hostname.substring(0, companyIndex).replace(WWW_DOT, '');\n }\n if (!company) {\n return null;\n }\n\n return `${user}@${company}.${WEBEX_DOT_COM}`;\n};\n\nMeetingInfoUtil.isSipUri = (sipString) => {\n // TODO: lets remove regex from this equation and user URI matchers and such\n // have not found a great sip uri parser library as of now\n const sipUri = DIALER_REGEX.SIP_ADDRESS.exec(sipString);\n\n return sipUri;\n};\n\nMeetingInfoUtil.isPhoneNumber = (phoneNumber) => {\n const isValidNumber = DIALER_REGEX.PHONE_NUMBER.test(phoneNumber);\n\n return isValidNumber;\n};\n\nMeetingInfoUtil.getHydraId = (destination) => {\n const {type, id, cluster} = deconstructHydraId(destination);\n\n if (id && UUID_REG.test(id)) {\n if (type === _ROOM_) {\n return {room: true, destination: id, cluster};\n }\n if (type === _PEOPLE_) {\n return {people: true, destination: id, cluster};\n }\n\n return {};\n }\n\n return {};\n};\n\nMeetingInfoUtil.getSipUriFromHydraPersonId = (destination, webex) =>\n webex.people\n .get(destination)\n .then((res) => {\n if (res.emails && res.emails.length) {\n return res.emails[0];\n }\n throw new ParameterError('Hydra Id Lookup was an invalid hydra person id.');\n })\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ${err} `\n );\n throw err;\n });\n\nMeetingInfoUtil.generateOptions = async (from) => {\n const {destination, type, webex} = from;\n\n if (type) {\n return {\n destination,\n type,\n };\n }\n const options: any = {};\n const hydraId = MeetingInfoUtil.getHydraId(destination);\n\n if (MeetingInfoUtil.isMeetingLink(destination)) {\n LoggerProxy.logger.warn(\n 'Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead'\n );\n\n options.type = _MEETING_LINK_;\n options.destination = destination;\n } else if (MeetingInfoUtil.isSipUri(destination)) {\n options.type = _SIP_URI_;\n options.destination = destination;\n } else if (MeetingInfoUtil.isPhoneNumber(destination)) {\n options.type = _SIP_URI_;\n options.destination = destination;\n } else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {\n options.type = _CONVERSATION_URL_;\n options.destination = destination;\n } else if (hydraId.people) {\n options.type = _SIP_URI_;\n\n return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId.destination, webex).then((res) => {\n options.destination = res;\n\n // Since hydra person ids require a unique case in which they are\n // entirely converted to a SIP URI, we need to set a flag for detecting\n // this type of destination.\n options.wasHydraPerson = true;\n\n return Promise.resolve(options);\n });\n } else if (hydraId.room) {\n options.type = _CONVERSATION_URL_;\n try {\n await webex.internal.services.waitForCatalog('postauth');\n\n const conversationUrl = webex.internal.conversation.getUrlFromClusterId({\n cluster: hydraId.cluster,\n id: hydraId.destination,\n });\n\n options.destination = conversationUrl;\n } catch (e) {\n LoggerProxy.logger.error(`Meeting-info:util#generateOptions --> ${e}`);\n throw e;\n }\n } else {\n throw new ParameterError(\n 'MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.'\n );\n }\n\n return Promise.resolve(options);\n};\n\n/**\n * Helper function to build up a correct locus url depending on the value passed\n * @param {String} type One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]\n * @param {Object} value ?? value.value\n * @returns {Object} returns an object with {resource, method}\n */\nMeetingInfoUtil.getResourceUrl = (type: string, value: any) => {\n let resource = `/${LOCI}/${MEETINGINFO}`;\n let method = HTTP_VERBS.GET;\n let uri = null;\n\n switch (type) {\n case _SIP_URI_:\n case _PERSONAL_ROOM_:\n case _MEETING_ID_:\n resource = `/${LOCI}/${MEETINGINFO}/${encodeURIComponent(\n value\n )}?${TYPE}=${type}&${USE_URI_LOOKUP_FALSE}`;\n break;\n case _CONVERSATION_URL_:\n method = HTTP_VERBS.PUT;\n break;\n case _LOCUS_ID_:\n uri = `${value}/${MEETINGINFO}`;\n method = HTTP_VERBS.PUT;\n break;\n case _MEETING_LINK_:\n resource = `$/${LOCI}/${MEETINGINFO}/${btoa(\n value\n )}?${TYPE}=${_MEETING_LINK_}&${USE_URI_LOOKUP_FALSE}`;\n break;\n default:\n }\n\n return {\n uri,\n resource,\n method,\n };\n};\n\nMeetingInfoUtil.getRequestParams = (resourceOptions, type, value, api) => {\n let requestParams: any = {\n method: resourceOptions.method,\n api,\n resource: resourceOptions.resource,\n };\n\n if (resourceOptions.method === HTTP_VERBS.GET) {\n // for handling URL redirections\n requestParams.resource = requestParams.resource.concat(`&${ALTERNATE_REDIRECT_TRUE}`);\n } else if (type !== _LOCUS_ID_) {\n // locus id check is a PUT not sure why\n requestParams.resource = requestParams.resource.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n requestParams.body = {\n value,\n lookupType: type,\n };\n } else if (type === _LOCUS_ID_) {\n requestParams = {\n method: resourceOptions.method,\n uri: resourceOptions.uri,\n };\n }\n\n return requestParams;\n};\n\nexport default MeetingInfoUtil;\n"],"mappings":"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"}
@@ -1,97 +1,70 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.default = void 0;
12
-
13
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
14
-
15
10
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
16
-
17
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
18
-
19
12
  var _url = _interopRequireDefault(require("url"));
20
-
21
13
  var _common = require("@webex/common");
22
-
23
14
  var _constants = require("../constants");
24
-
25
15
  var _parameter = _interopRequireDefault(require("../common/errors/parameter"));
26
-
27
16
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
28
-
29
17
  var MeetingInfoUtil = {};
30
-
31
18
  MeetingInfoUtil.getParsedUrl = function (link) {
32
19
  try {
33
20
  var parsedUrl = _url.default.parse(link);
34
-
35
21
  if (!parsedUrl) {
36
22
  return false;
37
- } // hack for links such as <company>.webex.com/meet/<user> without a protocol
38
-
39
-
23
+ }
24
+ // hack for links such as <company>.webex.com/meet/<user> without a protocol
40
25
  if (!parsedUrl.protocol) {
41
26
  parsedUrl = _url.default.parse("".concat(_constants.HTTPS_PROTOCOL).concat(link));
42
27
  }
43
-
44
28
  return parsedUrl;
45
29
  } catch (error) {
46
30
  _loggerProxy.default.logger.warn("Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ".concat(error));
47
-
48
31
  return null;
49
32
  }
50
33
  };
34
+
51
35
  /**
52
36
  * Helper function to check if a string matches a known meeting link pattern
53
37
  * @param {String} value string to parse and see if it matches a meeting link
54
38
  * @returns {Boolean}
55
39
  */
56
-
57
-
58
40
  MeetingInfoUtil.isMeetingLink = function (value) {
59
41
  var parsedUrl = MeetingInfoUtil.getParsedUrl(value);
60
42
  var hostNameBool = parsedUrl.hostname && parsedUrl.hostname.includes(_constants.WEBEX_DOT_COM);
61
43
  var pathNameBool = parsedUrl.pathname && (parsedUrl.pathname.includes("/".concat(_constants.MEET)) || parsedUrl.pathname.includes("/".concat(_constants.MEET_M)) || parsedUrl.pathname.includes("/".concat(_constants.JOIN)));
62
44
  return hostNameBool && pathNameBool;
63
45
  };
64
-
65
46
  MeetingInfoUtil.isConversationUrl = function (value, webex) {
66
47
  var clusterId = webex.internal.services.getClusterId(value);
67
-
68
48
  if (clusterId) {
69
49
  return clusterId.endsWith(_constants.CONVERSATION_SERVICE);
70
50
  }
71
-
72
51
  return false;
73
52
  };
74
-
75
53
  MeetingInfoUtil.isSipUri = function (sipString) {
76
54
  // TODO: lets remove regex from this equation and user URI matchers and such
77
55
  // have not found a great sip uri parser library as of now
78
56
  var sipUri = _constants.DIALER_REGEX.SIP_ADDRESS.exec(sipString);
79
-
80
57
  return sipUri;
81
58
  };
82
-
83
59
  MeetingInfoUtil.isPhoneNumber = function (phoneNumber) {
84
60
  var isValidNumber = _constants.DIALER_REGEX.PHONE_NUMBER.test(phoneNumber);
85
-
86
61
  return isValidNumber;
87
62
  };
88
-
89
63
  MeetingInfoUtil.getHydraId = function (destination) {
90
64
  var _deconstructHydraId = (0, _common.deconstructHydraId)(destination),
91
- type = _deconstructHydraId.type,
92
- id = _deconstructHydraId.id,
93
- cluster = _deconstructHydraId.cluster;
94
-
65
+ type = _deconstructHydraId.type,
66
+ id = _deconstructHydraId.id,
67
+ cluster = _deconstructHydraId.cluster;
95
68
  if (id && _constants.UUID_REG.test(id)) {
96
69
  if (type === _constants._ROOM_) {
97
70
  return {
@@ -100,7 +73,6 @@ MeetingInfoUtil.getHydraId = function (destination) {
100
73
  cluster: cluster
101
74
  };
102
75
  }
103
-
104
76
  if (type === _constants._PEOPLE_) {
105
77
  return {
106
78
  people: true,
@@ -108,204 +80,165 @@ MeetingInfoUtil.getHydraId = function (destination) {
108
80
  cluster: cluster
109
81
  };
110
82
  }
111
-
112
83
  return {};
113
84
  }
114
-
115
85
  return {};
116
86
  };
117
-
118
87
  MeetingInfoUtil.getSipUriFromHydraPersonId = function (destination, webex) {
119
88
  return webex.people.get(destination).then(function (res) {
120
89
  if (res.emails && res.emails.length) {
121
90
  return res.emails[0];
122
91
  }
123
-
124
92
  throw new _parameter.default('Hydra Id Lookup was an invalid hydra person id.');
125
93
  }).catch(function (err) {
126
94
  _loggerProxy.default.logger.error("Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ".concat(err, " "));
127
-
128
95
  throw err;
129
96
  });
130
97
  };
131
-
132
98
  MeetingInfoUtil.getDestinationType = /*#__PURE__*/function () {
133
99
  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(from) {
134
100
  var type, webex, destination, _options, res, _res$items$, orgId, userId, options, hydraId, conversationUrl;
135
-
136
101
  return _regenerator.default.wrap(function _callee$(_context) {
137
- while (1) {
138
- switch (_context.prev = _context.next) {
139
- case 0:
140
- type = from.type, webex = from.webex;
141
- destination = from.destination;
142
-
143
- if (!(type === _constants._PERSONAL_ROOM_)) {
144
- _context.next = 15;
145
- break;
146
- }
147
-
148
- if (destination) {
149
- _context.next = 7;
150
- break;
151
- }
152
-
153
- // if we are not getting anything in desination we fetch org and user ids from webex instance
154
- destination = {
155
- userId: webex.internal.device.userId,
156
- orgId: webex.internal.device.orgId
157
- };
102
+ while (1) switch (_context.prev = _context.next) {
103
+ case 0:
104
+ type = from.type, webex = from.webex;
105
+ destination = from.destination;
106
+ if (!(type === _constants._PERSONAL_ROOM_)) {
158
107
  _context.next = 15;
159
108
  break;
160
-
161
- case 7:
162
- _options = _constants.VALID_EMAIL_ADDRESS.test(destination) ? {
163
- email: destination
164
- } : {
165
- id: destination
166
- }; // we are assuming userId as default
167
-
168
- _context.next = 10;
169
- return webex.people.list(_options);
170
-
171
- case 10:
172
- res = _context.sent;
173
- _res$items$ = res.items[0], orgId = _res$items$.orgId, userId = _res$items$.id;
174
- userId = (0, _common.deconstructHydraId)(userId).id;
175
- orgId = (0, _common.deconstructHydraId)(orgId).id;
176
- destination = {
177
- userId: userId,
178
- orgId: orgId
179
- };
180
-
181
- case 15:
182
- if (!type) {
183
- _context.next = 17;
184
- break;
185
- }
186
-
187
- return _context.abrupt("return", {
188
- destination: destination,
189
- type: type
190
- });
191
-
192
- case 17:
193
- options = {};
194
- hydraId = MeetingInfoUtil.getHydraId(destination);
195
-
196
- if (!MeetingInfoUtil.isMeetingLink(destination)) {
197
- _context.next = 25;
198
- break;
199
- }
200
-
201
- _loggerProxy.default.logger.warn('Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead');
202
-
203
- options.type = _constants._MEETING_LINK_;
204
- options.destination = destination;
205
- _context.next = 62;
109
+ }
110
+ if (destination) {
111
+ _context.next = 7;
206
112
  break;
207
-
208
- case 25:
209
- if (!MeetingInfoUtil.isSipUri(destination)) {
210
- _context.next = 30;
211
- break;
212
- }
213
-
214
- options.type = _constants._SIP_URI_;
215
- options.destination = destination;
216
- _context.next = 62;
113
+ }
114
+ // if we are not getting anything in desination we fetch org and user ids from webex instance
115
+ destination = {
116
+ userId: webex.internal.device.userId,
117
+ orgId: webex.internal.device.orgId
118
+ };
119
+ _context.next = 15;
120
+ break;
121
+ case 7:
122
+ _options = _constants.VALID_EMAIL_ADDRESS.test(destination) ? {
123
+ email: destination
124
+ } : {
125
+ id: destination
126
+ }; // we are assuming userId as default
127
+ _context.next = 10;
128
+ return webex.people.list(_options);
129
+ case 10:
130
+ res = _context.sent;
131
+ _res$items$ = res.items[0], orgId = _res$items$.orgId, userId = _res$items$.id;
132
+ userId = (0, _common.deconstructHydraId)(userId).id;
133
+ orgId = (0, _common.deconstructHydraId)(orgId).id;
134
+ destination = {
135
+ userId: userId,
136
+ orgId: orgId
137
+ };
138
+ case 15:
139
+ if (!type) {
140
+ _context.next = 17;
217
141
  break;
218
-
219
- case 30:
220
- if (!MeetingInfoUtil.isPhoneNumber(destination)) {
221
- _context.next = 35;
222
- break;
223
- }
224
-
225
- options.type = _constants._SIP_URI_;
226
- options.destination = destination;
227
- _context.next = 62;
142
+ }
143
+ return _context.abrupt("return", {
144
+ destination: destination,
145
+ type: type
146
+ });
147
+ case 17:
148
+ options = {};
149
+ hydraId = MeetingInfoUtil.getHydraId(destination);
150
+ if (!MeetingInfoUtil.isMeetingLink(destination)) {
151
+ _context.next = 25;
228
152
  break;
229
-
230
- case 35:
231
- if (!MeetingInfoUtil.isConversationUrl(destination, webex)) {
232
- _context.next = 40;
233
- break;
234
- }
235
-
236
- options.type = _constants._CONVERSATION_URL_;
237
- options.destination = destination;
238
- _context.next = 62;
153
+ }
154
+ _loggerProxy.default.logger.warn('Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead');
155
+ options.type = _constants._MEETING_LINK_;
156
+ options.destination = destination;
157
+ _context.next = 62;
158
+ break;
159
+ case 25:
160
+ if (!MeetingInfoUtil.isSipUri(destination)) {
161
+ _context.next = 30;
239
162
  break;
240
-
241
- case 40:
242
- if (!hydraId.people) {
243
- _context.next = 45;
244
- break;
245
- }
246
-
247
- options.type = _constants._SIP_URI_;
248
- return _context.abrupt("return", MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId.destination, webex).then(function (res) {
249
- options.destination = res; // Since hydra person ids require a unique case in which they are
250
- // entirely converted to a SIP URI, we need to set a flag for detecting
251
- // this type of destination.
252
-
253
- options.wasHydraPerson = true;
254
- return _promise.default.resolve(options);
255
- }));
256
-
257
- case 45:
258
- if (!hydraId.room) {
259
- _context.next = 60;
260
- break;
261
- }
262
-
263
- options.type = _constants._CONVERSATION_URL_;
264
- _context.prev = 47;
265
- _context.next = 50;
266
- return webex.internal.services.waitForCatalog('postauth');
267
-
268
- case 50:
269
- conversationUrl = webex.internal.conversation.getUrlFromClusterId({
270
- cluster: hydraId.cluster,
271
- id: hydraId.destination
272
- });
273
- options.destination = conversationUrl;
274
- _context.next = 58;
163
+ }
164
+ options.type = _constants._SIP_URI_;
165
+ options.destination = destination;
166
+ _context.next = 62;
167
+ break;
168
+ case 30:
169
+ if (!MeetingInfoUtil.isPhoneNumber(destination)) {
170
+ _context.next = 35;
275
171
  break;
276
-
277
- case 54:
278
- _context.prev = 54;
279
- _context.t0 = _context["catch"](47);
280
-
281
- _loggerProxy.default.logger.error("Meeting-info:util#getDestinationType --> ".concat(_context.t0));
282
-
283
- throw _context.t0;
284
-
285
- case 58:
286
- _context.next = 62;
172
+ }
173
+ options.type = _constants._SIP_URI_;
174
+ options.destination = destination;
175
+ _context.next = 62;
176
+ break;
177
+ case 35:
178
+ if (!MeetingInfoUtil.isConversationUrl(destination, webex)) {
179
+ _context.next = 40;
287
180
  break;
288
-
289
- case 60:
290
- _loggerProxy.default.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.');
291
-
292
- throw new _parameter.default('MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.');
293
-
294
- case 62:
295
- return _context.abrupt("return", _promise.default.resolve(options));
296
-
297
- case 63:
298
- case "end":
299
- return _context.stop();
300
- }
181
+ }
182
+ options.type = _constants._CONVERSATION_URL_;
183
+ options.destination = destination;
184
+ _context.next = 62;
185
+ break;
186
+ case 40:
187
+ if (!hydraId.people) {
188
+ _context.next = 45;
189
+ break;
190
+ }
191
+ options.type = _constants._SIP_URI_;
192
+ return _context.abrupt("return", MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId.destination, webex).then(function (res) {
193
+ options.destination = res;
194
+
195
+ // Since hydra person ids require a unique case in which they are
196
+ // entirely converted to a SIP URI, we need to set a flag for detecting
197
+ // this type of destination.
198
+ options.wasHydraPerson = true;
199
+ return _promise.default.resolve(options);
200
+ }));
201
+ case 45:
202
+ if (!hydraId.room) {
203
+ _context.next = 60;
204
+ break;
205
+ }
206
+ options.type = _constants._CONVERSATION_URL_;
207
+ _context.prev = 47;
208
+ _context.next = 50;
209
+ return webex.internal.services.waitForCatalog('postauth');
210
+ case 50:
211
+ conversationUrl = webex.internal.conversation.getUrlFromClusterId({
212
+ cluster: hydraId.cluster,
213
+ id: hydraId.destination
214
+ });
215
+ options.destination = conversationUrl;
216
+ _context.next = 58;
217
+ break;
218
+ case 54:
219
+ _context.prev = 54;
220
+ _context.t0 = _context["catch"](47);
221
+ _loggerProxy.default.logger.error("Meeting-info:util#getDestinationType --> ".concat(_context.t0));
222
+ throw _context.t0;
223
+ case 58:
224
+ _context.next = 62;
225
+ break;
226
+ case 60:
227
+ _loggerProxy.default.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.");
228
+ throw new _parameter.default('MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.');
229
+ case 62:
230
+ return _context.abrupt("return", _promise.default.resolve(options));
231
+ case 63:
232
+ case "end":
233
+ return _context.stop();
301
234
  }
302
235
  }, _callee, null, [[47, 54]]);
303
236
  }));
304
-
305
237
  return function (_x) {
306
238
  return _ref.apply(this, arguments);
307
239
  };
308
240
  }();
241
+
309
242
  /**
310
243
  * Helper function to build up a correct locus url depending on the value passed
311
244
  * @param {Object} options type and value to fetch meeting info
@@ -313,38 +246,30 @@ MeetingInfoUtil.getDestinationType = /*#__PURE__*/function () {
313
246
  * @param {Object} options.destination ?? value.value
314
247
  * @returns {Object} returns an object with {resource, method}
315
248
  */
316
-
317
-
318
249
  MeetingInfoUtil.getRequestBody = function (options) {
319
250
  var _destination$info, _destination$info2;
320
-
321
251
  var type = options.type,
322
- destination = options.destination,
323
- password = options.password,
324
- captchaInfo = options.captchaInfo;
252
+ destination = options.destination,
253
+ password = options.password,
254
+ captchaInfo = options.captchaInfo;
325
255
  var body = {
326
256
  supportHostKey: true,
327
257
  supportCountryList: true
328
258
  };
329
-
330
259
  switch (type) {
331
260
  case _constants._SIP_URI_:
332
261
  body.sipUrl = destination;
333
262
  break;
334
-
335
263
  case _constants._PERSONAL_ROOM_:
336
264
  body.userId = destination.userId;
337
265
  body.orgId = destination.orgId;
338
266
  break;
339
-
340
267
  case _constants._MEETING_ID_:
341
268
  body.meetingKey = destination;
342
269
  break;
343
-
344
270
  case _constants._CONVERSATION_URL_:
345
271
  body.conversationUrl = destination;
346
272
  break;
347
-
348
273
  case _constants._LOCUS_ID_:
349
274
  // use meetingID for the completer meeting info for the already started meeting
350
275
  if ((_destination$info = destination.info) !== null && _destination$info !== void 0 && _destination$info.webExMeetingId) {
@@ -352,47 +277,39 @@ MeetingInfoUtil.getRequestBody = function (options) {
352
277
  } else if ((_destination$info2 = destination.info) !== null && _destination$info2 !== void 0 && _destination$info2.sipUri) {
353
278
  body.sipUrl = destination.info.sipUri;
354
279
  }
355
-
356
280
  break;
357
-
358
281
  case _constants._MEETING_LINK_:
359
282
  body.meetingUrl = destination;
360
283
  break;
361
-
362
284
  case _constants._MEETING_UUID_:
363
285
  {
364
286
  body.meetingUUID = destination;
365
287
  break;
366
288
  }
367
-
368
289
  default:
369
290
  }
370
-
371
291
  if (password) {
372
292
  body.password = password;
373
293
  }
374
-
375
294
  if (captchaInfo) {
376
295
  body.captchaID = captchaInfo.id;
377
296
  body.captchaVerifyCode = captchaInfo.code;
378
297
  }
379
-
380
298
  return body;
381
299
  };
300
+
382
301
  /**
383
302
  * Helper function to parse the webex site/host from a URI string.
384
303
  * @param {String} uri string (e.g. '10019857020@convergedats.webex.com')
385
304
  * @returns {String} the site/host part of the URI string (e.g. 'convergedats.webex.com')
386
305
  */
387
-
388
-
389
306
  MeetingInfoUtil.getWebexSite = function (uri) {
390
307
  var _uri$match;
391
-
392
308
  var exceptedDomains = ['meet.webex.com', 'meetup.webex.com', 'ciscospark.com'];
393
309
  var site = uri === null || uri === void 0 ? void 0 : (_uri$match = uri.match(/.+@([^.]+\.[^.]+\.[^.]+)$/)) === null || _uri$match === void 0 ? void 0 : _uri$match[1];
394
310
  return exceptedDomains.includes(site) ? null : site;
395
311
  };
312
+
396
313
  /**
397
314
  * Helper function to return the direct URI for fetching meeting info (to avoid a redirect).
398
315
  * @param {Object} options type and value to fetch meeting info
@@ -400,30 +317,22 @@ MeetingInfoUtil.getWebexSite = function (uri) {
400
317
  * @param {Object} options.destination ?? value.value
401
318
  * @returns {String} returns a URI string or null of there is no direct URI
402
319
  */
403
-
404
-
405
320
  MeetingInfoUtil.getDirectMeetingInfoURI = function (options) {
406
321
  var _destination$info3;
407
-
408
322
  var type = options.type,
409
- destination = options.destination;
323
+ destination = options.destination;
410
324
  var preferredWebexSite = null;
411
-
412
325
  switch (type) {
413
326
  case _constants._SIP_URI_:
414
327
  preferredWebexSite = MeetingInfoUtil.getWebexSite(destination);
415
328
  break;
416
-
417
329
  case _constants._LOCUS_ID_:
418
330
  preferredWebexSite = (_destination$info3 = destination.info) === null || _destination$info3 === void 0 ? void 0 : _destination$info3.webExSite;
419
331
  break;
420
-
421
332
  default:
422
333
  }
423
-
424
334
  return preferredWebexSite ? "https://".concat(preferredWebexSite, "/wbxappapi/v1/meetingInfo") : null;
425
335
  };
426
-
427
336
  var _default = MeetingInfoUtil;
428
337
  exports.default = _default;
429
338
  //# sourceMappingURL=utilv2.js.map