@webex/plugin-meetings 3.0.0-stream-classes.4 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +6 -0
- package/README.md +12 -0
- package/babel.config.js +3 -0
- package/dist/annotation/constants.js +12 -20
- package/dist/annotation/constants.js.map +1 -1
- package/dist/annotation/index.js +25 -10
- package/dist/annotation/index.js.map +1 -1
- package/dist/breakouts/breakout.js +2 -3
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/collection.js +1 -2
- package/dist/breakouts/collection.js.map +1 -1
- package/dist/breakouts/edit-lock-error.js +1 -2
- package/dist/breakouts/edit-lock-error.js.map +1 -1
- package/dist/breakouts/events.js +1 -2
- package/dist/breakouts/events.js.map +1 -1
- package/dist/breakouts/index.js +13 -14
- package/dist/breakouts/index.js.map +1 -1
- package/dist/breakouts/request.js +1 -2
- package/dist/breakouts/request.js.map +1 -1
- package/dist/breakouts/utils.js +3 -6
- package/dist/breakouts/utils.js.map +1 -1
- package/dist/common/browser-detection.js +2 -3
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +3 -4
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +1 -2
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +1 -2
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +1 -2
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +1 -2
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +1 -2
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/no-meeting-info.d.ts +14 -0
- package/dist/common/errors/no-meeting-info.js +50 -0
- package/dist/common/errors/no-meeting-info.js.map +1 -0
- package/dist/common/errors/parameter.js +3 -4
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +1 -2
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +1 -2
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
- package/dist/common/errors/reclaim-host-role-errors.js +154 -0
- package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
- package/dist/common/errors/reconnection-in-progress.js +1 -2
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +1 -2
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +1 -2
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/{types/common → common}/errors/webex-errors.d.ts +13 -1
- package/dist/common/errors/webex-errors.js +35 -16
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +1 -2
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +1 -2
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +1 -2
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +1 -2
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +1 -2
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +1 -2
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -2
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/{types/common → common}/logs/request.d.ts +3 -1
- package/dist/common/logs/request.js +8 -5
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +2 -4
- package/dist/common/queue.js.map +1 -1
- package/dist/{types/config.d.ts → config.d.ts} +1 -1
- package/dist/config.js +3 -3
- package/dist/config.js.map +1 -1
- package/dist/{types/constants.d.ts → constants.d.ts} +72 -15
- package/dist/constants.js +254 -371
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +3 -6
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +7 -10
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +27 -32
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/util.js +1 -2
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/interceptors/index.d.ts +2 -0
- package/dist/interceptors/index.js +15 -0
- package/dist/interceptors/index.js.map +1 -0
- package/dist/interceptors/locusRetry.d.ts +27 -0
- package/dist/interceptors/locusRetry.js +94 -0
- package/dist/interceptors/locusRetry.js.map +1 -0
- package/dist/interpretation/collection.js +1 -2
- package/dist/interpretation/collection.js.map +1 -1
- package/dist/interpretation/index.js +2 -3
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/siLanguage.js +2 -3
- package/dist/interpretation/siLanguage.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +12 -13
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -4
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +1 -2
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +1 -2
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/{types/locus-info → locus-info}/index.d.ts +1 -1
- package/dist/locus-info/index.js +63 -38
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +3 -4
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +16 -3
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/{types/locus-info → locus-info}/parser.d.ts +3 -2
- package/dist/locus-info/parser.js +48 -31
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +7 -6
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +15 -10
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +16 -7
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +1 -2
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.d.ts +241 -0
- package/dist/mediaQualityMetrics/config.js +135 -339
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/{types/meeting → meeting}/in-meeting-actions.d.ts +4 -0
- package/dist/meeting/in-meeting-actions.js +18 -2
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/{types/meeting → meeting}/index.d.ts +331 -44
- package/dist/meeting/index.js +2639 -1367
- package/dist/meeting/index.js.map +1 -1
- package/dist/{types/meeting → meeting}/locusMediaRequest.d.ts +1 -2
- package/dist/meeting/locusMediaRequest.js +4 -5
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/muteState.js +2 -4
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/{types/meeting → meeting}/request.d.ts +4 -1
- package/dist/meeting/request.js +47 -32
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.js +1 -2
- package/dist/meeting/state.js.map +1 -1
- package/dist/{types/meeting → meeting}/util.d.ts +26 -1
- package/dist/meeting/util.js +83 -10
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting/voicea-meeting.d.ts +16 -0
- package/dist/meeting/voicea-meeting.js +169 -0
- package/dist/meeting/voicea-meeting.js.map +1 -0
- package/dist/meeting-info/collection.js +3 -4
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/{types/meeting-info → meeting-info}/index.d.ts +7 -0
- package/dist/meeting-info/index.js +53 -27
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/{types/meeting-info → meeting-info}/meeting-info-v2.d.ts +1 -0
- package/dist/meeting-info/meeting-info-v2.js +52 -33
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -2
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +8 -8
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +12 -9
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/{types/meetings → meetings}/collection.d.ts +9 -0
- package/dist/meetings/collection.js +21 -5
- package/dist/meetings/collection.js.map +1 -1
- package/dist/{types/meetings → meetings}/index.d.ts +45 -16
- package/dist/meetings/index.js +166 -74
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +2 -3
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +3 -10
- package/dist/meetings/util.js.map +1 -1
- package/dist/{types/member → member}/index.d.ts +1 -0
- package/dist/member/index.js +10 -3
- package/dist/member/index.js.map +1 -1
- package/dist/member/member.types.d.ts +11 -0
- package/dist/member/member.types.js +17 -0
- package/dist/member/member.types.js.map +1 -0
- package/dist/member/types.js +6 -8
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js +12 -2
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +1 -2
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +25 -8
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +2 -3
- package/dist/members/request.js.map +1 -1
- package/dist/{types/members → members}/types.d.ts +1 -0
- package/dist/members/types.js +3 -4
- package/dist/members/types.js.map +1 -1
- package/dist/{types/members → members}/util.d.ts +6 -1
- package/dist/members/util.js +18 -8
- package/dist/members/util.js.map +1 -1
- package/dist/{types/metrics → metrics}/constants.d.ts +15 -0
- package/dist/metrics/constants.js +16 -3
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +3 -2
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +9 -11
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +3 -5
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +7 -9
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +3 -5
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +7 -6
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/{types/multistream → multistream}/remoteMediaManager.d.ts +9 -1
- package/dist/multistream/remoteMediaManager.js +74 -36
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +9 -6
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +1 -2
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +2 -3
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -3
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +1 -2
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/clusterReachability.d.ts +109 -0
- package/dist/reachability/clusterReachability.js +357 -0
- package/dist/reachability/clusterReachability.js.map +1 -0
- package/dist/reachability/index.d.ts +105 -0
- package/dist/reachability/index.js +279 -436
- package/dist/reachability/index.js.map +1 -1
- package/dist/{types/reachability → reachability}/request.d.ts +1 -1
- package/dist/reachability/request.js +14 -11
- package/dist/reachability/request.js.map +1 -1
- package/dist/reachability/util.d.ts +8 -0
- package/dist/reachability/util.js +29 -0
- package/dist/reachability/util.js.map +1 -0
- package/dist/reactions/constants.js +1 -2
- package/dist/reactions/constants.js.map +1 -1
- package/dist/reactions/reactions.js +2 -4
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js +6 -8
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/{types/reconnection-manager → reconnection-manager}/index.d.ts +10 -0
- package/dist/reconnection-manager/index.js +129 -106
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +4 -5
- package/dist/recording-controller/enums.js.map +1 -1
- package/dist/recording-controller/index.js +43 -51
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.js +1 -2
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/{types/roap → roap}/index.d.ts +2 -1
- package/dist/roap/index.js +59 -28
- package/dist/roap/index.js.map +1 -1
- package/dist/{types/roap → roap}/request.d.ts +2 -1
- package/dist/roap/request.js +14 -22
- package/dist/roap/request.js.map +1 -1
- package/dist/{types/roap → roap}/turnDiscovery.d.ts +21 -4
- package/dist/roap/turnDiscovery.js +182 -89
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/constants.js +1 -2
- package/dist/rtcMetrics/constants.js.map +1 -1
- package/dist/{types/rtcMetrics → rtcMetrics}/index.d.ts +15 -1
- package/dist/rtcMetrics/index.js +72 -12
- package/dist/rtcMetrics/index.js.map +1 -1
- package/dist/statsAnalyzer/global.js +1 -2
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/{types/statsAnalyzer → statsAnalyzer}/index.d.ts +28 -11
- package/dist/statsAnalyzer/index.js +371 -318
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +48 -0
- package/dist/statsAnalyzer/mqaUtil.js +295 -162
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +1 -2
- package/dist/transcription/index.js.map +1 -1
- package/dist/webinar/collection.d.ts +16 -0
- package/dist/webinar/collection.js +43 -0
- package/dist/webinar/collection.js.map +1 -0
- package/dist/webinar/index.d.ts +5 -0
- package/dist/webinar/index.js +68 -0
- package/dist/webinar/index.js.map +1 -0
- package/jest.config.js +3 -0
- package/package.json +44 -24
- package/process +1 -0
- package/src/common/errors/no-meeting-info.ts +24 -0
- package/src/common/errors/reclaim-host-role-errors.ts +134 -0
- package/src/common/errors/webex-errors.ts +19 -2
- package/src/common/logs/request.ts +5 -1
- package/src/config.ts +3 -5
- package/src/constants.ts +78 -8
- package/src/index.ts +4 -0
- package/src/interceptors/index.ts +3 -0
- package/src/interceptors/locusRetry.ts +67 -0
- package/src/locus-info/index.ts +52 -16
- package/src/locus-info/mediaSharesUtils.ts +16 -0
- package/src/locus-info/parser.ts +47 -21
- package/src/media/index.ts +8 -6
- package/src/media/properties.ts +17 -2
- package/src/mediaQualityMetrics/config.ts +103 -238
- package/src/meeting/in-meeting-actions.ts +8 -0
- package/src/meeting/index.ts +1692 -627
- package/src/meeting/request.ts +19 -1
- package/src/meeting/util.ts +102 -1
- package/src/meeting/voicea-meeting.ts +122 -0
- package/src/meeting-info/index.ts +47 -20
- package/src/meeting-info/meeting-info-v2.ts +32 -16
- package/src/meeting-info/util.ts +12 -9
- package/src/meeting-info/utilv2.ts +25 -15
- package/src/meetings/collection.ts +13 -0
- package/src/meetings/index.ts +112 -31
- package/src/meetings/util.ts +2 -8
- package/src/member/index.ts +9 -1
- package/src/member/member.types.ts +13 -0
- package/src/member/util.ts +14 -0
- package/src/members/index.ts +29 -2
- package/src/members/types.ts +1 -0
- package/src/members/util.ts +15 -1
- package/src/metrics/constants.ts +14 -0
- package/src/multistream/remoteMediaManager.ts +41 -4
- package/src/reachability/clusterReachability.ts +320 -0
- package/src/reachability/index.ts +221 -382
- package/src/reachability/request.ts +1 -1
- package/src/reachability/util.ts +24 -0
- package/src/reconnection-manager/index.ts +87 -83
- package/src/roap/index.ts +60 -24
- package/src/roap/request.ts +4 -17
- package/src/roap/turnDiscovery.ts +112 -39
- package/src/rtcMetrics/index.ts +71 -5
- package/src/statsAnalyzer/index.ts +430 -427
- package/src/statsAnalyzer/mqaUtil.ts +317 -168
- package/src/webinar/collection.ts +31 -0
- package/src/webinar/index.ts +62 -0
- package/test/integration/spec/converged-space-meetings.js +7 -7
- package/test/integration/spec/journey.js +88 -106
- package/test/integration/spec/space-meeting.js +10 -10
- package/test/unit/spec/breakouts/breakout.ts +2 -1
- package/test/unit/spec/breakouts/index.ts +7 -4
- package/test/unit/spec/interceptors/locusRetry.ts +131 -0
- package/test/unit/spec/locus-info/index.js +206 -13
- package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +10 -0
- package/test/unit/spec/locus-info/parser.js +54 -13
- package/test/unit/spec/locus-info/selfUtils.js +1 -1
- package/test/unit/spec/media/index.ts +25 -4
- package/test/unit/spec/media/properties.ts +2 -2
- package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
- package/test/unit/spec/meeting/index.js +4354 -1285
- package/test/unit/spec/meeting/request.js +63 -12
- package/test/unit/spec/meeting/utils.js +145 -10
- package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
- package/test/unit/spec/meeting-info/index.js +180 -61
- package/test/unit/spec/meeting-info/meetinginfov2.js +216 -68
- package/test/unit/spec/meetings/collection.js +12 -0
- package/test/unit/spec/meetings/index.js +676 -195
- package/test/unit/spec/meetings/utils.js +35 -12
- package/test/unit/spec/member/index.js +8 -7
- package/test/unit/spec/member/util.js +32 -0
- package/test/unit/spec/members/index.js +130 -17
- package/test/unit/spec/members/utils.js +26 -0
- package/test/unit/spec/metrics/index.js +1 -2
- package/test/unit/spec/multistream/mediaRequestManager.ts +1 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +10 -2
- package/test/unit/spec/reachability/clusterReachability.ts +279 -0
- package/test/unit/spec/reachability/index.ts +505 -135
- package/test/unit/spec/reachability/util.ts +40 -0
- package/test/unit/spec/reconnection-manager/index.js +74 -17
- package/test/unit/spec/recording-controller/index.js +0 -1
- package/test/unit/spec/roap/index.ts +181 -61
- package/test/unit/spec/roap/request.ts +27 -3
- package/test/unit/spec/roap/turnDiscovery.ts +363 -102
- package/test/unit/spec/rtcMetrics/index.ts +57 -3
- package/test/unit/spec/stats-analyzer/index.js +1225 -12
- package/test/unit/spec/webinar/collection.ts +13 -0
- package/test/unit/spec/webinar/index.ts +60 -0
- package/test/utils/integrationTestUtils.js +4 -4
- package/test/utils/webex-test-users.js +12 -4
- package/dist/types/mediaQualityMetrics/config.d.ts +0 -365
- package/dist/types/reachability/index.d.ts +0 -158
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -24
- /package/dist/{types/annotation → annotation}/annotation.types.d.ts +0 -0
- /package/dist/{types/annotation → annotation}/constants.d.ts +0 -0
- /package/dist/{types/annotation → annotation}/index.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/breakout.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/collection.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/edit-lock-error.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/events.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/index.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/request.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/utils.d.ts +0 -0
- /package/dist/{types/common → common}/browser-detection.d.ts +0 -0
- /package/dist/{types/common → common}/collection.d.ts +0 -0
- /package/dist/{types/common → common}/config.d.ts +0 -0
- /package/dist/{types/common → common}/errors/captcha-error.d.ts +0 -0
- /package/dist/{types/common → common}/errors/intent-to-join.d.ts +0 -0
- /package/dist/{types/common → common}/errors/join-meeting.d.ts +0 -0
- /package/dist/{types/common → common}/errors/media.d.ts +0 -0
- /package/dist/{types/common → common}/errors/parameter.d.ts +0 -0
- /package/dist/{types/common → common}/errors/password-error.d.ts +0 -0
- /package/dist/{types/common → common}/errors/permission.d.ts +0 -0
- /package/dist/{types/common → common}/errors/reconnection-in-progress.d.ts +0 -0
- /package/dist/{types/common → common}/errors/reconnection.d.ts +0 -0
- /package/dist/{types/common → common}/errors/stats.d.ts +0 -0
- /package/dist/{types/common → common}/errors/webex-meetings-error.d.ts +0 -0
- /package/dist/{types/common → common}/events/events-scope.d.ts +0 -0
- /package/dist/{types/common → common}/events/events.d.ts +0 -0
- /package/dist/{types/common → common}/events/trigger-proxy.d.ts +0 -0
- /package/dist/{types/common → common}/events/util.d.ts +0 -0
- /package/dist/{types/common → common}/logs/logger-config.d.ts +0 -0
- /package/dist/{types/common → common}/logs/logger-proxy.d.ts +0 -0
- /package/dist/{types/common → common}/queue.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/constants.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/enums.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/index.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/types.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/util.d.ts +0 -0
- /package/dist/{types/index.d.ts → index.d.ts} +0 -0
- /package/dist/{types/interpretation → interpretation}/collection.d.ts +0 -0
- /package/dist/{types/interpretation → interpretation}/index.d.ts +0 -0
- /package/dist/{types/interpretation → interpretation}/siLanguage.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/controlsUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/embeddedAppsUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/fullState.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/hostUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/infoUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/mediaSharesUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/selfUtils.d.ts +0 -0
- /package/dist/{types/media → media}/index.d.ts +0 -0
- /package/dist/{types/media → media}/properties.d.ts +0 -0
- /package/dist/{types/media → media}/util.d.ts +0 -0
- /package/dist/{types/meeting → meeting}/muteState.d.ts +0 -0
- /package/dist/{types/meeting → meeting}/request.type.d.ts +0 -0
- /package/dist/{types/meeting → meeting}/state.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/collection.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/request.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/util.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/utilv2.d.ts +0 -0
- /package/dist/{types/meetings → meetings}/meetings.types.d.ts +0 -0
- /package/dist/{types/meetings → meetings}/request.d.ts +0 -0
- /package/dist/{types/meetings → meetings}/util.d.ts +0 -0
- /package/dist/{types/member → member}/types.d.ts +0 -0
- /package/dist/{types/member → member}/util.d.ts +0 -0
- /package/dist/{types/members → members}/collection.d.ts +0 -0
- /package/dist/{types/members → members}/index.d.ts +0 -0
- /package/dist/{types/members → members}/request.d.ts +0 -0
- /package/dist/{types/metrics → metrics}/index.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/mediaRequestManager.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/receiveSlot.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/receiveSlotManager.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/remoteMedia.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/remoteMediaGroup.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/sendSlotManager.d.ts +0 -0
- /package/dist/{types/networkQualityMonitor → networkQualityMonitor}/index.d.ts +0 -0
- /package/dist/{types/personal-meeting-room → personal-meeting-room}/index.d.ts +0 -0
- /package/dist/{types/personal-meeting-room → personal-meeting-room}/request.d.ts +0 -0
- /package/dist/{types/personal-meeting-room → personal-meeting-room}/util.d.ts +0 -0
- /package/dist/{types/reactions → reactions}/constants.d.ts +0 -0
- /package/dist/{types/reactions → reactions}/reactions.d.ts +0 -0
- /package/dist/{types/reactions → reactions}/reactions.type.d.ts +0 -0
- /package/dist/{types/recording-controller → recording-controller}/enums.d.ts +0 -0
- /package/dist/{types/recording-controller → recording-controller}/index.d.ts +0 -0
- /package/dist/{types/recording-controller → recording-controller}/util.d.ts +0 -0
- /package/dist/{types/rtcMetrics → rtcMetrics}/constants.d.ts +0 -0
- /package/dist/{types/statsAnalyzer → statsAnalyzer}/global.d.ts +0 -0
- /package/dist/{types/transcription → transcription}/index.d.ts +0 -0
- /package/test/unit/spec/locus-info/{selfConstant.js → lib/selfConstant.js} +0 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import * as MEETINGCONSTANTS from '../../constants';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Extended Error object for reclaim host role empty or wrong key
|
|
5
|
+
*/
|
|
6
|
+
export class ReclaimHostEmptyWrongKeyError extends Error {
|
|
7
|
+
sdkMessage: string;
|
|
8
|
+
error: null;
|
|
9
|
+
code: number;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
*
|
|
13
|
+
* @constructor
|
|
14
|
+
* @param {String} [message]
|
|
15
|
+
* @param {Object} [error]
|
|
16
|
+
*/
|
|
17
|
+
constructor(
|
|
18
|
+
message: string = MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_EMPTY_OR_WRONG_KEY
|
|
19
|
+
.MESSAGE,
|
|
20
|
+
error: any = null
|
|
21
|
+
) {
|
|
22
|
+
super(message);
|
|
23
|
+
|
|
24
|
+
if (Error.captureStackTrace) {
|
|
25
|
+
Error.captureStackTrace(this, ReclaimHostEmptyWrongKeyError);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
this.name = MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_EMPTY_OR_WRONG_KEY.NAME;
|
|
29
|
+
this.sdkMessage =
|
|
30
|
+
message || MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_EMPTY_OR_WRONG_KEY.MESSAGE;
|
|
31
|
+
this.error = error;
|
|
32
|
+
|
|
33
|
+
this.code = MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_EMPTY_OR_WRONG_KEY.CODE;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Extended Error object for reclaim host role not supported
|
|
39
|
+
*/
|
|
40
|
+
export class ReclaimHostNotSupportedError extends Error {
|
|
41
|
+
sdkMessage: string;
|
|
42
|
+
error: null;
|
|
43
|
+
code: number;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
*
|
|
47
|
+
* @constructor
|
|
48
|
+
* @param {String} [message]
|
|
49
|
+
* @param {Object} [error]
|
|
50
|
+
*/
|
|
51
|
+
constructor(
|
|
52
|
+
message: string = MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_NOT_SUPPORTED.MESSAGE,
|
|
53
|
+
error: any = null
|
|
54
|
+
) {
|
|
55
|
+
super(message);
|
|
56
|
+
|
|
57
|
+
if (Error.captureStackTrace) {
|
|
58
|
+
Error.captureStackTrace(this, ReclaimHostNotSupportedError);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
this.name = MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_NOT_SUPPORTED.NAME;
|
|
62
|
+
this.sdkMessage =
|
|
63
|
+
message || MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_NOT_SUPPORTED.MESSAGE;
|
|
64
|
+
this.error = error;
|
|
65
|
+
|
|
66
|
+
this.code = MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_NOT_SUPPORTED.CODE;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Extended Error object for reclaim host role not allowed for other participants
|
|
72
|
+
*/
|
|
73
|
+
export class ReclaimHostNotAllowedError extends Error {
|
|
74
|
+
sdkMessage: string;
|
|
75
|
+
error: null;
|
|
76
|
+
code: number;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
*
|
|
80
|
+
* @constructor
|
|
81
|
+
* @param {String} [message]
|
|
82
|
+
* @param {Object} [error]
|
|
83
|
+
*/
|
|
84
|
+
constructor(
|
|
85
|
+
message: string = MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_NOT_ALLOWED.MESSAGE,
|
|
86
|
+
error: any = null
|
|
87
|
+
) {
|
|
88
|
+
super(message);
|
|
89
|
+
|
|
90
|
+
if (Error.captureStackTrace) {
|
|
91
|
+
Error.captureStackTrace(this, ReclaimHostNotAllowedError);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
this.name = MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_NOT_ALLOWED.NAME;
|
|
95
|
+
this.sdkMessage =
|
|
96
|
+
message || MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_NOT_ALLOWED.MESSAGE;
|
|
97
|
+
this.error = error;
|
|
98
|
+
|
|
99
|
+
this.code = MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_NOT_ALLOWED.CODE;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Extended Error object for reclaim host role when user is host already
|
|
105
|
+
*/
|
|
106
|
+
export class ReclaimHostIsHostAlreadyError extends Error {
|
|
107
|
+
sdkMessage: string;
|
|
108
|
+
error: null;
|
|
109
|
+
code: number;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
*
|
|
113
|
+
* @constructor
|
|
114
|
+
* @param {String} [message]
|
|
115
|
+
* @param {Object} [error]
|
|
116
|
+
*/
|
|
117
|
+
constructor(
|
|
118
|
+
message: string = MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_IS_ALREADY_HOST.MESSAGE,
|
|
119
|
+
error: any = null
|
|
120
|
+
) {
|
|
121
|
+
super(message);
|
|
122
|
+
|
|
123
|
+
if (Error.captureStackTrace) {
|
|
124
|
+
Error.captureStackTrace(this, ReclaimHostIsHostAlreadyError);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
this.name = MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_IS_ALREADY_HOST.NAME;
|
|
128
|
+
this.sdkMessage =
|
|
129
|
+
message || MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_IS_ALREADY_HOST.MESSAGE;
|
|
130
|
+
this.error = error;
|
|
131
|
+
|
|
132
|
+
this.code = MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_IS_ALREADY_HOST.CODE;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
@@ -112,7 +112,7 @@ WebExMeetingsErrors[UserInLobbyError.CODE] = UserInLobbyError;
|
|
|
112
112
|
* @classdesc Raised whenever the user passes Space ID as destination for create meeting.
|
|
113
113
|
* @extends WebexMeetingsError
|
|
114
114
|
* @property {number} code - 30105
|
|
115
|
-
* @property {string} message - Using the space ID as a destination is no longer supported. Please refer to the [migration guide](https://github.com/webex/webex-js-sdk/wiki/Migration-
|
|
115
|
+
* @property {string} message - Using the space ID as a destination is no longer supported. Please refer to the [migration guide](https://github.com/webex/webex-js-sdk/wiki/Migration-to-Unified-Space-Meetings) to migrate to use the meeting ID or SIP address.'
|
|
116
116
|
*/
|
|
117
117
|
class SpaceIDDeprecatedError extends WebexMeetingsError {
|
|
118
118
|
static CODE = 30105;
|
|
@@ -120,7 +120,7 @@ class SpaceIDDeprecatedError extends WebexMeetingsError {
|
|
|
120
120
|
constructor() {
|
|
121
121
|
super(
|
|
122
122
|
SpaceIDDeprecatedError.CODE,
|
|
123
|
-
'Using the space ID as a destination is no longer supported. Please refer to the [migration guide](https://github.com/webex/webex-js-sdk/wiki/Migration-
|
|
123
|
+
'Using the space ID as a destination is no longer supported. Please refer to the [migration guide](https://github.com/webex/webex-js-sdk/wiki/Migration-to-Unified-Space-Meetings) to migrate to use the meeting ID or SIP address.'
|
|
124
124
|
);
|
|
125
125
|
}
|
|
126
126
|
}
|
|
@@ -145,3 +145,20 @@ class IceGatheringFailed extends WebexMeetingsError {
|
|
|
145
145
|
|
|
146
146
|
export {IceGatheringFailed};
|
|
147
147
|
WebExMeetingsErrors[IceGatheringFailed.CODE] = IceGatheringFailed;
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* @class AddMediaFailed
|
|
151
|
+
* @classdesc Raised whenever we fail to successfully add media to a meeting
|
|
152
|
+
* @extends WebexMeetingsError
|
|
153
|
+
* @property {number} code - 30203
|
|
154
|
+
* @property {string} message - 'Failed to add media'
|
|
155
|
+
*/
|
|
156
|
+
class AddMediaFailed extends WebexMeetingsError {
|
|
157
|
+
static CODE = 30203;
|
|
158
|
+
|
|
159
|
+
constructor() {
|
|
160
|
+
super(AddMediaFailed.CODE, 'Failed to add media');
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
export {AddMediaFailed};
|
|
164
|
+
WebExMeetingsErrors[AddMediaFailed.CODE] = AddMediaFailed;
|
|
@@ -32,6 +32,8 @@ export default class LogsRequest {
|
|
|
32
32
|
*/
|
|
33
33
|
async uploadLogs(
|
|
34
34
|
options: {
|
|
35
|
+
autoupload?: boolean;
|
|
36
|
+
locussessionid?: string;
|
|
35
37
|
feedbackId?: string;
|
|
36
38
|
locusId?: string;
|
|
37
39
|
correlationId?: string;
|
|
@@ -40,7 +42,7 @@ export default class LogsRequest {
|
|
|
40
42
|
} = {}
|
|
41
43
|
) {
|
|
42
44
|
const id = options.feedbackId || uuid.v4();
|
|
43
|
-
const {locusId, correlationId, meetingId, callStart} = options;
|
|
45
|
+
const {locusId, correlationId, meetingId, callStart, locussessionid, autoupload} = options;
|
|
44
46
|
|
|
45
47
|
LoggerProxy.logger.info(
|
|
46
48
|
`Logs:request#uploadLogs --> uploading user logs for feedbackId: ${id}`
|
|
@@ -48,6 +50,8 @@ export default class LogsRequest {
|
|
|
48
50
|
|
|
49
51
|
try {
|
|
50
52
|
await this.webex.internal.support.submitLogs({
|
|
53
|
+
autoupload,
|
|
54
|
+
locussessionid,
|
|
51
55
|
feedbackId: id,
|
|
52
56
|
locusId,
|
|
53
57
|
correlationId,
|
package/src/config.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
deviceType,
|
|
4
|
-
} from '@webex/common';
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
import {deviceType} from '@webex/common';
|
|
5
3
|
|
|
6
4
|
export default {
|
|
7
5
|
// TODO: this needs to be defaulted
|
|
@@ -88,7 +86,7 @@ export default {
|
|
|
88
86
|
enableMediaNegotiatedEvent: false,
|
|
89
87
|
enableUnifiedMeetings: true,
|
|
90
88
|
enableAdhocMeetings: true,
|
|
91
|
-
|
|
89
|
+
enableTcpReachability: false,
|
|
92
90
|
},
|
|
93
91
|
degradationPreferences: {
|
|
94
92
|
maxMacroblocksLimit: 8192,
|
package/src/constants.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// @ts-ignore
|
|
2
2
|
import {hydraTypes} from '@webex/common';
|
|
3
3
|
|
|
4
|
+
type Enum<T extends Record<string, unknown>> = T[keyof T];
|
|
5
|
+
|
|
4
6
|
// *********** LOWERCASE / CAMELCASE STRINGS ************
|
|
5
7
|
|
|
6
8
|
export const AUDIO = 'audio';
|
|
@@ -46,6 +48,8 @@ export const MEETINGINFO = 'meetingInfo';
|
|
|
46
48
|
export const MEET = 'meet';
|
|
47
49
|
export const MEET_M = 'm';
|
|
48
50
|
export const MEDIA = 'media';
|
|
51
|
+
export const MEET_CO = 'co';
|
|
52
|
+
export const MEET_CISCO = 'cisco';
|
|
49
53
|
|
|
50
54
|
export const OFFLINE = 'offline';
|
|
51
55
|
export const ONLINE = 'online';
|
|
@@ -68,6 +72,8 @@ export const TYPE = 'type';
|
|
|
68
72
|
export const VIDEO = 'video';
|
|
69
73
|
export const VIDEO_STATUS = 'videoStatus';
|
|
70
74
|
|
|
75
|
+
export const LANGUAGE_ENGLISH = 'en';
|
|
76
|
+
|
|
71
77
|
// *********** UPPERCASE ONLY STRINGS ************
|
|
72
78
|
// Please alphabetize
|
|
73
79
|
export const _ANSWER_ = 'ANSWER';
|
|
@@ -190,7 +196,8 @@ export const ICE_FAIL_TIMEOUT = 3000;
|
|
|
190
196
|
|
|
191
197
|
export const RETRY_TIMEOUT = 3000;
|
|
192
198
|
|
|
193
|
-
export const
|
|
199
|
+
export const ICE_AND_DTLS_CONNECTION_TIMEOUT = 10000;
|
|
200
|
+
export const ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT = 35000;
|
|
194
201
|
|
|
195
202
|
// ******************** REGEX **********************
|
|
196
203
|
// Please alphabetize
|
|
@@ -236,6 +243,13 @@ export const CALENDAR_EVENTS = {
|
|
|
236
243
|
DELETE: 'event:calendar.meeting.delete',
|
|
237
244
|
};
|
|
238
245
|
|
|
246
|
+
export const ASSIGN_ROLES_ERROR_CODES = {
|
|
247
|
+
ReclaimHostNotSupportedErrorCode: 2400127,
|
|
248
|
+
ReclaimHostNotAllowedErrorCode: 2403135,
|
|
249
|
+
ReclaimHostEmptyWrongKeyErrorCode: 2403136,
|
|
250
|
+
ReclaimHostIsHostAlreadyErrorCode: 2409150,
|
|
251
|
+
};
|
|
252
|
+
|
|
239
253
|
export const DEFAULT_GET_STATS_FILTER = {
|
|
240
254
|
types: [
|
|
241
255
|
'track',
|
|
@@ -288,8 +302,6 @@ export const EVENT_TRIGGERS = {
|
|
|
288
302
|
MEETING_MEDIA_REMOTE_STARTED: 'meeting:media:remote:start',
|
|
289
303
|
MEETING_STARTED_RECORDING: 'meeting:recording:started',
|
|
290
304
|
MEETING_STOPPED_RECORDING: 'meeting:recording:stopped',
|
|
291
|
-
MEETING_STARTED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:started',
|
|
292
|
-
MEETING_STOPPED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:stopped',
|
|
293
305
|
MEETING_RECEIVE_REACTIONS: 'meeting:receiveReactions',
|
|
294
306
|
MEETING_PAUSED_RECORDING: 'meeting:recording:paused',
|
|
295
307
|
MEETING_RESUMED_RECORDING: 'meeting:recording:resumed',
|
|
@@ -331,6 +343,7 @@ export const EVENT_TRIGGERS = {
|
|
|
331
343
|
MEETING_UNLOCKED: 'meeting:unlocked',
|
|
332
344
|
MEETING_LOCKED: 'meeting:locked',
|
|
333
345
|
MEETING_INFO_AVAILABLE: 'meeting:meetingInfoAvailable',
|
|
346
|
+
MEETING_INFO_UPDATED: 'meeting:meetingInfoUpdated',
|
|
334
347
|
MEETING_LOG_UPLOAD_SUCCESS: 'meeting:logUpload:success',
|
|
335
348
|
MEETING_LOG_UPLOAD_FAILURE: 'meeting:logUpload:failure',
|
|
336
349
|
MEETING_ACTIONS_UPDATE: 'meeting:actionsUpdate',
|
|
@@ -362,6 +375,12 @@ export const EVENT_TRIGGERS = {
|
|
|
362
375
|
// Locus URL changed
|
|
363
376
|
MEETING_LOCUS_URL_UPDATE: 'meeting:locus:locusUrl:update',
|
|
364
377
|
MEETING_STREAM_PUBLISH_STATE_CHANGED: 'meeting:streamPublishStateChanged',
|
|
378
|
+
|
|
379
|
+
MEETING_TRANSCRIPTION_CONNECTED: 'meeting:transcription:connected',
|
|
380
|
+
MEETING_STARTED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:started',
|
|
381
|
+
MEETING_STOPPED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:stopped',
|
|
382
|
+
|
|
383
|
+
MEETING_CAPTION_RECEIVED: 'meeting:caption-received',
|
|
365
384
|
};
|
|
366
385
|
|
|
367
386
|
export const EVENT_TYPES = {
|
|
@@ -388,6 +407,8 @@ export const MEETING_REMOVED_REASON = {
|
|
|
388
407
|
USER_ENDED_SHARE_STREAMS: 'USER_ENDED_SHARE_STREAMS', // user triggered stop share
|
|
389
408
|
NO_MEETINGS_TO_SYNC: 'NO_MEETINGS_TO_SYNC', // After the syncMeeting no meeting exists
|
|
390
409
|
MEETING_CONNECTION_FAILED: 'MEETING_CONNECTION_FAILED', // meeting failed to connect due to ice failures or firewall issue
|
|
410
|
+
LOCUS_DTO_SYNC_FAILED: 'LOCUS_DTO_SYNC_FAILED', // failed to get any Locus DTO for that meeting
|
|
411
|
+
MISSING_MEETING_INFO: 'MISSING_MEETING_INFO', // meeting info failed to be fetched
|
|
391
412
|
};
|
|
392
413
|
|
|
393
414
|
// One one one calls ends for the following reasons
|
|
@@ -484,6 +505,35 @@ export const ERROR_DICTIONARY = {
|
|
|
484
505
|
MESSAGE: 'Edit lock token mismatch',
|
|
485
506
|
CODE: 9,
|
|
486
507
|
},
|
|
508
|
+
NO_MEETING_INFO: {
|
|
509
|
+
NAME: 'NoMeetingInfo',
|
|
510
|
+
MESSAGE: 'No meeting info found for the meeting',
|
|
511
|
+
CODE: 10,
|
|
512
|
+
},
|
|
513
|
+
RECLAIM_HOST_ROLE_NOT_SUPPORTED: {
|
|
514
|
+
NAME: 'ReclaimHostRoleNotSupported',
|
|
515
|
+
MESSAGE:
|
|
516
|
+
'Non converged meetings, PSTN or SIP users in converged meetings are not supported currently.',
|
|
517
|
+
CODE: 11,
|
|
518
|
+
},
|
|
519
|
+
RECLAIM_HOST_ROLE_NOT_ALLOWED: {
|
|
520
|
+
NAME: 'ReclaimHostRoleNotAllowed',
|
|
521
|
+
MESSAGE:
|
|
522
|
+
'Reclaim Host Role Not Allowed For Other Participants. Participants cannot claim host role in PMR meeting, space instant meeting or escalated instant meeting. However, the original host still can reclaim host role when it manually makes another participant to be the host.',
|
|
523
|
+
CODE: 12,
|
|
524
|
+
},
|
|
525
|
+
RECLAIM_HOST_ROLE_EMPTY_OR_WRONG_KEY: {
|
|
526
|
+
NAME: 'ReclaimHostRoleEmptyOrWrongKey',
|
|
527
|
+
MESSAGE:
|
|
528
|
+
'Host Key Not Specified Or Matched. The original host can reclaim the host role without entering the host key. However, any other person who claims the host role must enter the host key to get it.',
|
|
529
|
+
CODE: 13,
|
|
530
|
+
},
|
|
531
|
+
RECLAIM_HOST_ROLE_IS_ALREADY_HOST: {
|
|
532
|
+
NAME: 'ReclaimHostRoleIsAlreadyHost',
|
|
533
|
+
MESSAGE:
|
|
534
|
+
'Participant Having Host Role Already. Participant who sends request to reclaim host role has already a host role.',
|
|
535
|
+
CODE: 14,
|
|
536
|
+
},
|
|
487
537
|
};
|
|
488
538
|
|
|
489
539
|
export const FLOOR_ACTION = {
|
|
@@ -539,6 +589,8 @@ export const LOCUS = {
|
|
|
539
589
|
INACTIVE: 'INACTIVE',
|
|
540
590
|
ENDED: 'ENDED',
|
|
541
591
|
INITIALIZING: 'INITIALIZING',
|
|
592
|
+
ACTIVE: 'ACTIVE',
|
|
593
|
+
TERMINATING: 'TERMINATING',
|
|
542
594
|
},
|
|
543
595
|
SEQUENCE: {
|
|
544
596
|
UN_DEF: 'undef',
|
|
@@ -622,7 +674,6 @@ export const LOCUSINFO = {
|
|
|
622
674
|
CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
|
|
623
675
|
CONTROLS_MEETING_INTERPRETATION_UPDATED: 'CONTROLS_MEETING_INTERPRETATION_UPDATED',
|
|
624
676
|
CONTROLS_ENTRY_EXIT_TONE_UPDATED: 'CONTROLS_ENTRY_EXIT_TONE_UPDATED',
|
|
625
|
-
CONTROLS_JOIN_BREAKOUT_FROM_MAIN: 'CONTROLS_JOIN_BREAKOUT_FROM_MAIN',
|
|
626
677
|
CONTROLS_MUTE_ON_ENTRY_CHANGED: 'CONTROLS_MUTE_ON_ENTRY_CHANGED',
|
|
627
678
|
CONTROLS_SHARE_CONTROL_CHANGED: 'CONTROLS_SHARE_CONTROL_CHANGED',
|
|
628
679
|
CONTROLS_DISALLOW_UNMUTE_CHANGED: 'CONTROLS_DISALLOW_UNMUTE_CHANGED',
|
|
@@ -920,6 +971,7 @@ export const SELF_ROLES = {
|
|
|
920
971
|
COHOST: 'COHOST',
|
|
921
972
|
MODERATOR: 'MODERATOR',
|
|
922
973
|
ATTENDEE: 'ATTENDEE',
|
|
974
|
+
PRESENTER: 'PRESENTER',
|
|
923
975
|
};
|
|
924
976
|
|
|
925
977
|
export const MEETING_STATE = {
|
|
@@ -995,7 +1047,9 @@ export const RECONNECTION = {
|
|
|
995
1047
|
DEFAULT_TRY_COUNT: 0,
|
|
996
1048
|
DEFAULT_STATUS: '',
|
|
997
1049
|
},
|
|
998
|
-
};
|
|
1050
|
+
} as const;
|
|
1051
|
+
|
|
1052
|
+
export type RECONNECTION_STATE = Enum<typeof RECONNECTION.STATE>;
|
|
999
1053
|
|
|
1000
1054
|
export const RESOURCE = {
|
|
1001
1055
|
CLUSTERS: 'clusters',
|
|
@@ -1031,7 +1085,9 @@ export const NETWORK_STATUS = {
|
|
|
1031
1085
|
DISCONNECTED: 'DISCONNECTED',
|
|
1032
1086
|
RECONNECTING: 'RECONNECTING',
|
|
1033
1087
|
CONNECTED: 'CONNECTED',
|
|
1034
|
-
};
|
|
1088
|
+
} as const;
|
|
1089
|
+
|
|
1090
|
+
export type NETWORK_STATUS = Enum<typeof NETWORK_STATUS>;
|
|
1035
1091
|
|
|
1036
1092
|
export const NETWORK_TYPE = {
|
|
1037
1093
|
VPN: 'vpn',
|
|
@@ -1190,7 +1246,7 @@ export const AVAILABLE_RESOLUTIONS = {
|
|
|
1190
1246
|
* mqa Interval for sending stats metrics
|
|
1191
1247
|
*/
|
|
1192
1248
|
|
|
1193
|
-
export const
|
|
1249
|
+
export const MQA_INTERVAL = 60000; // mqa analyzer interval its fixed to 60000
|
|
1194
1250
|
|
|
1195
1251
|
export const MEDIA_DEVICES = {
|
|
1196
1252
|
MICROPHONE: 'microphone',
|
|
@@ -1247,4 +1303,18 @@ export const IP_VERSION = {
|
|
|
1247
1303
|
ipv4_and_ipv6: 1,
|
|
1248
1304
|
} as const;
|
|
1249
1305
|
|
|
1250
|
-
export
|
|
1306
|
+
export const LOCAL_SHARE_ERRORS = {
|
|
1307
|
+
DEVICE_NOT_JOINED: 'Floor requested but device not yet joined',
|
|
1308
|
+
UNDEFINED: 'undefined PUT',
|
|
1309
|
+
NO_MEDIA_FOR_DEVICE: 'No media session found for device',
|
|
1310
|
+
NO_CONFLUENCE_ID: 'Failed to request floor: 404 (null) could not find confluence id',
|
|
1311
|
+
CONTENT_SHARING_DISABLED: 'Content share policies are disabled',
|
|
1312
|
+
LOCUS_PARTICIPANT_DNE: 'does not exist in Locus',
|
|
1313
|
+
CONTENT_REQUEST_WHILE_PENDING_WHITEBOARD:
|
|
1314
|
+
'Content share request is not allowed while whiteboard floor request is pending',
|
|
1315
|
+
};
|
|
1316
|
+
export type IP_VERSION = Enum<typeof IP_VERSION>;
|
|
1317
|
+
|
|
1318
|
+
// constant for if the permissionToken is about to expire in the next 30 seconds, refresh it
|
|
1319
|
+
export const MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC = 30;
|
|
1320
|
+
export const MEETING_PERMISSION_TOKEN_REFRESH_REASON = 'ttl-join';
|
package/src/index.ts
CHANGED
|
@@ -3,9 +3,13 @@ import {registerPlugin} from '@webex/webex-core';
|
|
|
3
3
|
|
|
4
4
|
import Meetings from './meetings';
|
|
5
5
|
import config from './config';
|
|
6
|
+
import {LocusRetryStatusInterceptor} from './interceptors';
|
|
6
7
|
|
|
7
8
|
registerPlugin('meetings', Meetings, {
|
|
8
9
|
config,
|
|
10
|
+
interceptors: {
|
|
11
|
+
LocusRetryStatusInterceptor: LocusRetryStatusInterceptor.create,
|
|
12
|
+
},
|
|
9
13
|
});
|
|
10
14
|
|
|
11
15
|
export {
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import {Interceptor} from '@webex/http-core';
|
|
6
|
+
|
|
7
|
+
const rateLimitExpiryTime = new WeakMap();
|
|
8
|
+
/**
|
|
9
|
+
* @class
|
|
10
|
+
*/
|
|
11
|
+
export default class LocusRetryStatusInterceptor extends Interceptor {
|
|
12
|
+
/**
|
|
13
|
+
* @returns {LocusRetryStatusInterceptor}
|
|
14
|
+
*/
|
|
15
|
+
static create() {
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
return new LocusRetryStatusInterceptor({webex: this});
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Handle response errors
|
|
22
|
+
* @param {Object} options
|
|
23
|
+
* @param {WebexHttpError} reason
|
|
24
|
+
* @returns {Promise<WebexHttpError>}
|
|
25
|
+
*/
|
|
26
|
+
onResponseError(options, reason) {
|
|
27
|
+
if ((reason.statusCode === 503 || reason.statusCode === 429) && options.uri.includes('locus')) {
|
|
28
|
+
const hasRetriedLocusRequest = rateLimitExpiryTime.get(this);
|
|
29
|
+
const retryAfterTime = options.headers['retry-after'] || 2000;
|
|
30
|
+
|
|
31
|
+
if (hasRetriedLocusRequest) {
|
|
32
|
+
rateLimitExpiryTime.set(this, false);
|
|
33
|
+
|
|
34
|
+
return Promise.reject(options);
|
|
35
|
+
}
|
|
36
|
+
rateLimitExpiryTime.set(this, true);
|
|
37
|
+
|
|
38
|
+
return this.handleRetryRequestLocusServiceError(options, retryAfterTime);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return Promise.reject(reason);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Handle retries for locus service unavailable errors
|
|
46
|
+
* @param {Object} options associated with the request
|
|
47
|
+
* @param {number} retryAfterTime retry after time in milliseconds
|
|
48
|
+
* @returns {Promise}
|
|
49
|
+
*/
|
|
50
|
+
handleRetryRequestLocusServiceError(options, retryAfterTime) {
|
|
51
|
+
return new Promise((resolve, reject) => {
|
|
52
|
+
const timeout = setTimeout(() => {
|
|
53
|
+
clearTimeout(timeout);
|
|
54
|
+
|
|
55
|
+
// @ts-ignore
|
|
56
|
+
this.webex
|
|
57
|
+
.request({
|
|
58
|
+
method: options.method,
|
|
59
|
+
uri: options.uri,
|
|
60
|
+
body: options.body,
|
|
61
|
+
})
|
|
62
|
+
.then(resolve)
|
|
63
|
+
.catch(reject);
|
|
64
|
+
}, retryAfterTime);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
package/src/locus-info/index.ts
CHANGED
|
@@ -25,6 +25,8 @@ import ControlsUtils from './controlsUtils';
|
|
|
25
25
|
import EmbeddedAppsUtils from './embeddedAppsUtils';
|
|
26
26
|
import MediaSharesUtils from './mediaSharesUtils';
|
|
27
27
|
import LocusDeltaParser from './parser';
|
|
28
|
+
import Metrics from '../metrics';
|
|
29
|
+
import BEHAVIORAL_METRICS from '../metrics/constants';
|
|
28
30
|
|
|
29
31
|
/**
|
|
30
32
|
* @description LocusInfo extends ChildEmitter to convert locusInfo info a private emitter to parent object
|
|
@@ -110,6 +112,37 @@ export default class LocusInfo extends EventsScope {
|
|
|
110
112
|
// return value ignored on purpose
|
|
111
113
|
meeting.meetingRequest
|
|
112
114
|
.getLocusDTO({url})
|
|
115
|
+
.catch((e) => {
|
|
116
|
+
if (isDelta) {
|
|
117
|
+
LoggerProxy.logger.info(
|
|
118
|
+
'Locus-info:index#doLocusSync --> delta sync failed, falling back to full sync'
|
|
119
|
+
);
|
|
120
|
+
|
|
121
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.LOCUS_DELTA_SYNC_FAILED, {
|
|
122
|
+
correlationId: meeting.correlationId,
|
|
123
|
+
url,
|
|
124
|
+
reason: e.message,
|
|
125
|
+
errorName: e.name,
|
|
126
|
+
stack: e.stack,
|
|
127
|
+
code: e.code,
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
isDelta = false;
|
|
131
|
+
|
|
132
|
+
return meeting.meetingRequest.getLocusDTO({url: meeting.locusUrl}).catch((err) => {
|
|
133
|
+
LoggerProxy.logger.info(
|
|
134
|
+
'Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting'
|
|
135
|
+
);
|
|
136
|
+
this.webex.meetings.destroy(meeting, MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);
|
|
137
|
+
throw err;
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
LoggerProxy.logger.info(
|
|
141
|
+
'Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting'
|
|
142
|
+
);
|
|
143
|
+
this.webex.meetings.destroy(meeting, MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);
|
|
144
|
+
throw e;
|
|
145
|
+
})
|
|
113
146
|
.then((res) => {
|
|
114
147
|
if (isDelta) {
|
|
115
148
|
if (!isEmpty(res.body)) {
|
|
@@ -122,8 +155,6 @@ export default class LocusInfo extends EventsScope {
|
|
|
122
155
|
} else {
|
|
123
156
|
meeting.locusInfo.onFullLocus(res.body);
|
|
124
157
|
}
|
|
125
|
-
})
|
|
126
|
-
.finally(() => {
|
|
127
158
|
// Notify parser to resume processing delta events.
|
|
128
159
|
// Any deltas in the queue that have now been superseded by this sync will simply be ignored
|
|
129
160
|
this.locusParser.resume();
|
|
@@ -138,7 +169,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
138
169
|
* @returns {undefined}
|
|
139
170
|
*/
|
|
140
171
|
applyLocusDeltaData(action: string, locus: any, meeting: any) {
|
|
141
|
-
const {DESYNC, USE_CURRENT, USE_INCOMING, WAIT} = LocusDeltaParser.loci;
|
|
172
|
+
const {DESYNC, USE_CURRENT, USE_INCOMING, WAIT, LOCUS_URL_CHANGED} = LocusDeltaParser.loci;
|
|
142
173
|
|
|
143
174
|
switch (action) {
|
|
144
175
|
case USE_INCOMING:
|
|
@@ -149,6 +180,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
149
180
|
// do nothing
|
|
150
181
|
break;
|
|
151
182
|
case DESYNC:
|
|
183
|
+
case LOCUS_URL_CHANGED:
|
|
152
184
|
this.doLocusSync(meeting);
|
|
153
185
|
break;
|
|
154
186
|
default:
|
|
@@ -1137,7 +1169,10 @@ export default class LocusInfo extends EventsScope {
|
|
|
1137
1169
|
file: 'locus-info',
|
|
1138
1170
|
function: 'updateMeetingInfo',
|
|
1139
1171
|
},
|
|
1140
|
-
LOCUSINFO.EVENTS.MEETING_INFO_UPDATED
|
|
1172
|
+
LOCUSINFO.EVENTS.MEETING_INFO_UPDATED,
|
|
1173
|
+
{
|
|
1174
|
+
isInitializing: !self, // if self is undefined, then the update is caused by locus init
|
|
1175
|
+
}
|
|
1141
1176
|
);
|
|
1142
1177
|
}
|
|
1143
1178
|
this.roles = roles;
|
|
@@ -1572,7 +1607,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
1572
1607
|
|
|
1573
1608
|
/**
|
|
1574
1609
|
* if return from breakout to main session, need to use cached main session DTO since locus won't send the full locus (participants)
|
|
1575
|
-
* if join breakout from main session,
|
|
1610
|
+
* if join breakout from main session, main session is not active for the attendee and remove main session locus cache
|
|
1576
1611
|
* @param {Object} newLocus
|
|
1577
1612
|
* @returns {Object}
|
|
1578
1613
|
* @memberof LocusInfo
|
|
@@ -1582,17 +1617,18 @@ export default class LocusInfo extends EventsScope {
|
|
|
1582
1617
|
if (switchStatus.isReturnToMain && this.mainSessionLocusCache) {
|
|
1583
1618
|
return cloneDeep(this.mainSessionLocusCache);
|
|
1584
1619
|
}
|
|
1585
|
-
|
|
1586
|
-
this.
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1620
|
+
const isMainSessionDTO =
|
|
1621
|
+
this.mainSessionLocusCache && ControlsUtils.isMainSessionDTO(this.mainSessionLocusCache);
|
|
1622
|
+
|
|
1623
|
+
if (isMainSessionDTO) {
|
|
1624
|
+
const isActive =
|
|
1625
|
+
[LOCUS.STATE.ACTIVE, LOCUS.STATE.INITIALIZING, LOCUS.STATE.TERMINATING].includes(
|
|
1626
|
+
this.fullState?.state
|
|
1627
|
+
) && !this.mainSessionLocusCache?.self?.removed;
|
|
1628
|
+
|
|
1629
|
+
if (!isActive) {
|
|
1630
|
+
this.clearMainSessionLocusCache();
|
|
1631
|
+
}
|
|
1596
1632
|
}
|
|
1597
1633
|
|
|
1598
1634
|
return newLocus;
|
|
@@ -16,6 +16,7 @@ MediaSharesUtils.parse = (mediaShares: object) => {
|
|
|
16
16
|
annotation: MediaSharesUtils.getContentAnnotation(mediaShares),
|
|
17
17
|
url: MediaSharesUtils.getContentUrl(mediaShares),
|
|
18
18
|
shareInstanceId: MediaSharesUtils.getShareInstanceId(mediaShares),
|
|
19
|
+
deviceUrlSharing: MediaSharesUtils.getContentBeneficiaryDeviceUrl(mediaShares),
|
|
19
20
|
},
|
|
20
21
|
whiteboard: {
|
|
21
22
|
beneficiaryId: MediaSharesUtils.getWhiteboardBeneficiaryId(mediaShares),
|
|
@@ -188,6 +189,21 @@ MediaSharesUtils.getShareInstanceId = (mediaShares: object) => {
|
|
|
188
189
|
return extractContent.floor.shareInstanceId;
|
|
189
190
|
};
|
|
190
191
|
|
|
192
|
+
/**
|
|
193
|
+
* get deviceUrl that is requesting the floor for media shares (content)
|
|
194
|
+
* @param {Object} mediaShares
|
|
195
|
+
* @returns {Object}
|
|
196
|
+
*/
|
|
197
|
+
MediaSharesUtils.getContentBeneficiaryDeviceUrl = (mediaShares: object) => {
|
|
198
|
+
const contentFloor = MediaSharesUtils.extractContentFloor(mediaShares);
|
|
199
|
+
|
|
200
|
+
if (!contentFloor || !contentFloor.beneficiary || !contentFloor.beneficiary.deviceUrl) {
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
return contentFloor.beneficiary.deviceUrl;
|
|
205
|
+
};
|
|
206
|
+
|
|
191
207
|
/**
|
|
192
208
|
* get who is sharing from media shares (whiteboard)
|
|
193
209
|
* @param {Object} mediaShares
|