mirror of
https://github.com/tauri-apps/plugins-workspace.git
synced 2026-06-12 14:17:48 +02:00
Compare commits
53 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ecda84f8d5 | |||
| 021d23bef3 | |||
| eb1679b997 | |||
| 5c1b7917e4 | |||
| 6af3216fab | |||
| fa54f3cc9a | |||
| 56dde76889 | |||
| 89a7754bdf | |||
| 52a48dd80a | |||
| 1829c2806a | |||
| 723b9f7fa8 | |||
| 62b0d739bc | |||
| c776916f14 | |||
| d9de5b19d1 | |||
| b4efa58d5d | |||
| aea748ced7 | |||
| 8fecaba3f0 | |||
| f255343b54 | |||
| e045223660 | |||
| e94b089e51 | |||
| 6ea07297f4 | |||
| bd1ed5903f | |||
| 1fa4d30eab | |||
| f39586bcb4 | |||
| 5e20d7d339 | |||
| dbc1d9374d | |||
| 44e47fe98b | |||
| 04ebd0282e | |||
| f853774154 | |||
| e9977eb2f8 | |||
| 555cb07bfe | |||
| 1f16c64d67 | |||
| 9c7eb35967 | |||
| a9132161df | |||
| edf9a4f29d | |||
| 21387ac199 | |||
| 45f02f1ba8 | |||
| f976ab7cd4 | |||
| cbd930166c | |||
| a305b05cff | |||
| 3e5da59abc | |||
| 326df68839 | |||
| faa89850d0 | |||
| 8aacc312cf | |||
| 95986f1c4d | |||
| b115fd22e0 | |||
| cdd3aafdc6 | |||
| 961a13860e | |||
| 01e534a1c9 | |||
| 9f70233ebb | |||
| 78a4097d09 | |||
| 35373956ea | |||
| bf285d471d |
@@ -0,0 +1,11 @@
|
||||
---
|
||||
"clipboard-manager": "patch"
|
||||
---
|
||||
|
||||
Refactored the clipboard Rust APIs for more clarity and consistency:
|
||||
|
||||
- Changed `Clipboard::write_text` to take a string type instead of an enum.
|
||||
- Changed `Clipboard::read_text` to return a string type instead of an enum.
|
||||
- Changed `Clipboard::write_html` to take 2 string arguments instead of an enum.
|
||||
- Changed `Clipboard::write_image` to take a reference to a `tauri::Image` instead of an enum.
|
||||
- Removed `ClipKind` and `ClipboardContents` enums.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"deep-link": patch
|
||||
"deep-link-js": patch
|
||||
---
|
||||
|
||||
Added desktop support.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"shell": patch
|
||||
---
|
||||
|
||||
When the "raw" encoding option is specified for a shell process, all bytes from the child's output streams are passed to the data handlers.
|
||||
This makes it possible to read output from programs that write unencoded byte streams to stdout (like ffmpeg)
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
"notification": patch
|
||||
"barcode-scanner": patch
|
||||
"dialog": patch
|
||||
---
|
||||
|
||||
Fixes command argument parsing on iOS.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"fs": patch
|
||||
---
|
||||
|
||||
Fixes an issue that caused the app to freeze when the `dialog`, `fs`, and `persisted-scope` plugins were used together.
|
||||
@@ -0,0 +1,11 @@
|
||||
---
|
||||
"global-shortcut": "patch"
|
||||
"global-shortcut-js": "patch"
|
||||
---
|
||||
|
||||
Refactored APIs to introduce new pressed and released events:
|
||||
|
||||
- Added `ShortcutEvent` and `ShortcutState` types in Rust.
|
||||
- Changed the handler function passed to `GlobalShortcut::on_shortcut`, `GlobalShortcut::on_all_shortcuts` and `Builder::with_handler` to take a 3rd argument of type `ShortcutEvent`.
|
||||
- Added `ShortcutEvent` interface in JS.
|
||||
- Changed `ShortcutHandler` type alias (which affects the JS `register` and `registerAll` APIs) to take `ShortcutEvent` instead of a string.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"positioner": "patch"
|
||||
"window-state": "patch"
|
||||
---
|
||||
|
||||
Implement `WindowExt` for `WebviewWindow`.
|
||||
@@ -5,18 +5,23 @@
|
||||
".changes/clipboard-expose-struct.md",
|
||||
".changes/clipboard-html.md",
|
||||
".changes/clipboard-manager-image.md",
|
||||
".changes/clipboard-refactor.md",
|
||||
".changes/clipboard-text-command-rename.md",
|
||||
".changes/deep-link-desktop.md",
|
||||
".changes/dialog-can-create-directories.md",
|
||||
".changes/dialog-linux-freeze.md",
|
||||
".changes/dialog-main-thread.md",
|
||||
".changes/dialog-path-return-mismatch.md",
|
||||
".changes/enhance-fs-scope-type.md",
|
||||
".changes/enhance-http-scope.md",
|
||||
".changes/enhance-shell-raw-out.md",
|
||||
".changes/feat-log-attachlogger.md",
|
||||
".changes/feat-single-instance-semver.md",
|
||||
".changes/feat-websocket-tls-connector.md",
|
||||
".changes/file-autogen-fix.md",
|
||||
".changes/fix-autolaunch-macos.md",
|
||||
".changes/fix-default-arg-value.md",
|
||||
".changes/fix-fs-scope-deadlock.md",
|
||||
".changes/fix-fs-watcher-basedir.md",
|
||||
".changes/fix-http-default-features.md",
|
||||
".changes/fix-http-scope-url-match.md",
|
||||
@@ -28,25 +33,34 @@
|
||||
".changes/fix-updater-powershell-flashing.md",
|
||||
".changes/fix-zbus-import.md",
|
||||
".changes/global-api-script-refactor.md",
|
||||
".changes/global-hotkey-event.md",
|
||||
".changes/global-shortcut-refactor.md",
|
||||
".changes/http-unsafe-headers.md",
|
||||
".changes/http-user-agent.md",
|
||||
".changes/impl-ext-for-webview-windows.md",
|
||||
".changes/msrv-1.75.md",
|
||||
".changes/notification-fix-dev-check.md",
|
||||
".changes/public-with-store.md",
|
||||
".changes/remove-unc-path-prefix.md",
|
||||
".changes/reqwest-0.12.md",
|
||||
".changes/restore-default-window-state.md",
|
||||
".changes/scoped-resources-table.md",
|
||||
".changes/shell-command-execute-extra-new-lines.md",
|
||||
".changes/shell-command-execute-speed.md",
|
||||
".changes/shell-command-lost-events.md",
|
||||
".changes/shell-fix-schema-command-property-name.md",
|
||||
".changes/shell-shellexcute.md",
|
||||
".changes/single-instance.macos.md",
|
||||
".changes/tauri-beta-14-dependencies.md",
|
||||
".changes/tauri-beta-14.md",
|
||||
".changes/tauri-beta-15.md",
|
||||
".changes/tauri-beta-17.md",
|
||||
".changes/tauri-beta-4.md",
|
||||
".changes/tauri-beta-8.md",
|
||||
".changes/tauri-beta-9.md",
|
||||
".changes/updater-non-zip.md",
|
||||
".changes/upload-returnval.md",
|
||||
".changes/watcher-debouncer-rename.md",
|
||||
".changes/window-state-custom-filename.md",
|
||||
".changes/window-state-default-filename.md",
|
||||
".changes/window-state-js-binding.md",
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"window-state": patch
|
||||
---
|
||||
|
||||
Fix `restore_window` doesn't work with `skip_initial_state` when no previous cache was found
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"shell-js": "patch"
|
||||
---
|
||||
|
||||
Fix `Command.execute` API including extra new lines.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"shell": "patch"
|
||||
"shell-js": "patch"
|
||||
---
|
||||
|
||||
Improve the speed of the JS `Command.execute` API
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"shell": "patch"
|
||||
---
|
||||
|
||||
Fix the JS `Command` API losing events for `stdout`.
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
"authenticator": patch
|
||||
"autostart": patch
|
||||
"barcode-scanner": patch
|
||||
"biometric": patch
|
||||
"cli": patch
|
||||
"clipboard-manager": patch
|
||||
"deep-link": patch
|
||||
"dialog": patch
|
||||
"fs": patch
|
||||
"global-shortcut": patch
|
||||
"http": patch
|
||||
"localhost": patch
|
||||
"log-plugin": patch
|
||||
"nfc": patch
|
||||
"notification": patch
|
||||
"os": patch
|
||||
"persisted-scope": patch
|
||||
"positioner": patch
|
||||
"process": patch
|
||||
"shell": patch
|
||||
"single-instance": patch
|
||||
"sql": patch
|
||||
"store": patch
|
||||
"stronghold": patch
|
||||
"updater": patch
|
||||
"upload": patch
|
||||
"websocket": patch
|
||||
"window-state": patch
|
||||
"authenticator-js": patch
|
||||
"autostart-js": patch
|
||||
"barcode-scanner-js": patch
|
||||
"biometric-js": patch
|
||||
"cli-js": patch
|
||||
"clipboard-manager-js": patch
|
||||
"deep-link-js": patch
|
||||
"dialog-js": patch
|
||||
"fs-js": patch
|
||||
"global-shortcut-js": patch
|
||||
"http-js": patch
|
||||
"log-js": patch
|
||||
"nfc-js": patch
|
||||
"notification-js": patch
|
||||
"os-js": patch
|
||||
"positioner-js": patch
|
||||
"process-js": patch
|
||||
"shell-js": patch
|
||||
"sql-js": patch
|
||||
"store-js": patch
|
||||
"stronghold-js": patch
|
||||
"updater-js": patch
|
||||
"upload-js": patch
|
||||
"websocket-js": patch
|
||||
"window-state-js": patch
|
||||
---
|
||||
|
||||
Update to tauri beta.17.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"updater": "patch"
|
||||
---
|
||||
|
||||
Add support for updating using non-zipped files on Windows and Linux.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"fs": patch
|
||||
---
|
||||
|
||||
Fixes `RenameMode::From` and `RenameMode::To` never getting converted to `RenameMode::Both` when using `watch` with a debounce on Windows
|
||||
+3
-1
@@ -5,4 +5,6 @@ build/
|
||||
dist-js
|
||||
api-iife.js
|
||||
init-iife.js
|
||||
init.js
|
||||
init.js
|
||||
rollup.config.js
|
||||
examples/
|
||||
+3
-1
@@ -4,6 +4,7 @@
|
||||
"es2021": true
|
||||
},
|
||||
"extends": [
|
||||
"love",
|
||||
"prettier",
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/recommended",
|
||||
@@ -13,7 +14,8 @@
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"parserOptions": {
|
||||
"ecmaVersion": "latest",
|
||||
"sourceType": "module"
|
||||
"sourceType": "module",
|
||||
"project": ["**/tsconfig.json"]
|
||||
},
|
||||
"plugins": ["@typescript-eslint"],
|
||||
"rules": {}
|
||||
|
||||
@@ -56,6 +56,9 @@ jobs:
|
||||
tauri-plugin-clipboard-manager:
|
||||
- .github/workflows/test-rust.yml
|
||||
- plugins/clipboard-manager/**
|
||||
tauri-plugin-deep-link:
|
||||
- .github/workflows/test-rust.yml
|
||||
- plugins/deep-link/**
|
||||
tauri-plugin-dialog:
|
||||
- .github/workflows/test-rust.yml
|
||||
- plugins/dialog/**
|
||||
@@ -131,31 +134,31 @@ jobs:
|
||||
- {
|
||||
target: x86_64-pc-windows-msvc,
|
||||
os: windows-latest,
|
||||
runner: 'cargo',
|
||||
runner: "cargo",
|
||||
command: "test",
|
||||
}
|
||||
- {
|
||||
target: x86_64-unknown-linux-gnu,
|
||||
os: ubuntu-latest,
|
||||
runner: 'cargo',
|
||||
runner: "cargo",
|
||||
command: "test",
|
||||
}
|
||||
- {
|
||||
target: x86_64-apple-darwin,
|
||||
target: aarch64-apple-darwin,
|
||||
os: macos-latest,
|
||||
runner: 'cargo',
|
||||
runner: "cargo",
|
||||
command: "test",
|
||||
}
|
||||
- {
|
||||
target: aarch64-apple-ios,
|
||||
os: macos-latest,
|
||||
runner: 'cargo',
|
||||
runner: "cargo",
|
||||
command: "build",
|
||||
}
|
||||
- {
|
||||
target: aarch64-linux-android,
|
||||
os: ubuntu-latest,
|
||||
runner: 'cross',
|
||||
runner: "cross",
|
||||
command: "build",
|
||||
}
|
||||
|
||||
|
||||
Generated
+275
-226
File diff suppressed because it is too large
Load Diff
+4
-3
@@ -10,9 +10,10 @@ resolver = "2"
|
||||
[workspace.dependencies]
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
log = "0.4"
|
||||
tauri = "2.0.0-beta.15"
|
||||
tauri-build = "2.0.0-beta.12"
|
||||
tauri-plugin = "2.0.0-beta.12"
|
||||
tauri = "2.0.0-beta.17"
|
||||
tauri-build = "2.0.0-beta.13"
|
||||
tauri-plugin = "2.0.0-beta.13"
|
||||
tauri-utils = "2.0.0-beta.13"
|
||||
serde_json = "1"
|
||||
thiserror = "1"
|
||||
url = "2"
|
||||
|
||||
@@ -1,5 +1,31 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-beta.6]
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Upgraded to `shell-js@2.0.0-beta.4`
|
||||
|
||||
## \[2.0.0-beta.5]
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Upgraded to `global-shortcut-js@2.0.0-beta.3`
|
||||
- Upgraded to `barcode-scanner-js@2.0.0-beta.3`
|
||||
- Upgraded to `biometric-js@2.0.0-beta.3`
|
||||
- Upgraded to `cli-js@2.0.0-beta.3`
|
||||
- Upgraded to `clipboard-manager-js@2.1.0-beta.1`
|
||||
- Upgraded to `dialog-js@2.0.0-beta.3`
|
||||
- Upgraded to `fs-js@2.0.0-beta.3`
|
||||
- Upgraded to `http-js@2.0.0-beta.3`
|
||||
- Upgraded to `log-js@2.0.0-beta.4`
|
||||
- Upgraded to `nfc-js@2.0.0-beta.3`
|
||||
- Upgraded to `notification-js@2.0.0-beta.3`
|
||||
- Upgraded to `os-js@2.0.0-beta.3`
|
||||
- Upgraded to `process-js@2.0.0-beta.3`
|
||||
- Upgraded to `shell-js@2.0.0-beta.3`
|
||||
- Upgraded to `updater-js@2.0.0-beta.3`
|
||||
|
||||
## \[2.0.0-beta.4]
|
||||
|
||||
### Dependencies
|
||||
|
||||
+17
-17
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "svelte-app",
|
||||
"private": true,
|
||||
"version": "2.0.0-beta.4",
|
||||
"version": "2.0.0-beta.6",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite --clearScreen false",
|
||||
@@ -9,28 +9,28 @@
|
||||
"serve": "vite preview"
|
||||
},
|
||||
"dependencies": {
|
||||
"@tauri-apps/api": "2.0.0-beta.8",
|
||||
"@tauri-apps/plugin-barcode-scanner": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-biometric": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-cli": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-clipboard-manager": "2.1.0-beta.0",
|
||||
"@tauri-apps/plugin-dialog": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-fs": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-global-shortcut": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-http": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-nfc": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-notification": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-os": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-process": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-shell": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-updater": "2.0.0-beta.2",
|
||||
"@tauri-apps/api": "2.0.0-beta.11",
|
||||
"@tauri-apps/plugin-barcode-scanner": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-biometric": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-cli": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-clipboard-manager": "2.1.0-beta.1",
|
||||
"@tauri-apps/plugin-dialog": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-fs": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-global-shortcut": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-http": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-nfc": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-notification": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-os": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-process": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-shell": "2.0.0-beta.4",
|
||||
"@tauri-apps/plugin-updater": "2.0.0-beta.3",
|
||||
"@zerodevx/svelte-json-view": "1.0.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@iconify-json/codicon": "^1.1.37",
|
||||
"@iconify-json/ph": "^1.1.8",
|
||||
"@sveltejs/vite-plugin-svelte": "^3.0.1",
|
||||
"@tauri-apps/cli": "2.0.0-beta.13",
|
||||
"@tauri-apps/cli": "2.0.0-beta.16",
|
||||
"@unocss/extractor-svelte": "^0.59.0",
|
||||
"internal-ip": "^8.0.0",
|
||||
"svelte": "^4.2.8",
|
||||
|
||||
@@ -1,5 +1,41 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-beta.8]
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Upgraded to `shell@2.0.0-beta.5`
|
||||
|
||||
## \[2.0.0-beta.7]
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Upgraded to `clipboard-manager@2.1.0-beta.2`
|
||||
- Upgraded to `global-shortcut@2.0.0-beta.4`
|
||||
- Upgraded to `barcode-scanner@2.0.0-beta.5`
|
||||
- Upgraded to `biometric@2.0.0-beta.4`
|
||||
- Upgraded to `cli@2.0.0-beta.4`
|
||||
- Upgraded to `dialog@2.0.0-beta.7`
|
||||
- Upgraded to `fs@2.0.0-beta.7`
|
||||
- Upgraded to `http@2.0.0-beta.7`
|
||||
- Upgraded to `log-plugin@2.0.0-beta.4`
|
||||
- Upgraded to `nfc@2.0.0-beta.4`
|
||||
- Upgraded to `notification@2.0.0-beta.5`
|
||||
- Upgraded to `os@2.0.0-beta.4`
|
||||
- Upgraded to `process@2.0.0-beta.4`
|
||||
- Upgraded to `shell@2.0.0-beta.4`
|
||||
- Upgraded to `updater@2.0.0-beta.5`
|
||||
|
||||
## \[2.0.0-beta.6]
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Upgraded to `notification@2.0.0-beta.4`
|
||||
- Upgraded to `barcode-scanner@2.0.0-beta.4`
|
||||
- Upgraded to `dialog@2.0.0-beta.6`
|
||||
- Upgraded to `fs@2.0.0-beta.6`
|
||||
- Upgraded to `http@2.0.0-beta.6`
|
||||
|
||||
## \[2.0.0-beta.5]
|
||||
|
||||
### Dependencies
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "api"
|
||||
publish = false
|
||||
version = "2.0.0-beta.5"
|
||||
version = "2.0.0-beta.8"
|
||||
description = "An example Tauri Application showcasing the api"
|
||||
edition = "2021"
|
||||
rust-version = { workspace = true }
|
||||
@@ -19,15 +19,15 @@ serde_json = { workspace = true }
|
||||
serde = { workspace = true }
|
||||
tiny_http = "0.12"
|
||||
log = { workspace = true }
|
||||
tauri-plugin-log = { path = "../../../plugins/log", version = "2.0.0-beta.3" }
|
||||
tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.0.0-beta.5", features = [ "watch" ] }
|
||||
tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.1.0-beta.1" }
|
||||
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.0.0-beta.5" }
|
||||
tauri-plugin-http = { path = "../../../plugins/http", features = [ "multipart" ], version = "2.0.0-beta.5" }
|
||||
tauri-plugin-notification = { path = "../../../plugins/notification", version = "2.0.0-beta.3", features = [ "windows7-compat" ] }
|
||||
tauri-plugin-os = { path = "../../../plugins/os", version = "2.0.0-beta.3" }
|
||||
tauri-plugin-process = { path = "../../../plugins/process", version = "2.0.0-beta.3" }
|
||||
tauri-plugin-shell = { path = "../../../plugins/shell", version = "2.0.0-beta.3" }
|
||||
tauri-plugin-log = { path = "../../../plugins/log", version = "2.0.0-beta.4" }
|
||||
tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.0.0-beta.7", features = [ "watch" ] }
|
||||
tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.1.0-beta.2" }
|
||||
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.0.0-beta.7" }
|
||||
tauri-plugin-http = { path = "../../../plugins/http", features = [ "multipart" ], version = "2.0.0-beta.7" }
|
||||
tauri-plugin-notification = { path = "../../../plugins/notification", version = "2.0.0-beta.5", features = [ "windows7-compat" ] }
|
||||
tauri-plugin-os = { path = "../../../plugins/os", version = "2.0.0-beta.4" }
|
||||
tauri-plugin-process = { path = "../../../plugins/process", version = "2.0.0-beta.4" }
|
||||
tauri-plugin-shell = { path = "../../../plugins/shell", version = "2.0.0-beta.5" }
|
||||
|
||||
[dependencies.tauri]
|
||||
workspace = true
|
||||
@@ -41,14 +41,14 @@ tauri-plugin-shell = { path = "../../../plugins/shell", version = "2.0.0-beta.3"
|
||||
]
|
||||
|
||||
[target."cfg(any(target_os = \"macos\", windows, target_os = \"linux\", target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\"))".dependencies]
|
||||
tauri-plugin-cli = { path = "../../../plugins/cli", version = "2.0.0-beta.3" }
|
||||
tauri-plugin-global-shortcut = { path = "../../../plugins/global-shortcut", version = "2.0.0-beta.3" }
|
||||
tauri-plugin-updater = { path = "../../../plugins/updater", version = "2.0.0-beta.4" }
|
||||
tauri-plugin-cli = { path = "../../../plugins/cli", version = "2.0.0-beta.4" }
|
||||
tauri-plugin-global-shortcut = { path = "../../../plugins/global-shortcut", version = "2.0.0-beta.4" }
|
||||
tauri-plugin-updater = { path = "../../../plugins/updater", version = "2.0.0-beta.5" }
|
||||
|
||||
[target."cfg(any(target_os = \"android\", target_os = \"ios\"))".dependencies]
|
||||
tauri-plugin-barcode-scanner = { path = "../../../plugins/barcode-scanner/", version = "2.0.0-beta.3" }
|
||||
tauri-plugin-nfc = { path = "../../../plugins/nfc", version = "2.0.0-beta.3" }
|
||||
tauri-plugin-biometric = { path = "../../../plugins/biometric/", version = "2.0.0-beta.3" }
|
||||
tauri-plugin-barcode-scanner = { path = "../../../plugins/barcode-scanner/", version = "2.0.0-beta.5" }
|
||||
tauri-plugin-nfc = { path = "../../../plugins/nfc", version = "2.0.0-beta.4" }
|
||||
tauri-plugin-biometric = { path = "../../../plugins/biometric/", version = "2.0.0-beta.4" }
|
||||
|
||||
[target."cfg(target_os = \"windows\")".dependencies]
|
||||
window-shadows = "0.2"
|
||||
|
||||
@@ -149,14 +149,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-meta -> This allows read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-meta-recursive -> This allows read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-app-meta-recursive -> This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-meta-recursive"
|
||||
@@ -191,14 +191,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appcache-meta -> This allows read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appcache-meta -> This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appcache-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appcache-meta-recursive -> This allows read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appcache-meta-recursive -> This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appcache-meta-recursive"
|
||||
@@ -233,14 +233,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appconfig-meta -> This allows read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appconfig-meta -> This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appconfig-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appconfig-meta-recursive -> This allows read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appconfig-meta-recursive -> This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appconfig-meta-recursive"
|
||||
@@ -275,14 +275,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appdata-meta -> This allows read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appdata-meta -> This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appdata-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appdata-meta-recursive -> This allows read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appdata-meta-recursive -> This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appdata-meta-recursive"
|
||||
@@ -317,14 +317,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applocaldata-meta -> This allows read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applocaldata-meta -> This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applocaldata-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applocaldata-meta-recursive -> This allows read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applocaldata-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applocaldata-meta-recursive"
|
||||
@@ -359,14 +359,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applog-meta -> This allows read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applog-meta -> This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applog-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applog-meta-recursive -> This allows read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applog-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applog-meta-recursive"
|
||||
@@ -401,14 +401,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-audio-meta -> This allows read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-audio-meta -> This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-audio-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-audio-meta-recursive -> This allows read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-audio-meta-recursive -> This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-audio-meta-recursive"
|
||||
@@ -443,14 +443,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-cache-meta -> This allows read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-cache-meta -> This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-cache-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-cache-meta-recursive -> This allows read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-cache-meta-recursive -> This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-cache-meta-recursive"
|
||||
@@ -485,14 +485,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-config-meta -> This allows read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-config-meta -> This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-config-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-config-meta-recursive -> This allows read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-config-meta-recursive -> This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-config-meta-recursive"
|
||||
@@ -527,14 +527,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-data-meta -> This allows read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-data-meta -> This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-data-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-data-meta-recursive -> This allows read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-data-meta-recursive -> This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-data-meta-recursive"
|
||||
@@ -569,14 +569,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-desktop-meta -> This allows read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-desktop-meta -> This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-desktop-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-desktop-meta-recursive -> This allows read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-desktop-meta-recursive -> This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-desktop-meta-recursive"
|
||||
@@ -611,14 +611,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-document-meta -> This allows read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-document-meta -> This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-document-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-document-meta-recursive -> This allows read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-document-meta-recursive -> This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-document-meta-recursive"
|
||||
@@ -653,14 +653,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-download-meta -> This allows read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-download-meta -> This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-download-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-download-meta-recursive -> This allows read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-download-meta-recursive -> This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-download-meta-recursive"
|
||||
@@ -695,14 +695,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-exe-meta -> This allows read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-exe-meta -> This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-exe-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-exe-meta-recursive -> This allows read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-exe-meta-recursive -> This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-exe-meta-recursive"
|
||||
@@ -737,14 +737,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-font-meta -> This allows read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-font-meta -> This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-font-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-font-meta-recursive -> This allows read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-font-meta-recursive -> This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-font-meta-recursive"
|
||||
@@ -779,14 +779,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-home-meta -> This allows read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-home-meta -> This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-home-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-home-meta-recursive -> This allows read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-home-meta-recursive -> This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-home-meta-recursive"
|
||||
@@ -821,14 +821,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-localdata-meta -> This allows read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-localdata-meta -> This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-localdata-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-localdata-meta-recursive -> This allows read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-localdata-meta-recursive -> This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-localdata-meta-recursive"
|
||||
@@ -863,14 +863,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-log-meta -> This allows read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-log-meta -> This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-log-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-log-meta-recursive -> This allows read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-log-meta-recursive -> This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-log-meta-recursive"
|
||||
@@ -905,14 +905,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-picture-meta -> This allows read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-picture-meta -> This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-picture-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-picture-meta-recursive -> This allows read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-picture-meta-recursive -> This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-picture-meta-recursive"
|
||||
@@ -947,14 +947,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-public-meta -> This allows read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-public-meta -> This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-public-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-public-meta-recursive -> This allows read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-public-meta-recursive -> This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-public-meta-recursive"
|
||||
@@ -989,14 +989,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-resource-meta -> This allows read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-resource-meta -> This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-resource-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-resource-meta-recursive -> This allows read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-resource-meta-recursive -> This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-resource-meta-recursive"
|
||||
@@ -1031,14 +1031,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-runtime-meta -> This allows read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-runtime-meta -> This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-runtime-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-runtime-meta-recursive -> This allows read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-runtime-meta-recursive -> This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-runtime-meta-recursive"
|
||||
@@ -1073,14 +1073,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-temp-meta -> This allows read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-temp-meta -> This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-temp-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-temp-meta-recursive -> This allows read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-temp-meta-recursive -> This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-temp-meta-recursive"
|
||||
@@ -1115,14 +1115,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-template-meta -> This allows read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-template-meta -> This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-template-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-template-meta-recursive -> This allows read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-template-meta-recursive -> This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-template-meta-recursive"
|
||||
@@ -1157,14 +1157,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-video-meta -> This allows read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-video-meta -> This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-video-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-video-meta-recursive -> This allows read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-video-meta-recursive -> This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-video-meta-recursive"
|
||||
@@ -2339,6 +2339,13 @@
|
||||
"shell:allow-open"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"shell:allow-spawn"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
@@ -2367,6 +2374,13 @@
|
||||
"shell:deny-open"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"shell:deny-spawn"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
@@ -2782,14 +2796,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-meta -> This allows read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-meta-recursive -> This allows read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-app-meta-recursive -> This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-meta-recursive"
|
||||
@@ -2824,14 +2838,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appcache-meta -> This allows read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appcache-meta -> This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appcache-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appcache-meta-recursive -> This allows read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appcache-meta-recursive -> This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appcache-meta-recursive"
|
||||
@@ -2866,14 +2880,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appconfig-meta -> This allows read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appconfig-meta -> This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appconfig-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appconfig-meta-recursive -> This allows read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appconfig-meta-recursive -> This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appconfig-meta-recursive"
|
||||
@@ -2908,14 +2922,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appdata-meta -> This allows read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appdata-meta -> This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appdata-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appdata-meta-recursive -> This allows read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appdata-meta-recursive -> This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appdata-meta-recursive"
|
||||
@@ -2950,14 +2964,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applocaldata-meta -> This allows read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applocaldata-meta -> This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applocaldata-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applocaldata-meta-recursive -> This allows read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applocaldata-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applocaldata-meta-recursive"
|
||||
@@ -2992,14 +3006,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applog-meta -> This allows read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applog-meta -> This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applog-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applog-meta-recursive -> This allows read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applog-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applog-meta-recursive"
|
||||
@@ -3034,14 +3048,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-audio-meta -> This allows read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-audio-meta -> This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-audio-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-audio-meta-recursive -> This allows read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-audio-meta-recursive -> This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-audio-meta-recursive"
|
||||
@@ -3076,14 +3090,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-cache-meta -> This allows read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-cache-meta -> This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-cache-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-cache-meta-recursive -> This allows read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-cache-meta-recursive -> This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-cache-meta-recursive"
|
||||
@@ -3118,14 +3132,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-config-meta -> This allows read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-config-meta -> This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-config-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-config-meta-recursive -> This allows read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-config-meta-recursive -> This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-config-meta-recursive"
|
||||
@@ -3160,14 +3174,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-data-meta -> This allows read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-data-meta -> This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-data-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-data-meta-recursive -> This allows read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-data-meta-recursive -> This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-data-meta-recursive"
|
||||
@@ -3202,14 +3216,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-desktop-meta -> This allows read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-desktop-meta -> This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-desktop-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-desktop-meta-recursive -> This allows read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-desktop-meta-recursive -> This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-desktop-meta-recursive"
|
||||
@@ -3244,14 +3258,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-document-meta -> This allows read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-document-meta -> This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-document-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-document-meta-recursive -> This allows read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-document-meta-recursive -> This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-document-meta-recursive"
|
||||
@@ -3286,14 +3300,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-download-meta -> This allows read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-download-meta -> This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-download-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-download-meta-recursive -> This allows read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-download-meta-recursive -> This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-download-meta-recursive"
|
||||
@@ -3328,14 +3342,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-exe-meta -> This allows read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-exe-meta -> This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-exe-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-exe-meta-recursive -> This allows read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-exe-meta-recursive -> This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-exe-meta-recursive"
|
||||
@@ -3370,14 +3384,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-font-meta -> This allows read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-font-meta -> This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-font-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-font-meta-recursive -> This allows read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-font-meta-recursive -> This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-font-meta-recursive"
|
||||
@@ -3412,14 +3426,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-home-meta -> This allows read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-home-meta -> This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-home-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-home-meta-recursive -> This allows read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-home-meta-recursive -> This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-home-meta-recursive"
|
||||
@@ -3454,14 +3468,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-localdata-meta -> This allows read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-localdata-meta -> This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-localdata-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-localdata-meta-recursive -> This allows read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-localdata-meta-recursive -> This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-localdata-meta-recursive"
|
||||
@@ -3496,14 +3510,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-log-meta -> This allows read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-log-meta -> This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-log-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-log-meta-recursive -> This allows read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-log-meta-recursive -> This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-log-meta-recursive"
|
||||
@@ -3538,14 +3552,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-picture-meta -> This allows read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-picture-meta -> This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-picture-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-picture-meta-recursive -> This allows read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-picture-meta-recursive -> This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-picture-meta-recursive"
|
||||
@@ -3580,14 +3594,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-public-meta -> This allows read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-public-meta -> This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-public-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-public-meta-recursive -> This allows read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-public-meta-recursive -> This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-public-meta-recursive"
|
||||
@@ -3622,14 +3636,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-resource-meta -> This allows read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-resource-meta -> This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-resource-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-resource-meta-recursive -> This allows read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-resource-meta-recursive -> This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-resource-meta-recursive"
|
||||
@@ -3664,14 +3678,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-runtime-meta -> This allows read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-runtime-meta -> This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-runtime-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-runtime-meta-recursive -> This allows read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-runtime-meta-recursive -> This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-runtime-meta-recursive"
|
||||
@@ -3706,14 +3720,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-temp-meta -> This allows read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-temp-meta -> This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-temp-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-temp-meta-recursive -> This allows read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-temp-meta-recursive -> This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-temp-meta-recursive"
|
||||
@@ -3748,14 +3762,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-template-meta -> This allows read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-template-meta -> This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-template-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-template-meta-recursive -> This allows read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-template-meta-recursive -> This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-template-meta-recursive"
|
||||
@@ -3790,14 +3804,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-video-meta -> This allows read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-video-meta -> This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-video-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-video-meta-recursive -> This allows read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-video-meta-recursive -> This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-video-meta-recursive"
|
||||
@@ -5689,6 +5703,13 @@
|
||||
"shell:allow-open"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"shell:allow-spawn"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
@@ -5717,6 +5738,13 @@
|
||||
"shell:deny-open"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"shell:deny-spawn"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
@@ -6137,6 +6165,13 @@
|
||||
"window:allow-current-monitor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "window:allow-cursor-position -> Enables the cursor_position command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"window:allow-cursor-position"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "window:allow-destroy -> Enables the destroy command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
@@ -6487,6 +6522,13 @@
|
||||
"window:allow-start-dragging"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "window:allow-start-resize-dragging -> Enables the start_resize_dragging command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"window:allow-start-resize-dragging"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "window:allow-theme -> Enables the theme command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
@@ -6557,6 +6599,13 @@
|
||||
"window:deny-current-monitor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "window:deny-cursor-position -> Denies the cursor_position command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"window:deny-cursor-position"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "window:deny-destroy -> Denies the destroy command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
@@ -6907,6 +6956,13 @@
|
||||
"window:deny-start-dragging"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "window:deny-start-resize-dragging -> Denies the start_resize_dragging command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"window:deny-start-resize-dragging"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "window:deny-theme -> Denies the theme command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
|
||||
function register() {
|
||||
const shortcut_ = shortcut;
|
||||
registerShortcut(shortcut_, () => {
|
||||
onMessage(`Shortcut ${shortcut_} triggered`);
|
||||
registerShortcut(shortcut_, (e) => {
|
||||
onMessage(`Shortcut ${shortcut_} triggered ${e.state}`);
|
||||
})
|
||||
.then(() => {
|
||||
shortcuts.update((shortcuts_) => [...shortcuts_, shortcut_]);
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
isChecking = true;
|
||||
try {
|
||||
const update = await check();
|
||||
onMessage(`Should update: ${update.response.available}`);
|
||||
onMessage(update.response);
|
||||
onMessage(`Should update: ${update.available}`);
|
||||
onMessage(update);
|
||||
|
||||
newUpdate = update;
|
||||
} catch (e) {
|
||||
|
||||
+5
-5
@@ -13,18 +13,18 @@
|
||||
"@rollup/plugin-node-resolve": "15.2.3",
|
||||
"@rollup/plugin-terser": "0.4.4",
|
||||
"@rollup/plugin-typescript": "11.1.6",
|
||||
"@typescript-eslint/eslint-plugin": "7.7.0",
|
||||
"@typescript-eslint/parser": "7.7.0",
|
||||
"@typescript-eslint/eslint-plugin": "7.8.0",
|
||||
"@typescript-eslint/parser": "7.8.0",
|
||||
"covector": "^0.10.2",
|
||||
"eslint": "8.57.0",
|
||||
"eslint-config-prettier": "9.1.0",
|
||||
"eslint-config-standard-with-typescript": "43.0.1",
|
||||
"eslint-config-love": "47.0.0",
|
||||
"eslint-plugin-import": "2.29.1",
|
||||
"eslint-plugin-n": "17.2.1",
|
||||
"eslint-plugin-n": "17.5.1",
|
||||
"eslint-plugin-promise": "6.1.1",
|
||||
"eslint-plugin-security": "3.0.0",
|
||||
"prettier": "3.2.5",
|
||||
"rollup": "4.14.3",
|
||||
"rollup": "4.17.2",
|
||||
"tslib": "2.6.2",
|
||||
"typescript": "5.4.5"
|
||||
},
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-beta.3]
|
||||
|
||||
- [`bd1ed590`](https://github.com/tauri-apps/plugins-workspace/commit/bd1ed5903ffcce5500310dac1e59e8c67674ef1e)([#1237](https://github.com/tauri-apps/plugins-workspace/pull/1237)) Update to tauri beta.17.
|
||||
|
||||
## \[2.0.0-beta.4]
|
||||
|
||||
- [`7e2fcc5`](https://github.com/tauri-apps/plugins-workspace/commit/7e2fcc5e74df7c3c718e40f75bfb0eafc7d69d8d)([#1146](https://github.com/tauri-apps/plugins-workspace/pull/1146)) Update dependencies to align with tauri 2.0.0-beta.14.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tauri-plugin-authenticator"
|
||||
version = "2.0.0-beta.4"
|
||||
version = "2.0.0-beta.5"
|
||||
description = "Use hardware security-keys in your Tauri App."
|
||||
authors = { workspace = true }
|
||||
license = { workspace = true }
|
||||
|
||||
@@ -1 +1 @@
|
||||
if("__TAURI__"in window){var __TAURI_PLUGIN_AUTHENTICATOR__=function(t){"use strict";async function i(t,i={},a){return window.__TAURI_INTERNALS__.invoke(t,i,a)}"function"==typeof SuppressedError&&SuppressedError;return t.Authenticator=class{async init(){return await i("plugin:authenticator|init_auth")}async register(t,a){return await i("plugin:authenticator|register",{timeout:1e4,challenge:t,application:a})}async verifyRegistration(t,a,e,n){return await i("plugin:authenticator|verify_registration",{challenge:t,application:a,registerData:e,clientData:n})}async sign(t,a,e){return await i("plugin:authenticator|sign",{timeout:1e4,challenge:t,application:a,keyHandle:e})}async verifySignature(t,a,e,n,r,u){return await i("plugin:authenticator|verify_signature",{challenge:t,application:a,signData:e,clientData:n,keyHandle:r,pubkey:u})}},t}({});Object.defineProperty(window.__TAURI__,"authenticator",{value:__TAURI_PLUGIN_AUTHENTICATOR__})}
|
||||
if("__TAURI__"in window){var __TAURI_PLUGIN_AUTHENTICATOR__=function(t){"use strict";async function i(t,i={},a){return window.__TAURI_INTERNALS__.invoke(t,i,a)}"function"==typeof SuppressedError&&SuppressedError;return t.Authenticator=class{async init(){await i("plugin:authenticator|init_auth")}async register(t,a){return await i("plugin:authenticator|register",{timeout:1e4,challenge:t,application:a})}async verifyRegistration(t,a,e,n){return await i("plugin:authenticator|verify_registration",{challenge:t,application:a,registerData:e,clientData:n})}async sign(t,a,e){return await i("plugin:authenticator|sign",{timeout:1e4,challenge:t,application:a,keyHandle:e})}async verifySignature(t,a,e,n,r,u){return await i("plugin:authenticator|verify_signature",{challenge:t,application:a,signData:e,clientData:n,keyHandle:r,pubkey:u})}},t}({});Object.defineProperty(window.__TAURI__,"authenticator",{value:__TAURI_PLUGIN_AUTHENTICATOR__})}
|
||||
|
||||
@@ -6,7 +6,7 @@ import { invoke } from "@tauri-apps/api/core";
|
||||
|
||||
export class Authenticator {
|
||||
async init(): Promise<void> {
|
||||
return await invoke("plugin:authenticator|init_auth");
|
||||
await invoke("plugin:authenticator|init_auth");
|
||||
}
|
||||
|
||||
async register(challenge: string, application: string): Promise<string> {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@tauri-apps/plugin-authenticator",
|
||||
"version": "2.0.0-beta.2",
|
||||
"version": "2.0.0-beta.3",
|
||||
"description": "Use hardware security-keys in your Tauri App.",
|
||||
"license": "MIT or APACHE-2.0",
|
||||
"authors": [
|
||||
@@ -24,6 +24,6 @@
|
||||
"LICENSE"
|
||||
],
|
||||
"dependencies": {
|
||||
"@tauri-apps/api": "2.0.0-beta.8"
|
||||
"@tauri-apps/api": "2.0.0-beta.11"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-beta.3]
|
||||
|
||||
- [`bd1ed590`](https://github.com/tauri-apps/plugins-workspace/commit/bd1ed5903ffcce5500310dac1e59e8c67674ef1e)([#1237](https://github.com/tauri-apps/plugins-workspace/pull/1237)) Update to tauri beta.17.
|
||||
|
||||
## \[2.0.0-beta.4]
|
||||
|
||||
- [`a233919`](https://github.com/tauri-apps/plugins-workspace/commit/a2339195aa940bff86d76375fd05087595bf06ce)([#1118](https://github.com/tauri-apps/plugins-workspace/pull/1118)) Fix LaunchAgent-based autostart for macOS.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tauri-plugin-autostart"
|
||||
version = "2.0.0-beta.4"
|
||||
version = "2.0.0-beta.5"
|
||||
description = "Automatically launch your application at startup."
|
||||
authors = { workspace = true }
|
||||
license = { workspace = true }
|
||||
@@ -10,11 +10,11 @@ repository = { workspace = true }
|
||||
links = "tauri-plugin-autostart"
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
rustc-args = ["--cfg", "docsrs"]
|
||||
rustdoc-args = ["--cfg", "docsrs"]
|
||||
rustc-args = [ "--cfg", "docsrs" ]
|
||||
rustdoc-args = [ "--cfg", "docsrs" ]
|
||||
|
||||
[build-dependencies]
|
||||
tauri-plugin = { workspace = true, features = ["build"] }
|
||||
tauri-plugin = { workspace = true, features = [ "build" ] }
|
||||
|
||||
[dependencies]
|
||||
serde = { workspace = true }
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@tauri-apps/plugin-autostart",
|
||||
"version": "2.0.0-beta.2",
|
||||
"version": "2.0.0-beta.3",
|
||||
"license": "MIT or APACHE-2.0",
|
||||
"authors": [
|
||||
"Tauri Programme within The Commons Conservancy"
|
||||
@@ -23,6 +23,6 @@
|
||||
"LICENSE"
|
||||
],
|
||||
"dependencies": {
|
||||
"@tauri-apps/api": "2.0.0-beta.8"
|
||||
"@tauri-apps/api": "2.0.0-beta.11"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,14 @@
|
||||
|
||||
## \[2.0.0-beta.3]
|
||||
|
||||
- [`bd1ed590`](https://github.com/tauri-apps/plugins-workspace/commit/bd1ed5903ffcce5500310dac1e59e8c67674ef1e)([#1237](https://github.com/tauri-apps/plugins-workspace/pull/1237)) Update to tauri beta.17.
|
||||
|
||||
## \[2.0.0-beta.4]
|
||||
|
||||
- [`326df688`](https://github.com/tauri-apps/plugins-workspace/commit/326df6883998d416fc0837583ed972854628bb52)([#1236](https://github.com/tauri-apps/plugins-workspace/pull/1236)) Fixes command argument parsing on iOS.
|
||||
|
||||
## \[2.0.0-beta.3]
|
||||
|
||||
- [`a04ea2f`](https://github.com/tauri-apps/plugins-workspace/commit/a04ea2f38294d5a3987578283badc8eec87a7752)([#1071](https://github.com/tauri-apps/plugins-workspace/pull/1071)) The global API script is now only added to the binary when the `withGlobalTauri` config is true.
|
||||
|
||||
## \[2.0.0-beta.2]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tauri-plugin-barcode-scanner"
|
||||
version = "2.0.0-beta.3"
|
||||
version = "2.0.0-beta.5"
|
||||
description = "Scan QR codes, EAN-13 and other kinds of barcodes on Android and iOS"
|
||||
edition = { workspace = true }
|
||||
authors = { workspace = true }
|
||||
@@ -10,12 +10,12 @@ repository = { workspace = true }
|
||||
links = "tauri-plugin-barcode-scanner"
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
rustc-args = ["--cfg", "docsrs"]
|
||||
rustdoc-args = ["--cfg", "docsrs"]
|
||||
targets = ["x86_64-linux-android"]
|
||||
rustc-args = [ "--cfg", "docsrs" ]
|
||||
rustdoc-args = [ "--cfg", "docsrs" ]
|
||||
targets = [ "x86_64-linux-android" ]
|
||||
|
||||
[build-dependencies]
|
||||
tauri-plugin = { workspace = true, features = ["build"] }
|
||||
tauri-plugin = { workspace = true, features = [ "build" ] }
|
||||
|
||||
[dependencies]
|
||||
serde = { workspace = true }
|
||||
|
||||
@@ -1 +1 @@
|
||||
if("__TAURI__"in window){var __TAURI_PLUGIN_BARCODESCANNER__=function(n){"use strict";async function e(n,e={},r){return window.__TAURI_INTERNALS__.invoke(n,e,r)}var r;return"function"==typeof SuppressedError&&SuppressedError,n.Format=void 0,(r=n.Format||(n.Format={})).QRCode="QR_CODE",r.UPC_A="UPC_A",r.UPC_E="UPC_E",r.EAN8="EAN_8",r.EAN13="EAN_13",r.Code39="CODE_39",r.Code93="CODE_93",r.Code128="CODE_128",r.Codabar="CODABAR",r.ITF="ITF",r.Aztec="AZTEC",r.DataMatrix="DATA_MATRIX",r.PDF417="PDF_417",n.cancel=async function(){return await e("plugin:barcode-scanner|cancel")},n.checkPermissions=async function(){return await e("plugin:barcode-scanner|check_permissions").then((n=>n.camera))},n.openAppSettings=async function(){return await e("plugin:barcode-scanner|open_app_settings")},n.requestPermissions=async function(){return await e("plugin:barcode-scanner|request_permissions").then((n=>n.camera))},n.scan=async function(n){return await e("plugin:barcode-scanner|scan",{...n})},n}({});Object.defineProperty(window.__TAURI__,"barcodeScanner",{value:__TAURI_PLUGIN_BARCODESCANNER__})}
|
||||
if("__TAURI__"in window){var __TAURI_PLUGIN_BARCODESCANNER__=function(n){"use strict";async function e(n,e={},a){return window.__TAURI_INTERNALS__.invoke(n,e,a)}var a;return"function"==typeof SuppressedError&&SuppressedError,n.Format=void 0,(a=n.Format||(n.Format={})).QRCode="QR_CODE",a.UPC_A="UPC_A",a.UPC_E="UPC_E",a.EAN8="EAN_8",a.EAN13="EAN_13",a.Code39="CODE_39",a.Code93="CODE_93",a.Code128="CODE_128",a.Codabar="CODABAR",a.ITF="ITF",a.Aztec="AZTEC",a.DataMatrix="DATA_MATRIX",a.PDF417="PDF_417",n.cancel=async function(){await e("plugin:barcode-scanner|cancel")},n.checkPermissions=async function(){return await e("plugin:barcode-scanner|check_permissions").then((n=>n.camera))},n.openAppSettings=async function(){await e("plugin:barcode-scanner|open_app_settings")},n.requestPermissions=async function(){return await e("plugin:barcode-scanner|request_permissions").then((n=>n.camera))},n.scan=async function(n){return await e("plugin:barcode-scanner|scan",{...n})},n}({});Object.defineProperty(window.__TAURI__,"barcodeScanner",{value:__TAURI_PLUGIN_BARCODESCANNER__})}
|
||||
|
||||
@@ -46,7 +46,7 @@ export async function scan(options?: ScanOptions): Promise<Scanned> {
|
||||
* Cancel the current scan process.
|
||||
*/
|
||||
export async function cancel(): Promise<void> {
|
||||
return await invoke("plugin:barcode-scanner|cancel");
|
||||
await invoke("plugin:barcode-scanner|cancel");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -71,5 +71,5 @@ export async function requestPermissions(): Promise<PermissionState> {
|
||||
* Open application settings. Useful if permission was denied and the user must manually enable it.
|
||||
*/
|
||||
export async function openAppSettings(): Promise<void> {
|
||||
return await invoke("plugin:barcode-scanner|open_app_settings");
|
||||
await invoke("plugin:barcode-scanner|open_app_settings");
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import UIKit
|
||||
import WebKit
|
||||
|
||||
struct ScanOptions: Decodable {
|
||||
var formats: [SupportedFormat] = []
|
||||
var formats: [SupportedFormat]?
|
||||
let windowed: Bool?
|
||||
let cameraDirection: String?
|
||||
}
|
||||
@@ -241,7 +241,7 @@ class BarcodeScannerPlugin: Plugin, AVCaptureMetadataOutputObjectsDelegate {
|
||||
private func runScanner(_ invoke: Invoke, args: ScanOptions) {
|
||||
scanFormats = [AVMetadataObject.ObjectType]()
|
||||
|
||||
args.formats.forEach { format in
|
||||
(args.formats ?? []).forEach { format in
|
||||
scanFormats.append(format.value)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@tauri-apps/plugin-barcode-scanner",
|
||||
"version": "2.0.0-beta.2",
|
||||
"version": "2.0.0-beta.3",
|
||||
"description": "Scan QR codes, EAN-13 and other kinds of barcodes on Android and iOS",
|
||||
"license": "MIT or APACHE-2.0",
|
||||
"authors": [
|
||||
@@ -24,6 +24,6 @@
|
||||
"LICENSE"
|
||||
],
|
||||
"dependencies": {
|
||||
"@tauri-apps/api": "2.0.0-beta.8"
|
||||
"@tauri-apps/api": "2.0.0-beta.11"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
|
||||
## \[2.0.0-beta.3]
|
||||
|
||||
- [`bd1ed590`](https://github.com/tauri-apps/plugins-workspace/commit/bd1ed5903ffcce5500310dac1e59e8c67674ef1e)([#1237](https://github.com/tauri-apps/plugins-workspace/pull/1237)) Update to tauri beta.17.
|
||||
|
||||
## \[2.0.0-beta.3]
|
||||
|
||||
- [`a04ea2f`](https://github.com/tauri-apps/plugins-workspace/commit/a04ea2f38294d5a3987578283badc8eec87a7752)([#1071](https://github.com/tauri-apps/plugins-workspace/pull/1071)) The global API script is now only added to the binary when the `withGlobalTauri` config is true.
|
||||
|
||||
## \[2.0.0-beta.2]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tauri-plugin-biometric"
|
||||
version = "2.0.0-beta.3"
|
||||
version = "2.0.0-beta.4"
|
||||
description = "Prompt the user for biometric authentication on Android and iOS."
|
||||
edition = { workspace = true }
|
||||
authors = { workspace = true }
|
||||
@@ -9,11 +9,11 @@ repository = { workspace = true }
|
||||
links = "tauri-plugin-biometric"
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
rustc-args = ["--cfg", "docsrs"]
|
||||
rustdoc-args = ["--cfg", "docsrs"]
|
||||
rustc-args = [ "--cfg", "docsrs" ]
|
||||
rustdoc-args = [ "--cfg", "docsrs" ]
|
||||
|
||||
[build-dependencies]
|
||||
tauri-plugin = { workspace = true, features = ["build"] }
|
||||
tauri-plugin = { workspace = true, features = [ "build" ] }
|
||||
|
||||
[dependencies]
|
||||
serde = { workspace = true }
|
||||
|
||||
@@ -1 +1 @@
|
||||
if("__TAURI__"in window){var __TAURI_PLUGIN_BIOMETRIC__=function(e){"use strict";async function n(e,n={},r){return window.__TAURI_INTERNALS__.invoke(e,n,r)}var r;return"function"==typeof SuppressedError&&SuppressedError,e.BiometryType=void 0,(r=e.BiometryType||(e.BiometryType={}))[r.None=0]="None",r[r.TouchID=1]="TouchID",r[r.FaceID=2]="FaceID",r[r.Iris=3]="Iris",e.authenticate=async function(e,r){return n("plugin:biometric|authenticate",{reason:e,...r})},e.checkStatus=async function(){return n("plugin:biometric|status")},e}({});Object.defineProperty(window.__TAURI__,"biometric",{value:__TAURI_PLUGIN_BIOMETRIC__})}
|
||||
if("__TAURI__"in window){var __TAURI_PLUGIN_BIOMETRIC__=function(e){"use strict";async function i(e,i={},t){return window.__TAURI_INTERNALS__.invoke(e,i,t)}var t;return"function"==typeof SuppressedError&&SuppressedError,e.BiometryType=void 0,(t=e.BiometryType||(e.BiometryType={}))[t.None=0]="None",t[t.TouchID=1]="TouchID",t[t.FaceID=2]="FaceID",t[t.Iris=3]="Iris",e.authenticate=async function(e,t){await i("plugin:biometric|authenticate",{reason:e,...t})},e.checkStatus=async function(){return await i("plugin:biometric|status")},e}({});Object.defineProperty(window.__TAURI__,"biometric",{value:__TAURI_PLUGIN_BIOMETRIC__})}
|
||||
|
||||
@@ -51,7 +51,7 @@ export interface AuthOptions {
|
||||
* @returns a promise resolving to an object containing all the information about the status of the biometry.
|
||||
*/
|
||||
export async function checkStatus(): Promise<Status> {
|
||||
return invoke("plugin:biometric|status");
|
||||
return await invoke("plugin:biometric|status");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -70,7 +70,7 @@ export async function authenticate(
|
||||
reason: string,
|
||||
options?: AuthOptions,
|
||||
): Promise<void> {
|
||||
return invoke("plugin:biometric|authenticate", {
|
||||
await invoke("plugin:biometric|authenticate", {
|
||||
reason,
|
||||
...options,
|
||||
});
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@tauri-apps/plugin-biometric",
|
||||
"version": "2.0.0-beta.2",
|
||||
"version": "2.0.0-beta.3",
|
||||
"license": "MIT or APACHE-2.0",
|
||||
"authors": [
|
||||
"Tauri Programme within The Commons Conservancy"
|
||||
@@ -24,6 +24,6 @@
|
||||
"LICENSE"
|
||||
],
|
||||
"dependencies": {
|
||||
"@tauri-apps/api": "2.0.0-beta.8"
|
||||
"@tauri-apps/api": "2.0.0-beta.11"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
|
||||
## \[2.0.0-beta.3]
|
||||
|
||||
- [`bd1ed590`](https://github.com/tauri-apps/plugins-workspace/commit/bd1ed5903ffcce5500310dac1e59e8c67674ef1e)([#1237](https://github.com/tauri-apps/plugins-workspace/pull/1237)) Update to tauri beta.17.
|
||||
|
||||
## \[2.0.0-beta.3]
|
||||
|
||||
- [`a04ea2f`](https://github.com/tauri-apps/plugins-workspace/commit/a04ea2f38294d5a3987578283badc8eec87a7752)([#1071](https://github.com/tauri-apps/plugins-workspace/pull/1071)) The global API script is now only added to the binary when the `withGlobalTauri` config is true.
|
||||
|
||||
## \[2.0.0-beta.2]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tauri-plugin-cli"
|
||||
version = "2.0.0-beta.3"
|
||||
version = "2.0.0-beta.4"
|
||||
description = "Parse arguments from your Tauri application's command line interface."
|
||||
edition = { workspace = true }
|
||||
authors = { workspace = true }
|
||||
@@ -10,11 +10,11 @@ repository = { workspace = true }
|
||||
links = "tauri-plugin-cli"
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
rustc-args = ["--cfg", "docsrs"]
|
||||
rustdoc-args = ["--cfg", "docsrs"]
|
||||
rustc-args = [ "--cfg", "docsrs" ]
|
||||
rustdoc-args = [ "--cfg", "docsrs" ]
|
||||
|
||||
[build-dependencies]
|
||||
tauri-plugin = { workspace = true, features = ["build"] }
|
||||
tauri-plugin = { workspace = true, features = [ "build" ] }
|
||||
|
||||
[dependencies]
|
||||
serde = { workspace = true }
|
||||
@@ -22,4 +22,4 @@ serde_json = { workspace = true }
|
||||
tauri = { workspace = true }
|
||||
log = { workspace = true }
|
||||
thiserror = { workspace = true }
|
||||
clap = { version = "4", features = ["string"] }
|
||||
clap = { version = "4", features = [ "string" ] }
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@tauri-apps/plugin-cli",
|
||||
"version": "2.0.0-beta.2",
|
||||
"version": "2.0.0-beta.3",
|
||||
"license": "MIT or APACHE-2.0",
|
||||
"authors": [
|
||||
"Tauri Programme within The Commons Conservancy"
|
||||
@@ -23,6 +23,6 @@
|
||||
"LICENSE"
|
||||
],
|
||||
"dependencies": {
|
||||
"@tauri-apps/api": "2.0.0-beta.8"
|
||||
"@tauri-apps/api": "2.0.0-beta.11"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
|
||||
## \[2.1.0-beta.1]
|
||||
|
||||
- [`bd1ed590`](https://github.com/tauri-apps/plugins-workspace/commit/bd1ed5903ffcce5500310dac1e59e8c67674ef1e)([#1237](https://github.com/tauri-apps/plugins-workspace/pull/1237)) Update to tauri beta.17.
|
||||
|
||||
## \[2.1.0-beta.1]
|
||||
|
||||
- [`27b258c`](https://github.com/tauri-apps/plugins-workspace/commit/27b258cf31ae5557c99ae66537fb9196368d4d8b)([#1185](https://github.com/tauri-apps/plugins-workspace/pull/1185)) Expose `Clipboard` struct
|
||||
- [`e3d41f4`](https://github.com/tauri-apps/plugins-workspace/commit/e3d41f4011bd3ea3ce281bb38bbe31d3709f8e0f)([#1191](https://github.com/tauri-apps/plugins-workspace/pull/1191)) Internally use the webview scoped resources table instead of the app one, so other webviews can't access other webviews resources.
|
||||
- [`e3d41f4`](https://github.com/tauri-apps/plugins-workspace/commit/e3d41f4011bd3ea3ce281bb38bbe31d3709f8e0f)([#1191](https://github.com/tauri-apps/plugins-workspace/pull/1191)) Update for tauri 2.0.0-beta.15.
|
||||
@@ -62,5 +66,13 @@
|
||||
|
||||
## \[2.0.0-alpha.0]
|
||||
|
||||
- [`717ae67`](https://github.com/tauri-apps/plugins-workspace/commit/717ae670978feb4492fac1f295998b93f2b9347f)([#371](https://github.com/tauri-apps/plugins-workspace/pull/371)) First v2 alpha release!
|
||||
717ae670978feb4492fac1f295998b93f2b9347f)([#371](https://github.com/tauri-apps/plugins-workspace/pull/371)) First v2 alpha release!
|
||||
hub.com/tauri-apps/plugins-workspace/pull/371)) First v2 alpha release!
|
||||
\`]\(https://github.com/tauri-apps/plugins-workspace/commit/717ae670978feb4492fac1f295998b93f2b9347f)([#371](https://github.com/tauri-apps/plugins-workspace/pull/371)) First v2 alpha release!
|
||||
te to alpha.11.
|
||||
|
||||
## \[2.0.0-alpha.0]
|
||||
|
||||
- [`717ae67`](https://github.com/tauri-apps/plugins-workspace/commit/717ae670978feb4492fac1f295998b93f2b9347f)([#371](https://github.com/tauri-apps/plugins-workspace/pull/371)) First v2 alpha release!
|
||||
717ae670978feb4492fac1f295998b93f2b9347f)([#371](https://github.com/tauri-apps/plugins-workspace/pull/371)) First v2 alpha release!
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tauri-plugin-clipboard-manager"
|
||||
version = "2.1.0-beta.1"
|
||||
version = "2.1.0-beta.2"
|
||||
description = "Read and write to the system clipboard."
|
||||
edition = { workspace = true }
|
||||
authors = { workspace = true }
|
||||
|
||||
@@ -1 +1 @@
|
||||
if("__TAURI__"in window){var __TAURI_PLUGIN_CLIPBOARDMANAGER__=function(e){"use strict";var r;async function t(e,r={},t){return window.__TAURI_INTERNALS__.invoke(e,r,t)}"function"==typeof SuppressedError&&SuppressedError;class n{get rid(){return function(e,r,t,n){if("a"===t&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof r?e!==r||!n:!r.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?n:"a"===t?n.call(e):n?n.value:r.get(e)}(this,r,"f")}constructor(e){r.set(this,void 0),function(e,r,t,n,a){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof r?e!==r||!a:!r.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===n?a.call(e,t):a?a.value=t:r.set(e,t)}(this,r,e,"f")}async close(){return t("plugin:resources|close",{rid:this.rid})}}r=new WeakMap;class a extends n{constructor(e){super(e)}static async new(e,r,n){return t("plugin:image|new",{rgba:i(e),width:r,height:n}).then((e=>new a(e)))}static async fromBytes(e){return t("plugin:image|from_bytes",{bytes:i(e)}).then((e=>new a(e)))}static async fromPath(e){return t("plugin:image|from_path",{path:e}).then((e=>new a(e)))}async rgba(){return t("plugin:image|rgba",{rid:this.rid}).then((e=>new Uint8Array(e)))}async size(){return t("plugin:image|size",{rid:this.rid})}}function i(e){return null==e?null:"string"==typeof e?e:e instanceof Uint8Array?Array.from(e):e instanceof ArrayBuffer?Array.from(new Uint8Array(e)):e instanceof a?e.rid:e}return e.clear=async function(){await t("plugin:clipboard-manager|clear")},e.readImage=async function(){return await t("plugin:clipboard-manager|read_image").then((e=>new a(e)))},e.readText=async function(){return(await t("plugin:clipboard-manager|read_text")).plainText.text},e.writeHtml=async function(e,r){return t("plugin:clipboard-manager|write_html",{data:{html:{html:e,altHtml:r}}})},e.writeImage=async function(e){return t("plugin:clipboard-manager|write_image",{data:{image:{image:i(e)}}})},e.writeText=async function(e,r){return t("plugin:clipboard-manager|write_text",{data:{plainText:{label:r?.label,text:e}}})},e}({});Object.defineProperty(window.__TAURI__,"clipboardManager",{value:__TAURI_PLUGIN_CLIPBOARDMANAGER__})}
|
||||
if("__TAURI__"in window){var __TAURI_PLUGIN_CLIPBOARDMANAGER__=function(e){"use strict";var r;async function t(e,r={},t){return window.__TAURI_INTERNALS__.invoke(e,r,t)}"function"==typeof SuppressedError&&SuppressedError;class n{get rid(){return function(e,r,t,n){if("a"===t&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof r?e!==r||!n:!r.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?n:"a"===t?n.call(e):n?n.value:r.get(e)}(this,r,"f")}constructor(e){r.set(this,void 0),function(e,r,t,n,a){if("function"==typeof r?e!==r||!a:!r.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");r.set(e,t)}(this,r,e)}async close(){return t("plugin:resources|close",{rid:this.rid})}}r=new WeakMap;class a extends n{constructor(e){super(e)}static async new(e,r,n){return t("plugin:image|new",{rgba:i(e),width:r,height:n}).then((e=>new a(e)))}static async fromBytes(e){return t("plugin:image|from_bytes",{bytes:i(e)}).then((e=>new a(e)))}static async fromPath(e){return t("plugin:image|from_path",{path:e}).then((e=>new a(e)))}async rgba(){return t("plugin:image|rgba",{rid:this.rid}).then((e=>new Uint8Array(e)))}async size(){return t("plugin:image|size",{rid:this.rid})}}function i(e){return null==e?null:"string"==typeof e?e:e instanceof Uint8Array?Array.from(e):e instanceof ArrayBuffer?Array.from(new Uint8Array(e)):e instanceof a?e.rid:e}return e.clear=async function(){await t("plugin:clipboard-manager|clear")},e.readImage=async function(){return await t("plugin:clipboard-manager|read_image").then((e=>new a(e)))},e.readText=async function(){return await t("plugin:clipboard-manager|read_text")},e.writeHtml=async function(e,r){await t("plugin:clipboard-manager|write_html",{html:e,altHtml:r})},e.writeImage=async function(e){await t("plugin:clipboard-manager|write_image",{image:i(e)})},e.writeText=async function(e,r){await t("plugin:clipboard-manager|write_text",{label:r?.label,text:e})},e}({});Object.defineProperty(window.__TAURI__,"clipboardManager",{value:__TAURI_PLUGIN_CLIPBOARDMANAGER__})}
|
||||
|
||||
@@ -11,8 +11,6 @@
|
||||
import { invoke } from "@tauri-apps/api/core";
|
||||
import { Image, transformImage } from "@tauri-apps/api/image";
|
||||
|
||||
type ClipResponse = Record<"plainText", { text: string }>;
|
||||
|
||||
/**
|
||||
* Writes plain text to the clipboard.
|
||||
* @example
|
||||
@@ -30,13 +28,9 @@ async function writeText(
|
||||
text: string,
|
||||
opts?: { label?: string },
|
||||
): Promise<void> {
|
||||
return invoke("plugin:clipboard-manager|write_text", {
|
||||
data: {
|
||||
plainText: {
|
||||
label: opts?.label,
|
||||
text,
|
||||
},
|
||||
},
|
||||
await invoke("plugin:clipboard-manager|write_text", {
|
||||
label: opts?.label,
|
||||
text,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -50,26 +44,7 @@ async function writeText(
|
||||
* @since 2.0.0
|
||||
*/
|
||||
async function readText(): Promise<string> {
|
||||
const kind: ClipResponse = await invoke("plugin:clipboard-manager|read_text");
|
||||
return kind.plainText.text;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the clipboard content as Uint8Array image.
|
||||
* @example
|
||||
* ```typescript
|
||||
* import { readImage } from '@tauri-apps/plugin-clipboard-manager';
|
||||
*
|
||||
* const clipboardImage = await readImage();
|
||||
* const blob = new Blob([clipboardImage.bytes], { type: 'image' })
|
||||
* const url = URL.createObjectURL(blob)
|
||||
* ```
|
||||
* @since 2.0.0
|
||||
*/
|
||||
async function readImage(): Promise<Image> {
|
||||
return await invoke<number>("plugin:clipboard-manager|read_image").then(
|
||||
(rid) => new Image(rid),
|
||||
);
|
||||
return await invoke("plugin:clipboard-manager|read_text");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -93,15 +68,29 @@ async function readImage(): Promise<Image> {
|
||||
async function writeImage(
|
||||
image: string | Image | Uint8Array | ArrayBuffer | number[],
|
||||
): Promise<void> {
|
||||
return invoke("plugin:clipboard-manager|write_image", {
|
||||
data: {
|
||||
image: {
|
||||
image: transformImage(image),
|
||||
},
|
||||
},
|
||||
await invoke("plugin:clipboard-manager|write_image", {
|
||||
image: transformImage(image),
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the clipboard content as Uint8Array image.
|
||||
* @example
|
||||
* ```typescript
|
||||
* import { readImage } from '@tauri-apps/plugin-clipboard-manager';
|
||||
*
|
||||
* const clipboardImage = await readImage();
|
||||
* const blob = new Blob([clipboardImage.bytes], { type: 'image' })
|
||||
* const url = URL.createObjectURL(blob)
|
||||
* ```
|
||||
* @since 2.0.0
|
||||
*/
|
||||
async function readImage(): Promise<Image> {
|
||||
return await invoke<number>("plugin:clipboard-manager|read_image").then(
|
||||
(rid) => new Image(rid),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* * Writes HTML or fallbacks to write provided plain text to the clipboard.
|
||||
* @example
|
||||
@@ -117,13 +106,9 @@ async function writeImage(
|
||||
* @since 2.0.0
|
||||
*/
|
||||
async function writeHtml(html: string, altHtml?: string): Promise<void> {
|
||||
return invoke("plugin:clipboard-manager|write_html", {
|
||||
data: {
|
||||
html: {
|
||||
html,
|
||||
altHtml,
|
||||
},
|
||||
},
|
||||
await invoke("plugin:clipboard-manager|write_html", {
|
||||
html,
|
||||
altHtml,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -138,7 +123,6 @@ async function writeHtml(html: string, altHtml?: string): Promise<void> {
|
||||
*/
|
||||
async function clear(): Promise<void> {
|
||||
await invoke("plugin:clipboard-manager|clear");
|
||||
return;
|
||||
}
|
||||
|
||||
export { writeText, readText, writeHtml, clear, readImage, writeImage };
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@tauri-apps/plugin-clipboard-manager",
|
||||
"version": "2.1.0-beta.0",
|
||||
"version": "2.1.0-beta.1",
|
||||
"license": "MIT or APACHE-2.0",
|
||||
"authors": [
|
||||
"Tauri Programme within The Commons Conservancy"
|
||||
@@ -23,6 +23,6 @@
|
||||
"LICENSE"
|
||||
],
|
||||
"dependencies": {
|
||||
"@tauri-apps/api": "2.0.0-beta.8"
|
||||
"@tauri-apps/api": "2.0.0-beta.11"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,37 +2,54 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
use tauri::{command, AppHandle, Manager, ResourceId, Runtime, State, Webview};
|
||||
use tauri::{command, image::JsImage, AppHandle, Manager, ResourceId, Runtime, State, Webview};
|
||||
|
||||
use crate::{ClipKind, Clipboard, ClipboardContents, Result};
|
||||
use crate::{Clipboard, Result};
|
||||
|
||||
#[command]
|
||||
#[cfg(desktop)]
|
||||
pub(crate) async fn write_text<R: Runtime>(
|
||||
_app: AppHandle<R>,
|
||||
clipboard: State<'_, Clipboard<R>>,
|
||||
data: ClipKind,
|
||||
text: &str,
|
||||
#[allow(unused)] label: Option<String>,
|
||||
) -> Result<()> {
|
||||
clipboard.write_text(data)
|
||||
clipboard.write_text(text)
|
||||
}
|
||||
|
||||
#[command]
|
||||
pub(crate) async fn write_image<R: Runtime>(
|
||||
webview: Webview<R>,
|
||||
#[cfg(not(desktop))]
|
||||
pub(crate) async fn write_text<R: Runtime>(
|
||||
_app: AppHandle<R>,
|
||||
clipboard: State<'_, Clipboard<R>>,
|
||||
data: ClipKind,
|
||||
text: &str,
|
||||
#[allow(unused)] label: Option<&str>,
|
||||
) -> Result<()> {
|
||||
let resources_table = webview.resources_table();
|
||||
clipboard.write_image_inner(data, &resources_table)
|
||||
match label {
|
||||
Some(label) => clipboard.write_text_with_label(text, label),
|
||||
None => clipboard.write_text(text),
|
||||
}
|
||||
}
|
||||
|
||||
#[command]
|
||||
pub(crate) async fn read_text<R: Runtime>(
|
||||
_app: AppHandle<R>,
|
||||
clipboard: State<'_, Clipboard<R>>,
|
||||
) -> Result<ClipboardContents> {
|
||||
) -> Result<String> {
|
||||
clipboard.read_text()
|
||||
}
|
||||
|
||||
#[command]
|
||||
pub(crate) async fn write_image<R: Runtime>(
|
||||
webview: Webview<R>,
|
||||
clipboard: State<'_, Clipboard<R>>,
|
||||
image: JsImage,
|
||||
) -> Result<()> {
|
||||
let resources_table = webview.resources_table();
|
||||
let image = image.into_img(&resources_table)?;
|
||||
clipboard.write_image(&image)
|
||||
}
|
||||
|
||||
#[command]
|
||||
pub(crate) async fn read_image<R: Runtime>(
|
||||
webview: Webview<R>,
|
||||
@@ -48,9 +65,10 @@ pub(crate) async fn read_image<R: Runtime>(
|
||||
pub(crate) async fn write_html<R: Runtime>(
|
||||
_app: AppHandle<R>,
|
||||
clipboard: State<'_, Clipboard<R>>,
|
||||
data: ClipKind,
|
||||
html: &str,
|
||||
alt_text: Option<&str>,
|
||||
) -> Result<()> {
|
||||
clipboard.write_html(data)
|
||||
clipboard.write_html(html, alt_text)
|
||||
}
|
||||
|
||||
#[command]
|
||||
|
||||
@@ -5,9 +5,7 @@
|
||||
use arboard::ImageData;
|
||||
use image::ImageEncoder;
|
||||
use serde::de::DeserializeOwned;
|
||||
use tauri::{image::Image, plugin::PluginApi, AppHandle, Manager, ResourceTable, Runtime};
|
||||
|
||||
use crate::models::*;
|
||||
use tauri::{image::Image, plugin::PluginApi, AppHandle, Runtime};
|
||||
|
||||
use std::{borrow::Cow, sync::Mutex};
|
||||
|
||||
@@ -29,67 +27,50 @@ pub struct Clipboard<R: Runtime> {
|
||||
}
|
||||
|
||||
impl<R: Runtime> Clipboard<R> {
|
||||
pub fn write_text(&self, kind: ClipKind) -> crate::Result<()> {
|
||||
match kind {
|
||||
ClipKind::PlainText { text, .. } => match &self.clipboard {
|
||||
Ok(clipboard) => clipboard.lock().unwrap().set_text(text).map_err(Into::into),
|
||||
Err(e) => Err(crate::Error::Clipboard(e.to_string())),
|
||||
},
|
||||
_ => Err(crate::Error::Clipboard("Invalid clip kind".to_string())),
|
||||
pub fn write_text<'a, T: Into<Cow<'a, str>>>(&self, text: T) -> crate::Result<()> {
|
||||
match &self.clipboard {
|
||||
Ok(clipboard) => clipboard.lock().unwrap().set_text(text).map_err(Into::into),
|
||||
Err(e) => Err(crate::Error::Clipboard(e.to_string())),
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn write_image_inner(
|
||||
&self,
|
||||
kind: ClipKind,
|
||||
resources_table: &ResourceTable,
|
||||
) -> crate::Result<()> {
|
||||
match kind {
|
||||
ClipKind::Image { image, .. } => match &self.clipboard {
|
||||
Ok(clipboard) => {
|
||||
let image = image.into_img(resources_table)?;
|
||||
clipboard
|
||||
.lock()
|
||||
.unwrap()
|
||||
.set_image(ImageData {
|
||||
bytes: Cow::Borrowed(image.rgba()),
|
||||
width: image.width() as usize,
|
||||
height: image.height() as usize,
|
||||
})
|
||||
.map_err(Into::into)
|
||||
}
|
||||
Err(e) => Err(crate::Error::Clipboard(e.to_string())),
|
||||
},
|
||||
_ => Err(crate::Error::Clipboard("Invalid clip kind".to_string())),
|
||||
pub fn write_image(&self, image: &Image<'_>) -> crate::Result<()> {
|
||||
match &self.clipboard {
|
||||
Ok(clipboard) => clipboard
|
||||
.lock()
|
||||
.unwrap()
|
||||
.set_image(ImageData {
|
||||
bytes: Cow::Borrowed(image.rgba()),
|
||||
width: image.width() as usize,
|
||||
height: image.height() as usize,
|
||||
})
|
||||
.map_err(Into::into),
|
||||
Err(e) => Err(crate::Error::Clipboard(e.to_string())),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn write_image(&self, kind: ClipKind) -> crate::Result<()> {
|
||||
let resources_table = self.app.resources_table();
|
||||
self.write_image_inner(kind, &resources_table)
|
||||
}
|
||||
|
||||
pub fn read_text(&self) -> crate::Result<ClipboardContents> {
|
||||
pub fn read_text(&self) -> crate::Result<String> {
|
||||
match &self.clipboard {
|
||||
Ok(clipboard) => {
|
||||
let text = clipboard.lock().unwrap().get_text()?;
|
||||
Ok(ClipboardContents::PlainText { text })
|
||||
Ok(text)
|
||||
}
|
||||
Err(e) => Err(crate::Error::Clipboard(e.to_string())),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn write_html(&self, kind: ClipKind) -> crate::Result<()> {
|
||||
match kind {
|
||||
ClipKind::Html { html, alt_html, .. } => match &self.clipboard {
|
||||
Ok(clipboard) => clipboard
|
||||
.lock()
|
||||
.unwrap()
|
||||
.set_html(html, alt_html)
|
||||
.map_err(Into::into),
|
||||
Err(e) => Err(crate::Error::Clipboard(e.to_string())),
|
||||
},
|
||||
_ => Err(crate::Error::Clipboard("Invalid clip kind!".to_string())),
|
||||
pub fn write_html<'a, T: Into<Cow<'a, str>>>(
|
||||
&self,
|
||||
html: T,
|
||||
alt_text: Option<T>,
|
||||
) -> crate::Result<()> {
|
||||
match &self.clipboard {
|
||||
Ok(clipboard) => clipboard
|
||||
.lock()
|
||||
.unwrap()
|
||||
.set_html(html, alt_text)
|
||||
.map_err(Into::into),
|
||||
Err(e) => Err(crate::Error::Clipboard(e.to_string())),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@ pub enum Error {
|
||||
PluginInvoke(#[from] tauri::plugin::mobile::PluginInvokeError),
|
||||
#[error("{0}")]
|
||||
Clipboard(String),
|
||||
#[cfg(desktop)]
|
||||
#[error(transparent)]
|
||||
Tauri(#[from] tauri::Error),
|
||||
#[cfg(desktop)]
|
||||
|
||||
@@ -16,8 +16,6 @@ use tauri::{
|
||||
Manager, Runtime,
|
||||
};
|
||||
|
||||
pub use models::*;
|
||||
|
||||
#[cfg(desktop)]
|
||||
mod desktop;
|
||||
#[cfg(mobile)]
|
||||
@@ -25,7 +23,6 @@ mod mobile;
|
||||
|
||||
mod commands;
|
||||
mod error;
|
||||
mod models;
|
||||
|
||||
pub use error::{Error, Result};
|
||||
|
||||
|
||||
@@ -3,13 +3,14 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
use serde::de::DeserializeOwned;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use tauri::{
|
||||
image::Image,
|
||||
plugin::{PluginApi, PluginHandle},
|
||||
AppHandle, Runtime,
|
||||
};
|
||||
|
||||
use crate::models::*;
|
||||
use std::borrow::Cow;
|
||||
|
||||
#[cfg(target_os = "android")]
|
||||
const PLUGIN_IDENTIFIER: &str = "app.tauri.clipboard";
|
||||
@@ -33,28 +34,44 @@ pub fn init<R: Runtime, C: DeserializeOwned>(
|
||||
pub struct Clipboard<R: Runtime>(PluginHandle<R>);
|
||||
|
||||
impl<R: Runtime> Clipboard<R> {
|
||||
pub fn write_text(&self, kind: ClipKind) -> crate::Result<()> {
|
||||
self.0.run_mobile_plugin("write", kind).map_err(Into::into)
|
||||
pub fn write_text<'a, T: Into<Cow<'a, str>>>(&self, text: T) -> crate::Result<()> {
|
||||
let text = text.into().to_string();
|
||||
self.0
|
||||
.run_mobile_plugin("write", ClipKind::PlainText { text, label: None })
|
||||
.map_err(Into::into)
|
||||
}
|
||||
|
||||
pub(crate) fn write_image_inner(
|
||||
pub fn write_text_with_label<'a, T: Into<Cow<'a, str>>>(
|
||||
&self,
|
||||
kind: ClipKind,
|
||||
resources_table: &tauri::ResourceTable,
|
||||
text: T,
|
||||
label: T,
|
||||
) -> crate::Result<()> {
|
||||
let text = text.into().to_string();
|
||||
let label = label.into().to_string();
|
||||
self.0
|
||||
.run_mobile_plugin(
|
||||
"write",
|
||||
ClipKind::PlainText {
|
||||
text,
|
||||
label: Some(label),
|
||||
},
|
||||
)
|
||||
.map_err(Into::into)
|
||||
}
|
||||
|
||||
pub fn write_image(&self, _image: &Image<'_>) -> crate::Result<()> {
|
||||
Err(crate::Error::Clipboard(
|
||||
"Unsupported on this platform".to_string(),
|
||||
))
|
||||
}
|
||||
|
||||
pub fn write_image(&self, kind: ClipKind) -> crate::Result<()> {
|
||||
Err(crate::Error::Clipboard(
|
||||
"Unsupported on this platform".to_string(),
|
||||
))
|
||||
}
|
||||
|
||||
pub fn read_text(&self) -> crate::Result<ClipboardContents> {
|
||||
self.0.run_mobile_plugin("read", ()).map_err(Into::into)
|
||||
pub fn read_text(&self) -> crate::Result<String> {
|
||||
self.0
|
||||
.run_mobile_plugin("read", ())
|
||||
.map(|c| match c {
|
||||
ClipboardContents::PlainText { text } => text,
|
||||
})
|
||||
.map_err(Into::into)
|
||||
}
|
||||
|
||||
pub fn read_image(&self) -> crate::Result<Image<'_>> {
|
||||
@@ -64,7 +81,11 @@ impl<R: Runtime> Clipboard<R> {
|
||||
}
|
||||
|
||||
// Treat HTML as unsupported on mobile until tested
|
||||
pub fn write_html(&self, _kind: ClipKind) -> crate::Result<()> {
|
||||
pub fn write_html<'a, T: Into<Cow<'a, str>>>(
|
||||
&self,
|
||||
_html: T,
|
||||
_alt_text: Option<T>,
|
||||
) -> crate::Result<()> {
|
||||
Err(crate::Error::Clipboard(
|
||||
"Unsupported on this platform".to_string(),
|
||||
))
|
||||
@@ -76,3 +97,15 @@ impl<R: Runtime> Clipboard<R> {
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
enum ClipKind {
|
||||
PlainText { label: Option<String>, text: String },
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
enum ClipboardContents {
|
||||
PlainText { text: String },
|
||||
}
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Deserialize)]
|
||||
#[cfg_attr(mobile, derive(Serialize))]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub enum ClipKind {
|
||||
PlainText {
|
||||
label: Option<String>,
|
||||
text: String,
|
||||
},
|
||||
#[cfg(desktop)]
|
||||
Image {
|
||||
image: tauri::image::JsImage,
|
||||
},
|
||||
Html {
|
||||
html: String,
|
||||
alt_html: Option<String>,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub enum ClipboardContents {
|
||||
PlainText {
|
||||
text: String,
|
||||
},
|
||||
Image {
|
||||
bytes: Vec<u8>,
|
||||
width: usize,
|
||||
height: usize,
|
||||
},
|
||||
}
|
||||
@@ -1,5 +1,13 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-beta.4]
|
||||
|
||||
- [`021d23be`](https://github.com/tauri-apps/plugins-workspace/commit/021d23bef330de4ce001993e0ef2c7ab7815f044)([#916](https://github.com/tauri-apps/plugins-workspace/pull/916)) Added desktop support.
|
||||
|
||||
## \[2.0.0-beta.3]
|
||||
|
||||
- [`bd1ed590`](https://github.com/tauri-apps/plugins-workspace/commit/bd1ed5903ffcce5500310dac1e59e8c67674ef1e)([#1237](https://github.com/tauri-apps/plugins-workspace/pull/1237)) Update to tauri beta.17.
|
||||
|
||||
## \[2.0.0-beta.3]
|
||||
|
||||
- [`a04ea2f`](https://github.com/tauri-apps/plugins-workspace/commit/a04ea2f38294d5a3987578283badc8eec87a7752)([#1071](https://github.com/tauri-apps/plugins-workspace/pull/1071)) The global API script is now only added to the binary when the `withGlobalTauri` config is true.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tauri-plugin-deep-link"
|
||||
version = "2.0.0-beta.3"
|
||||
version = "2.0.0-beta.5"
|
||||
description = "Set your Tauri application as the default handler for an URL"
|
||||
authors = { workspace = true }
|
||||
license = { workspace = true }
|
||||
@@ -10,19 +10,29 @@ repository = { workspace = true }
|
||||
links = "tauri-plugin-deep-link"
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
rustc-args = ["--cfg", "docsrs"]
|
||||
rustdoc-args = ["--cfg", "docsrs"]
|
||||
targets = ["x86_64-linux-android"]
|
||||
rustc-args = [ "--cfg", "docsrs" ]
|
||||
rustdoc-args = [ "--cfg", "docsrs" ]
|
||||
targets = [ "x86_64-linux-android" ]
|
||||
|
||||
[build-dependencies]
|
||||
serde = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
tauri-plugin = { workspace = true, features = ["build"] }
|
||||
tauri-utils = { workspace = true }
|
||||
tauri-plugin = { workspace = true, features = [ "build" ] }
|
||||
|
||||
[dependencies]
|
||||
serde = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
tauri = { workspace = true }
|
||||
tauri-utils = { workspace = true }
|
||||
log = { workspace = true }
|
||||
thiserror = { workspace = true }
|
||||
url = { workspace = true }
|
||||
|
||||
[target."cfg(windows)".dependencies]
|
||||
dunce = "1"
|
||||
windows-registry = "0.1"
|
||||
windows-result = "0.1"
|
||||
|
||||
[target."cfg(target_os = \"linux\")".dependencies]
|
||||
rust-ini = "0.21"
|
||||
|
||||
@@ -93,16 +93,19 @@ See [supporting associated domains](https://developer.apple.com/documentation/xc
|
||||
|
||||
## Configuration
|
||||
|
||||
Under `tauri.conf.json > plugins > deep-link`, configure the domains you want to associate with your application:
|
||||
Under `tauri.conf.json > plugins > deep-link`, configure the domains (mobile) and schemes (desktop) you want to associate with your application:
|
||||
|
||||
```json
|
||||
{
|
||||
"plugins": {
|
||||
"deep-link": {
|
||||
"domains": [
|
||||
"mobile": [
|
||||
{ "host": "your.website.com", "pathPrefix": ["/open"] },
|
||||
{ "host": "another.site.br" }
|
||||
]
|
||||
],
|
||||
"desktop": {
|
||||
"schemes": ["something", "my-tauri-app"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -128,10 +131,12 @@ Afterwards all the plugin's APIs are available through the JavaScript guest bind
|
||||
```javascript
|
||||
import { onOpenUrl } from "@tauri-apps/plugin-deep-link";
|
||||
await onOpenUrl((urls) => {
|
||||
console.log('deep link:', urls);
|
||||
console.log("deep link:", urls);
|
||||
});
|
||||
```
|
||||
|
||||
Note that the Plugin will only emit events on macOS, iOS and Android. On Windows and Linux the OS will spawn a new instance of your app with the URL as a CLI argument. If you want your app to behave on Windows & Linux similar to the other platforms you can use the [single-instance](../single-instance/) plugin.
|
||||
|
||||
## Contributing
|
||||
|
||||
PRs accepted. Please make sure to read the Contributing Guide before making a pull request.
|
||||
|
||||
@@ -1 +1 @@
|
||||
if("__TAURI__"in window){var __TAURI_PLUGIN_DEEPLINK__=function(e){"use strict";function n(e,n=!1){return window.__TAURI_INTERNALS__.transformCallback(e,n)}async function t(e,n={},t){return window.__TAURI_INTERNALS__.invoke(e,n,t)}var r;async function i(e,r,i){const _="string"==typeof i?.target?{kind:"AnyLabel",label:i.target}:i?.target??{kind:"Any"};return t("plugin:event|listen",{event:e,target:_,handler:n(r)}).then((n=>async()=>async function(e,n){await t("plugin:event|unlisten",{event:e,eventId:n})}(e,n)))}async function _(){return await t("plugin:deep-link|get_current")}return"function"==typeof SuppressedError&&SuppressedError,function(e){e.WINDOW_RESIZED="tauri://resize",e.WINDOW_MOVED="tauri://move",e.WINDOW_CLOSE_REQUESTED="tauri://close-requested",e.WINDOW_DESTROYED="tauri://destroyed",e.WINDOW_FOCUS="tauri://focus",e.WINDOW_BLUR="tauri://blur",e.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",e.WINDOW_THEME_CHANGED="tauri://theme-changed",e.WEBVIEW_CREATED="tauri://webview-created",e.FILE_DROP="tauri://file-drop",e.FILE_DROP_HOVER="tauri://file-drop-hover",e.FILE_DROP_CANCELLED="tauri://file-drop-cancelled"}(r||(r={})),e.getCurrent=_,e.onOpenUrl=async function(e){const n=await _();return null!=n&&e(n),await i("deep-link://new-url",(n=>e(n.payload)))},e}({});Object.defineProperty(window.__TAURI__,"deepLink",{value:__TAURI_PLUGIN_DEEPLINK__})}
|
||||
if("__TAURI__"in window){var __TAURI_PLUGIN_DEEPLINK__=function(e){"use strict";function n(e,n=!1){return window.__TAURI_INTERNALS__.transformCallback(e,n)}async function r(e,n={},r){return window.__TAURI_INTERNALS__.invoke(e,n,r)}var t;async function i(e,t,i){const a=(void 0,{kind:"Any"});return r("plugin:event|listen",{event:e,target:a,handler:n(t)}).then((n=>async()=>async function(e,n){await r("plugin:event|unlisten",{event:e,eventId:n})}(e,n)))}async function a(){return await r("plugin:deep-link|get_current")}return"function"==typeof SuppressedError&&SuppressedError,function(e){e.WINDOW_RESIZED="tauri://resize",e.WINDOW_MOVED="tauri://move",e.WINDOW_CLOSE_REQUESTED="tauri://close-requested",e.WINDOW_DESTROYED="tauri://destroyed",e.WINDOW_FOCUS="tauri://focus",e.WINDOW_BLUR="tauri://blur",e.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",e.WINDOW_THEME_CHANGED="tauri://theme-changed",e.WINDOW_CREATED="tauri://window-created",e.WEBVIEW_CREATED="tauri://webview-created",e.DRAG="tauri://drag",e.DROP="tauri://drop",e.DROP_OVER="tauri://drop-over",e.DROP_CANCELLED="tauri://drag-cancelled"}(t||(t={})),e.getCurrent=a,e.isRegistered=async function(e){return await r("plugin:deep-link|i_registered",{protocol:e})},e.onOpenUrl=async function(e){const n=await a();return null!=n&&e(n),await i("deep-link://new-url",(n=>{e(n.payload)}))},e.register=async function(e){return await r("plugin:deep-link|register",{protocol:e})},e.unregister=async function(e){return await r("plugin:deep-link|unregister",{protocol:e})},e}({});Object.defineProperty(window.__TAURI__,"deepLink",{value:__TAURI_PLUGIN_DEEPLINK__})}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
mod config;
|
||||
use config::{AssociatedDomain, Config};
|
||||
|
||||
const COMMANDS: &[&str] = &["get_current"];
|
||||
const COMMANDS: &[&str] = &["get_current", "register", "unregister", "is_registered"];
|
||||
|
||||
// TODO: Consider using activity-alias in case users may have multiple activities in their app.
|
||||
// TODO: Do we want to support the other path* configs too?
|
||||
@@ -48,7 +48,7 @@ fn main() {
|
||||
"DEEP LINK PLUGIN",
|
||||
"activity",
|
||||
config
|
||||
.domains
|
||||
.mobile
|
||||
.iter()
|
||||
.map(intent_filter)
|
||||
.collect::<Vec<_>>()
|
||||
@@ -62,7 +62,7 @@ fn main() {
|
||||
entitlements.insert(
|
||||
"com.apple.developer.associated-domains".into(),
|
||||
config
|
||||
.domains
|
||||
.mobile
|
||||
.into_iter()
|
||||
.map(|d| format!("applinks:{}", d.host).into())
|
||||
.collect::<Vec<_>>()
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-beta.4]
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Upgraded to `deep-link-js@2.0.0-beta.4`
|
||||
|
||||
## \[2.0.0-beta.3]
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Upgraded to `deep-link-js@2.0.0-beta.3`
|
||||
|
||||
## \[2.0.0-beta.2]
|
||||
|
||||
### Dependencies
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "deep-link-example",
|
||||
"private": true,
|
||||
"version": "2.0.0-beta.2",
|
||||
"version": "2.0.0-beta.4",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
@@ -10,11 +10,11 @@
|
||||
"tauri": "tauri"
|
||||
},
|
||||
"dependencies": {
|
||||
"@tauri-apps/api": "2.0.0-beta.8",
|
||||
"@tauri-apps/plugin-deep-link": "2.0.0-beta.2"
|
||||
"@tauri-apps/api": "2.0.0-beta.11",
|
||||
"@tauri-apps/plugin-deep-link": "2.0.0-beta.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tauri-apps/cli": "2.0.0-beta.13",
|
||||
"@tauri-apps/cli": "2.0.0-beta.16",
|
||||
"internal-ip": "^8.0.0",
|
||||
"typescript": "^5.2.2",
|
||||
"vite": "^5.0.13"
|
||||
|
||||
@@ -28,15 +28,13 @@
|
||||
"hello": "world"
|
||||
},
|
||||
"deep-link": {
|
||||
"domains": [
|
||||
{
|
||||
"host": "fabianlars.de",
|
||||
"pathPrefix": ["/intent"]
|
||||
},
|
||||
{
|
||||
"host": "tauri.app"
|
||||
}
|
||||
]
|
||||
"mobile": [
|
||||
{ "host": "fabianlars.de", "pathPrefix": ["/intent"] },
|
||||
{ "host": "tauri.app" }
|
||||
],
|
||||
"desktop": {
|
||||
"schemes": ["fabianlars", "my-tauri-app"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"bundle": {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"target": "ESNext",
|
||||
"module": "ESNext",
|
||||
"lib": ["ESNext", "DOM"],
|
||||
"moduleResolution": "Node",
|
||||
"moduleResolution": "bundler",
|
||||
"strict": true,
|
||||
"sourceMap": true,
|
||||
"resolveJsonModule": true,
|
||||
|
||||
@@ -3,14 +3,97 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
import { invoke } from "@tauri-apps/api/core";
|
||||
import { UnlistenFn, listen } from "@tauri-apps/api/event";
|
||||
import { type UnlistenFn, listen } from "@tauri-apps/api/event";
|
||||
|
||||
/**
|
||||
* Get the current URLs that triggered the deep link. Use this on app load to check whether your app was started via a deep link.
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* import { getCurrent } from '@tauri-apps/plugin-deep-link';
|
||||
* const urls = await getCurrent();
|
||||
* ```
|
||||
*
|
||||
* #### - **Windows / Linux**: Unsupported.
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
export async function getCurrent(): Promise<string[] | null> {
|
||||
return await invoke<string[] | null>("plugin:deep-link|get_current");
|
||||
|
||||
// return await invoke("plugin:deep-link|get_current");
|
||||
return await invoke("plugin:deep-link|get_current");
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the app as the default handler for the specified protocol.
|
||||
*
|
||||
* @param protocol The name of the protocol without `://`. For example, if you want your app to handle `tauri://` links, call this method with `tauri` as the protocol.
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* import { register } from '@tauri-apps/plugin-deep-link';
|
||||
* await register("my-scheme");
|
||||
* ```
|
||||
*
|
||||
* #### - **macOS / Android / iOS**: Unsupported.
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
export async function register(protocol: string): Promise<null> {
|
||||
return await invoke("plugin:deep-link|register", { protocol });
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregister the app as the default handler for the specified protocol.
|
||||
*
|
||||
* @param protocol The name of the protocol without `://`.
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* import { unregister } from '@tauri-apps/plugin-deep-link';
|
||||
* await unregister("my-scheme");
|
||||
* ```
|
||||
*
|
||||
* #### - **macOS / Linux / Android / iOS**: Unsupported.
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
export async function unregister(protocol: string): Promise<null> {
|
||||
return await invoke("plugin:deep-link|unregister", { protocol });
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the app is the default handler for the specified protocol.
|
||||
*
|
||||
* @param protocol The name of the protocol without `://`.
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* import { isRegistered } from '@tauri-apps/plugin-deep-link';
|
||||
* await isRegistered("my-scheme");
|
||||
* ```
|
||||
*
|
||||
* #### - **macOS / Android / iOS**: Unsupported, always returns `true`.
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
export async function isRegistered(protocol: string): Promise<boolean> {
|
||||
return await invoke("plugin:deep-link|i_registered", { protocol });
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function for the `deep-link://new-url` event to run a function each time the protocol is triggered while the app is running. Use `getCurrent` on app load to check whether your app was started via a deep link.
|
||||
*
|
||||
* @param protocol The name of the protocol without `://`.
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* import { onOpenUrl } from '@tauri-apps/plugin-deep-link';
|
||||
* await onOpenUrl((urls) => { console.log(urls) });
|
||||
* ```
|
||||
*
|
||||
* #### - **Windows / Linux**: Unsupported, the OS will spawn a new app instance passing the URL as a CLI argument.
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
export async function onOpenUrl(
|
||||
handler: (urls: string[]) => void,
|
||||
): Promise<UnlistenFn> {
|
||||
@@ -19,7 +102,7 @@ export async function onOpenUrl(
|
||||
handler(current);
|
||||
}
|
||||
|
||||
return await listen<string[]>("deep-link://new-url", (event) =>
|
||||
handler(event.payload),
|
||||
);
|
||||
return await listen<string[]>("deep-link://new-url", (event) => {
|
||||
handler(event.payload);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@tauri-apps/plugin-deep-link",
|
||||
"version": "2.0.0-beta.2",
|
||||
"version": "2.0.0-beta.4",
|
||||
"description": "Set your Tauri application as the default handler for an URL",
|
||||
"license": "MIT or APACHE-2.0",
|
||||
"authors": [
|
||||
@@ -24,6 +24,6 @@
|
||||
"LICENSE"
|
||||
],
|
||||
"dependencies": {
|
||||
"@tauri-apps/api": "2.0.0-beta.8"
|
||||
"@tauri-apps/api": "2.0.0-beta.11"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
# Automatically generated - DO NOT EDIT!
|
||||
|
||||
"$schema" = "../../schemas/schema.json"
|
||||
|
||||
[[permission]]
|
||||
identifier = "allow-is-registered"
|
||||
description = "Enables the is_registered command without any pre-configured scope."
|
||||
commands.allow = ["is_registered"]
|
||||
|
||||
[[permission]]
|
||||
identifier = "deny-is-registered"
|
||||
description = "Denies the is_registered command without any pre-configured scope."
|
||||
commands.deny = ["is_registered"]
|
||||
@@ -0,0 +1,13 @@
|
||||
# Automatically generated - DO NOT EDIT!
|
||||
|
||||
"$schema" = "../../schemas/schema.json"
|
||||
|
||||
[[permission]]
|
||||
identifier = "allow-register"
|
||||
description = "Enables the register command without any pre-configured scope."
|
||||
commands.allow = ["register"]
|
||||
|
||||
[[permission]]
|
||||
identifier = "deny-register"
|
||||
description = "Denies the register command without any pre-configured scope."
|
||||
commands.deny = ["register"]
|
||||
@@ -0,0 +1,13 @@
|
||||
# Automatically generated - DO NOT EDIT!
|
||||
|
||||
"$schema" = "../../schemas/schema.json"
|
||||
|
||||
[[permission]]
|
||||
identifier = "allow-unregister"
|
||||
description = "Enables the unregister command without any pre-configured scope."
|
||||
commands.allow = ["unregister"]
|
||||
|
||||
[[permission]]
|
||||
identifier = "deny-unregister"
|
||||
description = "Denies the unregister command without any pre-configured scope."
|
||||
commands.deny = ["unregister"]
|
||||
@@ -2,4 +2,10 @@
|
||||
|------|-----|
|
||||
|`allow-get-current`|Enables the get_current command without any pre-configured scope.|
|
||||
|`deny-get-current`|Denies the get_current command without any pre-configured scope.|
|
||||
|`allow-is-registered`|Enables the is_registered command without any pre-configured scope.|
|
||||
|`deny-is-registered`|Denies the is_registered command without any pre-configured scope.|
|
||||
|`allow-register`|Enables the register command without any pre-configured scope.|
|
||||
|`deny-register`|Denies the register command without any pre-configured scope.|
|
||||
|`allow-unregister`|Enables the unregister command without any pre-configured scope.|
|
||||
|`deny-unregister`|Denies the unregister command without any pre-configured scope.|
|
||||
|`default`|Allows reading the opened deep link via the get_current command|
|
||||
|
||||
@@ -308,6 +308,48 @@
|
||||
"deny-get-current"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "allow-is-registered -> Enables the is_registered command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-is-registered"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "deny-is-registered -> Denies the is_registered command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-is-registered"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "allow-register -> Enables the register command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-register"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "deny-register -> Denies the register command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-register"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "allow-unregister -> Enables the unregister command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-unregister"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "deny-unregister -> Denies the unregister command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-unregister"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "default -> Allows reading the opened deep link via the get_current command",
|
||||
"type": "string",
|
||||
|
||||
@@ -14,3 +14,33 @@ pub(crate) async fn get_current<R: Runtime>(
|
||||
) -> Result<Option<Vec<url::Url>>> {
|
||||
deep_link.get_current()
|
||||
}
|
||||
|
||||
#[command]
|
||||
pub(crate) async fn register<R: Runtime>(
|
||||
_app: AppHandle<R>,
|
||||
_window: Window<R>,
|
||||
deep_link: State<'_, DeepLink<R>>,
|
||||
protocol: String,
|
||||
) -> Result<()> {
|
||||
deep_link.register(protocol)
|
||||
}
|
||||
|
||||
#[command]
|
||||
pub(crate) async fn unregister<R: Runtime>(
|
||||
_app: AppHandle<R>,
|
||||
_window: Window<R>,
|
||||
deep_link: State<'_, DeepLink<R>>,
|
||||
protocol: String,
|
||||
) -> Result<()> {
|
||||
deep_link.unregister(protocol)
|
||||
}
|
||||
|
||||
#[command]
|
||||
pub(crate) async fn is_registered<R: Runtime>(
|
||||
_app: AppHandle<R>,
|
||||
_window: Window<R>,
|
||||
deep_link: State<'_, DeepLink<R>>,
|
||||
protocol: String,
|
||||
) -> Result<bool> {
|
||||
deep_link.is_registered(protocol)
|
||||
}
|
||||
|
||||
@@ -4,9 +4,8 @@
|
||||
|
||||
// This module is also imported in build.rs!
|
||||
|
||||
#![allow(dead_code)]
|
||||
|
||||
use serde::{Deserialize, Deserializer};
|
||||
use tauri_utils::config::DeepLinkProtocol;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub struct AssociatedDomain {
|
||||
@@ -32,5 +31,16 @@ where
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub struct Config {
|
||||
pub domains: Vec<AssociatedDomain>,
|
||||
/// Mobile requires `https://<host>` urls.
|
||||
pub mobile: Vec<AssociatedDomain>,
|
||||
/// Desktop requires urls starting with `<scheme>://`.
|
||||
/// These urls are also active in dev mode on Android.
|
||||
pub desktop: DesktopProtocol,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
#[serde(untagged)]
|
||||
pub enum DesktopProtocol {
|
||||
One(DeepLinkProtocol),
|
||||
List(Vec<DeepLinkProtocol>),
|
||||
}
|
||||
|
||||
@@ -8,8 +8,21 @@ pub type Result<T> = std::result::Result<T, Error>;
|
||||
|
||||
#[derive(Debug, thiserror::Error)]
|
||||
pub enum Error {
|
||||
#[error("unsupported platform")]
|
||||
UnsupportedPlatform,
|
||||
#[error(transparent)]
|
||||
Io(#[from] std::io::Error),
|
||||
#[error(transparent)]
|
||||
Tauri(#[from] tauri::Error),
|
||||
#[cfg(target_os = "windows")]
|
||||
#[error(transparent)]
|
||||
Windows(#[from] windows_result::Error),
|
||||
#[cfg(target_os = "linux")]
|
||||
#[error(transparent)]
|
||||
Ini(#[from] ini::Error),
|
||||
#[cfg(target_os = "linux")]
|
||||
#[error(transparent)]
|
||||
ParseIni(#[from] ini::ParseError),
|
||||
#[cfg(mobile)]
|
||||
#[error(transparent)]
|
||||
PluginInvoke(#[from] tauri::plugin::mobile::PluginInvokeError),
|
||||
|
||||
@@ -82,32 +82,279 @@ mod imp {
|
||||
pub struct DeepLink<R: Runtime>(pub(crate) PluginHandle<R>);
|
||||
|
||||
impl<R: Runtime> DeepLink<R> {
|
||||
/// Get the current URLs that triggered the deep link.
|
||||
/// Get the current URLs that triggered the deep link. Use this on app load to check whether your app was started via a deep link.
|
||||
///
|
||||
/// ## Platform-specific:
|
||||
///
|
||||
/// - **Windows / Linux**: Unsupported, will return [`Error::UnsupportedPlatform`](`crate::Error::UnsupportedPlatform`).
|
||||
pub fn get_current(&self) -> crate::Result<Option<Vec<url::Url>>> {
|
||||
self.0
|
||||
.run_mobile_plugin::<GetCurrentResponse>("getCurrent", ())
|
||||
.map(|v| v.url.map(|url| vec![url]))
|
||||
.map_err(Into::into)
|
||||
}
|
||||
|
||||
/// Register the app as the default handler for the specified protocol.
|
||||
///
|
||||
/// - `protocol`: The name of the protocol without `://`. For example, if you want your app to handle `tauri://` links, call this method with `tauri` as the protocol.
|
||||
///
|
||||
/// ## Platform-specific:
|
||||
///
|
||||
/// - **macOS / Android / iOS**: Unsupported, will return [`Error::UnsupportedPlatform`](`crate::Error::UnsupportedPlatform`).
|
||||
pub fn register<S: AsRef<str>>(&self, _protocol: S) -> crate::Result<()> {
|
||||
Err(crate::Error::UnsupportedPlatform)
|
||||
}
|
||||
|
||||
/// Unregister the app as the default handler for the specified protocol.
|
||||
///
|
||||
/// - `protocol`: The name of the protocol without `://`.
|
||||
///
|
||||
/// ## Platform-specific:
|
||||
///
|
||||
/// - **Linux**: Can only unregister the scheme if it was initially registered with [`register`](`Self::register`). May not work on older distros.
|
||||
/// - **macOS / Android / iOS**: Unsupported, will return [`Error::UnsupportedPlatform`](`crate::Error::UnsupportedPlatform`).
|
||||
pub fn unregister<S: AsRef<str>>(&self, _protocol: S) -> crate::Result<()> {
|
||||
Err(crate::Error::UnsupportedPlatform)
|
||||
}
|
||||
|
||||
/// Check whether the app is the default handler for the specified protocol.
|
||||
///
|
||||
/// - `protocol`: The name of the protocol without `://`.
|
||||
///
|
||||
/// ## Platform-specific:
|
||||
///
|
||||
/// - **macOS / Android / iOS**: Unsupported, will return [`Error::UnsupportedPlatform`](`crate::Error::UnsupportedPlatform`).
|
||||
pub fn is_registered<S: AsRef<str>>(&self, _protocol: S) -> crate::Result<bool> {
|
||||
Err(crate::Error::UnsupportedPlatform)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(target_os = "android"))]
|
||||
mod imp {
|
||||
use std::sync::Mutex;
|
||||
#[cfg(target_os = "linux")]
|
||||
use std::{
|
||||
fs::{create_dir_all, File},
|
||||
io::Write,
|
||||
process::Command,
|
||||
};
|
||||
#[cfg(target_os = "linux")]
|
||||
use tauri::Manager;
|
||||
use tauri::{AppHandle, Runtime};
|
||||
#[cfg(windows)]
|
||||
use windows_registry::CURRENT_USER;
|
||||
|
||||
/// Access to the deep-link APIs.
|
||||
pub struct DeepLink<R: Runtime> {
|
||||
#[allow(dead_code)]
|
||||
pub(crate) app: AppHandle<R>,
|
||||
#[allow(dead_code)]
|
||||
pub(crate) current: Mutex<Option<Vec<url::Url>>>,
|
||||
}
|
||||
|
||||
impl<R: Runtime> DeepLink<R> {
|
||||
/// Get the current URLs that triggered the deep link.
|
||||
/// Get the current URLs that triggered the deep link. Use this on app load to check whether your app was started via a deep link.
|
||||
///
|
||||
/// ## Platform-specific:
|
||||
///
|
||||
/// - **Windows / Linux**: Unsupported, will return [`Error::UnsupportedPlatform`](`crate::Error::UnsupportedPlatform`).
|
||||
pub fn get_current(&self) -> crate::Result<Option<Vec<url::Url>>> {
|
||||
Ok(self.current.lock().unwrap().clone())
|
||||
#[cfg(not(any(windows, target_os = "linux")))]
|
||||
return Ok(self.current.lock().unwrap().clone());
|
||||
#[cfg(any(windows, target_os = "linux"))]
|
||||
Err(crate::Error::UnsupportedPlatform)
|
||||
}
|
||||
|
||||
/// Register the app as the default handler for the specified protocol.
|
||||
///
|
||||
/// - `protocol`: The name of the protocol without `://`. For example, if you want your app to handle `tauri://` links, call this method with `tauri` as the protocol.
|
||||
///
|
||||
/// ## Platform-specific:
|
||||
///
|
||||
/// - **macOS / Android / iOS**: Unsupported, will return [`Error::UnsupportedPlatform`](`crate::Error::UnsupportedPlatform`).
|
||||
pub fn register<S: AsRef<str>>(&self, _protocol: S) -> crate::Result<()> {
|
||||
#[cfg(windows)]
|
||||
{
|
||||
let key_base = format!("Software\\Classes\\{}", _protocol.as_ref());
|
||||
|
||||
let exe = dunce::simplified(&tauri::utils::platform::current_exe()?)
|
||||
.display()
|
||||
.to_string();
|
||||
|
||||
let key_reg = CURRENT_USER.create(&key_base)?;
|
||||
key_reg.set_string(
|
||||
"",
|
||||
&format!("URL:{} protocol", self.app.config().identifier),
|
||||
)?;
|
||||
key_reg.set_string("URL Protocol", "")?;
|
||||
|
||||
let icon_reg = CURRENT_USER.create(format!("{key_base}\\DefaultIcon"))?;
|
||||
icon_reg.set_string("", &format!("{},0", &exe))?;
|
||||
|
||||
let cmd_reg = CURRENT_USER.create(format!("{key_base}\\shell\\open\\command"))?;
|
||||
|
||||
cmd_reg.set_string("", &format!("{} \"%1\"", &exe))?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
{
|
||||
let bin = tauri::utils::platform::current_exe()?;
|
||||
let file_name = format!(
|
||||
"{}-handler.desktop",
|
||||
bin.file_name().unwrap().to_string_lossy()
|
||||
);
|
||||
let appimage = self.app.env().appimage;
|
||||
let exec = appimage
|
||||
.clone()
|
||||
.unwrap_or_else(|| bin.into_os_string())
|
||||
.to_string_lossy()
|
||||
.to_string();
|
||||
|
||||
let target = self.app.path().data_dir()?.join("applications");
|
||||
|
||||
create_dir_all(&target)?;
|
||||
|
||||
let target_file = target.join(&file_name);
|
||||
|
||||
let mime_type = format!("x-scheme-handler/{};", _protocol.as_ref());
|
||||
|
||||
if let Ok(mut desktop_file) = ini::Ini::load_from_file(&target_file) {
|
||||
if let Some(section) = desktop_file.section_mut(Some("Desktop Entry")) {
|
||||
if let Some(mimes) = section.remove("MimeType") {
|
||||
section.append("MimeType", format!("{mimes};{mime_type};"))
|
||||
} else {
|
||||
section.append("MimeType", format!("{mime_type};"))
|
||||
}
|
||||
desktop_file.write_to_file(&target_file)?;
|
||||
}
|
||||
} else {
|
||||
let mut file = File::create(target_file)?;
|
||||
file.write_all(
|
||||
format!(
|
||||
include_str!("template.desktop"),
|
||||
name = self
|
||||
.app
|
||||
.config()
|
||||
.product_name
|
||||
.clone()
|
||||
.unwrap_or_else(|| file_name.clone()),
|
||||
exec = exec,
|
||||
mime_type = mime_type
|
||||
)
|
||||
.as_bytes(),
|
||||
)?;
|
||||
}
|
||||
|
||||
Command::new("update-desktop-database")
|
||||
.arg(target)
|
||||
.status()?;
|
||||
|
||||
Command::new("xdg-mime")
|
||||
.args(["default", &file_name, _protocol.as_ref()])
|
||||
.status()?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[cfg(not(any(windows, target_os = "linux")))]
|
||||
Err(crate::Error::UnsupportedPlatform)
|
||||
}
|
||||
|
||||
/// Unregister the app as the default handler for the specified protocol.
|
||||
///
|
||||
/// - `protocol`: The name of the protocol without `://`.
|
||||
///
|
||||
/// ## Platform-specific:
|
||||
///
|
||||
/// - **Linux**: Can only unregister the scheme if it was initially registered with [`register`](`Self::register`). May not work on older distros.
|
||||
/// - **macOS / Android / iOS**: Unsupported, will return [`Error::UnsupportedPlatform`](`crate::Error::UnsupportedPlatform`).
|
||||
pub fn unregister<S: AsRef<str>>(&self, _protocol: S) -> crate::Result<()> {
|
||||
#[cfg(windows)]
|
||||
{
|
||||
CURRENT_USER.remove_tree(format!("Software\\Classes\\{}", _protocol.as_ref()))?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
{
|
||||
let mimeapps_path = self.app.path().config_dir()?.join("mimeapps.list");
|
||||
let mut mimeapps = ini::Ini::load_from_file(&mimeapps_path)?;
|
||||
|
||||
let file_name = format!(
|
||||
"{}-handler.desktop",
|
||||
tauri::utils::platform::current_exe()?
|
||||
.file_name()
|
||||
.unwrap()
|
||||
.to_string_lossy()
|
||||
);
|
||||
|
||||
if let Some(section) = mimeapps.section_mut(Some("Default Applications")) {
|
||||
let scheme = format!("x-scheme-handler/{}", _protocol.as_ref());
|
||||
|
||||
if section.get(&scheme).unwrap_or_default() == file_name {
|
||||
section.remove(scheme);
|
||||
}
|
||||
}
|
||||
|
||||
mimeapps.write_to_file(mimeapps_path)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[cfg(not(any(windows, target_os = "linux")))]
|
||||
Err(crate::Error::UnsupportedPlatform)
|
||||
}
|
||||
|
||||
/// Check whether the app is the default handler for the specified protocol.
|
||||
///
|
||||
/// - `protocol`: The name of the protocol without `://`.
|
||||
///
|
||||
/// ## Platform-specific:
|
||||
///
|
||||
/// - **macOS / Android / iOS**: Unsupported, will return [`Error::UnsupportedPlatform`](`crate::Error::UnsupportedPlatform`).
|
||||
pub fn is_registered<S: AsRef<str>>(&self, _protocol: S) -> crate::Result<bool> {
|
||||
#[cfg(windows)]
|
||||
{
|
||||
let cmd_reg = CURRENT_USER.open(format!(
|
||||
"Software\\Classes\\{}\\shell\\open\\command",
|
||||
_protocol.as_ref()
|
||||
))?;
|
||||
|
||||
let registered_cmd: String = cmd_reg.get_string("")?;
|
||||
|
||||
let exe = dunce::simplified(&tauri::utils::platform::current_exe()?)
|
||||
.display()
|
||||
.to_string();
|
||||
|
||||
Ok(registered_cmd == format!("{} \"%1\"", &exe))
|
||||
}
|
||||
#[cfg(target_os = "linux")]
|
||||
{
|
||||
let file_name = format!(
|
||||
"{}-handler.desktop",
|
||||
tauri::utils::platform::current_exe()?
|
||||
.file_name()
|
||||
.unwrap()
|
||||
.to_string_lossy()
|
||||
);
|
||||
|
||||
let output = Command::new("xdg-mime")
|
||||
.args([
|
||||
"query",
|
||||
"default",
|
||||
&format!("x-scheme-handler/{}", _protocol.as_ref()),
|
||||
])
|
||||
.output()?;
|
||||
|
||||
Ok(String::from_utf8_lossy(&output.stdout).contains(&file_name))
|
||||
}
|
||||
|
||||
#[cfg(not(any(windows, target_os = "linux")))]
|
||||
Err(crate::Error::UnsupportedPlatform)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -128,7 +375,12 @@ impl<R: Runtime, T: Manager<R>> crate::DeepLinkExt<R> for T {
|
||||
/// Initializes the plugin.
|
||||
pub fn init<R: Runtime>() -> TauriPlugin<R, Option<config::Config>> {
|
||||
Builder::new("deep-link")
|
||||
.invoke_handler(tauri::generate_handler![commands::get_current])
|
||||
.invoke_handler(tauri::generate_handler![
|
||||
commands::get_current,
|
||||
commands::register,
|
||||
commands::unregister,
|
||||
commands::is_registered
|
||||
])
|
||||
.setup(|app, api| {
|
||||
app.manage(init_deep_link(app, api)?);
|
||||
Ok(())
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name={name}
|
||||
Exec={exec} %u
|
||||
Terminal=false
|
||||
MimeType={mime_type}
|
||||
NoDisplay=true
|
||||
@@ -1,5 +1,17 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-beta.3]
|
||||
|
||||
- [`bd1ed590`](https://github.com/tauri-apps/plugins-workspace/commit/bd1ed5903ffcce5500310dac1e59e8c67674ef1e)([#1237](https://github.com/tauri-apps/plugins-workspace/pull/1237)) Update to tauri beta.17.
|
||||
|
||||
## \[2.0.0-beta.6]
|
||||
|
||||
- [`326df688`](https://github.com/tauri-apps/plugins-workspace/commit/326df6883998d416fc0837583ed972854628bb52)([#1236](https://github.com/tauri-apps/plugins-workspace/pull/1236)) Fixes command argument parsing on iOS.
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Upgraded to `fs@2.0.0-beta.6`
|
||||
|
||||
## \[2.0.0-beta.5]
|
||||
|
||||
- [`bb51a41`](https://github.com/tauri-apps/plugins-workspace/commit/bb51a41d67ebf989e8aedf10c4b1a7f9514d1bdf)([#1168](https://github.com/tauri-apps/plugins-workspace/pull/1168)) **Breaking Change:** All apis that return paths to the frontend will now remove the `\\?\` UNC prefix on Windows.
|
||||
@@ -123,3 +135,5 @@
|
||||
pull/371)) First v2 alpha release!
|
||||
kspace/commit/717ae670978feb4492fac1f295998b93f2b9347f)([#371](https://github.com/tauri-apps/plugins-workspace/pull/371)) First v2 alpha release!
|
||||
pull/371)) First v2 alpha release!
|
||||
lpha release!
|
||||
pull/371)) First v2 alpha release!
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tauri-plugin-dialog"
|
||||
version = "2.0.0-beta.5"
|
||||
version = "2.0.0-beta.7"
|
||||
description = "Native system dialogs for opening and saving files along with message dialogs on your Tauri application."
|
||||
edition = { workspace = true }
|
||||
authors = { workspace = true }
|
||||
@@ -24,7 +24,7 @@ tauri = { workspace = true }
|
||||
log = { workspace = true }
|
||||
thiserror = { workspace = true }
|
||||
dunce = { workspace = true }
|
||||
tauri-plugin-fs = { path = "../fs", version = "2.0.0-beta.5" }
|
||||
tauri-plugin-fs = { path = "../fs", version = "2.0.0-beta.7" }
|
||||
|
||||
[target."cfg(any(target_os = \"macos\", windows, target_os = \"linux\", target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\"))".dependencies]
|
||||
rfd = { version = "0.14", default-features = false, features = [ "tokio", "gtk3", "common-controls-v6" ] }
|
||||
|
||||
@@ -1 +1 @@
|
||||
if("__TAURI__"in window){var __TAURI_PLUGIN_DIALOG__=function(t){"use strict";async function n(t,n={},e){return window.__TAURI_INTERNALS__.invoke(t,n,e)}return"function"==typeof SuppressedError&&SuppressedError,t.ask=async function(t,e){const o="string"==typeof e?{title:e}:e;return n("plugin:dialog|ask",{message:t.toString(),title:o?.title?.toString(),kind:o?.kind,okButtonLabel:o?.okLabel?.toString()??"Yes",cancelButtonLabel:o?.cancelLabel?.toString()??"No"})},t.confirm=async function(t,e){const o="string"==typeof e?{title:e}:e;return n("plugin:dialog|confirm",{message:t.toString(),title:o?.title?.toString(),kind:o?.kind,okButtonLabel:o?.okLabel?.toString()??"Ok",cancelButtonLabel:o?.cancelLabel?.toString()??"Cancel"})},t.message=async function(t,e){const o="string"==typeof e?{title:e}:e;return n("plugin:dialog|message",{message:t.toString(),title:o?.title?.toString(),kind:o?.kind,okButtonLabel:o?.okLabel?.toString()})},t.open=async function(t={}){return"object"==typeof t&&Object.freeze(t),n("plugin:dialog|open",{options:t})},t.save=async function(t={}){return"object"==typeof t&&Object.freeze(t),n("plugin:dialog|save",{options:t})},t}({});Object.defineProperty(window.__TAURI__,"dialog",{value:__TAURI_PLUGIN_DIALOG__})}
|
||||
if("__TAURI__"in window){var __TAURI_PLUGIN_DIALOG__=function(t){"use strict";async function n(t,n={},e){return window.__TAURI_INTERNALS__.invoke(t,n,e)}return"function"==typeof SuppressedError&&SuppressedError,t.ask=async function(t,e){const i="string"==typeof e?{title:e}:e;return await n("plugin:dialog|ask",{message:t.toString(),title:i?.title?.toString(),kind:i?.kind,okButtonLabel:i?.okLabel?.toString()??"Yes",cancelButtonLabel:i?.cancelLabel?.toString()??"No"})},t.confirm=async function(t,e){const i="string"==typeof e?{title:e}:e;return await n("plugin:dialog|confirm",{message:t.toString(),title:i?.title?.toString(),kind:i?.kind,okButtonLabel:i?.okLabel?.toString()??"Ok",cancelButtonLabel:i?.cancelLabel?.toString()??"Cancel"})},t.message=async function(t,e){const i="string"==typeof e?{title:e}:e;await n("plugin:dialog|message",{message:t.toString(),title:i?.title?.toString(),kind:i?.kind,okButtonLabel:i?.okLabel?.toString()})},t.open=async function(t={}){return"object"==typeof t&&Object.freeze(t),await n("plugin:dialog|open",{options:t})},t.save=async function(t={}){return"object"==typeof t&&Object.freeze(t),await n("plugin:dialog|save",{options:t})},t}({});Object.defineProperty(window.__TAURI__,"dialog",{value:__TAURI_PLUGIN_DIALOG__})}
|
||||
|
||||
@@ -163,13 +163,14 @@ type OpenDialogReturn<T extends OpenDialogOptions> = T["directory"] extends true
|
||||
* @since 2.0.0
|
||||
*/
|
||||
async function open<T extends OpenDialogOptions>(
|
||||
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
||||
options: T = {} as T,
|
||||
): Promise<OpenDialogReturn<T>> {
|
||||
if (typeof options === "object") {
|
||||
Object.freeze(options);
|
||||
}
|
||||
|
||||
return invoke("plugin:dialog|open", { options });
|
||||
return await invoke("plugin:dialog|open", { options });
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -201,7 +202,7 @@ async function save(options: SaveDialogOptions = {}): Promise<string | null> {
|
||||
Object.freeze(options);
|
||||
}
|
||||
|
||||
return invoke("plugin:dialog|save", { options });
|
||||
return await invoke("plugin:dialog|save", { options });
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -226,7 +227,7 @@ async function message(
|
||||
options?: string | MessageDialogOptions,
|
||||
): Promise<void> {
|
||||
const opts = typeof options === "string" ? { title: options } : options;
|
||||
return invoke("plugin:dialog|message", {
|
||||
await invoke("plugin:dialog|message", {
|
||||
message: message.toString(),
|
||||
title: opts?.title?.toString(),
|
||||
kind: opts?.kind,
|
||||
@@ -255,7 +256,7 @@ async function ask(
|
||||
options?: string | ConfirmDialogOptions,
|
||||
): Promise<boolean> {
|
||||
const opts = typeof options === "string" ? { title: options } : options;
|
||||
return invoke("plugin:dialog|ask", {
|
||||
return await invoke("plugin:dialog|ask", {
|
||||
message: message.toString(),
|
||||
title: opts?.title?.toString(),
|
||||
kind: opts?.kind,
|
||||
@@ -285,7 +286,7 @@ async function confirm(
|
||||
options?: string | ConfirmDialogOptions,
|
||||
): Promise<boolean> {
|
||||
const opts = typeof options === "string" ? { title: options } : options;
|
||||
return invoke("plugin:dialog|confirm", {
|
||||
return await invoke("plugin:dialog|confirm", {
|
||||
message: message.toString(),
|
||||
title: opts?.title?.toString(),
|
||||
kind: opts?.kind,
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
import { invoke } from "@tauri-apps/api/core";
|
||||
|
||||
window.alert = function (message: string) {
|
||||
invoke("plugin:dialog|message", {
|
||||
void invoke("plugin:dialog|message", {
|
||||
message: message.toString(),
|
||||
});
|
||||
};
|
||||
|
||||
// @ts-expect-error tauri does not have sync IPC :(
|
||||
window.confirm = function (message: string) {
|
||||
return invoke("plugin:dialog|confirm", {
|
||||
window.confirm = async function (message: string) {
|
||||
return await invoke("plugin:dialog|confirm", {
|
||||
message: message.toString(),
|
||||
});
|
||||
};
|
||||
|
||||
@@ -19,18 +19,18 @@ enum FilePickerEvent {
|
||||
struct MessageDialogOptions: Decodable {
|
||||
let title: String?
|
||||
let message: String
|
||||
var okButtonLabel = "OK"
|
||||
var cancelButtonLabel = "Cancel"
|
||||
let okButtonLabel: String?
|
||||
let cancelButtonLabel: String?
|
||||
}
|
||||
|
||||
struct Filter: Decodable {
|
||||
var extensions: [String] = []
|
||||
var extensions: [String]?
|
||||
}
|
||||
|
||||
struct FilePickerOptions: Decodable {
|
||||
var multiple = false
|
||||
var readData = false
|
||||
var filters: [Filter] = []
|
||||
var multiple: Bool?
|
||||
var readData: Bool?
|
||||
var filters: [Filter]?
|
||||
}
|
||||
|
||||
class DialogPlugin: Plugin {
|
||||
@@ -47,7 +47,7 @@ class DialogPlugin: Plugin {
|
||||
@objc public func showFilePicker(_ invoke: Invoke) throws {
|
||||
let args = try invoke.parseArgs(FilePickerOptions.self)
|
||||
|
||||
let parsedTypes = parseFiltersOption(args.filters)
|
||||
let parsedTypes = parseFiltersOption(args.filters ?? [])
|
||||
|
||||
var isMedia = true
|
||||
var uniqueMimeType: Bool? = nil
|
||||
@@ -74,7 +74,7 @@ class DialogPlugin: Plugin {
|
||||
DispatchQueue.main.async {
|
||||
if #available(iOS 14, *) {
|
||||
var configuration = PHPickerConfiguration(photoLibrary: PHPhotoLibrary.shared())
|
||||
configuration.selectionLimit = args.multiple ? 0 : 1
|
||||
configuration.selectionLimit = (args.multiple ?? false) ? 0 : 1
|
||||
|
||||
if uniqueMimeType == true {
|
||||
if mimeKind == "image" {
|
||||
@@ -106,7 +106,7 @@ class DialogPlugin: Plugin {
|
||||
DispatchQueue.main.async {
|
||||
let picker = UIDocumentPickerViewController(documentTypes: documentTypes, in: .import)
|
||||
picker.delegate = self.filePickerController
|
||||
picker.allowsMultipleSelection = args.multiple
|
||||
picker.allowsMultipleSelection = args.multiple ?? false
|
||||
picker.modalPresentationStyle = .fullScreen
|
||||
self.presentViewController(picker)
|
||||
}
|
||||
@@ -120,7 +120,7 @@ class DialogPlugin: Plugin {
|
||||
private func parseFiltersOption(_ filters: [Filter]) -> [String] {
|
||||
var parsedTypes: [String] = []
|
||||
for filter in filters {
|
||||
for ext in filter.extensions {
|
||||
for ext in filter.extensions ?? [] {
|
||||
guard
|
||||
let utType: String = UTTypeCreatePreferredIdentifierForTag(
|
||||
kUTTagClassMIMEType, ext as CFString, nil)?.takeRetainedValue() as String?
|
||||
@@ -197,24 +197,36 @@ class DialogPlugin: Plugin {
|
||||
DispatchQueue.main.async { [] in
|
||||
let alert = UIAlertController(
|
||||
title: args.title, message: args.message, preferredStyle: UIAlertController.Style.alert)
|
||||
alert.addAction(
|
||||
UIAlertAction(
|
||||
title: args.cancelButtonLabel, style: UIAlertAction.Style.default,
|
||||
handler: { (_) -> Void in
|
||||
invoke.resolve([
|
||||
"value": false,
|
||||
"cancelled": false,
|
||||
])
|
||||
}))
|
||||
alert.addAction(
|
||||
UIAlertAction(
|
||||
title: args.okButtonLabel, style: UIAlertAction.Style.default,
|
||||
handler: { (_) -> Void in
|
||||
invoke.resolve([
|
||||
"value": true,
|
||||
"cancelled": false,
|
||||
])
|
||||
}))
|
||||
|
||||
let cancelButtonLabel = args.cancelButtonLabel ?? ""
|
||||
if !cancelButtonLabel.isEmpty {
|
||||
alert.addAction(
|
||||
UIAlertAction(
|
||||
title: cancelButtonLabel, style: UIAlertAction.Style.default,
|
||||
handler: { (_) -> Void in
|
||||
Logger.error("cancel")
|
||||
|
||||
invoke.resolve([
|
||||
"value": false,
|
||||
"cancelled": false,
|
||||
])
|
||||
}))
|
||||
}
|
||||
|
||||
let okButtonLabel = args.okButtonLabel ?? (cancelButtonLabel.isEmpty ? "OK" : "")
|
||||
if !okButtonLabel.isEmpty {
|
||||
alert.addAction(
|
||||
UIAlertAction(
|
||||
title: okButtonLabel, style: UIAlertAction.Style.default,
|
||||
handler: { (_) -> Void in
|
||||
Logger.error("ok")
|
||||
|
||||
invoke.resolve([
|
||||
"value": true,
|
||||
"cancelled": false,
|
||||
])
|
||||
}))
|
||||
}
|
||||
|
||||
manager.viewController?.present(alert, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@tauri-apps/plugin-dialog",
|
||||
"version": "2.0.0-beta.2",
|
||||
"version": "2.0.0-beta.3",
|
||||
"license": "MIT or APACHE-2.0",
|
||||
"authors": [
|
||||
"Tauri Programme within The Commons Conservancy"
|
||||
@@ -23,6 +23,6 @@
|
||||
"LICENSE"
|
||||
],
|
||||
"dependencies": {
|
||||
"@tauri-apps/api": "2.0.0-beta.8"
|
||||
"@tauri-apps/api": "2.0.0-beta.11"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
!function(){"use strict";async function n(n,i={},o){return window.__TAURI_INTERNALS__.invoke(n,i,o)}"function"==typeof SuppressedError&&SuppressedError,window.alert=function(i){n("plugin:dialog|message",{message:i.toString()})},window.confirm=function(i){return n("plugin:dialog|confirm",{message:i.toString()})}}();
|
||||
!function(){"use strict";async function n(n,i={},o){return window.__TAURI_INTERNALS__.invoke(n,i,o)}"function"==typeof SuppressedError&&SuppressedError,window.alert=function(i){n("plugin:dialog|message",{message:i.toString()})},window.confirm=async function(i){return await n("plugin:dialog|confirm",{message:i.toString()})}}();
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-beta.3]
|
||||
|
||||
- [`bd1ed590`](https://github.com/tauri-apps/plugins-workspace/commit/bd1ed5903ffcce5500310dac1e59e8c67674ef1e)([#1237](https://github.com/tauri-apps/plugins-workspace/pull/1237)) Update to tauri beta.17.
|
||||
|
||||
## \[2.0.0-beta.6]
|
||||
|
||||
- [`b115fd22`](https://github.com/tauri-apps/plugins-workspace/commit/b115fd22e0da073f5d758c13474ec2106cf78163)([#1221](https://github.com/tauri-apps/plugins-workspace/pull/1221)) Fixes an issue that caused the app to freeze when the `dialog`, `fs`, and `persisted-scope` plugins were used together.
|
||||
|
||||
## \[2.0.0-beta.5]
|
||||
|
||||
- [`bb51a41`](https://github.com/tauri-apps/plugins-workspace/commit/bb51a41d67ebf989e8aedf10c4b1a7f9514d1bdf)([#1168](https://github.com/tauri-apps/plugins-workspace/pull/1168)) **Breaking Change:** All apis that return paths to the frontend will now remove the `\\?\` UNC prefix on Windows.
|
||||
@@ -79,3 +87,6 @@
|
||||
717ae670978feb4492fac1f295998b93f2b9347f)([#371](https://github.com/tauri-apps/plugins-workspace/pull/371)) First v2 alpha release!
|
||||
.com/tauri-apps/plugins-workspace/pull/371)) First v2 alpha release!
|
||||
717ae670978feb4492fac1f295998b93f2b9347f)([#371](https://github.com/tauri-apps/plugins-workspace/pull/371)) First v2 alpha release!
|
||||
ac1f295998b93f2b9347f)([#371](https://github.com/tauri-apps/plugins-workspace/pull/371)) First v2 alpha release!
|
||||
.com/tauri-apps/plugins-workspace/pull/371)) First v2 alpha release!
|
||||
717ae670978feb4492fac1f295998b93f2b9347f)([#371](https://github.com/tauri-apps/plugins-workspace/pull/371)) First v2 alpha release!
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tauri-plugin-fs"
|
||||
version = "2.0.0-beta.5"
|
||||
version = "2.0.0-beta.7"
|
||||
description = "Access the file system."
|
||||
authors = { workspace = true }
|
||||
license = { workspace = true }
|
||||
|
||||
File diff suppressed because one or more lines are too long
+2
-2
@@ -165,7 +165,7 @@ permissions = [
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-{lower}-meta-recursive"
|
||||
description = "This allows read access to metadata of the `${upper}` folder, including file listing and statistics."
|
||||
description = "This allows full recursive read access to metadata of the `${upper}` folder, including file listing and statistics."
|
||||
permissions = [
|
||||
"read-meta",
|
||||
"scope-{lower}-recursive"
|
||||
@@ -173,7 +173,7 @@ permissions = [
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-{lower}-meta"
|
||||
description = "This allows read access to metadata of the `${upper}` folder, including file listing and statistics."
|
||||
description = "This allows non-recursive read access to metadata of the `${upper}` folder, including file listing and statistics."
|
||||
permissions = [
|
||||
"read-meta",
|
||||
"scope-{lower}-index"
|
||||
|
||||
@@ -249,10 +249,6 @@ function parseFileInfo(r: UnparsedFileInfo): FileInfo {
|
||||
* @since 2.0.0
|
||||
*/
|
||||
class FileHandle extends Resource {
|
||||
constructor(rid: number) {
|
||||
super(rid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads up to `p.byteLength` bytes into `p`. It resolves to the number of
|
||||
* bytes read (`0` < `n` <= `p.byteLength`) and rejects if any error
|
||||
@@ -330,7 +326,7 @@ class FileHandle extends Resource {
|
||||
* @since 2.0.0
|
||||
*/
|
||||
async seek(offset: number, whence: SeekMode): Promise<number> {
|
||||
return invoke("plugin:fs|seek", {
|
||||
return await invoke("plugin:fs|seek", {
|
||||
rid: this.rid,
|
||||
offset,
|
||||
whence,
|
||||
@@ -382,7 +378,7 @@ class FileHandle extends Resource {
|
||||
* @since 2.0.0
|
||||
*/
|
||||
async truncate(len?: number): Promise<void> {
|
||||
return invoke("plugin:fs|ftruncate", {
|
||||
await invoke("plugin:fs|ftruncate", {
|
||||
rid: this.rid,
|
||||
len,
|
||||
});
|
||||
@@ -409,7 +405,7 @@ class FileHandle extends Resource {
|
||||
* @since 2.0.0
|
||||
*/
|
||||
async write(data: Uint8Array): Promise<number> {
|
||||
return invoke("plugin:fs|write", {
|
||||
return await invoke("plugin:fs|write", {
|
||||
rid: this.rid,
|
||||
data: Array.from(data),
|
||||
});
|
||||
@@ -569,7 +565,7 @@ async function copyFile(
|
||||
throw new TypeError("Must be a file URL.");
|
||||
}
|
||||
|
||||
return invoke("plugin:fs|copy_file", {
|
||||
await invoke("plugin:fs|copy_file", {
|
||||
fromPath: fromPath instanceof URL ? fromPath.toString() : fromPath,
|
||||
toPath: toPath instanceof URL ? toPath.toString() : toPath,
|
||||
options,
|
||||
@@ -608,7 +604,7 @@ async function mkdir(
|
||||
throw new TypeError("Must be a file URL.");
|
||||
}
|
||||
|
||||
return invoke("plugin:fs|mkdir", {
|
||||
await invoke("plugin:fs|mkdir", {
|
||||
path: path instanceof URL ? path.toString() : path,
|
||||
options,
|
||||
});
|
||||
@@ -669,7 +665,7 @@ async function readDir(
|
||||
throw new TypeError("Must be a file URL.");
|
||||
}
|
||||
|
||||
return invoke("plugin:fs|read_dir", {
|
||||
return await invoke("plugin:fs|read_dir", {
|
||||
path: path instanceof URL ? path.toString() : path,
|
||||
options,
|
||||
});
|
||||
@@ -728,7 +724,7 @@ async function readTextFile(
|
||||
throw new TypeError("Must be a file URL.");
|
||||
}
|
||||
|
||||
return invoke<string>("plugin:fs|read_text_file", {
|
||||
return await invoke<string>("plugin:fs|read_text_file", {
|
||||
path: path instanceof URL ? path.toString() : path,
|
||||
options,
|
||||
});
|
||||
@@ -759,11 +755,11 @@ async function readTextFileLines(
|
||||
|
||||
const pathStr = path instanceof URL ? path.toString() : path;
|
||||
|
||||
return Promise.resolve({
|
||||
return await Promise.resolve({
|
||||
path: pathStr,
|
||||
rid: null as number | null,
|
||||
async next(): Promise<IteratorResult<string>> {
|
||||
if (!this.rid) {
|
||||
if (this.rid == null) {
|
||||
this.rid = await invoke<number>("plugin:fs|read_text_file_lines", {
|
||||
path: pathStr,
|
||||
options,
|
||||
@@ -779,7 +775,8 @@ async function readTextFileLines(
|
||||
if (done) this.rid = null;
|
||||
|
||||
return {
|
||||
value: done ? "" : (line as string),
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
value: done ? "" : line!,
|
||||
done,
|
||||
};
|
||||
},
|
||||
@@ -819,7 +816,7 @@ async function remove(
|
||||
throw new TypeError("Must be a file URL.");
|
||||
}
|
||||
|
||||
return invoke("plugin:fs|remove", {
|
||||
await invoke("plugin:fs|remove", {
|
||||
path: path instanceof URL ? path.toString() : path,
|
||||
options,
|
||||
});
|
||||
@@ -862,7 +859,7 @@ async function rename(
|
||||
throw new TypeError("Must be a file URL.");
|
||||
}
|
||||
|
||||
return invoke("plugin:fs|rename", {
|
||||
await invoke("plugin:fs|rename", {
|
||||
oldPath: oldPath instanceof URL ? oldPath.toString() : oldPath,
|
||||
newPath: newPath instanceof URL ? newPath.toString() : newPath,
|
||||
options,
|
||||
@@ -965,7 +962,7 @@ async function truncate(
|
||||
throw new TypeError("Must be a file URL.");
|
||||
}
|
||||
|
||||
return invoke("plugin:fs|truncate", {
|
||||
await invoke("plugin:fs|truncate", {
|
||||
path: path instanceof URL ? path.toString() : path,
|
||||
len,
|
||||
options,
|
||||
@@ -1010,7 +1007,7 @@ async function writeFile(
|
||||
throw new TypeError("Must be a file URL.");
|
||||
}
|
||||
|
||||
return invoke("plugin:fs|write_file", {
|
||||
await invoke("plugin:fs|write_file", {
|
||||
path: path instanceof URL ? path.toString() : path,
|
||||
data: Array.from(data),
|
||||
options,
|
||||
@@ -1037,7 +1034,7 @@ async function writeTextFile(
|
||||
throw new TypeError("Must be a file URL.");
|
||||
}
|
||||
|
||||
return invoke("plugin:fs|write_text_file", {
|
||||
await invoke("plugin:fs|write_text_file", {
|
||||
path: path instanceof URL ? path.toString() : path,
|
||||
data,
|
||||
options,
|
||||
@@ -1071,7 +1068,7 @@ async function exists(
|
||||
throw new TypeError("Must be a file URL.");
|
||||
}
|
||||
|
||||
return invoke("plugin:fs|exists", {
|
||||
return await invoke("plugin:fs|exists", {
|
||||
path: path instanceof URL ? path.toString() : path,
|
||||
options,
|
||||
});
|
||||
@@ -1098,11 +1095,11 @@ interface DebouncedWatchOptions extends WatchOptions {
|
||||
/**
|
||||
* @since 2.0.0
|
||||
*/
|
||||
type WatchEvent = {
|
||||
interface WatchEvent {
|
||||
type: WatchEventKind;
|
||||
paths: string[];
|
||||
attrs: unknown;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 2.0.0
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@tauri-apps/plugin-fs",
|
||||
"version": "2.0.0-beta.2",
|
||||
"version": "2.0.0-beta.3",
|
||||
"description": "Access the file system.",
|
||||
"license": "MIT or APACHE-2.0",
|
||||
"authors": [
|
||||
@@ -24,6 +24,6 @@
|
||||
"LICENSE"
|
||||
],
|
||||
"dependencies": {
|
||||
"@tauri-apps/api": "2.0.0-beta.8"
|
||||
"@tauri-apps/api": "2.0.0-beta.11"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ permissions = [
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-app-meta-recursive"
|
||||
description = "This allows read access to metadata of the `$APP` folder, including file listing and statistics."
|
||||
description = "This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics."
|
||||
permissions = [
|
||||
"read-meta",
|
||||
"scope-app-recursive"
|
||||
@@ -71,7 +71,7 @@ permissions = [
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-app-meta"
|
||||
description = "This allows read access to metadata of the `$APP` folder, including file listing and statistics."
|
||||
description = "This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics."
|
||||
permissions = [
|
||||
"read-meta",
|
||||
"scope-app-index"
|
||||
|
||||
@@ -63,7 +63,7 @@ permissions = [
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-appcache-meta-recursive"
|
||||
description = "This allows read access to metadata of the `$APPCACHE` folder, including file listing and statistics."
|
||||
description = "This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics."
|
||||
permissions = [
|
||||
"read-meta",
|
||||
"scope-appcache-recursive"
|
||||
@@ -71,7 +71,7 @@ permissions = [
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-appcache-meta"
|
||||
description = "This allows read access to metadata of the `$APPCACHE` folder, including file listing and statistics."
|
||||
description = "This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics."
|
||||
permissions = [
|
||||
"read-meta",
|
||||
"scope-appcache-index"
|
||||
|
||||
@@ -63,7 +63,7 @@ permissions = [
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-appconfig-meta-recursive"
|
||||
description = "This allows read access to metadata of the `$APPCONFIG` folder, including file listing and statistics."
|
||||
description = "This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics."
|
||||
permissions = [
|
||||
"read-meta",
|
||||
"scope-appconfig-recursive"
|
||||
@@ -71,7 +71,7 @@ permissions = [
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-appconfig-meta"
|
||||
description = "This allows read access to metadata of the `$APPCONFIG` folder, including file listing and statistics."
|
||||
description = "This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics."
|
||||
permissions = [
|
||||
"read-meta",
|
||||
"scope-appconfig-index"
|
||||
|
||||
@@ -63,7 +63,7 @@ permissions = [
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-appdata-meta-recursive"
|
||||
description = "This allows read access to metadata of the `$APPDATA` folder, including file listing and statistics."
|
||||
description = "This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics."
|
||||
permissions = [
|
||||
"read-meta",
|
||||
"scope-appdata-recursive"
|
||||
@@ -71,7 +71,7 @@ permissions = [
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-appdata-meta"
|
||||
description = "This allows read access to metadata of the `$APPDATA` folder, including file listing and statistics."
|
||||
description = "This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics."
|
||||
permissions = [
|
||||
"read-meta",
|
||||
"scope-appdata-index"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user