From fc62ead56515b64138b8342af1c5ec6071b715fc Mon Sep 17 00:00:00 2001 From: Amr Bashir Date: Tue, 14 Nov 2023 02:55:00 +0200 Subject: [PATCH] fix(os): use an internal object instead of ` window.__TAURI__`, closes #719 (#721) fix(os): use an internal object instead of ` window.__TAURI__`, closes #719 --- .changes/os-reading-undefined.md | 7 +++++++ examples/api/src-tauri/Cargo.toml | 1 + examples/api/src-tauri/src/lib.rs | 5 ----- examples/api/src-tauri/src/main.rs | 3 +-- plugins/os/guest-js/index.ts | 6 +++--- plugins/os/src/api-iife.js | 2 +- plugins/os/src/init.js | 10 +++++++--- 7 files changed, 20 insertions(+), 14 deletions(-) create mode 100644 .changes/os-reading-undefined.md diff --git a/.changes/os-reading-undefined.md b/.changes/os-reading-undefined.md new file mode 100644 index 00000000..ee54aa09 --- /dev/null +++ b/.changes/os-reading-undefined.md @@ -0,0 +1,7 @@ +--- +"os": "patch" +"os-js": "patch" +--- + +Fix `Uncaught TypeError: Cannot read properties of undefined (reading 'os')` + diff --git a/examples/api/src-tauri/Cargo.toml b/examples/api/src-tauri/Cargo.toml index 80f793b0..f1345e8c 100644 --- a/examples/api/src-tauri/Cargo.toml +++ b/examples/api/src-tauri/Cargo.toml @@ -8,6 +8,7 @@ rust-version = { workspace = true } license = "Apache-2.0 OR MIT" [lib] +name = "api_lib" crate-type = [ "staticlib", "cdylib", "rlib" ] [build-dependencies] diff --git a/examples/api/src-tauri/src/lib.rs b/examples/api/src-tauri/src/lib.rs index 5bb81851..ae23d314 100644 --- a/examples/api/src-tauri/src/lib.rs +++ b/examples/api/src-tauri/src/lib.rs @@ -2,11 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT -#![cfg_attr( - all(not(debug_assertions), target_os = "windows"), - windows_subsystem = "windows" -)] - mod cmd; #[cfg(desktop)] mod tray; diff --git a/examples/api/src-tauri/src/main.rs b/examples/api/src-tauri/src/main.rs index 2eb029af..bbed006b 100644 --- a/examples/api/src-tauri/src/main.rs +++ b/examples/api/src-tauri/src/main.rs @@ -6,6 +6,5 @@ #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] fn main() { - #[cfg(desktop)] - api::run(); + api_lib::run(); } diff --git a/plugins/os/guest-js/index.ts b/plugins/os/guest-js/index.ts index 01759bd8..d8bd33a9 100644 --- a/plugins/os/guest-js/index.ts +++ b/plugins/os/guest-js/index.ts @@ -13,8 +13,8 @@ import { invoke } from "@tauri-apps/api/primitives"; /** @ignore */ declare global { interface Window { - __TAURI__: { - os: { __eol: string }; + __TAURI_OS_PLUGIN_INTERNALS__: { + eol: string; }; } } @@ -54,7 +54,7 @@ type Arch = * @since 2.0.0 * */ function eol() { - return window.__TAURI__.os.__eol; + return window.__TAURI_OS_PLUGIN_INTERNALS__.eol; } /** diff --git a/plugins/os/src/api-iife.js b/plugins/os/src/api-iife.js index 0adb2ae2..b7728d8f 100644 --- a/plugins/os/src/api-iife.js +++ b/plugins/os/src/api-iife.js @@ -1 +1 @@ -if("__TAURI__"in window){var __TAURI_OS__=function(n){"use strict";async function o(n,o={},e){return window.__TAURI_INTERNALS__.invoke(n,o,e)}return"function"==typeof SuppressedError&&SuppressedError,n.arch=async function(){return o("plugin:os|arch")},n.eol=function(){return window.__TAURI__.os.__eol},n.exeExtension=async function(){return o("plugin:os|exe_extension")},n.family=async function(){return o("plugin:os|family")},n.hostname=async function(){return o("plugin:os|hostname")},n.locale=async function(){return o("plugin:os|locale")},n.platform=async function(){return o("plugin:os|platform")},n.type=async function(){return o("plugin:os|os_type")},n.version=async function(){return o("plugin:os|version")},n}({});Object.defineProperty(window.__TAURI__,"os",{value:__TAURI_OS__})} +if("__TAURI__"in window){var __TAURI_OS__=function(n){"use strict";async function o(n,o={},e){return window.__TAURI_INTERNALS__.invoke(n,o,e)}return"function"==typeof SuppressedError&&SuppressedError,n.arch=async function(){return o("plugin:os|arch")},n.eol=function(){return window.__TAURI_OS_PLUGIN_INTERNALS__.eol},n.exeExtension=async function(){return o("plugin:os|exe_extension")},n.family=async function(){return o("plugin:os|family")},n.hostname=async function(){return o("plugin:os|hostname")},n.locale=async function(){return o("plugin:os|locale")},n.platform=async function(){return o("plugin:os|platform")},n.type=async function(){return o("plugin:os|os_type")},n.version=async function(){return o("plugin:os|version")},n}({});Object.defineProperty(window.__TAURI__,"os",{value:__TAURI_OS__})} diff --git a/plugins/os/src/init.js b/plugins/os/src/init.js index 33e42748..a26d35aa 100644 --- a/plugins/os/src/init.js +++ b/plugins/os/src/init.js @@ -2,7 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT -__RAW_global_os_api__; - // eslint-disable-next-line -window.__TAURI__.os.__eol = __TEMPLATE_eol__; +Object.defineProperty(window, "__TAURI_OS_PLUGIN_INTERNALS__", { + value: { + eol: __TEMPLATE_eol__, + }, +}); + +__RAW_global_os_api__;