@webex/plugin-meetings 3.0.0-beta.13 → 3.0.0-beta.131
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 +203 -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 +406 -216
- 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 +105 -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 +2603 -2462
- 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 +993 -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 +153 -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 +346 -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 +195 -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 +2803 -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 +636 -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 +252 -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 +3112 -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
package/dist/media/properties.js
CHANGED
|
@@ -1,33 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
|
|
11
8
|
exports.default = void 0;
|
|
12
|
-
|
|
13
9
|
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
14
|
-
|
|
15
10
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
16
|
-
|
|
17
11
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
18
|
-
|
|
19
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
20
|
-
|
|
21
13
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
22
|
-
|
|
23
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
24
|
-
|
|
25
15
|
var _internalMediaCore = require("@webex/internal-media-core");
|
|
26
|
-
|
|
27
16
|
var _constants = require("../constants");
|
|
28
|
-
|
|
29
17
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
30
|
-
|
|
31
18
|
/**
|
|
32
19
|
* @class MediaProperties
|
|
33
20
|
*/
|
|
@@ -54,9 +41,9 @@ var MediaProperties = /*#__PURE__*/function () {
|
|
|
54
41
|
(0, _defineProperty2.default)(this, "namespace", _constants.MEETINGS);
|
|
55
42
|
this.webrtcMediaConnection = null;
|
|
56
43
|
this.mediaDirection = options.mediaDirection;
|
|
57
|
-
this.videoTrack = options.videoTrack;
|
|
58
|
-
this.audioTrack = options.audioTrack;
|
|
59
|
-
this.shareTrack = options.shareTrack;
|
|
44
|
+
this.videoTrack = options.videoTrack || null;
|
|
45
|
+
this.audioTrack = options.audioTrack || null;
|
|
46
|
+
this.shareTrack = options.shareTrack || null;
|
|
60
47
|
this.remoteShare = options.remoteShare;
|
|
61
48
|
this.remoteAudioTrack = options.remoteAudioTrack;
|
|
62
49
|
this.remoteVideoTrack = options.remoteVideoTrack;
|
|
@@ -65,12 +52,11 @@ var MediaProperties = /*#__PURE__*/function () {
|
|
|
65
52
|
this.mediaSettings = {};
|
|
66
53
|
this.videoDeviceId = null;
|
|
67
54
|
}
|
|
55
|
+
|
|
68
56
|
/**
|
|
69
57
|
* Retrieves the preferred video input device
|
|
70
58
|
* @returns {Object|null}
|
|
71
59
|
*/
|
|
72
|
-
|
|
73
|
-
|
|
74
60
|
(0, _createClass2.default)(MediaProperties, [{
|
|
75
61
|
key: "getVideoDeviceId",
|
|
76
62
|
value: function getVideoDeviceId() {
|
|
@@ -121,34 +107,34 @@ var MediaProperties = /*#__PURE__*/function () {
|
|
|
121
107
|
value: function setRemoteShare(remoteShare) {
|
|
122
108
|
this.remoteShare = remoteShare;
|
|
123
109
|
}
|
|
110
|
+
|
|
124
111
|
/**
|
|
125
112
|
* Sets the remote audio track
|
|
126
113
|
* @param {MediaTrack} remoteAudioTrack MediaTrack to save
|
|
127
114
|
* @returns {void}
|
|
128
115
|
*/
|
|
129
|
-
|
|
130
116
|
}, {
|
|
131
117
|
key: "setRemoteAudioTrack",
|
|
132
118
|
value: function setRemoteAudioTrack(remoteAudioTrack) {
|
|
133
119
|
this.remoteAudioTrack = remoteAudioTrack;
|
|
134
120
|
}
|
|
121
|
+
|
|
135
122
|
/**
|
|
136
123
|
* Sets the remote video track
|
|
137
124
|
* @param {MediaTrack} remoteVideoTrack MediaTrack to save
|
|
138
125
|
* @returns {void}
|
|
139
126
|
*/
|
|
140
|
-
|
|
141
127
|
}, {
|
|
142
128
|
key: "setRemoteVideoTrack",
|
|
143
129
|
value: function setRemoteVideoTrack(remoteVideoTrack) {
|
|
144
130
|
this.remoteVideoTrack = remoteVideoTrack;
|
|
145
131
|
}
|
|
132
|
+
|
|
146
133
|
/**
|
|
147
134
|
* Stores the preferred video input device
|
|
148
135
|
* @param {string} deviceId Preferred video input device
|
|
149
136
|
* @returns {void}
|
|
150
137
|
*/
|
|
151
|
-
|
|
152
138
|
}, {
|
|
153
139
|
key: "setVideoDeviceId",
|
|
154
140
|
value: function setVideoDeviceId(deviceId) {
|
|
@@ -174,25 +160,24 @@ var MediaProperties = /*#__PURE__*/function () {
|
|
|
174
160
|
value: function unsetLocalAudioTrack() {
|
|
175
161
|
this.audioTrack = null;
|
|
176
162
|
}
|
|
163
|
+
|
|
177
164
|
/**
|
|
178
165
|
* Removes remote stream from class instance
|
|
179
166
|
* @deprecated after v1.89.3
|
|
180
167
|
* @returns {void}
|
|
181
168
|
*/
|
|
182
|
-
|
|
183
169
|
}, {
|
|
184
170
|
key: "unsetRemoteStream",
|
|
185
171
|
value: function unsetRemoteStream() {
|
|
186
|
-
_loggerProxy.default.logger.warn('Media:properties#unsetRemoteStream --> [DEPRECATION WARNING]: unsetRemoteStream has been deprecated after v1.89.3 (use unsetRemoteTracks instead)');
|
|
187
|
-
|
|
188
|
-
|
|
172
|
+
_loggerProxy.default.logger.warn('Media:properties#unsetRemoteStream --> [DEPRECATION WARNING]: unsetRemoteStream has been deprecated after v1.89.3 (use unsetRemoteTracks instead)');
|
|
173
|
+
// unsets audio and video only
|
|
189
174
|
this.unsetRemoteMedia();
|
|
190
175
|
}
|
|
176
|
+
|
|
191
177
|
/**
|
|
192
178
|
* Removes both remote audio and video from class instance
|
|
193
179
|
* @returns {void}
|
|
194
180
|
*/
|
|
195
|
-
|
|
196
181
|
}, {
|
|
197
182
|
key: "unsetRemoteMedia",
|
|
198
183
|
value: function unsetRemoteMedia() {
|
|
@@ -210,25 +195,24 @@ var MediaProperties = /*#__PURE__*/function () {
|
|
|
210
195
|
this.unsetLocalVideoTrack();
|
|
211
196
|
this.unsetLocalShareTrack();
|
|
212
197
|
}
|
|
198
|
+
|
|
213
199
|
/**
|
|
214
200
|
* Removes remote stream and remote share from class instance
|
|
215
201
|
* @deprecated after v1.89.3
|
|
216
202
|
* @returns {void}
|
|
217
203
|
*/
|
|
218
|
-
|
|
219
204
|
}, {
|
|
220
205
|
key: "unsetRemoteStreams",
|
|
221
206
|
value: function unsetRemoteStreams() {
|
|
222
207
|
_loggerProxy.default.logger.warn('Media:properties#unsetRemoteStreams --> [DEPRECATION WARNING]: unsetRemoteStreams has been deprecated after v1.89.3 (use unsetRemoteTracks instead)');
|
|
223
|
-
|
|
224
208
|
this.unsetRemoteStream();
|
|
225
209
|
this.unsetRemoteShare();
|
|
226
210
|
}
|
|
211
|
+
|
|
227
212
|
/**
|
|
228
213
|
* Unsets all remote tracks
|
|
229
214
|
* @returns {void}
|
|
230
215
|
*/
|
|
231
|
-
|
|
232
216
|
}, {
|
|
233
217
|
key: "unsetRemoteTracks",
|
|
234
218
|
value: function unsetRemoteTracks() {
|
|
@@ -241,167 +225,137 @@ var MediaProperties = /*#__PURE__*/function () {
|
|
|
241
225
|
this.unsetLocalShareTrack();
|
|
242
226
|
this.unsetRemoteShare();
|
|
243
227
|
}
|
|
228
|
+
|
|
244
229
|
/**
|
|
245
230
|
* Removes both local and remote video stream from class instance
|
|
246
231
|
* @deprecated after v1.89.3
|
|
247
232
|
* @returns {void}
|
|
248
233
|
*/
|
|
249
|
-
|
|
250
234
|
}, {
|
|
251
235
|
key: "unsetMediaStreams",
|
|
252
236
|
value: function unsetMediaStreams() {
|
|
253
237
|
_loggerProxy.default.logger.warn('Media:properties#unsetMediaStreams --> [DEPRECATION WARNING]: unsetMediaStreams has been deprecated after v1.89.3 (use unsetMediaTracks instead)');
|
|
254
|
-
|
|
255
238
|
this.unsetLocalVideoTrack();
|
|
256
239
|
this.unsetRemoteStream();
|
|
257
240
|
}
|
|
241
|
+
|
|
258
242
|
/**
|
|
259
243
|
* Removes both local and remote video stream from class instance
|
|
260
244
|
* @returns {void}
|
|
261
245
|
*/
|
|
262
|
-
|
|
263
246
|
}, {
|
|
264
247
|
key: "unsetMediaTracks",
|
|
265
248
|
value: function unsetMediaTracks() {
|
|
266
249
|
this.unsetLocalVideoTrack();
|
|
267
250
|
this.unsetRemoteMedia();
|
|
268
251
|
}
|
|
252
|
+
|
|
269
253
|
/**
|
|
270
254
|
* Waits for the webrtc media connection to be connected.
|
|
271
255
|
*
|
|
272
256
|
* @returns {Promise<void>}
|
|
273
257
|
*/
|
|
274
|
-
|
|
275
258
|
}, {
|
|
276
259
|
key: "waitForMediaConnectionConnected",
|
|
277
260
|
value: function waitForMediaConnectionConnected() {
|
|
278
261
|
var _this = this;
|
|
279
|
-
|
|
280
262
|
var isConnected = function isConnected() {
|
|
281
|
-
return _this.webrtcMediaConnection.getConnectionState() === _internalMediaCore.
|
|
263
|
+
return _this.webrtcMediaConnection.getConnectionState() === _internalMediaCore.ConnectionState.Connected;
|
|
282
264
|
};
|
|
283
|
-
|
|
284
265
|
if (isConnected()) {
|
|
285
266
|
return _promise.default.resolve();
|
|
286
267
|
}
|
|
287
|
-
|
|
288
268
|
return new _promise.default(function (resolve, reject) {
|
|
289
269
|
var timer;
|
|
290
|
-
|
|
291
270
|
var connectionStateListener = function connectionStateListener() {
|
|
292
271
|
_loggerProxy.default.logger.log("Media:properties#waitForMediaConnectionConnected --> connection state: ".concat(_this.webrtcMediaConnection.getConnectionState()));
|
|
293
|
-
|
|
294
272
|
if (isConnected()) {
|
|
295
273
|
clearTimeout(timer);
|
|
296
|
-
|
|
297
|
-
_this.webrtcMediaConnection.off(_internalMediaCore.MediaConnection.Event.CONNECTION_STATE_CHANGED, connectionStateListener);
|
|
298
|
-
|
|
274
|
+
_this.webrtcMediaConnection.off(_internalMediaCore.Event.CONNECTION_STATE_CHANGED, connectionStateListener);
|
|
299
275
|
resolve();
|
|
300
276
|
}
|
|
301
277
|
};
|
|
302
|
-
|
|
303
278
|
timer = setTimeout(function () {
|
|
304
|
-
_this.webrtcMediaConnection.off(_internalMediaCore.
|
|
305
|
-
|
|
279
|
+
_this.webrtcMediaConnection.off(_internalMediaCore.Event.CONNECTION_STATE_CHANGED, connectionStateListener);
|
|
306
280
|
reject();
|
|
307
281
|
}, _constants.PC_BAIL_TIMEOUT);
|
|
308
|
-
|
|
309
|
-
_this.webrtcMediaConnection.on(_internalMediaCore.MediaConnection.Event.CONNECTION_STATE_CHANGED, connectionStateListener);
|
|
282
|
+
_this.webrtcMediaConnection.on(_internalMediaCore.Event.CONNECTION_STATE_CHANGED, connectionStateListener);
|
|
310
283
|
});
|
|
311
284
|
}
|
|
285
|
+
|
|
312
286
|
/**
|
|
313
287
|
* Returns the type of a connection that has been established
|
|
314
288
|
*
|
|
315
289
|
* @returns {Promise<'UDP' | 'TCP' | 'TURN-TLS' | 'TURN-TCP' | 'TURN-UDP' | 'unknown'>}
|
|
316
290
|
*/
|
|
317
|
-
|
|
318
291
|
}, {
|
|
319
292
|
key: "getCurrentConnectionType",
|
|
320
293
|
value: function () {
|
|
321
294
|
var _getCurrentConnectionType = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
322
295
|
var allStatsReports, statsResult, successfulCandidatePairs, foundConnectionType;
|
|
323
296
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
324
|
-
while (1) {
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
297
|
+
while (1) switch (_context.prev = _context.next) {
|
|
298
|
+
case 0:
|
|
299
|
+
_context.next = 2;
|
|
300
|
+
return this.waitForMediaConnectionConnected();
|
|
301
|
+
case 2:
|
|
302
|
+
allStatsReports = [];
|
|
303
|
+
_context.prev = 3;
|
|
304
|
+
_context.next = 6;
|
|
305
|
+
return this.webrtcMediaConnection.getStats();
|
|
306
|
+
case 6:
|
|
307
|
+
statsResult = _context.sent;
|
|
308
|
+
statsResult.forEach(function (report) {
|
|
309
|
+
return allStatsReports.push(report);
|
|
310
|
+
});
|
|
311
|
+
_context.next = 13;
|
|
312
|
+
break;
|
|
313
|
+
case 10:
|
|
314
|
+
_context.prev = 10;
|
|
315
|
+
_context.t0 = _context["catch"](3);
|
|
316
|
+
_loggerProxy.default.logger.warn("Media:properties#getCurrentConnectionType --> getStats() failed: ".concat(_context.t0));
|
|
317
|
+
case 13:
|
|
318
|
+
successfulCandidatePairs = allStatsReports.filter(function (report) {
|
|
319
|
+
var _report$state;
|
|
320
|
+
return report.type === 'candidate-pair' && ((_report$state = report.state) === null || _report$state === void 0 ? void 0 : _report$state.toLowerCase()) === 'succeeded';
|
|
321
|
+
});
|
|
322
|
+
foundConnectionType = 'unknown'; // all of the successful pairs should have the same connection type, so just return the type for the first one
|
|
323
|
+
successfulCandidatePairs.some(function (pair) {
|
|
324
|
+
var localCandidate = allStatsReports.find(function (report) {
|
|
325
|
+
return report.type === 'local-candidate' && report.id === pair.localCandidateId;
|
|
340
326
|
});
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
case 10:
|
|
345
|
-
_context.prev = 10;
|
|
346
|
-
_context.t0 = _context["catch"](3);
|
|
347
|
-
|
|
348
|
-
_loggerProxy.default.logger.warn("Media:properties#getCurrentConnectionType --> getStats() failed: ".concat(_context.t0));
|
|
349
|
-
|
|
350
|
-
case 13:
|
|
351
|
-
successfulCandidatePairs = allStatsReports.filter(function (report) {
|
|
352
|
-
var _report$state;
|
|
353
|
-
|
|
354
|
-
return report.type === 'candidate-pair' && ((_report$state = report.state) === null || _report$state === void 0 ? void 0 : _report$state.toLowerCase()) === 'succeeded';
|
|
355
|
-
});
|
|
356
|
-
foundConnectionType = 'unknown'; // all of the successful pairs should have the same connection type, so just return the type for the first one
|
|
357
|
-
|
|
358
|
-
successfulCandidatePairs.some(function (pair) {
|
|
359
|
-
var localCandidate = allStatsReports.find(function (report) {
|
|
360
|
-
return report.type === 'local-candidate' && report.id === pair.localCandidateId;
|
|
361
|
-
});
|
|
362
|
-
|
|
363
|
-
if (localCandidate === undefined) {
|
|
364
|
-
_loggerProxy.default.logger.warn("Media:properties#getCurrentConnectionType --> failed to find local candidate \"".concat(pair.localCandidateId, "\" in getStats() results"));
|
|
365
|
-
|
|
366
|
-
return false;
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
var connectionType;
|
|
370
|
-
|
|
371
|
-
if (localCandidate.relayProtocol) {
|
|
372
|
-
connectionType = "TURN-".concat(localCandidate.relayProtocol.toUpperCase());
|
|
373
|
-
} else {
|
|
374
|
-
var _localCandidate$proto;
|
|
375
|
-
|
|
376
|
-
connectionType = (_localCandidate$proto = localCandidate.protocol) === null || _localCandidate$proto === void 0 ? void 0 : _localCandidate$proto.toUpperCase(); // it will be UDP or TCP
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
if (connectionType) {
|
|
380
|
-
foundConnectionType = connectionType;
|
|
381
|
-
return true;
|
|
382
|
-
}
|
|
383
|
-
|
|
327
|
+
if (localCandidate === undefined) {
|
|
328
|
+
_loggerProxy.default.logger.warn("Media:properties#getCurrentConnectionType --> failed to find local candidate \"".concat(pair.localCandidateId, "\" in getStats() results"));
|
|
384
329
|
return false;
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
330
|
+
}
|
|
331
|
+
var connectionType;
|
|
332
|
+
if (localCandidate.relayProtocol) {
|
|
333
|
+
connectionType = "TURN-".concat(localCandidate.relayProtocol.toUpperCase());
|
|
334
|
+
} else {
|
|
335
|
+
var _localCandidate$proto;
|
|
336
|
+
connectionType = (_localCandidate$proto = localCandidate.protocol) === null || _localCandidate$proto === void 0 ? void 0 : _localCandidate$proto.toUpperCase(); // it will be UDP or TCP
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
if (connectionType) {
|
|
340
|
+
foundConnectionType = connectionType;
|
|
341
|
+
return true;
|
|
342
|
+
}
|
|
343
|
+
return false;
|
|
344
|
+
});
|
|
345
|
+
return _context.abrupt("return", foundConnectionType);
|
|
346
|
+
case 17:
|
|
347
|
+
case "end":
|
|
348
|
+
return _context.stop();
|
|
392
349
|
}
|
|
393
350
|
}, _callee, this, [[3, 10]]);
|
|
394
351
|
}));
|
|
395
|
-
|
|
396
352
|
function getCurrentConnectionType() {
|
|
397
353
|
return _getCurrentConnectionType.apply(this, arguments);
|
|
398
354
|
}
|
|
399
|
-
|
|
400
355
|
return getCurrentConnectionType;
|
|
401
356
|
}()
|
|
402
357
|
}]);
|
|
403
358
|
return MediaProperties;
|
|
404
359
|
}();
|
|
405
|
-
|
|
406
360
|
exports.default = MediaProperties;
|
|
407
361
|
//# sourceMappingURL=properties.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MediaProperties","options","MEETINGS","webrtcMediaConnection","mediaDirection","videoTrack","audioTrack","shareTrack","remoteShare","remoteAudioTrack","remoteVideoTrack","localQualityLevel","QUALITY_LEVELS","remoteQualityLevel","HIGH","mediaSettings","videoDeviceId","type","values","mediaPeerConnection","deviceId","LoggerProxy","logger","warn","unsetRemoteMedia","unsetLocalVideoTrack","unsetLocalShareTrack","unsetRemoteStream","unsetRemoteShare","isConnected","getConnectionState","MC","ConnectionState","Connected","resolve","reject","timer","connectionStateListener","log","clearTimeout","off","Event","CONNECTION_STATE_CHANGED","setTimeout","PC_BAIL_TIMEOUT","on","waitForMediaConnectionConnected","allStatsReports","getStats","statsResult","forEach","report","push","successfulCandidatePairs","filter","state","toLowerCase","foundConnectionType","some","pair","localCandidate","find","id","localCandidateId","undefined","connectionType","relayProtocol","toUpperCase","protocol"],"sources":["properties.ts"],"sourcesContent":["import {MediaConnection as MC} from '@webex/internal-media-core';\n\nimport {\n MEETINGS,\n PC_BAIL_TIMEOUT,\n QUALITY_LEVELS\n} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\n/**\n * @class MediaProperties\n */\nexport default class MediaProperties {\n audioTrack: any;\n localQualityLevel: any;\n mediaDirection: any;\n mediaSettings: any;\n webrtcMediaConnection: any;\n remoteAudioTrack: any;\n remoteQualityLevel: any;\n remoteShare: any;\n remoteVideoTrack: any;\n shareTrack: any;\n videoDeviceId: any;\n videoTrack: any;\n namespace = MEETINGS;\n\n /**\n * @param {Object} [options] -- to auto construct\n * @returns {MediaProperties}\n */\n constructor(options: any = {}) {\n this.webrtcMediaConnection = null;\n this.mediaDirection = options.mediaDirection;\n this.videoTrack = options.videoTrack;\n this.audioTrack = options.audioTrack;\n this.shareTrack = options.shareTrack;\n this.remoteShare = options.remoteShare;\n this.remoteAudioTrack = options.remoteAudioTrack;\n this.remoteVideoTrack = options.remoteVideoTrack;\n this.localQualityLevel = options.localQualityLevel || QUALITY_LEVELS['720p'];\n this.remoteQualityLevel = options.remoteQualityLevel || QUALITY_LEVELS.HIGH;\n this.mediaSettings = {};\n this.videoDeviceId = null;\n }\n\n /**\n * Retrieves the preferred video input device\n * @returns {Object|null}\n */\n getVideoDeviceId() {\n return this.videoDeviceId || null;\n }\n\n setMediaDirection(mediaDirection) {\n this.mediaDirection = mediaDirection;\n }\n\n setMediaSettings(type, values) {\n this.mediaSettings[type] = values;\n }\n\n setMediaPeerConnection(mediaPeerConnection) {\n this.webrtcMediaConnection = mediaPeerConnection;\n }\n\n setLocalVideoTrack(videoTrack) {\n this.videoTrack = videoTrack;\n }\n\n setLocalAudioTrack(audioTrack) {\n this.audioTrack = audioTrack;\n }\n\n setLocalQualityLevel(localQualityLevel) {\n this.localQualityLevel = localQualityLevel;\n }\n\n setLocalShareTrack(shareTrack) {\n this.shareTrack = shareTrack;\n }\n\n setRemoteQualityLevel(remoteQualityLevel) {\n this.remoteQualityLevel = remoteQualityLevel;\n }\n\n setRemoteShare(remoteShare) {\n this.remoteShare = remoteShare;\n }\n\n /**\n * Sets the remote audio track\n * @param {MediaTrack} remoteAudioTrack MediaTrack to save\n * @returns {void}\n */\n setRemoteAudioTrack(remoteAudioTrack: any) {\n this.remoteAudioTrack = remoteAudioTrack;\n }\n\n /**\n * Sets the remote video track\n * @param {MediaTrack} remoteVideoTrack MediaTrack to save\n * @returns {void}\n */\n setRemoteVideoTrack(remoteVideoTrack: any) {\n this.remoteVideoTrack = remoteVideoTrack;\n }\n\n /**\n * Stores the preferred video input device\n * @param {string} deviceId Preferred video input device\n * @returns {void}\n */\n setVideoDeviceId(deviceId: string) {\n this.videoDeviceId = deviceId;\n }\n\n unsetPeerConnection() {\n this.webrtcMediaConnection = null;\n }\n\n unsetLocalVideoTrack() {\n this.videoTrack = null;\n }\n\n unsetLocalShareTrack() {\n this.shareTrack = null;\n }\n\n unsetLocalAudioTrack() {\n this.audioTrack = null;\n }\n\n /**\n * Removes remote stream from class instance\n * @deprecated after v1.89.3\n * @returns {void}\n */\n unsetRemoteStream() {\n LoggerProxy.logger.warn('Media:properties#unsetRemoteStream --> [DEPRECATION WARNING]: unsetRemoteStream has been deprecated after v1.89.3 (use unsetRemoteTracks instead)');\n // unsets audio and video only\n this.unsetRemoteMedia();\n }\n\n /**\n * Removes both remote audio and video from class instance\n * @returns {void}\n */\n unsetRemoteMedia() {\n this.remoteAudioTrack = null;\n this.remoteVideoTrack = null;\n }\n\n unsetRemoteShare() {\n this.remoteShare = null;\n }\n\n unsetLocalVideoTracks() {\n this.unsetLocalVideoTrack();\n this.unsetLocalShareTrack();\n }\n\n /**\n * Removes remote stream and remote share from class instance\n * @deprecated after v1.89.3\n * @returns {void}\n */\n unsetRemoteStreams() {\n LoggerProxy.logger.warn('Media:properties#unsetRemoteStreams --> [DEPRECATION WARNING]: unsetRemoteStreams has been deprecated after v1.89.3 (use unsetRemoteTracks instead)');\n this.unsetRemoteStream();\n this.unsetRemoteShare();\n }\n\n /**\n * Unsets all remote tracks\n * @returns {void}\n */\n unsetRemoteTracks() {\n this.unsetRemoteMedia();\n this.unsetRemoteShare();\n }\n\n unsetShareStreams() {\n this.unsetLocalShareTrack();\n this.unsetRemoteShare();\n }\n\n /**\n * Removes both local and remote video stream from class instance\n * @deprecated after v1.89.3\n * @returns {void}\n */\n unsetMediaStreams() {\n LoggerProxy.logger.warn('Media:properties#unsetMediaStreams --> [DEPRECATION WARNING]: unsetMediaStreams has been deprecated after v1.89.3 (use unsetMediaTracks instead)');\n this.unsetLocalVideoTrack();\n this.unsetRemoteStream();\n }\n\n /**\n * Removes both local and remote video stream from class instance\n * @returns {void}\n */\n unsetMediaTracks() {\n this.unsetLocalVideoTrack();\n this.unsetRemoteMedia();\n }\n\n /**\n * Waits for the webrtc media connection to be connected.\n *\n * @returns {Promise<void>}\n */\n waitForMediaConnectionConnected() {\n const isConnected = () => (\n this.webrtcMediaConnection.getConnectionState() === MC.ConnectionState.Connected\n );\n\n if (isConnected()) {\n return Promise.resolve();\n }\n\n return new Promise((resolve, reject) => {\n let timer;\n\n const connectionStateListener = () => {\n LoggerProxy.logger.log(`Media:properties#waitForMediaConnectionConnected --> connection state: ${this.webrtcMediaConnection.getConnectionState()}`);\n\n if (isConnected()) {\n clearTimeout(timer);\n this.webrtcMediaConnection.off(MC.Event.CONNECTION_STATE_CHANGED, connectionStateListener);\n resolve();\n }\n };\n\n timer = setTimeout(() => {\n this.webrtcMediaConnection.off(MC.Event.CONNECTION_STATE_CHANGED, connectionStateListener);\n reject();\n }, PC_BAIL_TIMEOUT);\n\n this.webrtcMediaConnection.on(MC.Event.CONNECTION_STATE_CHANGED, connectionStateListener);\n });\n }\n\n /**\n * Returns the type of a connection that has been established\n *\n * @returns {Promise<'UDP' | 'TCP' | 'TURN-TLS' | 'TURN-TCP' | 'TURN-UDP' | 'unknown'>}\n */\n async getCurrentConnectionType() {\n // we can only get the connection type after ICE connection has been established\n await this.waitForMediaConnectionConnected();\n\n const allStatsReports = [];\n\n try {\n // eslint-disable-next-line no-await-in-loop\n const statsResult = await this.webrtcMediaConnection.getStats();\n\n statsResult.forEach((report) => allStatsReports.push(report));\n }\n catch (error) {\n LoggerProxy.logger.warn(`Media:properties#getCurrentConnectionType --> getStats() failed: ${error}`);\n }\n\n const successfulCandidatePairs = allStatsReports.filter(\n (report) => report.type === 'candidate-pair' && report.state?.toLowerCase() === 'succeeded'\n );\n\n let foundConnectionType = 'unknown';\n\n // all of the successful pairs should have the same connection type, so just return the type for the first one\n successfulCandidatePairs.some((pair) => {\n const localCandidate = allStatsReports.find((report) => report.type === 'local-candidate' && report.id === pair.localCandidateId);\n\n if (localCandidate === undefined) {\n LoggerProxy.logger.warn(`Media:properties#getCurrentConnectionType --> failed to find local candidate \"${pair.localCandidateId}\" in getStats() results`);\n\n return false;\n }\n\n let connectionType;\n\n if (localCandidate.relayProtocol) {\n connectionType = `TURN-${localCandidate.relayProtocol.toUpperCase()}`;\n }\n else {\n connectionType = localCandidate.protocol?.toUpperCase(); // it will be UDP or TCP\n }\n\n if (connectionType) {\n foundConnectionType = connectionType;\n\n return true;\n }\n\n return false;\n });\n\n return foundConnectionType;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["MediaProperties","options","MEETINGS","webrtcMediaConnection","mediaDirection","videoTrack","audioTrack","shareTrack","remoteShare","remoteAudioTrack","remoteVideoTrack","localQualityLevel","QUALITY_LEVELS","remoteQualityLevel","HIGH","mediaSettings","videoDeviceId","type","values","mediaPeerConnection","deviceId","LoggerProxy","logger","warn","unsetRemoteMedia","unsetLocalVideoTrack","unsetLocalShareTrack","unsetRemoteStream","unsetRemoteShare","isConnected","getConnectionState","ConnectionState","Connected","resolve","reject","timer","connectionStateListener","log","clearTimeout","off","Event","CONNECTION_STATE_CHANGED","setTimeout","PC_BAIL_TIMEOUT","on","waitForMediaConnectionConnected","allStatsReports","getStats","statsResult","forEach","report","push","successfulCandidatePairs","filter","state","toLowerCase","foundConnectionType","some","pair","localCandidate","find","id","localCandidateId","undefined","connectionType","relayProtocol","toUpperCase","protocol"],"sources":["properties.ts"],"sourcesContent":["import {ConnectionState, Event} from '@webex/internal-media-core';\n\nimport {LocalCameraTrack, LocalMicrophoneTrack, LocalDisplayTrack} from '@webex/media-helpers';\n\nimport {MEETINGS, PC_BAIL_TIMEOUT, QUALITY_LEVELS} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\n/**\n * @class MediaProperties\n */\nexport default class MediaProperties {\n audioTrack: LocalMicrophoneTrack | null;\n localQualityLevel: any;\n mediaDirection: any;\n mediaSettings: any;\n webrtcMediaConnection: any;\n remoteAudioTrack: any;\n remoteQualityLevel: any;\n remoteShare: any;\n remoteVideoTrack: any;\n shareTrack: LocalDisplayTrack | null;\n videoDeviceId: any;\n videoTrack: LocalCameraTrack | null;\n namespace = MEETINGS;\n\n /**\n * @param {Object} [options] -- to auto construct\n * @returns {MediaProperties}\n */\n constructor(options: any = {}) {\n this.webrtcMediaConnection = null;\n this.mediaDirection = options.mediaDirection;\n this.videoTrack = options.videoTrack || null;\n this.audioTrack = options.audioTrack || null;\n this.shareTrack = options.shareTrack || null;\n this.remoteShare = options.remoteShare;\n this.remoteAudioTrack = options.remoteAudioTrack;\n this.remoteVideoTrack = options.remoteVideoTrack;\n this.localQualityLevel = options.localQualityLevel || QUALITY_LEVELS['720p'];\n this.remoteQualityLevel = options.remoteQualityLevel || QUALITY_LEVELS.HIGH;\n this.mediaSettings = {};\n this.videoDeviceId = null;\n }\n\n /**\n * Retrieves the preferred video input device\n * @returns {Object|null}\n */\n getVideoDeviceId() {\n return this.videoDeviceId || null;\n }\n\n setMediaDirection(mediaDirection) {\n this.mediaDirection = mediaDirection;\n }\n\n setMediaSettings(type, values) {\n this.mediaSettings[type] = values;\n }\n\n setMediaPeerConnection(mediaPeerConnection) {\n this.webrtcMediaConnection = mediaPeerConnection;\n }\n\n setLocalVideoTrack(videoTrack: LocalCameraTrack | null) {\n this.videoTrack = videoTrack;\n }\n\n setLocalAudioTrack(audioTrack: LocalMicrophoneTrack | null) {\n this.audioTrack = audioTrack;\n }\n\n setLocalQualityLevel(localQualityLevel) {\n this.localQualityLevel = localQualityLevel;\n }\n\n setLocalShareTrack(shareTrack: LocalDisplayTrack | null) {\n this.shareTrack = shareTrack;\n }\n\n setRemoteQualityLevel(remoteQualityLevel) {\n this.remoteQualityLevel = remoteQualityLevel;\n }\n\n setRemoteShare(remoteShare) {\n this.remoteShare = remoteShare;\n }\n\n /**\n * Sets the remote audio track\n * @param {MediaTrack} remoteAudioTrack MediaTrack to save\n * @returns {void}\n */\n setRemoteAudioTrack(remoteAudioTrack: any) {\n this.remoteAudioTrack = remoteAudioTrack;\n }\n\n /**\n * Sets the remote video track\n * @param {MediaTrack} remoteVideoTrack MediaTrack to save\n * @returns {void}\n */\n setRemoteVideoTrack(remoteVideoTrack: any) {\n this.remoteVideoTrack = remoteVideoTrack;\n }\n\n /**\n * Stores the preferred video input device\n * @param {string} deviceId Preferred video input device\n * @returns {void}\n */\n setVideoDeviceId(deviceId: string) {\n this.videoDeviceId = deviceId;\n }\n\n unsetPeerConnection() {\n this.webrtcMediaConnection = null;\n }\n\n unsetLocalVideoTrack() {\n this.videoTrack = null;\n }\n\n unsetLocalShareTrack() {\n this.shareTrack = null;\n }\n\n unsetLocalAudioTrack() {\n this.audioTrack = null;\n }\n\n /**\n * Removes remote stream from class instance\n * @deprecated after v1.89.3\n * @returns {void}\n */\n unsetRemoteStream() {\n LoggerProxy.logger.warn(\n 'Media:properties#unsetRemoteStream --> [DEPRECATION WARNING]: unsetRemoteStream has been deprecated after v1.89.3 (use unsetRemoteTracks instead)'\n );\n // unsets audio and video only\n this.unsetRemoteMedia();\n }\n\n /**\n * Removes both remote audio and video from class instance\n * @returns {void}\n */\n unsetRemoteMedia() {\n this.remoteAudioTrack = null;\n this.remoteVideoTrack = null;\n }\n\n unsetRemoteShare() {\n this.remoteShare = null;\n }\n\n unsetLocalVideoTracks() {\n this.unsetLocalVideoTrack();\n this.unsetLocalShareTrack();\n }\n\n /**\n * Removes remote stream and remote share from class instance\n * @deprecated after v1.89.3\n * @returns {void}\n */\n unsetRemoteStreams() {\n LoggerProxy.logger.warn(\n 'Media:properties#unsetRemoteStreams --> [DEPRECATION WARNING]: unsetRemoteStreams has been deprecated after v1.89.3 (use unsetRemoteTracks instead)'\n );\n this.unsetRemoteStream();\n this.unsetRemoteShare();\n }\n\n /**\n * Unsets all remote tracks\n * @returns {void}\n */\n unsetRemoteTracks() {\n this.unsetRemoteMedia();\n this.unsetRemoteShare();\n }\n\n unsetShareStreams() {\n this.unsetLocalShareTrack();\n this.unsetRemoteShare();\n }\n\n /**\n * Removes both local and remote video stream from class instance\n * @deprecated after v1.89.3\n * @returns {void}\n */\n unsetMediaStreams() {\n LoggerProxy.logger.warn(\n 'Media:properties#unsetMediaStreams --> [DEPRECATION WARNING]: unsetMediaStreams has been deprecated after v1.89.3 (use unsetMediaTracks instead)'\n );\n this.unsetLocalVideoTrack();\n this.unsetRemoteStream();\n }\n\n /**\n * Removes both local and remote video stream from class instance\n * @returns {void}\n */\n unsetMediaTracks() {\n this.unsetLocalVideoTrack();\n this.unsetRemoteMedia();\n }\n\n /**\n * Waits for the webrtc media connection to be connected.\n *\n * @returns {Promise<void>}\n */\n waitForMediaConnectionConnected(): Promise<void> {\n const isConnected = () =>\n this.webrtcMediaConnection.getConnectionState() === ConnectionState.Connected;\n\n if (isConnected()) {\n return Promise.resolve();\n }\n\n return new Promise<void>((resolve, reject) => {\n let timer;\n\n const connectionStateListener = () => {\n LoggerProxy.logger.log(\n `Media:properties#waitForMediaConnectionConnected --> connection state: ${this.webrtcMediaConnection.getConnectionState()}`\n );\n\n if (isConnected()) {\n clearTimeout(timer);\n this.webrtcMediaConnection.off(Event.CONNECTION_STATE_CHANGED, connectionStateListener);\n resolve();\n }\n };\n\n timer = setTimeout(() => {\n this.webrtcMediaConnection.off(Event.CONNECTION_STATE_CHANGED, connectionStateListener);\n reject();\n }, PC_BAIL_TIMEOUT);\n\n this.webrtcMediaConnection.on(Event.CONNECTION_STATE_CHANGED, connectionStateListener);\n });\n }\n\n /**\n * Returns the type of a connection that has been established\n *\n * @returns {Promise<'UDP' | 'TCP' | 'TURN-TLS' | 'TURN-TCP' | 'TURN-UDP' | 'unknown'>}\n */\n async getCurrentConnectionType() {\n // we can only get the connection type after ICE connection has been established\n await this.waitForMediaConnectionConnected();\n\n const allStatsReports = [];\n\n try {\n const statsResult = await this.webrtcMediaConnection.getStats();\n statsResult.forEach((report) => allStatsReports.push(report));\n } catch (error) {\n LoggerProxy.logger.warn(\n `Media:properties#getCurrentConnectionType --> getStats() failed: ${error}`\n );\n }\n\n const successfulCandidatePairs = allStatsReports.filter(\n (report) => report.type === 'candidate-pair' && report.state?.toLowerCase() === 'succeeded'\n );\n\n let foundConnectionType = 'unknown';\n\n // all of the successful pairs should have the same connection type, so just return the type for the first one\n successfulCandidatePairs.some((pair) => {\n const localCandidate = allStatsReports.find(\n (report) => report.type === 'local-candidate' && report.id === pair.localCandidateId\n );\n\n if (localCandidate === undefined) {\n LoggerProxy.logger.warn(\n `Media:properties#getCurrentConnectionType --> failed to find local candidate \"${pair.localCandidateId}\" in getStats() results`\n );\n\n return false;\n }\n\n let connectionType;\n\n if (localCandidate.relayProtocol) {\n connectionType = `TURN-${localCandidate.relayProtocol.toUpperCase()}`;\n } else {\n connectionType = localCandidate.protocol?.toUpperCase(); // it will be UDP or TCP\n }\n\n if (connectionType) {\n foundConnectionType = connectionType;\n\n return true;\n }\n\n return false;\n });\n\n return foundConnectionType;\n }\n}\n"],"mappings":"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"}
|
package/dist/media/util.js
CHANGED
|
@@ -1,31 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
|
|
11
8
|
exports.default = void 0;
|
|
12
|
-
|
|
13
9
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
14
|
-
|
|
15
10
|
/* globals MediaStream */
|
|
16
|
-
var MediaUtil = {};
|
|
17
11
|
|
|
12
|
+
var MediaUtil = {};
|
|
18
13
|
MediaUtil.createMediaStream = function (tracks) {
|
|
19
14
|
if (!tracks) {
|
|
20
|
-
_loggerProxy.default.logger.error(
|
|
15
|
+
_loggerProxy.default.logger.error("Media:util#createMediaStream --> Tracks don't exist");
|
|
21
16
|
}
|
|
22
|
-
|
|
23
17
|
var filtredTracks = tracks.filter(function (element) {
|
|
24
18
|
return !!element;
|
|
25
19
|
});
|
|
26
20
|
return new MediaStream(filtredTracks);
|
|
27
21
|
};
|
|
28
|
-
|
|
29
22
|
var _default = MediaUtil;
|
|
30
23
|
exports.default = _default;
|
|
31
24
|
//# sourceMappingURL=util.js.map
|
package/dist/media/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MediaUtil","createMediaStream","tracks","LoggerProxy","logger","error","filtredTracks","filter","element","MediaStream"],"sources":["util.ts"],"sourcesContent":["/* globals MediaStream */\n\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nconst MediaUtil: any = {};\n\nMediaUtil.createMediaStream = (tracks) => {\n if (!tracks) {\n LoggerProxy.logger.error(
|
|
1
|
+
{"version":3,"names":["MediaUtil","createMediaStream","tracks","LoggerProxy","logger","error","filtredTracks","filter","element","MediaStream"],"sources":["util.ts"],"sourcesContent":["/* globals MediaStream */\n\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nconst MediaUtil: any = {};\n\nMediaUtil.createMediaStream = (tracks) => {\n if (!tracks) {\n LoggerProxy.logger.error(\"Media:util#createMediaStream --> Tracks don't exist\");\n }\n const filtredTracks = tracks.filter((element) => !!element);\n\n return new MediaStream(filtredTracks);\n};\n\nexport default MediaUtil;\n"],"mappings":";;;;;;;;AAEA;AAFA;;AAIA,IAAMA,SAAc,GAAG,CAAC,CAAC;AAEzBA,SAAS,CAACC,iBAAiB,GAAG,UAACC,MAAM,EAAK;EACxC,IAAI,CAACA,MAAM,EAAE;IACXC,oBAAW,CAACC,MAAM,CAACC,KAAK,CAAC,qDAAqD,CAAC;EACjF;EACA,IAAMC,aAAa,GAAGJ,MAAM,CAACK,MAAM,CAAC,UAACC,OAAO;IAAA,OAAK,CAAC,CAACA,OAAO;EAAA,EAAC;EAE3D,OAAO,IAAIC,WAAW,CAACH,aAAa,CAAC;AACvC,CAAC;AAAC,eAEaN,SAAS;AAAA"}
|