@pexip/media-control 17.1.2 → 17.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/dist/index.d.ts +103 -5
- package/dist/index.mjs +99 -28
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 17.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 7b29d953: Update babel/traverse related deps
|
|
8
|
+
- 821d9a1ef8: Add toMediaDeviceInfo util function
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- Updated dependencies [7b29d953]
|
|
13
|
+
- @pexip/utils@16.9.0
|
|
14
|
+
|
|
15
|
+
## 17.2.0
|
|
16
|
+
|
|
17
|
+
### Minor Changes
|
|
18
|
+
|
|
19
|
+
- 244cb04c: Add screen capture constraints
|
|
20
|
+
|
|
21
|
+
- Add screen capture constraints
|
|
22
|
+
- Add fallback implementation of `mointorTypeSurfaces`
|
|
23
|
+
- Fix typo of `areMultipleFacingModeSupported`
|
|
24
|
+
|
|
25
|
+
- 26878b60: Add contentHint to InputConstraintSet
|
|
26
|
+
- 7e02391e9c: Changest to support FECC and PTZ capabilities
|
|
27
|
+
|
|
28
|
+
### Patch Changes
|
|
29
|
+
|
|
30
|
+
- 4ea55a5205: Prettier and linting for new prettier version.
|
|
31
|
+
- Updated dependencies [244cb04c]
|
|
32
|
+
- Updated dependencies [4ea55a5205]
|
|
33
|
+
- @pexip/utils@16.8.0
|
|
34
|
+
|
|
3
35
|
## 17.1.2
|
|
4
36
|
|
|
5
37
|
## 17.1.1
|
package/dist/index.d.ts
CHANGED
|
@@ -72,6 +72,16 @@ interface InputConstraintSet extends MediaTrackConstraints {
|
|
|
72
72
|
* Image Url that is being used for video overlay effects
|
|
73
73
|
*/
|
|
74
74
|
resizeMode?: ConstrainDOMString;
|
|
75
|
+
/**
|
|
76
|
+
* Current pan, tilt and zoom level for a PTZ controllable camera on web
|
|
77
|
+
*/
|
|
78
|
+
pan?: boolean;
|
|
79
|
+
tilt?: boolean;
|
|
80
|
+
zoom?: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Content Hint for the track to apply
|
|
83
|
+
*/
|
|
84
|
+
contentHint?: ConstrainDOMString;
|
|
75
85
|
}
|
|
76
86
|
type InputDeviceConstraint = DeviceConstraint | InputConstraintSet | boolean;
|
|
77
87
|
/**
|
|
@@ -209,6 +219,35 @@ interface InputDevicePermission {
|
|
|
209
219
|
audio: PermissionState;
|
|
210
220
|
video: PermissionState;
|
|
211
221
|
}
|
|
222
|
+
interface DisplayVideoTrackConstraint extends MediaTrackConstraintSet {
|
|
223
|
+
displaySurface?: ConstrainDOMString;
|
|
224
|
+
cursor?: ConstrainDOMString;
|
|
225
|
+
}
|
|
226
|
+
interface DisplayAudioTrackConstraint extends MediaTrackConstraintSet {
|
|
227
|
+
restrictOwnAudio?: ConstrainBoolean;
|
|
228
|
+
suppressLocalAudioPlayback?: ConstrainBoolean;
|
|
229
|
+
}
|
|
230
|
+
interface DisplayVideoTrackConstraints extends DisplayVideoTrackConstraint {
|
|
231
|
+
advanced?: DisplayVideoTrackConstraint[];
|
|
232
|
+
}
|
|
233
|
+
interface DisplayAudioTrackConstraints extends DisplayAudioTrackConstraint {
|
|
234
|
+
advanced?: DisplayAudioTrackConstraint[];
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* The `DisplayMediaStreamOptions` dictionary is used to instruct the user agent
|
|
238
|
+
* what sort of `MediaStreamTracks` may be included in the `MediaStream`
|
|
239
|
+
* returned by `getDisplayMedia`.
|
|
240
|
+
*
|
|
241
|
+
* @see {@link https://w3c.github.io/mediacapture-screen-share/#displaymediastreamoptions}
|
|
242
|
+
*/
|
|
243
|
+
interface DisplayMediaOptions extends DisplayMediaStreamOptions {
|
|
244
|
+
audio?: boolean | DisplayAudioTrackConstraints;
|
|
245
|
+
video?: boolean | DisplayVideoTrackConstraints;
|
|
246
|
+
selfBrowserSurface?: ConstrainDOMString;
|
|
247
|
+
systemAudio?: ConstrainDOMString;
|
|
248
|
+
surfaceSwitching?: ConstrainDOMString;
|
|
249
|
+
monitorTypeSurfaces?: ConstrainDOMString;
|
|
250
|
+
}
|
|
212
251
|
|
|
213
252
|
/**
|
|
214
253
|
* DeviceChange Event
|
|
@@ -278,6 +317,12 @@ declare const deviceChanged: (fn: (event: DeviceChangedChanges) => void) => () =
|
|
|
278
317
|
* @beta
|
|
279
318
|
*/
|
|
280
319
|
declare const toMediaDeviceInfoLike: (track: MediaStreamTrack) => MediaDeviceInfoLike | undefined;
|
|
320
|
+
declare const toMediaDeviceInfo: (info: MediaDeviceInfoLike) => {
|
|
321
|
+
deviceId: string;
|
|
322
|
+
groupId: string;
|
|
323
|
+
kind: MediaDeviceKind;
|
|
324
|
+
label: string;
|
|
325
|
+
};
|
|
281
326
|
/**
|
|
282
327
|
* Find the MediaDeviceInfo from provided MediaDeviceInfo[] by comparing with
|
|
283
328
|
* provided MediaStreamTrack
|
|
@@ -553,7 +598,7 @@ declare const hasChangedInput: (oldInput: MediaDeviceInfoLike | undefined, newIn
|
|
|
553
598
|
* i.e. `navigator.mediaDevices.getSupportedConstraints()`
|
|
554
599
|
* @param tracks - Current video input track
|
|
555
600
|
*/
|
|
556
|
-
declare const
|
|
601
|
+
declare const areMultipleFacingModeSupported: (currentDevices: MediaDeviceInfoLike[], getSupportedConstraints?: () => MediaTrackSupportedConstraints) => boolean;
|
|
557
602
|
/**
|
|
558
603
|
* Interpret the current facing mode from the provided track, and try to get the
|
|
559
604
|
* mode from settings, or use the label to guess the facing mode when facingMode
|
|
@@ -601,7 +646,7 @@ declare const findDevice: (deviceToFind: MediaDeviceInfoLike, useFallback?: bool
|
|
|
601
646
|
* Reference https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset
|
|
602
647
|
*/
|
|
603
648
|
declare const CONSTRAIN_STRING_KEYS: readonly ["facingMode", "resizeMode", "deviceId", "groupId"];
|
|
604
|
-
declare const EXTENDED_CONSTRAIN_STRING_KEYS: readonly ["videoSegmentation", "videoSegmentationModel", "bgImageUrl"];
|
|
649
|
+
declare const EXTENDED_CONSTRAIN_STRING_KEYS: readonly ["videoSegmentation", "videoSegmentationModel", "bgImageUrl", "contentHint"];
|
|
605
650
|
type ExtendedConstrainStringKeys = (typeof EXTENDED_CONSTRAIN_STRING_KEYS)[number];
|
|
606
651
|
type ConstrainStringKeys = (typeof CONSTRAIN_STRING_KEYS)[number];
|
|
607
652
|
declare const CONSTRAIN_U_LONG_KEYS: readonly ["width", "height", "sampleRate", "sampleSize", "channelCount"];
|
|
@@ -612,7 +657,7 @@ declare const CONSTRAIN_DOUBLE_KEYS: readonly ["aspectRatio", "frameRate", "late
|
|
|
612
657
|
declare const EXTENDED_CONSTRAIN_DOUBLE_KEYS: readonly ["foregroundThreshold"];
|
|
613
658
|
type ExtendedConstrainDoubleKeys = (typeof EXTENDED_CONSTRAIN_DOUBLE_KEYS)[number];
|
|
614
659
|
type ConstrainDoubleKeys = (typeof CONSTRAIN_DOUBLE_KEYS)[number];
|
|
615
|
-
declare const CONSTRAIN_BOOLEAN_KEYS: readonly ["echoCancellation", "autoGainControl", "noiseSuppression"];
|
|
660
|
+
declare const CONSTRAIN_BOOLEAN_KEYS: readonly ["echoCancellation", "autoGainControl", "noiseSuppression", "pan", "tilt", "zoom"];
|
|
616
661
|
/**
|
|
617
662
|
* Extends boolean constraint keys for our own implementation of the media
|
|
618
663
|
* feature
|
|
@@ -696,7 +741,7 @@ type Constraints = ConstrainStrings & ConstrainNumbers & ConstrainBooleans & Con
|
|
|
696
741
|
* expect(noiseSuppressionParam).toEqual('ideal');
|
|
697
742
|
* ```
|
|
698
743
|
*/
|
|
699
|
-
declare const extractConstraintsWithKeys: <T extends "deviceId" | "groupId" | "facingMode" | "resizeMode" | "videoSegmentation" | "videoSegmentationModel" | "bgImageUrl" | ConstrainNumberKeys | "echoCancellation" | "autoGainControl" | "noiseSuppression" | "vad" | "asd" | "mixWithAdditionalMedia" | "denoise" | "flipHorizontal" | "device">(keys: T[]) => (constraints: InputDeviceConstraint | undefined) => Pick<Constraints, T>;
|
|
744
|
+
declare const extractConstraintsWithKeys: <T extends "deviceId" | "groupId" | "facingMode" | "resizeMode" | "videoSegmentation" | "videoSegmentationModel" | "bgImageUrl" | "contentHint" | ConstrainNumberKeys | "echoCancellation" | "autoGainControl" | "noiseSuppression" | "pan" | "tilt" | "zoom" | "vad" | "asd" | "mixWithAdditionalMedia" | "denoise" | "flipHorizontal" | "device">(keys: T[]) => (constraints: InputDeviceConstraint | undefined) => Pick<Constraints, T>;
|
|
700
745
|
/**
|
|
701
746
|
* Find device from the device list with provided constraints
|
|
702
747
|
*
|
|
@@ -876,6 +921,59 @@ interface Logger extends LogMethods {
|
|
|
876
921
|
|
|
877
922
|
declare function setLogger(newLogger: Logger): void;
|
|
878
923
|
|
|
924
|
+
type ExtractObjectValueTypes<T extends object> = T[keyof T];
|
|
925
|
+
/**
|
|
926
|
+
* The `DisplayCaptureSurfaceType` enumeration describes the different types of
|
|
927
|
+
* display surface
|
|
928
|
+
*
|
|
929
|
+
* @see {@link https://w3c.github.io/mediacapture-screen-share/#displaycapturesurfacetype}
|
|
930
|
+
*/
|
|
931
|
+
declare const DISPLAY_CAPTURE_SURFACE_TYPE: {
|
|
932
|
+
readonly Monitor: "monitor";
|
|
933
|
+
readonly Window: "window";
|
|
934
|
+
readonly Browser: "browser";
|
|
935
|
+
};
|
|
936
|
+
/**
|
|
937
|
+
* The `DisplayCaptureSurfaceType` enumeration describes the different types of
|
|
938
|
+
* display surface
|
|
939
|
+
*
|
|
940
|
+
* @see {@link https://w3c.github.io/mediacapture-screen-share/#displaycapturesurfacetype}
|
|
941
|
+
*/
|
|
942
|
+
type DisplayCaptureSurfaceType = ExtractObjectValueTypes<typeof DISPLAY_CAPTURE_SURFACE_TYPE>;
|
|
943
|
+
/**
|
|
944
|
+
* The `CursorCaptureConstraint` enumerates the conditions under which the
|
|
945
|
+
* cursor is captured.
|
|
946
|
+
*
|
|
947
|
+
* @see {@link https://w3c.github.io/mediacapture-screen-share/#cursorcaptureconstraint}
|
|
948
|
+
*/
|
|
949
|
+
declare const CURSOR_CAPTURE_CONSTRAINT: {
|
|
950
|
+
readonly Never: "never";
|
|
951
|
+
readonly Always: "always";
|
|
952
|
+
readonly Motion: "motion";
|
|
953
|
+
};
|
|
954
|
+
/**
|
|
955
|
+
* The `CursorCaptureConstraint` enumerates the conditions under which the
|
|
956
|
+
* cursor is captured.
|
|
957
|
+
*
|
|
958
|
+
* @see {@link https://w3c.github.io/mediacapture-screen-share/#cursorcaptureconstraint}
|
|
959
|
+
*/
|
|
960
|
+
type CursorCaptureConstraint = ExtractObjectValueTypes<typeof CURSOR_CAPTURE_CONSTRAINT>;
|
|
961
|
+
declare const INCLUDE_EXCLUDE_CONSTRAINT: {
|
|
962
|
+
readonly Include: "include";
|
|
963
|
+
readonly Exclude: "exclude";
|
|
964
|
+
};
|
|
965
|
+
type IncludeExcludeConstraint = ExtractObjectValueTypes<typeof INCLUDE_EXCLUDE_CONSTRAINT>;
|
|
966
|
+
|
|
967
|
+
/**
|
|
968
|
+
* A fallback implementation of `monitorTypeSurfaces` limitation when it is not
|
|
969
|
+
* supported by the current browser and the source of the `displaySurface` is
|
|
970
|
+
* available.
|
|
971
|
+
*
|
|
972
|
+
* @param constraints - The constraints used to request display media.
|
|
973
|
+
* @param stream - The MediaStream returned from the requesting display media.
|
|
974
|
+
*/
|
|
975
|
+
declare const limitSharingMonitorInterface: (constraints: DisplayMediaOptions, stream: MediaStream) => MediaStream;
|
|
976
|
+
|
|
879
977
|
/**
|
|
880
978
|
* media-control is meant to extend the mediaDevices api methods such as
|
|
881
979
|
* `getUserMedia`, `enumerateDevices` and events on media streams and tracks.
|
|
@@ -924,4 +1022,4 @@ interface MediaControl {
|
|
|
924
1022
|
subscribe: typeof subscribe;
|
|
925
1023
|
}
|
|
926
1024
|
|
|
927
|
-
export { DeviceChangedChanges, Events, FacingMode, InputConstraintSet, InputDevicePermission, MediaControl, MediaDeviceFailure, MediaDeviceInfoLike, MediaDeviceKinds, MediaDeviceRequest, MediaEvent, MediaEventType, MediaInput, MediaStreamTrackLike, StreamTrackEventHandlers, Unsubscribe, applyConstraints,
|
|
1025
|
+
export { CURSOR_CAPTURE_CONSTRAINT, CursorCaptureConstraint, DISPLAY_CAPTURE_SURFACE_TYPE, DeviceChangedChanges, DisplayCaptureSurfaceType, DisplayMediaOptions, Events, FacingMode, INCLUDE_EXCLUDE_CONSTRAINT, IncludeExcludeConstraint, InputConstraintSet, InputDevicePermission, MediaControl, MediaDeviceFailure, MediaDeviceInfoLike, MediaDeviceKinds, MediaDeviceRequest, MediaEvent, MediaEventType, MediaInput, MediaStreamTrackLike, StreamTrackEventHandlers, Unsubscribe, applyConstraints, areMultipleFacingModeSupported, areTracksEnabled, compareDevices, createStreamTrackEventSubscriptions, createTrackDevicesChanges, deviceChanged, extractConstraintsWithKeys, findAudioInputDevices, findAudioOutputDevices, findCurrentAudioOutputId, findCurrentVideoInputDeviceIdFromStream, findDevice, findDeviceFromConstraints, findDeviceWithDeviceId, findDevicesByKind, findMediaInputFromMediaStreamTrack, findMediaInputFromStream, findPermissionGrantedDevices, findVideoInputDevices, getDevices, getFacingModeFromConstraintString, getInputDevicePermissionState, getUserMedia, getValueFromConstrainNumber, hasAnyGrantedInput, hasAnyInputs, hasAudioInputs, hasAudioOrVideoInputs, hasChangedInput, hasRequestingDevice, hasVideoInputs, interpretCurrentFacingMode, isAudioInput, isAudioOutput, isDeviceGranted, isExactDeviceConstraint, isFacingMode, isMediaDeviceInfo, isMediaDeviceInfoArray, isMediaStreamTrack, isRequestedInputDevice, isRequestedInputTrack, isRequestedResolution, isStreamingRequestedDevices, isStreamingRequestedDevicesBase, isVideoInput, limitSharingMonitorInterface, mergeConstraints, muteStreamTrack, relaxInputConstraint, setDefaultConstraints, setLogger, shouldRequestDevice, stopMediaStream, subscribe, toKey, toMediaDeviceInfo, toMediaDeviceInfoLike };
|
package/dist/index.mjs
CHANGED
|
@@ -41,7 +41,8 @@ var CONSTRAIN_STRING_KEYS = [
|
|
|
41
41
|
var EXTENDED_CONSTRAIN_STRING_KEYS = [
|
|
42
42
|
"videoSegmentation",
|
|
43
43
|
"videoSegmentationModel",
|
|
44
|
-
"bgImageUrl"
|
|
44
|
+
"bgImageUrl",
|
|
45
|
+
"contentHint"
|
|
45
46
|
];
|
|
46
47
|
var CONSTRAIN_U_LONG_KEYS = [
|
|
47
48
|
"width",
|
|
@@ -63,7 +64,10 @@ var EXTENDED_CONSTRAIN_DOUBLE_KEYS = ["foregroundThreshold"];
|
|
|
63
64
|
var CONSTRAIN_BOOLEAN_KEYS = [
|
|
64
65
|
"echoCancellation",
|
|
65
66
|
"autoGainControl",
|
|
66
|
-
"noiseSuppression"
|
|
67
|
+
"noiseSuppression",
|
|
68
|
+
"pan",
|
|
69
|
+
"tilt",
|
|
70
|
+
"zoom"
|
|
67
71
|
];
|
|
68
72
|
var EXTENDED_CONSTRAIN_BOOLEAN_KEYS = [
|
|
69
73
|
// Voice Activity Detection
|
|
@@ -348,15 +352,18 @@ var normalizeDeviceConstraint = (constraints) => {
|
|
|
348
352
|
return void 0;
|
|
349
353
|
}
|
|
350
354
|
if (isConstraintDeviceParameters(constraints)) {
|
|
351
|
-
return Object.keys(constraints).filter((k) => ["ideal", "exact"].includes(k)).reduce(
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
355
|
+
return Object.keys(constraints).filter((k) => ["ideal", "exact"].includes(k)).reduce(
|
|
356
|
+
(cs, k) => {
|
|
357
|
+
const key = k;
|
|
358
|
+
const value = constraints[key];
|
|
359
|
+
const devices = normalizeDevice(value);
|
|
360
|
+
if (devices) {
|
|
361
|
+
return { ...cs ?? {}, [key]: devices };
|
|
362
|
+
}
|
|
363
|
+
return cs;
|
|
364
|
+
},
|
|
365
|
+
void 0
|
|
366
|
+
);
|
|
360
367
|
}
|
|
361
368
|
const normalized = normalizeDevice(constraints);
|
|
362
369
|
return normalized && { ideal: normalized };
|
|
@@ -655,21 +662,36 @@ function extractConstraints(key) {
|
|
|
655
662
|
return [void 0, "ideal"];
|
|
656
663
|
};
|
|
657
664
|
}
|
|
658
|
-
var extractConstraintsWithKeys = (keys) => (constraints) => keys.reduce(
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
665
|
+
var extractConstraintsWithKeys = (keys) => (constraints) => keys.reduce(
|
|
666
|
+
(result, key) => {
|
|
667
|
+
if (key === "device") {
|
|
668
|
+
return {
|
|
669
|
+
...result,
|
|
670
|
+
[key]: extractConstraints(key)(constraints)
|
|
671
|
+
};
|
|
672
|
+
}
|
|
673
|
+
if (isConstrainULongKeys(key) || isConstrainDoubleKeys(key) || isExtendedConstrainULongKeys(key) || isExtendedConstrainDoubleKeys(key)) {
|
|
674
|
+
return {
|
|
675
|
+
...result,
|
|
676
|
+
[key]: extractConstraints(key)(constraints)
|
|
677
|
+
};
|
|
678
|
+
}
|
|
679
|
+
if (isConstrainStringKeys(key) || isExtendedConstrainStringKeys(key)) {
|
|
680
|
+
return {
|
|
681
|
+
...result,
|
|
682
|
+
[key]: extractConstraints(key)(constraints)
|
|
683
|
+
};
|
|
684
|
+
}
|
|
685
|
+
if (isConstrainBooleanKeys(key) || isExtendedConstrainBooleanKeys(key)) {
|
|
686
|
+
return {
|
|
687
|
+
...result,
|
|
688
|
+
[key]: extractConstraints(key)(constraints)
|
|
689
|
+
};
|
|
690
|
+
}
|
|
691
|
+
return result;
|
|
692
|
+
},
|
|
693
|
+
{}
|
|
694
|
+
);
|
|
673
695
|
var extractDeviceId = extractConstrainString("deviceId");
|
|
674
696
|
var findDeviceFromConstraints = (constraints, devices) => {
|
|
675
697
|
if (typeof constraints === "boolean") {
|
|
@@ -836,6 +858,12 @@ var toMediaDeviceInfoLikeJSON = (info) => ({
|
|
|
836
858
|
label: info.label,
|
|
837
859
|
settings: info.settings
|
|
838
860
|
});
|
|
861
|
+
var toMediaDeviceInfo = (info) => ({
|
|
862
|
+
deviceId: info.deviceId,
|
|
863
|
+
groupId: info.groupId,
|
|
864
|
+
kind: info.kind,
|
|
865
|
+
label: info.label
|
|
866
|
+
});
|
|
839
867
|
var findMediaInputFromMediaStreamTrack = (devices) => (track) => {
|
|
840
868
|
if (!devices.length || !track) {
|
|
841
869
|
return void 0;
|
|
@@ -1142,7 +1170,7 @@ var hasChangedInput = (oldInput, newInput) => {
|
|
|
1142
1170
|
}
|
|
1143
1171
|
return false;
|
|
1144
1172
|
};
|
|
1145
|
-
var
|
|
1173
|
+
var areMultipleFacingModeSupported = (currentDevices, getSupportedConstraints = () => navigator.mediaDevices.getSupportedConstraints()) => {
|
|
1146
1174
|
if (!getSupportedConstraints().facingMode) {
|
|
1147
1175
|
return false;
|
|
1148
1176
|
}
|
|
@@ -1492,6 +1520,44 @@ var createStreamTrackMap = (tracks) => {
|
|
|
1492
1520
|
};
|
|
1493
1521
|
};
|
|
1494
1522
|
|
|
1523
|
+
// src/constants.ts
|
|
1524
|
+
var DISPLAY_CAPTURE_SURFACE_TYPE = {
|
|
1525
|
+
Monitor: "monitor",
|
|
1526
|
+
Window: "window",
|
|
1527
|
+
Browser: "browser"
|
|
1528
|
+
};
|
|
1529
|
+
var CURSOR_CAPTURE_CONSTRAINT = {
|
|
1530
|
+
Never: "never",
|
|
1531
|
+
Always: "always",
|
|
1532
|
+
Motion: "motion"
|
|
1533
|
+
};
|
|
1534
|
+
var INCLUDE_EXCLUDE_CONSTRAINT = {
|
|
1535
|
+
Include: "include",
|
|
1536
|
+
Exclude: "exclude"
|
|
1537
|
+
};
|
|
1538
|
+
|
|
1539
|
+
// src/displayMedia.ts
|
|
1540
|
+
var limitSharingMonitorInterface = (constraints, stream) => {
|
|
1541
|
+
if (!constraints.monitorTypeSurfaces || constraints.monitorTypeSurfaces !== "exclude") {
|
|
1542
|
+
return stream;
|
|
1543
|
+
}
|
|
1544
|
+
for (const track of stream.getTracks()) {
|
|
1545
|
+
const { displaySurface } = track.getSettings();
|
|
1546
|
+
if (!displaySurface || displaySurface !== "monitor") {
|
|
1547
|
+
continue;
|
|
1548
|
+
}
|
|
1549
|
+
stopMediaStream(stream);
|
|
1550
|
+
throw new TypeError("MonitorSharingNotAllowed", {
|
|
1551
|
+
cause: {
|
|
1552
|
+
monitorTypeSurfaces: constraints.monitorTypeSurfaces,
|
|
1553
|
+
track,
|
|
1554
|
+
displaySurface
|
|
1555
|
+
}
|
|
1556
|
+
});
|
|
1557
|
+
}
|
|
1558
|
+
return stream;
|
|
1559
|
+
};
|
|
1560
|
+
|
|
1495
1561
|
// src/index.ts
|
|
1496
1562
|
var state = () => {
|
|
1497
1563
|
const { dispatch, subscriber } = eventEmitter();
|
|
@@ -1572,11 +1638,14 @@ var {
|
|
|
1572
1638
|
subscribe
|
|
1573
1639
|
} = state();
|
|
1574
1640
|
export {
|
|
1641
|
+
CURSOR_CAPTURE_CONSTRAINT,
|
|
1642
|
+
DISPLAY_CAPTURE_SURFACE_TYPE,
|
|
1643
|
+
INCLUDE_EXCLUDE_CONSTRAINT,
|
|
1575
1644
|
MediaDeviceFailure,
|
|
1576
1645
|
MediaDeviceKinds,
|
|
1577
1646
|
MediaEventType,
|
|
1578
1647
|
applyConstraints,
|
|
1579
|
-
|
|
1648
|
+
areMultipleFacingModeSupported,
|
|
1580
1649
|
areTracksEnabled,
|
|
1581
1650
|
compareDevices,
|
|
1582
1651
|
createStreamTrackEventSubscriptions,
|
|
@@ -1622,6 +1691,7 @@ export {
|
|
|
1622
1691
|
isStreamingRequestedDevices,
|
|
1623
1692
|
isStreamingRequestedDevicesBase,
|
|
1624
1693
|
isVideoInput,
|
|
1694
|
+
limitSharingMonitorInterface,
|
|
1625
1695
|
mergeConstraints,
|
|
1626
1696
|
muteStreamTrack,
|
|
1627
1697
|
relaxInputConstraint,
|
|
@@ -1631,5 +1701,6 @@ export {
|
|
|
1631
1701
|
stopMediaStream,
|
|
1632
1702
|
subscribe,
|
|
1633
1703
|
toKey,
|
|
1704
|
+
toMediaDeviceInfo,
|
|
1634
1705
|
toMediaDeviceInfoLike
|
|
1635
1706
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pexip/media-control",
|
|
3
|
-
"version": "17.
|
|
3
|
+
"version": "17.3.0",
|
|
4
4
|
"homepage": "https://gitlab.com/pexip/zoo",
|
|
5
5
|
"bugs": "https://gitlab.com/pexip/zoo/issues",
|
|
6
6
|
"repository": {
|
|
@@ -26,18 +26,18 @@
|
|
|
26
26
|
"typecheck": "yarn tsc --noEmit -p tsconfig.build.json"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@pexip/utils": "16.
|
|
29
|
+
"@pexip/utils": "16.9.0"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@jest/globals": "^29.
|
|
33
|
-
"@pexip/bundler": "16.
|
|
32
|
+
"@jest/globals": "^29.7.0",
|
|
33
|
+
"@pexip/bundler": "16.5.0",
|
|
34
34
|
"@types/core-js": "^2.5.3",
|
|
35
35
|
"@types/prettier": "^2.0.2",
|
|
36
36
|
"@types/uuid": "^8.3.0",
|
|
37
37
|
"@types/webrtc": "^0.0.31",
|
|
38
38
|
"core-js": "^3.6.5",
|
|
39
|
-
"prettier": "
|
|
40
|
-
"typescript": "~5.
|
|
39
|
+
"prettier": "^3.0.3",
|
|
40
|
+
"typescript": "~5.3.0",
|
|
41
41
|
"uuid": "^9.0.0"
|
|
42
42
|
},
|
|
43
43
|
"publishConfig": {
|