@webex/media-helpers 3.0.0-stream-classes.4 → 3.0.1-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -25
- package/babel.config.json +13 -0
- package/dist/constants.d.ts +13 -0
- package/dist/constants.js +8 -12
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +41 -42
- package/dist/index.js.map +1 -1
- package/dist/webrtc-core.d.ts +58 -0
- package/dist/webrtc-core.js +90 -185
- package/dist/webrtc-core.js.map +1 -1
- package/jest.config.js +6 -0
- package/package.json +23 -8
- package/src/webrtc-core.ts +2 -22
- package/test/unit/spec/webrtc-core.js +9 -9
- package/tsconfig.json +6 -0
package/README.md
CHANGED
|
@@ -31,20 +31,16 @@ Noise reduction (e.g., background noise removal)
|
|
|
31
31
|
The virtual background effect provides a virtual background for video calling. The virtual background may be an image, an mp4 video, or the user's background with blur applied.
|
|
32
32
|
|
|
33
33
|
**Applying the effect**
|
|
34
|
-
1. Create a new camera
|
|
34
|
+
1. Create a new camera stream instance by using createCameraStream() method.
|
|
35
35
|
2. Create a VirtualBackgroundEffect instance by passing appropriate constraints.
|
|
36
|
-
3. Use addEffect() method on
|
|
37
|
-
4. Enable the effect after adding it to
|
|
36
|
+
3. Use addEffect() method on cameraStream to apply effect on it.
|
|
37
|
+
4. Enable the effect after adding it to cameraStream using enable() method available on effect. Effect will be enabled on cameraStream.
|
|
38
38
|
|
|
39
39
|
```javascript
|
|
40
|
-
import {
|
|
40
|
+
import {createCameraStream, VirtualBackgroundEffect} from '@webex/media-helpers';
|
|
41
41
|
|
|
42
|
-
// Create a new video stream
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
const videoTrackFromLocalStream = stream.getVideoTracks()[0];
|
|
46
|
-
|
|
47
|
-
const cameraTrack = new LocalCameraTrack(new MediaStream([videoTrackFromLocalStream]));
|
|
42
|
+
// Create a new video stream.
|
|
43
|
+
const cameraStream = createCameraStream(optionalVideoConstraints);
|
|
48
44
|
|
|
49
45
|
// Create the effect.
|
|
50
46
|
const effect = new VirtualBackgroundEffect({
|
|
@@ -54,10 +50,10 @@ const effect = new VirtualBackgroundEffect({
|
|
|
54
50
|
quality: `LOW`,
|
|
55
51
|
});
|
|
56
52
|
|
|
57
|
-
// add the effect on the input camera
|
|
58
|
-
await
|
|
53
|
+
// add the effect on the input camera stream.
|
|
54
|
+
await cameraStream.addEffect(effect);
|
|
59
55
|
|
|
60
|
-
//enable the effect once it is added to the
|
|
56
|
+
//enable the effect once it is added to the stream
|
|
61
57
|
await effect.enable()
|
|
62
58
|
```
|
|
63
59
|
|
|
@@ -65,20 +61,16 @@ await effect.enable()
|
|
|
65
61
|
The noise reduction effect removes background noise from an audio stream to provide clear audio for calling.
|
|
66
62
|
|
|
67
63
|
**Applying the effect**
|
|
68
|
-
1. Create a new microphone
|
|
64
|
+
1. Create a new microphone stream instance by using createMicrophoneStream() method.
|
|
69
65
|
2. Create a NoiseReductionEffect instance by passing appropriate constraints.
|
|
70
|
-
3. Use addEffect() method on
|
|
71
|
-
4. Enable the effect after adding it to
|
|
66
|
+
3. Use addEffect() method on microphoneStream to apply effect on it.
|
|
67
|
+
4. Enable the effect after adding it to microphoneStream using enable() method available on effect. Effect will be enabled on microphoneStream.
|
|
72
68
|
|
|
73
69
|
```javascript
|
|
74
|
-
import {
|
|
75
|
-
|
|
76
|
-
// Create a new audio stream by getting a user's audio media.
|
|
77
|
-
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
|
78
|
-
|
|
79
|
-
const audioTrackFromLocalStream = stream.getAudioTracks()[0];
|
|
70
|
+
import {createMicrophoneStream, NoiseReductionEffect} from '@webex/media-helpers';
|
|
80
71
|
|
|
81
|
-
|
|
72
|
+
// Create a new audio stream.
|
|
73
|
+
const microphoneStream = createMicrophoneStream(optionalAudioConstraints);
|
|
82
74
|
|
|
83
75
|
// Create the effect.
|
|
84
76
|
const effect = new NoiseReductionEffect({
|
|
@@ -86,8 +78,8 @@ const effect = new NoiseReductionEffect({
|
|
|
86
78
|
mode: 'WORKLET', // or 'LEGACY'
|
|
87
79
|
});
|
|
88
80
|
|
|
89
|
-
// add the effect on microphone
|
|
90
|
-
await
|
|
81
|
+
// add the effect on microphone stream.
|
|
82
|
+
await microphoneStream.addEffect(effect);
|
|
91
83
|
|
|
92
84
|
//enable the effect once it is added to the track
|
|
93
85
|
await effect.enable()
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { VideoDeviceConstraints } from '@webex/internal-media-core';
|
|
2
|
+
export declare enum FacingMode {
|
|
3
|
+
user = "user",
|
|
4
|
+
environment = "environment"
|
|
5
|
+
}
|
|
6
|
+
export declare enum DisplaySurface {
|
|
7
|
+
browser = "browser",
|
|
8
|
+
monitor = "monitor",
|
|
9
|
+
window = "window"
|
|
10
|
+
}
|
|
11
|
+
export declare const PresetCameraConstraints: {
|
|
12
|
+
[key: string]: VideoDeviceConstraints;
|
|
13
|
+
};
|
package/dist/constants.js
CHANGED
|
@@ -1,24 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
_Object$defineProperty(exports, "__esModule", {
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
6
|
exports.PresetCameraConstraints = exports.FacingMode = exports.DisplaySurface = void 0;
|
|
8
|
-
|
|
9
|
-
exports.FacingMode = FacingMode;
|
|
10
|
-
(function (FacingMode) {
|
|
7
|
+
let FacingMode = exports.FacingMode = /*#__PURE__*/function (FacingMode) {
|
|
11
8
|
FacingMode["user"] = "user";
|
|
12
9
|
FacingMode["environment"] = "environment";
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
exports.DisplaySurface = DisplaySurface
|
|
16
|
-
(function (DisplaySurface) {
|
|
10
|
+
return FacingMode;
|
|
11
|
+
}({}); // can be used later on when we add constraints in create display track
|
|
12
|
+
let DisplaySurface = exports.DisplaySurface = /*#__PURE__*/function (DisplaySurface) {
|
|
17
13
|
DisplaySurface["browser"] = "browser";
|
|
18
14
|
DisplaySurface["monitor"] = "monitor";
|
|
19
15
|
DisplaySurface["window"] = "window";
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
return DisplaySurface;
|
|
17
|
+
}({});
|
|
18
|
+
const PresetCameraConstraints = exports.PresetCameraConstraints = {
|
|
22
19
|
'1080p': {
|
|
23
20
|
frameRate: 30,
|
|
24
21
|
width: 1920,
|
|
@@ -55,5 +52,4 @@ var PresetCameraConstraints = {
|
|
|
55
52
|
height: 120
|
|
56
53
|
}
|
|
57
54
|
};
|
|
58
|
-
exports.PresetCameraConstraints = PresetCameraConstraints;
|
|
59
55
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
null
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { getDevices, LocalStream, LocalDisplayStream, LocalSystemAudioStream, LocalStreamEventNames, StreamEventNames, RemoteStream, type ServerMuteReason, LocalMicrophoneStreamEventNames, LocalCameraStreamEventNames, LocalMicrophoneStream, LocalCameraStream, createMicrophoneStream, createCameraStream, createDisplayStream, createDisplayStreamWithAudio, type VideoContentHint, } from './webrtc-core';
|
|
2
|
+
export { NoiseReductionEffect, VirtualBackgroundEffect } from '@webex/web-media-effects';
|
|
3
|
+
export type { NoiseReductionEffectOptions, VirtualBackgroundEffectOptions, } from '@webex/web-media-effects';
|
|
4
|
+
export { FacingMode, DisplaySurface, PresetCameraConstraints } from './constants';
|
package/dist/index.js
CHANGED
|
@@ -1,126 +1,125 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
_Object$defineProperty(exports, "__esModule", {
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
|
-
|
|
6
|
+
Object.defineProperty(exports, "DisplaySurface", {
|
|
8
7
|
enumerable: true,
|
|
9
|
-
get: function
|
|
8
|
+
get: function () {
|
|
10
9
|
return _constants.DisplaySurface;
|
|
11
10
|
}
|
|
12
11
|
});
|
|
13
|
-
|
|
12
|
+
Object.defineProperty(exports, "FacingMode", {
|
|
14
13
|
enumerable: true,
|
|
15
|
-
get: function
|
|
14
|
+
get: function () {
|
|
16
15
|
return _constants.FacingMode;
|
|
17
16
|
}
|
|
18
17
|
});
|
|
19
|
-
|
|
18
|
+
Object.defineProperty(exports, "LocalCameraStream", {
|
|
20
19
|
enumerable: true,
|
|
21
|
-
get: function
|
|
20
|
+
get: function () {
|
|
22
21
|
return _webrtcCore.LocalCameraStream;
|
|
23
22
|
}
|
|
24
23
|
});
|
|
25
|
-
|
|
24
|
+
Object.defineProperty(exports, "LocalCameraStreamEventNames", {
|
|
26
25
|
enumerable: true,
|
|
27
|
-
get: function
|
|
26
|
+
get: function () {
|
|
28
27
|
return _webrtcCore.LocalCameraStreamEventNames;
|
|
29
28
|
}
|
|
30
29
|
});
|
|
31
|
-
|
|
30
|
+
Object.defineProperty(exports, "LocalDisplayStream", {
|
|
32
31
|
enumerable: true,
|
|
33
|
-
get: function
|
|
32
|
+
get: function () {
|
|
34
33
|
return _webrtcCore.LocalDisplayStream;
|
|
35
34
|
}
|
|
36
35
|
});
|
|
37
|
-
|
|
36
|
+
Object.defineProperty(exports, "LocalMicrophoneStream", {
|
|
38
37
|
enumerable: true,
|
|
39
|
-
get: function
|
|
38
|
+
get: function () {
|
|
40
39
|
return _webrtcCore.LocalMicrophoneStream;
|
|
41
40
|
}
|
|
42
41
|
});
|
|
43
|
-
|
|
42
|
+
Object.defineProperty(exports, "LocalMicrophoneStreamEventNames", {
|
|
44
43
|
enumerable: true,
|
|
45
|
-
get: function
|
|
44
|
+
get: function () {
|
|
46
45
|
return _webrtcCore.LocalMicrophoneStreamEventNames;
|
|
47
46
|
}
|
|
48
47
|
});
|
|
49
|
-
|
|
48
|
+
Object.defineProperty(exports, "LocalStream", {
|
|
50
49
|
enumerable: true,
|
|
51
|
-
get: function
|
|
50
|
+
get: function () {
|
|
52
51
|
return _webrtcCore.LocalStream;
|
|
53
52
|
}
|
|
54
53
|
});
|
|
55
|
-
|
|
54
|
+
Object.defineProperty(exports, "LocalStreamEventNames", {
|
|
56
55
|
enumerable: true,
|
|
57
|
-
get: function
|
|
56
|
+
get: function () {
|
|
58
57
|
return _webrtcCore.LocalStreamEventNames;
|
|
59
58
|
}
|
|
60
59
|
});
|
|
61
|
-
|
|
60
|
+
Object.defineProperty(exports, "LocalSystemAudioStream", {
|
|
62
61
|
enumerable: true,
|
|
63
|
-
get: function
|
|
62
|
+
get: function () {
|
|
64
63
|
return _webrtcCore.LocalSystemAudioStream;
|
|
65
64
|
}
|
|
66
65
|
});
|
|
67
|
-
|
|
66
|
+
Object.defineProperty(exports, "NoiseReductionEffect", {
|
|
68
67
|
enumerable: true,
|
|
69
|
-
get: function
|
|
68
|
+
get: function () {
|
|
70
69
|
return _webMediaEffects.NoiseReductionEffect;
|
|
71
70
|
}
|
|
72
71
|
});
|
|
73
|
-
|
|
72
|
+
Object.defineProperty(exports, "PresetCameraConstraints", {
|
|
74
73
|
enumerable: true,
|
|
75
|
-
get: function
|
|
74
|
+
get: function () {
|
|
76
75
|
return _constants.PresetCameraConstraints;
|
|
77
76
|
}
|
|
78
77
|
});
|
|
79
|
-
|
|
78
|
+
Object.defineProperty(exports, "RemoteStream", {
|
|
80
79
|
enumerable: true,
|
|
81
|
-
get: function
|
|
80
|
+
get: function () {
|
|
82
81
|
return _webrtcCore.RemoteStream;
|
|
83
82
|
}
|
|
84
83
|
});
|
|
85
|
-
|
|
84
|
+
Object.defineProperty(exports, "StreamEventNames", {
|
|
86
85
|
enumerable: true,
|
|
87
|
-
get: function
|
|
86
|
+
get: function () {
|
|
88
87
|
return _webrtcCore.StreamEventNames;
|
|
89
88
|
}
|
|
90
89
|
});
|
|
91
|
-
|
|
90
|
+
Object.defineProperty(exports, "VirtualBackgroundEffect", {
|
|
92
91
|
enumerable: true,
|
|
93
|
-
get: function
|
|
92
|
+
get: function () {
|
|
94
93
|
return _webMediaEffects.VirtualBackgroundEffect;
|
|
95
94
|
}
|
|
96
95
|
});
|
|
97
|
-
|
|
96
|
+
Object.defineProperty(exports, "createCameraStream", {
|
|
98
97
|
enumerable: true,
|
|
99
|
-
get: function
|
|
98
|
+
get: function () {
|
|
100
99
|
return _webrtcCore.createCameraStream;
|
|
101
100
|
}
|
|
102
101
|
});
|
|
103
|
-
|
|
102
|
+
Object.defineProperty(exports, "createDisplayStream", {
|
|
104
103
|
enumerable: true,
|
|
105
|
-
get: function
|
|
104
|
+
get: function () {
|
|
106
105
|
return _webrtcCore.createDisplayStream;
|
|
107
106
|
}
|
|
108
107
|
});
|
|
109
|
-
|
|
108
|
+
Object.defineProperty(exports, "createDisplayStreamWithAudio", {
|
|
110
109
|
enumerable: true,
|
|
111
|
-
get: function
|
|
110
|
+
get: function () {
|
|
112
111
|
return _webrtcCore.createDisplayStreamWithAudio;
|
|
113
112
|
}
|
|
114
113
|
});
|
|
115
|
-
|
|
114
|
+
Object.defineProperty(exports, "createMicrophoneStream", {
|
|
116
115
|
enumerable: true,
|
|
117
|
-
get: function
|
|
116
|
+
get: function () {
|
|
118
117
|
return _webrtcCore.createMicrophoneStream;
|
|
119
118
|
}
|
|
120
119
|
});
|
|
121
|
-
|
|
120
|
+
Object.defineProperty(exports, "getDevices", {
|
|
122
121
|
enumerable: true,
|
|
123
|
-
get: function
|
|
122
|
+
get: function () {
|
|
124
123
|
return _webrtcCore.getDevices;
|
|
125
124
|
}
|
|
126
125
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
null
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { AudioDeviceConstraints, LocalDisplayStream, LocalSystemAudioStream, LocalMicrophoneStream as WcmeLocalMicrophoneStream, LocalCameraStream as WcmeLocalCameraStream, VideoDeviceConstraints } from '@webex/internal-media-core';
|
|
2
|
+
import { TypedEvent, WithEventsDummyType } from '@webex/ts-events';
|
|
3
|
+
export { getDevices, LocalStream, LocalDisplayStream, LocalSystemAudioStream, LocalStreamEventNames, StreamEventNames, RemoteStream, type VideoContentHint, } from '@webex/internal-media-core';
|
|
4
|
+
export type ServerMuteReason = 'remotelyMuted' | 'clientRequestFailed' | 'localUnmuteRequired';
|
|
5
|
+
export declare enum LocalMicrophoneStreamEventNames {
|
|
6
|
+
ServerMuted = "muted:byServer"
|
|
7
|
+
}
|
|
8
|
+
export declare enum LocalCameraStreamEventNames {
|
|
9
|
+
ServerMuted = "muted:byServer"
|
|
10
|
+
}
|
|
11
|
+
interface LocalMicrophoneStreamEvents {
|
|
12
|
+
[LocalMicrophoneStreamEventNames.ServerMuted]: TypedEvent<(muted: boolean, reason: ServerMuteReason) => void>;
|
|
13
|
+
}
|
|
14
|
+
interface LocalCameraStreamEvents {
|
|
15
|
+
[LocalMicrophoneStreamEventNames.ServerMuted]: TypedEvent<(muted: boolean, reason: ServerMuteReason) => void>;
|
|
16
|
+
}
|
|
17
|
+
declare class _LocalMicrophoneStream extends WcmeLocalMicrophoneStream {
|
|
18
|
+
private unmuteAllowed;
|
|
19
|
+
[LocalMicrophoneStreamEventNames.ServerMuted]: TypedEvent<(muted: boolean, reason: ServerMuteReason) => void>;
|
|
20
|
+
/**
|
|
21
|
+
* @returns true if user is allowed to unmute the track, false otherwise
|
|
22
|
+
*/
|
|
23
|
+
isUnmuteAllowed(): boolean;
|
|
24
|
+
setMuted(muted: boolean): void;
|
|
25
|
+
}
|
|
26
|
+
declare class _LocalCameraStream extends WcmeLocalCameraStream {
|
|
27
|
+
private unmuteAllowed;
|
|
28
|
+
[LocalCameraStreamEventNames.ServerMuted]: TypedEvent<(muted: boolean, reason: ServerMuteReason) => void>;
|
|
29
|
+
/**
|
|
30
|
+
* @returns true if user is allowed to unmute the track, false otherwise
|
|
31
|
+
*/
|
|
32
|
+
isUnmuteAllowed(): boolean;
|
|
33
|
+
setMuted(muted: boolean): void;
|
|
34
|
+
}
|
|
35
|
+
export declare const createMicrophoneStream: (constraints?: AudioDeviceConstraints) => Promise<{
|
|
36
|
+
on<K extends LocalMicrophoneStreamEventNames.ServerMuted, E extends LocalMicrophoneStreamEvents[K] extends infer T ? T extends LocalMicrophoneStreamEvents[K] ? T extends TypedEvent<infer X extends (...args: any[]) => void> ? X : never : never : never>(eventName: K, handler: E): void;
|
|
37
|
+
once<K_1 extends LocalMicrophoneStreamEventNames.ServerMuted, E_1 extends LocalMicrophoneStreamEvents[K_1] extends infer T_1 ? T_1 extends LocalMicrophoneStreamEvents[K_1] ? T_1 extends TypedEvent<infer X extends (...args: any[]) => void> ? X : never : never : never>(eventName: K_1, handler: E_1): void;
|
|
38
|
+
off<K_2 extends LocalMicrophoneStreamEventNames.ServerMuted, E_2 extends LocalMicrophoneStreamEvents[K_2] extends infer T_2 ? T_2 extends LocalMicrophoneStreamEvents[K_2] ? T_2 extends TypedEvent<infer X extends (...args: any[]) => void> ? X : never : never : never>(eventName: K_2, handler: E_2): void;
|
|
39
|
+
} & _LocalMicrophoneStream>;
|
|
40
|
+
export declare const createCameraStream: (constraints?: VideoDeviceConstraints) => Promise<{
|
|
41
|
+
on<K extends LocalMicrophoneStreamEventNames.ServerMuted, E extends LocalCameraStreamEvents[K] extends infer T ? T extends LocalCameraStreamEvents[K] ? T extends TypedEvent<infer X extends (...args: any[]) => void> ? X : never : never : never>(eventName: K, handler: E): void;
|
|
42
|
+
once<K_1 extends LocalMicrophoneStreamEventNames.ServerMuted, E_1 extends LocalCameraStreamEvents[K_1] extends infer T_1 ? T_1 extends LocalCameraStreamEvents[K_1] ? T_1 extends TypedEvent<infer X extends (...args: any[]) => void> ? X : never : never : never>(eventName: K_1, handler: E_1): void;
|
|
43
|
+
off<K_2 extends LocalMicrophoneStreamEventNames.ServerMuted, E_2 extends LocalCameraStreamEvents[K_2] extends infer T_2 ? T_2 extends LocalCameraStreamEvents[K_2] ? T_2 extends TypedEvent<infer X extends (...args: any[]) => void> ? X : never : never : never>(eventName: K_2, handler: E_2): void;
|
|
44
|
+
} & _LocalCameraStream>;
|
|
45
|
+
export declare const createDisplayStream: () => Promise<LocalDisplayStream>;
|
|
46
|
+
export declare const createDisplayStreamWithAudio: () => Promise<[LocalDisplayStream, LocalSystemAudioStream]>;
|
|
47
|
+
export declare const LocalMicrophoneStream: (new (...args: any[]) => {
|
|
48
|
+
on<K extends LocalMicrophoneStreamEventNames.ServerMuted, E extends LocalMicrophoneStreamEvents[K] extends infer T ? T extends LocalMicrophoneStreamEvents[K] ? T extends TypedEvent<infer X extends (...args: any[]) => void> ? X : never : never : never>(eventName: K, handler: E): void;
|
|
49
|
+
once<K_1 extends LocalMicrophoneStreamEventNames.ServerMuted, E_1 extends LocalMicrophoneStreamEvents[K_1] extends infer T_1 ? T_1 extends LocalMicrophoneStreamEvents[K_1] ? T_1 extends TypedEvent<infer X extends (...args: any[]) => void> ? X : never : never : never>(eventName: K_1, handler: E_1): void;
|
|
50
|
+
off<K_2 extends LocalMicrophoneStreamEventNames.ServerMuted, E_2 extends LocalMicrophoneStreamEvents[K_2] extends infer T_2 ? T_2 extends LocalMicrophoneStreamEvents[K_2] ? T_2 extends TypedEvent<infer X extends (...args: any[]) => void> ? X : never : never : never>(eventName: K_2, handler: E_2): void;
|
|
51
|
+
}) & typeof _LocalMicrophoneStream;
|
|
52
|
+
export type LocalMicrophoneStream = _LocalMicrophoneStream & WithEventsDummyType<LocalMicrophoneStreamEvents>;
|
|
53
|
+
export declare const LocalCameraStream: (new (...args: any[]) => {
|
|
54
|
+
on<K extends LocalMicrophoneStreamEventNames.ServerMuted, E extends LocalCameraStreamEvents[K] extends infer T ? T extends LocalCameraStreamEvents[K] ? T extends TypedEvent<infer X extends (...args: any[]) => void> ? X : never : never : never>(eventName: K, handler: E): void;
|
|
55
|
+
once<K_1 extends LocalMicrophoneStreamEventNames.ServerMuted, E_1 extends LocalCameraStreamEvents[K_1] extends infer T_1 ? T_1 extends LocalCameraStreamEvents[K_1] ? T_1 extends TypedEvent<infer X extends (...args: any[]) => void> ? X : never : never : never>(eventName: K_1, handler: E_1): void;
|
|
56
|
+
off<K_2 extends LocalMicrophoneStreamEventNames.ServerMuted, E_2 extends LocalCameraStreamEvents[K_2] extends infer T_2 ? T_2 extends LocalCameraStreamEvents[K_2] ? T_2 extends TypedEvent<infer X extends (...args: any[]) => void> ? X : never : never : never>(eventName: K_2, handler: E_2): void;
|
|
57
|
+
}) & typeof _LocalCameraStream;
|
|
58
|
+
export type LocalCameraStream = _LocalCameraStream & WithEventsDummyType<LocalCameraStreamEvents>;
|
package/dist/webrtc-core.js
CHANGED
|
@@ -1,243 +1,148 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
5
|
-
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
6
|
-
_Object$defineProperty(exports, "__esModule", {
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
7
4
|
value: true
|
|
8
5
|
});
|
|
9
6
|
exports.LocalCameraStreamEventNames = exports.LocalCameraStream = void 0;
|
|
10
|
-
|
|
7
|
+
Object.defineProperty(exports, "LocalDisplayStream", {
|
|
11
8
|
enumerable: true,
|
|
12
|
-
get: function
|
|
9
|
+
get: function () {
|
|
13
10
|
return _internalMediaCore.LocalDisplayStream;
|
|
14
11
|
}
|
|
15
12
|
});
|
|
16
13
|
exports.LocalMicrophoneStreamEventNames = exports.LocalMicrophoneStream = void 0;
|
|
17
|
-
|
|
14
|
+
Object.defineProperty(exports, "LocalStream", {
|
|
18
15
|
enumerable: true,
|
|
19
|
-
get: function
|
|
16
|
+
get: function () {
|
|
20
17
|
return _internalMediaCore.LocalStream;
|
|
21
18
|
}
|
|
22
19
|
});
|
|
23
|
-
|
|
20
|
+
Object.defineProperty(exports, "LocalStreamEventNames", {
|
|
24
21
|
enumerable: true,
|
|
25
|
-
get: function
|
|
22
|
+
get: function () {
|
|
26
23
|
return _internalMediaCore.LocalStreamEventNames;
|
|
27
24
|
}
|
|
28
25
|
});
|
|
29
|
-
|
|
26
|
+
Object.defineProperty(exports, "LocalSystemAudioStream", {
|
|
30
27
|
enumerable: true,
|
|
31
|
-
get: function
|
|
28
|
+
get: function () {
|
|
32
29
|
return _internalMediaCore.LocalSystemAudioStream;
|
|
33
30
|
}
|
|
34
31
|
});
|
|
35
|
-
|
|
32
|
+
Object.defineProperty(exports, "RemoteStream", {
|
|
36
33
|
enumerable: true,
|
|
37
|
-
get: function
|
|
34
|
+
get: function () {
|
|
38
35
|
return _internalMediaCore.RemoteStream;
|
|
39
36
|
}
|
|
40
37
|
});
|
|
41
|
-
|
|
38
|
+
Object.defineProperty(exports, "StreamEventNames", {
|
|
42
39
|
enumerable: true,
|
|
43
|
-
get: function
|
|
40
|
+
get: function () {
|
|
44
41
|
return _internalMediaCore.StreamEventNames;
|
|
45
42
|
}
|
|
46
43
|
});
|
|
47
44
|
exports.createMicrophoneStream = exports.createDisplayStreamWithAudio = exports.createDisplayStream = exports.createCameraStream = void 0;
|
|
48
|
-
|
|
45
|
+
Object.defineProperty(exports, "getDevices", {
|
|
49
46
|
enumerable: true,
|
|
50
|
-
get: function
|
|
47
|
+
get: function () {
|
|
51
48
|
return _internalMediaCore.getDevices;
|
|
52
49
|
}
|
|
53
50
|
});
|
|
54
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
55
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
56
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
|
|
57
|
-
var _get2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/get"));
|
|
58
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
|
59
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
60
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
61
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
62
51
|
var _internalMediaCore = require("@webex/internal-media-core");
|
|
63
52
|
var _tsEvents = require("@webex/ts-events");
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
53
|
+
/* eslint-disable @typescript-eslint/no-misused-new */
|
|
54
|
+
/* eslint-disable valid-jsdoc */
|
|
55
|
+
/* eslint-disable require-jsdoc */
|
|
67
56
|
// server forced the client to be unmuted
|
|
68
57
|
// these events are in addition to WCME events. This will be properly typed once webrtc-core event types inheritance is fixed
|
|
69
|
-
|
|
70
|
-
exports.LocalMicrophoneStreamEventNames = LocalMicrophoneStreamEventNames;
|
|
71
|
-
(function (LocalMicrophoneStreamEventNames) {
|
|
58
|
+
let LocalMicrophoneStreamEventNames = exports.LocalMicrophoneStreamEventNames = /*#__PURE__*/function (LocalMicrophoneStreamEventNames) {
|
|
72
59
|
LocalMicrophoneStreamEventNames["ServerMuted"] = "muted:byServer";
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
exports.LocalCameraStreamEventNames = LocalCameraStreamEventNames
|
|
76
|
-
(function (LocalCameraStreamEventNames) {
|
|
60
|
+
return LocalMicrophoneStreamEventNames;
|
|
61
|
+
}({}); // these events are in addition to WCME events. This will be properly typed once webrtc-core event types inheritance is fixed
|
|
62
|
+
let LocalCameraStreamEventNames = exports.LocalCameraStreamEventNames = /*#__PURE__*/function (LocalCameraStreamEventNames) {
|
|
77
63
|
LocalCameraStreamEventNames["ServerMuted"] = "muted:byServer";
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
_this = _super.call.apply(_super, [this].concat(args));
|
|
90
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "unmuteAllowed", true);
|
|
91
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), _LocalMicrophoneStrea, new _tsEvents.TypedEvent());
|
|
92
|
-
return _this;
|
|
64
|
+
return LocalCameraStreamEventNames;
|
|
65
|
+
}({});
|
|
66
|
+
class _LocalMicrophoneStream extends _internalMediaCore.LocalMicrophoneStream {
|
|
67
|
+
unmuteAllowed = true;
|
|
68
|
+
[LocalMicrophoneStreamEventNames.ServerMuted] = new _tsEvents.TypedEvent();
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* @internal
|
|
72
|
+
*/
|
|
73
|
+
setUnmuteAllowed(allowed) {
|
|
74
|
+
this.unmuteAllowed = allowed;
|
|
93
75
|
}
|
|
94
|
-
(0, _createClass2.default)(_LocalMicrophoneStream, [{
|
|
95
|
-
key: "setUnmuteAllowed",
|
|
96
|
-
value:
|
|
97
|
-
/**
|
|
98
|
-
* @internal
|
|
99
|
-
*/
|
|
100
|
-
function setUnmuteAllowed(allowed) {
|
|
101
|
-
this.unmuteAllowed = allowed;
|
|
102
|
-
}
|
|
103
76
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
value: function setMuted(muted) {
|
|
115
|
-
if (!muted) {
|
|
116
|
-
if (!this.isUnmuteAllowed()) {
|
|
117
|
-
throw new Error('Unmute is not allowed');
|
|
118
|
-
}
|
|
77
|
+
/**
|
|
78
|
+
* @returns true if user is allowed to unmute the track, false otherwise
|
|
79
|
+
*/
|
|
80
|
+
isUnmuteAllowed() {
|
|
81
|
+
return this.unmuteAllowed;
|
|
82
|
+
}
|
|
83
|
+
setMuted(muted) {
|
|
84
|
+
if (!muted) {
|
|
85
|
+
if (!this.isUnmuteAllowed()) {
|
|
86
|
+
throw new Error('Unmute is not allowed');
|
|
119
87
|
}
|
|
120
|
-
return (0, _get2.default)((0, _getPrototypeOf2.default)(_LocalMicrophoneStream.prototype), "setMuted", this).call(this, muted);
|
|
121
88
|
}
|
|
89
|
+
return super.setMuted(muted);
|
|
90
|
+
}
|
|
122
91
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
this.setMuted(muted);
|
|
131
|
-
this[LocalMicrophoneStreamEventNames.ServerMuted].emit(muted, reason);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}, {
|
|
135
|
-
key: "toJSON",
|
|
136
|
-
value: function toJSON() {
|
|
137
|
-
var _this$inputTrack;
|
|
138
|
-
return {
|
|
139
|
-
id: this.id,
|
|
140
|
-
enabled: (_this$inputTrack = this.inputTrack) === null || _this$inputTrack === void 0 ? void 0 : _this$inputTrack.enabled,
|
|
141
|
-
label: this.label,
|
|
142
|
-
readyState: this.readyState,
|
|
143
|
-
numEnabledEffects: this.getAllEffects().filter(function (item) {
|
|
144
|
-
return item.effect.isEnabled;
|
|
145
|
-
}).length
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
}]);
|
|
149
|
-
return _LocalMicrophoneStream;
|
|
150
|
-
}(_internalMediaCore.LocalMicrophoneStream);
|
|
151
|
-
_LocalCameraStreamEve = LocalCameraStreamEventNames.ServerMuted;
|
|
152
|
-
var _LocalCameraStream = /*#__PURE__*/function (_WcmeLocalCameraStrea) {
|
|
153
|
-
(0, _inherits2.default)(_LocalCameraStream, _WcmeLocalCameraStrea);
|
|
154
|
-
var _super2 = _createSuper(_LocalCameraStream);
|
|
155
|
-
function _LocalCameraStream() {
|
|
156
|
-
var _this2;
|
|
157
|
-
(0, _classCallCheck2.default)(this, _LocalCameraStream);
|
|
158
|
-
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
159
|
-
args[_key2] = arguments[_key2];
|
|
92
|
+
/**
|
|
93
|
+
* @internal
|
|
94
|
+
*/
|
|
95
|
+
setServerMuted(muted, reason) {
|
|
96
|
+
if (muted !== this.muted) {
|
|
97
|
+
this.setMuted(muted);
|
|
98
|
+
this[LocalMicrophoneStreamEventNames.ServerMuted].emit(muted, reason);
|
|
160
99
|
}
|
|
161
|
-
_this2 = _super2.call.apply(_super2, [this].concat(args));
|
|
162
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "unmuteAllowed", true);
|
|
163
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), _LocalCameraStreamEve, new _tsEvents.TypedEvent());
|
|
164
|
-
return _this2;
|
|
165
100
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
* @internal
|
|
171
|
-
*/
|
|
172
|
-
function setUnmuteAllowed(allowed) {
|
|
173
|
-
this.unmuteAllowed = allowed;
|
|
174
|
-
}
|
|
101
|
+
}
|
|
102
|
+
class _LocalCameraStream extends _internalMediaCore.LocalCameraStream {
|
|
103
|
+
unmuteAllowed = true;
|
|
104
|
+
[LocalCameraStreamEventNames.ServerMuted] = new _tsEvents.TypedEvent();
|
|
175
105
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
return this.unmuteAllowed;
|
|
183
|
-
}
|
|
184
|
-
}, {
|
|
185
|
-
key: "setMuted",
|
|
186
|
-
value: function setMuted(muted) {
|
|
187
|
-
if (!muted) {
|
|
188
|
-
if (!this.isUnmuteAllowed()) {
|
|
189
|
-
throw new Error('Unmute is not allowed');
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
return (0, _get2.default)((0, _getPrototypeOf2.default)(_LocalCameraStream.prototype), "setMuted", this).call(this, muted);
|
|
193
|
-
}
|
|
106
|
+
/**
|
|
107
|
+
* @internal
|
|
108
|
+
*/
|
|
109
|
+
setUnmuteAllowed(allowed) {
|
|
110
|
+
this.unmuteAllowed = allowed;
|
|
111
|
+
}
|
|
194
112
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
113
|
+
/**
|
|
114
|
+
* @returns true if user is allowed to unmute the track, false otherwise
|
|
115
|
+
*/
|
|
116
|
+
isUnmuteAllowed() {
|
|
117
|
+
return this.unmuteAllowed;
|
|
118
|
+
}
|
|
119
|
+
setMuted(muted) {
|
|
120
|
+
if (!muted) {
|
|
121
|
+
if (!this.isUnmuteAllowed()) {
|
|
122
|
+
throw new Error('Unmute is not allowed');
|
|
204
123
|
}
|
|
205
124
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
return item.effect.isEnabled;
|
|
217
|
-
}).length
|
|
218
|
-
};
|
|
125
|
+
return super.setMuted(muted);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* @internal
|
|
130
|
+
*/
|
|
131
|
+
setServerMuted(muted, reason) {
|
|
132
|
+
if (muted !== this.muted) {
|
|
133
|
+
this.setMuted(muted);
|
|
134
|
+
this[LocalCameraStreamEventNames.ServerMuted].emit(muted, reason);
|
|
219
135
|
}
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
var createMicrophoneStream = function createMicrophoneStream(constraints) {
|
|
224
|
-
return (0, _internalMediaCore.createMicrophoneStream)(LocalMicrophoneStream, constraints);
|
|
225
|
-
};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const createMicrophoneStream = constraints => (0, _internalMediaCore.createMicrophoneStream)(LocalMicrophoneStream, constraints);
|
|
226
139
|
exports.createMicrophoneStream = createMicrophoneStream;
|
|
227
|
-
|
|
228
|
-
return (0, _internalMediaCore.createCameraStream)(LocalCameraStream, constraints);
|
|
229
|
-
};
|
|
140
|
+
const createCameraStream = constraints => (0, _internalMediaCore.createCameraStream)(LocalCameraStream, constraints);
|
|
230
141
|
exports.createCameraStream = createCameraStream;
|
|
231
|
-
|
|
232
|
-
return (0, _internalMediaCore.createDisplayStream)(_internalMediaCore.LocalDisplayStream);
|
|
233
|
-
};
|
|
142
|
+
const createDisplayStream = () => (0, _internalMediaCore.createDisplayStream)(_internalMediaCore.LocalDisplayStream);
|
|
234
143
|
exports.createDisplayStream = createDisplayStream;
|
|
235
|
-
|
|
236
|
-
return (0, _internalMediaCore.createDisplayStreamWithAudio)(_internalMediaCore.LocalDisplayStream, _internalMediaCore.LocalSystemAudioStream);
|
|
237
|
-
};
|
|
144
|
+
const createDisplayStreamWithAudio = () => (0, _internalMediaCore.createDisplayStreamWithAudio)(_internalMediaCore.LocalDisplayStream, _internalMediaCore.LocalSystemAudioStream);
|
|
238
145
|
exports.createDisplayStreamWithAudio = createDisplayStreamWithAudio;
|
|
239
|
-
|
|
240
|
-
exports.
|
|
241
|
-
var LocalCameraStream = (0, _tsEvents.AddEvents)(_LocalCameraStream);
|
|
242
|
-
exports.LocalCameraStream = LocalCameraStream;
|
|
146
|
+
const LocalMicrophoneStream = exports.LocalMicrophoneStream = (0, _tsEvents.AddEvents)(_LocalMicrophoneStream);
|
|
147
|
+
const LocalCameraStream = exports.LocalCameraStream = (0, _tsEvents.AddEvents)(_LocalCameraStream);
|
|
243
148
|
//# sourceMappingURL=webrtc-core.js.map
|
package/dist/webrtc-core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
null
|
package/jest.config.js
ADDED
package/package.json
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/media-helpers",
|
|
3
|
-
"
|
|
4
|
-
"description": "",
|
|
3
|
+
"description": "Package that provides helper functions for media related activities.",
|
|
5
4
|
"license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
|
|
6
5
|
"main": "dist/index.js",
|
|
7
6
|
"devMain": "src/index.ts",
|
|
@@ -13,10 +12,19 @@
|
|
|
13
12
|
"engines": {
|
|
14
13
|
"node": ">=16"
|
|
15
14
|
},
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "yarn run -T tsc --declaration true --declarationDir ./dist",
|
|
17
|
+
"build:src": "webex-legacy-tools build -dest \"./dist\" -src \"./src\" -js -ts -maps && yarn run -T tsc --declaration true --declarationDir ./dist",
|
|
18
|
+
"test:broken": "yarn test:style && yarn test:unit && yarn test:integration && yarn test:browser",
|
|
19
|
+
"test:browser": "webex-legacy-tools test --integration --runner karma",
|
|
20
|
+
"test:style": "eslint 'src/**/*.ts' --fix",
|
|
21
|
+
"test:unit": "webex-legacy-tools test --unit --runner jest",
|
|
22
|
+
"deploy:npm": "yarn npm publish"
|
|
23
|
+
},
|
|
16
24
|
"dependencies": {
|
|
17
|
-
"@webex/internal-media-core": "2.
|
|
25
|
+
"@webex/internal-media-core": "2.2.9",
|
|
18
26
|
"@webex/ts-events": "^1.1.0",
|
|
19
|
-
"@webex/web-media-effects": "^2.
|
|
27
|
+
"@webex/web-media-effects": "^2.15.6"
|
|
20
28
|
},
|
|
21
29
|
"browserify": {
|
|
22
30
|
"transform": [
|
|
@@ -25,8 +33,15 @@
|
|
|
25
33
|
]
|
|
26
34
|
},
|
|
27
35
|
"devDependencies": {
|
|
28
|
-
"@
|
|
29
|
-
"@webex/
|
|
36
|
+
"@babel/preset-typescript": "7.22.11",
|
|
37
|
+
"@webex/babel-config-legacy": "0.0.0",
|
|
38
|
+
"@webex/eslint-config-legacy": "0.0.0",
|
|
39
|
+
"@webex/jest-config-legacy": "0.0.0",
|
|
40
|
+
"@webex/legacy-tools": "0.0.0",
|
|
41
|
+
"@webex/test-helper-chai": "3.0.0-next.1",
|
|
42
|
+
"@webex/test-helper-mock-webex": "3.0.0-next.1",
|
|
43
|
+
"eslint": "^8.24.0",
|
|
30
44
|
"sinon": "^9.2.4"
|
|
31
|
-
}
|
|
32
|
-
|
|
45
|
+
},
|
|
46
|
+
"version": "3.0.1-next.1"
|
|
47
|
+
}
|
package/src/webrtc-core.ts
CHANGED
|
@@ -63,7 +63,7 @@ class _LocalMicrophoneStream extends WcmeLocalMicrophoneStream {
|
|
|
63
63
|
/**
|
|
64
64
|
* @internal
|
|
65
65
|
*/
|
|
66
|
-
setUnmuteAllowed(allowed) {
|
|
66
|
+
setUnmuteAllowed(allowed: boolean) {
|
|
67
67
|
this.unmuteAllowed = allowed;
|
|
68
68
|
}
|
|
69
69
|
|
|
@@ -93,16 +93,6 @@ class _LocalMicrophoneStream extends WcmeLocalMicrophoneStream {
|
|
|
93
93
|
this[LocalMicrophoneStreamEventNames.ServerMuted].emit(muted, reason);
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
-
|
|
97
|
-
toJSON() {
|
|
98
|
-
return {
|
|
99
|
-
id: this.id,
|
|
100
|
-
enabled: this.inputTrack?.enabled,
|
|
101
|
-
label: this.label,
|
|
102
|
-
readyState: this.readyState,
|
|
103
|
-
numEnabledEffects: this.getAllEffects().filter((item) => item.effect.isEnabled).length,
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
96
|
}
|
|
107
97
|
|
|
108
98
|
class _LocalCameraStream extends WcmeLocalCameraStream {
|
|
@@ -115,7 +105,7 @@ class _LocalCameraStream extends WcmeLocalCameraStream {
|
|
|
115
105
|
/**
|
|
116
106
|
* @internal
|
|
117
107
|
*/
|
|
118
|
-
setUnmuteAllowed(allowed) {
|
|
108
|
+
setUnmuteAllowed(allowed: boolean) {
|
|
119
109
|
this.unmuteAllowed = allowed;
|
|
120
110
|
}
|
|
121
111
|
|
|
@@ -145,16 +135,6 @@ class _LocalCameraStream extends WcmeLocalCameraStream {
|
|
|
145
135
|
this[LocalCameraStreamEventNames.ServerMuted].emit(muted, reason);
|
|
146
136
|
}
|
|
147
137
|
}
|
|
148
|
-
|
|
149
|
-
toJSON() {
|
|
150
|
-
return {
|
|
151
|
-
id: this.id,
|
|
152
|
-
enabled: this.inputTrack?.enabled,
|
|
153
|
-
label: this.label,
|
|
154
|
-
readyState: this.readyState,
|
|
155
|
-
numEnabledEffects: this.getAllEffects().filter((item) => item.effect.isEnabled).length,
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
138
|
}
|
|
159
139
|
|
|
160
140
|
export const createMicrophoneStream = (constraints?: AudioDeviceConstraints) =>
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
createMicrophoneStream,
|
|
12
12
|
createDisplayStream,
|
|
13
13
|
createDisplayStreamWithAudio,
|
|
14
|
-
} from '
|
|
14
|
+
} from '@webex/media-helpers';
|
|
15
15
|
import * as wcmestreams from '@webex/internal-media-core';
|
|
16
16
|
|
|
17
17
|
describe('media-helpers', () => {
|
|
@@ -32,7 +32,6 @@ describe('media-helpers', () => {
|
|
|
32
32
|
spyFn: 'createMicrophoneStream',
|
|
33
33
|
},
|
|
34
34
|
];
|
|
35
|
-
|
|
36
35
|
classesToTest.forEach(({className, title, event, createFn, spyFn}) =>
|
|
37
36
|
describe(title, () => {
|
|
38
37
|
const fakeStream = {
|
|
@@ -41,6 +40,7 @@ describe('media-helpers', () => {
|
|
|
41
40
|
label: 'fake track',
|
|
42
41
|
id: 'fake track id',
|
|
43
42
|
enabled: true,
|
|
43
|
+
muted: false,
|
|
44
44
|
addEventListener: sinon.stub(),
|
|
45
45
|
},
|
|
46
46
|
]),
|
|
@@ -57,7 +57,7 @@ describe('media-helpers', () => {
|
|
|
57
57
|
});
|
|
58
58
|
|
|
59
59
|
it('rejects setMute(false) if unmute is not allowed', async () => {
|
|
60
|
-
stream.setUnmuteAllowed(false);
|
|
60
|
+
await stream.setUnmuteAllowed(false);
|
|
61
61
|
|
|
62
62
|
assert.equal(stream.isUnmuteAllowed(), false);
|
|
63
63
|
const fn = () => stream.setMuted(false);
|
|
@@ -65,7 +65,7 @@ describe('media-helpers', () => {
|
|
|
65
65
|
});
|
|
66
66
|
|
|
67
67
|
it('resolves setMute(false) if unmute is allowed', async () => {
|
|
68
|
-
stream.setUnmuteAllowed(true);
|
|
68
|
+
await stream.setUnmuteAllowed(true);
|
|
69
69
|
|
|
70
70
|
assert.equal(stream.isUnmuteAllowed(), true);
|
|
71
71
|
await stream.setMuted(false);
|
|
@@ -73,7 +73,7 @@ describe('media-helpers', () => {
|
|
|
73
73
|
|
|
74
74
|
it('returns a reasonable length string from JSON.stringify()', () => {
|
|
75
75
|
assert.isBelow(JSON.stringify(stream).length, 200);
|
|
76
|
-
})
|
|
76
|
+
});
|
|
77
77
|
|
|
78
78
|
describe('#setServerMuted', () => {
|
|
79
79
|
afterEach(() => {
|
|
@@ -120,7 +120,7 @@ describe('media-helpers', () => {
|
|
|
120
120
|
const constraints = {deviceId: 'abc'};
|
|
121
121
|
|
|
122
122
|
const spy = sinon.stub(wcmestreams, spyFn).returns('something');
|
|
123
|
-
const result = createFn(constraints);
|
|
123
|
+
const result = await createFn(constraints);
|
|
124
124
|
|
|
125
125
|
assert.equal(result, 'something');
|
|
126
126
|
assert.calledOnceWithExactly(spy, className, constraints);
|
|
@@ -132,16 +132,16 @@ describe('media-helpers', () => {
|
|
|
132
132
|
describe('createDisplayStream', () => {
|
|
133
133
|
it('checks createDisplayStream', async () => {
|
|
134
134
|
const spy = sinon.stub(wcmestreams, 'createDisplayStream').returns('something');
|
|
135
|
-
const result = createDisplayStream();
|
|
135
|
+
const result = await createDisplayStream();
|
|
136
136
|
assert.equal(result, 'something');
|
|
137
137
|
assert.calledOnceWithExactly(spy, LocalDisplayStream);
|
|
138
138
|
});
|
|
139
139
|
});
|
|
140
|
-
|
|
140
|
+
|
|
141
141
|
describe('createDisplayStreamWithAudio', () => {
|
|
142
142
|
it('checks createDisplayStreamWithAudio', async () => {
|
|
143
143
|
const spy = sinon.stub(wcmestreams, 'createDisplayStreamWithAudio').returns('something');
|
|
144
|
-
const result = createDisplayStreamWithAudio();
|
|
144
|
+
const result = await createDisplayStreamWithAudio();
|
|
145
145
|
assert.equal(result, 'something');
|
|
146
146
|
assert.calledOnceWithExactly(spy, LocalDisplayStream, LocalSystemAudioStream);
|
|
147
147
|
});
|