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