livekit-client 2.15.4 → 2.15.5

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 (62) hide show
  1. package/dist/livekit-client.e2ee.worker.js +1 -1
  2. package/dist/livekit-client.e2ee.worker.js.map +1 -1
  3. package/dist/livekit-client.e2ee.worker.mjs +329 -124
  4. package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
  5. package/dist/livekit-client.esm.mjs +834 -541
  6. package/dist/livekit-client.esm.mjs.map +1 -1
  7. package/dist/livekit-client.umd.js +1 -1
  8. package/dist/livekit-client.umd.js.map +1 -1
  9. package/dist/src/e2ee/worker/FrameCryptor.d.ts +0 -46
  10. package/dist/src/e2ee/worker/FrameCryptor.d.ts.map +1 -1
  11. package/dist/src/e2ee/worker/naluUtils.d.ts +27 -0
  12. package/dist/src/e2ee/worker/naluUtils.d.ts.map +1 -0
  13. package/dist/src/index.d.ts +2 -2
  14. package/dist/src/index.d.ts.map +1 -1
  15. package/dist/src/room/Room.d.ts +6 -10
  16. package/dist/src/room/Room.d.ts.map +1 -1
  17. package/dist/src/room/data-stream/incoming/IncomingDataStreamManager.d.ts +20 -0
  18. package/dist/src/room/data-stream/incoming/IncomingDataStreamManager.d.ts.map +1 -0
  19. package/dist/src/room/{StreamReader.d.ts → data-stream/incoming/StreamReader.d.ts} +32 -6
  20. package/dist/src/room/data-stream/incoming/StreamReader.d.ts.map +1 -0
  21. package/dist/src/room/data-stream/outgoing/OutgoingDataStreamManager.d.ts +27 -0
  22. package/dist/src/room/data-stream/outgoing/OutgoingDataStreamManager.d.ts.map +1 -0
  23. package/dist/src/room/{StreamWriter.d.ts → data-stream/outgoing/StreamWriter.d.ts} +1 -1
  24. package/dist/src/room/data-stream/outgoing/StreamWriter.d.ts.map +1 -0
  25. package/dist/src/room/errors.d.ts +13 -0
  26. package/dist/src/room/errors.d.ts.map +1 -1
  27. package/dist/src/room/participant/LocalParticipant.d.ts +32 -19
  28. package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
  29. package/dist/src/room/track/LocalTrack.d.ts +7 -2
  30. package/dist/src/room/track/LocalTrack.d.ts.map +1 -1
  31. package/dist/src/room/types.d.ts +17 -1
  32. package/dist/src/room/types.d.ts.map +1 -1
  33. package/dist/ts4.2/src/e2ee/worker/FrameCryptor.d.ts +0 -46
  34. package/dist/ts4.2/src/e2ee/worker/naluUtils.d.ts +27 -0
  35. package/dist/ts4.2/src/index.d.ts +2 -2
  36. package/dist/ts4.2/src/room/Room.d.ts +6 -10
  37. package/dist/ts4.2/src/room/data-stream/incoming/IncomingDataStreamManager.d.ts +20 -0
  38. package/dist/ts4.2/src/room/{StreamReader.d.ts → data-stream/incoming/StreamReader.d.ts} +32 -6
  39. package/dist/ts4.2/src/room/data-stream/outgoing/OutgoingDataStreamManager.d.ts +27 -0
  40. package/dist/ts4.2/src/room/{StreamWriter.d.ts → data-stream/outgoing/StreamWriter.d.ts} +1 -1
  41. package/dist/ts4.2/src/room/errors.d.ts +13 -0
  42. package/dist/ts4.2/src/room/participant/LocalParticipant.d.ts +32 -19
  43. package/dist/ts4.2/src/room/track/LocalTrack.d.ts +7 -2
  44. package/dist/ts4.2/src/room/types.d.ts +17 -1
  45. package/package.json +1 -1
  46. package/src/e2ee/worker/FrameCryptor.ts +48 -139
  47. package/src/e2ee/worker/naluUtils.ts +328 -0
  48. package/src/index.ts +2 -2
  49. package/src/room/Room.ts +93 -206
  50. package/src/room/data-stream/incoming/IncomingDataStreamManager.ts +247 -0
  51. package/src/room/data-stream/incoming/StreamReader.ts +317 -0
  52. package/src/room/data-stream/outgoing/OutgoingDataStreamManager.ts +316 -0
  53. package/src/room/{StreamWriter.ts → data-stream/outgoing/StreamWriter.ts} +1 -1
  54. package/src/room/errors.ts +34 -0
  55. package/src/room/participant/LocalParticipant.ts +39 -295
  56. package/src/room/track/LocalAudioTrack.ts +2 -2
  57. package/src/room/track/LocalTrack.ts +65 -48
  58. package/src/room/types.ts +22 -1
  59. package/src/room/utils.ts +2 -2
  60. package/dist/src/room/StreamReader.d.ts.map +0 -1
  61. package/dist/src/room/StreamWriter.d.ts.map +0 -1
  62. package/src/room/StreamReader.ts +0 -170
@@ -1,170 +0,0 @@
1
- import type { DataStream_Chunk } from '@livekit/protocol';
2
- import type { BaseStreamInfo, ByteStreamInfo, TextStreamInfo } from './types';
3
- import { bigIntToNumber } from './utils';
4
-
5
- abstract class BaseStreamReader<T extends BaseStreamInfo> {
6
- protected reader: ReadableStream<DataStream_Chunk>;
7
-
8
- protected totalByteSize?: number;
9
-
10
- protected _info: T;
11
-
12
- protected bytesReceived: number;
13
-
14
- get info() {
15
- return this._info;
16
- }
17
-
18
- constructor(info: T, stream: ReadableStream<DataStream_Chunk>, totalByteSize?: number) {
19
- this.reader = stream;
20
- this.totalByteSize = totalByteSize;
21
- this._info = info;
22
- this.bytesReceived = 0;
23
- }
24
-
25
- protected abstract handleChunkReceived(chunk: DataStream_Chunk): void;
26
-
27
- onProgress?: (progress: number | undefined) => void;
28
-
29
- abstract readAll(): Promise<string | Array<Uint8Array>>;
30
- }
31
-
32
- export class ByteStreamReader extends BaseStreamReader<ByteStreamInfo> {
33
- protected handleChunkReceived(chunk: DataStream_Chunk) {
34
- this.bytesReceived += chunk.content.byteLength;
35
- const currentProgress = this.totalByteSize
36
- ? this.bytesReceived / this.totalByteSize
37
- : undefined;
38
- this.onProgress?.(currentProgress);
39
- }
40
-
41
- onProgress?: (progress: number | undefined) => void;
42
-
43
- [Symbol.asyncIterator]() {
44
- const reader = this.reader.getReader();
45
-
46
- return {
47
- next: async (): Promise<IteratorResult<Uint8Array>> => {
48
- try {
49
- const { done, value } = await reader.read();
50
- if (done) {
51
- return { done: true, value: undefined as any };
52
- } else {
53
- this.handleChunkReceived(value);
54
- return { done: false, value: value.content };
55
- }
56
- } catch (error) {
57
- // TODO handle errors
58
- return { done: true, value: undefined };
59
- }
60
- },
61
-
62
- async return(): Promise<IteratorResult<Uint8Array>> {
63
- reader.releaseLock();
64
- return { done: true, value: undefined };
65
- },
66
- };
67
- }
68
-
69
- async readAll(): Promise<Array<Uint8Array>> {
70
- let chunks: Set<Uint8Array> = new Set();
71
- for await (const chunk of this) {
72
- chunks.add(chunk);
73
- }
74
- return Array.from(chunks);
75
- }
76
- }
77
-
78
- /**
79
- * A class to read chunks from a ReadableStream and provide them in a structured format.
80
- */
81
- export class TextStreamReader extends BaseStreamReader<TextStreamInfo> {
82
- private receivedChunks: Map<number, DataStream_Chunk>;
83
-
84
- /**
85
- * A TextStreamReader instance can be used as an AsyncIterator that returns the entire string
86
- * that has been received up to the current point in time.
87
- */
88
- constructor(
89
- info: TextStreamInfo,
90
- stream: ReadableStream<DataStream_Chunk>,
91
- totalChunkCount?: number,
92
- ) {
93
- super(info, stream, totalChunkCount);
94
- this.receivedChunks = new Map();
95
- }
96
-
97
- protected handleChunkReceived(chunk: DataStream_Chunk) {
98
- const index = bigIntToNumber(chunk.chunkIndex);
99
- const previousChunkAtIndex = this.receivedChunks.get(index);
100
- if (previousChunkAtIndex && previousChunkAtIndex.version > chunk.version) {
101
- // we have a newer version already, dropping the old one
102
- return;
103
- }
104
- this.receivedChunks.set(index, chunk);
105
- this.bytesReceived += chunk.content.byteLength;
106
- const currentProgress = this.totalByteSize
107
- ? this.bytesReceived / this.totalByteSize
108
- : undefined;
109
- this.onProgress?.(currentProgress);
110
- }
111
-
112
- /**
113
- * @param progress - progress of the stream between 0 and 1. Undefined for streams of unknown size
114
- */
115
- onProgress?: (progress: number | undefined) => void;
116
-
117
- /**
118
- * Async iterator implementation to allow usage of `for await...of` syntax.
119
- * Yields structured chunks from the stream.
120
- *
121
- */
122
- [Symbol.asyncIterator]() {
123
- const reader = this.reader.getReader();
124
- const decoder = new TextDecoder();
125
-
126
- return {
127
- next: async (): Promise<IteratorResult<string>> => {
128
- try {
129
- const { done, value } = await reader.read();
130
- if (done) {
131
- return { done: true, value: undefined };
132
- } else {
133
- this.handleChunkReceived(value);
134
-
135
- return {
136
- done: false,
137
- value: decoder.decode(value.content),
138
- };
139
- }
140
- } catch (error) {
141
- // TODO handle errors
142
- return { done: true, value: undefined };
143
- }
144
- },
145
-
146
- async return(): Promise<IteratorResult<string>> {
147
- reader.releaseLock();
148
- return { done: true, value: undefined };
149
- },
150
- };
151
- }
152
-
153
- async readAll(): Promise<string> {
154
- let finalString: string = '';
155
- for await (const chunk of this) {
156
- finalString += chunk;
157
- }
158
- return finalString;
159
- }
160
- }
161
-
162
- export type ByteStreamHandler = (
163
- reader: ByteStreamReader,
164
- participantInfo: { identity: string },
165
- ) => void;
166
-
167
- export type TextStreamHandler = (
168
- reader: TextStreamReader,
169
- participantInfo: { identity: string },
170
- ) => void;