@webex/plugin-meetings 3.0.0-beta.13 → 3.0.0-beta.130
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 +45 -1
- package/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +48 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +355 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +193 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.js +23 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.js +43 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +994 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/breakouts/request.js +78 -0
- package/dist/breakouts/request.js.map +1 -0
- package/dist/breakouts/utils.js +67 -0
- package/dist/breakouts/utils.js.map +1 -0
- package/dist/common/browser-detection.js +1 -20
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +5 -20
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +0 -7
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +5 -26
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +5 -26
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +6 -27
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +5 -26
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +5 -33
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +5 -26
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +4 -25
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js +0 -17
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +5 -26
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +5 -26
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +6 -41
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +1 -24
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +0 -22
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +0 -23
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +0 -12
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +0 -15
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +0 -4
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -8
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +35 -61
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +4 -14
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +6 -6
- package/dist/config.js.map +1 -1
- package/dist/constants.js +201 -53
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +14 -0
- package/dist/controls-options-manager/constants.js.map +1 -0
- package/dist/controls-options-manager/enums.js +27 -0
- package/dist/controls-options-manager/enums.js.map +1 -0
- package/dist/controls-options-manager/index.js +297 -0
- package/dist/controls-options-manager/index.js.map +1 -0
- package/dist/controls-options-manager/types.js +7 -0
- package/dist/controls-options-manager/types.js.map +1 -0
- package/dist/controls-options-manager/util.js +294 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +72 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +100 -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 +392 -212
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +0 -38
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +54 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +88 -123
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +99 -91
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +55 -165
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +71 -117
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +2 -9
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +505 -495
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +77 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2597 -2464
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +291 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -0
- package/dist/meeting/muteState.js +292 -138
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +315 -336
- 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 +463 -583
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +3 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +10 -33
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +305 -286
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -16
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +98 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +156 -232
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +24 -20
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +692 -593
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +23 -42
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +186 -155
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +89 -88
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +15 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +101 -69
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +12 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +166 -205
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +120 -85
- 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 +314 -260
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +50 -16
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +4 -7
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +93 -162
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +167 -50
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +58 -65
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +74 -93
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +55 -74
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +6 -40
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +466 -442
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +32 -59
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +10 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -33
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +0 -13
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +190 -199
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +14 -23
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/constants.js +13 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.js +2 -4
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js +19 -23
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +326 -465
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +17 -0
- package/dist/recording-controller/enums.js.map +1 -0
- package/dist/recording-controller/index.js +343 -0
- package/dist/recording-controller/index.js.map +1 -0
- package/dist/recording-controller/util.js +63 -0
- package/dist/recording-controller/util.js.map +1 -0
- package/dist/roap/index.js +31 -75
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +129 -136
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +143 -103
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +1 -95
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +369 -461
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +144 -94
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +13 -45
- package/dist/transcription/index.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +35 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +124 -0
- package/dist/types/breakouts/breakout.d.ts +8 -0
- package/dist/types/breakouts/collection.d.ts +5 -0
- package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/types/breakouts/events.d.ts +2 -0
- package/dist/types/breakouts/index.d.ts +5 -0
- package/dist/types/breakouts/request.d.ts +22 -0
- package/dist/types/breakouts/utils.d.ts +15 -0
- package/dist/types/common/browser-detection.d.ts +9 -0
- package/dist/types/common/collection.d.ts +48 -0
- package/dist/types/common/config.d.ts +2 -0
- package/dist/types/common/errors/captcha-error.d.ts +15 -0
- package/dist/types/common/errors/intent-to-join.d.ts +16 -0
- package/dist/types/common/errors/join-meeting.d.ts +17 -0
- package/dist/types/common/errors/media.d.ts +15 -0
- package/dist/types/common/errors/parameter.d.ts +15 -0
- package/dist/types/common/errors/password-error.d.ts +15 -0
- package/dist/types/common/errors/permission.d.ts +14 -0
- package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/types/common/errors/reconnection.d.ts +15 -0
- package/dist/types/common/errors/stats.d.ts +15 -0
- package/dist/types/common/errors/webex-errors.d.ts +69 -0
- package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
- package/dist/types/common/events/events-scope.d.ts +17 -0
- package/dist/types/common/events/events.d.ts +12 -0
- package/dist/types/common/events/trigger-proxy.d.ts +2 -0
- package/dist/types/common/events/util.d.ts +2 -0
- package/dist/types/common/logs/logger-config.d.ts +2 -0
- package/dist/types/common/logs/logger-proxy.d.ts +2 -0
- package/dist/types/common/logs/request.d.ts +34 -0
- package/dist/types/common/queue.d.ts +32 -0
- package/dist/types/config.d.ts +78 -0
- package/dist/types/constants.d.ts +991 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +15 -0
- package/dist/types/controls-options-manager/index.d.ts +136 -0
- package/dist/types/controls-options-manager/types.d.ts +43 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/locus-info/controlsUtils.d.ts +2 -0
- package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
- package/dist/types/locus-info/fullState.d.ts +2 -0
- package/dist/types/locus-info/hostUtils.d.ts +2 -0
- package/dist/types/locus-info/index.d.ts +315 -0
- package/dist/types/locus-info/infoUtils.d.ts +2 -0
- package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
- package/dist/types/locus-info/parser.d.ts +212 -0
- package/dist/types/locus-info/selfUtils.d.ts +2 -0
- package/dist/types/media/index.d.ts +34 -0
- package/dist/types/media/properties.d.ts +108 -0
- package/dist/types/media/util.d.ts +2 -0
- package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +147 -0
- package/dist/types/meeting/index.d.ts +1762 -0
- package/dist/types/meeting/locusMediaRequest.d.ts +70 -0
- package/dist/types/meeting/muteState.d.ts +186 -0
- package/dist/types/meeting/request.d.ts +269 -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 +76 -0
- package/dist/types/meeting-info/collection.d.ts +20 -0
- package/dist/types/meeting-info/index.d.ts +57 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +122 -0
- package/dist/types/meeting-info/request.d.ts +22 -0
- package/dist/types/meeting-info/util.d.ts +2 -0
- package/dist/types/meeting-info/utilv2.d.ts +2 -0
- package/dist/types/meetings/collection.d.ts +31 -0
- package/dist/types/meetings/index.d.ts +345 -0
- package/dist/types/meetings/request.d.ts +27 -0
- package/dist/types/meetings/util.d.ts +18 -0
- package/dist/types/member/index.d.ts +157 -0
- package/dist/types/member/types.d.ts +21 -0
- package/dist/types/member/util.d.ts +2 -0
- package/dist/types/members/collection.d.ts +29 -0
- package/dist/types/members/index.d.ts +353 -0
- package/dist/types/members/request.d.ts +114 -0
- package/dist/types/members/types.d.ts +24 -0
- package/dist/types/members/util.d.ts +210 -0
- package/dist/types/metrics/config.d.ts +195 -0
- package/dist/types/metrics/constants.d.ts +55 -0
- package/dist/types/metrics/index.d.ts +169 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
- package/dist/types/multistream/receiveSlot.d.ts +68 -0
- package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
- package/dist/types/multistream/remoteMedia.d.ts +72 -0
- package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
- package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
- package/dist/types/networkQualityMonitor/index.d.ts +70 -0
- package/dist/types/personal-meeting-room/index.d.ts +47 -0
- package/dist/types/personal-meeting-room/request.d.ts +14 -0
- package/dist/types/personal-meeting-room/util.d.ts +2 -0
- package/dist/types/reachability/index.d.ts +152 -0
- package/dist/types/reachability/request.d.ts +37 -0
- package/dist/types/reactions/constants.d.ts +3 -0
- package/dist/types/reactions/reactions.d.ts +4 -0
- package/dist/types/reactions/reactions.type.d.ts +52 -0
- package/dist/types/reconnection-manager/index.d.ts +126 -0
- package/dist/types/recording-controller/enums.d.ts +7 -0
- package/dist/types/recording-controller/index.d.ts +193 -0
- package/dist/types/recording-controller/util.d.ts +13 -0
- package/dist/types/roap/index.d.ts +77 -0
- package/dist/types/roap/request.d.ts +36 -0
- package/dist/types/roap/turnDiscovery.d.ts +91 -0
- package/dist/types/statsAnalyzer/global.d.ts +36 -0
- package/dist/types/statsAnalyzer/index.d.ts +200 -0
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
- package/dist/types/transcription/index.d.ts +64 -0
- package/internal-README.md +7 -6
- package/package.json +28 -21
- package/src/annotation/annotation.types.ts +42 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +339 -0
- package/src/breakouts/README.md +220 -0
- package/src/breakouts/breakout.ts +163 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +37 -0
- package/src/breakouts/index.ts +860 -0
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +57 -0
- package/src/common/browser-detection.ts +9 -6
- package/src/common/collection.ts +3 -1
- package/src/common/errors/captcha-error.ts +6 -6
- package/src/common/errors/intent-to-join.ts +6 -6
- package/src/common/errors/join-meeting.ts +12 -8
- package/src/common/errors/media.ts +6 -6
- package/src/common/errors/parameter.ts +9 -6
- package/src/common/errors/password-error.ts +6 -6
- package/src/common/errors/permission.ts +5 -5
- package/src/common/errors/reconnection.ts +6 -6
- package/src/common/errors/stats.ts +6 -6
- package/src/common/errors/webex-errors.ts +7 -5
- package/src/common/errors/webex-meetings-error.ts +1 -1
- package/src/common/events/events-scope.ts +5 -1
- package/src/common/events/events.ts +5 -1
- package/src/common/events/trigger-proxy.ts +8 -3
- package/src/common/events/util.ts +1 -2
- package/src/common/logs/logger-proxy.ts +21 -10
- package/src/common/logs/request.ts +11 -8
- package/src/config.ts +16 -12
- package/src/constants.ts +151 -7
- 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 +281 -0
- package/src/index.ts +33 -0
- package/src/locus-info/controlsUtils.ts +142 -24
- package/src/locus-info/fullState.ts +15 -11
- package/src/locus-info/hostUtils.ts +4 -3
- package/src/locus-info/index.ts +335 -55
- package/src/locus-info/infoUtils.ts +12 -4
- package/src/locus-info/mediaSharesUtils.ts +52 -4
- package/src/locus-info/parser.ts +46 -68
- package/src/locus-info/selfUtils.ts +187 -56
- package/src/media/index.ts +139 -196
- package/src/media/properties.ts +43 -36
- package/src/media/util.ts +1 -1
- package/src/mediaQualityMetrics/config.ts +380 -378
- package/src/meeting/in-meeting-actions.ts +159 -3
- package/src/meeting/index.ts +2789 -1584
- package/src/meeting/locusMediaRequest.ts +309 -0
- package/src/meeting/muteState.ts +290 -72
- package/src/meeting/request.ts +247 -178
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/state.ts +45 -30
- package/src/meeting/util.ts +445 -395
- package/src/meeting-info/collection.ts +2 -1
- package/src/meeting-info/index.ts +32 -30
- package/src/meeting-info/meeting-info-v2.ts +235 -116
- package/src/meeting-info/request.ts +9 -3
- package/src/meeting-info/util.ts +54 -46
- package/src/meeting-info/utilv2.ts +71 -55
- package/src/meetings/collection.ts +21 -1
- package/src/meetings/index.ts +772 -437
- package/src/meetings/request.ts +29 -25
- package/src/meetings/util.ts +132 -33
- package/src/member/index.ts +95 -49
- package/src/member/types.ts +24 -0
- package/src/member/util.ts +106 -13
- package/src/members/collection.ts +8 -1
- package/src/members/index.ts +288 -130
- package/src/members/request.ts +144 -31
- package/src/members/types.ts +28 -0
- package/src/members/util.ts +316 -235
- package/src/metrics/config.ts +302 -90
- package/src/metrics/constants.ts +2 -6
- package/src/metrics/index.ts +124 -95
- package/src/multistream/mediaRequestManager.ts +203 -45
- package/src/multistream/receiveSlot.ts +69 -26
- package/src/multistream/receiveSlotManager.ts +62 -38
- package/src/multistream/remoteMedia.ts +30 -4
- package/src/multistream/remoteMediaGroup.ts +4 -3
- package/src/multistream/remoteMediaManager.ts +230 -66
- package/src/networkQualityMonitor/index.ts +24 -27
- package/src/personal-meeting-room/index.ts +12 -16
- package/src/personal-meeting-room/request.ts +10 -3
- package/src/personal-meeting-room/util.ts +3 -3
- package/src/reachability/index.ts +131 -79
- package/src/reachability/request.ts +43 -34
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +8 -8
- package/src/reactions/reactions.type.ts +31 -5
- package/src/reconnection-manager/index.ts +193 -111
- package/src/recording-controller/enums.ts +8 -0
- package/src/recording-controller/index.ts +315 -0
- package/src/recording-controller/util.ts +58 -0
- package/src/roap/index.ts +53 -53
- package/src/roap/request.ts +77 -64
- package/src/roap/turnDiscovery.ts +101 -48
- package/src/statsAnalyzer/global.ts +8 -104
- package/src/statsAnalyzer/index.ts +624 -376
- package/src/statsAnalyzer/mqaUtil.ts +203 -90
- package/src/transcription/index.ts +34 -32
- package/test/integration/spec/converged-space-meetings.js +177 -0
- package/test/integration/spec/journey.js +670 -466
- package/test/integration/spec/space-meeting.js +320 -204
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/annotation/index.ts +433 -0
- package/test/unit/spec/breakouts/breakout.ts +203 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/events.ts +77 -0
- package/test/unit/spec/breakouts/index.ts +1609 -0
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +72 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/controls-options-manager/index.js +287 -0
- package/test/unit/spec/controls-options-manager/util.js +504 -0
- package/test/unit/spec/fixture/locus.js +93 -90
- package/test/unit/spec/locus-info/controlsUtils.js +305 -32
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +598 -5
- package/test/unit/spec/locus-info/infoUtils.js +26 -33
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +110 -103
- package/test/unit/spec/locus-info/selfUtils.js +236 -12
- package/test/unit/spec/media/index.ts +104 -8
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/in-meeting-actions.ts +76 -3
- package/test/unit/spec/meeting/index.js +3094 -921
- package/test/unit/spec/meeting/locusMediaRequest.ts +436 -0
- package/test/unit/spec/meeting/muteState.js +421 -94
- package/test/unit/spec/meeting/request.js +421 -79
- package/test/unit/spec/meeting/utils.js +326 -189
- package/test/unit/spec/meeting-info/meetinginfov2.js +481 -76
- package/test/unit/spec/meeting-info/request.js +7 -9
- package/test/unit/spec/meeting-info/util.js +11 -12
- package/test/unit/spec/meeting-info/utilv2.js +131 -74
- package/test/unit/spec/meetings/collection.js +15 -1
- package/test/unit/spec/meetings/index.js +1126 -328
- package/test/unit/spec/meetings/utils.js +220 -14
- package/test/unit/spec/member/index.js +24 -1
- package/test/unit/spec/member/util.js +383 -32
- package/test/unit/spec/members/index.js +424 -55
- package/test/unit/spec/members/request.js +228 -40
- package/test/unit/spec/members/utils.js +191 -4
- package/test/unit/spec/metrics/index.js +113 -20
- package/test/unit/spec/multistream/mediaRequestManager.ts +650 -105
- package/test/unit/spec/multistream/receiveSlot.ts +76 -17
- package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
- package/test/unit/spec/multistream/remoteMedia.ts +32 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
- package/test/unit/spec/networkQualityMonitor/index.js +24 -18
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +176 -27
- package/test/unit/spec/reachability/request.js +66 -0
- package/test/unit/spec/reconnection-manager/index.js +62 -31
- package/test/unit/spec/recording-controller/index.js +231 -0
- package/test/unit/spec/recording-controller/util.js +102 -0
- package/test/unit/spec/roap/index.ts +19 -49
- package/test/unit/spec/roap/request.ts +187 -0
- package/test/unit/spec/roap/turnDiscovery.ts +92 -50
- package/test/unit/spec/stats-analyzer/index.js +116 -60
- package/test/utils/cmr.js +44 -42
- package/test/utils/constants.js +9 -0
- package/test/utils/integrationTestUtils.js +64 -0
- package/test/utils/testUtils.js +63 -99
- package/test/utils/webex-config.js +22 -18
- package/test/utils/webex-test-users.js +57 -50
- package/tsconfig.json +6 -0
- package/dist/media/internal-media-core-wrapper.js +0 -22
- package/dist/media/internal-media-core-wrapper.js.map +0 -1
- package/dist/meeting/effectsState.js +0 -334
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/multistream/multistreamMedia.js +0 -116
- package/dist/multistream/multistreamMedia.js.map +0 -1
- package/src/index.js +0 -15
- package/src/media/internal-media-core-wrapper.ts +0 -9
- package/src/meeting/effectsState.ts +0 -211
- package/src/multistream/multistreamMedia.ts +0 -92
- package/test/unit/spec/meeting/effectsState.js +0 -291
|
@@ -7,22 +7,20 @@
|
|
|
7
7
|
import _ from 'lodash';
|
|
8
8
|
|
|
9
9
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
10
|
-
import {
|
|
11
|
-
ICE_GATHERING_STATE,
|
|
12
|
-
CONNECTION_STATE,
|
|
13
|
-
REACHABILITY
|
|
14
|
-
} from '../constants';
|
|
10
|
+
import {ICE_GATHERING_STATE, CONNECTION_STATE, REACHABILITY} from '../constants';
|
|
15
11
|
|
|
16
12
|
import ReachabilityRequest from './request';
|
|
17
13
|
|
|
18
14
|
const DEFAULT_TIMEOUT = 3000;
|
|
19
15
|
const VIDEO_MESH_TIMEOUT = 1000;
|
|
20
16
|
|
|
17
|
+
export type ICECandidateResult = {clusterId: string; elapsed?: string | null; publicIPs?: string[]};
|
|
21
18
|
/**
|
|
22
19
|
* @class Reachability
|
|
23
20
|
* @export
|
|
24
21
|
*/
|
|
25
22
|
export default class Reachability {
|
|
23
|
+
namespace = REACHABILITY.namespace;
|
|
26
24
|
webex: object;
|
|
27
25
|
reachabilityRequest: any;
|
|
28
26
|
clusterLatencyResults: any;
|
|
@@ -54,7 +52,6 @@ export default class Reachability {
|
|
|
54
52
|
this.clusterLatencyResults = {};
|
|
55
53
|
}
|
|
56
54
|
|
|
57
|
-
|
|
58
55
|
/**
|
|
59
56
|
* fetches reachability data
|
|
60
57
|
* @returns {Object} reachability data
|
|
@@ -66,30 +63,40 @@ export default class Reachability {
|
|
|
66
63
|
this.setup();
|
|
67
64
|
|
|
68
65
|
// Remove stored reachability results to ensure no stale data
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
LoggerProxy.logger.error('Reachability:index#gatherReachability --> Error in accessing LocalStorage.');
|
|
74
|
-
|
|
75
|
-
return {};
|
|
76
|
-
}
|
|
66
|
+
// @ts-ignore
|
|
67
|
+
await this.webex.boundedStorage.del(this.namespace, REACHABILITY.localStorageResult);
|
|
68
|
+
// @ts-ignore
|
|
69
|
+
await this.webex.boundedStorage.del(this.namespace, REACHABILITY.localStorageJoinCookie);
|
|
77
70
|
|
|
78
71
|
// Fetch clusters and measure latency
|
|
79
72
|
try {
|
|
80
|
-
const clusters = await this.reachabilityRequest.getClusters();
|
|
73
|
+
const {clusters, joinCookie} = await this.reachabilityRequest.getClusters();
|
|
81
74
|
|
|
82
75
|
// Perform Reachability Check
|
|
83
76
|
const results = await this.performReachabilityCheck(clusters);
|
|
84
77
|
|
|
85
|
-
|
|
78
|
+
// @ts-ignore
|
|
79
|
+
await this.webex.boundedStorage.put(
|
|
80
|
+
this.namespace,
|
|
81
|
+
REACHABILITY.localStorageResult,
|
|
82
|
+
JSON.stringify(results)
|
|
83
|
+
);
|
|
84
|
+
// @ts-ignore
|
|
85
|
+
await this.webex.boundedStorage.put(
|
|
86
|
+
this.namespace,
|
|
87
|
+
REACHABILITY.localStorageJoinCookie,
|
|
88
|
+
JSON.stringify(joinCookie)
|
|
89
|
+
);
|
|
86
90
|
|
|
87
|
-
LoggerProxy.logger.log(
|
|
91
|
+
LoggerProxy.logger.log(
|
|
92
|
+
'Reachability:index#gatherReachability --> Reachability checks completed'
|
|
93
|
+
);
|
|
88
94
|
|
|
89
95
|
return results;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
|
|
96
|
+
} catch (getClusterError) {
|
|
97
|
+
LoggerProxy.logger.error(
|
|
98
|
+
`Reachability:index#gatherReachability --> Error in calling getClusters(): ${getClusterError}`
|
|
99
|
+
);
|
|
93
100
|
|
|
94
101
|
return {};
|
|
95
102
|
}
|
|
@@ -101,25 +108,30 @@ export default class Reachability {
|
|
|
101
108
|
* @public
|
|
102
109
|
* @memberof Reachability
|
|
103
110
|
*/
|
|
104
|
-
isAnyClusterReachable() {
|
|
111
|
+
async isAnyClusterReachable() {
|
|
105
112
|
let reachable = false;
|
|
106
|
-
|
|
113
|
+
// @ts-ignore
|
|
114
|
+
const reachabilityData = await this.webex.boundedStorage
|
|
115
|
+
.get(this.namespace, REACHABILITY.localStorageResult)
|
|
116
|
+
.catch(() => {});
|
|
107
117
|
|
|
108
118
|
if (reachabilityData) {
|
|
109
119
|
try {
|
|
110
120
|
const reachabilityResults = JSON.parse(reachabilityData);
|
|
111
121
|
|
|
112
|
-
reachable = Object.values(reachabilityResults).some(
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
122
|
+
reachable = Object.values(reachabilityResults).some(
|
|
123
|
+
(result: any) => result.udp?.reachable === 'true' || result.tcp?.reachable === 'true'
|
|
124
|
+
);
|
|
125
|
+
} catch (e) {
|
|
126
|
+
LoggerProxy.logger.error(
|
|
127
|
+
`Roap:request#attachReachabilityData --> Error in parsing reachability data: ${e}`
|
|
128
|
+
);
|
|
116
129
|
}
|
|
117
130
|
}
|
|
118
131
|
|
|
119
132
|
return reachable;
|
|
120
133
|
}
|
|
121
134
|
|
|
122
|
-
|
|
123
135
|
/**
|
|
124
136
|
* Generate peerConnection config settings
|
|
125
137
|
* @param {object} cluster
|
|
@@ -128,25 +140,19 @@ export default class Reachability {
|
|
|
128
140
|
* @memberof Reachability
|
|
129
141
|
*/
|
|
130
142
|
private buildPeerConnectionConfig(cluster: any) {
|
|
131
|
-
const iceServers = _.uniq([
|
|
132
|
-
...cluster.udp,
|
|
133
|
-
...cluster.tcp
|
|
134
|
-
]).map((url) => ({
|
|
143
|
+
const iceServers = _.uniq([...cluster.udp, ...cluster.tcp]).map((url) => ({
|
|
135
144
|
username: '',
|
|
136
145
|
credential: '',
|
|
137
|
-
urls: [url]
|
|
146
|
+
urls: [url],
|
|
138
147
|
}));
|
|
139
148
|
|
|
140
149
|
return {
|
|
141
|
-
iceServers: [
|
|
142
|
-
...iceServers
|
|
143
|
-
],
|
|
150
|
+
iceServers: [...iceServers],
|
|
144
151
|
iceCandidatePoolSize: '0',
|
|
145
|
-
iceTransportPolicy: 'all'
|
|
152
|
+
iceTransportPolicy: 'all',
|
|
146
153
|
};
|
|
147
154
|
}
|
|
148
155
|
|
|
149
|
-
|
|
150
156
|
/**
|
|
151
157
|
* Creates an RTCPeerConnection
|
|
152
158
|
* @param {object} cluster
|
|
@@ -164,15 +170,15 @@ export default class Reachability {
|
|
|
164
170
|
peerConnection.key = key;
|
|
165
171
|
|
|
166
172
|
return peerConnection;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
|
|
173
|
+
} catch (peerConnectionError) {
|
|
174
|
+
LoggerProxy.logger.log(
|
|
175
|
+
`Reachability:index#createPeerConnection --> Error creating peerConnection: ${peerConnectionError}`
|
|
176
|
+
);
|
|
170
177
|
|
|
171
178
|
return null;
|
|
172
179
|
}
|
|
173
180
|
}
|
|
174
181
|
|
|
175
|
-
|
|
176
182
|
/**
|
|
177
183
|
* Gets total elapsed time
|
|
178
184
|
* @param {RTCPeerConnection} peerConnection
|
|
@@ -188,7 +194,6 @@ export default class Reachability {
|
|
|
188
194
|
return Date.now() - startTime;
|
|
189
195
|
}
|
|
190
196
|
|
|
191
|
-
|
|
192
197
|
/**
|
|
193
198
|
* creates offer and generates localSDP
|
|
194
199
|
* @param {object} clusterList cluster List
|
|
@@ -209,10 +214,14 @@ export default class Reachability {
|
|
|
209
214
|
peerConnection.begin = Date.now();
|
|
210
215
|
peerConnection.setLocalDescription(description);
|
|
211
216
|
|
|
212
|
-
return this.iceGatheringState(
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
217
|
+
return this.iceGatheringState(
|
|
218
|
+
peerConnection,
|
|
219
|
+
cluster.isVideoMesh ? VIDEO_MESH_TIMEOUT : DEFAULT_TIMEOUT
|
|
220
|
+
).catch((iceGatheringStateError) => {
|
|
221
|
+
LoggerProxy.logger.log(
|
|
222
|
+
`Reachability:index#getLocalSDPForClusters --> Error in getLocalSDP : ${iceGatheringStateError}`
|
|
223
|
+
);
|
|
224
|
+
});
|
|
216
225
|
});
|
|
217
226
|
|
|
218
227
|
return Promise.all(clusters)
|
|
@@ -225,7 +234,6 @@ export default class Reachability {
|
|
|
225
234
|
});
|
|
226
235
|
}
|
|
227
236
|
|
|
228
|
-
|
|
229
237
|
/**
|
|
230
238
|
* Get list of all unreachable clusters
|
|
231
239
|
* @returns {array} Unreachable clusters
|
|
@@ -247,7 +255,6 @@ export default class Reachability {
|
|
|
247
255
|
return unreachableList;
|
|
248
256
|
}
|
|
249
257
|
|
|
250
|
-
|
|
251
258
|
/**
|
|
252
259
|
* Attach an event handler for the icegatheringstatechange
|
|
253
260
|
* event and measure latency.
|
|
@@ -264,13 +271,16 @@ export default class Reachability {
|
|
|
264
271
|
const elapsed = this.getElapsedTime(peerConnection);
|
|
265
272
|
|
|
266
273
|
// @ts-ignore
|
|
267
|
-
LoggerProxy.logger.log(
|
|
274
|
+
LoggerProxy.logger.log(
|
|
275
|
+
// @ts-ignore
|
|
276
|
+
`Reachability:index#onIceGatheringStateChange --> Successfully pinged ${peerConnection.key}:`,
|
|
277
|
+
elapsed
|
|
278
|
+
);
|
|
268
279
|
this.setLatencyAndClose(peerConnection, elapsed);
|
|
269
280
|
}
|
|
270
281
|
};
|
|
271
282
|
}
|
|
272
283
|
|
|
273
|
-
|
|
274
284
|
/**
|
|
275
285
|
* Attach an event handler for the icecandidate
|
|
276
286
|
* event and measure latency.
|
|
@@ -286,8 +296,13 @@ export default class Reachability {
|
|
|
286
296
|
if (e.candidate && String(e.candidate.type).toLowerCase() === SERVER_REFLEXIVE) {
|
|
287
297
|
const elapsed = this.getElapsedTime(peerConnection);
|
|
288
298
|
|
|
289
|
-
|
|
290
|
-
|
|
299
|
+
LoggerProxy.logger.log(
|
|
300
|
+
// @ts-ignore
|
|
301
|
+
`Reachability:index#onIceCandidate --> Successfully pinged ${peerConnection.key}:`,
|
|
302
|
+
elapsed
|
|
303
|
+
);
|
|
304
|
+
// order is important
|
|
305
|
+
this.addPublicIP(peerConnection, e.candidate.address);
|
|
291
306
|
this.setLatencyAndClose(peerConnection, elapsed);
|
|
292
307
|
}
|
|
293
308
|
};
|
|
@@ -305,12 +320,13 @@ export default class Reachability {
|
|
|
305
320
|
private iceGatheringState(peerConnection: RTCPeerConnection, timeout: number) {
|
|
306
321
|
const ELAPSED = 'elapsed';
|
|
307
322
|
|
|
308
|
-
return new Promise((resolve) => {
|
|
323
|
+
return new Promise<ICECandidateResult>((resolve) => {
|
|
309
324
|
const peerConnectionProxy = new window.Proxy(peerConnection, {
|
|
325
|
+
// eslint-disable-next-line require-jsdoc
|
|
310
326
|
get(target, property) {
|
|
311
327
|
const targetMember = target[property];
|
|
312
328
|
|
|
313
|
-
if (typeof
|
|
329
|
+
if (typeof targetMember === 'function') {
|
|
314
330
|
return targetMember.bind(target);
|
|
315
331
|
}
|
|
316
332
|
|
|
@@ -320,14 +336,14 @@ export default class Reachability {
|
|
|
320
336
|
// only intercept elapsed property
|
|
321
337
|
if (property === ELAPSED) {
|
|
322
338
|
// @ts-ignore
|
|
323
|
-
resolve({clusterId: peerConnection.key, elapsed: value});
|
|
339
|
+
resolve({clusterId: peerConnection.key, publicIPs: target.publicIPs, elapsed: value});
|
|
324
340
|
|
|
325
341
|
return true;
|
|
326
342
|
}
|
|
327
343
|
|
|
328
344
|
// pass thru
|
|
329
345
|
return window.Reflect.set(target, property, value);
|
|
330
|
-
}
|
|
346
|
+
},
|
|
331
347
|
});
|
|
332
348
|
|
|
333
349
|
// Using peerConnection proxy so handle functions below
|
|
@@ -341,13 +357,14 @@ export default class Reachability {
|
|
|
341
357
|
|
|
342
358
|
// Close any open peerConnections
|
|
343
359
|
if (peerConnectionProxy.connectionState !== CLOSED) {
|
|
360
|
+
// order is important
|
|
361
|
+
this.addPublicIP(peerConnectionProxy, null);
|
|
344
362
|
this.setLatencyAndClose(peerConnectionProxy, null);
|
|
345
363
|
}
|
|
346
364
|
}, timeout);
|
|
347
365
|
});
|
|
348
366
|
}
|
|
349
367
|
|
|
350
|
-
|
|
351
368
|
/**
|
|
352
369
|
* Make a log of unreachable clusters.
|
|
353
370
|
* @returns {undefined}
|
|
@@ -358,44 +375,49 @@ export default class Reachability {
|
|
|
358
375
|
const list = this.getUnreachablClusters();
|
|
359
376
|
|
|
360
377
|
list.forEach((cluster) => {
|
|
361
|
-
LoggerProxy.logger.log(
|
|
378
|
+
LoggerProxy.logger.log(
|
|
379
|
+
`Reachability:index#logUnreachableClusters --> No ice candidate for ${cluster}.`
|
|
380
|
+
);
|
|
362
381
|
});
|
|
363
382
|
}
|
|
364
383
|
|
|
365
|
-
|
|
366
384
|
/**
|
|
367
385
|
* Calculates time to establish connection
|
|
368
|
-
* @param {
|
|
386
|
+
* @param {Array<ICECandidateResult>} iceResults iceResults
|
|
369
387
|
* @returns {object} reachabilityMap
|
|
370
|
-
* @
|
|
388
|
+
* @protected
|
|
371
389
|
* @memberof Reachability
|
|
372
390
|
*/
|
|
373
|
-
|
|
391
|
+
protected parseIceResultsToReachabilityResults(iceResults: Array<ICECandidateResult>) {
|
|
374
392
|
const reachabilityMap = {};
|
|
375
393
|
|
|
376
|
-
iceResults.forEach(({clusterId, elapsed}) => {
|
|
377
|
-
|
|
394
|
+
iceResults.forEach(({clusterId, elapsed, publicIPs}) => {
|
|
395
|
+
const latencyResult = {};
|
|
378
396
|
|
|
379
|
-
if (elapsed
|
|
380
|
-
latencyResult
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
latencyResult = {
|
|
397
|
+
if (!elapsed) {
|
|
398
|
+
Object.assign(latencyResult, {reachable: 'false'});
|
|
399
|
+
} else {
|
|
400
|
+
Object.assign(latencyResult, {
|
|
384
401
|
reachable: 'true',
|
|
385
|
-
latencyInMilliseconds:
|
|
386
|
-
};
|
|
402
|
+
latencyInMilliseconds: elapsed.toString(),
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
if (publicIPs) {
|
|
407
|
+
Object.assign(latencyResult, {
|
|
408
|
+
clientMediaIPs: publicIPs,
|
|
409
|
+
});
|
|
387
410
|
}
|
|
388
411
|
|
|
389
412
|
reachabilityMap[clusterId] = {
|
|
390
413
|
udp: latencyResult,
|
|
391
|
-
tcp: latencyResult
|
|
414
|
+
tcp: latencyResult,
|
|
392
415
|
};
|
|
393
416
|
});
|
|
394
417
|
|
|
395
418
|
return reachabilityMap;
|
|
396
419
|
}
|
|
397
420
|
|
|
398
|
-
|
|
399
421
|
/**
|
|
400
422
|
* fetches reachability data
|
|
401
423
|
* @param {object} clusterList
|
|
@@ -413,20 +435,49 @@ export default class Reachability {
|
|
|
413
435
|
.then((localSDPData) => {
|
|
414
436
|
if (!localSDPData || !Object.keys(localSDPData).length) {
|
|
415
437
|
// TODO: handle the error condition properly and try retry
|
|
416
|
-
LoggerProxy.logger.log(
|
|
438
|
+
LoggerProxy.logger.log(
|
|
439
|
+
'Reachability:index#performReachabilityCheck --> Local SDP is empty or has missing elements..returning'
|
|
440
|
+
);
|
|
417
441
|
resolve({});
|
|
418
|
-
}
|
|
419
|
-
else {
|
|
442
|
+
} else {
|
|
420
443
|
resolve(localSDPData);
|
|
421
444
|
}
|
|
422
445
|
})
|
|
423
446
|
.catch((error) => {
|
|
424
|
-
LoggerProxy.logger.error(
|
|
447
|
+
LoggerProxy.logger.error(
|
|
448
|
+
`Reachability:index#performReachabilityCheck --> Error in getLocalSDPForClusters: ${error}`
|
|
449
|
+
);
|
|
425
450
|
resolve({});
|
|
426
451
|
});
|
|
427
452
|
});
|
|
428
453
|
}
|
|
429
454
|
|
|
455
|
+
/**
|
|
456
|
+
* Adds public IP (client media IPs)
|
|
457
|
+
* @param {RTCPeerConnection} peerConnection
|
|
458
|
+
* @param {string} publicIP
|
|
459
|
+
* @returns {void}
|
|
460
|
+
*/
|
|
461
|
+
protected addPublicIP(peerConnection: RTCPeerConnection, publicIP?: string | null) {
|
|
462
|
+
const modifiedPeerConnection: RTCPeerConnection & {publicIPs?: string[]} = peerConnection;
|
|
463
|
+
const {CLOSED} = CONNECTION_STATE;
|
|
464
|
+
|
|
465
|
+
if (modifiedPeerConnection.connectionState === CLOSED) {
|
|
466
|
+
LoggerProxy.logger.log(
|
|
467
|
+
`Reachability:index#addPublicIP --> Attempting to set publicIP of ${publicIP} on closed peerConnection.`
|
|
468
|
+
);
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
if (publicIP) {
|
|
472
|
+
if (modifiedPeerConnection.publicIPs) {
|
|
473
|
+
modifiedPeerConnection.publicIPs.push(publicIP);
|
|
474
|
+
} else {
|
|
475
|
+
modifiedPeerConnection.publicIPs = [publicIP];
|
|
476
|
+
}
|
|
477
|
+
} else {
|
|
478
|
+
modifiedPeerConnection.publicIPs = null;
|
|
479
|
+
}
|
|
480
|
+
}
|
|
430
481
|
|
|
431
482
|
/**
|
|
432
483
|
* Records latency and closes the peerConnection
|
|
@@ -446,7 +497,9 @@ export default class Reachability {
|
|
|
446
497
|
const intialState = {[REACHABLE]: 0, [UNREACHABLE]: 0};
|
|
447
498
|
|
|
448
499
|
if (peerConnection.connectionState === CLOSED) {
|
|
449
|
-
LoggerProxy.logger.log(
|
|
500
|
+
LoggerProxy.logger.log(
|
|
501
|
+
`Reachability:index#setLatencyAndClose --> Attempting to set latency of ${elapsed} on closed peerConnection.`
|
|
502
|
+
);
|
|
450
503
|
|
|
451
504
|
return;
|
|
452
505
|
}
|
|
@@ -462,7 +515,6 @@ export default class Reachability {
|
|
|
462
515
|
peerConnection.elapsed = elapsed;
|
|
463
516
|
}
|
|
464
517
|
|
|
465
|
-
|
|
466
518
|
/**
|
|
467
519
|
* utility function
|
|
468
520
|
* @returns {undefined}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
2
|
-
import {
|
|
3
|
-
HTTP_VERBS,
|
|
4
|
-
RESOURCE,
|
|
5
|
-
API
|
|
6
|
-
} from '../constants';
|
|
2
|
+
import {HTTP_VERBS, RESOURCE, API} from '../constants';
|
|
7
3
|
|
|
8
4
|
export interface ClusterNode {
|
|
9
5
|
isVideoMesh: boolean;
|
|
@@ -13,8 +9,8 @@ export interface ClusterNode {
|
|
|
13
9
|
}
|
|
14
10
|
|
|
15
11
|
export type ClusterList = {
|
|
16
|
-
[key:string]: ClusterNode;
|
|
17
|
-
}
|
|
12
|
+
[key: string]: ClusterNode;
|
|
13
|
+
};
|
|
18
14
|
|
|
19
15
|
/**
|
|
20
16
|
* @class ReachabilityRequest
|
|
@@ -32,46 +28,59 @@ class ReachabilityRequest {
|
|
|
32
28
|
}
|
|
33
29
|
|
|
34
30
|
/**
|
|
35
|
-
*
|
|
31
|
+
* Gets the cluster information
|
|
36
32
|
*
|
|
37
|
-
* @param {boolean} includeVideoMesh whether to include the video mesh clusters in the result or not
|
|
38
33
|
* @returns {Promise}
|
|
39
34
|
*/
|
|
40
|
-
getClusters = (): Promise<ClusterList> =>
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
35
|
+
getClusters = (): Promise<{clusters: ClusterList; joinCookie: any}> =>
|
|
36
|
+
this.webex
|
|
37
|
+
.request({
|
|
38
|
+
method: HTTP_VERBS.GET,
|
|
39
|
+
shouldRefreshAccessToken: false,
|
|
40
|
+
api: API.CALLIOPEDISCOVERY,
|
|
41
|
+
resource: RESOURCE.CLUSTERS,
|
|
42
|
+
qs: {
|
|
43
|
+
JCSupport: 1,
|
|
44
|
+
},
|
|
45
|
+
})
|
|
46
|
+
.then((res) => {
|
|
47
|
+
const {clusters, joinCookie} = res.body;
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
Object.keys(clusters).forEach((key) => {
|
|
50
|
+
clusters[key].isVideoMesh = res.body.clusterClasses?.hybridMedia?.includes(key);
|
|
51
|
+
});
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
LoggerProxy.logger.log(
|
|
54
|
+
`Reachability:request#getClusters --> get clusters successful:${JSON.stringify(clusters)}`
|
|
55
|
+
);
|
|
54
56
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
+
return {
|
|
58
|
+
clusters,
|
|
59
|
+
joinCookie,
|
|
60
|
+
};
|
|
61
|
+
});
|
|
57
62
|
|
|
58
63
|
/**
|
|
59
64
|
* gets remote SDP For Clusters
|
|
60
65
|
* @param {Object} localSDPList localSDPs for the cluster
|
|
61
66
|
* @returns {Object}
|
|
62
67
|
*/
|
|
63
|
-
remoteSDPForClusters = (localSDPList: object) =>
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
68
|
+
remoteSDPForClusters = (localSDPList: object) =>
|
|
69
|
+
this.webex
|
|
70
|
+
.request({
|
|
71
|
+
method: HTTP_VERBS.POST,
|
|
72
|
+
shouldRefreshAccessToken: false,
|
|
73
|
+
api: API.CALLIOPEDISCOVERY,
|
|
74
|
+
resource: RESOURCE.REACHABILITY,
|
|
75
|
+
body: {offers: localSDPList},
|
|
76
|
+
})
|
|
77
|
+
.then((res) => {
|
|
78
|
+
LoggerProxy.logger.log(
|
|
79
|
+
'Reachability:request#remoteSDPForClusters --> Remote SDPs got succcessfully'
|
|
80
|
+
);
|
|
72
81
|
|
|
73
|
-
|
|
74
|
-
|
|
82
|
+
return res.body;
|
|
83
|
+
});
|
|
75
84
|
}
|
|
76
85
|
|
|
77
86
|
export default ReachabilityRequest;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {Reaction,
|
|
1
|
+
import {Reaction, ReactionServerType, SkinTone, SkinToneType} from './reactions.type';
|
|
2
2
|
|
|
3
|
-
const Reactions: Record<
|
|
3
|
+
const Reactions: Record<ReactionServerType, Reaction> = {
|
|
4
4
|
smile: {
|
|
5
5
|
type: 'smile',
|
|
6
6
|
codepoints: '1F642',
|
|
7
|
-
shortcodes: ':slightly_smiling_face:'
|
|
7
|
+
shortcodes: ':slightly_smiling_face:',
|
|
8
8
|
},
|
|
9
9
|
sad: {
|
|
10
10
|
type: 'sad',
|
|
@@ -19,7 +19,7 @@ const Reactions: Record<ReactionType, Reaction> = {
|
|
|
19
19
|
haha: {
|
|
20
20
|
type: 'haha',
|
|
21
21
|
codepoints: '1F603',
|
|
22
|
-
shortcodes: ':smiley:'
|
|
22
|
+
shortcodes: ':smiley:',
|
|
23
23
|
},
|
|
24
24
|
celebrate: {
|
|
25
25
|
type: 'celebrate',
|
|
@@ -31,12 +31,12 @@ const Reactions: Record<ReactionType, Reaction> = {
|
|
|
31
31
|
codepoints: '1F44F',
|
|
32
32
|
shortcodes: ':clap:',
|
|
33
33
|
},
|
|
34
|
-
|
|
34
|
+
thumb_up: {
|
|
35
35
|
type: 'thumb_up',
|
|
36
36
|
codepoints: '1F44D',
|
|
37
37
|
shortcodes: ':thumbsup:',
|
|
38
38
|
},
|
|
39
|
-
|
|
39
|
+
thumb_down: {
|
|
40
40
|
type: 'thumb_down',
|
|
41
41
|
codepoints: '1F44E',
|
|
42
42
|
shortcodes: ':thumbsdown:',
|
|
@@ -65,7 +65,7 @@ const Reactions: Record<ReactionType, Reaction> = {
|
|
|
65
65
|
type: 'slow_down',
|
|
66
66
|
codepoints: '1F422',
|
|
67
67
|
shortcodes: ':turtle:',
|
|
68
|
-
}
|
|
68
|
+
},
|
|
69
69
|
};
|
|
70
70
|
|
|
71
71
|
const SkinTones: Record<SkinToneType, SkinTone> = {
|
|
@@ -98,7 +98,7 @@ const SkinTones: Record<SkinToneType, SkinTone> = {
|
|
|
98
98
|
type: 'dark_skin_tone',
|
|
99
99
|
codepoints: '1F3FF',
|
|
100
100
|
shortcodes: ':skin-tone-6:',
|
|
101
|
-
}
|
|
101
|
+
},
|
|
102
102
|
};
|
|
103
103
|
|
|
104
104
|
export {Reactions, SkinTones};
|
|
@@ -1,24 +1,27 @@
|
|
|
1
|
+
import {REACTION_RELAY_TYPES} from './constants';
|
|
1
2
|
|
|
2
3
|
export type EmoticonData = {
|
|
3
4
|
type: string;
|
|
4
5
|
codepoints?: string;
|
|
5
6
|
shortcodes?: string;
|
|
6
|
-
}
|
|
7
|
+
};
|
|
7
8
|
|
|
8
9
|
export type SkinTone = EmoticonData;
|
|
10
|
+
|
|
9
11
|
export type Reaction = EmoticonData & {
|
|
10
12
|
tone?: SkinTone;
|
|
11
|
-
}
|
|
13
|
+
};
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
// eslint-disable-next-line no-shadow
|
|
16
|
+
export enum ReactionServerType {
|
|
14
17
|
smile = 'smile',
|
|
15
18
|
sad = 'sad',
|
|
16
19
|
wow = 'wow',
|
|
17
20
|
haha = 'haha',
|
|
18
21
|
celebrate = 'celebrate',
|
|
19
22
|
clap = 'clap',
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
thumb_up = 'thumb_up',
|
|
24
|
+
thumb_down = 'thumb_down',
|
|
22
25
|
heart = 'heart',
|
|
23
26
|
fire = 'fire',
|
|
24
27
|
prayer = 'prayer',
|
|
@@ -26,6 +29,7 @@ export enum ReactionType {
|
|
|
26
29
|
slow_down = 'slow_down',
|
|
27
30
|
}
|
|
28
31
|
|
|
32
|
+
// eslint-disable-next-line no-shadow
|
|
29
33
|
export enum SkinToneType {
|
|
30
34
|
normal = 'normal',
|
|
31
35
|
light = 'light',
|
|
@@ -34,3 +38,25 @@ export enum SkinToneType {
|
|
|
34
38
|
medium_dark = 'medium_dark',
|
|
35
39
|
dark = 'dark',
|
|
36
40
|
}
|
|
41
|
+
|
|
42
|
+
export type Sender = {
|
|
43
|
+
participantId: string;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export type ProcessedReaction = {
|
|
47
|
+
reaction: Reaction;
|
|
48
|
+
sender: {
|
|
49
|
+
id: Sender['participantId'];
|
|
50
|
+
name: string;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
type RelayEventData = {
|
|
55
|
+
relayType: (typeof REACTION_RELAY_TYPES)['REACTION'];
|
|
56
|
+
reaction: Reaction;
|
|
57
|
+
sender: Sender;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export type RelayEvent = {
|
|
61
|
+
data: RelayEventData;
|
|
62
|
+
};
|