@webex/plugin-meetings 3.0.0-beta.11 → 3.0.0-beta.111
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 +944 -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 +193 -53
- 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 +27 -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 +286 -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 +94 -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 +383 -212
- 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 +67 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2477 -2417
- 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 +296 -289
- 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 +278 -281
- 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 +89 -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 +101 -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 +50 -16
- 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 +93 -162
- 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 +2 -4
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js +19 -23
- package/dist/reactions/reactions.type.js.map +1 -1
- 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 +984 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +15 -0
- package/dist/types/controls-options-manager/index.d.ts +136 -0
- package/dist/types/controls-options-manager/types.d.ts +43 -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 +137 -0
- package/dist/types/meeting/index.d.ts +1753 -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 +115 -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 +157 -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 +195 -0
- package/dist/types/metrics/constants.d.ts +54 -0
- package/dist/types/metrics/index.d.ts +169 -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 +220 -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 +835 -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 +141 -6
- package/src/controls-options-manager/constants.ts +5 -0
- package/src/controls-options-manager/enums.ts +18 -0
- package/src/controls-options-manager/index.ts +278 -0
- package/src/controls-options-manager/types.ts +59 -0
- package/src/controls-options-manager/util.ts +274 -0
- package/src/index.ts +33 -0
- package/src/locus-info/controlsUtils.ts +145 -24
- package/src/locus-info/fullState.ts +15 -11
- package/src/locus-info/hostUtils.ts +4 -3
- package/src/locus-info/index.ts +326 -55
- 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 +139 -3
- package/src/meeting/index.ts +2674 -1543
- package/src/meeting/muteState.ts +271 -68
- package/src/meeting/request.ts +231 -135
- 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 +201 -113
- 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 +95 -49
- package/src/member/types.ts +24 -0
- package/src/member/util.ts +106 -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 +302 -90
- package/src/metrics/constants.ts +1 -6
- package/src/metrics/index.ts +124 -95
- 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 +8 -8
- package/src/reactions/reactions.type.ts +31 -5
- 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 +670 -466
- 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 +1542 -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 +504 -0
- package/test/unit/spec/fixture/locus.js +93 -90
- package/test/unit/spec/locus-info/controlsUtils.js +289 -32
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +585 -5
- 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 +66 -3
- package/test/unit/spec/meeting/index.js +2934 -946
- package/test/unit/spec/meeting/muteState.js +368 -70
- package/test/unit/spec/meeting/request.js +194 -44
- package/test/unit/spec/meeting/utils.js +146 -165
- package/test/unit/spec/meeting-info/meetinginfov2.js +333 -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 +383 -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 +104 -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,8 +344,16 @@ 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',
|
|
349
|
+
// Controls
|
|
350
|
+
MEETING_CONTROLS_MUTE_ON_ENTRY_UPDATED: 'meeting:controls:mute-on-entry:updated',
|
|
351
|
+
MEETING_CONTROLS_SHARE_CONTROL_UPDATED: 'meeting:controls:share-control:updated',
|
|
352
|
+
MEETING_CONTROLS_DISALLOW_UNMUTE_UPDATED: 'meeting:controls:disallow-unmute:updated',
|
|
353
|
+
MEETING_CONTROLS_REACTIONS_UPDATED: 'meeting:controls:reactions:updated',
|
|
354
|
+
MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED:
|
|
355
|
+
'meeting:controls:view-the-participants-list:updated',
|
|
356
|
+
MEETING_CONTROLS_RAISE_HAND_UPDATED: 'meeting:controls:raise-hand:updated',
|
|
336
357
|
};
|
|
337
358
|
|
|
338
359
|
export const EVENT_TYPES = {
|
|
@@ -356,6 +377,7 @@ export const MEETING_REMOVED_REASON = {
|
|
|
356
377
|
FULLSTATE_REMOVED: 'FULLSTATE_REMOVED', // meeting got dropped ? not sure
|
|
357
378
|
MEETING_INACTIVE_TERMINATING: 'MEETING_INACTIVE_TERMINATING', // Meeting got ended or everyone left the meeting
|
|
358
379
|
CLIENT_LEAVE_REQUEST: 'CLIENT_LEAVE_REQUEST', // You triggered leave meeting
|
|
380
|
+
CLIENT_LEAVE_REQUEST_TAB_CLOSED: 'CLIENT_LEAVE_REQUEST_TAB_CLOSED', // You triggered leave meeting, such as closing the browser tab directly
|
|
359
381
|
USER_ENDED_SHARE_STREAMS: 'USER_ENDED_SHARE_STREAMS', // user triggered stop share
|
|
360
382
|
NO_MEETINGS_TO_SYNC: 'NO_MEETINGS_TO_SYNC', // After the syncMeeting no meeting exists
|
|
361
383
|
MEETING_CONNECTION_FAILED: 'MEETING_CONNECTION_FAILED', // meeting failed to connect due to ice failures or firewall issue
|
|
@@ -373,6 +395,7 @@ export const CALL_REMOVED_REASON = {
|
|
|
373
395
|
export const SHARE_STOPPED_REASON = {
|
|
374
396
|
SELF_STOPPED: 'SELF_STOPPED',
|
|
375
397
|
MEETING_REJOIN: 'MEETING_REJOIN',
|
|
398
|
+
MEDIA_RECONNECTION: 'MEDIA_RECONNECTION',
|
|
376
399
|
};
|
|
377
400
|
|
|
378
401
|
export const EVENTS = {
|
|
@@ -448,6 +471,11 @@ export const ERROR_DICTIONARY = {
|
|
|
448
471
|
MESSAGE: 'Captcha is required.',
|
|
449
472
|
CODE: 8,
|
|
450
473
|
},
|
|
474
|
+
BREAKOUT_EDIT: {
|
|
475
|
+
NAME: 'BreakoutEditLockedError',
|
|
476
|
+
MESSAGE: 'Edit lock token mismatch',
|
|
477
|
+
CODE: 9,
|
|
478
|
+
},
|
|
451
479
|
};
|
|
452
480
|
|
|
453
481
|
export const FLOOR_ACTION = {
|
|
@@ -469,6 +497,7 @@ export const HTTP_VERBS = {
|
|
|
469
497
|
POST: 'POST',
|
|
470
498
|
GET: 'GET',
|
|
471
499
|
PATCH: 'PATCH',
|
|
500
|
+
DELETE: 'DELETE',
|
|
472
501
|
};
|
|
473
502
|
|
|
474
503
|
// https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceGatheringState
|
|
@@ -514,15 +543,72 @@ export const LOCUS = {
|
|
|
514
543
|
SYNCDEBUG: 'sync_debug',
|
|
515
544
|
};
|
|
516
545
|
|
|
546
|
+
export const ANNOTATION = {
|
|
547
|
+
ANNOTATION_ON_SHARE_SUPPORTED: 'ANNOTATION_ON_SHARE_SUPPORTED',
|
|
548
|
+
};
|
|
549
|
+
export const BREAKOUTS = {
|
|
550
|
+
STATUS: {
|
|
551
|
+
CLOSING: 'CLOSING',
|
|
552
|
+
CLOSED: 'CLOSED',
|
|
553
|
+
PENDING: 'PENDING',
|
|
554
|
+
OPEN: 'OPEN',
|
|
555
|
+
},
|
|
556
|
+
EVENTS: {
|
|
557
|
+
BREAKOUTS_CLOSING: 'BREAKOUTS_CLOSING',
|
|
558
|
+
MESSAGE: 'MESSAGE',
|
|
559
|
+
MEMBERS_UPDATE: 'MEMBERS_UPDATE',
|
|
560
|
+
ASK_RETURN_TO_MAIN: 'ASK_RETURN_TO_MAIN',
|
|
561
|
+
LEAVE_BREAKOUT: 'LEAVE_BREAKOUT',
|
|
562
|
+
ASK_FOR_HELP: 'ASK_FOR_HELP',
|
|
563
|
+
},
|
|
564
|
+
SESSION_TYPES: {
|
|
565
|
+
MAIN: 'MAIN',
|
|
566
|
+
BREAKOUT: 'BREAKOUT',
|
|
567
|
+
},
|
|
568
|
+
SESSION_STATES: {
|
|
569
|
+
ACTIVE: 'active',
|
|
570
|
+
ASSIGNED: 'assigned',
|
|
571
|
+
ALLOWED: 'allowed',
|
|
572
|
+
ASSIGNED_CURRENT: 'assignedCurrent',
|
|
573
|
+
REQUESTED: 'requested',
|
|
574
|
+
},
|
|
575
|
+
BREAKOUTS_SUPPORTED: 'BREAKOUTS_SUPPORTED',
|
|
576
|
+
ACTION: {
|
|
577
|
+
START: 'START',
|
|
578
|
+
CLOSE: 'CLOSE',
|
|
579
|
+
DELETE: 'DELETE',
|
|
580
|
+
},
|
|
581
|
+
ERROR_CODE: {
|
|
582
|
+
EDIT_LOCK_TOKEN_MISMATCH: 201409024,
|
|
583
|
+
EDIT_NOT_AUTHORIZED: 201403007,
|
|
584
|
+
},
|
|
585
|
+
DEFAULT_DURATION: 60000,
|
|
586
|
+
EDIT_LOCK_STATUS: {
|
|
587
|
+
LOCKED: 'LOCKED',
|
|
588
|
+
NOT_LOCKED: 'NOT_LOCKED',
|
|
589
|
+
UNKNOWN: 'UNKNOWN',
|
|
590
|
+
},
|
|
591
|
+
DEFAULT_TTL: 30,
|
|
592
|
+
};
|
|
593
|
+
|
|
517
594
|
export const LOCUSINFO = {
|
|
518
595
|
EVENTS: {
|
|
519
596
|
CONTROLS_MEETING_LAYOUT_UPDATED: 'CONTROLS_MEETING_LAYOUT_UPDATED',
|
|
520
597
|
CONTROLS_RECORDING_UPDATED: 'CONTROLS_RECORDING_UPDATED',
|
|
521
598
|
CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',
|
|
599
|
+
CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',
|
|
522
600
|
CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
|
|
523
601
|
CONTROLS_ENTRY_EXIT_TONE_UPDATED: 'CONTROLS_ENTRY_EXIT_TONE_UPDATED',
|
|
602
|
+
CONTROLS_JOIN_BREAKOUT_FROM_MAIN: 'CONTROLS_JOIN_BREAKOUT_FROM_MAIN',
|
|
603
|
+
CONTROLS_MUTE_ON_ENTRY_CHANGED: 'CONTROLS_MUTE_ON_ENTRY_CHANGED',
|
|
604
|
+
CONTROLS_SHARE_CONTROL_CHANGED: 'CONTROLS_SHARE_CONTROL_CHANGED',
|
|
605
|
+
CONTROLS_DISALLOW_UNMUTE_CHANGED: 'CONTROLS_DISALLOW_UNMUTE_CHANGED',
|
|
606
|
+
CONTROLS_REACTIONS_CHANGED: 'CONTROLS_REACTIONS_CHANGED',
|
|
607
|
+
CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED: 'CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED',
|
|
608
|
+
CONTROLS_RAISE_HAND_CHANGED: 'CONTROLS_RAISE_HAND_CHANGED',
|
|
524
609
|
SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',
|
|
525
610
|
SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
|
|
611
|
+
SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
|
|
526
612
|
SELF_REMOTE_MUTE_STATUS_UPDATED: 'SELF_REMOTE_MUTE_STATUS_UPDATED',
|
|
527
613
|
LOCAL_UNMUTE_REQUESTED: 'LOCAL_UNMUTE_REQUESTED',
|
|
528
614
|
LOCAL_UNMUTE_REQUIRED: 'LOCAL_UNMUTE_REQUIRED',
|
|
@@ -540,6 +626,10 @@ export const LOCUSINFO = {
|
|
|
540
626
|
EMBEDDED_APPS_UPDATED: 'EMBEDDED_APPS_UPDATED',
|
|
541
627
|
SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE: 'SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE',
|
|
542
628
|
SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',
|
|
629
|
+
SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',
|
|
630
|
+
MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
|
|
631
|
+
LINKS_SERVICES: 'LINKS_SERVICES',
|
|
632
|
+
SELF_MODERATOR_OR_COHOST_UPGRADE: 'SELF_MODERATOR_OR_COHOST_UPGRADE',
|
|
543
633
|
},
|
|
544
634
|
};
|
|
545
635
|
|
|
@@ -552,6 +642,9 @@ export const LOCUSEVENT = {
|
|
|
552
642
|
// delta events
|
|
553
643
|
DIFFERENCE: 'locus.difference',
|
|
554
644
|
|
|
645
|
+
// Breakout sessions
|
|
646
|
+
BREAKOUT_ROSTER: 'breakout.roster',
|
|
647
|
+
|
|
555
648
|
// screen sharing
|
|
556
649
|
FLOOR_GRANTED: 'locus.floor_granted',
|
|
557
650
|
FLOOR_RELEASED: 'locus.floor_released',
|
|
@@ -722,13 +815,50 @@ export const DISPLAY_HINTS = {
|
|
|
722
815
|
DISPLAY_NON_ENGLISH_ASR: 'DISPLAY_NON_ENGLISH_ASR',
|
|
723
816
|
TRANSCRIPTION_CONTROL_START: 'TRANSCRIPTION_CONTROL_START',
|
|
724
817
|
TRANSCRIPTION_CONTROL_STOP: 'TRANSCRIPTION_CONTROL_STOP',
|
|
818
|
+
SAVE_TRANSCRIPTS_ENABLED: 'SAVE_TRANSCRIPTS_ENABLED',
|
|
725
819
|
WEBEX_ASSISTANT_STATUS_ACTIVE: 'WEBEX_ASSISTANT_STATUS_ACTIVE',
|
|
726
820
|
WAITING_FOR_OTHERS: 'WAITING_FOR_OTHERS',
|
|
821
|
+
ENABLE_REACTIONS: 'ENABLE_REACTIONS',
|
|
822
|
+
DISABLE_REACTIONS: 'DISABLE_REACTIONS',
|
|
823
|
+
REACTIONS_ACTIVE: 'REACTIONS_ACTIVE',
|
|
824
|
+
REACTIONS_INACTIVE: 'REACTIONS_INACTIVE',
|
|
825
|
+
SHARE_CONTROL: 'SHARE_CONTROL',
|
|
826
|
+
ENABLE_MUTE_ON_ENTRY: 'ENABLE_MUTE_ON_ENTRY',
|
|
827
|
+
ENABLE_SHOW_DISPLAY_NAME: 'ENABLE_SHOW_DISPLAY_NAME',
|
|
828
|
+
DISABLE_SHOW_DISPLAY_NAME: 'DISABLE_SHOW_DISPLAY_NAME',
|
|
829
|
+
DISABLE_MUTE_ON_ENTRY: 'DISABLE_MUTE_ON_ENTRY',
|
|
830
|
+
ENABLE_HARD_MUTE: 'ENABLE_HARD_MUTE',
|
|
831
|
+
DISABLE_HARD_MUTE: 'DISABLE_HARD_MUTE',
|
|
832
|
+
MUTE_ALL: 'MUTE_ALL',
|
|
833
|
+
UNMUTE_ALL: 'UNMUTE_ALL',
|
|
834
|
+
PRESENTER_CONTROL: 'PRESENTER_CONTROL',
|
|
835
|
+
CAN_RENAME_SELF_AND_OBSERVED: 'CAN_RENAME_SELF_AND_OBSERVED',
|
|
836
|
+
CAN_RENAME_OTHERS: 'CAN_RENAME_OTHERS',
|
|
837
|
+
|
|
838
|
+
// breakout session
|
|
839
|
+
BREAKOUT_MANAGEMENT: 'BREAKOUT_MANAGEMENT',
|
|
840
|
+
UCF_SUPPRESS_BREAKOUTS_SUPPORT: 'UCF_SUPPRESS_BREAKOUTS_SUPPORT',
|
|
841
|
+
DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',
|
|
842
|
+
DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',
|
|
843
|
+
DISABLE_LOBBY_TO_BREAKOUT: 'DISABLE_LOBBY_TO_BREAKOUT',
|
|
844
|
+
|
|
845
|
+
// participants list
|
|
846
|
+
DISABLE_VIEW_THE_PARTICIPANT_LIST: 'DISABLE_VIEW_THE_PARTICIPANT_LIST',
|
|
847
|
+
ENABLE_VIEW_THE_PARTICIPANT_LIST: 'ENABLE_VIEW_THE_PARTICIPANT_LIST',
|
|
848
|
+
|
|
849
|
+
// raise hand
|
|
850
|
+
DISABLE_RAISE_HAND: 'DISABLE_RAISE_HAND',
|
|
851
|
+
ENABLE_RAISE_HAND: 'ENABLE_RAISE_HAND',
|
|
852
|
+
|
|
853
|
+
// video
|
|
854
|
+
DISABLE_VIDEO: 'DISABLE_VIDEO',
|
|
855
|
+
ENABLE_VIDEO: 'ENABLE_VIDEO',
|
|
727
856
|
};
|
|
728
857
|
|
|
729
858
|
export const SELF_ROLES = {
|
|
730
859
|
COHOST: 'COHOST',
|
|
731
860
|
MODERATOR: 'MODERATOR',
|
|
861
|
+
ATTENDEE: 'ATTENDEE',
|
|
732
862
|
};
|
|
733
863
|
|
|
734
864
|
export const MEETING_STATE = {
|
|
@@ -813,7 +943,9 @@ export const RESOURCE = {
|
|
|
813
943
|
};
|
|
814
944
|
|
|
815
945
|
export const REACHABILITY = {
|
|
816
|
-
|
|
946
|
+
localStorageResult: 'reachability.result',
|
|
947
|
+
localStorageJoinCookie: 'reachability.joinCookie',
|
|
948
|
+
namespace: 'Reachability',
|
|
817
949
|
};
|
|
818
950
|
|
|
819
951
|
export const ROAP = {
|
|
@@ -848,9 +980,6 @@ export const NETWORK_TYPE = {
|
|
|
848
980
|
};
|
|
849
981
|
|
|
850
982
|
export const STATS = {
|
|
851
|
-
AUDIO_CORRELATE: 'audio',
|
|
852
|
-
VIDEO_CORRELATE: 'video',
|
|
853
|
-
SHARE_CORRELATE: 'share',
|
|
854
983
|
SEND_DIRECTION: 'send',
|
|
855
984
|
RECEIVE_DIRECTION: 'recv',
|
|
856
985
|
REMOTE: 'remote',
|
|
@@ -1040,6 +1169,7 @@ export const MEETING_INFO_FAILURE_REASON = {
|
|
|
1040
1169
|
NONE: 'NONE', // meeting info was retrieved succesfully
|
|
1041
1170
|
WRONG_PASSWORD: 'WRONG_PASSWORD', // meeting requires password and no password or wrong one was provided
|
|
1042
1171
|
WRONG_CAPTCHA: 'WRONG_CAPTCHA', // wbxappapi requires a captcha code or a wrong captcha code was provided
|
|
1172
|
+
POLICY: 'POLICY', // meeting info request violates some meeting policy
|
|
1043
1173
|
OTHER: 'OTHER', // any other error (network, etc)
|
|
1044
1174
|
};
|
|
1045
1175
|
|
|
@@ -1054,3 +1184,8 @@ export const EMBEDDED_APP_TYPES = {
|
|
|
1054
1184
|
SLIDO: 'SLIDO',
|
|
1055
1185
|
OTHER: 'OTHER',
|
|
1056
1186
|
};
|
|
1187
|
+
|
|
1188
|
+
export const DEFAULT_MEETING_INFO_REQUEST_BODY = {
|
|
1189
|
+
supportHostKey: true,
|
|
1190
|
+
supportCountryList: true,
|
|
1191
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
enum Setting {
|
|
2
|
+
disallowUnmute = 'DisallowUnmute',
|
|
3
|
+
muteOnEntry = 'MuteOnEntry',
|
|
4
|
+
muted = 'Muted',
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
enum Control {
|
|
8
|
+
audio = 'audio',
|
|
9
|
+
raiseHand = 'raiseHand',
|
|
10
|
+
reactions = 'reactions',
|
|
11
|
+
shareControl = 'shareControl',
|
|
12
|
+
video = 'video',
|
|
13
|
+
viewTheParticipantList = 'viewTheParticipantList',
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export {Control, Setting};
|
|
17
|
+
|
|
18
|
+
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
|
+
}
|