livekit-client 2.3.0 → 2.3.2
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/livekit-client.e2ee.worker.js +1 -1
- package/dist/livekit-client.e2ee.worker.js.map +1 -1
- package/dist/livekit-client.e2ee.worker.mjs +6 -1
- package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
- package/dist/livekit-client.esm.mjs +72 -136
- 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/connectionHelper/ConnectionCheck.d.ts.map +1 -1
- package/dist/src/connectionHelper/checks/Checker.d.ts.map +1 -1
- package/dist/src/e2ee/E2eeManager.d.ts.map +1 -1
- package/dist/src/e2ee/KeyProvider.d.ts.map +1 -1
- package/dist/src/e2ee/worker/FrameCryptor.d.ts.map +1 -1
- package/dist/src/e2ee/worker/ParticipantKeyHandler.d.ts.map +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/logger.d.ts.map +1 -1
- package/dist/src/room/PCTransport.d.ts +1 -2
- package/dist/src/room/PCTransport.d.ts.map +1 -1
- package/dist/src/room/RTCEngine.d.ts.map +1 -1
- package/dist/src/room/Room.d.ts.map +1 -1
- package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
- package/dist/src/room/participant/Participant.d.ts.map +1 -1
- package/dist/src/room/track/RemoteTrackPublication.d.ts.map +1 -1
- package/dist/src/room/track/Track.d.ts.map +1 -1
- package/dist/src/room/track/TrackPublication.d.ts.map +1 -1
- package/dist/ts4.2/src/index.d.ts +2 -1
- package/dist/ts4.2/src/room/PCTransport.d.ts +1 -2
- package/package.json +12 -12
- package/src/e2ee/worker/FrameCryptor.ts +3 -1
- package/src/e2ee/worker/e2ee.worker.ts +5 -1
- package/src/index.ts +10 -0
- package/src/room/Room.ts +7 -3
- package/src/room/participant/LocalParticipant.ts +10 -0
- package/src/room/track/Track.ts +1 -1
@@ -3782,6 +3782,15 @@ const ParticipantInfo = /*@__PURE__*/proto3.makeMessageType("livekit.Participant
|
|
3782
3782
|
name: "kind",
|
3783
3783
|
kind: "enum",
|
3784
3784
|
T: proto3.getEnumType(ParticipantInfo_Kind)
|
3785
|
+
}, {
|
3786
|
+
no: 15,
|
3787
|
+
name: "attributes",
|
3788
|
+
kind: "map",
|
3789
|
+
K: 9 /* ScalarType.STRING */,
|
3790
|
+
V: {
|
3791
|
+
kind: "scalar",
|
3792
|
+
T: 9 /* ScalarType.STRING */
|
3793
|
+
}
|
3785
3794
|
}]);
|
3786
3795
|
|
3787
3796
|
/**
|
@@ -4161,7 +4170,7 @@ const SipDTMF = /*@__PURE__*/proto3.makeMessageType("livekit.SipDTMF", () => [{
|
|
4161
4170
|
*/
|
4162
4171
|
const Transcription = /*@__PURE__*/proto3.makeMessageType("livekit.Transcription", () => [{
|
4163
4172
|
no: 2,
|
4164
|
-
name: "
|
4173
|
+
name: "transcribed_participant_identity",
|
4165
4174
|
kind: "scalar",
|
4166
4175
|
T: 9 /* ScalarType.STRING */
|
4167
4176
|
}, {
|
@@ -5171,6 +5180,15 @@ const UpdateParticipantMetadata = /*@__PURE__*/proto3.makeMessageType("livekit.U
|
|
5171
5180
|
name: "name",
|
5172
5181
|
kind: "scalar",
|
5173
5182
|
T: 9 /* ScalarType.STRING */
|
5183
|
+
}, {
|
5184
|
+
no: 3,
|
5185
|
+
name: "attributes",
|
5186
|
+
kind: "map",
|
5187
|
+
K: 9 /* ScalarType.STRING */,
|
5188
|
+
V: {
|
5189
|
+
kind: "scalar",
|
5190
|
+
T: 9 /* ScalarType.STRING */
|
5191
|
+
}
|
5174
5192
|
}]);
|
5175
5193
|
|
5176
5194
|
/**
|
@@ -6571,6 +6589,19 @@ function detectBrowser(window) {
|
|
6571
6589
|
const {
|
6572
6590
|
navigator
|
6573
6591
|
} = window;
|
6592
|
+
|
6593
|
+
// Prefer navigator.userAgentData.
|
6594
|
+
if (navigator.userAgentData && navigator.userAgentData.brands) {
|
6595
|
+
const chromium = navigator.userAgentData.brands.find(brand => {
|
6596
|
+
return brand.brand === 'Chromium';
|
6597
|
+
});
|
6598
|
+
if (chromium) {
|
6599
|
+
return {
|
6600
|
+
browser: 'chrome',
|
6601
|
+
version: parseInt(chromium.version, 10)
|
6602
|
+
};
|
6603
|
+
}
|
6604
|
+
}
|
6574
6605
|
if (navigator.mozGetUserMedia) {
|
6575
6606
|
// Firefox.
|
6576
6607
|
result.browser = 'firefox';
|
@@ -6846,51 +6877,6 @@ function shimGetUserMedia$2(window, browserDetails) {
|
|
6846
6877
|
}
|
6847
6878
|
}
|
6848
6879
|
|
6849
|
-
/*
|
6850
|
-
* Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.
|
6851
|
-
*
|
6852
|
-
* Use of this source code is governed by a BSD-style license
|
6853
|
-
* that can be found in the LICENSE file in the root of the source
|
6854
|
-
* tree.
|
6855
|
-
*/
|
6856
|
-
/* eslint-env node */
|
6857
|
-
|
6858
|
-
function shimGetDisplayMedia$1(window, getSourceId) {
|
6859
|
-
if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) {
|
6860
|
-
return;
|
6861
|
-
}
|
6862
|
-
if (!window.navigator.mediaDevices) {
|
6863
|
-
return;
|
6864
|
-
}
|
6865
|
-
// getSourceId is a function that returns a promise resolving with
|
6866
|
-
// the sourceId of the screen/window/tab to be shared.
|
6867
|
-
if (typeof getSourceId !== 'function') {
|
6868
|
-
console.error('shimGetDisplayMedia: getSourceId argument is not ' + 'a function');
|
6869
|
-
return;
|
6870
|
-
}
|
6871
|
-
window.navigator.mediaDevices.getDisplayMedia = function getDisplayMedia(constraints) {
|
6872
|
-
return getSourceId(constraints).then(sourceId => {
|
6873
|
-
const widthSpecified = constraints.video && constraints.video.width;
|
6874
|
-
const heightSpecified = constraints.video && constraints.video.height;
|
6875
|
-
const frameRateSpecified = constraints.video && constraints.video.frameRate;
|
6876
|
-
constraints.video = {
|
6877
|
-
mandatory: {
|
6878
|
-
chromeMediaSource: 'desktop',
|
6879
|
-
chromeMediaSourceId: sourceId,
|
6880
|
-
maxFrameRate: frameRateSpecified || 3
|
6881
|
-
}
|
6882
|
-
};
|
6883
|
-
if (widthSpecified) {
|
6884
|
-
constraints.video.mandatory.maxWidth = widthSpecified;
|
6885
|
-
}
|
6886
|
-
if (heightSpecified) {
|
6887
|
-
constraints.video.mandatory.maxHeight = heightSpecified;
|
6888
|
-
}
|
6889
|
-
return window.navigator.mediaDevices.getUserMedia(constraints);
|
6890
|
-
});
|
6891
|
-
};
|
6892
|
-
}
|
6893
|
-
|
6894
6880
|
/*
|
6895
6881
|
* Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
|
6896
6882
|
*
|
@@ -7065,64 +7051,6 @@ function shimGetSendersWithDtmf(window) {
|
|
7065
7051
|
});
|
7066
7052
|
}
|
7067
7053
|
}
|
7068
|
-
function shimGetStats(window) {
|
7069
|
-
if (!window.RTCPeerConnection) {
|
7070
|
-
return;
|
7071
|
-
}
|
7072
|
-
const origGetStats = window.RTCPeerConnection.prototype.getStats;
|
7073
|
-
window.RTCPeerConnection.prototype.getStats = function getStats() {
|
7074
|
-
const [selector, onSucc, onErr] = arguments;
|
7075
|
-
|
7076
|
-
// If selector is a function then we are in the old style stats so just
|
7077
|
-
// pass back the original getStats format to avoid breaking old users.
|
7078
|
-
if (arguments.length > 0 && typeof selector === 'function') {
|
7079
|
-
return origGetStats.apply(this, arguments);
|
7080
|
-
}
|
7081
|
-
|
7082
|
-
// When spec-style getStats is supported, return those when called with
|
7083
|
-
// either no arguments or the selector argument is null.
|
7084
|
-
if (origGetStats.length === 0 && (arguments.length === 0 || typeof selector !== 'function')) {
|
7085
|
-
return origGetStats.apply(this, []);
|
7086
|
-
}
|
7087
|
-
const fixChromeStats_ = function (response) {
|
7088
|
-
const standardReport = {};
|
7089
|
-
const reports = response.result();
|
7090
|
-
reports.forEach(report => {
|
7091
|
-
const standardStats = {
|
7092
|
-
id: report.id,
|
7093
|
-
timestamp: report.timestamp,
|
7094
|
-
type: {
|
7095
|
-
localcandidate: 'local-candidate',
|
7096
|
-
remotecandidate: 'remote-candidate'
|
7097
|
-
}[report.type] || report.type
|
7098
|
-
};
|
7099
|
-
report.names().forEach(name => {
|
7100
|
-
standardStats[name] = report.stat(name);
|
7101
|
-
});
|
7102
|
-
standardReport[standardStats.id] = standardStats;
|
7103
|
-
});
|
7104
|
-
return standardReport;
|
7105
|
-
};
|
7106
|
-
|
7107
|
-
// shim getStats with maplike support
|
7108
|
-
const makeMapStats = function (stats) {
|
7109
|
-
return new Map(Object.keys(stats).map(key => [key, stats[key]]));
|
7110
|
-
};
|
7111
|
-
if (arguments.length >= 2) {
|
7112
|
-
const successCallbackWrapper_ = function (response) {
|
7113
|
-
onSucc(makeMapStats(fixChromeStats_(response)));
|
7114
|
-
};
|
7115
|
-
return origGetStats.apply(this, [successCallbackWrapper_, selector]);
|
7116
|
-
}
|
7117
|
-
|
7118
|
-
// promise-support
|
7119
|
-
return new Promise((resolve, reject) => {
|
7120
|
-
origGetStats.apply(this, [function (response) {
|
7121
|
-
resolve(makeMapStats(fixChromeStats_(response)));
|
7122
|
-
}, reject]);
|
7123
|
-
}).then(onSucc, onErr);
|
7124
|
-
};
|
7125
|
-
}
|
7126
7054
|
function shimSenderReceiverGetStats(window) {
|
7127
7055
|
if (!(typeof window === 'object' && window.RTCPeerConnection && window.RTCRtpSender && window.RTCRtpReceiver)) {
|
7128
7056
|
return;
|
@@ -7506,9 +7434,7 @@ var chromeShim = /*#__PURE__*/Object.freeze({
|
|
7506
7434
|
fixNegotiationNeeded: fixNegotiationNeeded,
|
7507
7435
|
shimAddTrackRemoveTrack: shimAddTrackRemoveTrack,
|
7508
7436
|
shimAddTrackRemoveTrackWithNative: shimAddTrackRemoveTrackWithNative,
|
7509
|
-
shimGetDisplayMedia: shimGetDisplayMedia$1,
|
7510
7437
|
shimGetSendersWithDtmf: shimGetSendersWithDtmf,
|
7511
|
-
shimGetStats: shimGetStats,
|
7512
7438
|
shimGetUserMedia: shimGetUserMedia$2,
|
7513
7439
|
shimMediaStream: shimMediaStream,
|
7514
7440
|
shimOnTrack: shimOnTrack$1,
|
@@ -9451,7 +9377,6 @@ function adapterFactory() {
|
|
9451
9377
|
shimOnTrack$1(window);
|
9452
9378
|
shimAddTrackRemoveTrack(window, browserDetails);
|
9453
9379
|
shimGetSendersWithDtmf(window);
|
9454
|
-
shimGetStats(window);
|
9455
9380
|
shimSenderReceiverGetStats(window);
|
9456
9381
|
fixNegotiationNeeded(window, browserDetails);
|
9457
9382
|
shimRTCIceCandidate(window);
|
@@ -10529,7 +10454,7 @@ function getOSVersion(ua) {
|
|
10529
10454
|
return ua.includes('mac os') ? getMatch(/\(.+?(\d+_\d+(:?_\d+)?)/, ua, 1).replace(/_/g, '.') : undefined;
|
10530
10455
|
}
|
10531
10456
|
|
10532
|
-
var version$1 = "2.3.
|
10457
|
+
var version$1 = "2.3.2";
|
10533
10458
|
|
10534
10459
|
const version = version$1;
|
10535
10460
|
const protocolVersion = 13;
|
@@ -10734,7 +10659,7 @@ class Track extends eventsExports.EventEmitter {
|
|
10734
10659
|
if (this.kind === Track.Kind.Video) {
|
10735
10660
|
elementType = 'video';
|
10736
10661
|
}
|
10737
|
-
if (this.attachedElements.length === 0 && Track.Kind.Video) {
|
10662
|
+
if (this.attachedElements.length === 0 && this.kind === Track.Kind.Video) {
|
10738
10663
|
this.addAppVisibilityListener();
|
10739
10664
|
}
|
10740
10665
|
if (!element) {
|
@@ -15998,7 +15923,7 @@ class RTCEngine extends eventsExports.EventEmitter {
|
|
15998
15923
|
this.maxJoinAttempts = 1;
|
15999
15924
|
this.shouldFailNext = false;
|
16000
15925
|
this.log = livekitLogger;
|
16001
|
-
this.handleDataChannel =
|
15926
|
+
this.handleDataChannel = _a => __awaiter(this, [_a], void 0, function (_ref) {
|
16002
15927
|
var _this = this;
|
16003
15928
|
let {
|
16004
15929
|
channel
|
@@ -16019,7 +15944,7 @@ class RTCEngine extends eventsExports.EventEmitter {
|
|
16019
15944
|
}();
|
16020
15945
|
});
|
16021
15946
|
this.handleDataMessage = message => __awaiter(this, void 0, void 0, function* () {
|
16022
|
-
var
|
15947
|
+
var _a, _b;
|
16023
15948
|
// make sure to respect incoming data message order by processing message events one after the other
|
16024
15949
|
const unlock = yield this.dataProcessLock.lock();
|
16025
15950
|
try {
|
@@ -16036,11 +15961,11 @@ class RTCEngine extends eventsExports.EventEmitter {
|
|
16036
15961
|
return;
|
16037
15962
|
}
|
16038
15963
|
const dp = DataPacket.fromBinary(new Uint8Array(buffer));
|
16039
|
-
if (((
|
15964
|
+
if (((_a = dp.value) === null || _a === void 0 ? void 0 : _a.case) === 'speaker') {
|
16040
15965
|
// dispatch speaker updates
|
16041
15966
|
this.emit(EngineEvent.ActiveSpeakersUpdate, dp.value.value.speakers);
|
16042
15967
|
} else {
|
16043
|
-
if (((
|
15968
|
+
if (((_b = dp.value) === null || _b === void 0 ? void 0 : _b.case) === 'user') {
|
16044
15969
|
// compatibility
|
16045
15970
|
applyUserDataCompat(dp, dp.value.value);
|
16046
15971
|
}
|
@@ -19038,6 +18963,13 @@ class LocalParticipant extends Participant {
|
|
19038
18963
|
unpublishTrack(track, stopOnUnpublish) {
|
19039
18964
|
return __awaiter(this, void 0, void 0, function* () {
|
19040
18965
|
var _a, _b;
|
18966
|
+
if (track instanceof LocalTrack) {
|
18967
|
+
const publishPromise = this.pendingPublishPromises.get(track);
|
18968
|
+
if (publishPromise) {
|
18969
|
+
this.log.info('awaiting publish promise before attempting to unpublish', Object.assign(Object.assign({}, this.logContext), getLogContextFromTrack(track)));
|
18970
|
+
yield publishPromise;
|
18971
|
+
}
|
18972
|
+
}
|
19041
18973
|
// look through all published tracks to find the right ones
|
19042
18974
|
const publication = this.getPublicationForTrack(track);
|
19043
18975
|
const pubLogContext = publication ? getLogContextFromTrack(publication) : undefined;
|
@@ -19796,7 +19728,7 @@ class Room extends eventsExports.EventEmitter {
|
|
19796
19728
|
this.bufferedEvents = [];
|
19797
19729
|
this.isResuming = false;
|
19798
19730
|
this.connect = (url, token, opts) => __awaiter(this, void 0, void 0, function* () {
|
19799
|
-
var
|
19731
|
+
var _a;
|
19800
19732
|
if (!isBrowserSupported()) {
|
19801
19733
|
if (isReactNative()) {
|
19802
19734
|
throw Error("WebRTC isn't detected, have you called registerGlobals?");
|
@@ -19817,7 +19749,7 @@ class Room extends eventsExports.EventEmitter {
|
|
19817
19749
|
return this.connectFuture.promise;
|
19818
19750
|
}
|
19819
19751
|
this.setAndEmitConnectionState(ConnectionState.Connecting);
|
19820
|
-
if (((
|
19752
|
+
if (((_a = this.regionUrlProvider) === null || _a === void 0 ? void 0 : _a.getServerUrl().toString()) !== url) {
|
19821
19753
|
this.regionUrl = undefined;
|
19822
19754
|
this.regionUrlProvider = undefined;
|
19823
19755
|
}
|
@@ -19837,7 +19769,7 @@ class Room extends eventsExports.EventEmitter {
|
|
19837
19769
|
});
|
19838
19770
|
}
|
19839
19771
|
const connectFn = (resolve, reject, regionUrl) => __awaiter(this, void 0, void 0, function* () {
|
19840
|
-
var
|
19772
|
+
var _a;
|
19841
19773
|
if (this.abortController) {
|
19842
19774
|
this.abortController.abort();
|
19843
19775
|
}
|
@@ -19854,7 +19786,7 @@ class Room extends eventsExports.EventEmitter {
|
|
19854
19786
|
if (this.regionUrlProvider && e instanceof ConnectionError && e.reason !== 3 /* ConnectionErrorReason.Cancelled */ && e.reason !== 0 /* ConnectionErrorReason.NotAllowed */) {
|
19855
19787
|
let nextUrl = null;
|
19856
19788
|
try {
|
19857
|
-
nextUrl = yield this.regionUrlProvider.getNextBestRegionUrl((
|
19789
|
+
nextUrl = yield this.regionUrlProvider.getNextBestRegionUrl((_a = this.abortController) === null || _a === void 0 ? void 0 : _a.signal);
|
19858
19790
|
} catch (error) {
|
19859
19791
|
if (error instanceof ConnectionError && (error.status === 401 || error.reason === 3 /* ConnectionErrorReason.Cancelled */)) {
|
19860
19792
|
this.handleDisconnect(this.options.stopLocalTrackOnUnpublish);
|
@@ -19886,7 +19818,7 @@ class Room extends eventsExports.EventEmitter {
|
|
19886
19818
|
return this.connectFuture.promise;
|
19887
19819
|
});
|
19888
19820
|
this.connectSignal = (url, token, engine, connectOptions, roomOptions, abortController) => __awaiter(this, void 0, void 0, function* () {
|
19889
|
-
var
|
19821
|
+
var _a, _b, _c;
|
19890
19822
|
const joinResponse = yield engine.join(url, token, {
|
19891
19823
|
autoSubscribe: connectOptions.autoSubscribe,
|
19892
19824
|
adaptiveStream: typeof roomOptions.adaptiveStream === 'object' ? true : roomOptions.adaptiveStream,
|
@@ -19905,9 +19837,9 @@ class Room extends eventsExports.EventEmitter {
|
|
19905
19837
|
let [key, value] = _ref;
|
19906
19838
|
return "".concat(key, ": ").concat(value);
|
19907
19839
|
}).join(', ')), {
|
19908
|
-
room: (
|
19909
|
-
roomSid: (
|
19910
|
-
identity: (
|
19840
|
+
room: (_a = joinResponse.room) === null || _a === void 0 ? void 0 : _a.name,
|
19841
|
+
roomSid: (_b = joinResponse.room) === null || _b === void 0 ? void 0 : _b.sid,
|
19842
|
+
identity: (_c = joinResponse.participant) === null || _c === void 0 ? void 0 : _c.identity
|
19911
19843
|
});
|
19912
19844
|
if (!joinResponse.serverVersion) {
|
19913
19845
|
throw new UnsupportedServer('unknown server version');
|
@@ -19939,8 +19871,8 @@ class Room extends eventsExports.EventEmitter {
|
|
19939
19871
|
}
|
19940
19872
|
};
|
19941
19873
|
this.attemptConnection = (url, token, opts, abortController) => __awaiter(this, void 0, void 0, function* () {
|
19942
|
-
var
|
19943
|
-
if (this.state === ConnectionState.Reconnecting || this.isResuming || ((
|
19874
|
+
var _a, _b, _c;
|
19875
|
+
if (this.state === ConnectionState.Reconnecting || this.isResuming || ((_a = this.engine) === null || _a === void 0 ? void 0 : _a.pendingReconnect)) {
|
19944
19876
|
this.log.info('Reconnection attempt replaced by new connection attempt', this.logContext);
|
19945
19877
|
// make sure we close and recreate the existing engine in order to get rid of any potentially ongoing reconnection attempts
|
19946
19878
|
this.recreateEngine();
|
@@ -19948,7 +19880,7 @@ class Room extends eventsExports.EventEmitter {
|
|
19948
19880
|
// create engine if previously disconnected
|
19949
19881
|
this.maybeCreateEngine();
|
19950
19882
|
}
|
19951
|
-
if ((
|
19883
|
+
if ((_b = this.regionUrlProvider) === null || _b === void 0 ? void 0 : _b.isCloud()) {
|
19952
19884
|
this.engine.setRegionUrlProvider(this.regionUrlProvider);
|
19953
19885
|
}
|
19954
19886
|
this.acquireAudioContext();
|
@@ -20001,7 +19933,7 @@ class Room extends eventsExports.EventEmitter {
|
|
20001
19933
|
}
|
20002
19934
|
if (isWeb()) {
|
20003
19935
|
document.addEventListener('freeze', this.onPageLeave);
|
20004
|
-
(
|
19936
|
+
(_c = navigator.mediaDevices) === null || _c === void 0 ? void 0 : _c.addEventListener('devicechange', this.handleDeviceChange);
|
20005
19937
|
}
|
20006
19938
|
this.setAndEmitConnectionState(ConnectionState.Connected);
|
20007
19939
|
this.emit(RoomEvent.Connected);
|
@@ -20018,7 +19950,7 @@ class Room extends eventsExports.EventEmitter {
|
|
20018
19950
|
var _this2 = this;
|
20019
19951
|
let stopTracks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
20020
19952
|
return function* () {
|
20021
|
-
var
|
19953
|
+
var _a, _b, _c, _d;
|
20022
19954
|
const unlock = yield _this2.disconnectLock.lock();
|
20023
19955
|
try {
|
20024
19956
|
if (_this2.state === ConnectionState.Disconnected) {
|
@@ -20029,13 +19961,13 @@ class Room extends eventsExports.EventEmitter {
|
|
20029
19961
|
if (_this2.state === ConnectionState.Connecting || _this2.state === ConnectionState.Reconnecting || _this2.isResuming) {
|
20030
19962
|
// try aborting pending connection attempt
|
20031
19963
|
_this2.log.warn('abort connection attempt', _this2.logContext);
|
20032
|
-
(
|
19964
|
+
(_a = _this2.abortController) === null || _a === void 0 ? void 0 : _a.abort();
|
20033
19965
|
// in case the abort controller didn't manage to cancel the connection attempt, reject the connect promise explicitly
|
20034
|
-
(
|
19966
|
+
(_c = (_b = _this2.connectFuture) === null || _b === void 0 ? void 0 : _b.reject) === null || _c === void 0 ? void 0 : _c.call(_b, new ConnectionError('Client initiated disconnect'));
|
20035
19967
|
_this2.connectFuture = undefined;
|
20036
19968
|
}
|
20037
19969
|
// send leave
|
20038
|
-
if (!((
|
19970
|
+
if (!((_d = _this2.engine) === null || _d === void 0 ? void 0 : _d.client.isDisconnected)) {
|
20039
19971
|
yield _this2.engine.client.sendLeave();
|
20040
19972
|
}
|
20041
19973
|
// close engine (also closes client)
|
@@ -20177,7 +20109,7 @@ class Room extends eventsExports.EventEmitter {
|
|
20177
20109
|
this.log.debug("fully reconnected to server", Object.assign(Object.assign({}, this.logContext), {
|
20178
20110
|
region: joinResponse.serverRegion
|
20179
20111
|
}));
|
20180
|
-
} catch (
|
20112
|
+
} catch (_a) {
|
20181
20113
|
// reconnection failed, handleDisconnect is being invoked already, just return here
|
20182
20114
|
return;
|
20183
20115
|
}
|
@@ -20245,6 +20177,10 @@ class Room extends eventsExports.EventEmitter {
|
|
20245
20177
|
this.handleSpeakersChanged = speakerUpdates => {
|
20246
20178
|
const lastSpeakers = new Map();
|
20247
20179
|
this.activeSpeakers.forEach(p => {
|
20180
|
+
const remoteParticipant = this.remoteParticipants.get(p.identity);
|
20181
|
+
if (remoteParticipant && remoteParticipant.sid !== p.sid) {
|
20182
|
+
return;
|
20183
|
+
}
|
20248
20184
|
lastSpeakers.set(p.sid, p);
|
20249
20185
|
});
|
20250
20186
|
speakerUpdates.forEach(speaker => {
|
@@ -20327,9 +20263,9 @@ class Room extends eventsExports.EventEmitter {
|
|
20327
20263
|
participant === null || participant === void 0 ? void 0 : participant.emit(ParticipantEvent.SipDTMFReceived, dtmf);
|
20328
20264
|
};
|
20329
20265
|
this.bufferedSegments = new Map();
|
20330
|
-
this.handleTranscription = (
|
20266
|
+
this.handleTranscription = (_remoteParticipant, transcription) => {
|
20331
20267
|
// find the participant
|
20332
|
-
const participant = transcription.
|
20268
|
+
const participant = transcription.transcribedParticipantIdentity === this.localParticipant.identity ? this.localParticipant : this.getParticipantByIdentity(transcription.transcribedParticipantIdentity);
|
20333
20269
|
const publication = participant === null || participant === void 0 ? void 0 : participant.trackPublications.get(transcription.trackId);
|
20334
20270
|
const segments = extractTranscriptionSegments(transcription);
|
20335
20271
|
publication === null || publication === void 0 ? void 0 : publication.emit(TrackEvent.TranscriptionReceived, segments);
|
@@ -20407,9 +20343,9 @@ class Room extends eventsExports.EventEmitter {
|
|
20407
20343
|
(_a = processor === null || processor === void 0 ? void 0 : processor.onPublish) === null || _a === void 0 ? void 0 : _a.call(processor, this);
|
20408
20344
|
};
|
20409
20345
|
this.onLocalTrackPublished = pub => __awaiter(this, void 0, void 0, function* () {
|
20410
|
-
var
|
20411
|
-
(
|
20412
|
-
(
|
20346
|
+
var _a, _b, _c, _d, _e;
|
20347
|
+
(_a = pub.track) === null || _a === void 0 ? void 0 : _a.on(TrackEvent.TrackProcessorUpdate, this.onTrackProcessorUpdate);
|
20348
|
+
(_d = (_c = (_b = pub.track) === null || _b === void 0 ? void 0 : _b.getProcessor()) === null || _c === void 0 ? void 0 : _c.onPublish) === null || _d === void 0 ? void 0 : _d.call(_c, this);
|
20413
20349
|
this.emit(RoomEvent.LocalTrackPublished, pub, this.localParticipant);
|
20414
20350
|
if (pub.track instanceof LocalAudioTrack) {
|
20415
20351
|
const trackIsSilent = yield pub.track.checkForSilence();
|
@@ -20417,7 +20353,7 @@ class Room extends eventsExports.EventEmitter {
|
|
20417
20353
|
this.emit(RoomEvent.LocalAudioSilenceDetected, pub);
|
20418
20354
|
}
|
20419
20355
|
}
|
20420
|
-
const deviceId = yield (
|
20356
|
+
const deviceId = yield (_e = pub.track) === null || _e === void 0 ? void 0 : _e.getDeviceId();
|
20421
20357
|
const deviceKind = sourceToKind(pub.source);
|
20422
20358
|
if (deviceKind && deviceId && deviceId !== this.localParticipant.activeDeviceMap.get(deviceKind)) {
|
20423
20359
|
this.localParticipant.activeDeviceMap.set(deviceKind, deviceId);
|