@webex/plugin-meetings 3.0.0-test.1 → 3.1.0-next.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 (331) hide show
  1. package/.eslintrc.js +6 -0
  2. package/babel.config.js +3 -0
  3. package/dist/annotation/constants.js +12 -20
  4. package/dist/annotation/constants.js.map +1 -1
  5. package/dist/annotation/index.js +25 -10
  6. package/dist/annotation/index.js.map +1 -1
  7. package/dist/breakouts/breakout.js +2 -3
  8. package/dist/breakouts/breakout.js.map +1 -1
  9. package/dist/breakouts/collection.js +1 -2
  10. package/dist/breakouts/collection.js.map +1 -1
  11. package/dist/breakouts/edit-lock-error.js +1 -2
  12. package/dist/breakouts/edit-lock-error.js.map +1 -1
  13. package/dist/breakouts/events.js +1 -2
  14. package/dist/breakouts/events.js.map +1 -1
  15. package/dist/breakouts/index.js +13 -14
  16. package/dist/breakouts/index.js.map +1 -1
  17. package/dist/breakouts/request.js +1 -2
  18. package/dist/breakouts/request.js.map +1 -1
  19. package/dist/breakouts/utils.js +3 -6
  20. package/dist/breakouts/utils.js.map +1 -1
  21. package/dist/common/browser-detection.js +2 -3
  22. package/dist/common/browser-detection.js.map +1 -1
  23. package/dist/common/collection.js +3 -4
  24. package/dist/common/collection.js.map +1 -1
  25. package/dist/common/config.js +1 -2
  26. package/dist/common/config.js.map +1 -1
  27. package/dist/common/errors/captcha-error.js +1 -2
  28. package/dist/common/errors/captcha-error.js.map +1 -1
  29. package/dist/common/errors/intent-to-join.js +1 -2
  30. package/dist/common/errors/intent-to-join.js.map +1 -1
  31. package/dist/common/errors/join-meeting.js +1 -2
  32. package/dist/common/errors/join-meeting.js.map +1 -1
  33. package/dist/common/errors/media.js +1 -2
  34. package/dist/common/errors/media.js.map +1 -1
  35. package/dist/common/errors/no-meeting-info.js +1 -2
  36. package/dist/common/errors/no-meeting-info.js.map +1 -1
  37. package/dist/common/errors/parameter.js +3 -4
  38. package/dist/common/errors/parameter.js.map +1 -1
  39. package/dist/common/errors/password-error.js +1 -2
  40. package/dist/common/errors/password-error.js.map +1 -1
  41. package/dist/common/errors/permission.js +1 -2
  42. package/dist/common/errors/permission.js.map +1 -1
  43. package/dist/common/errors/reclaim-host-role-errors.js +6 -10
  44. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -1
  45. package/dist/common/errors/reconnection-in-progress.js +1 -2
  46. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  47. package/dist/common/errors/reconnection.js +1 -2
  48. package/dist/common/errors/reconnection.js.map +1 -1
  49. package/dist/common/errors/stats.js +1 -2
  50. package/dist/common/errors/stats.js.map +1 -1
  51. package/dist/common/errors/webex-errors.js +14 -15
  52. package/dist/common/errors/webex-errors.js.map +1 -1
  53. package/dist/common/errors/webex-meetings-error.js +1 -2
  54. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  55. package/dist/common/events/events-scope.js +1 -2
  56. package/dist/common/events/events-scope.js.map +1 -1
  57. package/dist/common/events/events.js +1 -2
  58. package/dist/common/events/events.js.map +1 -1
  59. package/dist/common/events/trigger-proxy.js +1 -2
  60. package/dist/common/events/trigger-proxy.js.map +1 -1
  61. package/dist/common/events/util.js +1 -2
  62. package/dist/common/events/util.js.map +1 -1
  63. package/dist/common/logs/logger-config.js +1 -2
  64. package/dist/common/logs/logger-config.js.map +1 -1
  65. package/dist/common/logs/logger-proxy.js +1 -2
  66. package/dist/common/logs/logger-proxy.js.map +1 -1
  67. package/dist/common/logs/request.js +3 -4
  68. package/dist/common/logs/request.js.map +1 -1
  69. package/dist/common/queue.js +2 -4
  70. package/dist/common/queue.js.map +1 -1
  71. package/dist/config.js +4 -3
  72. package/dist/config.js.map +1 -1
  73. package/dist/constants.js +207 -380
  74. package/dist/constants.js.map +1 -1
  75. package/dist/controls-options-manager/constants.js +3 -6
  76. package/dist/controls-options-manager/constants.js.map +1 -1
  77. package/dist/controls-options-manager/enums.js +7 -10
  78. package/dist/controls-options-manager/enums.js.map +1 -1
  79. package/dist/controls-options-manager/index.js +27 -32
  80. package/dist/controls-options-manager/index.js.map +1 -1
  81. package/dist/controls-options-manager/util.js +1 -2
  82. package/dist/controls-options-manager/util.js.map +1 -1
  83. package/dist/index.js +71 -4
  84. package/dist/index.js.map +1 -1
  85. package/dist/interceptors/index.js.map +1 -1
  86. package/dist/interceptors/locusRetry.js +4 -3
  87. package/dist/interceptors/locusRetry.js.map +1 -1
  88. package/dist/interpretation/collection.js +1 -2
  89. package/dist/interpretation/collection.js.map +1 -1
  90. package/dist/interpretation/index.js +4 -5
  91. package/dist/interpretation/index.js.map +1 -1
  92. package/dist/interpretation/siLanguage.js +2 -3
  93. package/dist/interpretation/siLanguage.js.map +1 -1
  94. package/dist/locus-info/controlsUtils.js +12 -13
  95. package/dist/locus-info/controlsUtils.js.map +1 -1
  96. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  97. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  98. package/dist/locus-info/fullState.js +1 -2
  99. package/dist/locus-info/fullState.js.map +1 -1
  100. package/dist/locus-info/hostUtils.js +1 -2
  101. package/dist/locus-info/hostUtils.js.map +1 -1
  102. package/dist/locus-info/index.js +23 -27
  103. package/dist/locus-info/index.js.map +1 -1
  104. package/dist/locus-info/infoUtils.js +3 -4
  105. package/dist/locus-info/infoUtils.js.map +1 -1
  106. package/dist/locus-info/mediaSharesUtils.js +16 -3
  107. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  108. package/dist/locus-info/parser.js +6 -10
  109. package/dist/locus-info/parser.js.map +1 -1
  110. package/dist/locus-info/selfUtils.js +12 -6
  111. package/dist/locus-info/selfUtils.js.map +1 -1
  112. package/dist/media/MediaConnectionAwaiter.js +163 -0
  113. package/dist/media/MediaConnectionAwaiter.js.map +1 -0
  114. package/dist/media/index.js +9 -5
  115. package/dist/media/index.js.map +1 -1
  116. package/dist/media/properties.js +7 -28
  117. package/dist/media/properties.js.map +1 -1
  118. package/dist/media/util.js +1 -2
  119. package/dist/media/util.js.map +1 -1
  120. package/dist/mediaQualityMetrics/config.js +9 -18
  121. package/dist/mediaQualityMetrics/config.js.map +1 -1
  122. package/dist/meeting/in-meeting-actions.js +14 -2
  123. package/dist/meeting/in-meeting-actions.js.map +1 -1
  124. package/dist/meeting/index.js +1411 -1036
  125. package/dist/meeting/index.js.map +1 -1
  126. package/dist/meeting/locusMediaRequest.js +4 -5
  127. package/dist/meeting/locusMediaRequest.js.map +1 -1
  128. package/dist/meeting/muteState.js +2 -4
  129. package/dist/meeting/muteState.js.map +1 -1
  130. package/dist/meeting/request.js +45 -36
  131. package/dist/meeting/request.js.map +1 -1
  132. package/dist/meeting/state.js +1 -2
  133. package/dist/meeting/state.js.map +1 -1
  134. package/dist/meeting/util.js +13 -10
  135. package/dist/meeting/util.js.map +1 -1
  136. package/dist/meeting/voicea-meeting.js +169 -0
  137. package/dist/meeting/voicea-meeting.js.map +1 -0
  138. package/dist/meeting-info/collection.js +3 -4
  139. package/dist/meeting-info/collection.js.map +1 -1
  140. package/dist/meeting-info/index.js +5 -4
  141. package/dist/meeting-info/index.js.map +1 -1
  142. package/dist/meeting-info/meeting-info-v2.js +27 -29
  143. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  144. package/dist/meeting-info/request.js +1 -2
  145. package/dist/meeting-info/request.js.map +1 -1
  146. package/dist/meeting-info/util.js +306 -269
  147. package/dist/meeting-info/util.js.map +1 -1
  148. package/dist/meeting-info/utilv2.js +336 -294
  149. package/dist/meeting-info/utilv2.js.map +1 -1
  150. package/dist/meetings/collection.js +5 -6
  151. package/dist/meetings/collection.js.map +1 -1
  152. package/dist/meetings/index.js +44 -17
  153. package/dist/meetings/index.js.map +1 -1
  154. package/dist/meetings/request.js +2 -3
  155. package/dist/meetings/request.js.map +1 -1
  156. package/dist/meetings/util.js +1 -4
  157. package/dist/meetings/util.js.map +1 -1
  158. package/dist/member/index.js +1 -3
  159. package/dist/member/index.js.map +1 -1
  160. package/dist/member/types.js +6 -8
  161. package/dist/member/types.js.map +1 -1
  162. package/dist/member/util.js +1 -2
  163. package/dist/member/util.js.map +1 -1
  164. package/dist/members/collection.js +1 -2
  165. package/dist/members/collection.js.map +1 -1
  166. package/dist/members/index.js +8 -7
  167. package/dist/members/index.js.map +1 -1
  168. package/dist/members/request.js +2 -3
  169. package/dist/members/request.js.map +1 -1
  170. package/dist/members/types.js +3 -4
  171. package/dist/members/types.js.map +1 -1
  172. package/dist/members/util.js +3 -4
  173. package/dist/members/util.js.map +1 -1
  174. package/dist/metrics/constants.js +1 -2
  175. package/dist/metrics/constants.js.map +1 -1
  176. package/dist/metrics/index.js +3 -2
  177. package/dist/metrics/index.js.map +1 -1
  178. package/dist/multistream/mediaRequestManager.js +9 -11
  179. package/dist/multistream/mediaRequestManager.js.map +1 -1
  180. package/dist/multistream/receiveSlot.js +3 -5
  181. package/dist/multistream/receiveSlot.js.map +1 -1
  182. package/dist/multistream/receiveSlotManager.js +7 -9
  183. package/dist/multistream/receiveSlotManager.js.map +1 -1
  184. package/dist/multistream/remoteMedia.js +3 -5
  185. package/dist/multistream/remoteMedia.js.map +1 -1
  186. package/dist/multistream/remoteMediaGroup.js +7 -6
  187. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  188. package/dist/multistream/remoteMediaManager.js +32 -29
  189. package/dist/multistream/remoteMediaManager.js.map +1 -1
  190. package/dist/multistream/sendSlotManager.js +9 -6
  191. package/dist/multistream/sendSlotManager.js.map +1 -1
  192. package/dist/networkQualityMonitor/index.js +1 -2
  193. package/dist/networkQualityMonitor/index.js.map +1 -1
  194. package/dist/personal-meeting-room/index.js +2 -3
  195. package/dist/personal-meeting-room/index.js.map +1 -1
  196. package/dist/personal-meeting-room/request.js +2 -3
  197. package/dist/personal-meeting-room/request.js.map +1 -1
  198. package/dist/personal-meeting-room/util.js +1 -2
  199. package/dist/personal-meeting-room/util.js.map +1 -1
  200. package/dist/reachability/clusterReachability.js +35 -20
  201. package/dist/reachability/clusterReachability.js.map +1 -1
  202. package/dist/reachability/index.js +41 -12
  203. package/dist/reachability/index.js.map +1 -1
  204. package/dist/reachability/request.js +25 -20
  205. package/dist/reachability/request.js.map +1 -1
  206. package/dist/reachability/util.js +19 -0
  207. package/dist/reachability/util.js.map +1 -1
  208. package/dist/reactions/constants.js +1 -2
  209. package/dist/reactions/constants.js.map +1 -1
  210. package/dist/reactions/reactions.js +2 -4
  211. package/dist/reactions/reactions.js.map +1 -1
  212. package/dist/reactions/reactions.type.js +6 -8
  213. package/dist/reactions/reactions.type.js.map +1 -1
  214. package/dist/reconnection-manager/index.js +18 -11
  215. package/dist/reconnection-manager/index.js.map +1 -1
  216. package/dist/recording-controller/enums.js +4 -5
  217. package/dist/recording-controller/enums.js.map +1 -1
  218. package/dist/recording-controller/index.js +43 -51
  219. package/dist/recording-controller/index.js.map +1 -1
  220. package/dist/recording-controller/util.js +1 -2
  221. package/dist/recording-controller/util.js.map +1 -1
  222. package/dist/roap/index.js +17 -3
  223. package/dist/roap/index.js.map +1 -1
  224. package/dist/roap/request.js +10 -10
  225. package/dist/roap/request.js.map +1 -1
  226. package/dist/roap/turnDiscovery.js +316 -134
  227. package/dist/roap/turnDiscovery.js.map +1 -1
  228. package/dist/rtcMetrics/constants.js +1 -2
  229. package/dist/rtcMetrics/constants.js.map +1 -1
  230. package/dist/rtcMetrics/index.js +4 -6
  231. package/dist/rtcMetrics/index.js.map +1 -1
  232. package/dist/statsAnalyzer/global.js +1 -2
  233. package/dist/statsAnalyzer/global.js.map +1 -1
  234. package/dist/statsAnalyzer/index.js +123 -96
  235. package/dist/statsAnalyzer/index.js.map +1 -1
  236. package/dist/statsAnalyzer/mqaUtil.js +24 -31
  237. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  238. package/dist/transcription/index.js +1 -2
  239. package/dist/transcription/index.js.map +1 -1
  240. package/dist/types/common/logs/request.d.ts +1 -1
  241. package/dist/types/config.d.ts +1 -0
  242. package/dist/types/constants.d.ts +10 -5
  243. package/dist/types/index.d.ts +11 -0
  244. package/dist/types/media/MediaConnectionAwaiter.d.ts +61 -0
  245. package/dist/types/meeting/index.d.ts +71 -16
  246. package/dist/types/meeting/request.d.ts +3 -0
  247. package/dist/types/meeting/util.d.ts +1 -0
  248. package/dist/types/meeting/voicea-meeting.d.ts +16 -0
  249. package/dist/types/meeting-info/index.d.ts +1 -1
  250. package/dist/types/meeting-info/meeting-info-v2.d.ts +1 -1
  251. package/dist/types/meeting-info/util.d.ts +49 -2
  252. package/dist/types/meeting-info/utilv2.d.ts +65 -2
  253. package/dist/types/meetings/index.d.ts +11 -2
  254. package/dist/types/members/util.d.ts +1 -1
  255. package/dist/types/multistream/mediaRequestManager.d.ts +1 -2
  256. package/dist/types/multistream/remoteMediaGroup.d.ts +1 -1
  257. package/dist/types/multistream/remoteMediaManager.d.ts +1 -2
  258. package/dist/types/multistream/sendSlotManager.d.ts +1 -2
  259. package/dist/types/reachability/clusterReachability.d.ts +1 -0
  260. package/dist/types/reachability/index.d.ts +4 -0
  261. package/dist/types/reachability/util.d.ts +7 -0
  262. package/dist/types/roap/index.d.ts +10 -2
  263. package/dist/types/roap/turnDiscovery.d.ts +64 -17
  264. package/dist/webinar/collection.js +1 -2
  265. package/dist/webinar/collection.js.map +1 -1
  266. package/dist/webinar/index.js +2 -3
  267. package/dist/webinar/index.js.map +1 -1
  268. package/jest.config.js +3 -0
  269. package/package.json +44 -25
  270. package/process +1 -0
  271. package/src/config.ts +3 -4
  272. package/src/constants.ts +13 -4
  273. package/src/index.ts +27 -0
  274. package/src/interpretation/index.ts +2 -2
  275. package/src/locus-info/mediaSharesUtils.ts +16 -0
  276. package/src/locus-info/selfUtils.ts +5 -0
  277. package/src/media/MediaConnectionAwaiter.ts +174 -0
  278. package/src/media/index.ts +3 -1
  279. package/src/media/properties.ts +6 -31
  280. package/src/meeting/index.ts +526 -227
  281. package/src/meeting/request.ts +18 -2
  282. package/src/meeting/util.ts +6 -1
  283. package/src/meeting/voicea-meeting.ts +122 -0
  284. package/src/meeting-info/meeting-info-v2.ts +5 -11
  285. package/src/meeting-info/util.ts +244 -233
  286. package/src/meeting-info/utilv2.ts +262 -245
  287. package/src/meetings/index.ts +18 -0
  288. package/src/member/index.ts +0 -1
  289. package/src/multistream/mediaRequestManager.ts +1 -1
  290. package/src/multistream/remoteMediaGroup.ts +1 -1
  291. package/src/multistream/remoteMediaManager.ts +1 -2
  292. package/src/multistream/sendSlotManager.ts +1 -2
  293. package/src/reachability/clusterReachability.ts +20 -5
  294. package/src/reachability/index.ts +24 -1
  295. package/src/reachability/request.ts +15 -11
  296. package/src/reachability/util.ts +21 -0
  297. package/src/reconnection-manager/index.ts +1 -1
  298. package/src/roap/index.ts +25 -3
  299. package/src/roap/request.ts +2 -2
  300. package/src/roap/turnDiscovery.ts +244 -78
  301. package/src/statsAnalyzer/index.ts +63 -27
  302. package/test/integration/spec/journey.js +2 -2
  303. package/test/unit/spec/breakouts/breakout.ts +2 -1
  304. package/test/unit/spec/breakouts/index.ts +7 -4
  305. package/test/unit/spec/interpretation/index.ts +4 -1
  306. package/test/unit/spec/locus-info/index.js +27 -18
  307. package/test/unit/spec/locus-info/mediaSharesUtils.ts +9 -0
  308. package/test/unit/spec/locus-info/selfUtils.js +41 -11
  309. package/test/unit/spec/media/MediaConnectionAwaiter.ts +344 -0
  310. package/test/unit/spec/media/index.ts +94 -78
  311. package/test/unit/spec/media/properties.ts +16 -70
  312. package/test/unit/spec/meeting/index.js +757 -141
  313. package/test/unit/spec/meeting/request.js +21 -0
  314. package/test/unit/spec/meeting/utils.js +58 -11
  315. package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
  316. package/test/unit/spec/meeting-info/meetinginfov2.js +20 -15
  317. package/test/unit/spec/meeting-info/utilv2.js +6 -0
  318. package/test/unit/spec/meetings/index.js +101 -13
  319. package/test/unit/spec/metrics/index.js +1 -2
  320. package/test/unit/spec/multistream/mediaRequestManager.ts +1 -0
  321. package/test/unit/spec/multistream/remoteMediaGroup.ts +0 -1
  322. package/test/unit/spec/multistream/remoteMediaManager.ts +0 -1
  323. package/test/unit/spec/reachability/clusterReachability.ts +86 -22
  324. package/test/unit/spec/reachability/index.ts +197 -60
  325. package/test/unit/spec/reachability/request.js +15 -7
  326. package/test/unit/spec/reachability/util.ts +32 -2
  327. package/test/unit/spec/reconnection-manager/index.js +28 -0
  328. package/test/unit/spec/recording-controller/index.js +0 -1
  329. package/test/unit/spec/roap/index.ts +61 -6
  330. package/test/unit/spec/roap/turnDiscovery.ts +299 -17
  331. package/test/unit/spec/stats-analyzer/index.js +179 -0
@@ -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.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 the meeting link, SIP URI, phone number, 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
+ {"version":3,"names":["_url","_interopRequireDefault","require","_btoa","_common","_parameter","_loggerProxy","_constants","MeetingInfoUtil","exports","default","_classCallCheck2","_createClass2","key","value","extractDestination","destination","type","dest","_LOCUS_ID_","url","ParameterError","getParsedUrl","link","parsedUrl","parse","protocol","concat","HTTPS_PROTOCOL","error","LoggerProxy","logger","warn","isMeetingLink","hostNameBool","pathNameBool","hostname","includes","WEBEX_DOT_COM","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","deconstructHydraId","id","cluster","UUID_REG","_ROOM_","room","_PEOPLE_","people","getSipUriFromHydraPersonId","get","then","res","emails","length","catch","err","_generateOptions","_asyncToGenerator2","_regenerator","mark","_callee","from","options","hydraId","serviceUrl","wrap","_callee$","_context","prev","next","abrupt","_MEETING_LINK_","_SIP_URI_","_CONVERSATION_URL_","wasHydraPerson","_promise","resolve","waitForCatalog","getServiceUrlFromClusterId","t0","stop","generateOptions","_x","apply","arguments","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","ALTERNATE_REDIRECT_TRUE","body","lookupType"],"sources":["util.ts"],"sourcesContent":["import url from 'url';\n\nimport btoa from 'btoa';\n// @ts-ignore\nimport {deconstructHydraId} from '@webex/common';\n\nimport ParameterError from '../common/errors/parameter';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\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\n/**\n * @class MeetingInfoUtil\n */\nexport default class MeetingInfoUtil {\n static extractDestination(destination, type) {\n let dest = destination;\n\n if (type === _LOCUS_ID_) {\n if (!(destination && destination.url)) {\n throw new ParameterError(\n 'You cannot create a meeting by locus without a locus.url defined'\n );\n }\n dest = destination.url;\n }\n\n return dest;\n }\n\n static 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 */\n static isMeetingLink(value: string) {\n const parsedUrl = this.getParsedUrl(value);\n let hostNameBool;\n let pathNameBool;\n if (parsedUrl) {\n hostNameBool = parsedUrl.hostname && parsedUrl.hostname.includes(WEBEX_DOT_COM);\n pathNameBool =\n parsedUrl.pathname &&\n (parsedUrl.pathname.includes(`/${MEET}`) ||\n parsedUrl.pathname.includes(`/${MEET_M}`) ||\n parsedUrl.pathname.includes(`/${JOIN}`));\n }\n\n return hostNameBool && pathNameBool;\n }\n\n static 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\n static convertLinkToSip(value) {\n const parsedUrl = this.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 static 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\n static isPhoneNumber(phoneNumber) {\n const isValidNumber = DIALER_REGEX.PHONE_NUMBER.test(phoneNumber);\n\n return isValidNumber;\n }\n\n static 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\n static getSipUriFromHydraPersonId(destination, webex) {\n return 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 }\n\n static async generateOptions(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 = this.getHydraId(destination);\n\n if (this.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 (this.isSipUri(destination)) {\n options.type = _SIP_URI_;\n options.destination = destination;\n } else if (this.isPhoneNumber(destination)) {\n options.type = _SIP_URI_;\n options.destination = destination;\n } else if (this.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 this.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 serviceUrl = webex.internal.services.getServiceUrlFromClusterId(\n {\n cluster: hydraId.cluster,\n },\n webex\n );\n\n options.destination = hydraId.destination\n ? `${serviceUrl}/conversations/${hydraId.destination}`\n : serviceUrl;\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 the meeting link, SIP URI, phone number, 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 */\n static 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\n static 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}\n"],"mappings":"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"}