livekit-client 2.22.3 → 2.22.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/README.md +35 -0
  2. package/dist/livekit-client.e2ee.worker.js +1 -1
  3. package/dist/livekit-client.e2ee.worker.js.map +1 -1
  4. package/dist/livekit-client.e2ee.worker.mjs +2 -1
  5. package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
  6. package/dist/livekit-client.esm.mjs +602 -247
  7. package/dist/livekit-client.esm.mjs.map +1 -1
  8. package/dist/livekit-client.fm.worker.js +1 -1
  9. package/dist/livekit-client.fm.worker.js.map +1 -1
  10. package/dist/livekit-client.fm.worker.mjs +2 -1
  11. package/dist/livekit-client.fm.worker.mjs.map +1 -1
  12. package/dist/livekit-client.umd.js +1 -1
  13. package/dist/livekit-client.umd.js.map +1 -1
  14. package/dist/src/api/SignalClient.d.ts +4 -2
  15. package/dist/src/api/SignalClient.d.ts.map +1 -1
  16. package/dist/src/options.d.ts +14 -0
  17. package/dist/src/options.d.ts.map +1 -1
  18. package/dist/src/room/PCTransport.d.ts +78 -7
  19. package/dist/src/room/PCTransport.d.ts.map +1 -1
  20. package/dist/src/room/PCTransportManager.d.ts.map +1 -1
  21. package/dist/src/room/RTCEngine.d.ts +8 -0
  22. package/dist/src/room/RTCEngine.d.ts.map +1 -1
  23. package/dist/src/room/Room.d.ts +1 -1
  24. package/dist/src/room/Room.d.ts.map +1 -1
  25. package/dist/src/room/defaults.d.ts.map +1 -1
  26. package/dist/src/room/errors.d.ts +18 -0
  27. package/dist/src/room/errors.d.ts.map +1 -1
  28. package/dist/src/room/events.d.ts +3 -2
  29. package/dist/src/room/events.d.ts.map +1 -1
  30. package/dist/src/room/participant/publishUtils.d.ts.map +1 -1
  31. package/dist/src/room/rpc/client/RpcClientManager.d.ts.map +1 -1
  32. package/dist/src/room/track/LocalTrack.d.ts.map +1 -1
  33. package/dist/src/room/track/LocalVideoTrack.d.ts +2 -0
  34. package/dist/src/room/track/LocalVideoTrack.d.ts.map +1 -1
  35. package/dist/src/room/track/utils.d.ts +13 -0
  36. package/dist/src/room/track/utils.d.ts.map +1 -1
  37. package/dist/src/room/utils.d.ts +32 -0
  38. package/dist/src/room/utils.d.ts.map +1 -1
  39. package/dist/src/test/compressionStreamStubs.d.ts +12 -0
  40. package/dist/src/test/compressionStreamStubs.d.ts.map +1 -0
  41. package/dist/ts4.2/api/SignalClient.d.ts +187 -185
  42. package/dist/ts4.2/api/SignalClientStateMachine.d.ts +85 -85
  43. package/dist/ts4.2/api/WebSocketStream.d.ts +33 -33
  44. package/dist/ts4.2/api/utils.d.ts +9 -9
  45. package/dist/ts4.2/connectionHelper/ConnectionCheck.d.ts +30 -30
  46. package/dist/ts4.2/connectionHelper/checks/Checker.d.ts +62 -62
  47. package/dist/ts4.2/connectionHelper/checks/cloudRegion.d.ts +18 -18
  48. package/dist/ts4.2/connectionHelper/checks/connectionProtocol.d.ts +20 -20
  49. package/dist/ts4.2/connectionHelper/checks/publishAudio.d.ts +6 -6
  50. package/dist/ts4.2/connectionHelper/checks/publishVideo.d.ts +7 -7
  51. package/dist/ts4.2/connectionHelper/checks/reconnect.d.ts +6 -6
  52. package/dist/ts4.2/connectionHelper/checks/turn.d.ts +6 -6
  53. package/dist/ts4.2/connectionHelper/checks/webrtc.d.ts +6 -6
  54. package/dist/ts4.2/connectionHelper/checks/websocket.d.ts +6 -6
  55. package/dist/ts4.2/e2ee/E2eeManager.d.ts +111 -111
  56. package/dist/ts4.2/e2ee/KeyProvider.d.ts +54 -54
  57. package/dist/ts4.2/e2ee/constants.d.ts +21 -21
  58. package/dist/ts4.2/e2ee/errors.d.ts +12 -12
  59. package/dist/ts4.2/e2ee/events.d.ts +39 -39
  60. package/dist/ts4.2/e2ee/index.d.ts +6 -6
  61. package/dist/ts4.2/e2ee/types.d.ts +231 -231
  62. package/dist/ts4.2/e2ee/utils.d.ts +32 -32
  63. package/dist/ts4.2/e2ee/worker/DataCryptor.d.ts +16 -16
  64. package/dist/ts4.2/e2ee/worker/ErrorRateLimiter.d.ts +21 -21
  65. package/dist/ts4.2/e2ee/worker/FrameCryptor.d.ts +209 -209
  66. package/dist/ts4.2/e2ee/worker/ParticipantKeyHandler.d.ts +81 -84
  67. package/dist/ts4.2/e2ee/worker/e2ee.worker.d.ts +2 -2
  68. package/dist/ts4.2/e2ee/worker/naluUtils.d.ts +28 -28
  69. package/dist/ts4.2/e2ee/worker/sifPayload.d.ts +23 -23
  70. package/dist/ts4.2/frameMetadata/FrameMetadataManager.d.ts +53 -53
  71. package/dist/ts4.2/frameMetadata/frameMetadata.d.ts +33 -33
  72. package/dist/ts4.2/frameMetadata/types.d.ts +62 -62
  73. package/dist/ts4.2/frameMetadata/utils.d.ts +9 -9
  74. package/dist/ts4.2/frameMetadata/worker/frameMetadata.worker.d.ts +2 -2
  75. package/dist/ts4.2/index.d.ts +76 -76
  76. package/dist/ts4.2/logger.d.ts +66 -66
  77. package/dist/ts4.2/options.d.ts +163 -149
  78. package/dist/ts4.2/room/BackOffStrategy.d.ts +27 -27
  79. package/dist/ts4.2/room/DefaultReconnectPolicy.d.ts +8 -8
  80. package/dist/ts4.2/room/DeviceManager.d.ts +12 -12
  81. package/dist/ts4.2/room/PCTransport.d.ts +246 -175
  82. package/dist/ts4.2/room/PCTransportManager.d.ts +77 -77
  83. package/dist/ts4.2/room/RTCEngine.d.ts +269 -262
  84. package/dist/ts4.2/room/ReconnectPolicy.d.ts +24 -24
  85. package/dist/ts4.2/room/RegionUrlProvider.d.ts +36 -36
  86. package/dist/ts4.2/room/Room.d.ts +354 -365
  87. package/dist/ts4.2/room/attribute-typings.d.ts +35 -35
  88. package/dist/ts4.2/room/data-channel/DataChannelManager.d.ts +62 -62
  89. package/dist/ts4.2/room/data-channel/FlowControlledDataChannel.d.ts +94 -95
  90. package/dist/ts4.2/room/data-channel/LossyDataChannel.d.ts +41 -41
  91. package/dist/ts4.2/room/data-channel/ReliableDataChannel.d.ts +57 -57
  92. package/dist/ts4.2/room/data-channel/types.d.ts +12 -12
  93. package/dist/ts4.2/room/data-stream/compression.d.ts +49 -49
  94. package/dist/ts4.2/room/data-stream/constants.d.ts +18 -18
  95. package/dist/ts4.2/room/data-stream/incoming/IncomingDataStreamManager.d.ts +29 -29
  96. package/dist/ts4.2/room/data-stream/incoming/StreamReader.d.ts +80 -80
  97. package/dist/ts4.2/room/data-stream/outgoing/OutgoingDataStreamManager.d.ts +73 -73
  98. package/dist/ts4.2/room/data-stream/outgoing/StreamWriter.d.ts +16 -16
  99. package/dist/ts4.2/room/data-stream/outgoing/header-utils.d.ts +18 -18
  100. package/dist/ts4.2/room/data-track/LocalDataTrack.d.ts +79 -80
  101. package/dist/ts4.2/room/data-track/RemoteDataTrack.d.ts +50 -50
  102. package/dist/ts4.2/room/data-track/depacketizer.d.ts +59 -59
  103. package/dist/ts4.2/room/data-track/frame.d.ts +22 -22
  104. package/dist/ts4.2/room/data-track/handle.d.ts +27 -27
  105. package/dist/ts4.2/room/data-track/incoming/IncomingDataTrackManager.d.ts +124 -124
  106. package/dist/ts4.2/room/data-track/incoming/errors.d.ts +24 -24
  107. package/dist/ts4.2/room/data-track/incoming/pipeline.d.ts +41 -41
  108. package/dist/ts4.2/room/data-track/incoming/types.d.ts +20 -20
  109. package/dist/ts4.2/room/data-track/outgoing/OutgoingDataTrackManager.d.ts +126 -126
  110. package/dist/ts4.2/room/data-track/outgoing/errors.d.ts +74 -74
  111. package/dist/ts4.2/room/data-track/outgoing/pipeline.d.ts +23 -23
  112. package/dist/ts4.2/room/data-track/outgoing/types.d.ts +48 -48
  113. package/dist/ts4.2/room/data-track/packet/constants.d.ts +20 -20
  114. package/dist/ts4.2/room/data-track/packet/errors.d.ts +40 -40
  115. package/dist/ts4.2/room/data-track/packet/extensions.d.ts +69 -69
  116. package/dist/ts4.2/room/data-track/packet/index.d.ts +98 -98
  117. package/dist/ts4.2/room/data-track/packet/serializable.d.ts +13 -13
  118. package/dist/ts4.2/room/data-track/packetizer.d.ts +43 -43
  119. package/dist/ts4.2/room/data-track/track-interfaces.d.ts +23 -23
  120. package/dist/ts4.2/room/data-track/types.d.ts +22 -22
  121. package/dist/ts4.2/room/data-track/utils.d.ts +60 -60
  122. package/dist/ts4.2/room/debounce.d.ts +11 -11
  123. package/dist/ts4.2/room/defaults.d.ts +9 -9
  124. package/dist/ts4.2/room/errors.d.ts +180 -162
  125. package/dist/ts4.2/room/events.d.ts +638 -637
  126. package/dist/ts4.2/room/participant/LocalParticipant.d.ts +287 -287
  127. package/dist/ts4.2/room/participant/Participant.d.ts +142 -144
  128. package/dist/ts4.2/room/participant/ParticipantTrackPermission.d.ts +26 -26
  129. package/dist/ts4.2/room/participant/RemoteParticipant.d.ts +85 -86
  130. package/dist/ts4.2/room/participant/publishUtils.d.ts +53 -53
  131. package/dist/ts4.2/room/rpc/client/RpcClientManager.d.ts +43 -43
  132. package/dist/ts4.2/room/rpc/client/events.d.ts +8 -8
  133. package/dist/ts4.2/room/rpc/index.d.ts +7 -7
  134. package/dist/ts4.2/room/rpc/server/RpcServerManager.d.ts +44 -44
  135. package/dist/ts4.2/room/rpc/server/events.d.ts +8 -8
  136. package/dist/ts4.2/room/rpc/utils.d.ts +131 -131
  137. package/dist/ts4.2/room/stats.d.ts +71 -71
  138. package/dist/ts4.2/room/statsSummary.d.ts +13 -13
  139. package/dist/ts4.2/room/timers.d.ts +12 -12
  140. package/dist/ts4.2/room/token-source/TokenSource.d.ts +82 -82
  141. package/dist/ts4.2/room/token-source/types.d.ts +70 -70
  142. package/dist/ts4.2/room/token-source/utils.d.ts +8 -8
  143. package/dist/ts4.2/room/track/FrameMetadataExtractor.d.ts +19 -19
  144. package/dist/ts4.2/room/track/LocalAudioTrack.d.ts +39 -42
  145. package/dist/ts4.2/room/track/LocalTrack.d.ts +125 -125
  146. package/dist/ts4.2/room/track/LocalTrackPublication.d.ts +42 -42
  147. package/dist/ts4.2/room/track/LocalVideoTrack.d.ts +102 -100
  148. package/dist/ts4.2/room/track/RemoteAudioTrack.d.ts +55 -55
  149. package/dist/ts4.2/room/track/RemoteTrack.d.ts +38 -38
  150. package/dist/ts4.2/room/track/RemoteTrackPublication.d.ts +72 -75
  151. package/dist/ts4.2/room/track/RemoteVideoTrack.d.ts +73 -76
  152. package/dist/ts4.2/room/track/Track.d.ts +156 -166
  153. package/dist/ts4.2/room/track/TrackPublication.d.ts +75 -81
  154. package/dist/ts4.2/room/track/create.d.ts +25 -25
  155. package/dist/ts4.2/room/track/facingMode.d.ts +41 -41
  156. package/dist/ts4.2/room/track/options.d.ts +403 -403
  157. package/dist/ts4.2/room/track/processor/types.d.ts +31 -31
  158. package/dist/ts4.2/room/track/record.d.ts +13 -13
  159. package/dist/ts4.2/room/track/types.d.ts +28 -28
  160. package/dist/ts4.2/room/track/utils.d.ts +60 -47
  161. package/dist/ts4.2/room/types.d.ts +127 -127
  162. package/dist/ts4.2/room/utils.d.ts +246 -214
  163. package/dist/ts4.2/test/MockMediaStreamTrack.d.ts +26 -26
  164. package/dist/ts4.2/test/compressionStreamStubs.d.ts +12 -0
  165. package/dist/ts4.2/test/mocks.d.ts +12 -12
  166. package/dist/ts4.2/test/promiseState.d.ts +12 -12
  167. package/dist/ts4.2/test/signalToken.d.ts +26 -26
  168. package/dist/ts4.2/type-polyfills/non-shared-typed-arrays.d.ts +2 -2
  169. package/dist/ts4.2/utils/AsyncQueue.d.ts +23 -23
  170. package/dist/ts4.2/utils/TypedPromise.d.ts +17 -17
  171. package/dist/ts4.2/utils/abort-signal-polyfill.d.ts +13 -13
  172. package/dist/ts4.2/utils/browserParser.d.ts +13 -13
  173. package/dist/ts4.2/utils/camelToSnakeCase.d.ts +8 -8
  174. package/dist/ts4.2/utils/cloneDeep.d.ts +2 -2
  175. package/dist/ts4.2/utils/dataPacketBuffer.d.ts +34 -34
  176. package/dist/ts4.2/utils/deferrable-map.d.ts +32 -32
  177. package/dist/ts4.2/utils/machineInspector.d.ts +54 -54
  178. package/dist/ts4.2/utils/serializer.d.ts +48 -48
  179. package/dist/ts4.2/utils/subscribeToEvents.d.ts +15 -15
  180. package/dist/ts4.2/utils/ttlmap.d.ts +20 -20
  181. package/dist/ts4.2/version.d.ts +15 -15
  182. package/package.json +5 -4
  183. package/src/api/SignalClient.e2e.test.ts +1 -3
  184. package/src/api/SignalClient.test.ts +160 -10
  185. package/src/api/SignalClient.ts +75 -54
  186. package/src/options.ts +16 -0
  187. package/src/room/PCTransport.test.ts +183 -7
  188. package/src/room/PCTransport.ts +197 -36
  189. package/src/room/PCTransportManager.ts +3 -1
  190. package/src/room/RTCEngine.test.ts +84 -0
  191. package/src/room/RTCEngine.ts +24 -5
  192. package/src/room/Room.test.ts +32 -6
  193. package/src/room/Room.ts +26 -6
  194. package/src/room/data-stream/incoming/IncomingDataStreamManager.test.ts +16 -20
  195. package/src/room/data-stream/incoming/IncomingDataStreamManager.ts +5 -5
  196. package/src/room/data-stream/outgoing/OutgoingDataStreamManager.test.ts +60 -39
  197. package/src/room/data-stream/outgoing/OutgoingDataStreamManager.ts +4 -4
  198. package/src/room/defaults.ts +1 -0
  199. package/src/room/errors.test.ts +36 -0
  200. package/src/room/errors.ts +27 -0
  201. package/src/room/events.ts +2 -1
  202. package/src/room/participant/publishUtils.ts +0 -19
  203. package/src/room/rpc/client/RpcClientManager.test.ts +51 -0
  204. package/src/room/rpc/client/RpcClientManager.ts +32 -15
  205. package/src/room/track/LocalTrack.ts +18 -7
  206. package/src/room/track/LocalVideoTrack.ts +10 -3
  207. package/src/room/track/RemoteAudioTrack.ts +3 -3
  208. package/src/room/track/RemoteVideoTrack.test.ts +210 -0
  209. package/src/room/track/RemoteVideoTrack.ts +29 -3
  210. package/src/room/track/utils.test.ts +201 -2
  211. package/src/room/track/utils.ts +88 -0
  212. package/src/room/utils.test.ts +124 -0
  213. package/src/room/utils.ts +70 -0
  214. package/src/test/compressionStreamStubs.ts +53 -0
@@ -1,166 +1,156 @@
1
- import { AudioTrackFeature, StreamState as ProtoStreamState, TrackSource, TrackType } from '@livekit/protocol';
2
- import type TypedEventEmitter from 'typed-emitter';
3
- import type { SignalClient } from '../../api/SignalClient';
4
- import type { StructuredLogger } from '../../logger';
5
- import type { NonSharedUint8Array } from '../../type-polyfills/non-shared-typed-arrays';
6
- import type { LoggerOptions } from '../types';
7
- import type { TrackProcessor } from './processor/types';
8
- export declare enum VideoQuality {
9
- LOW = 0,
10
- MEDIUM = 1,
11
- HIGH = 2
12
- }
13
- declare const Track_base: new () => TypedEventEmitter<TrackEventCallbacks>;
14
- export declare abstract class Track<TrackKind extends Track.Kind = Track.Kind> extends Track_base {
15
- readonly kind: TrackKind;
16
- attachedElements: HTMLMediaElement[];
17
- isMuted: boolean;
18
- source: Track.Source;
19
- private _streamState;
20
- /**
21
- * sid is set after track is published to server, or if it's a remote track
22
- */
23
- sid?: Track.SID;
24
- /**
25
- * @internal
26
- */
27
- mediaStream?: MediaStream;
28
- /**
29
- * indicates current state of stream, it'll indicate `paused` if the track
30
- * has been paused by congestion controller
31
- */
32
- get streamState(): Track.StreamState;
33
- /** @internal */
34
- setStreamState(value: Track.StreamState): void;
35
- /** @internal */
36
- rtpTimestamp: number | undefined;
37
- protected _mediaStreamTrack: MediaStreamTrack;
38
- protected _mediaStreamID: string;
39
- protected isInBackground: boolean;
40
- private backgroundTimeout;
41
- private loggerContextCb;
42
- protected timeSyncHandle: number | undefined;
43
- protected _currentBitrate: number;
44
- protected monitorInterval?: ReturnType<typeof setInterval>;
45
- private finalStatsLogged;
46
- protected log: StructuredLogger;
47
- protected constructor(mediaTrack: MediaStreamTrack, kind: TrackKind, loggerOptions?: LoggerOptions);
48
- protected get logContext(): {
49
- [x: string]: unknown;
50
- };
51
- /** current receive bits per second */
52
- get currentBitrate(): number;
53
- get mediaStreamTrack(): MediaStreamTrack;
54
- abstract get isLocal(): boolean;
55
- /**
56
- * @internal
57
- * used for keep mediaStream's first id, since it's id might change
58
- * if we disable/enable a track
59
- */
60
- get mediaStreamID(): string;
61
- /**
62
- * creates a new HTMLAudioElement or HTMLVideoElement, attaches to it, and returns it
63
- */
64
- attach(): HTMLMediaElement;
65
- /**
66
- * attaches track to an existing HTMLAudioElement or HTMLVideoElement
67
- */
68
- attach(element: HTMLMediaElement): HTMLMediaElement;
69
- /**
70
- * Detaches from all attached elements
71
- */
72
- detach(): HTMLMediaElement[];
73
- /**
74
- * Detach from a single element
75
- * @param element
76
- */
77
- detach(element: HTMLMediaElement): HTMLMediaElement;
78
- stop(): void;
79
- protected enable(): void;
80
- protected disable(): void;
81
- abstract startMonitor(signalClient?: SignalClient): void;
82
- /**
83
- * Raw stats of the sender or receiver this track is attached to.
84
- */
85
- abstract getRTCStatsReport(): Promise<RTCStatsReport | undefined>;
86
- stopMonitor(): void;
87
- /**
88
- * Dumps the raw stats of the track as it ends, once: a track that stops
89
- * between two of the room's stats dumps is gone by the time the next one runs.
90
- */
91
- private logFinalStats;
92
- /** @internal */
93
- updateLoggerOptions(loggerOptions: LoggerOptions): void;
94
- private recycleElement;
95
- protected appVisibilityChangedListener: () => void;
96
- protected handleAppVisibilityChanged(): Promise<void>;
97
- protected addAppVisibilityListener(): void;
98
- protected removeAppVisibilityListener(): void;
99
- }
100
- export declare function attachToElement(track: MediaStreamTrack, element: HTMLMediaElement): void;
101
- /** @internal */
102
- export declare function detachTrack(track: MediaStreamTrack, element: HTMLMediaElement): void;
103
- export declare namespace Track {
104
- enum Kind {
105
- Audio = "audio",
106
- Video = "video",
107
- Unknown = "unknown"
108
- }
109
- type SID = string;
110
- enum Source {
111
- Camera = "camera",
112
- Microphone = "microphone",
113
- ScreenShare = "screen_share",
114
- ScreenShareAudio = "screen_share_audio",
115
- Unknown = "unknown"
116
- }
117
- enum StreamState {
118
- Active = "active",
119
- Paused = "paused",
120
- Unknown = "unknown"
121
- }
122
- interface Dimensions {
123
- width: number;
124
- height: number;
125
- }
126
- /** @internal */
127
- function kindToProto(k: Kind): TrackType;
128
- /** @internal */
129
- function kindFromProto(t: TrackType): Kind | undefined;
130
- /** @internal */
131
- function sourceToProto(s: Source): TrackSource;
132
- /** @internal */
133
- function sourceFromProto(s: TrackSource): Source;
134
- /** @internal */
135
- function streamStateFromProto(s: ProtoStreamState): StreamState;
136
- }
137
- export type TrackEventCallbacks = {
138
- message: () => void;
139
- muted: (track?: any) => void;
140
- unmuted: (track?: any) => void;
141
- restarted: (track?: any) => void;
142
- ended: (track?: any) => void;
143
- updateSettings: () => void;
144
- updateSubscription: () => void;
145
- audioPlaybackStarted: () => void;
146
- audioPlaybackFailed: (error?: Error) => void;
147
- audioSilenceDetected: () => void;
148
- visibilityChanged: (visible: boolean, track?: any) => void;
149
- videoDimensionsChanged: (dimensions: Track.Dimensions, track?: any) => void;
150
- videoPlaybackStarted: () => void;
151
- videoPlaybackFailed: (error?: Error) => void;
152
- elementAttached: (element: HTMLMediaElement) => void;
153
- elementDetached: (element: HTMLMediaElement) => void;
154
- upstreamPaused: (track: any) => void;
155
- upstreamResumed: (track: any) => void;
156
- trackProcessorUpdate: (processor?: TrackProcessor<Track.Kind, any>) => void;
157
- audioTrackFeatureUpdate: (track: any, feature: AudioTrackFeature, enabled: boolean) => void;
158
- timeSyncUpdate: (update: {
159
- timestamp: number;
160
- rtpTimestamp: number;
161
- }) => void;
162
- preConnectBufferFlushed: (buffer: NonSharedUint8Array[]) => void;
163
- cpuConstrained: () => void;
164
- };
165
- export {};
166
- //# sourceMappingURL=Track.d.ts.map
1
+ import { AudioTrackFeature, StreamState as ProtoStreamState, TrackSource, TrackType } from '@livekit/protocol';
2
+ import type TypedEventEmitter from 'typed-emitter';
3
+ import type { SignalClient } from '../../api/SignalClient';
4
+ import type { StructuredLogger } from '../../logger';
5
+ import type { NonSharedUint8Array } from '../../type-polyfills/non-shared-typed-arrays';
6
+ import type { LoggerOptions } from '../types';
7
+ import type { TrackProcessor } from './processor/types';
8
+ export declare enum VideoQuality {
9
+ LOW = 0,
10
+ MEDIUM = 1,
11
+ HIGH = 2
12
+ }
13
+ declare const Track_base: new () => TypedEventEmitter<TrackEventCallbacks>;
14
+ export declare abstract class Track<TrackKind extends Track.Kind = Track.Kind> extends Track_base {
15
+ readonly kind: TrackKind;
16
+ attachedElements: HTMLMediaElement[];
17
+ isMuted: boolean;
18
+ source: Track.Source;
19
+ private _streamState;
20
+ /**
21
+ * sid is set after track is published to server, or if it's a remote track
22
+ */
23
+ sid?: Track.SID;
24
+ /**
25
+ * @internal
26
+ */
27
+ mediaStream?: MediaStream;
28
+ get streamState(): Track.StreamState;
29
+ /** @internal */
30
+ setStreamState(value: Track.StreamState): void;
31
+ /** @internal */
32
+ rtpTimestamp: number | undefined;
33
+ protected _mediaStreamTrack: MediaStreamTrack;
34
+ protected _mediaStreamID: string;
35
+ protected isInBackground: boolean;
36
+ private backgroundTimeout;
37
+ private loggerContextCb;
38
+ protected timeSyncHandle: number | undefined;
39
+ protected _currentBitrate: number;
40
+ protected monitorInterval?: ReturnType<typeof setInterval>;
41
+ private finalStatsLogged;
42
+ protected log: StructuredLogger;
43
+ protected constructor(mediaTrack: MediaStreamTrack, kind: TrackKind, loggerOptions?: LoggerOptions);
44
+ protected get logContext(): {
45
+ [x: string]: unknown;
46
+ };
47
+ get currentBitrate(): number;
48
+ get mediaStreamTrack(): MediaStreamTrack;
49
+ abstract get isLocal(): boolean;
50
+ get mediaStreamID(): string;
51
+ /**
52
+ * creates a new HTMLAudioElement or HTMLVideoElement, attaches to it, and returns it
53
+ */
54
+ attach(): HTMLMediaElement;
55
+ /**
56
+ * attaches track to an existing HTMLAudioElement or HTMLVideoElement
57
+ */
58
+ attach(element: HTMLMediaElement): HTMLMediaElement;
59
+ /**
60
+ * Detaches from all attached elements
61
+ */
62
+ detach(): HTMLMediaElement[];
63
+ /**
64
+ * Detach from a single element
65
+ * @param element
66
+ */
67
+ detach(element: HTMLMediaElement): HTMLMediaElement;
68
+ stop(): void;
69
+ protected enable(): void;
70
+ protected disable(): void;
71
+ abstract startMonitor(signalClient?: SignalClient): void;
72
+ /**
73
+ * Raw stats of the sender or receiver this track is attached to.
74
+ */
75
+ abstract getRTCStatsReport(): Promise<RTCStatsReport | undefined>;
76
+ stopMonitor(): void;
77
+ /**
78
+ * Dumps the raw stats of the track as it ends, once: a track that stops
79
+ * between two of the room's stats dumps is gone by the time the next one runs.
80
+ */
81
+ private logFinalStats;
82
+ /** @internal */
83
+ updateLoggerOptions(loggerOptions: LoggerOptions): void;
84
+ private recycleElement;
85
+ protected appVisibilityChangedListener: () => void;
86
+ protected handleAppVisibilityChanged(): Promise<void>;
87
+ protected addAppVisibilityListener(): void;
88
+ protected removeAppVisibilityListener(): void;
89
+ }
90
+ export declare function attachToElement(track: MediaStreamTrack, element: HTMLMediaElement): void;
91
+ /** @internal */
92
+ export declare function detachTrack(track: MediaStreamTrack, element: HTMLMediaElement): void;
93
+ export declare namespace Track {
94
+ enum Kind {
95
+ Audio = "audio",
96
+ Video = "video",
97
+ Unknown = "unknown"
98
+ }
99
+ type SID = string;
100
+ enum Source {
101
+ Camera = "camera",
102
+ Microphone = "microphone",
103
+ ScreenShare = "screen_share",
104
+ ScreenShareAudio = "screen_share_audio",
105
+ Unknown = "unknown"
106
+ }
107
+ enum StreamState {
108
+ Active = "active",
109
+ Paused = "paused",
110
+ Unknown = "unknown"
111
+ }
112
+ interface Dimensions {
113
+ width: number;
114
+ height: number;
115
+ }
116
+ /** @internal */
117
+ function kindToProto(k: Kind): TrackType;
118
+ /** @internal */
119
+ function kindFromProto(t: TrackType): Kind | undefined;
120
+ /** @internal */
121
+ function sourceToProto(s: Source): TrackSource;
122
+ /** @internal */
123
+ function sourceFromProto(s: TrackSource): Source;
124
+ /** @internal */
125
+ function streamStateFromProto(s: ProtoStreamState): StreamState;
126
+ }
127
+ export type TrackEventCallbacks = {
128
+ message: () => void;
129
+ muted: (track?: any) => void;
130
+ unmuted: (track?: any) => void;
131
+ restarted: (track?: any) => void;
132
+ ended: (track?: any) => void;
133
+ updateSettings: () => void;
134
+ updateSubscription: () => void;
135
+ audioPlaybackStarted: () => void;
136
+ audioPlaybackFailed: (error?: Error) => void;
137
+ audioSilenceDetected: () => void;
138
+ visibilityChanged: (visible: boolean, track?: any) => void;
139
+ videoDimensionsChanged: (dimensions: Track.Dimensions, track?: any) => void;
140
+ videoPlaybackStarted: () => void;
141
+ videoPlaybackFailed: (error?: Error) => void;
142
+ elementAttached: (element: HTMLMediaElement) => void;
143
+ elementDetached: (element: HTMLMediaElement) => void;
144
+ upstreamPaused: (track: any) => void;
145
+ upstreamResumed: (track: any) => void;
146
+ trackProcessorUpdate: (processor?: TrackProcessor<Track.Kind, any>) => void;
147
+ audioTrackFeatureUpdate: (track: any, feature: AudioTrackFeature, enabled: boolean) => void;
148
+ timeSyncUpdate: (update: {
149
+ timestamp: number;
150
+ rtpTimestamp: number;
151
+ }) => void;
152
+ preConnectBufferFlushed: (buffer: NonSharedUint8Array[]) => void;
153
+ cpuConstrained: () => void;
154
+ };
155
+ export {};
156
+ //# sourceMappingURL=Track.d.ts.map
@@ -1,81 +1,75 @@
1
- import { Encryption_Type } from '@livekit/protocol';
2
- import type { SubscriptionError, TrackInfo, UpdateSubscription, UpdateTrackSettings } from '@livekit/protocol';
3
- import type TypedEventEmitter from 'typed-emitter';
4
- import type { LoggerOptions, TranscriptionSegment } from '../types';
5
- import LocalAudioTrack from './LocalAudioTrack';
6
- import LocalVideoTrack from './LocalVideoTrack';
7
- import RemoteAudioTrack from './RemoteAudioTrack';
8
- import type RemoteTrack from './RemoteTrack';
9
- import RemoteVideoTrack from './RemoteVideoTrack';
10
- import { Track } from './Track';
11
- declare const TrackPublication_base: new () => TypedEventEmitter<PublicationEventCallbacks>;
12
- export declare abstract class TrackPublication extends TrackPublication_base {
13
- kind: Track.Kind;
14
- trackName: string;
15
- trackSid: Track.SID;
16
- track?: Track;
17
- source: Track.Source;
18
- /** MimeType of the published track */
19
- mimeType?: string;
20
- /** dimension of the original published stream, video-only */
21
- dimensions?: Track.Dimensions;
22
- /** true if track was simulcasted to server, video-only */
23
- simulcasted?: boolean;
24
- /** @internal */
25
- trackInfo?: TrackInfo;
26
- protected metadataMuted: boolean;
27
- protected encryption: Encryption_Type;
28
- protected log: import("../../logger").StructuredLogger;
29
- private loggerContextCb?;
30
- constructor(kind: Track.Kind, id: string, name: string, loggerOptions?: LoggerOptions);
31
- /** @internal */
32
- setTrack(track?: Track): void;
33
- protected get logContext(): {
34
- [x: string]: unknown;
35
- };
36
- get isMuted(): boolean;
37
- get isEnabled(): boolean;
38
- get isSubscribed(): boolean;
39
- get isEncrypted(): boolean;
40
- abstract get isLocal(): boolean;
41
- /**
42
- * an [AudioTrack] if this publication holds an audio track
43
- */
44
- get audioTrack(): LocalAudioTrack | RemoteAudioTrack | undefined;
45
- /**
46
- * an [VideoTrack] if this publication holds a video track
47
- */
48
- get videoTrack(): LocalVideoTrack | RemoteVideoTrack | undefined;
49
- handleMuted: () => void;
50
- handleUnmuted: () => void;
51
- /** @internal */
52
- updateInfo(info: TrackInfo): void;
53
- }
54
- export declare namespace TrackPublication {
55
- enum SubscriptionStatus {
56
- Desired = "desired",
57
- Subscribed = "subscribed",
58
- Unsubscribed = "unsubscribed"
59
- }
60
- enum PermissionStatus {
61
- Allowed = "allowed",
62
- NotAllowed = "not_allowed"
63
- }
64
- }
65
- export type PublicationEventCallbacks = {
66
- muted: () => void;
67
- unmuted: () => void;
68
- ended: (track?: Track) => void;
69
- updateSettings: (settings: UpdateTrackSettings) => void;
70
- subscriptionPermissionChanged: (status: TrackPublication.PermissionStatus, prevStatus: TrackPublication.PermissionStatus) => void;
71
- updateSubscription: (sub: UpdateSubscription) => void;
72
- subscribed: (track: RemoteTrack) => void;
73
- unsubscribed: (track: RemoteTrack) => void;
74
- subscriptionStatusChanged: (status: TrackPublication.SubscriptionStatus, prevStatus: TrackPublication.SubscriptionStatus) => void;
75
- subscriptionFailed: (error: SubscriptionError) => void;
76
- transcriptionReceived: (transcription: TranscriptionSegment[]) => void;
77
- timeSyncUpdate: (timestamp: number) => void;
78
- cpuConstrained: (track: LocalVideoTrack) => void;
79
- };
80
- export {};
81
- //# sourceMappingURL=TrackPublication.d.ts.map
1
+ import { Encryption_Type } from '@livekit/protocol';
2
+ import type { SubscriptionError, TrackInfo, UpdateSubscription, UpdateTrackSettings } from '@livekit/protocol';
3
+ import type TypedEventEmitter from 'typed-emitter';
4
+ import type { LoggerOptions, TranscriptionSegment } from '../types';
5
+ import LocalAudioTrack from './LocalAudioTrack';
6
+ import LocalVideoTrack from './LocalVideoTrack';
7
+ import RemoteAudioTrack from './RemoteAudioTrack';
8
+ import type RemoteTrack from './RemoteTrack';
9
+ import RemoteVideoTrack from './RemoteVideoTrack';
10
+ import { Track } from './Track';
11
+ declare const TrackPublication_base: new () => TypedEventEmitter<PublicationEventCallbacks>;
12
+ export declare abstract class TrackPublication extends TrackPublication_base {
13
+ kind: Track.Kind;
14
+ trackName: string;
15
+ trackSid: Track.SID;
16
+ track?: Track;
17
+ source: Track.Source;
18
+ /** MimeType of the published track */
19
+ mimeType?: string;
20
+ /** dimension of the original published stream, video-only */
21
+ dimensions?: Track.Dimensions;
22
+ /** true if track was simulcasted to server, video-only */
23
+ simulcasted?: boolean;
24
+ /** @internal */
25
+ trackInfo?: TrackInfo;
26
+ protected metadataMuted: boolean;
27
+ protected encryption: Encryption_Type;
28
+ protected log: import("../../logger").StructuredLogger;
29
+ private loggerContextCb?;
30
+ constructor(kind: Track.Kind, id: string, name: string, loggerOptions?: LoggerOptions);
31
+ /** @internal */
32
+ setTrack(track?: Track): void;
33
+ protected get logContext(): {
34
+ [x: string]: unknown;
35
+ };
36
+ get isMuted(): boolean;
37
+ get isEnabled(): boolean;
38
+ get isSubscribed(): boolean;
39
+ get isEncrypted(): boolean;
40
+ abstract get isLocal(): boolean;
41
+ get audioTrack(): (LocalAudioTrack | RemoteAudioTrack | undefined);
42
+ get videoTrack(): (LocalVideoTrack | RemoteVideoTrack | undefined);
43
+ handleMuted: () => void;
44
+ handleUnmuted: () => void;
45
+ /** @internal */
46
+ updateInfo(info: TrackInfo): void;
47
+ }
48
+ export declare namespace TrackPublication {
49
+ enum SubscriptionStatus {
50
+ Desired = "desired",
51
+ Subscribed = "subscribed",
52
+ Unsubscribed = "unsubscribed"
53
+ }
54
+ enum PermissionStatus {
55
+ Allowed = "allowed",
56
+ NotAllowed = "not_allowed"
57
+ }
58
+ }
59
+ export type PublicationEventCallbacks = {
60
+ muted: () => void;
61
+ unmuted: () => void;
62
+ ended: (track?: Track) => void;
63
+ updateSettings: (settings: UpdateTrackSettings) => void;
64
+ subscriptionPermissionChanged: (status: TrackPublication.PermissionStatus, prevStatus: TrackPublication.PermissionStatus) => void;
65
+ updateSubscription: (sub: UpdateSubscription) => void;
66
+ subscribed: (track: RemoteTrack) => void;
67
+ unsubscribed: (track: RemoteTrack) => void;
68
+ subscriptionStatusChanged: (status: TrackPublication.SubscriptionStatus, prevStatus: TrackPublication.SubscriptionStatus) => void;
69
+ subscriptionFailed: (error: SubscriptionError) => void;
70
+ transcriptionReceived: (transcription: TranscriptionSegment[]) => void;
71
+ timeSyncUpdate: (timestamp: number) => void;
72
+ cpuConstrained: (track: LocalVideoTrack) => void;
73
+ };
74
+ export {};
75
+ //# sourceMappingURL=TrackPublication.d.ts.map
@@ -1,25 +1,25 @@
1
- import type { LoggerOptions } from '../types';
2
- import LocalAudioTrack from './LocalAudioTrack';
3
- import type LocalTrack from './LocalTrack';
4
- import LocalVideoTrack from './LocalVideoTrack';
5
- import type { AudioCaptureOptions, CreateLocalTracksOptions, ScreenShareCaptureOptions, VideoCaptureOptions } from './options';
6
- /**
7
- * Creates a local video and audio track at the same time. When acquiring both
8
- * audio and video tracks together, it'll display a single permission prompt to
9
- * the user instead of two separate ones.
10
- * @param options
11
- */
12
- export declare function createLocalTracks(options?: CreateLocalTracksOptions, loggerOptions?: LoggerOptions): Promise<Array<LocalTrack>>;
13
- /**
14
- * Creates a [[LocalVideoTrack]] with getUserMedia()
15
- * @param options
16
- */
17
- export declare function createLocalVideoTrack(options?: VideoCaptureOptions): Promise<LocalVideoTrack>;
18
- export declare function createLocalAudioTrack(options?: AudioCaptureOptions): Promise<LocalAudioTrack>;
19
- /**
20
- * Creates a screen capture tracks with getDisplayMedia().
21
- * A LocalVideoTrack is always created and returned.
22
- * If { audio: true }, and the browser supports audio capture, a LocalAudioTrack is also created.
23
- */
24
- export declare function createLocalScreenTracks(options?: ScreenShareCaptureOptions): Promise<Array<LocalTrack>>;
25
- //# sourceMappingURL=create.d.ts.map
1
+ import type { LoggerOptions } from '../types';
2
+ import LocalAudioTrack from './LocalAudioTrack';
3
+ import type LocalTrack from './LocalTrack';
4
+ import LocalVideoTrack from './LocalVideoTrack';
5
+ import type { AudioCaptureOptions, CreateLocalTracksOptions, ScreenShareCaptureOptions, VideoCaptureOptions } from './options';
6
+ /**
7
+ * Creates a local video and audio track at the same time. When acquiring both
8
+ * audio and video tracks together, it'll display a single permission prompt to
9
+ * the user instead of two separate ones.
10
+ * @param options
11
+ */
12
+ export declare function createLocalTracks(options?: CreateLocalTracksOptions, loggerOptions?: LoggerOptions): Promise<Array<LocalTrack>>;
13
+ /**
14
+ * Creates a [[LocalVideoTrack]] with getUserMedia()
15
+ * @param options
16
+ */
17
+ export declare function createLocalVideoTrack(options?: VideoCaptureOptions): Promise<LocalVideoTrack>;
18
+ export declare function createLocalAudioTrack(options?: AudioCaptureOptions): Promise<LocalAudioTrack>;
19
+ /**
20
+ * Creates a screen capture tracks with getDisplayMedia().
21
+ * A LocalVideoTrack is always created and returned.
22
+ * If { audio: true }, and the browser supports audio capture, a LocalAudioTrack is also created.
23
+ */
24
+ export declare function createLocalScreenTracks(options?: ScreenShareCaptureOptions): Promise<Array<LocalTrack>>;
25
+ //# sourceMappingURL=create.d.ts.map
@@ -1,41 +1,41 @@
1
- import LocalTrack from './LocalTrack';
2
- import type { VideoCaptureOptions } from './options';
3
- type FacingMode = NonNullable<VideoCaptureOptions['facingMode']>;
4
- type FacingModeFromLocalTrackOptions = {
5
- /**
6
- * If no facing mode can be determined, this value will be used.
7
- * @defaultValue 'user'
8
- */
9
- defaultFacingMode?: FacingMode;
10
- };
11
- type FacingModeFromLocalTrackReturnValue = {
12
- /**
13
- * The (probable) facingMode of the track.
14
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints/facingMode | MDN docs on facingMode}
15
- */
16
- facingMode: FacingMode;
17
- /**
18
- * The confidence that the returned facingMode is correct.
19
- */
20
- confidence: 'high' | 'medium' | 'low';
21
- };
22
- /**
23
- * Try to analyze the local track to determine the facing mode of a track.
24
- *
25
- * @remarks
26
- * There is no property supported by all browsers to detect whether a video track originated from a user- or environment-facing camera device.
27
- * For this reason, we use the `facingMode` property when available, but will fall back on a string-based analysis of the device label to determine the facing mode.
28
- * If both methods fail, the default facing mode will be used.
29
- *
30
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints/facingMode | MDN docs on facingMode}
31
- * @experimental
32
- */
33
- export declare function facingModeFromLocalTrack(localTrack: LocalTrack | MediaStreamTrack, options?: FacingModeFromLocalTrackOptions): FacingModeFromLocalTrackReturnValue;
34
- /**
35
- * Attempt to analyze the device label to determine the facing mode.
36
- *
37
- * @experimental
38
- */
39
- export declare function facingModeFromDeviceLabel(deviceLabel: string): FacingModeFromLocalTrackReturnValue | undefined;
40
- export {};
41
- //# sourceMappingURL=facingMode.d.ts.map
1
+ import LocalTrack from './LocalTrack';
2
+ import type { VideoCaptureOptions } from './options';
3
+ type FacingMode = NonNullable<VideoCaptureOptions['facingMode']>;
4
+ type FacingModeFromLocalTrackOptions = {
5
+ /**
6
+ * If no facing mode can be determined, this value will be used.
7
+ * @defaultValue 'user'
8
+ */
9
+ defaultFacingMode?: FacingMode;
10
+ };
11
+ type FacingModeFromLocalTrackReturnValue = {
12
+ /**
13
+ * The (probable) facingMode of the track.
14
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints/facingMode | MDN docs on facingMode}
15
+ */
16
+ facingMode: FacingMode;
17
+ /**
18
+ * The confidence that the returned facingMode is correct.
19
+ */
20
+ confidence: 'high' | 'medium' | 'low';
21
+ };
22
+ /**
23
+ * Try to analyze the local track to determine the facing mode of a track.
24
+ *
25
+ * @remarks
26
+ * There is no property supported by all browsers to detect whether a video track originated from a user- or environment-facing camera device.
27
+ * For this reason, we use the `facingMode` property when available, but will fall back on a string-based analysis of the device label to determine the facing mode.
28
+ * If both methods fail, the default facing mode will be used.
29
+ *
30
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints/facingMode | MDN docs on facingMode}
31
+ * @experimental
32
+ */
33
+ export declare function facingModeFromLocalTrack(localTrack: LocalTrack | MediaStreamTrack, options?: FacingModeFromLocalTrackOptions): FacingModeFromLocalTrackReturnValue;
34
+ /**
35
+ * Attempt to analyze the device label to determine the facing mode.
36
+ *
37
+ * @experimental
38
+ */
39
+ export declare function facingModeFromDeviceLabel(deviceLabel: string): FacingModeFromLocalTrackReturnValue | undefined;
40
+ export {};
41
+ //# sourceMappingURL=facingMode.d.ts.map