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