mirror of https://github.com/OpenVidu/openvidu.git
openvidu-browser: all dependencies updated
parent
da084e2b31
commit
3c1d4fd69f
|
@ -1,31 +1,31 @@
|
||||||
{
|
{
|
||||||
"author": "OpenVidu",
|
"author": "OpenVidu",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "13.13.2",
|
"@types/node": "14.14.7",
|
||||||
"@types/platform": "1.3.2",
|
"@types/platform": "1.3.3",
|
||||||
"freeice": "2.2.2",
|
"freeice": "2.2.2",
|
||||||
"hark": "1.2.3",
|
"hark": "1.2.3",
|
||||||
"platform": "1.3.5",
|
"platform": "1.3.6",
|
||||||
"uuid": "7.0.3",
|
"uuid": "8.3.1",
|
||||||
"wolfy87-eventemitter": "5.2.9"
|
"wolfy87-eventemitter": "5.2.9"
|
||||||
},
|
},
|
||||||
"description": "OpenVidu Browser",
|
"description": "OpenVidu Browser",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"browserify": "16.5.1",
|
"browserify": "17.0.0",
|
||||||
"grunt": "1.1.0",
|
"grunt": "1.3.0",
|
||||||
"grunt-cli": "1.3.2",
|
"grunt-cli": "1.3.2",
|
||||||
"grunt-contrib-copy": "1.0.0",
|
"grunt-contrib-copy": "1.0.0",
|
||||||
"grunt-contrib-sass": "1.0.0",
|
"grunt-contrib-sass": "2.0.0",
|
||||||
"grunt-contrib-uglify": "4.0.1",
|
"grunt-contrib-uglify": "5.0.0",
|
||||||
"grunt-contrib-watch": "1.1.0",
|
"grunt-contrib-watch": "1.1.0",
|
||||||
"grunt-postcss": "0.9.0",
|
"grunt-postcss": "0.9.0",
|
||||||
"grunt-string-replace": "1.3.1",
|
"grunt-string-replace": "1.3.1",
|
||||||
"grunt-ts": "6.0.0-beta.22",
|
"grunt-ts": "6.0.0-beta.22",
|
||||||
"terser": "4.6.11",
|
"terser": "5.3.8",
|
||||||
"tsify": "4.0.1",
|
"tsify": "5.0.2",
|
||||||
"tslint": "6.1.1",
|
"tslint": "6.1.3",
|
||||||
"typedoc": "0.17.4",
|
"typedoc": "0.19.2",
|
||||||
"typescript": "3.8.3"
|
"typescript": "4.0.5"
|
||||||
},
|
},
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"main": "lib/index.js",
|
"main": "lib/index.js",
|
||||||
|
|
|
@ -71,7 +71,7 @@ export class Connection {
|
||||||
/**
|
/**
|
||||||
* @hidden
|
* @hidden
|
||||||
*/
|
*/
|
||||||
stream: Stream;
|
stream?: Stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @hidden
|
* @hidden
|
||||||
|
@ -132,7 +132,7 @@ export class Connection {
|
||||||
*/
|
*/
|
||||||
sendIceCandidate(candidate: RTCIceCandidate): void {
|
sendIceCandidate(candidate: RTCIceCandidate): void {
|
||||||
|
|
||||||
logger.debug((!!this.stream.outboundStreamOpts ? 'Local' : 'Remote') + 'candidate for' +
|
logger.debug((!!this.stream!.outboundStreamOpts ? 'Local' : 'Remote') + 'candidate for' +
|
||||||
this.connectionId, candidate);
|
this.connectionId, candidate);
|
||||||
|
|
||||||
this.session.openvidu.sendRequest('onIceCandidate', {
|
this.session.openvidu.sendRequest('onIceCandidate', {
|
||||||
|
@ -174,7 +174,7 @@ export class Connection {
|
||||||
this.addStream(stream);
|
this.addStream(stream);
|
||||||
});
|
});
|
||||||
|
|
||||||
logger.info("Remote 'Connection' with 'connectionId' [" + this.connectionId + '] is now configured for receiving Streams with options: ', this.stream.inboundStreamOpts);
|
logger.info("Remote 'Connection' with 'connectionId' [" + this.connectionId + '] is now configured for receiving Streams with options: ', this.stream!.inboundStreamOpts);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -119,9 +119,9 @@ export class Filter {
|
||||||
} else {
|
} else {
|
||||||
logger.info('Filter method successfully executed on Stream ' + this.stream.streamId);
|
logger.info('Filter method successfully executed on Stream ' + this.stream.streamId);
|
||||||
const oldValue = (<any>Object).assign({}, this.stream.filter);
|
const oldValue = (<any>Object).assign({}, this.stream.filter);
|
||||||
this.stream.filter.lastExecMethod = { method, params: JSON.parse(stringParams) };
|
this.stream.filter!.lastExecMethod = { method, params: JSON.parse(stringParams) };
|
||||||
this.stream.session.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.stream.session, this.stream, 'filter', this.stream.filter, oldValue, 'execFilterMethod')]);
|
this.stream.session.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.stream.session, this.stream, 'filter', this.stream.filter!, oldValue, 'execFilterMethod')]);
|
||||||
this.stream.streamManager.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.stream.streamManager, this.stream, 'filter', this.stream.filter, oldValue, 'execFilterMethod')]);
|
this.stream.streamManager.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.stream.streamManager, this.stream, 'filter', this.stream.filter!, oldValue, 'execFilterMethod')]);
|
||||||
resolve();
|
resolve();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,7 @@ export class LocalRecorder {
|
||||||
private connectionId: string;
|
private connectionId: string;
|
||||||
private mediaRecorder: any;
|
private mediaRecorder: any;
|
||||||
private chunks: any[] = [];
|
private chunks: any[] = [];
|
||||||
private blob: Blob;
|
private blob?: Blob;
|
||||||
private id: string;
|
private id: string;
|
||||||
private videoPreviewSrc: string;
|
private videoPreviewSrc: string;
|
||||||
private videoPreview: HTMLVideoElement;
|
private videoPreview: HTMLVideoElement;
|
||||||
|
@ -281,7 +281,7 @@ export class LocalRecorder {
|
||||||
if (this.state !== LocalRecorderState.FINISHED) {
|
if (this.state !== LocalRecorderState.FINISHED) {
|
||||||
throw (Error('Call \'LocalRecord.stop()\' before getting Blob file'));
|
throw (Error('Call \'LocalRecord.stop()\' before getting Blob file'));
|
||||||
} else {
|
} else {
|
||||||
return this.blob;
|
return this.blob!;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -351,7 +351,7 @@ export class LocalRecorder {
|
||||||
}
|
}
|
||||||
|
|
||||||
const sendable = new FormData();
|
const sendable = new FormData();
|
||||||
sendable.append('file', this.blob, this.id + '.webm');
|
sendable.append('file', this.blob!, this.id + '.webm');
|
||||||
|
|
||||||
http.onreadystatechange = () => {
|
http.onreadystatechange = () => {
|
||||||
if (http.readyState === 4) {
|
if (http.readyState === 4) {
|
||||||
|
|
|
@ -127,7 +127,7 @@ export class Publisher extends StreamManager {
|
||||||
*/
|
*/
|
||||||
publishAudio(value: boolean): void {
|
publishAudio(value: boolean): void {
|
||||||
if (this.stream.audioActive !== value) {
|
if (this.stream.audioActive !== value) {
|
||||||
const affectedMediaStream: MediaStream = this.stream.displayMyRemote() ? this.stream.localMediaStreamWhenSubscribedToRemote : this.stream.getMediaStream();
|
const affectedMediaStream: MediaStream = this.stream.displayMyRemote() ? this.stream.localMediaStreamWhenSubscribedToRemote! : this.stream.getMediaStream();
|
||||||
affectedMediaStream.getAudioTracks().forEach((track) => {
|
affectedMediaStream.getAudioTracks().forEach((track) => {
|
||||||
track.enabled = value;
|
track.enabled = value;
|
||||||
});
|
});
|
||||||
|
@ -175,7 +175,7 @@ export class Publisher extends StreamManager {
|
||||||
*/
|
*/
|
||||||
publishVideo(value: boolean): void {
|
publishVideo(value: boolean): void {
|
||||||
if (this.stream.videoActive !== value) {
|
if (this.stream.videoActive !== value) {
|
||||||
const affectedMediaStream: MediaStream = this.stream.displayMyRemote() ? this.stream.localMediaStreamWhenSubscribedToRemote : this.stream.getMediaStream();
|
const affectedMediaStream: MediaStream = this.stream.displayMyRemote() ? this.stream.localMediaStreamWhenSubscribedToRemote! : this.stream.getMediaStream();
|
||||||
affectedMediaStream.getVideoTracks().forEach((track) => {
|
affectedMediaStream.getVideoTracks().forEach((track) => {
|
||||||
track.enabled = value;
|
track.enabled = value;
|
||||||
});
|
});
|
||||||
|
@ -304,7 +304,7 @@ export class Publisher extends StreamManager {
|
||||||
replaceTrack(track: MediaStreamTrack): Promise<any> {
|
replaceTrack(track: MediaStreamTrack): Promise<any> {
|
||||||
|
|
||||||
const replaceMediaStreamTrack = () => {
|
const replaceMediaStreamTrack = () => {
|
||||||
const mediaStream: MediaStream = this.stream.displayMyRemote() ? this.stream.localMediaStreamWhenSubscribedToRemote : this.stream.getMediaStream();
|
const mediaStream: MediaStream = this.stream.displayMyRemote() ? this.stream.localMediaStreamWhenSubscribedToRemote! : this.stream.getMediaStream();
|
||||||
let removedTrack: MediaStreamTrack;
|
let removedTrack: MediaStreamTrack;
|
||||||
if (track.kind === 'video') {
|
if (track.kind === 'video') {
|
||||||
removedTrack = mediaStream.getVideoTracks()[0];
|
removedTrack = mediaStream.getVideoTracks()[0];
|
||||||
|
|
|
@ -802,12 +802,12 @@ export class Session extends EventDispatcher {
|
||||||
|
|
||||||
.then(connection => {
|
.then(connection => {
|
||||||
|
|
||||||
const streamEvent = new StreamEvent(true, this, 'streamDestroyed', connection.stream, msg.reason);
|
const streamEvent = new StreamEvent(true, this, 'streamDestroyed', connection.stream!, msg.reason);
|
||||||
this.ee.emitEvent('streamDestroyed', [streamEvent]);
|
this.ee.emitEvent('streamDestroyed', [streamEvent]);
|
||||||
streamEvent.callDefaultBehavior();
|
streamEvent.callDefaultBehavior();
|
||||||
|
|
||||||
// Deleting the remote stream
|
// Deleting the remote stream
|
||||||
const streamId: string = connection.stream.streamId;
|
const streamId: string = connection.stream!.streamId;
|
||||||
delete this.remoteStreamsCreated[streamId];
|
delete this.remoteStreamsCreated[streamId];
|
||||||
|
|
||||||
if (Object.keys(this.remoteStreamsCreated).length === 0) {
|
if (Object.keys(this.remoteStreamsCreated).length === 0) {
|
||||||
|
@ -993,9 +993,9 @@ export class Session extends EventDispatcher {
|
||||||
};
|
};
|
||||||
this.getConnection(msg.senderConnectionId, 'Connection not found for connectionId ' + msg.senderConnectionId + ' owning endpoint ' + msg.endpointName + '. Ice candidate will be ignored: ' + candidate)
|
this.getConnection(msg.senderConnectionId, 'Connection not found for connectionId ' + msg.senderConnectionId + ' owning endpoint ' + msg.endpointName + '. Ice candidate will be ignored: ' + candidate)
|
||||||
.then(connection => {
|
.then(connection => {
|
||||||
const stream = connection.stream;
|
const stream: Stream = connection.stream!;
|
||||||
stream.getWebRtcPeer().addIceCandidate(candidate).catch(error => {
|
stream.getWebRtcPeer().addIceCandidate(candidate).catch(error => {
|
||||||
logger.error('Error adding candidate for ' + stream.streamId
|
logger.error('Error adding candidate for ' + stream!.streamId
|
||||||
+ ' stream of endpoint ' + msg.endpointName + ': ' + error);
|
+ ' stream of endpoint ' + msg.endpointName + ': ' + error);
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
@ -1077,8 +1077,8 @@ export class Session extends EventDispatcher {
|
||||||
this.getConnection(connectionId, 'No connection found for connectionId ' + connectionId)
|
this.getConnection(connectionId, 'No connection found for connectionId ' + connectionId)
|
||||||
.then(connection => {
|
.then(connection => {
|
||||||
logger.info('Filter event dispatched');
|
logger.info('Filter event dispatched');
|
||||||
const stream: Stream = connection.stream;
|
const stream: Stream = connection.stream!;
|
||||||
stream.filter.handlers[response.eventType](new FilterEvent(stream.filter, response.eventType, response.data));
|
stream.filter!.handlers[response.eventType](new FilterEvent(stream.filter!, response.eventType, response.data));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -139,10 +139,10 @@ export class Stream extends EventDispatcher {
|
||||||
* [[Filter.execMethod]] and remove it with [[Stream.removeFilter]]. Be aware that the client calling this methods must have the
|
* [[Filter.execMethod]] and remove it with [[Stream.removeFilter]]. Be aware that the client calling this methods must have the
|
||||||
* necessary permissions: the token owned by the client must have been initialized with the appropriated `allowedFilters` array.
|
* necessary permissions: the token owned by the client must have been initialized with the appropriated `allowedFilters` array.
|
||||||
*/
|
*/
|
||||||
filter: Filter;
|
filter?: Filter;
|
||||||
|
|
||||||
protected webRtcPeer: WebRtcPeer;
|
protected webRtcPeer: WebRtcPeer;
|
||||||
protected mediaStream: MediaStream;
|
protected mediaStream?: MediaStream;
|
||||||
private webRtcStats: WebRtcStats;
|
private webRtcStats: WebRtcStats;
|
||||||
|
|
||||||
private isSubscribeToRemote = false;
|
private isSubscribeToRemote = false;
|
||||||
|
@ -206,7 +206,7 @@ export class Stream extends EventDispatcher {
|
||||||
/**
|
/**
|
||||||
* @hidden
|
* @hidden
|
||||||
*/
|
*/
|
||||||
localMediaStreamWhenSubscribedToRemote: MediaStream;
|
localMediaStreamWhenSubscribedToRemote?: MediaStream;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -265,7 +265,7 @@ export class Stream extends EventDispatcher {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.ee.on('mediastream-updated', () => {
|
this.ee.on('mediastream-updated', () => {
|
||||||
this.streamManager.updateMediaStream(this.mediaStream);
|
this.streamManager.updateMediaStream(this.mediaStream!);
|
||||||
logger.debug('Video srcObject [' + this.mediaStream + '] updated in stream [' + this.streamId + ']');
|
logger.debug('Video srcObject [' + this.mediaStream + '] updated in stream [' + this.streamId + ']');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -326,7 +326,7 @@ export class Stream extends EventDispatcher {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logger.info('Filter successfully applied on Stream ' + this.streamId);
|
logger.info('Filter successfully applied on Stream ' + this.streamId);
|
||||||
const oldValue: Filter = this.filter;
|
const oldValue: Filter = this.filter!;
|
||||||
this.filter = new Filter(type, options);
|
this.filter = new Filter(type, options);
|
||||||
this.filter.stream = this;
|
this.filter.stream = this;
|
||||||
this.session.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.session, this, 'filter', this.filter, oldValue, 'applyFilter')]);
|
this.session.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.session, this, 'filter', this.filter, oldValue, 'applyFilter')]);
|
||||||
|
@ -359,10 +359,10 @@ export class Stream extends EventDispatcher {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logger.info('Filter successfully removed from Stream ' + this.streamId);
|
logger.info('Filter successfully removed from Stream ' + this.streamId);
|
||||||
const oldValue = this.filter;
|
const oldValue = this.filter!;
|
||||||
delete this.filter;
|
delete this.filter;
|
||||||
this.session.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.session, this, 'filter', this.filter, oldValue, 'applyFilter')]);
|
this.session.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.session, this, 'filter', this.filter!, oldValue, 'applyFilter')]);
|
||||||
this.streamManager.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.streamManager, this, 'filter', this.filter, oldValue, 'applyFilter')]);
|
this.streamManager.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.streamManager, this, 'filter', this.filter!, oldValue, 'applyFilter')]);
|
||||||
resolve();
|
resolve();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -385,7 +385,7 @@ export class Stream extends EventDispatcher {
|
||||||
* @returns Native MediaStream Web API object
|
* @returns Native MediaStream Web API object
|
||||||
*/
|
*/
|
||||||
getMediaStream(): MediaStream {
|
getMediaStream(): MediaStream {
|
||||||
return this.mediaStream;
|
return this.mediaStream!;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Hidden methods */
|
/* Hidden methods */
|
||||||
|
@ -1005,7 +1005,7 @@ export class Stream extends EventDispatcher {
|
||||||
}
|
}
|
||||||
|
|
||||||
private initHarkEvents(): void {
|
private initHarkEvents(): void {
|
||||||
if (!!this.mediaStream.getAudioTracks()[0]) {
|
if (!!this.mediaStream!.getAudioTracks()[0]) {
|
||||||
// Hark events can only be set if audio track is available
|
// Hark events can only be set if audio track is available
|
||||||
if (this.streamManager.remote) {
|
if (this.streamManager.remote) {
|
||||||
// publisherStartSpeaking/publisherStopSpeaking is only defined for remote streams
|
// publisherStartSpeaking/publisherStopSpeaking is only defined for remote streams
|
||||||
|
|
|
@ -87,7 +87,7 @@ export class StreamManager extends EventDispatcher {
|
||||||
/**
|
/**
|
||||||
* @hidden
|
* @hidden
|
||||||
*/
|
*/
|
||||||
firstVideoElement: StreamManagerVideo;
|
firstVideoElement?: StreamManagerVideo;
|
||||||
/**
|
/**
|
||||||
* @hidden
|
* @hidden
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -62,12 +62,12 @@ export class SessionDisconnectedEvent extends Event {
|
||||||
// Dispose and delete all remote Connections
|
// Dispose and delete all remote Connections
|
||||||
for (const connectionId in session.remoteConnections) {
|
for (const connectionId in session.remoteConnections) {
|
||||||
if (!!session.remoteConnections[connectionId].stream) {
|
if (!!session.remoteConnections[connectionId].stream) {
|
||||||
session.remoteConnections[connectionId].stream.disposeWebRtcPeer();
|
session.remoteConnections[connectionId].stream!.disposeWebRtcPeer();
|
||||||
session.remoteConnections[connectionId].stream.disposeMediaStream();
|
session.remoteConnections[connectionId].stream!.disposeMediaStream();
|
||||||
if (session.remoteConnections[connectionId].stream.streamManager) {
|
if (session.remoteConnections[connectionId].stream!.streamManager) {
|
||||||
session.remoteConnections[connectionId].stream.streamManager.removeAllVideos();
|
session.remoteConnections[connectionId].stream!.streamManager.removeAllVideos();
|
||||||
}
|
}
|
||||||
delete session.remoteStreamsCreated[session.remoteConnections[connectionId].stream.streamId];
|
delete session.remoteStreamsCreated[session.remoteConnections[connectionId].stream!.streamId];
|
||||||
session.remoteConnections[connectionId].dispose();
|
session.remoteConnections[connectionId].dispose();
|
||||||
}
|
}
|
||||||
delete session.remoteConnections[connectionId];
|
delete session.remoteConnections[connectionId];
|
||||||
|
|
Loading…
Reference in New Issue