@webex/plugin-meetings 3.0.0-beta.9 → 3.0.0-beta.91
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 +325 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +180 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.js +23 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/index.js +868 -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 +7 -6
- package/dist/config.js.map +1 -1
- package/dist/constants.js +169 -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 +292 -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 +325 -208
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +3 -37
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +12 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +88 -123
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +87 -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 +35 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2261 -2269
- 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 +69 -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 +258 -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 +154 -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 +573 -587
- 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 +164 -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 +4 -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 +56 -159
- 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 +33 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +117 -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/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 +965 -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 +314 -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 +105 -0
- package/dist/types/meeting/index.d.ts +1727 -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 +111 -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 +316 -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 +171 -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 -20
- package/src/annotation/annotation.types.ts +37 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +314 -0
- package/src/breakouts/README.md +219 -0
- package/src/breakouts/breakout.ts +154 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/index.ts +776 -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 +17 -12
- package/src/constants.ts +116 -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 +275 -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 +265 -51
- package/src/locus-info/infoUtils.ts +16 -4
- package/src/locus-info/mediaSharesUtils.ts +4 -4
- package/src/locus-info/parser.ts +46 -68
- package/src/locus-info/selfUtils.ts +178 -57
- 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 +75 -3
- package/src/meeting/index.ts +2504 -1522
- 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 +132 -111
- package/src/meeting-info/collection.ts +2 -1
- package/src/meeting-info/index.ts +32 -30
- package/src/meeting-info/meeting-info-v2.ts +178 -109
- package/src/meeting-info/request.ts +9 -3
- package/src/meeting-info/util.ts +54 -46
- package/src/meeting-info/utilv2.ts +69 -57
- package/src/meetings/collection.ts +21 -1
- package/src/meetings/index.ts +687 -467
- package/src/meetings/request.ts +29 -25
- package/src/meetings/util.ts +108 -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 +255 -90
- package/src/metrics/constants.ts +1 -6
- package/src/metrics/index.ts +91 -94
- package/src/multistream/mediaRequestManager.ts +201 -43
- 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 +420 -0
- package/test/unit/spec/breakouts/breakout.ts +178 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/index.ts +1416 -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 +280 -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 +484 -3
- package/test/unit/spec/locus-info/infoUtils.js +41 -32
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +101 -103
- package/test/unit/spec/locus-info/selfUtils.js +191 -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 +34 -3
- package/test/unit/spec/meeting/index.js +2672 -828
- 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 +167 -163
- package/test/unit/spec/meeting-info/meetinginfov2.js +241 -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 +110 -74
- package/test/unit/spec/meetings/collection.js +15 -1
- package/test/unit/spec/meetings/index.js +701 -273
- package/test/unit/spec/meetings/utils.js +105 -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,
|
|
@@ -88,11 +88,16 @@ export default {
|
|
|
88
88
|
enableRtx: true,
|
|
89
89
|
receiveTranscription: false,
|
|
90
90
|
enableExtmap: false,
|
|
91
|
+
enableAutomaticLLM: false,
|
|
92
|
+
installedOrgID: undefined,
|
|
91
93
|
experimental: {
|
|
92
94
|
enableMediaNegotiatedEvent: false,
|
|
93
95
|
enableUnifiedMeetings: false,
|
|
94
96
|
enableAdhocMeetings: false,
|
|
95
|
-
enableTurnDiscovery:
|
|
96
|
-
}
|
|
97
|
-
|
|
97
|
+
enableTurnDiscovery: true,
|
|
98
|
+
},
|
|
99
|
+
degradationPreferences: {
|
|
100
|
+
maxMacroblocksLimit: 8192,
|
|
101
|
+
},
|
|
102
|
+
},
|
|
98
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,13 @@ 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',
|
|
307
318
|
MEMBERS_UPDATE: 'members:update',
|
|
319
|
+
MEMBERS_CLEAR: 'members:clear',
|
|
308
320
|
MEMBERS_CONTENT_UPDATE: 'members:content:update',
|
|
309
321
|
MEMBERS_HOST_UPDATE: 'members:host:update',
|
|
310
322
|
MEMBERS_SELF_UPDATE: 'members:self:update',
|
|
@@ -331,7 +343,7 @@ export const EVENT_TRIGGERS = {
|
|
|
331
343
|
REMOTE_VIDEO_SOURCE_COUNT_CHANGED: 'media:remoteVideoSourceCountChanged',
|
|
332
344
|
REMOTE_AUDIO_SOURCE_COUNT_CHANGED: 'media:remoteAudioSourceCountChanged',
|
|
333
345
|
REMOTE_MEDIA_AUDIO_CREATED: 'media:remoteAudio:created',
|
|
334
|
-
REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:
|
|
346
|
+
REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:remoteScreenShareAudio:created',
|
|
335
347
|
REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED: 'media:remoteVideo:layoutChanged',
|
|
336
348
|
};
|
|
337
349
|
|
|
@@ -373,6 +385,7 @@ export const CALL_REMOVED_REASON = {
|
|
|
373
385
|
export const SHARE_STOPPED_REASON = {
|
|
374
386
|
SELF_STOPPED: 'SELF_STOPPED',
|
|
375
387
|
MEETING_REJOIN: 'MEETING_REJOIN',
|
|
388
|
+
MEDIA_RECONNECTION: 'MEDIA_RECONNECTION',
|
|
376
389
|
};
|
|
377
390
|
|
|
378
391
|
export const EVENTS = {
|
|
@@ -448,6 +461,11 @@ export const ERROR_DICTIONARY = {
|
|
|
448
461
|
MESSAGE: 'Captcha is required.',
|
|
449
462
|
CODE: 8,
|
|
450
463
|
},
|
|
464
|
+
BREAKOUT_EDIT: {
|
|
465
|
+
NAME: 'BreakoutEditLockedError',
|
|
466
|
+
MESSAGE: 'Edit lock token mismatch',
|
|
467
|
+
CODE: 9,
|
|
468
|
+
},
|
|
451
469
|
};
|
|
452
470
|
|
|
453
471
|
export const FLOOR_ACTION = {
|
|
@@ -469,6 +487,7 @@ export const HTTP_VERBS = {
|
|
|
469
487
|
POST: 'POST',
|
|
470
488
|
GET: 'GET',
|
|
471
489
|
PATCH: 'PATCH',
|
|
490
|
+
DELETE: 'DELETE',
|
|
472
491
|
};
|
|
473
492
|
|
|
474
493
|
// https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceGatheringState
|
|
@@ -514,15 +533,65 @@ export const LOCUS = {
|
|
|
514
533
|
SYNCDEBUG: 'sync_debug',
|
|
515
534
|
};
|
|
516
535
|
|
|
536
|
+
export const ANNOTATION = {
|
|
537
|
+
ANNOTATION_ON_SHARE_SUPPORTED: 'ANNOTATION_ON_SHARE_SUPPORTED',
|
|
538
|
+
};
|
|
539
|
+
export const BREAKOUTS = {
|
|
540
|
+
STATUS: {
|
|
541
|
+
CLOSING: 'CLOSING',
|
|
542
|
+
CLOSED: 'CLOSED',
|
|
543
|
+
PENDING: 'PENDING',
|
|
544
|
+
OPEN: 'OPEN',
|
|
545
|
+
},
|
|
546
|
+
EVENTS: {
|
|
547
|
+
BREAKOUTS_CLOSING: 'BREAKOUTS_CLOSING',
|
|
548
|
+
MESSAGE: 'MESSAGE',
|
|
549
|
+
MEMBERS_UPDATE: 'MEMBERS_UPDATE',
|
|
550
|
+
ASK_RETURN_TO_MAIN: 'ASK_RETURN_TO_MAIN',
|
|
551
|
+
LEAVE_BREAKOUT: 'LEAVE_BREAKOUT',
|
|
552
|
+
},
|
|
553
|
+
SESSION_TYPES: {
|
|
554
|
+
MAIN: 'MAIN',
|
|
555
|
+
BREAKOUT: 'BREAKOUT',
|
|
556
|
+
},
|
|
557
|
+
SESSION_STATES: {
|
|
558
|
+
ACTIVE: 'active',
|
|
559
|
+
ASSIGNED: 'assigned',
|
|
560
|
+
ALLOWED: 'allowed',
|
|
561
|
+
ASSIGNED_CURRENT: 'assignedCurrent',
|
|
562
|
+
REQUESTED: 'requested',
|
|
563
|
+
},
|
|
564
|
+
BREAKOUTS_SUPPORTED: 'BREAKOUTS_SUPPORTED',
|
|
565
|
+
ACTION: {
|
|
566
|
+
START: 'START',
|
|
567
|
+
CLOSE: 'CLOSE',
|
|
568
|
+
DELETE: 'DELETE',
|
|
569
|
+
},
|
|
570
|
+
ERROR_CODE: {
|
|
571
|
+
EDIT_LOCK_TOKEN_MISMATCH: 201409024,
|
|
572
|
+
EDIT_NOT_AUTHORIZED: 201403007,
|
|
573
|
+
},
|
|
574
|
+
DEFAULT_DURATION: 60000,
|
|
575
|
+
EDIT_LOCK_STATUS: {
|
|
576
|
+
LOCKED: 'LOCKED',
|
|
577
|
+
NOT_LOCKED: 'NOT_LOCKED',
|
|
578
|
+
UNKNOWN: 'UNKNOWN',
|
|
579
|
+
},
|
|
580
|
+
DEFAULT_TTL: 30,
|
|
581
|
+
};
|
|
582
|
+
|
|
517
583
|
export const LOCUSINFO = {
|
|
518
584
|
EVENTS: {
|
|
519
585
|
CONTROLS_MEETING_LAYOUT_UPDATED: 'CONTROLS_MEETING_LAYOUT_UPDATED',
|
|
520
586
|
CONTROLS_RECORDING_UPDATED: 'CONTROLS_RECORDING_UPDATED',
|
|
521
587
|
CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',
|
|
588
|
+
CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',
|
|
522
589
|
CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
|
|
523
590
|
CONTROLS_ENTRY_EXIT_TONE_UPDATED: 'CONTROLS_ENTRY_EXIT_TONE_UPDATED',
|
|
591
|
+
CONTROLS_JOIN_BREAKOUT_FROM_MAIN: 'CONTROLS_JOIN_BREAKOUT_FROM_MAIN',
|
|
524
592
|
SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',
|
|
525
593
|
SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
|
|
594
|
+
SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
|
|
526
595
|
SELF_REMOTE_MUTE_STATUS_UPDATED: 'SELF_REMOTE_MUTE_STATUS_UPDATED',
|
|
527
596
|
LOCAL_UNMUTE_REQUESTED: 'LOCAL_UNMUTE_REQUESTED',
|
|
528
597
|
LOCAL_UNMUTE_REQUIRED: 'LOCAL_UNMUTE_REQUIRED',
|
|
@@ -540,6 +609,10 @@ export const LOCUSINFO = {
|
|
|
540
609
|
EMBEDDED_APPS_UPDATED: 'EMBEDDED_APPS_UPDATED',
|
|
541
610
|
SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE: 'SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE',
|
|
542
611
|
SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',
|
|
612
|
+
SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',
|
|
613
|
+
MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
|
|
614
|
+
LINKS_SERVICES: 'LINKS_SERVICES',
|
|
615
|
+
SELF_MODERATOR_OR_COHOST_UPGRADE: 'SELF_MODERATOR_OR_COHOST_UPGRADE',
|
|
543
616
|
},
|
|
544
617
|
};
|
|
545
618
|
|
|
@@ -552,6 +625,9 @@ export const LOCUSEVENT = {
|
|
|
552
625
|
// delta events
|
|
553
626
|
DIFFERENCE: 'locus.difference',
|
|
554
627
|
|
|
628
|
+
// Breakout sessions
|
|
629
|
+
BREAKOUT_ROSTER: 'breakout.roster',
|
|
630
|
+
|
|
555
631
|
// screen sharing
|
|
556
632
|
FLOOR_GRANTED: 'locus.floor_granted',
|
|
557
633
|
FLOOR_RELEASED: 'locus.floor_released',
|
|
@@ -722,13 +798,42 @@ export const DISPLAY_HINTS = {
|
|
|
722
798
|
DISPLAY_NON_ENGLISH_ASR: 'DISPLAY_NON_ENGLISH_ASR',
|
|
723
799
|
TRANSCRIPTION_CONTROL_START: 'TRANSCRIPTION_CONTROL_START',
|
|
724
800
|
TRANSCRIPTION_CONTROL_STOP: 'TRANSCRIPTION_CONTROL_STOP',
|
|
801
|
+
SAVE_TRANSCRIPTS_ENABLED: 'SAVE_TRANSCRIPTS_ENABLED',
|
|
725
802
|
WEBEX_ASSISTANT_STATUS_ACTIVE: 'WEBEX_ASSISTANT_STATUS_ACTIVE',
|
|
726
803
|
WAITING_FOR_OTHERS: 'WAITING_FOR_OTHERS',
|
|
804
|
+
ENABLE_REACTIONS: 'ENABLE_REACTIONS',
|
|
805
|
+
DISABLE_REACTIONS: 'DISABLE_REACTIONS',
|
|
806
|
+
REACTIONS_ACTIVE: 'REACTIONS_ACTIVE',
|
|
807
|
+
REACTIONS_INACTIVE: 'REACTIONS_INACTIVE',
|
|
808
|
+
SHARE_CONTROL: 'SHARE_CONTROL',
|
|
809
|
+
ENABLE_MUTE_ON_ENTRY: 'ENABLE_MUTE_ON_ENTRY',
|
|
810
|
+
ENABLE_SHOW_DISPLAY_NAME: 'ENABLE_SHOW_DISPLAY_NAME',
|
|
811
|
+
DISABLE_SHOW_DISPLAY_NAME: 'DISABLE_SHOW_DISPLAY_NAME',
|
|
812
|
+
DISABLE_MUTE_ON_ENTRY: 'DISABLE_MUTE_ON_ENTRY',
|
|
813
|
+
ENABLE_HARD_MUTE: 'ENABLE_HARD_MUTE',
|
|
814
|
+
DISABLE_HARD_MUTE: 'DISABLE_HARD_MUTE',
|
|
815
|
+
MUTE_ALL: 'MUTE_ALL',
|
|
816
|
+
UNMUTE_ALL: 'UNMUTE_ALL',
|
|
817
|
+
PRESENTER_CONTROL: 'PRESENTER_CONTROL',
|
|
818
|
+
CAN_RENAME_SELF_AND_OBSERVED: 'CAN_RENAME_SELF_AND_OBSERVED',
|
|
819
|
+
CAN_RENAME_OTHERS: 'CAN_RENAME_OTHERS',
|
|
820
|
+
|
|
821
|
+
// breakout session
|
|
822
|
+
BREAKOUT_MANAGEMENT: 'BREAKOUT_MANAGEMENT',
|
|
823
|
+
UCF_SUPPRESS_BREAKOUTS_SUPPORT: 'UCF_SUPPRESS_BREAKOUTS_SUPPORT',
|
|
824
|
+
DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',
|
|
825
|
+
DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',
|
|
826
|
+
DISABLE_LOBBY_TO_BREAKOUT: 'DISABLE_LOBBY_TO_BREAKOUT',
|
|
827
|
+
|
|
828
|
+
// participants list
|
|
829
|
+
DISABLE_VIEW_THE_PARTICIPANT_LIST: 'DISABLE_VIEW_THE_PARTICIPANT_LIST',
|
|
830
|
+
ENABLE_VIEW_THE_PARTICIPANT_LIST: 'ENABLE_VIEW_THE_PARTICIPANT_LIST',
|
|
727
831
|
};
|
|
728
832
|
|
|
729
833
|
export const SELF_ROLES = {
|
|
730
834
|
COHOST: 'COHOST',
|
|
731
835
|
MODERATOR: 'MODERATOR',
|
|
836
|
+
ATTENDEE: 'ATTENDEE',
|
|
732
837
|
};
|
|
733
838
|
|
|
734
839
|
export const MEETING_STATE = {
|
|
@@ -813,7 +918,9 @@ export const RESOURCE = {
|
|
|
813
918
|
};
|
|
814
919
|
|
|
815
920
|
export const REACHABILITY = {
|
|
816
|
-
|
|
921
|
+
localStorageResult: 'reachability.result',
|
|
922
|
+
localStorageJoinCookie: 'reachability.joinCookie',
|
|
923
|
+
namespace: 'Reachability',
|
|
817
924
|
};
|
|
818
925
|
|
|
819
926
|
export const ROAP = {
|
|
@@ -848,9 +955,6 @@ export const NETWORK_TYPE = {
|
|
|
848
955
|
};
|
|
849
956
|
|
|
850
957
|
export const STATS = {
|
|
851
|
-
AUDIO_CORRELATE: 'audio',
|
|
852
|
-
VIDEO_CORRELATE: 'video',
|
|
853
|
-
SHARE_CORRELATE: 'share',
|
|
854
958
|
SEND_DIRECTION: 'send',
|
|
855
959
|
RECEIVE_DIRECTION: 'recv',
|
|
856
960
|
REMOTE: 'remote',
|
|
@@ -1040,6 +1144,7 @@ export const MEETING_INFO_FAILURE_REASON = {
|
|
|
1040
1144
|
NONE: 'NONE', // meeting info was retrieved succesfully
|
|
1041
1145
|
WRONG_PASSWORD: 'WRONG_PASSWORD', // meeting requires password and no password or wrong one was provided
|
|
1042
1146
|
WRONG_CAPTCHA: 'WRONG_CAPTCHA', // wbxappapi requires a captcha code or a wrong captcha code was provided
|
|
1147
|
+
POLICY: 'POLICY', // meeting info request violates some meeting policy
|
|
1043
1148
|
OTHER: 'OTHER', // any other error (network, etc)
|
|
1044
1149
|
};
|
|
1045
1150
|
|
|
@@ -1054,3 +1159,8 @@ export const EMBEDDED_APP_TYPES = {
|
|
|
1054
1159
|
SLIDO: 'SLIDO',
|
|
1055
1160
|
OTHER: 'OTHER',
|
|
1056
1161
|
};
|
|
1162
|
+
|
|
1163
|
+
export const DEFAULT_MEETING_INFO_REQUEST_BODY = {
|
|
1164
|
+
supportHostKey: true,
|
|
1165
|
+
supportCountryList: true,
|
|
1166
|
+
};
|
|
@@ -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,275 @@
|
|
|
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
|
+
protected update(...controls: Array<ControlConfig>) {
|
|
144
|
+
const payload = controls.reduce((output, 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
|
+
...output,
|
|
159
|
+
[control.scope]: control.properties,
|
|
160
|
+
};
|
|
161
|
+
}, {});
|
|
162
|
+
|
|
163
|
+
// @ts-ignore
|
|
164
|
+
return this.request.request({
|
|
165
|
+
uri: `${this.locusUrl}/${CONTROLS}`,
|
|
166
|
+
body: payload,
|
|
167
|
+
method: HTTP_VERBS.PATCH,
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* @param {Setting} setting
|
|
173
|
+
* @private
|
|
174
|
+
* @memberof ControlsOptionsManager
|
|
175
|
+
* @returns {Promise}
|
|
176
|
+
*/
|
|
177
|
+
private setControls(setting: {[key in Setting]?: boolean}): Promise<any> {
|
|
178
|
+
LoggerProxy.logger.log(
|
|
179
|
+
`ControlsOptionsManager:index#setControls --> ${JSON.stringify(setting)}`
|
|
180
|
+
);
|
|
181
|
+
|
|
182
|
+
const body: Record<string, any> = {};
|
|
183
|
+
let error: PermissionError;
|
|
184
|
+
|
|
185
|
+
let shouldSkipCheckToMergeBody = false;
|
|
186
|
+
|
|
187
|
+
Object.entries(setting).forEach(([key, value]) => {
|
|
188
|
+
if (
|
|
189
|
+
!shouldSkipCheckToMergeBody &&
|
|
190
|
+
!Util?.[`${value ? CAN_SET : CAN_UNSET}${key}`](this.displayHints)
|
|
191
|
+
) {
|
|
192
|
+
error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
if (error) {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
switch (key) {
|
|
200
|
+
case Setting.muted:
|
|
201
|
+
shouldSkipCheckToMergeBody = true;
|
|
202
|
+
body.audio = body.audio
|
|
203
|
+
? {...body.audio, [camelCase(key)]: value}
|
|
204
|
+
: {[camelCase(key)]: value};
|
|
205
|
+
break;
|
|
206
|
+
|
|
207
|
+
case Setting.disallowUnmute:
|
|
208
|
+
case Setting.muteOnEntry:
|
|
209
|
+
if (Object.keys(setting).includes(Setting.muted)) {
|
|
210
|
+
body.audio = body.audio
|
|
211
|
+
? {...body.audio, [camelCase(key)]: value}
|
|
212
|
+
: {[camelCase(key)]: value};
|
|
213
|
+
body.audio[camelCase(key)] = value;
|
|
214
|
+
} else {
|
|
215
|
+
body[camelCase(key)] = {[ENABLED]: value};
|
|
216
|
+
}
|
|
217
|
+
break;
|
|
218
|
+
|
|
219
|
+
default:
|
|
220
|
+
error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
if (error) {
|
|
225
|
+
return Promise.reject(error);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// @ts-ignore
|
|
229
|
+
return this.request.request({
|
|
230
|
+
uri: `${this.locusUrl}/${CONTROLS}`,
|
|
231
|
+
body,
|
|
232
|
+
method: HTTP_VERBS.PATCH,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* @public
|
|
238
|
+
* @param {boolean} enabled
|
|
239
|
+
* @memberof ControlsOptionsManager
|
|
240
|
+
* @returns {Promise}
|
|
241
|
+
*/
|
|
242
|
+
public setMuteOnEntry(enabled: boolean): Promise<any> {
|
|
243
|
+
return this.setControls({[Setting.muteOnEntry]: enabled});
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* @public
|
|
248
|
+
* @param {boolean} enabled
|
|
249
|
+
* @memberof ControlsOptionsManager
|
|
250
|
+
* @returns {Promise}
|
|
251
|
+
*/
|
|
252
|
+
public setDisallowUnmute(enabled: boolean): Promise<any> {
|
|
253
|
+
return this.setControls({[Setting.disallowUnmute]: enabled});
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* @public
|
|
258
|
+
* @param {boolean} mutedEnabled
|
|
259
|
+
* @param {boolean} disallowUnmuteEnabled
|
|
260
|
+
* @param {boolean} muteOnEntryEnabled
|
|
261
|
+
* @memberof ControlsOptionsManager
|
|
262
|
+
* @returns {Promise}
|
|
263
|
+
*/
|
|
264
|
+
public setMuteAll(
|
|
265
|
+
mutedEnabled: boolean,
|
|
266
|
+
disallowUnmuteEnabled: boolean,
|
|
267
|
+
muteOnEntryEnabled: boolean
|
|
268
|
+
): Promise<any> {
|
|
269
|
+
return this.setControls({
|
|
270
|
+
[Setting.muted]: mutedEnabled,
|
|
271
|
+
[Setting.disallowUnmute]: disallowUnmuteEnabled,
|
|
272
|
+
[Setting.muteOnEntry]: muteOnEntryEnabled,
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
}
|
|
@@ -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
|
+
}
|