livekit-client 2.18.8 → 2.18.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/livekit-client.esm.mjs +26 -9
- package/dist/livekit-client.esm.mjs.map +1 -1
- package/dist/livekit-client.umd.js +1 -1
- package/dist/livekit-client.umd.js.map +1 -1
- package/dist/src/room/data-track/LocalDataTrack.d.ts +2 -1
- package/dist/src/room/data-track/LocalDataTrack.d.ts.map +1 -1
- package/dist/src/room/data-track/outgoing/OutgoingDataTrackManager.d.ts +2 -2
- package/dist/src/room/data-track/outgoing/OutgoingDataTrackManager.d.ts.map +1 -1
- package/dist/src/room/data-track/outgoing/types.d.ts +2 -1
- package/dist/src/room/data-track/outgoing/types.d.ts.map +1 -1
- package/dist/ts4.2/room/data-track/LocalDataTrack.d.ts +2 -1
- package/dist/ts4.2/room/data-track/outgoing/OutgoingDataTrackManager.d.ts +2 -2
- package/dist/ts4.2/room/data-track/outgoing/types.d.ts +2 -1
- package/package.json +1 -1
- package/src/room/data-track/LocalDataTrack.ts +15 -7
- package/src/room/data-track/outgoing/OutgoingDataTrackManager.test.ts +350 -198
- package/src/room/data-track/outgoing/OutgoingDataTrackManager.ts +9 -3
- package/src/room/data-track/outgoing/types.ts +1 -1
|
@@ -18,10 +18,11 @@ export default class LocalDataTrack implements ILocalTrack, IDataTrack {
|
|
|
18
18
|
protected log: StructuredLogger;
|
|
19
19
|
/** Resolves once the data track has sent all pending packets the rtc data channel buffer. */
|
|
20
20
|
protected flushedFuture: Future<void, never>;
|
|
21
|
+
protected isFlushed: boolean;
|
|
21
22
|
/** @internal */
|
|
22
23
|
constructor(options: DataTrackOptions, manager: OutgoingDataTrackManager);
|
|
23
24
|
private handleManagerReset;
|
|
24
|
-
private
|
|
25
|
+
private handleManagerPacketsFlushedChange;
|
|
25
26
|
/** @internal */
|
|
26
27
|
static withExplicitHandle(options: DataTrackOptions, manager: OutgoingDataTrackManager, handle: DataTrackHandle): LocalDataTrack;
|
|
27
28
|
/** Metrics about the data track publication. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalDataTrack.d.ts","sourceRoot":"","sources":["../../../../src/room/data-track/LocalDataTrack.ts"],"names":[],"mappings":"AAAA,OAAY,EAAe,KAAK,gBAAgB,EAAa,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,SAAS,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,wBAAwB,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"LocalDataTrack.d.ts","sourceRoot":"","sources":["../../../../src/room/data-track/LocalDataTrack.ts"],"names":[],"mappings":"AAAA,OAAY,EAAe,KAAK,gBAAgB,EAAa,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,SAAS,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,wBAAwB,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAA6B,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,WAAW,EAEjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,CAAC,OAAO,OAAO,cAAe,YAAW,WAAW,EAAE,UAAU;IACpE,QAAQ,CAAC,WAAW,SAAe;IAEnC,QAAQ,CAAC,OAAO,QAAQ;IAExB,QAAQ,CAAC,UAAU,SAAmB;IAEtC,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAEpC,mFAAmF;IACnF,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAQ;IAEhD,SAAS,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAE5C,SAAS,CAAC,GAAG,EAAE,gBAAgB,CAAO;IAEtC,6FAA6F;IAC7F,SAAS,CAAC,aAAa,sBAA6B;IAEpD,SAAS,CAAC,SAAS,UAAQ;IAE3B,gBAAgB;gBACJ,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,wBAAwB;IAUxE,OAAO,CAAC,kBAAkB,CAQxB;IAEF,OAAO,CAAC,iCAAiC,CAMvC;IAEF,gBAAgB;IAChB,MAAM,CAAC,kBAAkB,CACvB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,wBAAwB,EACjC,MAAM,EAAE,eAAe;IAOzB,gDAAgD;IAChD,IAAI,IAAI,8BAOP;IAED,8FAA8F;IAC9F,SAAS,KAAK,UAAU,oEAEvB;IAED;;;SAGK;IACC,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW;IASlC,WAAW,IAAI,IAAI,IAAI;QAAE,IAAI,EAAE,aAAa,CAAA;KAAE;IAM9C;;;;;;OAMG;IACH,OAAO,CAAC,KAAK,EAAE,cAAc;IAgB7B;;;;;;;;;;;;;;;;;;;;;;;;QAwBI;IACE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;;SAGK;IACC,SAAS;CAehB"}
|
|
@@ -7,7 +7,7 @@ import { DataTrackHandle } from '../handle';
|
|
|
7
7
|
import { type DataTrackInfo } from '../types';
|
|
8
8
|
import { DataTrackPublishError, DataTrackPushFrameError, DataTrackPushFrameErrorReason } from './errors';
|
|
9
9
|
import DataTrackOutgoingPipeline from './pipeline';
|
|
10
|
-
import { type DataTrackOptions, type EventPacketAvailable, type
|
|
10
|
+
import { type DataTrackOptions, type EventPacketAvailable, type EventPacketsFlushedChange, type EventSfuPublishRequest, type EventSfuUnpublishRequest, type EventTrackPublished, type EventTrackUnpublished, type SfuPublishResponseResult } from './types';
|
|
11
11
|
export type PendingDescriptor = {
|
|
12
12
|
type: 'pending';
|
|
13
13
|
/** Resolves when the descriptor is fully published. */
|
|
@@ -38,7 +38,7 @@ export type DataTrackOutgoingManagerCallbacks = {
|
|
|
38
38
|
/** A {@link LocalDataTrack} has been unpublished */
|
|
39
39
|
trackUnpublished: (event: EventTrackUnpublished) => void;
|
|
40
40
|
/** A {@link LocalDataTrack} has had all of its in flight packets sent via the rtc data channel. */
|
|
41
|
-
|
|
41
|
+
packetsFlushedChange: (event: EventPacketsFlushedChange) => void;
|
|
42
42
|
/** The manager has been reset and all state has been cleared in preparation for the next room
|
|
43
43
|
* connection. */
|
|
44
44
|
reset: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutgoingDataTrackManager.d.ts","sourceRoot":"","sources":["../../../../../src/room/data-track/outgoing/OutgoingDataTrackManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAGjE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,eAAe,EAA4B,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,6BAA6B,EAC9B,MAAM,UAAU,CAAC;AAClB,OAAO,yBAAyB,MAAM,YAAY,CAAC;AACnD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,
|
|
1
|
+
{"version":3,"file":"OutgoingDataTrackManager.d.ts","sourceRoot":"","sources":["../../../../../src/room/data-track/outgoing/OutgoingDataTrackManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,8 @@ export type EventTrackUnpublished = {
|
|
|
40
40
|
sid: DataTrackSid;
|
|
41
41
|
};
|
|
42
42
|
/** A track has had all of its in flight packets sent via the rtc data channel. */
|
|
43
|
-
export type
|
|
43
|
+
export type EventPacketsFlushedChange = {
|
|
44
44
|
handle: DataTrackHandle;
|
|
45
|
+
isFlushed: boolean;
|
|
45
46
|
};
|
|
46
47
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/room/data-track/outgoing/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAExF,2CAA2C;AAC3C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,0FAA0F;AAC1F,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,aAAa,CAAA;CAAE,GACnC;IACE,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EACD,qBAAqB,CAAC,2BAA2B,CAAC,UAAU,CAAC,GAC7D,qBAAqB,CAAC,2BAA2B,CAAC,aAAa,CAAC,GAChE,qBAAqB,CAAC,2BAA2B,CAAC,WAAW,CAAC,GAC9D,qBAAqB,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC;CACrE,CAAC;AAEN,kDAAkD;AAClD,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,oDAAoD;AACpD,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,kEAAkE;AAClE,MAAM,MAAM,oBAAoB,GAAG;IACjC,mFAAmF;IACnF,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF;oBACoB;AACpB,MAAM,MAAM,mBAAmB,GAAG;IAAE,KAAK,EAAE,cAAc,CAAA;CAAE,CAAC;AAE5D,+FAA+F;AAC/F,MAAM,MAAM,qBAAqB,GAAG;IAAE,GAAG,EAAE,YAAY,CAAA;CAAE,CAAC;AAE1D,kFAAkF;AAClF,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/room/data-track/outgoing/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAExF,2CAA2C;AAC3C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,0FAA0F;AAC1F,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,aAAa,CAAA;CAAE,GACnC;IACE,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EACD,qBAAqB,CAAC,2BAA2B,CAAC,UAAU,CAAC,GAC7D,qBAAqB,CAAC,2BAA2B,CAAC,aAAa,CAAC,GAChE,qBAAqB,CAAC,2BAA2B,CAAC,WAAW,CAAC,GAC9D,qBAAqB,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC;CACrE,CAAC;AAEN,kDAAkD;AAClD,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,oDAAoD;AACpD,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,kEAAkE;AAClE,MAAM,MAAM,oBAAoB,GAAG;IACjC,mFAAmF;IACnF,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF;oBACoB;AACpB,MAAM,MAAM,mBAAmB,GAAG;IAAE,KAAK,EAAE,cAAc,CAAA;CAAE,CAAC;AAE5D,+FAA+F;AAC/F,MAAM,MAAM,qBAAqB,GAAG;IAAE,GAAG,EAAE,YAAY,CAAA;CAAE,CAAC;AAE1D,kFAAkF;AAClF,MAAM,MAAM,yBAAyB,GAAG;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC"}
|
|
@@ -18,10 +18,11 @@ export default class LocalDataTrack implements ILocalTrack, IDataTrack {
|
|
|
18
18
|
protected log: StructuredLogger;
|
|
19
19
|
/** Resolves once the data track has sent all pending packets the rtc data channel buffer. */
|
|
20
20
|
protected flushedFuture: Future<void, never>;
|
|
21
|
+
protected isFlushed: boolean;
|
|
21
22
|
/** @internal */
|
|
22
23
|
constructor(options: DataTrackOptions, manager: OutgoingDataTrackManager);
|
|
23
24
|
private handleManagerReset;
|
|
24
|
-
private
|
|
25
|
+
private handleManagerPacketsFlushedChange;
|
|
25
26
|
/** @internal */
|
|
26
27
|
static withExplicitHandle(options: DataTrackOptions, manager: OutgoingDataTrackManager, handle: DataTrackHandle): LocalDataTrack;
|
|
27
28
|
/** Metrics about the data track publication. */
|
|
@@ -7,7 +7,7 @@ import { DataTrackHandle } from '../handle';
|
|
|
7
7
|
import type { DataTrackInfo } from '../types';
|
|
8
8
|
import { DataTrackPublishError, DataTrackPushFrameError, DataTrackPushFrameErrorReason } from './errors';
|
|
9
9
|
import DataTrackOutgoingPipeline from './pipeline';
|
|
10
|
-
import type { DataTrackOptions, EventPacketAvailable,
|
|
10
|
+
import type { DataTrackOptions, EventPacketAvailable, EventPacketsFlushedChange, EventSfuPublishRequest, EventSfuUnpublishRequest, EventTrackPublished, EventTrackUnpublished, SfuPublishResponseResult } from './types';
|
|
11
11
|
export type PendingDescriptor = {
|
|
12
12
|
type: 'pending';
|
|
13
13
|
/** Resolves when the descriptor is fully published. */
|
|
@@ -38,7 +38,7 @@ export type DataTrackOutgoingManagerCallbacks = {
|
|
|
38
38
|
/** A {@link LocalDataTrack} has been unpublished */
|
|
39
39
|
trackUnpublished: (event: EventTrackUnpublished) => void;
|
|
40
40
|
/** A {@link LocalDataTrack} has had all of its in flight packets sent via the rtc data channel. */
|
|
41
|
-
|
|
41
|
+
packetsFlushedChange: (event: EventPacketsFlushedChange) => void;
|
|
42
42
|
/** The manager has been reset and all state has been cleared in preparation for the next room
|
|
43
43
|
* connection. */
|
|
44
44
|
reset: () => void;
|
|
@@ -40,7 +40,8 @@ export type EventTrackUnpublished = {
|
|
|
40
40
|
sid: DataTrackSid;
|
|
41
41
|
};
|
|
42
42
|
/** A track has had all of its in flight packets sent via the rtc data channel. */
|
|
43
|
-
export type
|
|
43
|
+
export type EventPacketsFlushedChange = {
|
|
44
44
|
handle: DataTrackHandle;
|
|
45
|
+
isFlushed: boolean;
|
|
45
46
|
};
|
|
46
47
|
//# sourceMappingURL=types.d.ts.map
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@ import { type DataTrackFrame, DataTrackFrameInternal } from './frame';
|
|
|
4
4
|
import type { DataTrackHandle } from './handle';
|
|
5
5
|
import type OutgoingDataTrackManager from './outgoing/OutgoingDataTrackManager';
|
|
6
6
|
import { DataTrackPushFrameError } from './outgoing/errors';
|
|
7
|
-
import type { DataTrackOptions } from './outgoing/types';
|
|
7
|
+
import type { DataTrackOptions, EventPacketsFlushedChange } from './outgoing/types';
|
|
8
8
|
import {
|
|
9
9
|
DataTrackSymbol,
|
|
10
10
|
type IDataTrack,
|
|
@@ -32,6 +32,8 @@ export default class LocalDataTrack implements ILocalTrack, IDataTrack {
|
|
|
32
32
|
/** Resolves once the data track has sent all pending packets the rtc data channel buffer. */
|
|
33
33
|
protected flushedFuture = new Future<void, never>();
|
|
34
34
|
|
|
35
|
+
protected isFlushed = true;
|
|
36
|
+
|
|
35
37
|
/** @internal */
|
|
36
38
|
constructor(options: DataTrackOptions, manager: OutgoingDataTrackManager) {
|
|
37
39
|
this.options = options;
|
|
@@ -39,7 +41,7 @@ export default class LocalDataTrack implements ILocalTrack, IDataTrack {
|
|
|
39
41
|
|
|
40
42
|
this.log = getLogger(LoggerNames.DataTracks);
|
|
41
43
|
|
|
42
|
-
this.manager.on('
|
|
44
|
+
this.manager.on('packetsFlushedChange', this.handleManagerPacketsFlushedChange);
|
|
43
45
|
this.manager.on('reset', this.handleManagerReset);
|
|
44
46
|
}
|
|
45
47
|
|
|
@@ -47,15 +49,18 @@ export default class LocalDataTrack implements ILocalTrack, IDataTrack {
|
|
|
47
49
|
// When the associated manager resets, mark any in flight flushes as complete
|
|
48
50
|
// There's nothing actionable a user can do to get these to complete so no
|
|
49
51
|
// error is being thrown.
|
|
50
|
-
this.
|
|
52
|
+
this.flushedFuture.resolve?.();
|
|
51
53
|
|
|
52
|
-
this.manager.off('
|
|
54
|
+
this.manager.off('packetsFlushedChange', this.handleManagerPacketsFlushedChange);
|
|
53
55
|
this.manager.off('reset', this.handleManagerReset);
|
|
54
56
|
};
|
|
55
57
|
|
|
56
|
-
private
|
|
57
|
-
this.
|
|
58
|
-
|
|
58
|
+
private handleManagerPacketsFlushedChange = (event: EventPacketsFlushedChange) => {
|
|
59
|
+
this.isFlushed = event.isFlushed;
|
|
60
|
+
if (event.isFlushed) {
|
|
61
|
+
this.flushedFuture.resolve?.();
|
|
62
|
+
this.flushedFuture = new Future();
|
|
63
|
+
}
|
|
59
64
|
};
|
|
60
65
|
|
|
61
66
|
/** @internal */
|
|
@@ -152,6 +157,9 @@ export default class LocalDataTrack implements ILocalTrack, IDataTrack {
|
|
|
152
157
|
* ```
|
|
153
158
|
**/
|
|
154
159
|
async flush(): Promise<void> {
|
|
160
|
+
if (this.isFlushed) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
155
163
|
return this.flushedFuture.promise;
|
|
156
164
|
}
|
|
157
165
|
|