@webex/plugin-meetings 3.0.0-stream-classes.4 → 3.0.0
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/.eslintrc.js +6 -0
- package/README.md +12 -0
- package/babel.config.js +3 -0
- package/dist/annotation/constants.js +12 -20
- package/dist/annotation/constants.js.map +1 -1
- package/dist/annotation/index.js +25 -10
- package/dist/annotation/index.js.map +1 -1
- package/dist/breakouts/breakout.js +2 -3
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/collection.js +1 -2
- package/dist/breakouts/collection.js.map +1 -1
- package/dist/breakouts/edit-lock-error.js +1 -2
- package/dist/breakouts/edit-lock-error.js.map +1 -1
- package/dist/breakouts/events.js +1 -2
- package/dist/breakouts/events.js.map +1 -1
- package/dist/breakouts/index.js +13 -14
- package/dist/breakouts/index.js.map +1 -1
- package/dist/breakouts/request.js +1 -2
- package/dist/breakouts/request.js.map +1 -1
- package/dist/breakouts/utils.js +3 -6
- package/dist/breakouts/utils.js.map +1 -1
- package/dist/common/browser-detection.js +2 -3
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +3 -4
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +1 -2
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +1 -2
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +1 -2
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +1 -2
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +1 -2
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/no-meeting-info.d.ts +14 -0
- package/dist/common/errors/no-meeting-info.js +50 -0
- package/dist/common/errors/no-meeting-info.js.map +1 -0
- package/dist/common/errors/parameter.js +3 -4
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +1 -2
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +1 -2
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
- package/dist/common/errors/reclaim-host-role-errors.js +154 -0
- package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
- package/dist/common/errors/reconnection-in-progress.js +1 -2
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +1 -2
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +1 -2
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/{types/common → common}/errors/webex-errors.d.ts +13 -1
- package/dist/common/errors/webex-errors.js +35 -16
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +1 -2
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +1 -2
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +1 -2
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +1 -2
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +1 -2
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +1 -2
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -2
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/{types/common → common}/logs/request.d.ts +3 -1
- package/dist/common/logs/request.js +8 -5
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +2 -4
- package/dist/common/queue.js.map +1 -1
- package/dist/{types/config.d.ts → config.d.ts} +1 -1
- package/dist/config.js +3 -3
- package/dist/config.js.map +1 -1
- package/dist/{types/constants.d.ts → constants.d.ts} +72 -15
- package/dist/constants.js +254 -371
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +3 -6
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +7 -10
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +27 -32
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/util.js +1 -2
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/interceptors/index.d.ts +2 -0
- package/dist/interceptors/index.js +15 -0
- package/dist/interceptors/index.js.map +1 -0
- package/dist/interceptors/locusRetry.d.ts +27 -0
- package/dist/interceptors/locusRetry.js +94 -0
- package/dist/interceptors/locusRetry.js.map +1 -0
- package/dist/interpretation/collection.js +1 -2
- package/dist/interpretation/collection.js.map +1 -1
- package/dist/interpretation/index.js +2 -3
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/siLanguage.js +2 -3
- package/dist/interpretation/siLanguage.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +12 -13
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -4
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +1 -2
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +1 -2
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/{types/locus-info → locus-info}/index.d.ts +1 -1
- package/dist/locus-info/index.js +63 -38
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +3 -4
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +16 -3
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/{types/locus-info → locus-info}/parser.d.ts +3 -2
- package/dist/locus-info/parser.js +48 -31
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +7 -6
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +15 -10
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +16 -7
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +1 -2
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.d.ts +241 -0
- package/dist/mediaQualityMetrics/config.js +135 -339
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/{types/meeting → meeting}/in-meeting-actions.d.ts +4 -0
- package/dist/meeting/in-meeting-actions.js +18 -2
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/{types/meeting → meeting}/index.d.ts +331 -44
- package/dist/meeting/index.js +2639 -1367
- package/dist/meeting/index.js.map +1 -1
- package/dist/{types/meeting → meeting}/locusMediaRequest.d.ts +1 -2
- package/dist/meeting/locusMediaRequest.js +4 -5
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/muteState.js +2 -4
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/{types/meeting → meeting}/request.d.ts +4 -1
- package/dist/meeting/request.js +47 -32
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.js +1 -2
- package/dist/meeting/state.js.map +1 -1
- package/dist/{types/meeting → meeting}/util.d.ts +26 -1
- package/dist/meeting/util.js +83 -10
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting/voicea-meeting.d.ts +16 -0
- package/dist/meeting/voicea-meeting.js +169 -0
- package/dist/meeting/voicea-meeting.js.map +1 -0
- package/dist/meeting-info/collection.js +3 -4
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/{types/meeting-info → meeting-info}/index.d.ts +7 -0
- package/dist/meeting-info/index.js +53 -27
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/{types/meeting-info → meeting-info}/meeting-info-v2.d.ts +1 -0
- package/dist/meeting-info/meeting-info-v2.js +52 -33
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -2
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +8 -8
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +12 -9
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/{types/meetings → meetings}/collection.d.ts +9 -0
- package/dist/meetings/collection.js +21 -5
- package/dist/meetings/collection.js.map +1 -1
- package/dist/{types/meetings → meetings}/index.d.ts +45 -16
- package/dist/meetings/index.js +166 -74
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +2 -3
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +3 -10
- package/dist/meetings/util.js.map +1 -1
- package/dist/{types/member → member}/index.d.ts +1 -0
- package/dist/member/index.js +10 -3
- package/dist/member/index.js.map +1 -1
- package/dist/member/member.types.d.ts +11 -0
- package/dist/member/member.types.js +17 -0
- package/dist/member/member.types.js.map +1 -0
- package/dist/member/types.js +6 -8
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js +12 -2
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +1 -2
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +25 -8
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +2 -3
- package/dist/members/request.js.map +1 -1
- package/dist/{types/members → members}/types.d.ts +1 -0
- package/dist/members/types.js +3 -4
- package/dist/members/types.js.map +1 -1
- package/dist/{types/members → members}/util.d.ts +6 -1
- package/dist/members/util.js +18 -8
- package/dist/members/util.js.map +1 -1
- package/dist/{types/metrics → metrics}/constants.d.ts +15 -0
- package/dist/metrics/constants.js +16 -3
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +3 -2
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +9 -11
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +3 -5
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +7 -9
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +3 -5
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +7 -6
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/{types/multistream → multistream}/remoteMediaManager.d.ts +9 -1
- package/dist/multistream/remoteMediaManager.js +74 -36
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +9 -6
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +1 -2
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +2 -3
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -3
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +1 -2
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/clusterReachability.d.ts +109 -0
- package/dist/reachability/clusterReachability.js +357 -0
- package/dist/reachability/clusterReachability.js.map +1 -0
- package/dist/reachability/index.d.ts +105 -0
- package/dist/reachability/index.js +279 -436
- package/dist/reachability/index.js.map +1 -1
- package/dist/{types/reachability → reachability}/request.d.ts +1 -1
- package/dist/reachability/request.js +14 -11
- package/dist/reachability/request.js.map +1 -1
- package/dist/reachability/util.d.ts +8 -0
- package/dist/reachability/util.js +29 -0
- package/dist/reachability/util.js.map +1 -0
- package/dist/reactions/constants.js +1 -2
- package/dist/reactions/constants.js.map +1 -1
- package/dist/reactions/reactions.js +2 -4
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js +6 -8
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/{types/reconnection-manager → reconnection-manager}/index.d.ts +10 -0
- package/dist/reconnection-manager/index.js +129 -106
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +4 -5
- package/dist/recording-controller/enums.js.map +1 -1
- package/dist/recording-controller/index.js +43 -51
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.js +1 -2
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/{types/roap → roap}/index.d.ts +2 -1
- package/dist/roap/index.js +59 -28
- package/dist/roap/index.js.map +1 -1
- package/dist/{types/roap → roap}/request.d.ts +2 -1
- package/dist/roap/request.js +14 -22
- package/dist/roap/request.js.map +1 -1
- package/dist/{types/roap → roap}/turnDiscovery.d.ts +21 -4
- package/dist/roap/turnDiscovery.js +182 -89
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/constants.js +1 -2
- package/dist/rtcMetrics/constants.js.map +1 -1
- package/dist/{types/rtcMetrics → rtcMetrics}/index.d.ts +15 -1
- package/dist/rtcMetrics/index.js +72 -12
- package/dist/rtcMetrics/index.js.map +1 -1
- package/dist/statsAnalyzer/global.js +1 -2
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/{types/statsAnalyzer → statsAnalyzer}/index.d.ts +28 -11
- package/dist/statsAnalyzer/index.js +371 -318
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +48 -0
- package/dist/statsAnalyzer/mqaUtil.js +295 -162
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +1 -2
- package/dist/transcription/index.js.map +1 -1
- package/dist/webinar/collection.d.ts +16 -0
- package/dist/webinar/collection.js +43 -0
- package/dist/webinar/collection.js.map +1 -0
- package/dist/webinar/index.d.ts +5 -0
- package/dist/webinar/index.js +68 -0
- package/dist/webinar/index.js.map +1 -0
- package/jest.config.js +3 -0
- package/package.json +44 -24
- package/process +1 -0
- package/src/common/errors/no-meeting-info.ts +24 -0
- package/src/common/errors/reclaim-host-role-errors.ts +134 -0
- package/src/common/errors/webex-errors.ts +19 -2
- package/src/common/logs/request.ts +5 -1
- package/src/config.ts +3 -5
- package/src/constants.ts +78 -8
- package/src/index.ts +4 -0
- package/src/interceptors/index.ts +3 -0
- package/src/interceptors/locusRetry.ts +67 -0
- package/src/locus-info/index.ts +52 -16
- package/src/locus-info/mediaSharesUtils.ts +16 -0
- package/src/locus-info/parser.ts +47 -21
- package/src/media/index.ts +8 -6
- package/src/media/properties.ts +17 -2
- package/src/mediaQualityMetrics/config.ts +103 -238
- package/src/meeting/in-meeting-actions.ts +8 -0
- package/src/meeting/index.ts +1692 -627
- package/src/meeting/request.ts +19 -1
- package/src/meeting/util.ts +102 -1
- package/src/meeting/voicea-meeting.ts +122 -0
- package/src/meeting-info/index.ts +47 -20
- package/src/meeting-info/meeting-info-v2.ts +32 -16
- package/src/meeting-info/util.ts +12 -9
- package/src/meeting-info/utilv2.ts +25 -15
- package/src/meetings/collection.ts +13 -0
- package/src/meetings/index.ts +112 -31
- package/src/meetings/util.ts +2 -8
- package/src/member/index.ts +9 -1
- package/src/member/member.types.ts +13 -0
- package/src/member/util.ts +14 -0
- package/src/members/index.ts +29 -2
- package/src/members/types.ts +1 -0
- package/src/members/util.ts +15 -1
- package/src/metrics/constants.ts +14 -0
- package/src/multistream/remoteMediaManager.ts +41 -4
- package/src/reachability/clusterReachability.ts +320 -0
- package/src/reachability/index.ts +221 -382
- package/src/reachability/request.ts +1 -1
- package/src/reachability/util.ts +24 -0
- package/src/reconnection-manager/index.ts +87 -83
- package/src/roap/index.ts +60 -24
- package/src/roap/request.ts +4 -17
- package/src/roap/turnDiscovery.ts +112 -39
- package/src/rtcMetrics/index.ts +71 -5
- package/src/statsAnalyzer/index.ts +430 -427
- package/src/statsAnalyzer/mqaUtil.ts +317 -168
- package/src/webinar/collection.ts +31 -0
- package/src/webinar/index.ts +62 -0
- package/test/integration/spec/converged-space-meetings.js +7 -7
- package/test/integration/spec/journey.js +88 -106
- package/test/integration/spec/space-meeting.js +10 -10
- package/test/unit/spec/breakouts/breakout.ts +2 -1
- package/test/unit/spec/breakouts/index.ts +7 -4
- package/test/unit/spec/interceptors/locusRetry.ts +131 -0
- package/test/unit/spec/locus-info/index.js +206 -13
- package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +10 -0
- package/test/unit/spec/locus-info/parser.js +54 -13
- package/test/unit/spec/locus-info/selfUtils.js +1 -1
- package/test/unit/spec/media/index.ts +25 -4
- package/test/unit/spec/media/properties.ts +2 -2
- package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
- package/test/unit/spec/meeting/index.js +4354 -1285
- package/test/unit/spec/meeting/request.js +63 -12
- package/test/unit/spec/meeting/utils.js +145 -10
- package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
- package/test/unit/spec/meeting-info/index.js +180 -61
- package/test/unit/spec/meeting-info/meetinginfov2.js +216 -68
- package/test/unit/spec/meetings/collection.js +12 -0
- package/test/unit/spec/meetings/index.js +676 -195
- package/test/unit/spec/meetings/utils.js +35 -12
- package/test/unit/spec/member/index.js +8 -7
- package/test/unit/spec/member/util.js +32 -0
- package/test/unit/spec/members/index.js +130 -17
- package/test/unit/spec/members/utils.js +26 -0
- package/test/unit/spec/metrics/index.js +1 -2
- package/test/unit/spec/multistream/mediaRequestManager.ts +1 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +10 -2
- package/test/unit/spec/reachability/clusterReachability.ts +279 -0
- package/test/unit/spec/reachability/index.ts +505 -135
- package/test/unit/spec/reachability/util.ts +40 -0
- package/test/unit/spec/reconnection-manager/index.js +74 -17
- package/test/unit/spec/recording-controller/index.js +0 -1
- package/test/unit/spec/roap/index.ts +181 -61
- package/test/unit/spec/roap/request.ts +27 -3
- package/test/unit/spec/roap/turnDiscovery.ts +363 -102
- package/test/unit/spec/rtcMetrics/index.ts +57 -3
- package/test/unit/spec/stats-analyzer/index.js +1225 -12
- package/test/unit/spec/webinar/collection.ts +13 -0
- package/test/unit/spec/webinar/index.ts +60 -0
- package/test/utils/integrationTestUtils.js +4 -4
- package/test/utils/webex-test-users.js +12 -4
- package/dist/types/mediaQualityMetrics/config.d.ts +0 -365
- package/dist/types/reachability/index.d.ts +0 -158
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -24
- /package/dist/{types/annotation → annotation}/annotation.types.d.ts +0 -0
- /package/dist/{types/annotation → annotation}/constants.d.ts +0 -0
- /package/dist/{types/annotation → annotation}/index.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/breakout.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/collection.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/edit-lock-error.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/events.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/index.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/request.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/utils.d.ts +0 -0
- /package/dist/{types/common → common}/browser-detection.d.ts +0 -0
- /package/dist/{types/common → common}/collection.d.ts +0 -0
- /package/dist/{types/common → common}/config.d.ts +0 -0
- /package/dist/{types/common → common}/errors/captcha-error.d.ts +0 -0
- /package/dist/{types/common → common}/errors/intent-to-join.d.ts +0 -0
- /package/dist/{types/common → common}/errors/join-meeting.d.ts +0 -0
- /package/dist/{types/common → common}/errors/media.d.ts +0 -0
- /package/dist/{types/common → common}/errors/parameter.d.ts +0 -0
- /package/dist/{types/common → common}/errors/password-error.d.ts +0 -0
- /package/dist/{types/common → common}/errors/permission.d.ts +0 -0
- /package/dist/{types/common → common}/errors/reconnection-in-progress.d.ts +0 -0
- /package/dist/{types/common → common}/errors/reconnection.d.ts +0 -0
- /package/dist/{types/common → common}/errors/stats.d.ts +0 -0
- /package/dist/{types/common → common}/errors/webex-meetings-error.d.ts +0 -0
- /package/dist/{types/common → common}/events/events-scope.d.ts +0 -0
- /package/dist/{types/common → common}/events/events.d.ts +0 -0
- /package/dist/{types/common → common}/events/trigger-proxy.d.ts +0 -0
- /package/dist/{types/common → common}/events/util.d.ts +0 -0
- /package/dist/{types/common → common}/logs/logger-config.d.ts +0 -0
- /package/dist/{types/common → common}/logs/logger-proxy.d.ts +0 -0
- /package/dist/{types/common → common}/queue.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/constants.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/enums.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/index.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/types.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/util.d.ts +0 -0
- /package/dist/{types/index.d.ts → index.d.ts} +0 -0
- /package/dist/{types/interpretation → interpretation}/collection.d.ts +0 -0
- /package/dist/{types/interpretation → interpretation}/index.d.ts +0 -0
- /package/dist/{types/interpretation → interpretation}/siLanguage.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/controlsUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/embeddedAppsUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/fullState.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/hostUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/infoUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/mediaSharesUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/selfUtils.d.ts +0 -0
- /package/dist/{types/media → media}/index.d.ts +0 -0
- /package/dist/{types/media → media}/properties.d.ts +0 -0
- /package/dist/{types/media → media}/util.d.ts +0 -0
- /package/dist/{types/meeting → meeting}/muteState.d.ts +0 -0
- /package/dist/{types/meeting → meeting}/request.type.d.ts +0 -0
- /package/dist/{types/meeting → meeting}/state.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/collection.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/request.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/util.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/utilv2.d.ts +0 -0
- /package/dist/{types/meetings → meetings}/meetings.types.d.ts +0 -0
- /package/dist/{types/meetings → meetings}/request.d.ts +0 -0
- /package/dist/{types/meetings → meetings}/util.d.ts +0 -0
- /package/dist/{types/member → member}/types.d.ts +0 -0
- /package/dist/{types/member → member}/util.d.ts +0 -0
- /package/dist/{types/members → members}/collection.d.ts +0 -0
- /package/dist/{types/members → members}/index.d.ts +0 -0
- /package/dist/{types/members → members}/request.d.ts +0 -0
- /package/dist/{types/metrics → metrics}/index.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/mediaRequestManager.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/receiveSlot.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/receiveSlotManager.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/remoteMedia.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/remoteMediaGroup.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/sendSlotManager.d.ts +0 -0
- /package/dist/{types/networkQualityMonitor → networkQualityMonitor}/index.d.ts +0 -0
- /package/dist/{types/personal-meeting-room → personal-meeting-room}/index.d.ts +0 -0
- /package/dist/{types/personal-meeting-room → personal-meeting-room}/request.d.ts +0 -0
- /package/dist/{types/personal-meeting-room → personal-meeting-room}/util.d.ts +0 -0
- /package/dist/{types/reactions → reactions}/constants.d.ts +0 -0
- /package/dist/{types/reactions → reactions}/reactions.d.ts +0 -0
- /package/dist/{types/reactions → reactions}/reactions.type.d.ts +0 -0
- /package/dist/{types/recording-controller → recording-controller}/enums.d.ts +0 -0
- /package/dist/{types/recording-controller → recording-controller}/index.d.ts +0 -0
- /package/dist/{types/recording-controller → recording-controller}/util.d.ts +0 -0
- /package/dist/{types/rtcMetrics → rtcMetrics}/constants.d.ts +0 -0
- /package/dist/{types/statsAnalyzer → statsAnalyzer}/global.d.ts +0 -0
- /package/dist/{types/transcription → transcription}/index.d.ts +0 -0
- /package/test/unit/spec/locus-info/{selfConstant.js → lib/selfConstant.js} +0 -0
|
@@ -0,0 +1,62 @@
|
|
|
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;
|
|
@@ -3,7 +3,7 @@ import 'jsdom-global/register';
|
|
|
3
3
|
import {assert} from '@webex/test-helper-chai';
|
|
4
4
|
import {skipInNode} from '@webex/test-helper-mocha';
|
|
5
5
|
import BrowserDetection from '@webex/plugin-meetings/dist/common/browser-detection';
|
|
6
|
-
import {
|
|
6
|
+
import {createCameraStream, createMicrophoneStream} from '@webex/plugin-meetings';
|
|
7
7
|
|
|
8
8
|
import {MEDIA_SERVERS} from '../../utils/constants';
|
|
9
9
|
import testUtils from '../../utils/testUtils';
|
|
@@ -153,14 +153,14 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
153
153
|
});
|
|
154
154
|
|
|
155
155
|
it('users "alice", "bob", and "chris" create local tracks', async () => {
|
|
156
|
-
localTracks.alice.microphone = await
|
|
157
|
-
localTracks.alice.camera = await
|
|
156
|
+
localTracks.alice.microphone = await createMicrophoneStream();
|
|
157
|
+
localTracks.alice.camera = await createCameraStream();
|
|
158
158
|
|
|
159
|
-
localTracks.bob.microphone = await
|
|
160
|
-
localTracks.bob.camera = await
|
|
159
|
+
localTracks.bob.microphone = await createMicrophoneStream();
|
|
160
|
+
localTracks.bob.camera = await createCameraStream();
|
|
161
161
|
|
|
162
|
-
localTracks.chris.microphone = await
|
|
163
|
-
localTracks.chris.camera = await
|
|
162
|
+
localTracks.chris.microphone = await createMicrophoneStream();
|
|
163
|
+
localTracks.chris.camera = await createCameraStream();
|
|
164
164
|
});
|
|
165
165
|
|
|
166
166
|
it('users "alice", "bob", and "chris" add media', async () => {
|
|
@@ -6,10 +6,11 @@ import {skipInNode} from '@webex/test-helper-mocha';
|
|
|
6
6
|
import sinon from 'sinon';
|
|
7
7
|
|
|
8
8
|
import BrowserDetection from '@webex/plugin-meetings/dist/common/browser-detection';
|
|
9
|
-
import {
|
|
9
|
+
import {createCameraStream, createDisplayStream, createMicrophoneStream, LocalTrackEvents, LocalStreamEventNames} from '@webex/plugin-meetings';
|
|
10
10
|
|
|
11
11
|
import testUtils from '../../utils/testUtils';
|
|
12
12
|
import integrationTestUtils from '../../utils/integrationTestUtils';
|
|
13
|
+
import {EVENT_TRIGGERS} from '../../../dist/constants';
|
|
13
14
|
|
|
14
15
|
require('dotenv').config();
|
|
15
16
|
|
|
@@ -19,7 +20,7 @@ const {isBrowser} = BrowserDetection();
|
|
|
19
20
|
|
|
20
21
|
let userSet, alice, bob, chris, enumerateSpy, channelUrlA, channelUrlB;
|
|
21
22
|
|
|
22
|
-
const
|
|
23
|
+
const localStreams = {
|
|
23
24
|
alice: {
|
|
24
25
|
microphone: undefined,
|
|
25
26
|
camera: undefined,
|
|
@@ -43,14 +44,14 @@ const localTracks = {
|
|
|
43
44
|
},
|
|
44
45
|
};
|
|
45
46
|
|
|
46
|
-
|
|
47
|
-
const waitForPublished = (
|
|
47
|
+
// Updated expectedPublished from a boolean value to an object containing the stream and status properties
|
|
48
|
+
const waitForPublished = (meeting, expectedPublished, description) => {
|
|
48
49
|
return testUtils.waitForEvents([{
|
|
49
|
-
scope:
|
|
50
|
-
event:
|
|
51
|
-
match: (
|
|
52
|
-
console.log(`${description} is now ${isPublished ? 'published': 'not published'}`);
|
|
53
|
-
return (isPublished === expectedPublished);
|
|
50
|
+
scope: meeting,
|
|
51
|
+
event: EVENT_TRIGGERS.MEETING_STREAM_PUBLISH_STATE_CHANGED,
|
|
52
|
+
match: (event) => {
|
|
53
|
+
console.log(`${description} is now ${event.isPublished ? 'published': 'not published'}`);
|
|
54
|
+
return (event.isPublished === expectedPublished.status && event.stream.id === expectedPublished.stream.id) ;
|
|
54
55
|
}
|
|
55
56
|
}]);
|
|
56
57
|
};
|
|
@@ -238,7 +239,7 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
238
239
|
|
|
239
240
|
// Enabled when config.enableUnifiedMeetings = true
|
|
240
241
|
xdescribe('Conversation URL', () => {
|
|
241
|
-
describe('Successful 1:1 meeting',
|
|
242
|
+
describe('Successful 1:1 meeting', () => {
|
|
242
243
|
it('Fetch meeting information with a conversation URL for a 1:1 space', async () => {
|
|
243
244
|
assert.equal(Object.keys(bob.webex.meetings.getAllMeetings()), 0);
|
|
244
245
|
assert.equal(Object.keys(chris.webex.meetings.getAllMeetings()), 0);
|
|
@@ -312,8 +313,8 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
312
313
|
});
|
|
313
314
|
|
|
314
315
|
it('alice creates local microphone and camera tracks', async () => {
|
|
315
|
-
|
|
316
|
-
|
|
316
|
+
localStreams.alice.microphone = await createMicrophoneStream();
|
|
317
|
+
localStreams.alice.camera = await createCameraStream();
|
|
317
318
|
});
|
|
318
319
|
|
|
319
320
|
it('alice dials bob and adds media', () =>
|
|
@@ -343,7 +344,7 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
343
344
|
})
|
|
344
345
|
.then(() =>
|
|
345
346
|
Promise.all([
|
|
346
|
-
integrationTestUtils.addMedia(alice, {microphone:
|
|
347
|
+
integrationTestUtils.addMedia(alice, {microphone: localStreams.alice.microphone, camera: localStreams.alice.camera}),
|
|
347
348
|
testUtils.waitForEvents([
|
|
348
349
|
{scope: alice.meeting, event: 'meeting:media:local:start', user: alice},
|
|
349
350
|
]),
|
|
@@ -371,13 +372,13 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
371
372
|
});
|
|
372
373
|
|
|
373
374
|
it('bob creates local microphone and camera tracks', async () => {
|
|
374
|
-
|
|
375
|
-
|
|
375
|
+
localStreams.bob.microphone = await createMicrophoneStream();
|
|
376
|
+
localStreams.bob.camera = await createCameraStream();
|
|
376
377
|
});
|
|
377
378
|
|
|
378
379
|
it('bob adds media to the meeting', () =>
|
|
379
380
|
Promise.all([
|
|
380
|
-
integrationTestUtils.addMedia(bob, {microphone:
|
|
381
|
+
integrationTestUtils.addMedia(bob, {microphone: localStreams.bob.microphone, camera: localStreams.bob.camera}),
|
|
381
382
|
testUtils
|
|
382
383
|
.waitForEvents([
|
|
383
384
|
{scope: bob.meeting, event: 'meeting:media:local:start', user: bob},
|
|
@@ -431,11 +432,11 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
431
432
|
{scope: bob.meeting.members, event: 'members:update', match: checkEvent},
|
|
432
433
|
]);
|
|
433
434
|
|
|
434
|
-
|
|
435
|
+
localStreams.alice.microphone.setMuted(true);
|
|
435
436
|
|
|
436
437
|
await membersUpdate;
|
|
437
438
|
|
|
438
|
-
assert.equal(
|
|
439
|
+
assert.equal(localStreams.alice.microphone.muted, true);
|
|
439
440
|
});
|
|
440
441
|
|
|
441
442
|
it('alice Audio unMute ', async () => {
|
|
@@ -450,11 +451,11 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
450
451
|
{scope: bob.meeting.members, event: 'members:update', match: checkEvent},
|
|
451
452
|
]);
|
|
452
453
|
|
|
453
|
-
|
|
454
|
+
localStreams.alice.microphone.setMuted(false);
|
|
454
455
|
|
|
455
456
|
await membersUpdate;
|
|
456
457
|
|
|
457
|
-
assert.equal(
|
|
458
|
+
assert.equal(localStreams.alice.microphone.muted, false);
|
|
458
459
|
});
|
|
459
460
|
|
|
460
461
|
it('alice video mute', async () => {
|
|
@@ -469,11 +470,11 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
469
470
|
{scope: bob.meeting.members, event: 'members:update', match: checkEvent},
|
|
470
471
|
]);
|
|
471
472
|
|
|
472
|
-
|
|
473
|
+
localStreams.alice.camera.setMuted(true);
|
|
473
474
|
|
|
474
475
|
await membersUpdate;
|
|
475
476
|
|
|
476
|
-
assert.equal(
|
|
477
|
+
assert.equal(localStreams.alice.camera.muted, true);
|
|
477
478
|
});
|
|
478
479
|
|
|
479
480
|
it('alice video unmute', async () => {
|
|
@@ -488,77 +489,57 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
488
489
|
{scope: bob.meeting.members, event: 'members:update', match: checkEvent},
|
|
489
490
|
]);
|
|
490
491
|
|
|
491
|
-
|
|
492
|
+
localStreams.alice.camera.setMuted(false);
|
|
492
493
|
|
|
493
494
|
await membersUpdate;
|
|
494
495
|
|
|
495
|
-
assert.equal(
|
|
496
|
+
assert.equal(localStreams.alice.camera.muted, false);
|
|
496
497
|
});
|
|
497
498
|
|
|
498
499
|
it('alice update Audio', async () => {
|
|
499
|
-
const
|
|
500
|
-
|
|
501
|
-
const oldMicrophoneTrack = localTracks.alice.microphone;
|
|
502
|
-
const newMicrophoneTrack = await createMicrophoneTrack();
|
|
503
|
-
|
|
504
|
-
assert.equal(oldMicrophoneTrack.published, true);
|
|
505
|
-
assert.notEqual(oldMicrophoneTrack.id, newMicrophoneTrack.id);
|
|
506
|
-
|
|
507
|
-
const oldTrackUnpublished = waitForPublished(oldMicrophoneTrack, false, "Alice AUDIO: old microphone track");
|
|
508
|
-
const newTrackPublished = waitForPublished(newMicrophoneTrack, true, "Alice AUDIO: new microphone track");
|
|
500
|
+
const newMicrophoneStream = await createMicrophoneStream();
|
|
501
|
+
const newStreamPublished = waitForPublished(alice.meeting, {stream: newMicrophoneStream, status: true}, "Alice AUDIO: new microphone stream");
|
|
509
502
|
|
|
510
503
|
await testUtils.delayedPromise(
|
|
511
504
|
alice.meeting
|
|
512
|
-
.
|
|
513
|
-
microphone:
|
|
505
|
+
.publishStreams({
|
|
506
|
+
microphone: newMicrophoneStream,
|
|
514
507
|
})
|
|
515
508
|
.then(() => {
|
|
516
|
-
console.log('Alice AUDIO: new
|
|
509
|
+
console.log('Alice AUDIO: new stream on meeting object:', alice.meeting.mediaProperties.audioStream);
|
|
517
510
|
assert.equal(
|
|
518
|
-
alice.meeting.mediaProperties.
|
|
519
|
-
|
|
511
|
+
alice.meeting.mediaProperties.audioStream.id,
|
|
512
|
+
newMicrophoneStream.id
|
|
520
513
|
);
|
|
521
|
-
assert.equal(alice.meeting.mediaProperties.videoTrack.id, oldVideoTrackId);
|
|
522
514
|
})
|
|
523
515
|
);
|
|
524
516
|
|
|
525
|
-
await
|
|
526
|
-
await newTrackPublished;
|
|
517
|
+
await newStreamPublished;
|
|
527
518
|
|
|
528
|
-
|
|
519
|
+
localStreams.alice.microphone = newMicrophoneStream;
|
|
529
520
|
});
|
|
530
521
|
|
|
531
522
|
it('alice update video', async () => {
|
|
532
|
-
const
|
|
533
|
-
|
|
534
|
-
const oldCameraTrack = localTracks.alice.camera;
|
|
535
|
-
const newCameraTrack = await createCameraTrack();
|
|
536
|
-
|
|
537
|
-
assert.equal(oldCameraTrack.published, true);
|
|
538
|
-
assert.notEqual(oldCameraTrack.id, newCameraTrack.id);
|
|
539
|
-
|
|
540
|
-
const oldTrackUnpublished = waitForPublished(oldCameraTrack, false, "Alice VIDEO: old camera track");
|
|
541
|
-
const newTrackPublished = waitForPublished(newCameraTrack, true, "Alice VIDEO: new camera track");
|
|
523
|
+
const newCameraStream = await createCameraStream();
|
|
524
|
+
const newStreamPublished = waitForPublished(alice.meeting, {stream: newCameraStream, status: true}, "Alice VIDEO: new camera stream");
|
|
542
525
|
|
|
543
526
|
await testUtils.delayedPromise(
|
|
544
527
|
alice.meeting
|
|
545
|
-
.
|
|
546
|
-
camera:
|
|
528
|
+
.publishStreams({
|
|
529
|
+
camera: newCameraStream,
|
|
547
530
|
})
|
|
548
531
|
.then(() => {
|
|
549
|
-
console.log('Alice VIDEO: new
|
|
532
|
+
console.log('Alice VIDEO: new stream on meeting:', alice.meeting.mediaProperties.videoStream);
|
|
550
533
|
assert.equal(
|
|
551
|
-
alice.meeting.mediaProperties.
|
|
552
|
-
|
|
534
|
+
alice.meeting.mediaProperties.videoStream.id,
|
|
535
|
+
newCameraStream.id
|
|
553
536
|
);
|
|
554
|
-
assert.equal(alice.meeting.mediaProperties.audioTrack.id, oldAudioTrackId);
|
|
555
537
|
})
|
|
556
538
|
);
|
|
557
539
|
|
|
558
|
-
await
|
|
559
|
-
await newTrackPublished;
|
|
540
|
+
await newStreamPublished;
|
|
560
541
|
|
|
561
|
-
|
|
542
|
+
localStreams.alice.camera = newCameraStream;
|
|
562
543
|
});
|
|
563
544
|
|
|
564
545
|
it('alice mutes bob', () =>
|
|
@@ -593,11 +574,11 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
593
574
|
]);
|
|
594
575
|
|
|
595
576
|
// first bob mutes himself
|
|
596
|
-
|
|
577
|
+
localStreams.bob.microphone.setMuted(true);
|
|
597
578
|
|
|
598
579
|
await membersUpdate;
|
|
599
580
|
|
|
600
|
-
assert.equal(
|
|
581
|
+
assert.equal(localStreams.bob.microphone.muted, true);
|
|
601
582
|
|
|
602
583
|
// now alice tries to unmmute bob
|
|
603
584
|
await testUtils.delayedPromise(alice.meeting.mute(bob.meeting.members.selfId, false))
|
|
@@ -612,7 +593,7 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
612
593
|
assert.fail('bob received unexpected meeting:self:unmutedByOthers event');
|
|
613
594
|
})
|
|
614
595
|
.catch(() => {
|
|
615
|
-
assert.equal(
|
|
596
|
+
assert.equal(localStreams.bob.microphone.muted, true);
|
|
616
597
|
});
|
|
617
598
|
});
|
|
618
599
|
|
|
@@ -626,15 +607,15 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
626
607
|
{scope: alice.meeting.members, event: 'members:update', match: checkEvent},
|
|
627
608
|
]);
|
|
628
609
|
|
|
629
|
-
|
|
610
|
+
localStreams.bob.microphone.setMuted(false);
|
|
630
611
|
|
|
631
612
|
await membersUpdate;
|
|
632
613
|
|
|
633
|
-
assert.equal(
|
|
614
|
+
assert.equal(localStreams.bob.microphone.muted, false);
|
|
634
615
|
});
|
|
635
616
|
|
|
636
617
|
it('alice shares the screen with highFrameRate', async () => {
|
|
637
|
-
|
|
618
|
+
localStreams.alice.screenShare.video = await createDisplayStream();
|
|
638
619
|
|
|
639
620
|
const startedSharingLocal = testUtils.waitForEvents([{scope: alice.meeting, event: 'meeting:startedSharingLocal'}]);
|
|
640
621
|
const startedSharingRemote = testUtils.waitForEvents([{scope: bob.meeting, event: 'meeting:startedSharingRemote'}])
|
|
@@ -648,9 +629,10 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
648
629
|
JSON.stringify(response, testUtils.getCircularReplacer())
|
|
649
630
|
);
|
|
650
631
|
});
|
|
651
|
-
const screenShareVideoPublished = waitForPublished(localTracks.alice.screenShare.video, true, "alice's screen share video track");
|
|
652
632
|
|
|
653
|
-
|
|
633
|
+
const screenShareVideoPublished = waitForPublished(alice.meeting, {stream: localStreams.alice.screenShare.video, status: true}, "alice's screen share video stream");
|
|
634
|
+
|
|
635
|
+
await testUtils.delayedPromise(alice.meeting.publishStreams({screenShare: {video: localStreams.alice.screenShare.video}}));
|
|
654
636
|
|
|
655
637
|
await screenShareVideoPublished;
|
|
656
638
|
await startedSharingLocal;
|
|
@@ -669,7 +651,7 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
669
651
|
});
|
|
670
652
|
|
|
671
653
|
it('bob steals the screen share from alice', async () => {
|
|
672
|
-
|
|
654
|
+
localStreams.bob.screenShare.video = await createDisplayStream();
|
|
673
655
|
|
|
674
656
|
const stoppedSharingLocal = testUtils.waitForEvents([{scope: alice.meeting, event: 'meeting:stoppedSharingLocal'}]);
|
|
675
657
|
const startedSharingLocal = testUtils.waitForEvents([{scope: bob.meeting, event: 'meeting:startedSharingLocal'}]);
|
|
@@ -684,10 +666,10 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
684
666
|
JSON.stringify(response, testUtils.getCircularReplacer())
|
|
685
667
|
);
|
|
686
668
|
});
|
|
687
|
-
const aliceScreenShareVideoUnpublished = waitForPublished(
|
|
688
|
-
const bobScreenShareVideoPublished = waitForPublished(
|
|
669
|
+
const aliceScreenShareVideoUnpublished = waitForPublished(alice.meeting, {stream: localStreams.alice.screenShare.video, status: false}, "alice's screen share video stream");
|
|
670
|
+
const bobScreenShareVideoPublished = waitForPublished(bob.meeting, {stream: localStreams.bob.screenShare.video, status: true}, "bob's screen share video stream");
|
|
689
671
|
|
|
690
|
-
await testUtils.delayedPromise(bob.meeting.
|
|
672
|
+
await testUtils.delayedPromise(bob.meeting.publishStreams({screenShare: {video: localStreams.bob.screenShare.video}}));
|
|
691
673
|
|
|
692
674
|
await bobScreenShareVideoPublished;
|
|
693
675
|
await aliceScreenShareVideoUnpublished;
|
|
@@ -696,8 +678,8 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
696
678
|
await startedSharingRemote;
|
|
697
679
|
await aliceReceivesMembersUpdate;
|
|
698
680
|
|
|
699
|
-
|
|
700
|
-
|
|
681
|
+
localStreams.alice.screenShare.video.stop();
|
|
682
|
+
localStreams.alice.screenShare.video = undefined;
|
|
701
683
|
|
|
702
684
|
assert.equal(bob.meeting.screenShareFloorState, 'floor_request_granted');
|
|
703
685
|
assert.equal(bob.meeting.shareStatus, 'local_share_active');
|
|
@@ -707,18 +689,18 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
707
689
|
});
|
|
708
690
|
|
|
709
691
|
it('bob stops sharing', async () => {
|
|
710
|
-
const screenShareVideoUnpublished = waitForPublished(
|
|
692
|
+
const screenShareVideoUnpublished = waitForPublished(bob.meeting, {stream: localStreams.bob.screenShare.video, status: false}, "bob's screen share video stream");
|
|
711
693
|
const stoppedSharingLocal = testUtils.waitForEvents([{scope: bob.meeting, event: 'meeting:stoppedSharingLocal'}]);
|
|
712
694
|
const stoppedSharingRemote = testUtils.waitForEvents([{scope: alice.meeting, event: 'meeting:stoppedSharingRemote'}]);
|
|
713
695
|
|
|
714
|
-
await testUtils.delayedPromise(bob.meeting.
|
|
696
|
+
await testUtils.delayedPromise(bob.meeting.unpublishStreams([localStreams.bob.screenShare.video]));
|
|
715
697
|
|
|
716
698
|
await screenShareVideoUnpublished;
|
|
717
699
|
await stoppedSharingLocal;
|
|
718
700
|
await stoppedSharingRemote;
|
|
719
701
|
|
|
720
|
-
|
|
721
|
-
|
|
702
|
+
localStreams.bob.screenShare.video.stop();
|
|
703
|
+
localStreams.bob.screenShare.video = undefined;
|
|
722
704
|
|
|
723
705
|
assert.equal(bob.meeting.screenShareFloorState, 'floor_released');
|
|
724
706
|
assert.equal(bob.meeting.shareStatus, 'no_share');
|
|
@@ -829,7 +811,7 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
829
811
|
}));
|
|
830
812
|
|
|
831
813
|
it('bob steals the share from alice with desktop share', async () => {
|
|
832
|
-
|
|
814
|
+
localStreams.bob.screenShare.video = await createDisplayStream();
|
|
833
815
|
|
|
834
816
|
const stoppedSharingWhiteboard = testUtils.waitForEvents([{scope: alice.meeting, event: 'meeting:stoppedSharingWhiteboard'}]);
|
|
835
817
|
const startedSharingLocal = testUtils.waitForEvents([{scope: bob.meeting, event: 'meeting:startedSharingLocal'}]);
|
|
@@ -844,9 +826,9 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
844
826
|
JSON.stringify(response, testUtils.getCircularReplacer())
|
|
845
827
|
);
|
|
846
828
|
});
|
|
847
|
-
const bobScreenShareVideoPublished = waitForPublished(
|
|
829
|
+
const bobScreenShareVideoPublished = waitForPublished(bob.meeting, {stream: localStreams.bob.screenShare.video, status: true}, "bob's screen share video stream");
|
|
848
830
|
|
|
849
|
-
await testUtils.delayedPromise(bob.meeting.
|
|
831
|
+
await testUtils.delayedPromise(bob.meeting.publishStreams({screenShare: {video: localStreams.bob.screenShare.video}}));
|
|
850
832
|
|
|
851
833
|
await bobScreenShareVideoPublished;
|
|
852
834
|
await stoppedSharingWhiteboard;
|
|
@@ -889,7 +871,7 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
889
871
|
assert.equal(bob.meeting.shareStatus, 'whiteboard_share_active');
|
|
890
872
|
}));
|
|
891
873
|
|
|
892
|
-
it('alice adds chris as guest to 1:1 meeting', () =>
|
|
874
|
+
it('alice adds chris as guest to 1:1 meeting', async() =>
|
|
893
875
|
Promise.all([
|
|
894
876
|
testUtils.delayedPromise(alice.meeting.invite({emailAddress: chris.emailAddress})),
|
|
895
877
|
testUtils.waitForEvents([
|
|
@@ -931,10 +913,10 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
931
913
|
})
|
|
932
914
|
.then(() => testUtils.waitForStateChange(chris.meeting, 'JOINED'))
|
|
933
915
|
.then(async () => {
|
|
934
|
-
|
|
935
|
-
|
|
916
|
+
localStreams.chris.microphone = await createMicrophoneStream();
|
|
917
|
+
localStreams.chris.camera = await createCameraStream();
|
|
936
918
|
})
|
|
937
|
-
.then(() => integrationTestUtils.addMedia(chris, {microphone:
|
|
919
|
+
.then(() => integrationTestUtils.addMedia(chris, {microphone: localStreams.chris.microphone, camera: localStreams.chris.camera}))
|
|
938
920
|
.then(() => assert(enumerateSpy.called));
|
|
939
921
|
})
|
|
940
922
|
.then(() =>
|
|
@@ -982,32 +964,32 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
982
964
|
});
|
|
983
965
|
});
|
|
984
966
|
|
|
985
|
-
it('stop all local
|
|
986
|
-
if (
|
|
987
|
-
|
|
988
|
-
|
|
967
|
+
it('stop all local streams', () => {
|
|
968
|
+
if (localStreams.alice.microphone) {
|
|
969
|
+
localStreams.alice.microphone.stop();
|
|
970
|
+
localStreams.alice.microphone = undefined;
|
|
989
971
|
}
|
|
990
|
-
if (
|
|
991
|
-
|
|
992
|
-
|
|
972
|
+
if (localStreams.alice.camera) {
|
|
973
|
+
localStreams.alice.camera.stop();
|
|
974
|
+
localStreams.alice.camera = undefined;
|
|
993
975
|
}
|
|
994
976
|
|
|
995
|
-
if (
|
|
996
|
-
|
|
997
|
-
|
|
977
|
+
if (localStreams.bob.microphone) {
|
|
978
|
+
localStreams.bob.microphone.stop();
|
|
979
|
+
localStreams.bob.microphone = undefined;
|
|
998
980
|
}
|
|
999
|
-
if (
|
|
1000
|
-
|
|
1001
|
-
|
|
981
|
+
if (localStreams.bob.camera) {
|
|
982
|
+
localStreams.bob.camera.stop();
|
|
983
|
+
localStreams.bob.camera = undefined;
|
|
1002
984
|
}
|
|
1003
985
|
|
|
1004
|
-
if (
|
|
1005
|
-
|
|
1006
|
-
|
|
986
|
+
if (localStreams.chris.microphone) {
|
|
987
|
+
localStreams.chris.microphone.stop();
|
|
988
|
+
localStreams.chris.microphone = undefined;
|
|
1007
989
|
}
|
|
1008
|
-
if (
|
|
1009
|
-
|
|
1010
|
-
|
|
990
|
+
if (localStreams.chris.camera) {
|
|
991
|
+
localStreams.chris.camera.stop();
|
|
992
|
+
localStreams.chris.camera = undefined;
|
|
1011
993
|
}
|
|
1012
994
|
});
|
|
1013
995
|
});
|
|
@@ -3,7 +3,7 @@ import {assert} from '@webex/test-helper-chai';
|
|
|
3
3
|
import {skipInNode, jenkinsOnly} from '@webex/test-helper-mocha';
|
|
4
4
|
import {patterns} from '@webex/common';
|
|
5
5
|
import MeetingInfoUtil from '@webex/plugin-meetings/dist/meeting-info/utilv2';
|
|
6
|
-
import {
|
|
6
|
+
import {createCameraStream, createMicrophoneStream} from '@webex/plugin-meetings';
|
|
7
7
|
|
|
8
8
|
import CMR from '../../utils/cmr';
|
|
9
9
|
import testUtils from '../../utils/testUtils';
|
|
@@ -34,7 +34,7 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
34
34
|
describe('space-meeting', () => {
|
|
35
35
|
let space = null;
|
|
36
36
|
|
|
37
|
-
before(() =>
|
|
37
|
+
before(async () =>
|
|
38
38
|
webexTestUsers
|
|
39
39
|
.generateTestUsers({
|
|
40
40
|
count: 4,
|
|
@@ -153,11 +153,11 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
153
153
|
.then(() => testUtils.waitForStateChange(chris.meeting, 'JOINED')));
|
|
154
154
|
|
|
155
155
|
it('Bob and Alice create local microphone and camera tracks', async () => {
|
|
156
|
-
localTracks.alice.microphone = await
|
|
157
|
-
localTracks.alice.camera = await
|
|
156
|
+
localTracks.alice.microphone = await createMicrophoneStream();
|
|
157
|
+
localTracks.alice.camera = await createCameraStream();
|
|
158
158
|
|
|
159
|
-
localTracks.bob.microphone = await
|
|
160
|
-
localTracks.bob.camera = await
|
|
159
|
+
localTracks.bob.microphone = await createMicrophoneStream();
|
|
160
|
+
localTracks.bob.camera = await createCameraStream();
|
|
161
161
|
});
|
|
162
162
|
|
|
163
163
|
it('Bob and Alice addsMedia', () =>
|
|
@@ -214,8 +214,8 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
214
214
|
)
|
|
215
215
|
.then(() => testUtils.waitForStateChange(guest.meeting, 'JOINED'))
|
|
216
216
|
.then(async () => {
|
|
217
|
-
localTracks.guest.microphone = await
|
|
218
|
-
localTracks.guest.camera = await
|
|
217
|
+
localTracks.guest.microphone = await createMicrophoneStream();
|
|
218
|
+
localTracks.guest.camera = await createCameraStream();
|
|
219
219
|
})
|
|
220
220
|
.then(() => integrationTestUtils.addMedia(guest, {microphone: localTracks.guest.microphone, camera: localTracks.guest.camera}))
|
|
221
221
|
.catch((e) => {
|
|
@@ -474,8 +474,8 @@ skipInNode(describe)('plugin-meetings', () => {
|
|
|
474
474
|
])
|
|
475
475
|
.then(() => testUtils.waitForStateChange(guest.meeting, 'JOINED'))
|
|
476
476
|
.then(async () => {
|
|
477
|
-
localTracks.guest.microphone = await
|
|
478
|
-
localTracks.guest.camera = await
|
|
477
|
+
localTracks.guest.microphone = await createMicrophoneStream();
|
|
478
|
+
localTracks.guest.camera = await createCameraStream();
|
|
479
479
|
})
|
|
480
480
|
.then(() => integrationTestUtils.addMedia(guest, {microphone: localTracks.guest.microphone, camera: localTracks.guest.camera}));
|
|
481
481
|
})
|
|
@@ -89,7 +89,7 @@ describe('plugin-meetings', () => {
|
|
|
89
89
|
})
|
|
90
90
|
};
|
|
91
91
|
|
|
92
|
-
sinon.stub(webex.internal.newMetrics.submitClientEvent, 'bind').returns(webex.internal.newMetrics.submitClientEvent);
|
|
92
|
+
const submitClientEventStub = sinon.stub(webex.internal.newMetrics.submitClientEvent, 'bind').returns(webex.internal.newMetrics.submitClientEvent);
|
|
93
93
|
|
|
94
94
|
let onBreakoutMoveRequestStub = sinon.stub(breakoutEvent, 'onBreakoutMoveRequest');
|
|
95
95
|
let onBreakoutMoveResponseStub = sinon.stub(breakoutEvent, 'onBreakoutMoveResponse');
|
|
@@ -105,6 +105,7 @@ describe('plugin-meetings', () => {
|
|
|
105
105
|
|
|
106
106
|
onBreakoutMoveRequestStub.restore();
|
|
107
107
|
onBreakoutMoveResponseStub.restore();
|
|
108
|
+
submitClientEventStub.restore()
|
|
108
109
|
});
|
|
109
110
|
});
|
|
110
111
|
|
|
@@ -381,7 +381,7 @@ describe('plugin-meetings', () => {
|
|
|
381
381
|
id: 'meeting-id'
|
|
382
382
|
})
|
|
383
383
|
};
|
|
384
|
-
|
|
384
|
+
const onBreakoutJoinResponseSpy = sinon.stub(breakoutEvent,'onBreakoutJoinResponse')
|
|
385
385
|
breakouts.currentBreakoutSession.sessionId = "sessionId-old";
|
|
386
386
|
breakouts.updateBreakout({
|
|
387
387
|
sessionId: 'sessionId-new',
|
|
@@ -398,7 +398,9 @@ describe('plugin-meetings', () => {
|
|
|
398
398
|
breakoutMoveId: 'breakoutMoveId',
|
|
399
399
|
});
|
|
400
400
|
|
|
401
|
-
assert.calledOnce(
|
|
401
|
+
assert.calledOnce(onBreakoutJoinResponseSpy);
|
|
402
|
+
|
|
403
|
+
onBreakoutJoinResponseSpy.restore()
|
|
402
404
|
|
|
403
405
|
});
|
|
404
406
|
|
|
@@ -408,7 +410,7 @@ describe('plugin-meetings', () => {
|
|
|
408
410
|
id: 'meeting-id'
|
|
409
411
|
})
|
|
410
412
|
};
|
|
411
|
-
|
|
413
|
+
const onBreakoutJoinResponseSpy = sinon.stub(breakoutEvent, 'onBreakoutJoinResponse');
|
|
412
414
|
breakouts.currentBreakoutSession.sessionId = "sessionId";
|
|
413
415
|
breakouts.currentBreakoutSession.groupId = "groupId";
|
|
414
416
|
breakouts.updateBreakout({
|
|
@@ -426,7 +428,8 @@ describe('plugin-meetings', () => {
|
|
|
426
428
|
breakoutMoveId: 'breakoutMoveId',
|
|
427
429
|
});
|
|
428
430
|
|
|
429
|
-
assert.notCalled(
|
|
431
|
+
assert.notCalled(onBreakoutJoinResponseSpy);
|
|
432
|
+
onBreakoutJoinResponseSpy.restore()
|
|
430
433
|
|
|
431
434
|
});
|
|
432
435
|
});
|