@livedigital/client 3.35.0-createCustomMediaTracks.1 → 3.35.0-createCustomMediaTracks.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.
@@ -337,7 +337,7 @@ export interface ChannelChangeProducePermissionsPayload {
337
337
  producePermissions: TrackLabel[];
338
338
  changedProducePermissions: TrackLabel[];
339
339
  }
340
- export declare type TrackLabelString = 'camera' | 'microphone' | 'screen-video' | 'screen-audio';
340
+ export declare type TrackLabelString = 'camera' | 'microphone' | 'screen-video' | 'screen-audio' | 'custom-video' | 'custom-audio';
341
341
  export interface ChangePeerGroupsPayload {
342
342
  peerId: string;
343
343
  groups: PeerGroup[];
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@livedigital/client",
3
3
  "author": "vlprojects",
4
4
  "license": "MIT",
5
- "version": "3.35.0-createCustomMediaTracks.1",
5
+ "version": "3.35.0-createCustomMediaTracks.2",
6
6
  "private": false,
7
7
  "bugs": {
8
8
  "url": "https://github.com/vlprojects/livedigital-sdk/issues"
@@ -26,6 +26,7 @@ import {
26
26
  } from './consts';
27
27
  import { InconsistenceType, StorageKey } from './types';
28
28
  import { CallState } from '../../CallState';
29
+ import { getSDKInstancesMarks } from '../../../helpers/common';
29
30
 
30
31
  const RESTORE_STATE_RECOMMENDED_INTERVAL = 15_000;
31
32
 
@@ -114,6 +115,8 @@ class ChannelStateSyncEventHandler {
114
115
  confirmedInconsistencyResult.missingPeers.forEach((peerId) => {
115
116
  this.clientEventEmitter.safeEmit(CLIENT_EVENTS.channelStateInconsistent, {
116
117
  peerId,
118
+ peersLoaded: this.network.peersLoaded,
119
+ sdkInstances: getSDKInstancesMarks().length,
117
120
  type: InconsistenceType.MissingPeer,
118
121
  });
119
122
  });
@@ -4,7 +4,6 @@ import { RtpCapabilities } from 'mediasoup-client/lib/RtpParameters';
4
4
  import { serializeError } from 'serialize-error';
5
5
  import WebRTCIssueDetector from 'webrtc-issue-detector';
6
6
  import clientMetaProvider from '../ClientMetaProvider';
7
- import ConfigService from '../config/ConfigService';
8
7
  import { MAX_JOIN_ATTEMPTS, SOCKET_ERROR_CODE_UNAUTHORIZED } from '../constants/common';
9
8
  import {
10
9
  CHANNEL_EVENTS, CLIENT_EVENTS, INTERNAL_CLIENT_EVENTS, NETWORK_OBSERVER_EVENTS,
@@ -67,6 +66,7 @@ import ConnectionStatManager from './WebRTCStats/ConnectionStatsManager';
67
66
  import StatsHandler from './WebRTCStats/StatsHandler';
68
67
  import { TransportsWebRTCStats } from './WebRTCStats/types';
69
68
  import DataChannelsManager from './network/DataChannelsManager';
69
+ import { markSDKInstance, randomString } from '../helpers/common';
70
70
 
71
71
  @injectable()
72
72
  class Engine {
@@ -82,8 +82,9 @@ class Engine {
82
82
 
83
83
  #denoiserInitializing: boolean = false;
84
84
 
85
+ private mark = randomString();
86
+
85
87
  constructor(
86
- @inject(TOKEN.Config) private readonly config: ConfigService,
87
88
  @inject(TOKEN.CallState) private readonly state: CallState,
88
89
  @inject(TOKEN.MyPeer) private readonly myPeer: MyPeer,
89
90
  @inject(TOKEN.LoggerFactory) loggerFactory: (namespace: string) => Logger,
@@ -112,6 +113,8 @@ class Engine {
112
113
 
113
114
  this.watchNetworkState();
114
115
  this.watchDocumentUnload();
116
+
117
+ markSDKInstance(this.mark);
115
118
  }
116
119
 
117
120
  get isChannelJoined(): boolean {
@@ -64,6 +64,8 @@ class Network {
64
64
 
65
65
  readonly #logger: Logger;
66
66
 
67
+ peersLoaded = false;
68
+
67
69
  constructor(
68
70
  @inject(TOKEN.CallState) private readonly state: CallState,
69
71
  @inject(TOKEN.MyPeer) private readonly myPeer: MyPeer,
@@ -404,7 +406,11 @@ class Network {
404
406
  }
405
407
 
406
408
  public async getChannelPeers(role?: Role): Promise<{ peers: PeerResponse[] }> {
407
- return this.socket.request<{ peers: PeerResponse[] }>(CHANNEL_EVENTS.channelGetPeers, { role });
409
+ const response = await this.socket.request<{ peers: PeerResponse[] }>(CHANNEL_EVENTS.channelGetPeers, { role });
410
+
411
+ this.peersLoaded = true;
412
+
413
+ return response;
408
414
  }
409
415
 
410
416
  private async getParsedTransportStats(transport?: Transport): Promise<TransportStateInfo | undefined> {
@@ -1,6 +1,13 @@
1
+ import crypto from 'crypto';
1
2
  import { LogLevels } from '../constants/common';
2
3
  import { LogLevel } from '../types/common';
3
4
 
5
+ declare global {
6
+ interface Window {
7
+ _sdkMarks: Set<string>,
8
+ }
9
+ }
10
+
4
11
  export const isObject = (object: unknown): object is Record<string, unknown> => (
5
12
  object !== null && typeof object === 'object'
6
13
  );
@@ -64,3 +71,16 @@ export function prepareLogLevel(level?: LogLevel): LogLevel {
64
71
  export function isAnalyticsActive(flag?: boolean): boolean {
65
72
  return flag ?? true;
66
73
  }
74
+
75
+ export function randomString() {
76
+ return crypto.randomBytes(10).toString('hex');
77
+ }
78
+
79
+ export function markSDKInstance(mark: string) {
80
+ window._sdkMarks = window._sdkMarks || new Set<string>();
81
+ window._sdkMarks.add(mark);
82
+ }
83
+
84
+ export function getSDKInstancesMarks(): string[] {
85
+ return Array.from(window._sdkMarks || []);
86
+ }
@@ -416,7 +416,9 @@ export interface ChannelChangeProducePermissionsPayload {
416
416
  changedProducePermissions: TrackLabel[];
417
417
  }
418
418
 
419
- export type TrackLabelString = 'camera' | 'microphone' | 'screen-video' | 'screen-audio';
419
+ export type TrackLabelString = 'camera' | 'microphone'
420
+ | 'screen-video' | 'screen-audio'
421
+ | 'custom-video' | 'custom-audio';
420
422
 
421
423
  export interface ChangePeerGroupsPayload {
422
424
  peerId: string;