@webex/plugin-meetings 3.0.0-beta.6 → 3.0.0-beta.60
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.
- package/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/breakouts/breakout.js +137 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.js +23 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/index.js +725 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/breakouts/request.js +78 -0
- package/dist/breakouts/request.js.map +1 -0
- package/dist/breakouts/utils.js +52 -0
- package/dist/breakouts/utils.js.map +1 -0
- package/dist/common/browser-detection.js +1 -20
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +5 -20
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +0 -7
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +10 -24
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +11 -24
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +12 -25
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +10 -24
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +5 -33
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +10 -24
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +9 -23
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js +0 -17
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +10 -24
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +10 -24
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +6 -41
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +5 -25
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +0 -22
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +0 -23
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +0 -12
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +0 -15
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +0 -4
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -8
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +37 -60
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +4 -14
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +6 -6
- package/dist/config.js.map +1 -1
- package/dist/constants.js +135 -51
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +14 -0
- package/dist/controls-options-manager/constants.js.map +1 -0
- package/dist/controls-options-manager/enums.js +16 -0
- package/dist/controls-options-manager/enums.js.map +1 -0
- package/dist/controls-options-manager/index.js +259 -0
- package/dist/controls-options-manager/index.js.map +1 -0
- package/dist/controls-options-manager/util.js +39 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +11 -18
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +17 -30
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -26
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +0 -15
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +4 -12
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +220 -192
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +3 -37
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +12 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +92 -118
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +61 -90
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +56 -146
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +83 -117
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +2 -9
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +505 -495
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +31 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2214 -2243
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +102 -100
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +308 -264
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js +7 -0
- package/dist/meeting/request.type.js.map +1 -0
- package/dist/meeting/state.js +21 -31
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +63 -217
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +6 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +14 -32
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +193 -268
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +3 -15
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +98 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +137 -228
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +5 -20
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +493 -560
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +26 -41
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +116 -155
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +100 -85
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +15 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +90 -68
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +3 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +131 -203
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +35 -39
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +15 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.js +76 -46
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +1 -13
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +1 -6
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +54 -156
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +74 -52
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +48 -65
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +58 -93
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +62 -76
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +6 -40
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +446 -442
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +40 -59
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +21 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +1 -31
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +0 -13
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +192 -191
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +15 -23
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/constants.js +13 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.js +109 -0
- package/dist/reactions/reactions.js.map +1 -0
- package/dist/reactions/reactions.type.js +36 -0
- package/dist/reactions/reactions.type.js.map +1 -0
- package/dist/reconnection-manager/index.js +342 -460
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +17 -0
- package/dist/recording-controller/enums.js.map +1 -0
- package/dist/recording-controller/index.js +343 -0
- package/dist/recording-controller/index.js.map +1 -0
- package/dist/recording-controller/util.js +63 -0
- package/dist/recording-controller/util.js.map +1 -0
- package/dist/roap/index.js +48 -70
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +143 -131
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +91 -98
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +1 -95
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +372 -455
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +143 -87
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +22 -47
- package/dist/transcription/index.js.map +1 -1
- package/dist/types/breakouts/breakout.d.ts +8 -0
- package/dist/types/breakouts/collection.d.ts +5 -0
- package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/types/breakouts/index.d.ts +5 -0
- package/dist/types/breakouts/request.d.ts +22 -0
- package/dist/types/breakouts/utils.d.ts +8 -0
- package/dist/types/common/browser-detection.d.ts +9 -0
- package/dist/types/common/collection.d.ts +48 -0
- package/dist/types/common/config.d.ts +2 -0
- package/dist/types/common/errors/captcha-error.d.ts +15 -0
- package/dist/types/common/errors/intent-to-join.d.ts +16 -0
- package/dist/types/common/errors/join-meeting.d.ts +17 -0
- package/dist/types/common/errors/media.d.ts +15 -0
- package/dist/types/common/errors/parameter.d.ts +15 -0
- package/dist/types/common/errors/password-error.d.ts +15 -0
- package/dist/types/common/errors/permission.d.ts +14 -0
- package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/types/common/errors/reconnection.d.ts +15 -0
- package/dist/types/common/errors/stats.d.ts +15 -0
- package/dist/types/common/errors/webex-errors.d.ts +69 -0
- package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
- package/dist/types/common/events/events-scope.d.ts +17 -0
- package/dist/types/common/events/events.d.ts +12 -0
- package/dist/types/common/events/trigger-proxy.d.ts +2 -0
- package/dist/types/common/events/util.d.ts +2 -0
- package/dist/types/common/logs/logger-config.d.ts +2 -0
- package/dist/types/common/logs/logger-proxy.d.ts +2 -0
- package/dist/types/common/logs/request.d.ts +34 -0
- package/dist/types/common/queue.d.ts +32 -0
- package/dist/types/config.d.ts +77 -0
- package/dist/types/constants.d.ts +939 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +6 -0
- package/dist/types/controls-options-manager/index.d.ts +128 -0
- package/dist/types/controls-options-manager/util.d.ts +9 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/locus-info/controlsUtils.d.ts +2 -0
- package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
- package/dist/types/locus-info/fullState.d.ts +2 -0
- package/dist/types/locus-info/hostUtils.d.ts +2 -0
- package/dist/types/locus-info/index.d.ts +276 -0
- package/dist/types/locus-info/infoUtils.d.ts +2 -0
- package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
- package/dist/types/locus-info/parser.d.ts +212 -0
- package/dist/types/locus-info/selfUtils.d.ts +2 -0
- package/dist/types/media/index.d.ts +32 -0
- package/dist/types/media/properties.d.ts +108 -0
- package/dist/types/media/util.d.ts +2 -0
- package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +101 -0
- package/dist/types/meeting/index.d.ts +1719 -0
- package/dist/types/meeting/muteState.d.ts +132 -0
- package/dist/types/meeting/request.d.ts +271 -0
- package/dist/types/meeting/request.type.d.ts +11 -0
- package/dist/types/meeting/state.d.ts +9 -0
- package/dist/types/meeting/util.d.ts +2 -0
- package/dist/types/meeting-info/collection.d.ts +20 -0
- package/dist/types/meeting-info/index.d.ts +57 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +93 -0
- package/dist/types/meeting-info/request.d.ts +22 -0
- package/dist/types/meeting-info/util.d.ts +2 -0
- package/dist/types/meeting-info/utilv2.d.ts +2 -0
- package/dist/types/meetings/collection.d.ts +23 -0
- package/dist/types/meetings/index.d.ts +297 -0
- package/dist/types/meetings/request.d.ts +27 -0
- package/dist/types/meetings/util.d.ts +18 -0
- package/dist/types/member/index.d.ts +156 -0
- package/dist/types/member/types.d.ts +21 -0
- package/dist/types/member/util.d.ts +2 -0
- package/dist/types/members/collection.d.ts +24 -0
- package/dist/types/members/index.d.ts +335 -0
- package/dist/types/members/request.d.ts +58 -0
- package/dist/types/members/types.d.ts +24 -0
- package/dist/types/members/util.d.ts +2 -0
- package/dist/types/metrics/config.d.ts +169 -0
- package/dist/types/metrics/constants.d.ts +53 -0
- package/dist/types/metrics/index.d.ts +152 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +51 -0
- package/dist/types/multistream/receiveSlot.d.ts +64 -0
- package/dist/types/multistream/receiveSlotManager.d.ts +49 -0
- package/dist/types/multistream/remoteMedia.d.ts +100 -0
- package/dist/types/multistream/remoteMediaGroup.d.ts +56 -0
- package/dist/types/multistream/remoteMediaManager.d.ts +259 -0
- package/dist/types/networkQualityMonitor/index.d.ts +70 -0
- package/dist/types/personal-meeting-room/index.d.ts +47 -0
- package/dist/types/personal-meeting-room/request.d.ts +14 -0
- package/dist/types/personal-meeting-room/util.d.ts +2 -0
- package/dist/types/reachability/index.d.ts +152 -0
- package/dist/types/reachability/request.d.ts +37 -0
- package/dist/types/reactions/constants.d.ts +3 -0
- package/dist/types/reactions/reactions.d.ts +4 -0
- package/dist/types/reactions/reactions.type.d.ts +52 -0
- package/dist/types/reconnection-manager/index.d.ts +126 -0
- package/dist/types/recording-controller/enums.d.ts +7 -0
- package/dist/types/recording-controller/index.d.ts +193 -0
- package/dist/types/recording-controller/util.d.ts +13 -0
- package/dist/types/roap/index.d.ts +77 -0
- package/dist/types/roap/request.d.ts +38 -0
- package/dist/types/roap/turnDiscovery.d.ts +74 -0
- package/dist/types/statsAnalyzer/global.d.ts +36 -0
- package/dist/types/statsAnalyzer/index.d.ts +195 -0
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
- package/dist/types/transcription/index.d.ts +64 -0
- package/internal-README.md +7 -6
- package/package.json +27 -21
- package/src/breakouts/README.md +208 -0
- package/src/breakouts/breakout.ts +129 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/index.ts +659 -0
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +39 -0
- package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
- package/src/common/collection.ts +9 -7
- package/src/common/{config.js → config.ts} +1 -1
- package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
- package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
- package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
- package/src/common/errors/{media.js → media.ts} +11 -7
- package/src/common/errors/parameter.ts +11 -7
- package/src/common/errors/{password-error.js → password-error.ts} +11 -7
- package/src/common/errors/{permission.js → permission.ts} +10 -6
- package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
- package/src/common/errors/{stats.js → stats.ts} +11 -7
- package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
- package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
- package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
- package/src/common/events/{events.js → events.ts} +5 -1
- package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
- package/src/common/events/{util.js → util.ts} +2 -3
- package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
- package/src/common/logs/logger-proxy.ts +44 -0
- package/src/common/logs/{request.js → request.ts} +22 -9
- package/src/common/queue.ts +1 -2
- package/src/{config.js → config.ts} +17 -12
- package/src/constants.ts +87 -5
- package/src/controls-options-manager/constants.ts +5 -0
- package/src/controls-options-manager/enums.ts +7 -0
- package/src/controls-options-manager/index.ts +234 -0
- package/src/controls-options-manager/util.ts +30 -0
- package/src/index.js +4 -1
- package/src/locus-info/controlsUtils.ts +122 -0
- package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
- package/src/locus-info/{fullState.js → fullState.ts} +16 -12
- package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
- package/src/locus-info/{index.js → index.ts} +192 -67
- package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
- package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
- package/src/locus-info/{parser.js → parser.ts} +67 -79
- package/src/locus-info/{selfUtils.js → selfUtils.ts} +157 -68
- package/src/media/{index.js → index.ts} +179 -176
- package/src/media/{properties.js → properties.ts} +60 -37
- package/src/media/{util.js → util.ts} +2 -2
- package/src/mediaQualityMetrics/config.ts +384 -0
- package/src/meeting/in-meeting-actions.ts +67 -3
- package/src/meeting/{index.js → index.ts} +2581 -1588
- package/src/meeting/{muteState.js → muteState.ts} +138 -73
- package/src/meeting/{request.js → request.ts} +326 -142
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/{state.js → state.ts} +50 -35
- package/src/meeting/{util.js → util.ts} +131 -115
- package/src/meeting-info/{collection.js → collection.ts} +6 -2
- package/src/meeting-info/{index.js → index.ts} +42 -36
- package/src/meeting-info/meeting-info-v2.ts +273 -0
- package/src/meeting-info/{request.js → request.ts} +14 -4
- package/src/meeting-info/{util.js → util.ts} +60 -51
- package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
- package/src/meetings/{collection.js → collection.ts} +6 -3
- package/src/meetings/index.ts +1167 -0
- package/src/meetings/{request.js → request.ts} +34 -25
- package/src/meetings/{util.js → util.ts} +58 -32
- package/src/member/{index.js → index.ts} +124 -56
- package/src/member/types.ts +24 -0
- package/src/member/{util.js → util.ts} +105 -25
- package/src/members/{collection.js → collection.ts} +2 -2
- package/src/members/{index.js → index.ts} +258 -144
- package/src/members/{request.js → request.ts} +80 -16
- package/src/members/types.ts +28 -0
- package/src/members/{util.js → util.ts} +108 -55
- package/src/metrics/{config.js → config.ts} +253 -92
- package/src/metrics/{constants.js → constants.ts} +0 -6
- package/src/metrics/{index.js → index.ts} +105 -94
- package/src/multistream/mediaRequestManager.ts +101 -39
- package/src/multistream/receiveSlot.ts +62 -26
- package/src/multistream/receiveSlotManager.ts +50 -38
- package/src/multistream/remoteMedia.ts +40 -5
- package/src/multistream/remoteMediaGroup.ts +4 -3
- package/src/multistream/remoteMediaManager.ts +209 -62
- package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
- package/src/personal-meeting-room/{index.js → index.ts} +28 -19
- package/src/personal-meeting-room/{request.js → request.ts} +13 -4
- package/src/personal-meeting-room/{util.js → util.ts} +4 -4
- package/src/reachability/{index.js → index.ts} +157 -94
- package/src/reachability/request.ts +46 -35
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +104 -0
- package/src/reactions/reactions.type.ts +62 -0
- package/src/reconnection-manager/{index.js → index.ts} +228 -120
- package/src/recording-controller/enums.ts +8 -0
- package/src/recording-controller/index.ts +315 -0
- package/src/recording-controller/util.ts +58 -0
- package/src/roap/{index.js → index.ts} +77 -60
- package/src/roap/request.ts +172 -0
- package/src/roap/turnDiscovery.ts +81 -41
- package/src/statsAnalyzer/global.ts +37 -0
- package/src/statsAnalyzer/index.ts +1242 -0
- package/src/statsAnalyzer/mqaUtil.ts +291 -0
- package/src/transcription/{index.js → index.ts} +46 -39
- package/test/integration/spec/converged-space-meetings.js +176 -0
- package/test/integration/spec/journey.js +665 -464
- package/test/integration/spec/space-meeting.js +320 -206
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/breakouts/breakout.ts +146 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/index.ts +944 -0
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +47 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/controls-options-manager/index.js +180 -0
- package/test/unit/spec/controls-options-manager/util.js +86 -0
- package/test/unit/spec/fixture/locus.js +92 -90
- package/test/unit/spec/locus-info/controlsUtils.js +112 -34
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +219 -2
- package/test/unit/spec/locus-info/infoUtils.js +41 -32
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +101 -103
- package/test/unit/spec/locus-info/selfUtils.js +128 -12
- package/test/unit/spec/media/index.ts +72 -8
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/in-meeting-actions.ts +29 -2
- package/test/unit/spec/meeting/index.js +2490 -802
- package/test/unit/spec/meeting/muteState.js +146 -61
- package/test/unit/spec/meeting/request.js +141 -43
- package/test/unit/spec/meeting/utils.js +135 -164
- package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
- package/test/unit/spec/meeting-info/request.js +7 -9
- package/test/unit/spec/meeting-info/util.js +11 -12
- package/test/unit/spec/meeting-info/utilv2.js +110 -74
- package/test/unit/spec/meetings/collection.js +1 -1
- package/test/unit/spec/meetings/index.js +439 -257
- package/test/unit/spec/meetings/utils.js +14 -12
- package/test/unit/spec/member/index.js +24 -1
- package/test/unit/spec/member/util.js +359 -32
- package/test/unit/spec/members/index.js +256 -54
- package/test/unit/spec/members/request.js +50 -20
- package/test/unit/spec/members/utils.js +147 -4
- package/test/unit/spec/metrics/index.js +16 -21
- package/test/unit/spec/multistream/mediaRequestManager.ts +318 -64
- package/test/unit/spec/multistream/receiveSlot.ts +68 -17
- package/test/unit/spec/multistream/receiveSlotManager.ts +60 -38
- package/test/unit/spec/multistream/remoteMedia.ts +40 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +539 -65
- package/test/unit/spec/networkQualityMonitor/index.js +24 -18
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +176 -27
- package/test/unit/spec/reachability/request.js +66 -0
- package/test/unit/spec/reconnection-manager/index.js +58 -30
- package/test/unit/spec/recording-controller/index.js +231 -0
- package/test/unit/spec/recording-controller/util.js +102 -0
- package/test/unit/spec/roap/index.ts +12 -8
- package/test/unit/spec/roap/request.ts +217 -0
- package/test/unit/spec/roap/turnDiscovery.ts +72 -49
- package/test/unit/spec/stats-analyzer/index.js +108 -57
- package/test/utils/cmr.js +44 -42
- package/test/utils/constants.js +9 -0
- package/test/utils/testUtils.js +98 -77
- package/test/utils/webex-config.js +22 -18
- package/test/utils/webex-test-users.js +57 -50
- package/tsconfig.json +6 -0
- package/dist/media/internal-media-core-wrapper.js +0 -22
- package/dist/media/internal-media-core-wrapper.js.map +0 -1
- package/dist/meeting/effectsState.js +0 -327
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/multistream/multistreamMedia.js +0 -116
- package/dist/multistream/multistreamMedia.js.map +0 -1
- package/dist/peer-connection-manager/util.js +0 -124
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/src/common/logs/logger-proxy.js +0 -33
- package/src/locus-info/controlsUtils.js +0 -102
- package/src/media/internal-media-core-wrapper.ts +0 -9
- package/src/mediaQualityMetrics/config.js +0 -382
- package/src/meeting/effectsState.js +0 -205
- package/src/meeting-info/meeting-info-v2.js +0 -255
- package/src/meetings/index.js +0 -1015
- package/src/multistream/multistreamMedia.ts +0 -92
- package/src/peer-connection-manager/util.ts +0 -117
- package/src/roap/request.js +0 -127
- package/src/statsAnalyzer/global.js +0 -133
- package/src/statsAnalyzer/index.js +0 -1006
- package/src/statsAnalyzer/mqaUtil.js +0 -173
- package/test/unit/spec/meeting/effectsState.js +0 -291
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
- /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
3
|
*/
|
|
4
4
|
import {isEmpty} from 'lodash';
|
|
5
|
+
// @ts-ignore
|
|
5
6
|
import {StatelessWebexPlugin} from '@webex/webex-core';
|
|
6
7
|
|
|
7
8
|
import {MEETINGS, EVENT_TRIGGERS, FLOOR_ACTION, CONTENT, WHITEBOARD} from '../constants';
|
|
@@ -13,53 +14,72 @@ import ParameterError from '../common/errors/parameter';
|
|
|
13
14
|
import MembersCollection from './collection';
|
|
14
15
|
import MembersRequest from './request';
|
|
15
16
|
import MembersUtil from './util';
|
|
17
|
+
import {ReceiveSlotManager} from '../multistream/receiveSlotManager';
|
|
18
|
+
import {MediaRequestManager} from '../multistream/mediaRequestManager';
|
|
19
|
+
import {ServerRoleShape} from './types';
|
|
16
20
|
|
|
17
21
|
/**
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
* Members Update Event
|
|
23
|
+
* Emitted when something in the roster list needs to be updated
|
|
24
|
+
* @event members:update
|
|
25
|
+
* @instance
|
|
26
|
+
* @property {Object} delta the changes to the members list
|
|
27
|
+
* @property {Array} delta.updated array only the updates, includes removals, as they will have updated status and member properties
|
|
28
|
+
* @property {Array} delta.added array added members to the meeting
|
|
29
|
+
* @property {Array} full array the full members collection
|
|
30
|
+
* @memberof Members
|
|
31
|
+
*/
|
|
28
32
|
|
|
29
33
|
/**
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
* Members Content Update Event
|
|
35
|
+
* Emitted when who is sharing changes
|
|
36
|
+
* @event members:content:update
|
|
37
|
+
* @instance
|
|
38
|
+
* @property {String} activeContentSharingId
|
|
39
|
+
* @property {String} endedContentSharingId
|
|
40
|
+
* @memberof Members
|
|
41
|
+
*/
|
|
38
42
|
|
|
39
43
|
/**
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
* Members Host Update Event
|
|
45
|
+
* Emitted when who is the host changes
|
|
46
|
+
* @event members:host:update
|
|
47
|
+
* @instance
|
|
48
|
+
* @property {String} activeHostId
|
|
49
|
+
* @property {String} endedHostId
|
|
50
|
+
* @memberof Members
|
|
51
|
+
*/
|
|
48
52
|
|
|
49
53
|
/**
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
* Members Self Update Event
|
|
55
|
+
* Emitted when who is the self changes
|
|
56
|
+
* @event members:self:update
|
|
57
|
+
* @instance
|
|
58
|
+
* @property {String} activeSelfId
|
|
59
|
+
* @property {String} endedSelfId
|
|
60
|
+
* @memberof Members
|
|
61
|
+
*/
|
|
58
62
|
|
|
59
63
|
/**
|
|
60
64
|
* @class Members
|
|
61
65
|
*/
|
|
62
66
|
export default class Members extends StatelessWebexPlugin {
|
|
67
|
+
hostId: any;
|
|
68
|
+
locusUrl: any;
|
|
69
|
+
mediaShareContentId: any;
|
|
70
|
+
mediaShareWhiteboardId: any;
|
|
71
|
+
membersCollection: any;
|
|
72
|
+
membersRequest: any;
|
|
73
|
+
receiveSlotManager: ReceiveSlotManager;
|
|
74
|
+
mediaRequestManagers: {
|
|
75
|
+
audio: MediaRequestManager;
|
|
76
|
+
video: MediaRequestManager;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
recordingId: any;
|
|
80
|
+
selfId: any;
|
|
81
|
+
type: any;
|
|
82
|
+
|
|
63
83
|
namespace = MEETINGS;
|
|
64
84
|
|
|
65
85
|
/**
|
|
@@ -68,7 +88,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
68
88
|
* @param {Object} options
|
|
69
89
|
* @memberof Members
|
|
70
90
|
*/
|
|
71
|
-
constructor(attrs, options) {
|
|
91
|
+
constructor(attrs: any, options: object) {
|
|
72
92
|
super({}, options);
|
|
73
93
|
/**
|
|
74
94
|
* The Members Request object to interact with server
|
|
@@ -76,7 +96,8 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
76
96
|
* @type {MembersRequest}
|
|
77
97
|
* @private
|
|
78
98
|
* @memberof Members
|
|
79
|
-
|
|
99
|
+
*/
|
|
100
|
+
// @ts-ignore
|
|
80
101
|
this.membersRequest = new MembersRequest({}, options);
|
|
81
102
|
/**
|
|
82
103
|
* The Members Collection cache
|
|
@@ -84,7 +105,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
84
105
|
* @type {MembersCollection}
|
|
85
106
|
* @private
|
|
86
107
|
* @memberof Members
|
|
87
|
-
|
|
108
|
+
*/
|
|
88
109
|
this.membersCollection = new MembersCollection();
|
|
89
110
|
/**
|
|
90
111
|
* The current locus url for the active meeting
|
|
@@ -92,7 +113,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
92
113
|
* @type {String}
|
|
93
114
|
* @private
|
|
94
115
|
* @memberof Members
|
|
95
|
-
|
|
116
|
+
*/
|
|
96
117
|
this.locusUrl = attrs.locusUrl || null;
|
|
97
118
|
/**
|
|
98
119
|
* The current hostId for the meeting
|
|
@@ -100,7 +121,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
100
121
|
* @type {String}
|
|
101
122
|
* @private
|
|
102
123
|
* @memberof Members
|
|
103
|
-
|
|
124
|
+
*/
|
|
104
125
|
this.hostId = null;
|
|
105
126
|
/**
|
|
106
127
|
* The current type for the meeting, could be MEETING or CALL
|
|
@@ -108,7 +129,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
108
129
|
* @type {String}
|
|
109
130
|
* @private
|
|
110
131
|
* @memberof Members
|
|
111
|
-
|
|
132
|
+
*/
|
|
112
133
|
this.type = null;
|
|
113
134
|
/**
|
|
114
135
|
* Locus has a self object, sent individually to the client
|
|
@@ -122,7 +143,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
122
143
|
* @type {String}
|
|
123
144
|
* @private
|
|
124
145
|
* @memberof Members
|
|
125
|
-
|
|
146
|
+
*/
|
|
126
147
|
this.selfId = null;
|
|
127
148
|
/**
|
|
128
149
|
* The current mediaShareContentId for the meeting
|
|
@@ -130,7 +151,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
130
151
|
* @type {String}
|
|
131
152
|
* @private
|
|
132
153
|
* @memberof Members
|
|
133
|
-
|
|
154
|
+
*/
|
|
134
155
|
this.mediaShareContentId = null;
|
|
135
156
|
/**
|
|
136
157
|
* The current mediaShareWhiteboardId for the meeting
|
|
@@ -138,7 +159,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
138
159
|
* @type {String}
|
|
139
160
|
* @private
|
|
140
161
|
* @memberof Members
|
|
141
|
-
|
|
162
|
+
*/
|
|
142
163
|
this.mediaShareWhiteboardId = null;
|
|
143
164
|
/**
|
|
144
165
|
* The current recordingId for the meeting, if it exists
|
|
@@ -146,7 +167,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
146
167
|
* @type {String}
|
|
147
168
|
* @private
|
|
148
169
|
* @memberof Members
|
|
149
|
-
|
|
170
|
+
*/
|
|
150
171
|
this.recordingId = null;
|
|
151
172
|
|
|
152
173
|
/**
|
|
@@ -171,7 +192,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
171
192
|
* @private
|
|
172
193
|
* @memberof Members
|
|
173
194
|
*/
|
|
174
|
-
locusSelfUpdate(payload) {
|
|
195
|
+
locusSelfUpdate(payload: {newSelf: any; oldSelf: any}) {
|
|
175
196
|
let newSelfId = null;
|
|
176
197
|
let oldSelfId = null;
|
|
177
198
|
|
|
@@ -202,12 +223,12 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
202
223
|
this,
|
|
203
224
|
{
|
|
204
225
|
file: 'members',
|
|
205
|
-
function: 'locusSelfUpdate'
|
|
226
|
+
function: 'locusSelfUpdate',
|
|
206
227
|
},
|
|
207
228
|
EVENT_TRIGGERS.MEMBERS_SELF_UPDATE,
|
|
208
229
|
{
|
|
209
230
|
activeSelfId: newSelfId,
|
|
210
|
-
endedSelfId: oldSelfId
|
|
231
|
+
endedSelfId: oldSelfId,
|
|
211
232
|
}
|
|
212
233
|
);
|
|
213
234
|
}
|
|
@@ -221,7 +242,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
221
242
|
* @private
|
|
222
243
|
* @memberof Members
|
|
223
244
|
*/
|
|
224
|
-
locusHostUpdate(payload) {
|
|
245
|
+
locusHostUpdate(payload: {newHost: any; oldHost: any}) {
|
|
225
246
|
let newHostId = null;
|
|
226
247
|
let oldHostId = null;
|
|
227
248
|
|
|
@@ -252,12 +273,12 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
252
273
|
this,
|
|
253
274
|
{
|
|
254
275
|
file: 'members',
|
|
255
|
-
function: 'locusHostUpdate'
|
|
276
|
+
function: 'locusHostUpdate',
|
|
256
277
|
},
|
|
257
278
|
EVENT_TRIGGERS.MEMBERS_HOST_UPDATE,
|
|
258
279
|
{
|
|
259
280
|
activeHostId: newHostId,
|
|
260
|
-
endedHostId: oldHostId
|
|
281
|
+
endedHostId: oldHostId,
|
|
261
282
|
}
|
|
262
283
|
);
|
|
263
284
|
}
|
|
@@ -271,21 +292,23 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
271
292
|
* @private
|
|
272
293
|
* @memberof Members
|
|
273
294
|
*/
|
|
274
|
-
locusParticipantsUpdate(payload) {
|
|
295
|
+
locusParticipantsUpdate(payload: {participants: object}) {
|
|
275
296
|
if (payload) {
|
|
276
297
|
const delta = this.handleLocusInfoUpdatedParticipants(payload);
|
|
277
298
|
const full = this.handleMembersUpdate(delta); // SDK should propagate the full list for both delta and non delta updates
|
|
278
299
|
|
|
300
|
+
this.receiveSlotManager?.updateMemberIds();
|
|
301
|
+
|
|
279
302
|
Trigger.trigger(
|
|
280
303
|
this,
|
|
281
304
|
{
|
|
282
305
|
file: 'members',
|
|
283
|
-
function: 'locusParticipantsUpdate'
|
|
306
|
+
function: 'locusParticipantsUpdate',
|
|
284
307
|
},
|
|
285
308
|
EVENT_TRIGGERS.MEMBERS_UPDATE,
|
|
286
309
|
{
|
|
287
310
|
delta,
|
|
288
|
-
full
|
|
311
|
+
full,
|
|
289
312
|
}
|
|
290
313
|
);
|
|
291
314
|
}
|
|
@@ -300,7 +323,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
300
323
|
* @private
|
|
301
324
|
* @memberof Members
|
|
302
325
|
*/
|
|
303
|
-
locusMediaSharesUpdate(payload) {
|
|
326
|
+
locusMediaSharesUpdate(payload: {current: any; previous: any}) {
|
|
304
327
|
const currentContent = payload.current?.content;
|
|
305
328
|
const previousContent = payload.previous?.content;
|
|
306
329
|
const currentWhiteboard = payload.current?.whiteboard;
|
|
@@ -319,8 +342,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
319
342
|
if (currentContent.disposition === FLOOR_ACTION.RELEASED) {
|
|
320
343
|
whoStopped = currentContent.beneficiaryId;
|
|
321
344
|
this.mediaShareContentId = null;
|
|
322
|
-
}
|
|
323
|
-
|
|
345
|
+
} else if (
|
|
346
|
+
currentContent.disposition === FLOOR_ACTION.GRANTED &&
|
|
347
|
+
currentContent.beneficiaryId !== previousContent.beneficiaryId
|
|
348
|
+
) {
|
|
324
349
|
whoStopped = previousContent.beneficiaryId;
|
|
325
350
|
}
|
|
326
351
|
}
|
|
@@ -337,8 +362,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
337
362
|
if (currentWhiteboard.disposition === FLOOR_ACTION.RELEASED) {
|
|
338
363
|
whoStopped = currentWhiteboard.beneficiaryId;
|
|
339
364
|
this.mediaShareWhiteboardId = null;
|
|
340
|
-
}
|
|
341
|
-
|
|
365
|
+
} else if (
|
|
366
|
+
currentWhiteboard.disposition === FLOOR_ACTION.GRANTED &&
|
|
367
|
+
currentWhiteboard.beneficiaryId !== previousWhiteboard.beneficiaryId
|
|
368
|
+
) {
|
|
342
369
|
whoStopped = previousWhiteboard.beneficiaryId;
|
|
343
370
|
}
|
|
344
371
|
}
|
|
@@ -363,17 +390,16 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
363
390
|
this,
|
|
364
391
|
{
|
|
365
392
|
file: 'members',
|
|
366
|
-
function: 'locusMediaSharesUpdate'
|
|
393
|
+
function: 'locusMediaSharesUpdate',
|
|
367
394
|
},
|
|
368
395
|
EVENT_TRIGGERS.MEMBERS_CONTENT_UPDATE,
|
|
369
396
|
{
|
|
370
397
|
activeSharingId: whoSharing,
|
|
371
|
-
endedSharingId: whoStopped
|
|
398
|
+
endedSharingId: whoStopped,
|
|
372
399
|
}
|
|
373
400
|
);
|
|
374
401
|
}
|
|
375
402
|
|
|
376
|
-
|
|
377
403
|
/**
|
|
378
404
|
* Internal update the locus url value
|
|
379
405
|
* @param {Object} payload
|
|
@@ -382,7 +408,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
382
408
|
* @private
|
|
383
409
|
* @memberof Members
|
|
384
410
|
*/
|
|
385
|
-
locusUrlUpdate(payload) {
|
|
411
|
+
locusUrlUpdate(payload: any) {
|
|
386
412
|
if (payload) {
|
|
387
413
|
this.setLocusUrl(null, payload);
|
|
388
414
|
}
|
|
@@ -396,7 +422,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
396
422
|
* @private
|
|
397
423
|
* @memberof Members
|
|
398
424
|
*/
|
|
399
|
-
locusFullStateTypeUpdate(payload) {
|
|
425
|
+
locusFullStateTypeUpdate(payload: {type: string}) {
|
|
400
426
|
// TODO: at some point there could be a timing issue here, for updating each member
|
|
401
427
|
// ie., if the type changes AND there is no locus update, then each member will not know the type of call
|
|
402
428
|
// which means they cannot determine isMutable && isRemovable
|
|
@@ -415,7 +441,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
415
441
|
* @private
|
|
416
442
|
* @memberof Members
|
|
417
443
|
*/
|
|
418
|
-
handleMembersUpdate(membersUpdate) {
|
|
444
|
+
private handleMembersUpdate(membersUpdate: any) {
|
|
419
445
|
if (membersUpdate) {
|
|
420
446
|
if (membersUpdate.updated) {
|
|
421
447
|
this.constructMembers(membersUpdate.updated);
|
|
@@ -435,7 +461,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
435
461
|
* @private
|
|
436
462
|
* @memberof Members
|
|
437
463
|
*/
|
|
438
|
-
constructMembers(list) {
|
|
464
|
+
private constructMembers(list: Array<any>) {
|
|
439
465
|
list.forEach((member) => {
|
|
440
466
|
this.membersCollection.set(member.id, member);
|
|
441
467
|
});
|
|
@@ -448,12 +474,14 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
448
474
|
* @private
|
|
449
475
|
* @memberof Members
|
|
450
476
|
*/
|
|
451
|
-
handleLocusInfoUpdatedParticipants(payload) {
|
|
477
|
+
private handleLocusInfoUpdatedParticipants(payload: any) {
|
|
452
478
|
this.hostId = payload.hostId || this.hostId;
|
|
453
479
|
this.selfId = payload.selfId || this.selfId;
|
|
454
480
|
this.recordingId = payload.recordingId;
|
|
455
481
|
if (!payload.participants) {
|
|
456
|
-
LoggerProxy.logger.warn(
|
|
482
|
+
LoggerProxy.logger.warn(
|
|
483
|
+
'Members:index#handleLocusInfoUpdatedParticipants --> participants payload is missing.'
|
|
484
|
+
);
|
|
457
485
|
}
|
|
458
486
|
const memberUpdate = this.update(payload.participants);
|
|
459
487
|
|
|
@@ -469,15 +497,15 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
469
497
|
* @public
|
|
470
498
|
* @memberof Members
|
|
471
499
|
*/
|
|
472
|
-
setLocusUrl(locus, locusUrl = null) {
|
|
500
|
+
public setLocusUrl(locus: any, locusUrl: string = null) {
|
|
473
501
|
if (locusUrl) {
|
|
474
502
|
this.locusUrl = locusUrl;
|
|
475
|
-
}
|
|
476
|
-
else if (locus && (locus.locusUrl || locus.url)) {
|
|
503
|
+
} else if (locus && (locus.locusUrl || locus.url)) {
|
|
477
504
|
this.locusUrl = locus.locusUrl || locus.url;
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
|
|
505
|
+
} else {
|
|
506
|
+
throw new ParameterError(
|
|
507
|
+
'Setting locusUrl for the Members module should be done with a locus object or locusUrl'
|
|
508
|
+
);
|
|
481
509
|
}
|
|
482
510
|
}
|
|
483
511
|
|
|
@@ -490,15 +518,15 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
490
518
|
* @public
|
|
491
519
|
* @memberof Members
|
|
492
520
|
*/
|
|
493
|
-
setHostId(locus, hostId = null) {
|
|
521
|
+
public setHostId(locus: any, hostId: string = null) {
|
|
494
522
|
if (hostId) {
|
|
495
523
|
this.hostId = hostId;
|
|
496
|
-
}
|
|
497
|
-
else if (locus) {
|
|
524
|
+
} else if (locus) {
|
|
498
525
|
this.hostId = locus && locus.owner && locus.owner.info ? locus.owner.info : null;
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
|
|
526
|
+
} else {
|
|
527
|
+
throw new ParameterError(
|
|
528
|
+
'Setting hostid for the Members module should be done with a locus object or hostId'
|
|
529
|
+
);
|
|
502
530
|
}
|
|
503
531
|
}
|
|
504
532
|
|
|
@@ -511,15 +539,15 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
511
539
|
* @public
|
|
512
540
|
* @memberof Members
|
|
513
541
|
*/
|
|
514
|
-
setType(fullState, type = null) {
|
|
542
|
+
public setType(fullState: any, type: string = null) {
|
|
515
543
|
if (type) {
|
|
516
544
|
this.type = type;
|
|
517
|
-
}
|
|
518
|
-
else if (fullState) {
|
|
545
|
+
} else if (fullState) {
|
|
519
546
|
this.type = (fullState && fullState.type) || null;
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
|
|
547
|
+
} else {
|
|
548
|
+
throw new ParameterError(
|
|
549
|
+
'Setting type for the Members module should be done with a fullstate object or type string'
|
|
550
|
+
);
|
|
523
551
|
}
|
|
524
552
|
}
|
|
525
553
|
|
|
@@ -531,15 +559,18 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
531
559
|
* @returns {undefined}
|
|
532
560
|
* @memberof Members
|
|
533
561
|
*/
|
|
534
|
-
setSelfId(locus, selfId = null) {
|
|
562
|
+
setSelfId(locus: any, selfId: string = null) {
|
|
535
563
|
if (selfId) {
|
|
536
564
|
this.selfId = selfId;
|
|
537
|
-
}
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
565
|
+
} else if (locus) {
|
|
566
|
+
this.selfId =
|
|
567
|
+
locus && locus.self && locus.self.person && locus.self.person.id
|
|
568
|
+
? locus.self.person.id
|
|
569
|
+
: null;
|
|
570
|
+
} else {
|
|
571
|
+
throw new ParameterError(
|
|
572
|
+
'Setting selfid for the Members module should be done with a locus object or selfId'
|
|
573
|
+
);
|
|
543
574
|
}
|
|
544
575
|
}
|
|
545
576
|
|
|
@@ -551,11 +582,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
551
582
|
* @returns {undefined}
|
|
552
583
|
* @memberof Members
|
|
553
584
|
*/
|
|
554
|
-
setMediaShareContentId(locus, contentId) {
|
|
585
|
+
setMediaShareContentId(locus: any, contentId?: string) {
|
|
555
586
|
if (contentId) {
|
|
556
587
|
this.mediaShareContentId = contentId;
|
|
557
|
-
}
|
|
558
|
-
else if (locus) {
|
|
588
|
+
} else if (locus) {
|
|
559
589
|
const contentMediaShare =
|
|
560
590
|
locus.mediaShares &&
|
|
561
591
|
locus.mediaShares.length &&
|
|
@@ -567,9 +597,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
567
597
|
contentMediaShare.floor.beneficiary &&
|
|
568
598
|
contentMediaShare.floor.beneficiary.id) ||
|
|
569
599
|
null;
|
|
570
|
-
}
|
|
571
|
-
|
|
572
|
-
|
|
600
|
+
} else {
|
|
601
|
+
throw new ParameterError(
|
|
602
|
+
'Setting hostid for the Members module should be done with a locus object or hostId'
|
|
603
|
+
);
|
|
573
604
|
}
|
|
574
605
|
}
|
|
575
606
|
|
|
@@ -581,11 +612,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
581
612
|
* @returns {undefined}
|
|
582
613
|
* @memberof Members
|
|
583
614
|
*/
|
|
584
|
-
setMediaShareWhiteboardId(locus, whiteboardId) {
|
|
615
|
+
setMediaShareWhiteboardId(locus: any, whiteboardId?: string) {
|
|
585
616
|
if (whiteboardId) {
|
|
586
617
|
this.mediaShareWhiteboardId = whiteboardId;
|
|
587
|
-
}
|
|
588
|
-
else if (locus) {
|
|
618
|
+
} else if (locus) {
|
|
589
619
|
const whiteboardMediaShare =
|
|
590
620
|
locus.mediaShares &&
|
|
591
621
|
locus.mediaShares.length &&
|
|
@@ -597,9 +627,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
597
627
|
whiteboardMediaShare.floor.beneficiary &&
|
|
598
628
|
whiteboardMediaShare.floor.beneficiary.id) ||
|
|
599
629
|
null;
|
|
600
|
-
}
|
|
601
|
-
|
|
602
|
-
|
|
630
|
+
} else {
|
|
631
|
+
throw new ParameterError(
|
|
632
|
+
'Setting hostid for the Members module should be done with a locus object or hostId'
|
|
633
|
+
);
|
|
603
634
|
}
|
|
604
635
|
}
|
|
605
636
|
|
|
@@ -612,7 +643,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
612
643
|
* @private
|
|
613
644
|
* @memberof Members
|
|
614
645
|
*/
|
|
615
|
-
update(participants) {
|
|
646
|
+
private update(participants: Array<any>) {
|
|
616
647
|
const membersUpdate = {added: [], updated: []};
|
|
617
648
|
|
|
618
649
|
if (participants) {
|
|
@@ -632,11 +663,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
632
663
|
hostId: this.hostId,
|
|
633
664
|
contentSharingId: this.mediaShareContentId,
|
|
634
665
|
whiteboardSharingId: this.mediaShareWhiteboardId,
|
|
635
|
-
type: this.type
|
|
666
|
+
type: this.type,
|
|
636
667
|
})
|
|
637
668
|
);
|
|
638
|
-
}
|
|
639
|
-
else {
|
|
669
|
+
} else {
|
|
640
670
|
membersUpdate.added.push(
|
|
641
671
|
new Member(participant, {
|
|
642
672
|
recordingId: this.recordingId,
|
|
@@ -644,7 +674,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
644
674
|
hostId: this.hostId,
|
|
645
675
|
contentSharingId: this.mediaShareContentId,
|
|
646
676
|
whiteboardSharingId: this.mediaShareWhiteboardId,
|
|
647
|
-
type: this.type
|
|
677
|
+
type: this.type,
|
|
648
678
|
})
|
|
649
679
|
);
|
|
650
680
|
}
|
|
@@ -661,13 +691,17 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
661
691
|
* @returns {Promise}
|
|
662
692
|
* @memberof Members
|
|
663
693
|
*/
|
|
664
|
-
addMember(invitee, alertIfActive) {
|
|
694
|
+
addMember(invitee: any, alertIfActive?: boolean) {
|
|
665
695
|
if (!this.locusUrl) {
|
|
666
|
-
return Promise.reject(
|
|
696
|
+
return Promise.reject(
|
|
697
|
+
new ParameterError('The associated locus url for this meeting object must be defined.')
|
|
698
|
+
);
|
|
667
699
|
}
|
|
668
700
|
if (MembersUtil.isInvalidInvitee(invitee)) {
|
|
669
701
|
return Promise.reject(
|
|
670
|
-
new ParameterError(
|
|
702
|
+
new ParameterError(
|
|
703
|
+
'The invitee must be defined with either a valid email, emailAddress or phoneNumber property.'
|
|
704
|
+
)
|
|
671
705
|
);
|
|
672
706
|
}
|
|
673
707
|
const options = MembersUtil.generateAddMemberOptions(invitee, this.locusUrl, alertIfActive);
|
|
@@ -681,9 +715,11 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
681
715
|
* @returns {Promise}
|
|
682
716
|
* @memberof Members
|
|
683
717
|
*/
|
|
684
|
-
cancelPhoneInvite(invitee) {
|
|
718
|
+
cancelPhoneInvite(invitee: any) {
|
|
685
719
|
if (!this.locusUrl) {
|
|
686
|
-
return Promise.reject(
|
|
720
|
+
return Promise.reject(
|
|
721
|
+
new ParameterError('The associated locus url for this meeting object must be defined.')
|
|
722
|
+
);
|
|
687
723
|
}
|
|
688
724
|
if (MembersUtil.isInvalidInvitee(invitee)) {
|
|
689
725
|
return Promise.reject(
|
|
@@ -692,22 +728,28 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
692
728
|
}
|
|
693
729
|
const options = MembersUtil.cancelPhoneInviteOptions(invitee, this.locusUrl);
|
|
694
730
|
|
|
695
|
-
|
|
696
731
|
return this.membersRequest.cancelPhoneInvite(options);
|
|
697
732
|
}
|
|
698
733
|
|
|
699
734
|
/**
|
|
700
735
|
* Admits waiting members (invited guests to meeting)
|
|
701
736
|
* @param {Array} memberIds
|
|
737
|
+
* @param {Object} sessionLocusUrls: {authorizingLocusUrl, mainLocusUrl}
|
|
702
738
|
* @returns {Promise}
|
|
703
739
|
* @public
|
|
704
740
|
* @memberof Members
|
|
705
741
|
*/
|
|
706
|
-
admitMembers(
|
|
742
|
+
public admitMembers(
|
|
743
|
+
memberIds: Array<any>,
|
|
744
|
+
sessionLocusUrls?: {authorizingLocusUrl: string; mainLocusUrl: string}
|
|
745
|
+
) {
|
|
707
746
|
if (isEmpty(memberIds)) {
|
|
708
747
|
return Promise.reject(new ParameterError('No member ids provided to admit.'));
|
|
709
748
|
}
|
|
710
|
-
const options =
|
|
749
|
+
const options = {
|
|
750
|
+
sessionLocusUrls,
|
|
751
|
+
...MembersUtil.generateAdmitMemberOptions(memberIds, this.locusUrl),
|
|
752
|
+
};
|
|
711
753
|
|
|
712
754
|
return this.membersRequest.admitMember(options);
|
|
713
755
|
}
|
|
@@ -719,12 +761,16 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
719
761
|
* @public
|
|
720
762
|
* @memberof Members
|
|
721
763
|
*/
|
|
722
|
-
removeMember(memberId) {
|
|
764
|
+
public removeMember(memberId: string) {
|
|
723
765
|
if (!this.locusUrl) {
|
|
724
|
-
return Promise.reject(
|
|
766
|
+
return Promise.reject(
|
|
767
|
+
new ParameterError('The associated locus url for this meeting object must be defined.')
|
|
768
|
+
);
|
|
725
769
|
}
|
|
726
770
|
if (!memberId) {
|
|
727
|
-
return Promise.reject(
|
|
771
|
+
return Promise.reject(
|
|
772
|
+
new ParameterError('The member id must be defined to remove the member.')
|
|
773
|
+
);
|
|
728
774
|
}
|
|
729
775
|
const options = MembersUtil.generateRemoveMemberOptions(memberId, this.locusUrl);
|
|
730
776
|
|
|
@@ -735,22 +781,55 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
735
781
|
* Audio mutes another member in a meeting
|
|
736
782
|
* @param {String} memberId
|
|
737
783
|
* @param {boolean} [mute] default true
|
|
784
|
+
* @param {boolean} [isAudio] default true
|
|
738
785
|
* @returns {Promise}
|
|
739
786
|
* @public
|
|
740
787
|
* @memberof Members
|
|
741
788
|
*/
|
|
742
|
-
muteMember(memberId, mute = true) {
|
|
789
|
+
public muteMember(memberId: string, mute = true, isAudio = true) {
|
|
743
790
|
if (!this.locusUrl) {
|
|
744
|
-
return Promise.reject(
|
|
791
|
+
return Promise.reject(
|
|
792
|
+
new ParameterError(
|
|
793
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
794
|
+
)
|
|
795
|
+
);
|
|
745
796
|
}
|
|
746
797
|
if (!memberId) {
|
|
747
|
-
return Promise.reject(
|
|
798
|
+
return Promise.reject(
|
|
799
|
+
new ParameterError('The member id must be defined to mute the member.')
|
|
800
|
+
);
|
|
748
801
|
}
|
|
749
|
-
const options = MembersUtil.generateMuteMemberOptions(memberId, mute, this.locusUrl);
|
|
802
|
+
const options = MembersUtil.generateMuteMemberOptions(memberId, mute, this.locusUrl, isAudio);
|
|
750
803
|
|
|
751
804
|
return this.membersRequest.muteMember(options);
|
|
752
805
|
}
|
|
753
806
|
|
|
807
|
+
/**
|
|
808
|
+
* Assign role(s) to a member in the meeting
|
|
809
|
+
* @param {String} memberId
|
|
810
|
+
* @param {[ServerRoleShape]} roles - to assign an array of roles
|
|
811
|
+
* @returns {Promise}
|
|
812
|
+
* @public
|
|
813
|
+
* @memberof Members
|
|
814
|
+
*/
|
|
815
|
+
public assignRoles(memberId: string, roles: Array<ServerRoleShape>) {
|
|
816
|
+
if (!this.locusUrl) {
|
|
817
|
+
return Promise.reject(
|
|
818
|
+
new ParameterError(
|
|
819
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
820
|
+
)
|
|
821
|
+
);
|
|
822
|
+
}
|
|
823
|
+
if (!memberId) {
|
|
824
|
+
return Promise.reject(
|
|
825
|
+
new ParameterError('The member id must be defined to assign the roles to a member.')
|
|
826
|
+
);
|
|
827
|
+
}
|
|
828
|
+
const options = MembersUtil.generateRoleAssignmentMemberOptions(memberId, roles, this.locusUrl);
|
|
829
|
+
|
|
830
|
+
return this.membersRequest.assignRolesMember(options);
|
|
831
|
+
}
|
|
832
|
+
|
|
754
833
|
/**
|
|
755
834
|
* Raise or lower the hand of a member in a meeting
|
|
756
835
|
* @param {String} memberId
|
|
@@ -759,12 +838,18 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
759
838
|
* @public
|
|
760
839
|
* @memberof Members
|
|
761
840
|
*/
|
|
762
|
-
raiseOrLowerHand(memberId, raise = true) {
|
|
841
|
+
public raiseOrLowerHand(memberId: string, raise = true) {
|
|
763
842
|
if (!this.locusUrl) {
|
|
764
|
-
return Promise.reject(
|
|
843
|
+
return Promise.reject(
|
|
844
|
+
new ParameterError(
|
|
845
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
846
|
+
)
|
|
847
|
+
);
|
|
765
848
|
}
|
|
766
849
|
if (!memberId) {
|
|
767
|
-
return Promise.reject(
|
|
850
|
+
return Promise.reject(
|
|
851
|
+
new ParameterError('The member id must be defined to raise/lower the hand of the member.')
|
|
852
|
+
);
|
|
768
853
|
}
|
|
769
854
|
const options = MembersUtil.generateRaiseHandMemberOptions(memberId, raise, this.locusUrl);
|
|
770
855
|
|
|
@@ -778,19 +863,29 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
778
863
|
* @public
|
|
779
864
|
* @memberof Members
|
|
780
865
|
*/
|
|
781
|
-
lowerAllHands(requestingMemberId) {
|
|
866
|
+
public lowerAllHands(requestingMemberId: string) {
|
|
782
867
|
if (!this.locusUrl) {
|
|
783
|
-
return Promise.reject(
|
|
868
|
+
return Promise.reject(
|
|
869
|
+
new ParameterError(
|
|
870
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
871
|
+
)
|
|
872
|
+
);
|
|
784
873
|
}
|
|
785
874
|
if (!requestingMemberId) {
|
|
786
|
-
return Promise.reject(
|
|
875
|
+
return Promise.reject(
|
|
876
|
+
new ParameterError(
|
|
877
|
+
'The requestingMemberId must be defined to lower all hands in a meeting.'
|
|
878
|
+
)
|
|
879
|
+
);
|
|
787
880
|
}
|
|
788
|
-
const options = MembersUtil.generateLowerAllHandsMemberOptions(
|
|
881
|
+
const options = MembersUtil.generateLowerAllHandsMemberOptions(
|
|
882
|
+
requestingMemberId,
|
|
883
|
+
this.locusUrl
|
|
884
|
+
);
|
|
789
885
|
|
|
790
886
|
return this.membersRequest.lowerAllHandsMember(options);
|
|
791
887
|
}
|
|
792
888
|
|
|
793
|
-
|
|
794
889
|
/**
|
|
795
890
|
* Transfers the host to another member
|
|
796
891
|
* @param {String} memberId
|
|
@@ -799,19 +894,28 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
799
894
|
* @public
|
|
800
895
|
* @memberof Members
|
|
801
896
|
*/
|
|
802
|
-
transferHostToMember(memberId, moderator = true) {
|
|
897
|
+
public transferHostToMember(memberId: string, moderator = true) {
|
|
803
898
|
if (!this.locusUrl) {
|
|
804
|
-
return Promise.reject(
|
|
899
|
+
return Promise.reject(
|
|
900
|
+
new ParameterError(
|
|
901
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
902
|
+
)
|
|
903
|
+
);
|
|
805
904
|
}
|
|
806
905
|
if (!memberId) {
|
|
807
|
-
return Promise.reject(
|
|
906
|
+
return Promise.reject(
|
|
907
|
+
new ParameterError('The member id must be defined to transfer host to the member.')
|
|
908
|
+
);
|
|
808
909
|
}
|
|
809
|
-
const options = MembersUtil.generateTransferHostMemberOptions(
|
|
910
|
+
const options = MembersUtil.generateTransferHostMemberOptions(
|
|
911
|
+
memberId,
|
|
912
|
+
moderator,
|
|
913
|
+
this.locusUrl
|
|
914
|
+
);
|
|
810
915
|
|
|
811
916
|
return this.membersRequest.transferHostToMember(options);
|
|
812
917
|
}
|
|
813
918
|
|
|
814
|
-
|
|
815
919
|
/**
|
|
816
920
|
* Sends DTMF tones for the PSTN member of a meeting
|
|
817
921
|
* @param {String} tones a string of one or more DTMF tones to send
|
|
@@ -820,7 +924,8 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
820
924
|
* @public
|
|
821
925
|
* @memberof Members
|
|
822
926
|
*/
|
|
823
|
-
sendDialPadKey(tones = '', memberId = '') {
|
|
927
|
+
public sendDialPadKey(tones = '', memberId = '') {
|
|
928
|
+
// @ts-ignore
|
|
824
929
|
if (!tones && tones !== 0) {
|
|
825
930
|
return Promise.reject(new ParameterError('DMTF tones must be passed in'));
|
|
826
931
|
}
|
|
@@ -843,7 +948,11 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
843
948
|
return this.membersRequest.sendDialPadKey(options);
|
|
844
949
|
}
|
|
845
950
|
|
|
846
|
-
return Promise.reject(
|
|
951
|
+
return Promise.reject(
|
|
952
|
+
new Error(
|
|
953
|
+
'Members:index#sendDialPadKey --> cannot send DTMF, meeting does not have a connection to the "locus" call control service.'
|
|
954
|
+
)
|
|
955
|
+
);
|
|
847
956
|
}
|
|
848
957
|
|
|
849
958
|
/** Finds a member that has any device with a csi matching provided value
|
|
@@ -852,10 +961,12 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
852
961
|
* @returns {Member}
|
|
853
962
|
*/
|
|
854
963
|
findMemberByCsi(csi) {
|
|
855
|
-
return Object.values(this.membersCollection.getAll())
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
964
|
+
return Object.values(this.membersCollection.getAll()).find((member) =>
|
|
965
|
+
// @ts-ignore
|
|
966
|
+
member.participant?.devices?.find((device) =>
|
|
967
|
+
device.csis?.find((memberCsi) => memberCsi === csi)
|
|
968
|
+
)
|
|
969
|
+
);
|
|
859
970
|
}
|
|
860
971
|
|
|
861
972
|
/**
|
|
@@ -872,7 +983,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
872
983
|
this.membersCollection.get(memberId)?.participant?.devices?.forEach((device) => {
|
|
873
984
|
if (device.mediaSessions) {
|
|
874
985
|
const deviceCsis = device.mediaSessions
|
|
875
|
-
?.filter(
|
|
986
|
+
?.filter(
|
|
987
|
+
(mediaSession) =>
|
|
988
|
+
mediaSession.mediaType === mediaType && mediaSession.mediaContent === mediaContent
|
|
989
|
+
)
|
|
876
990
|
.map((mediaSession) => mediaSession.csi);
|
|
877
991
|
|
|
878
992
|
csis.push(...deviceCsis);
|