@webex/plugin-meetings 2.59.8-next.2 → 2.60.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 (433) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +41 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +357 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +215 -0
  9. package/dist/breakouts/breakout.js.map +1 -0
  10. package/dist/breakouts/collection.js +22 -0
  11. package/dist/breakouts/collection.js.map +1 -0
  12. package/dist/breakouts/edit-lock-error.js +51 -0
  13. package/dist/breakouts/edit-lock-error.js.map +1 -0
  14. package/dist/breakouts/events.js +44 -0
  15. package/dist/breakouts/events.js.map +1 -0
  16. package/dist/breakouts/index.js +1047 -0
  17. package/dist/breakouts/index.js.map +1 -0
  18. package/dist/breakouts/request.js +77 -0
  19. package/dist/breakouts/request.js.map +1 -0
  20. package/dist/breakouts/utils.js +64 -0
  21. package/dist/breakouts/utils.js.map +1 -0
  22. package/dist/common/browser-detection.js +1 -2
  23. package/dist/common/browser-detection.js.map +1 -1
  24. package/dist/common/collection.js +1 -2
  25. package/dist/common/collection.js.map +1 -1
  26. package/dist/common/config.js +1 -2
  27. package/dist/common/config.js.map +1 -1
  28. package/dist/common/errors/captcha-error.js +1 -2
  29. package/dist/common/errors/captcha-error.js.map +1 -1
  30. package/dist/common/errors/intent-to-join.js +1 -2
  31. package/dist/common/errors/intent-to-join.js.map +1 -1
  32. package/dist/common/errors/join-meeting.js +1 -2
  33. package/dist/common/errors/join-meeting.js.map +1 -1
  34. package/dist/common/errors/media.js +1 -2
  35. package/dist/common/errors/media.js.map +1 -1
  36. package/dist/common/errors/no-meeting-info.js +50 -0
  37. package/dist/common/errors/no-meeting-info.js.map +1 -0
  38. package/dist/common/errors/parameter.js +3 -4
  39. package/dist/common/errors/parameter.js.map +1 -1
  40. package/dist/common/errors/password-error.js +1 -2
  41. package/dist/common/errors/password-error.js.map +1 -1
  42. package/dist/common/errors/permission.js +1 -2
  43. package/dist/common/errors/permission.js.map +1 -1
  44. package/dist/common/errors/reclaim-host-role-errors.js +154 -0
  45. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  46. package/dist/common/errors/reconnection-in-progress.js +1 -2
  47. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  48. package/dist/common/errors/reconnection.js +1 -2
  49. package/dist/common/errors/reconnection.js.map +1 -1
  50. package/dist/common/errors/stats.js +1 -2
  51. package/dist/common/errors/stats.js.map +1 -1
  52. package/dist/common/errors/webex-errors.js +48 -28
  53. package/dist/common/errors/webex-errors.js.map +1 -1
  54. package/dist/common/errors/webex-meetings-error.js +1 -2
  55. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  56. package/dist/common/events/events-scope.js +1 -2
  57. package/dist/common/events/events-scope.js.map +1 -1
  58. package/dist/common/events/events.js +1 -2
  59. package/dist/common/events/events.js.map +1 -1
  60. package/dist/common/events/trigger-proxy.js +1 -2
  61. package/dist/common/events/trigger-proxy.js.map +1 -1
  62. package/dist/common/events/util.js +1 -2
  63. package/dist/common/events/util.js.map +1 -1
  64. package/dist/common/logs/logger-config.js +1 -2
  65. package/dist/common/logs/logger-config.js.map +1 -1
  66. package/dist/common/logs/logger-proxy.js +2 -3
  67. package/dist/common/logs/logger-proxy.js.map +1 -1
  68. package/dist/common/logs/request.js +8 -5
  69. package/dist/common/logs/request.js.map +1 -1
  70. package/dist/common/queue.js +22 -9
  71. package/dist/common/queue.js.map +1 -1
  72. package/dist/config.js +9 -12
  73. package/dist/config.js.map +1 -1
  74. package/dist/constants.js +437 -433
  75. package/dist/constants.js.map +1 -1
  76. package/dist/controls-options-manager/constants.js +3 -6
  77. package/dist/controls-options-manager/constants.js.map +1 -1
  78. package/dist/controls-options-manager/enums.js +14 -6
  79. package/dist/controls-options-manager/enums.js.map +1 -1
  80. package/dist/controls-options-manager/index.js +126 -37
  81. package/dist/controls-options-manager/index.js.map +1 -1
  82. package/dist/controls-options-manager/types.js +7 -0
  83. package/dist/controls-options-manager/types.js.map +1 -0
  84. package/dist/controls-options-manager/util.js +309 -19
  85. package/dist/controls-options-manager/util.js.map +1 -1
  86. package/dist/index.js +116 -4
  87. package/dist/index.js.map +1 -1
  88. package/dist/interpretation/collection.js +22 -0
  89. package/dist/interpretation/collection.js.map +1 -0
  90. package/dist/interpretation/index.js +365 -0
  91. package/dist/interpretation/index.js.map +1 -0
  92. package/dist/interpretation/siLanguage.js +24 -0
  93. package/dist/interpretation/siLanguage.js.map +1 -0
  94. package/dist/locus-info/controlsUtils.js +95 -6
  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 +408 -67
  103. package/dist/locus-info/index.js.map +1 -1
  104. package/dist/locus-info/infoUtils.js +13 -5
  105. package/dist/locus-info/infoUtils.js.map +1 -1
  106. package/dist/locus-info/mediaSharesUtils.js +58 -3
  107. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  108. package/dist/locus-info/parser.js +251 -78
  109. package/dist/locus-info/parser.js.map +1 -1
  110. package/dist/locus-info/selfUtils.js +97 -13
  111. package/dist/locus-info/selfUtils.js.map +1 -1
  112. package/dist/media/index.js +106 -319
  113. package/dist/media/index.js.map +1 -1
  114. package/dist/media/properties.js +96 -153
  115. package/dist/media/properties.js.map +1 -1
  116. package/dist/media/util.js +1 -22
  117. package/dist/media/util.js.map +1 -1
  118. package/dist/mediaQualityMetrics/config.js +498 -493
  119. package/dist/mediaQualityMetrics/config.js.map +1 -1
  120. package/dist/meeting/in-meeting-actions.js +90 -3
  121. package/dist/meeting/in-meeting-actions.js.map +1 -1
  122. package/dist/meeting/index.js +4579 -2951
  123. package/dist/meeting/index.js.map +1 -1
  124. package/dist/meeting/locusMediaRequest.js +291 -0
  125. package/dist/meeting/locusMediaRequest.js.map +1 -0
  126. package/dist/meeting/muteState.js +224 -133
  127. package/dist/meeting/muteState.js.map +1 -1
  128. package/dist/meeting/request.js +295 -197
  129. package/dist/meeting/request.js.map +1 -1
  130. package/dist/meeting/request.type.js +7 -0
  131. package/dist/meeting/request.type.js.map +1 -0
  132. package/dist/meeting/state.js +1 -2
  133. package/dist/meeting/state.js.map +1 -1
  134. package/dist/meeting/util.js +602 -432
  135. package/dist/meeting/util.js.map +1 -1
  136. package/dist/meeting-info/collection.js +1 -2
  137. package/dist/meeting-info/collection.js.map +1 -1
  138. package/dist/meeting-info/index.js +74 -7
  139. package/dist/meeting-info/index.js.map +1 -1
  140. package/dist/meeting-info/meeting-info-v2.js +197 -63
  141. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  142. package/dist/meeting-info/request.js +1 -2
  143. package/dist/meeting-info/request.js.map +1 -1
  144. package/dist/meeting-info/util.js +2 -3
  145. package/dist/meeting-info/util.js.map +1 -1
  146. package/dist/meeting-info/utilv2.js +25 -12
  147. package/dist/meeting-info/utilv2.js.map +1 -1
  148. package/dist/meetings/collection.js +23 -2
  149. package/dist/meetings/collection.js.map +1 -1
  150. package/dist/meetings/index.js +464 -123
  151. package/dist/meetings/index.js.map +1 -1
  152. package/dist/meetings/meetings.types.js +7 -0
  153. package/dist/meetings/meetings.types.js.map +1 -0
  154. package/dist/meetings/request.js +4 -3
  155. package/dist/meetings/request.js.map +1 -1
  156. package/dist/meetings/util.js +107 -6
  157. package/dist/meetings/util.js.map +1 -1
  158. package/dist/member/index.js +54 -2
  159. package/dist/member/index.js.map +1 -1
  160. package/dist/member/member.types.js +3 -4
  161. package/dist/member/member.types.js.map +1 -1
  162. package/dist/member/types.js +23 -0
  163. package/dist/member/types.js.map +1 -0
  164. package/dist/member/util.js +131 -29
  165. package/dist/member/util.js.map +1 -1
  166. package/dist/members/collection.js +11 -2
  167. package/dist/members/collection.js.map +1 -1
  168. package/dist/members/index.js +172 -8
  169. package/dist/members/index.js.map +1 -1
  170. package/dist/members/request.js +108 -41
  171. package/dist/members/request.js.map +1 -1
  172. package/dist/members/types.js +14 -0
  173. package/dist/members/types.js.map +1 -0
  174. package/dist/members/util.js +327 -234
  175. package/dist/members/util.js.map +1 -1
  176. package/dist/metrics/constants.js +14 -7
  177. package/dist/metrics/constants.js.map +1 -1
  178. package/dist/metrics/index.js +4 -452
  179. package/dist/metrics/index.js.map +1 -1
  180. package/dist/multistream/mediaRequestManager.js +344 -0
  181. package/dist/multistream/mediaRequestManager.js.map +1 -0
  182. package/dist/multistream/receiveSlot.js +200 -0
  183. package/dist/multistream/receiveSlot.js.map +1 -0
  184. package/dist/multistream/receiveSlotManager.js +174 -0
  185. package/dist/multistream/receiveSlotManager.js.map +1 -0
  186. package/dist/multistream/remoteMedia.js +268 -0
  187. package/dist/multistream/remoteMedia.js.map +1 -0
  188. package/dist/multistream/remoteMediaGroup.js +267 -0
  189. package/dist/multistream/remoteMediaGroup.js.map +1 -0
  190. package/dist/multistream/remoteMediaManager.js +1211 -0
  191. package/dist/multistream/remoteMediaManager.js.map +1 -0
  192. package/dist/multistream/sendSlotManager.js +236 -0
  193. package/dist/multistream/sendSlotManager.js.map +1 -0
  194. package/dist/networkQualityMonitor/index.js +5 -4
  195. package/dist/networkQualityMonitor/index.js.map +1 -1
  196. package/dist/personal-meeting-room/index.js +2 -3
  197. package/dist/personal-meeting-room/index.js.map +1 -1
  198. package/dist/personal-meeting-room/request.js +2 -3
  199. package/dist/personal-meeting-room/request.js.map +1 -1
  200. package/dist/personal-meeting-room/util.js +1 -2
  201. package/dist/personal-meeting-room/util.js.map +1 -1
  202. package/dist/reachability/index.js +258 -72
  203. package/dist/reachability/index.js.map +1 -1
  204. package/dist/reachability/request.js +18 -10
  205. package/dist/reachability/request.js.map +1 -1
  206. package/dist/reactions/constants.js +12 -0
  207. package/dist/reactions/constants.js.map +1 -0
  208. package/dist/reactions/reactions.js +4 -6
  209. package/dist/reactions/reactions.js.map +1 -1
  210. package/dist/reactions/reactions.type.js +21 -23
  211. package/dist/reactions/reactions.type.js.map +1 -1
  212. package/dist/reconnection-manager/index.js +272 -220
  213. package/dist/reconnection-manager/index.js.map +1 -1
  214. package/dist/recording-controller/enums.js +4 -5
  215. package/dist/recording-controller/enums.js.map +1 -1
  216. package/dist/recording-controller/index.js +57 -46
  217. package/dist/recording-controller/index.js.map +1 -1
  218. package/dist/recording-controller/util.js +10 -10
  219. package/dist/recording-controller/util.js.map +1 -1
  220. package/dist/roap/index.js +101 -235
  221. package/dist/roap/index.js.map +1 -1
  222. package/dist/roap/request.js +126 -180
  223. package/dist/roap/request.js.map +1 -1
  224. package/dist/roap/turnDiscovery.js +115 -105
  225. package/dist/roap/turnDiscovery.js.map +1 -1
  226. package/dist/rtcMetrics/constants.js +11 -0
  227. package/dist/rtcMetrics/constants.js.map +1 -0
  228. package/dist/rtcMetrics/index.js +115 -0
  229. package/dist/rtcMetrics/index.js.map +1 -0
  230. package/dist/statsAnalyzer/global.js +2 -93
  231. package/dist/statsAnalyzer/global.js.map +1 -1
  232. package/dist/statsAnalyzer/index.js +374 -374
  233. package/dist/statsAnalyzer/index.js.map +1 -1
  234. package/dist/statsAnalyzer/mqaUtil.js +100 -66
  235. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  236. package/dist/transcription/index.js +1 -2
  237. package/dist/transcription/index.js.map +1 -1
  238. package/dist/webinar/collection.js +43 -0
  239. package/dist/webinar/collection.js.map +1 -0
  240. package/dist/webinar/index.js +68 -0
  241. package/dist/webinar/index.js.map +1 -0
  242. package/package.json +27 -18
  243. package/src/annotation/annotation.types.ts +50 -0
  244. package/src/annotation/constants.ts +36 -0
  245. package/src/annotation/index.ts +328 -0
  246. package/src/breakouts/README.md +220 -0
  247. package/src/breakouts/breakout.ts +188 -0
  248. package/src/breakouts/collection.ts +19 -0
  249. package/src/breakouts/edit-lock-error.ts +25 -0
  250. package/src/breakouts/events.ts +56 -0
  251. package/src/breakouts/index.ts +925 -0
  252. package/src/breakouts/request.ts +55 -0
  253. package/src/breakouts/utils.ts +57 -0
  254. package/src/common/errors/no-meeting-info.ts +24 -0
  255. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  256. package/src/common/errors/webex-errors.ts +36 -12
  257. package/src/common/logs/logger-proxy.ts +1 -1
  258. package/src/common/logs/request.ts +5 -1
  259. package/src/common/queue.ts +22 -8
  260. package/src/config.ts +7 -9
  261. package/src/constants.ts +263 -89
  262. package/src/controls-options-manager/enums.ts +11 -1
  263. package/src/controls-options-manager/index.ts +116 -21
  264. package/src/controls-options-manager/types.ts +59 -0
  265. package/src/controls-options-manager/util.ts +294 -14
  266. package/src/index.ts +40 -0
  267. package/src/interpretation/README.md +60 -0
  268. package/src/interpretation/collection.ts +19 -0
  269. package/src/interpretation/index.ts +332 -0
  270. package/src/interpretation/siLanguage.ts +18 -0
  271. package/src/locus-info/controlsUtils.ts +110 -0
  272. package/src/locus-info/index.ts +449 -61
  273. package/src/locus-info/infoUtils.ts +14 -2
  274. package/src/locus-info/mediaSharesUtils.ts +64 -0
  275. package/src/locus-info/parser.ts +258 -47
  276. package/src/locus-info/selfUtils.ts +85 -2
  277. package/src/media/index.ts +153 -370
  278. package/src/media/properties.ts +106 -136
  279. package/src/media/util.ts +0 -21
  280. package/src/mediaQualityMetrics/config.ts +379 -377
  281. package/src/meeting/in-meeting-actions.ts +168 -0
  282. package/src/meeting/index.ts +3801 -2457
  283. package/src/meeting/locusMediaRequest.ts +313 -0
  284. package/src/meeting/muteState.ts +224 -138
  285. package/src/meeting/request.ts +207 -127
  286. package/src/meeting/request.type.ts +13 -0
  287. package/src/meeting/util.ts +590 -423
  288. package/src/meeting-info/index.ts +81 -8
  289. package/src/meeting-info/meeting-info-v2.ts +159 -13
  290. package/src/meeting-info/util.ts +1 -1
  291. package/src/meeting-info/utilv2.ts +22 -9
  292. package/src/meetings/collection.ts +20 -0
  293. package/src/meetings/index.ts +466 -124
  294. package/src/meetings/meetings.types.ts +12 -0
  295. package/src/meetings/request.ts +2 -0
  296. package/src/meetings/util.ts +116 -5
  297. package/src/member/index.ts +52 -1
  298. package/src/member/types.ts +38 -0
  299. package/src/member/util.ts +139 -28
  300. package/src/members/collection.ts +8 -0
  301. package/src/members/index.ts +196 -7
  302. package/src/members/request.ts +97 -17
  303. package/src/members/types.ts +29 -0
  304. package/src/members/util.ts +333 -240
  305. package/src/metrics/constants.ts +12 -4
  306. package/src/metrics/index.ts +1 -471
  307. package/src/multistream/mediaRequestManager.ts +440 -0
  308. package/src/multistream/receiveSlot.ts +184 -0
  309. package/src/multistream/receiveSlotManager.ts +166 -0
  310. package/src/multistream/remoteMedia.ts +254 -0
  311. package/src/multistream/remoteMediaGroup.ts +284 -0
  312. package/src/multistream/remoteMediaManager.ts +1145 -0
  313. package/src/multistream/sendSlotManager.ts +170 -0
  314. package/src/networkQualityMonitor/index.ts +6 -6
  315. package/src/reachability/index.ts +238 -45
  316. package/src/reachability/request.ts +17 -8
  317. package/src/reactions/constants.ts +4 -0
  318. package/src/reactions/reactions.ts +4 -4
  319. package/src/reactions/reactions.type.ts +30 -4
  320. package/src/reconnection-manager/index.ts +124 -107
  321. package/src/recording-controller/index.ts +20 -3
  322. package/src/recording-controller/util.ts +26 -9
  323. package/src/roap/index.ts +98 -240
  324. package/src/roap/request.ts +74 -148
  325. package/src/roap/turnDiscovery.ts +62 -56
  326. package/src/rtcMetrics/constants.ts +3 -0
  327. package/src/rtcMetrics/index.ts +100 -0
  328. package/src/statsAnalyzer/global.ts +1 -92
  329. package/src/statsAnalyzer/index.ts +429 -447
  330. package/src/statsAnalyzer/mqaUtil.ts +105 -103
  331. package/src/webinar/collection.ts +31 -0
  332. package/src/webinar/index.ts +62 -0
  333. package/test/integration/spec/converged-space-meetings.js +233 -0
  334. package/test/integration/spec/journey.js +320 -264
  335. package/test/integration/spec/space-meeting.js +77 -4
  336. package/test/unit/spec/annotation/index.ts +418 -0
  337. package/test/unit/spec/breakouts/breakout.ts +237 -0
  338. package/test/unit/spec/breakouts/collection.ts +15 -0
  339. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  340. package/test/unit/spec/breakouts/events.ts +89 -0
  341. package/test/unit/spec/breakouts/index.ts +1790 -0
  342. package/test/unit/spec/breakouts/request.ts +104 -0
  343. package/test/unit/spec/breakouts/utils.js +72 -0
  344. package/test/unit/spec/common/queue.js +31 -2
  345. package/test/unit/spec/controls-options-manager/index.js +163 -0
  346. package/test/unit/spec/controls-options-manager/util.js +576 -60
  347. package/test/unit/spec/fixture/locus.js +1 -0
  348. package/test/unit/spec/interpretation/collection.ts +15 -0
  349. package/test/unit/spec/interpretation/index.ts +589 -0
  350. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  351. package/test/unit/spec/locus-info/controlsUtils.js +323 -30
  352. package/test/unit/spec/locus-info/index.js +1390 -16
  353. package/test/unit/spec/locus-info/infoUtils.js +54 -16
  354. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  355. package/test/unit/spec/locus-info/lib/selfConstant.js +48 -0
  356. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  357. package/test/unit/spec/locus-info/parser.js +116 -35
  358. package/test/unit/spec/locus-info/selfUtils.js +275 -0
  359. package/test/unit/spec/media/index.ts +274 -0
  360. package/test/unit/spec/media/properties.ts +75 -84
  361. package/test/unit/spec/meeting/in-meeting-actions.ts +82 -0
  362. package/test/unit/spec/meeting/index.js +7420 -3125
  363. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  364. package/test/unit/spec/meeting/muteState.js +407 -212
  365. package/test/unit/spec/meeting/request.js +512 -42
  366. package/test/unit/spec/meeting/utils.js +741 -24
  367. package/test/unit/spec/meeting-info/index.js +300 -0
  368. package/test/unit/spec/meeting-info/meetinginfov2.js +500 -6
  369. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  370. package/test/unit/spec/meetings/collection.js +14 -0
  371. package/test/unit/spec/meetings/index.js +1012 -209
  372. package/test/unit/spec/meetings/utils.js +202 -2
  373. package/test/unit/spec/member/index.js +38 -8
  374. package/test/unit/spec/member/util.js +528 -27
  375. package/test/unit/spec/members/index.js +597 -3
  376. package/test/unit/spec/members/request.js +206 -27
  377. package/test/unit/spec/members/utils.js +210 -0
  378. package/test/unit/spec/metrics/index.js +1 -50
  379. package/test/unit/spec/multistream/mediaRequestManager.ts +1418 -0
  380. package/test/unit/spec/multistream/receiveSlot.ts +163 -0
  381. package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
  382. package/test/unit/spec/multistream/remoteMedia.ts +255 -0
  383. package/test/unit/spec/multistream/remoteMediaGroup.ts +662 -0
  384. package/test/unit/spec/multistream/remoteMediaManager.ts +1924 -0
  385. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  386. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  387. package/test/unit/spec/reachability/index.ts +598 -24
  388. package/test/unit/spec/reachability/request.js +68 -0
  389. package/test/unit/spec/reconnection-manager/index.js +130 -22
  390. package/test/unit/spec/recording-controller/index.js +293 -218
  391. package/test/unit/spec/recording-controller/util.js +223 -96
  392. package/test/unit/spec/roap/index.ts +200 -77
  393. package/test/unit/spec/roap/request.ts +232 -0
  394. package/test/unit/spec/roap/turnDiscovery.ts +86 -48
  395. package/test/unit/spec/rtcMetrics/index.ts +73 -0
  396. package/test/unit/spec/stats-analyzer/index.js +205 -50
  397. package/test/unit/spec/webinar/collection.ts +13 -0
  398. package/test/unit/spec/webinar/index.ts +60 -0
  399. package/test/utils/constants.js +9 -0
  400. package/test/utils/integrationTestUtils.js +46 -0
  401. package/test/utils/testUtils.js +0 -45
  402. package/test/utils/webex-config.js +4 -0
  403. package/test/utils/webex-test-users.js +7 -3
  404. package/dist/meeting/effectsState.js +0 -260
  405. package/dist/meeting/effectsState.js.map +0 -1
  406. package/dist/metrics/config.js +0 -289
  407. package/dist/metrics/config.js.map +0 -1
  408. package/dist/peer-connection-manager/index.js +0 -671
  409. package/dist/peer-connection-manager/index.js.map +0 -1
  410. package/dist/peer-connection-manager/util.js +0 -110
  411. package/dist/peer-connection-manager/util.js.map +0 -1
  412. package/dist/roap/collection.js +0 -63
  413. package/dist/roap/collection.js.map +0 -1
  414. package/dist/roap/handler.js +0 -279
  415. package/dist/roap/handler.js.map +0 -1
  416. package/dist/roap/state.js +0 -127
  417. package/dist/roap/state.js.map +0 -1
  418. package/dist/roap/util.js +0 -76
  419. package/dist/roap/util.js.map +0 -1
  420. package/src/index.js +0 -15
  421. package/src/meeting/effectsState.ts +0 -209
  422. package/src/metrics/config.ts +0 -485
  423. package/src/peer-connection-manager/index.ts +0 -847
  424. package/src/peer-connection-manager/util.ts +0 -119
  425. package/src/roap/collection.ts +0 -62
  426. package/src/roap/handler.ts +0 -294
  427. package/src/roap/state.ts +0 -156
  428. package/src/roap/util.ts +0 -100
  429. package/test/unit/spec/meeting/effectsState.js +0 -281
  430. package/test/unit/spec/peerconnection-manager/index.js +0 -218
  431. package/test/unit/spec/peerconnection-manager/utils.js +0 -49
  432. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -388
  433. package/test/unit/spec/roap/util.js +0 -30
package/README.md CHANGED
@@ -117,7 +117,7 @@ webex.meetings.getMeetingByType('SIP_URI', sipUri);
117
117
 
118
118
  ```js
119
119
  webex.meetings.personalMeetingRoom; // the personal meeting room instance
120
- webex.meetings.reachability; // the reachability instance, not initialized until after setReachability is called
120
+ webex.meetings.reachability; // the reachability instance
121
121
  webex.meetings.meetingCollection; // the collection of meetings instance
122
122
  webex.meetings.meetingInfo; // the meeting info instance
123
123
  ```
@@ -331,7 +331,6 @@ webex.meetings.on('meeting:added', (addedMeeting) => {
331
331
  addedMeeting.join().then(() => {});
332
332
  }
333
333
  ```
334
-
335
334
  ##### Reject an incoming meeting
336
335
 
337
336
  When listening to an added meeting, to determine if it is an "incoming" meeting, check the type property of the meeting:
@@ -457,6 +456,51 @@ audioOutputSelect.onchange = function () {
457
456
  attachSinkId(document.getElementById('remoteaudio'), audioOutputSelect.value);
458
457
  };
459
458
  ```
459
+ ##### Availabel joining options
460
+ ```
461
+ /**
462
+ * Make a network request to join a meeting
463
+ * @param {Object} options
464
+ * @param {String} options.sipUri
465
+ * @param {String} options.deviceUrl
466
+ * @param {String} options.locusUrl
467
+ * @param {String} options.resourceId,
468
+ * @param {String} options.correlationId
469
+ * @param {boolean} options.ensureConversation
470
+ * @param {boolean} options.moderator
471
+ * @param {boolean} options.pin
472
+ * @param {boolean} options.moveToResource
473
+ * @param {Object} options.roapMessage
474
+ * @param {boolean} options.breakoutsSupported
475
+ * @param {String} options.locale,
476
+ * @param {Array} options.deviceCapabilities
477
+ * @param {boolean} options.liveAnnotationSupported
478
+ * @returns {Promise}
479
+ */
480
+ ```
481
+ ##### options.deviceCapabilities
482
+ This option provides toggles that Locus service needs, and those toggles will control the performance or features of the meetings to be joined, see examples:
483
+ ###### Breakout Sessions
484
+ ```
485
+ if (breakoutsSupported) {
486
+ deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);
487
+ }
488
+ ```
489
+ ###### Live Annotation
490
+ ```
491
+ if (liveAnnotationSupported) {
492
+ deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);
493
+ }
494
+ ```
495
+ ###### Audio Disclaimer
496
+ ```
497
+ const joinOptions = {
498
+ locale: 'en_UK', // audio disclaimer language
499
+ deviceCapabilities: ['SERVER_AUDIO_ANNOUNCEMENT_SUPPORTED'], // audio disclaimer toggle
500
+ };
501
+
502
+ const joinMeeting = () => { meeting.join(joinOptions)}
503
+ ```
460
504
 
461
505
  ##### Record
462
506
 
@@ -956,9 +1000,6 @@ meeting.on('media:ready', (media) => {
956
1000
  if (media.type === 'remoteShare') {
957
1001
  document.getElementById('sharevideo').srcObject = media.stream;
958
1002
  }
959
- if (media.type === 'localShare') {
960
- document.getElementById('localshare').srcObject = media.stream;
961
- }
962
1003
  });
963
1004
  ```
964
1005
 
@@ -979,9 +1020,6 @@ meeting.on('media:stopped', (media) => {
979
1020
  if (media.type === 'remoteAudio') {
980
1021
  document.getElementById('remoteaudio').srcObject = null;
981
1022
  }
982
- if (media.type === 'localShare') {
983
- document.getElementById('localshare').srcObject = null;
984
- }
985
1023
  if (media.type === 'remoteShare') {
986
1024
  document.getElementById('sharevideo').srcObject = null;
987
1025
  }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ _Object$defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ //# sourceMappingURL=annotation.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["annotation.types.ts"],"sourcesContent":["import {ANNOTATION_POLICY} from './constants';\n\n/**\n * Type for an StrokeData Object\n */\ntype StrokeData = {\n deviceId: string;\n toUserId: string;\n requesterId: string;\n content: string;\n shareInstanceId: string;\n encryptionKeyUrl: string;\n version: string;\n};\n\ntype RequestData = {\n toUserId: string;\n toDeviceUrl: string;\n shareInstanceId: string;\n};\n\ntype CommandRequestBody = {\n actionType: string;\n resourceType: string;\n shareInstanceId: string;\n receivers?: any[];\n};\n/**\n * Type for an annotation Object include annotation version and privilege\n */\ntype AnnotationInfo = {\n version: string;\n policy: ANNOTATION_POLICY;\n};\n\ninterface IAnnotationChannel {\n // === below is for presenter\n acceptRequest: (approval) => undefined | Promise<void>;\n declineRequest: (approval) => undefined | Promise<void>;\n closeAnnotation: (requestData: RequestData) => undefined | Promise<void>;\n // === below is for attendee\n approveAnnotation: (requestData: RequestData) => undefined | Promise<void>;\n cancelApproveAnnotation: (requestData: RequestData, approval) => undefined | Promise<void>;\n sendStrokeData: (strokeData: StrokeData) => void;\n // =====\n approvalUrlUpdate: (approvalUrl: string) => void;\n locusUrlUpdate: (locusUrl: string) => void;\n}\n\nexport type {StrokeData, RequestData, CommandRequestBody, IAnnotationChannel, AnnotationInfo};\n"],"mappings":""}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ _Object$defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.EVENT_TRIGGERS = exports.ANNOTATION_STATUS = exports.ANNOTATION_RESOURCE_TYPE = exports.ANNOTATION_REQUEST_TYPE = exports.ANNOTATION_RELAY_TYPES = exports.ANNOTATION_POLICY = exports.ANNOTATION_ACTION_TYPE = exports.ANNOTATION = void 0;
8
+ var EVENT_TRIGGERS = exports.EVENT_TRIGGERS = {
9
+ ANNOTATION_STROKE_DATA: 'annotation:strokeData',
10
+ ANNOTATION_COMMAND: 'annotation:command'
11
+ };
12
+ var ANNOTATION_RESOURCE_TYPE = exports.ANNOTATION_RESOURCE_TYPE = 'AnnotationOnShare';
13
+ var ANNOTATION_RELAY_TYPES = exports.ANNOTATION_RELAY_TYPES = {
14
+ ANNOTATION_CLIENT: 'annotation.client'
15
+ };
16
+ var ANNOTATION_STATUS = exports.ANNOTATION_STATUS = {
17
+ NO_ANNOTATION: 'NO_ANNOTATION',
18
+ RUNNING_ANNOTATION: 'RUNNING_ANNOTATION'
19
+ };
20
+ var ANNOTATION_POLICY = exports.ANNOTATION_POLICY = /*#__PURE__*/function (ANNOTATION_POLICY) {
21
+ ANNOTATION_POLICY["ANYONE_CAN_ANNOTATE"] = "AnyoneCanAnnotate";
22
+ ANNOTATION_POLICY["APPROVAL"] = "Approval";
23
+ ANNOTATION_POLICY["ANNOTATION_NOT_ALLOWED"] = "AnnotationNotAllowed";
24
+ return ANNOTATION_POLICY;
25
+ }({});
26
+ var ANNOTATION_REQUEST_TYPE = exports.ANNOTATION_REQUEST_TYPE = {
27
+ ANNOTATION_MESSAGE: 'annotation_message'
28
+ };
29
+ var ANNOTATION_ACTION_TYPE = exports.ANNOTATION_ACTION_TYPE = /*#__PURE__*/function (ANNOTATION_ACTION_TYPE) {
30
+ ANNOTATION_ACTION_TYPE["REQUESTED"] = "REQUESTED";
31
+ ANNOTATION_ACTION_TYPE["ACCEPTED"] = "ACCEPTED";
32
+ ANNOTATION_ACTION_TYPE["DECLINED"] = "DECLINED";
33
+ ANNOTATION_ACTION_TYPE["OFFERED"] = "OFFERED";
34
+ ANNOTATION_ACTION_TYPE["CANCELED"] = "CANCELED";
35
+ ANNOTATION_ACTION_TYPE["EXPIRED"] = "EXPIRED";
36
+ ANNOTATION_ACTION_TYPE["REVOKED"] = "REVOKED";
37
+ ANNOTATION_ACTION_TYPE["CLOSED"] = "CLOSED";
38
+ return ANNOTATION_ACTION_TYPE;
39
+ }({});
40
+ var ANNOTATION = exports.ANNOTATION = 'annotation';
41
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["EVENT_TRIGGERS","exports","ANNOTATION_STROKE_DATA","ANNOTATION_COMMAND","ANNOTATION_RESOURCE_TYPE","ANNOTATION_RELAY_TYPES","ANNOTATION_CLIENT","ANNOTATION_STATUS","NO_ANNOTATION","RUNNING_ANNOTATION","ANNOTATION_POLICY","ANNOTATION_REQUEST_TYPE","ANNOTATION_MESSAGE","ANNOTATION_ACTION_TYPE","ANNOTATION"],"sources":["constants.ts"],"sourcesContent":["export const EVENT_TRIGGERS = {\n ANNOTATION_STROKE_DATA: 'annotation:strokeData',\n ANNOTATION_COMMAND: 'annotation:command',\n};\nexport const ANNOTATION_RESOURCE_TYPE = 'AnnotationOnShare';\nexport const ANNOTATION_RELAY_TYPES = {\n ANNOTATION_CLIENT: 'annotation.client',\n};\n\nexport const ANNOTATION_STATUS = {\n NO_ANNOTATION: 'NO_ANNOTATION',\n RUNNING_ANNOTATION: 'RUNNING_ANNOTATION',\n};\n\nexport enum ANNOTATION_POLICY {\n ANYONE_CAN_ANNOTATE = 'AnyoneCanAnnotate',\n APPROVAL = 'Approval',\n ANNOTATION_NOT_ALLOWED = 'AnnotationNotAllowed',\n}\n\nexport const ANNOTATION_REQUEST_TYPE = {\n ANNOTATION_MESSAGE: 'annotation_message',\n};\n\nexport const enum ANNOTATION_ACTION_TYPE {\n REQUESTED = 'REQUESTED',\n ACCEPTED = 'ACCEPTED',\n DECLINED = 'DECLINED',\n OFFERED = 'OFFERED',\n CANCELED = 'CANCELED',\n EXPIRED = 'EXPIRED',\n REVOKED = 'REVOKED',\n CLOSED = 'CLOSED',\n}\n\nexport const ANNOTATION = 'annotation';\n"],"mappings":";;;;;;;AAAO,IAAMA,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAG;EAC5BE,sBAAsB,EAAE,uBAAuB;EAC/CC,kBAAkB,EAAE;AACtB,CAAC;AACM,IAAMC,wBAAwB,GAAAH,OAAA,CAAAG,wBAAA,GAAG,mBAAmB;AACpD,IAAMC,sBAAsB,GAAAJ,OAAA,CAAAI,sBAAA,GAAG;EACpCC,iBAAiB,EAAE;AACrB,CAAC;AAEM,IAAMC,iBAAiB,GAAAN,OAAA,CAAAM,iBAAA,GAAG;EAC/BC,aAAa,EAAE,eAAe;EAC9BC,kBAAkB,EAAE;AACtB,CAAC;AAAC,IAEUC,iBAAiB,GAAAT,OAAA,CAAAS,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAMtB,IAAMC,uBAAuB,GAAAV,OAAA,CAAAU,uBAAA,GAAG;EACrCC,kBAAkB,EAAE;AACtB,CAAC;AAAC,IAEgBC,sBAAsB,GAAAZ,OAAA,CAAAY,sBAAA,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAWjC,IAAMC,UAAU,GAAAb,OAAA,CAAAa,UAAA,GAAG,YAAY"}
@@ -0,0 +1,357 @@
1
+ "use strict";
2
+
3
+ var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
5
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
+ _Object$defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.default = void 0;
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
11
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
13
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
15
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
16
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
17
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
18
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
19
+ var _uuid = _interopRequireDefault(require("uuid"));
20
+ var _webexCore = require("@webex/webex-core");
21
+ var _triggerProxy = _interopRequireDefault(require("../common/events/trigger-proxy"));
22
+ var _constants = require("./constants");
23
+ var _constants2 = require("../constants");
24
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
25
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } // eslint-disable-next-line import/no-extraneous-dependencies
26
+ /**
27
+ * @description Annotation to handle LLM and Mercury message and locus API
28
+ * @class
29
+ */
30
+ var AnnotationChannel = /*#__PURE__*/function (_WebexPlugin) {
31
+ (0, _inherits2.default)(AnnotationChannel, _WebexPlugin);
32
+ var _super = _createSuper(AnnotationChannel);
33
+ /**
34
+ * Initializes annotation module
35
+ */
36
+ function AnnotationChannel() {
37
+ var _this;
38
+ (0, _classCallCheck2.default)(this, AnnotationChannel);
39
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
40
+ args[_key] = arguments[_key];
41
+ }
42
+ _this = _super.call.apply(_super, [this].concat(args));
43
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "namespace", _constants.ANNOTATION);
44
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "seqNum", void 0);
45
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hasSubscribedToEvents", void 0);
46
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "approvalUrl", void 0);
47
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "locusUrl", void 0);
48
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "deviceUrl", void 0);
49
+ /**
50
+ * send annotation command
51
+ * @param {ANNOTATION_ACTION_TYPE} actionType
52
+ * @param {RequestData} requestData
53
+ * @returns {Promise}
54
+ */
55
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "sendAnnotationAction", /*#__PURE__*/function () {
56
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(actionType, requestData) {
57
+ var body;
58
+ return _regenerator.default.wrap(function _callee$(_context) {
59
+ while (1) switch (_context.prev = _context.next) {
60
+ case 0:
61
+ body = {
62
+ actionType: actionType,
63
+ resourceType: 'AnnotationOnShare',
64
+ shareInstanceId: requestData.shareInstanceId
65
+ };
66
+ if (requestData !== null && requestData !== void 0 && requestData.toUserId) {
67
+ body.receivers = [{
68
+ participantId: requestData.toUserId,
69
+ deviceUrl: requestData.toDeviceUrl
70
+ }];
71
+ }
72
+
73
+ // @ts-ignore
74
+ return _context.abrupt("return", _this.request({
75
+ method: _constants2.HTTP_VERBS.POST,
76
+ url: "".concat(_this.approvalUrl),
77
+ body: body
78
+ }));
79
+ case 3:
80
+ case "end":
81
+ return _context.stop();
82
+ }
83
+ }, _callee);
84
+ }));
85
+ return function (_x, _x2) {
86
+ return _ref.apply(this, arguments);
87
+ };
88
+ }());
89
+ /**
90
+ * decrypt data
91
+ * @param {string} encryptionKeyUrl
92
+ * @param {string} content encrypted content
93
+ * @returns {string} decrypted content
94
+ */
95
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "decryptContent", function (encryptionKeyUrl, content) {
96
+ // @ts-ignore
97
+ return _this.webex.internal.encryption.decryptText(encryptionKeyUrl, content).then(function (res) {
98
+ return res;
99
+ });
100
+ });
101
+ /**
102
+ * encrypt data
103
+ * @param {string} encryptionKeyUrl
104
+ * @param {string} content original content
105
+ * @returns {string} encrypted content
106
+ */
107
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "encryptContent", function (encryptionKeyUrl, content) {
108
+ // @ts-ignore
109
+ return _this.webex.internal.encryption.encryptText(encryptionKeyUrl, content).then(function (res) {
110
+ return res;
111
+ });
112
+ });
113
+ /**
114
+ * Sends stroke data to presenter
115
+ * @param {StrokeData} strokeData
116
+ * @returns {void}
117
+ */
118
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "sendStrokeData", function (strokeData) {
119
+ // @ts-ignore
120
+ if (!_this.webex.internal.llm.isConnected()) return;
121
+ _this.encryptContent(strokeData.encryptionKeyUrl, strokeData.content).then(function (encryptedContent) {
122
+ _this.publishEncrypted(encryptedContent, strokeData);
123
+ });
124
+ });
125
+ _this.seqNum = 1;
126
+ return _this;
127
+ }
128
+
129
+ /**
130
+ * Process Stroke Data
131
+ * @param {object} data
132
+ * @returns {void}
133
+ */
134
+ (0, _createClass2.default)(AnnotationChannel, [{
135
+ key: "processStrokeMessage",
136
+ value: function processStrokeMessage(data) {
137
+ var _this2 = this;
138
+ var request = data.request;
139
+ this.decryptContent(request.value.encryptionKeyUrl, request.value.content).then(function (decryptedContent) {
140
+ request.value.content = decryptedContent;
141
+ _triggerProxy.default.trigger(_this2, {
142
+ file: 'annotation',
143
+ function: 'processStrokeMessage'
144
+ }, _constants.EVENT_TRIGGERS.ANNOTATION_STROKE_DATA, {
145
+ payload: data
146
+ });
147
+ });
148
+ }
149
+
150
+ /** bind all events from mercury
151
+ * @param {Object} e
152
+ * @returns {undefined}
153
+ */
154
+ }, {
155
+ key: "eventCommandProcessor",
156
+ value: function eventCommandProcessor(e) {
157
+ var _e$data, _e$data2, _e$data2$approval, _e$data3, _e$data3$approval;
158
+ if ((e === null || e === void 0 ? void 0 : (_e$data = e.data) === null || _e$data === void 0 ? void 0 : _e$data.eventType) === 'locus.approval_request' && (e === null || e === void 0 ? void 0 : (_e$data2 = e.data) === null || _e$data2 === void 0 ? void 0 : (_e$data2$approval = _e$data2.approval) === null || _e$data2$approval === void 0 ? void 0 : _e$data2$approval.resourceType) === _constants.ANNOTATION_RESOURCE_TYPE && e !== null && e !== void 0 && (_e$data3 = e.data) !== null && _e$data3 !== void 0 && (_e$data3$approval = _e$data3.approval) !== null && _e$data3$approval !== void 0 && _e$data3$approval.actionType) {
159
+ _triggerProxy.default.trigger(this, {
160
+ file: 'annotation',
161
+ function: 'approval_request'
162
+ }, _constants.EVENT_TRIGGERS.ANNOTATION_COMMAND, {
163
+ type: e.data.approval.actionType,
164
+ payload: e.data.approval
165
+ });
166
+ }
167
+ }
168
+
169
+ /** bind all events from llm
170
+ * @param {Object} e
171
+ * @returns {undefined}
172
+ */
173
+ }, {
174
+ key: "eventDataProcessor",
175
+ value: function eventDataProcessor(e) {
176
+ var _e$data4;
177
+ switch (e === null || e === void 0 ? void 0 : (_e$data4 = e.data) === null || _e$data4 === void 0 ? void 0 : _e$data4.relayType) {
178
+ case _constants.ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT:
179
+ this.processStrokeMessage(e.data);
180
+ break;
181
+ default:
182
+ break;
183
+ }
184
+ }
185
+
186
+ /**
187
+ * Listen to websocket messages
188
+ * @returns {undefined}
189
+ */
190
+ }, {
191
+ key: "listenToEvents",
192
+ value: function listenToEvents() {
193
+ if (!this.hasSubscribedToEvents) {
194
+ // @ts-ignore
195
+ this.webex.internal.mercury.on('event:locus.approval_request', this.eventCommandProcessor, this);
196
+ // @ts-ignore
197
+ this.webex.internal.llm.on('event:relay.event', this.eventDataProcessor, this);
198
+ this.hasSubscribedToEvents = true;
199
+ }
200
+ }
201
+
202
+ /**
203
+ * set locusUrl
204
+ * @param {string} locusUrl
205
+ * @returns {void}
206
+ */
207
+ }, {
208
+ key: "locusUrlUpdate",
209
+ value: function locusUrlUpdate(locusUrl) {
210
+ this.locusUrl = locusUrl;
211
+ this.listenToEvents();
212
+ }
213
+
214
+ /**
215
+ * set approved url
216
+ * @param {string} approvalUrl
217
+ * @returns {void}
218
+ */
219
+ }, {
220
+ key: "approvalUrlUpdate",
221
+ value: function approvalUrlUpdate(approvalUrl) {
222
+ this.approvalUrl = approvalUrl;
223
+ }
224
+
225
+ /**
226
+ * accept request
227
+ * @param {object} approval
228
+ * @returns {Promise}
229
+ */
230
+ }, {
231
+ key: "acceptRequest",
232
+ value: function acceptRequest(approval) {
233
+ // @ts-ignore
234
+ return this.request({
235
+ method: _constants2.HTTP_VERBS.PUT,
236
+ url: approval.url,
237
+ body: {
238
+ resourceType: _constants.ANNOTATION_RESOURCE_TYPE,
239
+ actionType: _constants.ANNOTATION_ACTION_TYPE.ACCEPTED
240
+ }
241
+ });
242
+ }
243
+
244
+ /**
245
+ * presenter declined request annotation
246
+ * @param {approval} approval
247
+ * @returns {Promise}
248
+ */
249
+ }, {
250
+ key: "declineRequest",
251
+ value: function declineRequest(approval) {
252
+ // @ts-ignore
253
+ return this.request({
254
+ method: _constants2.HTTP_VERBS.PUT,
255
+ url: approval.url,
256
+ body: {
257
+ resourceType: _constants.ANNOTATION_RESOURCE_TYPE,
258
+ actionType: _constants.ANNOTATION_ACTION_TYPE.DECLINED
259
+ }
260
+ });
261
+ }
262
+
263
+ /**
264
+ * request approved annotation
265
+ * @param {RequestData} requestData
266
+ * @returns {Promise}
267
+ */
268
+ }, {
269
+ key: "approveAnnotation",
270
+ value: function approveAnnotation(requestData) {
271
+ return this.sendAnnotationAction(_constants.ANNOTATION_ACTION_TYPE.REQUESTED, requestData);
272
+ }
273
+
274
+ /**
275
+ * cancel approved annotation
276
+ * @param {object} requestData
277
+ * @param {object} approval
278
+ * @returns {Promise}
279
+ */
280
+ }, {
281
+ key: "cancelApproveAnnotation",
282
+ value: function cancelApproveAnnotation(requestData, approval) {
283
+ var body = {
284
+ actionType: _constants.ANNOTATION_ACTION_TYPE.CANCELED,
285
+ resourceType: 'AnnotationOnShare',
286
+ shareInstanceId: requestData.shareInstanceId
287
+ };
288
+
289
+ // @ts-ignore
290
+ return this.request({
291
+ method: _constants2.HTTP_VERBS.PUT,
292
+ url: "".concat(approval.url),
293
+ body: body
294
+ });
295
+ }
296
+
297
+ /**
298
+ * close annotation
299
+ * @param {object} requestData
300
+ * @returns {Promise}
301
+ */
302
+ }, {
303
+ key: "closeAnnotation",
304
+ value: function closeAnnotation(requestData) {
305
+ return this.sendAnnotationAction(_constants.ANNOTATION_ACTION_TYPE.CLOSED, requestData);
306
+ }
307
+ }, {
308
+ key: "publishEncrypted",
309
+ value:
310
+ /**
311
+ * private encrypted the strokes data
312
+ * @param {string} encryptedContent
313
+ * @param {StrokeData} strokeData
314
+ * @returns {void}
315
+ */
316
+ function publishEncrypted(encryptedContent, strokeData) {
317
+ var data = {
318
+ id: "".concat(this.seqNum),
319
+ type: 'publishRequest',
320
+ recipients: {
321
+ // @ts-ignore
322
+ route: this.webex.internal.llm.getBinding()
323
+ },
324
+ headers: {
325
+ to: strokeData.toUserId
326
+ },
327
+ data: {
328
+ eventType: 'relay.event',
329
+ relayType: _constants.ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT,
330
+ request: {
331
+ value: {
332
+ type: _constants.ANNOTATION_REQUEST_TYPE.ANNOTATION_MESSAGE,
333
+ content: encryptedContent,
334
+ deviceId: strokeData.deviceId,
335
+ seq: this.seqNum,
336
+ requesterId: strokeData.requesterId,
337
+ version: strokeData.version,
338
+ shareInstanceId: strokeData.shareInstanceId,
339
+ encryptionKeyUrl: strokeData.encryptionKeyUrl
340
+ }
341
+ }
342
+ },
343
+ trackingId: "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString()),
344
+ timestamp: new Date().getTime(),
345
+ sequenceNumber: this.seqNum,
346
+ filterMessage: false
347
+ };
348
+
349
+ // @ts-ignore
350
+ this.webex.internal.llm.socket.send(data);
351
+ this.seqNum += 1;
352
+ }
353
+ }]);
354
+ return AnnotationChannel;
355
+ }(_webexCore.WebexPlugin);
356
+ var _default = exports.default = AnnotationChannel;
357
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_uuid","_interopRequireDefault","require","_webexCore","_triggerProxy","_constants","_constants2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","AnnotationChannel","_WebexPlugin","_inherits2","_super","_this","_classCallCheck2","_len","length","args","Array","_key","concat","_defineProperty2","_assertThisInitialized2","ANNOTATION","_ref","_asyncToGenerator2","_regenerator","mark","_callee","actionType","requestData","body","wrap","_callee$","_context","prev","next","resourceType","shareInstanceId","toUserId","receivers","participantId","deviceUrl","toDeviceUrl","abrupt","request","method","HTTP_VERBS","POST","url","approvalUrl","stop","_x","_x2","encryptionKeyUrl","content","webex","internal","encryption","decryptText","then","res","encryptText","strokeData","llm","isConnected","encryptContent","encryptedContent","publishEncrypted","seqNum","_createClass2","key","value","processStrokeMessage","data","_this2","decryptContent","decryptedContent","TriggerProxy","trigger","file","function","EVENT_TRIGGERS","ANNOTATION_STROKE_DATA","payload","eventCommandProcessor","_e$data","_e$data2","_e$data2$approval","_e$data3","_e$data3$approval","eventType","approval","ANNOTATION_RESOURCE_TYPE","ANNOTATION_COMMAND","type","eventDataProcessor","_e$data4","relayType","ANNOTATION_RELAY_TYPES","ANNOTATION_CLIENT","listenToEvents","hasSubscribedToEvents","mercury","on","locusUrlUpdate","locusUrl","approvalUrlUpdate","acceptRequest","PUT","ANNOTATION_ACTION_TYPE","ACCEPTED","declineRequest","DECLINED","approveAnnotation","sendAnnotationAction","REQUESTED","cancelApproveAnnotation","CANCELED","closeAnnotation","CLOSED","id","recipients","route","getBinding","headers","to","ANNOTATION_REQUEST_TYPE","ANNOTATION_MESSAGE","deviceId","seq","requesterId","version","trackingId","config","trackingIdPrefix","uuid","v4","toString","timestamp","Date","getTime","sequenceNumber","filterMessage","socket","send","WebexPlugin","_default","exports"],"sources":["index.ts"],"sourcesContent":["import uuid from 'uuid';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport {WebexPlugin, config} from '@webex/webex-core';\nimport TriggerProxy from '../common/events/trigger-proxy';\n\nimport {\n EVENT_TRIGGERS,\n ANNOTATION_RELAY_TYPES,\n ANNOTATION,\n ANNOTATION_REQUEST_TYPE,\n ANNOTATION_ACTION_TYPE,\n ANNOTATION_RESOURCE_TYPE,\n} from './constants';\n\nimport {StrokeData, RequestData, IAnnotationChannel, CommandRequestBody} from './annotation.types';\nimport {HTTP_VERBS} from '../constants';\n\n/**\n * @description Annotation to handle LLM and Mercury message and locus API\n * @class\n */\nclass AnnotationChannel extends WebexPlugin implements IAnnotationChannel {\n namespace = ANNOTATION;\n\n private seqNum: number;\n\n hasSubscribedToEvents: boolean;\n\n approvalUrl: string;\n locusUrl: string;\n deviceUrl: string;\n\n /**\n * Initializes annotation module\n */\n constructor(...args) {\n super(...args);\n this.seqNum = 1;\n }\n\n /**\n * Process Stroke Data\n * @param {object} data\n * @returns {void}\n */\n private processStrokeMessage(data) {\n const {request} = data;\n this.decryptContent(request.value.encryptionKeyUrl, request.value.content).then(\n (decryptedContent) => {\n request.value.content = decryptedContent;\n TriggerProxy.trigger(\n this,\n {\n file: 'annotation',\n function: 'processStrokeMessage',\n },\n EVENT_TRIGGERS.ANNOTATION_STROKE_DATA,\n {\n payload: data,\n }\n );\n }\n );\n }\n\n /** bind all events from mercury\n * @param {Object} e\n * @returns {undefined}\n */\n private eventCommandProcessor(e) {\n if (\n e?.data?.eventType === 'locus.approval_request' &&\n e?.data?.approval?.resourceType === ANNOTATION_RESOURCE_TYPE &&\n e?.data?.approval?.actionType\n ) {\n TriggerProxy.trigger(\n this,\n {\n file: 'annotation',\n function: 'approval_request',\n },\n EVENT_TRIGGERS.ANNOTATION_COMMAND,\n {\n type: e.data.approval.actionType,\n payload: e.data.approval,\n }\n );\n }\n }\n\n /** bind all events from llm\n * @param {Object} e\n * @returns {undefined}\n */\n private eventDataProcessor(e) {\n switch (e?.data?.relayType) {\n case ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT:\n this.processStrokeMessage(e.data);\n break;\n default:\n break;\n }\n }\n\n /**\n * Listen to websocket messages\n * @returns {undefined}\n */\n private listenToEvents() {\n if (!this.hasSubscribedToEvents) {\n // @ts-ignore\n this.webex.internal.mercury.on(\n 'event:locus.approval_request',\n this.eventCommandProcessor,\n this\n );\n // @ts-ignore\n this.webex.internal.llm.on('event:relay.event', this.eventDataProcessor, this);\n this.hasSubscribedToEvents = true;\n }\n }\n\n /**\n * set locusUrl\n * @param {string} locusUrl\n * @returns {void}\n */\n public locusUrlUpdate(locusUrl: string) {\n this.locusUrl = locusUrl;\n this.listenToEvents();\n }\n\n /**\n * set approved url\n * @param {string} approvalUrl\n * @returns {void}\n */\n public approvalUrlUpdate(approvalUrl: string) {\n this.approvalUrl = approvalUrl;\n }\n\n /**\n * accept request\n * @param {object} approval\n * @returns {Promise}\n */\n public acceptRequest(approval) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: approval.url,\n body: {\n resourceType: ANNOTATION_RESOURCE_TYPE,\n actionType: ANNOTATION_ACTION_TYPE.ACCEPTED,\n },\n });\n }\n\n /**\n * presenter declined request annotation\n * @param {approval} approval\n * @returns {Promise}\n */\n public declineRequest(approval) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: approval.url,\n body: {\n resourceType: ANNOTATION_RESOURCE_TYPE,\n actionType: ANNOTATION_ACTION_TYPE.DECLINED,\n },\n });\n }\n\n /**\n * request approved annotation\n * @param {RequestData} requestData\n * @returns {Promise}\n */\n public approveAnnotation(requestData: RequestData) {\n return this.sendAnnotationAction(ANNOTATION_ACTION_TYPE.REQUESTED, requestData);\n }\n\n /**\n * cancel approved annotation\n * @param {object} requestData\n * @param {object} approval\n * @returns {Promise}\n */\n public cancelApproveAnnotation(requestData: RequestData, approval) {\n const body: CommandRequestBody = {\n actionType: ANNOTATION_ACTION_TYPE.CANCELED,\n resourceType: 'AnnotationOnShare',\n shareInstanceId: requestData.shareInstanceId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: `${approval.url}`,\n body,\n });\n }\n\n /**\n * close annotation\n * @param {object} requestData\n * @returns {Promise}\n */\n public closeAnnotation(requestData: RequestData) {\n return this.sendAnnotationAction(ANNOTATION_ACTION_TYPE.CLOSED, requestData);\n }\n\n /**\n * send annotation command\n * @param {ANNOTATION_ACTION_TYPE} actionType\n * @param {RequestData} requestData\n * @returns {Promise}\n */\n private sendAnnotationAction = async (\n actionType: ANNOTATION_ACTION_TYPE,\n requestData: RequestData\n ): Promise<void> => {\n const body: CommandRequestBody = {\n actionType,\n resourceType: 'AnnotationOnShare',\n shareInstanceId: requestData.shareInstanceId,\n };\n if (requestData?.toUserId) {\n body.receivers = [{participantId: requestData.toUserId, deviceUrl: requestData.toDeviceUrl}];\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n url: `${this.approvalUrl}`,\n body,\n });\n };\n\n /**\n * decrypt data\n * @param {string} encryptionKeyUrl\n * @param {string} content encrypted content\n * @returns {string} decrypted content\n */\n private decryptContent = (encryptionKeyUrl: string, content: string): Promise<any> => {\n // @ts-ignore\n return this.webex.internal.encryption.decryptText(encryptionKeyUrl, content).then((res) => {\n return res;\n });\n };\n\n /**\n * encrypt data\n * @param {string} encryptionKeyUrl\n * @param {string} content original content\n * @returns {string} encrypted content\n */\n private encryptContent = (encryptionKeyUrl: string, content: string): Promise<any> => {\n // @ts-ignore\n return this.webex.internal.encryption.encryptText(encryptionKeyUrl, content).then((res) => {\n return res;\n });\n };\n\n /**\n * Sends stroke data to presenter\n * @param {StrokeData} strokeData\n * @returns {void}\n */\n public sendStrokeData = (strokeData: StrokeData): void => {\n // @ts-ignore\n if (!this.webex.internal.llm.isConnected()) return;\n this.encryptContent(strokeData.encryptionKeyUrl, strokeData.content).then(\n (encryptedContent) => {\n this.publishEncrypted(encryptedContent, strokeData);\n }\n );\n };\n\n /**\n * private encrypted the strokes data\n * @param {string} encryptedContent\n * @param {StrokeData} strokeData\n * @returns {void}\n */\n private publishEncrypted(encryptedContent: string, strokeData: StrokeData) {\n const data = {\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n // @ts-ignore\n route: this.webex.internal.llm.getBinding(),\n },\n headers: {\n to: strokeData.toUserId,\n },\n data: {\n eventType: 'relay.event',\n relayType: ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT,\n request: {\n value: {\n type: ANNOTATION_REQUEST_TYPE.ANNOTATION_MESSAGE,\n content: encryptedContent,\n deviceId: strokeData.deviceId,\n seq: this.seqNum,\n requesterId: strokeData.requesterId,\n version: strokeData.version,\n shareInstanceId: strokeData.shareInstanceId,\n encryptionKeyUrl: strokeData.encryptionKeyUrl,\n },\n },\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n timestamp: new Date().getTime(),\n sequenceNumber: this.seqNum,\n filterMessage: false,\n };\n\n // @ts-ignore\n this.webex.internal.llm.socket.send(data);\n this.seqNum += 1;\n }\n}\n\nexport default AnnotationChannel;\n"],"mappings":"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"}