@whereby.com/media 8.0.1 → 8.0.2

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/dist/index.cjs CHANGED
@@ -6747,11 +6747,11 @@ class BandwidthTester extends EventEmitter {
6747
6747
  const wsUrl = `wss://${host}`;
6748
6748
  this._vegaConnection = new VegaConnection(wsUrl, "whereby-sfu#bw-test-v1");
6749
6749
  this._vegaConnection.on("open", () => this._start());
6750
- this._vegaConnection.on("close", () => this.close());
6750
+ this._vegaConnection.on("close", () => this.close(true));
6751
6751
  this._vegaConnection.on("message", (message) => this._onMessage(message));
6752
6752
  this._startTimeout();
6753
6753
  }
6754
- close() {
6754
+ close(vegaConnectionClosed) {
6755
6755
  logger$1.info("close()");
6756
6756
  this.closed = true;
6757
6757
  if (!!this._timeout || Date.now() - this._startTime < 750) {
@@ -6759,6 +6759,12 @@ class BandwidthTester extends EventEmitter {
6759
6759
  error: true,
6760
6760
  });
6761
6761
  }
6762
+ else if (vegaConnectionClosed && this._resultTimeout) {
6763
+ this.emit("result", {
6764
+ error: true,
6765
+ });
6766
+ clearTimeout(this._resultTimeout);
6767
+ }
6762
6768
  this._clearTimeouts();
6763
6769
  clearInterval(this._drawInterval);
6764
6770
  this._drawInterval = null;
@@ -7101,9 +7107,7 @@ function buildDeviceList({ busyDeviceIds, devices, kind }) {
7101
7107
  label: `${busyDeviceIds.includes(d.deviceId) ? "(busy) " : ""}${d.label || d.deviceId.slice(0, 5)}`,
7102
7108
  busy: busyDeviceIds.includes(d.deviceId),
7103
7109
  }));
7104
- return deviceList && deviceList.length !== 0
7105
- ? deviceList
7106
- : [{ [idFieldsByKind[kind]]: "", label: "Default" }];
7110
+ return deviceList && deviceList.length !== 0 ? deviceList : [{ [idFieldsByKind[kind]]: "", label: "Default" }];
7107
7111
  }
7108
7112
  function getUserMedia(constraints) {
7109
7113
  if (!constraints.audio && !constraints.video) {
package/dist/index.d.cts CHANGED
@@ -506,8 +506,8 @@ type GetMediaConstraintsOptions = {
506
506
  };
507
507
  type GetConstraintsOptions = {
508
508
  devices: MediaDeviceInfo[];
509
- audioId?: boolean | string;
510
- videoId?: boolean | string;
509
+ audioId?: boolean | string | null;
510
+ videoId?: boolean | string | null;
511
511
  type?: "ideal" | "exact";
512
512
  options: Omit<GetMediaConstraintsOptions, "preferredDeviceIds">;
513
513
  };
@@ -515,6 +515,11 @@ type GetStreamOptions = {
515
515
  replaceStream?: MediaStream;
516
516
  fallback?: boolean;
517
517
  };
518
+ interface BuildDeviceListOptions {
519
+ devices: MediaDeviceInfo[];
520
+ busyDeviceIds: string[];
521
+ kind: MediaDeviceKind;
522
+ }
518
523
  type GetStreamResult = {
519
524
  error?: unknown;
520
525
  replacedTracks?: MediaStreamTrack[];
@@ -1136,7 +1141,7 @@ declare class BandwidthTester extends EventEmitter {
1136
1141
  features?: any;
1137
1142
  });
1138
1143
  start(runTime?: number): void;
1139
- close(): void;
1144
+ close(vegaConnectionClosed?: boolean): void;
1140
1145
  _start(): Promise<void>;
1141
1146
  _createTransport(send: any): Promise<void>;
1142
1147
  _getTestTrack(): any;
@@ -1163,22 +1168,33 @@ declare class NoDevicesError extends Error {
1163
1168
  constructor(...args: any);
1164
1169
  }
1165
1170
  declare function enumerate(): Promise<MediaDeviceInfo[]>;
1166
- declare function buildDeviceList({ busyDeviceIds, devices, kind }: any): any;
1171
+ declare function buildDeviceList({ busyDeviceIds, devices, kind }: BuildDeviceListOptions): {
1172
+ [x: string]: string | boolean;
1173
+ label: string;
1174
+ busy: boolean;
1175
+ }[] | {
1176
+ [x: string]: string;
1177
+ label: string;
1178
+ }[];
1167
1179
  declare function getUserMedia(constraints: any): Promise<MediaStream>;
1168
1180
  declare function getDeviceData({ audioTrack, videoTrack, devices, stoppedVideoTrack, lastAudioId, lastVideoId, }: {
1169
1181
  audioTrack?: MediaStreamTrack | null;
1170
1182
  videoTrack?: MediaStreamTrack | null;
1171
1183
  devices: MediaDeviceInfo[];
1172
- stoppedVideoTrack?: boolean;
1184
+ stoppedVideoTrack?: MediaStreamTrack;
1173
1185
  lastAudioId?: string | undefined;
1174
1186
  lastVideoId?: string | undefined;
1175
1187
  }): GetDeviceDataResult;
1176
1188
  declare function stopStreamTracks(stream: MediaStream, only?: "audio" | "video" | false): void;
1177
1189
  declare function replaceTracksInStream(stream: MediaStream, newStream: MediaStream, only: "audio" | "video" | false): MediaStreamTrack[];
1178
- declare function getStream(constraintOpt: any, { replaceStream, fallback }?: GetStreamOptions): Promise<GetStreamResult>;
1190
+ declare function getStream(constraintOpt: GetConstraintsOptions, { replaceStream, fallback }?: GetStreamOptions): Promise<GetStreamResult>;
1179
1191
  declare function hasGetDisplayMedia(): boolean;
1180
1192
  declare function getDisplayMedia(constraints?: DisplayMediaStreamOptions, contentHint?: string): Promise<MediaStream>;
1181
- declare function compareLocalDevices(before: MediaDeviceInfo[], after: MediaDeviceInfo[]): any;
1193
+ declare function compareLocalDevices(before: MediaDeviceInfo[], after: MediaDeviceInfo[]): Record<MediaDeviceKind, {
1194
+ removed: Record<string, MediaDeviceInfo>;
1195
+ added: Record<string, MediaDeviceInfo>;
1196
+ changed: Record<string, MediaDeviceInfo>;
1197
+ }>;
1182
1198
  declare function getUpdatedDevices({ oldDevices, newDevices, currentAudioId, currentVideoId, currentSpeakerId, }: {
1183
1199
  oldDevices: MediaDeviceInfo[];
1184
1200
  newDevices: MediaDeviceInfo[];
@@ -1936,4 +1952,4 @@ declare const STREAM_TYPES: {
1936
1952
  };
1937
1953
 
1938
1954
  export { ADDITIONAL_SCREEN_SHARE_SETTINGS, AUDIO_SETTINGS, BandwidthTester, CAMERA_STREAM_ID, EVENTS, KNOCK_MESSAGES, KalmanFilter, Logger, MEDIA_JITTER_BUFFER_TARGET, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, RtcEventNames, RtcManagerDispatcher, SCREEN_SHARE_SETTINGS, SCREEN_SHARE_SIMULCAST_SETTINGS, STREAM_TYPES, ServerSocket, Session, SfuV2Parser, TYPES, VIDEO_SETTINGS_HD, VIDEO_SETTINGS_SD, VIDEO_SETTINGS_VP9, VIDEO_SETTINGS_VP9_LOW_BANDWIDTH, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, cleanSdp, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, external_stun_servers, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getMediasoupDeviceAsync, getNumFailedStatsReports, getNumFailedTrackSsrcLookups, getNumMissingTrackSsrcLookups, getPeerConnectionIndex, getStats, getStream, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, issueDetectorOrMetricEnabled, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, sortCodecs, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, trackAnnotations, turnServerOverride, variance };
1939
- export type { AddCameraStreamOptions, AddSpotlightRequest, AudioEnableRequest, AudioEnableRequestedEvent, AudioEnabledEvent, BreakoutConfig, BreakoutGroupJoinedEvent, BreakoutSessionUpdatedEvent, CannotJoinUnclaimedRoomError, ChatMessage, ClearableTimeout, ClientKickedEvent, ClientLeftEvent, ClientMetadataPayload, ClientMetadataReceivedEvent, ClientRole, ClientUnableToJoinEvent, CloudRecordingStartedEvent, Codec, Credentials, ForbiddenError, ForbiddenErrorNames, GetConstraintsOptions, GetDeviceDataResult, GetMediaConstraintsOptions, GetStreamOptions, GetStreamResult, GetUpdatedDevicesResult, HostPresenceControlsError, IdentifyDeviceRequest, InternalServerError, InvalidAssistantKeyError, IssuesAndMetricsByView, JoinRoomRequest, KnockAcceptedEvent, KnockRejectedEvent, KnockRoomRequest, KnockerLeftEvent, LiveTranscriptionStartedEvent, LiveTranscriptionStoppedEvent, MaxViewerLimitReachedError, Metric, NewClientEvent, OrganizationAssistantNotEnabledError, OrganizationAssistantNotFoundError, OrganizationPlanExhaustedError, RemoveScreenshareStreamOptions, RemoveSpotlightRequest, RoleName, RoomConcurrencyControlsError, RoomEmptyError, RoomFullError, RoomJoinPermissionDeniedError, RoomJoinedErrors, RoomJoinedEvent, RoomJoinedSuccess, RoomKnockedEvent, RoomLockedError, RoomLockedEvent, RoomMeetingTimeExhaustedError, RoomMode, RoomSessionEndedEvent, RtcClientConnectionStatusChangedPayload, RtcEventEmitter, RtcEvents, RtcLocalStreamTrackAddedPayload, RtcLocalStreamTrackRemovedPayload, RtcManager, RtcManagerCreatedPayload, RtcManagerOptions, RtcStreamAddedPayload, ScreenshareStartedEvent, ScreenshareStoppedEvent, SendClientMetadataRequest, SignalClient, SignalEvents, SignalIceCandidateMessage, SignalIceEndOfCandidatesMessage, SignalIceServer, SignalKnocker, SignalMediaServerConfig, SignalRTCSessionDescription, SignalReadyToReceiveOfferMessage, SignalRequests, SignalRoom, SignalSDPMessage, SignalSFUServer, SignalTurnServer, SocketConf, SocketManager, Spotlight, SpotlightAddedEvent, SpotlightRemovedEvent, StatsMonitorOptions, StatsMonitorState, StatsSubscription, TurnTransportProtocol, UniqueRoleAlreadyInRoomError, UpdatedDeviceInfo, UpdatedDevicesInfo, VegaRtcManagerOptions, VideoEnableRequest, VideoEnableRequestedEvent, VideoEnabledEvent, WebRTCProvider };
1955
+ export type { AddCameraStreamOptions, AddSpotlightRequest, AudioEnableRequest, AudioEnableRequestedEvent, AudioEnabledEvent, BreakoutConfig, BreakoutGroupJoinedEvent, BreakoutSessionUpdatedEvent, BuildDeviceListOptions, CannotJoinUnclaimedRoomError, ChatMessage, ClearableTimeout, ClientKickedEvent, ClientLeftEvent, ClientMetadataPayload, ClientMetadataReceivedEvent, ClientRole, ClientUnableToJoinEvent, CloudRecordingStartedEvent, Codec, Credentials, ForbiddenError, ForbiddenErrorNames, GetConstraintsOptions, GetDeviceDataResult, GetMediaConstraintsOptions, GetStreamOptions, GetStreamResult, GetUpdatedDevicesResult, HostPresenceControlsError, IdentifyDeviceRequest, InternalServerError, InvalidAssistantKeyError, IssuesAndMetricsByView, JoinRoomRequest, KnockAcceptedEvent, KnockRejectedEvent, KnockRoomRequest, KnockerLeftEvent, LiveTranscriptionStartedEvent, LiveTranscriptionStoppedEvent, MaxViewerLimitReachedError, Metric, NewClientEvent, OrganizationAssistantNotEnabledError, OrganizationAssistantNotFoundError, OrganizationPlanExhaustedError, RemoveScreenshareStreamOptions, RemoveSpotlightRequest, RoleName, RoomConcurrencyControlsError, RoomEmptyError, RoomFullError, RoomJoinPermissionDeniedError, RoomJoinedErrors, RoomJoinedEvent, RoomJoinedSuccess, RoomKnockedEvent, RoomLockedError, RoomLockedEvent, RoomMeetingTimeExhaustedError, RoomMode, RoomSessionEndedEvent, RtcClientConnectionStatusChangedPayload, RtcEventEmitter, RtcEvents, RtcLocalStreamTrackAddedPayload, RtcLocalStreamTrackRemovedPayload, RtcManager, RtcManagerCreatedPayload, RtcManagerOptions, RtcStreamAddedPayload, ScreenshareStartedEvent, ScreenshareStoppedEvent, SendClientMetadataRequest, SignalClient, SignalEvents, SignalIceCandidateMessage, SignalIceEndOfCandidatesMessage, SignalIceServer, SignalKnocker, SignalMediaServerConfig, SignalRTCSessionDescription, SignalReadyToReceiveOfferMessage, SignalRequests, SignalRoom, SignalSDPMessage, SignalSFUServer, SignalTurnServer, SocketConf, SocketManager, Spotlight, SpotlightAddedEvent, SpotlightRemovedEvent, StatsMonitorOptions, StatsMonitorState, StatsSubscription, TurnTransportProtocol, UniqueRoleAlreadyInRoomError, UpdatedDeviceInfo, UpdatedDevicesInfo, VegaRtcManagerOptions, VideoEnableRequest, VideoEnableRequestedEvent, VideoEnabledEvent, WebRTCProvider };
package/dist/index.d.mts CHANGED
@@ -506,8 +506,8 @@ type GetMediaConstraintsOptions = {
506
506
  };
507
507
  type GetConstraintsOptions = {
508
508
  devices: MediaDeviceInfo[];
509
- audioId?: boolean | string;
510
- videoId?: boolean | string;
509
+ audioId?: boolean | string | null;
510
+ videoId?: boolean | string | null;
511
511
  type?: "ideal" | "exact";
512
512
  options: Omit<GetMediaConstraintsOptions, "preferredDeviceIds">;
513
513
  };
@@ -515,6 +515,11 @@ type GetStreamOptions = {
515
515
  replaceStream?: MediaStream;
516
516
  fallback?: boolean;
517
517
  };
518
+ interface BuildDeviceListOptions {
519
+ devices: MediaDeviceInfo[];
520
+ busyDeviceIds: string[];
521
+ kind: MediaDeviceKind;
522
+ }
518
523
  type GetStreamResult = {
519
524
  error?: unknown;
520
525
  replacedTracks?: MediaStreamTrack[];
@@ -1136,7 +1141,7 @@ declare class BandwidthTester extends EventEmitter {
1136
1141
  features?: any;
1137
1142
  });
1138
1143
  start(runTime?: number): void;
1139
- close(): void;
1144
+ close(vegaConnectionClosed?: boolean): void;
1140
1145
  _start(): Promise<void>;
1141
1146
  _createTransport(send: any): Promise<void>;
1142
1147
  _getTestTrack(): any;
@@ -1163,22 +1168,33 @@ declare class NoDevicesError extends Error {
1163
1168
  constructor(...args: any);
1164
1169
  }
1165
1170
  declare function enumerate(): Promise<MediaDeviceInfo[]>;
1166
- declare function buildDeviceList({ busyDeviceIds, devices, kind }: any): any;
1171
+ declare function buildDeviceList({ busyDeviceIds, devices, kind }: BuildDeviceListOptions): {
1172
+ [x: string]: string | boolean;
1173
+ label: string;
1174
+ busy: boolean;
1175
+ }[] | {
1176
+ [x: string]: string;
1177
+ label: string;
1178
+ }[];
1167
1179
  declare function getUserMedia(constraints: any): Promise<MediaStream>;
1168
1180
  declare function getDeviceData({ audioTrack, videoTrack, devices, stoppedVideoTrack, lastAudioId, lastVideoId, }: {
1169
1181
  audioTrack?: MediaStreamTrack | null;
1170
1182
  videoTrack?: MediaStreamTrack | null;
1171
1183
  devices: MediaDeviceInfo[];
1172
- stoppedVideoTrack?: boolean;
1184
+ stoppedVideoTrack?: MediaStreamTrack;
1173
1185
  lastAudioId?: string | undefined;
1174
1186
  lastVideoId?: string | undefined;
1175
1187
  }): GetDeviceDataResult;
1176
1188
  declare function stopStreamTracks(stream: MediaStream, only?: "audio" | "video" | false): void;
1177
1189
  declare function replaceTracksInStream(stream: MediaStream, newStream: MediaStream, only: "audio" | "video" | false): MediaStreamTrack[];
1178
- declare function getStream(constraintOpt: any, { replaceStream, fallback }?: GetStreamOptions): Promise<GetStreamResult>;
1190
+ declare function getStream(constraintOpt: GetConstraintsOptions, { replaceStream, fallback }?: GetStreamOptions): Promise<GetStreamResult>;
1179
1191
  declare function hasGetDisplayMedia(): boolean;
1180
1192
  declare function getDisplayMedia(constraints?: DisplayMediaStreamOptions, contentHint?: string): Promise<MediaStream>;
1181
- declare function compareLocalDevices(before: MediaDeviceInfo[], after: MediaDeviceInfo[]): any;
1193
+ declare function compareLocalDevices(before: MediaDeviceInfo[], after: MediaDeviceInfo[]): Record<MediaDeviceKind, {
1194
+ removed: Record<string, MediaDeviceInfo>;
1195
+ added: Record<string, MediaDeviceInfo>;
1196
+ changed: Record<string, MediaDeviceInfo>;
1197
+ }>;
1182
1198
  declare function getUpdatedDevices({ oldDevices, newDevices, currentAudioId, currentVideoId, currentSpeakerId, }: {
1183
1199
  oldDevices: MediaDeviceInfo[];
1184
1200
  newDevices: MediaDeviceInfo[];
@@ -1936,4 +1952,4 @@ declare const STREAM_TYPES: {
1936
1952
  };
1937
1953
 
1938
1954
  export { ADDITIONAL_SCREEN_SHARE_SETTINGS, AUDIO_SETTINGS, BandwidthTester, CAMERA_STREAM_ID, EVENTS, KNOCK_MESSAGES, KalmanFilter, Logger, MEDIA_JITTER_BUFFER_TARGET, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, RtcEventNames, RtcManagerDispatcher, SCREEN_SHARE_SETTINGS, SCREEN_SHARE_SIMULCAST_SETTINGS, STREAM_TYPES, ServerSocket, Session, SfuV2Parser, TYPES, VIDEO_SETTINGS_HD, VIDEO_SETTINGS_SD, VIDEO_SETTINGS_VP9, VIDEO_SETTINGS_VP9_LOW_BANDWIDTH, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, cleanSdp, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, external_stun_servers, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getMediasoupDeviceAsync, getNumFailedStatsReports, getNumFailedTrackSsrcLookups, getNumMissingTrackSsrcLookups, getPeerConnectionIndex, getStats, getStream, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, issueDetectorOrMetricEnabled, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, sortCodecs, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, trackAnnotations, turnServerOverride, variance };
1939
- export type { AddCameraStreamOptions, AddSpotlightRequest, AudioEnableRequest, AudioEnableRequestedEvent, AudioEnabledEvent, BreakoutConfig, BreakoutGroupJoinedEvent, BreakoutSessionUpdatedEvent, CannotJoinUnclaimedRoomError, ChatMessage, ClearableTimeout, ClientKickedEvent, ClientLeftEvent, ClientMetadataPayload, ClientMetadataReceivedEvent, ClientRole, ClientUnableToJoinEvent, CloudRecordingStartedEvent, Codec, Credentials, ForbiddenError, ForbiddenErrorNames, GetConstraintsOptions, GetDeviceDataResult, GetMediaConstraintsOptions, GetStreamOptions, GetStreamResult, GetUpdatedDevicesResult, HostPresenceControlsError, IdentifyDeviceRequest, InternalServerError, InvalidAssistantKeyError, IssuesAndMetricsByView, JoinRoomRequest, KnockAcceptedEvent, KnockRejectedEvent, KnockRoomRequest, KnockerLeftEvent, LiveTranscriptionStartedEvent, LiveTranscriptionStoppedEvent, MaxViewerLimitReachedError, Metric, NewClientEvent, OrganizationAssistantNotEnabledError, OrganizationAssistantNotFoundError, OrganizationPlanExhaustedError, RemoveScreenshareStreamOptions, RemoveSpotlightRequest, RoleName, RoomConcurrencyControlsError, RoomEmptyError, RoomFullError, RoomJoinPermissionDeniedError, RoomJoinedErrors, RoomJoinedEvent, RoomJoinedSuccess, RoomKnockedEvent, RoomLockedError, RoomLockedEvent, RoomMeetingTimeExhaustedError, RoomMode, RoomSessionEndedEvent, RtcClientConnectionStatusChangedPayload, RtcEventEmitter, RtcEvents, RtcLocalStreamTrackAddedPayload, RtcLocalStreamTrackRemovedPayload, RtcManager, RtcManagerCreatedPayload, RtcManagerOptions, RtcStreamAddedPayload, ScreenshareStartedEvent, ScreenshareStoppedEvent, SendClientMetadataRequest, SignalClient, SignalEvents, SignalIceCandidateMessage, SignalIceEndOfCandidatesMessage, SignalIceServer, SignalKnocker, SignalMediaServerConfig, SignalRTCSessionDescription, SignalReadyToReceiveOfferMessage, SignalRequests, SignalRoom, SignalSDPMessage, SignalSFUServer, SignalTurnServer, SocketConf, SocketManager, Spotlight, SpotlightAddedEvent, SpotlightRemovedEvent, StatsMonitorOptions, StatsMonitorState, StatsSubscription, TurnTransportProtocol, UniqueRoleAlreadyInRoomError, UpdatedDeviceInfo, UpdatedDevicesInfo, VegaRtcManagerOptions, VideoEnableRequest, VideoEnableRequestedEvent, VideoEnabledEvent, WebRTCProvider };
1955
+ export type { AddCameraStreamOptions, AddSpotlightRequest, AudioEnableRequest, AudioEnableRequestedEvent, AudioEnabledEvent, BreakoutConfig, BreakoutGroupJoinedEvent, BreakoutSessionUpdatedEvent, BuildDeviceListOptions, CannotJoinUnclaimedRoomError, ChatMessage, ClearableTimeout, ClientKickedEvent, ClientLeftEvent, ClientMetadataPayload, ClientMetadataReceivedEvent, ClientRole, ClientUnableToJoinEvent, CloudRecordingStartedEvent, Codec, Credentials, ForbiddenError, ForbiddenErrorNames, GetConstraintsOptions, GetDeviceDataResult, GetMediaConstraintsOptions, GetStreamOptions, GetStreamResult, GetUpdatedDevicesResult, HostPresenceControlsError, IdentifyDeviceRequest, InternalServerError, InvalidAssistantKeyError, IssuesAndMetricsByView, JoinRoomRequest, KnockAcceptedEvent, KnockRejectedEvent, KnockRoomRequest, KnockerLeftEvent, LiveTranscriptionStartedEvent, LiveTranscriptionStoppedEvent, MaxViewerLimitReachedError, Metric, NewClientEvent, OrganizationAssistantNotEnabledError, OrganizationAssistantNotFoundError, OrganizationPlanExhaustedError, RemoveScreenshareStreamOptions, RemoveSpotlightRequest, RoleName, RoomConcurrencyControlsError, RoomEmptyError, RoomFullError, RoomJoinPermissionDeniedError, RoomJoinedErrors, RoomJoinedEvent, RoomJoinedSuccess, RoomKnockedEvent, RoomLockedError, RoomLockedEvent, RoomMeetingTimeExhaustedError, RoomMode, RoomSessionEndedEvent, RtcClientConnectionStatusChangedPayload, RtcEventEmitter, RtcEvents, RtcLocalStreamTrackAddedPayload, RtcLocalStreamTrackRemovedPayload, RtcManager, RtcManagerCreatedPayload, RtcManagerOptions, RtcStreamAddedPayload, ScreenshareStartedEvent, ScreenshareStoppedEvent, SendClientMetadataRequest, SignalClient, SignalEvents, SignalIceCandidateMessage, SignalIceEndOfCandidatesMessage, SignalIceServer, SignalKnocker, SignalMediaServerConfig, SignalRTCSessionDescription, SignalReadyToReceiveOfferMessage, SignalRequests, SignalRoom, SignalSDPMessage, SignalSFUServer, SignalTurnServer, SocketConf, SocketManager, Spotlight, SpotlightAddedEvent, SpotlightRemovedEvent, StatsMonitorOptions, StatsMonitorState, StatsSubscription, TurnTransportProtocol, UniqueRoleAlreadyInRoomError, UpdatedDeviceInfo, UpdatedDevicesInfo, VegaRtcManagerOptions, VideoEnableRequest, VideoEnableRequestedEvent, VideoEnabledEvent, WebRTCProvider };
package/dist/index.d.ts CHANGED
@@ -506,8 +506,8 @@ type GetMediaConstraintsOptions = {
506
506
  };
507
507
  type GetConstraintsOptions = {
508
508
  devices: MediaDeviceInfo[];
509
- audioId?: boolean | string;
510
- videoId?: boolean | string;
509
+ audioId?: boolean | string | null;
510
+ videoId?: boolean | string | null;
511
511
  type?: "ideal" | "exact";
512
512
  options: Omit<GetMediaConstraintsOptions, "preferredDeviceIds">;
513
513
  };
@@ -515,6 +515,11 @@ type GetStreamOptions = {
515
515
  replaceStream?: MediaStream;
516
516
  fallback?: boolean;
517
517
  };
518
+ interface BuildDeviceListOptions {
519
+ devices: MediaDeviceInfo[];
520
+ busyDeviceIds: string[];
521
+ kind: MediaDeviceKind;
522
+ }
518
523
  type GetStreamResult = {
519
524
  error?: unknown;
520
525
  replacedTracks?: MediaStreamTrack[];
@@ -1136,7 +1141,7 @@ declare class BandwidthTester extends EventEmitter {
1136
1141
  features?: any;
1137
1142
  });
1138
1143
  start(runTime?: number): void;
1139
- close(): void;
1144
+ close(vegaConnectionClosed?: boolean): void;
1140
1145
  _start(): Promise<void>;
1141
1146
  _createTransport(send: any): Promise<void>;
1142
1147
  _getTestTrack(): any;
@@ -1163,22 +1168,33 @@ declare class NoDevicesError extends Error {
1163
1168
  constructor(...args: any);
1164
1169
  }
1165
1170
  declare function enumerate(): Promise<MediaDeviceInfo[]>;
1166
- declare function buildDeviceList({ busyDeviceIds, devices, kind }: any): any;
1171
+ declare function buildDeviceList({ busyDeviceIds, devices, kind }: BuildDeviceListOptions): {
1172
+ [x: string]: string | boolean;
1173
+ label: string;
1174
+ busy: boolean;
1175
+ }[] | {
1176
+ [x: string]: string;
1177
+ label: string;
1178
+ }[];
1167
1179
  declare function getUserMedia(constraints: any): Promise<MediaStream>;
1168
1180
  declare function getDeviceData({ audioTrack, videoTrack, devices, stoppedVideoTrack, lastAudioId, lastVideoId, }: {
1169
1181
  audioTrack?: MediaStreamTrack | null;
1170
1182
  videoTrack?: MediaStreamTrack | null;
1171
1183
  devices: MediaDeviceInfo[];
1172
- stoppedVideoTrack?: boolean;
1184
+ stoppedVideoTrack?: MediaStreamTrack;
1173
1185
  lastAudioId?: string | undefined;
1174
1186
  lastVideoId?: string | undefined;
1175
1187
  }): GetDeviceDataResult;
1176
1188
  declare function stopStreamTracks(stream: MediaStream, only?: "audio" | "video" | false): void;
1177
1189
  declare function replaceTracksInStream(stream: MediaStream, newStream: MediaStream, only: "audio" | "video" | false): MediaStreamTrack[];
1178
- declare function getStream(constraintOpt: any, { replaceStream, fallback }?: GetStreamOptions): Promise<GetStreamResult>;
1190
+ declare function getStream(constraintOpt: GetConstraintsOptions, { replaceStream, fallback }?: GetStreamOptions): Promise<GetStreamResult>;
1179
1191
  declare function hasGetDisplayMedia(): boolean;
1180
1192
  declare function getDisplayMedia(constraints?: DisplayMediaStreamOptions, contentHint?: string): Promise<MediaStream>;
1181
- declare function compareLocalDevices(before: MediaDeviceInfo[], after: MediaDeviceInfo[]): any;
1193
+ declare function compareLocalDevices(before: MediaDeviceInfo[], after: MediaDeviceInfo[]): Record<MediaDeviceKind, {
1194
+ removed: Record<string, MediaDeviceInfo>;
1195
+ added: Record<string, MediaDeviceInfo>;
1196
+ changed: Record<string, MediaDeviceInfo>;
1197
+ }>;
1182
1198
  declare function getUpdatedDevices({ oldDevices, newDevices, currentAudioId, currentVideoId, currentSpeakerId, }: {
1183
1199
  oldDevices: MediaDeviceInfo[];
1184
1200
  newDevices: MediaDeviceInfo[];
@@ -1936,4 +1952,4 @@ declare const STREAM_TYPES: {
1936
1952
  };
1937
1953
 
1938
1954
  export { ADDITIONAL_SCREEN_SHARE_SETTINGS, AUDIO_SETTINGS, BandwidthTester, CAMERA_STREAM_ID, EVENTS, KNOCK_MESSAGES, KalmanFilter, Logger, MEDIA_JITTER_BUFFER_TARGET, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, RtcEventNames, RtcManagerDispatcher, SCREEN_SHARE_SETTINGS, SCREEN_SHARE_SIMULCAST_SETTINGS, STREAM_TYPES, ServerSocket, Session, SfuV2Parser, TYPES, VIDEO_SETTINGS_HD, VIDEO_SETTINGS_SD, VIDEO_SETTINGS_VP9, VIDEO_SETTINGS_VP9_LOW_BANDWIDTH, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, cleanSdp, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, external_stun_servers, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getMediasoupDeviceAsync, getNumFailedStatsReports, getNumFailedTrackSsrcLookups, getNumMissingTrackSsrcLookups, getPeerConnectionIndex, getStats, getStream, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, issueDetectorOrMetricEnabled, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, sortCodecs, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, trackAnnotations, turnServerOverride, variance };
1939
- export type { AddCameraStreamOptions, AddSpotlightRequest, AudioEnableRequest, AudioEnableRequestedEvent, AudioEnabledEvent, BreakoutConfig, BreakoutGroupJoinedEvent, BreakoutSessionUpdatedEvent, CannotJoinUnclaimedRoomError, ChatMessage, ClearableTimeout, ClientKickedEvent, ClientLeftEvent, ClientMetadataPayload, ClientMetadataReceivedEvent, ClientRole, ClientUnableToJoinEvent, CloudRecordingStartedEvent, Codec, Credentials, ForbiddenError, ForbiddenErrorNames, GetConstraintsOptions, GetDeviceDataResult, GetMediaConstraintsOptions, GetStreamOptions, GetStreamResult, GetUpdatedDevicesResult, HostPresenceControlsError, IdentifyDeviceRequest, InternalServerError, InvalidAssistantKeyError, IssuesAndMetricsByView, JoinRoomRequest, KnockAcceptedEvent, KnockRejectedEvent, KnockRoomRequest, KnockerLeftEvent, LiveTranscriptionStartedEvent, LiveTranscriptionStoppedEvent, MaxViewerLimitReachedError, Metric, NewClientEvent, OrganizationAssistantNotEnabledError, OrganizationAssistantNotFoundError, OrganizationPlanExhaustedError, RemoveScreenshareStreamOptions, RemoveSpotlightRequest, RoleName, RoomConcurrencyControlsError, RoomEmptyError, RoomFullError, RoomJoinPermissionDeniedError, RoomJoinedErrors, RoomJoinedEvent, RoomJoinedSuccess, RoomKnockedEvent, RoomLockedError, RoomLockedEvent, RoomMeetingTimeExhaustedError, RoomMode, RoomSessionEndedEvent, RtcClientConnectionStatusChangedPayload, RtcEventEmitter, RtcEvents, RtcLocalStreamTrackAddedPayload, RtcLocalStreamTrackRemovedPayload, RtcManager, RtcManagerCreatedPayload, RtcManagerOptions, RtcStreamAddedPayload, ScreenshareStartedEvent, ScreenshareStoppedEvent, SendClientMetadataRequest, SignalClient, SignalEvents, SignalIceCandidateMessage, SignalIceEndOfCandidatesMessage, SignalIceServer, SignalKnocker, SignalMediaServerConfig, SignalRTCSessionDescription, SignalReadyToReceiveOfferMessage, SignalRequests, SignalRoom, SignalSDPMessage, SignalSFUServer, SignalTurnServer, SocketConf, SocketManager, Spotlight, SpotlightAddedEvent, SpotlightRemovedEvent, StatsMonitorOptions, StatsMonitorState, StatsSubscription, TurnTransportProtocol, UniqueRoleAlreadyInRoomError, UpdatedDeviceInfo, UpdatedDevicesInfo, VegaRtcManagerOptions, VideoEnableRequest, VideoEnableRequestedEvent, VideoEnabledEvent, WebRTCProvider };
1955
+ export type { AddCameraStreamOptions, AddSpotlightRequest, AudioEnableRequest, AudioEnableRequestedEvent, AudioEnabledEvent, BreakoutConfig, BreakoutGroupJoinedEvent, BreakoutSessionUpdatedEvent, BuildDeviceListOptions, CannotJoinUnclaimedRoomError, ChatMessage, ClearableTimeout, ClientKickedEvent, ClientLeftEvent, ClientMetadataPayload, ClientMetadataReceivedEvent, ClientRole, ClientUnableToJoinEvent, CloudRecordingStartedEvent, Codec, Credentials, ForbiddenError, ForbiddenErrorNames, GetConstraintsOptions, GetDeviceDataResult, GetMediaConstraintsOptions, GetStreamOptions, GetStreamResult, GetUpdatedDevicesResult, HostPresenceControlsError, IdentifyDeviceRequest, InternalServerError, InvalidAssistantKeyError, IssuesAndMetricsByView, JoinRoomRequest, KnockAcceptedEvent, KnockRejectedEvent, KnockRoomRequest, KnockerLeftEvent, LiveTranscriptionStartedEvent, LiveTranscriptionStoppedEvent, MaxViewerLimitReachedError, Metric, NewClientEvent, OrganizationAssistantNotEnabledError, OrganizationAssistantNotFoundError, OrganizationPlanExhaustedError, RemoveScreenshareStreamOptions, RemoveSpotlightRequest, RoleName, RoomConcurrencyControlsError, RoomEmptyError, RoomFullError, RoomJoinPermissionDeniedError, RoomJoinedErrors, RoomJoinedEvent, RoomJoinedSuccess, RoomKnockedEvent, RoomLockedError, RoomLockedEvent, RoomMeetingTimeExhaustedError, RoomMode, RoomSessionEndedEvent, RtcClientConnectionStatusChangedPayload, RtcEventEmitter, RtcEvents, RtcLocalStreamTrackAddedPayload, RtcLocalStreamTrackRemovedPayload, RtcManager, RtcManagerCreatedPayload, RtcManagerOptions, RtcStreamAddedPayload, ScreenshareStartedEvent, ScreenshareStoppedEvent, SendClientMetadataRequest, SignalClient, SignalEvents, SignalIceCandidateMessage, SignalIceEndOfCandidatesMessage, SignalIceServer, SignalKnocker, SignalMediaServerConfig, SignalRTCSessionDescription, SignalReadyToReceiveOfferMessage, SignalRequests, SignalRoom, SignalSDPMessage, SignalSFUServer, SignalTurnServer, SocketConf, SocketManager, Spotlight, SpotlightAddedEvent, SpotlightRemovedEvent, StatsMonitorOptions, StatsMonitorState, StatsSubscription, TurnTransportProtocol, UniqueRoleAlreadyInRoomError, UpdatedDeviceInfo, UpdatedDevicesInfo, VegaRtcManagerOptions, VideoEnableRequest, VideoEnableRequestedEvent, VideoEnabledEvent, WebRTCProvider };
package/dist/index.mjs CHANGED
@@ -6726,11 +6726,11 @@ class BandwidthTester extends EventEmitter {
6726
6726
  const wsUrl = `wss://${host}`;
6727
6727
  this._vegaConnection = new VegaConnection(wsUrl, "whereby-sfu#bw-test-v1");
6728
6728
  this._vegaConnection.on("open", () => this._start());
6729
- this._vegaConnection.on("close", () => this.close());
6729
+ this._vegaConnection.on("close", () => this.close(true));
6730
6730
  this._vegaConnection.on("message", (message) => this._onMessage(message));
6731
6731
  this._startTimeout();
6732
6732
  }
6733
- close() {
6733
+ close(vegaConnectionClosed) {
6734
6734
  logger$1.info("close()");
6735
6735
  this.closed = true;
6736
6736
  if (!!this._timeout || Date.now() - this._startTime < 750) {
@@ -6738,6 +6738,12 @@ class BandwidthTester extends EventEmitter {
6738
6738
  error: true,
6739
6739
  });
6740
6740
  }
6741
+ else if (vegaConnectionClosed && this._resultTimeout) {
6742
+ this.emit("result", {
6743
+ error: true,
6744
+ });
6745
+ clearTimeout(this._resultTimeout);
6746
+ }
6741
6747
  this._clearTimeouts();
6742
6748
  clearInterval(this._drawInterval);
6743
6749
  this._drawInterval = null;
@@ -7080,9 +7086,7 @@ function buildDeviceList({ busyDeviceIds, devices, kind }) {
7080
7086
  label: `${busyDeviceIds.includes(d.deviceId) ? "(busy) " : ""}${d.label || d.deviceId.slice(0, 5)}`,
7081
7087
  busy: busyDeviceIds.includes(d.deviceId),
7082
7088
  }));
7083
- return deviceList && deviceList.length !== 0
7084
- ? deviceList
7085
- : [{ [idFieldsByKind[kind]]: "", label: "Default" }];
7089
+ return deviceList && deviceList.length !== 0 ? deviceList : [{ [idFieldsByKind[kind]]: "", label: "Default" }];
7086
7090
  }
7087
7091
  function getUserMedia(constraints) {
7088
7092
  if (!constraints.audio && !constraints.video) {
@@ -6726,11 +6726,11 @@ class BandwidthTester extends EventEmitter {
6726
6726
  const wsUrl = `wss://${host}`;
6727
6727
  this._vegaConnection = new VegaConnection(wsUrl, "whereby-sfu#bw-test-v1");
6728
6728
  this._vegaConnection.on("open", () => this._start());
6729
- this._vegaConnection.on("close", () => this.close());
6729
+ this._vegaConnection.on("close", () => this.close(true));
6730
6730
  this._vegaConnection.on("message", (message) => this._onMessage(message));
6731
6731
  this._startTimeout();
6732
6732
  }
6733
- close() {
6733
+ close(vegaConnectionClosed) {
6734
6734
  logger$1.info("close()");
6735
6735
  this.closed = true;
6736
6736
  if (!!this._timeout || Date.now() - this._startTime < 750) {
@@ -6738,6 +6738,12 @@ class BandwidthTester extends EventEmitter {
6738
6738
  error: true,
6739
6739
  });
6740
6740
  }
6741
+ else if (vegaConnectionClosed && this._resultTimeout) {
6742
+ this.emit("result", {
6743
+ error: true,
6744
+ });
6745
+ clearTimeout(this._resultTimeout);
6746
+ }
6741
6747
  this._clearTimeouts();
6742
6748
  clearInterval(this._drawInterval);
6743
6749
  this._drawInterval = null;
@@ -7080,9 +7086,7 @@ function buildDeviceList({ busyDeviceIds, devices, kind }) {
7080
7086
  label: `${busyDeviceIds.includes(d.deviceId) ? "(busy) " : ""}${d.label || d.deviceId.slice(0, 5)}`,
7081
7087
  busy: busyDeviceIds.includes(d.deviceId),
7082
7088
  }));
7083
- return deviceList && deviceList.length !== 0
7084
- ? deviceList
7085
- : [{ [idFieldsByKind[kind]]: "", label: "Default" }];
7089
+ return deviceList && deviceList.length !== 0 ? deviceList : [{ [idFieldsByKind[kind]]: "", label: "Default" }];
7086
7090
  }
7087
7091
  function getUserMedia(constraints) {
7088
7092
  if (!constraints.audio && !constraints.video) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@whereby.com/media",
3
3
  "description": "Media library for Whereby",
4
- "version": "8.0.1",
4
+ "version": "8.0.2",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/whereby/sdk",
7
7
  "repository": {