diff --git a/.changes/nfc-close-session.md b/.changes/nfc-close-session.md new file mode 100644 index 000000000..70735b34f --- /dev/null +++ b/.changes/nfc-close-session.md @@ -0,0 +1,6 @@ +--- +nfc: patch +nfc-js: patch +--- + +On iOS, the reader session will now get closed properly on errors, preventing dangling invalid sessions that could prevent subsequent write attempts. diff --git a/.changes/store-defaults-js.md b/.changes/store-defaults-js.md new file mode 100644 index 000000000..122ef8195 --- /dev/null +++ b/.changes/store-defaults-js.md @@ -0,0 +1,6 @@ +--- +store: minor +store-js: minor +--- + +Allow setting defaults from the JavaScript API diff --git a/.changes/store-load-override-defaults.md b/.changes/store-load-override-defaults.md new file mode 100644 index 000000000..1fb8376e0 --- /dev/null +++ b/.changes/store-load-override-defaults.md @@ -0,0 +1,6 @@ +--- +store: minor +store-js: minor +--- + +Add an new option `overrideDefaults` for creating/loading and reloading the store that overrides the store with the on-disk state, ignoring defaults diff --git a/Cargo.lock b/Cargo.lock index 5d80e312c..82cabcc80 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -207,7 +207,7 @@ checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" [[package]] name = "api" -version = "2.0.31" +version = "2.0.32" dependencies = [ "log", "serde", @@ -1949,11 +1949,11 @@ dependencies = [ [[package]] name = "file-id" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bc904b9bbefcadbd8e3a9fb0d464a9b979de6324c03b3c663e8994f46a5be36" +checksum = "e1fc6a637b6dc58414714eddd9170ff187ecb0933d4c7024d1abbd23a3cc26e9" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] @@ -3295,9 +3295,9 @@ dependencies = [ [[package]] name = "kqueue" -version = "1.0.8" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" +checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" dependencies = [ "kqueue-sys", "libc", @@ -3782,12 +3782,11 @@ dependencies = [ [[package]] name = "notify" -version = "8.0.0" +version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fee8403b3d66ac7b26aee6e40a897d85dc5ce26f44da36b8b73e987cc52e943" +checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ "bitflags 2.9.0", - "filetime", "fsevent-sys", "inotify", "kqueue", @@ -3796,14 +3795,14 @@ dependencies = [ "mio", "notify-types", "walkdir", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "notify-debouncer-full" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d88b1a7538054351c8258338df7c931a590513fb3745e8c15eb9ff4199b8d1" +checksum = "375bd3a138be7bfeff3480e4a623df4cbfb55b79df617c055cd810ba466fa078" dependencies = [ "file-id", "log", @@ -6659,7 +6658,7 @@ dependencies = [ [[package]] name = "tauri-plugin-dialog" -version = "2.3.1" +version = "2.3.2" dependencies = [ "log", "raw-window-handle", @@ -6813,7 +6812,7 @@ dependencies = [ "log", "maplit", "notify-rust", - "rand 0.8.5", + "rand 0.9.0", "serde", "serde_json", "serde_repr", @@ -6983,9 +6982,9 @@ dependencies = [ "iota-crypto", "iota_stronghold", "log", - "rand 0.8.5", - "rand_chacha 0.3.1", - "rand_core 0.6.4", + "rand 0.9.0", + "rand_chacha 0.9.0", + "rand_core 0.9.3", "rust-argon2 2.1.0", "rusty-fork", "serde", @@ -7051,7 +7050,7 @@ dependencies = [ "futures-util", "http", "log", - "rand 0.8.5", + "rand 0.9.0", "serde", "serde_json", "tauri", diff --git a/examples/api/CHANGELOG.md b/examples/api/CHANGELOG.md index 73c542295..ea5d611d4 100644 --- a/examples/api/CHANGELOG.md +++ b/examples/api/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## \[2.0.28] + +### Dependencies + +- Upgraded to `dialog-js@2.3.2` + ## \[2.0.27] ### Dependencies diff --git a/examples/api/package.json b/examples/api/package.json index c05bee723..200ac8f89 100644 --- a/examples/api/package.json +++ b/examples/api/package.json @@ -1,7 +1,7 @@ { "name": "api", "private": true, - "version": "2.0.27", + "version": "2.0.28", "type": "module", "scripts": { "dev": "vite --clearScreen false", @@ -15,7 +15,7 @@ "@tauri-apps/plugin-biometric": "^2.3.0", "@tauri-apps/plugin-cli": "^2.4.0", "@tauri-apps/plugin-clipboard-manager": "^2.3.0", - "@tauri-apps/plugin-dialog": "^2.3.1", + "@tauri-apps/plugin-dialog": "^2.3.2", "@tauri-apps/plugin-fs": "^2.4.1", "@tauri-apps/plugin-geolocation": "^2.2.0", "@tauri-apps/plugin-global-shortcut": "^2.3.0", diff --git a/examples/api/src-tauri/CHANGELOG.md b/examples/api/src-tauri/CHANGELOG.md index b0ad459b7..9fdae693e 100644 --- a/examples/api/src-tauri/CHANGELOG.md +++ b/examples/api/src-tauri/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## \[2.0.32] + +### Dependencies + +- Upgraded to `dialog@2.3.2` + ## \[2.0.31] ### Dependencies diff --git a/examples/api/src-tauri/Cargo.toml b/examples/api/src-tauri/Cargo.toml index d8e1ac6ed..b5e508e63 100644 --- a/examples/api/src-tauri/Cargo.toml +++ b/examples/api/src-tauri/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "api" publish = false -version = "2.0.31" +version = "2.0.32" description = "An example Tauri Application showcasing the api" edition = "2021" rust-version = { workspace = true } @@ -25,7 +25,7 @@ tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.4.1", features = "watch", ] } tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.3.0" } -tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.3.1" } +tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.3.2" } tauri-plugin-http = { path = "../../../plugins/http", features = [ "multipart", "cookies", diff --git a/examples/api/src/views/Store.svelte b/examples/api/src/views/Store.svelte index 6248b0099..b03f563db 100644 --- a/examples/api/src/views/Store.svelte +++ b/examples/api/src/views/Store.svelte @@ -1,71 +1,85 @@ @@ -82,14 +96,17 @@
- - - - + + + + +
+
Store at {path} on disk
+

Store Values

{#each Object.entries(cache) as [k, v]}
{k} = {v}
{/each} diff --git a/package.json b/package.json index 76b24b29f..55a7d97fe 100644 --- a/package.json +++ b/package.json @@ -11,19 +11,19 @@ "example:api:dev": "pnpm run --filter \"api\" tauri dev" }, "devDependencies": { - "@eslint/js": "9.31.0", + "@eslint/js": "9.32.0", "@rollup/plugin-node-resolve": "16.0.1", "@rollup/plugin-terser": "0.4.4", "@rollup/plugin-typescript": "12.1.4", "covector": "^0.12.4", - "eslint": "9.31.0", + "eslint": "9.32.0", "eslint-config-prettier": "10.1.8", "eslint-plugin-security": "3.0.1", "prettier": "3.6.2", - "rollup": "4.45.1", + "rollup": "4.46.2", "tslib": "2.8.1", - "typescript": "5.8.3", - "typescript-eslint": "8.38.0" + "typescript": "5.9.2", + "typescript-eslint": "8.39.0" }, "pnpm": { "overrides": { diff --git a/plugins/autostart/README.md b/plugins/autostart/README.md index cef284d64..f9f9dce11 100644 --- a/plugins/autostart/README.md +++ b/plugins/autostart/README.md @@ -33,21 +33,12 @@ tauri-plugin-autostart = { git = "https://github.com/tauri-apps/plugins-workspac You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-autostart # or npm add @tauri-apps/plugin-autostart # or yarn add @tauri-apps/plugin-autostart - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-autostart#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-autostart#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-autostart#v2 ``` ## Usage diff --git a/plugins/barcode-scanner/README.md b/plugins/barcode-scanner/README.md index 4abbef0ad..5da47abd5 100644 --- a/plugins/barcode-scanner/README.md +++ b/plugins/barcode-scanner/README.md @@ -33,21 +33,12 @@ tauri-plugin-barcode-scanner = { git = "https://github.com/tauri-apps/plugins-wo You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-barcode-scanner # or npm add @tauri-apps/plugin-barcode-scanner # or yarn add @tauri-apps/plugin-barcode-scanner - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-barcode-scanner#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-barcode-scanner#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-barcode-scanner#v2 ``` ## Usage diff --git a/plugins/biometric/README.md b/plugins/biometric/README.md index c7844f7bd..e2ad7efde 100644 --- a/plugins/biometric/README.md +++ b/plugins/biometric/README.md @@ -33,8 +33,6 @@ tauri-plugin-biometric = { git = "https://github.com/tauri-apps/plugins-workspac You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh @@ -43,13 +41,6 @@ pnpm add @tauri-apps/plugin-biometric npm add @tauri-apps/plugin-biometric # or yarn add @tauri-apps/plugin-biometric - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-biometric#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-biometric#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-biometric#v2 ``` ## Usage diff --git a/plugins/cli/README.md b/plugins/cli/README.md index 91a8080b8..30cd3449e 100644 --- a/plugins/cli/README.md +++ b/plugins/cli/README.md @@ -34,21 +34,12 @@ tauri-plugin-cli = { git = "https://github.com/tauri-apps/plugins-workspace", br You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-cli # or npm add @tauri-apps/plugin-cli # or yarn add @tauri-apps/plugin-cli - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-cli#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-cli#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-cli#v2 ``` ## Usage diff --git a/plugins/clipboard-manager/README.md b/plugins/clipboard-manager/README.md index 57b895266..b2353f971 100644 --- a/plugins/clipboard-manager/README.md +++ b/plugins/clipboard-manager/README.md @@ -33,21 +33,12 @@ tauri-plugin-clipboard-manager = { git = "https://github.com/tauri-apps/plugins- You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-clipboard-manager # or npm add @tauri-apps/plugin-clipboard-manager # or yarn add @tauri-apps/plugin-clipboard-manager - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-clipboard-manager#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-clipboard-manager#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-clipboard-manager#v2 ``` ## Usage diff --git a/plugins/deep-link/README.md b/plugins/deep-link/README.md index 61a36a80a..384dffecb 100644 --- a/plugins/deep-link/README.md +++ b/plugins/deep-link/README.md @@ -33,21 +33,12 @@ tauri-plugin-deep-link = { git = "https://github.com/tauri-apps/plugins-workspac You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-deep-link # or npm add @tauri-apps/plugin-deep-link # or yarn add @tauri-apps/plugin-deep-link - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-deep-link#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-deep-link#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-deep-link#v2 ``` ## Setting up diff --git a/plugins/dialog/CHANGELOG.md b/plugins/dialog/CHANGELOG.md index 455e65367..b5fe23475 100644 --- a/plugins/dialog/CHANGELOG.md +++ b/plugins/dialog/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## \[2.3.2] + +- [`af08c66f`](https://github.com/tauri-apps/plugins-workspace/commit/af08c66faafe0dffc4b0a80aef030cd3f0f89a9c) ([#2871](https://github.com/tauri-apps/plugins-workspace/pull/2871) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) Fixed an issue that caused the file picker not to open on Android when extension filters were set. + ## \[2.3.1] ### Dependencies diff --git a/plugins/dialog/Cargo.toml b/plugins/dialog/Cargo.toml index 18f5a54d8..c57ad66b9 100644 --- a/plugins/dialog/Cargo.toml +++ b/plugins/dialog/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tauri-plugin-dialog" -version = "2.3.1" +version = "2.3.2" description = "Native system dialogs for opening and saving files along with message dialogs on your Tauri application." edition = { workspace = true } authors = { workspace = true } diff --git a/plugins/dialog/README.md b/plugins/dialog/README.md index 63d71767d..8c4f0c220 100644 --- a/plugins/dialog/README.md +++ b/plugins/dialog/README.md @@ -33,21 +33,12 @@ tauri-plugin-dialog = { git = "https://github.com/tauri-apps/plugins-workspace", You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-dialog # or npm add @tauri-apps/plugin-dialog # or yarn add @tauri-apps/plugin-dialog - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-dialog#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-dialog#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-dialog#v2 ``` ## Usage diff --git a/plugins/dialog/android/src/main/java/DialogPlugin.kt b/plugins/dialog/android/src/main/java/DialogPlugin.kt index af0467d89..1d87a6e91 100644 --- a/plugins/dialog/android/src/main/java/DialogPlugin.kt +++ b/plugins/dialog/android/src/main/java/DialogPlugin.kt @@ -56,20 +56,18 @@ class DialogPlugin(private val activity: Activity): Plugin(activity) { try { val args = invoke.parseArgs(FilePickerOptions::class.java) val parsedTypes = parseFiltersOption(args.filters) - - val intent = if (parsedTypes.isNotEmpty()) { - val intent = Intent(Intent.ACTION_PICK) - setIntentMimeTypes(intent, parsedTypes) - intent - } else { - val intent = Intent(Intent.ACTION_GET_CONTENT) - intent.addCategory(Intent.CATEGORY_OPENABLE) - intent.type = "*/*" - intent + + // TODO: ACTION_OPEN_DOCUMENT ?? + val intent = Intent(Intent.ACTION_GET_CONTENT) + intent.addCategory(Intent.CATEGORY_OPENABLE) + intent.type = "*/*" + + if (parsedTypes.isNotEmpty()) { + intent.putExtra(Intent.EXTRA_MIME_TYPES, parsedTypes) } intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, args.multiple ?: false) - + startActivityForResult(invoke, intent, "filePickerResult") } catch (ex: Exception) { val message = ex.message ?: "Failed to pick file" @@ -115,7 +113,7 @@ class DialogPlugin(private val activity: Activity): Plugin(activity) { callResult.put("files", JSArray.from(uris.toTypedArray())) return callResult } - + private fun parseFiltersOption(filters: Array): Array { val mimeTypes = mutableListOf() for (filter in filters) { @@ -132,38 +130,10 @@ class DialogPlugin(private val activity: Activity): Plugin(activity) { return mimeTypes.toTypedArray() } - private fun setIntentMimeTypes(intent: Intent, mimeTypes: Array) { - if (mimeTypes.isNotEmpty()) { - var uniqueMimeKind = true - var mimeKind: String? = null - for (mime in mimeTypes) { - val kind = mime.split("/")[0] - if (mimeKind == null) { - mimeKind = kind - } else if (mimeKind != kind) { - uniqueMimeKind = false - } - } - - if (uniqueMimeKind) { - if (mimeTypes.size > 1) { - intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes) - intent.type = Intent.normalizeMimeType("$mimeKind/*") - } else { - intent.type = mimeTypes[0] - } - } else { - intent.type = "*/*" - } - } else { - intent.type = "*/*" - } - } - @Command fun showMessageDialog(invoke: Invoke) { val args = invoke.parseArgs(MessageOptions::class.java) - + if (activity.isFinishing) { invoke.reject("App is finishing") return @@ -179,7 +149,7 @@ class DialogPlugin(private val activity: Activity): Plugin(activity) { Handler(Looper.getMainLooper()) .post { val builder = AlertDialog.Builder(activity) - + if (args.title != null) { builder.setTitle(args.title) } @@ -213,10 +183,14 @@ class DialogPlugin(private val activity: Activity): Plugin(activity) { val parsedTypes = parseFiltersOption(args.filters) val intent = Intent(Intent.ACTION_CREATE_DOCUMENT) - setIntentMimeTypes(intent, parsedTypes) - intent.addCategory(Intent.CATEGORY_OPENABLE) intent.putExtra(Intent.EXTRA_TITLE, args.fileName ?: "") + intent.type = "*/*" + + if (parsedTypes.isNotEmpty()) { + intent.putExtra(Intent.EXTRA_MIME_TYPES, parsedTypes) + } + startActivityForResult(invoke, intent, "saveFileDialogResult") } catch (ex: Exception) { val message = ex.message ?: "Failed to pick save file" diff --git a/plugins/dialog/package.json b/plugins/dialog/package.json index a0bd27c19..4412461cc 100644 --- a/plugins/dialog/package.json +++ b/plugins/dialog/package.json @@ -1,6 +1,6 @@ { "name": "@tauri-apps/plugin-dialog", - "version": "2.3.1", + "version": "2.3.2", "license": "MIT OR Apache-2.0", "authors": [ "Tauri Programme within The Commons Conservancy" diff --git a/plugins/fs/Cargo.toml b/plugins/fs/Cargo.toml index 4231c1810..73df3d0e2 100644 --- a/plugins/fs/Cargo.toml +++ b/plugins/fs/Cargo.toml @@ -41,7 +41,7 @@ notify = { version = "8", optional = true, features = [ "serde", "serialization-compat-6", ] } -notify-debouncer-full = { version = "0.5", optional = true } +notify-debouncer-full = { version = "0.6", optional = true } dunce = { workspace = true } percent-encoding = "2" diff --git a/plugins/fs/README.md b/plugins/fs/README.md index 33031177a..d02c71d59 100644 --- a/plugins/fs/README.md +++ b/plugins/fs/README.md @@ -33,21 +33,12 @@ tauri-plugin-fs = { git = "https://github.com/tauri-apps/plugins-workspace", bra You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-fs # or npm add @tauri-apps/plugin-fs # or yarn add @tauri-apps/plugin-fs - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-fs#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-fs#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-fs#v2 ``` ## Usage diff --git a/plugins/geolocation/README.md b/plugins/geolocation/README.md index c7cb81fb1..3de41ef7f 100644 --- a/plugins/geolocation/README.md +++ b/plugins/geolocation/README.md @@ -33,8 +33,6 @@ tauri-plugin-geolocation = { git = "https://github.com/tauri-apps/plugins-worksp You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh @@ -43,13 +41,6 @@ pnpm add @tauri-apps/plugin-geolocation npm add @tauri-apps/plugin-geolocation # or yarn add @tauri-apps/plugin-geolocation - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-geolocation#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-geolocation#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-geolocation#v2 ``` ## Setting up diff --git a/plugins/global-shortcut/README.md b/plugins/global-shortcut/README.md index 53e7b19fe..9e215aea2 100644 --- a/plugins/global-shortcut/README.md +++ b/plugins/global-shortcut/README.md @@ -34,21 +34,12 @@ tauri-plugin-global-shortcut = { git = "https://github.com/tauri-apps/plugins-wo You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-global-shortcut # or npm add @tauri-apps/plugin-global-shortcut # or yarn add @tauri-apps/plugin-global-shortcut - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-global-shortcut#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-global-shortcut#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-global-shortcut#v2 ``` ## Usage diff --git a/plugins/haptics/README.md b/plugins/haptics/README.md index 44118812d..8a7cd8450 100644 --- a/plugins/haptics/README.md +++ b/plugins/haptics/README.md @@ -35,8 +35,6 @@ tauri-plugin-haptics = { git = "https://github.com/tauri-apps/plugins-workspace" You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh @@ -45,13 +43,6 @@ pnpm add @tauri-apps/plugin-haptics npm add @tauri-apps/plugin-haptics # or yarn add @tauri-apps/plugin-haptics - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-haptics#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-haptics#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-haptics#v2 ``` ## Usage diff --git a/plugins/http/README.md b/plugins/http/README.md index 5c3cd9c2e..086d7f257 100644 --- a/plugins/http/README.md +++ b/plugins/http/README.md @@ -33,21 +33,12 @@ tauri-plugin-http = { git = "https://github.com/tauri-apps/plugins-workspace", b You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-http # or npm add @tauri-apps/plugin-http # or yarn add @tauri-apps/plugin-http - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-http#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-http#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-http#v2 ``` ## Usage diff --git a/plugins/http/src/reqwest_cookie_store.rs b/plugins/http/src/reqwest_cookie_store.rs index 6a7c01861..0b71902bd 100644 --- a/plugins/http/src/reqwest_cookie_store.rs +++ b/plugins/http/src/reqwest_cookie_store.rs @@ -30,7 +30,7 @@ fn set_cookies( fn cookies(cookie_store: &CookieStore, url: &url::Url) -> Option { let s = cookie_store .get_request_values(url) - .map(|(name, value)| format!("{}={}", name, value)) + .map(|(name, value)| format!("{name}={value}")) .collect::>() .join("; "); diff --git a/plugins/http/src/scope.rs b/plugins/http/src/scope.rs index 2123f215a..e7638c2ce 100644 --- a/plugins/http/src/scope.rs +++ b/plugins/http/src/scope.rs @@ -52,7 +52,7 @@ impl<'de> Deserialize<'de> for Entry { }; Ok(Entry { url: parse_url_pattern(&url).map_err(|e| { - serde::de::Error::custom(format!("`{}` is not a valid URL pattern: {e}", url)) + serde::de::Error::custom(format!("`{url}` is not a valid URL pattern: {e}")) })?, }) }) diff --git a/plugins/log/README.md b/plugins/log/README.md index 462bdab9f..81ca9fd8d 100644 --- a/plugins/log/README.md +++ b/plugins/log/README.md @@ -35,21 +35,12 @@ If you want the single instance mechanism to only trigger for semver compatible Then you can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-log # or npm add @tauri-apps/plugin-log # or yarn add @tauri-apps/plugin-log - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-log#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-log#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-log#v2 ``` ## Usage diff --git a/plugins/nfc/README.md b/plugins/nfc/README.md index 1f8ceb6bd..ef1fa6f65 100644 --- a/plugins/nfc/README.md +++ b/plugins/nfc/README.md @@ -33,8 +33,6 @@ tauri-plugin-nfc = { git = "https://github.com/tauri-apps/plugins-workspace", br You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh @@ -43,13 +41,6 @@ pnpm add @tauri-apps/plugin-nfc npm add @tauri-apps/plugin-nfc # or yarn add @tauri-apps/plugin-nfc - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-nfc#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-nfc#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-nfc#v2 ``` ## Usage diff --git a/plugins/nfc/ios/Sources/NfcPlugin.swift b/plugins/nfc/ios/Sources/NfcPlugin.swift index 58d69a847..af1a68d58 100644 --- a/plugins/nfc/ios/Sources/NfcPlugin.swift +++ b/plugins/nfc/ios/Sources/NfcPlugin.swift @@ -149,6 +149,7 @@ class NfcPlugin: Plugin, NFCTagReaderSessionDelegate, NFCNDEFReaderSessionDelega func tagReaderSession(_ session: NFCTagReaderSession, didInvalidateWithError error: Error) { Logger.error("Tag reader session error \(error)") self.session?.invoke.reject("session invalidated with error: \(error)") + self.session = nil } func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage]) { @@ -200,6 +201,7 @@ class NfcPlugin: Plugin, NFCTagReaderSessionDelegate, NFCNDEFReaderSessionDelega } else { Logger.error("NDEF reader session error \(error)") self.session?.invoke.reject("session invalidated with error: \(error)") + self.session = nil } } diff --git a/plugins/notification/Cargo.toml b/plugins/notification/Cargo.toml index 5484f0956..10ef6267a 100644 --- a/plugins/notification/Cargo.toml +++ b/plugins/notification/Cargo.toml @@ -30,7 +30,7 @@ serde_json = { workspace = true } tauri = { workspace = true } log = { workspace = true } thiserror = { workspace = true } -rand = "0.8" +rand = "0.9" time = { version = "0.3", features = ["serde", "parsing", "formatting"] } url = { version = "2", features = ["serde"] } serde_repr = "0.1" diff --git a/plugins/notification/README.md b/plugins/notification/README.md index 046324930..b42d6f2f1 100644 --- a/plugins/notification/README.md +++ b/plugins/notification/README.md @@ -33,21 +33,12 @@ tauri-plugin-notification = { git = "https://github.com/tauri-apps/plugins-works You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-notification # or npm add @tauri-apps/plugin-notification # or yarn add @tauri-apps/plugin-notification - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-notification#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-notification#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-notification#v2 ``` ## Usage diff --git a/plugins/opener/README.md b/plugins/opener/README.md index 71509eaac..02050e932 100644 --- a/plugins/opener/README.md +++ b/plugins/opener/README.md @@ -33,8 +33,6 @@ tauri-plugin-opener = { git = "https://github.com/tauri-apps/plugins-workspace", You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh @@ -43,13 +41,6 @@ pnpm add @tauri-apps/plugin-opener npm add @tauri-apps/plugin-opener # or yarn add @tauri-apps/plugin-opener - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-opener#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-opener#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-opener#v2 ``` ## Usage diff --git a/plugins/os/README.md b/plugins/os/README.md index f66795046..d3f58b269 100644 --- a/plugins/os/README.md +++ b/plugins/os/README.md @@ -33,21 +33,12 @@ tauri-plugin-os = { git = "https://github.com/tauri-apps/plugins-workspace", bra You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-os # or npm add @tauri-apps/plugin-os # or yarn add @tauri-apps/plugin-os - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-os#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-os#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-os#v2 ``` ## Usage diff --git a/plugins/positioner/README.md b/plugins/positioner/README.md index 8a86160d6..8495b616f 100644 --- a/plugins/positioner/README.md +++ b/plugins/positioner/README.md @@ -35,21 +35,12 @@ tauri-plugin-positioner = { git = "https://github.com/tauri-apps/plugins-workspa You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-positioner # or npm add @tauri-apps/plugin-positioner # or yarn add @tauri-apps/plugin-positioner - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-positioner#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-positioner#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-positioner#v2 ``` ## Usage diff --git a/plugins/process/README.md b/plugins/process/README.md index 9f75bacb3..13a1c4e9d 100644 --- a/plugins/process/README.md +++ b/plugins/process/README.md @@ -33,21 +33,12 @@ tauri-plugin-process = { git = "https://github.com/tauri-apps/plugins-workspace" You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-process # or npm add @tauri-apps/plugin-process # or yarn add @tauri-apps/plugin-process - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-process#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-process#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-process#v2 ``` ## Usage diff --git a/plugins/shell/README.md b/plugins/shell/README.md index 5f309b8c9..132d1ccb8 100644 --- a/plugins/shell/README.md +++ b/plugins/shell/README.md @@ -33,21 +33,12 @@ tauri-plugin-shell = { git = "https://github.com/tauri-apps/plugins-workspace", You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-shell # or npm add @tauri-apps/plugin-shell # or yarn add @tauri-apps/plugin-shell - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-shell#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-shell#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-shell#v2 ``` ## Usage diff --git a/plugins/sql/README.md b/plugins/sql/README.md index 1df02e216..2e1e4ca46 100644 --- a/plugins/sql/README.md +++ b/plugins/sql/README.md @@ -35,21 +35,12 @@ branch = "v2" You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-sql # or npm add @tauri-apps/plugin-sql # or yarn add @tauri-apps/plugin-sql - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-sql#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-sql#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-sql#v2 ``` ## Usage diff --git a/plugins/store/README.md b/plugins/store/README.md index 8a2fcbf7d..8070ddfaa 100644 --- a/plugins/store/README.md +++ b/plugins/store/README.md @@ -33,21 +33,12 @@ tauri-plugin-store = { git = "https://github.com/tauri-apps/plugins-workspace", You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-store # or npm add @tauri-apps/plugin-store # or yarn add @tauri-apps/plugin-store - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-store#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-store#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-store#v2 ``` ## Usage diff --git a/plugins/store/api-iife.js b/plugins/store/api-iife.js index 9aa983b6a..f02ebd26d 100644 --- a/plugins/store/api-iife.js +++ b/plugins/store/api-iife.js @@ -1 +1 @@ -if("__TAURI__"in window){var __TAURI_PLUGIN_STORE__=function(t){"use strict";var e,a;function r(t,e=!1){return window.__TAURI_INTERNALS__.transformCallback(t,e)}async function s(t,e={},a){return window.__TAURI_INTERNALS__.invoke(t,e,a)}"function"==typeof SuppressedError&&SuppressedError;class i{get rid(){return function(t,e,a,r){if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===a?r:"a"===a?r.call(t):r?r.value:e.get(t)}(this,e,"f")}constructor(t){e.set(this,void 0),function(t,e,a){if("function"==typeof e||!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");e.set(t,a)}(this,e,t)}async close(){return s("plugin:resources|close",{rid:this.rid})}}async function n(t,e,a){const i={kind:"Any"};return s("plugin:event|listen",{event:t,target:i,handler:r(e)}).then((e=>async()=>async function(t,e){window.__TAURI_EVENT_PLUGIN_INTERNALS__.unregisterListener(t,e),await s("plugin:event|unlisten",{event:t,eventId:e})}(t,e)))}async function o(t,e){return await u.load(t,e)}e=new WeakMap,function(t){t.WINDOW_RESIZED="tauri://resize",t.WINDOW_MOVED="tauri://move",t.WINDOW_CLOSE_REQUESTED="tauri://close-requested",t.WINDOW_DESTROYED="tauri://destroyed",t.WINDOW_FOCUS="tauri://focus",t.WINDOW_BLUR="tauri://blur",t.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",t.WINDOW_THEME_CHANGED="tauri://theme-changed",t.WINDOW_CREATED="tauri://window-created",t.WEBVIEW_CREATED="tauri://webview-created",t.DRAG_ENTER="tauri://drag-enter",t.DRAG_OVER="tauri://drag-over",t.DRAG_DROP="tauri://drag-drop",t.DRAG_LEAVE="tauri://drag-leave"}(a||(a={}));class u extends i{constructor(t){super(t)}static async load(t,e){const a=await s("plugin:store|load",{path:t,...e});return new u(a)}static async get(t){return await s("plugin:store|get_store",{path:t}).then((t=>t?new u(t):null))}async set(t,e){await s("plugin:store|set",{rid:this.rid,key:t,value:e})}async get(t){const[e,a]=await s("plugin:store|get",{rid:this.rid,key:t});return a?e:void 0}async has(t){return await s("plugin:store|has",{rid:this.rid,key:t})}async delete(t){return await s("plugin:store|delete",{rid:this.rid,key:t})}async clear(){await s("plugin:store|clear",{rid:this.rid})}async reset(){await s("plugin:store|reset",{rid:this.rid})}async keys(){return await s("plugin:store|keys",{rid:this.rid})}async values(){return await s("plugin:store|values",{rid:this.rid})}async entries(){return await s("plugin:store|entries",{rid:this.rid})}async length(){return await s("plugin:store|length",{rid:this.rid})}async reload(){await s("plugin:store|reload",{rid:this.rid})}async save(){await s("plugin:store|save",{rid:this.rid})}async onKeyChange(t,e){return await n("store://change",(a=>{a.payload.resourceId===this.rid&&a.payload.key===t&&e(a.payload.exists?a.payload.value:void 0)}))}async onChange(t){return await n("store://change",(e=>{e.payload.resourceId===this.rid&&t(e.payload.key,e.payload.exists?e.payload.value:void 0)}))}}return t.LazyStore=class{get store(){return this._store||(this._store=o(this.path,this.options)),this._store}constructor(t,e){this.path=t,this.options=e}async init(){await this.store}async set(t,e){return(await this.store).set(t,e)}async get(t){return(await this.store).get(t)}async has(t){return(await this.store).has(t)}async delete(t){return(await this.store).delete(t)}async clear(){await(await this.store).clear()}async reset(){await(await this.store).reset()}async keys(){return(await this.store).keys()}async values(){return(await this.store).values()}async entries(){return(await this.store).entries()}async length(){return(await this.store).length()}async reload(){await(await this.store).reload()}async save(){await(await this.store).save()}async onKeyChange(t,e){return(await this.store).onKeyChange(t,e)}async onChange(t){return(await this.store).onChange(t)}async close(){this._store&&await(await this._store).close()}},t.Store=u,t.getStore=async function(t){return await u.get(t)},t.load=o,t}({});Object.defineProperty(window.__TAURI__,"store",{value:__TAURI_PLUGIN_STORE__})} +if("__TAURI__"in window){var __TAURI_PLUGIN_STORE__=function(t){"use strict";var e,a;function r(t,e=!1){return window.__TAURI_INTERNALS__.transformCallback(t,e)}async function s(t,e={},a){return window.__TAURI_INTERNALS__.invoke(t,e,a)}"function"==typeof SuppressedError&&SuppressedError;class i{get rid(){return function(t,e,a,r){if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===a?r:"a"===a?r.call(t):r?r.value:e.get(t)}(this,e,"f")}constructor(t){e.set(this,void 0),function(t,e,a){if("function"==typeof e||!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");e.set(t,a)}(this,e,t)}async close(){return s("plugin:resources|close",{rid:this.rid})}}async function n(t,e,a){const i={kind:"Any"};return s("plugin:event|listen",{event:t,target:i,handler:r(e)}).then((e=>async()=>async function(t,e){window.__TAURI_EVENT_PLUGIN_INTERNALS__.unregisterListener(t,e),await s("plugin:event|unlisten",{event:t,eventId:e})}(t,e)))}async function o(t,e){return await u.load(t,e)}e=new WeakMap,function(t){t.WINDOW_RESIZED="tauri://resize",t.WINDOW_MOVED="tauri://move",t.WINDOW_CLOSE_REQUESTED="tauri://close-requested",t.WINDOW_DESTROYED="tauri://destroyed",t.WINDOW_FOCUS="tauri://focus",t.WINDOW_BLUR="tauri://blur",t.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",t.WINDOW_THEME_CHANGED="tauri://theme-changed",t.WINDOW_CREATED="tauri://window-created",t.WEBVIEW_CREATED="tauri://webview-created",t.DRAG_ENTER="tauri://drag-enter",t.DRAG_OVER="tauri://drag-over",t.DRAG_DROP="tauri://drag-drop",t.DRAG_LEAVE="tauri://drag-leave"}(a||(a={}));class u extends i{constructor(t){super(t)}static async load(t,e){const a=await s("plugin:store|load",{path:t,options:e});return new u(a)}static async get(t){return await s("plugin:store|get_store",{path:t}).then((t=>t?new u(t):null))}async set(t,e){await s("plugin:store|set",{rid:this.rid,key:t,value:e})}async get(t){const[e,a]=await s("plugin:store|get",{rid:this.rid,key:t});return a?e:void 0}async has(t){return await s("plugin:store|has",{rid:this.rid,key:t})}async delete(t){return await s("plugin:store|delete",{rid:this.rid,key:t})}async clear(){await s("plugin:store|clear",{rid:this.rid})}async reset(){await s("plugin:store|reset",{rid:this.rid})}async keys(){return await s("plugin:store|keys",{rid:this.rid})}async values(){return await s("plugin:store|values",{rid:this.rid})}async entries(){return await s("plugin:store|entries",{rid:this.rid})}async length(){return await s("plugin:store|length",{rid:this.rid})}async reload(t){await s("plugin:store|reload",{rid:this.rid,...t})}async save(){await s("plugin:store|save",{rid:this.rid})}async onKeyChange(t,e){return await n("store://change",(a=>{a.payload.resourceId===this.rid&&a.payload.key===t&&e(a.payload.exists?a.payload.value:void 0)}))}async onChange(t){return await n("store://change",(e=>{e.payload.resourceId===this.rid&&t(e.payload.key,e.payload.exists?e.payload.value:void 0)}))}}return t.LazyStore=class{get store(){return this._store||(this._store=o(this.path,this.options)),this._store}constructor(t,e){this.path=t,this.options=e}async init(){await this.store}async set(t,e){return(await this.store).set(t,e)}async get(t){return(await this.store).get(t)}async has(t){return(await this.store).has(t)}async delete(t){return(await this.store).delete(t)}async clear(){await(await this.store).clear()}async reset(){await(await this.store).reset()}async keys(){return(await this.store).keys()}async values(){return(await this.store).values()}async entries(){return(await this.store).entries()}async length(){return(await this.store).length()}async reload(t){await(await this.store).reload(t)}async save(){await(await this.store).save()}async onKeyChange(t,e){return(await this.store).onKeyChange(t,e)}async onChange(t){return(await this.store).onChange(t)}async close(){this._store&&await(await this._store).close()}},t.Store=u,t.getStore=async function(t){return await u.get(t)},t.load=o,t}({});Object.defineProperty(window.__TAURI__,"store",{value:__TAURI_PLUGIN_STORE__})} diff --git a/plugins/store/guest-js/index.ts b/plugins/store/guest-js/index.ts index 1df89fd52..49853f11e 100644 --- a/plugins/store/guest-js/index.ts +++ b/plugins/store/guest-js/index.ts @@ -18,6 +18,10 @@ interface ChangePayload { * Options to create a store */ export type StoreOptions = { + /** + * Default value of the store + */ + defaults: { [key: string]: unknown } /** * Auto save on modification with debounce duration in milliseconds, it's 100ms by default, pass in `false` to disable it */ @@ -34,6 +38,10 @@ export type StoreOptions = { * Force create a new store with default values even if it already exists. */ createNew?: boolean + /** + * When creating the store, override the store with the on-disk state if it exists, ignoring defaults + */ + overrideDefaults?: boolean } /** @@ -145,8 +153,8 @@ export class LazyStore implements IStore { return (await this.store).length() } - async reload(): Promise { - await (await this.store).reload() + async reload(options?: ReloadOptions): Promise { + await (await this.store).reload(options) } async save(): Promise { @@ -196,7 +204,7 @@ export class Store extends Resource implements IStore { static async load(path: string, options?: StoreOptions): Promise { const rid = await invoke('plugin:store|load', { path, - ...options + options }) return new Store(rid) } @@ -280,8 +288,8 @@ export class Store extends Resource implements IStore { return await invoke('plugin:store|length', { rid: this.rid }) } - async reload(): Promise { - await invoke('plugin:store|reload', { rid: this.rid }) + async reload(options?: ReloadOptions): Promise { + await invoke('plugin:store|reload', { rid: this.rid, ...options }) } async save(): Promise { @@ -396,10 +404,15 @@ interface IStore { * * This method is useful if the on-disk state was edited by the user and you want to synchronize the changes. * - * Note: This method does not emit change events. + * Note: + * - This method loads the data and merges it with the current store, + * this behavior will be changed to resetting to default first and then merging with the on-disk state in v3, + * to fully match the store with the on-disk state, set {@linkcode ReloadOptions.ignoreDefaults} to `true` + * - This method does not emit change events. + * * @returns */ - reload(): Promise + reload(options?: ReloadOptions): Promise /** * Saves the store to disk at the store's `path`. @@ -437,3 +450,13 @@ interface IStore { */ close(): Promise } + +/** + * Options to {@linkcode IStore.reload} a {@linkcode IStore} + */ +export type ReloadOptions = { + /** + * To fully match the store with the on-disk state, ignoring defaults + */ + ignoreDefaults?: boolean +} diff --git a/plugins/store/src/lib.rs b/plugins/store/src/lib.rs index 0e59cd819..0223f9c21 100644 --- a/plugins/store/src/lib.rs +++ b/plugins/store/src/lib.rs @@ -53,17 +53,36 @@ enum AutoSave { Bool(bool), } +#[derive(Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +struct LoadStoreOptions { + defaults: Option>, + auto_save: Option, + serialize_fn_name: Option, + deserialize_fn_name: Option, + #[serde(default)] + create_new: bool, + #[serde(default)] + override_defaults: bool, +} + fn builder( app: AppHandle, store_state: State<'_, StoreState>, path: PathBuf, - auto_save: Option, - serialize_fn_name: Option, - deserialize_fn_name: Option, - create_new: bool, + options: Option, ) -> Result> { let mut builder = app.store_builder(path); - if let Some(auto_save) = auto_save { + + let Some(options) = options else { + return Ok(builder); + }; + + if let Some(defaults) = options.defaults { + builder = builder.defaults(defaults); + } + + if let Some(auto_save) = options.auto_save { match auto_save { AutoSave::DebounceDuration(duration) => { builder = builder.auto_save(Duration::from_millis(duration)); @@ -75,7 +94,7 @@ fn builder( } } - if let Some(serialize_fn_name) = serialize_fn_name { + if let Some(serialize_fn_name) = options.serialize_fn_name { let serialize_fn = store_state .serialize_fns .get(&serialize_fn_name) @@ -83,7 +102,7 @@ fn builder( builder = builder.serialize(*serialize_fn); } - if let Some(deserialize_fn_name) = deserialize_fn_name { + if let Some(deserialize_fn_name) = options.deserialize_fn_name { let deserialize_fn = store_state .deserialize_fns .get(&deserialize_fn_name) @@ -91,10 +110,14 @@ fn builder( builder = builder.deserialize(*deserialize_fn); } - if create_new { + if options.create_new { builder = builder.create_new(); } + if options.override_defaults { + builder = builder.override_defaults(); + } + Ok(builder) } @@ -103,20 +126,9 @@ async fn load( app: AppHandle, store_state: State<'_, StoreState>, path: PathBuf, - auto_save: Option, - serialize_fn_name: Option, - deserialize_fn_name: Option, - create_new: Option, + options: Option, ) -> Result { - let builder = builder( - app, - store_state, - path, - auto_save, - serialize_fn_name, - deserialize_fn_name, - create_new.unwrap_or_default(), - )?; + let builder = builder(app, store_state, path, options)?; let (_, rid) = builder.build_inner()?; Ok(rid) } @@ -209,9 +221,17 @@ async fn length(app: AppHandle, rid: ResourceId) -> Result } #[tauri::command] -async fn reload(app: AppHandle, rid: ResourceId) -> Result<()> { +async fn reload( + app: AppHandle, + rid: ResourceId, + ignore_defaults: Option, +) -> Result<()> { let store = app.resources_table().get::>(rid)?; - store.reload() + if ignore_defaults.unwrap_or_default() { + store.reload_ignore_defaults() + } else { + store.reload() + } } #[tauri::command] diff --git a/plugins/store/src/store.rs b/plugins/store/src/store.rs index 1dc5e1d21..f8b0c4604 100644 --- a/plugins/store/src/store.rs +++ b/plugins/store/src/store.rs @@ -39,6 +39,7 @@ pub struct StoreBuilder { deserialize_fn: DeserializeFn, auto_save: Option, create_new: bool, + override_defaults: bool, } impl StoreBuilder { @@ -66,6 +67,7 @@ impl StoreBuilder { deserialize_fn, auto_save: Some(Duration::from_millis(100)), create_new: false, + override_defaults: false, } } @@ -178,6 +180,12 @@ impl StoreBuilder { self } + /// Override the store values when creating the store, ignoring defaults. + pub fn override_defaults(mut self) -> Self { + self.override_defaults = true; + self + } + pub(crate) fn build_inner(mut self) -> crate::Result<(Arc>, ResourceId)> { let stores = self.app.state::().stores.clone(); let mut stores = stores.lock().unwrap(); @@ -205,7 +213,11 @@ impl StoreBuilder { ); if !self.create_new { - let _ = store_inner.load(); + if self.override_defaults { + let _ = store_inner.load_ignore_defaults(); + } else { + let _ = store_inner.load(); + } } let store = Store { @@ -284,6 +296,8 @@ impl StoreInner { } /// Update the store from the on-disk state + /// + /// Note: This method loads the data and merges it with the current store pub fn load(&mut self) -> crate::Result<()> { let bytes = fs::read(&self.path)?; @@ -293,6 +307,13 @@ impl StoreInner { Ok(()) } + /// Load the store from the on-disk state, ignoring defaults + pub fn load_ignore_defaults(&mut self) -> crate::Result<()> { + let bytes = fs::read(&self.path)?; + self.cache = (self.deserialize_fn)(&bytes).map_err(crate::Error::Deserialize)?; + Ok(()) + } + /// Inserts a key-value pair into the store. pub fn set(&mut self, key: impl Into, value: impl Into) { let key = key.into(); @@ -499,10 +520,24 @@ impl Store { } /// Update the store from the on-disk state + /// + /// Note: + /// - This method loads the data and merges it with the current store, + /// this behavior will be changed to resetting to default first and then merging with the on-disk state in v3, + /// to fully match the store with the on-disk state, + /// use [`reload_override_defaults`](Self::reload_override_defaults) instead + /// - This method does not emit change events pub fn reload(&self) -> crate::Result<()> { self.store.lock().unwrap().load() } + /// Load the store from the on-disk state, ignoring defaults + /// + /// Note: This method does not emit change events + pub fn reload_ignore_defaults(&self) -> crate::Result<()> { + self.store.lock().unwrap().load_ignore_defaults() + } + /// Saves the store to disk at the store's `path`. pub fn save(&self) -> crate::Result<()> { if let Some(sender) = self.auto_save_debounce_sender.lock().unwrap().take() { diff --git a/plugins/stronghold/Cargo.toml b/plugins/stronghold/Cargo.toml index cdc7384c3..7a8229f37 100644 --- a/plugins/stronghold/Cargo.toml +++ b/plugins/stronghold/Cargo.toml @@ -34,11 +34,11 @@ iota-crypto = "0.23" hex = "0.4" zeroize = { version = "1", features = ["zeroize_derive"] } rust-argon2 = { version = "2", optional = true } -rand_chacha = { version = "0.3.1", optional = true } -rand_core = { version = "0.6.4", features = ["getrandom"], optional = true } +rand_chacha = { version = "0.9", optional = true } +rand_core = { version = "0.9", features = ["os_rng"], optional = true } [dev-dependencies] -rand = "0.8" +rand = "0.9" rusty-fork = "0.3" [features] diff --git a/plugins/stronghold/README.md b/plugins/stronghold/README.md index 6dd165195..18d3ed7c1 100644 --- a/plugins/stronghold/README.md +++ b/plugins/stronghold/README.md @@ -41,13 +41,6 @@ pnpm add @tauri-apps/plugin-stronghold npm add @tauri-apps/plugin-stronghold # or yarn add @tauri-apps/plugin-stronghold - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-stronghold#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-stronghold#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-stronghold#v2 ``` ## Usage diff --git a/plugins/stronghold/src/kdf.rs b/plugins/stronghold/src/kdf.rs index 94e7b677e..2389b1c41 100644 --- a/plugins/stronghold/src/kdf.rs +++ b/plugins/stronghold/src/kdf.rs @@ -32,7 +32,7 @@ fn create_or_get_salt(salt: &mut [u8], salt_path: &Path) { salt.clone_from_slice(&tmp); } else { // Generate new salt - let mut gen = ChaCha20Rng::from_entropy(); + let mut gen = ChaCha20Rng::from_os_rng(); gen.fill_bytes(salt); std::fs::write(salt_path, salt).expect("Failed to write salt for Stronghold") } diff --git a/plugins/updater/README.md b/plugins/updater/README.md index 79fea467d..b3afb818a 100644 --- a/plugins/updater/README.md +++ b/plugins/updater/README.md @@ -34,21 +34,12 @@ tauri-plugin-updater = { git = "https://github.com/tauri-apps/plugins-workspace" You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-updater # or npm add @tauri-apps/plugin-updater # or yarn add @tauri-apps/plugin-updater - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-updater#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-updater#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-updater#v2 ``` ## Usage diff --git a/plugins/upload/README.md b/plugins/upload/README.md index d6169097d..5ed02aa1a 100644 --- a/plugins/upload/README.md +++ b/plugins/upload/README.md @@ -34,21 +34,12 @@ tauri-plugin-upload = { git = "https://github.com/tauri-apps/plugins-workspace", You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-upload # or npm add @tauri-apps/plugin-upload # or yarn add @tauri-apps/plugin-upload - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-upload#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-upload#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-upload#v2 ``` ## Usage diff --git a/plugins/websocket/Cargo.toml b/plugins/websocket/Cargo.toml index a0a5b9291..40db186ee 100644 --- a/plugins/websocket/Cargo.toml +++ b/plugins/websocket/Cargo.toml @@ -31,7 +31,7 @@ tauri = { workspace = true } log = { workspace = true } thiserror = { workspace = true } http = "1" -rand = "0.8" +rand = "0.9" futures-util = "0.3" tokio = { version = "1", features = ["net", "sync"] } tokio-tungstenite = { version = "0.27" } diff --git a/plugins/websocket/README.md b/plugins/websocket/README.md index ec5fce9b5..3d9e7a848 100644 --- a/plugins/websocket/README.md +++ b/plugins/websocket/README.md @@ -33,21 +33,12 @@ tauri-plugin-websocket = { git = "https://github.com/tauri-apps/plugins-workspac You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-websocket # or npm add @tauri-apps/plugin-websocket # or yarn add @tauri-apps/plugin-websocket - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-websocket#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-websocket#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-websocket#v2 ``` ## Usage diff --git a/plugins/window-state/README.md b/plugins/window-state/README.md index 4af93de25..0d74413ee 100644 --- a/plugins/window-state/README.md +++ b/plugins/window-state/README.md @@ -33,21 +33,12 @@ tauri-plugin-window-state = { git = "https://github.com/tauri-apps/plugins-works You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - ```sh pnpm add @tauri-apps/plugin-window-state # or npm add @tauri-apps/plugin-window-state # or yarn add @tauri-apps/plugin-window-state - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-window-state#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-window-state#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-window-state#v2 ``` ## Usage diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 82ee18c91..1292a95b0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,26 +12,26 @@ importers: .: devDependencies: '@eslint/js': - specifier: 9.31.0 - version: 9.31.0 + specifier: 9.32.0 + version: 9.32.0 '@rollup/plugin-node-resolve': specifier: 16.0.1 - version: 16.0.1(rollup@4.45.1) + version: 16.0.1(rollup@4.46.2) '@rollup/plugin-terser': specifier: 0.4.4 - version: 0.4.4(rollup@4.45.1) + version: 0.4.4(rollup@4.46.2) '@rollup/plugin-typescript': specifier: 12.1.4 - version: 12.1.4(rollup@4.45.1)(tslib@2.8.1)(typescript@5.8.3) + version: 12.1.4(rollup@4.46.2)(tslib@2.8.1)(typescript@5.9.2) covector: specifier: ^0.12.4 version: 0.12.4(mocha@10.8.2) eslint: - specifier: 9.31.0 - version: 9.31.0(jiti@2.4.2) + specifier: 9.32.0 + version: 9.32.0(jiti@2.4.2) eslint-config-prettier: specifier: 10.1.8 - version: 10.1.8(eslint@9.31.0(jiti@2.4.2)) + version: 10.1.8(eslint@9.32.0(jiti@2.4.2)) eslint-plugin-security: specifier: 3.0.1 version: 3.0.1 @@ -39,17 +39,17 @@ importers: specifier: 3.6.2 version: 3.6.2 rollup: - specifier: 4.45.1 - version: 4.45.1 + specifier: 4.46.2 + version: 4.46.2 tslib: specifier: 2.8.1 version: 2.8.1 typescript: - specifier: 5.8.3 - version: 5.8.3 + specifier: 5.9.2 + version: 5.9.2 typescript-eslint: - specifier: 8.38.0 - version: 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + specifier: 8.39.0 + version: 8.39.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) examples/api: dependencies: @@ -69,7 +69,7 @@ importers: specifier: ^2.3.0 version: link:../../plugins/clipboard-manager '@tauri-apps/plugin-dialog': - specifier: ^2.3.1 + specifier: ^2.3.2 version: link:../../plugins/dialog '@tauri-apps/plugin-fs': specifier: ^2.4.1 @@ -140,7 +140,7 @@ importers: version: 5.28.2 unocss: specifier: ^66.3.3 - version: 66.3.3(postcss@8.5.6)(vite@7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.8.3)) + version: 66.3.3(postcss@8.5.6)(vite@7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.9.2)) vite: specifier: ^7.0.4 version: 7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2) @@ -195,7 +195,7 @@ importers: version: 2.7.1 typescript: specifier: ^5.7.3 - version: 5.8.3 + version: 5.9.2 vite: specifier: ^7.0.4 version: 7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2) @@ -315,7 +315,7 @@ importers: version: 2.7.1 typescript: specifier: ^5.7.3 - version: 5.8.3 + version: 5.9.2 vite: specifier: ^7.0.4 version: 7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2) @@ -355,7 +355,7 @@ importers: version: 2.7.1 typescript: specifier: ^5.7.3 - version: 5.8.3 + version: 5.9.2 vite: specifier: ^7.0.4 version: 7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2) @@ -637,16 +637,16 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.31.0': - resolution: {integrity: sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==} + '@eslint/js@9.32.0': + resolution: {integrity: sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.3.3': - resolution: {integrity: sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag==} + '@eslint/plugin-kit@0.3.4': + resolution: {integrity: sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@humanfs/core@0.19.1': @@ -761,103 +761,103 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.45.1': - resolution: {integrity: sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==} + '@rollup/rollup-android-arm-eabi@4.46.2': + resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.45.1': - resolution: {integrity: sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==} + '@rollup/rollup-android-arm64@4.46.2': + resolution: {integrity: sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.45.1': - resolution: {integrity: sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==} + '@rollup/rollup-darwin-arm64@4.46.2': + resolution: {integrity: sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.45.1': - resolution: {integrity: sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==} + '@rollup/rollup-darwin-x64@4.46.2': + resolution: {integrity: sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.45.1': - resolution: {integrity: sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==} + '@rollup/rollup-freebsd-arm64@4.46.2': + resolution: {integrity: sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.45.1': - resolution: {integrity: sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==} + '@rollup/rollup-freebsd-x64@4.46.2': + resolution: {integrity: sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.45.1': - resolution: {integrity: sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==} + '@rollup/rollup-linux-arm-gnueabihf@4.46.2': + resolution: {integrity: sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.45.1': - resolution: {integrity: sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==} + '@rollup/rollup-linux-arm-musleabihf@4.46.2': + resolution: {integrity: sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.45.1': - resolution: {integrity: sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==} + '@rollup/rollup-linux-arm64-gnu@4.46.2': + resolution: {integrity: sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.45.1': - resolution: {integrity: sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==} + '@rollup/rollup-linux-arm64-musl@4.46.2': + resolution: {integrity: sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.45.1': - resolution: {integrity: sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==} + '@rollup/rollup-linux-loongarch64-gnu@4.46.2': + resolution: {integrity: sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.45.1': - resolution: {integrity: sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==} + '@rollup/rollup-linux-ppc64-gnu@4.46.2': + resolution: {integrity: sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.45.1': - resolution: {integrity: sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==} + '@rollup/rollup-linux-riscv64-gnu@4.46.2': + resolution: {integrity: sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.45.1': - resolution: {integrity: sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==} + '@rollup/rollup-linux-riscv64-musl@4.46.2': + resolution: {integrity: sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.45.1': - resolution: {integrity: sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==} + '@rollup/rollup-linux-s390x-gnu@4.46.2': + resolution: {integrity: sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.45.1': - resolution: {integrity: sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==} + '@rollup/rollup-linux-x64-gnu@4.46.2': + resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.45.1': - resolution: {integrity: sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==} + '@rollup/rollup-linux-x64-musl@4.46.2': + resolution: {integrity: sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.45.1': - resolution: {integrity: sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==} + '@rollup/rollup-win32-arm64-msvc@4.46.2': + resolution: {integrity: sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.45.1': - resolution: {integrity: sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==} + '@rollup/rollup-win32-ia32-msvc@4.46.2': + resolution: {integrity: sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.45.1': - resolution: {integrity: sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==} + '@rollup/rollup-win32-x64-msvc@4.46.2': + resolution: {integrity: sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==} cpu: [x64] os: [win32] @@ -970,63 +970,63 @@ packages: '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - '@typescript-eslint/eslint-plugin@8.38.0': - resolution: {integrity: sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA==} + '@typescript-eslint/eslint-plugin@8.39.0': + resolution: {integrity: sha512-bhEz6OZeUR+O/6yx9Jk6ohX6H9JSFTaiY0v9/PuKT3oGK0rn0jNplLmyFUGV+a9gfYnVNwGDwS/UkLIuXNb2Rw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.38.0 + '@typescript-eslint/parser': ^8.39.0 eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.38.0': - resolution: {integrity: sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ==} + '@typescript-eslint/parser@8.39.0': + resolution: {integrity: sha512-g3WpVQHngx0aLXn6kfIYCZxM6rRJlWzEkVpqEFLT3SgEDsp9cpCbxxgwnE504q4H+ruSDh/VGS6nqZIDynP+vg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.38.0': - resolution: {integrity: sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==} + '@typescript-eslint/project-service@8.39.0': + resolution: {integrity: sha512-CTzJqaSq30V/Z2Og9jogzZt8lJRR5TKlAdXmWgdu4hgcC9Kww5flQ+xFvMxIBWVNdxJO7OifgdOK4PokMIWPew==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.38.0': - resolution: {integrity: sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==} + '@typescript-eslint/scope-manager@8.39.0': + resolution: {integrity: sha512-8QOzff9UKxOh6npZQ/4FQu4mjdOCGSdO3p44ww0hk8Vu+IGbg0tB/H1LcTARRDzGCC8pDGbh2rissBuuoPgH8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.38.0': - resolution: {integrity: sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==} + '@typescript-eslint/tsconfig-utils@8.39.0': + resolution: {integrity: sha512-Fd3/QjmFV2sKmvv3Mrj8r6N8CryYiCS8Wdb/6/rgOXAWGcFuc+VkQuG28uk/4kVNVZBQuuDHEDUpo/pQ32zsIQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.38.0': - resolution: {integrity: sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg==} + '@typescript-eslint/type-utils@8.39.0': + resolution: {integrity: sha512-6B3z0c1DXVT2vYA9+z9axjtc09rqKUPRmijD5m9iv8iQpHBRYRMBcgxSiKTZKm6FwWw1/cI4v6em35OsKCiN5Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.38.0': - resolution: {integrity: sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==} + '@typescript-eslint/types@8.39.0': + resolution: {integrity: sha512-ArDdaOllnCj3yn/lzKn9s0pBQYmmyme/v1HbGIGB0GB/knFI3fWMHloC+oYTJW46tVbYnGKTMDK4ah1sC2v0Kg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.38.0': - resolution: {integrity: sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==} + '@typescript-eslint/typescript-estree@8.39.0': + resolution: {integrity: sha512-ndWdiflRMvfIgQRpckQQLiB5qAKQ7w++V4LlCHwp62eym1HLB/kw7D9f2e8ytONls/jt89TEasgvb+VwnRprsw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.38.0': - resolution: {integrity: sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==} + '@typescript-eslint/utils@8.39.0': + resolution: {integrity: sha512-4GVSvNA0Vx1Ktwvf4sFE+exxJ3QGUorQG1/A5mRfRNZtkBT2xrA/BCO2H0eALx/PnvCS6/vmYwRdDA41EoffkQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.38.0': - resolution: {integrity: sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==} + '@typescript-eslint/visitor-keys@8.39.0': + resolution: {integrity: sha512-ldgiJ+VAhQCfIjeOgu8Kj5nSxds0ktPOSO9p4+0VDH2R2pLvQraaM5Oen2d7NxzMCm+Sn/vJT+mv2H5u6b/3fA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@unocss/astro@66.3.3': @@ -1406,8 +1406,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.31.0: - resolution: {integrity: sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==} + eslint@9.32.0: + resolution: {integrity: sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -1967,8 +1967,8 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rollup@4.45.1: - resolution: {integrity: sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==} + rollup@4.46.2: + resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2122,15 +2122,15 @@ packages: resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} engines: {node: '>=8'} - typescript-eslint@8.38.0: - resolution: {integrity: sha512-FsZlrYK6bPDGoLeZRuvx2v6qrM03I0U0SnfCLPs/XCCPCFD80xU9Pg09H/K+XFa68uJuZo7l/Xhs+eDRg2l3hg==} + typescript-eslint@8.39.0: + resolution: {integrity: sha512-lH8FvtdtzcHJCkMOKnN73LIn6SLTpoojgJqDAxPm1jCR14eWSGPX8ul/gggBdPMk/d5+u9V854vTYQ8T5jF/1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + typescript@5.9.2: + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} engines: {node: '>=14.17'} hasBin: true @@ -2529,9 +2529,9 @@ snapshots: '@esbuild/win32-x64@0.25.6': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.31.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0(jiti@2.4.2))': dependencies: - eslint: 9.31.0(jiti@2.4.2) + eslint: 9.32.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -2564,11 +2564,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.31.0': {} + '@eslint/js@9.32.0': {} '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.3.3': + '@eslint/plugin-kit@0.3.4': dependencies: '@eslint/core': 0.15.1 levn: 0.4.1 @@ -2649,99 +2649,99 @@ snapshots: dependencies: quansync: 0.2.10 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.45.1)': + '@rollup/plugin-node-resolve@16.0.1(rollup@4.46.2)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.45.1) + '@rollup/pluginutils': 5.1.4(rollup@4.46.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.45.1 + rollup: 4.46.2 - '@rollup/plugin-terser@0.4.4(rollup@4.45.1)': + '@rollup/plugin-terser@0.4.4(rollup@4.46.2)': dependencies: serialize-javascript: 6.0.2 smob: 1.5.0 terser: 5.39.0 optionalDependencies: - rollup: 4.45.1 + rollup: 4.46.2 - '@rollup/plugin-typescript@12.1.4(rollup@4.45.1)(tslib@2.8.1)(typescript@5.8.3)': + '@rollup/plugin-typescript@12.1.4(rollup@4.46.2)(tslib@2.8.1)(typescript@5.9.2)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.45.1) + '@rollup/pluginutils': 5.1.4(rollup@4.46.2) resolve: 1.22.10 - typescript: 5.8.3 + typescript: 5.9.2 optionalDependencies: - rollup: 4.45.1 + rollup: 4.46.2 tslib: 2.8.1 - '@rollup/pluginutils@5.1.4(rollup@4.45.1)': + '@rollup/pluginutils@5.1.4(rollup@4.46.2)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.45.1 + rollup: 4.46.2 - '@rollup/rollup-android-arm-eabi@4.45.1': + '@rollup/rollup-android-arm-eabi@4.46.2': optional: true - '@rollup/rollup-android-arm64@4.45.1': + '@rollup/rollup-android-arm64@4.46.2': optional: true - '@rollup/rollup-darwin-arm64@4.45.1': + '@rollup/rollup-darwin-arm64@4.46.2': optional: true - '@rollup/rollup-darwin-x64@4.45.1': + '@rollup/rollup-darwin-x64@4.46.2': optional: true - '@rollup/rollup-freebsd-arm64@4.45.1': + '@rollup/rollup-freebsd-arm64@4.46.2': optional: true - '@rollup/rollup-freebsd-x64@4.45.1': + '@rollup/rollup-freebsd-x64@4.46.2': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.45.1': + '@rollup/rollup-linux-arm-gnueabihf@4.46.2': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.45.1': + '@rollup/rollup-linux-arm-musleabihf@4.46.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.45.1': + '@rollup/rollup-linux-arm64-gnu@4.46.2': optional: true - '@rollup/rollup-linux-arm64-musl@4.45.1': + '@rollup/rollup-linux-arm64-musl@4.46.2': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.45.1': + '@rollup/rollup-linux-loongarch64-gnu@4.46.2': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.45.1': + '@rollup/rollup-linux-ppc64-gnu@4.46.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.45.1': + '@rollup/rollup-linux-riscv64-gnu@4.46.2': optional: true - '@rollup/rollup-linux-riscv64-musl@4.45.1': + '@rollup/rollup-linux-riscv64-musl@4.46.2': optional: true - '@rollup/rollup-linux-s390x-gnu@4.45.1': + '@rollup/rollup-linux-s390x-gnu@4.46.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.45.1': + '@rollup/rollup-linux-x64-gnu@4.46.2': optional: true - '@rollup/rollup-linux-x64-musl@4.45.1': + '@rollup/rollup-linux-x64-musl@4.46.2': optional: true - '@rollup/rollup-win32-arm64-msvc@4.45.1': + '@rollup/rollup-win32-arm64-msvc@4.46.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.45.1': + '@rollup/rollup-win32-ia32-msvc@4.46.2': optional: true - '@rollup/rollup-win32-x64-msvc@4.45.1': + '@rollup/rollup-win32-x64-msvc@4.46.2': optional: true '@sveltejs/acorn-typescript@1.0.5(acorn@8.15.0)': @@ -2831,104 +2831,104 @@ snapshots: '@types/unist@2.0.11': {} - '@typescript-eslint/eslint-plugin@8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.38.0 - '@typescript-eslint/type-utils': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.38.0 - eslint: 9.31.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.39.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.39.0 + '@typescript-eslint/type-utils': 8.39.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.39.0 + eslint: 9.32.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 7.0.4 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.38.0 - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.38.0 + '@typescript-eslint/scope-manager': 8.39.0 + '@typescript-eslint/types': 8.39.0 + '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.39.0 debug: 4.4.1(supports-color@8.1.1) - eslint: 9.31.0(jiti@2.4.2) - typescript: 5.8.3 + eslint: 9.32.0(jiti@2.4.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.38.0(typescript@5.8.3)': + '@typescript-eslint/project-service@8.39.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.8.3) - '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/tsconfig-utils': 8.39.0(typescript@5.9.2) + '@typescript-eslint/types': 8.39.0 debug: 4.4.1(supports-color@8.1.1) - typescript: 5.8.3 + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.38.0': + '@typescript-eslint/scope-manager@8.39.0': dependencies: - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/visitor-keys': 8.38.0 + '@typescript-eslint/types': 8.39.0 + '@typescript-eslint/visitor-keys': 8.39.0 - '@typescript-eslint/tsconfig-utils@8.38.0(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.39.0(typescript@5.9.2)': dependencies: - typescript: 5.8.3 + typescript: 5.9.2 - '@typescript-eslint/type-utils@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.39.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/types': 8.39.0 + '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) debug: 4.4.1(supports-color@8.1.1) - eslint: 9.31.0(jiti@2.4.2) - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + eslint: 9.32.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.38.0': {} + '@typescript-eslint/types@8.39.0': {} - '@typescript-eslint/typescript-estree@8.38.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.39.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/project-service': 8.38.0(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.8.3) - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/visitor-keys': 8.38.0 + '@typescript-eslint/project-service': 8.39.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.39.0(typescript@5.9.2) + '@typescript-eslint/types': 8.39.0 + '@typescript-eslint/visitor-keys': 8.39.0 debug: 4.4.1(supports-color@8.1.1) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.1 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/utils@8.39.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.31.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.38.0 - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) - eslint: 9.31.0(jiti@2.4.2) - typescript: 5.8.3 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.39.0 + '@typescript-eslint/types': 8.39.0 + '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) + eslint: 9.32.0(jiti@2.4.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.38.0': + '@typescript-eslint/visitor-keys@8.39.0': dependencies: - '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/types': 8.39.0 eslint-visitor-keys: 4.2.1 - '@unocss/astro@66.3.3(vite@7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.8.3))': + '@unocss/astro@66.3.3(vite@7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.9.2))': dependencies: '@unocss/core': 66.3.3 '@unocss/reset': 66.3.3 - '@unocss/vite': 66.3.3(vite@7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.8.3)) + '@unocss/vite': 66.3.3(vite@7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.9.2)) optionalDependencies: vite: 7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2) transitivePeerDependencies: @@ -2963,14 +2963,14 @@ snapshots: '@unocss/extractor-svelte@66.3.3': {} - '@unocss/inspector@66.3.3(vue@3.5.13(typescript@5.8.3))': + '@unocss/inspector@66.3.3(vue@3.5.13(typescript@5.9.2))': dependencies: '@unocss/core': 66.3.3 '@unocss/rule-utils': 66.3.3 colorette: 2.0.20 gzip-size: 6.0.0 sirv: 3.0.1 - vue-flow-layout: 0.1.1(vue@3.5.13(typescript@5.8.3)) + vue-flow-layout: 0.1.1(vue@3.5.13(typescript@5.9.2)) transitivePeerDependencies: - vue @@ -3063,12 +3063,12 @@ snapshots: dependencies: '@unocss/core': 66.3.3 - '@unocss/vite@66.3.3(vite@7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.8.3))': + '@unocss/vite@66.3.3(vite@7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.9.2))': dependencies: '@ampproject/remapping': 2.3.0 '@unocss/config': 66.3.3 '@unocss/core': 66.3.3 - '@unocss/inspector': 66.3.3(vue@3.5.13(typescript@5.8.3)) + '@unocss/inspector': 66.3.3(vue@3.5.13(typescript@5.9.2)) chokidar: 3.6.0 magic-string: 0.30.17 pathe: 2.0.3 @@ -3124,11 +3124,11 @@ snapshots: '@vue/shared': 3.5.13 csstype: 3.1.3 - '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.3))': + '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.9.2))': dependencies: '@vue/compiler-ssr': 3.5.13 '@vue/shared': 3.5.13 - vue: 3.5.13(typescript@5.8.3) + vue: 3.5.13(typescript@5.9.2) '@vue/shared@3.5.13': {} @@ -3383,9 +3383,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.8(eslint@9.31.0(jiti@2.4.2)): + eslint-config-prettier@10.1.8(eslint@9.32.0(jiti@2.4.2)): dependencies: - eslint: 9.31.0(jiti@2.4.2) + eslint: 9.32.0(jiti@2.4.2) eslint-plugin-security@3.0.1: dependencies: @@ -3400,16 +3400,16 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.31.0(jiti@2.4.2): + eslint@9.32.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.31.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.0 '@eslint/core': 0.15.1 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.31.0 - '@eslint/plugin-kit': 0.3.3 + '@eslint/js': 9.32.0 + '@eslint/plugin-kit': 0.3.4 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.2 @@ -3976,30 +3976,30 @@ snapshots: reusify@1.1.0: {} - rollup@4.45.1: + rollup@4.46.2: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.45.1 - '@rollup/rollup-android-arm64': 4.45.1 - '@rollup/rollup-darwin-arm64': 4.45.1 - '@rollup/rollup-darwin-x64': 4.45.1 - '@rollup/rollup-freebsd-arm64': 4.45.1 - '@rollup/rollup-freebsd-x64': 4.45.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.45.1 - '@rollup/rollup-linux-arm-musleabihf': 4.45.1 - '@rollup/rollup-linux-arm64-gnu': 4.45.1 - '@rollup/rollup-linux-arm64-musl': 4.45.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.45.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.45.1 - '@rollup/rollup-linux-riscv64-gnu': 4.45.1 - '@rollup/rollup-linux-riscv64-musl': 4.45.1 - '@rollup/rollup-linux-s390x-gnu': 4.45.1 - '@rollup/rollup-linux-x64-gnu': 4.45.1 - '@rollup/rollup-linux-x64-musl': 4.45.1 - '@rollup/rollup-win32-arm64-msvc': 4.45.1 - '@rollup/rollup-win32-ia32-msvc': 4.45.1 - '@rollup/rollup-win32-x64-msvc': 4.45.1 + '@rollup/rollup-android-arm-eabi': 4.46.2 + '@rollup/rollup-android-arm64': 4.46.2 + '@rollup/rollup-darwin-arm64': 4.46.2 + '@rollup/rollup-darwin-x64': 4.46.2 + '@rollup/rollup-freebsd-arm64': 4.46.2 + '@rollup/rollup-freebsd-x64': 4.46.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.46.2 + '@rollup/rollup-linux-arm-musleabihf': 4.46.2 + '@rollup/rollup-linux-arm64-gnu': 4.46.2 + '@rollup/rollup-linux-arm64-musl': 4.46.2 + '@rollup/rollup-linux-loongarch64-gnu': 4.46.2 + '@rollup/rollup-linux-ppc64-gnu': 4.46.2 + '@rollup/rollup-linux-riscv64-gnu': 4.46.2 + '@rollup/rollup-linux-riscv64-musl': 4.46.2 + '@rollup/rollup-linux-s390x-gnu': 4.46.2 + '@rollup/rollup-linux-x64-gnu': 4.46.2 + '@rollup/rollup-linux-x64-musl': 4.46.2 + '@rollup/rollup-win32-arm64-msvc': 4.46.2 + '@rollup/rollup-win32-ia32-msvc': 4.46.2 + '@rollup/rollup-win32-x64-msvc': 4.46.2 fsevents: 2.3.3 run-parallel@1.2.0: @@ -4130,9 +4130,9 @@ snapshots: trough@1.0.5: {} - ts-api-utils@2.1.0(typescript@5.8.3): + ts-api-utils@2.1.0(typescript@5.9.2): dependencies: - typescript: 5.8.3 + typescript: 5.9.2 tslib@2.8.1: {} @@ -4150,18 +4150,18 @@ snapshots: type-fest@0.7.1: {} - typescript-eslint@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3): + typescript-eslint@8.39.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.38.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.31.0(jiti@2.4.2) - typescript: 5.8.3 + '@typescript-eslint/eslint-plugin': 8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/parser': 8.39.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) + eslint: 9.32.0(jiti@2.4.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - typescript@5.8.3: {} + typescript@5.9.2: {} ufo@1.6.1: {} @@ -4186,9 +4186,9 @@ snapshots: dependencies: '@types/unist': 2.0.11 - unocss@66.3.3(postcss@8.5.6)(vite@7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.8.3)): + unocss@66.3.3(postcss@8.5.6)(vite@7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.9.2)): dependencies: - '@unocss/astro': 66.3.3(vite@7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.8.3)) + '@unocss/astro': 66.3.3(vite@7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.9.2)) '@unocss/cli': 66.3.3 '@unocss/core': 66.3.3 '@unocss/postcss': 66.3.3(postcss@8.5.6) @@ -4206,7 +4206,7 @@ snapshots: '@unocss/transformer-compile-class': 66.3.3 '@unocss/transformer-directives': 66.3.3 '@unocss/transformer-variant-group': 66.3.3 - '@unocss/vite': 66.3.3(vite@7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.8.3)) + '@unocss/vite': 66.3.3(vite@7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.9.2)) optionalDependencies: vite: 7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2) transitivePeerDependencies: @@ -4241,7 +4241,7 @@ snapshots: fdir: 6.4.6(picomatch@4.0.2) picomatch: 4.0.2 postcss: 8.5.6 - rollup: 4.45.1 + rollup: 4.46.2 tinyglobby: 0.2.14 optionalDependencies: fsevents: 2.3.3 @@ -4253,19 +4253,19 @@ snapshots: optionalDependencies: vite: 7.0.4(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.2) - vue-flow-layout@0.1.1(vue@3.5.13(typescript@5.8.3)): + vue-flow-layout@0.1.1(vue@3.5.13(typescript@5.9.2)): dependencies: - vue: 3.5.13(typescript@5.8.3) + vue: 3.5.13(typescript@5.9.2) - vue@3.5.13(typescript@5.8.3): + vue@3.5.13(typescript@5.9.2): dependencies: '@vue/compiler-dom': 3.5.13 '@vue/compiler-sfc': 3.5.13 '@vue/runtime-dom': 3.5.13 - '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.8.3)) + '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.9.2)) '@vue/shared': 3.5.13 optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.2 webidl-conversions@3.0.1: {} diff --git a/shared/template/README.md b/shared/template/README.md index 5d1534993..c5b456bff 100644 --- a/shared/template/README.md +++ b/shared/template/README.md @@ -33,23 +33,12 @@ tauri-plugin-PLUGIN_NAME = { git = "https://github.com/tauri-apps/plugins-worksp You can install the JavaScript Guest bindings using your preferred JavaScript package manager: -> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use. - - - ```sh pnpm add @tauri-apps/plugin-PLUGIN_NAME # or npm add @tauri-apps/plugin-PLUGIN_NAME # or yarn add @tauri-apps/plugin-PLUGIN_NAME - -# alternatively with Git: -pnpm add https://github.com/tauri-apps/tauri-plugin-PLUGIN_NAME#v2 -# or -npm add https://github.com/tauri-apps/tauri-plugin-PLUGIN_NAME#v2 -# or -yarn add https://github.com/tauri-apps/tauri-plugin-PLUGIN_NAME#v2 ``` ## Usage