Browse Source

feat(ts) add hand-crafted type definitions

Include a type comparison utility to compare auto-generated vs hand-crafted
types.

Thanks @sapkra for working on these! ❤️
dev1
Gary Hunt 3 years ago
parent
commit
e6779627b7
100 changed files with 1683 additions and 0 deletions
  1. 2
    0
      .gitignore
  2. 3
    0
      types/hand-crafted/EventEmitter.d.ts
  3. 151
    0
      types/hand-crafted/JitsiConference.d.ts
  4. 21
    0
      types/hand-crafted/JitsiConferenceErrors.d.ts
  5. 61
    0
      types/hand-crafted/JitsiConferenceEvents.d.ts
  6. 22
    0
      types/hand-crafted/JitsiConnection.d.ts
  7. 6
    0
      types/hand-crafted/JitsiConnectionErrors.d.ts
  8. 7
    0
      types/hand-crafted/JitsiConnectionEvents.d.ts
  9. 8
    0
      types/hand-crafted/JitsiLogLevels.d.ts
  10. 17
    0
      types/hand-crafted/JitsiMediaDevices.d.ts
  11. 6
    0
      types/hand-crafted/JitsiMediaDevicesEvents.d.ts
  12. 154
    0
      types/hand-crafted/JitsiMeetJS.d.ts
  13. 35
    0
      types/hand-crafted/JitsiParticipant.d.ts
  14. 9
    0
      types/hand-crafted/JitsiTrackError.d.ts
  15. 14
    0
      types/hand-crafted/JitsiTrackErrors.d.ts
  16. 9
    0
      types/hand-crafted/JitsiTrackEvents.d.ts
  17. 4
    0
      types/hand-crafted/JitsiTranscriptionStatus.d.ts
  18. 13
    0
      types/hand-crafted/authenticateAndUpgradeRole.d.ts
  19. 13
    0
      types/hand-crafted/modules/RTC/BridgeChannel.d.ts
  20. 7
    0
      types/hand-crafted/modules/RTC/CodecSelection.d.ts
  21. 19
    0
      types/hand-crafted/modules/RTC/JitsiLocalTrack.d.ts
  22. 17
    0
      types/hand-crafted/modules/RTC/JitsiRemoteTrack.d.ts
  23. 32
    0
      types/hand-crafted/modules/RTC/JitsiTrack.d.ts
  24. 54
    0
      types/hand-crafted/modules/RTC/RTC.d.ts
  25. 22
    0
      types/hand-crafted/modules/RTC/RTCUtils.d.ts
  26. 13
    0
      types/hand-crafted/modules/RTC/ScreenObtainer.d.ts
  27. 20
    0
      types/hand-crafted/modules/RTC/TPCUtils.d.ts
  28. 124
    0
      types/hand-crafted/modules/RTC/TraceablePeerConnection.d.ts
  29. 24
    0
      types/hand-crafted/modules/browser/BrowserCapabilities.d.ts
  30. 9
    0
      types/hand-crafted/modules/connectivity/ConnectionQuality.d.ts
  31. 7
    0
      types/hand-crafted/modules/connectivity/IceFailedHandling.d.ts
  32. 11
    0
      types/hand-crafted/modules/connectivity/NetworkInfo.d.ts
  33. 32
    0
      types/hand-crafted/modules/connectivity/ParticipantConnectionStatus.d.ts
  34. 1
    0
      types/hand-crafted/modules/detection/ActiveDeviceDetector.d.ts
  35. 9
    0
      types/hand-crafted/modules/detection/DetectionEvents.d.ts
  36. 6
    0
      types/hand-crafted/modules/detection/NoAudioSignalDetection.d.ts
  37. 5
    0
      types/hand-crafted/modules/detection/P2PDominantSpeakerDetection.d.ts
  38. 18
    0
      types/hand-crafted/modules/detection/TrackVADEmitter.d.ts
  39. 8
    0
      types/hand-crafted/modules/detection/VADAudioAnalyser.d.ts
  40. 16
    0
      types/hand-crafted/modules/detection/VADNoiseDetection.d.ts
  41. 8
    0
      types/hand-crafted/modules/detection/VADReportingService.d.ts
  42. 10
    0
      types/hand-crafted/modules/detection/VADTalkMutedDetection.d.ts
  43. 6
    0
      types/hand-crafted/modules/e2ee/Context.d.ts
  44. 7
    0
      types/hand-crafted/modules/e2ee/E2EEContext.d.ts
  45. 8
    0
      types/hand-crafted/modules/e2ee/E2EEncryption.d.ts
  46. 12
    0
      types/hand-crafted/modules/e2ee/OlmAdapter.d.ts
  47. 0
    0
      types/hand-crafted/modules/e2ee/Worker.d.ts
  48. 5
    0
      types/hand-crafted/modules/e2ee/crypto-utils.d.ts
  49. 4
    0
      types/hand-crafted/modules/e2ee/utils.d.ts
  50. 32
    0
      types/hand-crafted/modules/e2eping/e2eping.d.ts
  51. 6
    0
      types/hand-crafted/modules/event/Jvb121EventGenerator.d.ts
  52. 16
    0
      types/hand-crafted/modules/proxyconnection/ProxyConnectionPC.d.ts
  53. 15
    0
      types/hand-crafted/modules/proxyconnection/ProxyConnectionService.d.ts
  54. 8
    0
      types/hand-crafted/modules/proxyconnection/constants.d.ts
  55. 19
    0
      types/hand-crafted/modules/qualitycontrol/ReceiveVideoController.d.ts
  56. 8
    0
      types/hand-crafted/modules/qualitycontrol/SendVideoController.d.ts
  57. 23
    0
      types/hand-crafted/modules/recording/JibriSession.d.ts
  58. 11
    0
      types/hand-crafted/modules/recording/RecordingManager.d.ts
  59. 21
    0
      types/hand-crafted/modules/recording/recordingConstants.d.ts
  60. 21
    0
      types/hand-crafted/modules/recording/recordingXMLUtils.d.ts
  61. 7
    0
      types/hand-crafted/modules/sdp/LocalSdpMunger.d.ts
  62. 9
    0
      types/hand-crafted/modules/sdp/RtxModifier.d.ts
  63. 16
    0
      types/hand-crafted/modules/sdp/SDP.d.ts
  64. 7
    0
      types/hand-crafted/modules/sdp/SDPDiffer.d.ts
  65. 36
    0
      types/hand-crafted/modules/sdp/SDPUtil.d.ts
  66. 7
    0
      types/hand-crafted/modules/sdp/SdpConsistency.d.ts
  67. 33
    0
      types/hand-crafted/modules/sdp/SdpTransformUtil.d.ts
  68. 8
    0
      types/hand-crafted/modules/settings/Settings.d.ts
  69. 11
    0
      types/hand-crafted/modules/statistics/AnalyticsAdapter.d.ts
  70. 6
    0
      types/hand-crafted/modules/statistics/AudioOutputProblemDetector.d.ts
  71. 6
    0
      types/hand-crafted/modules/statistics/AvgRTPStatsReporter.d.ts
  72. 34
    0
      types/hand-crafted/modules/statistics/CallStats.d.ts
  73. 10
    0
      types/hand-crafted/modules/statistics/LocalStatsCollector.d.ts
  74. 6
    0
      types/hand-crafted/modules/statistics/PerformanceObserverStats.d.ts
  75. 22
    0
      types/hand-crafted/modules/statistics/PrecallTest.d.ts
  76. 13
    0
      types/hand-crafted/modules/statistics/RTPStatsCollector.d.ts
  77. 12
    0
      types/hand-crafted/modules/statistics/SpeakerStats.d.ts
  78. 6
    0
      types/hand-crafted/modules/statistics/SpeakerStatsCollector.d.ts
  79. 1
    0
      types/hand-crafted/modules/statistics/constants.d.ts
  80. 61
    0
      types/hand-crafted/modules/statistics/statistics.d.ts
  81. 16
    0
      types/hand-crafted/modules/transcription/audioRecorder.d.ts
  82. 7
    0
      types/hand-crafted/modules/transcription/recordingResult.d.ts
  83. 14
    0
      types/hand-crafted/modules/transcription/transcriber.d.ts
  84. 4
    0
      types/hand-crafted/modules/transcription/transcriberHolder.d.ts
  85. 9
    0
      types/hand-crafted/modules/transcription/transcriptionServices/AbstractTranscriptionService.d.ts
  86. 7
    0
      types/hand-crafted/modules/transcription/transcriptionServices/SphinxTranscriptionService.d.ts
  87. 8
    0
      types/hand-crafted/modules/transcription/word.d.ts
  88. 6
    0
      types/hand-crafted/modules/util/AsyncQueue.d.ts
  89. 1
    0
      types/hand-crafted/modules/util/AuthUtil.d.ts
  90. 5
    0
      types/hand-crafted/modules/util/Deferred.d.ts
  91. 8
    0
      types/hand-crafted/modules/util/EventEmitterForwarder.d.ts
  92. 5
    0
      types/hand-crafted/modules/util/GlobalOnErrorHandlerImpl.d.ts
  93. 7
    0
      types/hand-crafted/modules/util/Listenable.d.ts
  94. 13
    0
      types/hand-crafted/modules/util/MathUtil.d.ts
  95. 9
    0
      types/hand-crafted/modules/util/RandomUtil.d.ts
  96. 1
    0
      types/hand-crafted/modules/util/Retry.d.ts
  97. 1
    0
      types/hand-crafted/modules/util/ScriptUtil.d.ts
  98. 1
    0
      types/hand-crafted/modules/util/StringUtils.d.ts
  99. 1
    0
      types/hand-crafted/modules/util/TestUtils.d.ts
  100. 0
    0
      types/hand-crafted/modules/util/UsernameGenerator.d.ts

+ 2
- 0
.gitignore View File

@@ -14,3 +14,5 @@ npm-*.log
14 14
 stats.json
15 15
 .vscode
16 16
 dist
17
+types/types-comparer/auto.json
18
+types/types-comparer/hand-crafted.json

+ 3
- 0
types/hand-crafted/EventEmitter.d.ts View File

@@ -0,0 +1,3 @@
1
+export default class EventEmitter<T> { // TODO: is this defined somewhere?
2
+  emit: ( name: T, id: string, arguments: unknown ) => void; // TODO:
3
+}

+ 151
- 0
types/hand-crafted/JitsiConference.d.ts View File

@@ -0,0 +1,151 @@
1
+import { JitsiConferenceEvents } from './JitsiConferenceEvents';
2
+import JitsiConnection from './JitsiConnection';
3
+import JitsiTrackError from './JitsiTrackError';
4
+import JitsiParticipant from './JitsiParticipant';
5
+import JitsiLocalTrack from './modules/RTC/JitsiLocalTrack';
6
+import JitsiRemoteTrack from './modules/RTC/JitsiLocalTrack';
7
+import JitsiTrack from './modules/RTC/JitsiTrack';
8
+import Transcriber from './modules/transcription/transcriber';
9
+import JitsiVideoSIPGWSession from './modules/videosipgw/JitsiVideoSIPGWSession';
10
+import TraceablePeerConnection from './modules/RTC/TraceablePeerConnection';
11
+import { MediaType } from './service/RTC/MediaType';
12
+
13
+export default class JitsiConference {
14
+  constructor( options: {
15
+    name: string;
16
+    config: {
17
+      avgRtpStatsN?: number,
18
+      enableIceRestart?: boolean,
19
+      p2p?: {
20
+        enabled: boolean,
21
+        backToP2PDelay?: number
22
+      },
23
+      channelLastN?: number,
24
+      forceJVB121Ratio?: number
25
+    },
26
+    connection: unknown
27
+  } ); // TODO:
28
+  join(password: string, replaceParticipant?: boolean): void;
29
+  authenticateAndUpgradeRole: ( options: unknown ) => Promise<unknown>; // TODO:
30
+  isJoined: () => boolean;
31
+  isP2PEnabled: () => boolean;
32
+  isP2PTestModeEnabled: () => boolean;
33
+  leave: () => Promise<unknown>; // TODO:
34
+  getName: () => string;
35
+  getConnection: () => JitsiConnection;
36
+  isAuthEnabled: () => boolean;
37
+  isLoggedIn: () => boolean;
38
+  getAuthLogin: () => unknown; // TODO:
39
+  isExternalAuthEnabled: () => boolean;
40
+  getExternalAuthUrl: ( urlForPopup: boolean ) => Promise<unknown>; // TODO: probably returns a Promise<string>
41
+  getLocalTracks: ( mediaType: MediaType ) => JitsiLocalTrack[];
42
+  getLocalAudioTrack: () => JitsiLocalTrack | null;
43
+  getLocalVideoTrack: () => JitsiLocalTrack | null;
44
+  getPerformanceStats: () => unknown | null; // TODO:
45
+  on: ( eventId: JitsiConferenceEvents, handler: () => unknown ) => void; // TODO:
46
+  off: ( eventId: JitsiConferenceEvents, handler: () => unknown ) => void; // TODO:
47
+  addEventListener: ( eventId: JitsiConferenceEvents, handler: () => unknown ) => void; // TODO:
48
+  removeEventListener: ( eventId: JitsiConferenceEvents, handler: () => unknown ) => void; // TODO:
49
+  addCommandListener: ( command: string, handler: () => unknown ) => void; // TODO:
50
+  removeCommandListener: ( command: string, handler: () => unknown ) => void; // TODO:
51
+  // sendTextMessage: (message: string, elementName: string) => void; // obsolete
52
+  // sendPrivateTextMessage: (id: string, message: string, elementName: string) => void; // obsolete
53
+  sendCommand: ( name: string, values: unknown ) => void; // TODO:
54
+  sendCommandOnce: ( name: string, values: unknown ) => void; // TODO:
55
+  removeCommand: ( name: string ) => void;
56
+  setDisplayName: ( name: string ) => void;
57
+  setSubject: ( name: string ) => void;
58
+  getTranscriber: () => Transcriber;
59
+  getTranscriptionStatus: () => 'on' | 'off';
60
+  addTrack: ( track: JitsiLocalTrack ) => Promise<JitsiLocalTrack>;
61
+  onLocalTrackRemoved: ( track: JitsiLocalTrack ) => void;
62
+  removeTrack: ( track: JitsiLocalTrack ) => void;
63
+  replaceTrack: ( oldTrack: JitsiLocalTrack, newTrack: JitsiLocalTrack ) => Promise<unknown | JitsiTrackError>;
64
+  getRole: () => string;
65
+  isHidden: () => boolean | null;
66
+  isModerator: () => boolean | null;
67
+  lock: ( password: string ) => Promise<unknown | Error>;
68
+  unlock: () => Promise<unknown | Error>;
69
+  selectParticipant: ( participantId: string ) => void;
70
+  selectParticipants: ( participantIds: string[] ) => void;
71
+  getLastN: () => number;
72
+  setLastN: ( lastN: number ) => void;
73
+  isInLastN: ( participantId: string ) => boolean;
74
+  getParticipants: () => JitsiParticipant[];
75
+  getParticipantCount: ( countHidden?: boolean ) => number;
76
+  getParticipantById: ( id: string ) => JitsiParticipant;
77
+  grantOwner: ( id: string ) => void;
78
+  revokeOwner: ( id: string ) => void;
79
+  kickParticipant: ( id: string, reason?: string ) => void;
80
+  muteParticipant: ( id: string, mediaType?: MediaType ) => void;
81
+  onMemberJoined: ( jid: string, nick: string, role: string, isHidden: boolean, statsID?: unknown, status?: string, identity?: unknown, botType?: unknown, fullJid?: string, features?: unknown, isReplaceParticipant?: boolean ) => void;
82
+  onMemberLeft: ( jid: string ) => void;
83
+  onMemberKicked: ( isSelfPresence: boolean, actorId: string, kickedParticipantId?: string, reason?: string, isReplaceParticipant?: boolean ) => void;
84
+  onLocalRoleChanged: ( role: string ) => void;
85
+  onUserRoleChanged: ( jid: string, role: string ) => void;
86
+  onDisplayNameChanged: ( jid: string, displayName: string ) => void;
87
+  onRemoteTrackAdded: ( track: JitsiRemoteTrack ) => void;
88
+  onCallAccepted: ( session: unknown, answer: JQuery ) => void; // TODO: answer is a jQuery object, unknown = JingleSessionPC which doesn't exist
89
+  onTransportInfo: ( session: unknown, transportInfo: JQuery ) => void; // TODO: transportInfo is a jQuery object, unknown = JingleSessionPC which doesn't exist
90
+  onRemoteTrackRemoved: ( removedTrack: JitsiRemoteTrack ) => void;
91
+  onIncomingCall: ( jingleSession: unknown, jingleOffer: unknown, now: unknown ) => void; // TODO: unknown = JingleSessionPC which doesn't exist
92
+  onCallEnded: ( jingleSession: unknown, reasonCondition: string, reasonText: string ) => void; // TODO: unknown = JingleSessionPC which doesn't exist
93
+  onSuspendDetected: ( jingleSession: unknown ) => void; // TODO: unknown = JingleSessionPC which doesn't exist
94
+  updateDTMFSupport: () => void;
95
+  isDTMFSupported: () => boolean;
96
+  myUserId: () => string;
97
+  sendTones: ( tones: unknown, duration: unknown, pause: unknown ) => void; // TODO:
98
+  startRecording: ( options: unknown ) => Promise<unknown>;
99
+  stopRecording: ( sessionID: string ) => Promise<unknown>;
100
+  isSIPCallingSupported: () => boolean;
101
+  dial: ( number: string ) => Promise<unknown>;
102
+  hangup: () => Promise<unknown>;
103
+  startTranscriber: () => Promise<unknown>;
104
+  stopTranscriber: () => Promise<unknown>;
105
+  getPhoneNumber: () => string | null;
106
+  getPhonePin: () => string | null;
107
+  getMeetingUniqueId: () => string | undefined;
108
+  getActivePeerConnection: () => TraceablePeerConnection | null;
109
+  getConnectionState: () => string | null;
110
+  setStartMutedPolicy: ( policy: { audio: boolean, video: boolean } ) => void;
111
+  getStartMutedPolicy: () => { audio: boolean, video: boolean };
112
+  isStartAudioMuted: () => boolean;
113
+  isStartVideoMuted: () => boolean;
114
+  getConnectionTimes: () => unknown;
115
+  setLocalParticipantProperty: ( name: string, value: unknown ) => void;
116
+  removeLocalParticipantProperty: ( name: string ) => void;
117
+  getLocalParticipantProperty: ( name: string ) => unknown;
118
+  sendFeedback: ( overallFeedback: number, detailedFeedback: unknown ) => Promise<unknown>;
119
+  isCallstatsEnabled: () => boolean;
120
+  getSsrcByTrack: ( track: JitsiTrack ) => number | undefined;
121
+  sendApplicationLog: ( message: string ) => void;
122
+  // sendEndpointMessage: (to: string, payload: unknown) => unknown; // TODO: deprecated
123
+  // broadcastEndpointMessage: (payload: unknown) => void; // TODO: deprecated
124
+  sendEndpointStatsMessage: ( payload: unknown ) => void; // TODO:
125
+  sendMessage: ( message: string | unknown, to?: string, sendThroughVideobridge?: boolean ) => void; // TODO: JSDoc is incorrect
126
+  isConnectionInterrupted: () => boolean;
127
+  getProperty: ( key: string ) => unknown; // TODO:
128
+  isP2PActive: () => boolean;
129
+  getP2PConnectionState: () => string | null;
130
+  setDesktopSharingFrameRate: (maxFps: number) => boolean;
131
+  startP2PSession: () => void;
132
+  stopP2PSession: () => void;
133
+  getSpeakerStats: () => unknown; // TODO:
134
+  setReceiverConstraints: ( videoConstraints: unknown ) => void; // TODO:
135
+  setReceiverVideoConstraint: ( maxFrameHeight: number ) => void;
136
+  setSenderVideoConstraint: ( maxFrameHeight: number ) => Promise<unknown>; // TODO:
137
+  isE2EEEnabled: () => boolean;
138
+  createVideoSIPGWSession: ( sipAddress: string, displayName: string ) => JitsiVideoSIPGWSession | Error;
139
+  toggleE2EE: ( enabled: boolean ) => void;
140
+  isLobbySupported: () => boolean;
141
+  isMembersOnly: () => boolean;
142
+  enableLobby: () => Promise<unknown>;
143
+  disableLobby: () => void;
144
+  joinLobby: ( displayName: string, email: string ) => Promise<never>;
145
+  lobbyDenyAccess: ( id: string ) => void;
146
+  lobbyApproveAccess: ( id: string ) => void;
147
+  isAVModerationSupported(): boolean;
148
+  enableAVModeration: ( mediaType: MediaType ) => void;
149
+  disableAVModeration: ( mediaType: MediaType ) => void;
150
+  avModerationApprove: ( mediaType: MediaType, id: string ) => void;
151
+}

+ 21
- 0
types/hand-crafted/JitsiConferenceErrors.d.ts View File

@@ -0,0 +1,21 @@
1
+export enum JitsiConferenceErrors {
2
+  AUTHENTICATION_REQUIRED = 'conference.authenticationRequired',
3
+  CHAT_ERROR = 'conference.chatError',
4
+  CONFERENCE_DESTROYED = 'conference.destroyed',
5
+  CONFERENCE_MAX_USERS = 'conference.max_users',
6
+  CONNECTION_ERROR = 'conference.connectionError',
7
+  CONFERENCE_RESTARTED = 'conference.restarted',
8
+  NOT_ALLOWED_ERROR = 'conference.connectionError.notAllowed',
9
+  MEMBERS_ONLY_ERROR = 'conference.connectionError.membersOnly',
10
+  CONFERENCE_ACCESS_DENIED = 'conference.connectionError.accessDenied',
11
+  FOCUS_DISCONNECTED = 'conference.focusDisconnected',
12
+  FOCUS_LEFT = 'conference.focusLeft',
13
+  GRACEFUL_SHUTDOWN = 'conference.gracefulShutdown',
14
+  ICE_FAILED = 'conference.iceFailed',
15
+  INCOMPATIBLE_SERVER_VERSIONS = 'conference.incompatible_server_versions',
16
+  OFFER_ANSWER_FAILED = 'conference.offerAnswerFailed',
17
+  PASSWORD_NOT_SUPPORTED = 'conference.passwordNotSupported',
18
+  PASSWORD_REQUIRED = 'conference.passwordRequired',
19
+  RESERVATION_ERROR = 'conference.reservationError',
20
+  VIDEOBRIDGE_NOT_AVAILABLE = 'conference.videobridgeNotAvailable'
21
+}

+ 61
- 0
types/hand-crafted/JitsiConferenceEvents.d.ts View File

@@ -0,0 +1,61 @@
1
+export enum JitsiConferenceEvents {
2
+  AUDIO_INPUT_STATE_CHANGE = 'conference.audio_input_state_changed',
3
+  AUTH_STATUS_CHANGED = 'conference.auth_status_changed',
4
+  BEFORE_STATISTICS_DISPOSED = 'conference.beforeStatisticsDisposed',
5
+  CONFERENCE_ERROR = 'conference.error',
6
+  CONFERENCE_FAILED = 'conference.failed',
7
+  CONFERENCE_JOINED = 'conference.joined',
8
+  CONFERENCE_LEFT = 'conference.left',
9
+  CONFERENCE_UNIQUE_ID_SET = 'conference.unique_id_set',
10
+  CONNECTION_ESTABLISHED = 'conference.connectionEstablished',
11
+  CONNECTION_INTERRUPTED = 'conference.connectionInterrupted',
12
+  CONNECTION_RESTORED = 'conference.connectionRestored',
13
+  DATA_CHANNEL_OPENED = 'conference.dataChannelOpened',
14
+  DISPLAY_NAME_CHANGED = 'conference.displayNameChanged',
15
+  DOMINANT_SPEAKER_CHANGED = 'conference.dominantSpeaker',
16
+  CONFERENCE_CREATED_TIMESTAMP = 'conference.createdTimestamp',
17
+  DTMF_SUPPORT_CHANGED = 'conference.dtmfSupportChanged',
18
+  ENDPOINT_MESSAGE_RECEIVED = 'conference.endpoint_message_received',
19
+  ENDPOINT_STATS_RECEIVED = 'conference.endpoint_stats_received',
20
+  JVB121_STATUS = 'conference.jvb121Status',
21
+  KICKED = 'conference.kicked',
22
+  PARTICIPANT_KICKED = 'conference.participant_kicked',
23
+  LAST_N_ENDPOINTS_CHANGED = 'conference.lastNEndpointsChanged',
24
+  LOCK_STATE_CHANGED = 'conference.lock_state_changed',
25
+  SERVER_REGION_CHANGED = 'conference.server_region_changed',
26
+  _MEDIA_SESSION_STARTED = 'conference.media_session.started',
27
+  _MEDIA_SESSION_ACTIVE_CHANGED = 'conference.media_session.active_changed',
28
+  MEMBERS_ONLY_CHANGED = 'conference.membersOnlyChanged',
29
+  MESSAGE_RECEIVED = 'conference.messageReceived',
30
+  NO_AUDIO_INPUT = 'conference.no_audio_input',
31
+  NOISY_MIC = 'conference.noisy_mic',
32
+  NON_PARTICIPANT_MESSAGE_RECEIVED = 'conference.non_participant_message_received',
33
+  PRIVATE_MESSAGE_RECEIVED = 'conference.privateMessageReceived',
34
+  PARTICIPANT_CONN_STATUS_CHANGED = 'conference.participant_conn_status_changed',
35
+  PARTCIPANT_FEATURES_CHANGED = 'conference.partcipant_features_changed',
36
+  PARTICIPANT_PROPERTY_CHANGED = 'conference.participant_property_changed',
37
+  P2P_STATUS = 'conference.p2pStatus',
38
+  PHONE_NUMBER_CHANGED = 'conference.phoneNumberChanged',
39
+  PROPERTIES_CHANGED = 'conference.propertiesChanged',
40
+  RECORDER_STATE_CHANGED = 'conference.recorderStateChanged',
41
+  VIDEO_SIP_GW_AVAILABILITY_CHANGED = 'conference.videoSIPGWAvailabilityChanged',
42
+  VIDEO_SIP_GW_SESSION_STATE_CHANGED = 'conference.videoSIPGWSessionStateChanged',
43
+  START_MUTED_POLICY_CHANGED = 'conference.start_muted_policy_changed',
44
+  STARTED_MUTED = 'conference.started_muted',
45
+  SUBJECT_CHANGED = 'conference.subjectChanged',
46
+  SUSPEND_DETECTED = 'conference.suspendDetected',
47
+  TALK_WHILE_MUTED = 'conference.talk_while_muted',
48
+  TRACK_ADDED = 'conference.trackAdded',
49
+  TRACK_AUDIO_LEVEL_CHANGED = 'conference.audioLevelsChanged',
50
+  TRACK_MUTE_CHANGED = 'conference.trackMuteChanged',
51
+  TRACK_REMOVED = 'conference.trackRemoved',
52
+  TRANSCRIPTION_STATUS_CHANGED = 'conference.transcriptionStatusChanged',
53
+  USER_JOINED = 'conference.userJoined',
54
+  USER_LEFT = 'conference.userLeft',
55
+  USER_ROLE_CHANGED = 'conference.roleChanged',
56
+  USER_STATUS_CHANGED = 'conference.statusChanged',
57
+  BOT_TYPE_CHANGED = 'conference.bot_type_changed',
58
+  LOBBY_USER_JOINED = 'conference.lobby.userJoined',
59
+  LOBBY_USER_UPDATED = 'conference.lobby.userUpdated',
60
+  LOBBY_USER_LEFT = 'conference.lobby.userLeft'
61
+}

+ 22
- 0
types/hand-crafted/JitsiConnection.d.ts View File

@@ -0,0 +1,22 @@
1
+import JitsiConference from './JitsiConference';
2
+import { JitsiConnectionEvents } from './JitsiConnectionEvents';
3
+
4
+export type JitsiConferenceOptions = {
5
+  // TODO:
6
+}
7
+
8
+export default class JitsiConnection {
9
+  constructor( appID?: string, token?: unknown, options?: JitsiConferenceOptions );
10
+  connect: ( options: unknown ) => void; // TODO:
11
+  attach: ( options: unknown ) => void; // TODO:
12
+  disconnect: ( ...args: unknown[] ) => Promise<unknown>; // TODO:
13
+  getJid: () => string;
14
+  setToken: ( token: unknown ) => void;
15
+  initJitsiConference: ( name: string, options: JitsiConferenceOptions ) => JitsiConference;
16
+  addEventListener: ( event: JitsiConnectionEvents, listener: unknown ) => void; // TODO:
17
+  removeEventListener: ( event: JitsiConnectionEvents, listener: unknown ) => void; // TODO:
18
+  getConnectionTimes: () => number; // TODO: check
19
+  addFeature: ( feature: string, submit?: boolean ) => void;
20
+  removeFeature: ( feature: string, submit?: boolean ) => void;
21
+  getLogs: () => unknown | { metadata: { time: Date, url: string, ua: string, xmpp?: unknown } }; // TODO:
22
+}

+ 6
- 0
types/hand-crafted/JitsiConnectionErrors.d.ts View File

@@ -0,0 +1,6 @@
1
+export enum JitsiConnectionErrors {
2
+  CONNECTION_DROPPED_ERROR = 'connection.droppedError',
3
+  OTHER_ERROR = 'connection.otherError',
4
+  PASSWORD_REQUIRED = 'connection.passwordRequired',
5
+  SERVER_ERROR = 'connection.serverError'
6
+}

+ 7
- 0
types/hand-crafted/JitsiConnectionEvents.d.ts View File

@@ -0,0 +1,7 @@
1
+export enum JitsiConnectionEvents {
2
+  CONNECTION_DISCONNECTED = 'connection.connectionDisconnected',
3
+  CONNECTION_ESTABLISHED = 'connection.connectionEstablished',
4
+  CONNECTION_FAILED = 'connection.connectionFailed',
5
+  WRONG_STATE = 'connection.wrongState',
6
+  DISPLAY_NAME_REQUIRED = 'connection.display_name_required'
7
+}

+ 8
- 0
types/hand-crafted/JitsiLogLevels.d.ts View File

@@ -0,0 +1,8 @@
1
+export enum JitsiLogLevels {
2
+  TRACE = 'trace',
3
+  DEBUG = 'debug',
4
+  INFO = 'info',
5
+  LOG = 'log',
6
+  WARN = 'warn',
7
+  ERROR = 'error'
8
+}

+ 17
- 0
types/hand-crafted/JitsiMediaDevices.d.ts View File

@@ -0,0 +1,17 @@
1
+import { MediaType } from './service/RTC/MediaType';
2
+
3
+declare class JitsiMediaDevices {
4
+  enumerateDevices: ( callback: ( devices: MediaDeviceInfo[] ) => void ) => void;
5
+  isDeviceListAvailable: () => Promise<boolean>;
6
+  isDeviceChangeAvailable: ( deviceType: string ) => boolean;
7
+  isDevicePermissionGranted: ( type: MediaType ) => Promise<boolean>;
8
+  isMultipleAudioInputSupported: () => boolean;
9
+  getAudioOutputDevice: () => string;
10
+  setAudioOutputDevice: ( deviceId: string ) => Promise<unknown>; // TODO:
11
+  addEventListener: ( event: string, handler: unknown ) => void; // TODO: identify the enum for the event types and the strongly typed handlers
12
+  removeEventListener: ( event: string, handler: unknown ) => void; // TODO: identify the enum for the event types and the strongly typed handlers
13
+  emitEvent: ( event: string, ...args: unknown[] ) => void; // TODO: identify the enum for the event types
14
+}
15
+
16
+declare var _default: JitsiMediaDevices;
17
+export default _default;

+ 6
- 0
types/hand-crafted/JitsiMediaDevicesEvents.d.ts View File

@@ -0,0 +1,6 @@
1
+export enum JitsiMediaDevicesEvents {
2
+  DEVICE_LIST_CHANGED = 'mediaDevices.devicechange',
3
+  PERMISSIONS_CHANGED = 'rtc.permissions_changed',
4
+  PERMISSION_PROMPT_IS_SHOWN = 'mediaDevices.permissionPromptIsShown',
5
+  SLOW_GET_USER_MEDIA = 'mediaDevices.slowGetUserMedia'
6
+}

+ 154
- 0
types/hand-crafted/JitsiMeetJS.d.ts View File

@@ -0,0 +1,154 @@
1
+import Logger from 'jitsi-meet-logger';
2
+import JitsiConnection from './JitsiConnection';
3
+import JitsiMediaDevices from './JitsiMediaDevices';
4
+import { JitsiConferenceErrors } from './JitsiConferenceErrors';
5
+import { JitsiConnectionErrors } from './JitsiConnectionErrors';
6
+import { JitsiTrackErrors } from './JitsiTrackErrors';
7
+import { JitsiLogLevels } from './JitsiLogLevels';
8
+import { JitsiMediaDevicesEvents } from './JitsiMediaDevicesEvents';
9
+import { JitsiTrackEvents } from './JitsiTrackEvents';
10
+import { JitsiConnectionEvents } from './JitsiConnectionEvents';
11
+import { JitsiConferenceEvents } from './JitsiConferenceEvents';
12
+import { JitsiTranscriptionStatus } from './JitsiTranscriptionStatus';
13
+import BrowserCapabilities from './modules/browser/BrowserCapabilities';
14
+import { ParticipantConnectionStatus } from './modules/connectivity/ParticipantConnectionStatus';
15
+import { DetectionEvents } from './modules/detection/DetectionEvents';
16
+import TrackVADEmitter, { VADProcessor } from './modules/detection/TrackVADEmitter';
17
+import RecordingConstants from './modules/recording/recordingConstants';
18
+import JitsiLocalTrack from './modules/RTC/JitsiLocalTrack';
19
+import PrecallTest from './modules/statistics/PrecallTest';
20
+import AuthUtil from './modules/util/AuthUtil';
21
+import ScriptUtil from './modules/util/ScriptUtil';
22
+import { VideoSIPGWConstants } from './modules/videosipgw/VideoSIPGWConstants';
23
+import AudioMixer from './modules/webaudio/AudioMixer';
24
+import { ConnectionQualityEvents } from './service/connectivity/ConnectionQualityEvents';
25
+import { E2ePingEvents } from './service/e2eping/E2ePingEvents';
26
+
27
+export type CreateLocalTracksOptions = {
28
+  effects?: Array<unknown>; // TODO: work out what unknown is
29
+  devices?: Array<string>;
30
+  resolution?: string;
31
+  cameraDeviceId?: string;
32
+  micDeviceId?: string;
33
+  interval?: number;
34
+  checkAgain?: () => boolean;
35
+  listener?: () => void;
36
+  frameRate?: {
37
+    min?: string,
38
+    max?: string,
39
+  },
40
+  desktopSharingFrameRate?: {
41
+    min?: string,
42
+    max?: string,
43
+  },
44
+  constraints?: any // TODO: figure out this type
45
+}
46
+
47
+export type InitOptions = {
48
+  disableAudioLevels?: boolean,
49
+  useIPv6?: unknown,
50
+  disableSimulcast?: unknown,
51
+  enableWindowOnErrorHandler?: unknown,
52
+  disableThirdPartyRequests?: unknown,
53
+  enableAnalyticsLogging?: unknown,
54
+  externalStorage?: unknown,
55
+  callStatsCustomScriptUrl?: unknown,
56
+  disableRtx?: unknown,
57
+  disabledCodec?: unknown,
58
+  preferredCodec?: unknown,
59
+  useTurnUdp?: unknown
60
+}
61
+
62
+export type JitsiMeetJSType = {
63
+  version: string;
64
+
65
+  JitsiConnection: typeof JitsiConnection;
66
+
67
+  ProxyConnectionService: unknown; // TODO:
68
+
69
+  //USER_MEDIA_SLOW_PROMISE_TIMEOUT: 1000;
70
+
71
+  constants: {
72
+    participantConnectionStatus: typeof ParticipantConnectionStatus,
73
+    recording: typeof RecordingConstants,
74
+    sipVideoGW: typeof VideoSIPGWConstants,
75
+    transcriptionStatus: typeof JitsiTranscriptionStatus,
76
+  };
77
+
78
+  events: {
79
+    conference: typeof JitsiConferenceEvents,
80
+    connection: typeof JitsiConnectionEvents,
81
+    detection: typeof DetectionEvents,
82
+    track: typeof JitsiTrackEvents,
83
+    mediaDevices: typeof JitsiMediaDevicesEvents,
84
+    connectionQuality: typeof ConnectionQualityEvents,
85
+    e2eping: typeof E2ePingEvents
86
+  };
87
+
88
+  errors: {
89
+    conference: typeof JitsiConferenceErrors,
90
+    connection: typeof JitsiConnectionErrors,
91
+    track: typeof JitsiTrackErrors
92
+  };
93
+
94
+  errorTypes: {
95
+    JitsiTrackError: unknown // TODO:
96
+  };
97
+
98
+  logLevels: typeof JitsiLogLevels; // TODO: code refers to Logger.levels and that is in jitsi-meet-logger
99
+
100
+  mediaDevices: typeof JitsiMediaDevices;
101
+
102
+  analytics: unknown; // TODO: code referes to Statistics.analytics which comes from modules/statstics/AnalyticsAdapter.js
103
+
104
+  init: ( options: InitOptions ) => unknown; // TODO:
105
+
106
+  isDesktopSharingEnabled: () => boolean;
107
+
108
+  isWebRtcSupported: () => boolean;
109
+
110
+  setLogLevel: ( level: Logger.levels ) => void;
111
+
112
+  setLogLevelById: ( level: Logger.levels, id: unknown ) => void; // TODO:
113
+
114
+  addGlobalLogTransport: ( globalTransport: unknown ) => void; // TODO:
115
+
116
+  removeGlobalLogTransport: ( globalTransport: unknown ) => void; // TODO:
117
+
118
+  setGlobalLogOptions: ( options: unknown ) => void; // TODO:
119
+
120
+  createLocalTracks: ( options: CreateLocalTracksOptions, firePermissionPromptIsShownEvent?: boolean, originalOptions?: CreateLocalTracksOptions ) => Promise<Array<JitsiLocalTrack> | JitsiConferenceErrors>; // TODO:
121
+
122
+  createTrackVADEmitter: ( localAudioDeviceId: string, sampleRate: 256 | 512 | 1024 | 4096 | 8192 | 16384, vadProcessor: VADProcessor ) => Promise<TrackVADEmitter>;
123
+
124
+  createAudioMixer: () => AudioMixer;
125
+
126
+  getActiveAudioDevice: () => Promise<Object>; // TODO: can we improve on object?
127
+
128
+  // isDeviceListAvailable: () => boolean; // obsosete
129
+
130
+  // isDeviceChangeAvailable: ( deviceType: string ) => boolean; // obsosete
131
+
132
+  isMultipleAudioInputSupported: () => boolean;
133
+
134
+  isCollectingLocalStats: () => boolean;
135
+
136
+  enumerateDevices: ( callback: ( availableDevices: MediaDeviceInfo[] ) => void ) => void;
137
+
138
+  getGlobalOnErrorHandler: ( message: string, source: string, lineno?: number, colno?: number, error?: Error ) => void;
139
+
140
+  setNetworkInfo: ( { isOnline: boolean } ) => void;
141
+
142
+  setVideoTrackContentHints: ( track: MediaStreamTrack, hint: string ) => void;
143
+
144
+  precallTest: PrecallTest;
145
+
146
+  util: {
147
+    AuthUtil: { getTokenAuthUrl: typeof AuthUtil.getTokenAuthUrl },
148
+    ScriptUtil: { loadScript: typeof ScriptUtil.loadScript },
149
+    browser: BrowserCapabilities
150
+  }
151
+}
152
+
153
+declare var _default: JitsiMeetJSType;
154
+export default _default;

+ 35
- 0
types/hand-crafted/JitsiParticipant.d.ts View File

@@ -0,0 +1,35 @@
1
+import JitsiConference from './JitsiConference';
2
+import JitsiTrack from './modules/RTC/JitsiTrack';
3
+import { MediaType } from './service/RTC/MediaType';
4
+
5
+export default class JitsiParticipant {
6
+  constructor( jid: unknown, conference: unknown, displayName: unknown, hidden: boolean, statsID: string, status: string, identity: unknown, isReplacing?: boolean, isReplaced?: boolean ); // TODO:
7
+  getConference: () => JitsiConference;
8
+  getProperty: ( name: string ) => string;
9
+  hasAnyVideoTrackWebRTCMuted: () => boolean;
10
+  getConnectionStatus: () => string;
11
+  setProperty: ( name: string, value: string ) => void;
12
+  getTracks: () => JitsiTrack[];
13
+  getTracksByMediaType: ( mediaType: MediaType ) => JitsiTrack[];
14
+  getId: () => string;
15
+  getJid: () => string;
16
+  getDisplayName: () => string;
17
+  getStatsID: () => string;
18
+  getStatus: () => string;
19
+  isModerator: () => boolean;
20
+  isHidden: () => boolean;
21
+  isReplacing: () => boolean;
22
+  isReplaced: () => boolean;
23
+  isAudioMuted: () => boolean;
24
+  isVideoMuted: () => boolean;
25
+  getRole: () => string;
26
+  setRole: ( role: string ) => void;
27
+  setIsReplacing: (newIsReplacing: string) => void;
28
+  setIsReplaced: (newIsReplaced: boolean) => void;
29
+  supportsDTMF: () => boolean;
30
+  hasFeature: ( feature: string ) => boolean;
31
+  getFeatures: () => Promise<Set<string> | Error>;
32
+  setFeatures: ( newFeatures: Set<string> | undefined ) => void;
33
+  getBotType: () => string | undefined;
34
+  setBotType: ( newBotType: string ) => void;
35
+}

+ 9
- 0
types/hand-crafted/JitsiTrackError.d.ts View File

@@ -0,0 +1,9 @@
1
+export default function JitsiTrackError( error: unknown | string, options: unknown | string, devices: ( 'audio' | 'video' | 'desktop' | 'screen' | 'audiooutput' )[] ): void; // TODO:
2
+
3
+export default class JitsiTrackError {
4
+  constructor( error: unknown | string, options: unknown | string, devices: ( 'audio' | 'video' | 'desktop' | 'screen' | 'audiooutput' )[] ); // TODO:
5
+  gum?: { error: Error, constraints: unknown, devices: ( 'audio' | 'video' | 'desktop' | 'screen' | 'audiooutput' )[] }; // TODO:
6
+  name?: string;
7
+  message?: string;
8
+  stack: unknown[]; // TODO:
9
+}

+ 14
- 0
types/hand-crafted/JitsiTrackErrors.d.ts View File

@@ -0,0 +1,14 @@
1
+export enum JitsiTrackErrors {
2
+  CONSTRAINT_FAILED = 'gum.constraint_failed',
3
+  ELECTRON_DESKTOP_PICKER_ERROR = 'gum.electron_desktop_picker_error',
4
+  ELECTRON_DESKTOP_PICKER_NOT_FOUND = 'gum.electron_desktop_picker_not_found',
5
+  GENERAL = 'gum.general',
6
+  NOT_FOUND = 'gum.not_found',
7
+  PERMISSION_DENIED = 'gum.permission_denied',
8
+  SCREENSHARING_GENERIC_ERROR = 'gum.screensharing_generic_error',
9
+  SCREENSHARING_USER_CANCELED = 'gum.screensharing_user_canceled',
10
+  TIMEOUT = 'gum.timeout',
11
+  TRACK_IS_DISPOSED = 'trac =track_is_disposed',
12
+  TRACK_NO_STREAM_FOUND = 'track.no_stream_found',
13
+  UNSUPPORTED_RESOLUTION = 'gum.unsupported_resolution'
14
+}

+ 9
- 0
types/hand-crafted/JitsiTrackEvents.d.ts View File

@@ -0,0 +1,9 @@
1
+export enum JitsiTrackEvents {
2
+  LOCAL_TRACK_STOPPED = 'track.stopped',
3
+  TRACK_AUDIO_LEVEL_CHANGED = 'track.audioLevelsChanged',
4
+  TRACK_AUDIO_OUTPUT_CHANGED = 'track.audioOutputChanged',
5
+  TRACK_MUTE_CHANGED = 'track.trackMuteChanged',
6
+  TRACK_VIDEOTYPE_CHANGED = 'track.videoTypeChanged',
7
+  NO_DATA_FROM_SOURCE = 'track.no_data_from_source',
8
+  NO_AUDIO_INPUT = 'track.no_audio_input'
9
+}

+ 4
- 0
types/hand-crafted/JitsiTranscriptionStatus.d.ts View File

@@ -0,0 +1,4 @@
1
+export enum JitsiTranscriptionStatus {
2
+  ON = 'on',
3
+  OFF = 'off'
4
+}

+ 13
- 0
types/hand-crafted/authenticateAndUpgradeRole.d.ts View File

@@ -0,0 +1,13 @@
1
+import JitsiConnectionErrors from '../../JitsiConnectionErrors';
2
+
3
+export default function authenticateAndUpgradeRole( options: { id: string, password: string, roomPassword?: string, onLoginSuccessful?: ( params: unknown ) => unknown } ): unknown;
4
+
5
+export type UpgradeRoleError = {
6
+  connectionError?: JitsiConnectionErrors,
7
+  authenticationError?: string;
8
+  message?: string;
9
+  credentials?: {
10
+    jid: string,
11
+    password: string
12
+  }
13
+}

+ 13
- 0
types/hand-crafted/modules/RTC/BridgeChannel.d.ts View File

@@ -0,0 +1,13 @@
1
+export default class BridgeChannel {
2
+  constructor( peerconnection: unknown, wsUrl: unknown, emitter: unknown ); // TODO:
3
+  mode: () => null | "datachannel" | "websocket";
4
+  close: () => void;
5
+  isOpen: () => boolean;
6
+  sendMessage: ( to: string, payload: unknown ) => void; // TODO:
7
+  sendSetLastNMessage: ( value: number ) => void;
8
+  sendSelectedEndpointsMessage: ( endpointIds: string[] ) => void;
9
+  sendReceiverVideoConstraintMessage: ( maxFrameHeightPixels: number ) => void;
10
+  sendEndpointStatsMessage: ( payload: unknown ) => void; // TODO:
11
+  sendNewReceiverVideoConstraintsMessage: ( constraints: ReceiverVideoConstraints ) => void; // TODO:
12
+  sendVideoTypeMessage: ( videoType: string ) => void;
13
+}

+ 7
- 0
types/hand-crafted/modules/RTC/CodecSelection.d.ts View File

@@ -0,0 +1,7 @@
1
+import JitsiConference from '../../JitsiConference';
2
+import { CodecMimeType } from '../../service/RTC/CodecMimeType';
3
+
4
+export class CodecSelection {
5
+  constructor( conference: JitsiConference, options: { disabledCodec: string, enforcePreferredCodec: boolean, jvbCodec: string, p2pCodec: string } );  // TODO:
6
+  getPreferredCodec: () => CodecMimeType;
7
+}

+ 19
- 0
types/hand-crafted/modules/RTC/JitsiLocalTrack.d.ts View File

@@ -0,0 +1,19 @@
1
+import JitsiTrack from './JitsiTrack';
2
+import { CameraFacingMode } from '../../service/RTC/CameraFacingMode';
3
+
4
+export default class JitsiLocalTrack extends JitsiTrack {
5
+  constructor( trackInfo: { rtcId: number, stream: unknown, track: unknown, mediaType: unknown, videoType: unknown, effects: unknown, resolution: unknown, deviceId: string, facingMode: CameraFacingMode, sourceId: unknown } ) // TODO:
6
+  isEnded: () => boolean;
7
+  setEffect: ( effect: unknown ) => Promise<unknown>; // TODO:
8
+  mute: () => Promise<void>;
9
+  unmute: () => Promise<void>;
10
+  dispose: () => Promise<void>;
11
+  isMuted: () => boolean;
12
+  isLocal: () => true;
13
+  getDeviceId: () => string;
14
+  getParticipantId: () => string;
15
+  getCameraFacingMode: () => CameraFacingMode | undefined;
16
+  stopStream: () => void;
17
+  isReceivingData: () => boolean;
18
+  toString: () => string;
19
+}

+ 17
- 0
types/hand-crafted/modules/RTC/JitsiRemoteTrack.d.ts View File

@@ -0,0 +1,17 @@
1
+import JitsiTrack from './JitsiTrack';
2
+import RTC from './RTC';
3
+import JitsiConference from '../../JitsiConference';
4
+
5
+export default class JitsiRemoteTrack extends JitsiTrack {
6
+  constructor(rtc: RTC, conference: JitsiConference, ownerEndpointId: string, stream: MediaStream, track: MediaStreamTrack, mediaType: any, videoType: any, ssrc: number, muted: boolean, isP2P: boolean);
7
+  setMute: ( value: boolean ) => void;
8
+  isMuted: () => boolean;
9
+  getParticipantId: () => string;
10
+  isLocal: () => false;
11
+  getSSRC: () => number;
12
+  toString: () => string;
13
+
14
+  containerEvents: [ 'abort', 'canplay', 'canplaythrough', 'emptied', 'ended', 'error', 'loadeddata',
15
+    'loadedmetadata', 'loadstart', 'pause', 'play', 'playing', 'ratechange', 'stalled', 'suspend',
16
+    'waiting' ]; // TODO: this might be private
17
+}

+ 32
- 0
types/hand-crafted/modules/RTC/JitsiTrack.d.ts View File

@@ -0,0 +1,32 @@
1
+import JitsiConference from '../../JitsiConference';
2
+import { MediaType } from '../../service/RTC/MediaType';
3
+import { VideoType } from '../../service/RTC/VideoType';
4
+import TraceablePeerConnection from './TraceablePeerConnection';
5
+
6
+export default class JitsiTrack {
7
+  constructor( conference: JitsiConference, stream: unknown, track: unknown, streamInactiveHandler: unknown, trackMediaType: unknown, videoType: unknown ); // TODO:
8
+  disposed: boolean;
9
+  getVideoType: () => VideoType;
10
+  getType: () => MediaType;
11
+  isAudioTrack: () => boolean;
12
+  isWebRTCTrackMuted: () => boolean;
13
+  isVideoTrack: () => boolean;
14
+  isLocal: () => boolean;
15
+  isLocalAudioTrack: () => boolean;
16
+  getOriginalStream: () => MediaStream;
17
+  getStreamId: () => string | null;
18
+  getTrack: () => MediaStreamTrack;
19
+  getTrackLabel: () => string;
20
+  getTrackId: () => string | null;
21
+  getUsageLabel: () => string;
22
+  attach: ( container: HTMLElement ) => void;
23
+  detach: ( container: HTMLElement ) => void;
24
+  dispose: () => void;
25
+  isScreenSharing: () => boolean;
26
+  getId: () => string | null;
27
+  isActive: () => boolean;
28
+  setAudioLevel: ( audioLevel: number, tpc: TraceablePeerConnection ) => void;
29
+  getMSID: () => string | null;
30
+  setAudioOutput: ( audioOutputDeviceId: '' | string ) => Promise<unknown>; // TODO: what will this promise contain?
31
+  addEventListener: (type: string, listener: (event: any) => void) => void;
32
+}

+ 54
- 0
types/hand-crafted/modules/RTC/RTC.d.ts View File

@@ -0,0 +1,54 @@
1
+import Listenable from '../util/Listenable';
2
+import JitsiLocalTrack from './JitsiLocalTrack';
3
+import JitsiRemoteTrack from './JitsiRemoteTrack';
4
+import TraceablePeerConnection from './TraceablePeerConnection';
5
+import { MediaType } from '../../service/RTC/MediaType';
6
+import SignalingLayer from '../../service/RTC/SignalingLayer';
7
+
8
+export default class RTC extends Listenable {
9
+  destroy: () => void;
10
+  static createLocalTracks: ( tracksInfo: unknown[] ) => JitsiLocalTrack[]; // TODO:
11
+  static obtainAudioAndVideoPermissions: ( options: { devices: unknown[], resolution: string, cameraDeviceId: string, micDeviceId: string } ) => Promise<unknown>; // TODO:
12
+  initializeBridgeChannel: ( perrconnection: RTCPeerConnection, wsUrl: string ) => void;
13
+  onCallEnded: () => void;
14
+  setDesktopSharingFrameRate: (maxFps: number) => void;
15
+  setReceiverVideoConstraint: ( maxFrameHeight: number ) => void;
16
+  selectEndpoints: ( ids: string[] ) => void;
17
+  static addListener: ( eventType: string, listener: unknown ) => void; // TODO: this should be typed to an enum of eventTypes with appropriate definition for the listeners
18
+  static removeListener: ( eventType: string, listener: unknown ) => void; // TODO: this should be typed to an enum of eventTypes with appropriate definition for the listeners
19
+  static init: ( options: unknown ) => unknown; // TODO:
20
+  createPeerConnection: ( signalling: SignalingLayer, iceConfig: unknown, isP2P: boolean, options: { enableInsertableStreams: boolean, disableSimulcast: boolean, disableRtx: boolean, startSilent: boolean } ) => TraceablePeerConnection; // TODO:
21
+  addLocalTrack: ( track: unknown ) => void; // TODO:
22
+  getLocalVideoTrack: () => JitsiLocalTrack | undefined;
23
+  getLocalAudioTrack: () => JitsiLocalTrack | undefined;
24
+  getLocalEndpointId: () => string;
25
+  getLocalTracks: ( mediaType: MediaType ) => JitsiLocalTrack[];
26
+  getRemoteTracks: ( mediaType: MediaType ) => JitsiRemoteTrack[];
27
+  setAudioMute: ( value: unknown ) => Promise<unknown>; // TODO:
28
+  removeLocalTrack: ( track: unknown ) => void; // TODO:
29
+  static attachMediaStream: ( elSelector: unknown, stream: unknown ) => unknown; // TODO:
30
+  static getStreamID: ( stream: MediaStream ) => unknown; // TODO:
31
+  static getTrackID: ( track: MediaStreamTrack ) => unknown; // TODO:
32
+  static isDeviceListAvailable: () => unknown; // TODO:
33
+  static isDeviceChangeAvailable: ( deviceType: string ) => boolean; // TODO: check if deviceType should be an enum
34
+  static isWebRtcSupported: () => boolean;
35
+  static getAudioOutputDevice: () => string;
36
+  static getCurrentlyAvailableMediaDevices: () => unknown[]; // TODO:
37
+  static getEventDataForActiveDevice: () => MediaDeviceInfo;
38
+  static setAudioOutputDevice: ( deviceId: string ) => Promise<unknown>; // TODO:
39
+  static isUserStream: ( stream: MediaStream ) => boolean;
40
+  static isUserStreamById: ( streamId: string ) => boolean;
41
+  static enumerateDevices: ( callback: () => unknown ) => void; // TODO:
42
+  static stopMediaStream: ( mediaStream: MediaStream ) => void;
43
+  static isDesktopSharingEnabled: () => boolean;
44
+  closeBridgeChannel: () => void;
45
+  setAudioLevel: ( tpc: TraceablePeerConnection, ssrc: number, audioLevel: number, isLocal: boolean ) => void;
46
+  sendChannelMessage: ( to: string, payload: unknown ) => void; // TODO:
47
+  setLastN: ( value: number ) => void;
48
+  isInLastN: ( id: string ) => boolean;
49
+  setNewReceiverVideoConstraints: ( constraints: unknown ) => void; // TODO:
50
+  setVideoType: ( videoType: string ) => void;
51
+  setVideoMute: ( value: unknown ) => Promise<unknown>; // TODO:
52
+  arePermissionsGrantedForAvailableDevices: () => boolean;
53
+  sendEndpointStatsMessage: ( payload: unknown ) => void; // TODO:
54
+}

+ 22
- 0
types/hand-crafted/modules/RTC/RTCUtils.d.ts View File

@@ -0,0 +1,22 @@
1
+import Listenable from '../util/Listenable';
2
+import { MediaType } from '../../service/RTC/MediaType';
3
+
4
+declare class RTCUtils extends Listenable {
5
+  init: ( options: unknown ) => void; // TODO:
6
+  getUserMediaWithConstraints: ( um: MediaType[], options: { resolution: string, bandwidth: number, fps: number, desktopStream: string, cameraDeviceId: string, micDeviceId: string, frameRate: { min: unknown, max: unknown }, screenShareAudio: boolean, timeout: number } ) => Promise<unknown>; // TODO:
7
+  obtainAudioAndVideoPermissions: ( options: { devices: unknown[], resolution: string, cameraDeviceId: string, micDeviceId: string, desktopSharingFrameRate: { min: unknown, max: unknown } } ) => Promise<unknown>; // TODO:
8
+  isDeviceListAvailable: () => boolean;
9
+  isDeviceChangeAvailable: ( deviceType: string ) => boolean;
10
+  stopMediaStream: ( mediaStream: MediaStream ) => void;
11
+  isDesktopSharingEnabled: () => boolean;
12
+  setAudioOutputDevice: ( deviceId: string ) => Promise<unknown>; // TODO:
13
+  setDesktopSharingFrameRate: (maxFps: number) => void;
14
+  getAudioOutputDevice: () => string;
15
+  getCurrentlyAvailableMediaDevices: () => unknown[]; // TODO:
16
+  getEventDataForActiveDevice: ( device: MediaDeviceInfo ) => unknown; // TODO:
17
+  setSuspendVideo: ( constraints: unknown, enable: boolean ) => void; // TODO:
18
+  arePermissionsGrantedForAvailableDevices: () => boolean;
19
+}
20
+
21
+declare const rtcUtils: RTCUtils;
22
+export default rtcUtils;

+ 13
- 0
types/hand-crafted/modules/RTC/ScreenObtainer.d.ts View File

@@ -0,0 +1,13 @@
1
+import JitsiTrackError from '../../JitsiTrackError';
2
+
3
+declare namespace ScreenObtainer {
4
+  const obtainStream: unknown, // TODO:
5
+  init: ( options: unknown ) => void, // TODO:
6
+  isSupported: () => boolean,
7
+  obtainScreenOnElectron: ( onSuccess: () => unknown, onFailure: ( err: JitsiTrackError ) => unknown ) => void, // TODO:
8
+  obtainScreenFromGetDisplayMedia: ( callback: () => unknown, errorCallback: () => unknown ) => void, // TODO:
9
+  obtainScreenFromGetDisplayMediaRN: ( callback: () => unknown, errorCallback: ( err: JitsiTrackError ) => unknown ) => void, // TODO:
10
+  setDesktopSharingFrameRate: (maxFps: number) => void
11
+}
12
+
13
+export default ScreenObtainer;

+ 20
- 0
types/hand-crafted/modules/RTC/TPCUtils.d.ts View File

@@ -0,0 +1,20 @@
1
+import JitsiLocalTrack from './JitsiLocalTrack';
2
+import { MediaType } from '../../service/RTC/MediaType';
3
+
4
+export const SIM_LAYER_RIDS: string[];
5
+
6
+export default class TPCUtils {
7
+  constructor(peerconnection: unknown, videoBitrates: unknown); // TODO:
8
+  ensureCorrectOrderOfSsrcs: ( description: unknown ) => RTCSessionDescription; // TODO:
9
+  insertUnifiedPlanSimulcastReceive: ( desc: { type: string, sdp: string } ) => RTCSessionDescription;
10
+  addTrack: ( localTrack: JitsiLocalTrack, isInitiator: boolean ) => void;
11
+  addTrackUnmute: ( localTrack: JitsiLocalTrack ) => Promise<void>;
12
+  getLocalStreamHeightConstraints: ( localTrack: JitsiLocalTrack ) => number[];
13
+  removeTrackMute: ( localTrack: JitsiLocalTrack ) => Promise<void>;
14
+  replaceTrack: ( oldTrack: JitsiLocalTrack, newTrack: JitsiLocalTrack ) => Promise<void>;
15
+  setAudioTransferActive: ( active: boolean ) => void;
16
+  setEncodings: ( track: JitsiLocalTrack ) => Promise<void>;
17
+  setMediaTransferActive: ( mediaType: MediaType, active: boolean ) => void;
18
+  setVideoTransferActive: ( active: boolean ) => void;
19
+  updateEncodingsResolution: ( parameters: RTCRtpEncodingParameters ) => void;
20
+}

+ 124
- 0
types/hand-crafted/modules/RTC/TraceablePeerConnection.d.ts View File

@@ -0,0 +1,124 @@
1
+import RTC from './RTC';
2
+import JitsiTrack from './JitsiTrack';
3
+import JitsiRemoteTrack from './JitsiRemoteTrack';
4
+import JitsiLocalTrack from './JitsiLocalTrack';
5
+import LocalSdpMunger from '../sdp/LocalSdpMunger';
6
+import SdpConsistency from '../sdp/SdpConsistency';
7
+import RtxModifier from '../sdp/RtxModifier';
8
+import SignalingLayer from '../../service/RTC/SignalingLayer';
9
+import { MediaType } from '../../service/RTC/MediaType';
10
+import { CodecMimeType } from '../../service/RTC/CodecMimeType';
11
+import TPCUtils from './TPCUtils';
12
+
13
+export default function TraceablePeerConnection( rtc: RTC, id: number, signalingLayer: unknown, iceConfig: unknown, constraints: unknown, isP2P: boolean, options: {
14
+  disableSimulcast: boolean;
15
+  disableRtx: boolean;
16
+  disabledCodec: string;
17
+  preferredCodec: string;
18
+  startSilent: boolean;
19
+  usesUnifiedPlan: boolean;
20
+} ): void; // TODO:
21
+
22
+export default class TraceablePeerConnection {
23
+  audioTransferActive: boolean;
24
+  videoTransferActive: boolean;
25
+  id: number;
26
+  isP2P: boolean;
27
+  remoteTracks: Map<number, Map<MediaType, JitsiRemoteTrack>>; // TODO:
28
+  localTracks: Map<number, JitsiLocalTrack>; // TODO:
29
+  localSSRCs: Map<number, {
30
+    /**
31
+     * an array which holds all track's SSRCs
32
+     */
33
+    ssrcs: Array<number>;
34
+    /**
35
+     * an array stores all track's SSRC
36
+     * groups
37
+     */
38
+    groups: {
39
+      /**
40
+       * the SSRC groups semantics
41
+       */
42
+      semantics: string;
43
+      /**
44
+       * group's SSRCs in order where the first
45
+       * one is group's primary SSRC, the second one is secondary (RTX) and so
46
+       * on...
47
+       */
48
+      ssrcs: Array<number>;
49
+    }[];
50
+  }>;
51
+  localUfrag: unknown; // TODO:
52
+  signalingLayer: SignalingLayer; // TODO:
53
+  options: unknown; // TODO:
54
+  peerconnection: RTCPeerConnection; // TODO: JSDocs refers to RTCPeerConnectionType = RTCPeerConnection
55
+  videoBitrates: unknown; // TODO:
56
+  tpcUtils: TPCUtils;
57
+  updateLog: Array<unknown>; // TODO:
58
+  stats: unknown; // TODO:
59
+  statsinterval: number;
60
+  maxstats: unknown; // TODO:
61
+  interop: unknown; // TODO: unknown = Interop refers to @jitsi/sdp-interop
62
+  simulcast: unknown; // TODO: unknown = Simulcast refers to @jitsi/sdp-simulcast
63
+  sdpConsistency: SdpConsistency; // TODO:
64
+  localSdpMunger: LocalSdpMunger; // TODO:
65
+  eventEmitter: unknown; // TODO:
66
+  rtxModifier: RtxModifier; // TODO:
67
+  senderVideoMaxHeight: unknown;
68
+  trace: ( what: unknown, info: unknown ) => void; // TODO:
69
+  onicecandidate: unknown; // TODO:
70
+  onsignalingstatechange: unknown; // TODO:
71
+  oniceconnectionstatechange: unknown; // TODO:
72
+  onnegotiationneeded: unknown; // TODO:
73
+  ondatachannel: unknown; // TODO:
74
+  getConnectionState: () => string;
75
+  isSimulcastOn: () => boolean;
76
+  getAudioLevels: ( speakerList?: Array<unknown> ) => Map<string, number>; // TODO:
77
+  getLocalTracks: ( mediaType: MediaType ) => JitsiLocalTrack[];
78
+  getLocalVideoTrack: () => JitsiLocalTrack | undefined;
79
+  hasAnyTracksOfType: ( mediaType: MediaType ) => boolean;
80
+  getRemoteTracks: ( endpointId: string, mediaType: MediaType ) => JitsiRemoteTrack[];
81
+  getRemoteSourceInfoByParticipant: ( id: string ) => string[]; // TODO:
82
+  getTargetVideoBitrates: () => unknown; // TODO:
83
+  getTrackBySSRC: ( ssrc: number ) => JitsiTrack | null;
84
+  getSsrcByTrackId: ( id: string ) => number | null;
85
+  removeRemoteTracks: ( owner: string ) => JitsiRemoteTrack[];
86
+  getLocalSSRC: ( localTrack: JitsiLocalTrack ) => string;
87
+  signalingState: unknown; // TODO:
88
+  iceConnectionState: unknown; // TODO:
89
+  localDescription: unknown; // TODO:
90
+  remoteDescription: unknown; // TODO:
91
+  containsTrack: ( track: JitsiLocalTrack | JitsiRemoteTrack ) => boolean;
92
+  addTrack: ( track: JitsiLocalTrack, isInitiator?: boolean ) => Promise<void>;
93
+  addTrackUnmute: ( track: JitsiLocalTrack ) => Promise<boolean>;
94
+  getConfiguredVideoCodec: () => CodecMimeType;
95
+  setDesktopSharingFrameRate: (maxFps: number) => void;
96
+  setVideoCodecs: ( preferredCodec?: CodecMimeType, disabledCodec?: CodecMimeType ) => void;
97
+  isMediaStreamInPc: ( mediaStream: MediaStream ) => boolean;
98
+  removeTrack: ( localTrack: JitsiLocalTrack ) => void;
99
+  findSenderByKind: ( mediaType: MediaType ) => RTCRtpSender | undefined; // TODO: possible bug in the JSDocs
100
+  findReceiverForTrack: ( track: MediaStreamTrack ) => RTCRtpReceiver | undefined;
101
+  findSenderForTrack: ( track: MediaStreamTrack ) => RTCRtpSender | undefined;
102
+  replaceTrack: ( oldTrack: JitsiLocalTrack | null, newTrack: JitsiLocalTrack | null ) => Promise<boolean>;
103
+  removeTrackMute: ( localTrack: JitsiLocalTrack ) => Promise<boolean>;
104
+  createDataChannel: ( label: unknown, opts: unknown ) => unknown; // TODO:
105
+  setLocalDescription: ( description: unknown ) => Promise<unknown>;
106
+  setAudioTransferActive: ( active: boolean ) => boolean;
107
+  setSenderVideoDegradationPreference: () => Promise<void>;
108
+  setMaxBitRate: () => Promise<void>; // TODO: definite bug in the JSDocs
109
+  setRemoteDescription: ( description: unknown ) => unknown; // TODO:
110
+  setSenderVideoConstraint: ( frameHeight: number ) => Promise<void>;
111
+  setVideoTransferActive: ( active: boolean ) => boolean;
112
+  sendTones: ( tones: string, duration: number, interToneGap: number ) => void;
113
+  generateRecvonlySsrc: () => void;
114
+  clearRecvonlySsrc: () => void;
115
+  close: () => void;
116
+  createAnswer: ( constraints: unknown ) => unknown; // TODO:
117
+  createOffer: ( constraints: unknown ) => unknown; // TODO:
118
+  addIceCandidate: ( candidate: unknown ) => unknown; // TODO:
119
+  generateNewStreamSSRCInfo: (track: JitsiLocalTrack) => TraceablePeerConnection['localSSRCs'];
120
+  usesUnifiedPlan: () => boolean;
121
+  getActiveSimulcastStreams: () => number;
122
+  getStats: () => unknown; // TODO:
123
+  toString: () => string;
124
+}

+ 24
- 0
types/hand-crafted/modules/browser/BrowserCapabilities.d.ts View File

@@ -0,0 +1,24 @@
1
+export default class BrowserCapabilities {
2
+  doesVideoMuteByStreamRemove: () => boolean;
3
+  isWebKitBased: () => boolean;
4
+  isChromiumBased: () => boolean;
5
+  isTwa: () => boolean;
6
+  isSupported: () => boolean;
7
+  isUserInteractionRequiredForUnmute: () => boolean;
8
+  supportsVideoMuteOnConnInterrupted: () => boolean;
9
+  supportsBandwidthStatistics: () => boolean;
10
+  supportsCodecPreferences: () => boolean;
11
+  supportsDeviceChangeEvent: () => boolean;
12
+  supportsLocalCandidateRttStatistics: () => boolean;
13
+  supportsPerformanceObserver: () => boolean;
14
+  supportsReceiverStats: () => boolean;
15
+  supportsRTTStatistics: () => boolean;
16
+  usesSdpMungingForSimulcast: () => boolean;
17
+  usesAdapter: () => boolean;
18
+  usesRidsForSimulcast: () => boolean;
19
+  supportsGetDisplayMedia: () => boolean;
20
+  supportsInsertableStreams: () => boolean;
21
+  supportsAudioRed: () => boolean;
22
+  supportsUnifiedPlan: () => boolean;
23
+  supportsVADDetection: () => boolean;
24
+}

+ 9
- 0
types/hand-crafted/modules/connectivity/ConnectionQuality.d.ts View File

@@ -0,0 +1,9 @@
1
+import JitsiConference from '../../JitsiConference';
2
+import EventEmitter from '../../EventEmitter';
3
+import { ConnectionQualityEvents } from '../../service/connectivity/ConnectionQualityEvents';
4
+
5
+export default class ConnectionQuality {
6
+  constructor( conference: JitsiConference, eventEmitter: EventEmitter<ConnectionQualityEvents>, options: { config: { startBitrate: number; } } );
7
+  getTarget: ( simulcast: boolean, resolution: Resolution, millisSinceStart: number, videoQualitySettings: unknown ) => number; // TODO:
8
+  getStats: () => unknown; // TODO:
9
+}

+ 7
- 0
types/hand-crafted/modules/connectivity/IceFailedHandling.d.ts View File

@@ -0,0 +1,7 @@
1
+import JitsiConference from "../../JitsiConference";
2
+
3
+export default class IceFailedHandling {
4
+  constructor( conference: JitsiConference );
5
+  start: () => void;
6
+  cancel: () => void;
7
+}

+ 11
- 0
types/hand-crafted/modules/connectivity/NetworkInfo.d.ts View File

@@ -0,0 +1,11 @@
1
+import Listenable from '../util/Listenable';
2
+
3
+export const NETWORK_INFO_EVENT: "NETWORK_INFO_CHANGED";
4
+
5
+export class NetworkInfo extends Listenable {
6
+  updateNetworkInfo: ( { isOnline: boolean } ) => void;
7
+  isOnline: () => boolean;
8
+}
9
+
10
+declare const networkInfo: NetworkInfo;
11
+export default networkInfo;

+ 32
- 0
types/hand-crafted/modules/connectivity/ParticipantConnectionStatus.d.ts View File

@@ -0,0 +1,32 @@
1
+import JitsiConference from '../../JitsiConference';
2
+import RTC from '../RTC/RTC';
3
+import JitsiRemoteTrack from '../RTC/JitsiRemoteTrack';
4
+import JitsiParticipant from '../../JitsiParticipant';
5
+import { VideoType } from '../../service/RTC/VideoType';
6
+
7
+export enum ParticipantConnectionStatus {
8
+  ACTIVE = 'active',
9
+  INACTIVE = 'inactive',
10
+  INTERRUPTED = 'interrupted',
11
+  RESTORING = 'restoring'
12
+}
13
+
14
+export default class ParticipantConnectionStatusHandler {
15
+  constructor( rtc: RTC, conference: JitsiConference, options: { rtcMuteTimeout: number, outOfLastNTimeout: number } );
16
+  init: () => void;
17
+  dispose: () => void;
18
+  onEndpointConnStatusChanged: ( endpointId: string, isActive: boolean ) => void;
19
+  clearTimeout: ( participantId: string ) => void;
20
+  clearRtcMutedTimestamp: ( participantId: string ) => void;
21
+  onRemoteTrackAdded: ( remoteTrack: JitsiRemoteTrack ) => void;
22
+  onRemoteTrackRemoved: ( remoteTrack: JitsiRemoteTrack ) => void;
23
+  isVideoTrackFrozen: ( participant: JitsiParticipant ) => boolean;
24
+  refreshConnectionStatusForAll: () => void;
25
+  figureOutConnectionStatus: ( id: string ) => void;
26
+  maybeSendParticipantConnectionStatusEvent: ( id: string, nowMs: number ) => void;
27
+  onUserLeft: ( id: string ) => void;
28
+  onTrackRtcMuted: ( track: JitsiRemoteTrack ) => void;
29
+  onTrackRtcUnmuted: ( track: JitsiRemoteTrack ) => void;
30
+  onSignallingMuteChanged: ( track: JitsiRemoteTrack ) => void;
31
+  onTrackVideoTypeChanged: ( track: JitsiRemoteTrack, type: VideoType ) => void;
32
+}

+ 1
- 0
types/hand-crafted/modules/detection/ActiveDeviceDetector.d.ts View File

@@ -0,0 +1 @@
1
+export default function getActiveAudioDevice(): Promise<unknown>;  // TODO

+ 9
- 0
types/hand-crafted/modules/detection/DetectionEvents.d.ts View File

@@ -0,0 +1,9 @@
1
+export enum DetectionEvents {
2
+  DETECTOR_STATE_CHANGE = 'detector_state_change',
3
+  AUDIO_INPUT_STATE_CHANGE = 'audio_input_state_changed',
4
+  NO_AUDIO_INPUT = 'no_audio_input_detected',
5
+  VAD_NOISY_DEVICE = 'detection.vad_noise_device',
6
+  VAD_REPORT_PUBLISHED = 'vad-report-published',
7
+  VAD_SCORE_PUBLISHED = 'detection.vad_score_published',
8
+  VAD_TALK_WHILE_MUTED = 'detection.vad_talk_while_muted'
9
+}

+ 6
- 0
types/hand-crafted/modules/detection/NoAudioSignalDetection.d.ts View File

@@ -0,0 +1,6 @@
1
+import JitsiConference from '../../JitsiConference';
2
+import EventEmitter from '../../EventEmitter';
3
+
4
+export default class NoAudioSignalDetection extends EventEmitter<unknown> { // TODO:
5
+  constructor( conference: JitsiConference ); // TODO
6
+}

+ 5
- 0
types/hand-crafted/modules/detection/P2PDominantSpeakerDetection.d.ts View File

@@ -0,0 +1,5 @@
1
+import JitsiConference from '../../JitsiConference';
2
+
3
+export default class P2PDominantSpeakerDetection {
4
+  constructor( conference: JitsiConference );
5
+}

+ 18
- 0
types/hand-crafted/modules/detection/TrackVADEmitter.d.ts View File

@@ -0,0 +1,18 @@
1
+import EventEmitter from '../../EventEmitter';
2
+import JitsiLocalTrack from '../RTC/JitsiLocalTrack';
3
+
4
+export type VADProcessor = {
5
+  getRequiredPCMFrequency: () => number;
6
+  getSampleLength: () => number;
7
+  calculateAudioFrameVAD: ( samples: Array<unknown> ) => number; // TODO: work out what this is an array of
8
+}
9
+
10
+export default class TrackVADEmitter extends EventEmitter<unknown> {
11
+  constructor( procNodeSampleRate: number, vadProcessor: VADProcessor, jitsiLocalTrack: JitsiLocalTrack );
12
+  static create: ( micDeviceId: string, procNodeSampleRate: number, vadProcessor: VADProcessor ) => Promise<TrackVADEmitter>;
13
+  getDeviceId: () => string;
14
+  getTrackLabel: () => string;
15
+  start: () => void;
16
+  stop: () => void;
17
+  destroy: () => void;
18
+}

+ 8
- 0
types/hand-crafted/modules/detection/VADAudioAnalyser.d.ts View File

@@ -0,0 +1,8 @@
1
+import { VADProcessor } from "./TrackVADEmitter";
2
+import JitsiConference from '../../JitsiConference';
3
+import EventEmitter from '../../EventEmitter';
4
+
5
+export default class VADAudioAnalyser extends EventEmitter<unknown> { // TODO:
6
+  constructor( conference: JitsiConference, createVADProcessor: () => VADProcessor );
7
+  addVADDetectionService: ( vadService: unknown ) => void;
8
+}

+ 16
- 0
types/hand-crafted/modules/detection/VADNoiseDetection.d.ts View File

@@ -0,0 +1,16 @@
1
+import EventEmitter from '../../EventEmitter';
2
+
3
+export type VADScore = {
4
+  timestamp: Date;
5
+  score: number;
6
+  pcmData: number[];
7
+  deviceId: string;
8
+}
9
+
10
+declare class VADNoiseDetection extends EventEmitter<unknown> { // TODO:
11
+  constructor();
12
+  changeMuteState: ( isMuted: boolean ) => void;
13
+  isActive: () => boolean;
14
+  reset: () => void;
15
+  processVADScore: ( vadScore: VADScore ) => void;
16
+}

+ 8
- 0
types/hand-crafted/modules/detection/VADReportingService.d.ts View File

@@ -0,0 +1,8 @@
1
+import { VADProcessor } from "./TrackVADEmitter";
2
+import EventEmitter from '../../EventEmitter';
3
+
4
+export default class VADReportingService extends EventEmitter<unknown> { // TODO:
5
+  constructor( intervalDelay: number );
6
+  static create: ( micDeviceList: MediaDeviceInfo[], intervalDelay: number, createVADProcessor: () => VADProcessor ) => Promise<VADReportingService>;
7
+  destroy: () => void;
8
+}

+ 10
- 0
types/hand-crafted/modules/detection/VADTalkMutedDetection.d.ts View File

@@ -0,0 +1,10 @@
1
+import { VADScore } from "./VADNoiseDetection";
2
+import EventEmitter from '../../EventEmitter';
3
+
4
+export default class VADTalkMutedDetection extends EventEmitter<unknown> { // TODO:
5
+  constructor();
6
+  changeMuteState: ( isMuted: boolean ) => void;
7
+  isActive: () => boolean;
8
+  processVADScore: ( vadScore: VADScore ) => void;
9
+  reset: () => void;
10
+}

+ 6
- 0
types/hand-crafted/modules/e2ee/Context.d.ts View File

@@ -0,0 +1,6 @@
1
+export class Context {
2
+  constructor( id: string );
3
+  setKey: ( keyBytes: number[] | false, keyIndex: number ) => Promise<void>; // TODO: jsdoc has different parameter name
4
+  encodeFunction: ( encodedFrame: RTCEncodedVideoFrame | RTCEncodedAudioFrame, controller: TransformStreamDefaultController ) => void;
5
+  decodeFunction: ( encodedFrame: RTCEncodedVideoFrame | RTCEncodedAudioFrame, controller: TransformStreamDefaultController ) => Promise<unknown>; // TODO:
6
+}

+ 7
- 0
types/hand-crafted/modules/e2ee/E2EEContext.d.ts View File

@@ -0,0 +1,7 @@
1
+export default class E2EEcontext {
2
+  constructor();
3
+  cleanup: ( participantId: string ) => void;
4
+  handleReceiver: ( receiver: RTCRtpReceiver, kind: string, participantId: string ) => void;
5
+  handleSender: ( sender: RTCRtpSender, kind: string, participantId: string ) => void;
6
+  setKey: ( participantId: string, key: Uint8Array[] | boolean, keyIndex: number ) => void;
7
+}

+ 8
- 0
types/hand-crafted/modules/e2ee/E2EEncryption.d.ts View File

@@ -0,0 +1,8 @@
1
+import JitsiConference from '../../JitsiConference';
2
+
3
+declare class E2EEncryption {
4
+  constructor( conference: JitsiConference );
5
+  static isSupported: ( config: { testing: { disableE2EE: boolean } } ) => boolean;
6
+  isEnabled: () => boolean;
7
+  setEnabled: ( enabled: boolean ) => Promise<void>;
8
+}

+ 12
- 0
types/hand-crafted/modules/e2ee/OlmAdapter.d.ts View File

@@ -0,0 +1,12 @@
1
+import JitsiConference from '../../JitsiConference';
2
+import Listenable from '../util/Listenable';
3
+
4
+export class OlmAdapter extends Listenable {
5
+  constructor( conference: JitsiConference );
6
+  initSessions: () => Promise<unknown>; // TODO:
7
+  static isSupported: () => boolean;
8
+  updateCurrentKey: ( key: Uint8Array | boolean ) => number;
9
+  clearParticipantSession: ( participant: unknown ) => void; // TODO:
10
+  clearAllParticipantsSessions: () => void;
11
+  updateKey: ( key: Uint8Array | boolean ) => Promise<number>;
12
+}

+ 0
- 0
types/hand-crafted/modules/e2ee/Worker.d.ts View File


+ 5
- 0
types/hand-crafted/modules/e2ee/crypto-utils.d.ts View File

@@ -0,0 +1,5 @@
1
+export function deriveKeys( material: CryptoKey ): Promise<unknown>; // TODO:
2
+
3
+export function ratchet( material: CryptoKey ): Promise<ArrayBuffer>; // TODO: check promise
4
+
5
+export function importKey( keyBytes: ArrayBuffer, keyUsages: Array<unknown> ): Promise<CryptoKey>; // TODO: check promise

+ 4
- 0
types/hand-crafted/modules/e2ee/utils.d.ts View File

@@ -0,0 +1,4 @@
1
+export function polyFillEncodedFrameMetadata( encodedFrame: RTCEncodedAudioFrame | RTCEncodedVideoFrame, controller: unknown ): void; // TODO:
2
+
3
+export function isArrayEqual<T>( a1: Array<T>, a2: Array<T> ): boolean;
4
+

+ 32
- 0
types/hand-crafted/modules/e2eping/e2eping.d.ts View File

@@ -0,0 +1,32 @@
1
+import JitsiConference from '../../JitsiConference';
2
+import JitsiParticipant from '../../JitsiParticipant';
3
+
4
+declare type E2ePingOptions = {
5
+  e2eping?: {
6
+    pingInterval?: number;
7
+    analyticsInterval?: number;
8
+  }
9
+}
10
+
11
+declare type E2ePayload = {
12
+  type: 'e2e-ping-request' | 'e2e-ping-response'
13
+}
14
+
15
+declare type E2eResponse = E2ePayload | {
16
+  id: string
17
+}
18
+
19
+declare type E2eRequest = {
20
+  id: string
21
+}
22
+
23
+export default class E2ePing {
24
+  constructor( conference: JitsiConference, options: E2ePingOptions, sendMessage: ( response: E2eResponse, participant: string ) => void ); // TODO: jsdoc arguments are in the wrong order
25
+  dataChannelOpened: () => void;
26
+  messageReceived: ( participant: unknown, payload: unknown ) => void; // TODO:
27
+  participantJoined: ( id: string, participant: JitsiParticipant ) => void;
28
+  participantLeft: ( id: string ) => void;
29
+  handleRequest: ( participantId: string, request: E2eRequest ) => void;
30
+  handleResponse: ( participantId: string, response: unknown ) => void; // TODO:
31
+  stop: () => void;
32
+}

+ 6
- 0
types/hand-crafted/modules/event/Jvb121EventGenerator.d.ts View File

@@ -0,0 +1,6 @@
1
+import JitsiConference from '../../JitsiConference';
2
+
3
+export default class Jvb121EventGenerator {
4
+  constructor( conference: JitsiConference );
5
+  evaluateStatus: () => void;
6
+}

+ 16
- 0
types/hand-crafted/modules/proxyconnection/ProxyConnectionPC.d.ts View File

@@ -0,0 +1,16 @@
1
+import JitsiLocalTrack from '../RTC/JitsiLocalTrack';
2
+
3
+export default class ProxyConnectionPC {
4
+  constructor( options?: {
5
+    iceConfig: unknown; // TODO:
6
+    isInitiator: boolean;
7
+    onRemoteStream: ( params: unknown ) => unknown; // TODO:
8
+    peerJid: string;
9
+    receiveVideo: boolean;
10
+    onSendMessage: ( params: unknown ) => unknown; // TODO:
11
+  } );
12
+  getPeerJid: () => string;
13
+  processMessage: ( $jingle: JQuery ) => void; // TODO: surely there shouldn't be a dependency on jQuery
14
+  start: ( localTracks?: JitsiLocalTrack[] ) => void;
15
+  stop: () => void;
16
+}

+ 15
- 0
types/hand-crafted/modules/proxyconnection/ProxyConnectionService.d.ts View File

@@ -0,0 +1,15 @@
1
+import JitsiConnection from '../../JitsiConnection';
2
+import JitsiLocalTrack from '../RTC/JitsiLocalTrack';
3
+
4
+export default class ProxyConnectionService {
5
+  constructor( options: {
6
+    convertVideoToDesktop: boolean,
7
+    iceConfig: unknown, // TODO:
8
+    jitsiConnection: JitsiConnection,
9
+    onRemoteStream: ( params: unknown ) => unknown, // TODO:
10
+    onSendMessage: ( params: unknown ) => unknown // TODO:
11
+  } );
12
+  processMessage: ( message: { data: { iq: string }, from: string } ) => void;
13
+  start: ( peerJid: string, localTracks?: JitsiLocalTrack[] ) => void;
14
+  stop: () => void;
15
+}

+ 8
- 0
types/hand-crafted/modules/proxyconnection/constants.d.ts View File

@@ -0,0 +1,8 @@
1
+export enum ACTIONS {
2
+  ACCEPT = 'session-accept',
3
+  CONNECTION_ERROR = 'connection-error-encountered',
4
+  INITIATE = 'session-initiate',
5
+  TERMINATE = 'session-terminate',
6
+  TRANSPORT_INFO = 'transport-info',
7
+  UNAVAILABLE = 'unavailable'
8
+}

+ 19
- 0
types/hand-crafted/modules/qualitycontrol/ReceiveVideoController.d.ts View File

@@ -0,0 +1,19 @@
1
+import JitsiConference from '../../JitsiConference';
2
+import RTC from '../RTC/RTC';
3
+
4
+export class ReceiverVideoConstraints {
5
+  readonly constraints: unknown; // TODO:
6
+  updateLastN: ( value: number ) => boolean;
7
+  updateReceiveResolution: ( maxFrameHeight: number ) => boolean;
8
+  updateReceiverVideoConstraints: ( videoConstraints: ReceiverVideoConstraints ) => boolean; // TODO:
9
+  updateSelectedEndpoints: ( ids: unknown ) => void; // TODO:
10
+}
11
+
12
+export class ReceiveVideoController {
13
+  constructor( conference: JitsiConference, rtc: RTC );
14
+  getLastN: () => number;
15
+  selectEndpoints: ( ids: unknown ) => unknown; // TODO:
16
+  setLastN: ( value: number ) => void;
17
+  setPreferredReceiveMaxFrameHeight: ( maxFrameHeight: number ) => void;
18
+  setReceiverConstraints: ( constraints: ReceiverVideoConstraints ) => void;
19
+}

+ 8
- 0
types/hand-crafted/modules/qualitycontrol/SendVideoController.d.ts View File

@@ -0,0 +1,8 @@
1
+import JitsiConference from '../../JitsiConference';
2
+import RTC from '../RTC/RTC';
3
+
4
+export class SendVideoController {
5
+  constructor( conference: JitsiConference, rtc: RTC );
6
+  selectSendMaxFrameHeight: () => number | undefined;
7
+  setPreferredSendMaxFrameHeight: ( maxFrameHeight: number ) => Promise<void[]>;
8
+}

+ 23
- 0
types/hand-crafted/modules/recording/JibriSession.d.ts View File

@@ -0,0 +1,23 @@
1
+import JitsiParticipant from '../../JitsiParticipant';
2
+import Jibri from './recordingConstants';
3
+
4
+export default class JibriSession {
5
+  constructor( options?: {
6
+    connection: unknown, // TODO:
7
+    mode: unknown, // TODO:
8
+    sessionID: unknown, // TODO:
9
+    status: unknown // TODO:
10
+  } );
11
+  getError: () => Jibri.error | undefined;
12
+  getID: () => string | undefined;
13
+  getInitiator: () => JitsiParticipant | string;
14
+  getLiveStreamViewURL: () => string | undefined;
15
+  getStatus: () => Jibri.status | undefined;
16
+  getTerminator: () => JitsiParticipant | string;
17
+  getMode: () => Jibri.mode;
18
+  setError: ( error: Jibri.error ) => void;
19
+  setLiveStreamViewURL: ( url: string ) => void;
20
+  setStatus: ( status: Jibri.status ) => void;
21
+  setInitiator: ( participant: JitsiParticipant | string ) => void;
22
+  setTerminator: ( participant: JitsiParticipant | string ) => void;
23
+}

+ 11
- 0
types/hand-crafted/modules/recording/RecordingManager.d.ts View File

@@ -0,0 +1,11 @@
1
+import ChatRoom from '../xmpp/ChatRoom';
2
+import JibriSession from './JibriSession';
3
+import Jibri from './recordingConstants';
4
+
5
+export default class RecordingManager {
6
+  constructor( chatRoom: ChatRoom ); // TODO: jsdocs says return type is void
7
+  getSession: ( sessionID: string ) => JibriSession | undefined;
8
+  onPresence: ( { fromHiddenDomain: Node, presence: boolean } ) => void;
9
+  startRecording: ( options: { appData: string, broadcastId?: string, mode: Jibri.mode, streamId?: string } ) => Promise<unknown>;
10
+  stopRecording: ( sessionID: string ) => Promise<unknown>;
11
+}

+ 21
- 0
types/hand-crafted/modules/recording/recordingConstants.d.ts View File

@@ -0,0 +1,21 @@
1
+declare namespace recordingConstants {
2
+  enum error {
3
+    BUSY = 'busy',
4
+    ERROR = 'error',
5
+    RESOURCE_CONSTRAINT = 'resource-constraint',
6
+    SERVICE_UNAVAILABLE = 'service-unavailable'
7
+  }
8
+
9
+  enum mode {
10
+    FILE = 'file',
11
+    STREAM = 'stream'
12
+  }
13
+
14
+  enum status {
15
+    OFF = 'off',
16
+    ON = 'on',
17
+    PENDING = 'pending'
18
+  }
19
+}
20
+
21
+export default recordingConstants;

+ 21
- 0
types/hand-crafted/modules/recording/recordingXMLUtils.d.ts View File

@@ -0,0 +1,21 @@
1
+declare type RecordingXMLUtils = {
2
+  getFocusRecordingUpdate: ( presence: Node ) => {
3
+    error: string,
4
+    initiator: string,
5
+    recordingMode: string,
6
+    sessionID: string,
7
+    status: string
8
+  };
9
+
10
+  getHiddenDomainUpdate: ( presence: Node ) => {
11
+    liveStreamViewURL: string,
12
+    mode: string,
13
+    sessionID: string
14
+  };
15
+
16
+  getSessionIdFromIq: ( response: Node ) => string;
17
+  getSessionId: ( presence: Node ) => string;
18
+  isFromFocus: ( presence: Node ) => boolean;
19
+}
20
+
21
+export default RecordingXMLUtils;

+ 7
- 0
types/hand-crafted/modules/sdp/LocalSdpMunger.d.ts View File

@@ -0,0 +1,7 @@
1
+import TraceablePeerConnection from '../RTC/TraceablePeerConnection';
2
+
3
+export default class LocalSdpMunger {
4
+  constructor( tpc: TraceablePeerConnection, localEndpointId: string );
5
+  maybeAddMutedLocalVideoTracksToSDP: ( desc: unknown ) => RTCSessionDescription; // TODO:
6
+  transformStreamIdentifiers: ( sessionDesc: RTCSessionDescription ) => RTCSessionDescription;
7
+}

+ 9
- 0
types/hand-crafted/modules/sdp/RtxModifier.d.ts View File

@@ -0,0 +1,9 @@
1
+import { MLineWrap } from './SdpTransformUtil';
2
+
3
+export default class RtxModifier {
4
+  clearSsrcCache: () => void;
5
+  setSsrcCache: ( ssrcMapping: Map<unknown, unknown> ) => void; // TODO:
6
+  modifyRtxSsrcs: ( sdpStr: string ) => void;
7
+  modifyRtxSsrcs2: ( videoMLine: MLineWrap ) => boolean; // TODO: what is an MLineWrap
8
+  stripRtx: ( sdpStr: string ) => string;
9
+}

+ 16
- 0
types/hand-crafted/modules/sdp/SDP.d.ts View File

@@ -0,0 +1,16 @@
1
+export default function SDP( sdp: unknown ): void; // TODO:
2
+
3
+export default class SDP {
4
+  constructor( sdp: unknown ); // TODO:
5
+  failICE: boolean;
6
+  removeTcpCandidates: boolean;
7
+  removeUdpCandidates: boolean;
8
+  getMediaSsrcMap: () => unknown; // TODO:
9
+  containsSSRC: ( ssrc: unknown ) => boolean; // TODO:
10
+  toJingle: ( elem: unknown, thecreator: unknown ) => unknown; // TODO:
11
+  transportToJingle: ( mediaindex: unknown, elem: unknown ) => unknown; // TODO:
12
+  rtcpFbToJingle: ( mediaindex: unknown, elem: unknown, payloadtype: unknown ) => unknown; // TODO:
13
+  rtcpFbFromJingle: ( elem: unknown, payloadtype: unknown ) => unknown; // TODO:
14
+  fromJingle: ( jingle: unknown ) => unknown; // TODO:
15
+  jingle2media: ( content: unknown ) => unknown; // TODO:
16
+}

+ 7
- 0
types/hand-crafted/modules/sdp/SDPDiffer.d.ts View File

@@ -0,0 +1,7 @@
1
+export default function SDPDiffer( mySDP: unknown, otherSDP: unknown ): void;
2
+
3
+export default class SDPDiffer {
4
+  constructor( mySDP: unknown, otherSDP: unknown ); // TODO:
5
+  getNewMedia: () => unknown; // TODO:
6
+  toJingle: ( modify: unknown ) => unknown; // TODO:
7
+}

+ 36
- 0
types/hand-crafted/modules/sdp/SDPUtil.d.ts View File

@@ -0,0 +1,36 @@
1
+import SDP from './SDP';
2
+
3
+export type SDPUtil = {
4
+  filterSpecialChars: ( text: string ) => string;
5
+  iceparams: ( mediadesc: unknown, sessiondesc: unknown ) => unknown; // TODO:
6
+  parseICEUfrag: ( line: string ) => string;
7
+  buildICEUfrag: ( frag: unknown ) => string; // TODO:
8
+  parseICEPwd: ( line: string ) => string;
9
+  buildICEPwd: ( pwd: unknown ) => string; // TODO:
10
+  parseMID: ( line: string ) => string;
11
+  parseMLine: ( line: string ) => unknown; // TODO:
12
+  buildMLine: ( mline: unknown ) => string; // TODO:
13
+  parseRTPMap: ( line: string ) => unknown; // TODO:
14
+  parseSCTPMap: ( line: string ) => unknown[]; // TODO:
15
+  buildRTPMap: ( el: unknown ) => string; // TODO:
16
+  parseCrypto: ( line: string ) => unknown; // TODO:
17
+  parseFingerprint: ( line: string ) => unknown; // TODO:
18
+  parseFmtp: ( line: string ) => unknown; // TODO:
19
+  parseICECandidate: ( line: string ) => unknown; // TODO:
20
+  buildICECandidate: ( cand: unknown ) => unknown; // TODO:
21
+  parseSSRC: ( desc: unknown ) => unknown; // TODO:
22
+  parseRTCPFB: ( cand: unknown ) => unknown; // TODO:
23
+  parseExtmap: ( cand: unknown ) => unknown; // TODO:
24
+  findLine: ( haystack: string, needle: string, sessionpart?: string ) => boolean;
25
+  findLines: ( haystack: string, needle: string, sessionpart?: string ) => string[];
26
+  candidateToJingle: ( line: string ) => unknown; // TODO:
27
+  candidateFromJingle: ( cand: unknown ) => unknown; // TODO:
28
+  parsePrimaryVideoSsrc: ( videoMLine: unknown ) => number; // TODO:
29
+  generateSsrc: () => number;
30
+  getSsrcAttribute: ( mLine: unknown, ssrc: number, attributeName: string ) => string;
31
+  parseGroupSsrcs: ( ssrcGroup: unknown ) => number[]; // TODO:
32
+  getMedia: ( sdp: SDP, type: unknown ) => unknown; // TODO:
33
+  getUfrag: ( sdp: SDP ) => string;
34
+  preferCodec: ( mline: unknown, codecName: string ) => void; // TODO:
35
+  stripCodec: ( mLine: unknown, codecName: string, highProfile?: boolean ) => void; // TODO:
36
+}

+ 7
- 0
types/hand-crafted/modules/sdp/SdpConsistency.d.ts View File

@@ -0,0 +1,7 @@
1
+export default class SdpConsistency {
2
+  constructor( logPrefix: string );
3
+  clearVideoSsrcCache: () => void;
4
+  setPrimarySsrc: ( primarySsrc: number ) => void;
5
+  hasPrimarySsrcCached: () => void;
6
+  makeVideoPrimarySsrcsConsistent: ( sdpStr: string ) => string;
7
+}

+ 33
- 0
types/hand-crafted/modules/sdp/SdpTransformUtil.d.ts View File

@@ -0,0 +1,33 @@
1
+import { MediaDirection } from '../../service/RTC/MediaDirection';
2
+import { MediaType } from '../../service/RTC/MediaType';
3
+
4
+export function parsePrimarySSRC( group: unknown ): number; // TODO:
5
+
6
+export class MLineWrap {
7
+  ssrcs: unknown[]; // TODO:
8
+  direction: MediaDirection;
9
+  ssrcGroups: unknown[]; // TODO:
10
+  getSSRCAttrValue: ( ssrcNumber: number, attrName: string ) => string | undefined;
11
+  removeSSRC: ( ssrcNum: number ) => void;
12
+  addSSRCAttribute: ( ssrcObj: unknown ) => void; // TODO:
13
+  findGroup: ( semantics: string, ssrcs: string ) => unknown | undefined;
14
+  findGroups: ( semantics: string ) => unknown[];
15
+  findGroupByPrimarySSRC: ( semantics: string, primarySSRC: number ) => unknown; // TODO:
16
+  findSSRCByMSID: ( msid: string | null ) => unknown | undefined; // TODO:
17
+  getSSRCCount: () => number;
18
+  containsAnySSRCGroups: () => boolean;
19
+  getPrimaryVideoSsrc: () => number | undefined;
20
+  getRtxSSRC: ( primarySsrc: number ) => number | undefined;
21
+  getSSRCs: () => number[];
22
+  getPrimaryVideoSSRCs: () => number[];
23
+  dumpSSRCGroups: () => string;
24
+  removeGroupsWithSSRC: ( ssrc: string ) => void;
25
+  removeGroupsBySemantics: ( semantics: string ) => void;
26
+  replaceSSRC: ( oldSSRC: number, newSSRC: number ) => void;
27
+  addSSRCGroup: ( group: unknown ) => void; // TODO:
28
+}
29
+
30
+export class SdpTransformWrap {
31
+  selectMedia: ( mediaType: MediaType ) => MLineWrap | null;
32
+  toRawSDP: () => string;
33
+}

+ 8
- 0
types/hand-crafted/modules/settings/Settings.d.ts View File

@@ -0,0 +1,8 @@
1
+declare namespace Settings {
2
+  export function init( externalStorage: Storage | undefined ): void;
3
+  const callStatsUserName: string;
4
+  const machineId: string;
5
+  const sessionId: string;
6
+}
7
+
8
+export default Settings;

+ 11
- 0
types/hand-crafted/modules/statistics/AnalyticsAdapter.d.ts View File

@@ -0,0 +1,11 @@
1
+declare class AnalyticsAdapter {
2
+  reset: () => void;
3
+  dispose: () => void;
4
+  setAnalyticsHandlers: ( handlers: Array<unknown> ) => void; // TODO:
5
+  addPermanentProperties: ( properties: unknown ) => void; // TODO:
6
+  setConferenceName: ( name: string ) => void;
7
+  sendEvent: ( eventName: string | unknown, properties?: unknown ) => void; // TODO:
8
+}
9
+
10
+declare const analyticsAdapter: AnalyticsAdapter;
11
+export default analyticsAdapter;

+ 6
- 0
types/hand-crafted/modules/statistics/AudioOutputProblemDetector.d.ts View File

@@ -0,0 +1,6 @@
1
+import JitsiConference from '../../JitsiConference';
2
+
3
+export default class AudioOutputProblemDetector {
4
+  constructor( conference: JitsiConference );
5
+  dispose: () => void;
6
+}

+ 6
- 0
types/hand-crafted/modules/statistics/AvgRTPStatsReporter.d.ts View File

@@ -0,0 +1,6 @@
1
+import JitsiConference from '../../JitsiConference';
2
+
3
+export default class AvgRTPStatsReporter {
4
+  constructor( conference: JitsiConference, n: number );
5
+  dispose: () => void;
6
+}

+ 34
- 0
types/hand-crafted/modules/statistics/CallStats.d.ts View File

@@ -0,0 +1,34 @@
1
+import TraceablePeerConnection from '../RTC/TraceablePeerConnection';
2
+
3
+declare class CallStats {
4
+  constructor( tpc: TraceablePeerConnection, options: {
5
+    confID: string,
6
+    remoteUserID?: string
7
+  } );
8
+  static readonly fabrics: Set<CallStats>;
9
+  static initBackend: ( options: {
10
+    callStatsID: string,
11
+    callStatsSecret: string,
12
+    aliasName: string
13
+    userName: string
14
+  } ) => boolean;
15
+  static isBackendInitialized: () => boolean;
16
+  static sendActiveDeviceListEvent: ( devicesData: { deviceList: { string: string } }, cs: CallStats ) => void; // TODO: not convinced by this definition
17
+  static sendApplicationLog: ( e: Error, cs: CallStats ) => void;
18
+  static sendFeedback: ( conferenceID: string, overall: 1 | 2 | 3 | 4 | 5, comment: unknown ) => Promise<unknown>; // TODO:
19
+  static sendGetUserMediaFailed: ( e: Error, cs: CallStats ) => void;
20
+  static sendMuteEvent: ( mute: boolean, type: "audio" | "video", cs: CallStats ) => void;
21
+  associateStreamWithVideoTag: ( ssrc: number, isLocal: boolean, streamEndpointId: string | null, usageLabel: string, containerId: string ) => void;
22
+  sendDominantSpeakerEvent: () => void;
23
+  sendTerminateEvent: () => void;
24
+  sendIceConnectionFailedEvent: () => void;
25
+  sendCreateOfferFailed: ( e: Error ) => void;
26
+  sendCreateAnswerFailed: ( e: Error ) => void;
27
+  sendResumeOrHoldEvent: ( isResume: boolean ) => void;
28
+  sendScreenSharingEvent: ( start: boolean, ssrc: string | null ) => void;
29
+  sendSetLocalDescFailed: ( e: Error ) => void;
30
+  sendSetRemoteDescFailed: ( e: Error ) => void;
31
+  sendAddIceCandidateFailed: ( e: Error ) => void;
32
+}
33
+
34
+export default CallStats;

+ 10
- 0
types/hand-crafted/modules/statistics/LocalStatsCollector.d.ts View File

@@ -0,0 +1,10 @@
1
+declare function LocalStatsCollector( stream: unknown, interval: unknown, callback: unknown ): void;
2
+
3
+declare class LocalStatsCollector {
4
+  constructor( stream: unknown, interval: unknown, callback: unknown );
5
+  start: () => void;
6
+  stop: () => void;
7
+  static isLocalStatsSupported: () => boolean;
8
+} // TODO: check this definition - it looks like an old school class but might be a mixin
9
+
10
+export default LocalStatsCollector;

+ 6
- 0
types/hand-crafted/modules/statistics/PerformanceObserverStats.d.ts View File

@@ -0,0 +1,6 @@
1
+export class PerformanceObserverStats {
2
+  constructor( emitter: unknown, statsInterval: unknown ); // TODO:
3
+  getLongTasksStats: () => unknown; // TODO:
4
+  startObserver: () => void;
5
+  stopObserver: () => void;
6
+}

+ 22
- 0
types/hand-crafted/modules/statistics/PrecallTest.d.ts View File

@@ -0,0 +1,22 @@
1
+export function init( options: unknown ): Promise<void>; // TODO:
2
+
3
+export type PrecallTestOptions = {
4
+  callStatsID: string;
5
+  callStatsSecret: string;
6
+  statisticsId: string;
7
+  statisticsDisplayName: string;
8
+  disableThirdPartyRequests?: boolean; // undocumented but used in the method
9
+}
10
+
11
+export type PrecallTestResults = {
12
+  mediaConnectivity: boolean
13
+  throughput: number;
14
+  fractionalLoss: number;
15
+  rtt: number;
16
+  provider: string;
17
+}
18
+
19
+export default class PrecallTest {
20
+  init: ( options: PrecallTestOptions ) => Promise<void>;
21
+  execute: () => Promise<string | PrecallTestResults>;
22
+}

+ 13
- 0
types/hand-crafted/modules/statistics/RTPStatsCollector.d.ts View File

@@ -0,0 +1,13 @@
1
+export default function StatsCollector( peerconnection: unknown, audioLevelsInterval: unknown, statsInterval: unknown, eventEmitter: unknown ): void; // TODO:
2
+
3
+export default class StatsCollector {
4
+  constructor( peerconnection: unknown, audioLevelsInterval: unknown, statsInterval: unknown, eventEmitter: unknown ); // TODO:
5
+  stop: () => void;
6
+  errorCallback: ( error: Error ) => void;
7
+  start: ( startAudioLevelStats: unknown ) => void;
8
+  getNonNegativeStat: ( report: unknown, name: string ) => number;
9
+  processStatsReport: () => void;
10
+  processAudioLevelReport: () => void;
11
+  getNonNegativeValue: ( v: unknown ) => number; // TODO:
12
+  setSpeakerList: ( speakerList: Array<string> ) => void;
13
+}

+ 12
- 0
types/hand-crafted/modules/statistics/SpeakerStats.d.ts View File

@@ -0,0 +1,12 @@
1
+export class SpeakerStats {
2
+  constructor( userId: string, displayName: string, isLocalStats: boolean );
3
+  getUserId: () => string;
4
+  getDisplayName: () => string;
5
+  setDisplayName: ( name: string ) => void;
6
+  isLocalStats: () => boolean;
7
+  isDominantSpeaker: () => boolean;
8
+  setDominantSpeaker: ( isNowDominantSpeaker: boolean ) => void;
9
+  getTotalDominantSpeakerTime: () => number;
10
+  hasLeft: () => boolean;
11
+  markAsHasLeft: () => void;
12
+}

+ 6
- 0
types/hand-crafted/modules/statistics/SpeakerStatsCollector.d.ts View File

@@ -0,0 +1,6 @@
1
+import JitsiConference from '../../JitsiConference';
2
+
3
+export default class SpeakerStatsCollector {
4
+  constructor( conference: JitsiConference );
5
+  getStats: () => unknown; // TODO:
6
+}

+ 1
- 0
types/hand-crafted/modules/statistics/constants.d.ts View File

@@ -0,0 +1 @@
1
+export const CALLSTATS_SCRIPT_URL = 'https://api.callstats.io/static/callstats-ws.min.js';

+ 61
- 0
types/hand-crafted/modules/statistics/statistics.d.ts View File

@@ -0,0 +1,61 @@
1
+import TraceablePeerConnection from '../RTC/TraceablePeerConnection';
2
+
3
+export type StatisticsOptions = {
4
+  applicationName: string,
5
+  aliasName: string,
6
+  userName: string,
7
+  confID: string,
8
+  callStatsID: string,
9
+  callStatsSecret: string,
10
+  customScriptUrl: string,
11
+  roomName: string
12
+}
13
+
14
+declare function Statistics( xmpp: unknown, options: StatisticsOptions ): void;
15
+
16
+declare class Statistics {
17
+  constructor( xmpp: unknown, options: StatisticsOptions ); // TODO:
18
+  readonly instances: Set<Statistics>;
19
+  localStats: unknown[]; // TODO:
20
+  startRemoteStats: ( peerconnection: TraceablePeerConnection ) => void;
21
+  startLocalStats: ( stream: unknown, callback: unknown ) => void; // TODO:
22
+  addAudioLevelListener: ( listener: unknown ) => void; // TODO:
23
+  removeAudioLevelListener: ( listener: unknown ) => void; // TODO:
24
+  addBeforeDisposedListener: ( listener: unknown ) => void; // TODO:
25
+  removeBeforeDisposedListener: ( listener: unknown ) => void; // TODO:
26
+  addConnectionStatsListener: ( listener: unknown ) => void; // TODO:
27
+  removeConnectionStatsListener: ( listener: unknown ) => void; // TODO:
28
+  addByteSentStatsListener: ( listener: unknown ) => void; // TODO:
29
+  removeByteSentStatsListener: ( listener: unknown ) => void; // TODO:
30
+  addLongTasksStatsListener: ( listener: unknown ) => void; // TODO:
31
+  attachLongTasksStats: ( conference: unknown ) => void; // TODO:
32
+  getLongTasksStats: () => unknown | null; // TODO:
33
+  removeLongTasksStatsListener: ( listener: unknown ) => void; // TODO:
34
+  setSpeakerList: ( speakerList: Array<string> ) => void;
35
+  dispose: () => void;
36
+  stopLocalStats: ( stream: unknown ) => void;
37
+  stopRemoteStats: ( tpc: TraceablePeerConnection ) => void;
38
+  startCallStats: ( tpc: TraceablePeerConnection, remoteUserID: string ) => void;
39
+  stopCallStats: ( tpc: TraceablePeerConnection ) => void;
40
+  isCallstatsEnabled: () => boolean;
41
+  sendConnectionResumeOrHoldEvent: ( tpc: TraceablePeerConnection, isResume: boolean ) => void;
42
+  sendIceConnectionFailedEvent: ( tpc: TraceablePeerConnection ) => void;
43
+  sendMuteEvent: ( tpc: TraceablePeerConnection, muted: boolean, type: "audio" | "video" ) => void;
44
+  sendScreenSharingEvent: ( start: boolean, ssrc: string | null ) => void;
45
+  sendDominantSpeakerEvent: ( roomJid: string ) => void;
46
+  sendActiveDeviceListEvent: ( devicesData: { deviceList: { String: string } } ) => void; // TODO: check this definition
47
+  associateStreamWithVideoTag: ( tpc: TraceablePeerConnection, ssrc: number, isLocal: boolean, userId: string, usageLabel: string, containerId: string ) => void;
48
+  sendGetUserMediaFailed: ( e: Error ) => void;
49
+  sendCreateOfferFailed: ( e: Error, tpc: TraceablePeerConnection ) => void;
50
+  sendCreateAnswerFailed: ( e: Error, tpc: TraceablePeerConnection ) => void;
51
+  sendSetLocalDescFailed: ( e: Error, tpc: TraceablePeerConnection ) => void;
52
+  sendSetRemoteDescFailed: ( e: Error, tpc: TraceablePeerConnection ) => void;
53
+  sendAddIceCandidateFailed: ( e: Error, tpc: TraceablePeerConnection ) => void;
54
+  sendFeedback: ( overall: 1 | 2 | 3 | 4 | 5, comment: string ) => Promise<void>;
55
+  static reportGlobalError: ( error: Error ) => void;
56
+  static sendLog: ( m: string ) => void;
57
+  static sendAnalyticsAndLog: ( event: string | unknown, properties?: unknown ) => void; // TODO
58
+  static sendAnalytics: ( eventName: string | unknown, properties?: unknown ) => void; // TODO
59
+}
60
+
61
+export default Statistics;

+ 16
- 0
types/hand-crafted/modules/transcription/audioRecorder.d.ts View File

@@ -0,0 +1,16 @@
1
+import JitsiConference from '../../JitsiConference';
2
+import JitsiTrack from '../RTC/JitsiTrack';
3
+
4
+export class AudioRecorder {
5
+  constructor( jitsiConference: JitsiConference );
6
+  determineCorrectFileType: unknown; // TODO:
7
+  addTrack: ( track: JitsiTrack ) => void;
8
+  instantiateTrackRecorder: ( track: JitsiTrack ) => void;
9
+  removeTrack: ( track: JitsiTrack ) => void;
10
+  updateNames: () => void;
11
+  start: () => void;
12
+  stop: () => void;
13
+  download: () => void;
14
+  getRecordingResults: () => Array<unknown>; // TODO:
15
+  getFileType: () => string;
16
+}

+ 7
- 0
types/hand-crafted/modules/transcription/recordingResult.d.ts View File

@@ -0,0 +1,7 @@
1
+export default class RecordingResult {
2
+  constructor( blob: unknown, name: unknown, startTime: unknown, wordArray: unknown ); // TODO:
3
+  readonly blob: unknown; // TODO:
4
+  readonly name: unknown; // TODO:
5
+  readonly startTime: unknown; // TODO:
6
+  readonly wordArray: unknown; // TODO:
7
+}

+ 14
- 0
types/hand-crafted/modules/transcription/transcriber.d.ts View File

@@ -0,0 +1,14 @@
1
+import JitsiTrack from '../RTC/JitsiTrack';
2
+
3
+export default class Transcriber {
4
+  start: () => void;
5
+  stop: () => void;
6
+  maybeMerge: () => void;
7
+  merge: () => void;
8
+  updateTranscription: ( word: string, name?: string ) => void;
9
+  addTrack: ( track: JitsiTrack ) => void;
10
+  removeTrack: ( track: JitsiTrack ) => void;
11
+  getTranscription: () => string;
12
+  getState: () => unknown; // TODO:
13
+  reset: () => void;
14
+}

+ 4
- 0
types/hand-crafted/modules/transcription/transcriberHolder.d.ts View File

@@ -0,0 +1,4 @@
1
+export type transcriberHolder = {
2
+  transcribers: unknown[], // TODO
3
+  add: ( transcriber: unknown ) => void; // TODO:
4
+}

+ 9
- 0
types/hand-crafted/modules/transcription/transcriptionServices/AbstractTranscriptionService.d.ts View File

@@ -0,0 +1,9 @@
1
+import Word from '../word';
2
+import RecordingResult from '../recordingResult';
3
+
4
+export class TranscriptionService {
5
+  send: ( recordingResult: RecordingResult, callback: ( params: unknown ) => unknown ) => void; // TODO:
6
+  sendRequest: ( audioBlob: Blob, callback: ( params: unknown ) => unknown ) => void; // TODO:
7
+  formatResponse: ( response: unknown ) => Word[]; // TODO:
8
+  verify: ( response: unknown ) => boolean; // TODO:
9
+}

+ 7
- 0
types/hand-crafted/modules/transcription/transcriptionServices/SphinxTranscriptionService.d.ts View File

@@ -0,0 +1,7 @@
1
+import Word from '../word';
2
+
3
+export type SphinxService = {
4
+  sendRequest: ( audioFileBlob: unknown, callback: ( params: unknown ) => unknown ) => void; // TODO:
5
+  formatResponse: ( response: unknown ) => Word[]; // TODO:
6
+  verify: ( response: unknown ) => boolean; // TODO:
7
+}

+ 8
- 0
types/hand-crafted/modules/transcription/word.d.ts View File

@@ -0,0 +1,8 @@
1
+export default class Word {
2
+  word: string;
3
+  begin: number;
4
+  end: number;
5
+  getWord: () => string;
6
+  getBeginTime: () => number;
7
+  getEndTime: () => number;
8
+}

+ 6
- 0
types/hand-crafted/modules/util/AsyncQueue.d.ts View File

@@ -0,0 +1,6 @@
1
+export default class AsyncQueue {
2
+  constructor();
3
+  push: ( task: ( callback: ( err?: Error ) => void ) => void, callback?: ( err: Error ) => void ) => void; // TODO: check this
4
+  clear: () => void;
5
+  shutdown: () => void;
6
+}

+ 1
- 0
types/hand-crafted/modules/util/AuthUtil.d.ts View File

@@ -0,0 +1 @@
1
+export function getTokenAuthUrl( urlPattern: string, roomName: string, roleUpgrade: boolean ): string;

+ 5
- 0
types/hand-crafted/modules/util/Deferred.d.ts View File

@@ -0,0 +1,5 @@
1
+export default class Deferred {
2
+  constructor();
3
+  clearRejectTimeout: () => void;
4
+  setRejectTimeout: ( ms: number ) => void;
5
+}

+ 8
- 0
types/hand-crafted/modules/util/EventEmitterForwarder.d.ts View File

@@ -0,0 +1,8 @@
1
+declare function EventEmitterForwarder( src: { addListener: ( params: unknown ) => unknown }, dest: { emit: ( params: unknown ) => void } ): void;
2
+
3
+declare class EventEmitterForwarder {
4
+  constructor( src: { addListener: ( params: unknown ) => unknown }, dest: { emit: ( params: unknown ) => void } ); // TODO:
5
+  forward: ( srcEvent: string, dstyEvent: string, ...args: any[] ) => void;
6
+}
7
+
8
+export = EventEmitterForwarder;

+ 5
- 0
types/hand-crafted/modules/util/GlobalOnErrorHandlerImpl.d.ts View File

@@ -0,0 +1,5 @@
1
+export function addHandler( handler: unknown ): void;
2
+
3
+export function callErrorHandler( error: Error ): void;
4
+
5
+export function callUnhandledRejectionHandler( error: Error ): void;

+ 7
- 0
types/hand-crafted/modules/util/Listenable.d.ts View File

@@ -0,0 +1,7 @@
1
+import EventEmitter from '../../EventEmitter';
2
+
3
+export default class Listenable {
4
+  constructor( eventEmitter?: EventEmitter<unknown> ); // TODO:
5
+  addListener: ( eventName: string, listener: () => unknown ) => () => unknown; // TODO: returns remote listener func
6
+  removeListener: ( eventName: string, listener: () => unknown ) => void;
7
+}

+ 13
- 0
types/hand-crafted/modules/util/MathUtil.d.ts View File

@@ -0,0 +1,13 @@
1
+export function safeCounterIncrement( number: number ): number;
2
+
3
+export function calculateAverage( valueArray: Float32Array ): number;
4
+
5
+export function hashString( string: string ): number;
6
+
7
+export function filterPositiveValues( valueArray: Float32Array ): Float32Array;
8
+
9
+export class RunningAverage {
10
+  constructor();
11
+  addNext: ( value: number ) => void;
12
+  getAverage: () => number;
13
+}

+ 9
- 0
types/hand-crafted/modules/util/RandomUtil.d.ts View File

@@ -0,0 +1,9 @@
1
+export function randomHexDigit(): string;
2
+
3
+export function randomHexString( len: number ): string;
4
+
5
+export function randomElement<T>( arr: Array<T> | string ): T | string;
6
+
7
+export function randomAlphanumStr( length: number ): string;
8
+
9
+export function randomInt( min: number, max: number ): number;

+ 1
- 0
types/hand-crafted/modules/util/Retry.d.ts View File

@@ -0,0 +1 @@
1
+export function getJitterDelay( retry: number, minDelay?: number, base?: number ): number;

+ 1
- 0
types/hand-crafted/modules/util/ScriptUtil.d.ts View File

@@ -0,0 +1 @@
1
+export function loadScript( src: string, async: boolean, prepend: boolean, relativeURL: boolean, loadCallback: ( ev: Event ) => void, errorCallback: ( event: string | Event, source?: string, lineno?: number, colno?: number, error?: Error ) => void ): void;

+ 1
- 0
types/hand-crafted/modules/util/StringUtils.d.ts View File

@@ -0,0 +1 @@
1
+export function integerHash( string: string ): number;

+ 1
- 0
types/hand-crafted/modules/util/TestUtils.d.ts View File

@@ -0,0 +1 @@
1
+declare const nextTick: ( advanceTimer?: number ) => Promise<void>;

+ 0
- 0
types/hand-crafted/modules/util/UsernameGenerator.d.ts View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save