@webex/plugin-meetings 3.0.0-beta.7 → 3.0.0-beta.71

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 (506) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +178 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/edit-lock-error.js +52 -0
  8. package/dist/breakouts/edit-lock-error.js.map +1 -0
  9. package/dist/breakouts/index.js +843 -0
  10. package/dist/breakouts/index.js.map +1 -0
  11. package/dist/breakouts/request.js +78 -0
  12. package/dist/breakouts/request.js.map +1 -0
  13. package/dist/breakouts/utils.js +56 -0
  14. package/dist/breakouts/utils.js.map +1 -0
  15. package/dist/common/browser-detection.js +1 -20
  16. package/dist/common/browser-detection.js.map +1 -1
  17. package/dist/common/collection.js +5 -20
  18. package/dist/common/collection.js.map +1 -1
  19. package/dist/common/config.js +0 -7
  20. package/dist/common/config.js.map +1 -1
  21. package/dist/common/errors/captcha-error.js +10 -24
  22. package/dist/common/errors/captcha-error.js.map +1 -1
  23. package/dist/common/errors/intent-to-join.js +11 -24
  24. package/dist/common/errors/intent-to-join.js.map +1 -1
  25. package/dist/common/errors/join-meeting.js +12 -25
  26. package/dist/common/errors/join-meeting.js.map +1 -1
  27. package/dist/common/errors/media.js +10 -24
  28. package/dist/common/errors/media.js.map +1 -1
  29. package/dist/common/errors/parameter.js +5 -33
  30. package/dist/common/errors/parameter.js.map +1 -1
  31. package/dist/common/errors/password-error.js +10 -24
  32. package/dist/common/errors/password-error.js.map +1 -1
  33. package/dist/common/errors/permission.js +9 -23
  34. package/dist/common/errors/permission.js.map +1 -1
  35. package/dist/common/errors/reconnection-in-progress.js +0 -17
  36. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  37. package/dist/common/errors/reconnection.js +10 -24
  38. package/dist/common/errors/reconnection.js.map +1 -1
  39. package/dist/common/errors/stats.js +10 -24
  40. package/dist/common/errors/stats.js.map +1 -1
  41. package/dist/common/errors/webex-errors.js +6 -41
  42. package/dist/common/errors/webex-errors.js.map +1 -1
  43. package/dist/common/errors/webex-meetings-error.js +5 -25
  44. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  45. package/dist/common/events/events-scope.js +0 -22
  46. package/dist/common/events/events-scope.js.map +1 -1
  47. package/dist/common/events/events.js +0 -23
  48. package/dist/common/events/events.js.map +1 -1
  49. package/dist/common/events/trigger-proxy.js +0 -12
  50. package/dist/common/events/trigger-proxy.js.map +1 -1
  51. package/dist/common/events/util.js +0 -15
  52. package/dist/common/events/util.js.map +1 -1
  53. package/dist/common/logs/logger-config.js +0 -4
  54. package/dist/common/logs/logger-config.js.map +1 -1
  55. package/dist/common/logs/logger-proxy.js +1 -8
  56. package/dist/common/logs/logger-proxy.js.map +1 -1
  57. package/dist/common/logs/request.js +37 -60
  58. package/dist/common/logs/request.js.map +1 -1
  59. package/dist/common/queue.js +4 -14
  60. package/dist/common/queue.js.map +1 -1
  61. package/dist/config.js +6 -6
  62. package/dist/config.js.map +1 -1
  63. package/dist/constants.js +143 -52
  64. package/dist/constants.js.map +1 -1
  65. package/dist/controls-options-manager/constants.js +14 -0
  66. package/dist/controls-options-manager/constants.js.map +1 -0
  67. package/dist/controls-options-manager/enums.js +16 -0
  68. package/dist/controls-options-manager/enums.js.map +1 -0
  69. package/dist/controls-options-manager/index.js +261 -0
  70. package/dist/controls-options-manager/index.js.map +1 -0
  71. package/dist/controls-options-manager/util.js +39 -0
  72. package/dist/controls-options-manager/util.js.map +1 -0
  73. package/dist/index.js +11 -18
  74. package/dist/index.js.map +1 -1
  75. package/dist/locus-info/controlsUtils.js +31 -29
  76. package/dist/locus-info/controlsUtils.js.map +1 -1
  77. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  78. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  79. package/dist/locus-info/fullState.js +0 -15
  80. package/dist/locus-info/fullState.js.map +1 -1
  81. package/dist/locus-info/hostUtils.js +4 -12
  82. package/dist/locus-info/hostUtils.js.map +1 -1
  83. package/dist/locus-info/index.js +237 -198
  84. package/dist/locus-info/index.js.map +1 -1
  85. package/dist/locus-info/infoUtils.js +3 -37
  86. package/dist/locus-info/infoUtils.js.map +1 -1
  87. package/dist/locus-info/mediaSharesUtils.js +12 -38
  88. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  89. package/dist/locus-info/parser.js +92 -118
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +80 -89
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.js +56 -146
  94. package/dist/media/index.js.map +1 -1
  95. package/dist/media/properties.js +83 -117
  96. package/dist/media/properties.js.map +1 -1
  97. package/dist/media/util.js +2 -9
  98. package/dist/media/util.js.map +1 -1
  99. package/dist/mediaQualityMetrics/config.js +505 -495
  100. package/dist/mediaQualityMetrics/config.js.map +1 -1
  101. package/dist/meeting/in-meeting-actions.js +31 -14
  102. package/dist/meeting/in-meeting-actions.js.map +1 -1
  103. package/dist/meeting/index.js +2225 -2244
  104. package/dist/meeting/index.js.map +1 -1
  105. package/dist/meeting/muteState.js +102 -100
  106. package/dist/meeting/muteState.js.map +1 -1
  107. package/dist/meeting/request.js +308 -264
  108. package/dist/meeting/request.js.map +1 -1
  109. package/dist/meeting/request.type.js +7 -0
  110. package/dist/meeting/request.type.js.map +1 -0
  111. package/dist/meeting/state.js +21 -31
  112. package/dist/meeting/state.js.map +1 -1
  113. package/dist/meeting/util.js +63 -217
  114. package/dist/meeting/util.js.map +1 -1
  115. package/dist/meeting-info/collection.js +6 -25
  116. package/dist/meeting-info/collection.js.map +1 -1
  117. package/dist/meeting-info/index.js +14 -32
  118. package/dist/meeting-info/index.js.map +1 -1
  119. package/dist/meeting-info/meeting-info-v2.js +193 -268
  120. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  121. package/dist/meeting-info/request.js +3 -15
  122. package/dist/meeting-info/request.js.map +1 -1
  123. package/dist/meeting-info/util.js +98 -183
  124. package/dist/meeting-info/util.js.map +1 -1
  125. package/dist/meeting-info/utilv2.js +137 -228
  126. package/dist/meeting-info/utilv2.js.map +1 -1
  127. package/dist/meetings/collection.js +26 -19
  128. package/dist/meetings/collection.js.map +1 -1
  129. package/dist/meetings/index.js +565 -552
  130. package/dist/meetings/index.js.map +1 -1
  131. package/dist/meetings/request.js +26 -41
  132. package/dist/meetings/request.js.map +1 -1
  133. package/dist/meetings/util.js +151 -155
  134. package/dist/meetings/util.js.map +1 -1
  135. package/dist/member/index.js +100 -85
  136. package/dist/member/index.js.map +1 -1
  137. package/dist/member/types.js +15 -0
  138. package/dist/member/types.js.map +1 -0
  139. package/dist/member/util.js +90 -68
  140. package/dist/member/util.js.map +1 -1
  141. package/dist/members/collection.js +13 -12
  142. package/dist/members/collection.js.map +1 -1
  143. package/dist/members/index.js +152 -204
  144. package/dist/members/index.js.map +1 -1
  145. package/dist/members/request.js +35 -39
  146. package/dist/members/request.js.map +1 -1
  147. package/dist/members/types.js +15 -0
  148. package/dist/members/types.js.map +1 -0
  149. package/dist/members/util.js +76 -46
  150. package/dist/members/util.js.map +1 -1
  151. package/dist/metrics/config.js +4 -14
  152. package/dist/metrics/config.js.map +1 -1
  153. package/dist/metrics/constants.js +1 -6
  154. package/dist/metrics/constants.js.map +1 -1
  155. package/dist/metrics/index.js +59 -156
  156. package/dist/metrics/index.js.map +1 -1
  157. package/dist/multistream/mediaRequestManager.js +116 -52
  158. package/dist/multistream/mediaRequestManager.js.map +1 -1
  159. package/dist/multistream/receiveSlot.js +58 -65
  160. package/dist/multistream/receiveSlot.js.map +1 -1
  161. package/dist/multistream/receiveSlotManager.js +58 -93
  162. package/dist/multistream/receiveSlotManager.js.map +1 -1
  163. package/dist/multistream/remoteMedia.js +55 -74
  164. package/dist/multistream/remoteMedia.js.map +1 -1
  165. package/dist/multistream/remoteMediaGroup.js +6 -40
  166. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  167. package/dist/multistream/remoteMediaManager.js +466 -442
  168. package/dist/multistream/remoteMediaManager.js.map +1 -1
  169. package/dist/networkQualityMonitor/index.js +40 -59
  170. package/dist/networkQualityMonitor/index.js.map +1 -1
  171. package/dist/personal-meeting-room/index.js +21 -45
  172. package/dist/personal-meeting-room/index.js.map +1 -1
  173. package/dist/personal-meeting-room/request.js +1 -31
  174. package/dist/personal-meeting-room/request.js.map +1 -1
  175. package/dist/personal-meeting-room/util.js +0 -13
  176. package/dist/personal-meeting-room/util.js.map +1 -1
  177. package/dist/reachability/index.js +192 -191
  178. package/dist/reachability/index.js.map +1 -1
  179. package/dist/reachability/request.js +15 -23
  180. package/dist/reachability/request.js.map +1 -1
  181. package/dist/reactions/constants.js +13 -0
  182. package/dist/reactions/constants.js.map +1 -0
  183. package/dist/reactions/reactions.js +109 -0
  184. package/dist/reactions/reactions.js.map +1 -0
  185. package/dist/reactions/reactions.type.js +36 -0
  186. package/dist/reactions/reactions.type.js.map +1 -0
  187. package/dist/reconnection-manager/index.js +342 -460
  188. package/dist/reconnection-manager/index.js.map +1 -1
  189. package/dist/recording-controller/enums.js +17 -0
  190. package/dist/recording-controller/enums.js.map +1 -0
  191. package/dist/recording-controller/index.js +343 -0
  192. package/dist/recording-controller/index.js.map +1 -0
  193. package/dist/recording-controller/util.js +63 -0
  194. package/dist/recording-controller/util.js.map +1 -0
  195. package/dist/roap/index.js +48 -70
  196. package/dist/roap/index.js.map +1 -1
  197. package/dist/roap/request.js +143 -131
  198. package/dist/roap/request.js.map +1 -1
  199. package/dist/roap/turnDiscovery.js +91 -98
  200. package/dist/roap/turnDiscovery.js.map +1 -1
  201. package/dist/statsAnalyzer/global.js +1 -95
  202. package/dist/statsAnalyzer/global.js.map +1 -1
  203. package/dist/statsAnalyzer/index.js +372 -455
  204. package/dist/statsAnalyzer/index.js.map +1 -1
  205. package/dist/statsAnalyzer/mqaUtil.js +143 -87
  206. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  207. package/dist/transcription/index.js +22 -47
  208. package/dist/transcription/index.js.map +1 -1
  209. package/dist/types/breakouts/breakout.d.ts +8 -0
  210. package/dist/types/breakouts/collection.d.ts +5 -0
  211. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  212. package/dist/types/breakouts/index.d.ts +5 -0
  213. package/dist/types/breakouts/request.d.ts +22 -0
  214. package/dist/types/breakouts/utils.d.ts +8 -0
  215. package/dist/types/common/browser-detection.d.ts +9 -0
  216. package/dist/types/common/collection.d.ts +48 -0
  217. package/dist/types/common/config.d.ts +2 -0
  218. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  219. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  220. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  221. package/dist/types/common/errors/media.d.ts +15 -0
  222. package/dist/types/common/errors/parameter.d.ts +15 -0
  223. package/dist/types/common/errors/password-error.d.ts +15 -0
  224. package/dist/types/common/errors/permission.d.ts +14 -0
  225. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  226. package/dist/types/common/errors/reconnection.d.ts +15 -0
  227. package/dist/types/common/errors/stats.d.ts +15 -0
  228. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  229. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  230. package/dist/types/common/events/events-scope.d.ts +17 -0
  231. package/dist/types/common/events/events.d.ts +12 -0
  232. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  233. package/dist/types/common/events/util.d.ts +2 -0
  234. package/dist/types/common/logs/logger-config.d.ts +2 -0
  235. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  236. package/dist/types/common/logs/request.d.ts +34 -0
  237. package/dist/types/common/queue.d.ts +32 -0
  238. package/dist/types/config.d.ts +77 -0
  239. package/dist/types/constants.d.ts +944 -0
  240. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  241. package/dist/types/controls-options-manager/enums.d.ts +6 -0
  242. package/dist/types/controls-options-manager/index.d.ts +128 -0
  243. package/dist/types/controls-options-manager/util.d.ts +9 -0
  244. package/dist/types/index.d.ts +6 -0
  245. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  246. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  247. package/dist/types/locus-info/fullState.d.ts +2 -0
  248. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  249. package/dist/types/locus-info/index.d.ts +276 -0
  250. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  251. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  252. package/dist/types/locus-info/parser.d.ts +212 -0
  253. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  254. package/dist/types/media/index.d.ts +32 -0
  255. package/dist/types/media/properties.d.ts +108 -0
  256. package/dist/types/media/util.d.ts +2 -0
  257. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  258. package/dist/types/meeting/in-meeting-actions.d.ts +101 -0
  259. package/dist/types/meeting/index.d.ts +1720 -0
  260. package/dist/types/meeting/muteState.d.ts +132 -0
  261. package/dist/types/meeting/request.d.ts +271 -0
  262. package/dist/types/meeting/request.type.d.ts +11 -0
  263. package/dist/types/meeting/state.d.ts +9 -0
  264. package/dist/types/meeting/util.d.ts +2 -0
  265. package/dist/types/meeting-info/collection.d.ts +20 -0
  266. package/dist/types/meeting-info/index.d.ts +57 -0
  267. package/dist/types/meeting-info/meeting-info-v2.d.ts +93 -0
  268. package/dist/types/meeting-info/request.d.ts +22 -0
  269. package/dist/types/meeting-info/util.d.ts +2 -0
  270. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  271. package/dist/types/meetings/collection.d.ts +31 -0
  272. package/dist/types/meetings/index.d.ts +315 -0
  273. package/dist/types/meetings/request.d.ts +27 -0
  274. package/dist/types/meetings/util.d.ts +18 -0
  275. package/dist/types/member/index.d.ts +156 -0
  276. package/dist/types/member/types.d.ts +21 -0
  277. package/dist/types/member/util.d.ts +2 -0
  278. package/dist/types/members/collection.d.ts +29 -0
  279. package/dist/types/members/index.d.ts +343 -0
  280. package/dist/types/members/request.d.ts +58 -0
  281. package/dist/types/members/types.d.ts +24 -0
  282. package/dist/types/members/util.d.ts +2 -0
  283. package/dist/types/metrics/config.d.ts +171 -0
  284. package/dist/types/metrics/constants.d.ts +53 -0
  285. package/dist/types/metrics/index.d.ts +152 -0
  286. package/dist/types/multistream/mediaRequestManager.d.ts +68 -0
  287. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  288. package/dist/types/multistream/receiveSlotManager.d.ts +49 -0
  289. package/dist/types/multistream/remoteMedia.d.ts +100 -0
  290. package/dist/types/multistream/remoteMediaGroup.d.ts +56 -0
  291. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  292. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  293. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  294. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  295. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  296. package/dist/types/reachability/index.d.ts +152 -0
  297. package/dist/types/reachability/request.d.ts +37 -0
  298. package/dist/types/reactions/constants.d.ts +3 -0
  299. package/dist/types/reactions/reactions.d.ts +4 -0
  300. package/dist/types/reactions/reactions.type.d.ts +52 -0
  301. package/dist/types/reconnection-manager/index.d.ts +126 -0
  302. package/dist/types/recording-controller/enums.d.ts +7 -0
  303. package/dist/types/recording-controller/index.d.ts +193 -0
  304. package/dist/types/recording-controller/util.d.ts +13 -0
  305. package/dist/types/roap/index.d.ts +77 -0
  306. package/dist/types/roap/request.d.ts +38 -0
  307. package/dist/types/roap/turnDiscovery.d.ts +74 -0
  308. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  309. package/dist/types/statsAnalyzer/index.d.ts +195 -0
  310. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  311. package/dist/types/transcription/index.d.ts +64 -0
  312. package/internal-README.md +7 -6
  313. package/package.json +27 -21
  314. package/src/breakouts/README.md +219 -0
  315. package/src/breakouts/breakout.ts +153 -0
  316. package/src/breakouts/collection.ts +19 -0
  317. package/src/breakouts/edit-lock-error.ts +25 -0
  318. package/src/breakouts/index.ts +745 -0
  319. package/src/breakouts/request.ts +55 -0
  320. package/src/breakouts/utils.ts +44 -0
  321. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  322. package/src/common/collection.ts +9 -7
  323. package/src/common/{config.js → config.ts} +1 -1
  324. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  325. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  326. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  327. package/src/common/errors/{media.js → media.ts} +11 -7
  328. package/src/common/errors/parameter.ts +11 -7
  329. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  330. package/src/common/errors/{permission.js → permission.ts} +10 -6
  331. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  332. package/src/common/errors/{stats.js → stats.ts} +11 -7
  333. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  334. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  335. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  336. package/src/common/events/{events.js → events.ts} +5 -1
  337. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  338. package/src/common/events/{util.js → util.ts} +2 -3
  339. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  340. package/src/common/logs/logger-proxy.ts +44 -0
  341. package/src/common/logs/{request.js → request.ts} +22 -9
  342. package/src/common/queue.ts +1 -2
  343. package/src/{config.js → config.ts} +17 -12
  344. package/src/constants.ts +92 -5
  345. package/src/controls-options-manager/constants.ts +5 -0
  346. package/src/controls-options-manager/enums.ts +7 -0
  347. package/src/controls-options-manager/index.ts +240 -0
  348. package/src/controls-options-manager/util.ts +30 -0
  349. package/src/index.js +4 -1
  350. package/src/locus-info/controlsUtils.ts +141 -0
  351. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  352. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  353. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  354. package/src/locus-info/{index.js → index.ts} +211 -71
  355. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  356. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  357. package/src/locus-info/{parser.js → parser.ts} +67 -79
  358. package/src/locus-info/{selfUtils.js → selfUtils.ts} +183 -67
  359. package/src/media/{index.js → index.ts} +179 -176
  360. package/src/media/{properties.js → properties.ts} +60 -37
  361. package/src/media/{util.js → util.ts} +2 -2
  362. package/src/mediaQualityMetrics/config.ts +384 -0
  363. package/src/meeting/in-meeting-actions.ts +67 -3
  364. package/src/meeting/{index.js → index.ts} +2605 -1605
  365. package/src/meeting/{muteState.js → muteState.ts} +138 -73
  366. package/src/meeting/{request.js → request.ts} +326 -142
  367. package/src/meeting/request.type.ts +13 -0
  368. package/src/meeting/{state.js → state.ts} +50 -35
  369. package/src/meeting/{util.js → util.ts} +131 -115
  370. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  371. package/src/meeting-info/{index.js → index.ts} +42 -36
  372. package/src/meeting-info/meeting-info-v2.ts +273 -0
  373. package/src/meeting-info/{request.js → request.ts} +14 -4
  374. package/src/meeting-info/{util.js → util.ts} +60 -51
  375. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  376. package/src/meetings/{collection.js → collection.ts} +26 -3
  377. package/src/meetings/index.ts +1275 -0
  378. package/src/meetings/{request.js → request.ts} +34 -25
  379. package/src/meetings/{util.js → util.ts} +99 -33
  380. package/src/member/{index.js → index.ts} +124 -56
  381. package/src/member/types.ts +24 -0
  382. package/src/member/{util.js → util.ts} +105 -25
  383. package/src/members/{collection.js → collection.ts} +10 -2
  384. package/src/members/{index.js → index.ts} +281 -144
  385. package/src/members/{request.js → request.ts} +80 -16
  386. package/src/members/types.ts +28 -0
  387. package/src/members/{util.js → util.ts} +108 -55
  388. package/src/metrics/{config.js → config.ts} +255 -92
  389. package/src/metrics/{constants.js → constants.ts} +0 -6
  390. package/src/metrics/{index.js → index.ts} +110 -94
  391. package/src/multistream/mediaRequestManager.ts +144 -40
  392. package/src/multistream/receiveSlot.ts +69 -26
  393. package/src/multistream/receiveSlotManager.ts +50 -38
  394. package/src/multistream/remoteMedia.ts +30 -4
  395. package/src/multistream/remoteMediaGroup.ts +4 -3
  396. package/src/multistream/remoteMediaManager.ts +230 -66
  397. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  398. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  399. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  400. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  401. package/src/reachability/{index.js → index.ts} +157 -94
  402. package/src/reachability/request.ts +46 -35
  403. package/src/reactions/constants.ts +4 -0
  404. package/src/reactions/reactions.ts +104 -0
  405. package/src/reactions/reactions.type.ts +62 -0
  406. package/src/reconnection-manager/{index.js → index.ts} +228 -120
  407. package/src/recording-controller/enums.ts +8 -0
  408. package/src/recording-controller/index.ts +315 -0
  409. package/src/recording-controller/util.ts +58 -0
  410. package/src/roap/{index.js → index.ts} +77 -60
  411. package/src/roap/request.ts +172 -0
  412. package/src/roap/turnDiscovery.ts +81 -41
  413. package/src/statsAnalyzer/global.ts +37 -0
  414. package/src/statsAnalyzer/index.ts +1242 -0
  415. package/src/statsAnalyzer/mqaUtil.ts +291 -0
  416. package/src/transcription/{index.js → index.ts} +46 -39
  417. package/test/integration/spec/converged-space-meetings.js +176 -0
  418. package/test/integration/spec/journey.js +665 -464
  419. package/test/integration/spec/space-meeting.js +320 -206
  420. package/test/integration/spec/transcription.js +7 -8
  421. package/test/unit/spec/breakouts/breakout.ts +178 -0
  422. package/test/unit/spec/breakouts/collection.ts +15 -0
  423. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  424. package/test/unit/spec/breakouts/index.ts +1252 -0
  425. package/test/unit/spec/breakouts/request.ts +104 -0
  426. package/test/unit/spec/breakouts/utils.js +54 -0
  427. package/test/unit/spec/common/browser-detection.js +9 -28
  428. package/test/unit/spec/controls-options-manager/index.js +204 -0
  429. package/test/unit/spec/controls-options-manager/util.js +86 -0
  430. package/test/unit/spec/fixture/locus.js +92 -90
  431. package/test/unit/spec/locus-info/controlsUtils.js +133 -34
  432. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  433. package/test/unit/spec/locus-info/index.js +303 -2
  434. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  435. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  436. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  437. package/test/unit/spec/locus-info/parser.js +3 -9
  438. package/test/unit/spec/locus-info/selfConstant.js +101 -103
  439. package/test/unit/spec/locus-info/selfUtils.js +165 -12
  440. package/test/unit/spec/media/index.ts +72 -8
  441. package/test/unit/spec/media/properties.ts +9 -9
  442. package/test/unit/spec/meeting/in-meeting-actions.ts +29 -2
  443. package/test/unit/spec/meeting/index.js +2503 -802
  444. package/test/unit/spec/meeting/muteState.js +146 -61
  445. package/test/unit/spec/meeting/request.js +141 -43
  446. package/test/unit/spec/meeting/utils.js +135 -164
  447. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  448. package/test/unit/spec/meeting-info/request.js +7 -9
  449. package/test/unit/spec/meeting-info/util.js +11 -12
  450. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  451. package/test/unit/spec/meetings/collection.js +15 -1
  452. package/test/unit/spec/meetings/index.js +622 -263
  453. package/test/unit/spec/meetings/utils.js +65 -14
  454. package/test/unit/spec/member/index.js +24 -1
  455. package/test/unit/spec/member/util.js +359 -32
  456. package/test/unit/spec/members/index.js +294 -54
  457. package/test/unit/spec/members/request.js +50 -20
  458. package/test/unit/spec/members/utils.js +147 -4
  459. package/test/unit/spec/metrics/index.js +16 -21
  460. package/test/unit/spec/multistream/mediaRequestManager.ts +369 -68
  461. package/test/unit/spec/multistream/receiveSlot.ts +76 -17
  462. package/test/unit/spec/multistream/receiveSlotManager.ts +60 -38
  463. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  464. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  465. package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
  466. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  467. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  468. package/test/unit/spec/reachability/index.ts +176 -27
  469. package/test/unit/spec/reachability/request.js +66 -0
  470. package/test/unit/spec/reconnection-manager/index.js +58 -30
  471. package/test/unit/spec/recording-controller/index.js +231 -0
  472. package/test/unit/spec/recording-controller/util.js +102 -0
  473. package/test/unit/spec/roap/index.ts +12 -8
  474. package/test/unit/spec/roap/request.ts +217 -0
  475. package/test/unit/spec/roap/turnDiscovery.ts +72 -49
  476. package/test/unit/spec/stats-analyzer/index.js +108 -57
  477. package/test/utils/cmr.js +44 -42
  478. package/test/utils/constants.js +9 -0
  479. package/test/utils/testUtils.js +98 -77
  480. package/test/utils/webex-config.js +22 -18
  481. package/test/utils/webex-test-users.js +57 -50
  482. package/tsconfig.json +6 -0
  483. package/dist/media/internal-media-core-wrapper.js +0 -22
  484. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  485. package/dist/meeting/effectsState.js +0 -327
  486. package/dist/meeting/effectsState.js.map +0 -1
  487. package/dist/multistream/multistreamMedia.js +0 -116
  488. package/dist/multistream/multistreamMedia.js.map +0 -1
  489. package/dist/peer-connection-manager/util.js +0 -124
  490. package/dist/peer-connection-manager/util.js.map +0 -1
  491. package/src/common/logs/logger-proxy.js +0 -33
  492. package/src/locus-info/controlsUtils.js +0 -102
  493. package/src/media/internal-media-core-wrapper.ts +0 -9
  494. package/src/mediaQualityMetrics/config.js +0 -382
  495. package/src/meeting/effectsState.js +0 -205
  496. package/src/meeting-info/meeting-info-v2.js +0 -255
  497. package/src/meetings/index.js +0 -1015
  498. package/src/multistream/multistreamMedia.ts +0 -92
  499. package/src/peer-connection-manager/util.ts +0 -117
  500. package/src/roap/request.js +0 -127
  501. package/src/statsAnalyzer/global.js +0 -133
  502. package/src/statsAnalyzer/index.js +0 -1006
  503. package/src/statsAnalyzer/mqaUtil.js +0 -173
  504. package/test/unit/spec/meeting/effectsState.js +0 -291
  505. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  506. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["MeetingRequest","attrs","options","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","preferTranscoding","LoggerProxy","logger","info","url","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","webex","clientRegion","countryCode","regionCode","undefined","PARTICIPANT","internal","services","waitForCatalog","get","LOCI","CALL","invitee","address","error","concat","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","request","method","HTTP_VERBS","POST","uri","captchaRefreshUrl","captchaId","catch","err","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","desync","syncUrl","split","LOCUS","SYNCDEBUG","GET","reject","phoneUrl","selfId","LEAVE","PUT","ALERT","CONTROLS","record","recording","paused","PATCH","lock","locked","DECLINE","reason","MEDIA","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","resourceToken","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","END","keepAliveUrl","StatelessWebexPlugin"],"sources":["request.js"],"sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\nimport {StatelessWebexPlugin} from '@webex/webex-core';\nimport {deviceType} from '@webex/common';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n CALL,\n CONTROLS,\n DECLINE,\n END,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n LOCUS,\n MEDIA,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n SEND_DTMF_ENDPOINT,\n _SLIDES_\n} from '../constants';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n constructor(attrs, options) {\n super(attrs, options);\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {leading: true, trailing: true});\n }\n\n /**\n * Make a network request to join a meeting\n * @param {Object} options\n * @param {String} options.sipUri\n * @param {String} options.deviceUrl\n * @param {String} options.locusUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @param {boolean} options.ensureConversation\n * @param {boolean} options.moderator\n * @param {boolean} options.pin\n * @param {boolean} options.moveToResource\n * @param {Object} options.roapMessage\n * @returns {Promise}\n */\n async joinMeeting(options) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n preferTranscoding\n } = options;\n\n LoggerProxy.logger.info(\n 'Meeting:request#joinMeeting --> Joining a meeting',\n correlationId\n );\n\n let url = '';\n\n const body = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\n deviceType: this.config.meetings.deviceType\n },\n usingResource: resourceId || null,\n moveMediaToResource: resourceId && moveToResource || false,\n correlationId,\n respOnlySdp: true,\n allowMultiDevice: true,\n ensureConversation: ensureConversation || false,\n supportsNativeLobby: 1,\n clientMediaPreferences: {\n preferTranscoding: preferTranscoding ?? true\n }\n };\n\n if (this.webex.meetings.clientRegion) {\n body.device.countryCode = this.webex.meetings.clientRegion.countryCode;\n body.device.regionCode = this.webex.meetings.clientRegion.regionCode;\n }\n\n if (moderator !== undefined) {\n body.moderator = moderator;\n }\n\n if (permissionToken) {\n body.permissionToken = permissionToken;\n }\n\n if (pin !== undefined) {\n body.pin = pin;\n }\n\n if (locusUrl) {\n url = `${locusUrl}/${PARTICIPANT}`;\n }\n else if (inviteeAddress || meetingNumber) {\n try {\n await this.webex.internal.services.waitForCatalog('postauth');\n url = `${this.webex.internal.services.get('locus')}/${LOCI}/${CALL}`;\n body.invitee = {\n address: inviteeAddress || `wbxmn:${meetingNumber}`\n };\n }\n catch (e) {\n LoggerProxy.logger.error(`Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`);\n throw (e);\n }\n }\n\n\n // TODO: -- this will be resolved in SDK request\n url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n\n if (resourceId === inviteeAddress) {\n body.callPreferences = {\n requestedMedia: [_SLIDES_]\n };\n }\n\n if (roapMessage) {\n body.localMedias = roapMessage.localMedias;\n }\n\n return this.request({\n method: HTTP_VERBS.POST,\n uri: url,\n body\n });\n }\n\n /**\n * Send a request to refresh the captcha\n * @param {Object} options\n * @param {String} options.captchaRefreshUrl\n * @param {String} options.captchaId\n * @returns {Promise}\n * @private\n */\n refreshCaptcha({\n captchaRefreshUrl,\n captchaId\n }) {\n const body = {\n captchaId\n };\n\n return this.request({\n method: HTTP_VERBS.POST,\n uri: captchaRefreshUrl,\n body\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#refreshCaptcha --> Error: ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial in device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.localUrl url for the meeting\n * @param {String} options.dialInUrl identifier for the to-be provisioned device\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n dialIn({\n locusUrl,\n dialInUrl,\n clientUrl,\n correlationId\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialIn --> Provisioning a dial in device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_IN,\n url: dialInUrl,\n clientUrl\n },\n correlationId\n };\n\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial out device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.localUrl url for the meeting\n * @param {String} options.dialOutUrl identifier for the to-be provisioned device\n * @param {String} options.phoneNumber phone number to dial out to\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n dialOut({\n locusUrl,\n dialOutUrl,\n phoneNumber,\n clientUrl,\n correlationId\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialOut --> Provisioning a dial out device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_OUT,\n url: dialOutUrl,\n dialoutAddress: phoneNumber,\n clientUrl\n },\n correlationId\n };\n\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Syns the missed delta event\n * @param {Object} options\n * @param {boolen} options.desync flag to get partial or whole locus object\n * @param {String} options.syncUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n syncMeeting(options) {\n /* eslint-disable no-else-return */\n const {desync} = options;\n let {syncUrl} = options;\n\n /* istanbul ignore else */\n if (desync) {\n // check for existing URL parameters\n syncUrl = syncUrl.concat(syncUrl.split('?')[1] ? '&' : '?').concat(`${LOCUS.SYNCDEBUG}=${desync}`);\n }\n\n return this.request({\n method: HTTP_VERBS.GET,\n uri: syncUrl\n }) // TODO: Handle if delta sync failed . Get the full locus object\n .catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`);\n\n return err;\n });\n }\n\n /**\n * Request to get the complete locus object\n * @param {Object} options\n * @param {boolen} options.desync flag to get partial or whole locus object\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getFullLocus(options) {\n let {locusUrl} = options;\n const {desync} = options;\n\n if (locusUrl) {\n if (desync) {\n locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;\n }\n\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#getFullLocus --> Error getting full locus, error ${err}`);\n\n return err;\n });\n }\n\n return Promise.reject();\n }\n\n /**\n * Make a network request to make a provisioned phone leave the meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.phoneUrl\n * @param {String} options.correlationId\n * @param {String} options.selfId\n * @returns {Promise}\n * @private\n */\n disconnectPhoneAudio({\n locusUrl,\n phoneUrl,\n correlationId,\n selfId\n }) {\n LoggerProxy.logger.info(\n `Meeting:request#disconnectPhoneAudio --> request phone ${phoneUrl} to leave`,\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n url: phoneUrl\n },\n correlationId\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#disconnectPhoneAudio --> Error when requesting phone ${phoneUrl} to leave, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to leave a meeting\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @param {String} options.selfId\n * @param {Url} options.deviceUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n leaveMeeting({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#leaveMeeting --> Leaving a meeting',\n correlationId\n );\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n deviceType: this.config.meetings.deviceType,\n url\n },\n usingResource: resourceId || null,\n correlationId\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body\n });\n }\n\n /**\n * Make a network request to acknowledge a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n acknowledgeMeeting(options) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl\n },\n correlationId: options.correlationId\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body\n });\n }\n\n /**\n * Make a network request to acknowledge a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.id\n * @returns {Promise}\n */\n recordMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n record: {\n recording: options.recording,\n paused: options.paused\n }\n };\n\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri,\n body\n });\n }\n\n lockMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n lock: {\n locked: options.lock\n }\n };\n\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri,\n body\n });\n }\n\n /**\n * Make a network request to decline a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.reason\n * @returns {Promise}\n */\n declineMeeting(options) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl\n },\n ...(options.reason && {reason: options.reason})\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body\n });\n }\n\n /**\n * Toggle remote audio and/or video\n * @param {Object} options options for toggling\n * @param {String} options.selfId Locus self id??\n * @param {String} options.locusUrl Locus url\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.localMedias local sdps\n * @param {Boolean} options.preferTranscoding false for multistream (Homer), true for transcoded media (Edonus)\n * @returns {Promise}\n */\n remoteAudioVideoToggle(options) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.selfId}/${MEDIA}`;\n const body = {\n device: {\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl\n },\n usingResource: options.resourceId || null,\n correlationId: options.correlationId,\n respOnlySdp: true,\n localMedias: options.localMedias,\n clientMediaPreferences: {\n preferTranscoding: options.preferTranscoding ?? true\n }\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body\n });\n }\n\n /**\n * change the content floor grant\n * @param {Object} options options for floor grant\n * @param {String} options.disposition floor action (granted/released)\n * @param {String} options.personUrl personUrl who is requesting floor\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.uri floor grant uri\n * @returns {Promise}\n */\n changeMeetingFloor(options) {\n let floorReq = {disposition: options.disposition};\n\n /* istanbul ignore else */\n if (options.disposition === FLOOR_ACTION.GRANTED) {\n floorReq = {\n beneficiary: {\n url: options.personUrl,\n devices: [\n {\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl\n }\n ]\n },\n disposition: options.disposition,\n requester: {\n url: options.personUrl\n }\n };\n }\n\n const body = {\n floor: floorReq,\n resourceUrl: options.resourceUrl\n };\n\n if (options?.resourceToken) {\n body.resourceToken = options?.resourceToken;\n }\n\n return this.request({\n uri: options.uri,\n method: HTTP_VERBS.PUT,\n body\n });\n }\n\n /**\n * Sends a request to the DTMF endpoint to send tones\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.tones a string of one or more DTMF tones to send\n * @returns {Promise}\n */\n sendDTMF({locusUrl, deviceUrl, tones}) {\n return this.request({\n method: HTTP_VERBS.POST,\n uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,\n body: {\n deviceUrl,\n dtmf: {\n correlationId: uuid.v4(),\n tones\n }\n }\n });\n }\n\n /**\n * Sends a request to the controls endpoint to set the video layout\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.layoutType a layout type that should be available in meeting constants {@link #layout_types}\n * @param {Object} options.main preferred dimensions for the remote main video stream\n * @param {Number} options.main.width preferred width of main video stream\n * @param {Number} options.main.height preferred height of main video stream\n * @param {Object} options.content preferred dimensions for the remote content share stream\n * @param {Number} options.content.width preferred width of content share stream\n * @param {Number} options.content.height preferred height of content share stream\n * @returns {Promise}\n */\n changeVideoLayout({\n locusUrl,\n deviceUrl,\n layoutType,\n main,\n content\n }) {\n // send main/content renderInfo only if both width and height are specified\n if (main && (!main.width || !main.height)) {\n return Promise.reject(new Error(`Both width and height must be specified. One of them is missing for main: ${JSON.stringify(main)}`));\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(new Error(`Both width and height must be specified. One of them is missing for content: ${JSON.stringify(content)}`));\n }\n\n const renderInfoMain = (main) ? {width: main.width, height: main.height} : undefined;\n const renderInfoContent = (content) ? {width: content.width, height: content.height} : undefined;\n\n const layoutParams = (renderInfoMain || renderInfoContent) ?\n {\n renderInfo:\n {\n main: renderInfoMain,\n content: renderInfoContent\n }\n } : undefined;\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${locusUrl}/${CONTROLS}`,\n body: {\n layout: {\n deviceUrl,\n type: layoutType,\n layoutParams\n }\n }\n });\n }\n\n /**\n * Make a network request to end meeting for all\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @returns {Promise}\n */\n endMeetingForAll({\n locusUrl,\n }) {\n const uri = `${locusUrl}/${END}`;\n\n return this.request({\n method: HTTP_VERBS.POST,\n uri\n });\n }\n\n /**\n * Send a locus keepAlive (used in lobby)\n * @param {Object} options\n * @param {Url} options.keepAliveUrl\n * @returns {Promise}\n */\n keepAlive({\n keepAliveUrl,\n }) {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: keepAliveUrl\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["MeetingRequest","attrs","options","webex","boundedStorage","get","REACHABILITY","namespace","localStorageJoinCookie","catch","joinCookieRaw","joinCookie","JSON","parse","LoggerProxy","logger","error","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","preferTranscoding","breakoutsSupported","info","url","getJoinCookie","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","deviceCapabilities","BREAKOUTS","BREAKOUTS_SUPPORTED","clientRegion","countryCode","regionCode","undefined","PARTICIPANT","internal","services","waitForCatalog","LOCI","CALL","invitee","address","concat","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","request","method","HTTP_VERBS","POST","uri","captchaRefreshUrl","captchaId","err","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","desync","syncUrl","split","LOCUS","SYNCDEBUG","GET","reject","phoneUrl","selfId","LEAVE","PUT","ALERT","CONTROLS","lock","locked","PATCH","DECLINE","reason","MEDIA","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","resourceToken","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","END","keepAliveUrl","reactionChannelUrl","reaction","participantId","sender","enable","requestingParticipantId","reactions","enabled","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\n// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n// @ts-ignore\nimport {deviceType} from '@webex/common';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n BREAKOUTS,\n CALL,\n CONTROLS,\n DECLINE,\n END,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n LOCUS,\n MEDIA,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n REACHABILITY,\n SEND_DTMF_ENDPOINT,\n _SLIDES_,\n} from '../constants';\nimport {SendReactionOptions, ToggleReactionsOptions} from './request.type';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n changeVideoLayoutDebounced: any;\n\n /**\n * Constructor\n * @param {Object} attrs\n * @param {Object} options\n */\n constructor(attrs: any, options: any) {\n super(attrs, options);\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {\n leading: true,\n trailing: true,\n });\n }\n\n /**\n * Returns joinCookie from boundedStorage if present.\n * @returns {Object} joinCookie\n */\n private getJoinCookie = async () => {\n // @ts-ignore\n const joinCookieRaw = await this.webex.boundedStorage\n .get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)\n .catch(() => {});\n\n if (joinCookieRaw) {\n try {\n const joinCookie = JSON.parse(joinCookieRaw);\n if (joinCookie) {\n return joinCookie;\n }\n } catch (e) {\n LoggerProxy.logger.error(\n `MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`\n );\n }\n }\n\n return null;\n };\n\n /**\n * Make a network request to join a meeting\n * @param {Object} options\n * @param {String} options.sipUri\n * @param {String} options.deviceUrl\n * @param {String} options.locusUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @param {boolean} options.ensureConversation\n * @param {boolean} options.moderator\n * @param {boolean} options.pin\n * @param {boolean} options.moveToResource\n * @param {Object} options.roapMessage\n * @param {boolean} options.breakoutsSupported\n * @returns {Promise}\n */\n async joinMeeting(options: {\n sipUri: string;\n deviceUrl: string;\n locusUrl: string;\n resourceId: string;\n correlationId: string;\n ensureConversation: boolean;\n moderator: boolean;\n pin: boolean;\n moveToResource: boolean;\n roapMessage: any;\n asResourceOccupant: any;\n inviteeAddress: any;\n meetingNumber: any;\n permissionToken: any;\n preferTranscoding: any;\n breakoutsSupported: boolean;\n }) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n preferTranscoding,\n breakoutsSupported,\n } = options;\n\n LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);\n\n let url = '';\n\n const joinCookie = await this.getJoinCookie();\n\n const body: any = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\n // @ts-ignore - config comes from registerPlugin\n deviceType: this.config.meetings.deviceType,\n },\n usingResource: resourceId || null,\n moveMediaToResource: (resourceId && moveToResource) || false,\n correlationId,\n respOnlySdp: true,\n allowMultiDevice: true,\n ensureConversation: ensureConversation || false,\n supportsNativeLobby: 1,\n clientMediaPreferences: {\n preferTranscoding: preferTranscoding ?? true,\n joinCookie,\n },\n };\n\n if (breakoutsSupported) {\n body.deviceCapabilities = [BREAKOUTS.BREAKOUTS_SUPPORTED];\n }\n\n // @ts-ignore\n if (this.webex.meetings.clientRegion) {\n // @ts-ignore\n body.device.countryCode = this.webex.meetings.clientRegion.countryCode;\n // @ts-ignore\n body.device.regionCode = this.webex.meetings.clientRegion.regionCode;\n }\n\n if (moderator !== undefined) {\n body.moderator = moderator;\n }\n\n if (permissionToken) {\n body.permissionToken = permissionToken;\n }\n\n if (pin !== undefined) {\n body.pin = pin;\n }\n\n if (locusUrl) {\n url = `${locusUrl}/${PARTICIPANT}`;\n } else if (inviteeAddress || meetingNumber) {\n try {\n // @ts-ignore\n await this.webex.internal.services.waitForCatalog('postauth');\n // @ts-ignore\n url = `${this.webex.internal.services.get('locus')}/${LOCI}/${CALL}`;\n body.invitee = {\n address: inviteeAddress || `wbxmn:${meetingNumber}`,\n };\n } catch (e) {\n LoggerProxy.logger.error(\n `Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`\n );\n throw e;\n }\n }\n\n // TODO: -- this will be resolved in SDK request\n url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n\n if (resourceId === inviteeAddress) {\n body.callPreferences = {\n requestedMedia: [_SLIDES_],\n };\n }\n\n if (roapMessage) {\n body.localMedias = roapMessage.localMedias;\n }\n\n /// @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: url,\n body,\n });\n }\n\n /**\n * Send a request to refresh the captcha\n * @param {Object} options\n * @param {String} options.captchaRefreshUrl\n * @param {String} options.captchaId\n * @returns {Promise}\n * @private\n */\n private refreshCaptcha({\n captchaRefreshUrl,\n captchaId,\n }: {\n captchaRefreshUrl: string;\n captchaId: string;\n }) {\n const body = {\n captchaId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: captchaRefreshUrl,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#refreshCaptcha --> Error: ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial in device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialInUrl identifier for the to-be provisioned device\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialIn({\n locusUrl,\n dialInUrl,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialInUrl: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialIn --> Provisioning a dial in device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_IN,\n url: dialInUrl,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial out device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialOutUrl identifier for the to-be provisioned device\n * @param {String} options.phoneNumber phone number to dial out to\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialOut({\n locusUrl,\n dialOutUrl,\n phoneNumber,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialOutUrl: string;\n phoneNumber: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialOut --> Provisioning a dial out device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_OUT,\n url: dialOutUrl,\n dialoutAddress: phoneNumber,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Syns the missed delta event\n * @param {Object} options\n * @param {boolean} options.desync flag to get partial or whole locus object\n * @param {String} options.syncUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n syncMeeting(options: {desync: boolean; syncUrl: string}) {\n /* eslint-disable no-else-return */\n const {desync} = options;\n let {syncUrl} = options;\n\n /* istanbul ignore else */\n if (desync) {\n // check for existing URL parameters\n syncUrl = syncUrl\n .concat(syncUrl.split('?')[1] ? '&' : '?')\n .concat(`${LOCUS.SYNCDEBUG}=${desync}`);\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: syncUrl,\n }) // TODO: Handle if delta sync failed . Get the full locus object\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`\n );\n\n return err;\n });\n }\n\n /**\n * Request to get the complete locus object\n * @param {Object} options\n * @param {boolean} options.desync flag to get partial or whole locus object\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getFullLocus(options: {desync: boolean; locusUrl: string}) {\n let {locusUrl} = options;\n const {desync} = options;\n\n if (locusUrl) {\n if (desync) {\n locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#getFullLocus --> Error getting full locus, error ${err}`\n );\n\n return err;\n });\n }\n\n return Promise.reject();\n }\n\n /**\n * Make a network request to make a provisioned phone leave the meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.phoneUrl\n * @param {String} options.correlationId\n * @param {String} options.selfId\n * @returns {Promise}\n * @private\n */\n private disconnectPhoneAudio({\n locusUrl,\n phoneUrl,\n correlationId,\n selfId,\n }: {\n locusUrl: string;\n phoneUrl: string;\n correlationId: string;\n selfId: string;\n }) {\n LoggerProxy.logger.info(\n `Meeting:request#disconnectPhoneAudio --> request phone ${phoneUrl} to leave`,\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n url: phoneUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#disconnectPhoneAudio --> Error when requesting phone ${phoneUrl} to leave, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to leave a meeting\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @param {String} options.selfId\n * @param {Url} options.deviceUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n leaveMeeting({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n LoggerProxy.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to acknowledge a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n acknowledgeMeeting(options: {locusUrl: string; deviceUrl: string; correlationId: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n correlationId: options.correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n lockMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n lock: {\n locked: options.lock,\n },\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to decline a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.reason\n * @returns {Promise}\n */\n declineMeeting(options: {locusUrl: string; deviceUrl: string; reason: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ...(options.reason && {reason: options.reason}),\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Toggle remote audio and/or video\n * @param {Object} options options for toggling\n * @param {String} options.selfId Locus self id??\n * @param {String} options.locusUrl Locus url\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.localMedias local sdps\n * @param {Boolean} options.preferTranscoding false for multistream (Homer), true for transcoded media (Edonus)\n * @returns {Promise}\n */\n remoteAudioVideoToggle(\n options:\n | {\n selfId: string;\n locusUrl: string;\n deviceUrl: string;\n resourceId: string;\n localMedias: string;\n }\n | any\n ) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.selfId}/${MEDIA}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n usingResource: options.resourceId || null,\n correlationId: options.correlationId,\n respOnlySdp: true,\n localMedias: options.localMedias,\n clientMediaPreferences: {\n preferTranscoding: options.preferTranscoding ?? true,\n },\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * change the content floor grant\n * @param {Object} options options for floor grant\n * @param {String} options.disposition floor action (granted/released)\n * @param {String} options.personUrl personUrl who is requesting floor\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.uri floor grant uri\n * @returns {Promise}\n */\n changeMeetingFloor(\n options:\n | {\n disposition: string;\n personUrl: string;\n deviceUrl: string;\n resourceId: string;\n uri: string;\n }\n | any\n ) {\n let floorReq: any = {disposition: options.disposition};\n\n /* istanbul ignore else */\n if (options.disposition === FLOOR_ACTION.GRANTED) {\n floorReq = {\n beneficiary: {\n url: options.personUrl,\n devices: [\n {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ],\n },\n disposition: options.disposition,\n requester: {\n url: options.personUrl,\n },\n };\n }\n\n const body: any = {\n floor: floorReq,\n resourceUrl: options.resourceUrl,\n };\n\n if (options?.resourceToken) {\n body.resourceToken = options?.resourceToken;\n }\n\n // @ts-ignore\n return this.request({\n uri: options.uri,\n method: HTTP_VERBS.PUT,\n body,\n });\n }\n\n /**\n * Sends a request to the DTMF endpoint to send tones\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.tones a string of one or more DTMF tones to send\n * @returns {Promise}\n */\n sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,\n body: {\n deviceUrl,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n },\n },\n });\n }\n\n /**\n * Sends a request to the controls endpoint to set the video layout\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.layoutType a layout type that should be available in meeting constants {@link #layout_types}\n * @param {Object} options.main preferred dimensions for the remote main video stream\n * @param {Number} options.main.width preferred width of main video stream\n * @param {Number} options.main.height preferred height of main video stream\n * @param {Object} options.content preferred dimensions for the remote content share stream\n * @param {Number} options.content.width preferred width of content share stream\n * @param {Number} options.content.height preferred height of content share stream\n * @returns {Promise}\n */\n changeVideoLayout({\n locusUrl,\n deviceUrl,\n layoutType,\n main,\n content,\n }: {\n locusUrl: string;\n deviceUrl: string;\n layoutType: string;\n main: {\n width: number;\n height: number;\n };\n content: {\n width: number;\n height: number;\n };\n }) {\n // send main/content renderInfo only if both width and height are specified\n if (main && (!main.width || !main.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for main: ${JSON.stringify(\n main\n )}`\n )\n );\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for content: ${JSON.stringify(\n content\n )}`\n )\n );\n }\n\n const renderInfoMain = main ? {width: main.width, height: main.height} : undefined;\n const renderInfoContent = content ? {width: content.width, height: content.height} : undefined;\n\n const layoutParams =\n renderInfoMain || renderInfoContent\n ? {\n renderInfo: {\n main: renderInfoMain,\n content: renderInfoContent,\n },\n }\n : undefined;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${locusUrl}/${CONTROLS}`,\n body: {\n layout: {\n deviceUrl,\n type: layoutType,\n layoutParams,\n },\n },\n });\n }\n\n /**\n * Make a network request to end meeting for all\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @returns {Promise}\n */\n endMeetingForAll({locusUrl}: {locusUrl: string}) {\n const uri = `${locusUrl}/${END}`;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n });\n }\n\n /**\n * Send a locus keepAlive (used in lobby)\n * @param {Object} options\n * @param {Url} options.keepAliveUrl\n * @returns {Promise}\n */\n keepAlive({keepAliveUrl}: {keepAliveUrl: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: keepAliveUrl,\n });\n }\n\n /**\n * Make a network request to send a reaction.\n * @param {Object} options\n * @param {Url} options.reactionChannelUrl\n * @param {Reaction} options.reaction\n * @param {string} options.senderID\n * @returns {Promise}\n */\n sendReaction({reactionChannelUrl, reaction, participantId}: SendReactionOptions) {\n const uri = reactionChannelUrl;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body: {\n sender: {participantId},\n reaction,\n },\n });\n }\n\n /**\n * Make a network request to enable or disable reactions.\n * @param {boolean} options.enable - determines if we need to enable or disable.\n * @param {locusUrl} options.locusUrl\n * @returns {Promise}\n */\n toggleReactions({enable, locusUrl, requestingParticipantId}: ToggleReactionsOptions) {\n const uri = `${locusUrl}/${CONTROLS}`;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body: {\n reactions: {\n enabled: enable,\n },\n requestingParticipantId,\n },\n });\n }\n}\n"],"mappings":"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"}
@@ -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=request.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["request.type.ts"],"sourcesContent":["import {Reaction} from '../reactions/reactions.type';\n\nexport type SendReactionOptions = {\n reactionChannelUrl: string;\n reaction: Reaction;\n participantId: string;\n};\n\nexport type ToggleReactionsOptions = {\n enable: boolean;\n locusUrl: string;\n requestingParticipantId: string;\n};\n"],"mappings":""}
@@ -1,27 +1,17 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.default = void 0;
12
-
13
9
  var _javascriptStateMachine = _interopRequireDefault(require("javascript-state-machine"));
14
-
15
10
  var _history = _interopRequireDefault(require("javascript-state-machine/lib/history"));
16
-
17
11
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
18
-
19
12
  var _triggerProxy = _interopRequireDefault(require("../common/events/trigger-proxy"));
20
-
21
13
  var _constants = require("../constants");
22
-
23
14
  var _parameter = _interopRequireDefault(require("../common/errors/parameter"));
24
-
25
15
  // TODO: ensure that meeting can be destroyed when in an error state
26
16
  var MeetingStateMachine = {
27
17
  /**
@@ -33,46 +23,47 @@ var MeetingStateMachine = {
33
23
  if (!meetingRef) {
34
24
  throw new _parameter.default('You must initialize the meeting state machine with a meeting reference.');
35
25
  }
36
-
37
26
  return new _javascriptStateMachine.default({
38
27
  init: _constants.MEETING_STATE_MACHINE.STATES.IDLE,
39
- transitions: [// when ringing a meeting, it must be first IDLE, because all other states are invalid, it transitions to the RINGING state
28
+ transitions: [
29
+ // when ringing a meeting, it must be first IDLE, because all other states are invalid, it transitions to the RINGING state
40
30
  {
41
31
  name: _constants.MEETING_STATE_MACHINE.TRANSITIONS.RING,
42
32
  from: [_constants.MEETING_STATE_MACHINE.STATES.IDLE, _constants.MEETING_STATE_MACHINE.STATES.ERROR, _constants.MEETING_STATE_MACHINE.STATES.JOINED],
43
33
  to: _constants.MEETING_STATE_MACHINE.STATES.RINGING
44
- }, // when joining a meeting, it must be from the RINGING or IDLE state, transitions to JOINED state, 1:1 will go to RINGING,
34
+ },
35
+ // when joining a meeting, it must be from the RINGING or IDLE state, transitions to JOINED state, 1:1 will go to RINGING,
45
36
  // others will go straight to JOINED with this transition
46
37
  {
47
38
  name: _constants.MEETING_STATE_MACHINE.TRANSITIONS.JOIN,
48
39
  from: [_constants.MEETING_STATE_MACHINE.STATES.JOINED, _constants.MEETING_STATE_MACHINE.STATES.IDLE, _constants.MEETING_STATE_MACHINE.STATES.RINGING, _constants.MEETING_STATE_MACHINE.STATES.ERROR],
49
40
  to: _constants.MEETING_STATE_MACHINE.STATES.JOINED
50
- }, // signify that ringing has stopped and somebody else answered, move state to DECLINED, ANSWERED
41
+ },
42
+ // signify that ringing has stopped and somebody else answered, move state to DECLINED, ANSWERED
51
43
  {
52
44
  name: _constants.MEETING_STATE_MACHINE.TRANSITIONS.REMOTE,
53
45
  from: [_constants.MEETING_STATE_MACHINE.STATES.JOINED, _constants.MEETING_STATE_MACHINE.STATES.ERROR],
54
-
55
46
  /**
56
- * @param {Object} remote
57
- * @param {Boolean} remote.remoteAnswered
58
- * @param {Boolean} remote.remoteDeclined
59
- * @returns {String}
60
- */
47
+ * @param {Object} remote
48
+ * @param {Boolean} remote.remoteAnswered
49
+ * @param {Boolean} remote.remoteDeclined
50
+ * @returns {String}
51
+ */
61
52
  to: function to(remote) {
62
53
  // other user answered the call
63
54
  if (remote.remoteAnswered) {
64
55
  return _constants.MEETING_STATE_MACHINE.STATES.ANSWERED;
65
- } // other user declined the call
66
-
67
-
56
+ }
57
+ // other user declined the call
68
58
  if (remote.remoteDeclined) {
69
59
  return _constants.MEETING_STATE_MACHINE.STATES.DECLINED;
70
- } // default
71
-
60
+ }
72
61
 
62
+ // default
73
63
  return _constants.MEETING_STATE_MACHINE.STATES.ERROR;
74
64
  }
75
- }, // when leaving a meeting it must be from either the RINGING, JOINED, or ERROR states, and transitions it to the ENDED state
65
+ },
66
+ // when leaving a meeting it must be from either the RINGING, JOINED, or ERROR states, and transitions it to the ENDED state
76
67
  {
77
68
  name: _constants.MEETING_STATE_MACHINE.TRANSITIONS.LEAVE,
78
69
  from: [_constants.MEETING_STATE_MACHINE.STATES.IDLE, _constants.MEETING_STATE_MACHINE.STATES.RINGING, _constants.MEETING_STATE_MACHINE.STATES.JOINED, _constants.MEETING_STATE_MACHINE.STATES.ANSWERED, _constants.MEETING_STATE_MACHINE.STATES.DECLINED, _constants.MEETING_STATE_MACHINE.STATES.ERROR],
@@ -85,12 +76,14 @@ var MeetingStateMachine = {
85
76
  name: _constants.MEETING_STATE_MACHINE.TRANSITIONS.DECLINE,
86
77
  from: [_constants.MEETING_STATE_MACHINE.STATES.RINGING, _constants.MEETING_STATE_MACHINE.STATES.ERROR],
87
78
  to: _constants.MEETING_STATE_MACHINE.STATES.ENDED
88
- }, // transition from ANY state to ERROR state
79
+ },
80
+ // transition from ANY state to ERROR state
89
81
  {
90
82
  name: _constants.MEETING_STATE_MACHINE.TRANSITIONS.FAIL,
91
83
  from: '*',
92
84
  to: _constants.MEETING_STATE_MACHINE.STATES.ERROR
93
- }, // fail safe, transition from ANY state to IDLE state
85
+ },
86
+ // fail safe, transition from ANY state to IDLE state
94
87
  {
95
88
  name: _constants.MEETING_STATE_MACHINE.TRANSITIONS.RESET,
96
89
  from: '*',
@@ -120,7 +113,6 @@ var MeetingStateMachine = {
120
113
  });
121
114
  }
122
115
  },
123
-
124
116
  /**
125
117
  * Ring transition, to cause the ring event for the meeting, and transition the state to RINGING, for both incoming, and outgoing meetings
126
118
  * @param {Object} transition -- FiniteStateMachine automatically passed, not used
@@ -138,7 +130,6 @@ var MeetingStateMachine = {
138
130
  });
139
131
  }
140
132
  },
141
-
142
133
  /**
143
134
  * handle the entry to error state
144
135
  * @param {Object} transition
@@ -148,7 +139,6 @@ var MeetingStateMachine = {
148
139
  onEnterError: function onEnterError(transition, error) {
149
140
  _loggerProxy.default.logger.error("Meeting:state#onEnterError --> state->onEnterError#meeting.id: ".concat(this.meeting.id, " | Transition '").concat(transition === null || transition === void 0 ? void 0 : transition.transition, "' : ").concat(transition === null || transition === void 0 ? void 0 : transition.from, " -> ").concat(transition === null || transition === void 0 ? void 0 : transition.to, ", with error ").concat(error, ". Last states: ").concat(this.history));
150
141
  },
151
-
152
142
  /**
153
143
  * After ANY transition occurs, we want to know what state the meeting moved to for debugging
154
144
  * @param {Object} transition
@@ -1 +1 @@
1
- {"version":3,"names":["MeetingStateMachine","create","meetingRef","ParameterError","StateMachine","init","MEETING_STATE_MACHINE","STATES","IDLE","transitions","name","TRANSITIONS","RING","from","ERROR","JOINED","to","RINGING","JOIN","REMOTE","remote","remoteAnswered","ANSWERED","remoteDeclined","DECLINED","LEAVE","ENDED","END","DECLINE","FAIL","RESET","data","meeting","methods","onRemote","transition","stop","Trigger","trigger","file","function","EVENT_TRIGGERS","MEETING_RINGING_STOP","id","type","onRing","MEETING_RINGING","onEnterError","error","LoggerProxy","logger","history","onAfterTransition","log","plugins","StateMachineHistory","max"],"sources":["state.js"],"sourcesContent":["import StateMachine from 'javascript-state-machine';\nimport StateMachineHistory from 'javascript-state-machine/lib/history';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport Trigger from '../common/events/trigger-proxy';\nimport {MEETING_STATE_MACHINE, EVENT_TRIGGERS} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\n// TODO: ensure that meeting can be destroyed when in an error state\nconst MeetingStateMachine = {\n /**\n * Initializes the StateMachine for the meeting\n * @param {Meeting} meetingRef A reference to a meeting instance\n * @returns {StateMachine}\n */\n create(meetingRef) {\n if (!meetingRef) {\n throw new ParameterError('You must initialize the meeting state machine with a meeting reference.');\n }\n\n return new StateMachine({\n init: MEETING_STATE_MACHINE.STATES.IDLE,\n transitions: [\n // when ringing a meeting, it must be first IDLE, because all other states are invalid, it transitions to the RINGING state\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.RING,\n from: [MEETING_STATE_MACHINE.STATES.IDLE, MEETING_STATE_MACHINE.STATES.ERROR, MEETING_STATE_MACHINE.STATES.JOINED],\n to: MEETING_STATE_MACHINE.STATES.RINGING\n },\n // when joining a meeting, it must be from the RINGING or IDLE state, transitions to JOINED state, 1:1 will go to RINGING,\n // others will go straight to JOINED with this transition\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.JOIN,\n from: [MEETING_STATE_MACHINE.STATES.JOINED, MEETING_STATE_MACHINE.STATES.IDLE, MEETING_STATE_MACHINE.STATES.RINGING, MEETING_STATE_MACHINE.STATES.ERROR],\n to: MEETING_STATE_MACHINE.STATES.JOINED\n },\n // signify that ringing has stopped and somebody else answered, move state to DECLINED, ANSWERED\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.REMOTE,\n from: [MEETING_STATE_MACHINE.STATES.JOINED, MEETING_STATE_MACHINE.STATES.ERROR],\n /**\n * @param {Object} remote\n * @param {Boolean} remote.remoteAnswered\n * @param {Boolean} remote.remoteDeclined\n * @returns {String}\n */\n to(remote) {\n // other user answered the call\n if (remote.remoteAnswered) {\n return MEETING_STATE_MACHINE.STATES.ANSWERED;\n }\n // other user declined the call\n if (remote.remoteDeclined) {\n return MEETING_STATE_MACHINE.STATES.DECLINED;\n }\n\n // default\n return MEETING_STATE_MACHINE.STATES.ERROR;\n }\n },\n // when leaving a meeting it must be from either the RINGING, JOINED, or ERROR states, and transitions it to the ENDED state\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.LEAVE,\n from: [\n MEETING_STATE_MACHINE.STATES.IDLE,\n MEETING_STATE_MACHINE.STATES.RINGING,\n MEETING_STATE_MACHINE.STATES.JOINED,\n MEETING_STATE_MACHINE.STATES.ANSWERED,\n MEETING_STATE_MACHINE.STATES.DECLINED,\n MEETING_STATE_MACHINE.STATES.ERROR\n ],\n to: MEETING_STATE_MACHINE.STATES.ENDED\n },\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.END,\n from: [\n MEETING_STATE_MACHINE.STATES.IDLE,\n MEETING_STATE_MACHINE.STATES.RINGING,\n MEETING_STATE_MACHINE.STATES.JOINED,\n MEETING_STATE_MACHINE.STATES.ANSWERED,\n MEETING_STATE_MACHINE.STATES.DECLINED,\n MEETING_STATE_MACHINE.STATES.ERROR\n ],\n to: MEETING_STATE_MACHINE.STATES.ENDED\n },\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.DECLINE,\n from: [MEETING_STATE_MACHINE.STATES.RINGING, MEETING_STATE_MACHINE.STATES.ERROR],\n to: MEETING_STATE_MACHINE.STATES.ENDED\n },\n // transition from ANY state to ERROR state\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.FAIL,\n from: '*',\n to: MEETING_STATE_MACHINE.STATES.ERROR\n },\n // fail safe, transition from ANY state to IDLE state\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.RESET,\n from: '*',\n to: MEETING_STATE_MACHINE.STATES.IDLE\n }\n ],\n data: {\n /**\n * The meeting instance to execute all state changes on\n */\n meeting: meetingRef\n },\n methods: {\n /**\n * Ring stop transition, to end the ring event for the meeting, and transition the state to ANSWERED OR DECLINED, only for outgoing meetings\n * @param {Object} transition -- FiniteStateMachine automatically passed, not used\n * @param {Object} stop -- {remoteAnswered: {Boolean}, remoteDeclined: {Boolean}}\n * @returns {Boolean}\n */\n onRemote(transition, stop) {\n if (this.meeting) {\n Trigger.trigger(\n this.meeting,\n {\n file: 'meeting/state',\n function: 'onRemote'\n },\n EVENT_TRIGGERS.MEETING_RINGING_STOP,\n {\n id: this.meeting.id,\n type: stop\n }\n );\n }\n },\n /**\n * Ring transition, to cause the ring event for the meeting, and transition the state to RINGING, for both incoming, and outgoing meetings\n * @param {Object} transition -- FiniteStateMachine automatically passed, not used\n * @param {String} type -- incoming call === INCOMING / or other meetings have a ring type of JOIN\n * @returns {Boolean}\n */\n onRing(transition, type) {\n if (this.meeting) {\n Trigger.trigger(\n this.meeting,\n {\n file: 'meeting/state',\n function: 'onRing'\n },\n EVENT_TRIGGERS.MEETING_RINGING,\n {\n type,\n id: this.meeting.id\n }\n );\n }\n },\n /**\n * handle the entry to error state\n * @param {Object} transition\n * @param {Error} error\n * @returns {Boolean}\n */\n onEnterError(transition, error) {\n LoggerProxy.logger.error(`Meeting:state#onEnterError --> state->onEnterError#meeting.id: ${this.meeting.id} | Transition '${transition?.transition}' : ${transition?.from} -> ${transition?.to}, with error ${error}. Last states: ${this.history}`);\n },\n /**\n * After ANY transition occurs, we want to know what state the meeting moved to for debugging\n * @param {Object} transition\n * @returns {Boolean}\n */\n onAfterTransition(transition) {\n LoggerProxy.logger.log(`Meeting:state#onAfterTransition --> state->onAfterTransition#meeting.id: ${this.meeting.id} | Transition '${transition.transition}' : ${transition.from} -> ${transition.to} executed. Last states: ${this.history}`);\n }\n },\n // track the last 25 states entered\n plugins: [new StateMachineHistory({max: 25})]\n });\n }\n};\n\nexport default MeetingStateMachine;\n"],"mappings":";;;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AAEA;AACA,IAAMA,mBAAmB,GAAG;EAC1B;AACF;AACA;AACA;AACA;EACEC,MAN0B,kBAMnBC,UANmB,EAMP;IACjB,IAAI,CAACA,UAAL,EAAiB;MACf,MAAM,IAAIC,kBAAJ,CAAmB,yEAAnB,CAAN;IACD;;IAED,OAAO,IAAIC,+BAAJ,CAAiB;MACtBC,IAAI,EAAEC,gCAAA,CAAsBC,MAAtB,CAA6BC,IADb;MAEtBC,WAAW,EAAE,CACX;MACA;QACEC,IAAI,EAAEJ,gCAAA,CAAsBK,WAAtB,CAAkCC,IAD1C;QAEEC,IAAI,EAAE,CAACP,gCAAA,CAAsBC,MAAtB,CAA6BC,IAA9B,EAAoCF,gCAAA,CAAsBC,MAAtB,CAA6BO,KAAjE,EAAwER,gCAAA,CAAsBC,MAAtB,CAA6BQ,MAArG,CAFR;QAGEC,EAAE,EAAEV,gCAAA,CAAsBC,MAAtB,CAA6BU;MAHnC,CAFW,EAOX;MACA;MACA;QACEP,IAAI,EAAEJ,gCAAA,CAAsBK,WAAtB,CAAkCO,IAD1C;QAEEL,IAAI,EAAE,CAACP,gCAAA,CAAsBC,MAAtB,CAA6BQ,MAA9B,EAAsCT,gCAAA,CAAsBC,MAAtB,CAA6BC,IAAnE,EAAyEF,gCAAA,CAAsBC,MAAtB,CAA6BU,OAAtG,EAA+GX,gCAAA,CAAsBC,MAAtB,CAA6BO,KAA5I,CAFR;QAGEE,EAAE,EAAEV,gCAAA,CAAsBC,MAAtB,CAA6BQ;MAHnC,CATW,EAcX;MACA;QACEL,IAAI,EAAEJ,gCAAA,CAAsBK,WAAtB,CAAkCQ,MAD1C;QAEEN,IAAI,EAAE,CAACP,gCAAA,CAAsBC,MAAtB,CAA6BQ,MAA9B,EAAsCT,gCAAA,CAAsBC,MAAtB,CAA6BO,KAAnE,CAFR;;QAGE;AACV;AACA;AACA;AACA;AACA;QACUE,EATF,cASKI,MATL,EASa;UACT;UACA,IAAIA,MAAM,CAACC,cAAX,EAA2B;YACzB,OAAOf,gCAAA,CAAsBC,MAAtB,CAA6Be,QAApC;UACD,CAJQ,CAKT;;;UACA,IAAIF,MAAM,CAACG,cAAX,EAA2B;YACzB,OAAOjB,gCAAA,CAAsBC,MAAtB,CAA6BiB,QAApC;UACD,CARQ,CAUT;;;UACA,OAAOlB,gCAAA,CAAsBC,MAAtB,CAA6BO,KAApC;QACD;MArBH,CAfW,EAsCX;MACA;QACEJ,IAAI,EAAEJ,gCAAA,CAAsBK,WAAtB,CAAkCc,KAD1C;QAEEZ,IAAI,EAAE,CACJP,gCAAA,CAAsBC,MAAtB,CAA6BC,IADzB,EAEJF,gCAAA,CAAsBC,MAAtB,CAA6BU,OAFzB,EAGJX,gCAAA,CAAsBC,MAAtB,CAA6BQ,MAHzB,EAIJT,gCAAA,CAAsBC,MAAtB,CAA6Be,QAJzB,EAKJhB,gCAAA,CAAsBC,MAAtB,CAA6BiB,QALzB,EAMJlB,gCAAA,CAAsBC,MAAtB,CAA6BO,KANzB,CAFR;QAUEE,EAAE,EAAEV,gCAAA,CAAsBC,MAAtB,CAA6BmB;MAVnC,CAvCW,EAmDX;QACEhB,IAAI,EAAEJ,gCAAA,CAAsBK,WAAtB,CAAkCgB,GAD1C;QAEEd,IAAI,EAAE,CACJP,gCAAA,CAAsBC,MAAtB,CAA6BC,IADzB,EAEJF,gCAAA,CAAsBC,MAAtB,CAA6BU,OAFzB,EAGJX,gCAAA,CAAsBC,MAAtB,CAA6BQ,MAHzB,EAIJT,gCAAA,CAAsBC,MAAtB,CAA6Be,QAJzB,EAKJhB,gCAAA,CAAsBC,MAAtB,CAA6BiB,QALzB,EAMJlB,gCAAA,CAAsBC,MAAtB,CAA6BO,KANzB,CAFR;QAUEE,EAAE,EAAEV,gCAAA,CAAsBC,MAAtB,CAA6BmB;MAVnC,CAnDW,EA+DX;QACEhB,IAAI,EAAEJ,gCAAA,CAAsBK,WAAtB,CAAkCiB,OAD1C;QAEEf,IAAI,EAAE,CAACP,gCAAA,CAAsBC,MAAtB,CAA6BU,OAA9B,EAAuCX,gCAAA,CAAsBC,MAAtB,CAA6BO,KAApE,CAFR;QAGEE,EAAE,EAAEV,gCAAA,CAAsBC,MAAtB,CAA6BmB;MAHnC,CA/DW,EAoEX;MACA;QACEhB,IAAI,EAAEJ,gCAAA,CAAsBK,WAAtB,CAAkCkB,IAD1C;QAEEhB,IAAI,EAAE,GAFR;QAGEG,EAAE,EAAEV,gCAAA,CAAsBC,MAAtB,CAA6BO;MAHnC,CArEW,EA0EX;MACA;QACEJ,IAAI,EAAEJ,gCAAA,CAAsBK,WAAtB,CAAkCmB,KAD1C;QAEEjB,IAAI,EAAE,GAFR;QAGEG,EAAE,EAAEV,gCAAA,CAAsBC,MAAtB,CAA6BC;MAHnC,CA3EW,CAFS;MAmFtBuB,IAAI,EAAE;QACJ;AACR;AACA;QACQC,OAAO,EAAE9B;MAJL,CAnFgB;MAyFtB+B,OAAO,EAAE;QACP;AACR;AACA;AACA;AACA;AACA;QACQC,QAPO,oBAOEC,UAPF,EAOcC,IAPd,EAOoB;UACzB,IAAI,KAAKJ,OAAT,EAAkB;YAChBK,qBAAA,CAAQC,OAAR,CACE,KAAKN,OADP,EAEE;cACEO,IAAI,EAAE,eADR;cAEEC,QAAQ,EAAE;YAFZ,CAFF,EAMEC,yBAAA,CAAeC,oBANjB,EAOE;cACEC,EAAE,EAAE,KAAKX,OAAL,CAAaW,EADnB;cAEEC,IAAI,EAAER;YAFR,CAPF;UAYD;QACF,CAtBM;;QAuBP;AACR;AACA;AACA;AACA;AACA;QACQS,MA7BO,kBA6BAV,UA7BA,EA6BYS,IA7BZ,EA6BkB;UACvB,IAAI,KAAKZ,OAAT,EAAkB;YAChBK,qBAAA,CAAQC,OAAR,CACE,KAAKN,OADP,EAEE;cACEO,IAAI,EAAE,eADR;cAEEC,QAAQ,EAAE;YAFZ,CAFF,EAMEC,yBAAA,CAAeK,eANjB,EAOE;cACEF,IAAI,EAAJA,IADF;cAEED,EAAE,EAAE,KAAKX,OAAL,CAAaW;YAFnB,CAPF;UAYD;QACF,CA5CM;;QA6CP;AACR;AACA;AACA;AACA;AACA;QACQI,YAnDO,wBAmDMZ,UAnDN,EAmDkBa,KAnDlB,EAmDyB;UAC9BC,oBAAA,CAAYC,MAAZ,CAAmBF,KAAnB,0EAA2F,KAAKhB,OAAL,CAAaW,EAAxG,4BAA4HR,UAA5H,aAA4HA,UAA5H,uBAA4HA,UAAU,CAAEA,UAAxI,iBAAyJA,UAAzJ,aAAyJA,UAAzJ,uBAAyJA,UAAU,CAAEtB,IAArK,iBAAgLsB,UAAhL,aAAgLA,UAAhL,uBAAgLA,UAAU,CAAEnB,EAA5L,0BAA8MgC,KAA9M,4BAAqO,KAAKG,OAA1O;QACD,CArDM;;QAsDP;AACR;AACA;AACA;AACA;QACQC,iBA3DO,6BA2DWjB,UA3DX,EA2DuB;UAC5Bc,oBAAA,CAAYC,MAAZ,CAAmBG,GAAnB,oFAAmG,KAAKrB,OAAL,CAAaW,EAAhH,4BAAoIR,UAAU,CAACA,UAA/I,iBAAgKA,UAAU,CAACtB,IAA3K,iBAAsLsB,UAAU,CAACnB,EAAjM,qCAA8N,KAAKmC,OAAnO;QACD;MA7DM,CAzFa;MAwJtB;MACAG,OAAO,EAAE,CAAC,IAAIC,gBAAJ,CAAwB;QAACC,GAAG,EAAE;MAAN,CAAxB,CAAD;IAzJa,CAAjB,CAAP;EA2JD;AAtKyB,CAA5B;eAyKexD,mB"}
1
+ {"version":3,"names":["MeetingStateMachine","create","meetingRef","ParameterError","StateMachine","init","MEETING_STATE_MACHINE","STATES","IDLE","transitions","name","TRANSITIONS","RING","from","ERROR","JOINED","to","RINGING","JOIN","REMOTE","remote","remoteAnswered","ANSWERED","remoteDeclined","DECLINED","LEAVE","ENDED","END","DECLINE","FAIL","RESET","data","meeting","methods","onRemote","transition","stop","Trigger","trigger","file","function","EVENT_TRIGGERS","MEETING_RINGING_STOP","id","type","onRing","MEETING_RINGING","onEnterError","error","LoggerProxy","logger","history","onAfterTransition","log","plugins","StateMachineHistory","max"],"sources":["state.ts"],"sourcesContent":["import StateMachine from 'javascript-state-machine';\nimport StateMachineHistory from 'javascript-state-machine/lib/history';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport Trigger from '../common/events/trigger-proxy';\nimport {MEETING_STATE_MACHINE, EVENT_TRIGGERS} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\n// TODO: ensure that meeting can be destroyed when in an error state\nconst MeetingStateMachine = {\n /**\n * Initializes the StateMachine for the meeting\n * @param {Meeting} meetingRef A reference to a meeting instance\n * @returns {StateMachine}\n */\n create(meetingRef: any) {\n if (!meetingRef) {\n throw new ParameterError(\n 'You must initialize the meeting state machine with a meeting reference.'\n );\n }\n\n return new StateMachine({\n init: MEETING_STATE_MACHINE.STATES.IDLE,\n transitions: [\n // when ringing a meeting, it must be first IDLE, because all other states are invalid, it transitions to the RINGING state\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.RING,\n from: [\n MEETING_STATE_MACHINE.STATES.IDLE,\n MEETING_STATE_MACHINE.STATES.ERROR,\n MEETING_STATE_MACHINE.STATES.JOINED,\n ],\n to: MEETING_STATE_MACHINE.STATES.RINGING,\n },\n // when joining a meeting, it must be from the RINGING or IDLE state, transitions to JOINED state, 1:1 will go to RINGING,\n // others will go straight to JOINED with this transition\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.JOIN,\n from: [\n MEETING_STATE_MACHINE.STATES.JOINED,\n MEETING_STATE_MACHINE.STATES.IDLE,\n MEETING_STATE_MACHINE.STATES.RINGING,\n MEETING_STATE_MACHINE.STATES.ERROR,\n ],\n to: MEETING_STATE_MACHINE.STATES.JOINED,\n },\n // signify that ringing has stopped and somebody else answered, move state to DECLINED, ANSWERED\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.REMOTE,\n from: [MEETING_STATE_MACHINE.STATES.JOINED, MEETING_STATE_MACHINE.STATES.ERROR],\n /**\n * @param {Object} remote\n * @param {Boolean} remote.remoteAnswered\n * @param {Boolean} remote.remoteDeclined\n * @returns {String}\n */\n to(remote: {remoteAnswered: boolean; remoteDeclined: boolean}) {\n // other user answered the call\n if (remote.remoteAnswered) {\n return MEETING_STATE_MACHINE.STATES.ANSWERED;\n }\n // other user declined the call\n if (remote.remoteDeclined) {\n return MEETING_STATE_MACHINE.STATES.DECLINED;\n }\n\n // default\n return MEETING_STATE_MACHINE.STATES.ERROR;\n },\n },\n // when leaving a meeting it must be from either the RINGING, JOINED, or ERROR states, and transitions it to the ENDED state\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.LEAVE,\n from: [\n MEETING_STATE_MACHINE.STATES.IDLE,\n MEETING_STATE_MACHINE.STATES.RINGING,\n MEETING_STATE_MACHINE.STATES.JOINED,\n MEETING_STATE_MACHINE.STATES.ANSWERED,\n MEETING_STATE_MACHINE.STATES.DECLINED,\n MEETING_STATE_MACHINE.STATES.ERROR,\n ],\n to: MEETING_STATE_MACHINE.STATES.ENDED,\n },\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.END,\n from: [\n MEETING_STATE_MACHINE.STATES.IDLE,\n MEETING_STATE_MACHINE.STATES.RINGING,\n MEETING_STATE_MACHINE.STATES.JOINED,\n MEETING_STATE_MACHINE.STATES.ANSWERED,\n MEETING_STATE_MACHINE.STATES.DECLINED,\n MEETING_STATE_MACHINE.STATES.ERROR,\n ],\n to: MEETING_STATE_MACHINE.STATES.ENDED,\n },\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.DECLINE,\n from: [MEETING_STATE_MACHINE.STATES.RINGING, MEETING_STATE_MACHINE.STATES.ERROR],\n to: MEETING_STATE_MACHINE.STATES.ENDED,\n },\n // transition from ANY state to ERROR state\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.FAIL,\n from: '*',\n to: MEETING_STATE_MACHINE.STATES.ERROR,\n },\n // fail safe, transition from ANY state to IDLE state\n {\n name: MEETING_STATE_MACHINE.TRANSITIONS.RESET,\n from: '*',\n to: MEETING_STATE_MACHINE.STATES.IDLE,\n },\n ],\n data: {\n /**\n * The meeting instance to execute all state changes on\n */\n meeting: meetingRef,\n },\n methods: {\n /**\n * Ring stop transition, to end the ring event for the meeting, and transition the state to ANSWERED OR DECLINED, only for outgoing meetings\n * @param {Object} transition -- FiniteStateMachine automatically passed, not used\n * @param {Object} stop -- {remoteAnswered: {Boolean}, remoteDeclined: {Boolean}}\n * @returns {Boolean}\n */\n onRemote(transition: object, stop: object) {\n if (this.meeting) {\n Trigger.trigger(\n this.meeting,\n {\n file: 'meeting/state',\n function: 'onRemote',\n },\n EVENT_TRIGGERS.MEETING_RINGING_STOP,\n {\n id: this.meeting.id,\n type: stop,\n }\n );\n }\n },\n /**\n * Ring transition, to cause the ring event for the meeting, and transition the state to RINGING, for both incoming, and outgoing meetings\n * @param {Object} transition -- FiniteStateMachine automatically passed, not used\n * @param {String} type -- incoming call === INCOMING / or other meetings have a ring type of JOIN\n * @returns {Boolean}\n */\n onRing(transition: object, type: string) {\n if (this.meeting) {\n Trigger.trigger(\n this.meeting,\n {\n file: 'meeting/state',\n function: 'onRing',\n },\n EVENT_TRIGGERS.MEETING_RINGING,\n {\n type,\n id: this.meeting.id,\n }\n );\n }\n },\n /**\n * handle the entry to error state\n * @param {Object} transition\n * @param {Error} error\n * @returns {Boolean}\n */\n onEnterError(transition: any, error: Error) {\n LoggerProxy.logger.error(\n `Meeting:state#onEnterError --> state->onEnterError#meeting.id: ${this.meeting.id} | Transition '${transition?.transition}' : ${transition?.from} -> ${transition?.to}, with error ${error}. Last states: ${this.history}`\n );\n },\n /**\n * After ANY transition occurs, we want to know what state the meeting moved to for debugging\n * @param {Object} transition\n * @returns {Boolean}\n */\n onAfterTransition(transition: any) {\n LoggerProxy.logger.log(\n `Meeting:state#onAfterTransition --> state->onAfterTransition#meeting.id: ${this.meeting.id} | Transition '${transition.transition}' : ${transition.from} -> ${transition.to} executed. Last states: ${this.history}`\n );\n },\n },\n // track the last 25 states entered\n plugins: [new StateMachineHistory({max: 25})],\n });\n },\n};\n\nexport default MeetingStateMachine;\n"],"mappings":"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"}