@webex/plugin-meetings 2.60.0 → 2.60.1-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -8
- package/dist/annotation/annotation.types.d.ts +42 -0
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.d.ts +31 -0
- package/dist/annotation/constants.js +41 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.d.ts +117 -0
- package/dist/annotation/index.js +357 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.d.ts +8 -0
- package/dist/breakouts/breakout.js +215 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.d.ts +5 -0
- package/dist/breakouts/collection.js +22 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/breakouts/edit-lock-error.js +51 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.d.ts +8 -0
- package/dist/breakouts/events.js +44 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.d.ts +5 -0
- package/dist/breakouts/index.js +1047 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/breakouts/request.d.ts +22 -0
- package/dist/breakouts/request.js +77 -0
- package/dist/breakouts/request.js.map +1 -0
- package/dist/breakouts/utils.d.ts +15 -0
- package/dist/breakouts/utils.js +64 -0
- package/dist/breakouts/utils.js.map +1 -0
- 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-error.js → reclaim-host-role-errors.js} +7 -11
- 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/common/errors/webex-errors.d.ts +20 -8
- package/dist/common/errors/webex-errors.js +48 -28
- 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 +2 -3
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/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.d.ts +9 -7
- package/dist/common/queue.js +22 -9
- package/dist/common/queue.js.map +1 -1
- package/dist/config.d.ts +6 -7
- package/dist/config.js +8 -10
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +217 -97
- package/dist/constants.js +416 -441
- 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.d.ts +11 -1
- package/dist/controls-options-manager/enums.js +15 -6
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.d.ts +17 -1
- package/dist/controls-options-manager/index.js +127 -38
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/types.d.ts +43 -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.d.ts +1 -7
- package/dist/controls-options-manager/util.js +309 -19
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.js +121 -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.d.ts +5 -0
- package/dist/interpretation/collection.js +22 -0
- package/dist/interpretation/collection.js.map +1 -0
- package/dist/interpretation/index.d.ts +5 -0
- package/dist/interpretation/index.js +365 -0
- package/dist/interpretation/index.js.map +1 -0
- package/dist/interpretation/siLanguage.d.ts +5 -0
- package/dist/interpretation/siLanguage.js +24 -0
- package/dist/interpretation/siLanguage.js.map +1 -0
- package/dist/locus-info/controlsUtils.js +100 -11
- 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/locus-info/index.d.ts +57 -4
- package/dist/locus-info/index.js +425 -84
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +13 -5
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +58 -3
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.d.ts +66 -6
- package/dist/locus-info/parser.js +253 -80
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +97 -13
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.d.ts +2 -0
- package/dist/media/index.js +107 -319
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.d.ts +38 -53
- package/dist/media/properties.js +96 -153
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +1 -22
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.d.ts +234 -230
- package/dist/mediaQualityMetrics/config.js +302 -498
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.d.ts +88 -0
- package/dist/meeting/in-meeting-actions.js +94 -3
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.d.ts +591 -494
- package/dist/meeting/index.js +4732 -2990
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.d.ts +74 -0
- package/dist/meeting/locusMediaRequest.js +291 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -0
- package/dist/meeting/muteState.d.ts +93 -25
- package/dist/meeting/muteState.js +224 -133
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.d.ts +82 -47
- package/dist/meeting/request.js +297 -199
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.d.ts +11 -0
- package/dist/meeting/request.type.js +7 -0
- package/dist/meeting/request.type.js.map +1 -0
- package/dist/meeting/state.js +1 -2
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.d.ts +102 -1
- package/dist/meeting/util.js +605 -435
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +3 -4
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.d.ts +13 -1
- package/dist/meeting-info/index.js +74 -7
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.d.ts +31 -1
- package/dist/meeting-info/meeting-info-v2.js +200 -63
- 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 +2 -3
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +39 -41
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.d.ts +17 -0
- package/dist/meetings/collection.js +42 -4
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.d.ts +93 -21
- package/dist/meetings/index.js +490 -127
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.d.ts +4 -0
- package/dist/meetings/meetings.types.js +7 -0
- package/dist/meetings/meetings.types.js.map +1 -0
- package/dist/meetings/request.js +4 -3
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +107 -6
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.d.ts +13 -1
- package/dist/member/index.js +45 -2
- package/dist/member/index.js.map +1 -1
- package/dist/member/member.types.js +3 -4
- package/dist/member/member.types.js.map +1 -1
- package/dist/member/types.d.ts +32 -0
- package/dist/member/types.js +23 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +120 -29
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.d.ts +5 -0
- package/dist/members/collection.js +11 -2
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.d.ts +56 -11
- package/dist/members/index.js +174 -47
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.d.ts +67 -11
- package/dist/members/request.js +102 -54
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +3 -4
- package/dist/members/types.js.map +1 -1
- package/dist/members/util.d.ts +214 -1
- package/dist/members/util.js +327 -284
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.d.ts +15 -6
- package/dist/metrics/constants.js +17 -9
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.d.ts +4 -111
- package/dist/metrics/index.js +4 -452
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.d.ts +118 -0
- package/dist/multistream/mediaRequestManager.js +344 -0
- package/dist/multistream/mediaRequestManager.js.map +1 -0
- package/dist/multistream/receiveSlot.d.ts +68 -0
- package/dist/multistream/receiveSlot.js +200 -0
- package/dist/multistream/receiveSlot.js.map +1 -0
- package/dist/multistream/receiveSlotManager.d.ts +56 -0
- package/dist/multistream/receiveSlotManager.js +174 -0
- package/dist/multistream/receiveSlotManager.js.map +1 -0
- package/dist/multistream/remoteMedia.d.ts +72 -0
- package/dist/multistream/remoteMedia.js +268 -0
- package/dist/multistream/remoteMedia.js.map +1 -0
- package/dist/multistream/remoteMediaGroup.d.ts +47 -0
- package/dist/multistream/remoteMediaGroup.js +267 -0
- package/dist/multistream/remoteMediaGroup.js.map +1 -0
- package/dist/multistream/remoteMediaManager.d.ts +285 -0
- package/dist/multistream/remoteMediaManager.js +1211 -0
- package/dist/multistream/remoteMediaManager.js.map +1 -0
- package/dist/multistream/sendSlotManager.d.ts +61 -0
- package/dist/multistream/sendSlotManager.js +236 -0
- package/dist/multistream/sendSlotManager.js.map +1 -0
- package/dist/networkQualityMonitor/index.js +5 -4
- 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 +61 -95
- package/dist/reachability/index.js +300 -393
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.d.ts +7 -3
- package/dist/reachability/request.js +18 -10
- 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.d.ts +3 -0
- package/dist/reactions/constants.js +12 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.d.ts +2 -2
- package/dist/reactions/reactions.js +4 -6
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.d.ts +23 -3
- package/dist/reactions/reactions.type.js +21 -23
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.d.ts +32 -8
- package/dist/reconnection-manager/index.js +282 -231
- 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.d.ts +15 -1
- package/dist/recording-controller/index.js +57 -46
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.d.ts +5 -4
- package/dist/recording-controller/util.js +10 -10
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/index.d.ts +9 -47
- package/dist/roap/index.js +101 -235
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.d.ts +18 -12
- package/dist/roap/request.js +126 -180
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.d.ts +27 -16
- package/dist/roap/turnDiscovery.js +115 -105
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/constants.d.ts +4 -0
- package/dist/rtcMetrics/constants.js +11 -0
- package/dist/rtcMetrics/constants.js.map +1 -0
- package/dist/rtcMetrics/index.d.ts +54 -0
- package/dist/rtcMetrics/index.js +140 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/statsAnalyzer/global.d.ts +1 -83
- package/dist/statsAnalyzer/global.js +2 -85
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.d.ts +50 -30
- package/dist/statsAnalyzer/index.js +435 -510
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +8 -6
- package/dist/statsAnalyzer/mqaUtil.js +120 -83
- 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/package.json +38 -26
- 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/errors/no-meeting-info.ts +24 -0
- package/src/common/errors/webex-errors.ts +36 -12
- package/src/common/logs/logger-proxy.ts +1 -1
- package/src/common/logs/request.ts +5 -1
- package/src/common/queue.ts +22 -8
- package/src/config.ts +6 -7
- package/src/constants.ts +244 -97
- package/src/controls-options-manager/enums.ts +12 -0
- package/src/controls-options-manager/index.ts +116 -21
- package/src/controls-options-manager/types.ts +59 -0
- package/src/controls-options-manager/util.ts +294 -14
- package/src/index.ts +44 -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 +332 -0
- package/src/interpretation/siLanguage.ts +18 -0
- package/src/locus-info/controlsUtils.ts +110 -0
- package/src/locus-info/index.ts +449 -61
- package/src/locus-info/infoUtils.ts +14 -2
- package/src/locus-info/mediaSharesUtils.ts +64 -0
- package/src/locus-info/parser.ts +258 -47
- package/src/locus-info/selfUtils.ts +85 -2
- package/src/media/index.ts +153 -370
- package/src/media/properties.ts +106 -136
- package/src/media/util.ts +0 -21
- package/src/mediaQualityMetrics/config.ts +244 -377
- package/src/meeting/in-meeting-actions.ts +176 -0
- package/src/meeting/index.ts +3944 -2489
- package/src/meeting/locusMediaRequest.ts +313 -0
- package/src/meeting/muteState.ts +224 -138
- package/src/meeting/request.ts +207 -127
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/util.ts +590 -423
- package/src/meeting-info/index.ts +81 -8
- package/src/meeting-info/meeting-info-v2.ts +163 -13
- package/src/meeting-info/util.ts +1 -1
- package/src/meeting-info/utilv2.ts +28 -28
- package/src/meetings/collection.ts +33 -0
- package/src/meetings/index.ts +487 -126
- package/src/meetings/meetings.types.ts +12 -0
- package/src/meetings/request.ts +2 -0
- package/src/meetings/util.ts +116 -5
- package/src/member/index.ts +43 -1
- package/src/member/types.ts +38 -0
- package/src/member/util.ts +125 -28
- package/src/members/collection.ts +8 -0
- package/src/members/index.ts +187 -52
- package/src/members/request.ts +87 -27
- package/src/members/util.ts +332 -291
- package/src/metrics/constants.ts +15 -6
- package/src/metrics/index.ts +1 -471
- package/src/multistream/mediaRequestManager.ts +440 -0
- package/src/multistream/receiveSlot.ts +184 -0
- package/src/multistream/receiveSlotManager.ts +166 -0
- package/src/multistream/remoteMedia.ts +254 -0
- package/src/multistream/remoteMediaGroup.ts +284 -0
- package/src/multistream/remoteMediaManager.ts +1145 -0
- package/src/multistream/sendSlotManager.ts +170 -0
- package/src/networkQualityMonitor/index.ts +6 -6
- package/src/reachability/clusterReachability.ts +320 -0
- package/src/reachability/index.ts +243 -347
- package/src/reachability/request.ts +17 -8
- package/src/reachability/util.ts +24 -0
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +4 -4
- package/src/reactions/reactions.type.ts +30 -4
- package/src/reconnection-manager/index.ts +168 -156
- package/src/recording-controller/index.ts +20 -3
- package/src/recording-controller/util.ts +26 -9
- package/src/roap/index.ts +98 -241
- package/src/roap/request.ts +74 -148
- package/src/roap/turnDiscovery.ts +62 -56
- package/src/rtcMetrics/constants.ts +3 -0
- package/src/rtcMetrics/index.ts +124 -0
- package/src/statsAnalyzer/global.ts +1 -84
- package/src/statsAnalyzer/index.ts +477 -643
- package/src/statsAnalyzer/mqaUtil.ts +115 -114
- 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 +320 -264
- package/test/integration/spec/space-meeting.js +77 -4
- package/test/unit/spec/annotation/index.ts +418 -0
- package/test/unit/spec/breakouts/breakout.ts +237 -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 +1790 -0
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +72 -0
- package/test/unit/spec/common/queue.js +31 -2
- package/test/unit/spec/controls-options-manager/index.js +163 -0
- package/test/unit/spec/controls-options-manager/util.js +576 -60
- package/test/unit/spec/fixture/locus.js +1 -0
- 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 +589 -0
- package/test/unit/spec/interpretation/siLanguage.ts +28 -0
- package/test/unit/spec/locus-info/controlsUtils.js +323 -30
- package/test/unit/spec/locus-info/index.js +1390 -16
- package/test/unit/spec/locus-info/infoUtils.js +54 -16
- package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
- package/test/unit/spec/locus-info/lib/selfConstant.js +48 -0
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
- package/test/unit/spec/locus-info/parser.js +116 -35
- package/test/unit/spec/locus-info/selfUtils.js +275 -0
- package/test/unit/spec/media/index.ts +290 -0
- package/test/unit/spec/media/properties.ts +75 -84
- package/test/unit/spec/meeting/in-meeting-actions.ts +86 -0
- package/test/unit/spec/meeting/index.js +8187 -2769
- package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
- package/test/unit/spec/meeting/muteState.js +409 -213
- package/test/unit/spec/meeting/request.js +512 -42
- package/test/unit/spec/meeting/utils.js +741 -24
- package/test/unit/spec/meeting-info/index.js +300 -0
- package/test/unit/spec/meeting-info/meetinginfov2.js +527 -5
- package/test/unit/spec/meeting-info/utilv2.js +21 -0
- package/test/unit/spec/meetings/collection.js +26 -0
- package/test/unit/spec/meetings/index.js +1313 -243
- package/test/unit/spec/meetings/utils.js +202 -2
- package/test/unit/spec/member/index.js +32 -9
- package/test/unit/spec/member/util.js +499 -61
- package/test/unit/spec/members/index.js +394 -5
- package/test/unit/spec/members/request.js +206 -27
- package/test/unit/spec/members/utils.js +173 -38
- package/test/unit/spec/metrics/index.js +1 -50
- package/test/unit/spec/multistream/mediaRequestManager.ts +1418 -0
- package/test/unit/spec/multistream/receiveSlot.ts +163 -0
- package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
- package/test/unit/spec/multistream/remoteMedia.ts +255 -0
- package/test/unit/spec/multistream/remoteMediaGroup.ts +662 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +1924 -0
- package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
- package/test/unit/spec/networkQualityMonitor/index.js +4 -4
- package/test/unit/spec/reachability/clusterReachability.ts +279 -0
- package/test/unit/spec/reachability/index.ts +531 -24
- 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 +162 -24
- package/test/unit/spec/recording-controller/index.js +293 -218
- package/test/unit/spec/recording-controller/util.js +223 -96
- package/test/unit/spec/roap/index.ts +200 -76
- package/test/unit/spec/roap/request.ts +255 -0
- package/test/unit/spec/roap/turnDiscovery.ts +86 -48
- package/test/unit/spec/rtcMetrics/index.ts +93 -0
- package/test/unit/spec/stats-analyzer/index.js +261 -167
- package/test/unit/spec/webinar/collection.ts +13 -0
- package/test/unit/spec/webinar/index.ts +60 -0
- package/test/utils/constants.js +9 -0
- package/test/utils/integrationTestUtils.js +46 -0
- package/test/utils/testUtils.js +0 -45
- package/test/utils/webex-config.js +4 -0
- package/test/utils/webex-test-users.js +7 -3
- package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
- package/dist/meeting/effectsState.d.ts +0 -42
- package/dist/meeting/effectsState.js +0 -260
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/metrics/config.d.ts +0 -169
- package/dist/metrics/config.js +0 -289
- package/dist/metrics/config.js.map +0 -1
- package/dist/peer-connection-manager/index.d.ts +0 -6
- package/dist/peer-connection-manager/index.js +0 -671
- package/dist/peer-connection-manager/index.js.map +0 -1
- package/dist/peer-connection-manager/util.d.ts +0 -6
- package/dist/peer-connection-manager/util.js +0 -110
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/dist/roap/collection.d.ts +0 -10
- package/dist/roap/collection.js +0 -63
- package/dist/roap/collection.js.map +0 -1
- package/dist/roap/handler.d.ts +0 -47
- package/dist/roap/handler.js +0 -279
- package/dist/roap/handler.js.map +0 -1
- package/dist/roap/state.d.ts +0 -9
- package/dist/roap/state.js +0 -127
- package/dist/roap/state.js.map +0 -1
- package/dist/roap/util.d.ts +0 -2
- package/dist/roap/util.js +0 -76
- package/dist/roap/util.js.map +0 -1
- package/src/index.js +0 -15
- package/src/meeting/effectsState.ts +0 -209
- package/src/metrics/config.ts +0 -485
- package/src/peer-connection-manager/index.ts +0 -847
- package/src/peer-connection-manager/util.ts +0 -119
- package/src/roap/collection.ts +0 -62
- package/src/roap/handler.ts +0 -294
- package/src/roap/state.ts +0 -156
- package/src/roap/util.ts +0 -100
- package/test/unit/spec/meeting/effectsState.js +0 -281
- package/test/unit/spec/peerconnection-manager/index.js +0 -218
- package/test/unit/spec/peerconnection-manager/utils.js +0 -49
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -388
- package/test/unit/spec/roap/util.js +0 -30
- /package/dist/common/errors/{reclaim-host-role-error.d.ts → reclaim-host-role-errors.d.ts} +0 -0
- /package/src/common/errors/{reclaim-host-role-error.ts → reclaim-host-role-errors.ts} +0 -0
|
@@ -9,26 +9,35 @@ exports.default = void 0;
|
|
|
9
9
|
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
10
10
|
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
11
11
|
var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
|
|
12
|
-
var
|
|
12
|
+
var _entries = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/entries"));
|
|
13
13
|
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
14
14
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
15
|
-
var
|
|
15
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray"));
|
|
16
16
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
17
17
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
18
18
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
19
19
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
20
|
-
var
|
|
20
|
+
var _lodash = require("lodash");
|
|
21
21
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
22
|
+
var _util = _interopRequireDefault(require("../meeting/util"));
|
|
22
23
|
var _constants = require("../constants");
|
|
23
24
|
var _request = _interopRequireDefault(require("./request"));
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
var _clusterReachability = require("./clusterReachability");
|
|
26
|
+
/*!
|
|
27
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
28
|
+
*/
|
|
29
|
+
/* eslint-disable class-methods-use-this */
|
|
30
|
+
/**
|
|
31
|
+
* This is the type that matches what backend expects us to send to them. It is a bit weird, because
|
|
32
|
+
* it uses strings instead of booleans and numbers, but that's what they require.
|
|
33
|
+
*/
|
|
34
|
+
// this is the type that is required by the backend when we send them reachability results
|
|
35
|
+
// this is the type used by Reachability class internally and stored in local storage
|
|
27
36
|
/**
|
|
28
37
|
* @class Reachability
|
|
29
38
|
* @export
|
|
30
39
|
*/
|
|
31
|
-
var Reachability = /*#__PURE__*/function () {
|
|
40
|
+
var Reachability = exports.default = /*#__PURE__*/function () {
|
|
32
41
|
/**
|
|
33
42
|
* Creates an instance of Reachability.
|
|
34
43
|
* @param {object} webex
|
|
@@ -36,9 +45,10 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
36
45
|
*/
|
|
37
46
|
function Reachability(webex) {
|
|
38
47
|
(0, _classCallCheck2.default)(this, Reachability);
|
|
48
|
+
(0, _defineProperty2.default)(this, "namespace", _constants.REACHABILITY.namespace);
|
|
39
49
|
(0, _defineProperty2.default)(this, "webex", void 0);
|
|
40
50
|
(0, _defineProperty2.default)(this, "reachabilityRequest", void 0);
|
|
41
|
-
(0, _defineProperty2.default)(this, "
|
|
51
|
+
(0, _defineProperty2.default)(this, "clusterReachability", void 0);
|
|
42
52
|
this.webex = webex;
|
|
43
53
|
|
|
44
54
|
/**
|
|
@@ -49,69 +59,58 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
49
59
|
* @memberof Reachability
|
|
50
60
|
*/
|
|
51
61
|
this.reachabilityRequest = new _request.default(this.webex);
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* internal object of clusters latency results
|
|
55
|
-
* @instance
|
|
56
|
-
* @type {object}
|
|
57
|
-
* @private
|
|
58
|
-
* @memberof Reachability
|
|
59
|
-
*/
|
|
60
|
-
this.clusterLatencyResults = {};
|
|
62
|
+
this.clusterReachability = {};
|
|
61
63
|
}
|
|
62
64
|
|
|
63
65
|
/**
|
|
64
|
-
*
|
|
65
|
-
* @returns {
|
|
66
|
+
* Gets a list of media clusters from the backend and performs reachability checks on all the clusters
|
|
67
|
+
* @returns {Promise<ReachabilityResults>} reachability results
|
|
66
68
|
* @public
|
|
67
|
-
* @async
|
|
68
69
|
* @memberof Reachability
|
|
69
70
|
*/
|
|
70
71
|
(0, _createClass2.default)(Reachability, [{
|
|
71
72
|
key: "gatherReachability",
|
|
72
|
-
value: function () {
|
|
73
|
+
value: (function () {
|
|
73
74
|
var _gatherReachability = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
74
|
-
var
|
|
75
|
-
var clusters, results;
|
|
75
|
+
var _yield$this$reachabil, clusters, joinCookie, results;
|
|
76
76
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
77
77
|
while (1) switch (_context.prev = _context.next) {
|
|
78
78
|
case 0:
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
window.localStorage.removeItem(_constants.REACHABILITY.localStorage);
|
|
79
|
+
_context.next = 2;
|
|
80
|
+
return this.webex.boundedStorage.del(this.namespace, _constants.REACHABILITY.localStorageResult);
|
|
81
|
+
case 2:
|
|
82
|
+
_context.next = 4;
|
|
83
|
+
return this.webex.boundedStorage.del(this.namespace, _constants.REACHABILITY.localStorageJoinCookie);
|
|
84
|
+
case 4:
|
|
85
|
+
_context.prev = 4;
|
|
87
86
|
_context.next = 7;
|
|
88
|
-
|
|
89
|
-
case 5:
|
|
90
|
-
_loggerProxy.default.logger.error('Reachability:index#gatherReachability --> Error in accessing LocalStorage.');
|
|
91
|
-
return _context.abrupt("return", {});
|
|
87
|
+
return this.reachabilityRequest.getClusters(_util.default.getIpVersion(this.webex));
|
|
92
88
|
case 7:
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
return this.performReachabilityCheck(clusters);
|
|
100
|
-
case 13:
|
|
89
|
+
_yield$this$reachabil = _context.sent;
|
|
90
|
+
clusters = _yield$this$reachabil.clusters;
|
|
91
|
+
joinCookie = _yield$this$reachabil.joinCookie;
|
|
92
|
+
_context.next = 12;
|
|
93
|
+
return this.performReachabilityChecks(clusters);
|
|
94
|
+
case 12:
|
|
101
95
|
results = _context.sent;
|
|
102
|
-
|
|
96
|
+
_context.next = 15;
|
|
97
|
+
return this.webex.boundedStorage.put(this.namespace, _constants.REACHABILITY.localStorageResult, (0, _stringify.default)(results));
|
|
98
|
+
case 15:
|
|
99
|
+
_context.next = 17;
|
|
100
|
+
return this.webex.boundedStorage.put(this.namespace, _constants.REACHABILITY.localStorageJoinCookie, (0, _stringify.default)(joinCookie));
|
|
101
|
+
case 17:
|
|
103
102
|
_loggerProxy.default.logger.log('Reachability:index#gatherReachability --> Reachability checks completed');
|
|
104
103
|
return _context.abrupt("return", results);
|
|
105
|
-
case
|
|
106
|
-
_context.prev =
|
|
107
|
-
_context.t0 = _context["catch"](
|
|
108
|
-
_loggerProxy.default.logger.error("Reachability:index#gatherReachability --> Error
|
|
104
|
+
case 21:
|
|
105
|
+
_context.prev = 21;
|
|
106
|
+
_context.t0 = _context["catch"](4);
|
|
107
|
+
_loggerProxy.default.logger.error("Reachability:index#gatherReachability --> Error:", _context.t0);
|
|
109
108
|
return _context.abrupt("return", {});
|
|
110
|
-
case
|
|
109
|
+
case 25:
|
|
111
110
|
case "end":
|
|
112
111
|
return _context.stop();
|
|
113
112
|
}
|
|
114
|
-
}, _callee, this, [[
|
|
113
|
+
}, _callee, this, [[4, 21]]);
|
|
115
114
|
}));
|
|
116
115
|
function gatherReachability() {
|
|
117
116
|
return _gatherReachability.apply(this, arguments);
|
|
@@ -119,269 +118,233 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
119
118
|
return gatherReachability;
|
|
120
119
|
}()
|
|
121
120
|
/**
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
* @
|
|
121
|
+
* Returns statistics about last reachability results. The returned value is an object
|
|
122
|
+
* with a flat list of properties so that it can be easily sent with metrics
|
|
123
|
+
*
|
|
124
|
+
* @returns {Promise} Promise with metrics values, it never rejects/throws.
|
|
126
125
|
*/
|
|
126
|
+
)
|
|
127
127
|
}, {
|
|
128
|
-
key: "
|
|
129
|
-
value: function
|
|
130
|
-
var
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
128
|
+
key: "getReachabilityMetrics",
|
|
129
|
+
value: (function () {
|
|
130
|
+
var _getReachabilityMetrics = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
131
|
+
var stats, updateStats, resultsJson, results;
|
|
132
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
133
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
134
|
+
case 0:
|
|
135
|
+
stats = {
|
|
136
|
+
reachability_public_udp_success: 0,
|
|
137
|
+
reachability_public_udp_failed: 0,
|
|
138
|
+
reachability_public_tcp_success: 0,
|
|
139
|
+
reachability_public_tcp_failed: 0,
|
|
140
|
+
reachability_vmn_udp_success: 0,
|
|
141
|
+
reachability_vmn_udp_failed: 0,
|
|
142
|
+
reachability_vmn_tcp_success: 0,
|
|
143
|
+
reachability_vmn_tcp_failed: 0
|
|
144
|
+
};
|
|
145
|
+
updateStats = function updateStats(clusterType, result) {
|
|
146
|
+
if (result.udp && result.udp.result !== 'untested') {
|
|
147
|
+
var outcome = result.udp.result === 'reachable' ? 'success' : 'failed';
|
|
148
|
+
stats["reachability_".concat(clusterType, "_udp_").concat(outcome)] += 1;
|
|
149
|
+
}
|
|
150
|
+
if (result.tcp && result.tcp.result !== 'untested') {
|
|
151
|
+
var _outcome = result.tcp.result === 'reachable' ? 'success' : 'failed';
|
|
152
|
+
stats["reachability_".concat(clusterType, "_tcp_").concat(_outcome)] += 1;
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
_context2.prev = 2;
|
|
156
|
+
_context2.next = 5;
|
|
157
|
+
return this.webex.boundedStorage.get(_constants.REACHABILITY.namespace, _constants.REACHABILITY.localStorageResult);
|
|
158
|
+
case 5:
|
|
159
|
+
resultsJson = _context2.sent;
|
|
160
|
+
results = JSON.parse(resultsJson);
|
|
161
|
+
(0, _values.default)(results).forEach(function (result) {
|
|
162
|
+
updateStats(result.isVideoMesh ? 'vmn' : 'public', result);
|
|
163
|
+
});
|
|
164
|
+
_context2.next = 13;
|
|
165
|
+
break;
|
|
166
|
+
case 10:
|
|
167
|
+
_context2.prev = 10;
|
|
168
|
+
_context2.t0 = _context2["catch"](2);
|
|
169
|
+
// empty storage, that's ok
|
|
170
|
+
_loggerProxy.default.logger.warn('Roap:request#getReachabilityMetrics --> Error parsing reachability data: ', _context2.t0);
|
|
171
|
+
case 13:
|
|
172
|
+
return _context2.abrupt("return", stats);
|
|
173
|
+
case 14:
|
|
174
|
+
case "end":
|
|
175
|
+
return _context2.stop();
|
|
176
|
+
}
|
|
177
|
+
}, _callee2, this, [[2, 10]]);
|
|
178
|
+
}));
|
|
179
|
+
function getReachabilityMetrics() {
|
|
180
|
+
return _getReachabilityMetrics.apply(this, arguments);
|
|
142
181
|
}
|
|
143
|
-
return
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* Generate peerConnection config settings
|
|
148
|
-
* @param {object} cluster
|
|
149
|
-
* @returns {object} peerConnectionConfig
|
|
150
|
-
* @private
|
|
151
|
-
* @memberof Reachability
|
|
152
|
-
*/
|
|
153
|
-
}, {
|
|
154
|
-
key: "buildPeerConnectionConfig",
|
|
155
|
-
value: function buildPeerConnectionConfig(cluster) {
|
|
156
|
-
var iceServers = (0, _uniq2.default)([].concat((0, _toConsumableArray2.default)(cluster.udp), (0, _toConsumableArray2.default)(cluster.tcp))).map(function (url) {
|
|
157
|
-
return {
|
|
158
|
-
username: '',
|
|
159
|
-
credential: '',
|
|
160
|
-
urls: [url]
|
|
161
|
-
};
|
|
162
|
-
});
|
|
163
|
-
return {
|
|
164
|
-
iceServers: (0, _toConsumableArray2.default)(iceServers),
|
|
165
|
-
iceCandidatePoolSize: '0',
|
|
166
|
-
iceTransportPolicy: 'all'
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
|
|
182
|
+
return getReachabilityMetrics;
|
|
183
|
+
}()
|
|
170
184
|
/**
|
|
171
|
-
*
|
|
172
|
-
* @param {
|
|
173
|
-
* @returns {
|
|
174
|
-
* @private
|
|
175
|
-
* @memberof Reachability
|
|
185
|
+
* Maps our internal transport result to the format that backend expects
|
|
186
|
+
* @param {TransportResult} transportResult
|
|
187
|
+
* @returns {TransportResultForBackend}
|
|
176
188
|
*/
|
|
189
|
+
)
|
|
177
190
|
}, {
|
|
178
|
-
key: "
|
|
179
|
-
value: function
|
|
180
|
-
var
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
+
key: "mapTransportResultToBackendDataFormat",
|
|
192
|
+
value: function mapTransportResultToBackendDataFormat(transportResult) {
|
|
193
|
+
var output = {};
|
|
194
|
+
for (var _i = 0, _Object$entries = (0, _entries.default)(transportResult); _i < _Object$entries.length; _i++) {
|
|
195
|
+
var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
|
|
196
|
+
_key = _Object$entries$_i[0],
|
|
197
|
+
value = _Object$entries$_i[1];
|
|
198
|
+
switch (_key) {
|
|
199
|
+
case 'result':
|
|
200
|
+
switch (value) {
|
|
201
|
+
case 'reachable':
|
|
202
|
+
output.reachable = 'true';
|
|
203
|
+
break;
|
|
204
|
+
case 'unreachable':
|
|
205
|
+
output.reachable = 'false';
|
|
206
|
+
break;
|
|
207
|
+
case 'untested':
|
|
208
|
+
output.untested = 'true';
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
break;
|
|
212
|
+
case 'latencyInMilliseconds':
|
|
213
|
+
output.latencyInMilliseconds = value.toString();
|
|
214
|
+
break;
|
|
215
|
+
default:
|
|
216
|
+
output[_key] = value;
|
|
217
|
+
}
|
|
191
218
|
}
|
|
219
|
+
return output;
|
|
192
220
|
}
|
|
193
221
|
|
|
194
222
|
/**
|
|
195
|
-
*
|
|
196
|
-
*
|
|
197
|
-
* @returns {
|
|
198
|
-
* @private
|
|
199
|
-
* @memberof Reachability
|
|
223
|
+
* Reachability results as an object in the format that backend expects
|
|
224
|
+
*
|
|
225
|
+
* @returns {any} reachability results that need to be sent to the backend
|
|
200
226
|
*/
|
|
201
227
|
}, {
|
|
202
|
-
key: "
|
|
203
|
-
value: function
|
|
204
|
-
var
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
228
|
+
key: "getReachabilityResults",
|
|
229
|
+
value: (function () {
|
|
230
|
+
var _getReachabilityResults = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
231
|
+
var _this = this;
|
|
232
|
+
var results, resultsJson, allClusterResults;
|
|
233
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
234
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
235
|
+
case 0:
|
|
236
|
+
_context3.prev = 0;
|
|
237
|
+
_context3.next = 3;
|
|
238
|
+
return this.webex.boundedStorage.get(_constants.REACHABILITY.namespace, _constants.REACHABILITY.localStorageResult);
|
|
239
|
+
case 3:
|
|
240
|
+
resultsJson = _context3.sent;
|
|
241
|
+
allClusterResults = JSON.parse(resultsJson);
|
|
242
|
+
results = (0, _lodash.mapValues)(allClusterResults, function (clusterResult) {
|
|
243
|
+
return {
|
|
244
|
+
udp: _this.mapTransportResultToBackendDataFormat(clusterResult.udp || {
|
|
245
|
+
result: 'untested'
|
|
246
|
+
}),
|
|
247
|
+
tcp: _this.mapTransportResultToBackendDataFormat(clusterResult.tcp || {
|
|
248
|
+
result: 'untested'
|
|
249
|
+
}),
|
|
250
|
+
xtls: _this.mapTransportResultToBackendDataFormat(clusterResult.xtls || {
|
|
251
|
+
result: 'untested'
|
|
252
|
+
})
|
|
253
|
+
};
|
|
254
|
+
});
|
|
255
|
+
_context3.next = 11;
|
|
256
|
+
break;
|
|
257
|
+
case 8:
|
|
258
|
+
_context3.prev = 8;
|
|
259
|
+
_context3.t0 = _context3["catch"](0);
|
|
260
|
+
// empty storage, that's ok
|
|
261
|
+
_loggerProxy.default.logger.warn('Roap:request#attachReachabilityData --> Error parsing reachability data: ', _context3.t0);
|
|
262
|
+
case 11:
|
|
263
|
+
return _context3.abrupt("return", results);
|
|
264
|
+
case 12:
|
|
265
|
+
case "end":
|
|
266
|
+
return _context3.stop();
|
|
267
|
+
}
|
|
268
|
+
}, _callee3, this, [[0, 8]]);
|
|
269
|
+
}));
|
|
270
|
+
function getReachabilityResults() {
|
|
271
|
+
return _getReachabilityResults.apply(this, arguments);
|
|
272
|
+
}
|
|
273
|
+
return getReachabilityResults;
|
|
274
|
+
}()
|
|
209
275
|
/**
|
|
210
|
-
*
|
|
211
|
-
* @
|
|
212
|
-
* @
|
|
213
|
-
* @private
|
|
276
|
+
* fetches reachability data and checks for cluster reachability
|
|
277
|
+
* @returns {boolean}
|
|
278
|
+
* @public
|
|
214
279
|
* @memberof Reachability
|
|
215
280
|
*/
|
|
281
|
+
)
|
|
216
282
|
}, {
|
|
217
|
-
key: "
|
|
218
|
-
value: function
|
|
219
|
-
var
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
})
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
return _ref.apply(this, arguments);
|
|
253
|
-
};
|
|
254
|
-
}());
|
|
255
|
-
return _promise.default.all(clusters).then(this.parseIceResultsToReachabilityResults).then(function (reachabilityLatencyResults) {
|
|
256
|
-
_this.logUnreachableClusters();
|
|
257
|
-
|
|
258
|
-
// return results
|
|
259
|
-
return reachabilityLatencyResults;
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
|
|
283
|
+
key: "isAnyPublicClusterReachable",
|
|
284
|
+
value: (function () {
|
|
285
|
+
var _isAnyPublicClusterReachable = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
286
|
+
var reachable, reachabilityData, reachabilityResults;
|
|
287
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
288
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
289
|
+
case 0:
|
|
290
|
+
reachable = false; // @ts-ignore
|
|
291
|
+
_context4.next = 3;
|
|
292
|
+
return this.webex.boundedStorage.get(this.namespace, _constants.REACHABILITY.localStorageResult).catch(function () {});
|
|
293
|
+
case 3:
|
|
294
|
+
reachabilityData = _context4.sent;
|
|
295
|
+
if (reachabilityData) {
|
|
296
|
+
try {
|
|
297
|
+
reachabilityResults = JSON.parse(reachabilityData);
|
|
298
|
+
reachable = (0, _values.default)(reachabilityResults).some(function (result) {
|
|
299
|
+
var _result$udp, _result$tcp;
|
|
300
|
+
return !result.isVideoMesh && (((_result$udp = result.udp) === null || _result$udp === void 0 ? void 0 : _result$udp.result) === 'reachable' || ((_result$tcp = result.tcp) === null || _result$tcp === void 0 ? void 0 : _result$tcp.result) === 'reachable');
|
|
301
|
+
});
|
|
302
|
+
} catch (e) {
|
|
303
|
+
_loggerProxy.default.logger.error("Roap:request#attachReachabilityData --> Error in parsing reachability data: ".concat(e));
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
return _context4.abrupt("return", reachable);
|
|
307
|
+
case 6:
|
|
308
|
+
case "end":
|
|
309
|
+
return _context4.stop();
|
|
310
|
+
}
|
|
311
|
+
}, _callee4, this);
|
|
312
|
+
}));
|
|
313
|
+
function isAnyPublicClusterReachable() {
|
|
314
|
+
return _isAnyPublicClusterReachable.apply(this, arguments);
|
|
315
|
+
}
|
|
316
|
+
return isAnyPublicClusterReachable;
|
|
317
|
+
}()
|
|
263
318
|
/**
|
|
264
319
|
* Get list of all unreachable clusters
|
|
265
320
|
* @returns {array} Unreachable clusters
|
|
266
321
|
* @private
|
|
267
322
|
* @memberof Reachability
|
|
268
323
|
*/
|
|
324
|
+
)
|
|
269
325
|
}, {
|
|
270
|
-
key: "
|
|
271
|
-
value: function
|
|
326
|
+
key: "getUnreachableClusters",
|
|
327
|
+
value: function getUnreachableClusters() {
|
|
272
328
|
var unreachableList = [];
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
/**
|
|
284
|
-
* Attach an event handler for the icegatheringstatechange
|
|
285
|
-
* event and measure latency.
|
|
286
|
-
* @param {RTCPeerConnection} peerConnection
|
|
287
|
-
* @returns {undefined}
|
|
288
|
-
* @private
|
|
289
|
-
* @memberof Reachability
|
|
290
|
-
*/
|
|
291
|
-
}, {
|
|
292
|
-
key: "handleIceGatheringStateChange",
|
|
293
|
-
value: function handleIceGatheringStateChange(peerConnection) {
|
|
294
|
-
var _this2 = this;
|
|
295
|
-
peerConnection.onicegatheringstatechange = function () {
|
|
296
|
-
var COMPLETE = _constants.ICE_GATHERING_STATE.COMPLETE;
|
|
297
|
-
if (peerConnection.iceConnectionState === COMPLETE) {
|
|
298
|
-
var elapsed = _this2.getElapsedTime(peerConnection);
|
|
299
|
-
|
|
300
|
-
// @ts-ignore
|
|
301
|
-
_loggerProxy.default.logger.log( // @ts-ignore
|
|
302
|
-
"Reachability:index#onIceGatheringStateChange --> Successfully pinged ".concat(peerConnection.key, ":"), elapsed);
|
|
303
|
-
_this2.setLatencyAndClose(peerConnection, elapsed);
|
|
329
|
+
(0, _entries.default)(this.clusterReachability).forEach(function (_ref) {
|
|
330
|
+
var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
|
|
331
|
+
key = _ref2[0],
|
|
332
|
+
clusterReachability = _ref2[1];
|
|
333
|
+
var result = clusterReachability.getResult();
|
|
334
|
+
if (result.udp.result === 'unreachable') {
|
|
335
|
+
unreachableList.push({
|
|
336
|
+
name: key,
|
|
337
|
+
protocol: 'udp'
|
|
338
|
+
});
|
|
304
339
|
}
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
* event and measure latency.
|
|
311
|
-
* @param {RTCPeerConnection} peerConnection
|
|
312
|
-
* @returns {undefined}
|
|
313
|
-
* @private
|
|
314
|
-
* @memberof Reachability
|
|
315
|
-
*/
|
|
316
|
-
}, {
|
|
317
|
-
key: "handleOnIceCandidate",
|
|
318
|
-
value: function handleOnIceCandidate(peerConnection) {
|
|
319
|
-
var _this3 = this;
|
|
320
|
-
peerConnection.onicecandidate = function (e) {
|
|
321
|
-
var SERVER_REFLEXIVE = 'srflx';
|
|
322
|
-
if (e.candidate && String(e.candidate.type).toLowerCase() === SERVER_REFLEXIVE) {
|
|
323
|
-
var elapsed = _this3.getElapsedTime(peerConnection);
|
|
324
|
-
_loggerProxy.default.logger.log( // @ts-ignore
|
|
325
|
-
"Reachability:index#onIceCandidate --> Successfully pinged ".concat(peerConnection.key, ":"), elapsed);
|
|
326
|
-
_this3.setLatencyAndClose(peerConnection, elapsed);
|
|
340
|
+
if (result.tcp.result === 'unreachable') {
|
|
341
|
+
unreachableList.push({
|
|
342
|
+
name: key,
|
|
343
|
+
protocol: 'tcp'
|
|
344
|
+
});
|
|
327
345
|
}
|
|
328
|
-
};
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
/**
|
|
332
|
-
* An event handler on an RTCPeerConnection when the state of the ICE
|
|
333
|
-
* candidate gathering process changes. Used to measure connection
|
|
334
|
-
* speed.
|
|
335
|
-
* @private
|
|
336
|
-
* @param {RTCPeerConnection} peerConnection
|
|
337
|
-
* @param {number} timeout
|
|
338
|
-
* @returns {Promise}
|
|
339
|
-
*/
|
|
340
|
-
}, {
|
|
341
|
-
key: "iceGatheringState",
|
|
342
|
-
value: function iceGatheringState(peerConnection, timeout) {
|
|
343
|
-
var _this4 = this;
|
|
344
|
-
var ELAPSED = 'elapsed';
|
|
345
|
-
return new _promise.default(function (resolve) {
|
|
346
|
-
var peerConnectionProxy = new window.Proxy(peerConnection, {
|
|
347
|
-
get: function get(target, property) {
|
|
348
|
-
var targetMember = target[property];
|
|
349
|
-
if (typeof targetMember === 'function') {
|
|
350
|
-
return targetMember.bind(target);
|
|
351
|
-
}
|
|
352
|
-
return targetMember;
|
|
353
|
-
},
|
|
354
|
-
set: function set(target, property, value) {
|
|
355
|
-
// only intercept elapsed property
|
|
356
|
-
if (property === ELAPSED) {
|
|
357
|
-
// @ts-ignore
|
|
358
|
-
resolve({
|
|
359
|
-
clusterId: peerConnection.key,
|
|
360
|
-
elapsed: value
|
|
361
|
-
});
|
|
362
|
-
return true;
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
// pass thru
|
|
366
|
-
return window.Reflect.set(target, property, value);
|
|
367
|
-
}
|
|
368
|
-
});
|
|
369
|
-
|
|
370
|
-
// Using peerConnection proxy so handle functions below
|
|
371
|
-
// won't be coupled to our promise implementation
|
|
372
|
-
_this4.handleIceGatheringStateChange(peerConnectionProxy);
|
|
373
|
-
_this4.handleOnIceCandidate(peerConnectionProxy);
|
|
374
|
-
|
|
375
|
-
// Set maximum timeout
|
|
376
|
-
window.setTimeout(function () {
|
|
377
|
-
var CLOSED = _constants.CONNECTION_STATE.CLOSED;
|
|
378
|
-
|
|
379
|
-
// Close any open peerConnections
|
|
380
|
-
if (peerConnectionProxy.connectionState !== CLOSED) {
|
|
381
|
-
_this4.setLatencyAndClose(peerConnectionProxy, null);
|
|
382
|
-
}
|
|
383
|
-
}, timeout);
|
|
384
346
|
});
|
|
347
|
+
return unreachableList;
|
|
385
348
|
}
|
|
386
349
|
|
|
387
350
|
/**
|
|
@@ -393,122 +356,66 @@ var Reachability = /*#__PURE__*/function () {
|
|
|
393
356
|
}, {
|
|
394
357
|
key: "logUnreachableClusters",
|
|
395
358
|
value: function logUnreachableClusters() {
|
|
396
|
-
var list = this.
|
|
397
|
-
list.forEach(function (
|
|
398
|
-
|
|
359
|
+
var list = this.getUnreachableClusters();
|
|
360
|
+
list.forEach(function (_ref3) {
|
|
361
|
+
var name = _ref3.name,
|
|
362
|
+
protocol = _ref3.protocol;
|
|
363
|
+
_loggerProxy.default.logger.log("Reachability:index#logUnreachableClusters --> failed to reach ".concat(name, " over ").concat(protocol));
|
|
399
364
|
});
|
|
400
365
|
}
|
|
401
366
|
|
|
402
367
|
/**
|
|
403
|
-
*
|
|
404
|
-
* @param {
|
|
405
|
-
* @returns {
|
|
406
|
-
* @private
|
|
407
|
-
* @memberof Reachability
|
|
408
|
-
*/
|
|
409
|
-
}, {
|
|
410
|
-
key: "parseIceResultsToReachabilityResults",
|
|
411
|
-
value: function parseIceResultsToReachabilityResults(iceResults) {
|
|
412
|
-
var reachabilityMap = {};
|
|
413
|
-
iceResults.forEach(function (_ref2) {
|
|
414
|
-
var clusterId = _ref2.clusterId,
|
|
415
|
-
elapsed = _ref2.elapsed;
|
|
416
|
-
var latencyResult;
|
|
417
|
-
if (elapsed === null) {
|
|
418
|
-
latencyResult = {
|
|
419
|
-
reachable: 'false'
|
|
420
|
-
};
|
|
421
|
-
} else {
|
|
422
|
-
latencyResult = {
|
|
423
|
-
reachable: 'true',
|
|
424
|
-
latencyInMilliseconds: elapsed.toString()
|
|
425
|
-
};
|
|
426
|
-
}
|
|
427
|
-
reachabilityMap[clusterId] = {
|
|
428
|
-
udp: latencyResult,
|
|
429
|
-
tcp: latencyResult
|
|
430
|
-
};
|
|
431
|
-
});
|
|
432
|
-
return reachabilityMap;
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
/**
|
|
436
|
-
* fetches reachability data
|
|
437
|
-
* @param {object} clusterList
|
|
438
|
-
* @returns {Promise<localSDPData>} reachability check results
|
|
439
|
-
* @private
|
|
440
|
-
* @memberof Reachability
|
|
368
|
+
* Performs reachability checks for all clusters
|
|
369
|
+
* @param {ClusterList} clusterList
|
|
370
|
+
* @returns {Promise<ReachabilityResults>} reachability check results
|
|
441
371
|
*/
|
|
442
372
|
}, {
|
|
443
|
-
key: "
|
|
444
|
-
value: function
|
|
445
|
-
var
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
373
|
+
key: "performReachabilityChecks",
|
|
374
|
+
value: (function () {
|
|
375
|
+
var _performReachabilityChecks = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(clusterList) {
|
|
376
|
+
var _this2 = this;
|
|
377
|
+
var results, includeTcpReachability, clusterReachabilityChecks;
|
|
378
|
+
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
379
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
380
|
+
case 0:
|
|
381
|
+
results = {};
|
|
382
|
+
if (!(!clusterList || !(0, _keys.default)(clusterList).length)) {
|
|
383
|
+
_context5.next = 3;
|
|
384
|
+
break;
|
|
385
|
+
}
|
|
386
|
+
return _context5.abrupt("return", _promise.default.resolve(results));
|
|
387
|
+
case 3:
|
|
388
|
+
// @ts-ignore
|
|
389
|
+
includeTcpReachability = this.webex.config.meetings.experimental.enableTcpReachability;
|
|
390
|
+
_loggerProxy.default.logger.log("Reachability:index#performReachabilityChecks --> doing UDP".concat(includeTcpReachability ? ' and TCP' : '', " reachability checks"));
|
|
391
|
+
clusterReachabilityChecks = (0, _keys.default)(clusterList).map(function (key) {
|
|
392
|
+
var cluster = clusterList[key];
|
|
393
|
+
if (!includeTcpReachability) {
|
|
394
|
+
cluster.tcp = [];
|
|
395
|
+
}
|
|
396
|
+
_this2.clusterReachability[key] = new _clusterReachability.ClusterReachability(key, cluster);
|
|
397
|
+
return _this2.clusterReachability[key].start().then(function (result) {
|
|
398
|
+
results[key] = result;
|
|
399
|
+
results[key].isVideoMesh = cluster.isVideoMesh;
|
|
400
|
+
});
|
|
401
|
+
});
|
|
402
|
+
_context5.next = 8;
|
|
403
|
+
return _promise.default.all(clusterReachabilityChecks);
|
|
404
|
+
case 8:
|
|
405
|
+
this.logUnreachableClusters();
|
|
406
|
+
return _context5.abrupt("return", results);
|
|
407
|
+
case 10:
|
|
408
|
+
case "end":
|
|
409
|
+
return _context5.stop();
|
|
457
410
|
}
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
});
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
/**
|
|
466
|
-
* Records latency and closes the peerConnection
|
|
467
|
-
* @param {RTCPeerConnection} peerConnection
|
|
468
|
-
* @param {number} elapsed Latency in milliseconds
|
|
469
|
-
* @returns {undefined}
|
|
470
|
-
* @private
|
|
471
|
-
* @memberof Reachability
|
|
472
|
-
*/
|
|
473
|
-
}, {
|
|
474
|
-
key: "setLatencyAndClose",
|
|
475
|
-
value: function setLatencyAndClose(peerConnection, elapsed) {
|
|
476
|
-
var _intialState;
|
|
477
|
-
var REACHABLE = 'reachable';
|
|
478
|
-
var UNREACHABLE = 'unreachable';
|
|
479
|
-
var CLOSED = _constants.CONNECTION_STATE.CLOSED;
|
|
480
|
-
// @ts-ignore
|
|
481
|
-
var key = peerConnection.key;
|
|
482
|
-
var resultKey = elapsed === null ? UNREACHABLE : REACHABLE;
|
|
483
|
-
var intialState = (_intialState = {}, (0, _defineProperty2.default)(_intialState, REACHABLE, 0), (0, _defineProperty2.default)(_intialState, UNREACHABLE, 0), _intialState);
|
|
484
|
-
if (peerConnection.connectionState === CLOSED) {
|
|
485
|
-
_loggerProxy.default.logger.log("Reachability:index#setLatencyAndClose --> Attempting to set latency of ".concat(elapsed, " on closed peerConnection."));
|
|
486
|
-
return;
|
|
411
|
+
}, _callee5, this);
|
|
412
|
+
}));
|
|
413
|
+
function performReachabilityChecks(_x) {
|
|
414
|
+
return _performReachabilityChecks.apply(this, arguments);
|
|
487
415
|
}
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
// Set to null in case this fired from
|
|
492
|
-
// an event other than onIceCandidate
|
|
493
|
-
peerConnection.onicecandidate = null;
|
|
494
|
-
peerConnection.close();
|
|
495
|
-
// @ts-ignore
|
|
496
|
-
peerConnection.elapsed = elapsed;
|
|
497
|
-
}
|
|
498
|
-
|
|
499
|
-
/**
|
|
500
|
-
* utility function
|
|
501
|
-
* @returns {undefined}
|
|
502
|
-
* @private
|
|
503
|
-
* @memberof Reachability
|
|
504
|
-
*/
|
|
505
|
-
}, {
|
|
506
|
-
key: "setup",
|
|
507
|
-
value: function setup() {
|
|
508
|
-
this.clusterLatencyResults = {};
|
|
509
|
-
}
|
|
416
|
+
return performReachabilityChecks;
|
|
417
|
+
}())
|
|
510
418
|
}]);
|
|
511
419
|
return Reachability;
|
|
512
420
|
}();
|
|
513
|
-
exports.default = Reachability;
|
|
514
421
|
//# sourceMappingURL=index.js.map
|