@webex/plugin-meetings 3.0.0-beta.10 → 3.0.0-beta.104
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/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +48 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +357 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +176 -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/events.js +43 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +919 -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 +67 -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 +5 -26
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +5 -26
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +6 -27
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +5 -26
- 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 +5 -26
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +4 -25
- 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 +5 -26
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +5 -26
- 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 +1 -24
- 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 +35 -61
- 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 +173 -52
- 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 +25 -0
- package/dist/controls-options-manager/enums.js.map +1 -0
- package/dist/controls-options-manager/index.js +297 -0
- package/dist/controls-options-manager/index.js.map +1 -0
- package/dist/controls-options-manager/types.js +7 -0
- package/dist/controls-options-manager/types.js.map +1 -0
- package/dist/controls-options-manager/util.js +250 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +72 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +56 -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 +327 -211
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +0 -38
- 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 +88 -123
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +99 -91
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +62 -147
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +71 -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 +59 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2396 -2388
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +252 -113
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +318 -283
- 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 +58 -217
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +3 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +10 -33
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +263 -282
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -16
- 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 +155 -232
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +24 -20
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +675 -593
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +23 -42
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +177 -155
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +80 -88
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +15 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +90 -69
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +12 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +162 -204
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +58 -53
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +15 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.js +107 -44
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +5 -14
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +3 -7
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +61 -161
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +167 -50
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +58 -65
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +74 -93
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +55 -74
- 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 +466 -442
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +32 -59
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +10 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -33
- 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 +190 -199
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +14 -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 +326 -465
- 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 +38 -67
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +143 -134
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +149 -101
- 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 +369 -461
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +144 -94
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +13 -45
- package/dist/transcription/index.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +34 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +124 -0
- 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/events.d.ts +2 -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 +15 -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 +78 -0
- package/dist/types/constants.d.ts +968 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +13 -0
- package/dist/types/controls-options-manager/index.d.ts +136 -0
- package/dist/types/controls-options-manager/types.d.ts +37 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -0
- package/dist/types/index.d.ts +7 -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 +315 -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 +34 -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 +129 -0
- package/dist/types/meeting/index.d.ts +1748 -0
- package/dist/types/meeting/muteState.d.ts +185 -0
- package/dist/types/meeting/request.d.ts +275 -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 +112 -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 +31 -0
- package/dist/types/meetings/index.d.ts +345 -0
- package/dist/types/meetings/request.d.ts +27 -0
- package/dist/types/meetings/util.d.ts +18 -0
- package/dist/types/member/index.d.ts +156 -0
- package/dist/types/member/types.d.ts +21 -0
- package/dist/types/member/util.d.ts +2 -0
- package/dist/types/members/collection.d.ts +29 -0
- package/dist/types/members/index.d.ts +353 -0
- package/dist/types/members/request.d.ts +69 -0
- package/dist/types/members/types.d.ts +24 -0
- package/dist/types/members/util.d.ts +2 -0
- package/dist/types/metrics/config.d.ts +172 -0
- package/dist/types/metrics/constants.d.ts +54 -0
- package/dist/types/metrics/index.d.ts +152 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
- package/dist/types/multistream/receiveSlot.d.ts +68 -0
- package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
- package/dist/types/multistream/remoteMedia.d.ts +72 -0
- package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
- package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
- package/dist/types/networkQualityMonitor/index.d.ts +70 -0
- package/dist/types/personal-meeting-room/index.d.ts +47 -0
- package/dist/types/personal-meeting-room/request.d.ts +14 -0
- package/dist/types/personal-meeting-room/util.d.ts +2 -0
- package/dist/types/reachability/index.d.ts +152 -0
- package/dist/types/reachability/request.d.ts +37 -0
- package/dist/types/reactions/constants.d.ts +3 -0
- package/dist/types/reactions/reactions.d.ts +4 -0
- package/dist/types/reactions/reactions.type.d.ts +52 -0
- package/dist/types/reconnection-manager/index.d.ts +126 -0
- package/dist/types/recording-controller/enums.d.ts +7 -0
- package/dist/types/recording-controller/index.d.ts +193 -0
- package/dist/types/recording-controller/util.d.ts +13 -0
- package/dist/types/roap/index.d.ts +77 -0
- package/dist/types/roap/request.d.ts +38 -0
- package/dist/types/roap/turnDiscovery.d.ts +88 -0
- package/dist/types/statsAnalyzer/global.d.ts +36 -0
- package/dist/types/statsAnalyzer/index.d.ts +200 -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 +28 -21
- package/src/annotation/annotation.types.ts +41 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +339 -0
- package/src/breakouts/README.md +219 -0
- package/src/breakouts/breakout.ts +141 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +37 -0
- package/src/breakouts/index.ts +823 -0
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +57 -0
- package/src/common/browser-detection.ts +9 -6
- package/src/common/collection.ts +3 -1
- package/src/common/errors/captcha-error.ts +6 -6
- package/src/common/errors/intent-to-join.ts +6 -6
- package/src/common/errors/join-meeting.ts +12 -8
- package/src/common/errors/media.ts +6 -6
- package/src/common/errors/parameter.ts +9 -6
- package/src/common/errors/password-error.ts +6 -6
- package/src/common/errors/permission.ts +5 -5
- package/src/common/errors/reconnection.ts +6 -6
- package/src/common/errors/stats.ts +6 -6
- package/src/common/errors/webex-errors.ts +7 -5
- package/src/common/errors/webex-meetings-error.ts +1 -1
- package/src/common/events/events-scope.ts +5 -1
- package/src/common/events/events.ts +5 -1
- package/src/common/events/trigger-proxy.ts +8 -3
- package/src/common/events/util.ts +1 -2
- package/src/common/logs/logger-proxy.ts +21 -10
- package/src/common/logs/request.ts +11 -8
- package/src/config.ts +16 -12
- package/src/constants.ts +119 -6
- package/src/controls-options-manager/constants.ts +5 -0
- package/src/controls-options-manager/enums.ts +16 -0
- package/src/controls-options-manager/index.ts +278 -0
- package/src/controls-options-manager/types.ts +49 -0
- package/src/controls-options-manager/util.ts +229 -0
- package/src/index.ts +33 -0
- package/src/locus-info/controlsUtils.ts +91 -24
- package/src/locus-info/fullState.ts +15 -11
- package/src/locus-info/hostUtils.ts +4 -3
- package/src/locus-info/index.ts +270 -54
- package/src/locus-info/infoUtils.ts +12 -4
- package/src/locus-info/mediaSharesUtils.ts +4 -4
- package/src/locus-info/parser.ts +46 -68
- package/src/locus-info/selfUtils.ts +187 -56
- package/src/media/index.ts +142 -172
- package/src/media/properties.ts +43 -36
- package/src/media/util.ts +1 -1
- package/src/mediaQualityMetrics/config.ts +380 -378
- package/src/meeting/in-meeting-actions.ts +123 -3
- package/src/meeting/index.ts +2617 -1545
- package/src/meeting/muteState.ts +271 -68
- package/src/meeting/request.ts +251 -132
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/state.ts +45 -30
- package/src/meeting/util.ts +119 -110
- package/src/meeting-info/collection.ts +2 -1
- package/src/meeting-info/index.ts +32 -30
- package/src/meeting-info/meeting-info-v2.ts +181 -109
- package/src/meeting-info/request.ts +9 -3
- package/src/meeting-info/util.ts +54 -46
- package/src/meeting-info/utilv2.ts +70 -55
- package/src/meetings/collection.ts +21 -1
- package/src/meetings/index.ts +749 -437
- package/src/meetings/request.ts +29 -25
- package/src/meetings/util.ts +122 -33
- package/src/member/index.ts +86 -49
- package/src/member/types.ts +24 -0
- package/src/member/util.ts +92 -13
- package/src/members/collection.ts +8 -1
- package/src/members/index.ts +281 -129
- package/src/members/request.ts +87 -14
- package/src/members/types.ts +28 -0
- package/src/members/util.ts +140 -49
- package/src/metrics/config.ts +256 -90
- package/src/metrics/constants.ts +1 -6
- package/src/metrics/index.ts +96 -96
- package/src/multistream/mediaRequestManager.ts +203 -45
- package/src/multistream/receiveSlot.ts +69 -26
- package/src/multistream/receiveSlotManager.ts +62 -38
- package/src/multistream/remoteMedia.ts +30 -4
- package/src/multistream/remoteMediaGroup.ts +4 -3
- package/src/multistream/remoteMediaManager.ts +230 -66
- package/src/networkQualityMonitor/index.ts +24 -27
- package/src/personal-meeting-room/index.ts +12 -16
- package/src/personal-meeting-room/request.ts +10 -3
- package/src/personal-meeting-room/util.ts +3 -3
- package/src/reachability/index.ts +131 -79
- package/src/reachability/request.ts +43 -34
- 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.ts +193 -111
- 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.ts +63 -51
- package/src/roap/request.ts +86 -53
- package/src/roap/turnDiscovery.ts +105 -46
- package/src/statsAnalyzer/global.ts +8 -104
- package/src/statsAnalyzer/index.ts +624 -376
- package/src/statsAnalyzer/mqaUtil.ts +203 -90
- package/src/transcription/index.ts +34 -32
- package/test/integration/spec/converged-space-meetings.js +177 -0
- package/test/integration/spec/journey.js +666 -464
- package/test/integration/spec/space-meeting.js +320 -204
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/annotation/index.ts +435 -0
- package/test/unit/spec/breakouts/breakout.ts +184 -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/events.ts +77 -0
- package/test/unit/spec/breakouts/index.ts +1504 -0
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +72 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/controls-options-manager/index.js +287 -0
- package/test/unit/spec/controls-options-manager/util.js +403 -0
- package/test/unit/spec/fixture/locus.js +92 -90
- package/test/unit/spec/locus-info/controlsUtils.js +177 -32
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +493 -3
- package/test/unit/spec/locus-info/infoUtils.js +26 -33
- 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 +110 -103
- package/test/unit/spec/locus-info/selfUtils.js +236 -12
- package/test/unit/spec/media/index.ts +104 -8
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/in-meeting-actions.ts +58 -3
- package/test/unit/spec/meeting/index.js +2649 -837
- package/test/unit/spec/meeting/muteState.js +368 -70
- package/test/unit/spec/meeting/request.js +217 -43
- package/test/unit/spec/meeting/utils.js +146 -165
- package/test/unit/spec/meeting-info/meetinginfov2.js +268 -74
- 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 +131 -74
- package/test/unit/spec/meetings/collection.js +15 -1
- package/test/unit/spec/meetings/index.js +1052 -329
- package/test/unit/spec/meetings/utils.js +163 -14
- package/test/unit/spec/member/index.js +24 -1
- package/test/unit/spec/member/util.js +359 -32
- package/test/unit/spec/members/index.js +402 -54
- package/test/unit/spec/members/request.js +76 -20
- package/test/unit/spec/members/utils.js +191 -4
- package/test/unit/spec/metrics/index.js +46 -20
- package/test/unit/spec/multistream/mediaRequestManager.ts +650 -105
- package/test/unit/spec/multistream/receiveSlot.ts +76 -17
- package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
- package/test/unit/spec/multistream/remoteMedia.ts +32 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
- package/test/unit/spec/networkQualityMonitor/index.js +24 -18
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +176 -27
- package/test/unit/spec/reachability/request.js +66 -0
- package/test/unit/spec/reconnection-manager/index.js +62 -31
- 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 +21 -16
- package/test/unit/spec/roap/request.ts +217 -0
- package/test/unit/spec/roap/turnDiscovery.ts +93 -49
- package/test/unit/spec/stats-analyzer/index.js +116 -60
- package/test/utils/cmr.js +44 -42
- package/test/utils/constants.js +9 -0
- package/test/utils/integrationTestUtils.js +64 -0
- package/test/utils/testUtils.js +63 -99
- 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 -334
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/multistream/multistreamMedia.js +0 -116
- package/dist/multistream/multistreamMedia.js.map +0 -1
- package/src/index.js +0 -15
- package/src/media/internal-media-core-wrapper.ts +0 -9
- package/src/meeting/effectsState.ts +0 -211
- package/src/multistream/multistreamMedia.ts +0 -92
- package/test/unit/spec/meeting/effectsState.js +0 -291
package/src/config.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
// @ts-ignore
|
|
3
|
-
deviceType
|
|
3
|
+
deviceType,
|
|
4
4
|
} from '@webex/common';
|
|
5
5
|
|
|
6
6
|
export default {
|
|
@@ -16,7 +16,7 @@ export default {
|
|
|
16
16
|
receiveVideo: true,
|
|
17
17
|
pstn: false,
|
|
18
18
|
sendShare: false,
|
|
19
|
-
receiveShare: false
|
|
19
|
+
receiveShare: false,
|
|
20
20
|
},
|
|
21
21
|
reconnection: {
|
|
22
22
|
enabled: false,
|
|
@@ -25,7 +25,7 @@ export default {
|
|
|
25
25
|
// Timeout duration to wait for ICE to reconnect if a disconnect is received.
|
|
26
26
|
iceReconnectionTimeout: 10000,
|
|
27
27
|
// Amount of times attempting to rejoin a meeting during reconnect
|
|
28
|
-
maxRejoinAttempts: 3
|
|
28
|
+
maxRejoinAttempts: 3,
|
|
29
29
|
},
|
|
30
30
|
stats: {
|
|
31
31
|
// Enable the webrtc stats analyzer that emits quality degradation events
|
|
@@ -41,7 +41,7 @@ export default {
|
|
|
41
41
|
// Once packet loss hits this ratio, the video will downgrade
|
|
42
42
|
videoPacketLossRatioThreshold: 9, // comparison of packets lost / packets received
|
|
43
43
|
rttThreshold: 500, // 500 ms noticeable quality lag begins based on bandwidth of user
|
|
44
|
-
jitterThreshold: 500 // 500 ms noticeable quality lag begins based on bandwidth of user
|
|
44
|
+
jitterThreshold: 500, // 500 ms noticeable quality lag begins based on bandwidth of user
|
|
45
45
|
},
|
|
46
46
|
metrics: {
|
|
47
47
|
// change to your client name else data will be muddled
|
|
@@ -55,30 +55,30 @@ export default {
|
|
|
55
55
|
mqaMetricsInterval: 60000,
|
|
56
56
|
// send to cisco internal MQA data automatically
|
|
57
57
|
// we already send CA
|
|
58
|
-
autoSendMQA: true
|
|
58
|
+
autoSendMQA: true,
|
|
59
59
|
},
|
|
60
60
|
logging: {
|
|
61
61
|
enable: true,
|
|
62
|
-
verboseEvents: true
|
|
62
|
+
verboseEvents: true,
|
|
63
63
|
},
|
|
64
64
|
resolution: {
|
|
65
65
|
maxWidth: 1280,
|
|
66
66
|
maxHeight: 720,
|
|
67
67
|
idealWidth: 1280,
|
|
68
|
-
idealHeight: 720
|
|
68
|
+
idealHeight: 720,
|
|
69
69
|
},
|
|
70
70
|
screenResolution: {
|
|
71
71
|
maxWidth: 1920,
|
|
72
72
|
maxHeight: 1080,
|
|
73
73
|
idealWidth: 1920,
|
|
74
|
-
idealHeight: 1080
|
|
74
|
+
idealHeight: 1080,
|
|
75
75
|
},
|
|
76
76
|
bandwidth: {
|
|
77
77
|
// please note, these are the maximum bandwidth values
|
|
78
78
|
// the server supports, minimums have to be tested
|
|
79
79
|
audio: 64000,
|
|
80
80
|
video: 4000000,
|
|
81
|
-
startBitrate: 2000
|
|
81
|
+
startBitrate: 2000,
|
|
82
82
|
},
|
|
83
83
|
screenFrameRate: 10,
|
|
84
84
|
videoShareFrameRate: 30,
|
|
@@ -89,11 +89,15 @@ export default {
|
|
|
89
89
|
receiveTranscription: false,
|
|
90
90
|
enableExtmap: false,
|
|
91
91
|
enableAutomaticLLM: false,
|
|
92
|
+
installedOrgID: undefined,
|
|
92
93
|
experimental: {
|
|
93
94
|
enableMediaNegotiatedEvent: false,
|
|
94
95
|
enableUnifiedMeetings: false,
|
|
95
96
|
enableAdhocMeetings: false,
|
|
96
|
-
enableTurnDiscovery:
|
|
97
|
-
}
|
|
98
|
-
|
|
97
|
+
enableTurnDiscovery: true,
|
|
98
|
+
},
|
|
99
|
+
degradationPreferences: {
|
|
100
|
+
maxMacroblocksLimit: 8192,
|
|
101
|
+
},
|
|
102
|
+
},
|
|
99
103
|
};
|
package/src/constants.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @ts-ignore
|
|
2
|
-
import {
|
|
2
|
+
import {hydraTypes} from '@webex/common';
|
|
3
3
|
|
|
4
4
|
// *********** LOWERCASE / CAMELCASE STRINGS ************
|
|
5
5
|
|
|
@@ -7,10 +7,12 @@ export const AUDIO = 'audio';
|
|
|
7
7
|
export const AUDIO_INPUT = 'audioinput';
|
|
8
8
|
export const AUDIO_STATUS = 'audioStatus';
|
|
9
9
|
export const ALERT = 'alert';
|
|
10
|
+
export const ALIAS = 'alias';
|
|
10
11
|
export const ANSWER = 'answer';
|
|
11
12
|
|
|
12
13
|
export const CALL = 'call';
|
|
13
14
|
export const CORRELATION_ID = 'correlationId';
|
|
15
|
+
export const MEETINGNUMBER = 'meetingNumber';
|
|
14
16
|
export const CONVERSATION_URL = 'conversationUrl';
|
|
15
17
|
export const CALENDAR = 'calendar';
|
|
16
18
|
export const CALENDAR_EVENTS_API = 'calendarEvents';
|
|
@@ -93,6 +95,7 @@ export const _JOINED_ = 'JOINED';
|
|
|
93
95
|
|
|
94
96
|
export const _LOCUS_ID_ = 'LOCUS_ID';
|
|
95
97
|
export const _LEFT_ = 'LEFT';
|
|
98
|
+
export const _MOVED_ = 'MOVED';
|
|
96
99
|
|
|
97
100
|
export const _MEETING_LINK_ = 'MEETING_LINK';
|
|
98
101
|
export const _MEETING_UUID_ = 'MEETING_UUID';
|
|
@@ -288,6 +291,7 @@ export const EVENT_TRIGGERS = {
|
|
|
288
291
|
MEETING_STOPPED_RECORDING: 'meeting:recording:stopped',
|
|
289
292
|
MEETING_STARTED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:started',
|
|
290
293
|
MEETING_STOPPED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:stopped',
|
|
294
|
+
MEETING_RECEIVE_REACTIONS: 'meeting:receiveReactions',
|
|
291
295
|
MEETING_PAUSED_RECORDING: 'meeting:recording:paused',
|
|
292
296
|
MEETING_RESUMED_RECORDING: 'meeting:recording:resumed',
|
|
293
297
|
MEETING_ADDED: 'meeting:added',
|
|
@@ -296,6 +300,8 @@ export const EVENT_TRIGGERS = {
|
|
|
296
300
|
MEETING_RINGING_STOP: 'meeting:ringingStop',
|
|
297
301
|
MEETING_SELF_LOBBY_WAITING: 'meeting:self:lobbyWaiting',
|
|
298
302
|
MEETING_SELF_GUEST_ADMITTED: 'meeting:self:guestAdmitted',
|
|
303
|
+
MEETING_SELF_VIDEO_MUTED_BY_OTHERS: 'meeting:self:videoMutedByOthers',
|
|
304
|
+
MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS: 'meeting:self:videoUnmutedByOthers',
|
|
299
305
|
MEETING_SELF_MUTED_BY_OTHERS: 'meeting:self:mutedByOthers',
|
|
300
306
|
MEETING_SELF_UNMUTED_BY_OTHERS: 'meeting:self:unmutedByOthers',
|
|
301
307
|
MEETING_SELF_REQUESTED_TO_UNMUTE: 'meeting:self:requestedToUnmute',
|
|
@@ -304,7 +310,14 @@ export const EVENT_TRIGGERS = {
|
|
|
304
310
|
MEETING_SELF_IS_SHARING_BLOCKED: 'meeting:self:isSharingBlocked',
|
|
305
311
|
MEETING_CONTROLS_LAYOUT_UPDATE: 'meeting:layout:update',
|
|
306
312
|
MEETING_ENTRY_EXIT_TONE_UPDATE: 'meeting:entryExitTone:update',
|
|
313
|
+
MEETING_BREAKOUTS_UPDATE: 'meeting:breakouts:update',
|
|
314
|
+
MEETING_BREAKOUTS_CLOSING: 'meeting:breakouts:closing',
|
|
315
|
+
MEETING_BREAKOUTS_MESSAGE: 'meeting:breakouts:message',
|
|
316
|
+
MEETING_BREAKOUTS_ASK_RETURN_TO_MAIN: 'meeting:breakouts:askReturnToMain',
|
|
317
|
+
MEETING_BREAKOUTS_LEAVE: 'meeting:breakouts:leave',
|
|
318
|
+
MEETING_BREAKOUTS_ASK_FOR_HELP: 'meeting:breakouts:askForHelp',
|
|
307
319
|
MEMBERS_UPDATE: 'members:update',
|
|
320
|
+
MEMBERS_CLEAR: 'members:clear',
|
|
308
321
|
MEMBERS_CONTENT_UPDATE: 'members:content:update',
|
|
309
322
|
MEMBERS_HOST_UPDATE: 'members:host:update',
|
|
310
323
|
MEMBERS_SELF_UPDATE: 'members:self:update',
|
|
@@ -331,7 +344,7 @@ export const EVENT_TRIGGERS = {
|
|
|
331
344
|
REMOTE_VIDEO_SOURCE_COUNT_CHANGED: 'media:remoteVideoSourceCountChanged',
|
|
332
345
|
REMOTE_AUDIO_SOURCE_COUNT_CHANGED: 'media:remoteAudioSourceCountChanged',
|
|
333
346
|
REMOTE_MEDIA_AUDIO_CREATED: 'media:remoteAudio:created',
|
|
334
|
-
REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:
|
|
347
|
+
REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:remoteScreenShareAudio:created',
|
|
335
348
|
REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED: 'media:remoteVideo:layoutChanged',
|
|
336
349
|
};
|
|
337
350
|
|
|
@@ -356,6 +369,7 @@ export const MEETING_REMOVED_REASON = {
|
|
|
356
369
|
FULLSTATE_REMOVED: 'FULLSTATE_REMOVED', // meeting got dropped ? not sure
|
|
357
370
|
MEETING_INACTIVE_TERMINATING: 'MEETING_INACTIVE_TERMINATING', // Meeting got ended or everyone left the meeting
|
|
358
371
|
CLIENT_LEAVE_REQUEST: 'CLIENT_LEAVE_REQUEST', // You triggered leave meeting
|
|
372
|
+
CLIENT_LEAVE_REQUEST_TAB_CLOSED: 'CLIENT_LEAVE_REQUEST_TAB_CLOSED', // You triggered leave meeting, such as closing the browser tab directly
|
|
359
373
|
USER_ENDED_SHARE_STREAMS: 'USER_ENDED_SHARE_STREAMS', // user triggered stop share
|
|
360
374
|
NO_MEETINGS_TO_SYNC: 'NO_MEETINGS_TO_SYNC', // After the syncMeeting no meeting exists
|
|
361
375
|
MEETING_CONNECTION_FAILED: 'MEETING_CONNECTION_FAILED', // meeting failed to connect due to ice failures or firewall issue
|
|
@@ -373,6 +387,7 @@ export const CALL_REMOVED_REASON = {
|
|
|
373
387
|
export const SHARE_STOPPED_REASON = {
|
|
374
388
|
SELF_STOPPED: 'SELF_STOPPED',
|
|
375
389
|
MEETING_REJOIN: 'MEETING_REJOIN',
|
|
390
|
+
MEDIA_RECONNECTION: 'MEDIA_RECONNECTION',
|
|
376
391
|
};
|
|
377
392
|
|
|
378
393
|
export const EVENTS = {
|
|
@@ -448,6 +463,11 @@ export const ERROR_DICTIONARY = {
|
|
|
448
463
|
MESSAGE: 'Captcha is required.',
|
|
449
464
|
CODE: 8,
|
|
450
465
|
},
|
|
466
|
+
BREAKOUT_EDIT: {
|
|
467
|
+
NAME: 'BreakoutEditLockedError',
|
|
468
|
+
MESSAGE: 'Edit lock token mismatch',
|
|
469
|
+
CODE: 9,
|
|
470
|
+
},
|
|
451
471
|
};
|
|
452
472
|
|
|
453
473
|
export const FLOOR_ACTION = {
|
|
@@ -469,6 +489,7 @@ export const HTTP_VERBS = {
|
|
|
469
489
|
POST: 'POST',
|
|
470
490
|
GET: 'GET',
|
|
471
491
|
PATCH: 'PATCH',
|
|
492
|
+
DELETE: 'DELETE',
|
|
472
493
|
};
|
|
473
494
|
|
|
474
495
|
// https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceGatheringState
|
|
@@ -514,15 +535,66 @@ export const LOCUS = {
|
|
|
514
535
|
SYNCDEBUG: 'sync_debug',
|
|
515
536
|
};
|
|
516
537
|
|
|
538
|
+
export const ANNOTATION = {
|
|
539
|
+
ANNOTATION_ON_SHARE_SUPPORTED: 'ANNOTATION_ON_SHARE_SUPPORTED',
|
|
540
|
+
};
|
|
541
|
+
export const BREAKOUTS = {
|
|
542
|
+
STATUS: {
|
|
543
|
+
CLOSING: 'CLOSING',
|
|
544
|
+
CLOSED: 'CLOSED',
|
|
545
|
+
PENDING: 'PENDING',
|
|
546
|
+
OPEN: 'OPEN',
|
|
547
|
+
},
|
|
548
|
+
EVENTS: {
|
|
549
|
+
BREAKOUTS_CLOSING: 'BREAKOUTS_CLOSING',
|
|
550
|
+
MESSAGE: 'MESSAGE',
|
|
551
|
+
MEMBERS_UPDATE: 'MEMBERS_UPDATE',
|
|
552
|
+
ASK_RETURN_TO_MAIN: 'ASK_RETURN_TO_MAIN',
|
|
553
|
+
LEAVE_BREAKOUT: 'LEAVE_BREAKOUT',
|
|
554
|
+
ASK_FOR_HELP: 'ASK_FOR_HELP',
|
|
555
|
+
},
|
|
556
|
+
SESSION_TYPES: {
|
|
557
|
+
MAIN: 'MAIN',
|
|
558
|
+
BREAKOUT: 'BREAKOUT',
|
|
559
|
+
},
|
|
560
|
+
SESSION_STATES: {
|
|
561
|
+
ACTIVE: 'active',
|
|
562
|
+
ASSIGNED: 'assigned',
|
|
563
|
+
ALLOWED: 'allowed',
|
|
564
|
+
ASSIGNED_CURRENT: 'assignedCurrent',
|
|
565
|
+
REQUESTED: 'requested',
|
|
566
|
+
},
|
|
567
|
+
BREAKOUTS_SUPPORTED: 'BREAKOUTS_SUPPORTED',
|
|
568
|
+
ACTION: {
|
|
569
|
+
START: 'START',
|
|
570
|
+
CLOSE: 'CLOSE',
|
|
571
|
+
DELETE: 'DELETE',
|
|
572
|
+
},
|
|
573
|
+
ERROR_CODE: {
|
|
574
|
+
EDIT_LOCK_TOKEN_MISMATCH: 201409024,
|
|
575
|
+
EDIT_NOT_AUTHORIZED: 201403007,
|
|
576
|
+
},
|
|
577
|
+
DEFAULT_DURATION: 60000,
|
|
578
|
+
EDIT_LOCK_STATUS: {
|
|
579
|
+
LOCKED: 'LOCKED',
|
|
580
|
+
NOT_LOCKED: 'NOT_LOCKED',
|
|
581
|
+
UNKNOWN: 'UNKNOWN',
|
|
582
|
+
},
|
|
583
|
+
DEFAULT_TTL: 30,
|
|
584
|
+
};
|
|
585
|
+
|
|
517
586
|
export const LOCUSINFO = {
|
|
518
587
|
EVENTS: {
|
|
519
588
|
CONTROLS_MEETING_LAYOUT_UPDATED: 'CONTROLS_MEETING_LAYOUT_UPDATED',
|
|
520
589
|
CONTROLS_RECORDING_UPDATED: 'CONTROLS_RECORDING_UPDATED',
|
|
521
590
|
CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',
|
|
591
|
+
CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',
|
|
522
592
|
CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
|
|
523
593
|
CONTROLS_ENTRY_EXIT_TONE_UPDATED: 'CONTROLS_ENTRY_EXIT_TONE_UPDATED',
|
|
594
|
+
CONTROLS_JOIN_BREAKOUT_FROM_MAIN: 'CONTROLS_JOIN_BREAKOUT_FROM_MAIN',
|
|
524
595
|
SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',
|
|
525
596
|
SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
|
|
597
|
+
SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
|
|
526
598
|
SELF_REMOTE_MUTE_STATUS_UPDATED: 'SELF_REMOTE_MUTE_STATUS_UPDATED',
|
|
527
599
|
LOCAL_UNMUTE_REQUESTED: 'LOCAL_UNMUTE_REQUESTED',
|
|
528
600
|
LOCAL_UNMUTE_REQUIRED: 'LOCAL_UNMUTE_REQUIRED',
|
|
@@ -540,6 +612,10 @@ export const LOCUSINFO = {
|
|
|
540
612
|
EMBEDDED_APPS_UPDATED: 'EMBEDDED_APPS_UPDATED',
|
|
541
613
|
SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE: 'SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE',
|
|
542
614
|
SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',
|
|
615
|
+
SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',
|
|
616
|
+
MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
|
|
617
|
+
LINKS_SERVICES: 'LINKS_SERVICES',
|
|
618
|
+
SELF_MODERATOR_OR_COHOST_UPGRADE: 'SELF_MODERATOR_OR_COHOST_UPGRADE',
|
|
543
619
|
},
|
|
544
620
|
};
|
|
545
621
|
|
|
@@ -552,6 +628,9 @@ export const LOCUSEVENT = {
|
|
|
552
628
|
// delta events
|
|
553
629
|
DIFFERENCE: 'locus.difference',
|
|
554
630
|
|
|
631
|
+
// Breakout sessions
|
|
632
|
+
BREAKOUT_ROSTER: 'breakout.roster',
|
|
633
|
+
|
|
555
634
|
// screen sharing
|
|
556
635
|
FLOOR_GRANTED: 'locus.floor_granted',
|
|
557
636
|
FLOOR_RELEASED: 'locus.floor_released',
|
|
@@ -722,13 +801,42 @@ export const DISPLAY_HINTS = {
|
|
|
722
801
|
DISPLAY_NON_ENGLISH_ASR: 'DISPLAY_NON_ENGLISH_ASR',
|
|
723
802
|
TRANSCRIPTION_CONTROL_START: 'TRANSCRIPTION_CONTROL_START',
|
|
724
803
|
TRANSCRIPTION_CONTROL_STOP: 'TRANSCRIPTION_CONTROL_STOP',
|
|
804
|
+
SAVE_TRANSCRIPTS_ENABLED: 'SAVE_TRANSCRIPTS_ENABLED',
|
|
725
805
|
WEBEX_ASSISTANT_STATUS_ACTIVE: 'WEBEX_ASSISTANT_STATUS_ACTIVE',
|
|
726
806
|
WAITING_FOR_OTHERS: 'WAITING_FOR_OTHERS',
|
|
807
|
+
ENABLE_REACTIONS: 'ENABLE_REACTIONS',
|
|
808
|
+
DISABLE_REACTIONS: 'DISABLE_REACTIONS',
|
|
809
|
+
REACTIONS_ACTIVE: 'REACTIONS_ACTIVE',
|
|
810
|
+
REACTIONS_INACTIVE: 'REACTIONS_INACTIVE',
|
|
811
|
+
SHARE_CONTROL: 'SHARE_CONTROL',
|
|
812
|
+
ENABLE_MUTE_ON_ENTRY: 'ENABLE_MUTE_ON_ENTRY',
|
|
813
|
+
ENABLE_SHOW_DISPLAY_NAME: 'ENABLE_SHOW_DISPLAY_NAME',
|
|
814
|
+
DISABLE_SHOW_DISPLAY_NAME: 'DISABLE_SHOW_DISPLAY_NAME',
|
|
815
|
+
DISABLE_MUTE_ON_ENTRY: 'DISABLE_MUTE_ON_ENTRY',
|
|
816
|
+
ENABLE_HARD_MUTE: 'ENABLE_HARD_MUTE',
|
|
817
|
+
DISABLE_HARD_MUTE: 'DISABLE_HARD_MUTE',
|
|
818
|
+
MUTE_ALL: 'MUTE_ALL',
|
|
819
|
+
UNMUTE_ALL: 'UNMUTE_ALL',
|
|
820
|
+
PRESENTER_CONTROL: 'PRESENTER_CONTROL',
|
|
821
|
+
CAN_RENAME_SELF_AND_OBSERVED: 'CAN_RENAME_SELF_AND_OBSERVED',
|
|
822
|
+
CAN_RENAME_OTHERS: 'CAN_RENAME_OTHERS',
|
|
823
|
+
|
|
824
|
+
// breakout session
|
|
825
|
+
BREAKOUT_MANAGEMENT: 'BREAKOUT_MANAGEMENT',
|
|
826
|
+
UCF_SUPPRESS_BREAKOUTS_SUPPORT: 'UCF_SUPPRESS_BREAKOUTS_SUPPORT',
|
|
827
|
+
DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',
|
|
828
|
+
DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',
|
|
829
|
+
DISABLE_LOBBY_TO_BREAKOUT: 'DISABLE_LOBBY_TO_BREAKOUT',
|
|
830
|
+
|
|
831
|
+
// participants list
|
|
832
|
+
DISABLE_VIEW_THE_PARTICIPANT_LIST: 'DISABLE_VIEW_THE_PARTICIPANT_LIST',
|
|
833
|
+
ENABLE_VIEW_THE_PARTICIPANT_LIST: 'ENABLE_VIEW_THE_PARTICIPANT_LIST',
|
|
727
834
|
};
|
|
728
835
|
|
|
729
836
|
export const SELF_ROLES = {
|
|
730
837
|
COHOST: 'COHOST',
|
|
731
838
|
MODERATOR: 'MODERATOR',
|
|
839
|
+
ATTENDEE: 'ATTENDEE',
|
|
732
840
|
};
|
|
733
841
|
|
|
734
842
|
export const MEETING_STATE = {
|
|
@@ -813,7 +921,9 @@ export const RESOURCE = {
|
|
|
813
921
|
};
|
|
814
922
|
|
|
815
923
|
export const REACHABILITY = {
|
|
816
|
-
|
|
924
|
+
localStorageResult: 'reachability.result',
|
|
925
|
+
localStorageJoinCookie: 'reachability.joinCookie',
|
|
926
|
+
namespace: 'Reachability',
|
|
817
927
|
};
|
|
818
928
|
|
|
819
929
|
export const ROAP = {
|
|
@@ -848,9 +958,6 @@ export const NETWORK_TYPE = {
|
|
|
848
958
|
};
|
|
849
959
|
|
|
850
960
|
export const STATS = {
|
|
851
|
-
AUDIO_CORRELATE: 'audio',
|
|
852
|
-
VIDEO_CORRELATE: 'video',
|
|
853
|
-
SHARE_CORRELATE: 'share',
|
|
854
961
|
SEND_DIRECTION: 'send',
|
|
855
962
|
RECEIVE_DIRECTION: 'recv',
|
|
856
963
|
REMOTE: 'remote',
|
|
@@ -1040,6 +1147,7 @@ export const MEETING_INFO_FAILURE_REASON = {
|
|
|
1040
1147
|
NONE: 'NONE', // meeting info was retrieved succesfully
|
|
1041
1148
|
WRONG_PASSWORD: 'WRONG_PASSWORD', // meeting requires password and no password or wrong one was provided
|
|
1042
1149
|
WRONG_CAPTCHA: 'WRONG_CAPTCHA', // wbxappapi requires a captcha code or a wrong captcha code was provided
|
|
1150
|
+
POLICY: 'POLICY', // meeting info request violates some meeting policy
|
|
1043
1151
|
OTHER: 'OTHER', // any other error (network, etc)
|
|
1044
1152
|
};
|
|
1045
1153
|
|
|
@@ -1054,3 +1162,8 @@ export const EMBEDDED_APP_TYPES = {
|
|
|
1054
1162
|
SLIDO: 'SLIDO',
|
|
1055
1163
|
OTHER: 'OTHER',
|
|
1056
1164
|
};
|
|
1165
|
+
|
|
1166
|
+
export const DEFAULT_MEETING_INFO_REQUEST_BODY = {
|
|
1167
|
+
supportHostKey: true,
|
|
1168
|
+
supportCountryList: true,
|
|
1169
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
enum Setting {
|
|
2
|
+
disallowUnmute = 'DisallowUnmute',
|
|
3
|
+
muteOnEntry = 'MuteOnEntry',
|
|
4
|
+
muted = 'Muted',
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
enum Control {
|
|
8
|
+
audio = 'audio',
|
|
9
|
+
reactions = 'reactions',
|
|
10
|
+
shareControl = 'shareControl',
|
|
11
|
+
viewTheParticipantList = 'viewTheParticipantList',
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export {Control, Setting};
|
|
15
|
+
|
|
16
|
+
export default Setting;
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import {camelCase} from 'lodash';
|
|
2
|
+
import PermissionError from '../common/errors/permission';
|
|
3
|
+
import {CONTROLS, HTTP_VERBS} from '../constants';
|
|
4
|
+
import MeetingRequest from '../meeting/request';
|
|
5
|
+
import LoggerProxy from '../common/logs/logger-proxy';
|
|
6
|
+
import {Control, Setting} from './enums';
|
|
7
|
+
import {ControlConfig} from './types';
|
|
8
|
+
import Util from './util';
|
|
9
|
+
import {CAN_SET, CAN_UNSET, ENABLED} from './constants';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* docs
|
|
13
|
+
* https://sqbu-github.cisco.com/pages/WebExSquared/locus/guides/mute.html
|
|
14
|
+
* https://confluence-eng-gpk2.cisco.com/conf/display/LOCUS/Hard+Mute+and+Audio+Privacy#HardMuteandAudioPrivacy-SelfMuteonEntry
|
|
15
|
+
* https://confluence-eng-gpk2.cisco.com/conf/pages/viewpage.action?spaceKey=UC&title=WEBEX-124454%3A+UCF%3A+Hard+mute+support+for+Teams+joining+Webex+meeting
|
|
16
|
+
* https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-180867
|
|
17
|
+
* https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-393351
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @description ControlsOptionsManager is responsible for handling the behavior of participant controls when somebody joins a meeting
|
|
22
|
+
* @export
|
|
23
|
+
* @private
|
|
24
|
+
* @class Recording
|
|
25
|
+
*/
|
|
26
|
+
export default class ControlsOptionsManager {
|
|
27
|
+
/**
|
|
28
|
+
* @instance
|
|
29
|
+
* @type {MeetingRequest}
|
|
30
|
+
* @private
|
|
31
|
+
* @memberof ControlsOptionsManager
|
|
32
|
+
*/
|
|
33
|
+
private request: MeetingRequest;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @instance
|
|
37
|
+
* @type {Array}
|
|
38
|
+
* @private
|
|
39
|
+
* @memberof ControlsOptionsManager
|
|
40
|
+
*/
|
|
41
|
+
private displayHints: Array<string> = [];
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* @instance
|
|
45
|
+
* @type {string}
|
|
46
|
+
* @private
|
|
47
|
+
* @memberof ControlsOptionsManager
|
|
48
|
+
*/
|
|
49
|
+
private locusUrl: string;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @param {MeetingRequest} request
|
|
53
|
+
* @param {Object} options
|
|
54
|
+
* @constructor
|
|
55
|
+
* @memberof ControlsOptionsManager
|
|
56
|
+
*/
|
|
57
|
+
constructor(
|
|
58
|
+
request: MeetingRequest,
|
|
59
|
+
options?: {
|
|
60
|
+
locusUrl: string;
|
|
61
|
+
displayHints?: Array<string>;
|
|
62
|
+
}
|
|
63
|
+
) {
|
|
64
|
+
this.initialize(request);
|
|
65
|
+
this.set(options);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* @param {MeetingRequest} request
|
|
70
|
+
* @returns {void}
|
|
71
|
+
* @private
|
|
72
|
+
* @memberof ControlsOptionsManager
|
|
73
|
+
*/
|
|
74
|
+
private initialize(request: MeetingRequest) {
|
|
75
|
+
this.request = request;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @param {Object} options
|
|
80
|
+
* @returns {void}
|
|
81
|
+
* @public
|
|
82
|
+
* @memberof ControlsOptionsManager
|
|
83
|
+
*/
|
|
84
|
+
public set(options?: {locusUrl: string; displayHints?: Array<string>}) {
|
|
85
|
+
this.extract(options);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* @param {string} url
|
|
90
|
+
* @returns {void}
|
|
91
|
+
* @public
|
|
92
|
+
* @memberof ControlsOptionsManager
|
|
93
|
+
*/
|
|
94
|
+
public setLocusUrl(url: string) {
|
|
95
|
+
this.locusUrl = url;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* @param {Array} hints
|
|
100
|
+
* @returns {void}
|
|
101
|
+
* @public
|
|
102
|
+
* @memberof ControlsOptionsManager
|
|
103
|
+
*/
|
|
104
|
+
public setDisplayHints(hints: Array<string>) {
|
|
105
|
+
this.displayHints = hints;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* @returns {string}
|
|
110
|
+
* @public
|
|
111
|
+
* @memberof ControlsOptionsManager
|
|
112
|
+
*/
|
|
113
|
+
public getLocusUrl() {
|
|
114
|
+
return this.locusUrl;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* @returns {Array}
|
|
119
|
+
* @public
|
|
120
|
+
* @memberof ControlsOptionsManager
|
|
121
|
+
*/
|
|
122
|
+
public getDisplayHints() {
|
|
123
|
+
return this.displayHints;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* @param {Object} options
|
|
128
|
+
* @returns {void}
|
|
129
|
+
* @private
|
|
130
|
+
* @memberof ControlsOptionsManager
|
|
131
|
+
*/
|
|
132
|
+
private extract(options?: {locusUrl: string; displayHints?: Array<string>}) {
|
|
133
|
+
this.setDisplayHints(options?.displayHints);
|
|
134
|
+
this.setLocusUrl(options?.locusUrl);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Set controls for this meeting.
|
|
139
|
+
*
|
|
140
|
+
* @param {Array<ControlConfig>} controls - Spread Array of ControlConfigs
|
|
141
|
+
* @returns {Promise<Array<any>>}- Promise resolving if the request was successful.
|
|
142
|
+
*/
|
|
143
|
+
public update(...controls: Array<ControlConfig>) {
|
|
144
|
+
const payloads = controls.map((control) => {
|
|
145
|
+
if (!Object.keys(Control).includes(control.scope)) {
|
|
146
|
+
throw new Error(
|
|
147
|
+
`updating meeting control scope "${control.scope}" is not a supported scope`
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (!Util.canUpdate(control, this.displayHints)) {
|
|
152
|
+
throw new PermissionError(
|
|
153
|
+
`updating meeting control scope "${control.scope}" not allowed, due to moderator property.`
|
|
154
|
+
);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
return {
|
|
158
|
+
[control.scope]: control.properties,
|
|
159
|
+
};
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
return payloads.reduce((previous, payload) => {
|
|
163
|
+
return previous.then(() =>
|
|
164
|
+
// @ts-ignore
|
|
165
|
+
this.request.request({
|
|
166
|
+
uri: `${this.locusUrl}/${CONTROLS}`,
|
|
167
|
+
body: payload,
|
|
168
|
+
method: HTTP_VERBS.PATCH,
|
|
169
|
+
})
|
|
170
|
+
);
|
|
171
|
+
}, Promise.resolve());
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* @param {Setting} setting
|
|
176
|
+
* @private
|
|
177
|
+
* @memberof ControlsOptionsManager
|
|
178
|
+
* @returns {Promise}
|
|
179
|
+
*/
|
|
180
|
+
private setControls(setting: {[key in Setting]?: boolean}): Promise<any> {
|
|
181
|
+
LoggerProxy.logger.log(
|
|
182
|
+
`ControlsOptionsManager:index#setControls --> ${JSON.stringify(setting)}`
|
|
183
|
+
);
|
|
184
|
+
|
|
185
|
+
const body: Record<string, any> = {};
|
|
186
|
+
let error: PermissionError;
|
|
187
|
+
|
|
188
|
+
let shouldSkipCheckToMergeBody = false;
|
|
189
|
+
|
|
190
|
+
Object.entries(setting).forEach(([key, value]) => {
|
|
191
|
+
if (
|
|
192
|
+
!shouldSkipCheckToMergeBody &&
|
|
193
|
+
!Util?.[`${value ? CAN_SET : CAN_UNSET}${key}`](this.displayHints)
|
|
194
|
+
) {
|
|
195
|
+
error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
if (error) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
switch (key) {
|
|
203
|
+
case Setting.muted:
|
|
204
|
+
shouldSkipCheckToMergeBody = true;
|
|
205
|
+
body.audio = body.audio
|
|
206
|
+
? {...body.audio, [camelCase(key)]: value}
|
|
207
|
+
: {[camelCase(key)]: value};
|
|
208
|
+
break;
|
|
209
|
+
|
|
210
|
+
case Setting.disallowUnmute:
|
|
211
|
+
case Setting.muteOnEntry:
|
|
212
|
+
if (Object.keys(setting).includes(Setting.muted)) {
|
|
213
|
+
body.audio = body.audio
|
|
214
|
+
? {...body.audio, [camelCase(key)]: value}
|
|
215
|
+
: {[camelCase(key)]: value};
|
|
216
|
+
body.audio[camelCase(key)] = value;
|
|
217
|
+
} else {
|
|
218
|
+
body[camelCase(key)] = {[ENABLED]: value};
|
|
219
|
+
}
|
|
220
|
+
break;
|
|
221
|
+
|
|
222
|
+
default:
|
|
223
|
+
error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
if (error) {
|
|
228
|
+
return Promise.reject(error);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// @ts-ignore
|
|
232
|
+
return this.request.request({
|
|
233
|
+
uri: `${this.locusUrl}/${CONTROLS}`,
|
|
234
|
+
body,
|
|
235
|
+
method: HTTP_VERBS.PATCH,
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* @public
|
|
241
|
+
* @param {boolean} enabled
|
|
242
|
+
* @memberof ControlsOptionsManager
|
|
243
|
+
* @returns {Promise}
|
|
244
|
+
*/
|
|
245
|
+
public setMuteOnEntry(enabled: boolean): Promise<any> {
|
|
246
|
+
return this.setControls({[Setting.muteOnEntry]: enabled});
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* @public
|
|
251
|
+
* @param {boolean} enabled
|
|
252
|
+
* @memberof ControlsOptionsManager
|
|
253
|
+
* @returns {Promise}
|
|
254
|
+
*/
|
|
255
|
+
public setDisallowUnmute(enabled: boolean): Promise<any> {
|
|
256
|
+
return this.setControls({[Setting.disallowUnmute]: enabled});
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* @public
|
|
261
|
+
* @param {boolean} mutedEnabled
|
|
262
|
+
* @param {boolean} disallowUnmuteEnabled
|
|
263
|
+
* @param {boolean} muteOnEntryEnabled
|
|
264
|
+
* @memberof ControlsOptionsManager
|
|
265
|
+
* @returns {Promise}
|
|
266
|
+
*/
|
|
267
|
+
public setMuteAll(
|
|
268
|
+
mutedEnabled: boolean,
|
|
269
|
+
disallowUnmuteEnabled: boolean,
|
|
270
|
+
muteOnEntryEnabled: boolean
|
|
271
|
+
): Promise<any> {
|
|
272
|
+
return this.setControls({
|
|
273
|
+
[Setting.muted]: mutedEnabled,
|
|
274
|
+
[Setting.disallowUnmute]: disallowUnmuteEnabled,
|
|
275
|
+
[Setting.muteOnEntry]: muteOnEntryEnabled,
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import {Control} from './enums';
|
|
2
|
+
|
|
3
|
+
export interface ControlProperties {
|
|
4
|
+
/**
|
|
5
|
+
* A list of additional properties that apply to various specific settings.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* The values stored here, per the service, are fully ambiguous, an can vary
|
|
9
|
+
* depending on which control scope is being configured.
|
|
10
|
+
*/
|
|
11
|
+
[key: string]: boolean;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface AudioProperties {
|
|
15
|
+
muted?: boolean;
|
|
16
|
+
disallowUnmute?: boolean;
|
|
17
|
+
muteOnEntry?: boolean;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface ReactionsProperties {
|
|
21
|
+
enabled?: boolean;
|
|
22
|
+
showDisplayNameWithReactions?: boolean;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface ShareControlProperties {
|
|
26
|
+
control?: 'ANYONE' | 'MODERATOR_PRESENTER';
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface ViewTheParticipantListProperties {
|
|
30
|
+
enabled?: boolean;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export type Properties =
|
|
34
|
+
| AudioProperties
|
|
35
|
+
| ReactionsProperties
|
|
36
|
+
| ShareControlProperties
|
|
37
|
+
| ViewTheParticipantListProperties;
|
|
38
|
+
|
|
39
|
+
export interface ControlConfig<Props = Properties> {
|
|
40
|
+
/**
|
|
41
|
+
* The scope of the control within this object.
|
|
42
|
+
*/
|
|
43
|
+
scope: Control;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* The properties to assign to this control.
|
|
47
|
+
*/
|
|
48
|
+
properties: Props;
|
|
49
|
+
}
|