@webex/plugin-meetings 3.0.0-beta.8 → 3.0.0-beta.9

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 (200) hide show
  1. package/dist/common/browser-detection.js.map +1 -1
  2. package/dist/common/collection.js.map +1 -1
  3. package/dist/common/config.js.map +1 -1
  4. package/dist/common/errors/captcha-error.js +7 -0
  5. package/dist/common/errors/captcha-error.js.map +1 -1
  6. package/dist/common/errors/intent-to-join.js +8 -0
  7. package/dist/common/errors/intent-to-join.js.map +1 -1
  8. package/dist/common/errors/join-meeting.js +8 -0
  9. package/dist/common/errors/join-meeting.js.map +1 -1
  10. package/dist/common/errors/media.js +7 -0
  11. package/dist/common/errors/media.js.map +1 -1
  12. package/dist/common/errors/parameter.js.map +1 -1
  13. package/dist/common/errors/password-error.js +7 -0
  14. package/dist/common/errors/password-error.js.map +1 -1
  15. package/dist/common/errors/permission.js +7 -0
  16. package/dist/common/errors/permission.js.map +1 -1
  17. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  18. package/dist/common/errors/reconnection.js +7 -0
  19. package/dist/common/errors/reconnection.js.map +1 -1
  20. package/dist/common/errors/stats.js +7 -0
  21. package/dist/common/errors/stats.js.map +1 -1
  22. package/dist/common/errors/webex-errors.js.map +1 -1
  23. package/dist/common/errors/webex-meetings-error.js +5 -2
  24. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  25. package/dist/common/events/events-scope.js.map +1 -1
  26. package/dist/common/events/events.js.map +1 -1
  27. package/dist/common/events/trigger-proxy.js.map +1 -1
  28. package/dist/common/events/util.js.map +1 -1
  29. package/dist/common/logs/logger-config.js.map +1 -1
  30. package/dist/common/logs/logger-proxy.js.map +1 -1
  31. package/dist/common/logs/request.js +3 -0
  32. package/dist/common/logs/request.js.map +1 -1
  33. package/dist/common/queue.js.map +1 -1
  34. package/dist/config.js.map +1 -1
  35. package/dist/constants.js.map +1 -1
  36. package/dist/locus-info/controlsUtils.js.map +1 -1
  37. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  38. package/dist/locus-info/fullState.js.map +1 -1
  39. package/dist/locus-info/hostUtils.js.map +1 -1
  40. package/dist/locus-info/index.js +43 -5
  41. package/dist/locus-info/index.js.map +1 -1
  42. package/dist/locus-info/infoUtils.js.map +1 -1
  43. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  44. package/dist/locus-info/parser.js +12 -3
  45. package/dist/locus-info/parser.js.map +1 -1
  46. package/dist/locus-info/selfUtils.js.map +1 -1
  47. package/dist/media/index.js.map +1 -1
  48. package/dist/media/properties.js +12 -0
  49. package/dist/media/properties.js.map +1 -1
  50. package/dist/media/util.js.map +1 -1
  51. package/dist/mediaQualityMetrics/config.js.map +1 -1
  52. package/dist/meeting/effectsState.js +8 -1
  53. package/dist/meeting/effectsState.js.map +1 -1
  54. package/dist/meeting/index.js +173 -50
  55. package/dist/meeting/index.js.map +1 -1
  56. package/dist/meeting/muteState.js +6 -0
  57. package/dist/meeting/muteState.js.map +1 -1
  58. package/dist/meeting/request.js +54 -24
  59. package/dist/meeting/request.js.map +1 -1
  60. package/dist/meeting/state.js.map +1 -1
  61. package/dist/meeting/util.js.map +1 -1
  62. package/dist/meeting-info/collection.js +4 -1
  63. package/dist/meeting-info/collection.js.map +1 -1
  64. package/dist/meeting-info/index.js +5 -0
  65. package/dist/meeting-info/index.js.map +1 -1
  66. package/dist/meeting-info/meeting-info-v2.js +14 -2
  67. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  68. package/dist/meeting-info/request.js +3 -0
  69. package/dist/meeting-info/request.js.map +1 -1
  70. package/dist/meeting-info/util.js.map +1 -1
  71. package/dist/meeting-info/utilv2.js.map +1 -1
  72. package/dist/meetings/collection.js +4 -1
  73. package/dist/meetings/collection.js.map +1 -1
  74. package/dist/meetings/index.js +72 -20
  75. package/dist/meetings/index.js.map +1 -1
  76. package/dist/meetings/request.js +4 -0
  77. package/dist/meetings/request.js.map +1 -1
  78. package/dist/meetings/util.js.map +1 -1
  79. package/dist/member/index.js +30 -7
  80. package/dist/member/index.js.map +1 -1
  81. package/dist/member/util.js +2 -1
  82. package/dist/member/util.js.map +1 -1
  83. package/dist/members/collection.js +1 -0
  84. package/dist/members/collection.js.map +1 -1
  85. package/dist/members/index.js +14 -1
  86. package/dist/members/index.js.map +1 -1
  87. package/dist/members/request.js +19 -9
  88. package/dist/members/request.js.map +1 -1
  89. package/dist/members/util.js.map +1 -1
  90. package/dist/metrics/config.js.map +1 -1
  91. package/dist/metrics/constants.js.map +1 -1
  92. package/dist/metrics/index.js +8 -0
  93. package/dist/metrics/index.js.map +1 -1
  94. package/dist/networkQualityMonitor/index.js +10 -2
  95. package/dist/networkQualityMonitor/index.js.map +1 -1
  96. package/dist/personal-meeting-room/index.js +11 -0
  97. package/dist/personal-meeting-room/index.js.map +1 -1
  98. package/dist/personal-meeting-room/request.js +2 -1
  99. package/dist/personal-meeting-room/request.js.map +1 -1
  100. package/dist/personal-meeting-room/util.js.map +1 -1
  101. package/dist/reachability/index.js +17 -7
  102. package/dist/reachability/index.js.map +1 -1
  103. package/dist/reachability/request.js +1 -0
  104. package/dist/reachability/request.js.map +1 -1
  105. package/dist/reconnection-manager/index.js +21 -2
  106. package/dist/reconnection-manager/index.js.map +1 -1
  107. package/dist/roap/index.js +23 -13
  108. package/dist/roap/index.js.map +1 -1
  109. package/dist/roap/request.js +5 -2
  110. package/dist/roap/request.js.map +1 -1
  111. package/dist/roap/turnDiscovery.js +9 -1
  112. package/dist/roap/turnDiscovery.js.map +1 -1
  113. package/dist/statsAnalyzer/global.js.map +1 -1
  114. package/dist/statsAnalyzer/index.js +19 -1
  115. package/dist/statsAnalyzer/index.js.map +1 -1
  116. package/dist/statsAnalyzer/mqaUtil.js +9 -3
  117. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  118. package/dist/transcription/index.js +10 -3
  119. package/dist/transcription/index.js.map +1 -1
  120. package/package.json +17 -17
  121. package/src/common/{browser-detection.js → browser-detection.ts} +1 -1
  122. package/src/common/collection.ts +6 -6
  123. package/src/common/{config.js → config.ts} +1 -1
  124. package/src/common/errors/{captcha-error.js → captcha-error.ts} +5 -1
  125. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +6 -1
  126. package/src/common/errors/{join-meeting.js → join-meeting.ts} +6 -1
  127. package/src/common/errors/{media.js → media.ts} +5 -1
  128. package/src/common/errors/parameter.ts +3 -2
  129. package/src/common/errors/{password-error.js → password-error.ts} +5 -1
  130. package/src/common/errors/{permission.js → permission.ts} +5 -1
  131. package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
  132. package/src/common/errors/{reconnection.js → reconnection.ts} +5 -1
  133. package/src/common/errors/{stats.js → stats.ts} +5 -1
  134. package/src/common/errors/{webex-errors.js → webex-errors.ts} +1 -2
  135. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +3 -1
  136. package/src/common/events/{events-scope.js → events-scope.ts} +1 -1
  137. package/src/common/events/{events.js → events.ts} +0 -0
  138. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +1 -2
  139. package/src/common/events/{util.js → util.ts} +1 -1
  140. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  141. package/src/common/logs/{logger-proxy.js → logger-proxy.ts} +1 -1
  142. package/src/common/logs/{request.js → request.ts} +12 -2
  143. package/src/common/queue.ts +1 -2
  144. package/src/{config.js → config.ts} +1 -0
  145. package/src/constants.ts +2 -1
  146. package/src/locus-info/{controlsUtils.js → controlsUtils.ts} +4 -4
  147. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  148. package/src/locus-info/{fullState.js → fullState.ts} +1 -1
  149. package/src/locus-info/{hostUtils.js → hostUtils.ts} +5 -5
  150. package/src/locus-info/{index.js → index.ts} +67 -32
  151. package/src/locus-info/{infoUtils.js → infoUtils.ts} +3 -4
  152. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +13 -13
  153. package/src/locus-info/{parser.js → parser.ts} +22 -12
  154. package/src/locus-info/{selfUtils.js → selfUtils.ts} +17 -19
  155. package/src/media/{index.js → index.ts} +62 -16
  156. package/src/media/{properties.js → properties.ts} +16 -4
  157. package/src/media/{util.js → util.ts} +1 -1
  158. package/src/mediaQualityMetrics/{config.js → config.ts} +1 -1
  159. package/src/meeting/{effectsState.js → effectsState.ts} +12 -6
  160. package/src/meeting/{index.js → index.ts} +341 -156
  161. package/src/meeting/{muteState.js → muteState.ts} +16 -11
  162. package/src/meeting/{request.js → request.ts} +124 -36
  163. package/src/meeting/{state.js → state.ts} +6 -6
  164. package/src/meeting/{util.js → util.ts} +4 -4
  165. package/src/meeting-info/{collection.js → collection.ts} +4 -1
  166. package/src/meeting-info/{index.js → index.ts} +10 -6
  167. package/src/meeting-info/{meeting-info-v2.js → meeting-info-v2.ts} +28 -10
  168. package/src/meeting-info/{request.js → request.ts} +6 -2
  169. package/src/meeting-info/{util.js → util.ts} +6 -5
  170. package/src/meeting-info/{utilv2.js → utilv2.ts} +8 -7
  171. package/src/meetings/{collection.js → collection.ts} +5 -2
  172. package/src/meetings/{index.js → index.ts} +88 -21
  173. package/src/meetings/{request.js → request.ts} +6 -1
  174. package/src/meetings/{util.js → util.ts} +5 -3
  175. package/src/member/{index.js → index.ts} +46 -15
  176. package/src/member/{util.js → util.ts} +17 -16
  177. package/src/members/{collection.js → collection.ts} +2 -1
  178. package/src/members/{index.js → index.ts} +46 -26
  179. package/src/members/{request.js → request.ts} +16 -5
  180. package/src/members/{util.js → util.ts} +7 -7
  181. package/src/metrics/{config.js → config.ts} +0 -2
  182. package/src/metrics/{constants.js → constants.ts} +0 -0
  183. package/src/metrics/{index.js → index.ts} +27 -8
  184. package/src/networkQualityMonitor/{index.js → index.ts} +18 -3
  185. package/src/personal-meeting-room/{index.js → index.ts} +17 -4
  186. package/src/personal-meeting-room/{request.js → request.ts} +3 -1
  187. package/src/personal-meeting-room/{util.js → util.ts} +1 -1
  188. package/src/reachability/{index.js → index.ts} +28 -17
  189. package/src/reachability/request.ts +4 -2
  190. package/src/reconnection-manager/{index.js → index.ts} +41 -12
  191. package/src/roap/{index.js → index.ts} +27 -18
  192. package/src/roap/{request.js → request.ts} +14 -2
  193. package/src/roap/turnDiscovery.ts +14 -5
  194. package/src/statsAnalyzer/{global.js → global.ts} +0 -0
  195. package/src/statsAnalyzer/{index.js → index.ts} +36 -17
  196. package/src/statsAnalyzer/{mqaUtil.js → mqaUtil.ts} +6 -1
  197. package/src/transcription/{index.js → index.ts} +16 -11
  198. package/test/integration/spec/space-meeting.js +1 -2
  199. package/test/unit/spec/meeting/index.js +26 -14
  200. package/test/unit/spec/reconnection-manager/index.js +1 -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.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 }\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: string) => {\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: any = {};\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: 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(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: 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 }\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 +1 @@
1
- {"version":3,"names":["MeetingInfoUtil","getParsedUrl","link","parsedUrl","url","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","isSipUri","sipString","sipUri","DIALER_REGEX","SIP_ADDRESS","exec","isPhoneNumber","phoneNumber","isValidNumber","PHONE_NUMBER","test","getHydraId","destination","deconstructHydraId","type","id","cluster","UUID_REG","_ROOM_","room","_PEOPLE_","people","getSipUriFromHydraPersonId","get","then","res","emails","length","ParameterError","catch","err","getDestinationType","from","_PERSONAL_ROOM_","userId","device","orgId","options","VALID_EMAIL_ADDRESS","email","list","items","hydraId","_MEETING_LINK_","_SIP_URI_","_CONVERSATION_URL_","wasHydraPerson","resolve","waitForCatalog","conversationUrl","conversation","getUrlFromClusterId","getRequestBody","password","captchaInfo","body","supportHostKey","supportCountryList","sipUrl","_MEETING_ID_","meetingKey","_LOCUS_ID_","info","webExMeetingId","meetingUrl","_MEETING_UUID_","meetingUUID","captchaID","captchaVerifyCode","code","getWebexSite","uri","exceptedDomains","site","match","getDirectMeetingInfoURI","preferredWebexSite","webExSite"],"sources":["utilv2.js"],"sourcesContent":["import url from 'url';\n\nimport {\n deconstructHydraId\n} from '@webex/common';\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 _MEETING_UUID_,\n DIALER_REGEX,\n WEBEX_DOT_COM,\n CONVERSATION_SERVICE,\n JOIN,\n MEET,\n MEET_M,\n HTTPS_PROTOCOL,\n UUID_REG,\n VALID_EMAIL_ADDRESS\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nconst MeetingInfoUtil = {};\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\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\n\nMeetingInfoUtil.getDestinationType = async (from) => {\n const {type, webex} = from;\n let {destination} = from;\n\n if (type === _PERSONAL_ROOM_) { // this case checks if your type is personal room\n if (!destination) { // if we are not getting anything in desination we fetch org and user ids from webex instance\n destination = {\n userId: webex.internal.device.userId,\n orgId: webex.internal.device.orgId\n };\n }\n else {\n const options = VALID_EMAIL_ADDRESS.test(destination) ? {email: destination} : {id: destination};// we are assuming userId as default\n const res = await webex.people.list(options);\n\n let {orgId, id: userId} = res.items[0];\n\n userId = deconstructHydraId(userId).id;\n orgId = deconstructHydraId(orgId).id;\n destination = {userId, orgId};\n }\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#getDestinationType --> ${e}`);\n throw (e);\n }\n }\n else {\n LoggerProxy.logger.warn('Meeting-info:util#getDestinationType --> (\\'MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.');\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 {Object} options type and value to fetch meeting info\n * @param {String} options.type One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]\n * @param {Object} options.destination ?? value.value\n * @returns {Object} returns an object with {resource, method}\n */\nMeetingInfoUtil.getRequestBody = (options) => {\n const {\n type, destination, password, captchaInfo\n } = options;\n const body = {\n supportHostKey: true,\n supportCountryList: true,\n };\n\n switch (type) {\n case _SIP_URI_:\n body.sipUrl = destination;\n break;\n case _PERSONAL_ROOM_:\n body.userId = destination.userId;\n body.orgId = destination.orgId;\n break;\n case _MEETING_ID_:\n body.meetingKey = destination;\n break;\n case _CONVERSATION_URL_:\n body.conversationUrl = destination;\n break;\n case _LOCUS_ID_:\n // use meetingID for the completer meeting info for the already started meeting\n if (destination.info?.webExMeetingId) {\n body.meetingKey = destination.info.webExMeetingId;\n }\n else if (destination.info?.sipUri) {\n body.sipUrl = destination.info.sipUri;\n }\n break;\n case _MEETING_LINK_:\n body.meetingUrl = destination;\n break;\n case _MEETING_UUID_: {\n body.meetingUUID = destination;\n break;\n }\n default:\n }\n\n if (password) {\n body.password = password;\n }\n\n if (captchaInfo) {\n body.captchaID = captchaInfo.id;\n body.captchaVerifyCode = captchaInfo.code;\n }\n\n return body;\n};\n\n/**\n * Helper function to parse the webex site/host from a URI string.\n * @param {String} uri string (e.g. '10019857020@convergedats.webex.com')\n * @returns {String} the site/host part of the URI string (e.g. 'convergedats.webex.com')\n */\nMeetingInfoUtil.getWebexSite = (uri) => {\n const exceptedDomains = ['meet.webex.com', 'meetup.webex.com', 'ciscospark.com'];\n const site = uri?.match(/.+@([^.]+\\.[^.]+\\.[^.]+)$/)?.[1];\n\n return exceptedDomains.includes(site) ? null : site;\n};\n\n/**\n * Helper function to return the direct URI for fetching meeting info (to avoid a redirect).\n * @param {Object} options type and value to fetch meeting info\n * @param {String} options.type One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]\n * @param {Object} options.destination ?? value.value\n * @returns {String} returns a URI string or null of there is no direct URI\n */\nMeetingInfoUtil.getDirectMeetingInfoURI = (options) => {\n const {\n type, destination\n } = options;\n\n let preferredWebexSite = null;\n\n switch (type) {\n case _SIP_URI_:\n preferredWebexSite = MeetingInfoUtil.getWebexSite(destination);\n break;\n case _LOCUS_ID_:\n preferredWebexSite = destination.info?.webExSite;\n break;\n default:\n }\n\n return preferredWebexSite ? `https://${preferredWebexSite}/wbxappapi/v1/meetingInfo` : null;\n};\n\nexport default MeetingInfoUtil;\n"],"mappings":"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"}
1
+ {"version":3,"names":["MeetingInfoUtil","getParsedUrl","link","parsedUrl","url","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","isSipUri","sipString","sipUri","DIALER_REGEX","SIP_ADDRESS","exec","isPhoneNumber","phoneNumber","isValidNumber","PHONE_NUMBER","test","getHydraId","destination","deconstructHydraId","type","id","cluster","UUID_REG","_ROOM_","room","_PEOPLE_","people","getSipUriFromHydraPersonId","get","then","res","emails","length","ParameterError","catch","err","getDestinationType","from","_PERSONAL_ROOM_","userId","device","orgId","options","VALID_EMAIL_ADDRESS","email","list","items","hydraId","_MEETING_LINK_","_SIP_URI_","_CONVERSATION_URL_","wasHydraPerson","resolve","waitForCatalog","conversationUrl","conversation","getUrlFromClusterId","getRequestBody","password","captchaInfo","body","supportHostKey","supportCountryList","sipUrl","_MEETING_ID_","meetingKey","_LOCUS_ID_","info","webExMeetingId","meetingUrl","_MEETING_UUID_","meetingUUID","captchaID","captchaVerifyCode","code","getWebexSite","uri","exceptedDomains","site","match","getDirectMeetingInfoURI","preferredWebexSite","webExSite"],"sources":["utilv2.ts"],"sourcesContent":["import url from 'url';\n\nimport {\n // @ts-ignore\n deconstructHydraId\n} from '@webex/common';\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 _MEETING_UUID_,\n DIALER_REGEX,\n WEBEX_DOT_COM,\n CONVERSATION_SERVICE,\n JOIN,\n MEET,\n MEET_M,\n HTTPS_PROTOCOL,\n UUID_REG,\n VALID_EMAIL_ADDRESS\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nconst MeetingInfoUtil: any = {};\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: string) => {\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\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\n\nMeetingInfoUtil.getDestinationType = async (from) => {\n const {type, webex} = from;\n let {destination} = from;\n\n if (type === _PERSONAL_ROOM_) { // this case checks if your type is personal room\n if (!destination) { // if we are not getting anything in desination we fetch org and user ids from webex instance\n destination = {\n userId: webex.internal.device.userId,\n orgId: webex.internal.device.orgId\n };\n }\n else {\n const options = VALID_EMAIL_ADDRESS.test(destination) ? {email: destination} : {id: destination};// we are assuming userId as default\n const res = await webex.people.list(options);\n\n let {orgId, id: userId} = res.items[0];\n\n userId = deconstructHydraId(userId).id;\n orgId = deconstructHydraId(orgId).id;\n destination = {userId, orgId};\n }\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('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#getDestinationType --> ${e}`);\n throw (e);\n }\n }\n else {\n LoggerProxy.logger.warn('Meeting-info:util#getDestinationType --> (\\'MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.');\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 {Object} options type and value to fetch meeting info\n * @param {String} options.type One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]\n * @param {Object} options.destination ?? value.value\n * @returns {Object} returns an object with {resource, method}\n */\nMeetingInfoUtil.getRequestBody = (options: { type: string; destination: object } | any) => {\n const {\n type, destination, password, captchaInfo\n } = options;\n const body: any = {\n supportHostKey: true,\n supportCountryList: true,\n };\n\n switch (type) {\n case _SIP_URI_:\n body.sipUrl = destination;\n break;\n case _PERSONAL_ROOM_:\n body.userId = destination.userId;\n body.orgId = destination.orgId;\n break;\n case _MEETING_ID_:\n body.meetingKey = destination;\n break;\n case _CONVERSATION_URL_:\n body.conversationUrl = destination;\n break;\n case _LOCUS_ID_:\n // use meetingID for the completer meeting info for the already started meeting\n if (destination.info?.webExMeetingId) {\n body.meetingKey = destination.info.webExMeetingId;\n }\n else if (destination.info?.sipUri) {\n body.sipUrl = destination.info.sipUri;\n }\n break;\n case _MEETING_LINK_:\n body.meetingUrl = destination;\n break;\n case _MEETING_UUID_: {\n body.meetingUUID = destination;\n break;\n }\n default:\n }\n\n if (password) {\n body.password = password;\n }\n\n if (captchaInfo) {\n body.captchaID = captchaInfo.id;\n body.captchaVerifyCode = captchaInfo.code;\n }\n\n return body;\n};\n\n/**\n * Helper function to parse the webex site/host from a URI string.\n * @param {String} uri string (e.g. '10019857020@convergedats.webex.com')\n * @returns {String} the site/host part of the URI string (e.g. 'convergedats.webex.com')\n */\nMeetingInfoUtil.getWebexSite = (uri: string) => {\n const exceptedDomains = ['meet.webex.com', 'meetup.webex.com', 'ciscospark.com'];\n const site = uri?.match(/.+@([^.]+\\.[^.]+\\.[^.]+)$/)?.[1];\n\n return exceptedDomains.includes(site) ? null : site;\n};\n\n/**\n * Helper function to return the direct URI for fetching meeting info (to avoid a redirect).\n * @param {Object} options type and value to fetch meeting info\n * @param {String} options.type One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]\n * @param {Object} options.destination ?? value.value\n * @returns {String} returns a URI string or null of there is no direct URI\n */\nMeetingInfoUtil.getDirectMeetingInfoURI = (options: { type: string; destination: any }) => {\n const {\n type, destination\n } = options;\n\n let preferredWebexSite = null;\n\n switch (type) {\n case _SIP_URI_:\n preferredWebexSite = MeetingInfoUtil.getWebexSite(destination);\n break;\n case _LOCUS_ID_:\n preferredWebexSite = destination.info?.webExSite;\n break;\n default:\n }\n\n return preferredWebexSite ? `https://${preferredWebexSite}/wbxappapi/v1/meetingInfo` : null;\n};\n\nexport default MeetingInfoUtil;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AAKA;;AAoBA;;AACA;;AAEA,IAAMA,eAAoB,GAAG,EAA7B;;AAEAA,eAAe,CAACC,YAAhB,GAA+B,UAACC,IAAD,EAAU;EACvC,IAAI;IACF,IAAIC,SAAS,GAAGC,YAAA,CAAIC,KAAJ,CAAUH,IAAV,CAAhB;;IAEA,IAAI,CAACC,SAAL,EAAgB;MACd,OAAO,KAAP;IACD,CALC,CAMF;;;IACA,IAAI,CAACA,SAAS,CAACG,QAAf,EAAyB;MACvBH,SAAS,GAAGC,YAAA,CAAIC,KAAJ,WAAaE,yBAAb,SAA8BL,IAA9B,EAAZ;IACD;;IAED,OAAOC,SAAP;EACD,CAZD,CAaA,OAAOK,KAAP,EAAc;IACZC,oBAAA,CAAYC,MAAZ,CAAmBC,IAAnB,8EAA8FH,KAA9F;;IAEA,OAAO,IAAP;EACD;AACF,CAnBD;AAqBA;AACA;AACA;AACA;AACA;;;AACAR,eAAe,CAACY,aAAhB,GAAgC,UAACC,KAAD,EAAmB;EACjD,IAAMV,SAAS,GAAGH,eAAe,CAACC,YAAhB,CAA6BY,KAA7B,CAAlB;EACA,IAAMC,YAAY,GAAGX,SAAS,CAACY,QAAV,IAAsBZ,SAAS,CAACY,QAAV,CAAmBC,QAAnB,CAA4BC,wBAA5B,CAA3C;EACA,IAAMC,YAAY,GAAGf,SAAS,CAACgB,QAAV,KAAuBhB,SAAS,CAACgB,QAAV,CAAmBH,QAAnB,YAAgCI,eAAhC,MAA2CjB,SAAS,CAACgB,QAAV,CAAmBH,QAAnB,YAAgCK,iBAAhC,EAA3C,IAAwFlB,SAAS,CAACgB,QAAV,CAAmBH,QAAnB,YAAgCM,eAAhC,EAA/G,CAArB;EAEA,OAAOR,YAAY,IAAII,YAAvB;AACD,CAND;;AAQAlB,eAAe,CAACuB,iBAAhB,GAAoC,UAACV,KAAD,EAAQW,KAAR,EAAkB;EACpD,IAAMC,SAAS,GAAGD,KAAK,CAACE,QAAN,CAAeC,QAAf,CAAwBC,YAAxB,CAAqCf,KAArC,CAAlB;;EAEA,IAAIY,SAAJ,EAAe;IACb,OAAOA,SAAS,CAACI,QAAV,CAAmBC,+BAAnB,CAAP;EACD;;EAED,OAAO,KAAP;AACD,CARD;;AAWA9B,eAAe,CAAC+B,QAAhB,GAA2B,UAACC,SAAD,EAAe;EACxC;EACA;EACA,IAAMC,MAAM,GAAGC,uBAAA,CAAaC,WAAb,CAAyBC,IAAzB,CAA8BJ,SAA9B,CAAf;;EAEA,OAAOC,MAAP;AACD,CAND;;AAQAjC,eAAe,CAACqC,aAAhB,GAAgC,UAACC,WAAD,EAAiB;EAC/C,IAAMC,aAAa,GAAGL,uBAAA,CAAaM,YAAb,CAA0BC,IAA1B,CAA+BH,WAA/B,CAAtB;;EAEA,OAAOC,aAAP;AACD,CAJD;;AAMAvC,eAAe,CAAC0C,UAAhB,GAA6B,UAACC,WAAD,EAAiB;EAC5C,0BAA4B,IAAAC,0BAAA,EAAmBD,WAAnB,CAA5B;EAAA,IAAOE,IAAP,uBAAOA,IAAP;EAAA,IAAaC,EAAb,uBAAaA,EAAb;EAAA,IAAiBC,OAAjB,uBAAiBA,OAAjB;;EAEA,IAAID,EAAE,IAAIE,mBAAA,CAASP,IAAT,CAAcK,EAAd,CAAV,EAA6B;IAC3B,IAAID,IAAI,KAAKI,iBAAb,EAAqB;MACnB,OAAO;QAACC,IAAI,EAAE,IAAP;QAAaP,WAAW,EAAEG,EAA1B;QAA8BC,OAAO,EAAPA;MAA9B,CAAP;IACD;;IACD,IAAIF,IAAI,KAAKM,mBAAb,EAAuB;MACrB,OAAO;QAACC,MAAM,EAAE,IAAT;QAAeT,WAAW,EAAEG,EAA5B;QAAgCC,OAAO,EAAPA;MAAhC,CAAP;IACD;;IAED,OAAO,EAAP;EACD;;EAED,OAAO,EAAP;AACD,CAfD;;AAiBA/C,eAAe,CAACqD,0BAAhB,GAA6C,UAACV,WAAD,EAAcnB,KAAd;EAAA,OAAwBA,KAAK,CAAC4B,MAAN,CAAaE,GAAb,CAAiBX,WAAjB,EAA8BY,IAA9B,CAAmC,UAACC,GAAD,EAAS;IAC/G,IAAIA,GAAG,CAACC,MAAJ,IAAcD,GAAG,CAACC,MAAJ,CAAWC,MAA7B,EAAqC;MACnC,OAAOF,GAAG,CAACC,MAAJ,CAAW,CAAX,CAAP;IACD;;IACD,MAAM,IAAIE,kBAAJ,CAAmB,iDAAnB,CAAN;EACD,CALoE,EAKlEC,KALkE,CAK5D,UAACC,GAAD,EAAS;IAChBpD,oBAAA,CAAYC,MAAZ,CAAmBF,KAAnB,uGAAwHqD,GAAxH;;IACA,MAAMA,GAAN;EACD,CARoE,CAAxB;AAAA,CAA7C;;AAWA7D,eAAe,CAAC8D,kBAAhB;EAAA,mFAAqC,iBAAOC,IAAP;IAAA;;IAAA;MAAA;QAAA;UAAA;YAC5BlB,IAD4B,GACbkB,IADa,CAC5BlB,IAD4B,EACtBrB,KADsB,GACbuC,IADa,CACtBvC,KADsB;YAE9BmB,WAF8B,GAEfoB,IAFe,CAE9BpB,WAF8B;;YAAA,MAI/BE,IAAI,KAAKmB,0BAJsB;cAAA;cAAA;YAAA;;YAAA,IAK5BrB,WAL4B;cAAA;cAAA;YAAA;;YAKb;YAClBA,WAAW,GAAG;cACZsB,MAAM,EAAEzC,KAAK,CAACE,QAAN,CAAewC,MAAf,CAAsBD,MADlB;cAEZE,KAAK,EAAE3C,KAAK,CAACE,QAAN,CAAewC,MAAf,CAAsBC;YAFjB,CAAd;YAN+B;YAAA;;UAAA;YAYzBC,QAZyB,GAYfC,8BAAA,CAAoB5B,IAApB,CAAyBE,WAAzB,IAAwC;cAAC2B,KAAK,EAAE3B;YAAR,CAAxC,GAA+D;cAACG,EAAE,EAAEH;YAAL,CAZhD,EAYkE;;YAZlE;YAAA,OAabnB,KAAK,CAAC4B,MAAN,CAAamB,IAAb,CAAkBH,QAAlB,CAba;;UAAA;YAazBZ,GAbyB;YAAA,cAeLA,GAAG,CAACgB,KAAJ,CAAU,CAAV,CAfK,EAe1BL,KAf0B,eAe1BA,KAf0B,EAefF,MAfe,eAenBnB,EAfmB;YAiB/BmB,MAAM,GAAG,IAAArB,0BAAA,EAAmBqB,MAAnB,EAA2BnB,EAApC;YACAqB,KAAK,GAAG,IAAAvB,0BAAA,EAAmBuB,KAAnB,EAA0BrB,EAAlC;YACAH,WAAW,GAAG;cAACsB,MAAM,EAANA,MAAD;cAASE,KAAK,EAALA;YAAT,CAAd;;UAnB+B;YAAA,KAsB/BtB,IAtB+B;cAAA;cAAA;YAAA;;YAAA,iCAuB1B;cACLF,WAAW,EAAXA,WADK;cAELE,IAAI,EAAJA;YAFK,CAvB0B;;UAAA;YA4B7BuB,OA5B6B,GA4Bd,EA5Bc;YA6B7BK,OA7B6B,GA6BnBzE,eAAe,CAAC0C,UAAhB,CAA2BC,WAA3B,CA7BmB;;YAAA,KA+B/B3C,eAAe,CAACY,aAAhB,CAA8B+B,WAA9B,CA/B+B;cAAA;cAAA;YAAA;;YAgCjClC,oBAAA,CAAYC,MAAZ,CAAmBC,IAAnB,CAAwB,6GAAxB;;YAEAyD,OAAO,CAACvB,IAAR,GAAe6B,yBAAf;YACAN,OAAO,CAACzB,WAAR,GAAsBA,WAAtB;YAnCiC;YAAA;;UAAA;YAAA,KAqC1B3C,eAAe,CAAC+B,QAAhB,CAAyBY,WAAzB,CArC0B;cAAA;cAAA;YAAA;;YAsCjCyB,OAAO,CAACvB,IAAR,GAAe8B,oBAAf;YACAP,OAAO,CAACzB,WAAR,GAAsBA,WAAtB;YAvCiC;YAAA;;UAAA;YAAA,KAyC1B3C,eAAe,CAACqC,aAAhB,CAA8BM,WAA9B,CAzC0B;cAAA;cAAA;YAAA;;YA0CjCyB,OAAO,CAACvB,IAAR,GAAe8B,oBAAf;YACAP,OAAO,CAACzB,WAAR,GAAsBA,WAAtB;YA3CiC;YAAA;;UAAA;YAAA,KA6C1B3C,eAAe,CAACuB,iBAAhB,CAAkCoB,WAAlC,EAA+CnB,KAA/C,CA7C0B;cAAA;cAAA;YAAA;;YA8CjC4C,OAAO,CAACvB,IAAR,GAAe+B,6BAAf;YACAR,OAAO,CAACzB,WAAR,GAAsBA,WAAtB;YA/CiC;YAAA;;UAAA;YAAA,KAiD1B8B,OAAO,CAACrB,MAjDkB;cAAA;cAAA;YAAA;;YAkDjCgB,OAAO,CAACvB,IAAR,GAAe8B,oBAAf;YAlDiC,iCAoD1B3E,eAAe,CAACqD,0BAAhB,CAA2CoB,OAAO,CAAC9B,WAAnD,EAAgEnB,KAAhE,EAAuE+B,IAAvE,CAA4E,UAACC,GAAD,EAAS;cAC1FY,OAAO,CAACzB,WAAR,GAAsBa,GAAtB,CAD0F,CAG1F;cACA;cACA;;cACAY,OAAO,CAACS,cAAR,GAAyB,IAAzB;cAEA,OAAO,iBAAQC,OAAR,CAAgBV,OAAhB,CAAP;YACD,CATM,CApD0B;;UAAA;YAAA,KA+D1BK,OAAO,CAACvB,IA/DkB;cAAA;cAAA;YAAA;;YAgEjCkB,OAAO,CAACvB,IAAR,GAAe+B,6BAAf;YAhEiC;YAAA;YAAA,OAkEzBpD,KAAK,CAACE,QAAN,CAAeC,QAAf,CAAwBoD,cAAxB,CAAuC,UAAvC,CAlEyB;;UAAA;YAoEzBC,eApEyB,GAoEPxD,KAAK,CAACE,QAAN,CAAeuD,YAAf,CAA4BC,mBAA5B,CAAgD;cACtEnC,OAAO,EAAE0B,OAAO,CAAC1B,OADqD;cAEtED,EAAE,EAAE2B,OAAO,CAAC9B;YAF0D,CAAhD,CApEO;YAyE/ByB,OAAO,CAACzB,WAAR,GAAsBqC,eAAtB;YAzE+B;YAAA;;UAAA;YAAA;YAAA;;YA4E/BvE,oBAAA,CAAYC,MAAZ,CAAmBF,KAAnB;;YA5E+B;;UAAA;YAAA;YAAA;;UAAA;YAiFjCC,oBAAA,CAAYC,MAAZ,CAAmBC,IAAnB,CAAwB,qKAAxB;;YAjFiC,MAkF3B,IAAIgD,kBAAJ,CAAmB,yHAAnB,CAlF2B;;UAAA;YAAA,iCAqF5B,iBAAQmB,OAAR,CAAgBV,OAAhB,CArF4B;;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAArC;;EAAA;IAAA;EAAA;AAAA;AAwFA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACApE,eAAe,CAACmF,cAAhB,GAAiC,UAACf,OAAD,EAA0D;EAAA;;EACzF,IACEvB,IADF,GAEIuB,OAFJ,CACEvB,IADF;EAAA,IACQF,WADR,GAEIyB,OAFJ,CACQzB,WADR;EAAA,IACqByC,QADrB,GAEIhB,OAFJ,CACqBgB,QADrB;EAAA,IAC+BC,WAD/B,GAEIjB,OAFJ,CAC+BiB,WAD/B;EAGA,IAAMC,IAAS,GAAG;IAChBC,cAAc,EAAE,IADA;IAEhBC,kBAAkB,EAAE;EAFJ,CAAlB;;EAKA,QAAQ3C,IAAR;IACE,KAAK8B,oBAAL;MACEW,IAAI,CAACG,MAAL,GAAc9C,WAAd;MACA;;IACF,KAAKqB,0BAAL;MACEsB,IAAI,CAACrB,MAAL,GAActB,WAAW,CAACsB,MAA1B;MACAqB,IAAI,CAACnB,KAAL,GAAaxB,WAAW,CAACwB,KAAzB;MACA;;IACF,KAAKuB,uBAAL;MACEJ,IAAI,CAACK,UAAL,GAAkBhD,WAAlB;MACA;;IACF,KAAKiC,6BAAL;MACEU,IAAI,CAACN,eAAL,GAAuBrC,WAAvB;MACA;;IACF,KAAKiD,qBAAL;MACE;MACA,yBAAIjD,WAAW,CAACkD,IAAhB,8CAAI,kBAAkBC,cAAtB,EAAsC;QACpCR,IAAI,CAACK,UAAL,GAAkBhD,WAAW,CAACkD,IAAZ,CAAiBC,cAAnC;MACD,CAFD,MAGK,0BAAInD,WAAW,CAACkD,IAAhB,+CAAI,mBAAkB5D,MAAtB,EAA8B;QACjCqD,IAAI,CAACG,MAAL,GAAc9C,WAAW,CAACkD,IAAZ,CAAiB5D,MAA/B;MACD;;MACD;;IACF,KAAKyC,yBAAL;MACEY,IAAI,CAACS,UAAL,GAAkBpD,WAAlB;MACA;;IACF,KAAKqD,yBAAL;MAAqB;QACnBV,IAAI,CAACW,WAAL,GAAmBtD,WAAnB;QACA;MACD;;IACD;EA9BF;;EAiCA,IAAIyC,QAAJ,EAAc;IACZE,IAAI,CAACF,QAAL,GAAgBA,QAAhB;EACD;;EAED,IAAIC,WAAJ,EAAiB;IACfC,IAAI,CAACY,SAAL,GAAiBb,WAAW,CAACvC,EAA7B;IACAwC,IAAI,CAACa,iBAAL,GAAyBd,WAAW,CAACe,IAArC;EACD;;EAED,OAAOd,IAAP;AACD,CApDD;AAsDA;AACA;AACA;AACA;AACA;;;AACAtF,eAAe,CAACqG,YAAhB,GAA+B,UAACC,GAAD,EAAiB;EAAA;;EAC9C,IAAMC,eAAe,GAAG,CAAC,gBAAD,EAAmB,kBAAnB,EAAuC,gBAAvC,CAAxB;EACA,IAAMC,IAAI,GAAGF,GAAH,aAAGA,GAAH,qCAAGA,GAAG,CAAEG,KAAL,CAAW,2BAAX,CAAH,+CAAG,WAA0C,CAA1C,CAAb;EAEA,OAAOF,eAAe,CAACvF,QAAhB,CAAyBwF,IAAzB,IAAiC,IAAjC,GAAwCA,IAA/C;AACD,CALD;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAxG,eAAe,CAAC0G,uBAAhB,GAA0C,UAACtC,OAAD,EAAiD;EAAA;;EACzF,IACEvB,IADF,GAEIuB,OAFJ,CACEvB,IADF;EAAA,IACQF,WADR,GAEIyB,OAFJ,CACQzB,WADR;EAIA,IAAIgE,kBAAkB,GAAG,IAAzB;;EAEA,QAAQ9D,IAAR;IACE,KAAK8B,oBAAL;MACEgC,kBAAkB,GAAG3G,eAAe,CAACqG,YAAhB,CAA6B1D,WAA7B,CAArB;MACA;;IACF,KAAKiD,qBAAL;MACEe,kBAAkB,yBAAGhE,WAAW,CAACkD,IAAf,uDAAG,mBAAkBe,SAAvC;MACA;;IACF;EAPF;;EAUA,OAAOD,kBAAkB,qBAAcA,kBAAd,iCAA8D,IAAvF;AACD,CAlBD;;eAoBe3G,e"}
@@ -52,7 +52,9 @@ var MeetingCollection = /*#__PURE__*/function (_Collection) {
52
52
  (0, _createClass2.default)(MeetingCollection, [{
53
53
  key: "set",
54
54
  value: function set(meeting) {
55
- this.meetings[meeting.id] = meeting;
55
+ // @ts-ignore
56
+ this.meetings[meeting.id] = meeting; // @ts-ignore
57
+
56
58
  return this.meetings[meeting.id];
57
59
  }
58
60
  /**
@@ -68,6 +70,7 @@ var MeetingCollection = /*#__PURE__*/function (_Collection) {
68
70
  key: "getByKey",
69
71
  value: function getByKey(key, value) {
70
72
  if (key && value) {
73
+ // @ts-ignore
71
74
  return (0, _find2.default)(this.meetings, function (meeting) {
72
75
  return meeting[key] === value;
73
76
  });
@@ -1 +1 @@
1
- {"version":3,"names":["MeetingCollection","meeting","meetings","id","key","value","Collection"],"sources":["collection.js"],"sourcesContent":["import {find} from 'lodash';\n\nimport Collection from '../common/collection';\n/**\n * @export\n * @class MeetingCollection\n */\nexport default class MeetingCollection extends Collection {\n /**\n * @constructor\n * @public\n * @memberof MeetingCollection\n */\n constructor() {\n super('meetings');\n }\n\n set(meeting) {\n this.meetings[meeting.id] = meeting;\n\n return this.meetings[meeting.id];\n }\n\n\n /**\n * get a specific meeting searching for key\n * @param {String} key\n * @param {Any} value\n * @returns {Meeting} if found, else returns null\n * @public\n * @memberof MeetingCollection\n */\n getByKey(key, value) {\n if (key && value) {\n return find(this.meetings, (meeting) => (meeting[key] === value));\n }\n\n return null;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;;;;;AACA;AACA;AACA;AACA;IACqBA,iB;;;;;EACnB;AACF;AACA;AACA;AACA;EACE,6BAAc;IAAA;IAAA,yBACN,UADM;EAEb;;;;WAED,aAAIC,OAAJ,EAAa;MACX,KAAKC,QAAL,CAAcD,OAAO,CAACE,EAAtB,IAA4BF,OAA5B;MAEA,OAAO,KAAKC,QAAL,CAAcD,OAAO,CAACE,EAAtB,CAAP;IACD;IAGD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,kBAASC,GAAT,EAAcC,KAAd,EAAqB;MACnB,IAAID,GAAG,IAAIC,KAAX,EAAkB;QAChB,OAAO,oBAAK,KAAKH,QAAV,EAAoB,UAACD,OAAD;UAAA,OAAcA,OAAO,CAACG,GAAD,CAAP,KAAiBC,KAA/B;QAAA,CAApB,CAAP;MACD;;MAED,OAAO,IAAP;IACD;;;EA/B4CC,mB"}
1
+ {"version":3,"names":["MeetingCollection","meeting","meetings","id","key","value","Collection"],"sources":["collection.ts"],"sourcesContent":["import {find} from 'lodash';\n\nimport Collection from '../common/collection';\n\n/**\n * @export\n * @class MeetingCollection\n */\nexport default class MeetingCollection extends Collection {\n /**\n * @constructor\n * @public\n * @memberof MeetingCollection\n */\n constructor() {\n super('meetings');\n }\n\n set(meeting) {\n // @ts-ignore\n this.meetings[meeting.id] = meeting;\n\n // @ts-ignore\n return this.meetings[meeting.id];\n }\n\n /**\n * get a specific meeting searching for key\n * @param {String} key\n * @param {Any} value\n * @returns {Meeting} if found, else returns null\n * @public\n * @memberof MeetingCollection\n */\n public getByKey(key: string, value: any) {\n if (key && value) {\n // @ts-ignore\n return find(this.meetings, (meeting) => (meeting[key] === value));\n }\n\n return null;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;;;;;AAEA;AACA;AACA;AACA;IACqBA,iB;;;;;EACnB;AACF;AACA;AACA;AACA;EACE,6BAAc;IAAA;IAAA,yBACN,UADM;EAEb;;;;WAED,aAAIC,OAAJ,EAAa;MACX;MACA,KAAKC,QAAL,CAAcD,OAAO,CAACE,EAAtB,IAA4BF,OAA5B,CAFW,CAIX;;MACA,OAAO,KAAKC,QAAL,CAAcD,OAAO,CAACE,EAAtB,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,kBAAgBC,GAAhB,EAA6BC,KAA7B,EAAyC;MACvC,IAAID,GAAG,IAAIC,KAAX,EAAkB;QAChB;QACA,OAAO,oBAAK,KAAKH,QAAV,EAAoB,UAACD,OAAD;UAAA,OAAcA,OAAO,CAACG,GAAD,CAAP,KAAiBC,KAA/B;QAAA,CAApB,CAAP;MACD;;MAED,OAAO,IAAP;IACD;;;EAjC4CC,mB"}
@@ -228,7 +228,18 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
228
228
  * @private
229
229
  * @memberof Meetings
230
230
  */
231
-
231
+ // @ts-ignore
232
+
233
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "loggerRequest", void 0);
234
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "media", void 0);
235
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "meetingCollection", void 0);
236
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "personalMeetingRoom", void 0);
237
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "preferredWebexSite", void 0);
238
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "reachability", void 0);
239
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "registered", void 0);
240
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "request", void 0);
241
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "geoHintInfo", void 0);
242
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "meetingInfo", void 0);
232
243
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "namespace", _constants.MEETINGS);
233
244
  _this.request = new _request2.default({}, {
234
245
  parent: _this.webex
@@ -240,6 +251,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
240
251
  * @private
241
252
  * @memberof Meetings
242
253
  */
254
+ // @ts-ignore
243
255
 
244
256
  _this.loggerRequest = new _request.default({
245
257
  webex: _this.webex
@@ -326,7 +338,8 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
326
338
  // Either the locus
327
339
  // TODO : Add check for the callBack Address
328
340
 
329
- meeting = this.meetingCollection.getByKey(_constants.LOCUS_URL, data.locusUrl) || this.meetingCollection.getByKey(_constants.CORRELATION_ID, _util2.default.checkForCorrelationId(this.webex.internal.device.url, data.locus)) || this.meetingCollection.getByKey(_constants.SIP_URI, data.locus.self && data.locus.self.callbackInfo && data.locus.self.callbackInfo.callbackAddress) || ((_data$locus$info = data.locus.info) !== null && _data$locus$info !== void 0 && _data$locus$info.isUnifiedSpaceMeeting ? undefined : this.meetingCollection.getByKey(_constants.CONVERSATION_URL, data.locus.conversationUrl)); // Special case when locus has got replaced, This only happend once if a replace locus exists
341
+ meeting = this.meetingCollection.getByKey(_constants.LOCUS_URL, data.locusUrl) || // @ts-ignore
342
+ this.meetingCollection.getByKey(_constants.CORRELATION_ID, _util2.default.checkForCorrelationId(this.webex.internal.device.url, data.locus)) || this.meetingCollection.getByKey(_constants.SIP_URI, data.locus.self && data.locus.self.callbackInfo && data.locus.self.callbackInfo.callbackAddress) || ((_data$locus$info = data.locus.info) !== null && _data$locus$info !== void 0 && _data$locus$info.isUnifiedSpaceMeeting ? undefined : this.meetingCollection.getByKey(_constants.CONVERSATION_URL, data.locus.conversationUrl)); // Special case when locus has got replaced, This only happend once if a replace locus exists
330
343
  // https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-changing-mid-call
331
344
 
332
345
  if (!meeting && ((_data$locus = data.locus) === null || _data$locus === void 0 ? void 0 : (_data$locus$replaces = _data$locus.replaces) === null || _data$locus$replaces === void 0 ? void 0 : _data$locus$replaces.length) > 0) {
@@ -447,15 +460,19 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
447
460
  value: function listenForEvents() {
448
461
  var _this3 = this;
449
462
 
463
+ // @ts-ignore
450
464
  this.webex.internal.mercury.on(_constants.LOCUSEVENT.LOCUS_MERCURY, function (envelope) {
451
465
  _this3.handleLocusMercury(envelope);
452
- });
466
+ }); // @ts-ignore
467
+
453
468
  this.webex.internal.mercury.on(_constants.ROAP.ROAP_MERCURY, function (envelope) {
454
469
  _util2.default.handleRoapMercury(envelope, _this3.meetingCollection);
455
- });
470
+ }); // @ts-ignore
471
+
456
472
  this.webex.internal.mercury.on(_constants.ONLINE, function () {
457
473
  _this3.syncMeetings();
458
- });
474
+ }); // @ts-ignore
475
+
459
476
  this.webex.internal.mercury.on(_constants.OFFLINE, function () {
460
477
  _this3.handleMercuryOffline();
461
478
  });
@@ -470,8 +487,11 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
470
487
  }, {
471
488
  key: "stopListeningForEvents",
472
489
  value: function stopListeningForEvents() {
473
- this.webex.internal.mercury.off(_constants.LOCUSEVENT.LOCUS_MERCURY);
474
- this.webex.internal.mercury.off(_constants.ROAP.ROAP_MERCURY);
490
+ // @ts-ignore
491
+ this.webex.internal.mercury.off(_constants.LOCUSEVENT.LOCUS_MERCURY); // @ts-ignore
492
+
493
+ this.webex.internal.mercury.off(_constants.ROAP.ROAP_MERCURY); // @ts-ignore
494
+
475
495
  this.webex.internal.mercury.off(_constants.ONLINE);
476
496
  }
477
497
  /**
@@ -485,10 +505,14 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
485
505
  value: function onReady() {
486
506
  var _this4 = this;
487
507
 
508
+ // @ts-ignore
488
509
  this.webex.once(_constants.READY, function () {
489
- _config2.default.set(_this4.config);
510
+ // @ts-ignore
511
+ _config2.default.set(_this4.config); // @ts-ignore
512
+
513
+
514
+ _loggerConfig.default.set(_this4.config.logging); // @ts-ignore
490
515
 
491
- _loggerConfig.default.set(_this4.config.logging);
492
516
 
493
517
  _loggerProxy.default.set(_this4.webex.logger);
494
518
 
@@ -502,9 +526,11 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
502
526
  * @private
503
527
  * @memberof Meetings
504
528
  */
529
+ // @ts-ignore
530
+
505
531
 
532
+ _this4.meetingInfo = _this4.config.experimental.enableUnifiedMeetings ? new _meetingInfoV.default(_this4.webex) : new _meetingInfo.default(_this4.webex); // @ts-ignore
506
533
 
507
- _this4.meetingInfo = _this4.config.experimental.enableUnifiedMeetings ? new _meetingInfoV.default(_this4.webex) : new _meetingInfo.default(_this4.webex);
508
534
  _this4.personalMeetingRoom = new _personalMeetingRoom.default({
509
535
  meetingInfo: _this4.meetingInfo
510
536
  }, {
@@ -518,7 +544,8 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
518
544
 
519
545
  _util2.default.checkH264Support({
520
546
  disableNotifications: true
521
- });
547
+ }); // @ts-ignore
548
+
522
549
 
523
550
  _metrics.default.initialSetup(_this4.meetingCollection, _this4.webex);
524
551
  });
@@ -538,10 +565,13 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
538
565
 
539
566
  if (typeof changeState !== 'boolean') {
540
567
  return;
541
- }
568
+ } // @ts-ignore
569
+
542
570
 
543
571
  if (((_this$config = this.config) === null || _this$config === void 0 ? void 0 : (_this$config$experime = _this$config.experimental) === null || _this$config$experime === void 0 ? void 0 : _this$config$experime.enableUnifiedMeetings) !== changeState) {
544
- this.config.experimental.enableUnifiedMeetings = changeState;
572
+ // @ts-ignore
573
+ this.config.experimental.enableUnifiedMeetings = changeState; // @ts-ignore
574
+
545
575
  this.meetingInfo = changeState ? new _meetingInfoV.default(this.webex) : new _meetingInfo.default(this.webex);
546
576
  }
547
577
  }
@@ -558,7 +588,8 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
558
588
  value: function _toggleTurnDiscovery(enable) {
559
589
  if (typeof enable !== 'boolean') {
560
590
  return;
561
- }
591
+ } // @ts-ignore
592
+
562
593
 
563
594
  this.config.experimental.enableTurnDiscovery = enable;
564
595
  }
@@ -577,9 +608,11 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
577
608
 
578
609
  if (typeof changeState !== 'boolean') {
579
610
  return;
580
- }
611
+ } // @ts-ignore
612
+
581
613
 
582
614
  if (((_this$config2 = this.config) === null || _this$config2 === void 0 ? void 0 : (_this$config2$experim = _this$config2.experimental) === null || _this$config2$experim === void 0 ? void 0 : _this$config2$experim.enableAdhocMeetings) !== changeState) {
615
+ // @ts-ignore
583
616
  this.config.experimental.enableAdhocMeetings = changeState;
584
617
  }
585
618
  }
@@ -597,6 +630,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
597
630
  value: function register() {
598
631
  var _this5 = this;
599
632
 
633
+ // @ts-ignore
600
634
  if (!this.webex.canAuthorize) {
601
635
  _loggerProxy.default.logger.error('Meetings:index#register --> ERROR, Unable to register, SDK cannot authorize');
602
636
 
@@ -611,9 +645,12 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
611
645
 
612
646
  return _promise.default.all([this.fetchUserPreferredWebexSite(), this.getGeoHint(), this.startReachability().catch(function (error) {
613
647
  _loggerProxy.default.logger.error("Meetings:index#register --> GDM error, ".concat(error.message));
614
- }), this.webex.internal.device.register().then(function () {
648
+ }), // @ts-ignore
649
+ this.webex.internal.device.register() // @ts-ignore
650
+ .then(function () {
615
651
  return _loggerProxy.default.logger.info("Meetings:index#register --> INFO, Device registered ".concat(_this5.webex.internal.device.url));
616
- }).then(function () {
652
+ }) // @ts-ignore
653
+ .then(function () {
617
654
  return _this5.webex.internal.mercury.connect();
618
655
  }), _util2.default.checkH264Support.call(this)]).then(function () {
619
656
  _this5.listenForEvents();
@@ -657,8 +694,10 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
657
694
  return _promise.default.resolve();
658
695
  }
659
696
 
660
- this.stopListeningForEvents();
661
- return this.webex.internal.mercury.disconnect().then(function () {
697
+ this.stopListeningForEvents(); // @ts-ignore
698
+
699
+ return this.webex.internal.mercury.disconnect() // @ts-ignore
700
+ .then(function () {
662
701
  return _this6.webex.internal.device.unregister();
663
702
  }).then(function () {
664
703
  _triggerProxy.default.trigger(_this6, {
@@ -701,6 +740,8 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
701
740
  meetingId: options.meetingId,
702
741
  details: uploadResult
703
742
  });
743
+
744
+ return uploadResult;
704
745
  }).catch(function (uploadError) {
705
746
  _loggerProxy.default.logger.error('Meetings:index#uploadLogs --> Unable to upload logs for meeting', uploadError);
706
747
 
@@ -713,6 +754,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
713
754
  });
714
755
 
715
756
  _metrics.default.sendBehavioralMetric(_constants2.default.UPLOAD_LOGS_FAILURE, {
757
+ // @ts-ignore - seems like typo
716
758
  meetingId: options.meetingsId,
717
759
  reason: uploadError.message,
718
760
  stack: uploadError.stack,
@@ -730,6 +772,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
730
772
  }, {
731
773
  key: "setReachability",
732
774
  value: function setReachability() {
775
+ // @ts-ignore
733
776
  this.reachability = new _reachability.default(this.webex);
734
777
  }
735
778
  /**
@@ -889,6 +932,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
889
932
  if (createdMeeting && createdMeeting.on) {
890
933
  // Create a destruction event for the meeting.
891
934
  createdMeeting.on(_constants.EVENTS.DESTROY_MEETING, function (payload) {
935
+ // @ts-ignore
892
936
  if (_this10.config.autoUploadLogs) {
893
937
  var _createdMeeting$locus, _createdMeeting$locus2, _createdMeeting$locus3, _createdMeeting$locus4;
894
938
 
@@ -906,6 +950,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
906
950
  }
907
951
  });
908
952
  createdMeeting.on(_constants.EVENTS.REQUEST_UPLOAD_LOGS, function (meetingInstance) {
953
+ // @ts-ignore
909
954
  if (_this10.config.autoUploadLogs) {
910
955
  var _meetingInstance$locu, _meetingInstance$locu2, _meetingInstance$locu3, _meetingInstance$locu4;
911
956
 
@@ -966,8 +1011,11 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
966
1011
  type = _args.length > 1 && _args[1] !== undefined ? _args[1] : null;
967
1012
  useRandomDelayForInfo = _args.length > 2 && _args[2] !== undefined ? _args[2] : false;
968
1013
  meeting = new _meeting.default({
1014
+ // @ts-ignore
969
1015
  userId: this.webex.internal.device.userId,
1016
+ // @ts-ignore
970
1017
  deviceUrl: this.webex.internal.device.url,
1018
+ // @ts-ignore
971
1019
  orgId: this.webex.internal.device.orgId,
972
1020
  locus: type === _constants._LOCUS_ID_ ? destination : null,
973
1021
  // pass the locus object if present
@@ -975,6 +1023,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
975
1023
  destination: destination,
976
1024
  destinationType: type
977
1025
  }, {
1026
+ // @ts-ignore
978
1027
  parent: this.webex
979
1028
  });
980
1029
  this.meetingCollection.set(meeting);
@@ -994,7 +1043,8 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
994
1043
  waitingTime = Math.round(Math.random() * maxWaitingTime);
995
1044
  }
996
1045
 
997
- isMeetingActive = !!((_destination$fullStat = destination.fullState) !== null && _destination$fullStat !== void 0 && _destination$fullStat.active);
1046
+ isMeetingActive = !!((_destination$fullStat = destination.fullState) !== null && _destination$fullStat !== void 0 && _destination$fullStat.active); // @ts-ignore
1047
+
998
1048
  enableUnifiedMeetings = this.config.experimental.enableUnifiedMeetings;
999
1049
 
1000
1050
  if (!(enableUnifiedMeetings && !isMeetingActive && useRandomDelayForInfo && waitingTime > 0)) {
@@ -1139,8 +1189,10 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
1139
1189
  for (var _i = 0, _Object$values = (0, _values.default)(meetingsCollection); _i < _Object$values.length; _i++) {
1140
1190
  var meeting = _Object$values[_i];
1141
1191
 
1192
+ // @ts-ignore
1142
1193
  if (!activeLocusUrl.includes(meeting.locusUrl)) {
1143
1194
  // destroy function also uploads logs
1195
+ // @ts-ignore
1144
1196
  _this11.destroy(meeting, _constants.MEETING_REMOVED_REASON.NO_MEETINGS_TO_SYNC);
1145
1197
  }
1146
1198
  }