From 2b70c12be6cf6b586085cf42a96a7f13cd6899b0 Mon Sep 17 00:00:00 2001 From: Juan Navarro Date: Wed, 27 Jul 2022 16:36:08 +0200 Subject: [PATCH] openvidu-browser: Node.js platform: Use `globalThis` instead of `window` While `window` is specific to the web browser, and `global` is specific to Node.js, the standard `globalThis` global variable is common to both platforms. Thus, to make openvidu-browser more portable to Node.js, it's better to use the common name. More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis --- openvidu-browser/src/Main.ts | 4 +-- .../src/OpenVidu/LocalRecorder.ts | 6 ++-- openvidu-browser/src/OpenVidu/OpenVidu.ts | 2 +- .../OpenViduInternal/Logger/OpenViduLogger.ts | 32 +++++++++---------- .../ScreenSharing/Screen-Capturing-Auto.js | 22 ++++++------- 5 files changed, 33 insertions(+), 33 deletions(-) diff --git a/openvidu-browser/src/Main.ts b/openvidu-browser/src/Main.ts index a205bc08..bd14841e 100644 --- a/openvidu-browser/src/Main.ts +++ b/openvidu-browser/src/Main.ts @@ -1,8 +1,8 @@ import { OpenVidu } from './OpenVidu/OpenVidu'; import { JL } from 'jsnlog'; -if (window) { - window['OpenVidu'] = OpenVidu; +if (typeof globalThis !== 'undefined') { + globalThis['OpenVidu'] = OpenVidu; } // Disable jsnlog when library is loaded diff --git a/openvidu-browser/src/OpenVidu/LocalRecorder.ts b/openvidu-browser/src/OpenVidu/LocalRecorder.ts index 9cf3150a..655307ff 100644 --- a/openvidu-browser/src/OpenVidu/LocalRecorder.ts +++ b/openvidu-browser/src/OpenVidu/LocalRecorder.ts @@ -263,11 +263,11 @@ export class LocalRecorder { a.style.display = 'none'; document.body.appendChild(a); - const url = window.URL.createObjectURL(this.blob); + const url = globalThis.URL.createObjectURL(this.blob); a.href = url; a.download = this.id + '.' + Mime.getExtension(this.blob!.type); a.click(); - window.URL.revokeObjectURL(url); + globalThis.URL.revokeObjectURL(url); document.body.removeChild(a); } @@ -377,7 +377,7 @@ export class LocalRecorder { this.blob = new Blob(this.chunks, { type: this.mediaRecorder.mimeType }); this.chunks = []; - this.videoPreviewSrc = window.URL.createObjectURL(this.blob); + this.videoPreviewSrc = globalThis.URL.createObjectURL(this.blob); this.state = LocalRecorderState.FINISHED; } diff --git a/openvidu-browser/src/OpenVidu/OpenVidu.ts b/openvidu-browser/src/OpenVidu/OpenVidu.ts index 91cc38e3..440b9047 100644 --- a/openvidu-browser/src/OpenVidu/OpenVidu.ts +++ b/openvidu-browser/src/OpenVidu/OpenVidu.ts @@ -624,7 +624,7 @@ export class OpenVidu { * @hidden */ onOrientationChanged(handler): void { - (window).addEventListener('orientationchange', handler); + (globalThis as any).addEventListener('orientationchange', handler); } /** diff --git a/openvidu-browser/src/OpenViduInternal/Logger/OpenViduLogger.ts b/openvidu-browser/src/OpenViduInternal/Logger/OpenViduLogger.ts index be0aa359..56d52289 100644 --- a/openvidu-browser/src/OpenViduInternal/Logger/OpenViduLogger.ts +++ b/openvidu-browser/src/OpenViduInternal/Logger/OpenViduLogger.ts @@ -12,7 +12,7 @@ export class OpenViduLogger { private MAX_MSECONDS_BATCH_MESSAGES: number = 5000; private MAX_LENGTH_STRING_JSON: number = 1000; - private defaultConsoleLogger: ConsoleLogger = new ConsoleLogger(window.console); + private defaultConsoleLogger: ConsoleLogger = new ConsoleLogger(globalThis.console); private currentAppender: any; @@ -29,7 +29,7 @@ export class OpenViduLogger { static configureJSNLog(openVidu: OpenVidu, token: string) { try { // If dev mode or... - if ((window['LOG_JSNLOG_RESULTS']) || + if ((globalThis['LOG_JSNLOG_RESULTS']) || // If instance is created and it is OpenVidu Pro (this.instance && openVidu.isAtLeastPro // If logs are enabled @@ -89,7 +89,7 @@ export class OpenViduLogger { const seen = new WeakSet(); return (key, value) => { if (typeof value === "object" && value != null) { - if (seen.has(value) || (HTMLElement && value instanceof HTMLElement)) { + if (seen.has(value) || (globalThis.HTMLElement && value instanceof HTMLElement)) { return; } seen.add(value); @@ -104,7 +104,7 @@ export class OpenViduLogger { stringifyJson = `${stringifyJson.substring(0, this.instance.MAX_LENGTH_STRING_JSON)}...`; } - if (window['LOG_JSNLOG_RESULTS']) { + if (globalThis['LOG_JSNLOG_RESULTS']) { console.log(stringifyJson); } @@ -193,12 +193,12 @@ export class OpenViduLogger { } private replaceWindowConsole() { - window.console = this.defaultConsoleLogger.logger; - window.console.log = this.getConsoleWithJSNLog().log; - window.console.info = this.getConsoleWithJSNLog().info; - window.console.debug = this.getConsoleWithJSNLog().debug; - window.console.warn = this.getConsoleWithJSNLog().warn; - window.console.error = this.getConsoleWithJSNLog().error; + globalThis.console = this.defaultConsoleLogger.logger; + globalThis.console.log = this.getConsoleWithJSNLog().log; + globalThis.console.info = this.getConsoleWithJSNLog().info; + globalThis.console.debug = this.getConsoleWithJSNLog().debug; + globalThis.console.warn = this.getConsoleWithJSNLog().warn; + globalThis.console.error = this.getConsoleWithJSNLog().error; } private disableLogger() { @@ -206,12 +206,12 @@ export class OpenViduLogger { this.isJSNLogSetup = false; this.loggingSessionId = undefined; this.currentAppender = undefined; - window.console = this.defaultConsoleLogger.logger; - window.console.log = this.defaultConsoleLogger.log; - window.console.info = this.defaultConsoleLogger.info; - window.console.debug = this.defaultConsoleLogger.debug; - window.console.warn = this.defaultConsoleLogger.warn; - window.console.error = this.defaultConsoleLogger.error; + globalThis.console = this.defaultConsoleLogger.logger; + globalThis.console.log = this.defaultConsoleLogger.log; + globalThis.console.info = this.defaultConsoleLogger.info; + globalThis.console.debug = this.defaultConsoleLogger.debug; + globalThis.console.warn = this.defaultConsoleLogger.warn; + globalThis.console.error = this.defaultConsoleLogger.error; } /** diff --git a/openvidu-browser/src/OpenViduInternal/ScreenSharing/Screen-Capturing-Auto.js b/openvidu-browser/src/OpenViduInternal/ScreenSharing/Screen-Capturing-Auto.js index 4042f6a3..f7810ce5 100644 --- a/openvidu-browser/src/OpenViduInternal/ScreenSharing/Screen-Capturing-Auto.js +++ b/openvidu-browser/src/OpenViduInternal/ScreenSharing/Screen-Capturing-Auto.js @@ -23,7 +23,7 @@ getScreenId(function (error, sourceId, screen_constraints) { }, 'pass second parameter only if you want system audio'); */ -window.getScreenId = function (firefoxString, callback, custom_parameter) { +globalThis.getScreenId = function (firefoxString, callback, custom_parameter) { if (navigator.userAgent.indexOf('Edge') !== -1 && (!!navigator.msSaveOrOpenBlob || !!navigator.msSaveBlob)) { // microsoft edge => navigator.getDisplayMedia(screen_constraints).then(onSuccess, onFailure); callback({ @@ -45,7 +45,7 @@ window.getScreenId = function (firefoxString, callback, custom_parameter) { return; } - window.addEventListener('message', onIFrameCallback); + globalThis.addEventListener('message', onIFrameCallback); function onIFrameCallback(event) { if (!event.data) return; @@ -58,14 +58,14 @@ window.getScreenId = function (firefoxString, callback, custom_parameter) { } // this event listener is no more needed - window.removeEventListener('message', onIFrameCallback); + globalThis.removeEventListener('message', onIFrameCallback); } if (event.data.chromeExtensionStatus) { callback(event.data.chromeExtensionStatus, null, getScreenConstraints(event.data.chromeExtensionStatus)); // this event listener is no more needed - window.removeEventListener('message', onIFrameCallback); + globalThis.removeEventListener('message', onIFrameCallback); } } @@ -85,8 +85,8 @@ function getScreenConstraints(error, sourceId, canRequestAudioTrack) { video: { mandatory: { chromeMediaSource: error ? 'screen' : 'desktop', - maxWidth: window.screen.width > 1920 ? window.screen.width : 1920, - maxHeight: window.screen.height > 1080 ? window.screen.height : 1080 + maxWidth: globalThis.screen.width > 1920 ? globalThis.screen.width : 1920, + maxHeight: globalThis.screen.height > 1080 ? globalThis.screen.height : 1080 }, optional: [] } @@ -148,7 +148,7 @@ function postGetSourceIdMessage(custom_parameter) { var iframe; // this function is used in RTCMultiConnection v3 -window.getScreenConstraints = function (callback) { +globalThis.getScreenConstraints = function (callback) { loadIFrame(function () { getScreenId(function (error, sourceId, screen_constraints) { if (!screen_constraints) { @@ -178,14 +178,14 @@ function loadIFrame(loadCallback) { (document.body || document.documentElement).appendChild(iframe); } -window.getChromeExtensionStatus = function (callback) { +globalThis.getChromeExtensionStatus = function (callback) { // for Firefox: if (!!navigator.mozGetUserMedia) { callback('installed-enabled'); return; } - window.addEventListener('message', onIFrameCallback); + globalThis.addEventListener('message', onIFrameCallback); function onIFrameCallback(event) { if (!event.data) return; @@ -194,7 +194,7 @@ window.getChromeExtensionStatus = function (callback) { callback(event.data.chromeExtensionStatus); // this event listener is no more needed - window.removeEventListener('message', onIFrameCallback); + globalThis.removeEventListener('message', onIFrameCallback); } } @@ -217,4 +217,4 @@ function postGetChromeExtensionStatusMessage() { }, '*'); } -exports.getScreenId = window.getScreenId; \ No newline at end of file +exports.getScreenId = globalThis.getScreenId;