openvidu-browser: all dependencies updated

pull/542/head
pabloFuente 2020-11-10 18:22:14 +01:00
parent da084e2b31
commit 3c1d4fd69f
9 changed files with 47 additions and 47 deletions

View File

@ -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",

View File

@ -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);
} }
/** /**

View File

@ -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();
} }
} }

View File

@ -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) {

View File

@ -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];

View File

@ -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));
}); });
} }

View File

@ -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

View File

@ -87,7 +87,7 @@ export class StreamManager extends EventDispatcher {
/** /**
* @hidden * @hidden
*/ */
firstVideoElement: StreamManagerVideo; firstVideoElement?: StreamManagerVideo;
/** /**
* @hidden * @hidden
*/ */

View File

@ -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];