diff --git a/package-lock.json b/package-lock.json index 4dc46dc44..6b07239a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18554,7 +18554,8 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", - "dev": true + "dev": true, + "requires": {} }, "@octokit/plugin-rest-endpoint-methods": { "version": "7.2.3", @@ -20037,7 +20038,8 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true + "dev": true, + "requires": {} } } }, @@ -20274,7 +20276,8 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "requires": {} }, "add-stream": { "version": "1.0.0", @@ -22692,7 +22695,8 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", - "dev": true + "dev": true, + "requires": {} }, "eslint-import-resolver-node": { "version": "0.3.9", @@ -27431,7 +27435,8 @@ "version": "8.13.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "dev": true + "dev": true, + "requires": {} } } }, @@ -29230,7 +29235,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", - "dev": true + "dev": true, + "requires": {} }, "ts-node": { "version": "10.9.1", @@ -29969,7 +29975,8 @@ "ws": { "version": "8.14.2", "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==" + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "requires": {} }, "xdg-basedir": { "version": "5.1.0", diff --git a/src/lib/client.ts b/src/lib/client.ts index 8ea645f61..a593ca090 100644 --- a/src/lib/client.ts +++ b/src/lib/client.ts @@ -405,6 +405,7 @@ export interface MqttClientEventCallbacks { */ export default class MqttClient extends TypedEventEmitter { public static VERSION = MQTTJS_VERSION + public static NEED_CHECK_BROWSER_ENVIRONMENT = true /** Public fields */ @@ -486,6 +487,10 @@ export default class MqttClient extends TypedEventEmitter { - // window is only defined when it is a browser - if (typeof window !== 'undefined') { - // Is the process an electron application - // check if we are in electron `renderer` - const electronRenderCheck = - typeof navigator !== 'undefined' && - navigator.userAgent?.toLowerCase().indexOf(' electron/') > -1 - if (electronRenderCheck && process?.versions) { - const electronMainCheck = Object.prototype.hasOwnProperty.call( - process.versions, - 'electron', - ) - // Both electron checks are only true if the following webPreferences are set in the main electron BrowserWindow() - // webPreferences: { - // sandbox: false, - // nodeIntegration: true - // contextIsolation: false - // } - return !electronMainCheck - } - return typeof window.document !== 'undefined' - } - // return false if nothing is detected - return false + return typeof window !== 'undefined' && typeof window.document !== 'undefined' } const isWebWorkerEnv = () => @@ -37,7 +16,7 @@ const isReactNativeEnv = () => typeof navigator !== 'undefined' && navigator.product === 'ReactNative' const isBrowser = - isStandardBrowserEnv() || isWebWorkerEnv() || isReactNativeEnv() + MqttClient.NEED_CHECK_BROWSER_ENVIRONMENT !== false && (isStandardBrowserEnv() || isWebWorkerEnv() || isReactNativeEnv()) export const isWebWorker = isWebWorkerEnv()