@webex/plugin-meetings 2.60.0-next.9 → 2.60.1
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/README.md +8 -46
- package/dist/common/browser-detection.js +3 -2
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +4 -3
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +2 -1
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +2 -1
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +2 -1
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +2 -1
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +2 -1
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +4 -3
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +2 -1
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +2 -1
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/{reclaim-host-role-errors.js → reclaim-host-role-error.js} +11 -7
- package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
- package/dist/common/errors/reconnection-in-progress.js +2 -1
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +2 -1
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +2 -1
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.d.ts +8 -20
- package/dist/common/errors/webex-errors.js +28 -48
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +2 -1
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +2 -1
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +2 -1
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +2 -1
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +2 -1
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +2 -1
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +3 -2
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.d.ts +1 -3
- package/dist/common/logs/request.js +5 -8
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.d.ts +7 -9
- package/dist/common/queue.js +9 -22
- package/dist/common/queue.js.map +1 -1
- package/dist/config.d.ts +7 -5
- package/dist/config.js +11 -8
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +97 -217
- package/dist/constants.js +441 -416
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +6 -3
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.d.ts +1 -11
- package/dist/controls-options-manager/enums.js +6 -15
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.d.ts +1 -17
- package/dist/controls-options-manager/index.js +38 -127
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/util.d.ts +7 -1
- package/dist/controls-options-manager/util.js +19 -309
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.d.ts +3 -6
- package/dist/index.js +4 -116
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +11 -100
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +4 -3
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +2 -1
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +2 -1
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.d.ts +4 -57
- package/dist/locus-info/index.js +84 -425
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +5 -13
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +3 -58
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.d.ts +6 -66
- package/dist/locus-info/parser.js +80 -253
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +13 -97
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.d.ts +0 -2
- package/dist/media/index.js +319 -107
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.d.ts +53 -38
- package/dist/media/properties.js +153 -96
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +22 -1
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.d.ts +230 -234
- package/dist/mediaQualityMetrics/config.js +498 -302
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.d.ts +42 -0
- package/dist/meeting/effectsState.js +260 -0
- package/dist/meeting/effectsState.js.map +1 -0
- package/dist/meeting/in-meeting-actions.d.ts +0 -88
- package/dist/meeting/in-meeting-actions.js +3 -94
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.d.ts +494 -591
- package/dist/meeting/index.js +2969 -4707
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.d.ts +25 -93
- package/dist/meeting/muteState.js +133 -224
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.d.ts +47 -82
- package/dist/meeting/request.js +199 -297
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.js +2 -1
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.d.ts +1 -102
- package/dist/meeting/util.js +435 -605
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +4 -3
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.d.ts +1 -13
- package/dist/meeting-info/index.js +7 -74
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.d.ts +1 -31
- package/dist/meeting-info/meeting-info-v2.js +63 -200
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +2 -1
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +3 -2
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +41 -39
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.d.ts +0 -17
- package/dist/meetings/collection.js +4 -42
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.d.ts +21 -103
- package/dist/meetings/index.js +124 -486
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +3 -4
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +6 -107
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.d.ts +1 -13
- package/dist/member/index.js +2 -45
- package/dist/member/index.js.map +1 -1
- package/dist/member/member.types.js +4 -3
- package/dist/member/member.types.js.map +1 -1
- package/dist/member/util.js +29 -120
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.d.ts +0 -5
- package/dist/members/collection.js +2 -11
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.d.ts +11 -56
- package/dist/members/index.js +47 -174
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.d.ts +11 -67
- package/dist/members/request.js +54 -102
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +4 -3
- package/dist/members/types.js.map +1 -1
- package/dist/members/util.d.ts +1 -214
- package/dist/members/util.js +284 -327
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.d.ts +169 -0
- package/dist/metrics/config.js +289 -0
- package/dist/metrics/config.js.map +1 -0
- package/dist/metrics/constants.d.ts +6 -15
- package/dist/metrics/constants.js +9 -17
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.d.ts +111 -4
- package/dist/metrics/index.js +452 -4
- package/dist/metrics/index.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +4 -5
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/peer-connection-manager/index.d.ts +6 -0
- package/dist/peer-connection-manager/index.js +671 -0
- package/dist/peer-connection-manager/index.js.map +1 -0
- package/dist/peer-connection-manager/util.d.ts +6 -0
- package/dist/peer-connection-manager/util.js +110 -0
- package/dist/peer-connection-manager/util.js.map +1 -0
- package/dist/personal-meeting-room/index.js +3 -2
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +3 -2
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +2 -1
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.d.ts +7 -62
- package/dist/reachability/index.js +72 -265
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.d.ts +3 -7
- package/dist/reachability/request.js +10 -18
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/reactions.d.ts +2 -2
- package/dist/reactions/reactions.js +6 -4
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.d.ts +3 -23
- package/dist/reactions/reactions.type.js +23 -21
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.d.ts +8 -32
- package/dist/reconnection-manager/index.js +231 -282
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +5 -4
- package/dist/recording-controller/enums.js.map +1 -1
- package/dist/recording-controller/index.d.ts +1 -15
- package/dist/recording-controller/index.js +46 -57
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.d.ts +4 -5
- package/dist/recording-controller/util.js +10 -10
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/collection.d.ts +10 -0
- package/dist/roap/collection.js +63 -0
- package/dist/roap/collection.js.map +1 -0
- package/dist/roap/handler.d.ts +47 -0
- package/dist/roap/handler.js +279 -0
- package/dist/roap/handler.js.map +1 -0
- package/dist/roap/index.d.ts +47 -9
- package/dist/roap/index.js +235 -101
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.d.ts +12 -18
- package/dist/roap/request.js +180 -126
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/state.d.ts +9 -0
- package/dist/roap/state.js +127 -0
- package/dist/roap/state.js.map +1 -0
- package/dist/roap/turnDiscovery.d.ts +16 -27
- package/dist/roap/turnDiscovery.js +105 -115
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/util.d.ts +2 -0
- package/dist/roap/util.js +76 -0
- package/dist/roap/util.js.map +1 -0
- package/dist/statsAnalyzer/global.d.ts +83 -1
- package/dist/statsAnalyzer/global.js +85 -2
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.d.ts +30 -28
- package/dist/statsAnalyzer/index.js +509 -374
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +6 -8
- package/dist/statsAnalyzer/mqaUtil.js +83 -116
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +2 -1
- package/dist/transcription/index.js.map +1 -1
- package/package.json +26 -35
- package/src/common/errors/webex-errors.ts +12 -36
- package/src/common/logs/logger-proxy.ts +1 -1
- package/src/common/logs/request.ts +1 -5
- package/src/common/queue.ts +8 -22
- package/src/config.ts +7 -5
- package/src/constants.ts +97 -244
- package/src/controls-options-manager/enums.ts +0 -12
- package/src/controls-options-manager/index.ts +21 -116
- package/src/controls-options-manager/util.ts +14 -294
- package/src/index.js +15 -0
- package/src/locus-info/controlsUtils.ts +0 -110
- package/src/locus-info/index.ts +61 -449
- package/src/locus-info/infoUtils.ts +2 -14
- package/src/locus-info/mediaSharesUtils.ts +0 -64
- package/src/locus-info/parser.ts +47 -258
- package/src/locus-info/selfUtils.ts +2 -85
- package/src/media/index.ts +370 -153
- package/src/media/properties.ts +136 -106
- package/src/media/util.ts +21 -0
- package/src/mediaQualityMetrics/config.ts +377 -244
- package/src/meeting/effectsState.ts +209 -0
- package/src/meeting/in-meeting-actions.ts +0 -176
- package/src/meeting/index.ts +2482 -3929
- package/src/meeting/muteState.ts +138 -224
- package/src/meeting/request.ts +127 -207
- package/src/meeting/util.ts +423 -590
- package/src/meeting-info/index.ts +8 -81
- package/src/meeting-info/meeting-info-v2.ts +13 -163
- package/src/meeting-info/util.ts +1 -1
- package/src/meeting-info/utilv2.ts +28 -28
- package/src/meetings/collection.ts +0 -33
- package/src/meetings/index.ts +126 -486
- package/src/meetings/request.ts +0 -2
- package/src/meetings/util.ts +5 -116
- package/src/member/index.ts +1 -43
- package/src/member/util.ts +28 -125
- package/src/members/collection.ts +0 -8
- package/src/members/index.ts +52 -187
- package/src/members/request.ts +27 -87
- package/src/members/util.ts +291 -332
- package/src/metrics/config.ts +485 -0
- package/src/metrics/constants.ts +6 -15
- package/src/metrics/index.ts +471 -1
- package/src/networkQualityMonitor/index.ts +6 -6
- package/src/peer-connection-manager/index.ts +847 -0
- package/src/peer-connection-manager/util.ts +119 -0
- package/src/reachability/index.ts +45 -238
- package/src/reachability/request.ts +8 -17
- package/src/reactions/reactions.ts +4 -4
- package/src/reactions/reactions.type.ts +4 -30
- package/src/reconnection-manager/index.ts +156 -168
- package/src/recording-controller/index.ts +3 -20
- package/src/recording-controller/util.ts +9 -26
- package/src/roap/collection.ts +62 -0
- package/src/roap/handler.ts +294 -0
- package/src/roap/index.ts +241 -98
- package/src/roap/request.ts +148 -74
- package/src/roap/state.ts +156 -0
- package/src/roap/turnDiscovery.ts +56 -62
- package/src/roap/util.ts +100 -0
- package/src/statsAnalyzer/global.ts +84 -1
- package/src/statsAnalyzer/index.ts +642 -413
- package/src/statsAnalyzer/mqaUtil.ts +114 -111
- package/test/integration/spec/journey.js +264 -320
- package/test/integration/spec/space-meeting.js +4 -77
- package/test/unit/spec/common/queue.js +2 -31
- package/test/unit/spec/controls-options-manager/index.js +0 -163
- package/test/unit/spec/controls-options-manager/util.js +60 -576
- package/test/unit/spec/fixture/locus.js +0 -1
- package/test/unit/spec/locus-info/controlsUtils.js +30 -323
- package/test/unit/spec/locus-info/index.js +15 -1389
- package/test/unit/spec/locus-info/infoUtils.js +16 -54
- package/test/unit/spec/locus-info/lib/SeqCmp.json +0 -16
- package/test/unit/spec/locus-info/lib/selfConstant.js +0 -48
- package/test/unit/spec/locus-info/parser.js +35 -116
- package/test/unit/spec/locus-info/selfUtils.js +0 -275
- package/test/unit/spec/media/properties.ts +84 -75
- package/test/unit/spec/meeting/effectsState.js +281 -0
- package/test/unit/spec/meeting/in-meeting-actions.ts +0 -86
- package/test/unit/spec/meeting/index.js +3136 -8547
- package/test/unit/spec/meeting/muteState.js +213 -409
- package/test/unit/spec/meeting/request.js +42 -512
- package/test/unit/spec/meeting/utils.js +24 -741
- package/test/unit/spec/meeting-info/meetinginfov2.js +5 -527
- package/test/unit/spec/meeting-info/utilv2.js +0 -21
- package/test/unit/spec/meetings/collection.js +0 -26
- package/test/unit/spec/meetings/index.js +211 -1278
- package/test/unit/spec/meetings/utils.js +2 -202
- package/test/unit/spec/member/index.js +9 -32
- package/test/unit/spec/member/util.js +61 -499
- package/test/unit/spec/members/index.js +5 -394
- package/test/unit/spec/members/request.js +27 -206
- package/test/unit/spec/members/utils.js +38 -173
- package/test/unit/spec/metrics/index.js +50 -1
- package/test/unit/spec/networkQualityMonitor/index.js +4 -4
- package/test/unit/spec/peerconnection-manager/index.js +218 -0
- package/test/unit/spec/peerconnection-manager/utils.js +49 -0
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +388 -0
- package/test/unit/spec/reachability/index.ts +24 -598
- package/test/unit/spec/reconnection-manager/index.js +24 -162
- package/test/unit/spec/recording-controller/index.js +218 -293
- package/test/unit/spec/recording-controller/util.js +96 -223
- package/test/unit/spec/roap/index.ts +76 -200
- package/test/unit/spec/roap/turnDiscovery.ts +48 -86
- package/test/unit/spec/roap/util.js +30 -0
- package/test/unit/spec/stats-analyzer/index.js +174 -188
- package/test/utils/testUtils.js +45 -0
- package/test/utils/webex-config.js +0 -4
- package/test/utils/webex-test-users.js +3 -7
- package/dist/annotation/annotation.types.d.ts +0 -42
- package/dist/annotation/annotation.types.js +0 -7
- package/dist/annotation/annotation.types.js.map +0 -1
- package/dist/annotation/constants.d.ts +0 -31
- package/dist/annotation/constants.js +0 -41
- package/dist/annotation/constants.js.map +0 -1
- package/dist/annotation/index.d.ts +0 -117
- package/dist/annotation/index.js +0 -357
- package/dist/annotation/index.js.map +0 -1
- package/dist/breakouts/breakout.d.ts +0 -8
- package/dist/breakouts/breakout.js +0 -215
- package/dist/breakouts/breakout.js.map +0 -1
- package/dist/breakouts/collection.d.ts +0 -5
- package/dist/breakouts/collection.js +0 -22
- package/dist/breakouts/collection.js.map +0 -1
- package/dist/breakouts/edit-lock-error.d.ts +0 -15
- package/dist/breakouts/edit-lock-error.js +0 -51
- package/dist/breakouts/edit-lock-error.js.map +0 -1
- package/dist/breakouts/events.d.ts +0 -8
- package/dist/breakouts/events.js +0 -44
- package/dist/breakouts/events.js.map +0 -1
- package/dist/breakouts/index.d.ts +0 -5
- package/dist/breakouts/index.js +0 -1047
- package/dist/breakouts/index.js.map +0 -1
- package/dist/breakouts/request.d.ts +0 -22
- package/dist/breakouts/request.js +0 -77
- package/dist/breakouts/request.js.map +0 -1
- package/dist/breakouts/utils.d.ts +0 -15
- package/dist/breakouts/utils.js +0 -64
- package/dist/breakouts/utils.js.map +0 -1
- package/dist/common/errors/no-meeting-info.d.ts +0 -14
- package/dist/common/errors/no-meeting-info.js +0 -50
- package/dist/common/errors/no-meeting-info.js.map +0 -1
- package/dist/common/errors/reclaim-host-role-errors.js.map +0 -1
- package/dist/controls-options-manager/types.d.ts +0 -43
- package/dist/controls-options-manager/types.js +0 -7
- package/dist/controls-options-manager/types.js.map +0 -1
- package/dist/interpretation/collection.d.ts +0 -5
- package/dist/interpretation/collection.js +0 -22
- package/dist/interpretation/collection.js.map +0 -1
- package/dist/interpretation/index.d.ts +0 -5
- package/dist/interpretation/index.js +0 -365
- package/dist/interpretation/index.js.map +0 -1
- package/dist/interpretation/siLanguage.d.ts +0 -5
- package/dist/interpretation/siLanguage.js +0 -24
- package/dist/interpretation/siLanguage.js.map +0 -1
- package/dist/meeting/locusMediaRequest.d.ts +0 -74
- package/dist/meeting/locusMediaRequest.js +0 -291
- package/dist/meeting/locusMediaRequest.js.map +0 -1
- package/dist/meeting/request.type.d.ts +0 -11
- package/dist/meeting/request.type.js +0 -7
- package/dist/meeting/request.type.js.map +0 -1
- package/dist/meetings/meetings.types.d.ts +0 -4
- package/dist/meetings/meetings.types.js +0 -7
- package/dist/meetings/meetings.types.js.map +0 -1
- package/dist/member/types.d.ts +0 -32
- package/dist/member/types.js +0 -23
- package/dist/member/types.js.map +0 -1
- package/dist/multistream/mediaRequestManager.d.ts +0 -118
- package/dist/multistream/mediaRequestManager.js +0 -344
- package/dist/multistream/mediaRequestManager.js.map +0 -1
- package/dist/multistream/receiveSlot.d.ts +0 -68
- package/dist/multistream/receiveSlot.js +0 -200
- package/dist/multistream/receiveSlot.js.map +0 -1
- package/dist/multistream/receiveSlotManager.d.ts +0 -56
- package/dist/multistream/receiveSlotManager.js +0 -174
- package/dist/multistream/receiveSlotManager.js.map +0 -1
- package/dist/multistream/remoteMedia.d.ts +0 -72
- package/dist/multistream/remoteMedia.js +0 -268
- package/dist/multistream/remoteMedia.js.map +0 -1
- package/dist/multistream/remoteMediaGroup.d.ts +0 -47
- package/dist/multistream/remoteMediaGroup.js +0 -267
- package/dist/multistream/remoteMediaGroup.js.map +0 -1
- package/dist/multistream/remoteMediaManager.d.ts +0 -285
- package/dist/multistream/remoteMediaManager.js +0 -1211
- package/dist/multistream/remoteMediaManager.js.map +0 -1
- package/dist/multistream/sendSlotManager.d.ts +0 -61
- package/dist/multistream/sendSlotManager.js +0 -236
- package/dist/multistream/sendSlotManager.js.map +0 -1
- package/dist/reactions/constants.d.ts +0 -3
- package/dist/reactions/constants.js +0 -12
- package/dist/reactions/constants.js.map +0 -1
- package/dist/rtcMetrics/constants.d.ts +0 -4
- package/dist/rtcMetrics/constants.js +0 -11
- package/dist/rtcMetrics/constants.js.map +0 -1
- package/dist/rtcMetrics/index.d.ts +0 -54
- package/dist/rtcMetrics/index.js +0 -140
- package/dist/rtcMetrics/index.js.map +0 -1
- package/dist/webinar/collection.d.ts +0 -16
- package/dist/webinar/collection.js +0 -43
- package/dist/webinar/collection.js.map +0 -1
- package/dist/webinar/index.d.ts +0 -5
- package/dist/webinar/index.js +0 -68
- package/dist/webinar/index.js.map +0 -1
- package/src/annotation/annotation.types.ts +0 -50
- package/src/annotation/constants.ts +0 -36
- package/src/annotation/index.ts +0 -328
- package/src/breakouts/README.md +0 -220
- package/src/breakouts/breakout.ts +0 -188
- package/src/breakouts/collection.ts +0 -19
- package/src/breakouts/edit-lock-error.ts +0 -25
- package/src/breakouts/events.ts +0 -56
- package/src/breakouts/index.ts +0 -925
- package/src/breakouts/request.ts +0 -55
- package/src/breakouts/utils.ts +0 -57
- package/src/common/errors/no-meeting-info.ts +0 -24
- package/src/controls-options-manager/types.ts +0 -59
- package/src/index.ts +0 -40
- package/src/interpretation/README.md +0 -60
- package/src/interpretation/collection.ts +0 -19
- package/src/interpretation/index.ts +0 -332
- package/src/interpretation/siLanguage.ts +0 -18
- package/src/meeting/locusMediaRequest.ts +0 -313
- package/src/meeting/request.type.ts +0 -13
- package/src/meetings/meetings.types.ts +0 -12
- package/src/member/types.ts +0 -38
- package/src/multistream/mediaRequestManager.ts +0 -440
- package/src/multistream/receiveSlot.ts +0 -184
- package/src/multistream/receiveSlotManager.ts +0 -166
- package/src/multistream/remoteMedia.ts +0 -254
- package/src/multistream/remoteMediaGroup.ts +0 -284
- package/src/multistream/remoteMediaManager.ts +0 -1145
- package/src/multistream/sendSlotManager.ts +0 -170
- package/src/reactions/constants.ts +0 -4
- package/src/rtcMetrics/constants.ts +0 -3
- package/src/rtcMetrics/index.ts +0 -124
- package/src/webinar/collection.ts +0 -31
- package/src/webinar/index.ts +0 -62
- package/test/integration/spec/converged-space-meetings.js +0 -233
- package/test/unit/spec/annotation/index.ts +0 -418
- package/test/unit/spec/breakouts/breakout.ts +0 -237
- package/test/unit/spec/breakouts/collection.ts +0 -15
- package/test/unit/spec/breakouts/edit-lock-error.ts +0 -30
- package/test/unit/spec/breakouts/events.ts +0 -89
- package/test/unit/spec/breakouts/index.ts +0 -1790
- package/test/unit/spec/breakouts/request.ts +0 -104
- package/test/unit/spec/breakouts/utils.js +0 -72
- package/test/unit/spec/interpretation/collection.ts +0 -15
- package/test/unit/spec/interpretation/index.ts +0 -589
- package/test/unit/spec/interpretation/siLanguage.ts +0 -28
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +0 -32
- package/test/unit/spec/media/index.ts +0 -290
- package/test/unit/spec/meeting/locusMediaRequest.ts +0 -442
- package/test/unit/spec/meeting-info/index.js +0 -300
- package/test/unit/spec/multistream/mediaRequestManager.ts +0 -1418
- package/test/unit/spec/multistream/receiveSlot.ts +0 -163
- package/test/unit/spec/multistream/receiveSlotManager.ts +0 -203
- package/test/unit/spec/multistream/remoteMedia.ts +0 -255
- package/test/unit/spec/multistream/remoteMediaGroup.ts +0 -662
- package/test/unit/spec/multistream/remoteMediaManager.ts +0 -1924
- package/test/unit/spec/multistream/sendSlotManager.ts +0 -242
- package/test/unit/spec/reachability/request.js +0 -68
- package/test/unit/spec/roap/request.ts +0 -232
- package/test/unit/spec/rtcMetrics/index.ts +0 -93
- package/test/unit/spec/webinar/collection.ts +0 -13
- package/test/unit/spec/webinar/index.ts +0 -60
- package/test/utils/constants.js +0 -9
- package/test/utils/integrationTestUtils.js +0 -46
- /package/dist/common/errors/{reclaim-host-role-errors.d.ts → reclaim-host-role-error.d.ts} +0 -0
- /package/src/common/errors/{reclaim-host-role-errors.ts → reclaim-host-role-error.ts} +0 -0
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
SendSlot,
|
|
3
|
-
MediaType,
|
|
4
|
-
LocalStream,
|
|
5
|
-
MultistreamRoapMediaConnection,
|
|
6
|
-
} from '@webex/internal-media-core';
|
|
7
|
-
|
|
8
|
-
export default class SendSlotManager {
|
|
9
|
-
private readonly slots: Map<MediaType, SendSlot> = new Map();
|
|
10
|
-
private readonly LoggerProxy: any;
|
|
11
|
-
|
|
12
|
-
constructor(LoggerProxy: any) {
|
|
13
|
-
this.LoggerProxy = LoggerProxy;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* This method is used to create a sendSlot for the given mediaType and returns the created sendSlot
|
|
18
|
-
* @param {MultistreamRoapMediaConnection} mediaConnection MultistreamRoapMediaConnection for which a sendSlot needs to be created
|
|
19
|
-
* @param {MediaType} mediaType MediaType for which a sendSlot needs to be created (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
|
|
20
|
-
* @param {boolean} active This is optional boolean to set the active state of the sendSlot. Default is true
|
|
21
|
-
* @returns {SendSlot} slot The created sendSlot
|
|
22
|
-
*/
|
|
23
|
-
public createSlot(
|
|
24
|
-
mediaConnection: MultistreamRoapMediaConnection,
|
|
25
|
-
mediaType: MediaType,
|
|
26
|
-
active = true
|
|
27
|
-
): SendSlot {
|
|
28
|
-
if (this.slots.has(mediaType)) {
|
|
29
|
-
throw new Error(`Slot for ${mediaType} already exists`);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const slot: SendSlot = mediaConnection.createSendSlot(mediaType, active);
|
|
33
|
-
|
|
34
|
-
this.slots.set(mediaType, slot);
|
|
35
|
-
|
|
36
|
-
this.LoggerProxy.logger.info(
|
|
37
|
-
`SendSlotsManager->createSlot#Created slot for ${mediaType} with active ${active}`
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
return slot;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* This method is used to retrieve the sendSlot for the given mediaType
|
|
45
|
-
* @param {MediaType} mediaType of which the slot needs to be retrieved
|
|
46
|
-
* @returns {SendSlot}
|
|
47
|
-
*/
|
|
48
|
-
public getSlot(mediaType: MediaType): SendSlot {
|
|
49
|
-
const slot = this.slots.get(mediaType);
|
|
50
|
-
|
|
51
|
-
if (!slot) {
|
|
52
|
-
throw new Error(`Slot for ${mediaType} does not exist`);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return slot;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* This method publishes the given stream to the sendSlot for the given mediaType
|
|
60
|
-
* @param {MediaType} mediaType MediaType of the sendSlot to which a stream needs to be published (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
|
|
61
|
-
* @param {LocalStream} stream LocalStream to be published
|
|
62
|
-
* @returns {Promise<void>}
|
|
63
|
-
*/
|
|
64
|
-
public async publishStream(mediaType: MediaType, stream: LocalStream): Promise<void> {
|
|
65
|
-
const slot = this.slots.get(mediaType);
|
|
66
|
-
|
|
67
|
-
if (!slot) {
|
|
68
|
-
throw new Error(`Slot for ${mediaType} does not exist`);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
await slot.publishStream(stream);
|
|
72
|
-
|
|
73
|
-
this.LoggerProxy.logger.info(
|
|
74
|
-
`SendSlotsManager->publishStream#Published stream for ${mediaType} and stream with label ${stream.label} and muted ${stream.muted}`
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* This method unpublishes the stream from the sendSlot of the given mediaType
|
|
80
|
-
* @param {MediaType} mediaType MediaType of the sendSlot from which a stream needs to be unpublished (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
|
|
81
|
-
* @returns {Promise<void>}
|
|
82
|
-
*/
|
|
83
|
-
public async unpublishStream(mediaType: MediaType): Promise<void> {
|
|
84
|
-
const slot = this.slots.get(mediaType);
|
|
85
|
-
|
|
86
|
-
if (!slot) {
|
|
87
|
-
throw new Error(`Slot for ${mediaType} does not exist`);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
await slot.unpublishStream();
|
|
91
|
-
|
|
92
|
-
this.LoggerProxy.logger.info(
|
|
93
|
-
`SendSlotsManager->unpublishStream#Unpublished stream for ${mediaType}`
|
|
94
|
-
);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* This method is used to set the active state of the sendSlot for the given mediaType
|
|
99
|
-
* @param {MediaType} mediaType The MediaType of the sendSlot for which the active state needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
|
|
100
|
-
* @param {boolean} active The boolean to set the active state of the sendSlot. Default is true
|
|
101
|
-
* @returns {void}
|
|
102
|
-
*/
|
|
103
|
-
public setActive(mediaType: MediaType, active = true): void {
|
|
104
|
-
const slot = this.slots.get(mediaType);
|
|
105
|
-
|
|
106
|
-
if (!slot) {
|
|
107
|
-
throw new Error(`Slot for ${mediaType} does not exist`);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
slot.active = active;
|
|
111
|
-
|
|
112
|
-
this.LoggerProxy.logger.info(
|
|
113
|
-
`SendSlotsManager->setActive#Set active for ${mediaType} to ${active}`
|
|
114
|
-
);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* This method is used to set the codec parameters for the sendSlot of the given mediaType
|
|
119
|
-
* @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
|
|
120
|
-
* @param {Object} codecParameters
|
|
121
|
-
* @returns {Promise<void>}
|
|
122
|
-
*/
|
|
123
|
-
public async setCodecParameters(
|
|
124
|
-
mediaType: MediaType,
|
|
125
|
-
codecParameters: {
|
|
126
|
-
[key: string]: string | undefined; // As per ts-sdp undefined is considered as a valid value to be used for codec parameters
|
|
127
|
-
}
|
|
128
|
-
): Promise<void> {
|
|
129
|
-
// These codec parameter changes underneath are SDP value changes that are taken care by WCME automatically. So no need for any change in streams from the web sdk side
|
|
130
|
-
const slot = this.slots.get(mediaType);
|
|
131
|
-
|
|
132
|
-
if (!slot) {
|
|
133
|
-
throw new Error(`Slot for ${mediaType} does not exist`);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
await slot.setCodecParameters(codecParameters);
|
|
137
|
-
|
|
138
|
-
this.LoggerProxy.logger.info(
|
|
139
|
-
`SendSlotsManager->setCodecParameters#Set codec parameters for ${mediaType} to ${codecParameters}`
|
|
140
|
-
);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* This method is used to delete the codec parameters for the sendSlot of the given mediaType
|
|
145
|
-
* @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be deleted (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
|
|
146
|
-
* @param {Array<String>} parameters Array of keys of the codec parameters to be deleted
|
|
147
|
-
* @returns {Promise<void>}
|
|
148
|
-
*/
|
|
149
|
-
public async deleteCodecParameters(mediaType: MediaType, parameters: string[]): Promise<void> {
|
|
150
|
-
const slot = this.slots.get(mediaType);
|
|
151
|
-
|
|
152
|
-
if (!slot) {
|
|
153
|
-
throw new Error(`Slot for ${mediaType} does not exist`);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
await slot.deleteCodecParameters(parameters);
|
|
157
|
-
|
|
158
|
-
this.LoggerProxy.logger.info(
|
|
159
|
-
`SendSlotsManager->deleteCodecParameters#Deleted the following codec parameters -> ${parameters} for ${mediaType}`
|
|
160
|
-
);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* This method is used to reset the SendSlotsManager by deleting all the sendSlots
|
|
165
|
-
* @returns {undefined}
|
|
166
|
-
*/
|
|
167
|
-
public reset(): void {
|
|
168
|
-
this.slots.clear();
|
|
169
|
-
}
|
|
170
|
-
}
|
package/src/rtcMetrics/index.ts
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
/* eslint-disable class-methods-use-this */
|
|
2
|
-
import {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';
|
|
3
|
-
import RTC_METRICS from './constants';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Rtc Metrics
|
|
7
|
-
*/
|
|
8
|
-
export default class RtcMetrics {
|
|
9
|
-
/**
|
|
10
|
-
* Array of MetricData items to be sent to the metrics service.
|
|
11
|
-
*/
|
|
12
|
-
metricsQueue = [];
|
|
13
|
-
|
|
14
|
-
intervalId: number;
|
|
15
|
-
|
|
16
|
-
webex: any;
|
|
17
|
-
|
|
18
|
-
meetingId: string;
|
|
19
|
-
|
|
20
|
-
correlationId: string;
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Initialize the interval.
|
|
24
|
-
*
|
|
25
|
-
* @param {object} webex - The main `webex` object.
|
|
26
|
-
* @param {string} meetingId - The meeting id.
|
|
27
|
-
* @param {string} correlationId - The correlation id.
|
|
28
|
-
*/
|
|
29
|
-
constructor(webex, meetingId, correlationId) {
|
|
30
|
-
// `window` is used to prevent typescript from returning a NodeJS.Timer.
|
|
31
|
-
this.intervalId = window.setInterval(this.sendMetricsInQueue.bind(this), 30 * 1000);
|
|
32
|
-
this.meetingId = meetingId;
|
|
33
|
-
this.webex = webex;
|
|
34
|
-
this.correlationId = correlationId;
|
|
35
|
-
// Send the first set of metrics at 5 seconds in the case of a user leaving the call shortly after joining.
|
|
36
|
-
setTimeout(this.sendMetricsInQueue.bind(this), 5 * 1000);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Check to see if the metrics queue has any items.
|
|
41
|
-
*
|
|
42
|
-
* @returns {void}
|
|
43
|
-
*/
|
|
44
|
-
public sendMetricsInQueue() {
|
|
45
|
-
if (this.metricsQueue.length) {
|
|
46
|
-
this.sendMetrics();
|
|
47
|
-
this.metricsQueue = [];
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Add metrics items to the metrics queue.
|
|
53
|
-
*
|
|
54
|
-
* @param {object} data - An object with a payload array of metrics items.
|
|
55
|
-
*
|
|
56
|
-
* @returns {void}
|
|
57
|
-
*/
|
|
58
|
-
addMetrics(data) {
|
|
59
|
-
if (data.payload.length) {
|
|
60
|
-
if (data.name === 'stats-report') {
|
|
61
|
-
data.payload = data.payload.map(this.anonymizeIp);
|
|
62
|
-
}
|
|
63
|
-
this.metricsQueue.push(data);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Clear the metrics interval.
|
|
69
|
-
*
|
|
70
|
-
* @returns {void}
|
|
71
|
-
*/
|
|
72
|
-
closeMetrics() {
|
|
73
|
-
this.sendMetricsInQueue();
|
|
74
|
-
clearInterval(this.intervalId);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Anonymize IP addresses.
|
|
79
|
-
*
|
|
80
|
-
* @param {array} stats - An RTCStatsReport organized into an array of strings.
|
|
81
|
-
* @returns {string}
|
|
82
|
-
*/
|
|
83
|
-
anonymizeIp(stats: string): string {
|
|
84
|
-
const data = JSON.parse(stats);
|
|
85
|
-
// on local and remote candidates, anonymize the last 4 bits.
|
|
86
|
-
if (data.type === 'local-candidate' || data.type === 'remote-candidate') {
|
|
87
|
-
data.ip = CallDiagnosticUtils.anonymizeIPAddress(data.ip) || undefined;
|
|
88
|
-
data.address = CallDiagnosticUtils.anonymizeIPAddress(data.address) || undefined;
|
|
89
|
-
data.relatedAddress =
|
|
90
|
-
CallDiagnosticUtils.anonymizeIPAddress(data.relatedAddress) || undefined;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
return JSON.stringify(data);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Send metrics to the metrics service.
|
|
98
|
-
*
|
|
99
|
-
* @returns {void}
|
|
100
|
-
*/
|
|
101
|
-
private sendMetrics() {
|
|
102
|
-
this.webex.request({
|
|
103
|
-
method: 'POST',
|
|
104
|
-
service: 'unifiedTelemetry',
|
|
105
|
-
resource: 'metric/v2',
|
|
106
|
-
headers: {
|
|
107
|
-
type: 'webrtcMedia',
|
|
108
|
-
appId: RTC_METRICS.APP_ID,
|
|
109
|
-
},
|
|
110
|
-
body: {
|
|
111
|
-
metrics: [
|
|
112
|
-
{
|
|
113
|
-
type: 'webrtc',
|
|
114
|
-
version: '1.0.1',
|
|
115
|
-
userId: this.webex.internal.device.userId,
|
|
116
|
-
meetingId: this.meetingId,
|
|
117
|
-
correlationId: this.correlationId,
|
|
118
|
-
data: this.metricsQueue,
|
|
119
|
-
},
|
|
120
|
-
],
|
|
121
|
-
},
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import {MEETINGS} from '../constants';
|
|
6
|
-
|
|
7
|
-
class WebinarCollection {
|
|
8
|
-
webinarInfo: any;
|
|
9
|
-
|
|
10
|
-
namespace = MEETINGS;
|
|
11
|
-
|
|
12
|
-
mainIndex = 'sessionId';
|
|
13
|
-
|
|
14
|
-
constructor() {
|
|
15
|
-
this.webinarInfo = {};
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
set(id, info) {
|
|
19
|
-
this.webinarInfo[id] = info;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* @param {String} id
|
|
24
|
-
* @returns {Member}
|
|
25
|
-
*/
|
|
26
|
-
get(id: string) {
|
|
27
|
-
return this.webinarInfo[id];
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export default WebinarCollection;
|
package/src/webinar/index.ts
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
-
*/
|
|
4
|
-
import {WebexPlugin} from '@webex/webex-core';
|
|
5
|
-
import {MEETINGS} from '../constants';
|
|
6
|
-
|
|
7
|
-
import WebinarCollection from './collection';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* @class Webinar
|
|
11
|
-
*/
|
|
12
|
-
const Webinar = WebexPlugin.extend({
|
|
13
|
-
namespace: MEETINGS,
|
|
14
|
-
collections: {
|
|
15
|
-
webinar: WebinarCollection,
|
|
16
|
-
},
|
|
17
|
-
|
|
18
|
-
props: {
|
|
19
|
-
locusUrl: 'string', // appears current webinar's locus url
|
|
20
|
-
webcastUrl: 'string', // current webinar's webcast url
|
|
21
|
-
webinarAttendeesSearchingUrl: 'string', // current webinarAttendeesSearching url
|
|
22
|
-
canManageWebcast: 'boolean', // appears the ability to manage webcast
|
|
23
|
-
},
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Update the current locus url of the webinar
|
|
27
|
-
* @param {string} locusUrl // locus url
|
|
28
|
-
* @returns {void}
|
|
29
|
-
*/
|
|
30
|
-
locusUrlUpdate(locusUrl) {
|
|
31
|
-
this.set('locusUrl', locusUrl);
|
|
32
|
-
},
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Update the current webcast url of the meeting
|
|
36
|
-
* @param {string} webcastUrl // webcast url
|
|
37
|
-
* @returns {void}
|
|
38
|
-
*/
|
|
39
|
-
webcastUrlUpdate(webcastUrl) {
|
|
40
|
-
this.set('webcastUrl', webcastUrl);
|
|
41
|
-
},
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Update the current webinarAttendeesSearching url of the meeting
|
|
45
|
-
* @param {string} webinarAttendeesSearchingUrl // webinarAttendeesSearching url
|
|
46
|
-
* @returns {void}
|
|
47
|
-
*/
|
|
48
|
-
webinarAttendeesSearchingUrlUpdate(webinarAttendeesSearchingUrl) {
|
|
49
|
-
this.set('webinarAttendeesSearchingUrl', webinarAttendeesSearchingUrl);
|
|
50
|
-
},
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Update whether self has capability to manage start/stop webcast (only host can manage it)
|
|
54
|
-
* @param {boolean} canManageWebcast
|
|
55
|
-
* @returns {void}
|
|
56
|
-
*/
|
|
57
|
-
updateCanManageWebcast(canManageWebcast) {
|
|
58
|
-
this.set('canManageWebcast', canManageWebcast);
|
|
59
|
-
},
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
export default Webinar;
|
|
@@ -1,233 +0,0 @@
|
|
|
1
|
-
import { config } from 'dotenv';
|
|
2
|
-
import 'jsdom-global/register';
|
|
3
|
-
import {assert} from '@webex/test-helper-chai';
|
|
4
|
-
import {skipInNode} from '@webex/test-helper-mocha';
|
|
5
|
-
import BrowserDetection from '@webex/plugin-meetings/dist/common/browser-detection';
|
|
6
|
-
import {createCameraStream, createMicrophoneStream} from '@webex/plugin-meetings';
|
|
7
|
-
|
|
8
|
-
import {MEDIA_SERVERS} from '../../utils/constants';
|
|
9
|
-
import testUtils from '../../utils/testUtils';
|
|
10
|
-
import integrationTestUtils from '../../utils/integrationTestUtils';
|
|
11
|
-
import webexTestUsers from '../../utils/webex-test-users';
|
|
12
|
-
|
|
13
|
-
config();
|
|
14
|
-
|
|
15
|
-
const localTracks = {
|
|
16
|
-
alice: {
|
|
17
|
-
microphone: undefined,
|
|
18
|
-
camera: undefined,
|
|
19
|
-
},
|
|
20
|
-
bob: {
|
|
21
|
-
microphone: undefined,
|
|
22
|
-
camera: undefined,
|
|
23
|
-
},
|
|
24
|
-
chris: {
|
|
25
|
-
microphone: undefined,
|
|
26
|
-
camera: undefined,
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
skipInNode(describe)('plugin-meetings', () => {
|
|
31
|
-
const {isBrowser} = BrowserDetection();
|
|
32
|
-
|
|
33
|
-
// `addMedia()` fails on FF, this needs to be debuged and fixed in a later change
|
|
34
|
-
if (!isBrowser('firefox')) {
|
|
35
|
-
describe('converged-space-meeting', () => {
|
|
36
|
-
let shouldSkip = false;
|
|
37
|
-
let users, alice, bob, chris;
|
|
38
|
-
let meeting = null;
|
|
39
|
-
let space = null;
|
|
40
|
-
let mediaReadyListener = null;
|
|
41
|
-
|
|
42
|
-
before('setup users', async () => {
|
|
43
|
-
const userSet = await webexTestUsers.generateTestUsers({
|
|
44
|
-
count: 3,
|
|
45
|
-
whistler: process.env.WHISTLER || process.env.JENKINS,
|
|
46
|
-
config
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
users = userSet;
|
|
50
|
-
alice = users[0];
|
|
51
|
-
bob = users[1];
|
|
52
|
-
chris = users[2];
|
|
53
|
-
alice.name = 'alice';
|
|
54
|
-
bob.name = 'bob';
|
|
55
|
-
chris.name = 'chris';
|
|
56
|
-
|
|
57
|
-
const aliceSync = testUtils.syncAndEndMeeting(alice);
|
|
58
|
-
const bobSync = testUtils.syncAndEndMeeting(bob);
|
|
59
|
-
const chrisSync = testUtils.syncAndEndMeeting(chris);
|
|
60
|
-
|
|
61
|
-
await aliceSync;
|
|
62
|
-
await bobSync;
|
|
63
|
-
await chrisSync;
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
// Skip a test in this series if one failed.
|
|
67
|
-
// This beforeEach() instance function must use the `function` declaration to preserve the
|
|
68
|
-
// `this` context. `() => {}` will not generate the correct `this` context
|
|
69
|
-
beforeEach('check if should skip test', function() {
|
|
70
|
-
if (shouldSkip) {
|
|
71
|
-
this.skip();
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
// Store to the describe scope if a test has failed for skipping.
|
|
76
|
-
// This beforeEach() instance function must use the `function` declaration to preserve the
|
|
77
|
-
// `this` context. `() => {}` will not generate the correct `this` context
|
|
78
|
-
afterEach('check if test failed', function() {
|
|
79
|
-
if (this.currentTest.state === 'failed') {
|
|
80
|
-
shouldSkip = true;
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
it('user "alice" starts a space', async () => {
|
|
85
|
-
const conversation = await alice.webex.internal.conversation.create({
|
|
86
|
-
participants: [bob, chris],
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
assert.lengthOf(conversation.participants.items, 3);
|
|
90
|
-
assert.lengthOf(conversation.activities.items, 1);
|
|
91
|
-
|
|
92
|
-
space = conversation;
|
|
93
|
-
|
|
94
|
-
const destinationWithType = await alice.webex.meetings.meetingInfo.fetchMeetingInfo(space.url, 'CONVERSATION_URL');
|
|
95
|
-
const destinationWithoutType = await alice.webex.meetings.meetingInfo.fetchMeetingInfo(space.url);
|
|
96
|
-
|
|
97
|
-
assert.exists(destinationWithoutType);
|
|
98
|
-
assert.exists(destinationWithType);
|
|
99
|
-
assert.exists(destinationWithoutType.body.meetingNumber);
|
|
100
|
-
assert.exists(destinationWithType.body.meetingNumber);
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
it('user "alice" starts a meeting', async () => {
|
|
104
|
-
const wait = testUtils.waitForEvents([{
|
|
105
|
-
scope: alice.webex.meetings,
|
|
106
|
-
event: 'meeting:added',
|
|
107
|
-
user: alice,
|
|
108
|
-
}]);
|
|
109
|
-
|
|
110
|
-
const createdMeeting = await testUtils.delayedPromise(alice.webex.meetings.create(space.url));
|
|
111
|
-
|
|
112
|
-
await wait;
|
|
113
|
-
|
|
114
|
-
assert.exists(createdMeeting);
|
|
115
|
-
|
|
116
|
-
meeting = createdMeeting;
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
it('user "alice" joins the meeting', async () => {
|
|
120
|
-
const wait = testUtils.waitForEvents([
|
|
121
|
-
{scope: bob.webex.meetings, event: 'meeting:added', user: bob},
|
|
122
|
-
{scope: chris.webex.meetings, event: 'meeting:added', user: chris},
|
|
123
|
-
]);
|
|
124
|
-
|
|
125
|
-
await testUtils.delayedPromise(alice.meeting.join({enableMultistream: true}));
|
|
126
|
-
|
|
127
|
-
await wait;
|
|
128
|
-
|
|
129
|
-
assert.isTrue(!!alice.webex.meetings.meetingCollection.meetings[meeting.id].joinedWith);
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
it('users "bob" and "chris" join the meeting', async () => {
|
|
133
|
-
await testUtils.waitForStateChange(alice.meeting, 'JOINED');
|
|
134
|
-
|
|
135
|
-
const bobIdle = testUtils.waitForStateChange(bob.meeting, 'IDLE');
|
|
136
|
-
const chrisIdle = testUtils.waitForStateChange(chris.meeting, 'IDLE');
|
|
137
|
-
|
|
138
|
-
await bobIdle;
|
|
139
|
-
await chrisIdle;
|
|
140
|
-
|
|
141
|
-
const bobJoined = testUtils.waitForStateChange(bob.meeting, 'JOINED');
|
|
142
|
-
const chrisJoined = testUtils.waitForStateChange(chris.meeting, 'JOINED');
|
|
143
|
-
const bobJoin = bob.meeting.join({enableMultistream: true});
|
|
144
|
-
const chrisJoin = chris.meeting.join({enableMultistream: true});
|
|
145
|
-
|
|
146
|
-
await bobJoin;
|
|
147
|
-
await chrisJoin;
|
|
148
|
-
await bobJoined;
|
|
149
|
-
await chrisJoined;
|
|
150
|
-
|
|
151
|
-
assert.exists(bob.meeting.joinedWith);
|
|
152
|
-
assert.exists(chris.meeting.joinedWith);
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
it('users "alice", "bob", and "chris" create local tracks', async () => {
|
|
156
|
-
localTracks.alice.microphone = await createMicrophoneStream();
|
|
157
|
-
localTracks.alice.camera = await createCameraStream();
|
|
158
|
-
|
|
159
|
-
localTracks.bob.microphone = await createMicrophoneStream();
|
|
160
|
-
localTracks.bob.camera = await createCameraStream();
|
|
161
|
-
|
|
162
|
-
localTracks.chris.microphone = await createMicrophoneStream();
|
|
163
|
-
localTracks.chris.camera = await createCameraStream();
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
it('users "alice", "bob", and "chris" add media', async () => {
|
|
167
|
-
mediaReadyListener = testUtils.waitForEvents([
|
|
168
|
-
{scope: alice.meeting, event: 'media:negotiated'},
|
|
169
|
-
{scope: bob.meeting, event: 'media:negotiated'},
|
|
170
|
-
{scope: chris.meeting, event: 'media:negotiated'},
|
|
171
|
-
]);
|
|
172
|
-
|
|
173
|
-
const addMediaAlice = integrationTestUtils.addMedia(alice, {multistream: true, microphone: localTracks.alice.microphone, camera: localTracks.alice.camera});
|
|
174
|
-
const addMediaBob = integrationTestUtils.addMedia(bob, {multistream: true, microphone: localTracks.bob.microphone, camera: localTracks.bob.camera});
|
|
175
|
-
const addMediaChris = integrationTestUtils.addMedia(chris, {multistream: true, microphone: localTracks.chris.microphone, camera: localTracks.chris.camera});
|
|
176
|
-
|
|
177
|
-
await addMediaAlice;
|
|
178
|
-
await addMediaBob;
|
|
179
|
-
await addMediaChris;
|
|
180
|
-
|
|
181
|
-
assert.isTrue(alice.meeting.mediaProperties.mediaDirection.sendAudio);
|
|
182
|
-
assert.isTrue(alice.meeting.mediaProperties.mediaDirection.sendVideo);
|
|
183
|
-
assert.isTrue(alice.meeting.mediaProperties.mediaDirection.receiveAudio);
|
|
184
|
-
assert.isTrue(alice.meeting.mediaProperties.mediaDirection.receiveVideo);
|
|
185
|
-
assert.isTrue(bob.meeting.mediaProperties.mediaDirection.sendAudio);
|
|
186
|
-
assert.isTrue(bob.meeting.mediaProperties.mediaDirection.sendVideo);
|
|
187
|
-
assert.isTrue(bob.meeting.mediaProperties.mediaDirection.receiveAudio);
|
|
188
|
-
assert.isTrue(bob.meeting.mediaProperties.mediaDirection.receiveVideo);
|
|
189
|
-
assert.isTrue(chris.meeting.mediaProperties.mediaDirection.sendAudio);
|
|
190
|
-
assert.isTrue(chris.meeting.mediaProperties.mediaDirection.sendVideo);
|
|
191
|
-
assert.isTrue(chris.meeting.mediaProperties.mediaDirection.receiveAudio);
|
|
192
|
-
assert.isTrue(chris.meeting.mediaProperties.mediaDirection.receiveVideo);
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
it(`users "alice", "bob", and "chris" should be using the "${MEDIA_SERVERS.HOMER}" media server`, async () => {
|
|
196
|
-
await mediaReadyListener;
|
|
197
|
-
|
|
198
|
-
assert.equal(alice.meeting.mediaProperties.webrtcMediaConnection.mediaServer, MEDIA_SERVERS.HOMER);
|
|
199
|
-
assert.equal(bob.meeting.mediaProperties.webrtcMediaConnection.mediaServer, MEDIA_SERVERS.HOMER);
|
|
200
|
-
assert.equal(chris.meeting.mediaProperties.webrtcMediaConnection.mediaServer, MEDIA_SERVERS.HOMER);
|
|
201
|
-
});
|
|
202
|
-
|
|
203
|
-
it('users "alice", "bob", and "chris" stop their local tracks', () => {
|
|
204
|
-
if (localTracks.alice.microphone) {
|
|
205
|
-
localTracks.alice.microphone.stop();
|
|
206
|
-
localTracks.alice.microphone = undefined;
|
|
207
|
-
}
|
|
208
|
-
if (localTracks.alice.camera) {
|
|
209
|
-
localTracks.alice.camera.stop();
|
|
210
|
-
localTracks.alice.camera = undefined;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
if (localTracks.bob.microphone) {
|
|
214
|
-
localTracks.bob.microphone.stop();
|
|
215
|
-
localTracks.bob.microphone = undefined;
|
|
216
|
-
}
|
|
217
|
-
if (localTracks.bob.camera) {
|
|
218
|
-
localTracks.bob.camera.stop();
|
|
219
|
-
localTracks.bob.camera = undefined;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
if (localTracks.chris.microphone) {
|
|
223
|
-
localTracks.chris.microphone.stop();
|
|
224
|
-
localTracks.chris.microphone = undefined;
|
|
225
|
-
}
|
|
226
|
-
if (localTracks.chris.camera) {
|
|
227
|
-
localTracks.chris.camera.stop();
|
|
228
|
-
localTracks.chris.camera = undefined;
|
|
229
|
-
}
|
|
230
|
-
});
|
|
231
|
-
});
|
|
232
|
-
}
|
|
233
|
-
});
|