headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -111,7 +111,7 @@
"type": "string"
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri internal convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri internal convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -297,37 +297,44 @@
{
"description": "Enables the disable command without any pre-configured scope.",
"type": "string",
- "const": "allow-disable"
+ "const": "allow-disable",
+ "markdownDescription": "Enables the disable command without any pre-configured scope."
},
{
"description": "Denies the disable command without any pre-configured scope.",
"type": "string",
- "const": "deny-disable"
+ "const": "deny-disable",
+ "markdownDescription": "Denies the disable command without any pre-configured scope."
},
{
"description": "Enables the enable command without any pre-configured scope.",
"type": "string",
- "const": "allow-enable"
+ "const": "allow-enable",
+ "markdownDescription": "Enables the enable command without any pre-configured scope."
},
{
"description": "Denies the enable command without any pre-configured scope.",
"type": "string",
- "const": "deny-enable"
+ "const": "deny-enable",
+ "markdownDescription": "Denies the enable command without any pre-configured scope."
},
{
"description": "Enables the is_enabled command without any pre-configured scope.",
"type": "string",
- "const": "allow-is-enabled"
+ "const": "allow-is-enabled",
+ "markdownDescription": "Enables the is_enabled command without any pre-configured scope."
},
{
"description": "Denies the is_enabled command without any pre-configured scope.",
"type": "string",
- "const": "deny-is-enabled"
+ "const": "deny-is-enabled",
+ "markdownDescription": "Denies the is_enabled command without any pre-configured scope."
},
{
- "description": "This permission set configures if your\napplication can enable or disable auto\nstarting the application on boot.\n\n#### Granted Permissions\n\nIt allows all to check, enable and\ndisable the automatic start on boot.\n\n",
+ "description": "This permission set configures if your\napplication can enable or disable auto\nstarting the application on boot.\n\n#### Granted Permissions\n\nIt allows all to check, enable and\ndisable the automatic start on boot.\n\n\n#### This default permission set includes:\n\n- `allow-enable`\n- `allow-disable`\n- `allow-is-enabled`",
"type": "string",
- "const": "default"
+ "const": "default",
+ "markdownDescription": "This permission set configures if your\napplication can enable or disable auto\nstarting the application on boot.\n\n#### Granted Permissions\n\nIt allows all to check, enable and\ndisable the automatic start on boot.\n\n\n#### This default permission set includes:\n\n- `allow-enable`\n- `allow-disable`\n- `allow-is-enabled`"
}
]
}
diff --git a/plugins/autostart/src/lib.rs b/plugins/autostart/src/lib.rs
index 5550bfa1..83cac89c 100644
--- a/plugins/autostart/src/lib.rs
+++ b/plugins/autostart/src/lib.rs
@@ -14,7 +14,7 @@ use auto_launch::{AutoLaunch, AutoLaunchBuilder};
use serde::{ser::Serializer, Serialize};
use tauri::{
command,
- plugin::{Builder, TauriPlugin},
+ plugin::{Builder as PluginBuilder, TauriPlugin},
Manager, Runtime, State,
};
@@ -22,8 +22,9 @@ use std::env::current_exe;
type Result = std::result::Result;
-#[derive(Debug, Copy, Clone)]
+#[derive(Debug, Default, Copy, Clone)]
pub enum MacosLauncher {
+ #[default]
LaunchAgent,
AppleScript,
}
@@ -71,10 +72,12 @@ impl AutoLaunchManager {
}
pub trait ManagerExt {
+ /// TODO: Rename these to `autostart` or `auto_start` in v3
fn autolaunch(&self) -> State<'_, AutoLaunchManager>;
}
impl> ManagerExt for T {
+ /// TODO: Rename these to `autostart` or `auto_start` in v3
fn autolaunch(&self) -> State<'_, AutoLaunchManager> {
self.state::()
}
@@ -95,59 +98,132 @@ async fn is_enabled(manager: State<'_, AutoLaunchManager>) -> Result {
manager.is_enabled()
}
+#[derive(Default)]
+pub struct Builder {
+ #[cfg(target_os = "macos")]
+ macos_launcher: MacosLauncher,
+ args: Vec,
+}
+
+impl Builder {
+ /// Create a new auto start builder with default settings
+ pub fn new() -> Self {
+ Self::default()
+ }
+
+ /// Adds an argument to pass to your app on startup.
+ ///
+ /// ## Examples
+ ///
+ /// ```no_run
+ /// Builder::new()
+ /// .arg("--from-autostart")
+ /// .arg("--hey")
+ /// .build();
+ /// ```
+ pub fn arg>(mut self, arg: S) -> Self {
+ self.args.push(arg.into());
+ self
+ }
+
+ /// Adds multiple arguments to pass to your app on startup.
+ ///
+ /// ## Examples
+ ///
+ /// ```no_run
+ /// Builder::new()
+ /// .args(["--from-autostart", "--hey"])
+ /// .build();
+ /// ```
+ pub fn args(mut self, args: I) -> Self
+ where
+ I: IntoIterator,
+ S: Into,
+ {
+ for arg in args {
+ self = self.arg(arg);
+ }
+ self
+ }
+
+ /// Sets whether to use launch agent or apple script to be used to enable auto start,
+ /// the builder's default is [`MacosLauncher::LaunchAgent`]
+ #[cfg(target_os = "macos")]
+ pub fn macos_launcher(mut self, macos_launcher: MacosLauncher) -> Self {
+ self.macos_launcher = macos_launcher;
+ self
+ }
+
+ pub fn build(self) -> TauriPlugin {
+ PluginBuilder::new("autostart")
+ .invoke_handler(tauri::generate_handler![enable, disable, is_enabled])
+ .setup(move |app, _api| {
+ let mut builder = AutoLaunchBuilder::new();
+ builder.set_app_name(&app.package_info().name);
+ builder.set_args(&self.args);
+
+ let current_exe = current_exe()?;
+
+ #[cfg(windows)]
+ builder.set_app_path(¤t_exe.display().to_string());
+
+ #[cfg(target_os = "macos")]
+ {
+ builder.set_use_launch_agent(matches!(
+ self.macos_launcher,
+ MacosLauncher::LaunchAgent
+ ));
+ // on macOS, current_exe gives path to /Applications/Example.app/MacOS/Example
+ // but this results in seeing a Unix Executable in macOS login items
+ // It must be: /Applications/Example.app
+ // If it didn't find exactly a single occurance of .app, it will default to
+ // exe path to not break it.
+ let exe_path = current_exe.canonicalize()?.display().to_string();
+ let parts: Vec<&str> = exe_path.split(".app/").collect();
+ let app_path = if parts.len() == 2
+ && matches!(self.macos_launcher, MacosLauncher::AppleScript)
+ {
+ format!("{}.app", parts.first().unwrap())
+ } else {
+ exe_path
+ };
+ builder.set_app_path(&app_path);
+ }
+
+ #[cfg(target_os = "linux")]
+ if let Some(appimage) = app
+ .env()
+ .appimage
+ .and_then(|p| p.to_str().map(|s| s.to_string()))
+ {
+ builder.set_app_path(&appimage);
+ } else {
+ builder.set_app_path(¤t_exe.display().to_string());
+ }
+
+ app.manage(AutoLaunchManager(
+ builder.build().map_err(|e| e.to_string())?,
+ ));
+ Ok(())
+ })
+ .build()
+ }
+}
+
/// Initializes the plugin.
///
/// `args` - are passed to your app on startup.
pub fn init(
- macos_launcher: MacosLauncher,
+ #[allow(unused)] macos_launcher: MacosLauncher,
args: Option>,
) -> TauriPlugin {
- Builder::new("autostart")
- .invoke_handler(tauri::generate_handler![enable, disable, is_enabled])
- .setup(move |app, _api| {
- let mut builder = AutoLaunchBuilder::new();
- builder.set_app_name(&app.package_info().name);
- if let Some(args) = args {
- builder.set_args(&args);
- }
- builder.set_use_launch_agent(matches!(macos_launcher, MacosLauncher::LaunchAgent));
-
- let current_exe = current_exe()?;
-
- #[cfg(windows)]
- builder.set_app_path(¤t_exe.display().to_string());
- #[cfg(target_os = "macos")]
- {
- // on macOS, current_exe gives path to /Applications/Example.app/MacOS/Example
- // but this results in seeing a Unix Executable in macOS login items
- // It must be: /Applications/Example.app
- // If it didn't find exactly a single occurance of .app, it will default to
- // exe path to not break it.
- let exe_path = current_exe.canonicalize()?.display().to_string();
- let parts: Vec<&str> = exe_path.split(".app/").collect();
- let app_path =
- if parts.len() == 2 && matches!(macos_launcher, MacosLauncher::AppleScript) {
- format!("{}.app", parts.first().unwrap())
- } else {
- exe_path
- };
- builder.set_app_path(&app_path);
- }
- #[cfg(target_os = "linux")]
- if let Some(appimage) = app
- .env()
- .appimage
- .and_then(|p| p.to_str().map(|s| s.to_string()))
- {
- builder.set_app_path(&appimage);
- } else {
- builder.set_app_path(¤t_exe.display().to_string());
- }
-
- app.manage(AutoLaunchManager(
- builder.build().map_err(|e| e.to_string())?,
- ));
- Ok(())
- })
- .build()
+ let mut builder = Builder::new();
+ if let Some(args) = args {
+ builder = builder.args(args)
+ }
+ #[cfg(target_os = "macos")]
+ {
+ builder = builder.macos_launcher(macos_launcher);
+ }
+ builder.build()
}
diff --git a/plugins/barcode-scanner/permissions/autogenerated/reference.md b/plugins/barcode-scanner/permissions/autogenerated/reference.md
index 50cbcf99..9cc9f3c6 100644
--- a/plugins/barcode-scanner/permissions/autogenerated/reference.md
+++ b/plugins/barcode-scanner/permissions/autogenerated/reference.md
@@ -9,6 +9,8 @@ It allows all barcode related features.
+#### This default permission set includes the following:
+
- `allow-cancel`
- `allow-check-permissions`
- `allow-open-app-settings`
diff --git a/plugins/barcode-scanner/permissions/schemas/schema.json b/plugins/barcode-scanner/permissions/schemas/schema.json
index f41214b4..69fb0d5d 100644
--- a/plugins/barcode-scanner/permissions/schemas/schema.json
+++ b/plugins/barcode-scanner/permissions/schemas/schema.json
@@ -49,7 +49,7 @@
"minimum": 1.0
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -111,7 +111,7 @@
"type": "string"
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri internal convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri internal convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -297,67 +297,80 @@
{
"description": "Enables the cancel command without any pre-configured scope.",
"type": "string",
- "const": "allow-cancel"
+ "const": "allow-cancel",
+ "markdownDescription": "Enables the cancel command without any pre-configured scope."
},
{
"description": "Denies the cancel command without any pre-configured scope.",
"type": "string",
- "const": "deny-cancel"
+ "const": "deny-cancel",
+ "markdownDescription": "Denies the cancel command without any pre-configured scope."
},
{
"description": "Enables the check_permissions command without any pre-configured scope.",
"type": "string",
- "const": "allow-check-permissions"
+ "const": "allow-check-permissions",
+ "markdownDescription": "Enables the check_permissions command without any pre-configured scope."
},
{
"description": "Denies the check_permissions command without any pre-configured scope.",
"type": "string",
- "const": "deny-check-permissions"
+ "const": "deny-check-permissions",
+ "markdownDescription": "Denies the check_permissions command without any pre-configured scope."
},
{
"description": "Enables the open_app_settings command without any pre-configured scope.",
"type": "string",
- "const": "allow-open-app-settings"
+ "const": "allow-open-app-settings",
+ "markdownDescription": "Enables the open_app_settings command without any pre-configured scope."
},
{
"description": "Denies the open_app_settings command without any pre-configured scope.",
"type": "string",
- "const": "deny-open-app-settings"
+ "const": "deny-open-app-settings",
+ "markdownDescription": "Denies the open_app_settings command without any pre-configured scope."
},
{
"description": "Enables the request_permissions command without any pre-configured scope.",
"type": "string",
- "const": "allow-request-permissions"
+ "const": "allow-request-permissions",
+ "markdownDescription": "Enables the request_permissions command without any pre-configured scope."
},
{
"description": "Denies the request_permissions command without any pre-configured scope.",
"type": "string",
- "const": "deny-request-permissions"
+ "const": "deny-request-permissions",
+ "markdownDescription": "Denies the request_permissions command without any pre-configured scope."
},
{
"description": "Enables the scan command without any pre-configured scope.",
"type": "string",
- "const": "allow-scan"
+ "const": "allow-scan",
+ "markdownDescription": "Enables the scan command without any pre-configured scope."
},
{
"description": "Denies the scan command without any pre-configured scope.",
"type": "string",
- "const": "deny-scan"
+ "const": "deny-scan",
+ "markdownDescription": "Denies the scan command without any pre-configured scope."
},
{
"description": "Enables the vibrate command without any pre-configured scope.",
"type": "string",
- "const": "allow-vibrate"
+ "const": "allow-vibrate",
+ "markdownDescription": "Enables the vibrate command without any pre-configured scope."
},
{
"description": "Denies the vibrate command without any pre-configured scope.",
"type": "string",
- "const": "deny-vibrate"
+ "const": "deny-vibrate",
+ "markdownDescription": "Denies the vibrate command without any pre-configured scope."
},
{
- "description": "This permission set configures which\nbarcode scanning features are by default exposed.\n\n#### Granted Permissions\n\nIt allows all barcode related features.\n\n",
+ "description": "This permission set configures which\nbarcode scanning features are by default exposed.\n\n#### Granted Permissions\n\nIt allows all barcode related features.\n\n\n#### This default permission set includes:\n\n- `allow-cancel`\n- `allow-check-permissions`\n- `allow-open-app-settings`\n- `allow-request-permissions`\n- `allow-scan`\n- `allow-vibrate`",
"type": "string",
- "const": "default"
+ "const": "default",
+ "markdownDescription": "This permission set configures which\nbarcode scanning features are by default exposed.\n\n#### Granted Permissions\n\nIt allows all barcode related features.\n\n\n#### This default permission set includes:\n\n- `allow-cancel`\n- `allow-check-permissions`\n- `allow-open-app-settings`\n- `allow-request-permissions`\n- `allow-scan`\n- `allow-vibrate`"
}
]
}
diff --git a/plugins/biometric/permissions/autogenerated/reference.md b/plugins/biometric/permissions/autogenerated/reference.md
index 37a9fa07..8f085093 100644
--- a/plugins/biometric/permissions/autogenerated/reference.md
+++ b/plugins/biometric/permissions/autogenerated/reference.md
@@ -9,6 +9,8 @@ It allows acccess to all biometric commands.
+#### This default permission set includes the following:
+
- `allow-authenticate`
- `allow-status`
diff --git a/plugins/biometric/permissions/schemas/schema.json b/plugins/biometric/permissions/schemas/schema.json
index cc4d04d5..416759b5 100644
--- a/plugins/biometric/permissions/schemas/schema.json
+++ b/plugins/biometric/permissions/schemas/schema.json
@@ -49,7 +49,7 @@
"minimum": 1.0
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -111,7 +111,7 @@
"type": "string"
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri internal convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri internal convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -297,27 +297,32 @@
{
"description": "Enables the authenticate command without any pre-configured scope.",
"type": "string",
- "const": "allow-authenticate"
+ "const": "allow-authenticate",
+ "markdownDescription": "Enables the authenticate command without any pre-configured scope."
},
{
"description": "Denies the authenticate command without any pre-configured scope.",
"type": "string",
- "const": "deny-authenticate"
+ "const": "deny-authenticate",
+ "markdownDescription": "Denies the authenticate command without any pre-configured scope."
},
{
"description": "Enables the status command without any pre-configured scope.",
"type": "string",
- "const": "allow-status"
+ "const": "allow-status",
+ "markdownDescription": "Enables the status command without any pre-configured scope."
},
{
"description": "Denies the status command without any pre-configured scope.",
"type": "string",
- "const": "deny-status"
+ "const": "deny-status",
+ "markdownDescription": "Denies the status command without any pre-configured scope."
},
{
- "description": "This permission set configures which\nbiometric features are by default exposed.\n\n#### Granted Permissions\n\nIt allows acccess to all biometric commands.\n\n",
+ "description": "This permission set configures which\nbiometric features are by default exposed.\n\n#### Granted Permissions\n\nIt allows acccess to all biometric commands.\n\n\n#### This default permission set includes:\n\n- `allow-authenticate`\n- `allow-status`",
"type": "string",
- "const": "default"
+ "const": "default",
+ "markdownDescription": "This permission set configures which\nbiometric features are by default exposed.\n\n#### Granted Permissions\n\nIt allows acccess to all biometric commands.\n\n\n#### This default permission set includes:\n\n- `allow-authenticate`\n- `allow-status`"
}
]
}
diff --git a/plugins/cli/permissions/autogenerated/reference.md b/plugins/cli/permissions/autogenerated/reference.md
index a920b749..cfa83f0a 100644
--- a/plugins/cli/permissions/autogenerated/reference.md
+++ b/plugins/cli/permissions/autogenerated/reference.md
@@ -2,6 +2,8 @@
Allows reading the CLI matches
+#### This default permission set includes the following:
+
- `allow-cli-matches`
## Permission Table
diff --git a/plugins/cli/permissions/schemas/schema.json b/plugins/cli/permissions/schemas/schema.json
index b376890e..45941514 100644
--- a/plugins/cli/permissions/schemas/schema.json
+++ b/plugins/cli/permissions/schemas/schema.json
@@ -49,7 +49,7 @@
"minimum": 1.0
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -111,7 +111,7 @@
"type": "string"
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri internal convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri internal convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -297,17 +297,20 @@
{
"description": "Enables the cli_matches command without any pre-configured scope.",
"type": "string",
- "const": "allow-cli-matches"
+ "const": "allow-cli-matches",
+ "markdownDescription": "Enables the cli_matches command without any pre-configured scope."
},
{
"description": "Denies the cli_matches command without any pre-configured scope.",
"type": "string",
- "const": "deny-cli-matches"
+ "const": "deny-cli-matches",
+ "markdownDescription": "Denies the cli_matches command without any pre-configured scope."
},
{
- "description": "Allows reading the CLI matches",
+ "description": "Allows reading the CLI matches\n#### This default permission set includes:\n\n- `allow-cli-matches`",
"type": "string",
- "const": "default"
+ "const": "default",
+ "markdownDescription": "Allows reading the CLI matches\n#### This default permission set includes:\n\n- `allow-cli-matches`"
}
]
}
diff --git a/plugins/clipboard-manager/CHANGELOG.md b/plugins/clipboard-manager/CHANGELOG.md
index 91cfc44d..895d8c71 100644
--- a/plugins/clipboard-manager/CHANGELOG.md
+++ b/plugins/clipboard-manager/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## \[2.2.2]
+
+### bug
+
+- [`d37bbdef`](https://github.com/tauri-apps/plugins-workspace/commit/d37bbdef8dc70e61e59f9fe0bb8b2a48999d0aa1) ([#2507](https://github.com/tauri-apps/plugins-workspace/pull/2507) by [@SquitchYT](https://github.com/tauri-apps/plugins-workspace/../../SquitchYT)) Fix clipboard-manager Wayland support.
+
## \[2.2.1]
- [`ce11079f`](https://github.com/tauri-apps/plugins-workspace/commit/ce11079f19852fbefdecf0e4c7d947af3624fee0) ([#2280](https://github.com/tauri-apps/plugins-workspace/pull/2280) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) Explicitly drop `arboard::Clipboard` on exit. Add recommendation to not use read methods on the mainthread.
diff --git a/plugins/clipboard-manager/Cargo.toml b/plugins/clipboard-manager/Cargo.toml
index 5b486fcf..0c35e591 100644
--- a/plugins/clipboard-manager/Cargo.toml
+++ b/plugins/clipboard-manager/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-clipboard-manager"
-version = "2.2.1"
+version = "2.2.2"
description = "Read and write to the system clipboard."
edition = { workspace = true }
authors = { workspace = true }
@@ -36,4 +36,4 @@ thiserror = { workspace = true }
tauri = { workspace = true, features = ["wry"] }
[target."cfg(any(target_os = \"macos\", windows, target_os = \"linux\", target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\"))".dependencies]
-arboard = "3"
+arboard = { version = "3", features = ["wayland-data-control"] }
diff --git a/plugins/clipboard-manager/guest-js/index.ts b/plugins/clipboard-manager/guest-js/index.ts
index 19851fe0..a37bbfab 100644
--- a/plugins/clipboard-manager/guest-js/index.ts
+++ b/plugins/clipboard-manager/guest-js/index.ts
@@ -91,7 +91,7 @@ async function writeImage(
* import { readImage } from '@tauri-apps/plugin-clipboard-manager';
*
* const clipboardImage = await readImage();
- * const blob = new Blob([await clipboardImage.rbga()], { type: 'image' })
+ * const blob = new Blob([await clipboardImage.rgba()], { type: 'image' })
* const url = URL.createObjectURL(blob)
* ```
* @since 2.0.0
diff --git a/plugins/clipboard-manager/package.json b/plugins/clipboard-manager/package.json
index ff1ba9e7..9b78843b 100644
--- a/plugins/clipboard-manager/package.json
+++ b/plugins/clipboard-manager/package.json
@@ -1,6 +1,6 @@
{
"name": "@tauri-apps/plugin-clipboard-manager",
- "version": "2.2.1",
+ "version": "2.2.2",
"license": "MIT OR Apache-2.0",
"authors": [
"Tauri Programme within The Commons Conservancy"
diff --git a/plugins/clipboard-manager/permissions/autogenerated/reference.md b/plugins/clipboard-manager/permissions/autogenerated/reference.md
index 6b8bf14f..f8bed009 100644
--- a/plugins/clipboard-manager/permissions/autogenerated/reference.md
+++ b/plugins/clipboard-manager/permissions/autogenerated/reference.md
@@ -7,6 +7,8 @@ application specific if read and/or write access is needed.
Clipboard interaction needs to be explicitly enabled.
+#### This default permission set includes the following:
+
## Permission Table
diff --git a/plugins/clipboard-manager/permissions/schemas/schema.json b/plugins/clipboard-manager/permissions/schemas/schema.json
index c2763492..891c6f0d 100644
--- a/plugins/clipboard-manager/permissions/schemas/schema.json
+++ b/plugins/clipboard-manager/permissions/schemas/schema.json
@@ -49,7 +49,7 @@
"minimum": 1.0
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -111,7 +111,7 @@
"type": "string"
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri internal convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri internal convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -297,67 +297,80 @@
{
"description": "Enables the clear command without any pre-configured scope.",
"type": "string",
- "const": "allow-clear"
+ "const": "allow-clear",
+ "markdownDescription": "Enables the clear command without any pre-configured scope."
},
{
"description": "Denies the clear command without any pre-configured scope.",
"type": "string",
- "const": "deny-clear"
+ "const": "deny-clear",
+ "markdownDescription": "Denies the clear command without any pre-configured scope."
},
{
"description": "Enables the read_image command without any pre-configured scope.",
"type": "string",
- "const": "allow-read-image"
+ "const": "allow-read-image",
+ "markdownDescription": "Enables the read_image command without any pre-configured scope."
},
{
"description": "Denies the read_image command without any pre-configured scope.",
"type": "string",
- "const": "deny-read-image"
+ "const": "deny-read-image",
+ "markdownDescription": "Denies the read_image command without any pre-configured scope."
},
{
"description": "Enables the read_text command without any pre-configured scope.",
"type": "string",
- "const": "allow-read-text"
+ "const": "allow-read-text",
+ "markdownDescription": "Enables the read_text command without any pre-configured scope."
},
{
"description": "Denies the read_text command without any pre-configured scope.",
"type": "string",
- "const": "deny-read-text"
+ "const": "deny-read-text",
+ "markdownDescription": "Denies the read_text command without any pre-configured scope."
},
{
"description": "Enables the write_html command without any pre-configured scope.",
"type": "string",
- "const": "allow-write-html"
+ "const": "allow-write-html",
+ "markdownDescription": "Enables the write_html command without any pre-configured scope."
},
{
"description": "Denies the write_html command without any pre-configured scope.",
"type": "string",
- "const": "deny-write-html"
+ "const": "deny-write-html",
+ "markdownDescription": "Denies the write_html command without any pre-configured scope."
},
{
"description": "Enables the write_image command without any pre-configured scope.",
"type": "string",
- "const": "allow-write-image"
+ "const": "allow-write-image",
+ "markdownDescription": "Enables the write_image command without any pre-configured scope."
},
{
"description": "Denies the write_image command without any pre-configured scope.",
"type": "string",
- "const": "deny-write-image"
+ "const": "deny-write-image",
+ "markdownDescription": "Denies the write_image command without any pre-configured scope."
},
{
"description": "Enables the write_text command without any pre-configured scope.",
"type": "string",
- "const": "allow-write-text"
+ "const": "allow-write-text",
+ "markdownDescription": "Enables the write_text command without any pre-configured scope."
},
{
"description": "Denies the write_text command without any pre-configured scope.",
"type": "string",
- "const": "deny-write-text"
+ "const": "deny-write-text",
+ "markdownDescription": "Denies the write_text command without any pre-configured scope."
},
{
"description": "No features are enabled by default, as we believe\nthe clipboard can be inherently dangerous and it is \napplication specific if read and/or write access is needed.\n\nClipboard interaction needs to be explicitly enabled.\n",
"type": "string",
- "const": "default"
+ "const": "default",
+ "markdownDescription": "No features are enabled by default, as we believe\nthe clipboard can be inherently dangerous and it is \napplication specific if read and/or write access is needed.\n\nClipboard interaction needs to be explicitly enabled.\n"
}
]
}
diff --git a/plugins/deep-link/CHANGELOG.md b/plugins/deep-link/CHANGELOG.md
index 4c3c9b9a..325970da 100644
--- a/plugins/deep-link/CHANGELOG.md
+++ b/plugins/deep-link/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog
+## \[2.2.1]
+
+### bug
+
+- [`38deef43`](https://github.com/tauri-apps/plugins-workspace/commit/38deef43dca9d5a09a38ed2da45b0f86c6afa1c5) ([#2483](https://github.com/tauri-apps/plugins-workspace/pull/2483)) Fix `is_registered` not being able to pickup deep link registered in `HKEY_LOCAL_MACHINE` on Windows
+- [`38deef43`](https://github.com/tauri-apps/plugins-workspace/commit/38deef43dca9d5a09a38ed2da45b0f86c6afa1c5) ([#2483](https://github.com/tauri-apps/plugins-workspace/pull/2483)) Fix `unregister` not being able to remove deep link registered in `HKEY_LOCAL_MACHINE` on Windows
+
## \[2.2.0]
- [`3a79266b`](https://github.com/tauri-apps/plugins-workspace/commit/3a79266b8cf96a55b1ae6339d725567d45a44b1d) ([#2173](https://github.com/tauri-apps/plugins-workspace/pull/2173) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) Bumped all plugins to `v2.2.0`. From now, the versions for the Rust and JavaScript packages of each plugin will be in sync with each other.
diff --git a/plugins/deep-link/Cargo.toml b/plugins/deep-link/Cargo.toml
index 068cad08..8b3d069d 100644
--- a/plugins/deep-link/Cargo.toml
+++ b/plugins/deep-link/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-deep-link"
-version = "2.2.0"
+version = "2.2.1"
description = "Set your Tauri application as the default handler for an URL"
authors = { workspace = true }
license = { workspace = true }
diff --git a/plugins/deep-link/examples/app/CHANGELOG.md b/plugins/deep-link/examples/app/CHANGELOG.md
index 5e89d0f4..06e931d0 100644
--- a/plugins/deep-link/examples/app/CHANGELOG.md
+++ b/plugins/deep-link/examples/app/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## \[2.2.1]
+
+### Dependencies
+
+- Upgraded to `deep-link-js@2.2.1`
+
## \[2.2.0]
### Dependencies
diff --git a/plugins/deep-link/examples/app/package.json b/plugins/deep-link/examples/app/package.json
index 8cd45fa1..90709d2d 100644
--- a/plugins/deep-link/examples/app/package.json
+++ b/plugins/deep-link/examples/app/package.json
@@ -1,7 +1,7 @@
{
"name": "deep-link-example",
"private": true,
- "version": "2.2.0",
+ "version": "2.2.1",
"type": "module",
"scripts": {
"dev": "vite",
@@ -10,12 +10,12 @@
"tauri": "tauri"
},
"dependencies": {
- "@tauri-apps/api": "2.2.0",
- "@tauri-apps/plugin-deep-link": "2.2.0"
+ "@tauri-apps/api": "2.4.1",
+ "@tauri-apps/plugin-deep-link": "2.2.1"
},
"devDependencies": {
- "@tauri-apps/cli": "2.2.7",
- "typescript": "^5.2.2",
- "vite": "^6.0.0"
+ "@tauri-apps/cli": "2.4.1",
+ "typescript": "^5.7.3",
+ "vite": "^6.2.6"
}
}
diff --git a/plugins/deep-link/package.json b/plugins/deep-link/package.json
index 0b05dd86..15eff738 100644
--- a/plugins/deep-link/package.json
+++ b/plugins/deep-link/package.json
@@ -1,6 +1,6 @@
{
"name": "@tauri-apps/plugin-deep-link",
- "version": "2.2.0",
+ "version": "2.2.1",
"description": "Set your Tauri application as the default handler for an URL",
"license": "MIT OR Apache-2.0",
"authors": [
diff --git a/plugins/deep-link/permissions/autogenerated/reference.md b/plugins/deep-link/permissions/autogenerated/reference.md
index 3b84f1c5..a8ef1874 100644
--- a/plugins/deep-link/permissions/autogenerated/reference.md
+++ b/plugins/deep-link/permissions/autogenerated/reference.md
@@ -2,6 +2,8 @@
Allows reading the opened deep link via the get_current command
+#### This default permission set includes the following:
+
- `allow-get-current`
## Permission Table
diff --git a/plugins/deep-link/permissions/schemas/schema.json b/plugins/deep-link/permissions/schemas/schema.json
index 7d887dc2..c9fc2ceb 100644
--- a/plugins/deep-link/permissions/schemas/schema.json
+++ b/plugins/deep-link/permissions/schemas/schema.json
@@ -49,7 +49,7 @@
"minimum": 1.0
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -111,7 +111,7 @@
"type": "string"
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri internal convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri internal convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -297,47 +297,56 @@
{
"description": "Enables the get_current command without any pre-configured scope.",
"type": "string",
- "const": "allow-get-current"
+ "const": "allow-get-current",
+ "markdownDescription": "Enables the get_current command without any pre-configured scope."
},
{
"description": "Denies the get_current command without any pre-configured scope.",
"type": "string",
- "const": "deny-get-current"
+ "const": "deny-get-current",
+ "markdownDescription": "Denies the get_current command without any pre-configured scope."
},
{
"description": "Enables the is_registered command without any pre-configured scope.",
"type": "string",
- "const": "allow-is-registered"
+ "const": "allow-is-registered",
+ "markdownDescription": "Enables the is_registered command without any pre-configured scope."
},
{
"description": "Denies the is_registered command without any pre-configured scope.",
"type": "string",
- "const": "deny-is-registered"
+ "const": "deny-is-registered",
+ "markdownDescription": "Denies the is_registered command without any pre-configured scope."
},
{
"description": "Enables the register command without any pre-configured scope.",
"type": "string",
- "const": "allow-register"
+ "const": "allow-register",
+ "markdownDescription": "Enables the register command without any pre-configured scope."
},
{
"description": "Denies the register command without any pre-configured scope.",
"type": "string",
- "const": "deny-register"
+ "const": "deny-register",
+ "markdownDescription": "Denies the register command without any pre-configured scope."
},
{
"description": "Enables the unregister command without any pre-configured scope.",
"type": "string",
- "const": "allow-unregister"
+ "const": "allow-unregister",
+ "markdownDescription": "Enables the unregister command without any pre-configured scope."
},
{
"description": "Denies the unregister command without any pre-configured scope.",
"type": "string",
- "const": "deny-unregister"
+ "const": "deny-unregister",
+ "markdownDescription": "Denies the unregister command without any pre-configured scope."
},
{
- "description": "Allows reading the opened deep link via the get_current command",
+ "description": "Allows reading the opened deep link via the get_current command\n#### This default permission set includes:\n\n- `allow-get-current`",
"type": "string",
- "const": "default"
+ "const": "default",
+ "markdownDescription": "Allows reading the opened deep link via the get_current command\n#### This default permission set includes:\n\n- `allow-get-current`"
}
]
}
diff --git a/plugins/deep-link/src/lib.rs b/plugins/deep-link/src/lib.rs
index c259e6b2..30584df5 100644
--- a/plugins/deep-link/src/lib.rs
+++ b/plugins/deep-link/src/lib.rs
@@ -172,7 +172,7 @@ mod imp {
use tauri::Manager;
use tauri::{AppHandle, Runtime};
#[cfg(windows)]
- use windows_registry::CURRENT_USER;
+ use windows_registry::{CLASSES_ROOT, CURRENT_USER, LOCAL_MACHINE};
/// Access to the deep-link APIs.
pub struct DeepLink {
@@ -258,25 +258,23 @@ mod imp {
pub fn register>(&self, _protocol: S) -> crate::Result<()> {
#[cfg(windows)]
{
- let key_base = format!("Software\\Classes\\{}", _protocol.as_ref());
+ let protocol = _protocol.as_ref();
+ let key_base = format!("Software\\Classes\\{protocol}");
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("", 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!("{exe},0"))?;
+ icon_reg.set_string("", format!("{exe},0"))?;
let cmd_reg = CURRENT_USER.create(format!("{key_base}\\shell\\open\\command"))?;
- cmd_reg.set_string("", &format!("\"{exe}\" \"%1\""))?;
+ cmd_reg.set_string("", format!("\"{exe}\" \"%1\""))?;
Ok(())
}
@@ -351,13 +349,21 @@ mod imp {
///
/// ## Platform-specific:
///
+ /// - **Windows**: Requires admin rights if the protocol is registered on local machine
+ /// (this can happen when registered from the NSIS installer when the install mode is set to both or per machine)
/// - **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>(&self, _protocol: S) -> crate::Result<()> {
#[cfg(windows)]
{
- CURRENT_USER.remove_tree(format!("Software\\Classes\\{}", _protocol.as_ref()))?;
-
+ let protocol = _protocol.as_ref();
+ let path = format!("Software\\Classes\\{protocol}");
+ if LOCAL_MACHINE.open(&path).is_ok() {
+ LOCAL_MACHINE.remove_tree(&path)?;
+ }
+ if CURRENT_USER.open(&path).is_ok() {
+ CURRENT_USER.remove_tree(&path)?;
+ }
Ok(())
}
@@ -401,10 +407,11 @@ mod imp {
pub fn is_registered>(&self, _protocol: S) -> crate::Result {
#[cfg(windows)]
{
- let cmd_reg = CURRENT_USER.open(format!(
- "Software\\Classes\\{}\\shell\\open\\command",
- _protocol.as_ref()
- ))?;
+ let protocol = _protocol.as_ref();
+ let Ok(cmd_reg) = CLASSES_ROOT.open(format!("{protocol}\\shell\\open\\command"))
+ else {
+ return Ok(false);
+ };
let registered_cmd = cmd_reg.get_string("")?;
diff --git a/plugins/dialog/CHANGELOG.md b/plugins/dialog/CHANGELOG.md
index 07989c79..3ef0db82 100644
--- a/plugins/dialog/CHANGELOG.md
+++ b/plugins/dialog/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## \[2.2.1]
+
+### Dependencies
+
+- Upgraded to `fs-js@2.2.1`
+
## \[2.2.0]
- [`3a79266b`](https://github.com/tauri-apps/plugins-workspace/commit/3a79266b8cf96a55b1ae6339d725567d45a44b1d) ([#2173](https://github.com/tauri-apps/plugins-workspace/pull/2173) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) Bumped all plugins to `v2.2.0`. From now, the versions for the Rust and JavaScript packages of each plugin will be in sync with each other.
diff --git a/plugins/dialog/Cargo.toml b/plugins/dialog/Cargo.toml
index 3ca0df2d..0ee6841d 100644
--- a/plugins/dialog/Cargo.toml
+++ b/plugins/dialog/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-dialog"
-version = "2.2.0"
+version = "2.2.1"
description = "Native system dialogs for opening and saving files along with message dialogs on your Tauri application."
edition = { workspace = true }
authors = { workspace = true }
@@ -34,7 +34,7 @@ tauri = { workspace = true }
log = { workspace = true }
thiserror = { workspace = true }
url = { workspace = true }
-tauri-plugin-fs = { path = "../fs", version = "2.2.0" }
+tauri-plugin-fs = { path = "../fs", version = "2.2.1" }
[target.'cfg(target_os = "ios")'.dependencies]
tauri = { workspace = true, features = ["wry"] }
diff --git a/plugins/dialog/package.json b/plugins/dialog/package.json
index 52fef579..31ecdc3e 100644
--- a/plugins/dialog/package.json
+++ b/plugins/dialog/package.json
@@ -1,6 +1,6 @@
{
"name": "@tauri-apps/plugin-dialog",
- "version": "2.2.0",
+ "version": "2.2.1",
"license": "MIT OR Apache-2.0",
"authors": [
"Tauri Programme within The Commons Conservancy"
diff --git a/plugins/dialog/permissions/autogenerated/reference.md b/plugins/dialog/permissions/autogenerated/reference.md
index d93595d1..246c7733 100644
--- a/plugins/dialog/permissions/autogenerated/reference.md
+++ b/plugins/dialog/permissions/autogenerated/reference.md
@@ -10,6 +10,8 @@ All dialog types are enabled.
+#### This default permission set includes the following:
+
- `allow-ask`
- `allow-confirm`
- `allow-message`
diff --git a/plugins/dialog/permissions/schemas/schema.json b/plugins/dialog/permissions/schemas/schema.json
index ed8c0733..b47417ec 100644
--- a/plugins/dialog/permissions/schemas/schema.json
+++ b/plugins/dialog/permissions/schemas/schema.json
@@ -49,7 +49,7 @@
"minimum": 1.0
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -111,7 +111,7 @@
"type": "string"
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri internal convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri internal convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -297,57 +297,68 @@
{
"description": "Enables the ask command without any pre-configured scope.",
"type": "string",
- "const": "allow-ask"
+ "const": "allow-ask",
+ "markdownDescription": "Enables the ask command without any pre-configured scope."
},
{
"description": "Denies the ask command without any pre-configured scope.",
"type": "string",
- "const": "deny-ask"
+ "const": "deny-ask",
+ "markdownDescription": "Denies the ask command without any pre-configured scope."
},
{
"description": "Enables the confirm command without any pre-configured scope.",
"type": "string",
- "const": "allow-confirm"
+ "const": "allow-confirm",
+ "markdownDescription": "Enables the confirm command without any pre-configured scope."
},
{
"description": "Denies the confirm command without any pre-configured scope.",
"type": "string",
- "const": "deny-confirm"
+ "const": "deny-confirm",
+ "markdownDescription": "Denies the confirm command without any pre-configured scope."
},
{
"description": "Enables the message command without any pre-configured scope.",
"type": "string",
- "const": "allow-message"
+ "const": "allow-message",
+ "markdownDescription": "Enables the message command without any pre-configured scope."
},
{
"description": "Denies the message command without any pre-configured scope.",
"type": "string",
- "const": "deny-message"
+ "const": "deny-message",
+ "markdownDescription": "Denies the message command without any pre-configured scope."
},
{
"description": "Enables the open command without any pre-configured scope.",
"type": "string",
- "const": "allow-open"
+ "const": "allow-open",
+ "markdownDescription": "Enables the open command without any pre-configured scope."
},
{
"description": "Denies the open command without any pre-configured scope.",
"type": "string",
- "const": "deny-open"
+ "const": "deny-open",
+ "markdownDescription": "Denies the open command without any pre-configured scope."
},
{
"description": "Enables the save command without any pre-configured scope.",
"type": "string",
- "const": "allow-save"
+ "const": "allow-save",
+ "markdownDescription": "Enables the save command without any pre-configured scope."
},
{
"description": "Denies the save command without any pre-configured scope.",
"type": "string",
- "const": "deny-save"
+ "const": "deny-save",
+ "markdownDescription": "Denies the save command without any pre-configured scope."
},
{
- "description": "This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n",
+ "description": "This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n\n#### This default permission set includes:\n\n- `allow-ask`\n- `allow-confirm`\n- `allow-message`\n- `allow-save`\n- `allow-open`",
"type": "string",
- "const": "default"
+ "const": "default",
+ "markdownDescription": "This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n\n#### This default permission set includes:\n\n- `allow-ask`\n- `allow-confirm`\n- `allow-message`\n- `allow-save`\n- `allow-open`"
}
]
}
diff --git a/plugins/fs/CHANGELOG.md b/plugins/fs/CHANGELOG.md
index 533714ad..a8b72fc7 100644
--- a/plugins/fs/CHANGELOG.md
+++ b/plugins/fs/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## \[2.2.1]
+
+### bug
+
+- [`831c35ff`](https://github.com/tauri-apps/plugins-workspace/commit/831c35ff3940e841fe4418bb4cb104038b03304b) ([#2550](https://github.com/tauri-apps/plugins-workspace/pull/2550)) Fix `writeFile` ReadableStream handling due to missing async iterator support on macOS platform
+
## \[2.2.0]
- [`3a79266b`](https://github.com/tauri-apps/plugins-workspace/commit/3a79266b8cf96a55b1ae6339d725567d45a44b1d) ([#2173](https://github.com/tauri-apps/plugins-workspace/pull/2173) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) Bumped all plugins to `v2.2.0`. From now, the versions for the Rust and JavaScript packages of each plugin will be in sync with each other.
diff --git a/plugins/fs/Cargo.toml b/plugins/fs/Cargo.toml
index 5768da73..2335af72 100644
--- a/plugins/fs/Cargo.toml
+++ b/plugins/fs/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-fs"
-version = "2.2.0"
+version = "2.2.1"
description = "Access the file system."
authors = { workspace = true }
license = { workspace = true }
@@ -14,7 +14,7 @@ rustc-args = ["--cfg", "docsrs"]
rustdoc-args = ["--cfg", "docsrs"]
[package.metadata.platforms.support]
-windows = { level = "full", notes = "Apps installed via MSI or NSIS in `perMachine` and `both` mode require admin permissions for write acces in `$RESOURCES` folder" }
+windows = { level = "full", notes = "Apps installed via MSI or NSIS in `perMachine` and `both` mode require admin permissions for write access in `$RESOURCES` folder" }
linux = { level = "full", notes = "No write access to `$RESOURCES` folder" }
macos = { level = "full", notes = "No write access to `$RESOURCES` folder" }
android = { level = "partial", notes = "Access is restricted to Application folder by default" }
diff --git a/plugins/fs/api-iife.js b/plugins/fs/api-iife.js
index 8c164cd4..269935a7 100644
--- a/plugins/fs/api-iife.js
+++ b/plugins/fs/api-iife.js
@@ -1 +1 @@
-if("__TAURI__"in window){var __TAURI_PLUGIN_FS__=function(t){"use strict";function e(t,e,n,i){if("function"==typeof e||!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(t):i?i.value:e.get(t)}function n(t,e,n,i,o){if("function"==typeof e||!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return e.set(t,n),n}var i,o,r,a;"function"==typeof SuppressedError&&SuppressedError;const s="__TAURI_TO_IPC_KEY__";class f{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,i.set(this,(()=>{})),o.set(this,0),r.set(this,[]),this.id=function(t,e=!1){return window.__TAURI_INTERNALS__.transformCallback(t,e)}((({message:t,id:a})=>{if(a==e(this,o,"f"))for(e(this,i,"f").call(this,t),n(this,o,e(this,o,"f")+1);e(this,o,"f")in e(this,r,"f");){const t=e(this,r,"f")[e(this,o,"f")];e(this,i,"f").call(this,t),delete e(this,r,"f")[e(this,o,"f")],n(this,o,e(this,o,"f")+1)}else e(this,r,"f")[a]=t}))}set onmessage(t){n(this,i,t)}get onmessage(){return e(this,i,"f")}[(i=new WeakMap,o=new WeakMap,r=new WeakMap,s)](){return`__CHANNEL__:${this.id}`}toJSON(){return this[s]()}}async function c(t,e={},n){return window.__TAURI_INTERNALS__.invoke(t,e,n)}class l{get rid(){return e(this,a,"f")}constructor(t){a.set(this,void 0),n(this,a,t)}async close(){return c("plugin:resources|close",{rid:this.rid})}}var u,p;function w(t){return{isFile:t.isFile,isDirectory:t.isDirectory,isSymlink:t.isSymlink,size:t.size,mtime:null!==t.mtime?new Date(t.mtime):null,atime:null!==t.atime?new Date(t.atime):null,birthtime:null!==t.birthtime?new Date(t.birthtime):null,readonly:t.readonly,fileAttributes:t.fileAttributes,dev:t.dev,ino:t.ino,mode:t.mode,nlink:t.nlink,uid:t.uid,gid:t.gid,rdev:t.rdev,blksize:t.blksize,blocks:t.blocks}}a=new WeakMap,t.BaseDirectory=void 0,(u=t.BaseDirectory||(t.BaseDirectory={}))[u.Audio=1]="Audio",u[u.Cache=2]="Cache",u[u.Config=3]="Config",u[u.Data=4]="Data",u[u.LocalData=5]="LocalData",u[u.Document=6]="Document",u[u.Download=7]="Download",u[u.Picture=8]="Picture",u[u.Public=9]="Public",u[u.Video=10]="Video",u[u.Resource=11]="Resource",u[u.Temp=12]="Temp",u[u.AppConfig=13]="AppConfig",u[u.AppData=14]="AppData",u[u.AppLocalData=15]="AppLocalData",u[u.AppCache=16]="AppCache",u[u.AppLog=17]="AppLog",u[u.Desktop=18]="Desktop",u[u.Executable=19]="Executable",u[u.Font=20]="Font",u[u.Home=21]="Home",u[u.Runtime=22]="Runtime",u[u.Template=23]="Template",t.SeekMode=void 0,(p=t.SeekMode||(t.SeekMode={}))[p.Start=0]="Start",p[p.Current=1]="Current",p[p.End=2]="End";class h extends l{async read(t){if(0===t.byteLength)return 0;const e=await c("plugin:fs|read",{rid:this.rid,len:t.byteLength}),n=function(t){const e=new Uint8ClampedArray(t),n=e.byteLength;let i=0;for(let t=0;tt instanceof URL?t.toString():t)),options:i,onEvent:r});return()=>{y(a)}},t.watchImmediate=async function(t,e,n){const i={recursive:!1,...n,delayMs:null},o=Array.isArray(t)?t:[t];for(const t of o)if(t instanceof URL&&"file:"!==t.protocol)throw new TypeError("Must be a file URL.");const r=new f;r.onmessage=e;const a=await c("plugin:fs|watch",{paths:o.map((t=>t instanceof URL?t.toString():t)),options:i,onEvent:r});return()=>{y(a)}},t.writeFile=async function(t,e,n){if(t instanceof URL&&"file:"!==t.protocol)throw new TypeError("Must be a file URL.");if(e instanceof ReadableStream){const i=await d(t,n);for await(const t of e)await i.write(t);await i.close()}else await c("plugin:fs|write_file",e,{headers:{path:encodeURIComponent(t instanceof URL?t.toString():t),options:JSON.stringify(n)}})},t.writeTextFile=async function(t,e,n){if(t instanceof URL&&"file:"!==t.protocol)throw new TypeError("Must be a file URL.");const i=new TextEncoder;await c("plugin:fs|write_text_file",i.encode(e),{headers:{path:encodeURIComponent(t instanceof URL?t.toString():t),options:JSON.stringify(n)}})},t}({});Object.defineProperty(window.__TAURI__,"fs",{value:__TAURI_PLUGIN_FS__})}
+if("__TAURI__"in window){var __TAURI_PLUGIN_FS__=function(t){"use strict";function e(t,e,n,i){if("function"==typeof e||!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(t):i?i.value:e.get(t)}function n(t,e,n,i,o){if("function"==typeof e||!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return e.set(t,n),n}var i,o,r,a;"function"==typeof SuppressedError&&SuppressedError;const s="__TAURI_TO_IPC_KEY__";class f{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,i.set(this,(()=>{})),o.set(this,0),r.set(this,[]),this.id=function(t,e=!1){return window.__TAURI_INTERNALS__.transformCallback(t,e)}((({message:t,id:a})=>{if(a==e(this,o,"f"))for(e(this,i,"f").call(this,t),n(this,o,e(this,o,"f")+1);e(this,o,"f")in e(this,r,"f");){const t=e(this,r,"f")[e(this,o,"f")];e(this,i,"f").call(this,t),delete e(this,r,"f")[e(this,o,"f")],n(this,o,e(this,o,"f")+1)}else e(this,r,"f")[a]=t}))}set onmessage(t){n(this,i,t)}get onmessage(){return e(this,i,"f")}[(i=new WeakMap,o=new WeakMap,r=new WeakMap,s)](){return`__CHANNEL__:${this.id}`}toJSON(){return this[s]()}}async function c(t,e={},n){return window.__TAURI_INTERNALS__.invoke(t,e,n)}class l{get rid(){return e(this,a,"f")}constructor(t){a.set(this,void 0),n(this,a,t)}async close(){return c("plugin:resources|close",{rid:this.rid})}}var u,p;function w(t){return{isFile:t.isFile,isDirectory:t.isDirectory,isSymlink:t.isSymlink,size:t.size,mtime:null!==t.mtime?new Date(t.mtime):null,atime:null!==t.atime?new Date(t.atime):null,birthtime:null!==t.birthtime?new Date(t.birthtime):null,readonly:t.readonly,fileAttributes:t.fileAttributes,dev:t.dev,ino:t.ino,mode:t.mode,nlink:t.nlink,uid:t.uid,gid:t.gid,rdev:t.rdev,blksize:t.blksize,blocks:t.blocks}}a=new WeakMap,t.BaseDirectory=void 0,(u=t.BaseDirectory||(t.BaseDirectory={}))[u.Audio=1]="Audio",u[u.Cache=2]="Cache",u[u.Config=3]="Config",u[u.Data=4]="Data",u[u.LocalData=5]="LocalData",u[u.Document=6]="Document",u[u.Download=7]="Download",u[u.Picture=8]="Picture",u[u.Public=9]="Public",u[u.Video=10]="Video",u[u.Resource=11]="Resource",u[u.Temp=12]="Temp",u[u.AppConfig=13]="AppConfig",u[u.AppData=14]="AppData",u[u.AppLocalData=15]="AppLocalData",u[u.AppCache=16]="AppCache",u[u.AppLog=17]="AppLog",u[u.Desktop=18]="Desktop",u[u.Executable=19]="Executable",u[u.Font=20]="Font",u[u.Home=21]="Home",u[u.Runtime=22]="Runtime",u[u.Template=23]="Template",t.SeekMode=void 0,(p=t.SeekMode||(t.SeekMode={}))[p.Start=0]="Start",p[p.Current=1]="Current",p[p.End=2]="End";class h extends l{async read(t){if(0===t.byteLength)return 0;const e=await c("plugin:fs|read",{rid:this.rid,len:t.byteLength}),n=function(t){const e=new Uint8ClampedArray(t),n=e.byteLength;let i=0;for(let t=0;tt instanceof URL?t.toString():t)),options:i,onEvent:r});return()=>{y(a)}},t.watchImmediate=async function(t,e,n){const i={recursive:!1,...n,delayMs:null},o=Array.isArray(t)?t:[t];for(const t of o)if(t instanceof URL&&"file:"!==t.protocol)throw new TypeError("Must be a file URL.");const r=new f;r.onmessage=e;const a=await c("plugin:fs|watch",{paths:o.map((t=>t instanceof URL?t.toString():t)),options:i,onEvent:r});return()=>{y(a)}},t.writeFile=async function(t,e,n){if(t instanceof URL&&"file:"!==t.protocol)throw new TypeError("Must be a file URL.");if(e instanceof ReadableStream){const i=await d(t,n),o=e.getReader();try{for(;;){const{done:t,value:e}=await o.read();if(t)break;await i.write(e)}}finally{o.releaseLock(),await i.close()}}else await c("plugin:fs|write_file",e,{headers:{path:encodeURIComponent(t instanceof URL?t.toString():t),options:JSON.stringify(n)}})},t.writeTextFile=async function(t,e,n){if(t instanceof URL&&"file:"!==t.protocol)throw new TypeError("Must be a file URL.");const i=new TextEncoder;await c("plugin:fs|write_text_file",i.encode(e),{headers:{path:encodeURIComponent(t instanceof URL?t.toString():t),options:JSON.stringify(n)}})},t}({});Object.defineProperty(window.__TAURI__,"fs",{value:__TAURI_PLUGIN_FS__})}
diff --git a/plugins/fs/guest-js/index.ts b/plugins/fs/guest-js/index.ts
index e0438d58..f19cbc80 100644
--- a/plugins/fs/guest-js/index.ts
+++ b/plugins/fs/guest-js/index.ts
@@ -1075,10 +1075,18 @@ async function writeFile(
if (data instanceof ReadableStream) {
const file = await open(path, options)
- for await (const chunk of data) {
- await file.write(chunk)
+ const reader = data.getReader()
+
+ try {
+ while (true) {
+ const { done, value } = await reader.read()
+ if (done) break
+ await file.write(value)
+ }
+ } finally {
+ reader.releaseLock()
+ await file.close()
}
- await file.close()
} else {
await invoke('plugin:fs|write_file', data, {
headers: {
diff --git a/plugins/fs/package.json b/plugins/fs/package.json
index 09efc93d..47d9fe34 100644
--- a/plugins/fs/package.json
+++ b/plugins/fs/package.json
@@ -1,6 +1,6 @@
{
"name": "@tauri-apps/plugin-fs",
- "version": "2.2.0",
+ "version": "2.2.1",
"description": "Access the file system.",
"license": "MIT OR Apache-2.0",
"authors": [
diff --git a/plugins/fs/permissions/autogenerated/reference.md b/plugins/fs/permissions/autogenerated/reference.md
index 3cec32ed..35ef551f 100644
--- a/plugins/fs/permissions/autogenerated/reference.md
+++ b/plugins/fs/permissions/autogenerated/reference.md
@@ -24,8 +24,8 @@ This default permission set prevents access to critical components
of the Tauri application by default.
On Windows the webview data folder access is denied.
-#### Included permissions within this default permission set:
+#### This default permission set includes the following:
- `create-app-specific-dirs`
- `read-app-specific-dirs-recursive`
diff --git a/plugins/fs/permissions/default.toml b/plugins/fs/permissions/default.toml
index 4cc7bd51..78836df7 100644
--- a/plugins/fs/permissions/default.toml
+++ b/plugins/fs/permissions/default.toml
@@ -25,8 +25,6 @@ the `mkdir` command.
This default permission set prevents access to critical components
of the Tauri application by default.
On Windows the webview data folder access is denied.
-
-#### Included permissions within this default permission set:
"""
permissions = [
"create-app-specific-dirs",
diff --git a/plugins/fs/permissions/schemas/schema.json b/plugins/fs/permissions/schemas/schema.json
index 2c13d5c6..54c6798b 100644
--- a/plugins/fs/permissions/schemas/schema.json
+++ b/plugins/fs/permissions/schemas/schema.json
@@ -49,7 +49,7 @@
"minimum": 1.0
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -111,7 +111,7 @@
"type": "string"
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri internal convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri internal convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -295,1444 +295,1732 @@
"type": "string",
"oneOf": [
{
- "description": "This allows full recursive read access to the complete application folders, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app-recursive`",
"type": "string",
- "const": "allow-app-read-recursive"
+ "const": "allow-app-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app-recursive`"
},
{
- "description": "This allows full recursive write access to the complete application folders, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app-recursive`",
"type": "string",
- "const": "allow-app-write-recursive"
+ "const": "allow-app-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app-recursive`"
},
{
- "description": "This allows non-recursive read access to the application folders.",
+ "description": "This allows non-recursive read access to the application folders.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app`",
"type": "string",
- "const": "allow-app-read"
+ "const": "allow-app-read",
+ "markdownDescription": "This allows non-recursive read access to the application folders.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app`"
},
{
- "description": "This allows non-recursive write access to the application folders.",
+ "description": "This allows non-recursive write access to the application folders.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app`",
"type": "string",
- "const": "allow-app-write"
+ "const": "allow-app-write",
+ "markdownDescription": "This allows non-recursive write access to the application folders.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app`"
},
{
- "description": "This allows full recursive read access to metadata of the application folders, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-recursive`",
"type": "string",
- "const": "allow-app-meta-recursive"
+ "const": "allow-app-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the application folders, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-index`",
"type": "string",
- "const": "allow-app-meta"
+ "const": "allow-app-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-index`"
},
{
"description": "This scope permits recursive access to the complete application folders, including sub directories and files.",
"type": "string",
- "const": "scope-app-recursive"
+ "const": "scope-app-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete application folders, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the application folders.",
"type": "string",
- "const": "scope-app"
+ "const": "scope-app",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the application folders."
},
{
"description": "This scope permits to list all files and folders in the application directories.",
"type": "string",
- "const": "scope-app-index"
+ "const": "scope-app-index",
+ "markdownDescription": "This scope permits to list all files and folders in the application directories."
},
{
- "description": "This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache-recursive`",
"type": "string",
- "const": "allow-appcache-read-recursive"
+ "const": "allow-appcache-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache-recursive`",
"type": "string",
- "const": "allow-appcache-write-recursive"
+ "const": "allow-appcache-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$APPCACHE` folder.",
+ "description": "This allows non-recursive read access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache`",
"type": "string",
- "const": "allow-appcache-read"
+ "const": "allow-appcache-read",
+ "markdownDescription": "This allows non-recursive read access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache`"
},
{
- "description": "This allows non-recursive write access to the `$APPCACHE` folder.",
+ "description": "This allows non-recursive write access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache`",
"type": "string",
- "const": "allow-appcache-write"
+ "const": "allow-appcache-write",
+ "markdownDescription": "This allows non-recursive write access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache`"
},
{
- "description": "This allows full recursive 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.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-recursive`",
"type": "string",
- "const": "allow-appcache-meta-recursive"
+ "const": "allow-appcache-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-recursive`"
},
{
- "description": "This allows non-recursive 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.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-index`",
"type": "string",
- "const": "allow-appcache-meta"
+ "const": "allow-appcache-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-index`"
},
{
"description": "This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files.",
"type": "string",
- "const": "scope-appcache-recursive"
+ "const": "scope-appcache-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder.",
"type": "string",
- "const": "scope-appcache"
+ "const": "scope-appcache",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder."
},
{
"description": "This scope permits to list all files and folders in the `$APPCACHE`folder.",
"type": "string",
- "const": "scope-appcache-index"
+ "const": "scope-appcache-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$APPCACHE`folder."
},
{
- "description": "This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig-recursive`",
"type": "string",
- "const": "allow-appconfig-read-recursive"
+ "const": "allow-appconfig-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig-recursive`",
"type": "string",
- "const": "allow-appconfig-write-recursive"
+ "const": "allow-appconfig-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$APPCONFIG` folder.",
+ "description": "This allows non-recursive read access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig`",
"type": "string",
- "const": "allow-appconfig-read"
+ "const": "allow-appconfig-read",
+ "markdownDescription": "This allows non-recursive read access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig`"
},
{
- "description": "This allows non-recursive write access to the `$APPCONFIG` folder.",
+ "description": "This allows non-recursive write access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig`",
"type": "string",
- "const": "allow-appconfig-write"
+ "const": "allow-appconfig-write",
+ "markdownDescription": "This allows non-recursive write access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig`"
},
{
- "description": "This allows full recursive 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.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-recursive`",
"type": "string",
- "const": "allow-appconfig-meta-recursive"
+ "const": "allow-appconfig-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-recursive`"
},
{
- "description": "This allows non-recursive 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.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-index`",
"type": "string",
- "const": "allow-appconfig-meta"
+ "const": "allow-appconfig-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-index`"
},
{
"description": "This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files.",
"type": "string",
- "const": "scope-appconfig-recursive"
+ "const": "scope-appconfig-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder.",
"type": "string",
- "const": "scope-appconfig"
+ "const": "scope-appconfig",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder."
},
{
"description": "This scope permits to list all files and folders in the `$APPCONFIG`folder.",
"type": "string",
- "const": "scope-appconfig-index"
+ "const": "scope-appconfig-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$APPCONFIG`folder."
},
{
- "description": "This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata-recursive`",
"type": "string",
- "const": "allow-appdata-read-recursive"
+ "const": "allow-appdata-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata-recursive`",
"type": "string",
- "const": "allow-appdata-write-recursive"
+ "const": "allow-appdata-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$APPDATA` folder.",
+ "description": "This allows non-recursive read access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata`",
"type": "string",
- "const": "allow-appdata-read"
+ "const": "allow-appdata-read",
+ "markdownDescription": "This allows non-recursive read access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata`"
},
{
- "description": "This allows non-recursive write access to the `$APPDATA` folder.",
+ "description": "This allows non-recursive write access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata`",
"type": "string",
- "const": "allow-appdata-write"
+ "const": "allow-appdata-write",
+ "markdownDescription": "This allows non-recursive write access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata`"
},
{
- "description": "This allows full recursive 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.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-recursive`",
"type": "string",
- "const": "allow-appdata-meta-recursive"
+ "const": "allow-appdata-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-recursive`"
},
{
- "description": "This allows non-recursive 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.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-index`",
"type": "string",
- "const": "allow-appdata-meta"
+ "const": "allow-appdata-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-index`"
},
{
"description": "This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files.",
"type": "string",
- "const": "scope-appdata-recursive"
+ "const": "scope-appdata-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$APPDATA` folder.",
"type": "string",
- "const": "scope-appdata"
+ "const": "scope-appdata",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPDATA` folder."
},
{
"description": "This scope permits to list all files and folders in the `$APPDATA`folder.",
"type": "string",
- "const": "scope-appdata-index"
+ "const": "scope-appdata-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$APPDATA`folder."
},
{
- "description": "This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata-recursive`",
"type": "string",
- "const": "allow-applocaldata-read-recursive"
+ "const": "allow-applocaldata-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata-recursive`",
"type": "string",
- "const": "allow-applocaldata-write-recursive"
+ "const": "allow-applocaldata-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$APPLOCALDATA` folder.",
+ "description": "This allows non-recursive read access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata`",
"type": "string",
- "const": "allow-applocaldata-read"
+ "const": "allow-applocaldata-read",
+ "markdownDescription": "This allows non-recursive read access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata`"
},
{
- "description": "This allows non-recursive write access to the `$APPLOCALDATA` folder.",
+ "description": "This allows non-recursive write access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata`",
"type": "string",
- "const": "allow-applocaldata-write"
+ "const": "allow-applocaldata-write",
+ "markdownDescription": "This allows non-recursive write access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata`"
},
{
- "description": "This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-recursive`",
"type": "string",
- "const": "allow-applocaldata-meta-recursive"
+ "const": "allow-applocaldata-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-index`",
"type": "string",
- "const": "allow-applocaldata-meta"
+ "const": "allow-applocaldata-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-index`"
},
{
"description": "This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.",
"type": "string",
- "const": "scope-applocaldata-recursive"
+ "const": "scope-applocaldata-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder.",
"type": "string",
- "const": "scope-applocaldata"
+ "const": "scope-applocaldata",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder."
},
{
"description": "This scope permits to list all files and folders in the `$APPLOCALDATA`folder.",
"type": "string",
- "const": "scope-applocaldata-index"
+ "const": "scope-applocaldata-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$APPLOCALDATA`folder."
},
{
- "description": "This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog-recursive`",
"type": "string",
- "const": "allow-applog-read-recursive"
+ "const": "allow-applog-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog-recursive`",
"type": "string",
- "const": "allow-applog-write-recursive"
+ "const": "allow-applog-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$APPLOG` folder.",
+ "description": "This allows non-recursive read access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog`",
"type": "string",
- "const": "allow-applog-read"
+ "const": "allow-applog-read",
+ "markdownDescription": "This allows non-recursive read access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog`"
},
{
- "description": "This allows non-recursive write access to the `$APPLOG` folder.",
+ "description": "This allows non-recursive write access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog`",
"type": "string",
- "const": "allow-applog-write"
+ "const": "allow-applog-write",
+ "markdownDescription": "This allows non-recursive write access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog`"
},
{
- "description": "This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-recursive`",
"type": "string",
- "const": "allow-applog-meta-recursive"
+ "const": "allow-applog-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-index`",
"type": "string",
- "const": "allow-applog-meta"
+ "const": "allow-applog-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-index`"
},
{
"description": "This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files.",
"type": "string",
- "const": "scope-applog-recursive"
+ "const": "scope-applog-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$APPLOG` folder.",
"type": "string",
- "const": "scope-applog"
+ "const": "scope-applog",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPLOG` folder."
},
{
"description": "This scope permits to list all files and folders in the `$APPLOG`folder.",
"type": "string",
- "const": "scope-applog-index"
+ "const": "scope-applog-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$APPLOG`folder."
},
{
- "description": "This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio-recursive`",
"type": "string",
- "const": "allow-audio-read-recursive"
+ "const": "allow-audio-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio-recursive`",
"type": "string",
- "const": "allow-audio-write-recursive"
+ "const": "allow-audio-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$AUDIO` folder.",
+ "description": "This allows non-recursive read access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio`",
"type": "string",
- "const": "allow-audio-read"
+ "const": "allow-audio-read",
+ "markdownDescription": "This allows non-recursive read access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio`"
},
{
- "description": "This allows non-recursive write access to the `$AUDIO` folder.",
+ "description": "This allows non-recursive write access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio`",
"type": "string",
- "const": "allow-audio-write"
+ "const": "allow-audio-write",
+ "markdownDescription": "This allows non-recursive write access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio`"
},
{
- "description": "This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-recursive`",
"type": "string",
- "const": "allow-audio-meta-recursive"
+ "const": "allow-audio-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-index`",
"type": "string",
- "const": "allow-audio-meta"
+ "const": "allow-audio-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-index`"
},
{
"description": "This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files.",
"type": "string",
- "const": "scope-audio-recursive"
+ "const": "scope-audio-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$AUDIO` folder.",
"type": "string",
- "const": "scope-audio"
+ "const": "scope-audio",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$AUDIO` folder."
},
{
"description": "This scope permits to list all files and folders in the `$AUDIO`folder.",
"type": "string",
- "const": "scope-audio-index"
+ "const": "scope-audio-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$AUDIO`folder."
},
{
- "description": "This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache-recursive`",
"type": "string",
- "const": "allow-cache-read-recursive"
+ "const": "allow-cache-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache-recursive`",
"type": "string",
- "const": "allow-cache-write-recursive"
+ "const": "allow-cache-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$CACHE` folder.",
+ "description": "This allows non-recursive read access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache`",
"type": "string",
- "const": "allow-cache-read"
+ "const": "allow-cache-read",
+ "markdownDescription": "This allows non-recursive read access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache`"
},
{
- "description": "This allows non-recursive write access to the `$CACHE` folder.",
+ "description": "This allows non-recursive write access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache`",
"type": "string",
- "const": "allow-cache-write"
+ "const": "allow-cache-write",
+ "markdownDescription": "This allows non-recursive write access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache`"
},
{
- "description": "This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-recursive`",
"type": "string",
- "const": "allow-cache-meta-recursive"
+ "const": "allow-cache-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-index`",
"type": "string",
- "const": "allow-cache-meta"
+ "const": "allow-cache-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-index`"
},
{
"description": "This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files.",
"type": "string",
- "const": "scope-cache-recursive"
+ "const": "scope-cache-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$CACHE` folder.",
"type": "string",
- "const": "scope-cache"
+ "const": "scope-cache",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$CACHE` folder."
},
{
"description": "This scope permits to list all files and folders in the `$CACHE`folder.",
"type": "string",
- "const": "scope-cache-index"
+ "const": "scope-cache-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$CACHE`folder."
},
{
- "description": "This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config-recursive`",
"type": "string",
- "const": "allow-config-read-recursive"
+ "const": "allow-config-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config-recursive`",
"type": "string",
- "const": "allow-config-write-recursive"
+ "const": "allow-config-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$CONFIG` folder.",
+ "description": "This allows non-recursive read access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config`",
"type": "string",
- "const": "allow-config-read"
+ "const": "allow-config-read",
+ "markdownDescription": "This allows non-recursive read access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config`"
},
{
- "description": "This allows non-recursive write access to the `$CONFIG` folder.",
+ "description": "This allows non-recursive write access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config`",
"type": "string",
- "const": "allow-config-write"
+ "const": "allow-config-write",
+ "markdownDescription": "This allows non-recursive write access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config`"
},
{
- "description": "This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-recursive`",
"type": "string",
- "const": "allow-config-meta-recursive"
+ "const": "allow-config-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-index`",
"type": "string",
- "const": "allow-config-meta"
+ "const": "allow-config-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-index`"
},
{
"description": "This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files.",
"type": "string",
- "const": "scope-config-recursive"
+ "const": "scope-config-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$CONFIG` folder.",
"type": "string",
- "const": "scope-config"
+ "const": "scope-config",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$CONFIG` folder."
},
{
"description": "This scope permits to list all files and folders in the `$CONFIG`folder.",
"type": "string",
- "const": "scope-config-index"
+ "const": "scope-config-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$CONFIG`folder."
},
{
- "description": "This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data-recursive`",
"type": "string",
- "const": "allow-data-read-recursive"
+ "const": "allow-data-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data-recursive`",
"type": "string",
- "const": "allow-data-write-recursive"
+ "const": "allow-data-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$DATA` folder.",
+ "description": "This allows non-recursive read access to the `$DATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data`",
"type": "string",
- "const": "allow-data-read"
+ "const": "allow-data-read",
+ "markdownDescription": "This allows non-recursive read access to the `$DATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data`"
},
{
- "description": "This allows non-recursive write access to the `$DATA` folder.",
+ "description": "This allows non-recursive write access to the `$DATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data`",
"type": "string",
- "const": "allow-data-write"
+ "const": "allow-data-write",
+ "markdownDescription": "This allows non-recursive write access to the `$DATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data`"
},
{
- "description": "This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-recursive`",
"type": "string",
- "const": "allow-data-meta-recursive"
+ "const": "allow-data-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-index`",
"type": "string",
- "const": "allow-data-meta"
+ "const": "allow-data-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-index`"
},
{
"description": "This scope permits recursive access to the complete `$DATA` folder, including sub directories and files.",
"type": "string",
- "const": "scope-data-recursive"
+ "const": "scope-data-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$DATA` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$DATA` folder.",
"type": "string",
- "const": "scope-data"
+ "const": "scope-data",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DATA` folder."
},
{
"description": "This scope permits to list all files and folders in the `$DATA`folder.",
"type": "string",
- "const": "scope-data-index"
+ "const": "scope-data-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$DATA`folder."
},
{
- "description": "This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop-recursive`",
"type": "string",
- "const": "allow-desktop-read-recursive"
+ "const": "allow-desktop-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop-recursive`",
"type": "string",
- "const": "allow-desktop-write-recursive"
+ "const": "allow-desktop-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$DESKTOP` folder.",
+ "description": "This allows non-recursive read access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop`",
"type": "string",
- "const": "allow-desktop-read"
+ "const": "allow-desktop-read",
+ "markdownDescription": "This allows non-recursive read access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop`"
},
{
- "description": "This allows non-recursive write access to the `$DESKTOP` folder.",
+ "description": "This allows non-recursive write access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop`",
"type": "string",
- "const": "allow-desktop-write"
+ "const": "allow-desktop-write",
+ "markdownDescription": "This allows non-recursive write access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop`"
},
{
- "description": "This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-recursive`",
"type": "string",
- "const": "allow-desktop-meta-recursive"
+ "const": "allow-desktop-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-index`",
"type": "string",
- "const": "allow-desktop-meta"
+ "const": "allow-desktop-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-index`"
},
{
"description": "This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files.",
"type": "string",
- "const": "scope-desktop-recursive"
+ "const": "scope-desktop-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder.",
"type": "string",
- "const": "scope-desktop"
+ "const": "scope-desktop",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder."
},
{
"description": "This scope permits to list all files and folders in the `$DESKTOP`folder.",
"type": "string",
- "const": "scope-desktop-index"
+ "const": "scope-desktop-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$DESKTOP`folder."
},
{
- "description": "This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document-recursive`",
"type": "string",
- "const": "allow-document-read-recursive"
+ "const": "allow-document-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document-recursive`",
"type": "string",
- "const": "allow-document-write-recursive"
+ "const": "allow-document-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$DOCUMENT` folder.",
+ "description": "This allows non-recursive read access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document`",
"type": "string",
- "const": "allow-document-read"
+ "const": "allow-document-read",
+ "markdownDescription": "This allows non-recursive read access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document`"
},
{
- "description": "This allows non-recursive write access to the `$DOCUMENT` folder.",
+ "description": "This allows non-recursive write access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document`",
"type": "string",
- "const": "allow-document-write"
+ "const": "allow-document-write",
+ "markdownDescription": "This allows non-recursive write access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document`"
},
{
- "description": "This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-recursive`",
"type": "string",
- "const": "allow-document-meta-recursive"
+ "const": "allow-document-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-index`",
"type": "string",
- "const": "allow-document-meta"
+ "const": "allow-document-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-index`"
},
{
"description": "This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files.",
"type": "string",
- "const": "scope-document-recursive"
+ "const": "scope-document-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder.",
"type": "string",
- "const": "scope-document"
+ "const": "scope-document",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder."
},
{
"description": "This scope permits to list all files and folders in the `$DOCUMENT`folder.",
"type": "string",
- "const": "scope-document-index"
+ "const": "scope-document-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$DOCUMENT`folder."
},
{
- "description": "This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download-recursive`",
"type": "string",
- "const": "allow-download-read-recursive"
+ "const": "allow-download-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download-recursive`",
"type": "string",
- "const": "allow-download-write-recursive"
+ "const": "allow-download-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$DOWNLOAD` folder.",
+ "description": "This allows non-recursive read access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download`",
"type": "string",
- "const": "allow-download-read"
+ "const": "allow-download-read",
+ "markdownDescription": "This allows non-recursive read access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download`"
},
{
- "description": "This allows non-recursive write access to the `$DOWNLOAD` folder.",
+ "description": "This allows non-recursive write access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download`",
"type": "string",
- "const": "allow-download-write"
+ "const": "allow-download-write",
+ "markdownDescription": "This allows non-recursive write access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download`"
},
{
- "description": "This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-recursive`",
"type": "string",
- "const": "allow-download-meta-recursive"
+ "const": "allow-download-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-index`",
"type": "string",
- "const": "allow-download-meta"
+ "const": "allow-download-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-index`"
},
{
"description": "This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.",
"type": "string",
- "const": "scope-download-recursive"
+ "const": "scope-download-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder.",
"type": "string",
- "const": "scope-download"
+ "const": "scope-download",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder."
},
{
"description": "This scope permits to list all files and folders in the `$DOWNLOAD`folder.",
"type": "string",
- "const": "scope-download-index"
+ "const": "scope-download-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$DOWNLOAD`folder."
},
{
- "description": "This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe-recursive`",
"type": "string",
- "const": "allow-exe-read-recursive"
+ "const": "allow-exe-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe-recursive`",
"type": "string",
- "const": "allow-exe-write-recursive"
+ "const": "allow-exe-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$EXE` folder.",
+ "description": "This allows non-recursive read access to the `$EXE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe`",
"type": "string",
- "const": "allow-exe-read"
+ "const": "allow-exe-read",
+ "markdownDescription": "This allows non-recursive read access to the `$EXE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe`"
},
{
- "description": "This allows non-recursive write access to the `$EXE` folder.",
+ "description": "This allows non-recursive write access to the `$EXE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe`",
"type": "string",
- "const": "allow-exe-write"
+ "const": "allow-exe-write",
+ "markdownDescription": "This allows non-recursive write access to the `$EXE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe`"
},
{
- "description": "This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-recursive`",
"type": "string",
- "const": "allow-exe-meta-recursive"
+ "const": "allow-exe-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-index`",
"type": "string",
- "const": "allow-exe-meta"
+ "const": "allow-exe-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-index`"
},
{
"description": "This scope permits recursive access to the complete `$EXE` folder, including sub directories and files.",
"type": "string",
- "const": "scope-exe-recursive"
+ "const": "scope-exe-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$EXE` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$EXE` folder.",
"type": "string",
- "const": "scope-exe"
+ "const": "scope-exe",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$EXE` folder."
},
{
"description": "This scope permits to list all files and folders in the `$EXE`folder.",
"type": "string",
- "const": "scope-exe-index"
+ "const": "scope-exe-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$EXE`folder."
},
{
- "description": "This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font-recursive`",
"type": "string",
- "const": "allow-font-read-recursive"
+ "const": "allow-font-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font-recursive`",
"type": "string",
- "const": "allow-font-write-recursive"
+ "const": "allow-font-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$FONT` folder.",
+ "description": "This allows non-recursive read access to the `$FONT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font`",
"type": "string",
- "const": "allow-font-read"
+ "const": "allow-font-read",
+ "markdownDescription": "This allows non-recursive read access to the `$FONT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font`"
},
{
- "description": "This allows non-recursive write access to the `$FONT` folder.",
+ "description": "This allows non-recursive write access to the `$FONT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font`",
"type": "string",
- "const": "allow-font-write"
+ "const": "allow-font-write",
+ "markdownDescription": "This allows non-recursive write access to the `$FONT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font`"
},
{
- "description": "This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-recursive`",
"type": "string",
- "const": "allow-font-meta-recursive"
+ "const": "allow-font-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-index`",
"type": "string",
- "const": "allow-font-meta"
+ "const": "allow-font-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-index`"
},
{
"description": "This scope permits recursive access to the complete `$FONT` folder, including sub directories and files.",
"type": "string",
- "const": "scope-font-recursive"
+ "const": "scope-font-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$FONT` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$FONT` folder.",
"type": "string",
- "const": "scope-font"
+ "const": "scope-font",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$FONT` folder."
},
{
"description": "This scope permits to list all files and folders in the `$FONT`folder.",
"type": "string",
- "const": "scope-font-index"
+ "const": "scope-font-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$FONT`folder."
},
{
- "description": "This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home-recursive`",
"type": "string",
- "const": "allow-home-read-recursive"
+ "const": "allow-home-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home-recursive`",
"type": "string",
- "const": "allow-home-write-recursive"
+ "const": "allow-home-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$HOME` folder.",
+ "description": "This allows non-recursive read access to the `$HOME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home`",
"type": "string",
- "const": "allow-home-read"
+ "const": "allow-home-read",
+ "markdownDescription": "This allows non-recursive read access to the `$HOME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home`"
},
{
- "description": "This allows non-recursive write access to the `$HOME` folder.",
+ "description": "This allows non-recursive write access to the `$HOME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home`",
"type": "string",
- "const": "allow-home-write"
+ "const": "allow-home-write",
+ "markdownDescription": "This allows non-recursive write access to the `$HOME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home`"
},
{
- "description": "This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-recursive`",
"type": "string",
- "const": "allow-home-meta-recursive"
+ "const": "allow-home-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-index`",
"type": "string",
- "const": "allow-home-meta"
+ "const": "allow-home-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-index`"
},
{
"description": "This scope permits recursive access to the complete `$HOME` folder, including sub directories and files.",
"type": "string",
- "const": "scope-home-recursive"
+ "const": "scope-home-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$HOME` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$HOME` folder.",
"type": "string",
- "const": "scope-home"
+ "const": "scope-home",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$HOME` folder."
},
{
"description": "This scope permits to list all files and folders in the `$HOME`folder.",
"type": "string",
- "const": "scope-home-index"
+ "const": "scope-home-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$HOME`folder."
},
{
- "description": "This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata-recursive`",
"type": "string",
- "const": "allow-localdata-read-recursive"
+ "const": "allow-localdata-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata-recursive`",
"type": "string",
- "const": "allow-localdata-write-recursive"
+ "const": "allow-localdata-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$LOCALDATA` folder.",
+ "description": "This allows non-recursive read access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata`",
"type": "string",
- "const": "allow-localdata-read"
+ "const": "allow-localdata-read",
+ "markdownDescription": "This allows non-recursive read access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata`"
},
{
- "description": "This allows non-recursive write access to the `$LOCALDATA` folder.",
+ "description": "This allows non-recursive write access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata`",
"type": "string",
- "const": "allow-localdata-write"
+ "const": "allow-localdata-write",
+ "markdownDescription": "This allows non-recursive write access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata`"
},
{
- "description": "This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-recursive`",
"type": "string",
- "const": "allow-localdata-meta-recursive"
+ "const": "allow-localdata-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-index`",
"type": "string",
- "const": "allow-localdata-meta"
+ "const": "allow-localdata-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-index`"
},
{
"description": "This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files.",
"type": "string",
- "const": "scope-localdata-recursive"
+ "const": "scope-localdata-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder.",
"type": "string",
- "const": "scope-localdata"
+ "const": "scope-localdata",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder."
},
{
"description": "This scope permits to list all files and folders in the `$LOCALDATA`folder.",
"type": "string",
- "const": "scope-localdata-index"
+ "const": "scope-localdata-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$LOCALDATA`folder."
},
{
- "description": "This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log-recursive`",
"type": "string",
- "const": "allow-log-read-recursive"
+ "const": "allow-log-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log-recursive`",
"type": "string",
- "const": "allow-log-write-recursive"
+ "const": "allow-log-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$LOG` folder.",
+ "description": "This allows non-recursive read access to the `$LOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log`",
"type": "string",
- "const": "allow-log-read"
+ "const": "allow-log-read",
+ "markdownDescription": "This allows non-recursive read access to the `$LOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log`"
},
{
- "description": "This allows non-recursive write access to the `$LOG` folder.",
+ "description": "This allows non-recursive write access to the `$LOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log`",
"type": "string",
- "const": "allow-log-write"
+ "const": "allow-log-write",
+ "markdownDescription": "This allows non-recursive write access to the `$LOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log`"
},
{
- "description": "This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-recursive`",
"type": "string",
- "const": "allow-log-meta-recursive"
+ "const": "allow-log-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-index`",
"type": "string",
- "const": "allow-log-meta"
+ "const": "allow-log-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-index`"
},
{
"description": "This scope permits recursive access to the complete `$LOG` folder, including sub directories and files.",
"type": "string",
- "const": "scope-log-recursive"
+ "const": "scope-log-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$LOG` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$LOG` folder.",
"type": "string",
- "const": "scope-log"
+ "const": "scope-log",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$LOG` folder."
},
{
"description": "This scope permits to list all files and folders in the `$LOG`folder.",
"type": "string",
- "const": "scope-log-index"
+ "const": "scope-log-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$LOG`folder."
},
{
- "description": "This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture-recursive`",
"type": "string",
- "const": "allow-picture-read-recursive"
+ "const": "allow-picture-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture-recursive`",
"type": "string",
- "const": "allow-picture-write-recursive"
+ "const": "allow-picture-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$PICTURE` folder.",
+ "description": "This allows non-recursive read access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture`",
"type": "string",
- "const": "allow-picture-read"
+ "const": "allow-picture-read",
+ "markdownDescription": "This allows non-recursive read access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture`"
},
{
- "description": "This allows non-recursive write access to the `$PICTURE` folder.",
+ "description": "This allows non-recursive write access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture`",
"type": "string",
- "const": "allow-picture-write"
+ "const": "allow-picture-write",
+ "markdownDescription": "This allows non-recursive write access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture`"
},
{
- "description": "This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-recursive`",
"type": "string",
- "const": "allow-picture-meta-recursive"
+ "const": "allow-picture-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-index`",
"type": "string",
- "const": "allow-picture-meta"
+ "const": "allow-picture-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-index`"
},
{
"description": "This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files.",
"type": "string",
- "const": "scope-picture-recursive"
+ "const": "scope-picture-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$PICTURE` folder.",
"type": "string",
- "const": "scope-picture"
+ "const": "scope-picture",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$PICTURE` folder."
},
{
"description": "This scope permits to list all files and folders in the `$PICTURE`folder.",
"type": "string",
- "const": "scope-picture-index"
+ "const": "scope-picture-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$PICTURE`folder."
},
{
- "description": "This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public-recursive`",
"type": "string",
- "const": "allow-public-read-recursive"
+ "const": "allow-public-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public-recursive`",
"type": "string",
- "const": "allow-public-write-recursive"
+ "const": "allow-public-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$PUBLIC` folder.",
+ "description": "This allows non-recursive read access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public`",
"type": "string",
- "const": "allow-public-read"
+ "const": "allow-public-read",
+ "markdownDescription": "This allows non-recursive read access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public`"
},
{
- "description": "This allows non-recursive write access to the `$PUBLIC` folder.",
+ "description": "This allows non-recursive write access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public`",
"type": "string",
- "const": "allow-public-write"
+ "const": "allow-public-write",
+ "markdownDescription": "This allows non-recursive write access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public`"
},
{
- "description": "This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-recursive`",
"type": "string",
- "const": "allow-public-meta-recursive"
+ "const": "allow-public-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-index`",
"type": "string",
- "const": "allow-public-meta"
+ "const": "allow-public-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-index`"
},
{
"description": "This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files.",
"type": "string",
- "const": "scope-public-recursive"
+ "const": "scope-public-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder.",
"type": "string",
- "const": "scope-public"
+ "const": "scope-public",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder."
},
{
"description": "This scope permits to list all files and folders in the `$PUBLIC`folder.",
"type": "string",
- "const": "scope-public-index"
+ "const": "scope-public-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$PUBLIC`folder."
},
{
- "description": "This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource-recursive`",
"type": "string",
- "const": "allow-resource-read-recursive"
+ "const": "allow-resource-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource-recursive`",
"type": "string",
- "const": "allow-resource-write-recursive"
+ "const": "allow-resource-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$RESOURCE` folder.",
+ "description": "This allows non-recursive read access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource`",
"type": "string",
- "const": "allow-resource-read"
+ "const": "allow-resource-read",
+ "markdownDescription": "This allows non-recursive read access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource`"
},
{
- "description": "This allows non-recursive write access to the `$RESOURCE` folder.",
+ "description": "This allows non-recursive write access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource`",
"type": "string",
- "const": "allow-resource-write"
+ "const": "allow-resource-write",
+ "markdownDescription": "This allows non-recursive write access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource`"
},
{
- "description": "This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-recursive`",
"type": "string",
- "const": "allow-resource-meta-recursive"
+ "const": "allow-resource-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-index`",
"type": "string",
- "const": "allow-resource-meta"
+ "const": "allow-resource-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-index`"
},
{
"description": "This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files.",
"type": "string",
- "const": "scope-resource-recursive"
+ "const": "scope-resource-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder.",
"type": "string",
- "const": "scope-resource"
+ "const": "scope-resource",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder."
},
{
"description": "This scope permits to list all files and folders in the `$RESOURCE`folder.",
"type": "string",
- "const": "scope-resource-index"
+ "const": "scope-resource-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$RESOURCE`folder."
},
{
- "description": "This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime-recursive`",
"type": "string",
- "const": "allow-runtime-read-recursive"
+ "const": "allow-runtime-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime-recursive`",
"type": "string",
- "const": "allow-runtime-write-recursive"
+ "const": "allow-runtime-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$RUNTIME` folder.",
+ "description": "This allows non-recursive read access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime`",
"type": "string",
- "const": "allow-runtime-read"
+ "const": "allow-runtime-read",
+ "markdownDescription": "This allows non-recursive read access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime`"
},
{
- "description": "This allows non-recursive write access to the `$RUNTIME` folder.",
+ "description": "This allows non-recursive write access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime`",
"type": "string",
- "const": "allow-runtime-write"
+ "const": "allow-runtime-write",
+ "markdownDescription": "This allows non-recursive write access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime`"
},
{
- "description": "This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-recursive`",
"type": "string",
- "const": "allow-runtime-meta-recursive"
+ "const": "allow-runtime-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-index`",
"type": "string",
- "const": "allow-runtime-meta"
+ "const": "allow-runtime-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-index`"
},
{
"description": "This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files.",
"type": "string",
- "const": "scope-runtime-recursive"
+ "const": "scope-runtime-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder.",
"type": "string",
- "const": "scope-runtime"
+ "const": "scope-runtime",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder."
},
{
"description": "This scope permits to list all files and folders in the `$RUNTIME`folder.",
"type": "string",
- "const": "scope-runtime-index"
+ "const": "scope-runtime-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$RUNTIME`folder."
},
{
- "description": "This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp-recursive`",
"type": "string",
- "const": "allow-temp-read-recursive"
+ "const": "allow-temp-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp-recursive`",
"type": "string",
- "const": "allow-temp-write-recursive"
+ "const": "allow-temp-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$TEMP` folder.",
+ "description": "This allows non-recursive read access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp`",
"type": "string",
- "const": "allow-temp-read"
+ "const": "allow-temp-read",
+ "markdownDescription": "This allows non-recursive read access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp`"
},
{
- "description": "This allows non-recursive write access to the `$TEMP` folder.",
+ "description": "This allows non-recursive write access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp`",
"type": "string",
- "const": "allow-temp-write"
+ "const": "allow-temp-write",
+ "markdownDescription": "This allows non-recursive write access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp`"
},
{
- "description": "This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-recursive`",
"type": "string",
- "const": "allow-temp-meta-recursive"
+ "const": "allow-temp-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-index`",
"type": "string",
- "const": "allow-temp-meta"
+ "const": "allow-temp-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-index`"
},
{
"description": "This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files.",
"type": "string",
- "const": "scope-temp-recursive"
+ "const": "scope-temp-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$TEMP` folder.",
"type": "string",
- "const": "scope-temp"
+ "const": "scope-temp",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$TEMP` folder."
},
{
"description": "This scope permits to list all files and folders in the `$TEMP`folder.",
"type": "string",
- "const": "scope-temp-index"
+ "const": "scope-temp-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$TEMP`folder."
},
{
- "description": "This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template-recursive`",
"type": "string",
- "const": "allow-template-read-recursive"
+ "const": "allow-template-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template-recursive`",
"type": "string",
- "const": "allow-template-write-recursive"
+ "const": "allow-template-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$TEMPLATE` folder.",
+ "description": "This allows non-recursive read access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template`",
"type": "string",
- "const": "allow-template-read"
+ "const": "allow-template-read",
+ "markdownDescription": "This allows non-recursive read access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template`"
},
{
- "description": "This allows non-recursive write access to the `$TEMPLATE` folder.",
+ "description": "This allows non-recursive write access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template`",
"type": "string",
- "const": "allow-template-write"
+ "const": "allow-template-write",
+ "markdownDescription": "This allows non-recursive write access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template`"
},
{
- "description": "This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-recursive`",
"type": "string",
- "const": "allow-template-meta-recursive"
+ "const": "allow-template-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-index`",
"type": "string",
- "const": "allow-template-meta"
+ "const": "allow-template-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-index`"
},
{
"description": "This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files.",
"type": "string",
- "const": "scope-template-recursive"
+ "const": "scope-template-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder.",
"type": "string",
- "const": "scope-template"
+ "const": "scope-template",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder."
},
{
"description": "This scope permits to list all files and folders in the `$TEMPLATE`folder.",
"type": "string",
- "const": "scope-template-index"
+ "const": "scope-template-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$TEMPLATE`folder."
},
{
- "description": "This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.",
+ "description": "This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video-recursive`",
"type": "string",
- "const": "allow-video-read-recursive"
+ "const": "allow-video-read-recursive",
+ "markdownDescription": "This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video-recursive`"
},
{
- "description": "This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.",
+ "description": "This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video-recursive`",
"type": "string",
- "const": "allow-video-write-recursive"
+ "const": "allow-video-write-recursive",
+ "markdownDescription": "This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video-recursive`"
},
{
- "description": "This allows non-recursive read access to the `$VIDEO` folder.",
+ "description": "This allows non-recursive read access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video`",
"type": "string",
- "const": "allow-video-read"
+ "const": "allow-video-read",
+ "markdownDescription": "This allows non-recursive read access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video`"
},
{
- "description": "This allows non-recursive write access to the `$VIDEO` folder.",
+ "description": "This allows non-recursive write access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video`",
"type": "string",
- "const": "allow-video-write"
+ "const": "allow-video-write",
+ "markdownDescription": "This allows non-recursive write access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video`"
},
{
- "description": "This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
+ "description": "This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-recursive`",
"type": "string",
- "const": "allow-video-meta-recursive"
+ "const": "allow-video-meta-recursive",
+ "markdownDescription": "This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-recursive`"
},
{
- "description": "This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
+ "description": "This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-index`",
"type": "string",
- "const": "allow-video-meta"
+ "const": "allow-video-meta",
+ "markdownDescription": "This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-index`"
},
{
"description": "This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files.",
"type": "string",
- "const": "scope-video-recursive"
+ "const": "scope-video-recursive",
+ "markdownDescription": "This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files."
},
{
"description": "This scope permits access to all files and list content of top level directories in the `$VIDEO` folder.",
"type": "string",
- "const": "scope-video"
+ "const": "scope-video",
+ "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$VIDEO` folder."
},
{
"description": "This scope permits to list all files and folders in the `$VIDEO`folder.",
"type": "string",
- "const": "scope-video-index"
+ "const": "scope-video-index",
+ "markdownDescription": "This scope permits to list all files and folders in the `$VIDEO`folder."
},
{
"description": "Enables the copy_file command without any pre-configured scope.",
"type": "string",
- "const": "allow-copy-file"
+ "const": "allow-copy-file",
+ "markdownDescription": "Enables the copy_file command without any pre-configured scope."
},
{
"description": "Denies the copy_file command without any pre-configured scope.",
"type": "string",
- "const": "deny-copy-file"
+ "const": "deny-copy-file",
+ "markdownDescription": "Denies the copy_file command without any pre-configured scope."
},
{
"description": "Enables the create command without any pre-configured scope.",
"type": "string",
- "const": "allow-create"
+ "const": "allow-create",
+ "markdownDescription": "Enables the create command without any pre-configured scope."
},
{
"description": "Denies the create command without any pre-configured scope.",
"type": "string",
- "const": "deny-create"
+ "const": "deny-create",
+ "markdownDescription": "Denies the create command without any pre-configured scope."
},
{
"description": "Enables the exists command without any pre-configured scope.",
"type": "string",
- "const": "allow-exists"
+ "const": "allow-exists",
+ "markdownDescription": "Enables the exists command without any pre-configured scope."
},
{
"description": "Denies the exists command without any pre-configured scope.",
"type": "string",
- "const": "deny-exists"
+ "const": "deny-exists",
+ "markdownDescription": "Denies the exists command without any pre-configured scope."
},
{
"description": "Enables the fstat command without any pre-configured scope.",
"type": "string",
- "const": "allow-fstat"
+ "const": "allow-fstat",
+ "markdownDescription": "Enables the fstat command without any pre-configured scope."
},
{
"description": "Denies the fstat command without any pre-configured scope.",
"type": "string",
- "const": "deny-fstat"
+ "const": "deny-fstat",
+ "markdownDescription": "Denies the fstat command without any pre-configured scope."
},
{
"description": "Enables the ftruncate command without any pre-configured scope.",
"type": "string",
- "const": "allow-ftruncate"
+ "const": "allow-ftruncate",
+ "markdownDescription": "Enables the ftruncate command without any pre-configured scope."
},
{
"description": "Denies the ftruncate command without any pre-configured scope.",
"type": "string",
- "const": "deny-ftruncate"
+ "const": "deny-ftruncate",
+ "markdownDescription": "Denies the ftruncate command without any pre-configured scope."
},
{
"description": "Enables the lstat command without any pre-configured scope.",
"type": "string",
- "const": "allow-lstat"
+ "const": "allow-lstat",
+ "markdownDescription": "Enables the lstat command without any pre-configured scope."
},
{
"description": "Denies the lstat command without any pre-configured scope.",
"type": "string",
- "const": "deny-lstat"
+ "const": "deny-lstat",
+ "markdownDescription": "Denies the lstat command without any pre-configured scope."
},
{
"description": "Enables the mkdir command without any pre-configured scope.",
"type": "string",
- "const": "allow-mkdir"
+ "const": "allow-mkdir",
+ "markdownDescription": "Enables the mkdir command without any pre-configured scope."
},
{
"description": "Denies the mkdir command without any pre-configured scope.",
"type": "string",
- "const": "deny-mkdir"
+ "const": "deny-mkdir",
+ "markdownDescription": "Denies the mkdir command without any pre-configured scope."
},
{
"description": "Enables the open command without any pre-configured scope.",
"type": "string",
- "const": "allow-open"
+ "const": "allow-open",
+ "markdownDescription": "Enables the open command without any pre-configured scope."
},
{
"description": "Denies the open command without any pre-configured scope.",
"type": "string",
- "const": "deny-open"
+ "const": "deny-open",
+ "markdownDescription": "Denies the open command without any pre-configured scope."
},
{
"description": "Enables the read command without any pre-configured scope.",
"type": "string",
- "const": "allow-read"
+ "const": "allow-read",
+ "markdownDescription": "Enables the read command without any pre-configured scope."
},
{
"description": "Denies the read command without any pre-configured scope.",
"type": "string",
- "const": "deny-read"
+ "const": "deny-read",
+ "markdownDescription": "Denies the read command without any pre-configured scope."
},
{
"description": "Enables the read_dir command without any pre-configured scope.",
"type": "string",
- "const": "allow-read-dir"
+ "const": "allow-read-dir",
+ "markdownDescription": "Enables the read_dir command without any pre-configured scope."
},
{
"description": "Denies the read_dir command without any pre-configured scope.",
"type": "string",
- "const": "deny-read-dir"
+ "const": "deny-read-dir",
+ "markdownDescription": "Denies the read_dir command without any pre-configured scope."
},
{
"description": "Enables the read_file command without any pre-configured scope.",
"type": "string",
- "const": "allow-read-file"
+ "const": "allow-read-file",
+ "markdownDescription": "Enables the read_file command without any pre-configured scope."
},
{
"description": "Denies the read_file command without any pre-configured scope.",
"type": "string",
- "const": "deny-read-file"
+ "const": "deny-read-file",
+ "markdownDescription": "Denies the read_file command without any pre-configured scope."
},
{
"description": "Enables the read_text_file command without any pre-configured scope.",
"type": "string",
- "const": "allow-read-text-file"
+ "const": "allow-read-text-file",
+ "markdownDescription": "Enables the read_text_file command without any pre-configured scope."
},
{
"description": "Denies the read_text_file command without any pre-configured scope.",
"type": "string",
- "const": "deny-read-text-file"
+ "const": "deny-read-text-file",
+ "markdownDescription": "Denies the read_text_file command without any pre-configured scope."
},
{
"description": "Enables the read_text_file_lines command without any pre-configured scope.",
"type": "string",
- "const": "allow-read-text-file-lines"
+ "const": "allow-read-text-file-lines",
+ "markdownDescription": "Enables the read_text_file_lines command without any pre-configured scope."
},
{
"description": "Denies the read_text_file_lines command without any pre-configured scope.",
"type": "string",
- "const": "deny-read-text-file-lines"
+ "const": "deny-read-text-file-lines",
+ "markdownDescription": "Denies the read_text_file_lines command without any pre-configured scope."
},
{
"description": "Enables the read_text_file_lines_next command without any pre-configured scope.",
"type": "string",
- "const": "allow-read-text-file-lines-next"
+ "const": "allow-read-text-file-lines-next",
+ "markdownDescription": "Enables the read_text_file_lines_next command without any pre-configured scope."
},
{
"description": "Denies the read_text_file_lines_next command without any pre-configured scope.",
"type": "string",
- "const": "deny-read-text-file-lines-next"
+ "const": "deny-read-text-file-lines-next",
+ "markdownDescription": "Denies the read_text_file_lines_next command without any pre-configured scope."
},
{
"description": "Enables the remove command without any pre-configured scope.",
"type": "string",
- "const": "allow-remove"
+ "const": "allow-remove",
+ "markdownDescription": "Enables the remove command without any pre-configured scope."
},
{
"description": "Denies the remove command without any pre-configured scope.",
"type": "string",
- "const": "deny-remove"
+ "const": "deny-remove",
+ "markdownDescription": "Denies the remove command without any pre-configured scope."
},
{
"description": "Enables the rename command without any pre-configured scope.",
"type": "string",
- "const": "allow-rename"
+ "const": "allow-rename",
+ "markdownDescription": "Enables the rename command without any pre-configured scope."
},
{
"description": "Denies the rename command without any pre-configured scope.",
"type": "string",
- "const": "deny-rename"
+ "const": "deny-rename",
+ "markdownDescription": "Denies the rename command without any pre-configured scope."
},
{
"description": "Enables the seek command without any pre-configured scope.",
"type": "string",
- "const": "allow-seek"
+ "const": "allow-seek",
+ "markdownDescription": "Enables the seek command without any pre-configured scope."
},
{
"description": "Denies the seek command without any pre-configured scope.",
"type": "string",
- "const": "deny-seek"
+ "const": "deny-seek",
+ "markdownDescription": "Denies the seek command without any pre-configured scope."
},
{
"description": "Enables the size command without any pre-configured scope.",
"type": "string",
- "const": "allow-size"
+ "const": "allow-size",
+ "markdownDescription": "Enables the size command without any pre-configured scope."
},
{
"description": "Denies the size command without any pre-configured scope.",
"type": "string",
- "const": "deny-size"
+ "const": "deny-size",
+ "markdownDescription": "Denies the size command without any pre-configured scope."
},
{
"description": "Enables the stat command without any pre-configured scope.",
"type": "string",
- "const": "allow-stat"
+ "const": "allow-stat",
+ "markdownDescription": "Enables the stat command without any pre-configured scope."
},
{
"description": "Denies the stat command without any pre-configured scope.",
"type": "string",
- "const": "deny-stat"
+ "const": "deny-stat",
+ "markdownDescription": "Denies the stat command without any pre-configured scope."
},
{
"description": "Enables the truncate command without any pre-configured scope.",
"type": "string",
- "const": "allow-truncate"
+ "const": "allow-truncate",
+ "markdownDescription": "Enables the truncate command without any pre-configured scope."
},
{
"description": "Denies the truncate command without any pre-configured scope.",
"type": "string",
- "const": "deny-truncate"
+ "const": "deny-truncate",
+ "markdownDescription": "Denies the truncate command without any pre-configured scope."
},
{
"description": "Enables the unwatch command without any pre-configured scope.",
"type": "string",
- "const": "allow-unwatch"
+ "const": "allow-unwatch",
+ "markdownDescription": "Enables the unwatch command without any pre-configured scope."
},
{
"description": "Denies the unwatch command without any pre-configured scope.",
"type": "string",
- "const": "deny-unwatch"
+ "const": "deny-unwatch",
+ "markdownDescription": "Denies the unwatch command without any pre-configured scope."
},
{
"description": "Enables the watch command without any pre-configured scope.",
"type": "string",
- "const": "allow-watch"
+ "const": "allow-watch",
+ "markdownDescription": "Enables the watch command without any pre-configured scope."
},
{
"description": "Denies the watch command without any pre-configured scope.",
"type": "string",
- "const": "deny-watch"
+ "const": "deny-watch",
+ "markdownDescription": "Denies the watch command without any pre-configured scope."
},
{
"description": "Enables the write command without any pre-configured scope.",
"type": "string",
- "const": "allow-write"
+ "const": "allow-write",
+ "markdownDescription": "Enables the write command without any pre-configured scope."
},
{
"description": "Denies the write command without any pre-configured scope.",
"type": "string",
- "const": "deny-write"
+ "const": "deny-write",
+ "markdownDescription": "Denies the write command without any pre-configured scope."
},
{
"description": "Enables the write_file command without any pre-configured scope.",
"type": "string",
- "const": "allow-write-file"
+ "const": "allow-write-file",
+ "markdownDescription": "Enables the write_file command without any pre-configured scope."
},
{
"description": "Denies the write_file command without any pre-configured scope.",
"type": "string",
- "const": "deny-write-file"
+ "const": "deny-write-file",
+ "markdownDescription": "Denies the write_file command without any pre-configured scope."
},
{
"description": "Enables the write_text_file command without any pre-configured scope.",
"type": "string",
- "const": "allow-write-text-file"
+ "const": "allow-write-text-file",
+ "markdownDescription": "Enables the write_text_file command without any pre-configured scope."
},
{
"description": "Denies the write_text_file command without any pre-configured scope.",
"type": "string",
- "const": "deny-write-text-file"
+ "const": "deny-write-text-file",
+ "markdownDescription": "Denies the write_text_file command without any pre-configured scope."
},
{
"description": "This permissions allows to create the application specific directories.\n",
"type": "string",
- "const": "create-app-specific-dirs"
+ "const": "create-app-specific-dirs",
+ "markdownDescription": "This permissions allows to create the application specific directories.\n"
},
{
- "description": "This set of permissions describes the what kind of\nfile system access the `fs` plugin has enabled or denied by default.\n\n#### Granted Permissions\n\nThis default permission set enables read access to the\napplication specific directories (AppConfig, AppData, AppLocalData, AppCache,\nAppLog) and all files and sub directories created in it.\nThe location of these directories depends on the operating system,\nwhere the application is run.\n\nIn general these directories need to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\nTherefore, it is also allowed to create all of these folders via\nthe `mkdir` command.\n\n#### Denied Permissions\n\nThis default permission set prevents access to critical components\nof the Tauri application by default.\nOn Windows the webview data folder access is denied.\n\n#### Included permissions within this default permission set:\n",
+ "description": "This set of permissions describes the what kind of\nfile system access the `fs` plugin has enabled or denied by default.\n\n#### Granted Permissions\n\nThis default permission set enables read access to the\napplication specific directories (AppConfig, AppData, AppLocalData, AppCache,\nAppLog) and all files and sub directories created in it.\nThe location of these directories depends on the operating system,\nwhere the application is run.\n\nIn general these directories need to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\nTherefore, it is also allowed to create all of these folders via\nthe `mkdir` command.\n\n#### Denied Permissions\n\nThis default permission set prevents access to critical components\nof the Tauri application by default.\nOn Windows the webview data folder access is denied.\n\n#### This default permission set includes:\n\n- `create-app-specific-dirs`\n- `read-app-specific-dirs-recursive`\n- `deny-default`",
"type": "string",
- "const": "default"
+ "const": "default",
+ "markdownDescription": "This set of permissions describes the what kind of\nfile system access the `fs` plugin has enabled or denied by default.\n\n#### Granted Permissions\n\nThis default permission set enables read access to the\napplication specific directories (AppConfig, AppData, AppLocalData, AppCache,\nAppLog) and all files and sub directories created in it.\nThe location of these directories depends on the operating system,\nwhere the application is run.\n\nIn general these directories need to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\nTherefore, it is also allowed to create all of these folders via\nthe `mkdir` command.\n\n#### Denied Permissions\n\nThis default permission set prevents access to critical components\nof the Tauri application by default.\nOn Windows the webview data folder access is denied.\n\n#### This default permission set includes:\n\n- `create-app-specific-dirs`\n- `read-app-specific-dirs-recursive`\n- `deny-default`"
},
{
- "description": "This denies access to dangerous Tauri relevant files and folders by default.",
+ "description": "This denies access to dangerous Tauri relevant files and folders by default.\n#### This permission set includes:\n\n- `deny-webview-data-linux`\n- `deny-webview-data-windows`",
"type": "string",
- "const": "deny-default"
+ "const": "deny-default",
+ "markdownDescription": "This denies access to dangerous Tauri relevant files and folders by default.\n#### This permission set includes:\n\n- `deny-webview-data-linux`\n- `deny-webview-data-windows`"
},
{
"description": "This denies read access to the\n`$APPLOCALDATA` folder on linux as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.",
"type": "string",
- "const": "deny-webview-data-linux"
+ "const": "deny-webview-data-linux",
+ "markdownDescription": "This denies read access to the\n`$APPLOCALDATA` folder on linux as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered."
},
{
"description": "This denies read access to the\n`$APPLOCALDATA/EBWebView` folder on windows as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.",
"type": "string",
- "const": "deny-webview-data-windows"
+ "const": "deny-webview-data-windows",
+ "markdownDescription": "This denies read access to the\n`$APPLOCALDATA/EBWebView` folder on windows as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered."
},
{
"description": "This enables all read related commands without any pre-configured accessible paths.",
"type": "string",
- "const": "read-all"
+ "const": "read-all",
+ "markdownDescription": "This enables all read related commands without any pre-configured accessible paths."
},
{
"description": "This permission allows recursive read functionality on the application\nspecific base directories. \n",
"type": "string",
- "const": "read-app-specific-dirs-recursive"
+ "const": "read-app-specific-dirs-recursive",
+ "markdownDescription": "This permission allows recursive read functionality on the application\nspecific base directories. \n"
},
{
"description": "This enables directory read and file metadata related commands without any pre-configured accessible paths.",
"type": "string",
- "const": "read-dirs"
+ "const": "read-dirs",
+ "markdownDescription": "This enables directory read and file metadata related commands without any pre-configured accessible paths."
},
{
"description": "This enables file read related commands without any pre-configured accessible paths.",
"type": "string",
- "const": "read-files"
+ "const": "read-files",
+ "markdownDescription": "This enables file read related commands without any pre-configured accessible paths."
},
{
"description": "This enables all index or metadata related commands without any pre-configured accessible paths.",
"type": "string",
- "const": "read-meta"
+ "const": "read-meta",
+ "markdownDescription": "This enables all index or metadata related commands without any pre-configured accessible paths."
},
{
"description": "An empty permission you can use to modify the global scope.",
"type": "string",
- "const": "scope"
+ "const": "scope",
+ "markdownDescription": "An empty permission you can use to modify the global scope."
},
{
"description": "This enables all write related commands without any pre-configured accessible paths.",
"type": "string",
- "const": "write-all"
+ "const": "write-all",
+ "markdownDescription": "This enables all write related commands without any pre-configured accessible paths."
},
{
"description": "This enables all file write related commands without any pre-configured accessible paths.",
"type": "string",
- "const": "write-files"
+ "const": "write-files",
+ "markdownDescription": "This enables all file write related commands without any pre-configured accessible paths."
}
]
}
diff --git a/plugins/fs/src/file_path.rs b/plugins/fs/src/file_path.rs
index 735fc105..6316a248 100644
--- a/plugins/fs/src/file_path.rs
+++ b/plugins/fs/src/file_path.rs
@@ -53,10 +53,7 @@ impl FilePath {
#[inline]
pub fn into_path(self) -> Result {
match self {
- Self::Url(url) => url
- .to_file_path()
- .map(PathBuf::from)
- .map_err(|_| Error::InvalidPathUrl),
+ Self::Url(url) => url.to_file_path().map_err(|_| Error::InvalidPathUrl),
Self::Path(p) => Ok(p),
}
}
@@ -91,10 +88,7 @@ impl SafeFilePath {
#[inline]
pub fn into_path(self) -> Result {
match self {
- Self::Url(url) => url
- .to_file_path()
- .map(PathBuf::from)
- .map_err(|_| Error::InvalidPathUrl),
+ Self::Url(url) => url.to_file_path().map_err(|_| Error::InvalidPathUrl),
Self::Path(p) => Ok(p.as_ref().to_owned()),
}
}
diff --git a/plugins/geolocation/CHANGELOG.md b/plugins/geolocation/CHANGELOG.md
index 26bd66b6..dbee2e7d 100644
--- a/plugins/geolocation/CHANGELOG.md
+++ b/plugins/geolocation/CHANGELOG.md
@@ -1,5 +1,9 @@
# Changelog
+## \[2.2.4]
+
+- [`a1b3fa27`](https://github.com/tauri-apps/plugins-workspace/commit/a1b3fa27f11022c9b6622b4fab12d93239eb05de) ([#2515](https://github.com/tauri-apps/plugins-workspace/pull/2515) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) Re-exported the `Geolocation`, `Haptics`, `Notification`, and `Os` structs so that they show up on docs.rs.
+
## \[2.2.3]
- [`406e6f48`](https://github.com/tauri-apps/plugins-workspace/commit/406e6f484cdc13d35c50fb949f7489ca9eeccc44) ([#2323](https://github.com/tauri-apps/plugins-workspace/pull/2323) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) Fixed an issue that caused build failures when the `haptics` or `geolocation` plugin was used without their `specta` feature flag enabled.
diff --git a/plugins/geolocation/Cargo.toml b/plugins/geolocation/Cargo.toml
index 3fc3baaf..7d01b526 100644
--- a/plugins/geolocation/Cargo.toml
+++ b/plugins/geolocation/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "tauri-plugin-geolocation"
description = "Get and track the device's current position"
-version = "2.2.3"
+version = "2.2.4"
edition = { workspace = true }
authors = { workspace = true }
license = { workspace = true }
diff --git a/plugins/geolocation/package.json b/plugins/geolocation/package.json
index c52b7e08..0e3b09cb 100644
--- a/plugins/geolocation/package.json
+++ b/plugins/geolocation/package.json
@@ -1,6 +1,6 @@
{
"name": "@tauri-apps/plugin-geolocation",
- "version": "2.2.3",
+ "version": "2.2.4",
"license": "MIT OR Apache-2.0",
"authors": [
"Tauri Programme within The Commons Conservancy"
diff --git a/plugins/geolocation/permissions/schemas/schema.json b/plugins/geolocation/permissions/schemas/schema.json
index 4474ec6b..237b445d 100644
--- a/plugins/geolocation/permissions/schemas/schema.json
+++ b/plugins/geolocation/permissions/schemas/schema.json
@@ -49,7 +49,7 @@
"minimum": 1.0
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -111,7 +111,7 @@
"type": "string"
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri internal convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri internal convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -297,62 +297,74 @@
{
"description": "Enables the check_permissions command without any pre-configured scope.",
"type": "string",
- "const": "allow-check-permissions"
+ "const": "allow-check-permissions",
+ "markdownDescription": "Enables the check_permissions command without any pre-configured scope."
},
{
"description": "Denies the check_permissions command without any pre-configured scope.",
"type": "string",
- "const": "deny-check-permissions"
+ "const": "deny-check-permissions",
+ "markdownDescription": "Denies the check_permissions command without any pre-configured scope."
},
{
"description": "Enables the clear_permissions command without any pre-configured scope.",
"type": "string",
- "const": "allow-clear-permissions"
+ "const": "allow-clear-permissions",
+ "markdownDescription": "Enables the clear_permissions command without any pre-configured scope."
},
{
"description": "Denies the clear_permissions command without any pre-configured scope.",
"type": "string",
- "const": "deny-clear-permissions"
+ "const": "deny-clear-permissions",
+ "markdownDescription": "Denies the clear_permissions command without any pre-configured scope."
},
{
"description": "Enables the clear_watch command without any pre-configured scope.",
"type": "string",
- "const": "allow-clear-watch"
+ "const": "allow-clear-watch",
+ "markdownDescription": "Enables the clear_watch command without any pre-configured scope."
},
{
"description": "Denies the clear_watch command without any pre-configured scope.",
"type": "string",
- "const": "deny-clear-watch"
+ "const": "deny-clear-watch",
+ "markdownDescription": "Denies the clear_watch command without any pre-configured scope."
},
{
"description": "Enables the get_current_position command without any pre-configured scope.",
"type": "string",
- "const": "allow-get-current-position"
+ "const": "allow-get-current-position",
+ "markdownDescription": "Enables the get_current_position command without any pre-configured scope."
},
{
"description": "Denies the get_current_position command without any pre-configured scope.",
"type": "string",
- "const": "deny-get-current-position"
+ "const": "deny-get-current-position",
+ "markdownDescription": "Denies the get_current_position command without any pre-configured scope."
},
{
"description": "Enables the request_permissions command without any pre-configured scope.",
"type": "string",
- "const": "allow-request-permissions"
+ "const": "allow-request-permissions",
+ "markdownDescription": "Enables the request_permissions command without any pre-configured scope."
},
{
"description": "Denies the request_permissions command without any pre-configured scope.",
"type": "string",
- "const": "deny-request-permissions"
+ "const": "deny-request-permissions",
+ "markdownDescription": "Denies the request_permissions command without any pre-configured scope."
},
{
"description": "Enables the watch_position command without any pre-configured scope.",
"type": "string",
- "const": "allow-watch-position"
+ "const": "allow-watch-position",
+ "markdownDescription": "Enables the watch_position command without any pre-configured scope."
},
{
"description": "Denies the watch_position command without any pre-configured scope.",
"type": "string",
- "const": "deny-watch-position"
+ "const": "deny-watch-position",
+ "markdownDescription": "Denies the watch_position command without any pre-configured scope."
}
]
}
diff --git a/plugins/geolocation/src/lib.rs b/plugins/geolocation/src/lib.rs
index 55f50aa0..588f96e3 100644
--- a/plugins/geolocation/src/lib.rs
+++ b/plugins/geolocation/src/lib.rs
@@ -21,9 +21,9 @@ mod models;
pub use error::{Error, Result};
#[cfg(desktop)]
-use desktop::Geolocation;
+pub use desktop::Geolocation;
#[cfg(mobile)]
-use mobile::Geolocation;
+pub use mobile::Geolocation;
/// Extensions to [`tauri::App`], [`tauri::AppHandle`], [`tauri::WebviewWindow`], [`tauri::Webview`] and [`tauri::Window`] to access the geolocation APIs.
pub trait GeolocationExt {
diff --git a/plugins/global-shortcut/permissions/autogenerated/reference.md b/plugins/global-shortcut/permissions/autogenerated/reference.md
index f8571c04..dedb1aef 100644
--- a/plugins/global-shortcut/permissions/autogenerated/reference.md
+++ b/plugins/global-shortcut/permissions/autogenerated/reference.md
@@ -6,6 +6,8 @@ application specific if specific shortcuts should be
registered or unregistered.
+#### This default permission set includes the following:
+
## Permission Table
diff --git a/plugins/global-shortcut/permissions/schemas/schema.json b/plugins/global-shortcut/permissions/schemas/schema.json
index 66b92b07..1224869c 100644
--- a/plugins/global-shortcut/permissions/schemas/schema.json
+++ b/plugins/global-shortcut/permissions/schemas/schema.json
@@ -49,7 +49,7 @@
"minimum": 1.0
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -111,7 +111,7 @@
"type": "string"
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri internal convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri internal convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -297,57 +297,68 @@
{
"description": "Enables the is_registered command without any pre-configured scope.",
"type": "string",
- "const": "allow-is-registered"
+ "const": "allow-is-registered",
+ "markdownDescription": "Enables the is_registered command without any pre-configured scope."
},
{
"description": "Denies the is_registered command without any pre-configured scope.",
"type": "string",
- "const": "deny-is-registered"
+ "const": "deny-is-registered",
+ "markdownDescription": "Denies the is_registered command without any pre-configured scope."
},
{
"description": "Enables the register command without any pre-configured scope.",
"type": "string",
- "const": "allow-register"
+ "const": "allow-register",
+ "markdownDescription": "Enables the register command without any pre-configured scope."
},
{
"description": "Denies the register command without any pre-configured scope.",
"type": "string",
- "const": "deny-register"
+ "const": "deny-register",
+ "markdownDescription": "Denies the register command without any pre-configured scope."
},
{
"description": "Enables the register_all command without any pre-configured scope.",
"type": "string",
- "const": "allow-register-all"
+ "const": "allow-register-all",
+ "markdownDescription": "Enables the register_all command without any pre-configured scope."
},
{
"description": "Denies the register_all command without any pre-configured scope.",
"type": "string",
- "const": "deny-register-all"
+ "const": "deny-register-all",
+ "markdownDescription": "Denies the register_all command without any pre-configured scope."
},
{
"description": "Enables the unregister command without any pre-configured scope.",
"type": "string",
- "const": "allow-unregister"
+ "const": "allow-unregister",
+ "markdownDescription": "Enables the unregister command without any pre-configured scope."
},
{
"description": "Denies the unregister command without any pre-configured scope.",
"type": "string",
- "const": "deny-unregister"
+ "const": "deny-unregister",
+ "markdownDescription": "Denies the unregister command without any pre-configured scope."
},
{
"description": "Enables the unregister_all command without any pre-configured scope.",
"type": "string",
- "const": "allow-unregister-all"
+ "const": "allow-unregister-all",
+ "markdownDescription": "Enables the unregister_all command without any pre-configured scope."
},
{
"description": "Denies the unregister_all command without any pre-configured scope.",
"type": "string",
- "const": "deny-unregister-all"
+ "const": "deny-unregister-all",
+ "markdownDescription": "Denies the unregister_all command without any pre-configured scope."
},
{
"description": "No features are enabled by default, as we believe\nthe shortcuts can be inherently dangerous and it is\napplication specific if specific shortcuts should be\nregistered or unregistered.\n",
"type": "string",
- "const": "default"
+ "const": "default",
+ "markdownDescription": "No features are enabled by default, as we believe\nthe shortcuts can be inherently dangerous and it is\napplication specific if specific shortcuts should be\nregistered or unregistered.\n"
}
]
}
diff --git a/plugins/haptics/CHANGELOG.md b/plugins/haptics/CHANGELOG.md
index 246fb18e..aa3fbbd8 100644
--- a/plugins/haptics/CHANGELOG.md
+++ b/plugins/haptics/CHANGELOG.md
@@ -1,5 +1,9 @@
# Changelog
+## \[2.2.4]
+
+- [`a1b3fa27`](https://github.com/tauri-apps/plugins-workspace/commit/a1b3fa27f11022c9b6622b4fab12d93239eb05de) ([#2515](https://github.com/tauri-apps/plugins-workspace/pull/2515) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) Re-exported the `Geolocation`, `Haptics`, `Notification`, and `Os` structs so that they show up on docs.rs.
+
## \[2.2.3]
- [`406e6f48`](https://github.com/tauri-apps/plugins-workspace/commit/406e6f484cdc13d35c50fb949f7489ca9eeccc44) ([#2323](https://github.com/tauri-apps/plugins-workspace/pull/2323) by [@FabianLars](https://github.com/tauri-apps/plugins-workspace/../../FabianLars)) Fixed an issue that caused build failures when the `haptics` or `geolocation` plugin was used without their `specta` feature flag enabled.
diff --git a/plugins/haptics/Cargo.toml b/plugins/haptics/Cargo.toml
index 4215130e..34c80bab 100644
--- a/plugins/haptics/Cargo.toml
+++ b/plugins/haptics/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "tauri-plugin-haptics"
description = "Haptic feedback and vibrations on Android and iOS"
-version = "2.2.3"
+version = "2.2.4"
edition = { workspace = true }
authors = { workspace = true }
license = { workspace = true }
diff --git a/plugins/haptics/package.json b/plugins/haptics/package.json
index 1c70aae1..12c5b74b 100644
--- a/plugins/haptics/package.json
+++ b/plugins/haptics/package.json
@@ -1,6 +1,6 @@
{
"name": "@tauri-apps/plugin-haptics",
- "version": "2.2.3",
+ "version": "2.2.4",
"license": "MIT OR Apache-2.0",
"authors": [
"Tauri Programme within The Commons Conservancy"
diff --git a/plugins/haptics/permissions/schemas/schema.json b/plugins/haptics/permissions/schemas/schema.json
index 763e0a72..ed217dc4 100644
--- a/plugins/haptics/permissions/schemas/schema.json
+++ b/plugins/haptics/permissions/schemas/schema.json
@@ -49,7 +49,7 @@
"minimum": 1.0
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -111,7 +111,7 @@
"type": "string"
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri internal convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri internal convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -297,42 +297,50 @@
{
"description": "Enables the impact_feedback command without any pre-configured scope.",
"type": "string",
- "const": "allow-impact-feedback"
+ "const": "allow-impact-feedback",
+ "markdownDescription": "Enables the impact_feedback command without any pre-configured scope."
},
{
"description": "Denies the impact_feedback command without any pre-configured scope.",
"type": "string",
- "const": "deny-impact-feedback"
+ "const": "deny-impact-feedback",
+ "markdownDescription": "Denies the impact_feedback command without any pre-configured scope."
},
{
"description": "Enables the notification_feedback command without any pre-configured scope.",
"type": "string",
- "const": "allow-notification-feedback"
+ "const": "allow-notification-feedback",
+ "markdownDescription": "Enables the notification_feedback command without any pre-configured scope."
},
{
"description": "Denies the notification_feedback command without any pre-configured scope.",
"type": "string",
- "const": "deny-notification-feedback"
+ "const": "deny-notification-feedback",
+ "markdownDescription": "Denies the notification_feedback command without any pre-configured scope."
},
{
"description": "Enables the selection_feedback command without any pre-configured scope.",
"type": "string",
- "const": "allow-selection-feedback"
+ "const": "allow-selection-feedback",
+ "markdownDescription": "Enables the selection_feedback command without any pre-configured scope."
},
{
"description": "Denies the selection_feedback command without any pre-configured scope.",
"type": "string",
- "const": "deny-selection-feedback"
+ "const": "deny-selection-feedback",
+ "markdownDescription": "Denies the selection_feedback command without any pre-configured scope."
},
{
"description": "Enables the vibrate command without any pre-configured scope.",
"type": "string",
- "const": "allow-vibrate"
+ "const": "allow-vibrate",
+ "markdownDescription": "Enables the vibrate command without any pre-configured scope."
},
{
"description": "Denies the vibrate command without any pre-configured scope.",
"type": "string",
- "const": "deny-vibrate"
+ "const": "deny-vibrate",
+ "markdownDescription": "Denies the vibrate command without any pre-configured scope."
}
]
}
diff --git a/plugins/haptics/src/lib.rs b/plugins/haptics/src/lib.rs
index f56e5212..31798743 100644
--- a/plugins/haptics/src/lib.rs
+++ b/plugins/haptics/src/lib.rs
@@ -21,9 +21,9 @@ mod models;
pub use error::{Error, Result};
#[cfg(desktop)]
-use desktop::Haptics;
+pub use desktop::Haptics;
#[cfg(mobile)]
-use mobile::Haptics;
+pub use mobile::Haptics;
/// Extensions to [`tauri::App`], [`tauri::AppHandle`], [`tauri::WebviewWindow`], [`tauri::Webview`] and [`tauri::Window`] to access the haptics APIs.
pub trait HapticsExt {
diff --git a/plugins/http/CHANGELOG.md b/plugins/http/CHANGELOG.md
index e9611f4e..4e1fb76b 100644
--- a/plugins/http/CHANGELOG.md
+++ b/plugins/http/CHANGELOG.md
@@ -1,5 +1,26 @@
# Changelog
+## \[2.4.3]
+
+- [`37c0477a`](https://github.com/tauri-apps/plugins-workspace/commit/37c0477afe926d326573f1827045875ce8bf8187) ([#2561](https://github.com/tauri-apps/plugins-workspace/pull/2561)) Add `zstd` cargo feature flag to enable `reqwest/zstd` flag.
+- [`9ebbfb2e`](https://github.com/tauri-apps/plugins-workspace/commit/9ebbfb2e3ccef8e0f277a0c02fe6b399b41feeb6) ([#1978](https://github.com/tauri-apps/plugins-workspace/pull/1978)) Persist cookies to disk and load it on next app start.
+
+### Dependencies
+
+- Upgraded to `fs-js@2.2.1`
+
+## \[2.4.2]
+
+- [`a15eedf3`](https://github.com/tauri-apps/plugins-workspace/commit/a15eedf37854344f7ffbcb0d373d848563817011) ([#2535](https://github.com/tauri-apps/plugins-workspace/pull/2535) by [@amrbashir](https://github.com/tauri-apps/plugins-workspace/../../amrbashir)) Fix `fetch` occasionally throwing an error due to trying to close the underline stream twice.
+
+## \[2.4.1]
+
+- [`d3183aa9`](https://github.com/tauri-apps/plugins-workspace/commit/d3183aa99da7ca67e627394132ddeb3b85ccef06) ([#2522](https://github.com/tauri-apps/plugins-workspace/pull/2522) by [@adrieljss](https://github.com/tauri-apps/plugins-workspace/../../adrieljss)) Fix `fetch` blocking until the whole response is read even if it was a streaming response.
+
+## \[2.4.0]
+
+- [`cb38f54f`](https://github.com/tauri-apps/plugins-workspace/commit/cb38f54f4a4ef30995283cd82166c62da17bac44) ([#2479](https://github.com/tauri-apps/plugins-workspace/pull/2479) by [@adrieljss](https://github.com/tauri-apps/plugins-workspace/../../adrieljss)) Add stream support for HTTP stream responses.
+
## \[2.3.0]
- [`10513649`](https://github.com/tauri-apps/plugins-workspace/commit/105136494c5a5bf4b1f1cc06cc71815412d17ec8) ([#2204](https://github.com/tauri-apps/plugins-workspace/pull/2204) by [@RickeyWard](https://github.com/tauri-apps/plugins-workspace/../../RickeyWard)) Add `dangerous-settings` feature flag and new JS `danger` option to disable tls hostname/certificate validation.
diff --git a/plugins/http/Cargo.toml b/plugins/http/Cargo.toml
index 9aa49e0e..353f72a3 100644
--- a/plugins/http/Cargo.toml
+++ b/plugins/http/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-http"
-version = "2.3.0"
+version = "2.4.3"
description = "Access an HTTP client written in Rust."
edition = { workspace = true }
authors = { workspace = true }
@@ -34,13 +34,15 @@ serde_json = { workspace = true }
tauri = { workspace = true }
thiserror = { workspace = true }
tokio = { version = "1", features = ["sync", "macros"] }
-tauri-plugin-fs = { path = "../fs", version = "2.2.0" }
+tauri-plugin-fs = { path = "../fs", version = "2.2.1" }
urlpattern = "0.3"
regex = "1"
http = "1"
reqwest = { version = "0.12", default-features = false }
url = { workspace = true }
data-url = "0.3"
+cookie_store = { version = "0.21.1", optional = true, features = ["serde"] }
+bytes = { version = "1.9", optional = true }
tracing = { workspace = true, optional = true }
[features]
@@ -62,10 +64,11 @@ rustls-tls-manual-roots = ["reqwest/rustls-tls-manual-roots"]
rustls-tls-webpki-roots = ["reqwest/rustls-tls-webpki-roots"]
rustls-tls-native-roots = ["reqwest/rustls-tls-native-roots"]
blocking = ["reqwest/blocking"]
-cookies = ["reqwest/cookies"]
+cookies = ["reqwest/cookies", "dep:cookie_store", "dep:bytes"]
gzip = ["reqwest/gzip"]
brotli = ["reqwest/brotli"]
deflate = ["reqwest/deflate"]
+zstd = ["reqwest/zstd"]
trust-dns = ["reqwest/trust-dns"]
socks = ["reqwest/socks"]
http2 = ["reqwest/http2"]
diff --git a/plugins/http/api-iife.js b/plugins/http/api-iife.js
index 76b498ad..ec016360 100644
--- a/plugins/http/api-iife.js
+++ b/plugins/http/api-iife.js
@@ -1 +1 @@
-if("__TAURI__"in window){var __TAURI_PLUGIN_HTTP__=function(e){"use strict";async function t(e,t={},r){return window.__TAURI_INTERNALS__.invoke(e,t,r)}"function"==typeof SuppressedError&&SuppressedError;const r="Request canceled";return e.fetch=async function(e,n){const a=n?.signal;if(a?.aborted)throw new Error(r);const o=n?.maxRedirections,s=n?.connectTimeout,i=n?.proxy,d=n?.danger;n&&(delete n.maxRedirections,delete n.connectTimeout,delete n.proxy,delete n.danger);const c=n?.headers?n.headers instanceof Headers?n.headers:new Headers(n.headers):new Headers,u=new Request(e,n),f=await u.arrayBuffer(),_=0!==f.byteLength?Array.from(new Uint8Array(f)):null;for(const[e,t]of u.headers)c.get(e)||c.set(e,t);const h=(c instanceof Headers?Array.from(c.entries()):Array.isArray(c)?c:Object.entries(c)).map((([e,t])=>[e,"string"==typeof t?t:t.toString()]));if(a?.aborted)throw new Error(r);const l=await t("plugin:http|fetch",{clientConfig:{method:u.method,url:u.url,headers:h,data:_,maxRedirections:o,connectTimeout:s,proxy:i,danger:d}}),p=()=>t("plugin:http|fetch_cancel",{rid:l});if(a?.aborted)throw p(),new Error(r);a?.addEventListener("abort",(()=>{p()}));const{status:w,statusText:y,url:g,headers:T,rid:A}=await t("plugin:http|fetch_send",{rid:l}),R=await t("plugin:http|fetch_read_body",{rid:A}),b=new Response(R instanceof ArrayBuffer&&0!==R.byteLength?R:R instanceof Array&&R.length>0?new Uint8Array(R):null,{status:w,statusText:y});return Object.defineProperty(b,"url",{value:g}),Object.defineProperty(b,"headers",{value:new Headers(T)}),b},e}({});Object.defineProperty(window.__TAURI__,"http",{value:__TAURI_PLUGIN_HTTP__})}
+if("__TAURI__"in window){var __TAURI_PLUGIN_HTTP__=function(e){"use strict";function t(e,t,r,n){if("function"==typeof t||!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)}function r(e,t,r,n,s){if("function"==typeof t||!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t.set(e,r),r}var n,s,a;"function"==typeof SuppressedError&&SuppressedError;const i="__TAURI_TO_IPC_KEY__";class o{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,n.set(this,(()=>{})),s.set(this,0),a.set(this,[]),this.id=function(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}((({message:e,id:i})=>{if(i==t(this,s,"f"))for(t(this,n,"f").call(this,e),r(this,s,t(this,s,"f")+1);t(this,s,"f")in t(this,a,"f");){const e=t(this,a,"f")[t(this,s,"f")];t(this,n,"f").call(this,e),delete t(this,a,"f")[t(this,s,"f")],r(this,s,t(this,s,"f")+1)}else t(this,a,"f")[i]=e}))}set onmessage(e){r(this,n,e)}get onmessage(){return t(this,n,"f")}[(n=new WeakMap,s=new WeakMap,a=new WeakMap,i)](){return`__CHANNEL__:${this.id}`}toJSON(){return this[i]()}}async function c(e,t={},r){return window.__TAURI_INTERNALS__.invoke(e,t,r)}const d="Request cancelled";return e.fetch=async function(e,t){const r=t?.signal;if(r?.aborted)throw new Error(d);const n=t?.maxRedirections,s=t?.connectTimeout,a=t?.proxy,i=t?.danger;t&&(delete t.maxRedirections,delete t.connectTimeout,delete t.proxy,delete t.danger);const h=t?.headers?t.headers instanceof Headers?t.headers:new Headers(t.headers):new Headers,f=new Request(e,t),_=await f.arrayBuffer(),u=0!==_.byteLength?Array.from(new Uint8Array(_)):null;for(const[e,t]of f.headers)h.get(e)||h.set(e,t);const l=(h instanceof Headers?Array.from(h.entries()):Array.isArray(h)?h:Object.entries(h)).map((([e,t])=>[e,"string"==typeof t?t:t.toString()]));if(r?.aborted)throw new Error(d);const w=await c("plugin:http|fetch",{clientConfig:{method:f.method,url:f.url,headers:l,data:u,maxRedirections:n,connectTimeout:s,proxy:a,danger:i}}),p=()=>c("plugin:http|fetch_cancel",{rid:w});if(r?.aborted)throw p(),new Error(d);r?.addEventListener("abort",(()=>{p()}));const{status:y,statusText:m,url:T,headers:g,rid:b}=await c("plugin:http|fetch_send",{rid:w}),A=new ReadableStream({start:e=>{const t=new o;t.onmessage=t=>{if(r?.aborted)return void e.error(d);const n=new Uint8Array(t),s=n[n.byteLength-1],a=n.slice(0,n.byteLength-1);1!=s?e.enqueue(a):e.close()},c("plugin:http|fetch_read_body",{rid:b,streamChannel:t}).catch((t=>{e.error(t)}))}}),R=new Response(A,{status:y,statusText:m});return Object.defineProperty(R,"url",{value:T}),Object.defineProperty(R,"headers",{value:new Headers(g)}),R},e}({});Object.defineProperty(window.__TAURI__,"http",{value:__TAURI_PLUGIN_HTTP__})}
diff --git a/plugins/http/guest-js/index.ts b/plugins/http/guest-js/index.ts
index bea18e44..62f4916c 100644
--- a/plugins/http/guest-js/index.ts
+++ b/plugins/http/guest-js/index.ts
@@ -26,7 +26,7 @@
* @module
*/
-import { invoke } from '@tauri-apps/api/core'
+import { Channel, invoke } from '@tauri-apps/api/core'
/**
* Configuration of a proxy that a Client should pass requests to.
@@ -106,7 +106,7 @@ export interface DangerousSettings {
acceptInvalidHostnames?: boolean
}
-const ERROR_REQUEST_CANCELLED = 'Request canceled'
+const ERROR_REQUEST_CANCELLED = 'Request cancelled'
/**
* Fetch a resource from the network. It returns a `Promise` that resolves to the
@@ -229,31 +229,49 @@ export async function fetch(
rid
})
- const body = await invoke(
- 'plugin:http|fetch_read_body',
- {
- rid: responseRid
- }
- )
+ const readableStreamBody = new ReadableStream({
+ start: (controller) => {
+ const streamChannel = new Channel()
+ streamChannel.onmessage = (res: ArrayBuffer | number[]) => {
+ // close early if aborted
+ if (signal?.aborted) {
+ controller.error(ERROR_REQUEST_CANCELLED)
+ return
+ }
+
+ const resUint8 = new Uint8Array(res)
+ const lastByte = resUint8[resUint8.byteLength - 1]
+ const actualRes = resUint8.slice(0, resUint8.byteLength - 1)
+
+ // close when the signal to close (last byte is 1) is sent from the IPC.
+ if (lastByte == 1) {
+ controller.close()
+ return
+ }
+
+ controller.enqueue(actualRes)
+ }
- const res = new Response(
- body instanceof ArrayBuffer && body.byteLength !== 0
- ? body
- : body instanceof Array && body.length > 0
- ? new Uint8Array(body)
- : null,
- {
- status,
- statusText
+ // run a non-blocking body stream fetch
+ invoke('plugin:http|fetch_read_body', {
+ rid: responseRid,
+ streamChannel
+ }).catch((e) => {
+ controller.error(e)
+ })
}
- )
+ })
+
+ const res = new Response(readableStreamBody, {
+ status,
+ statusText
+ })
- // url and headers are read only properties
- // but seems like we can set them like this
+ // Set `Response` properties that are ignored by the
+ // constructor, like url and some headers
//
- // we define theme like this, because using `Response`
- // constructor, it removes url and some headers
- // like `set-cookie` headers
+ // Since url and headers are read only properties
+ // this is the only way to set them.
Object.defineProperty(res, 'url', { value: url })
Object.defineProperty(res, 'headers', {
value: new Headers(responseHeaders)
diff --git a/plugins/http/package.json b/plugins/http/package.json
index 02ea80bf..7439c461 100644
--- a/plugins/http/package.json
+++ b/plugins/http/package.json
@@ -1,6 +1,6 @@
{
"name": "@tauri-apps/plugin-http",
- "version": "2.3.0",
+ "version": "2.4.3",
"license": "MIT OR Apache-2.0",
"authors": [
"Tauri Programme within The Commons Conservancy"
diff --git a/plugins/http/permissions/autogenerated/reference.md b/plugins/http/permissions/autogenerated/reference.md
index 4126f0b9..a155fd62 100644
--- a/plugins/http/permissions/autogenerated/reference.md
+++ b/plugins/http/permissions/autogenerated/reference.md
@@ -13,6 +13,8 @@ All fetch operations are enabled.
+#### This default permission set includes the following:
+
- `allow-fetch`
- `allow-fetch-cancel`
- `allow-fetch-read-body`
diff --git a/plugins/http/permissions/schemas/schema.json b/plugins/http/permissions/schemas/schema.json
index 794ee204..ea774399 100644
--- a/plugins/http/permissions/schemas/schema.json
+++ b/plugins/http/permissions/schemas/schema.json
@@ -49,7 +49,7 @@
"minimum": 1.0
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -111,7 +111,7 @@
"type": "string"
},
"description": {
- "description": "Human-readable description of what the permission does. Tauri internal convention is to use
headings in markdown content for Tauri documentation generation purposes.",
+ "description": "Human-readable description of what the permission does. Tauri internal convention is to use `
` headings in markdown content for Tauri documentation generation purposes.",
"type": [
"string",
"null"
@@ -297,47 +297,56 @@
{
"description": "Enables the fetch command without any pre-configured scope.",
"type": "string",
- "const": "allow-fetch"
+ "const": "allow-fetch",
+ "markdownDescription": "Enables the fetch command without any pre-configured scope."
},
{
"description": "Denies the fetch command without any pre-configured scope.",
"type": "string",
- "const": "deny-fetch"
+ "const": "deny-fetch",
+ "markdownDescription": "Denies the fetch command without any pre-configured scope."
},
{
"description": "Enables the fetch_cancel command without any pre-configured scope.",
"type": "string",
- "const": "allow-fetch-cancel"
+ "const": "allow-fetch-cancel",
+ "markdownDescription": "Enables the fetch_cancel command without any pre-configured scope."
},
{
"description": "Denies the fetch_cancel command without any pre-configured scope.",
"type": "string",
- "const": "deny-fetch-cancel"
+ "const": "deny-fetch-cancel",
+ "markdownDescription": "Denies the fetch_cancel command without any pre-configured scope."
},
{
"description": "Enables the fetch_read_body command without any pre-configured scope.",
"type": "string",
- "const": "allow-fetch-read-body"
+ "const": "allow-fetch-read-body",
+ "markdownDescription": "Enables the fetch_read_body command without any pre-configured scope."
},
{
"description": "Denies the fetch_read_body command without any pre-configured scope.",
"type": "string",
- "const": "deny-fetch-read-body"
+ "const": "deny-fetch-read-body",
+ "markdownDescription": "Denies the fetch_read_body command without any pre-configured scope."
},
{
"description": "Enables the fetch_send command without any pre-configured scope.",
"type": "string",
- "const": "allow-fetch-send"
+ "const": "allow-fetch-send",
+ "markdownDescription": "Enables the fetch_send command without any pre-configured scope."
},
{
"description": "Denies the fetch_send command without any pre-configured scope.",
"type": "string",
- "const": "deny-fetch-send"
+ "const": "deny-fetch-send",
+ "markdownDescription": "Denies the fetch_send command without any pre-configured scope."
},
{
- "description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n",
+ "description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`",
"type": "string",
- "const": "default"
+ "const": "default",
+ "markdownDescription": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`"
}
]
}
diff --git a/plugins/http/src/commands.rs b/plugins/http/src/commands.rs
index 3dc0297e..bb47444e 100644
--- a/plugins/http/src/commands.rs
+++ b/plugins/http/src/commands.rs
@@ -10,7 +10,7 @@ use serde::{Deserialize, Serialize};
use tauri::{
async_runtime::Mutex,
command,
- ipc::{CommandScope, GlobalScope},
+ ipc::{Channel, CommandScope, GlobalScope},
Manager, ResourceId, ResourceTable, Runtime, State, Webview,
};
use tokio::sync::oneshot::{channel, Receiver, Sender};
@@ -315,6 +315,7 @@ pub async fn fetch(
tracing::trace!("{:?}", request);
let fut = async move { request.send().await.map_err(Into::into) };
+
let mut resources_table = webview.resources_table();
let rid = resources_table.add_request(Box::pin(fut));
@@ -358,7 +359,7 @@ pub fn fetch_cancel(webview: Webview, rid: ResourceId) -> crate::
Ok(())
}
-#[tauri::command]
+#[command]
pub async fn fetch_send(
webview: Webview,
rid: ResourceId,
@@ -410,17 +411,31 @@ pub async fn fetch_send(
})
}
-#[tauri::command]
-pub(crate) async fn fetch_read_body(
+#[command]
+pub async fn fetch_read_body(
webview: Webview,
rid: ResourceId,
-) -> crate::Result {
+ stream_channel: Channel,
+) -> crate::Result<()> {
let res = {
let mut resources_table = webview.resources_table();
resources_table.take::(rid)?
};
- let res = Arc::into_inner(res).unwrap().0;
- Ok(tauri::ipc::Response::new(res.bytes().await?.to_vec()))
+
+ let mut res = Arc::into_inner(res).unwrap().0;
+
+ // send response through IPC channel
+ while let Some(chunk) = res.chunk().await? {
+ let mut chunk = chunk.to_vec();
+ // append 0 to indicate we are not done yet
+ chunk.push(0);
+ stream_channel.send(tauri::ipc::InvokeResponseBody::Raw(chunk))?;
+ }
+
+ // send 1 to indicate we are done
+ stream_channel.send(tauri::ipc::InvokeResponseBody::Raw(vec![1]))?;
+
+ Ok(())
}
// forbidden headers per fetch spec https://fetch.spec.whatwg.org/#terminology-headers
diff --git a/plugins/http/src/lib.rs b/plugins/http/src/lib.rs
index d775760c..5acc2b47 100644
--- a/plugins/http/src/lib.rs
+++ b/plugins/http/src/lib.rs
@@ -14,30 +14,77 @@ pub use error::{Error, Result};
mod commands;
mod error;
+#[cfg(feature = "cookies")]
+mod reqwest_cookie_store;
mod scope;
+#[cfg(feature = "cookies")]
+const COOKIES_FILENAME: &str = ".cookies";
+
pub(crate) struct Http {
#[cfg(feature = "cookies")]
- cookies_jar: std::sync::Arc,
+ cookies_jar: std::sync::Arc,
}
pub fn init() -> TauriPlugin {
Builder::::new("http")
.setup(|app, _| {
+ #[cfg(feature = "cookies")]
+ let cookies_jar = {
+ use crate::reqwest_cookie_store::*;
+ use std::fs::File;
+ use std::io::BufReader;
+
+ let cache_dir = app.path().app_cache_dir()?;
+ std::fs::create_dir_all(&cache_dir)?;
+
+ let path = cache_dir.join(COOKIES_FILENAME);
+ let file = File::options()
+ .create(true)
+ .append(true)
+ .read(true)
+ .open(&path)?;
+
+ let reader = BufReader::new(file);
+ CookieStoreMutex::load(path.clone(), reader).unwrap_or_else(|_e| {
+ #[cfg(feature = "tracing")]
+ tracing::warn!(
+ "failed to load cookie store: {_e}, falling back to empty store"
+ );
+ CookieStoreMutex::new(path, Default::default())
+ })
+ };
+
let state = Http {
#[cfg(feature = "cookies")]
- cookies_jar: std::sync::Arc::new(reqwest::cookie::Jar::default()),
+ cookies_jar: std::sync::Arc::new(cookies_jar),
};
app.manage(state);
Ok(())
})
+ .on_event(|app, event| {
+ #[cfg(feature = "cookies")]
+ if let tauri::RunEvent::Exit = event {
+ let state = app.state::();
+
+ match state.cookies_jar.request_save() {
+ Ok(rx) => {
+ let _ = rx.recv();
+ }
+ Err(_e) => {
+ #[cfg(feature = "tracing")]
+ tracing::error!("failed to save cookie jar: {_e}");
+ }
+ }
+ }
+ })
.invoke_handler(tauri::generate_handler![
commands::fetch,
commands::fetch_cancel,
commands::fetch_send,
- commands::fetch_read_body,
+ commands::fetch_read_body
])
.build()
}
diff --git a/plugins/http/src/reqwest_cookie_store.rs b/plugins/http/src/reqwest_cookie_store.rs
new file mode 100644
index 00000000..6a7c0186
--- /dev/null
+++ b/plugins/http/src/reqwest_cookie_store.rs
@@ -0,0 +1,133 @@
+// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
+// SPDX-License-Identifier: Apache-2.0
+// SPDX-License-Identifier: MIT
+
+// taken from https://github.com/pfernie/reqwest_cookie_store/blob/2ec4afabcd55e24d3afe3f0626ee6dc97bed938d/src/lib.rs
+
+use std::{
+ path::PathBuf,
+ sync::{mpsc::Receiver, Mutex},
+};
+
+use cookie_store::{CookieStore, RawCookie, RawCookieParseError};
+use reqwest::header::HeaderValue;
+
+fn set_cookies(
+ cookie_store: &mut CookieStore,
+ cookie_headers: &mut dyn Iterator,
+ url: &url::Url,
+) {
+ let cookies = cookie_headers.filter_map(|val| {
+ std::str::from_utf8(val.as_bytes())
+ .map_err(RawCookieParseError::from)
+ .and_then(RawCookie::parse)
+ .map(|c| c.into_owned())
+ .ok()
+ });
+ cookie_store.store_response_cookies(cookies, url);
+}
+
+fn cookies(cookie_store: &CookieStore, url: &url::Url) -> Option {
+ let s = cookie_store
+ .get_request_values(url)
+ .map(|(name, value)| format!("{}={}", name, value))
+ .collect::>()
+ .join("; ");
+
+ if s.is_empty() {
+ return None;
+ }
+
+ HeaderValue::from_maybe_shared(bytes::Bytes::from(s)).ok()
+}
+
+/// A [`cookie_store::CookieStore`] wrapped internally by a [`std::sync::Mutex`], suitable for use in
+/// async/concurrent contexts.
+#[derive(Debug)]
+pub struct CookieStoreMutex {
+ pub path: PathBuf,
+ store: Mutex,
+ save_task: Mutex