@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
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import EventsScope from '../common/events/events-scope';
|
|
3
|
+
export declare const EVENTS: {
|
|
4
|
+
MEDIA_QUALITY: string;
|
|
5
|
+
LOCAL_MEDIA_STARTED: string;
|
|
6
|
+
LOCAL_MEDIA_STOPPED: string;
|
|
7
|
+
REMOTE_MEDIA_STARTED: string;
|
|
8
|
+
REMOTE_MEDIA_STOPPED: string;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Stats Analyzer class that will emit events based on detected quality
|
|
12
|
+
*
|
|
13
|
+
* @export
|
|
14
|
+
* @class StatsAnalyzer
|
|
15
|
+
* @extends {EventsScope}
|
|
16
|
+
*/
|
|
17
|
+
export declare class StatsAnalyzer extends EventsScope {
|
|
18
|
+
config: any;
|
|
19
|
+
correlationId: any;
|
|
20
|
+
lastEmittedStartStopEvent: any;
|
|
21
|
+
lastMqaDataSent: any;
|
|
22
|
+
lastStatsResults: any;
|
|
23
|
+
meetingMediaStatus: any;
|
|
24
|
+
mqaInterval: NodeJS.Timeout;
|
|
25
|
+
mqaSentCount: any;
|
|
26
|
+
networkQualityMonitor: any;
|
|
27
|
+
mediaConnection: any;
|
|
28
|
+
statsInterval: NodeJS.Timeout;
|
|
29
|
+
statsResults: any;
|
|
30
|
+
statsStarted: any;
|
|
31
|
+
/**
|
|
32
|
+
* Creates a new instance of StatsAnalyzer
|
|
33
|
+
* @constructor
|
|
34
|
+
* @public
|
|
35
|
+
* @param {Object} config SDK Configuration Object
|
|
36
|
+
* @param {Object} networkQualityMonitor class for assessing network characteristics (jitter, packetLoss, latency)
|
|
37
|
+
* @param {Object} statsResults Default properties for stats
|
|
38
|
+
*/
|
|
39
|
+
constructor(config: any, networkQualityMonitor?: object, statsResults?: object);
|
|
40
|
+
/**
|
|
41
|
+
* Resets cumulative stats arrays.
|
|
42
|
+
*
|
|
43
|
+
* @public
|
|
44
|
+
* @memberof StatsAnalyzer
|
|
45
|
+
* @returns {void}
|
|
46
|
+
*/
|
|
47
|
+
resetStatsResults(): void;
|
|
48
|
+
/**
|
|
49
|
+
* sets mediaStatus status for analyzing metrics
|
|
50
|
+
*
|
|
51
|
+
* @public
|
|
52
|
+
* @param {Object} status for the audio and video
|
|
53
|
+
* @memberof StatsAnalyzer
|
|
54
|
+
* @returns {void}
|
|
55
|
+
*/
|
|
56
|
+
updateMediaStatus(status: object): void;
|
|
57
|
+
/**
|
|
58
|
+
* captures MQA data from media connection
|
|
59
|
+
*
|
|
60
|
+
* @public
|
|
61
|
+
* @memberof StatsAnalyzer
|
|
62
|
+
* @returns {void}
|
|
63
|
+
*/
|
|
64
|
+
sendMqaData(): void;
|
|
65
|
+
/**
|
|
66
|
+
* updated the media connection when changed
|
|
67
|
+
*
|
|
68
|
+
* @private
|
|
69
|
+
* @memberof StatsAnalyzer
|
|
70
|
+
* @param {RoapMediaConnection} mediaConnection
|
|
71
|
+
* @returns {void}
|
|
72
|
+
*/
|
|
73
|
+
updateMediaConnection(mediaConnection: any): void;
|
|
74
|
+
/**
|
|
75
|
+
* Starts the stats analyzer on interval
|
|
76
|
+
*
|
|
77
|
+
* @public
|
|
78
|
+
* @memberof StatsAnalyzer
|
|
79
|
+
* @param {RoapMediaConnection} mediaConnection
|
|
80
|
+
* @returns {Promise}
|
|
81
|
+
*/
|
|
82
|
+
startAnalyzer(mediaConnection: any): any;
|
|
83
|
+
/**
|
|
84
|
+
* Cleans up the analyzer when done
|
|
85
|
+
*
|
|
86
|
+
* @public
|
|
87
|
+
* @memberof StatsAnalyzer
|
|
88
|
+
* @returns {void}
|
|
89
|
+
*/
|
|
90
|
+
stopAnalyzer(): any;
|
|
91
|
+
/**
|
|
92
|
+
* Parse a single result of get stats
|
|
93
|
+
*
|
|
94
|
+
* @private
|
|
95
|
+
* @param {*} getStatsResult
|
|
96
|
+
* @param {String} type
|
|
97
|
+
* @param {boolean} isSender
|
|
98
|
+
* @returns {void}
|
|
99
|
+
* @memberof StatsAnalyzer
|
|
100
|
+
*/
|
|
101
|
+
private parseGetStatsResult;
|
|
102
|
+
/**
|
|
103
|
+
* Filters the get stats results for types
|
|
104
|
+
* @private
|
|
105
|
+
* @param {Array} statsItem
|
|
106
|
+
* @param {String} type
|
|
107
|
+
* @param {boolean} isSender
|
|
108
|
+
* @returns {void}
|
|
109
|
+
*/
|
|
110
|
+
filterAndParseGetStatsResults(statsItem: any, type: string, isSender: boolean): void;
|
|
111
|
+
/**
|
|
112
|
+
* parse the audio
|
|
113
|
+
* @param {String} result
|
|
114
|
+
* @param {boolean} type
|
|
115
|
+
* @returns {void}
|
|
116
|
+
*/
|
|
117
|
+
parseAudioSource(result: any, type: any): void;
|
|
118
|
+
/**
|
|
119
|
+
* emits started/stopped events for local/remote media by checking
|
|
120
|
+
* if given values are increasing or not. The previousValue, currentValue
|
|
121
|
+
* params can be any numerical value like number of receive packets or
|
|
122
|
+
* decoded frames, etc.
|
|
123
|
+
*
|
|
124
|
+
* @private
|
|
125
|
+
* @param {string} mediaType
|
|
126
|
+
* @param {number} previousValue - value to compare
|
|
127
|
+
* @param {number} currentValue - value to compare (must be same type of value as previousValue)
|
|
128
|
+
* @param {boolean} isLocal - true if stats are for local media being sent out, false for remote media being received
|
|
129
|
+
* @memberof StatsAnalyzer
|
|
130
|
+
* @returns {void}
|
|
131
|
+
*/
|
|
132
|
+
emitStartStopEvents: (mediaType: string, previousValue: number, currentValue: number, isLocal: boolean) => void;
|
|
133
|
+
/**
|
|
134
|
+
* compares current and previous stats to check if packets are not sent
|
|
135
|
+
*
|
|
136
|
+
* @private
|
|
137
|
+
* @memberof StatsAnalyzer
|
|
138
|
+
* @returns {void}
|
|
139
|
+
*/
|
|
140
|
+
private compareLastStatsResult;
|
|
141
|
+
/**
|
|
142
|
+
* Does a `getStats` on all the transceivers and parses the results
|
|
143
|
+
*
|
|
144
|
+
* @private
|
|
145
|
+
* @memberof StatsAnalyzer
|
|
146
|
+
* @returns {Promise}
|
|
147
|
+
*/
|
|
148
|
+
private getStatsAndParse;
|
|
149
|
+
/**
|
|
150
|
+
* Processes OutboundRTP stats result and stores
|
|
151
|
+
* @private
|
|
152
|
+
* @param {*} result
|
|
153
|
+
* @param {*} mediaType
|
|
154
|
+
* @returns {void}
|
|
155
|
+
*/
|
|
156
|
+
private processOutboundRTPResult;
|
|
157
|
+
/**
|
|
158
|
+
* Processes InboundRTP stats result and stores
|
|
159
|
+
* @private
|
|
160
|
+
* @param {*} result
|
|
161
|
+
* @param {*} mediaType
|
|
162
|
+
* @returns {void}
|
|
163
|
+
*/
|
|
164
|
+
private processInboundRTPResult;
|
|
165
|
+
/**
|
|
166
|
+
* Processes remote and local candidate result and stores
|
|
167
|
+
* @private
|
|
168
|
+
* @param {*} result
|
|
169
|
+
* @param {*} type
|
|
170
|
+
* @param {boolean} isSender
|
|
171
|
+
* @param {boolean} isRemote
|
|
172
|
+
*
|
|
173
|
+
* @returns {void}
|
|
174
|
+
*/
|
|
175
|
+
parseCandidate: (result: any, type: any, isSender: boolean, isRemote: boolean) => void;
|
|
176
|
+
/**
|
|
177
|
+
* Process Track results
|
|
178
|
+
*
|
|
179
|
+
* @private
|
|
180
|
+
* @param {*} result
|
|
181
|
+
* @param {*} mediaType
|
|
182
|
+
* @returns {void}
|
|
183
|
+
* @memberof StatsAnalyzer
|
|
184
|
+
*/
|
|
185
|
+
private processTrackResult;
|
|
186
|
+
/**
|
|
187
|
+
*
|
|
188
|
+
* @private
|
|
189
|
+
* @param {*} result
|
|
190
|
+
* @param {*} type
|
|
191
|
+
* @returns {void}
|
|
192
|
+
* @memberof StatsAnalyzer
|
|
193
|
+
*/
|
|
194
|
+
compareSentAndReceived(result: any, type: any): void;
|
|
195
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare const getAudioReceiverMqa: ({ audioReceiver, statsResults, lastMqaDataSent, mediaType }: {
|
|
2
|
+
audioReceiver: any;
|
|
3
|
+
statsResults: any;
|
|
4
|
+
lastMqaDataSent: any;
|
|
5
|
+
mediaType: any;
|
|
6
|
+
}) => void;
|
|
7
|
+
export declare const getAudioSenderMqa: ({ audioSender, statsResults, lastMqaDataSent, mediaType }: {
|
|
8
|
+
audioSender: any;
|
|
9
|
+
statsResults: any;
|
|
10
|
+
lastMqaDataSent: any;
|
|
11
|
+
mediaType: any;
|
|
12
|
+
}) => void;
|
|
13
|
+
export declare const getVideoReceiverMqa: ({ videoReceiver, statsResults, lastMqaDataSent, mediaType }: {
|
|
14
|
+
videoReceiver: any;
|
|
15
|
+
statsResults: any;
|
|
16
|
+
lastMqaDataSent: any;
|
|
17
|
+
mediaType: any;
|
|
18
|
+
}) => void;
|
|
19
|
+
export declare const getVideoSenderMqa: ({ videoSender, statsResults, lastMqaDataSent, mediaType }: {
|
|
20
|
+
videoSender: any;
|
|
21
|
+
statsResults: any;
|
|
22
|
+
lastMqaDataSent: any;
|
|
23
|
+
mediaType: any;
|
|
24
|
+
}) => void;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Meeting Webex assistance transcription feature.
|
|
3
|
+
* @exports
|
|
4
|
+
* @class Transcription
|
|
5
|
+
*/
|
|
6
|
+
export default class Transcription {
|
|
7
|
+
webSocketUrl: any;
|
|
8
|
+
sessionID: any;
|
|
9
|
+
members: any;
|
|
10
|
+
memberCSIs: any;
|
|
11
|
+
webSocket: any;
|
|
12
|
+
/**
|
|
13
|
+
* @param {string} webSocketUrl
|
|
14
|
+
* @param {sessionID} sessionId
|
|
15
|
+
* @param {object} members
|
|
16
|
+
* @constructor
|
|
17
|
+
* @memberof Transcription
|
|
18
|
+
*/
|
|
19
|
+
constructor(webSocketUrl: string, sessionId: any, members: object);
|
|
20
|
+
/**
|
|
21
|
+
* open the Low Latency Mercury connection
|
|
22
|
+
* An event parameter will be send to the callback.
|
|
23
|
+
*
|
|
24
|
+
* @param {string} token
|
|
25
|
+
* @param {string} sessionID
|
|
26
|
+
* @returns {void}
|
|
27
|
+
*/
|
|
28
|
+
connect(token: string): void;
|
|
29
|
+
/**
|
|
30
|
+
* Sets callback to invoke when the web socket connection is closed.
|
|
31
|
+
*
|
|
32
|
+
* @param {Function} callback
|
|
33
|
+
* @returns {void}
|
|
34
|
+
*/
|
|
35
|
+
onCloseSocket(callback: any): void;
|
|
36
|
+
/**
|
|
37
|
+
* Sets callback to invoke when a web socket connection error occurs.
|
|
38
|
+
* An event parameter will be send to the callback.
|
|
39
|
+
*
|
|
40
|
+
* @param {Function} callback
|
|
41
|
+
* @returns {void}
|
|
42
|
+
*/
|
|
43
|
+
onErrorSocket(callback: any): void;
|
|
44
|
+
/**
|
|
45
|
+
* Get current speaker from the given csis payload and update the global csis map
|
|
46
|
+
*
|
|
47
|
+
* @private
|
|
48
|
+
* @param {object} csis
|
|
49
|
+
* @returns {object}
|
|
50
|
+
*/
|
|
51
|
+
private getSpeaker;
|
|
52
|
+
/**
|
|
53
|
+
* Sends transcription data to given callback as it arrives.
|
|
54
|
+
*
|
|
55
|
+
* @param {Function} callback
|
|
56
|
+
* @returns {void}
|
|
57
|
+
*/
|
|
58
|
+
subscribe(callback: any): void;
|
|
59
|
+
/**
|
|
60
|
+
* Close the LLM web socket connection
|
|
61
|
+
* @returns {void}
|
|
62
|
+
*/
|
|
63
|
+
closeSocket(): void;
|
|
64
|
+
}
|
package/internal-README.md
CHANGED
|
@@ -48,7 +48,7 @@ Install tooling dependencies.
|
|
|
48
48
|
npm install
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
_Build issues?_ See [BUILD-ISSUES.md](https://github.com/webex/webex-js-sdk/blob/master/BUILD-ISSUES.md) for help.
|
|
52
52
|
|
|
53
53
|
## Contribute to the `plugin-meetings` branch
|
|
54
54
|
|
|
@@ -93,12 +93,14 @@ yarn run build
|
|
|
93
93
|
```
|
|
94
94
|
|
|
95
95
|
> Individual packages containing samples can usually be run this way:
|
|
96
|
+
>
|
|
96
97
|
> ```
|
|
97
98
|
> yarn run serve:package --env.package @webex/plugin-meetings
|
|
99
|
+
> ```
|
|
98
100
|
|
|
99
101
|
> ```
|
|
100
102
|
> However, `webex` does not get compiled properly for `plugin-meetings` using this method, so do the following instead.
|
|
101
|
-
|
|
103
|
+
> ```
|
|
102
104
|
|
|
103
105
|
```bash
|
|
104
106
|
# Run the "sample app" sample.
|
|
@@ -107,8 +109,8 @@ yarn run samples:meetings
|
|
|
107
109
|
```
|
|
108
110
|
|
|
109
111
|
- Visit https://localhost:8000/
|
|
110
|
-
- Copy/paste **Your Personal Access Token** from [Cisco Webex for Developers](https://developer.webex.com/docs/api/getting-started) and click
|
|
111
|
-
- Use the **Dialer** to
|
|
112
|
+
- Copy/paste **Your Personal Access Token** from [Cisco Webex for Developers](https://developer.webex.com/docs/api/getting-started) and click _connect_.
|
|
113
|
+
- Use the **Dialer** to _create_ a Meeting object, _join_ it, and _addMedia_, like video and audio.
|
|
112
114
|
|
|
113
115
|
> This sample does not join a meeting in one click on purpose. It is meant to demonstrate the different commands available, and their sequence, to developers. Other samples will be created in the future.
|
|
114
116
|
>
|
|
@@ -124,7 +126,6 @@ yarn run samples:meetings
|
|
|
124
126
|
|
|
125
127
|
Use `yarn run distsrc` to point each package's `main` entry at the raw src and let `babel` compile on the fly.
|
|
126
128
|
|
|
127
|
-
|
|
128
129
|
```bash
|
|
129
130
|
# Point all package.json files to the src directory instead of the dist directory.
|
|
130
131
|
yarn run distsrc
|
|
@@ -156,7 +157,7 @@ yarn run srcdist
|
|
|
156
157
|
|
|
157
158
|
The SDK enforces relatively strict commit messages to version its packages and keep language similar.
|
|
158
159
|
|
|
159
|
-
Here is an example committing a new feature. Notice the
|
|
160
|
+
Here is an example committing a new feature. Notice the _package name_ in parentheses.
|
|
160
161
|
|
|
161
162
|
```bash
|
|
162
163
|
git commit -a -m 'feat(plugin-meetings): add ability to join a meeting'
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-meetings",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.40",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
|
|
6
6
|
"contributors": [
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"Taymoor Khan <taykhan@cisco.com>"
|
|
13
13
|
],
|
|
14
14
|
"main": "dist/index.js",
|
|
15
|
+
"types": "dist/types/index.d.ts",
|
|
15
16
|
"devMain": "src/index.js",
|
|
16
17
|
"repository": {
|
|
17
18
|
"type": "git",
|
|
@@ -27,32 +28,37 @@
|
|
|
27
28
|
"envify"
|
|
28
29
|
]
|
|
29
30
|
},
|
|
31
|
+
"scripts": {
|
|
32
|
+
"build": "yarn run -T tsc --declaration true --declarationDir ./dist/types"
|
|
33
|
+
},
|
|
30
34
|
"devDependencies": {
|
|
31
|
-
"@webex/plugin-meetings": "3.0.0-beta.
|
|
32
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
33
|
-
"@webex/test-helper-mocha": "3.0.0-beta.
|
|
34
|
-
"@webex/test-helper-mock-webex": "3.0.0-beta.
|
|
35
|
-
"@webex/test-helper-retry": "3.0.0-beta.
|
|
36
|
-
"@webex/test-helper-test-users": "3.0.0-beta.
|
|
35
|
+
"@webex/plugin-meetings": "3.0.0-beta.40",
|
|
36
|
+
"@webex/test-helper-chai": "3.0.0-beta.40",
|
|
37
|
+
"@webex/test-helper-mocha": "3.0.0-beta.40",
|
|
38
|
+
"@webex/test-helper-mock-webex": "3.0.0-beta.40",
|
|
39
|
+
"@webex/test-helper-retry": "3.0.0-beta.40",
|
|
40
|
+
"@webex/test-helper-test-users": "3.0.0-beta.40",
|
|
37
41
|
"chai": "^4.3.4",
|
|
38
42
|
"chai-as-promised": "^7.1.1",
|
|
39
43
|
"jsdom-global": "3.0.2",
|
|
40
44
|
"sinon": "^9.2.4",
|
|
41
|
-
"typed-emitter": "^2.1.0"
|
|
45
|
+
"typed-emitter": "^2.1.0",
|
|
46
|
+
"typescript": "^4.7.4"
|
|
42
47
|
},
|
|
43
48
|
"dependencies": {
|
|
44
|
-
"@webex/common": "3.0.0-beta.
|
|
45
|
-
"@webex/internal-media-core": "
|
|
46
|
-
"@webex/internal-plugin-conversation": "3.0.0-beta.
|
|
47
|
-
"@webex/internal-plugin-device": "3.0.0-beta.
|
|
48
|
-
"@webex/internal-plugin-
|
|
49
|
-
"@webex/internal-plugin-
|
|
50
|
-
"@webex/internal-plugin-
|
|
51
|
-
"@webex/internal-plugin-
|
|
52
|
-
"@webex/plugin-
|
|
53
|
-
"@webex/plugin-
|
|
54
|
-
"@webex/
|
|
55
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
49
|
+
"@webex/common": "3.0.0-beta.40",
|
|
50
|
+
"@webex/internal-media-core": "1.35.2",
|
|
51
|
+
"@webex/internal-plugin-conversation": "3.0.0-beta.40",
|
|
52
|
+
"@webex/internal-plugin-device": "3.0.0-beta.40",
|
|
53
|
+
"@webex/internal-plugin-llm": "3.0.0-beta.40",
|
|
54
|
+
"@webex/internal-plugin-mercury": "3.0.0-beta.40",
|
|
55
|
+
"@webex/internal-plugin-metrics": "3.0.0-beta.40",
|
|
56
|
+
"@webex/internal-plugin-support": "3.0.0-beta.40",
|
|
57
|
+
"@webex/internal-plugin-user": "3.0.0-beta.40",
|
|
58
|
+
"@webex/plugin-people": "3.0.0-beta.40",
|
|
59
|
+
"@webex/plugin-rooms": "3.0.0-beta.40",
|
|
60
|
+
"@webex/webex-core": "3.0.0-beta.40",
|
|
61
|
+
"ampersand-collection": "^2.0.2",
|
|
56
62
|
"bowser": "^2.11.0",
|
|
57
63
|
"btoa": "^1.2.1",
|
|
58
64
|
"dotenv": "^4.0.0",
|
|
@@ -62,6 +68,6 @@
|
|
|
62
68
|
"lodash": "^4.17.21",
|
|
63
69
|
"sdp-transform": "^2.12.0",
|
|
64
70
|
"uuid": "^3.3.2",
|
|
65
|
-
"webrtc-adapter": "^
|
|
71
|
+
"webrtc-adapter": "^8.1.2"
|
|
66
72
|
}
|
|
67
73
|
}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
# Breakout Sessions
|
|
2
|
+
|
|
3
|
+
Breakout sessions are like meetings within meetings. They have separate roster lists and titles. Participants can move between breakouts and the main session.
|
|
4
|
+
|
|
5
|
+
### Enabling
|
|
6
|
+
|
|
7
|
+
To enable breakouts the `breakoutsSupported` parameter must be passed to the meeting join method.
|
|
8
|
+
|
|
9
|
+
### Structure
|
|
10
|
+
|
|
11
|
+
The current breakout session is accessible as follows:
|
|
12
|
+
|
|
13
|
+
```javascript
|
|
14
|
+
breakouts.currentBreakoutSession;
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Other breakout sessions are available in the breakouts collection. These are breakouts that you known about. If you are an attendee, you may not know about all the breakout sessions in the meeting.
|
|
18
|
+
|
|
19
|
+
```javascript
|
|
20
|
+
breakouts.breakouts;
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
note: The `currentBreakoutSession` is NOT a member of the `breakouts.breakouts` collection.
|
|
24
|
+
|
|
25
|
+
Some information about the state of breakouts is available on the `meeting.breakouts` object itself
|
|
26
|
+
|
|
27
|
+
```javascript
|
|
28
|
+
// The number of seconds after ending breakouts before the participants are returned to the main session
|
|
29
|
+
breakouts.delayCloseTime;
|
|
30
|
+
|
|
31
|
+
// Whether the participant is allowed back to the main session
|
|
32
|
+
breakouts.allowBackToMain;
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Attendee functionality
|
|
36
|
+
|
|
37
|
+
The normal meeting members are updated when you move in and out of a breakout session.
|
|
38
|
+
|
|
39
|
+
The following are methods available to attendees of a meeting:
|
|
40
|
+
|
|
41
|
+
```javascript
|
|
42
|
+
// Join a breakout
|
|
43
|
+
// This can be used when the participant is in the main session or in a different breakout session
|
|
44
|
+
breakout.join();
|
|
45
|
+
|
|
46
|
+
// Leave a breakout
|
|
47
|
+
// This will cause the participant to return to the main session
|
|
48
|
+
breakouts.currentBreakoutSession.leave();
|
|
49
|
+
|
|
50
|
+
// Ask for help when in a breakout session. 10 second cooldown.
|
|
51
|
+
breakout.currentBreakoutSession.askForHelp();
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
#### Members
|
|
55
|
+
|
|
56
|
+
Each breakout session has members. Members represent other entities within the meeting.
|
|
57
|
+
The current breakout session members are accessed via the meeting object i.e. they will automatically
|
|
58
|
+
be updated when the user moves between sessions.
|
|
59
|
+
|
|
60
|
+
To see which members are in other sessions, you can access them via the breakout model. The Members
|
|
61
|
+
class is the same as that of the main meeting.
|
|
62
|
+
|
|
63
|
+
```javascript
|
|
64
|
+
breakout = breakouts.breakouts.models[0];
|
|
65
|
+
breakout.members;
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
#### breakouts events
|
|
69
|
+
|
|
70
|
+
```javascript
|
|
71
|
+
// When the breakouts in the breakouts collection changes. This includes updates to session members
|
|
72
|
+
on('meeting:breakouts:update', (breakouts) => {});
|
|
73
|
+
|
|
74
|
+
// When the breakout sessions end this event will be fired
|
|
75
|
+
on('meeting:breakouts:closing', () => {});
|
|
76
|
+
|
|
77
|
+
// When the host sends a message to the breakout this event will fire
|
|
78
|
+
on('meeting:breakouts:message', {senderUserId, sentTime, message, sessionId});
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
When breakouts are started there are several possibilities:
|
|
82
|
+
|
|
83
|
+
1. The attendee is forced to join a session
|
|
84
|
+
2. The attendee is assigned to a session, but can join when they feel like it
|
|
85
|
+
3. The attendee is not assigned to a session, and can choose which session they want to join
|
|
86
|
+
|
|
87
|
+
```javascript
|
|
88
|
+
breakout.assigned; // Assigned to a session, but not in it yet
|
|
89
|
+
breakout.assignedCurrent; // Forced to join a session
|
|
90
|
+
breakout.active; // The session exists
|
|
91
|
+
breakout.allowed; // The user is allowed to join the session
|
|
92
|
+
breakout.requested; // The user has been requested to join the session
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The above attributes of the breakout sessions, combined with the `meeting:breakouts:update` event allow you to determine which situation you are in.
|
|
96
|
+
|
|
97
|
+
A host can signal attendees to move to a particular session. In this case the following is available. Using the same event, and the `requested` attribute of the breakout you can determine which session is to be moved to. Requesting return to the main session is the current use case of this.
|
|
98
|
+
|
|
99
|
+
### Host functionality
|
|
100
|
+
|
|
101
|
+
The following are methods available to a hosts of a meeting.
|
|
102
|
+
|
|
103
|
+
note: None of these are currently implemented
|
|
104
|
+
|
|
105
|
+
```javascript
|
|
106
|
+
|
|
107
|
+
// Move a participant to breakout
|
|
108
|
+
breakout.move(participant)
|
|
109
|
+
|
|
110
|
+
// Assign a particpant to a breakout
|
|
111
|
+
// Not sure whether there is any difference from move
|
|
112
|
+
breakout.assign(participant)
|
|
113
|
+
|
|
114
|
+
// Remove someone from a breakout session
|
|
115
|
+
// This returns them to the main session
|
|
116
|
+
breakout.remove(participant)
|
|
117
|
+
|
|
118
|
+
// Deletes a breakout session
|
|
119
|
+
// This can only be done when breakouts are inactive
|
|
120
|
+
breakout.delete()
|
|
121
|
+
|
|
122
|
+
/*
|
|
123
|
+
Create breakout sessions, Type is array
|
|
124
|
+
Format: [{'name':'session1', "anyoneCanJoin" : true}]
|
|
125
|
+
*/
|
|
126
|
+
breakouts.create(sessions)
|
|
127
|
+
|
|
128
|
+
// Delete all breakout sessions
|
|
129
|
+
breakouts.clearSessions()
|
|
130
|
+
|
|
131
|
+
// Rename an existing breakout session
|
|
132
|
+
breakout.rename(newSessionName)
|
|
133
|
+
|
|
134
|
+
// Start breakout sessions with necessary params
|
|
135
|
+
breakouts.start(params)
|
|
136
|
+
|
|
137
|
+
// End breakout sessions with necessary params
|
|
138
|
+
breakouts.end(params)
|
|
139
|
+
|
|
140
|
+
// get breakout sessions with/without param editlock
|
|
141
|
+
breakouts.getBreakout(editlock?)
|
|
142
|
+
|
|
143
|
+
// Enable breakout sessions
|
|
144
|
+
breakouts.enable()
|
|
145
|
+
|
|
146
|
+
// Disable breakout sessions
|
|
147
|
+
breakouts.disable()
|
|
148
|
+
|
|
149
|
+
// Send message asking all participants to return to the main session
|
|
150
|
+
breakouts.askAllToReturn()
|
|
151
|
+
|
|
152
|
+
// Send a message to a breakout session
|
|
153
|
+
// You can determine which participant types receive the message, if no type set, default is to all participants
|
|
154
|
+
breakout.broadcast(message, {participants: boolean, cohosts: boolean, presenters: boolean})
|
|
155
|
+
|
|
156
|
+
// Send a message to All breakout sessions
|
|
157
|
+
// You can determine which participant types receive the message, if no type set, default is to all participants
|
|
158
|
+
breakouts.broadcast(message, {participants: boolean, cohosts: boolean, presenters: boolean})
|
|
159
|
+
|
|
160
|
+
// When breakouts are active you can cancel the automatic end of all sessions by calling this
|
|
161
|
+
// method. It cannot be restarted, only manually ending breakouts is possible after calling this
|
|
162
|
+
breakouts.cancelAutomaticEnd()
|
|
163
|
+
|
|
164
|
+
IBreakoutConfig {
|
|
165
|
+
/*
|
|
166
|
+
Number of sessions to count down before returning users to main session. Seconds. Default 60. 0 means off
|
|
167
|
+
*/
|
|
168
|
+
countdownTimer: Number,
|
|
169
|
+
/*
|
|
170
|
+
Whether attendees are allowed to return to the main meeting
|
|
171
|
+
*/
|
|
172
|
+
allowReturntoMainMeeting: Boolean,
|
|
173
|
+
/*
|
|
174
|
+
Whether attendees are allowed to join later
|
|
175
|
+
*/
|
|
176
|
+
allowJoinLater: Boolean,
|
|
177
|
+
/*
|
|
178
|
+
The timeout after which breakouts are automatically ended. Seconds. Default 1800 (30 minutes) Miniumum 5 minutes.
|
|
179
|
+
*/
|
|
180
|
+
automaticallyEndBreakoutsAfter: Number,
|
|
181
|
+
/*
|
|
182
|
+
How participants are assigned to breakouts.
|
|
183
|
+
auto -> participants are automatically placed in sessions
|
|
184
|
+
*/
|
|
185
|
+
assignmentMethod: 'auto' | 'manual' | 'choose'
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// Configure settings on breakouts
|
|
189
|
+
breakouts.configure(config)
|
|
190
|
+
|
|
191
|
+
// set whether anyone can join the breakout or whether it is just assigned participants that can join
|
|
192
|
+
breakout.setOpen(isOpen)
|
|
193
|
+
|
|
194
|
+
// When the members change for a given breakout
|
|
195
|
+
on('meeting:breakout:members:update', ({sessionId, members}) => {
|
|
196
|
+
|
|
197
|
+
})
|
|
198
|
+
|
|
199
|
+
```
|