@webex/plugin-meetings 3.0.0-beta.4 → 3.0.0-beta.400
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 +58 -8
- package/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +49 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +342 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +216 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.js +23 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.js +45 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +1048 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/breakouts/request.js +78 -0
- package/dist/breakouts/request.js.map +1 -0
- package/dist/breakouts/utils.js +67 -0
- package/dist/breakouts/utils.js.map +1 -0
- package/dist/common/browser-detection.js +1 -20
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +5 -20
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +0 -7
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +10 -24
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +11 -24
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +12 -25
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +10 -24
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/no-meeting-info.js +51 -0
- package/dist/common/errors/no-meeting-info.js.map +1 -0
- package/dist/common/errors/parameter.js +5 -33
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +10 -24
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +9 -23
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reclaim-host-role-errors.js +158 -0
- package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
- package/dist/common/errors/reconnection-in-progress.js +0 -17
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +10 -24
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +10 -24
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +54 -48
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +5 -25
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +0 -22
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +0 -23
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +0 -12
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +0 -15
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +0 -4
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -8
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +41 -60
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +28 -23
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +11 -15
- package/dist/config.js.map +1 -1
- package/dist/constants.js +347 -74
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +14 -0
- package/dist/controls-options-manager/constants.js.map +1 -0
- package/dist/controls-options-manager/enums.js +27 -0
- package/dist/controls-options-manager/enums.js.map +1 -0
- package/dist/controls-options-manager/index.js +297 -0
- package/dist/controls-options-manager/index.js.map +1 -0
- package/dist/controls-options-manager/types.js +7 -0
- package/dist/controls-options-manager/types.js.map +1 -0
- package/dist/controls-options-manager/util.js +319 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +125 -18
- package/dist/index.js.map +1 -1
- package/dist/interceptors/index.js +15 -0
- package/dist/interceptors/index.js.map +1 -0
- package/dist/interceptors/locusRetry.js +93 -0
- package/dist/interceptors/locusRetry.js.map +1 -0
- package/dist/interpretation/collection.js +23 -0
- package/dist/interpretation/collection.js.map +1 -0
- package/dist/interpretation/index.js +380 -0
- package/dist/interpretation/index.js.map +1 -0
- package/dist/interpretation/siLanguage.js +25 -0
- package/dist/interpretation/siLanguage.js.map +1 -0
- package/dist/locus-info/controlsUtils.js +101 -29
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -26
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +0 -15
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +4 -12
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +564 -246
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +10 -38
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +82 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +314 -163
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +110 -92
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +107 -231
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +137 -222
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +2 -9
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +316 -501
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +97 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +5311 -3871
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +292 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -0
- package/dist/meeting/muteState.js +260 -183
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +421 -347
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js +7 -0
- package/dist/meeting/request.type.js.map +1 -0
- package/dist/meeting/state.js +21 -31
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +672 -585
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting/voicea-meeting.js +172 -0
- package/dist/meeting/voicea-meeting.js.map +1 -0
- package/dist/meeting-info/collection.js +6 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +87 -39
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +352 -283
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +3 -15
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +99 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +147 -234
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +43 -19
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +895 -600
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +7 -0
- package/dist/meetings/meetings.types.js.map +1 -0
- package/dist/meetings/request.js +26 -41
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +184 -157
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +134 -85
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +25 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +158 -88
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +13 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +194 -204
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +113 -68
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +15 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.js +324 -259
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +19 -7
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +11 -558
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +263 -50
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +58 -65
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +76 -95
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +62 -76
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +82 -45
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +657 -448
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +255 -0
- package/dist/multistream/sendSlotManager.js.map +1 -0
- package/dist/networkQualityMonitor/index.js +40 -59
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +21 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +1 -31
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +0 -13
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/clusterReachability.js +356 -0
- package/dist/reachability/clusterReachability.js.map +1 -0
- package/dist/reachability/index.js +297 -460
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +20 -26
- package/dist/reachability/request.js.map +1 -1
- package/dist/reachability/util.js +29 -0
- package/dist/reachability/util.js.map +1 -0
- package/dist/reactions/constants.js +13 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.js +109 -0
- package/dist/reactions/reactions.js.map +1 -0
- package/dist/reactions/reactions.type.js +36 -0
- package/dist/reactions/reactions.type.js.map +1 -0
- package/dist/reconnection-manager/index.js +413 -483
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +17 -0
- package/dist/recording-controller/enums.js.map +1 -0
- package/dist/recording-controller/index.js +362 -0
- package/dist/recording-controller/index.js.map +1 -0
- package/dist/recording-controller/util.js +64 -0
- package/dist/recording-controller/util.js.map +1 -0
- package/dist/roap/index.js +102 -86
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +131 -135
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +437 -116
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/constants.js +12 -0
- package/dist/rtcMetrics/constants.js.map +1 -0
- package/dist/rtcMetrics/index.js +179 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/statsAnalyzer/global.js +1 -95
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +557 -583
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +326 -130
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +22 -47
- package/dist/transcription/index.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +42 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +117 -0
- package/dist/types/breakouts/breakout.d.ts +8 -0
- package/dist/types/breakouts/collection.d.ts +5 -0
- package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/types/breakouts/events.d.ts +8 -0
- package/dist/types/breakouts/index.d.ts +5 -0
- package/dist/types/breakouts/request.d.ts +22 -0
- package/dist/types/breakouts/utils.d.ts +15 -0
- package/dist/types/common/browser-detection.d.ts +9 -0
- package/dist/types/common/collection.d.ts +48 -0
- package/dist/types/common/config.d.ts +2 -0
- package/dist/types/common/errors/captcha-error.d.ts +15 -0
- package/dist/types/common/errors/intent-to-join.d.ts +16 -0
- package/dist/types/common/errors/join-meeting.d.ts +17 -0
- package/dist/types/common/errors/media.d.ts +15 -0
- package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
- package/dist/types/common/errors/parameter.d.ts +15 -0
- package/dist/types/common/errors/password-error.d.ts +15 -0
- package/dist/types/common/errors/permission.d.ts +14 -0
- package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
- package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/types/common/errors/reconnection.d.ts +15 -0
- package/dist/types/common/errors/stats.d.ts +15 -0
- package/dist/types/common/errors/webex-errors.d.ts +93 -0
- package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
- package/dist/types/common/events/events-scope.d.ts +17 -0
- package/dist/types/common/events/events.d.ts +12 -0
- package/dist/types/common/events/trigger-proxy.d.ts +2 -0
- package/dist/types/common/events/util.d.ts +2 -0
- package/dist/types/common/logs/logger-config.d.ts +2 -0
- package/dist/types/common/logs/logger-proxy.d.ts +2 -0
- package/dist/types/common/logs/request.d.ts +36 -0
- package/dist/types/common/queue.d.ts +34 -0
- package/dist/types/config.d.ts +72 -0
- package/dist/types/constants.d.ts +1088 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +15 -0
- package/dist/types/controls-options-manager/index.d.ts +136 -0
- package/dist/types/controls-options-manager/types.d.ts +43 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/interceptors/index.d.ts +2 -0
- package/dist/types/interceptors/locusRetry.d.ts +27 -0
- package/dist/types/interpretation/collection.d.ts +5 -0
- package/dist/types/interpretation/index.d.ts +5 -0
- package/dist/types/interpretation/siLanguage.d.ts +5 -0
- package/dist/types/locus-info/controlsUtils.d.ts +2 -0
- package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
- package/dist/types/locus-info/fullState.d.ts +2 -0
- package/dist/types/locus-info/hostUtils.d.ts +2 -0
- package/dist/types/locus-info/index.d.ts +322 -0
- package/dist/types/locus-info/infoUtils.d.ts +2 -0
- package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
- package/dist/types/locus-info/parser.d.ts +272 -0
- package/dist/types/locus-info/selfUtils.d.ts +2 -0
- package/dist/types/media/index.d.ts +34 -0
- package/dist/types/media/properties.d.ts +93 -0
- package/dist/types/media/util.d.ts +2 -0
- package/dist/types/mediaQualityMetrics/config.d.ts +241 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +167 -0
- package/dist/types/meeting/index.d.ts +1824 -0
- package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
- package/dist/types/meeting/muteState.d.ts +178 -0
- package/dist/types/meeting/request.d.ts +293 -0
- package/dist/types/meeting/request.type.d.ts +11 -0
- package/dist/types/meeting/state.d.ts +9 -0
- package/dist/types/meeting/util.d.ts +118 -0
- package/dist/types/meeting/voicea-meeting.d.ts +16 -0
- package/dist/types/meeting-info/collection.d.ts +20 -0
- package/dist/types/meeting-info/index.d.ts +69 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +123 -0
- package/dist/types/meeting-info/request.d.ts +22 -0
- package/dist/types/meeting-info/util.d.ts +2 -0
- package/dist/types/meeting-info/utilv2.d.ts +2 -0
- package/dist/types/meetings/collection.d.ts +40 -0
- package/dist/types/meetings/index.d.ts +389 -0
- package/dist/types/meetings/meetings.types.d.ts +4 -0
- package/dist/types/meetings/request.d.ts +27 -0
- package/dist/types/meetings/util.d.ts +18 -0
- package/dist/types/member/index.d.ts +160 -0
- package/dist/types/member/types.d.ts +32 -0
- package/dist/types/member/util.d.ts +2 -0
- package/dist/types/members/collection.d.ts +29 -0
- package/dist/types/members/index.d.ts +353 -0
- package/dist/types/members/request.d.ts +114 -0
- package/dist/types/members/types.d.ts +25 -0
- package/dist/types/members/util.d.ts +215 -0
- package/dist/types/metrics/constants.d.ts +70 -0
- package/dist/types/metrics/index.d.ts +45 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +120 -0
- package/dist/types/multistream/receiveSlot.d.ts +68 -0
- package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
- package/dist/types/multistream/remoteMedia.d.ts +72 -0
- package/dist/types/multistream/remoteMediaGroup.d.ts +49 -0
- package/dist/types/multistream/remoteMediaManager.d.ts +301 -0
- package/dist/types/multistream/sendSlotManager.d.ts +70 -0
- package/dist/types/networkQualityMonitor/index.d.ts +70 -0
- package/dist/types/personal-meeting-room/index.d.ts +47 -0
- package/dist/types/personal-meeting-room/request.d.ts +14 -0
- package/dist/types/personal-meeting-room/util.d.ts +2 -0
- package/dist/types/reachability/clusterReachability.d.ts +109 -0
- package/dist/types/reachability/index.d.ts +105 -0
- package/dist/types/reachability/request.d.ts +39 -0
- package/dist/types/reachability/util.d.ts +8 -0
- package/dist/types/reactions/constants.d.ts +3 -0
- package/dist/types/reactions/reactions.d.ts +4 -0
- package/dist/types/reactions/reactions.type.d.ts +52 -0
- package/dist/types/reconnection-manager/index.d.ts +136 -0
- package/dist/types/recording-controller/enums.d.ts +7 -0
- package/dist/types/recording-controller/index.d.ts +207 -0
- package/dist/types/recording-controller/util.d.ts +14 -0
- package/dist/types/roap/index.d.ts +86 -0
- package/dist/types/roap/request.d.ts +39 -0
- package/dist/types/roap/turnDiscovery.d.ts +155 -0
- package/dist/types/rtcMetrics/constants.d.ts +4 -0
- package/dist/types/rtcMetrics/index.d.ts +61 -0
- package/dist/types/statsAnalyzer/global.d.ts +36 -0
- package/dist/types/statsAnalyzer/index.d.ts +217 -0
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +48 -0
- package/dist/types/transcription/index.d.ts +64 -0
- package/dist/types/webinar/collection.d.ts +16 -0
- package/dist/types/webinar/index.d.ts +5 -0
- package/dist/webinar/collection.js +44 -0
- package/dist/webinar/collection.js.map +1 -0
- package/dist/webinar/index.js +69 -0
- package/dist/webinar/index.js.map +1 -0
- package/internal-README.md +7 -6
- package/package.json +30 -21
- package/src/annotation/annotation.types.ts +50 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +328 -0
- package/src/breakouts/README.md +220 -0
- package/src/breakouts/breakout.ts +188 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +56 -0
- package/src/breakouts/index.ts +925 -0
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +57 -0
- package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
- package/src/common/collection.ts +9 -7
- package/src/common/{config.js → config.ts} +1 -1
- package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
- package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
- package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
- package/src/common/errors/{media.js → media.ts} +11 -7
- package/src/common/errors/no-meeting-info.ts +24 -0
- package/src/common/errors/parameter.ts +11 -7
- package/src/common/errors/{password-error.js → password-error.ts} +11 -7
- package/src/common/errors/{permission.js → permission.ts} +10 -6
- package/src/common/errors/reclaim-host-role-errors.ts +134 -0
- package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
- package/src/common/errors/{stats.js → stats.ts} +11 -7
- package/src/common/errors/{webex-errors.js → webex-errors.ts} +51 -8
- package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
- package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
- package/src/common/events/{events.js → events.ts} +5 -1
- package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
- package/src/common/events/{util.js → util.ts} +2 -3
- package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
- package/src/common/logs/logger-proxy.ts +44 -0
- package/src/common/logs/{request.js → request.ts} +26 -9
- package/src/common/queue.ts +22 -9
- package/src/{config.js → config.ts} +19 -21
- package/src/constants.ts +296 -27
- package/src/controls-options-manager/constants.ts +5 -0
- package/src/controls-options-manager/enums.ts +18 -0
- package/src/controls-options-manager/index.ts +278 -0
- package/src/controls-options-manager/types.ts +59 -0
- package/src/controls-options-manager/util.ts +300 -0
- package/src/index.ts +45 -0
- package/src/interceptors/index.ts +3 -0
- package/src/interceptors/locusRetry.ts +67 -0
- package/src/interpretation/README.md +60 -0
- package/src/interpretation/collection.ts +19 -0
- package/src/interpretation/index.ts +349 -0
- package/src/interpretation/siLanguage.ts +18 -0
- package/src/locus-info/controlsUtils.ts +222 -0
- package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
- package/src/locus-info/{fullState.js → fullState.ts} +16 -12
- package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
- package/src/locus-info/{index.js → index.ts} +561 -119
- package/src/locus-info/{infoUtils.js → infoUtils.ts} +29 -10
- package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +97 -17
- package/src/locus-info/{parser.js → parser.ts} +303 -104
- package/src/locus-info/{selfUtils.js → selfUtils.ts} +199 -68
- package/src/media/index.ts +460 -0
- package/src/media/properties.ts +283 -0
- package/src/media/{util.js → util.ts} +2 -2
- package/src/mediaQualityMetrics/config.ts +249 -0
- package/src/meeting/in-meeting-actions.ts +199 -3
- package/src/meeting/index.ts +8494 -0
- package/src/meeting/locusMediaRequest.ts +313 -0
- package/src/meeting/muteState.ts +465 -0
- package/src/meeting/request.ts +912 -0
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/{state.js → state.ts} +50 -35
- package/src/meeting/util.ts +799 -0
- package/src/meeting/voicea-meeting.ts +122 -0
- package/src/meeting-info/{collection.js → collection.ts} +6 -2
- package/src/meeting-info/index.ts +210 -0
- package/src/meeting-info/meeting-info-v2.ts +423 -0
- package/src/meeting-info/{request.js → request.ts} +14 -4
- package/src/meeting-info/{util.js → util.ts} +70 -58
- package/src/meeting-info/{utilv2.js → utilv2.ts} +99 -82
- package/src/meetings/collection.ts +76 -0
- package/src/meetings/index.ts +1539 -0
- package/src/meetings/meetings.types.ts +12 -0
- package/src/meetings/{request.js → request.ts} +34 -25
- package/src/meetings/{util.js → util.ts} +133 -38
- package/src/member/{index.js → index.ts} +159 -56
- package/src/member/types.ts +38 -0
- package/src/member/util.ts +397 -0
- package/src/members/{collection.js → collection.ts} +10 -2
- package/src/members/{index.js → index.ts} +351 -146
- package/src/members/request.ts +255 -0
- package/src/members/types.ts +29 -0
- package/src/members/util.ts +353 -0
- package/src/metrics/{constants.js → constants.ts} +17 -6
- package/src/metrics/index.ts +73 -0
- package/src/multistream/mediaRequestManager.ts +341 -64
- package/src/multistream/receiveSlot.ts +69 -26
- package/src/multistream/receiveSlotManager.ts +66 -42
- package/src/multistream/remoteMedia.ts +40 -5
- package/src/multistream/remoteMediaGroup.ts +82 -3
- package/src/multistream/remoteMediaManager.ts +401 -81
- package/src/multistream/sendSlotManager.ts +199 -0
- package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
- package/src/personal-meeting-room/{index.js → index.ts} +28 -19
- package/src/personal-meeting-room/{request.js → request.ts} +13 -4
- package/src/personal-meeting-room/{util.js → util.ts} +4 -4
- package/src/reachability/clusterReachability.ts +320 -0
- package/src/reachability/index.ts +371 -0
- package/src/reachability/request.ts +50 -35
- package/src/reachability/util.ts +24 -0
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +104 -0
- package/src/reactions/reactions.type.ts +62 -0
- package/src/reconnection-manager/index.ts +643 -0
- package/src/recording-controller/enums.ts +8 -0
- package/src/recording-controller/index.ts +332 -0
- package/src/recording-controller/util.ts +75 -0
- package/src/roap/index.ts +288 -0
- package/src/roap/request.ts +153 -0
- package/src/roap/turnDiscovery.ts +374 -70
- package/src/rtcMetrics/constants.ts +3 -0
- package/src/rtcMetrics/index.ts +166 -0
- package/src/statsAnalyzer/global.ts +37 -0
- package/src/statsAnalyzer/index.ts +1275 -0
- package/src/statsAnalyzer/mqaUtil.ts +440 -0
- package/src/transcription/{index.js → index.ts} +46 -39
- package/src/webinar/collection.ts +31 -0
- package/src/webinar/index.ts +62 -0
- package/test/integration/spec/converged-space-meetings.js +233 -0
- package/test/integration/spec/journey.js +791 -531
- package/test/integration/spec/space-meeting.js +391 -204
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/annotation/index.ts +418 -0
- package/test/unit/spec/breakouts/breakout.ts +238 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/events.ts +89 -0
- package/test/unit/spec/breakouts/index.ts +1793 -0
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +72 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/common/queue.js +31 -2
- package/test/unit/spec/controls-options-manager/index.js +287 -0
- package/test/unit/spec/controls-options-manager/util.js +582 -0
- package/test/unit/spec/fixture/locus.js +93 -90
- package/test/unit/spec/interceptors/locusRetry.ts +131 -0
- package/test/unit/spec/interpretation/collection.ts +15 -0
- package/test/unit/spec/interpretation/index.ts +625 -0
- package/test/unit/spec/interpretation/siLanguage.ts +28 -0
- package/test/unit/spec/locus-info/controlsUtils.js +325 -32
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +1458 -21
- package/test/unit/spec/locus-info/infoUtils.js +71 -40
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +529 -685
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +41 -0
- package/test/unit/spec/locus-info/parser.js +119 -44
- package/test/unit/spec/locus-info/selfConstant.js +120 -103
- package/test/unit/spec/locus-info/selfUtils.js +291 -12
- package/test/unit/spec/media/index.ts +194 -111
- package/test/unit/spec/media/properties.ts +11 -11
- package/test/unit/spec/meeting/in-meeting-actions.ts +96 -3
- package/test/unit/spec/meeting/index.js +8616 -1921
- package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
- package/test/unit/spec/meeting/muteState.js +568 -207
- package/test/unit/spec/meeting/request.js +602 -82
- package/test/unit/spec/meeting/utils.js +867 -179
- package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
- package/test/unit/spec/meeting-info/index.js +300 -0
- package/test/unit/spec/meeting-info/meetinginfov2.js +631 -78
- package/test/unit/spec/meeting-info/request.js +7 -9
- package/test/unit/spec/meeting-info/util.js +11 -12
- package/test/unit/spec/meeting-info/utilv2.js +131 -74
- package/test/unit/spec/meetings/collection.js +27 -1
- package/test/unit/spec/meetings/index.js +1826 -374
- package/test/unit/spec/meetings/utils.js +243 -14
- package/test/unit/spec/member/index.js +61 -7
- package/test/unit/spec/member/util.js +526 -26
- package/test/unit/spec/members/index.js +536 -55
- package/test/unit/spec/members/request.js +228 -40
- package/test/unit/spec/members/utils.js +217 -4
- package/test/unit/spec/metrics/index.js +13 -68
- package/test/unit/spec/multistream/mediaRequestManager.ts +1032 -110
- package/test/unit/spec/multistream/receiveSlot.ts +77 -18
- package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
- package/test/unit/spec/multistream/remoteMedia.ts +40 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +350 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +937 -65
- package/test/unit/spec/multistream/sendSlotManager.ts +274 -0
- package/test/unit/spec/networkQualityMonitor/index.js +24 -18
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/clusterReachability.ts +279 -0
- package/test/unit/spec/reachability/index.ts +606 -26
- package/test/unit/spec/reachability/request.js +68 -0
- package/test/unit/spec/reachability/util.ts +40 -0
- package/test/unit/spec/reconnection-manager/index.js +222 -34
- package/test/unit/spec/recording-controller/index.js +306 -0
- package/test/unit/spec/recording-controller/util.js +229 -0
- package/test/unit/spec/roap/index.ts +238 -82
- package/test/unit/spec/roap/request.ts +255 -0
- package/test/unit/spec/roap/turnDiscovery.ts +707 -110
- package/test/unit/spec/rtcMetrics/index.ts +122 -0
- package/test/unit/spec/stats-analyzer/index.js +1331 -62
- package/test/unit/spec/webinar/collection.ts +13 -0
- package/test/unit/spec/webinar/index.ts +60 -0
- package/test/utils/cmr.js +44 -42
- package/test/utils/constants.js +9 -0
- package/test/utils/integrationTestUtils.js +46 -0
- package/test/utils/testUtils.js +63 -99
- package/test/utils/webex-config.js +22 -18
- package/test/utils/webex-test-users.js +65 -50
- package/tsconfig.json +6 -0
- package/dist/media/internal-media-core-wrapper.js +0 -22
- package/dist/media/internal-media-core-wrapper.js.map +0 -1
- package/dist/meeting/effectsState.js +0 -327
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/metrics/config.js +0 -301
- package/dist/metrics/config.js.map +0 -1
- package/dist/multistream/multistreamMedia.js +0 -116
- package/dist/multistream/multistreamMedia.js.map +0 -1
- package/dist/peer-connection-manager/util.js +0 -124
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/src/common/logs/logger-proxy.js +0 -33
- package/src/index.js +0 -15
- package/src/locus-info/controlsUtils.js +0 -102
- package/src/media/index.js +0 -459
- package/src/media/internal-media-core-wrapper.ts +0 -9
- package/src/media/properties.js +0 -289
- package/src/mediaQualityMetrics/config.js +0 -382
- package/src/meeting/effectsState.js +0 -205
- package/src/meeting/index.js +0 -6284
- package/src/meeting/muteState.js +0 -318
- package/src/meeting/request.js +0 -684
- package/src/meeting/util.js +0 -506
- package/src/meeting-info/index.js +0 -131
- package/src/meeting-info/meeting-info-v2.js +0 -255
- package/src/meetings/collection.js +0 -40
- package/src/meetings/index.js +0 -1015
- package/src/member/util.js +0 -254
- package/src/members/request.js +0 -131
- package/src/members/util.js +0 -258
- package/src/metrics/config.js +0 -324
- package/src/metrics/index.js +0 -530
- package/src/multistream/multistreamMedia.ts +0 -92
- package/src/peer-connection-manager/util.ts +0 -117
- package/src/reachability/index.js +0 -464
- package/src/reconnection-manager/index.js +0 -519
- package/src/roap/index.js +0 -220
- package/src/roap/request.js +0 -127
- package/src/statsAnalyzer/global.js +0 -133
- package/src/statsAnalyzer/index.js +0 -1006
- package/src/statsAnalyzer/mqaUtil.js +0 -173
- package/test/unit/spec/meeting/effectsState.js +0 -291
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
- /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SendSlot,
|
|
3
|
+
MediaType,
|
|
4
|
+
LocalStream,
|
|
5
|
+
MultistreamRoapMediaConnection,
|
|
6
|
+
} from '@webex/internal-media-core';
|
|
7
|
+
|
|
8
|
+
import {NamedMediaGroup} from '@webex/json-multistream';
|
|
9
|
+
|
|
10
|
+
export default class SendSlotManager {
|
|
11
|
+
private readonly slots: Map<MediaType, SendSlot> = new Map();
|
|
12
|
+
private readonly LoggerProxy: any;
|
|
13
|
+
|
|
14
|
+
constructor(LoggerProxy: any) {
|
|
15
|
+
this.LoggerProxy = LoggerProxy;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* This method is used to create a sendSlot for the given mediaType and returns the created sendSlot
|
|
20
|
+
* @param {MultistreamRoapMediaConnection} mediaConnection MultistreamRoapMediaConnection for which a sendSlot needs to be created
|
|
21
|
+
* @param {MediaType} mediaType MediaType for which a sendSlot needs to be created (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
|
|
22
|
+
* @param {boolean} active This is optional boolean to set the active state of the sendSlot. Default is true
|
|
23
|
+
* @returns {SendSlot} slot The created sendSlot
|
|
24
|
+
*/
|
|
25
|
+
public createSlot(
|
|
26
|
+
mediaConnection: MultistreamRoapMediaConnection,
|
|
27
|
+
mediaType: MediaType,
|
|
28
|
+
active = true
|
|
29
|
+
): SendSlot {
|
|
30
|
+
if (this.slots.has(mediaType)) {
|
|
31
|
+
throw new Error(`Slot for ${mediaType} already exists`);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const slot: SendSlot = mediaConnection.createSendSlot(mediaType, active);
|
|
35
|
+
|
|
36
|
+
this.slots.set(mediaType, slot);
|
|
37
|
+
|
|
38
|
+
this.LoggerProxy.logger.info(
|
|
39
|
+
`SendSlotsManager->createSlot#Created slot for ${mediaType} with active ${active}`
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
return slot;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* This method is used to retrieve the sendSlot for the given mediaType
|
|
47
|
+
* @param {MediaType} mediaType of which the slot needs to be retrieved
|
|
48
|
+
* @returns {SendSlot}
|
|
49
|
+
*/
|
|
50
|
+
public getSlot(mediaType: MediaType): SendSlot {
|
|
51
|
+
const slot = this.slots.get(mediaType);
|
|
52
|
+
|
|
53
|
+
if (!slot) {
|
|
54
|
+
throw new Error(`Slot for ${mediaType} does not exist`);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return slot;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Allow users to specify 'namedMediaGroups' to indicate which named media group its audio should be sent to.
|
|
62
|
+
* @param {MediaType} mediaType MediaType of the sendSlot to which the audio stream needs to be send to the media group
|
|
63
|
+
* @param {[]}namedMediaGroups - Allow users to specify 'namedMediaGroups'.If the value of 'namedMediaGroups' is zero,
|
|
64
|
+
* named media group will be canceled and the audio stream will be sent to the floor.
|
|
65
|
+
* @returns {void}
|
|
66
|
+
*/
|
|
67
|
+
public setNamedMediaGroups(mediaType: MediaType, namedMediaGroups: NamedMediaGroup[]) {
|
|
68
|
+
if (mediaType !== MediaType.AudioMain) {
|
|
69
|
+
throw new Error(
|
|
70
|
+
`sendSlotManager cannot set named media group which media type is ${mediaType}`
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const slot = this.slots.get(mediaType);
|
|
75
|
+
|
|
76
|
+
if (!slot) {
|
|
77
|
+
throw new Error(`Slot for ${mediaType} does not exist`);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
slot.setNamedMediaGroups(namedMediaGroups);
|
|
81
|
+
|
|
82
|
+
this.LoggerProxy.logger.info(
|
|
83
|
+
`SendSlotsManager->setNamedMediaGroups#set named media group ${namedMediaGroups}`
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* This method publishes the given stream to the sendSlot for the given mediaType
|
|
89
|
+
* @param {MediaType} mediaType MediaType of the sendSlot to which a stream needs to be published (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
|
|
90
|
+
* @param {LocalStream} stream LocalStream to be published
|
|
91
|
+
* @returns {Promise<void>}
|
|
92
|
+
*/
|
|
93
|
+
public async publishStream(mediaType: MediaType, stream: LocalStream): Promise<void> {
|
|
94
|
+
const slot = this.slots.get(mediaType);
|
|
95
|
+
|
|
96
|
+
if (!slot) {
|
|
97
|
+
throw new Error(`Slot for ${mediaType} does not exist`);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
await slot.publishStream(stream);
|
|
101
|
+
|
|
102
|
+
this.LoggerProxy.logger.info(
|
|
103
|
+
`SendSlotsManager->publishStream#Published stream for ${mediaType} and stream with label ${stream.label} and muted ${stream.muted}`
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* This method unpublishes the stream from the sendSlot of the given mediaType
|
|
109
|
+
* @param {MediaType} mediaType MediaType of the sendSlot from which a stream needs to be unpublished (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
|
|
110
|
+
* @returns {Promise<void>}
|
|
111
|
+
*/
|
|
112
|
+
public async unpublishStream(mediaType: MediaType): Promise<void> {
|
|
113
|
+
const slot = this.slots.get(mediaType);
|
|
114
|
+
|
|
115
|
+
if (!slot) {
|
|
116
|
+
throw new Error(`Slot for ${mediaType} does not exist`);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
await slot.unpublishStream();
|
|
120
|
+
|
|
121
|
+
this.LoggerProxy.logger.info(
|
|
122
|
+
`SendSlotsManager->unpublishStream#Unpublished stream for ${mediaType}`
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* This method is used to set the active state of the sendSlot for the given mediaType
|
|
128
|
+
* @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)
|
|
129
|
+
* @param {boolean} active The boolean to set the active state of the sendSlot. Default is true
|
|
130
|
+
* @returns {void}
|
|
131
|
+
*/
|
|
132
|
+
public setActive(mediaType: MediaType, active = true): void {
|
|
133
|
+
const slot = this.slots.get(mediaType);
|
|
134
|
+
|
|
135
|
+
if (!slot) {
|
|
136
|
+
throw new Error(`Slot for ${mediaType} does not exist`);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
slot.active = active;
|
|
140
|
+
|
|
141
|
+
this.LoggerProxy.logger.info(
|
|
142
|
+
`SendSlotsManager->setActive#Set active for ${mediaType} to ${active}`
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* This method is used to set the codec parameters for the sendSlot of the given mediaType
|
|
148
|
+
* @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
|
|
149
|
+
* @param {Object} codecParameters
|
|
150
|
+
* @returns {Promise<void>}
|
|
151
|
+
*/
|
|
152
|
+
public async setCodecParameters(
|
|
153
|
+
mediaType: MediaType,
|
|
154
|
+
codecParameters: {
|
|
155
|
+
[key: string]: string | undefined; // As per ts-sdp undefined is considered as a valid value to be used for codec parameters
|
|
156
|
+
}
|
|
157
|
+
): Promise<void> {
|
|
158
|
+
// 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
|
|
159
|
+
const slot = this.slots.get(mediaType);
|
|
160
|
+
|
|
161
|
+
if (!slot) {
|
|
162
|
+
throw new Error(`Slot for ${mediaType} does not exist`);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
await slot.setCodecParameters(codecParameters);
|
|
166
|
+
|
|
167
|
+
this.LoggerProxy.logger.info(
|
|
168
|
+
`SendSlotsManager->setCodecParameters#Set codec parameters for ${mediaType} to ${codecParameters}`
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* This method is used to delete the codec parameters for the sendSlot of the given mediaType
|
|
174
|
+
* @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be deleted (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
|
|
175
|
+
* @param {Array<String>} parameters Array of keys of the codec parameters to be deleted
|
|
176
|
+
* @returns {Promise<void>}
|
|
177
|
+
*/
|
|
178
|
+
public async deleteCodecParameters(mediaType: MediaType, parameters: string[]): Promise<void> {
|
|
179
|
+
const slot = this.slots.get(mediaType);
|
|
180
|
+
|
|
181
|
+
if (!slot) {
|
|
182
|
+
throw new Error(`Slot for ${mediaType} does not exist`);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
await slot.deleteCodecParameters(parameters);
|
|
186
|
+
|
|
187
|
+
this.LoggerProxy.logger.info(
|
|
188
|
+
`SendSlotsManager->deleteCodecParameters#Deleted the following codec parameters -> ${parameters} for ${mediaType}`
|
|
189
|
+
);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* This method is used to reset the SendSlotsManager by deleting all the sendSlots
|
|
194
|
+
* @returns {undefined}
|
|
195
|
+
*/
|
|
196
|
+
public reset(): void {
|
|
197
|
+
this.slots.clear();
|
|
198
|
+
}
|
|
199
|
+
}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import EventsScope from '../common/events/events-scope';
|
|
2
|
-
import {EVENT_TRIGGERS
|
|
3
|
-
|
|
2
|
+
import {EVENT_TRIGGERS} from '../constants';
|
|
4
3
|
|
|
5
4
|
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
5
|
+
* Meeting - network quality event
|
|
6
|
+
* Emitted on each interval of retrieving stats Analyzer data
|
|
7
|
+
* @event network:quality
|
|
8
|
+
* @type {Object}
|
|
9
|
+
* @property {string} mediaType {video|audio}
|
|
10
|
+
* @property {number} networkQualityScore - value determined in determineUplinkNetworkQuality
|
|
11
|
+
* @memberof NetworkQualityMonitor
|
|
12
|
+
*/
|
|
14
13
|
/**
|
|
15
14
|
* NetworkQualityMonitor class that will emit events based on detected quality
|
|
16
15
|
*
|
|
@@ -18,6 +17,13 @@ import {EVENT_TRIGGERS, STATS} from '../constants';
|
|
|
18
17
|
* @extends {EventsScope}
|
|
19
18
|
*/
|
|
20
19
|
export default class NetworkQualityMonitor extends EventsScope {
|
|
20
|
+
config: any;
|
|
21
|
+
frequencyTypes: any;
|
|
22
|
+
indicatorTypes: any;
|
|
23
|
+
mediaType: any;
|
|
24
|
+
networkQualityScore: any;
|
|
25
|
+
networkQualityStatus: any;
|
|
26
|
+
|
|
21
27
|
/**
|
|
22
28
|
* Creates a new instance of NetworkQualityMonitor
|
|
23
29
|
* @constructor
|
|
@@ -29,25 +35,21 @@ export default class NetworkQualityMonitor extends EventsScope {
|
|
|
29
35
|
* @property {Object} networkQualityStatus - hash object based on indicatorTypes and frequencyTypes
|
|
30
36
|
* @property {string} mediaType - audio|video
|
|
31
37
|
*/
|
|
32
|
-
constructor(config) {
|
|
38
|
+
constructor(config: any) {
|
|
33
39
|
super();
|
|
34
40
|
this.config = config;
|
|
35
41
|
this.indicatorTypes = Object.freeze({
|
|
36
42
|
PACKETLOSS: 'packetLoss',
|
|
37
43
|
LATENCY: 'latency',
|
|
38
|
-
JITTER: 'jitter'
|
|
44
|
+
JITTER: 'jitter',
|
|
39
45
|
});
|
|
40
46
|
this.frequencyTypes = Object.freeze({
|
|
41
47
|
UPLINK: 'uplink',
|
|
42
|
-
DOWNLINK: 'downlink'
|
|
48
|
+
DOWNLINK: 'downlink',
|
|
43
49
|
});
|
|
44
50
|
this.networkQualityScore = 1;
|
|
45
51
|
this.networkQualityStatus = {
|
|
46
|
-
[this.frequencyTypes.UPLINK]: {
|
|
47
|
-
[STATS.VIDEO_CORRELATE]: {},
|
|
48
|
-
[STATS.AUDIO_CORRELATE]: {},
|
|
49
|
-
[STATS.SHARE_CORRELATE]: {}
|
|
50
|
-
}
|
|
52
|
+
[this.frequencyTypes.UPLINK]: {},
|
|
51
53
|
};
|
|
52
54
|
this.mediaType = null;
|
|
53
55
|
}
|
|
@@ -62,12 +64,12 @@ export default class NetworkQualityMonitor extends EventsScope {
|
|
|
62
64
|
this.emit(
|
|
63
65
|
{
|
|
64
66
|
file: 'networkQualityMonitor',
|
|
65
|
-
function: 'emitNetworkQuality'
|
|
67
|
+
function: 'emitNetworkQuality',
|
|
66
68
|
},
|
|
67
69
|
EVENT_TRIGGERS.NETWORK_QUALITY,
|
|
68
70
|
{
|
|
69
71
|
mediaType: this.mediaType,
|
|
70
|
-
networkQualityScore: this.networkQualityScore
|
|
72
|
+
networkQualityScore: this.networkQualityScore,
|
|
71
73
|
}
|
|
72
74
|
);
|
|
73
75
|
}
|
|
@@ -85,7 +87,6 @@ export default class NetworkQualityMonitor extends EventsScope {
|
|
|
85
87
|
this.mediaType = null;
|
|
86
88
|
}
|
|
87
89
|
|
|
88
|
-
|
|
89
90
|
/**
|
|
90
91
|
* filter data to determine uplink network quality, invoked on same interval as stats analyzer remote-inbout-rtp
|
|
91
92
|
* @param {Object} configObj
|
|
@@ -96,7 +97,15 @@ export default class NetworkQualityMonitor extends EventsScope {
|
|
|
96
97
|
* @public
|
|
97
98
|
* @memberof NetworkQualityMonitor
|
|
98
99
|
*/
|
|
99
|
-
determineUplinkNetworkQuality({
|
|
100
|
+
public determineUplinkNetworkQuality({
|
|
101
|
+
mediaType,
|
|
102
|
+
remoteRtpResults,
|
|
103
|
+
statsAnalyzerCurrentStats,
|
|
104
|
+
}: {
|
|
105
|
+
mediaType: string;
|
|
106
|
+
remoteRtpResults: any;
|
|
107
|
+
statsAnalyzerCurrentStats: object;
|
|
108
|
+
}) {
|
|
100
109
|
const roundTripTimeInMilliseconds = remoteRtpResults.roundTripTime * 1000;
|
|
101
110
|
const jitterInMilliseconds = remoteRtpResults.jitter * 1000;
|
|
102
111
|
const {currentPacketLossRatio} = statsAnalyzerCurrentStats[mediaType].send;
|
|
@@ -112,8 +121,7 @@ export default class NetworkQualityMonitor extends EventsScope {
|
|
|
112
121
|
* @returns {boolean}
|
|
113
122
|
*/
|
|
114
123
|
const determinePacketLoss = () => {
|
|
115
|
-
if (currentPacketLossRatio >
|
|
116
|
-
this.config.videoPacketLossRatioThreshold) {
|
|
124
|
+
if (currentPacketLossRatio > this.config.videoPacketLossRatioThreshold) {
|
|
117
125
|
this.networkQualityScore = 0;
|
|
118
126
|
|
|
119
127
|
return false;
|
|
@@ -157,7 +165,12 @@ export default class NetworkQualityMonitor extends EventsScope {
|
|
|
157
165
|
* @param {(number|undefined)} value
|
|
158
166
|
* @returns {(number|null)}
|
|
159
167
|
*/
|
|
160
|
-
const determineIfUndefined = (value
|
|
168
|
+
const determineIfUndefined = (value: number | undefined) =>
|
|
169
|
+
typeof value === 'undefined' ? null : value;
|
|
170
|
+
|
|
171
|
+
if (!this.networkQualityStatus[UPLINK][mediaType]) {
|
|
172
|
+
this.networkQualityStatus[UPLINK][mediaType] = {};
|
|
173
|
+
}
|
|
161
174
|
|
|
162
175
|
/**
|
|
163
176
|
* Values for some browsers specifically Safari will be undefined we explicitly set to null
|
|
@@ -167,20 +180,19 @@ export default class NetworkQualityMonitor extends EventsScope {
|
|
|
167
180
|
// PACKET LOSS
|
|
168
181
|
this.networkQualityStatus[UPLINK][mediaType][PACKETLOSS] = {
|
|
169
182
|
acceptable: determinePacketLoss(),
|
|
170
|
-
value: determineIfUndefined(currentPacketLossRatio)
|
|
183
|
+
value: determineIfUndefined(currentPacketLossRatio),
|
|
171
184
|
};
|
|
172
185
|
|
|
173
|
-
|
|
174
186
|
// LATENCY measured in Round trip time
|
|
175
187
|
this.networkQualityStatus[UPLINK][mediaType][LATENCY] = {
|
|
176
188
|
acceptable: determineLatency(),
|
|
177
|
-
value: determineIfUndefined(remoteRtpResults.roundTripTime)
|
|
189
|
+
value: determineIfUndefined(remoteRtpResults.roundTripTime),
|
|
178
190
|
};
|
|
179
191
|
|
|
180
192
|
// JITTER
|
|
181
193
|
this.networkQualityStatus[UPLINK][mediaType][JITTER] = {
|
|
182
194
|
acceptable: deterMineJitter(),
|
|
183
|
-
value: determineIfUndefined(remoteRtpResults.jitter)
|
|
195
|
+
value: determineIfUndefined(remoteRtpResults.jitter),
|
|
184
196
|
};
|
|
185
197
|
|
|
186
198
|
this.updateNetworkQualityStatus();
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// @ts-ignore
|
|
1
2
|
import {StatelessWebexPlugin} from '@webex/webex-core';
|
|
2
3
|
|
|
3
4
|
import {MEETINGS, _PERSONAL_ROOM_} from '../constants';
|
|
@@ -5,11 +6,20 @@ import ParameterError from '../common/errors/parameter';
|
|
|
5
6
|
|
|
6
7
|
import PersonalMeetingRoomRequest from './request';
|
|
7
8
|
|
|
8
|
-
|
|
9
9
|
/**
|
|
10
10
|
* @class PersonalMeetingRoom
|
|
11
11
|
*/
|
|
12
12
|
export default class PersonalMeetingRoom extends StatelessWebexPlugin {
|
|
13
|
+
link: any;
|
|
14
|
+
meetingInfo: any;
|
|
15
|
+
name: any;
|
|
16
|
+
personalMeetingRoomRequest: any;
|
|
17
|
+
pmr: any;
|
|
18
|
+
sipUri: any;
|
|
19
|
+
userId: any;
|
|
20
|
+
meetingLink: any;
|
|
21
|
+
number: any;
|
|
22
|
+
|
|
13
23
|
namespace = MEETINGS;
|
|
14
24
|
|
|
15
25
|
/**
|
|
@@ -17,7 +27,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
|
|
|
17
27
|
* @param {Object} attrs
|
|
18
28
|
* @param {Object} options
|
|
19
29
|
*/
|
|
20
|
-
constructor(attrs, options) {
|
|
30
|
+
constructor(attrs: any, options: any) {
|
|
21
31
|
super({}, options);
|
|
22
32
|
/**
|
|
23
33
|
* The pmr server object
|
|
@@ -25,7 +35,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
|
|
|
25
35
|
* @type {Object}
|
|
26
36
|
* @public
|
|
27
37
|
* @memberof PersonalMeetingRoom
|
|
28
|
-
|
|
38
|
+
*/
|
|
29
39
|
this.pmr = null;
|
|
30
40
|
/**
|
|
31
41
|
* The pmr sip Uri
|
|
@@ -33,7 +43,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
|
|
|
33
43
|
* @type {String}
|
|
34
44
|
* @public
|
|
35
45
|
* @memberof PersonalMeetingRoom
|
|
36
|
-
|
|
46
|
+
*/
|
|
37
47
|
this.sipUri = null;
|
|
38
48
|
/**
|
|
39
49
|
* The pmr link
|
|
@@ -41,7 +51,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
|
|
|
41
51
|
* @type {String}
|
|
42
52
|
* @public
|
|
43
53
|
* @memberof PersonalMeetingRoom
|
|
44
|
-
|
|
54
|
+
*/
|
|
45
55
|
this.link = null;
|
|
46
56
|
/**
|
|
47
57
|
* The pmr server object
|
|
@@ -49,7 +59,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
|
|
|
49
59
|
* @type {Object}
|
|
50
60
|
* @public
|
|
51
61
|
* @memberof PersonalMeetingRoom
|
|
52
|
-
|
|
62
|
+
*/
|
|
53
63
|
this.userId = null;
|
|
54
64
|
/**
|
|
55
65
|
* The pmr name
|
|
@@ -57,7 +67,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
|
|
|
57
67
|
* @type {String}
|
|
58
68
|
* @public
|
|
59
69
|
* @memberof PersonalMeetingRoom
|
|
60
|
-
|
|
70
|
+
*/
|
|
61
71
|
this.name = null;
|
|
62
72
|
/**
|
|
63
73
|
* The meeting info request server interface
|
|
@@ -65,7 +75,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
|
|
|
65
75
|
* @type {MeetingInfo}
|
|
66
76
|
* @private
|
|
67
77
|
* @memberof PersonalMeetingRoom
|
|
68
|
-
|
|
78
|
+
*/
|
|
69
79
|
this.meetingInfo = attrs.meetingInfo;
|
|
70
80
|
/**
|
|
71
81
|
* The pmr server request interface
|
|
@@ -73,7 +83,8 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
|
|
|
73
83
|
* @type {Object}
|
|
74
84
|
* @private
|
|
75
85
|
* @memberof PersonalMeetingRoom
|
|
76
|
-
|
|
86
|
+
*/
|
|
87
|
+
// @ts-ignore
|
|
77
88
|
this.personalMeetingRoomRequest = new PersonalMeetingRoomRequest({}, options);
|
|
78
89
|
}
|
|
79
90
|
|
|
@@ -86,19 +97,19 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
|
|
|
86
97
|
* @public
|
|
87
98
|
* @memberof PersonalMeetingRoom
|
|
88
99
|
*/
|
|
89
|
-
claim(link, pin, preferred = true) {
|
|
100
|
+
public claim(link: string, pin: string, preferred = true) {
|
|
90
101
|
const options = {
|
|
102
|
+
// @ts-ignore
|
|
91
103
|
userId: this.webex.internal.device.userId,
|
|
92
104
|
passcode: pin,
|
|
93
105
|
meetingAddress: link,
|
|
94
|
-
preferred
|
|
106
|
+
preferred,
|
|
95
107
|
};
|
|
96
108
|
|
|
97
109
|
return this.personalMeetingRoomRequest.claimPmr(options).then((pmr) => {
|
|
98
110
|
if (pmr && pmr.body) {
|
|
99
111
|
this.set(pmr.body);
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
112
|
+
} else {
|
|
102
113
|
return Promise.reject(new ParameterError('No PMR body provided. PMR values not updated.'));
|
|
103
114
|
}
|
|
104
115
|
|
|
@@ -112,7 +123,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
|
|
|
112
123
|
* @private
|
|
113
124
|
* @memberof PersonalMeetingRoom
|
|
114
125
|
*/
|
|
115
|
-
set(body) {
|
|
126
|
+
private set(body: any) {
|
|
116
127
|
this.pmr = body;
|
|
117
128
|
this.sipUri = body.sipMeetingUri;
|
|
118
129
|
this.meetingLink = body.webExMeetingLink || body.meetingLink;
|
|
@@ -128,17 +139,15 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
|
|
|
128
139
|
* @public
|
|
129
140
|
* @memberof PersonalMeetingRoom
|
|
130
141
|
*/
|
|
131
|
-
get() {
|
|
142
|
+
public get() {
|
|
132
143
|
const options = {
|
|
133
|
-
type: _PERSONAL_ROOM_
|
|
134
|
-
|
|
144
|
+
type: _PERSONAL_ROOM_,
|
|
135
145
|
};
|
|
136
146
|
|
|
137
147
|
return this.meetingInfo.fetchMeetingInfo(options).then((pmr) => {
|
|
138
148
|
if (pmr && pmr.body && pmr.body.isPmr) {
|
|
139
149
|
this.set(pmr.body);
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
150
|
+
} else {
|
|
142
151
|
return Promise.reject(new TypeError('The PMR requested is NOT a PMR. PMR values not set.'));
|
|
143
152
|
}
|
|
144
153
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// @ts-ignore
|
|
1
2
|
import {StatelessWebexPlugin} from '@webex/webex-core';
|
|
2
3
|
|
|
3
4
|
import {MEETINGS} from '../constants';
|
|
@@ -5,7 +6,6 @@ import ParameterError from '../common/errors/parameter';
|
|
|
5
6
|
|
|
6
7
|
import PersonalMeetingRoomUtil from './util';
|
|
7
8
|
|
|
8
|
-
|
|
9
9
|
/**
|
|
10
10
|
* @class MeetingInfoRequest
|
|
11
11
|
*/
|
|
@@ -18,9 +18,17 @@ export default class PersonalMeetingRoomRequest extends StatelessWebexPlugin {
|
|
|
18
18
|
* @returns {Promise} returns a promise that resolves/rejects the result of the request
|
|
19
19
|
* @memberof PersonalMeetingRoomRequest
|
|
20
20
|
*/
|
|
21
|
-
claimPmr(options) {
|
|
22
|
-
if (
|
|
23
|
-
|
|
21
|
+
claimPmr(options: any) {
|
|
22
|
+
if (
|
|
23
|
+
!options ||
|
|
24
|
+
!options.userId ||
|
|
25
|
+
!options.passcode ||
|
|
26
|
+
!options.meetingAddress ||
|
|
27
|
+
!options.preferred
|
|
28
|
+
) {
|
|
29
|
+
throw new ParameterError(
|
|
30
|
+
'Claiming a PMR should be done with userId, passcode, preferred, and meetingAddress in options.'
|
|
31
|
+
);
|
|
24
32
|
}
|
|
25
33
|
const validPin = PersonalMeetingRoomUtil.getClaimPmrPin(options.passcode);
|
|
26
34
|
|
|
@@ -34,6 +42,7 @@ export default class PersonalMeetingRoomRequest extends StatelessWebexPlugin {
|
|
|
34
42
|
}
|
|
35
43
|
const request = PersonalMeetingRoomUtil.getClaimedRequestParams(validLink, validPin, options);
|
|
36
44
|
|
|
45
|
+
// @ts-ignore
|
|
37
46
|
return this.request(request);
|
|
38
47
|
}
|
|
39
48
|
}
|
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
CMR_MEETINGS,
|
|
7
7
|
CLAIM,
|
|
8
8
|
HECATE,
|
|
9
|
-
WEBEX_DOT_COM
|
|
9
|
+
WEBEX_DOT_COM,
|
|
10
10
|
} from '../constants';
|
|
11
11
|
|
|
12
|
-
const PersonalMeetingRoomUtil = {};
|
|
12
|
+
const PersonalMeetingRoomUtil: any = {};
|
|
13
13
|
|
|
14
14
|
PersonalMeetingRoomUtil.getClaimPmrLink = (pmrLink) => {
|
|
15
15
|
let validator = VALID_PMR_ADDRESS.test(pmrLink);
|
|
@@ -42,8 +42,8 @@ PersonalMeetingRoomUtil.getClaimedRequestParams = (link, pin, options) => ({
|
|
|
42
42
|
userId: options.userId,
|
|
43
43
|
passcode: pin,
|
|
44
44
|
preferred: options.preferred,
|
|
45
|
-
meetingAddress: link
|
|
46
|
-
}
|
|
45
|
+
meetingAddress: link,
|
|
46
|
+
},
|
|
47
47
|
});
|
|
48
48
|
|
|
49
49
|
export default PersonalMeetingRoomUtil;
|