@webex/plugin-meetings 3.0.0-beta.10 → 3.0.0-beta.104
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +48 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +357 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +176 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.js +23 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.js +43 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +919 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/breakouts/request.js +78 -0
- package/dist/breakouts/request.js.map +1 -0
- package/dist/breakouts/utils.js +67 -0
- package/dist/breakouts/utils.js.map +1 -0
- package/dist/common/browser-detection.js +1 -20
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +5 -20
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +0 -7
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +5 -26
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +5 -26
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +6 -27
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +5 -26
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +5 -33
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +5 -26
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +4 -25
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js +0 -17
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +5 -26
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +5 -26
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +6 -41
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +1 -24
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +0 -22
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +0 -23
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +0 -12
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +0 -15
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +0 -4
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -8
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +35 -61
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +4 -14
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +6 -6
- package/dist/config.js.map +1 -1
- package/dist/constants.js +173 -52
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +14 -0
- package/dist/controls-options-manager/constants.js.map +1 -0
- package/dist/controls-options-manager/enums.js +25 -0
- package/dist/controls-options-manager/enums.js.map +1 -0
- package/dist/controls-options-manager/index.js +297 -0
- package/dist/controls-options-manager/index.js.map +1 -0
- package/dist/controls-options-manager/types.js +7 -0
- package/dist/controls-options-manager/types.js.map +1 -0
- package/dist/controls-options-manager/util.js +250 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +72 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +56 -29
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -26
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +0 -15
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +4 -12
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +327 -211
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +0 -38
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +12 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +88 -123
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +99 -91
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +62 -147
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +71 -117
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +2 -9
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +505 -495
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +59 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2396 -2388
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +252 -113
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +318 -283
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js +7 -0
- package/dist/meeting/request.type.js.map +1 -0
- package/dist/meeting/state.js +21 -31
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +58 -217
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +3 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +10 -33
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +263 -282
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -16
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +98 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +155 -232
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +24 -20
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +675 -593
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +23 -42
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +177 -155
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +80 -88
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +15 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +90 -69
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +12 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +162 -204
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +58 -53
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +15 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.js +107 -44
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +5 -14
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +3 -7
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +61 -161
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +167 -50
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +58 -65
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +74 -93
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +55 -74
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +6 -40
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +466 -442
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +32 -59
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +10 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -33
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +0 -13
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +190 -199
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +14 -23
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/constants.js +13 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.js +109 -0
- package/dist/reactions/reactions.js.map +1 -0
- package/dist/reactions/reactions.type.js +36 -0
- package/dist/reactions/reactions.type.js.map +1 -0
- package/dist/reconnection-manager/index.js +326 -465
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +17 -0
- package/dist/recording-controller/enums.js.map +1 -0
- package/dist/recording-controller/index.js +343 -0
- package/dist/recording-controller/index.js.map +1 -0
- package/dist/recording-controller/util.js +63 -0
- package/dist/recording-controller/util.js.map +1 -0
- package/dist/roap/index.js +38 -67
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +143 -134
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +149 -101
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +1 -95
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +369 -461
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +144 -94
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +13 -45
- package/dist/transcription/index.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +34 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +124 -0
- package/dist/types/breakouts/breakout.d.ts +8 -0
- package/dist/types/breakouts/collection.d.ts +5 -0
- package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/types/breakouts/events.d.ts +2 -0
- package/dist/types/breakouts/index.d.ts +5 -0
- package/dist/types/breakouts/request.d.ts +22 -0
- package/dist/types/breakouts/utils.d.ts +15 -0
- package/dist/types/common/browser-detection.d.ts +9 -0
- package/dist/types/common/collection.d.ts +48 -0
- package/dist/types/common/config.d.ts +2 -0
- package/dist/types/common/errors/captcha-error.d.ts +15 -0
- package/dist/types/common/errors/intent-to-join.d.ts +16 -0
- package/dist/types/common/errors/join-meeting.d.ts +17 -0
- package/dist/types/common/errors/media.d.ts +15 -0
- package/dist/types/common/errors/parameter.d.ts +15 -0
- package/dist/types/common/errors/password-error.d.ts +15 -0
- package/dist/types/common/errors/permission.d.ts +14 -0
- package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/types/common/errors/reconnection.d.ts +15 -0
- package/dist/types/common/errors/stats.d.ts +15 -0
- package/dist/types/common/errors/webex-errors.d.ts +69 -0
- package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
- package/dist/types/common/events/events-scope.d.ts +17 -0
- package/dist/types/common/events/events.d.ts +12 -0
- package/dist/types/common/events/trigger-proxy.d.ts +2 -0
- package/dist/types/common/events/util.d.ts +2 -0
- package/dist/types/common/logs/logger-config.d.ts +2 -0
- package/dist/types/common/logs/logger-proxy.d.ts +2 -0
- package/dist/types/common/logs/request.d.ts +34 -0
- package/dist/types/common/queue.d.ts +32 -0
- package/dist/types/config.d.ts +78 -0
- package/dist/types/constants.d.ts +968 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +13 -0
- package/dist/types/controls-options-manager/index.d.ts +136 -0
- package/dist/types/controls-options-manager/types.d.ts +37 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/locus-info/controlsUtils.d.ts +2 -0
- package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
- package/dist/types/locus-info/fullState.d.ts +2 -0
- package/dist/types/locus-info/hostUtils.d.ts +2 -0
- package/dist/types/locus-info/index.d.ts +315 -0
- package/dist/types/locus-info/infoUtils.d.ts +2 -0
- package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
- package/dist/types/locus-info/parser.d.ts +212 -0
- package/dist/types/locus-info/selfUtils.d.ts +2 -0
- package/dist/types/media/index.d.ts +34 -0
- package/dist/types/media/properties.d.ts +108 -0
- package/dist/types/media/util.d.ts +2 -0
- package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +129 -0
- package/dist/types/meeting/index.d.ts +1748 -0
- package/dist/types/meeting/muteState.d.ts +185 -0
- package/dist/types/meeting/request.d.ts +275 -0
- package/dist/types/meeting/request.type.d.ts +11 -0
- package/dist/types/meeting/state.d.ts +9 -0
- package/dist/types/meeting/util.d.ts +2 -0
- package/dist/types/meeting-info/collection.d.ts +20 -0
- package/dist/types/meeting-info/index.d.ts +57 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +112 -0
- package/dist/types/meeting-info/request.d.ts +22 -0
- package/dist/types/meeting-info/util.d.ts +2 -0
- package/dist/types/meeting-info/utilv2.d.ts +2 -0
- package/dist/types/meetings/collection.d.ts +31 -0
- package/dist/types/meetings/index.d.ts +345 -0
- package/dist/types/meetings/request.d.ts +27 -0
- package/dist/types/meetings/util.d.ts +18 -0
- package/dist/types/member/index.d.ts +156 -0
- package/dist/types/member/types.d.ts +21 -0
- package/dist/types/member/util.d.ts +2 -0
- package/dist/types/members/collection.d.ts +29 -0
- package/dist/types/members/index.d.ts +353 -0
- package/dist/types/members/request.d.ts +69 -0
- package/dist/types/members/types.d.ts +24 -0
- package/dist/types/members/util.d.ts +2 -0
- package/dist/types/metrics/config.d.ts +172 -0
- package/dist/types/metrics/constants.d.ts +54 -0
- package/dist/types/metrics/index.d.ts +152 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
- package/dist/types/multistream/receiveSlot.d.ts +68 -0
- package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
- package/dist/types/multistream/remoteMedia.d.ts +72 -0
- package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
- package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
- package/dist/types/networkQualityMonitor/index.d.ts +70 -0
- package/dist/types/personal-meeting-room/index.d.ts +47 -0
- package/dist/types/personal-meeting-room/request.d.ts +14 -0
- package/dist/types/personal-meeting-room/util.d.ts +2 -0
- package/dist/types/reachability/index.d.ts +152 -0
- package/dist/types/reachability/request.d.ts +37 -0
- package/dist/types/reactions/constants.d.ts +3 -0
- package/dist/types/reactions/reactions.d.ts +4 -0
- package/dist/types/reactions/reactions.type.d.ts +52 -0
- package/dist/types/reconnection-manager/index.d.ts +126 -0
- package/dist/types/recording-controller/enums.d.ts +7 -0
- package/dist/types/recording-controller/index.d.ts +193 -0
- package/dist/types/recording-controller/util.d.ts +13 -0
- package/dist/types/roap/index.d.ts +77 -0
- package/dist/types/roap/request.d.ts +38 -0
- package/dist/types/roap/turnDiscovery.d.ts +88 -0
- package/dist/types/statsAnalyzer/global.d.ts +36 -0
- package/dist/types/statsAnalyzer/index.d.ts +200 -0
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
- package/dist/types/transcription/index.d.ts +64 -0
- package/internal-README.md +7 -6
- package/package.json +28 -21
- package/src/annotation/annotation.types.ts +41 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +339 -0
- package/src/breakouts/README.md +219 -0
- package/src/breakouts/breakout.ts +141 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +37 -0
- package/src/breakouts/index.ts +823 -0
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +57 -0
- package/src/common/browser-detection.ts +9 -6
- package/src/common/collection.ts +3 -1
- package/src/common/errors/captcha-error.ts +6 -6
- package/src/common/errors/intent-to-join.ts +6 -6
- package/src/common/errors/join-meeting.ts +12 -8
- package/src/common/errors/media.ts +6 -6
- package/src/common/errors/parameter.ts +9 -6
- package/src/common/errors/password-error.ts +6 -6
- package/src/common/errors/permission.ts +5 -5
- package/src/common/errors/reconnection.ts +6 -6
- package/src/common/errors/stats.ts +6 -6
- package/src/common/errors/webex-errors.ts +7 -5
- package/src/common/errors/webex-meetings-error.ts +1 -1
- package/src/common/events/events-scope.ts +5 -1
- package/src/common/events/events.ts +5 -1
- package/src/common/events/trigger-proxy.ts +8 -3
- package/src/common/events/util.ts +1 -2
- package/src/common/logs/logger-proxy.ts +21 -10
- package/src/common/logs/request.ts +11 -8
- package/src/config.ts +16 -12
- package/src/constants.ts +119 -6
- package/src/controls-options-manager/constants.ts +5 -0
- package/src/controls-options-manager/enums.ts +16 -0
- package/src/controls-options-manager/index.ts +278 -0
- package/src/controls-options-manager/types.ts +49 -0
- package/src/controls-options-manager/util.ts +229 -0
- package/src/index.ts +33 -0
- package/src/locus-info/controlsUtils.ts +91 -24
- package/src/locus-info/fullState.ts +15 -11
- package/src/locus-info/hostUtils.ts +4 -3
- package/src/locus-info/index.ts +270 -54
- package/src/locus-info/infoUtils.ts +12 -4
- package/src/locus-info/mediaSharesUtils.ts +4 -4
- package/src/locus-info/parser.ts +46 -68
- package/src/locus-info/selfUtils.ts +187 -56
- package/src/media/index.ts +142 -172
- package/src/media/properties.ts +43 -36
- package/src/media/util.ts +1 -1
- package/src/mediaQualityMetrics/config.ts +380 -378
- package/src/meeting/in-meeting-actions.ts +123 -3
- package/src/meeting/index.ts +2617 -1545
- package/src/meeting/muteState.ts +271 -68
- package/src/meeting/request.ts +251 -132
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/state.ts +45 -30
- package/src/meeting/util.ts +119 -110
- package/src/meeting-info/collection.ts +2 -1
- package/src/meeting-info/index.ts +32 -30
- package/src/meeting-info/meeting-info-v2.ts +181 -109
- package/src/meeting-info/request.ts +9 -3
- package/src/meeting-info/util.ts +54 -46
- package/src/meeting-info/utilv2.ts +70 -55
- package/src/meetings/collection.ts +21 -1
- package/src/meetings/index.ts +749 -437
- package/src/meetings/request.ts +29 -25
- package/src/meetings/util.ts +122 -33
- package/src/member/index.ts +86 -49
- package/src/member/types.ts +24 -0
- package/src/member/util.ts +92 -13
- package/src/members/collection.ts +8 -1
- package/src/members/index.ts +281 -129
- package/src/members/request.ts +87 -14
- package/src/members/types.ts +28 -0
- package/src/members/util.ts +140 -49
- package/src/metrics/config.ts +256 -90
- package/src/metrics/constants.ts +1 -6
- package/src/metrics/index.ts +96 -96
- package/src/multistream/mediaRequestManager.ts +203 -45
- package/src/multistream/receiveSlot.ts +69 -26
- package/src/multistream/receiveSlotManager.ts +62 -38
- package/src/multistream/remoteMedia.ts +30 -4
- package/src/multistream/remoteMediaGroup.ts +4 -3
- package/src/multistream/remoteMediaManager.ts +230 -66
- package/src/networkQualityMonitor/index.ts +24 -27
- package/src/personal-meeting-room/index.ts +12 -16
- package/src/personal-meeting-room/request.ts +10 -3
- package/src/personal-meeting-room/util.ts +3 -3
- package/src/reachability/index.ts +131 -79
- package/src/reachability/request.ts +43 -34
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +104 -0
- package/src/reactions/reactions.type.ts +62 -0
- package/src/reconnection-manager/index.ts +193 -111
- package/src/recording-controller/enums.ts +8 -0
- package/src/recording-controller/index.ts +315 -0
- package/src/recording-controller/util.ts +58 -0
- package/src/roap/index.ts +63 -51
- package/src/roap/request.ts +86 -53
- package/src/roap/turnDiscovery.ts +105 -46
- package/src/statsAnalyzer/global.ts +8 -104
- package/src/statsAnalyzer/index.ts +624 -376
- package/src/statsAnalyzer/mqaUtil.ts +203 -90
- package/src/transcription/index.ts +34 -32
- package/test/integration/spec/converged-space-meetings.js +177 -0
- package/test/integration/spec/journey.js +666 -464
- package/test/integration/spec/space-meeting.js +320 -204
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/annotation/index.ts +435 -0
- package/test/unit/spec/breakouts/breakout.ts +184 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/events.ts +77 -0
- package/test/unit/spec/breakouts/index.ts +1504 -0
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +72 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/controls-options-manager/index.js +287 -0
- package/test/unit/spec/controls-options-manager/util.js +403 -0
- package/test/unit/spec/fixture/locus.js +92 -90
- package/test/unit/spec/locus-info/controlsUtils.js +177 -32
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +493 -3
- package/test/unit/spec/locus-info/infoUtils.js +26 -33
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +110 -103
- package/test/unit/spec/locus-info/selfUtils.js +236 -12
- package/test/unit/spec/media/index.ts +104 -8
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/in-meeting-actions.ts +58 -3
- package/test/unit/spec/meeting/index.js +2649 -837
- package/test/unit/spec/meeting/muteState.js +368 -70
- package/test/unit/spec/meeting/request.js +217 -43
- package/test/unit/spec/meeting/utils.js +146 -165
- package/test/unit/spec/meeting-info/meetinginfov2.js +268 -74
- package/test/unit/spec/meeting-info/request.js +7 -9
- package/test/unit/spec/meeting-info/util.js +11 -12
- package/test/unit/spec/meeting-info/utilv2.js +131 -74
- package/test/unit/spec/meetings/collection.js +15 -1
- package/test/unit/spec/meetings/index.js +1052 -329
- package/test/unit/spec/meetings/utils.js +163 -14
- package/test/unit/spec/member/index.js +24 -1
- package/test/unit/spec/member/util.js +359 -32
- package/test/unit/spec/members/index.js +402 -54
- package/test/unit/spec/members/request.js +76 -20
- package/test/unit/spec/members/utils.js +191 -4
- package/test/unit/spec/metrics/index.js +46 -20
- package/test/unit/spec/multistream/mediaRequestManager.ts +650 -105
- package/test/unit/spec/multistream/receiveSlot.ts +76 -17
- package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
- package/test/unit/spec/multistream/remoteMedia.ts +32 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
- package/test/unit/spec/networkQualityMonitor/index.js +24 -18
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +176 -27
- package/test/unit/spec/reachability/request.js +66 -0
- package/test/unit/spec/reconnection-manager/index.js +62 -31
- package/test/unit/spec/recording-controller/index.js +231 -0
- package/test/unit/spec/recording-controller/util.js +102 -0
- package/test/unit/spec/roap/index.ts +21 -16
- package/test/unit/spec/roap/request.ts +217 -0
- package/test/unit/spec/roap/turnDiscovery.ts +93 -49
- package/test/unit/spec/stats-analyzer/index.js +116 -60
- package/test/utils/cmr.js +44 -42
- package/test/utils/constants.js +9 -0
- package/test/utils/integrationTestUtils.js +64 -0
- package/test/utils/testUtils.js +63 -99
- package/test/utils/webex-config.js +22 -18
- package/test/utils/webex-test-users.js +57 -50
- package/tsconfig.json +6 -0
- package/dist/media/internal-media-core-wrapper.js +0 -22
- package/dist/media/internal-media-core-wrapper.js.map +0 -1
- package/dist/meeting/effectsState.js +0 -334
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/multistream/multistreamMedia.js +0 -116
- package/dist/multistream/multistreamMedia.js.map +0 -1
- package/src/index.js +0 -15
- package/src/media/internal-media-core-wrapper.ts +0 -9
- package/src/meeting/effectsState.ts +0 -211
- package/src/multistream/multistreamMedia.ts +0 -92
- package/test/unit/spec/meeting/effectsState.js +0 -291
package/src/meeting/request.ts
CHANGED
|
@@ -9,6 +9,7 @@ import LoggerProxy from '../common/logs/logger-proxy';
|
|
|
9
9
|
import {
|
|
10
10
|
ALERT,
|
|
11
11
|
ALTERNATE_REDIRECT_TRUE,
|
|
12
|
+
BREAKOUTS,
|
|
12
13
|
CALL,
|
|
13
14
|
CONTROLS,
|
|
14
15
|
DECLINE,
|
|
@@ -22,9 +23,12 @@ import {
|
|
|
22
23
|
PARTICIPANT,
|
|
23
24
|
PROVISIONAL_TYPE_DIAL_IN,
|
|
24
25
|
PROVISIONAL_TYPE_DIAL_OUT,
|
|
26
|
+
REACHABILITY,
|
|
25
27
|
SEND_DTMF_ENDPOINT,
|
|
26
|
-
_SLIDES_
|
|
28
|
+
_SLIDES_,
|
|
29
|
+
ANNOTATION,
|
|
27
30
|
} from '../constants';
|
|
31
|
+
import {SendReactionOptions, ToggleReactionsOptions} from './request.type';
|
|
28
32
|
|
|
29
33
|
/**
|
|
30
34
|
* @class MeetingRequest
|
|
@@ -32,11 +36,45 @@ import {
|
|
|
32
36
|
export default class MeetingRequest extends StatelessWebexPlugin {
|
|
33
37
|
changeVideoLayoutDebounced: any;
|
|
34
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Constructor
|
|
41
|
+
* @param {Object} attrs
|
|
42
|
+
* @param {Object} options
|
|
43
|
+
*/
|
|
35
44
|
constructor(attrs: any, options: any) {
|
|
36
45
|
super(attrs, options);
|
|
37
|
-
this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {
|
|
46
|
+
this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {
|
|
47
|
+
leading: true,
|
|
48
|
+
trailing: true,
|
|
49
|
+
});
|
|
38
50
|
}
|
|
39
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Returns joinCookie from boundedStorage if present.
|
|
54
|
+
* @returns {Object} joinCookie
|
|
55
|
+
*/
|
|
56
|
+
private getJoinCookie = async () => {
|
|
57
|
+
// @ts-ignore
|
|
58
|
+
const joinCookieRaw = await this.webex.boundedStorage
|
|
59
|
+
.get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)
|
|
60
|
+
.catch(() => {});
|
|
61
|
+
|
|
62
|
+
if (joinCookieRaw) {
|
|
63
|
+
try {
|
|
64
|
+
const joinCookie = JSON.parse(joinCookieRaw);
|
|
65
|
+
if (joinCookie) {
|
|
66
|
+
return joinCookie;
|
|
67
|
+
}
|
|
68
|
+
} catch (e) {
|
|
69
|
+
LoggerProxy.logger.error(
|
|
70
|
+
`MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return null;
|
|
76
|
+
};
|
|
77
|
+
|
|
40
78
|
/**
|
|
41
79
|
* Make a network request to join a meeting
|
|
42
80
|
* @param {Object} options
|
|
@@ -50,6 +88,8 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
50
88
|
* @param {boolean} options.pin
|
|
51
89
|
* @param {boolean} options.moveToResource
|
|
52
90
|
* @param {Object} options.roapMessage
|
|
91
|
+
* @param {boolean} options.breakoutsSupported
|
|
92
|
+
* @param {boolean} options.liveAnnotationSupported
|
|
53
93
|
* @returns {Promise}
|
|
54
94
|
*/
|
|
55
95
|
async joinMeeting(options: {
|
|
@@ -68,6 +108,8 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
68
108
|
meetingNumber: any;
|
|
69
109
|
permissionToken: any;
|
|
70
110
|
preferTranscoding: any;
|
|
111
|
+
breakoutsSupported: boolean;
|
|
112
|
+
liveAnnotationSupported: boolean;
|
|
71
113
|
}) {
|
|
72
114
|
const {
|
|
73
115
|
asResourceOccupant,
|
|
@@ -83,35 +125,48 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
83
125
|
pin,
|
|
84
126
|
moveToResource,
|
|
85
127
|
roapMessage,
|
|
86
|
-
preferTranscoding
|
|
128
|
+
preferTranscoding,
|
|
129
|
+
breakoutsSupported,
|
|
130
|
+
liveAnnotationSupported,
|
|
87
131
|
} = options;
|
|
88
132
|
|
|
89
|
-
LoggerProxy.logger.info(
|
|
90
|
-
'Meeting:request#joinMeeting --> Joining a meeting',
|
|
91
|
-
correlationId
|
|
92
|
-
);
|
|
133
|
+
LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);
|
|
93
134
|
|
|
94
135
|
let url = '';
|
|
95
136
|
|
|
137
|
+
const joinCookie = await this.getJoinCookie();
|
|
138
|
+
|
|
96
139
|
const body: any = {
|
|
97
140
|
asResourceOccupant,
|
|
98
141
|
device: {
|
|
99
142
|
url: deviceUrl,
|
|
100
143
|
// @ts-ignore - config comes from registerPlugin
|
|
101
|
-
deviceType: this.config.meetings.deviceType
|
|
144
|
+
deviceType: this.config.meetings.deviceType,
|
|
102
145
|
},
|
|
103
146
|
usingResource: resourceId || null,
|
|
104
|
-
moveMediaToResource: resourceId && moveToResource || false,
|
|
147
|
+
moveMediaToResource: (resourceId && moveToResource) || false,
|
|
105
148
|
correlationId,
|
|
106
149
|
respOnlySdp: true,
|
|
107
150
|
allowMultiDevice: true,
|
|
108
151
|
ensureConversation: ensureConversation || false,
|
|
109
152
|
supportsNativeLobby: 1,
|
|
110
153
|
clientMediaPreferences: {
|
|
111
|
-
preferTranscoding: preferTranscoding ?? true
|
|
112
|
-
|
|
154
|
+
preferTranscoding: preferTranscoding ?? true,
|
|
155
|
+
joinCookie,
|
|
156
|
+
},
|
|
113
157
|
};
|
|
114
158
|
|
|
159
|
+
let deviceCapabilities = [];
|
|
160
|
+
if (breakoutsSupported) {
|
|
161
|
+
deviceCapabilities = [...deviceCapabilities, BREAKOUTS.BREAKOUTS_SUPPORTED];
|
|
162
|
+
}
|
|
163
|
+
if (liveAnnotationSupported) {
|
|
164
|
+
deviceCapabilities = [...deviceCapabilities, ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED];
|
|
165
|
+
}
|
|
166
|
+
if (deviceCapabilities.length > 0) {
|
|
167
|
+
body.deviceCapabilities = deviceCapabilities;
|
|
168
|
+
}
|
|
169
|
+
|
|
115
170
|
// @ts-ignore
|
|
116
171
|
if (this.webex.meetings.clientRegion) {
|
|
117
172
|
// @ts-ignore
|
|
@@ -134,30 +189,29 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
134
189
|
|
|
135
190
|
if (locusUrl) {
|
|
136
191
|
url = `${locusUrl}/${PARTICIPANT}`;
|
|
137
|
-
}
|
|
138
|
-
else if (inviteeAddress || meetingNumber) {
|
|
192
|
+
} else if (inviteeAddress || meetingNumber) {
|
|
139
193
|
try {
|
|
140
194
|
// @ts-ignore
|
|
141
195
|
await this.webex.internal.services.waitForCatalog('postauth');
|
|
142
196
|
// @ts-ignore
|
|
143
197
|
url = `${this.webex.internal.services.get('locus')}/${LOCI}/${CALL}`;
|
|
144
198
|
body.invitee = {
|
|
145
|
-
address: inviteeAddress || `wbxmn:${meetingNumber}
|
|
199
|
+
address: inviteeAddress || `wbxmn:${meetingNumber}`,
|
|
146
200
|
};
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
201
|
+
} catch (e) {
|
|
202
|
+
LoggerProxy.logger.error(
|
|
203
|
+
`Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`
|
|
204
|
+
);
|
|
205
|
+
throw e;
|
|
151
206
|
}
|
|
152
207
|
}
|
|
153
208
|
|
|
154
|
-
|
|
155
209
|
// TODO: -- this will be resolved in SDK request
|
|
156
210
|
url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);
|
|
157
211
|
|
|
158
212
|
if (resourceId === inviteeAddress) {
|
|
159
213
|
body.callPreferences = {
|
|
160
|
-
requestedMedia: [_SLIDES_]
|
|
214
|
+
requestedMedia: [_SLIDES_],
|
|
161
215
|
};
|
|
162
216
|
}
|
|
163
217
|
|
|
@@ -169,7 +223,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
169
223
|
return this.request({
|
|
170
224
|
method: HTTP_VERBS.POST,
|
|
171
225
|
uri: url,
|
|
172
|
-
body
|
|
226
|
+
body,
|
|
173
227
|
});
|
|
174
228
|
}
|
|
175
229
|
|
|
@@ -181,16 +235,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
181
235
|
* @returns {Promise}
|
|
182
236
|
* @private
|
|
183
237
|
*/
|
|
184
|
-
private refreshCaptcha({
|
|
238
|
+
private refreshCaptcha({
|
|
239
|
+
captchaRefreshUrl,
|
|
240
|
+
captchaId,
|
|
241
|
+
}: {
|
|
242
|
+
captchaRefreshUrl: string;
|
|
243
|
+
captchaId: string;
|
|
244
|
+
}) {
|
|
185
245
|
const body = {
|
|
186
|
-
captchaId
|
|
246
|
+
captchaId,
|
|
187
247
|
};
|
|
188
248
|
|
|
189
249
|
// @ts-ignore
|
|
190
250
|
return this.request({
|
|
191
251
|
method: HTTP_VERBS.POST,
|
|
192
252
|
uri: captchaRefreshUrl,
|
|
193
|
-
body
|
|
253
|
+
body,
|
|
194
254
|
}).catch((err) => {
|
|
195
255
|
LoggerProxy.logger.error(`Meeting:request#refreshCaptcha --> Error: ${err}`);
|
|
196
256
|
|
|
@@ -230,18 +290,20 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
230
290
|
deviceType: deviceType.PROVISIONAL,
|
|
231
291
|
provisionalType: PROVISIONAL_TYPE_DIAL_IN,
|
|
232
292
|
url: dialInUrl,
|
|
233
|
-
clientUrl
|
|
293
|
+
clientUrl,
|
|
234
294
|
},
|
|
235
|
-
correlationId
|
|
295
|
+
correlationId,
|
|
236
296
|
};
|
|
237
297
|
|
|
238
298
|
// @ts-ignore
|
|
239
299
|
return this.request({
|
|
240
300
|
method: HTTP_VERBS.POST,
|
|
241
301
|
uri,
|
|
242
|
-
body
|
|
302
|
+
body,
|
|
243
303
|
}).catch((err) => {
|
|
244
|
-
LoggerProxy.logger.error(
|
|
304
|
+
LoggerProxy.logger.error(
|
|
305
|
+
`Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`
|
|
306
|
+
);
|
|
245
307
|
|
|
246
308
|
throw err;
|
|
247
309
|
});
|
|
@@ -283,18 +345,20 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
283
345
|
provisionalType: PROVISIONAL_TYPE_DIAL_OUT,
|
|
284
346
|
url: dialOutUrl,
|
|
285
347
|
dialoutAddress: phoneNumber,
|
|
286
|
-
clientUrl
|
|
348
|
+
clientUrl,
|
|
287
349
|
},
|
|
288
|
-
correlationId
|
|
350
|
+
correlationId,
|
|
289
351
|
};
|
|
290
352
|
|
|
291
353
|
// @ts-ignore
|
|
292
354
|
return this.request({
|
|
293
355
|
method: HTTP_VERBS.POST,
|
|
294
356
|
uri,
|
|
295
|
-
body
|
|
357
|
+
body,
|
|
296
358
|
}).catch((err) => {
|
|
297
|
-
LoggerProxy.logger.error(
|
|
359
|
+
LoggerProxy.logger.error(
|
|
360
|
+
`Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`
|
|
361
|
+
);
|
|
298
362
|
|
|
299
363
|
throw err;
|
|
300
364
|
});
|
|
@@ -307,7 +371,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
307
371
|
* @param {String} options.syncUrl sync url to get ht elatest locus delta
|
|
308
372
|
* @returns {Promise}
|
|
309
373
|
*/
|
|
310
|
-
syncMeeting(options: {
|
|
374
|
+
syncMeeting(options: {desync: boolean; syncUrl: string}) {
|
|
311
375
|
/* eslint-disable no-else-return */
|
|
312
376
|
const {desync} = options;
|
|
313
377
|
let {syncUrl} = options;
|
|
@@ -315,16 +379,20 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
315
379
|
/* istanbul ignore else */
|
|
316
380
|
if (desync) {
|
|
317
381
|
// check for existing URL parameters
|
|
318
|
-
syncUrl = syncUrl
|
|
382
|
+
syncUrl = syncUrl
|
|
383
|
+
.concat(syncUrl.split('?')[1] ? '&' : '?')
|
|
384
|
+
.concat(`${LOCUS.SYNCDEBUG}=${desync}`);
|
|
319
385
|
}
|
|
320
386
|
|
|
321
387
|
// @ts-ignore
|
|
322
388
|
return this.request({
|
|
323
389
|
method: HTTP_VERBS.GET,
|
|
324
|
-
uri: syncUrl
|
|
390
|
+
uri: syncUrl,
|
|
325
391
|
}) // TODO: Handle if delta sync failed . Get the full locus object
|
|
326
392
|
.catch((err) => {
|
|
327
|
-
LoggerProxy.logger.error(
|
|
393
|
+
LoggerProxy.logger.error(
|
|
394
|
+
`Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`
|
|
395
|
+
);
|
|
328
396
|
|
|
329
397
|
return err;
|
|
330
398
|
});
|
|
@@ -337,7 +405,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
337
405
|
* @param {String} options.locusUrl sync url to get ht elatest locus delta
|
|
338
406
|
* @returns {Promise}
|
|
339
407
|
*/
|
|
340
|
-
getFullLocus(options: {
|
|
408
|
+
getFullLocus(options: {desync: boolean; locusUrl: string}) {
|
|
341
409
|
let {locusUrl} = options;
|
|
342
410
|
const {desync} = options;
|
|
343
411
|
|
|
@@ -349,9 +417,11 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
349
417
|
// @ts-ignore
|
|
350
418
|
return this.request({
|
|
351
419
|
method: HTTP_VERBS.GET,
|
|
352
|
-
uri: locusUrl
|
|
420
|
+
uri: locusUrl,
|
|
353
421
|
}).catch((err) => {
|
|
354
|
-
LoggerProxy.logger.error(
|
|
422
|
+
LoggerProxy.logger.error(
|
|
423
|
+
`Meeting:request#getFullLocus --> Error getting full locus, error ${err}`
|
|
424
|
+
);
|
|
355
425
|
|
|
356
426
|
return err;
|
|
357
427
|
});
|
|
@@ -390,16 +460,16 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
390
460
|
const body = {
|
|
391
461
|
device: {
|
|
392
462
|
deviceType: deviceType.PROVISIONAL,
|
|
393
|
-
url: phoneUrl
|
|
463
|
+
url: phoneUrl,
|
|
394
464
|
},
|
|
395
|
-
correlationId
|
|
465
|
+
correlationId,
|
|
396
466
|
};
|
|
397
467
|
|
|
398
468
|
// @ts-ignore
|
|
399
469
|
return this.request({
|
|
400
470
|
method: HTTP_VERBS.PUT,
|
|
401
471
|
uri,
|
|
402
|
-
body
|
|
472
|
+
body,
|
|
403
473
|
}).catch((err) => {
|
|
404
474
|
LoggerProxy.logger.error(
|
|
405
475
|
`Meeting:request#disconnectPhoneAudio --> Error when requesting phone ${phoneUrl} to leave, error ${err}`
|
|
@@ -432,27 +502,24 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
432
502
|
resourceId: string;
|
|
433
503
|
correlationId: string;
|
|
434
504
|
}) {
|
|
435
|
-
LoggerProxy.logger.info(
|
|
436
|
-
'Meeting:request#leaveMeeting --> Leaving a meeting',
|
|
437
|
-
correlationId
|
|
438
|
-
);
|
|
505
|
+
LoggerProxy.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);
|
|
439
506
|
|
|
440
507
|
const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;
|
|
441
508
|
const body = {
|
|
442
509
|
device: {
|
|
443
510
|
// @ts-ignore
|
|
444
511
|
deviceType: this.config.meetings.deviceType,
|
|
445
|
-
url
|
|
512
|
+
url,
|
|
446
513
|
},
|
|
447
514
|
usingResource: resourceId || null,
|
|
448
|
-
correlationId
|
|
515
|
+
correlationId,
|
|
449
516
|
};
|
|
450
517
|
|
|
451
518
|
// @ts-ignore
|
|
452
519
|
return this.request({
|
|
453
520
|
method: HTTP_VERBS.PUT,
|
|
454
521
|
uri,
|
|
455
|
-
body
|
|
522
|
+
body,
|
|
456
523
|
});
|
|
457
524
|
}
|
|
458
525
|
|
|
@@ -464,47 +531,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
464
531
|
* @param {String} options.correlationId
|
|
465
532
|
* @returns {Promise}
|
|
466
533
|
*/
|
|
467
|
-
acknowledgeMeeting(options: {
|
|
534
|
+
acknowledgeMeeting(options: {locusUrl: string; deviceUrl: string; correlationId: string}) {
|
|
468
535
|
const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;
|
|
469
536
|
const body = {
|
|
470
537
|
device: {
|
|
471
538
|
// @ts-ignore
|
|
472
539
|
deviceType: this.config.meetings.deviceType,
|
|
473
|
-
url: options.deviceUrl
|
|
540
|
+
url: options.deviceUrl,
|
|
474
541
|
},
|
|
475
|
-
correlationId: options.correlationId
|
|
542
|
+
correlationId: options.correlationId,
|
|
476
543
|
};
|
|
477
544
|
|
|
478
545
|
// @ts-ignore
|
|
479
546
|
return this.request({
|
|
480
547
|
method: HTTP_VERBS.PUT,
|
|
481
548
|
uri,
|
|
482
|
-
body
|
|
483
|
-
});
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
/**
|
|
487
|
-
* Make a network request to acknowledge a meeting
|
|
488
|
-
* @param {Object} options
|
|
489
|
-
* @param {String} options.locusUrl
|
|
490
|
-
* @param {String} options.deviceUrl
|
|
491
|
-
* @param {String} options.id
|
|
492
|
-
* @returns {Promise}
|
|
493
|
-
*/
|
|
494
|
-
recordMeeting(options: { locusUrl: string; deviceUrl: string; id: string, recording: any, paused: any }) {
|
|
495
|
-
const uri = `${options.locusUrl}/${CONTROLS}`;
|
|
496
|
-
const body = {
|
|
497
|
-
record: {
|
|
498
|
-
recording: options.recording,
|
|
499
|
-
paused: options.paused
|
|
500
|
-
}
|
|
501
|
-
};
|
|
502
|
-
|
|
503
|
-
// @ts-ignore
|
|
504
|
-
return this.request({
|
|
505
|
-
method: HTTP_VERBS.PATCH,
|
|
506
|
-
uri,
|
|
507
|
-
body
|
|
549
|
+
body,
|
|
508
550
|
});
|
|
509
551
|
}
|
|
510
552
|
|
|
@@ -512,15 +554,15 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
512
554
|
const uri = `${options.locusUrl}/${CONTROLS}`;
|
|
513
555
|
const body = {
|
|
514
556
|
lock: {
|
|
515
|
-
locked: options.lock
|
|
516
|
-
}
|
|
557
|
+
locked: options.lock,
|
|
558
|
+
},
|
|
517
559
|
};
|
|
518
560
|
|
|
519
561
|
// @ts-ignore
|
|
520
562
|
return this.request({
|
|
521
563
|
method: HTTP_VERBS.PATCH,
|
|
522
564
|
uri,
|
|
523
|
-
body
|
|
565
|
+
body,
|
|
524
566
|
});
|
|
525
567
|
}
|
|
526
568
|
|
|
@@ -532,13 +574,13 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
532
574
|
* @param {String} options.reason
|
|
533
575
|
* @returns {Promise}
|
|
534
576
|
*/
|
|
535
|
-
declineMeeting(options: {
|
|
577
|
+
declineMeeting(options: {locusUrl: string; deviceUrl: string; reason: string}) {
|
|
536
578
|
const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;
|
|
537
579
|
const body = {
|
|
538
580
|
device: {
|
|
539
581
|
// @ts-ignore
|
|
540
582
|
deviceType: this.config.meetings.deviceType,
|
|
541
|
-
url: options.deviceUrl
|
|
583
|
+
url: options.deviceUrl,
|
|
542
584
|
},
|
|
543
585
|
...(options.reason && {reason: options.reason}),
|
|
544
586
|
};
|
|
@@ -547,7 +589,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
547
589
|
return this.request({
|
|
548
590
|
method: HTTP_VERBS.PUT,
|
|
549
591
|
uri,
|
|
550
|
-
body
|
|
592
|
+
body,
|
|
551
593
|
});
|
|
552
594
|
}
|
|
553
595
|
|
|
@@ -562,34 +604,38 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
562
604
|
* @param {Boolean} options.preferTranscoding false for multistream (Homer), true for transcoded media (Edonus)
|
|
563
605
|
* @returns {Promise}
|
|
564
606
|
*/
|
|
565
|
-
remoteAudioVideoToggle(
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
607
|
+
remoteAudioVideoToggle(
|
|
608
|
+
options:
|
|
609
|
+
| {
|
|
610
|
+
selfId: string;
|
|
611
|
+
locusUrl: string;
|
|
612
|
+
deviceUrl: string;
|
|
613
|
+
resourceId: string;
|
|
614
|
+
localMedias: string;
|
|
615
|
+
}
|
|
616
|
+
| any
|
|
617
|
+
) {
|
|
572
618
|
const uri = `${options.locusUrl}/${PARTICIPANT}/${options.selfId}/${MEDIA}`;
|
|
573
619
|
const body = {
|
|
574
620
|
device: {
|
|
575
621
|
// @ts-ignore
|
|
576
622
|
deviceType: this.config.meetings.deviceType,
|
|
577
|
-
url: options.deviceUrl
|
|
623
|
+
url: options.deviceUrl,
|
|
578
624
|
},
|
|
579
625
|
usingResource: options.resourceId || null,
|
|
580
626
|
correlationId: options.correlationId,
|
|
581
627
|
respOnlySdp: true,
|
|
582
628
|
localMedias: options.localMedias,
|
|
583
629
|
clientMediaPreferences: {
|
|
584
|
-
preferTranscoding: options.preferTranscoding ?? true
|
|
585
|
-
}
|
|
630
|
+
preferTranscoding: options.preferTranscoding ?? true,
|
|
631
|
+
},
|
|
586
632
|
};
|
|
587
633
|
|
|
588
634
|
// @ts-ignore
|
|
589
635
|
return this.request({
|
|
590
636
|
method: HTTP_VERBS.PUT,
|
|
591
637
|
uri,
|
|
592
|
-
body
|
|
638
|
+
body,
|
|
593
639
|
});
|
|
594
640
|
}
|
|
595
641
|
|
|
@@ -603,13 +649,18 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
603
649
|
* @param {String} options.uri floor grant uri
|
|
604
650
|
* @returns {Promise}
|
|
605
651
|
*/
|
|
606
|
-
changeMeetingFloor(
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
652
|
+
changeMeetingFloor(
|
|
653
|
+
options:
|
|
654
|
+
| {
|
|
655
|
+
disposition: string;
|
|
656
|
+
personUrl: string;
|
|
657
|
+
deviceUrl: string;
|
|
658
|
+
resourceId: string;
|
|
659
|
+
uri: string;
|
|
660
|
+
annotation: any;
|
|
661
|
+
}
|
|
662
|
+
| any
|
|
663
|
+
) {
|
|
613
664
|
let floorReq: any = {disposition: options.disposition};
|
|
614
665
|
|
|
615
666
|
/* istanbul ignore else */
|
|
@@ -621,31 +672,34 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
621
672
|
{
|
|
622
673
|
// @ts-ignore
|
|
623
674
|
deviceType: this.config.meetings.deviceType,
|
|
624
|
-
url: options.deviceUrl
|
|
625
|
-
}
|
|
626
|
-
]
|
|
675
|
+
url: options.deviceUrl,
|
|
676
|
+
},
|
|
677
|
+
],
|
|
627
678
|
},
|
|
628
679
|
disposition: options.disposition,
|
|
629
680
|
requester: {
|
|
630
|
-
url: options.personUrl
|
|
631
|
-
}
|
|
681
|
+
url: options.personUrl,
|
|
682
|
+
},
|
|
632
683
|
};
|
|
633
684
|
}
|
|
634
685
|
|
|
635
686
|
const body: any = {
|
|
636
687
|
floor: floorReq,
|
|
637
|
-
resourceUrl: options.resourceUrl
|
|
688
|
+
resourceUrl: options.resourceUrl,
|
|
638
689
|
};
|
|
639
690
|
|
|
640
691
|
if (options?.resourceToken) {
|
|
641
692
|
body.resourceToken = options?.resourceToken;
|
|
642
693
|
}
|
|
694
|
+
if (options?.annotation) {
|
|
695
|
+
body.annotation = options?.annotation;
|
|
696
|
+
}
|
|
643
697
|
|
|
644
698
|
// @ts-ignore
|
|
645
699
|
return this.request({
|
|
646
700
|
uri: options.uri,
|
|
647
701
|
method: HTTP_VERBS.PUT,
|
|
648
|
-
body
|
|
702
|
+
body,
|
|
649
703
|
});
|
|
650
704
|
}
|
|
651
705
|
|
|
@@ -657,7 +711,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
657
711
|
* @param {String} options.tones a string of one or more DTMF tones to send
|
|
658
712
|
* @returns {Promise}
|
|
659
713
|
*/
|
|
660
|
-
sendDTMF({
|
|
714
|
+
sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {
|
|
661
715
|
// @ts-ignore
|
|
662
716
|
return this.request({
|
|
663
717
|
method: HTTP_VERBS.POST,
|
|
@@ -666,9 +720,9 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
666
720
|
deviceUrl,
|
|
667
721
|
dtmf: {
|
|
668
722
|
correlationId: uuid.v4(),
|
|
669
|
-
tones
|
|
670
|
-
}
|
|
671
|
-
}
|
|
723
|
+
tones,
|
|
724
|
+
},
|
|
725
|
+
},
|
|
672
726
|
});
|
|
673
727
|
}
|
|
674
728
|
|
|
@@ -707,24 +761,37 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
707
761
|
}) {
|
|
708
762
|
// send main/content renderInfo only if both width and height are specified
|
|
709
763
|
if (main && (!main.width || !main.height)) {
|
|
710
|
-
return Promise.reject(
|
|
764
|
+
return Promise.reject(
|
|
765
|
+
new Error(
|
|
766
|
+
`Both width and height must be specified. One of them is missing for main: ${JSON.stringify(
|
|
767
|
+
main
|
|
768
|
+
)}`
|
|
769
|
+
)
|
|
770
|
+
);
|
|
711
771
|
}
|
|
712
772
|
|
|
713
773
|
if (content && (!content.width || !content.height)) {
|
|
714
|
-
return Promise.reject(
|
|
774
|
+
return Promise.reject(
|
|
775
|
+
new Error(
|
|
776
|
+
`Both width and height must be specified. One of them is missing for content: ${JSON.stringify(
|
|
777
|
+
content
|
|
778
|
+
)}`
|
|
779
|
+
)
|
|
780
|
+
);
|
|
715
781
|
}
|
|
716
782
|
|
|
717
|
-
const renderInfoMain =
|
|
718
|
-
const renderInfoContent =
|
|
783
|
+
const renderInfoMain = main ? {width: main.width, height: main.height} : undefined;
|
|
784
|
+
const renderInfoContent = content ? {width: content.width, height: content.height} : undefined;
|
|
719
785
|
|
|
720
|
-
const layoutParams =
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
786
|
+
const layoutParams =
|
|
787
|
+
renderInfoMain || renderInfoContent
|
|
788
|
+
? {
|
|
789
|
+
renderInfo: {
|
|
790
|
+
main: renderInfoMain,
|
|
791
|
+
content: renderInfoContent,
|
|
792
|
+
},
|
|
793
|
+
}
|
|
794
|
+
: undefined;
|
|
728
795
|
|
|
729
796
|
// @ts-ignore
|
|
730
797
|
return this.request({
|
|
@@ -734,9 +801,9 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
734
801
|
layout: {
|
|
735
802
|
deviceUrl,
|
|
736
803
|
type: layoutType,
|
|
737
|
-
layoutParams
|
|
738
|
-
}
|
|
739
|
-
}
|
|
804
|
+
layoutParams,
|
|
805
|
+
},
|
|
806
|
+
},
|
|
740
807
|
});
|
|
741
808
|
}
|
|
742
809
|
|
|
@@ -746,13 +813,13 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
746
813
|
* @param {Url} options.locusUrl
|
|
747
814
|
* @returns {Promise}
|
|
748
815
|
*/
|
|
749
|
-
endMeetingForAll({
|
|
816
|
+
endMeetingForAll({locusUrl}: {locusUrl: string}) {
|
|
750
817
|
const uri = `${locusUrl}/${END}`;
|
|
751
818
|
|
|
752
819
|
// @ts-ignore
|
|
753
820
|
return this.request({
|
|
754
821
|
method: HTTP_VERBS.POST,
|
|
755
|
-
uri
|
|
822
|
+
uri,
|
|
756
823
|
});
|
|
757
824
|
}
|
|
758
825
|
|
|
@@ -762,11 +829,63 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
762
829
|
* @param {Url} options.keepAliveUrl
|
|
763
830
|
* @returns {Promise}
|
|
764
831
|
*/
|
|
765
|
-
keepAlive({
|
|
832
|
+
keepAlive({keepAliveUrl}: {keepAliveUrl: string}) {
|
|
833
|
+
// @ts-ignore
|
|
834
|
+
return this.request({
|
|
835
|
+
method: HTTP_VERBS.GET,
|
|
836
|
+
uri: keepAliveUrl,
|
|
837
|
+
});
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
/**
|
|
841
|
+
* Make a network request to send a reaction.
|
|
842
|
+
* @param {Object} options
|
|
843
|
+
* @param {Url} options.reactionChannelUrl
|
|
844
|
+
* @param {Reaction} options.reaction
|
|
845
|
+
* @param {string} options.senderID
|
|
846
|
+
* @returns {Promise}
|
|
847
|
+
*/
|
|
848
|
+
sendReaction({reactionChannelUrl, reaction, participantId}: SendReactionOptions) {
|
|
849
|
+
const uri = reactionChannelUrl;
|
|
850
|
+
|
|
851
|
+
// @ts-ignore
|
|
852
|
+
return this.request({
|
|
853
|
+
method: HTTP_VERBS.POST,
|
|
854
|
+
uri,
|
|
855
|
+
body: {
|
|
856
|
+
sender: {participantId},
|
|
857
|
+
reaction,
|
|
858
|
+
},
|
|
859
|
+
});
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
/**
|
|
863
|
+
* Make a network request to enable or disable reactions.
|
|
864
|
+
* @param {boolean} options.enable - determines if we need to enable or disable.
|
|
865
|
+
* @param {locusUrl} options.locusUrl
|
|
866
|
+
* @returns {Promise}
|
|
867
|
+
*/
|
|
868
|
+
toggleReactions({enable, locusUrl, requestingParticipantId}: ToggleReactionsOptions) {
|
|
869
|
+
const uri = `${locusUrl}/${CONTROLS}`;
|
|
870
|
+
|
|
871
|
+
// @ts-ignore
|
|
872
|
+
return this.request({
|
|
873
|
+
method: HTTP_VERBS.PUT,
|
|
874
|
+
uri,
|
|
875
|
+
body: {
|
|
876
|
+
reactions: {
|
|
877
|
+
enabled: enable,
|
|
878
|
+
},
|
|
879
|
+
requestingParticipantId,
|
|
880
|
+
},
|
|
881
|
+
});
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
getLocusStatusByUrl(locusUrl: string) {
|
|
766
885
|
// @ts-ignore
|
|
767
886
|
return this.request({
|
|
768
887
|
method: HTTP_VERBS.GET,
|
|
769
|
-
uri:
|
|
888
|
+
uri: locusUrl,
|
|
770
889
|
});
|
|
771
890
|
}
|
|
772
891
|
}
|