From ab289c9c2e38e43c8f5f4d3aefb8827abb29d2b3 Mon Sep 17 00:00:00 2001 From: Quanyi Ma Date: Tue, 31 Dec 2024 21:20:55 +0800 Subject: [PATCH 1/5] Update introduction doc Signed-off-by: Quanyi Ma --- .../getting-started/introduction/index.mdx | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/aria/contents/docs/getting-started/introduction/index.mdx b/aria/contents/docs/getting-started/introduction/index.mdx index 198ac843..8510b4bf 100644 --- a/aria/contents/docs/getting-started/introduction/index.mdx +++ b/aria/contents/docs/getting-started/introduction/index.mdx @@ -3,14 +3,30 @@ title: Introduction description: Mega is an unofficial open source implementation of Google Piper. It is a monorepo & monolithic codebase management system that supports Git. Mega is designed to manage large-scale codebases, streamline development, and foster collaboration. --- -Welcome to **Mega**! Mega is an unofficial open source implementation of Google Piper. It is a monorepo & monolithic codebase management system that supports Git. Mega is designed to manage large-scale codebases, streamline development, and foster collaboration. +Whether you're dealing with large repository size affecting usability, performance, and management, or complex dependency relationships, multiple teams collaborating in the same repository, or optimizing build and CI/CD processes, Mega offers tools and workflows tailored to streamline your development experience. With Mega, managing monorepo & monolithic repositority becomes more efficient and less time-consuming, enabling you to focus on building great software. + +## Monorepo VS Monolithic + +A Monolithic repository (often abbreviated as Monolithic) refers to the practice of storing all code in a single repository. This could mean the entire codebase for a monolithic application, or even the complete codebase for all projects within a company, including applications, libraries, and tools. The goal of Monolithic repositories is to centralize code management, simplify dependency sharing, and promote consistent practices across projects. + +In contrast, a Monorepo is a structured approach to managing a Monolithic repository. While Monolithic describes the idea of storing all code together, Monorepo emphasizes specific tools, workflows, and best practices for maintaining such repositories. Monorepos often include features like dependency isolation, incremental builds, and advanced versioning systems to address the challenges of scale and complexity in a large Monolithic repository. + +Monorepo and Monolithic both involve managing large codebases and share some common challenges, but they differ in their purpose, scope, and approach. + +| **Aspect** | **Monorepo** | **Monolithic** | +|---------------------|---------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------| +| Definition | A version control strategy where all code for multiple projects, libraries, or services is stored in a single repository. | A codebase structure where all components of an application or a company’s projects are stored together in one repository. | +| Purpose | Optimized for managing diverse projects with shared dependencies and workflows. | Focuses on centralizing the code for a single application or an organization in one repository. | +| Scope | Can include multiple applications, libraries, and tools, with modular or microservice architectures. | Typically refers to a single application or a company’s codebase, which might not follow modular design principles. | +| Tools and Workflows | Relies heavily on tools like Bazel, Nx, or Lerna to manage dependencies, builds, and scalability. | May or may not use advanced tools, as the emphasis is on central storage rather than optimized management. | +| Modularity | Encourages modularity, even within a single repository, to facilitate isolated builds and testing. | Often lacks modularity if applied to a monolithic application; everything is tightly coupled. | ## Open Source Philosophy Mega is proudly **Open Source**! 🎉 We believe in creating an accessible, collaborative platform that thrives on community contributions. - Interested in helping us improve? Check out our [Mega](https://github.com/web3infra-foundation/mega) to get started! From feature suggestions to bug fixes, all contributions are welcome. + Interested in helping us improve? Check out our [repository](https://github.com/web3infra-foundation/mega) to get started! From feature suggestions to bug fixes, all contributions are welcome. ## Project Overview From f73cb7b923f6d1dff6e965559c1bf9e53f513b9a Mon Sep 17 00:00:00 2001 From: Quanyi Ma Date: Tue, 31 Dec 2024 21:23:32 +0800 Subject: [PATCH 2/5] Update lunar gen schemas Signed-off-by: Quanyi Ma --- .../src-tauri/gen/schemas/desktop-schema.json | 4 +- lunar/src-tauri/gen/schemas/macOS-schema.json | 92 +++++++++---------- 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/lunar/src-tauri/gen/schemas/desktop-schema.json b/lunar/src-tauri/gen/schemas/desktop-schema.json index 19a86b0e..6d0ac276 100644 --- a/lunar/src-tauri/gen/schemas/desktop-schema.json +++ b/lunar/src-tauri/gen/schemas/desktop-schema.json @@ -37,7 +37,7 @@ ], "definitions": { "Capability": { - "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```", + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```", "type": "object", "required": [ "identifier", @@ -84,7 +84,7 @@ } }, "permissions": { - "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ```", + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ] ```", "type": "array", "items": { "$ref": "#/definitions/PermissionEntry" diff --git a/lunar/src-tauri/gen/schemas/macOS-schema.json b/lunar/src-tauri/gen/schemas/macOS-schema.json index d1de5ba8..6d0ac276 100644 --- a/lunar/src-tauri/gen/schemas/macOS-schema.json +++ b/lunar/src-tauri/gen/schemas/macOS-schema.json @@ -37,7 +37,7 @@ ], "definitions": { "Capability": { - "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```", + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```", "type": "object", "required": [ "identifier", @@ -84,7 +84,7 @@ } }, "permissions": { - "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ```", + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ] ```", "type": "array", "items": { "$ref": "#/definitions/PermissionEntry" @@ -1714,6 +1714,14 @@ "name" ], "properties": { + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "cmd": { + "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + }, "args": { "description": "The allowed arguments for the command execution.", "allOf": [ @@ -1721,14 +1729,6 @@ "$ref": "#/definitions/ShellScopeEntryAllowedArgs" } ] - }, - "cmd": { - "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", - "type": "string" - }, - "name": { - "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", - "type": "string" } }, "additionalProperties": false @@ -1740,6 +1740,10 @@ "sidecar" ], "properties": { + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, "args": { "description": "The allowed arguments for the command execution.", "allOf": [ @@ -1748,10 +1752,6 @@ } ] }, - "name": { - "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", - "type": "string" - }, "sidecar": { "description": "If this command is a sidecar command.", "type": "boolean" @@ -1774,6 +1774,14 @@ "name" ], "properties": { + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "cmd": { + "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + }, "args": { "description": "The allowed arguments for the command execution.", "allOf": [ @@ -1781,14 +1789,6 @@ "$ref": "#/definitions/ShellScopeEntryAllowedArgs" } ] - }, - "cmd": { - "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", - "type": "string" - }, - "name": { - "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", - "type": "string" } }, "additionalProperties": false @@ -1800,6 +1800,10 @@ "sidecar" ], "properties": { + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, "args": { "description": "The allowed arguments for the command execution.", "allOf": [ @@ -1808,10 +1812,6 @@ } ] }, - "name": { - "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", - "type": "string" - }, "sidecar": { "description": "If this command is a sidecar command.", "type": "boolean" @@ -4938,6 +4938,22 @@ } ] }, + "ShellScopeEntryAllowedArgs": { + "description": "A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration.", + "anyOf": [ + { + "description": "Use a simple boolean to allow all or disable all arguments to this command configuration.", + "type": "boolean" + }, + { + "description": "A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.", + "type": "array", + "items": { + "$ref": "#/definitions/ShellScopeEntryAllowedArg" + } + } + ] + }, "ShellScopeEntryAllowedArg": { "description": "A command argument allowed to be executed by the webview API.", "anyOf": [ @@ -4952,35 +4968,19 @@ "validator" ], "properties": { + "validator": { + "description": "[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: ", + "type": "string" + }, "raw": { "description": "Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.", "default": false, "type": "boolean" - }, - "validator": { - "description": "[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: ", - "type": "string" } }, "additionalProperties": false } ] - }, - "ShellScopeEntryAllowedArgs": { - "description": "A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration.", - "anyOf": [ - { - "description": "Use a simple boolean to allow all or disable all arguments to this command configuration.", - "type": "boolean" - }, - { - "description": "A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.", - "type": "array", - "items": { - "$ref": "#/definitions/ShellScopeEntryAllowedArg" - } - } - ] } } } \ No newline at end of file From 1f7a525f9a4055917c189f610b88d1264892f9dd Mon Sep 17 00:00:00 2001 From: Quanyi Ma Date: Mon, 20 Jan 2025 23:23:22 +0800 Subject: [PATCH 3/5] Add lunar files to archived --- archived/lunar/.env.local | 2 + archived/lunar/.eslintrc.json | 6 + archived/lunar/.gitignore | 39 + archived/lunar/.prettierrc | 8 + archived/lunar/README.md | 27 + archived/lunar/next.config.js | 48 + archived/lunar/package.json | 44 + archived/lunar/postcss.config.js | 6 + archived/lunar/public/images/mega.png | Bin 0 -> 7673 bytes archived/lunar/public/images/megaLogo.png | Bin 0 -> 15559 bytes archived/lunar/public/images/megaTitle.png | Bin 0 -> 63020 bytes archived/lunar/src-tauri/.gitignore | 5 + archived/lunar/src-tauri/Cargo.toml | 32 + archived/lunar/src-tauri/build.rs | 73 + .../src-tauri/capabilities/migrated.json | 36 + .../src-tauri/gen/schemas/acl-manifests.json | 1 + .../src-tauri/gen/schemas/capabilities.json | 1 + .../src-tauri/gen/schemas/desktop-schema.json | 4986 +++++++++++++++++ .../src-tauri/gen/schemas/linux-schema.json | 4986 +++++++++++++++++ .../src-tauri/gen/schemas/macOS-schema.json | 4986 +++++++++++++++++ archived/lunar/src-tauri/icons/128x128.png | Bin 0 -> 11059 bytes archived/lunar/src-tauri/icons/128x128@2x.png | Bin 0 -> 23137 bytes archived/lunar/src-tauri/icons/32x32.png | Bin 0 -> 2225 bytes .../src-tauri/icons/Square107x107Logo.png | Bin 0 -> 9202 bytes .../src-tauri/icons/Square142x142Logo.png | Bin 0 -> 12530 bytes .../src-tauri/icons/Square150x150Logo.png | Bin 0 -> 13032 bytes .../src-tauri/icons/Square284x284Logo.png | Bin 0 -> 25943 bytes .../lunar/src-tauri/icons/Square30x30Logo.png | Bin 0 -> 2078 bytes .../src-tauri/icons/Square310x310Logo.png | Bin 0 -> 28507 bytes .../lunar/src-tauri/icons/Square44x44Logo.png | Bin 0 -> 3419 bytes .../lunar/src-tauri/icons/Square71x71Logo.png | Bin 0 -> 6027 bytes .../lunar/src-tauri/icons/Square89x89Logo.png | Bin 0 -> 7551 bytes archived/lunar/src-tauri/icons/StoreLogo.png | Bin 0 -> 3971 bytes archived/lunar/src-tauri/icons/icon.icns | Bin 0 -> 277003 bytes archived/lunar/src-tauri/icons/icon.ico | Bin 0 -> 37710 bytes archived/lunar/src-tauri/icons/icon.png | Bin 0 -> 49979 bytes archived/lunar/src-tauri/src/main.rs | 276 + archived/lunar/src-tauri/tauri.conf.json | 63 + .../lunar/src-tauri/tauri.linux.conf.json | 7 + .../lunar/src-tauri/tauri.macos.conf.json | 7 + .../lunar/src-tauri/tauri.windows.conf.json | 7 + archived/lunar/src/app/api/fetcher.ts | 165 + archived/lunar/src/app/application-layout.tsx | 211 + archived/lunar/src/app/blob/page.tsx | 31 + archived/lunar/src/app/layout.tsx | 27 + archived/lunar/src/app/mr/page.tsx | 27 + archived/lunar/src/app/page.tsx | 62 + archived/lunar/src/app/repo/page.tsx | 15 + archived/lunar/src/app/settings/page.tsx | 120 + archived/lunar/src/app/tree/page.tsx | 64 + .../src/components/BreadCrumb.module.css | 5 + archived/lunar/src/components/BreadCrumb.tsx | 32 + .../src/components/CodeContent.module.css | 41 + archived/lunar/src/components/CodeContent.tsx | 71 + .../lunar/src/components/CodeTable.module.css | 18 + archived/lunar/src/components/CodeTable.tsx | 197 + archived/lunar/src/components/MergeDetail.tsx | 95 + archived/lunar/src/components/MergeList.tsx | 67 + archived/lunar/src/components/RepoList.tsx | 165 + .../lunar/src/components/RepoTree.module.css | 4 + archived/lunar/src/components/RepoTree.tsx | 128 + .../lunar/src/components/catalyst/avatar.tsx | 84 + .../lunar/src/components/catalyst/button.tsx | 204 + .../lunar/src/components/catalyst/divider.tsx | 20 + .../src/components/catalyst/dropdown.tsx | 192 + .../lunar/src/components/catalyst/heading.tsx | 27 + .../lunar/src/components/catalyst/input.tsx | 94 + .../lunar/src/components/catalyst/link.tsx | 14 + .../lunar/src/components/catalyst/navbar.tsx | 96 + .../components/catalyst/sidebar-layout.tsx | 82 + .../lunar/src/components/catalyst/sidebar.tsx | 138 + .../lunar/src/components/catalyst/text.tsx | 40 + archived/lunar/src/styles/globals.css | 33 + archived/lunar/tailwind.config.js | 20 + archived/lunar/tsconfig.json | 43 + 75 files changed, 18278 insertions(+) create mode 100644 archived/lunar/.env.local create mode 100644 archived/lunar/.eslintrc.json create mode 100644 archived/lunar/.gitignore create mode 100644 archived/lunar/.prettierrc create mode 100644 archived/lunar/README.md create mode 100644 archived/lunar/next.config.js create mode 100644 archived/lunar/package.json create mode 100644 archived/lunar/postcss.config.js create mode 100644 archived/lunar/public/images/mega.png create mode 100644 archived/lunar/public/images/megaLogo.png create mode 100644 archived/lunar/public/images/megaTitle.png create mode 100644 archived/lunar/src-tauri/.gitignore create mode 100644 archived/lunar/src-tauri/Cargo.toml create mode 100644 archived/lunar/src-tauri/build.rs create mode 100644 archived/lunar/src-tauri/capabilities/migrated.json create mode 100644 archived/lunar/src-tauri/gen/schemas/acl-manifests.json create mode 100644 archived/lunar/src-tauri/gen/schemas/capabilities.json create mode 100644 archived/lunar/src-tauri/gen/schemas/desktop-schema.json create mode 100644 archived/lunar/src-tauri/gen/schemas/linux-schema.json create mode 100644 archived/lunar/src-tauri/gen/schemas/macOS-schema.json create mode 100644 archived/lunar/src-tauri/icons/128x128.png create mode 100644 archived/lunar/src-tauri/icons/128x128@2x.png create mode 100644 archived/lunar/src-tauri/icons/32x32.png create mode 100644 archived/lunar/src-tauri/icons/Square107x107Logo.png create mode 100644 archived/lunar/src-tauri/icons/Square142x142Logo.png create mode 100644 archived/lunar/src-tauri/icons/Square150x150Logo.png create mode 100644 archived/lunar/src-tauri/icons/Square284x284Logo.png create mode 100644 archived/lunar/src-tauri/icons/Square30x30Logo.png create mode 100644 archived/lunar/src-tauri/icons/Square310x310Logo.png create mode 100644 archived/lunar/src-tauri/icons/Square44x44Logo.png create mode 100644 archived/lunar/src-tauri/icons/Square71x71Logo.png create mode 100644 archived/lunar/src-tauri/icons/Square89x89Logo.png create mode 100644 archived/lunar/src-tauri/icons/StoreLogo.png create mode 100644 archived/lunar/src-tauri/icons/icon.icns create mode 100644 archived/lunar/src-tauri/icons/icon.ico create mode 100644 archived/lunar/src-tauri/icons/icon.png create mode 100644 archived/lunar/src-tauri/src/main.rs create mode 100644 archived/lunar/src-tauri/tauri.conf.json create mode 100644 archived/lunar/src-tauri/tauri.linux.conf.json create mode 100644 archived/lunar/src-tauri/tauri.macos.conf.json create mode 100644 archived/lunar/src-tauri/tauri.windows.conf.json create mode 100644 archived/lunar/src/app/api/fetcher.ts create mode 100644 archived/lunar/src/app/application-layout.tsx create mode 100644 archived/lunar/src/app/blob/page.tsx create mode 100644 archived/lunar/src/app/layout.tsx create mode 100644 archived/lunar/src/app/mr/page.tsx create mode 100644 archived/lunar/src/app/page.tsx create mode 100644 archived/lunar/src/app/repo/page.tsx create mode 100644 archived/lunar/src/app/settings/page.tsx create mode 100644 archived/lunar/src/app/tree/page.tsx create mode 100644 archived/lunar/src/components/BreadCrumb.module.css create mode 100644 archived/lunar/src/components/BreadCrumb.tsx create mode 100644 archived/lunar/src/components/CodeContent.module.css create mode 100644 archived/lunar/src/components/CodeContent.tsx create mode 100644 archived/lunar/src/components/CodeTable.module.css create mode 100644 archived/lunar/src/components/CodeTable.tsx create mode 100644 archived/lunar/src/components/MergeDetail.tsx create mode 100644 archived/lunar/src/components/MergeList.tsx create mode 100644 archived/lunar/src/components/RepoList.tsx create mode 100644 archived/lunar/src/components/RepoTree.module.css create mode 100644 archived/lunar/src/components/RepoTree.tsx create mode 100644 archived/lunar/src/components/catalyst/avatar.tsx create mode 100644 archived/lunar/src/components/catalyst/button.tsx create mode 100644 archived/lunar/src/components/catalyst/divider.tsx create mode 100644 archived/lunar/src/components/catalyst/dropdown.tsx create mode 100644 archived/lunar/src/components/catalyst/heading.tsx create mode 100644 archived/lunar/src/components/catalyst/input.tsx create mode 100644 archived/lunar/src/components/catalyst/link.tsx create mode 100644 archived/lunar/src/components/catalyst/navbar.tsx create mode 100644 archived/lunar/src/components/catalyst/sidebar-layout.tsx create mode 100644 archived/lunar/src/components/catalyst/sidebar.tsx create mode 100644 archived/lunar/src/components/catalyst/text.tsx create mode 100644 archived/lunar/src/styles/globals.css create mode 100644 archived/lunar/tailwind.config.js create mode 100644 archived/lunar/tsconfig.json diff --git a/archived/lunar/.env.local b/archived/lunar/.env.local new file mode 100644 index 00000000..06f23c0a --- /dev/null +++ b/archived/lunar/.env.local @@ -0,0 +1,2 @@ +NEXT_PUBLIC_RELAY_API_URL=http://gitmono.org +NEXT_PUBLIC_API_URL=http://localhost:8000 diff --git a/archived/lunar/.eslintrc.json b/archived/lunar/.eslintrc.json new file mode 100644 index 00000000..a8dfdbea --- /dev/null +++ b/archived/lunar/.eslintrc.json @@ -0,0 +1,6 @@ +{ + "extends": "next/core-web-vitals", + "rules": { + "@next/next/no-img-element": "off" // disable it due to we use static export + } +} \ No newline at end of file diff --git a/archived/lunar/.gitignore b/archived/lunar/.gitignore new file mode 100644 index 00000000..435b013b --- /dev/null +++ b/archived/lunar/.gitignore @@ -0,0 +1,39 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +# .env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +package-lock.json +pnpm-lock.yaml \ No newline at end of file diff --git a/archived/lunar/.prettierrc b/archived/lunar/.prettierrc new file mode 100644 index 00000000..9ea78f3c --- /dev/null +++ b/archived/lunar/.prettierrc @@ -0,0 +1,8 @@ +{ + "semi": false, + // "trailingComma": "es5", + "singleQuote": true, + "printWidth": 120, + "tabWidth": 2, + // "useTabs": false +} \ No newline at end of file diff --git a/archived/lunar/README.md b/archived/lunar/README.md new file mode 100644 index 00000000..3556141f --- /dev/null +++ b/archived/lunar/README.md @@ -0,0 +1,27 @@ +## Lunar Module + +## bundle + +Because Lunar depends on Mega, which in turn relies on Neptune’s dynamic library pipy, it’s important to handle libpipy carefully during compilation. + +> [!NOTE] +> The file paths in `src-tauri/tauri.conf.json` are set for `cargo tauri build` because `cargo build` and `cargo tauri build` use different file paths. If you want to use `cargo build`, you need to modify the file paths in `src-tauri/tauri.conf.json` to match the corresponding paths. + +### Linux + +- deb + +Currently, on Linux Debian, you can complete the compilation directly using cargo tauri build -b deb. + +- AppImage + +However, compilation for AppImage will fail. After encountering the error “libpipy.so Not found” when executing `cargo tauri build -b appimage,` you need to manually copy `target/release/libpipy.so` to the `target/release/bundle/appimage/lunar.AppDir/usr/bin` folder and then manually execute `target/release/bundle/appimage/build_appimage.sh`. + +> [!NOTE] +> If you use archlinux to bundle, according to [\[bug\]\[linuxdeploy\] Linux AppImage script fails](https://github.com/tauri-apps/tauri/issues/8929), you may need to run build with `NO_STRIP=true cargo tauri **`. + + +### MacOS + +- dmg +According to [tauri-apps issue(3055)](https://github.com/tauri-apps/tauri/issues/3055#issuecomment-1866022065), you may need to give `Terminal` app or `vscode` app, wahtever you use to compile, the permissions to control `Finder.app` to finish build `dmg` in Apple Silicon. But this didn't influence the build of `app` diff --git a/archived/lunar/next.config.js b/archived/lunar/next.config.js new file mode 100644 index 00000000..42ee64ad --- /dev/null +++ b/archived/lunar/next.config.js @@ -0,0 +1,48 @@ +/** @type {import('next').NextConfig} */ + +const nextConfig = { + reactStrictMode: true, + output: "export", + transpilePackages: [ + // antd & deps + // https://github.com/vercel/next.js/issues/65707 + // https://github.com/ant-design/ant-design/issues/46053#issuecomment-1905553667 + "@ant-design", + "@rc-component", + "antd", + "rc-cascader", + "rc-checkbox", + "rc-collapse", + "rc-dialog", + "rc-drawer", + "rc-dropdown", + "rc-field-form", + "rc-image", + "rc-input", + "rc-input-number", + "rc-mentions", + "rc-menu", + "rc-motion", + "rc-notification", + "rc-pagination", + "rc-picker", + "rc-progress", + "rc-rate", + "rc-resize-observer", + "rc-segmented", + "rc-select", + "rc-slider", + "rc-steps", + "rc-switch", + "rc-table", + "rc-tabs", + "rc-textarea", + "rc-tooltip", + "rc-tree", + "rc-tree-select", + "rc-upload", + "rc-util", + ], +} + +module.exports = nextConfig diff --git a/archived/lunar/package.json b/archived/lunar/package.json new file mode 100644 index 00000000..d95da192 --- /dev/null +++ b/archived/lunar/package.json @@ -0,0 +1,44 @@ +{ + "name": "lunar", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint", + "tauri": "tauri" + }, + "dependencies": { + "@ant-design/icons": "^5.5.1", + "@ant-design/nextjs-registry": "^1.0.1", + "@headlessui/react": "^2.2.0", + "@headlessui/tailwindcss": "^0.2.1", + "@heroicons/react": "^2.1.5", + "@tailwindcss/forms": "^0.5.9", + "@tauri-apps/api": "^2.0.3", + "@tauri-apps/plugin-fs": "^2.0.1", + "@tauri-apps/plugin-shell": "^2.0.1", + "clsx": "^2.1.1", + "date-fns": "^4.1.0", + "framer-motion": "^11.11.10", + "github-markdown-css": "^5.7.0", + "next": "15.0.1", + "prism-react-renderer": "^2.4.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-markdown": "^9.0.1", + "swr": "^2.2.5" + }, + "devDependencies": { + "@tauri-apps/cli": "^2.0.4", + "@types/node": "^22.8.1", + "@types/react": "^18.3.11", + "@types/react-dom": "^18.3.1", + "autoprefixer": "^10.4.20", + "eslint": "^9.13.0", + "eslint-config-next": "^15.0.1", + "postcss": "^8.4.47", + "typescript": "^5.6.3" + } +} diff --git a/archived/lunar/postcss.config.js b/archived/lunar/postcss.config.js new file mode 100644 index 00000000..12a703d9 --- /dev/null +++ b/archived/lunar/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/archived/lunar/public/images/mega.png b/archived/lunar/public/images/mega.png new file mode 100644 index 0000000000000000000000000000000000000000..4732fb3ba08a0eb359f7d76f90f7973e8ad25c96 GIT binary patch literal 7673 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 ya)0(AnG5*|u^`Fe&g7?VE*@V=xi` literal 0 HcmV?d00001 diff --git a/archived/lunar/public/images/megaTitle.png b/archived/lunar/public/images/megaTitle.png new file mode 100644 index 0000000000000000000000000000000000000000..8a42a49a12bcc9127a7da6f56261bd74c51a6ca6 GIT binary patch literal 63020 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 f3c~-nLizEN+VZzg_u1ZL2H+22d<9-@=o"] +license = "MIT/Apache-2.0" +repository = "https://github.com/web3infra-foundation/mega" +edition = "2021" +rust-version = "1.81.0" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[build-dependencies] +tauri-build = { version = "2.0.1", features = [] } + +[dependencies] +serde_json = { workspace = true } +serde = { workspace = true, features = ["derive"] } +tauri = { version = "2.0.2", features = [] } +tokio = { workspace = true } +home = { workspace = true } +tauri-plugin-fs = "2.0.1" +tauri-plugin-shell = "2.0.1" + +[dev-dependencies] +tokio = { workspace = true, features = ["macros"] } + +[features] +# this feature is used for production builds or when `devPath` points to the filesystem and the built-in dev server is disabled. +# If you use cargo directly instead of tauri's cli you can use this feature flag to switch between tauri's `dev` and `build` modes. +# DO NOT REMOVE!! +custom-protocol = ["tauri/custom-protocol"] diff --git a/archived/lunar/src-tauri/build.rs b/archived/lunar/src-tauri/build.rs new file mode 100644 index 00000000..16172e51 --- /dev/null +++ b/archived/lunar/src-tauri/build.rs @@ -0,0 +1,73 @@ +use std::process::Command; + +fn main() { + #[cfg(target_os = "linux")] + println!("cargo:rustc-link-arg=-Wl,-rpath,$ORIGIN"); + #[cfg(target_os = "macos")] + println!("cargo:rustc-link-arg=-Wl,-rpath,@executable_path"); + + // only for githut action check, according to [[feat] Prevent error when distDir doesn't exist](https://github.com/tauri-apps/tauri/issues/3142) + // ../out is the default distDir + std::fs::create_dir_all("../out").expect("failed to create out directory"); + std::fs::create_dir_all("./binaries").expect("failed to create binaries directory"); + std::fs::create_dir_all("./libs").expect("failed to create libs directory"); + + // Determine the platform-specific extension + let extension = if cfg!(target_os = "windows") { + ".exe" + } else { + "" + }; + // Execute the `rustc -vV` command to get Rust compiler information + let output = Command::new("rustc").arg("-vV").output().unwrap().stdout; + let rust_info = String::from_utf8(output).unwrap(); + + // Extract the target triple + let target_triple = rust_info + .lines() + .find_map(|line| line.strip_prefix("host: ")) + .ok_or("Failed to determine platform target triple") + .unwrap(); + + let sidecar_path = format!("./binaries/mega-{}{}", target_triple, extension); + let libra_path = format!("./binaries/libra-{}{}", target_triple, extension); + + let debug_path = if cfg!(debug_assertions) { + "debug" + } else { + "release" + }; + + std::fs::copy(format!("../../target/{}/mega{}", debug_path, extension), sidecar_path) + .expect("Run cargo build to build mega bin for Lunar first"); + + std::fs::copy(format!("../../target/{}/libra{}", debug_path, extension), libra_path) + .expect("Run cargo build to build libra bin for Lunar first"); + + // Copy libpipy due to target os + #[cfg(target_os = "macos")] + std::fs::copy( + format!("../../target/{}/libpipy.dylib", debug_path), + "./libs/libpipy.dylib", + ) + .expect("copy libpipy failed"); + + #[cfg(target_os = "linux")] + std::fs::copy( + format!("../../target/{}/libpipy.so", debug_path), + "./libs/libpipy.so", + ) + .expect("copy libpipy failed"); + + #[cfg(target_os = "windows")] + { + if cfg!(debug_assertions) { + std::fs::copy("../../target/debug/pipyd.dll", "./libs/pipyd.dll") + .expect("copy libpipy failed"); + } else { + std::fs::copy("../../target/release/pipy.dll", "./libs/pipy.dll") + .expect("copy libpipy failed"); + } + } + tauri_build::build() +} diff --git a/archived/lunar/src-tauri/capabilities/migrated.json b/archived/lunar/src-tauri/capabilities/migrated.json new file mode 100644 index 00000000..a01215b2 --- /dev/null +++ b/archived/lunar/src-tauri/capabilities/migrated.json @@ -0,0 +1,36 @@ +{ + "identifier": "migrated", + "description": "permissions that were migrated from v1", + "local": true, + "windows": [ + "main" + ], + "permissions": [ + "core:default", + { + "identifier": "fs:scope", + "allow": [ + "$RESOURCE/*" + ] + }, + { + "identifier": "shell:allow-execute", + "allow": [ + { + "args": false, + "cmd": "", + "name": "binaries/mega", + "sidecar": true + }, + { + "args": false, + "cmd": "", + "name": "binaries/libra", + "sidecar": true + } + ] + }, + "fs:default", + "shell:default" + ] +} \ No newline at end of file diff --git a/archived/lunar/src-tauri/gen/schemas/acl-manifests.json b/archived/lunar/src-tauri/gen/schemas/acl-manifests.json new file mode 100644 index 00000000..aa57eb27 --- /dev/null +++ b/archived/lunar/src-tauri/gen/schemas/acl-manifests.json @@ -0,0 +1 @@ +{"core":{"default_permission":{"identifier":"default","description":"Default core plugins set which includes:\n- 'core:path:default'\n- 'core:event:default'\n- 'core:window:default'\n- 'core:webview:default'\n- 'core:app:default'\n- 'core:image:default'\n- 'core:resources:default'\n- 'core:menu:default'\n- 'core:tray:default'\n","permissions":["core:path:default","core:event:default","core:window:default","core:webview:default","core:app:default","core:image:default","core:resources:default","core:menu:default","core:tray:default"]},"permissions":{},"permission_sets":{},"global_scope_schema":null},"core:app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-default-window-icon":{"identifier":"allow-default-window-icon","description":"Enables the default_window_icon command without any pre-configured scope.","commands":{"allow":["default_window_icon"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-set-app-theme":{"identifier":"allow-set-app-theme","description":"Enables the set_app_theme command without any pre-configured scope.","commands":{"allow":["set_app_theme"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-default-window-icon":{"identifier":"deny-default-window-icon","description":"Denies the default_window_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["default_window_icon"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-set-app-theme":{"identifier":"deny-set-app-theme","description":"Denies the set_app_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_app_theme"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"core:event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"core:image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"core:menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-append","allow-prepend","allow-insert","allow-remove","allow-remove-at","allow-items","allow-get","allow-popup","allow-create-default","allow-set-as-app-menu","allow-set-as-window-menu","allow-text","allow-set-text","allow-is-enabled","allow-set-enabled","allow-set-accelerator","allow-set-as-windows-menu-for-nsapp","allow-set-as-help-menu-for-nsapp","allow-is-checked","allow-set-checked","allow-set-icon"]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"core:path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"core:resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"core:tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-get-by-id","allow-remove-by-id","allow-set-icon","allow-set-menu","allow-set-tooltip","allow-set-title","allow-set-visible","allow-set-temp-dir-path","allow-set-icon-as-template","allow-set-show-menu-on-left-click"]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"core:webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-webviews","allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-clear-all-browsing-data":{"identifier":"allow-clear-all-browsing-data","description":"Enables the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":["clear_all_browsing_data"],"deny":[]}},"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-get-all-webviews":{"identifier":"allow-get-all-webviews","description":"Enables the get_all_webviews command without any pre-configured scope.","commands":{"allow":["get_all_webviews"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-hide":{"identifier":"allow-webview-hide","description":"Enables the webview_hide command without any pre-configured scope.","commands":{"allow":["webview_hide"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-show":{"identifier":"allow-webview-show","description":"Enables the webview_show command without any pre-configured scope.","commands":{"allow":["webview_show"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-clear-all-browsing-data":{"identifier":"deny-clear-all-browsing-data","description":"Denies the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":[],"deny":["clear_all_browsing_data"]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-get-all-webviews":{"identifier":"deny-get-all-webviews","description":"Denies the get_all_webviews command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_webviews"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-hide":{"identifier":"deny-webview-hide","description":"Denies the webview_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_hide"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-show":{"identifier":"deny-webview-show","description":"Denies the webview_show command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_show"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"core:window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-windows","allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-is-enabled","allow-title","allow-current-monitor","allow-primary-monitor","allow-monitor-from-point","allow-available-monitors","allow-cursor-position","allow-theme","allow-internal-toggle-maximize"]},"permissions":{"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-get-all-windows":{"identifier":"allow-get-all-windows","description":"Enables the get_all_windows command without any pre-configured scope.","commands":{"allow":["get_all_windows"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-monitor-from-point":{"identifier":"allow-monitor-from-point","description":"Enables the monitor_from_point command without any pre-configured scope.","commands":{"allow":["monitor_from_point"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-size-constraints":{"identifier":"allow-set-size-constraints","description":"Enables the set_size_constraints command without any pre-configured scope.","commands":{"allow":["set_size_constraints"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-theme":{"identifier":"allow-set-theme","description":"Enables the set_theme command without any pre-configured scope.","commands":{"allow":["set_theme"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-title-bar-style":{"identifier":"allow-set-title-bar-style","description":"Enables the set_title_bar_style command without any pre-configured scope.","commands":{"allow":["set_title_bar_style"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-get-all-windows":{"identifier":"deny-get-all-windows","description":"Denies the get_all_windows command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_windows"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-monitor-from-point":{"identifier":"deny-monitor-from-point","description":"Denies the monitor_from_point command without any pre-configured scope.","commands":{"allow":[],"deny":["monitor_from_point"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-size-constraints":{"identifier":"deny-set-size-constraints","description":"Denies the set_size_constraints command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size_constraints"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-theme":{"identifier":"deny-set-theme","description":"Denies the set_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_theme"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-title-bar-style":{"identifier":"deny-set-title-bar-style","description":"Denies the set_title_bar_style command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title_bar_style"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null},"fs":{"default_permission":{"identifier":"default","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","permissions":["create-app-specific-dirs","read-app-specific-dirs-recursive","deny-default"]},"permissions":{"allow-copy-file":{"identifier":"allow-copy-file","description":"Enables the copy_file command without any pre-configured scope.","commands":{"allow":["copy_file"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-exists":{"identifier":"allow-exists","description":"Enables the exists command without any pre-configured scope.","commands":{"allow":["exists"],"deny":[]}},"allow-fstat":{"identifier":"allow-fstat","description":"Enables the fstat command without any pre-configured scope.","commands":{"allow":["fstat"],"deny":[]}},"allow-ftruncate":{"identifier":"allow-ftruncate","description":"Enables the ftruncate command without any pre-configured scope.","commands":{"allow":["ftruncate"],"deny":[]}},"allow-lstat":{"identifier":"allow-lstat","description":"Enables the lstat command without any pre-configured scope.","commands":{"allow":["lstat"],"deny":[]}},"allow-mkdir":{"identifier":"allow-mkdir","description":"Enables the mkdir command without any pre-configured scope.","commands":{"allow":["mkdir"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-read":{"identifier":"allow-read","description":"Enables the read command without any pre-configured scope.","commands":{"allow":["read"],"deny":[]}},"allow-read-dir":{"identifier":"allow-read-dir","description":"Enables the read_dir command without any pre-configured scope.","commands":{"allow":["read_dir"],"deny":[]}},"allow-read-file":{"identifier":"allow-read-file","description":"Enables the read_file command without any pre-configured scope.","commands":{"allow":["read_file"],"deny":[]}},"allow-read-text-file":{"identifier":"allow-read-text-file","description":"Enables the read_text_file command without any pre-configured scope.","commands":{"allow":["read_text_file"],"deny":[]}},"allow-read-text-file-lines":{"identifier":"allow-read-text-file-lines","description":"Enables the read_text_file_lines command without any pre-configured scope.","commands":{"allow":["read_text_file_lines"],"deny":[]}},"allow-read-text-file-lines-next":{"identifier":"allow-read-text-file-lines-next","description":"Enables the read_text_file_lines_next command without any pre-configured scope.","commands":{"allow":["read_text_file_lines_next"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-rename":{"identifier":"allow-rename","description":"Enables the rename command without any pre-configured scope.","commands":{"allow":["rename"],"deny":[]}},"allow-seek":{"identifier":"allow-seek","description":"Enables the seek command without any pre-configured scope.","commands":{"allow":["seek"],"deny":[]}},"allow-stat":{"identifier":"allow-stat","description":"Enables the stat command without any pre-configured scope.","commands":{"allow":["stat"],"deny":[]}},"allow-truncate":{"identifier":"allow-truncate","description":"Enables the truncate command without any pre-configured scope.","commands":{"allow":["truncate"],"deny":[]}},"allow-unwatch":{"identifier":"allow-unwatch","description":"Enables the unwatch command without any pre-configured scope.","commands":{"allow":["unwatch"],"deny":[]}},"allow-watch":{"identifier":"allow-watch","description":"Enables the watch command without any pre-configured scope.","commands":{"allow":["watch"],"deny":[]}},"allow-write":{"identifier":"allow-write","description":"Enables the write command without any pre-configured scope.","commands":{"allow":["write"],"deny":[]}},"allow-write-file":{"identifier":"allow-write-file","description":"Enables the write_file command without any pre-configured scope.","commands":{"allow":["write_file"],"deny":[]}},"allow-write-text-file":{"identifier":"allow-write-text-file","description":"Enables the write_text_file command without any pre-configured scope.","commands":{"allow":["write_text_file"],"deny":[]}},"create-app-specific-dirs":{"identifier":"create-app-specific-dirs","description":"This permissions allows to create the application specific directories.\n","commands":{"allow":["mkdir","scope-app-index"],"deny":[]}},"deny-copy-file":{"identifier":"deny-copy-file","description":"Denies the copy_file command without any pre-configured scope.","commands":{"allow":[],"deny":["copy_file"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-exists":{"identifier":"deny-exists","description":"Denies the exists command without any pre-configured scope.","commands":{"allow":[],"deny":["exists"]}},"deny-fstat":{"identifier":"deny-fstat","description":"Denies the fstat command without any pre-configured scope.","commands":{"allow":[],"deny":["fstat"]}},"deny-ftruncate":{"identifier":"deny-ftruncate","description":"Denies the ftruncate command without any pre-configured scope.","commands":{"allow":[],"deny":["ftruncate"]}},"deny-lstat":{"identifier":"deny-lstat","description":"Denies the lstat command without any pre-configured scope.","commands":{"allow":[],"deny":["lstat"]}},"deny-mkdir":{"identifier":"deny-mkdir","description":"Denies the mkdir command without any pre-configured scope.","commands":{"allow":[],"deny":["mkdir"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-read":{"identifier":"deny-read","description":"Denies the read command without any pre-configured scope.","commands":{"allow":[],"deny":["read"]}},"deny-read-dir":{"identifier":"deny-read-dir","description":"Denies the read_dir command without any pre-configured scope.","commands":{"allow":[],"deny":["read_dir"]}},"deny-read-file":{"identifier":"deny-read-file","description":"Denies the read_file command without any pre-configured scope.","commands":{"allow":[],"deny":["read_file"]}},"deny-read-text-file":{"identifier":"deny-read-text-file","description":"Denies the read_text_file command without any pre-configured scope.","commands":{"allow":[],"deny":["read_text_file"]}},"deny-read-text-file-lines":{"identifier":"deny-read-text-file-lines","description":"Denies the read_text_file_lines command without any pre-configured scope.","commands":{"allow":[],"deny":["read_text_file_lines"]}},"deny-read-text-file-lines-next":{"identifier":"deny-read-text-file-lines-next","description":"Denies the read_text_file_lines_next command without any pre-configured scope.","commands":{"allow":[],"deny":["read_text_file_lines_next"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-rename":{"identifier":"deny-rename","description":"Denies the rename command without any pre-configured scope.","commands":{"allow":[],"deny":["rename"]}},"deny-seek":{"identifier":"deny-seek","description":"Denies the seek command without any pre-configured scope.","commands":{"allow":[],"deny":["seek"]}},"deny-stat":{"identifier":"deny-stat","description":"Denies the stat command without any pre-configured scope.","commands":{"allow":[],"deny":["stat"]}},"deny-truncate":{"identifier":"deny-truncate","description":"Denies the truncate command without any pre-configured scope.","commands":{"allow":[],"deny":["truncate"]}},"deny-unwatch":{"identifier":"deny-unwatch","description":"Denies the unwatch command without any pre-configured scope.","commands":{"allow":[],"deny":["unwatch"]}},"deny-watch":{"identifier":"deny-watch","description":"Denies the watch command without any pre-configured scope.","commands":{"allow":[],"deny":["watch"]}},"deny-webview-data-linux":{"identifier":"deny-webview-data-linux","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.","commands":{"allow":[],"deny":[]}},"deny-webview-data-windows":{"identifier":"deny-webview-data-windows","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.","commands":{"allow":[],"deny":[]}},"deny-write":{"identifier":"deny-write","description":"Denies the write command without any pre-configured scope.","commands":{"allow":[],"deny":["write"]}},"deny-write-file":{"identifier":"deny-write-file","description":"Denies the write_file command without any pre-configured scope.","commands":{"allow":[],"deny":["write_file"]}},"deny-write-text-file":{"identifier":"deny-write-text-file","description":"Denies the write_text_file command without any pre-configured scope.","commands":{"allow":[],"deny":["write_text_file"]}},"read-all":{"identifier":"read-all","description":"This enables all read related commands without any pre-configured accessible paths.","commands":{"allow":["read_dir","read_file","read","open","read_text_file","read_text_file_lines","read_text_file_lines_next","seek","stat","lstat","fstat","exists","watch","unwatch"],"deny":[]}},"read-app-specific-dirs-recursive":{"identifier":"read-app-specific-dirs-recursive","description":"This permission allows recursive read functionality on the application\nspecific base directories. \n","commands":{"allow":["read_dir","read_file","read_text_file","read_text_file_lines","read_text_file_lines_next","exists","scope-app-recursive"],"deny":[]}},"read-dirs":{"identifier":"read-dirs","description":"This enables directory read and file metadata related commands without any pre-configured accessible paths.","commands":{"allow":["read_dir","stat","lstat","fstat","exists"],"deny":[]}},"read-files":{"identifier":"read-files","description":"This enables file read related commands without any pre-configured accessible paths.","commands":{"allow":["read_file","read","open","read_text_file","read_text_file_lines","read_text_file_lines_next","seek","stat","lstat","fstat","exists"],"deny":[]}},"read-meta":{"identifier":"read-meta","description":"This enables all index or metadata related commands without any pre-configured accessible paths.","commands":{"allow":["read_dir","stat","lstat","fstat","exists"],"deny":[]}},"scope":{"identifier":"scope","description":"An empty permission you can use to modify the global scope.","commands":{"allow":[],"deny":[]}},"scope-app":{"identifier":"scope-app","description":"This scope permits access to all files and list content of top level directories in the application folders.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCONFIG"},{"path":"$APPCONFIG/*"},{"path":"$APPDATA"},{"path":"$APPDATA/*"},{"path":"$APPLOCALDATA"},{"path":"$APPLOCALDATA/*"},{"path":"$APPCACHE"},{"path":"$APPCACHE/*"},{"path":"$APPLOG"},{"path":"$APPLOG/*"}]}},"scope-app-index":{"identifier":"scope-app-index","description":"This scope permits to list all files and folders in the application directories.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCONFIG"},{"path":"$APPDATA"},{"path":"$APPLOCALDATA"},{"path":"$APPCACHE"},{"path":"$APPLOG"}]}},"scope-app-recursive":{"identifier":"scope-app-recursive","description":"This scope permits recursive access to the complete application folders, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCONFIG"},{"path":"$APPCONFIG/**"},{"path":"$APPDATA"},{"path":"$APPDATA/**"},{"path":"$APPLOCALDATA"},{"path":"$APPLOCALDATA/**"},{"path":"$APPCACHE"},{"path":"$APPCACHE/**"},{"path":"$APPLOG"},{"path":"$APPLOG/**"}]}},"scope-appcache":{"identifier":"scope-appcache","description":"This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCACHE"},{"path":"$APPCACHE/*"}]}},"scope-appcache-index":{"identifier":"scope-appcache-index","description":"This scope permits to list all files and folders in the `$APPCACHE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCACHE"}]}},"scope-appcache-recursive":{"identifier":"scope-appcache-recursive","description":"This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCACHE"},{"path":"$APPCACHE/**"}]}},"scope-appconfig":{"identifier":"scope-appconfig","description":"This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCONFIG"},{"path":"$APPCONFIG/*"}]}},"scope-appconfig-index":{"identifier":"scope-appconfig-index","description":"This scope permits to list all files and folders in the `$APPCONFIG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCONFIG"}]}},"scope-appconfig-recursive":{"identifier":"scope-appconfig-recursive","description":"This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCONFIG"},{"path":"$APPCONFIG/**"}]}},"scope-appdata":{"identifier":"scope-appdata","description":"This scope permits access to all files and list content of top level directories in the `$APPDATA` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPDATA"},{"path":"$APPDATA/*"}]}},"scope-appdata-index":{"identifier":"scope-appdata-index","description":"This scope permits to list all files and folders in the `$APPDATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPDATA"}]}},"scope-appdata-recursive":{"identifier":"scope-appdata-recursive","description":"This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPDATA"},{"path":"$APPDATA/**"}]}},"scope-applocaldata":{"identifier":"scope-applocaldata","description":"This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOCALDATA"},{"path":"$APPLOCALDATA/*"}]}},"scope-applocaldata-index":{"identifier":"scope-applocaldata-index","description":"This scope permits to list all files and folders in the `$APPLOCALDATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOCALDATA"}]}},"scope-applocaldata-recursive":{"identifier":"scope-applocaldata-recursive","description":"This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOCALDATA"},{"path":"$APPLOCALDATA/**"}]}},"scope-applog":{"identifier":"scope-applog","description":"This scope permits access to all files and list content of top level directories in the `$APPLOG` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOG"},{"path":"$APPLOG/*"}]}},"scope-applog-index":{"identifier":"scope-applog-index","description":"This scope permits to list all files and folders in the `$APPLOG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOG"}]}},"scope-applog-recursive":{"identifier":"scope-applog-recursive","description":"This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOG"},{"path":"$APPLOG/**"}]}},"scope-audio":{"identifier":"scope-audio","description":"This scope permits access to all files and list content of top level directories in the `$AUDIO` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$AUDIO"},{"path":"$AUDIO/*"}]}},"scope-audio-index":{"identifier":"scope-audio-index","description":"This scope permits to list all files and folders in the `$AUDIO`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$AUDIO"}]}},"scope-audio-recursive":{"identifier":"scope-audio-recursive","description":"This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$AUDIO"},{"path":"$AUDIO/**"}]}},"scope-cache":{"identifier":"scope-cache","description":"This scope permits access to all files and list content of top level directories in the `$CACHE` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CACHE"},{"path":"$CACHE/*"}]}},"scope-cache-index":{"identifier":"scope-cache-index","description":"This scope permits to list all files and folders in the `$CACHE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CACHE"}]}},"scope-cache-recursive":{"identifier":"scope-cache-recursive","description":"This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CACHE"},{"path":"$CACHE/**"}]}},"scope-config":{"identifier":"scope-config","description":"This scope permits access to all files and list content of top level directories in the `$CONFIG` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CONFIG"},{"path":"$CONFIG/*"}]}},"scope-config-index":{"identifier":"scope-config-index","description":"This scope permits to list all files and folders in the `$CONFIG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CONFIG"}]}},"scope-config-recursive":{"identifier":"scope-config-recursive","description":"This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CONFIG"},{"path":"$CONFIG/**"}]}},"scope-data":{"identifier":"scope-data","description":"This scope permits access to all files and list content of top level directories in the `$DATA` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DATA"},{"path":"$DATA/*"}]}},"scope-data-index":{"identifier":"scope-data-index","description":"This scope permits to list all files and folders in the `$DATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DATA"}]}},"scope-data-recursive":{"identifier":"scope-data-recursive","description":"This scope permits recursive access to the complete `$DATA` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DATA"},{"path":"$DATA/**"}]}},"scope-desktop":{"identifier":"scope-desktop","description":"This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DESKTOP"},{"path":"$DESKTOP/*"}]}},"scope-desktop-index":{"identifier":"scope-desktop-index","description":"This scope permits to list all files and folders in the `$DESKTOP`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DESKTOP"}]}},"scope-desktop-recursive":{"identifier":"scope-desktop-recursive","description":"This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DESKTOP"},{"path":"$DESKTOP/**"}]}},"scope-document":{"identifier":"scope-document","description":"This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOCUMENT"},{"path":"$DOCUMENT/*"}]}},"scope-document-index":{"identifier":"scope-document-index","description":"This scope permits to list all files and folders in the `$DOCUMENT`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOCUMENT"}]}},"scope-document-recursive":{"identifier":"scope-document-recursive","description":"This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOCUMENT"},{"path":"$DOCUMENT/**"}]}},"scope-download":{"identifier":"scope-download","description":"This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOWNLOAD"},{"path":"$DOWNLOAD/*"}]}},"scope-download-index":{"identifier":"scope-download-index","description":"This scope permits to list all files and folders in the `$DOWNLOAD`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOWNLOAD"}]}},"scope-download-recursive":{"identifier":"scope-download-recursive","description":"This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOWNLOAD"},{"path":"$DOWNLOAD/**"}]}},"scope-exe":{"identifier":"scope-exe","description":"This scope permits access to all files and list content of top level directories in the `$EXE` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$EXE"},{"path":"$EXE/*"}]}},"scope-exe-index":{"identifier":"scope-exe-index","description":"This scope permits to list all files and folders in the `$EXE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$EXE"}]}},"scope-exe-recursive":{"identifier":"scope-exe-recursive","description":"This scope permits recursive access to the complete `$EXE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$EXE"},{"path":"$EXE/**"}]}},"scope-font":{"identifier":"scope-font","description":"This scope permits access to all files and list content of top level directories in the `$FONT` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$FONT"},{"path":"$FONT/*"}]}},"scope-font-index":{"identifier":"scope-font-index","description":"This scope permits to list all files and folders in the `$FONT`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$FONT"}]}},"scope-font-recursive":{"identifier":"scope-font-recursive","description":"This scope permits recursive access to the complete `$FONT` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$FONT"},{"path":"$FONT/**"}]}},"scope-home":{"identifier":"scope-home","description":"This scope permits access to all files and list content of top level directories in the `$HOME` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$HOME"},{"path":"$HOME/*"}]}},"scope-home-index":{"identifier":"scope-home-index","description":"This scope permits to list all files and folders in the `$HOME`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$HOME"}]}},"scope-home-recursive":{"identifier":"scope-home-recursive","description":"This scope permits recursive access to the complete `$HOME` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$HOME"},{"path":"$HOME/**"}]}},"scope-localdata":{"identifier":"scope-localdata","description":"This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOCALDATA"},{"path":"$LOCALDATA/*"}]}},"scope-localdata-index":{"identifier":"scope-localdata-index","description":"This scope permits to list all files and folders in the `$LOCALDATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOCALDATA"}]}},"scope-localdata-recursive":{"identifier":"scope-localdata-recursive","description":"This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOCALDATA"},{"path":"$LOCALDATA/**"}]}},"scope-log":{"identifier":"scope-log","description":"This scope permits access to all files and list content of top level directories in the `$LOG` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOG"},{"path":"$LOG/*"}]}},"scope-log-index":{"identifier":"scope-log-index","description":"This scope permits to list all files and folders in the `$LOG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOG"}]}},"scope-log-recursive":{"identifier":"scope-log-recursive","description":"This scope permits recursive access to the complete `$LOG` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOG"},{"path":"$LOG/**"}]}},"scope-picture":{"identifier":"scope-picture","description":"This scope permits access to all files and list content of top level directories in the `$PICTURE` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PICTURE"},{"path":"$PICTURE/*"}]}},"scope-picture-index":{"identifier":"scope-picture-index","description":"This scope permits to list all files and folders in the `$PICTURE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PICTURE"}]}},"scope-picture-recursive":{"identifier":"scope-picture-recursive","description":"This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PICTURE"},{"path":"$PICTURE/**"}]}},"scope-public":{"identifier":"scope-public","description":"This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PUBLIC"},{"path":"$PUBLIC/*"}]}},"scope-public-index":{"identifier":"scope-public-index","description":"This scope permits to list all files and folders in the `$PUBLIC`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PUBLIC"}]}},"scope-public-recursive":{"identifier":"scope-public-recursive","description":"This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PUBLIC"},{"path":"$PUBLIC/**"}]}},"scope-resource":{"identifier":"scope-resource","description":"This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RESOURCE"},{"path":"$RESOURCE/*"}]}},"scope-resource-index":{"identifier":"scope-resource-index","description":"This scope permits to list all files and folders in the `$RESOURCE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RESOURCE"}]}},"scope-resource-recursive":{"identifier":"scope-resource-recursive","description":"This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RESOURCE"},{"path":"$RESOURCE/**"}]}},"scope-runtime":{"identifier":"scope-runtime","description":"This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RUNTIME"},{"path":"$RUNTIME/*"}]}},"scope-runtime-index":{"identifier":"scope-runtime-index","description":"This scope permits to list all files and folders in the `$RUNTIME`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RUNTIME"}]}},"scope-runtime-recursive":{"identifier":"scope-runtime-recursive","description":"This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RUNTIME"},{"path":"$RUNTIME/**"}]}},"scope-temp":{"identifier":"scope-temp","description":"This scope permits access to all files and list content of top level directories in the `$TEMP` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMP"},{"path":"$TEMP/*"}]}},"scope-temp-index":{"identifier":"scope-temp-index","description":"This scope permits to list all files and folders in the `$TEMP`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMP"}]}},"scope-temp-recursive":{"identifier":"scope-temp-recursive","description":"This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMP"},{"path":"$TEMP/**"}]}},"scope-template":{"identifier":"scope-template","description":"This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMPLATE"},{"path":"$TEMPLATE/*"}]}},"scope-template-index":{"identifier":"scope-template-index","description":"This scope permits to list all files and folders in the `$TEMPLATE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMPLATE"}]}},"scope-template-recursive":{"identifier":"scope-template-recursive","description":"This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMPLATE"},{"path":"$TEMPLATE/**"}]}},"scope-video":{"identifier":"scope-video","description":"This scope permits access to all files and list content of top level directories in the `$VIDEO` folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$VIDEO"},{"path":"$VIDEO/*"}]}},"scope-video-index":{"identifier":"scope-video-index","description":"This scope permits to list all files and folders in the `$VIDEO`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$VIDEO"}]}},"scope-video-recursive":{"identifier":"scope-video-recursive","description":"This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$VIDEO"},{"path":"$VIDEO/**"}]}},"write-all":{"identifier":"write-all","description":"This enables all write related commands without any pre-configured accessible paths.","commands":{"allow":["mkdir","create","copy_file","remove","rename","truncate","ftruncate","write","write_file","write_text_file"],"deny":[]}},"write-files":{"identifier":"write-files","description":"This enables all file write related commands without any pre-configured accessible paths.","commands":{"allow":["create","copy_file","remove","rename","truncate","ftruncate","write","write_file","write_text_file"],"deny":[]}}},"permission_sets":{"allow-app-meta":{"identifier":"allow-app-meta","description":"This allows non-recursive read access to metadata of the application folders, including file listing and statistics.","permissions":["read-meta","scope-app-index"]},"allow-app-meta-recursive":{"identifier":"allow-app-meta-recursive","description":"This allows full recursive read access to metadata of the application folders, including file listing and statistics.","permissions":["read-meta","scope-app-recursive"]},"allow-app-read":{"identifier":"allow-app-read","description":"This allows non-recursive read access to the application folders.","permissions":["read-all","scope-app"]},"allow-app-read-recursive":{"identifier":"allow-app-read-recursive","description":"This allows full recursive read access to the complete application folders, files and subdirectories.","permissions":["read-all","scope-app-recursive"]},"allow-app-write":{"identifier":"allow-app-write","description":"This allows non-recursive write access to the application folders.","permissions":["write-all","scope-app"]},"allow-app-write-recursive":{"identifier":"allow-app-write-recursive","description":"This allows full recursive write access to the complete application folders, files and subdirectories.","permissions":["write-all","scope-app-recursive"]},"allow-appcache-meta":{"identifier":"allow-appcache-meta","description":"This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.","permissions":["read-meta","scope-appcache-index"]},"allow-appcache-meta-recursive":{"identifier":"allow-appcache-meta-recursive","description":"This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.","permissions":["read-meta","scope-appcache-recursive"]},"allow-appcache-read":{"identifier":"allow-appcache-read","description":"This allows non-recursive read access to the `$APPCACHE` folder.","permissions":["read-all","scope-appcache"]},"allow-appcache-read-recursive":{"identifier":"allow-appcache-read-recursive","description":"This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.","permissions":["read-all","scope-appcache-recursive"]},"allow-appcache-write":{"identifier":"allow-appcache-write","description":"This allows non-recursive write access to the `$APPCACHE` folder.","permissions":["write-all","scope-appcache"]},"allow-appcache-write-recursive":{"identifier":"allow-appcache-write-recursive","description":"This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.","permissions":["write-all","scope-appcache-recursive"]},"allow-appconfig-meta":{"identifier":"allow-appconfig-meta","description":"This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.","permissions":["read-meta","scope-appconfig-index"]},"allow-appconfig-meta-recursive":{"identifier":"allow-appconfig-meta-recursive","description":"This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.","permissions":["read-meta","scope-appconfig-recursive"]},"allow-appconfig-read":{"identifier":"allow-appconfig-read","description":"This allows non-recursive read access to the `$APPCONFIG` folder.","permissions":["read-all","scope-appconfig"]},"allow-appconfig-read-recursive":{"identifier":"allow-appconfig-read-recursive","description":"This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.","permissions":["read-all","scope-appconfig-recursive"]},"allow-appconfig-write":{"identifier":"allow-appconfig-write","description":"This allows non-recursive write access to the `$APPCONFIG` folder.","permissions":["write-all","scope-appconfig"]},"allow-appconfig-write-recursive":{"identifier":"allow-appconfig-write-recursive","description":"This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.","permissions":["write-all","scope-appconfig-recursive"]},"allow-appdata-meta":{"identifier":"allow-appdata-meta","description":"This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.","permissions":["read-meta","scope-appdata-index"]},"allow-appdata-meta-recursive":{"identifier":"allow-appdata-meta-recursive","description":"This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.","permissions":["read-meta","scope-appdata-recursive"]},"allow-appdata-read":{"identifier":"allow-appdata-read","description":"This allows non-recursive read access to the `$APPDATA` folder.","permissions":["read-all","scope-appdata"]},"allow-appdata-read-recursive":{"identifier":"allow-appdata-read-recursive","description":"This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.","permissions":["read-all","scope-appdata-recursive"]},"allow-appdata-write":{"identifier":"allow-appdata-write","description":"This allows non-recursive write access to the `$APPDATA` folder.","permissions":["write-all","scope-appdata"]},"allow-appdata-write-recursive":{"identifier":"allow-appdata-write-recursive","description":"This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.","permissions":["write-all","scope-appdata-recursive"]},"allow-applocaldata-meta":{"identifier":"allow-applocaldata-meta","description":"This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.","permissions":["read-meta","scope-applocaldata-index"]},"allow-applocaldata-meta-recursive":{"identifier":"allow-applocaldata-meta-recursive","description":"This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.","permissions":["read-meta","scope-applocaldata-recursive"]},"allow-applocaldata-read":{"identifier":"allow-applocaldata-read","description":"This allows non-recursive read access to the `$APPLOCALDATA` folder.","permissions":["read-all","scope-applocaldata"]},"allow-applocaldata-read-recursive":{"identifier":"allow-applocaldata-read-recursive","description":"This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.","permissions":["read-all","scope-applocaldata-recursive"]},"allow-applocaldata-write":{"identifier":"allow-applocaldata-write","description":"This allows non-recursive write access to the `$APPLOCALDATA` folder.","permissions":["write-all","scope-applocaldata"]},"allow-applocaldata-write-recursive":{"identifier":"allow-applocaldata-write-recursive","description":"This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.","permissions":["write-all","scope-applocaldata-recursive"]},"allow-applog-meta":{"identifier":"allow-applog-meta","description":"This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.","permissions":["read-meta","scope-applog-index"]},"allow-applog-meta-recursive":{"identifier":"allow-applog-meta-recursive","description":"This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.","permissions":["read-meta","scope-applog-recursive"]},"allow-applog-read":{"identifier":"allow-applog-read","description":"This allows non-recursive read access to the `$APPLOG` folder.","permissions":["read-all","scope-applog"]},"allow-applog-read-recursive":{"identifier":"allow-applog-read-recursive","description":"This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.","permissions":["read-all","scope-applog-recursive"]},"allow-applog-write":{"identifier":"allow-applog-write","description":"This allows non-recursive write access to the `$APPLOG` folder.","permissions":["write-all","scope-applog"]},"allow-applog-write-recursive":{"identifier":"allow-applog-write-recursive","description":"This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.","permissions":["write-all","scope-applog-recursive"]},"allow-audio-meta":{"identifier":"allow-audio-meta","description":"This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.","permissions":["read-meta","scope-audio-index"]},"allow-audio-meta-recursive":{"identifier":"allow-audio-meta-recursive","description":"This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.","permissions":["read-meta","scope-audio-recursive"]},"allow-audio-read":{"identifier":"allow-audio-read","description":"This allows non-recursive read access to the `$AUDIO` folder.","permissions":["read-all","scope-audio"]},"allow-audio-read-recursive":{"identifier":"allow-audio-read-recursive","description":"This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.","permissions":["read-all","scope-audio-recursive"]},"allow-audio-write":{"identifier":"allow-audio-write","description":"This allows non-recursive write access to the `$AUDIO` folder.","permissions":["write-all","scope-audio"]},"allow-audio-write-recursive":{"identifier":"allow-audio-write-recursive","description":"This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.","permissions":["write-all","scope-audio-recursive"]},"allow-cache-meta":{"identifier":"allow-cache-meta","description":"This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.","permissions":["read-meta","scope-cache-index"]},"allow-cache-meta-recursive":{"identifier":"allow-cache-meta-recursive","description":"This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.","permissions":["read-meta","scope-cache-recursive"]},"allow-cache-read":{"identifier":"allow-cache-read","description":"This allows non-recursive read access to the `$CACHE` folder.","permissions":["read-all","scope-cache"]},"allow-cache-read-recursive":{"identifier":"allow-cache-read-recursive","description":"This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.","permissions":["read-all","scope-cache-recursive"]},"allow-cache-write":{"identifier":"allow-cache-write","description":"This allows non-recursive write access to the `$CACHE` folder.","permissions":["write-all","scope-cache"]},"allow-cache-write-recursive":{"identifier":"allow-cache-write-recursive","description":"This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.","permissions":["write-all","scope-cache-recursive"]},"allow-config-meta":{"identifier":"allow-config-meta","description":"This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.","permissions":["read-meta","scope-config-index"]},"allow-config-meta-recursive":{"identifier":"allow-config-meta-recursive","description":"This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.","permissions":["read-meta","scope-config-recursive"]},"allow-config-read":{"identifier":"allow-config-read","description":"This allows non-recursive read access to the `$CONFIG` folder.","permissions":["read-all","scope-config"]},"allow-config-read-recursive":{"identifier":"allow-config-read-recursive","description":"This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.","permissions":["read-all","scope-config-recursive"]},"allow-config-write":{"identifier":"allow-config-write","description":"This allows non-recursive write access to the `$CONFIG` folder.","permissions":["write-all","scope-config"]},"allow-config-write-recursive":{"identifier":"allow-config-write-recursive","description":"This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.","permissions":["write-all","scope-config-recursive"]},"allow-data-meta":{"identifier":"allow-data-meta","description":"This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.","permissions":["read-meta","scope-data-index"]},"allow-data-meta-recursive":{"identifier":"allow-data-meta-recursive","description":"This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.","permissions":["read-meta","scope-data-recursive"]},"allow-data-read":{"identifier":"allow-data-read","description":"This allows non-recursive read access to the `$DATA` folder.","permissions":["read-all","scope-data"]},"allow-data-read-recursive":{"identifier":"allow-data-read-recursive","description":"This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.","permissions":["read-all","scope-data-recursive"]},"allow-data-write":{"identifier":"allow-data-write","description":"This allows non-recursive write access to the `$DATA` folder.","permissions":["write-all","scope-data"]},"allow-data-write-recursive":{"identifier":"allow-data-write-recursive","description":"This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.","permissions":["write-all","scope-data-recursive"]},"allow-desktop-meta":{"identifier":"allow-desktop-meta","description":"This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.","permissions":["read-meta","scope-desktop-index"]},"allow-desktop-meta-recursive":{"identifier":"allow-desktop-meta-recursive","description":"This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.","permissions":["read-meta","scope-desktop-recursive"]},"allow-desktop-read":{"identifier":"allow-desktop-read","description":"This allows non-recursive read access to the `$DESKTOP` folder.","permissions":["read-all","scope-desktop"]},"allow-desktop-read-recursive":{"identifier":"allow-desktop-read-recursive","description":"This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.","permissions":["read-all","scope-desktop-recursive"]},"allow-desktop-write":{"identifier":"allow-desktop-write","description":"This allows non-recursive write access to the `$DESKTOP` folder.","permissions":["write-all","scope-desktop"]},"allow-desktop-write-recursive":{"identifier":"allow-desktop-write-recursive","description":"This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.","permissions":["write-all","scope-desktop-recursive"]},"allow-document-meta":{"identifier":"allow-document-meta","description":"This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.","permissions":["read-meta","scope-document-index"]},"allow-document-meta-recursive":{"identifier":"allow-document-meta-recursive","description":"This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.","permissions":["read-meta","scope-document-recursive"]},"allow-document-read":{"identifier":"allow-document-read","description":"This allows non-recursive read access to the `$DOCUMENT` folder.","permissions":["read-all","scope-document"]},"allow-document-read-recursive":{"identifier":"allow-document-read-recursive","description":"This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.","permissions":["read-all","scope-document-recursive"]},"allow-document-write":{"identifier":"allow-document-write","description":"This allows non-recursive write access to the `$DOCUMENT` folder.","permissions":["write-all","scope-document"]},"allow-document-write-recursive":{"identifier":"allow-document-write-recursive","description":"This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.","permissions":["write-all","scope-document-recursive"]},"allow-download-meta":{"identifier":"allow-download-meta","description":"This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.","permissions":["read-meta","scope-download-index"]},"allow-download-meta-recursive":{"identifier":"allow-download-meta-recursive","description":"This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.","permissions":["read-meta","scope-download-recursive"]},"allow-download-read":{"identifier":"allow-download-read","description":"This allows non-recursive read access to the `$DOWNLOAD` folder.","permissions":["read-all","scope-download"]},"allow-download-read-recursive":{"identifier":"allow-download-read-recursive","description":"This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.","permissions":["read-all","scope-download-recursive"]},"allow-download-write":{"identifier":"allow-download-write","description":"This allows non-recursive write access to the `$DOWNLOAD` folder.","permissions":["write-all","scope-download"]},"allow-download-write-recursive":{"identifier":"allow-download-write-recursive","description":"This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.","permissions":["write-all","scope-download-recursive"]},"allow-exe-meta":{"identifier":"allow-exe-meta","description":"This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.","permissions":["read-meta","scope-exe-index"]},"allow-exe-meta-recursive":{"identifier":"allow-exe-meta-recursive","description":"This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.","permissions":["read-meta","scope-exe-recursive"]},"allow-exe-read":{"identifier":"allow-exe-read","description":"This allows non-recursive read access to the `$EXE` folder.","permissions":["read-all","scope-exe"]},"allow-exe-read-recursive":{"identifier":"allow-exe-read-recursive","description":"This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.","permissions":["read-all","scope-exe-recursive"]},"allow-exe-write":{"identifier":"allow-exe-write","description":"This allows non-recursive write access to the `$EXE` folder.","permissions":["write-all","scope-exe"]},"allow-exe-write-recursive":{"identifier":"allow-exe-write-recursive","description":"This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.","permissions":["write-all","scope-exe-recursive"]},"allow-font-meta":{"identifier":"allow-font-meta","description":"This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.","permissions":["read-meta","scope-font-index"]},"allow-font-meta-recursive":{"identifier":"allow-font-meta-recursive","description":"This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.","permissions":["read-meta","scope-font-recursive"]},"allow-font-read":{"identifier":"allow-font-read","description":"This allows non-recursive read access to the `$FONT` folder.","permissions":["read-all","scope-font"]},"allow-font-read-recursive":{"identifier":"allow-font-read-recursive","description":"This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.","permissions":["read-all","scope-font-recursive"]},"allow-font-write":{"identifier":"allow-font-write","description":"This allows non-recursive write access to the `$FONT` folder.","permissions":["write-all","scope-font"]},"allow-font-write-recursive":{"identifier":"allow-font-write-recursive","description":"This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.","permissions":["write-all","scope-font-recursive"]},"allow-home-meta":{"identifier":"allow-home-meta","description":"This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.","permissions":["read-meta","scope-home-index"]},"allow-home-meta-recursive":{"identifier":"allow-home-meta-recursive","description":"This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.","permissions":["read-meta","scope-home-recursive"]},"allow-home-read":{"identifier":"allow-home-read","description":"This allows non-recursive read access to the `$HOME` folder.","permissions":["read-all","scope-home"]},"allow-home-read-recursive":{"identifier":"allow-home-read-recursive","description":"This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.","permissions":["read-all","scope-home-recursive"]},"allow-home-write":{"identifier":"allow-home-write","description":"This allows non-recursive write access to the `$HOME` folder.","permissions":["write-all","scope-home"]},"allow-home-write-recursive":{"identifier":"allow-home-write-recursive","description":"This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.","permissions":["write-all","scope-home-recursive"]},"allow-localdata-meta":{"identifier":"allow-localdata-meta","description":"This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.","permissions":["read-meta","scope-localdata-index"]},"allow-localdata-meta-recursive":{"identifier":"allow-localdata-meta-recursive","description":"This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.","permissions":["read-meta","scope-localdata-recursive"]},"allow-localdata-read":{"identifier":"allow-localdata-read","description":"This allows non-recursive read access to the `$LOCALDATA` folder.","permissions":["read-all","scope-localdata"]},"allow-localdata-read-recursive":{"identifier":"allow-localdata-read-recursive","description":"This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.","permissions":["read-all","scope-localdata-recursive"]},"allow-localdata-write":{"identifier":"allow-localdata-write","description":"This allows non-recursive write access to the `$LOCALDATA` folder.","permissions":["write-all","scope-localdata"]},"allow-localdata-write-recursive":{"identifier":"allow-localdata-write-recursive","description":"This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.","permissions":["write-all","scope-localdata-recursive"]},"allow-log-meta":{"identifier":"allow-log-meta","description":"This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.","permissions":["read-meta","scope-log-index"]},"allow-log-meta-recursive":{"identifier":"allow-log-meta-recursive","description":"This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.","permissions":["read-meta","scope-log-recursive"]},"allow-log-read":{"identifier":"allow-log-read","description":"This allows non-recursive read access to the `$LOG` folder.","permissions":["read-all","scope-log"]},"allow-log-read-recursive":{"identifier":"allow-log-read-recursive","description":"This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.","permissions":["read-all","scope-log-recursive"]},"allow-log-write":{"identifier":"allow-log-write","description":"This allows non-recursive write access to the `$LOG` folder.","permissions":["write-all","scope-log"]},"allow-log-write-recursive":{"identifier":"allow-log-write-recursive","description":"This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.","permissions":["write-all","scope-log-recursive"]},"allow-picture-meta":{"identifier":"allow-picture-meta","description":"This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.","permissions":["read-meta","scope-picture-index"]},"allow-picture-meta-recursive":{"identifier":"allow-picture-meta-recursive","description":"This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.","permissions":["read-meta","scope-picture-recursive"]},"allow-picture-read":{"identifier":"allow-picture-read","description":"This allows non-recursive read access to the `$PICTURE` folder.","permissions":["read-all","scope-picture"]},"allow-picture-read-recursive":{"identifier":"allow-picture-read-recursive","description":"This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.","permissions":["read-all","scope-picture-recursive"]},"allow-picture-write":{"identifier":"allow-picture-write","description":"This allows non-recursive write access to the `$PICTURE` folder.","permissions":["write-all","scope-picture"]},"allow-picture-write-recursive":{"identifier":"allow-picture-write-recursive","description":"This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.","permissions":["write-all","scope-picture-recursive"]},"allow-public-meta":{"identifier":"allow-public-meta","description":"This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.","permissions":["read-meta","scope-public-index"]},"allow-public-meta-recursive":{"identifier":"allow-public-meta-recursive","description":"This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.","permissions":["read-meta","scope-public-recursive"]},"allow-public-read":{"identifier":"allow-public-read","description":"This allows non-recursive read access to the `$PUBLIC` folder.","permissions":["read-all","scope-public"]},"allow-public-read-recursive":{"identifier":"allow-public-read-recursive","description":"This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.","permissions":["read-all","scope-public-recursive"]},"allow-public-write":{"identifier":"allow-public-write","description":"This allows non-recursive write access to the `$PUBLIC` folder.","permissions":["write-all","scope-public"]},"allow-public-write-recursive":{"identifier":"allow-public-write-recursive","description":"This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.","permissions":["write-all","scope-public-recursive"]},"allow-resource-meta":{"identifier":"allow-resource-meta","description":"This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.","permissions":["read-meta","scope-resource-index"]},"allow-resource-meta-recursive":{"identifier":"allow-resource-meta-recursive","description":"This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.","permissions":["read-meta","scope-resource-recursive"]},"allow-resource-read":{"identifier":"allow-resource-read","description":"This allows non-recursive read access to the `$RESOURCE` folder.","permissions":["read-all","scope-resource"]},"allow-resource-read-recursive":{"identifier":"allow-resource-read-recursive","description":"This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.","permissions":["read-all","scope-resource-recursive"]},"allow-resource-write":{"identifier":"allow-resource-write","description":"This allows non-recursive write access to the `$RESOURCE` folder.","permissions":["write-all","scope-resource"]},"allow-resource-write-recursive":{"identifier":"allow-resource-write-recursive","description":"This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.","permissions":["write-all","scope-resource-recursive"]},"allow-runtime-meta":{"identifier":"allow-runtime-meta","description":"This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.","permissions":["read-meta","scope-runtime-index"]},"allow-runtime-meta-recursive":{"identifier":"allow-runtime-meta-recursive","description":"This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.","permissions":["read-meta","scope-runtime-recursive"]},"allow-runtime-read":{"identifier":"allow-runtime-read","description":"This allows non-recursive read access to the `$RUNTIME` folder.","permissions":["read-all","scope-runtime"]},"allow-runtime-read-recursive":{"identifier":"allow-runtime-read-recursive","description":"This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.","permissions":["read-all","scope-runtime-recursive"]},"allow-runtime-write":{"identifier":"allow-runtime-write","description":"This allows non-recursive write access to the `$RUNTIME` folder.","permissions":["write-all","scope-runtime"]},"allow-runtime-write-recursive":{"identifier":"allow-runtime-write-recursive","description":"This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.","permissions":["write-all","scope-runtime-recursive"]},"allow-temp-meta":{"identifier":"allow-temp-meta","description":"This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.","permissions":["read-meta","scope-temp-index"]},"allow-temp-meta-recursive":{"identifier":"allow-temp-meta-recursive","description":"This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.","permissions":["read-meta","scope-temp-recursive"]},"allow-temp-read":{"identifier":"allow-temp-read","description":"This allows non-recursive read access to the `$TEMP` folder.","permissions":["read-all","scope-temp"]},"allow-temp-read-recursive":{"identifier":"allow-temp-read-recursive","description":"This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.","permissions":["read-all","scope-temp-recursive"]},"allow-temp-write":{"identifier":"allow-temp-write","description":"This allows non-recursive write access to the `$TEMP` folder.","permissions":["write-all","scope-temp"]},"allow-temp-write-recursive":{"identifier":"allow-temp-write-recursive","description":"This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.","permissions":["write-all","scope-temp-recursive"]},"allow-template-meta":{"identifier":"allow-template-meta","description":"This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.","permissions":["read-meta","scope-template-index"]},"allow-template-meta-recursive":{"identifier":"allow-template-meta-recursive","description":"This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.","permissions":["read-meta","scope-template-recursive"]},"allow-template-read":{"identifier":"allow-template-read","description":"This allows non-recursive read access to the `$TEMPLATE` folder.","permissions":["read-all","scope-template"]},"allow-template-read-recursive":{"identifier":"allow-template-read-recursive","description":"This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.","permissions":["read-all","scope-template-recursive"]},"allow-template-write":{"identifier":"allow-template-write","description":"This allows non-recursive write access to the `$TEMPLATE` folder.","permissions":["write-all","scope-template"]},"allow-template-write-recursive":{"identifier":"allow-template-write-recursive","description":"This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.","permissions":["write-all","scope-template-recursive"]},"allow-video-meta":{"identifier":"allow-video-meta","description":"This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.","permissions":["read-meta","scope-video-index"]},"allow-video-meta-recursive":{"identifier":"allow-video-meta-recursive","description":"This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.","permissions":["read-meta","scope-video-recursive"]},"allow-video-read":{"identifier":"allow-video-read","description":"This allows non-recursive read access to the `$VIDEO` folder.","permissions":["read-all","scope-video"]},"allow-video-read-recursive":{"identifier":"allow-video-read-recursive","description":"This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.","permissions":["read-all","scope-video-recursive"]},"allow-video-write":{"identifier":"allow-video-write","description":"This allows non-recursive write access to the `$VIDEO` folder.","permissions":["write-all","scope-video"]},"allow-video-write-recursive":{"identifier":"allow-video-write-recursive","description":"This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.","permissions":["write-all","scope-video-recursive"]},"deny-default":{"identifier":"deny-default","description":"This denies access to dangerous Tauri relevant files and folders by default.","permissions":["deny-webview-data-linux","deny-webview-data-windows"]}},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","title":"FsScopeEntry","description":"FS scope entry.","anyOf":[{"description":"FS scope path.","type":"string"},{"type":"object","required":["path"],"properties":{"path":{"description":"FS scope path.","type":"string"}}}]}},"shell":{"default_permission":{"identifier":"default","description":"This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n","permissions":["allow-open"]},"permissions":{"allow-execute":{"identifier":"allow-execute","description":"Enables the execute command without any pre-configured scope.","commands":{"allow":["execute"],"deny":[]}},"allow-kill":{"identifier":"allow-kill","description":"Enables the kill command without any pre-configured scope.","commands":{"allow":["kill"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-spawn":{"identifier":"allow-spawn","description":"Enables the spawn command without any pre-configured scope.","commands":{"allow":["spawn"],"deny":[]}},"allow-stdin-write":{"identifier":"allow-stdin-write","description":"Enables the stdin_write command without any pre-configured scope.","commands":{"allow":["stdin_write"],"deny":[]}},"deny-execute":{"identifier":"deny-execute","description":"Denies the execute command without any pre-configured scope.","commands":{"allow":[],"deny":["execute"]}},"deny-kill":{"identifier":"deny-kill","description":"Denies the kill command without any pre-configured scope.","commands":{"allow":[],"deny":["kill"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-spawn":{"identifier":"deny-spawn","description":"Denies the spawn command without any pre-configured scope.","commands":{"allow":[],"deny":["spawn"]}},"deny-stdin-write":{"identifier":"deny-stdin-write","description":"Denies the stdin_write command without any pre-configured scope.","commands":{"allow":[],"deny":["stdin_write"]}}},"permission_sets":{},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","title":"ShellScopeEntry","description":"Shell scope entry.","anyOf":[{"type":"object","required":["cmd","name"],"properties":{"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"},"cmd":{"description":"The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.","type":"string"},"args":{"description":"The allowed arguments for the command execution.","allOf":[{"$ref":"#/definitions/ShellScopeEntryAllowedArgs"}]}},"additionalProperties":false},{"type":"object","required":["name","sidecar"],"properties":{"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"},"args":{"description":"The allowed arguments for the command execution.","allOf":[{"$ref":"#/definitions/ShellScopeEntryAllowedArgs"}]},"sidecar":{"description":"If this command is a sidecar command.","type":"boolean"}},"additionalProperties":false}],"definitions":{"ShellScopeEntryAllowedArgs":{"description":"A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration.","anyOf":[{"description":"Use a simple boolean to allow all or disable all arguments to this command configuration.","type":"boolean"},{"description":"A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.","type":"array","items":{"$ref":"#/definitions/ShellScopeEntryAllowedArg"}}]},"ShellScopeEntryAllowedArg":{"description":"A command argument allowed to be executed by the webview API.","anyOf":[{"description":"A non-configurable argument that is passed to the command in the order it was specified.","type":"string"},{"description":"A variable that is set while calling the command from the webview API.","type":"object","required":["validator"],"properties":{"validator":{"description":"[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: ","type":"string"},"raw":{"description":"Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.","default":false,"type":"boolean"}},"additionalProperties":false}]}}}}} \ No newline at end of file diff --git a/archived/lunar/src-tauri/gen/schemas/capabilities.json b/archived/lunar/src-tauri/gen/schemas/capabilities.json new file mode 100644 index 00000000..4a508eef --- /dev/null +++ b/archived/lunar/src-tauri/gen/schemas/capabilities.json @@ -0,0 +1 @@ +{"migrated":{"identifier":"migrated","description":"permissions that were migrated from v1","local":true,"windows":["main"],"permissions":["core:default",{"identifier":"fs:scope","allow":["$RESOURCE/*"]},{"identifier":"shell:allow-execute","allow":[{"args":false,"cmd":"","name":"binaries/mega","sidecar":true},{"args":false,"cmd":"","name":"binaries/libra","sidecar":true}]},"fs:default","shell:default"]}} \ No newline at end of file diff --git a/archived/lunar/src-tauri/gen/schemas/desktop-schema.json b/archived/lunar/src-tauri/gen/schemas/desktop-schema.json new file mode 100644 index 00000000..6d0ac276 --- /dev/null +++ b/archived/lunar/src-tauri/gen/schemas/desktop-schema.json @@ -0,0 +1,4986 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CapabilityFile", + "description": "Capability formats accepted in a capability file.", + "anyOf": [ + { + "description": "A single capability.", + "allOf": [ + { + "$ref": "#/definitions/Capability" + } + ] + }, + { + "description": "A list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + }, + { + "description": "A list of capabilities.", + "type": "object", + "required": [ + "capabilities" + ], + "properties": { + "capabilities": { + "description": "The list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + } + } + } + ], + "definitions": { + "Capability": { + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": [ + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "anyOf": [ + { + "$ref": "#/definitions/CapabilityRemote" + }, + { + "type": "null" + } + ] + }, + "local": { + "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", + "default": true, + "type": "boolean" + }, + "windows": { + "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ] ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "CapabilityRemote": { + "description": "Configuration for remote URLs that are associated with the capability.", + "type": "object", + "required": [ + "urls" + ], + "properties": { + "urls": { + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionEntry": { + "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", + "anyOf": [ + { + "description": "Reference a permission or permission set by identifier.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + { + "description": "Reference a permission or permission set by identifier and extends its scope.", + "type": "object", + "allOf": [ + { + "if": { + "properties": { + "identifier": { + "anyOf": [ + { + "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", + "type": "string", + "const": "fs:default" + }, + { + "description": "This allows non-recursive read access to metadata of the application folders, including file listing and statistics.", + "type": "string", + "const": "fs:allow-app-meta" + }, + { + "description": "This allows full recursive read access to metadata of the application folders, including file listing and statistics.", + "type": "string", + "const": "fs:allow-app-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the application folders.", + "type": "string", + "const": "fs:allow-app-read" + }, + { + "description": "This allows full recursive read access to the complete application folders, files and subdirectories.", + "type": "string", + "const": "fs:allow-app-read-recursive" + }, + { + "description": "This allows non-recursive write access to the application folders.", + "type": "string", + "const": "fs:allow-app-write" + }, + { + "description": "This allows full recursive write access to the complete application folders, files and subdirectories.", + "type": "string", + "const": "fs:allow-app-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appcache-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appcache-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPCACHE` folder.", + "type": "string", + "const": "fs:allow-appcache-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appcache-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPCACHE` folder.", + "type": "string", + "const": "fs:allow-appcache-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appcache-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appconfig-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appconfig-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:allow-appconfig-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appconfig-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:allow-appconfig-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appconfig-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appdata-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appdata-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPDATA` folder.", + "type": "string", + "const": "fs:allow-appdata-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appdata-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPDATA` folder.", + "type": "string", + "const": "fs:allow-appdata-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appdata-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applocaldata-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applocaldata-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:allow-applocaldata-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applocaldata-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:allow-applocaldata-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applocaldata-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applog-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applog-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPLOG` folder.", + "type": "string", + "const": "fs:allow-applog-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applog-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPLOG` folder.", + "type": "string", + "const": "fs:allow-applog-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applog-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-audio-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-audio-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$AUDIO` folder.", + "type": "string", + "const": "fs:allow-audio-read" + }, + { + "description": "This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-audio-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$AUDIO` folder.", + "type": "string", + "const": "fs:allow-audio-write" + }, + { + "description": "This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-audio-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-cache-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-cache-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$CACHE` folder.", + "type": "string", + "const": "fs:allow-cache-read" + }, + { + "description": "This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-cache-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$CACHE` folder.", + "type": "string", + "const": "fs:allow-cache-write" + }, + { + "description": "This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-cache-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-config-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-config-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$CONFIG` folder.", + "type": "string", + "const": "fs:allow-config-read" + }, + { + "description": "This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-config-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$CONFIG` folder.", + "type": "string", + "const": "fs:allow-config-write" + }, + { + "description": "This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-config-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-data-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-data-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DATA` folder.", + "type": "string", + "const": "fs:allow-data-read" + }, + { + "description": "This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-data-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DATA` folder.", + "type": "string", + "const": "fs:allow-data-write" + }, + { + "description": "This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-data-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-desktop-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-desktop-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DESKTOP` folder.", + "type": "string", + "const": "fs:allow-desktop-read" + }, + { + "description": "This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-desktop-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DESKTOP` folder.", + "type": "string", + "const": "fs:allow-desktop-write" + }, + { + "description": "This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-desktop-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-document-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-document-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:allow-document-read" + }, + { + "description": "This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-document-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:allow-document-write" + }, + { + "description": "This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-document-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-download-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-download-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:allow-download-read" + }, + { + "description": "This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-download-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:allow-download-write" + }, + { + "description": "This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-download-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-exe-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-exe-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$EXE` folder.", + "type": "string", + "const": "fs:allow-exe-read" + }, + { + "description": "This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-exe-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$EXE` folder.", + "type": "string", + "const": "fs:allow-exe-write" + }, + { + "description": "This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-exe-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-font-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-font-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$FONT` folder.", + "type": "string", + "const": "fs:allow-font-read" + }, + { + "description": "This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-font-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$FONT` folder.", + "type": "string", + "const": "fs:allow-font-write" + }, + { + "description": "This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-font-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-home-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-home-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$HOME` folder.", + "type": "string", + "const": "fs:allow-home-read" + }, + { + "description": "This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-home-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$HOME` folder.", + "type": "string", + "const": "fs:allow-home-write" + }, + { + "description": "This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-home-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-localdata-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-localdata-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:allow-localdata-read" + }, + { + "description": "This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-localdata-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:allow-localdata-write" + }, + { + "description": "This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-localdata-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-log-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-log-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$LOG` folder.", + "type": "string", + "const": "fs:allow-log-read" + }, + { + "description": "This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-log-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$LOG` folder.", + "type": "string", + "const": "fs:allow-log-write" + }, + { + "description": "This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-log-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-picture-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-picture-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$PICTURE` folder.", + "type": "string", + "const": "fs:allow-picture-read" + }, + { + "description": "This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-picture-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$PICTURE` folder.", + "type": "string", + "const": "fs:allow-picture-write" + }, + { + "description": "This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-picture-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-public-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-public-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$PUBLIC` folder.", + "type": "string", + "const": "fs:allow-public-read" + }, + { + "description": "This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-public-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$PUBLIC` folder.", + "type": "string", + "const": "fs:allow-public-write" + }, + { + "description": "This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-public-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-resource-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-resource-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$RESOURCE` folder.", + "type": "string", + "const": "fs:allow-resource-read" + }, + { + "description": "This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-resource-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$RESOURCE` folder.", + "type": "string", + "const": "fs:allow-resource-write" + }, + { + "description": "This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-resource-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-runtime-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-runtime-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$RUNTIME` folder.", + "type": "string", + "const": "fs:allow-runtime-read" + }, + { + "description": "This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-runtime-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$RUNTIME` folder.", + "type": "string", + "const": "fs:allow-runtime-write" + }, + { + "description": "This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-runtime-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-temp-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-temp-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$TEMP` folder.", + "type": "string", + "const": "fs:allow-temp-read" + }, + { + "description": "This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-temp-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$TEMP` folder.", + "type": "string", + "const": "fs:allow-temp-write" + }, + { + "description": "This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-temp-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-template-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-template-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:allow-template-read" + }, + { + "description": "This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-template-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:allow-template-write" + }, + { + "description": "This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-template-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-video-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-video-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$VIDEO` folder.", + "type": "string", + "const": "fs:allow-video-read" + }, + { + "description": "This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-video-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$VIDEO` folder.", + "type": "string", + "const": "fs:allow-video-write" + }, + { + "description": "This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-video-write-recursive" + }, + { + "description": "This denies access to dangerous Tauri relevant files and folders by default.", + "type": "string", + "const": "fs:deny-default" + }, + { + "description": "Enables the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-copy-file" + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-create" + }, + { + "description": "Enables the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-exists" + }, + { + "description": "Enables the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-fstat" + }, + { + "description": "Enables the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-ftruncate" + }, + { + "description": "Enables the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-lstat" + }, + { + "description": "Enables the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-mkdir" + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-open" + }, + { + "description": "Enables the read command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read" + }, + { + "description": "Enables the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-dir" + }, + { + "description": "Enables the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-file" + }, + { + "description": "Enables the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file" + }, + { + "description": "Enables the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines" + }, + { + "description": "Enables the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines-next" + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-remove" + }, + { + "description": "Enables the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-rename" + }, + { + "description": "Enables the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-seek" + }, + { + "description": "Enables the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-stat" + }, + { + "description": "Enables the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-truncate" + }, + { + "description": "Enables the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-unwatch" + }, + { + "description": "Enables the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-watch" + }, + { + "description": "Enables the write command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write" + }, + { + "description": "Enables the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-file" + }, + { + "description": "Enables the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-text-file" + }, + { + "description": "This permissions allows to create the application specific directories.\n", + "type": "string", + "const": "fs:create-app-specific-dirs" + }, + { + "description": "Denies the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-copy-file" + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-create" + }, + { + "description": "Denies the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-exists" + }, + { + "description": "Denies the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-fstat" + }, + { + "description": "Denies the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-ftruncate" + }, + { + "description": "Denies the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-lstat" + }, + { + "description": "Denies the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-mkdir" + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-open" + }, + { + "description": "Denies the read command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read" + }, + { + "description": "Denies the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-dir" + }, + { + "description": "Denies the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-file" + }, + { + "description": "Denies the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file" + }, + { + "description": "Denies the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines" + }, + { + "description": "Denies the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines-next" + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-remove" + }, + { + "description": "Denies the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-rename" + }, + { + "description": "Denies the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-seek" + }, + { + "description": "Denies the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-stat" + }, + { + "description": "Denies the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-truncate" + }, + { + "description": "Denies the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-unwatch" + }, + { + "description": "Denies the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-watch" + }, + { + "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": "fs:deny-webview-data-linux" + }, + { + "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": "fs:deny-webview-data-windows" + }, + { + "description": "Denies the write command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write" + }, + { + "description": "Denies the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-file" + }, + { + "description": "Denies the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-text-file" + }, + { + "description": "This enables all read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-all" + }, + { + "description": "This permission allows recursive read functionality on the application\nspecific base directories. \n", + "type": "string", + "const": "fs:read-app-specific-dirs-recursive" + }, + { + "description": "This enables directory read and file metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-dirs" + }, + { + "description": "This enables file read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-files" + }, + { + "description": "This enables all index or metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-meta" + }, + { + "description": "An empty permission you can use to modify the global scope.", + "type": "string", + "const": "fs:scope" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the application folders.", + "type": "string", + "const": "fs:scope-app" + }, + { + "description": "This scope permits to list all files and folders in the application directories.", + "type": "string", + "const": "fs:scope-app-index" + }, + { + "description": "This scope permits recursive access to the complete application folders, including sub directories and files.", + "type": "string", + "const": "fs:scope-app-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder.", + "type": "string", + "const": "fs:scope-appcache" + }, + { + "description": "This scope permits to list all files and folders in the `$APPCACHE`folder.", + "type": "string", + "const": "fs:scope-appcache-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appcache-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:scope-appconfig" + }, + { + "description": "This scope permits to list all files and folders in the `$APPCONFIG`folder.", + "type": "string", + "const": "fs:scope-appconfig-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appconfig-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPDATA` folder.", + "type": "string", + "const": "fs:scope-appdata" + }, + { + "description": "This scope permits to list all files and folders in the `$APPDATA`folder.", + "type": "string", + "const": "fs:scope-appdata-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appdata-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:scope-applocaldata" + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOCALDATA`folder.", + "type": "string", + "const": "fs:scope-applocaldata-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applocaldata-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOG` folder.", + "type": "string", + "const": "fs:scope-applog" + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOG`folder.", + "type": "string", + "const": "fs:scope-applog-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applog-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$AUDIO` folder.", + "type": "string", + "const": "fs:scope-audio" + }, + { + "description": "This scope permits to list all files and folders in the `$AUDIO`folder.", + "type": "string", + "const": "fs:scope-audio-index" + }, + { + "description": "This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-audio-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CACHE` folder.", + "type": "string", + "const": "fs:scope-cache" + }, + { + "description": "This scope permits to list all files and folders in the `$CACHE`folder.", + "type": "string", + "const": "fs:scope-cache-index" + }, + { + "description": "This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-cache-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CONFIG` folder.", + "type": "string", + "const": "fs:scope-config" + }, + { + "description": "This scope permits to list all files and folders in the `$CONFIG`folder.", + "type": "string", + "const": "fs:scope-config-index" + }, + { + "description": "This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-config-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DATA` folder.", + "type": "string", + "const": "fs:scope-data" + }, + { + "description": "This scope permits to list all files and folders in the `$DATA`folder.", + "type": "string", + "const": "fs:scope-data-index" + }, + { + "description": "This scope permits recursive access to the complete `$DATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-data-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder.", + "type": "string", + "const": "fs:scope-desktop" + }, + { + "description": "This scope permits to list all files and folders in the `$DESKTOP`folder.", + "type": "string", + "const": "fs:scope-desktop-index" + }, + { + "description": "This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-desktop-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:scope-document" + }, + { + "description": "This scope permits to list all files and folders in the `$DOCUMENT`folder.", + "type": "string", + "const": "fs:scope-document-index" + }, + { + "description": "This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-document-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:scope-download" + }, + { + "description": "This scope permits to list all files and folders in the `$DOWNLOAD`folder.", + "type": "string", + "const": "fs:scope-download-index" + }, + { + "description": "This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-download-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$EXE` folder.", + "type": "string", + "const": "fs:scope-exe" + }, + { + "description": "This scope permits to list all files and folders in the `$EXE`folder.", + "type": "string", + "const": "fs:scope-exe-index" + }, + { + "description": "This scope permits recursive access to the complete `$EXE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-exe-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$FONT` folder.", + "type": "string", + "const": "fs:scope-font" + }, + { + "description": "This scope permits to list all files and folders in the `$FONT`folder.", + "type": "string", + "const": "fs:scope-font-index" + }, + { + "description": "This scope permits recursive access to the complete `$FONT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-font-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$HOME` folder.", + "type": "string", + "const": "fs:scope-home" + }, + { + "description": "This scope permits to list all files and folders in the `$HOME`folder.", + "type": "string", + "const": "fs:scope-home-index" + }, + { + "description": "This scope permits recursive access to the complete `$HOME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-home-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:scope-localdata" + }, + { + "description": "This scope permits to list all files and folders in the `$LOCALDATA`folder.", + "type": "string", + "const": "fs:scope-localdata-index" + }, + { + "description": "This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-localdata-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOG` folder.", + "type": "string", + "const": "fs:scope-log" + }, + { + "description": "This scope permits to list all files and folders in the `$LOG`folder.", + "type": "string", + "const": "fs:scope-log-index" + }, + { + "description": "This scope permits recursive access to the complete `$LOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-log-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PICTURE` folder.", + "type": "string", + "const": "fs:scope-picture" + }, + { + "description": "This scope permits to list all files and folders in the `$PICTURE`folder.", + "type": "string", + "const": "fs:scope-picture-index" + }, + { + "description": "This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-picture-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder.", + "type": "string", + "const": "fs:scope-public" + }, + { + "description": "This scope permits to list all files and folders in the `$PUBLIC`folder.", + "type": "string", + "const": "fs:scope-public-index" + }, + { + "description": "This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-public-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder.", + "type": "string", + "const": "fs:scope-resource" + }, + { + "description": "This scope permits to list all files and folders in the `$RESOURCE`folder.", + "type": "string", + "const": "fs:scope-resource-index" + }, + { + "description": "This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-resource-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder.", + "type": "string", + "const": "fs:scope-runtime" + }, + { + "description": "This scope permits to list all files and folders in the `$RUNTIME`folder.", + "type": "string", + "const": "fs:scope-runtime-index" + }, + { + "description": "This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-runtime-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMP` folder.", + "type": "string", + "const": "fs:scope-temp" + }, + { + "description": "This scope permits to list all files and folders in the `$TEMP`folder.", + "type": "string", + "const": "fs:scope-temp-index" + }, + { + "description": "This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-temp-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:scope-template" + }, + { + "description": "This scope permits to list all files and folders in the `$TEMPLATE`folder.", + "type": "string", + "const": "fs:scope-template-index" + }, + { + "description": "This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-template-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$VIDEO` folder.", + "type": "string", + "const": "fs:scope-video" + }, + { + "description": "This scope permits to list all files and folders in the `$VIDEO`folder.", + "type": "string", + "const": "fs:scope-video-index" + }, + { + "description": "This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-video-recursive" + }, + { + "description": "This enables all write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-all" + }, + { + "description": "This enables all file write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-files" + } + ] + } + } + }, + "then": { + "properties": { + "allow": { + "items": { + "title": "FsScopeEntry", + "description": "FS scope entry.", + "anyOf": [ + { + "description": "FS scope path.", + "type": "string" + }, + { + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "description": "FS scope path.", + "type": "string" + } + } + } + ] + } + }, + "deny": { + "items": { + "title": "FsScopeEntry", + "description": "FS scope entry.", + "anyOf": [ + { + "description": "FS scope path.", + "type": "string" + }, + { + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "description": "FS scope path.", + "type": "string" + } + } + } + ] + } + } + } + }, + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + } + } + }, + { + "if": { + "properties": { + "identifier": { + "anyOf": [ + { + "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", + "type": "string", + "const": "shell:default" + }, + { + "description": "Enables the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-execute" + }, + { + "description": "Enables the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-kill" + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-open" + }, + { + "description": "Enables the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-spawn" + }, + { + "description": "Enables the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-stdin-write" + }, + { + "description": "Denies the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-execute" + }, + { + "description": "Denies the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-kill" + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-open" + }, + { + "description": "Denies the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-spawn" + }, + { + "description": "Denies the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-stdin-write" + } + ] + } + } + }, + "then": { + "properties": { + "allow": { + "items": { + "title": "ShellScopeEntry", + "description": "Shell scope entry.", + "anyOf": [ + { + "type": "object", + "required": [ + "cmd", + "name" + ], + "properties": { + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "cmd": { + "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + }, + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "name", + "sidecar" + ], + "properties": { + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "deny": { + "items": { + "title": "ShellScopeEntry", + "description": "Shell scope entry.", + "anyOf": [ + { + "type": "object", + "required": [ + "cmd", + "name" + ], + "properties": { + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "cmd": { + "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + }, + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "name", + "sidecar" + ], + "properties": { + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + } + } + }, + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + } + } + }, + { + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + "allow": { + "description": "Data that defines what is allowed by the scope.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + }, + "deny": { + "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + } + } + } + ], + "required": [ + "identifier" + ] + } + ] + }, + "Identifier": { + "description": "Permission identifier", + "oneOf": [ + { + "description": "Default core plugins set which includes:\n- 'core:path:default'\n- 'core:event:default'\n- 'core:window:default'\n- 'core:webview:default'\n- 'core:app:default'\n- 'core:image:default'\n- 'core:resources:default'\n- 'core:menu:default'\n- 'core:tray:default'\n", + "type": "string", + "const": "core:default" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:app:default" + }, + { + "description": "Enables the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-hide" + }, + { + "description": "Enables the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-show" + }, + { + "description": "Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-default-window-icon" + }, + { + "description": "Enables the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-name" + }, + { + "description": "Enables the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-app-theme" + }, + { + "description": "Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-tauri-version" + }, + { + "description": "Enables the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-version" + }, + { + "description": "Denies the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-hide" + }, + { + "description": "Denies the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-show" + }, + { + "description": "Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-default-window-icon" + }, + { + "description": "Denies the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-name" + }, + { + "description": "Denies the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-app-theme" + }, + { + "description": "Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-tauri-version" + }, + { + "description": "Denies the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-version" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:event:default" + }, + { + "description": "Enables the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit" + }, + { + "description": "Enables the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit-to" + }, + { + "description": "Enables the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-listen" + }, + { + "description": "Enables the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-unlisten" + }, + { + "description": "Denies the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit" + }, + { + "description": "Denies the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit-to" + }, + { + "description": "Denies the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-listen" + }, + { + "description": "Denies the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-unlisten" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:image:default" + }, + { + "description": "Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-bytes" + }, + { + "description": "Enables the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-path" + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-new" + }, + { + "description": "Enables the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-rgba" + }, + { + "description": "Enables the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-size" + }, + { + "description": "Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-bytes" + }, + { + "description": "Denies the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-path" + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-new" + }, + { + "description": "Denies the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-rgba" + }, + { + "description": "Denies the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-size" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:menu:default" + }, + { + "description": "Enables the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-append" + }, + { + "description": "Enables the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-create-default" + }, + { + "description": "Enables the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-get" + }, + { + "description": "Enables the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-insert" + }, + { + "description": "Enables the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-checked" + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-enabled" + }, + { + "description": "Enables the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-items" + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-new" + }, + { + "description": "Enables the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-popup" + }, + { + "description": "Enables the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-prepend" + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove" + }, + { + "description": "Enables the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove-at" + }, + { + "description": "Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-accelerator" + }, + { + "description": "Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-app-menu" + }, + { + "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-help-menu-for-nsapp" + }, + { + "description": "Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-window-menu" + }, + { + "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-windows-menu-for-nsapp" + }, + { + "description": "Enables the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-checked" + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-enabled" + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-icon" + }, + { + "description": "Enables the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-text" + }, + { + "description": "Enables the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-text" + }, + { + "description": "Denies the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-append" + }, + { + "description": "Denies the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-create-default" + }, + { + "description": "Denies the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-get" + }, + { + "description": "Denies the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-insert" + }, + { + "description": "Denies the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-checked" + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-enabled" + }, + { + "description": "Denies the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-items" + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-new" + }, + { + "description": "Denies the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-popup" + }, + { + "description": "Denies the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-prepend" + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove" + }, + { + "description": "Denies the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove-at" + }, + { + "description": "Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-accelerator" + }, + { + "description": "Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-app-menu" + }, + { + "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-help-menu-for-nsapp" + }, + { + "description": "Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-window-menu" + }, + { + "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-windows-menu-for-nsapp" + }, + { + "description": "Denies the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-checked" + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-enabled" + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-icon" + }, + { + "description": "Denies the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-text" + }, + { + "description": "Denies the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-text" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:path:default" + }, + { + "description": "Enables the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-basename" + }, + { + "description": "Enables the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-dirname" + }, + { + "description": "Enables the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-extname" + }, + { + "description": "Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-is-absolute" + }, + { + "description": "Enables the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-join" + }, + { + "description": "Enables the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-normalize" + }, + { + "description": "Enables the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve" + }, + { + "description": "Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve-directory" + }, + { + "description": "Denies the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-basename" + }, + { + "description": "Denies the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-dirname" + }, + { + "description": "Denies the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-extname" + }, + { + "description": "Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-is-absolute" + }, + { + "description": "Denies the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-join" + }, + { + "description": "Denies the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-normalize" + }, + { + "description": "Denies the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve" + }, + { + "description": "Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve-directory" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:resources:default" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:allow-close" + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:deny-close" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:tray:default" + }, + { + "description": "Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-get-by-id" + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-new" + }, + { + "description": "Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-remove-by-id" + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon" + }, + { + "description": "Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-as-template" + }, + { + "description": "Enables the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-menu" + }, + { + "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-show-menu-on-left-click" + }, + { + "description": "Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-temp-dir-path" + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-title" + }, + { + "description": "Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-tooltip" + }, + { + "description": "Enables the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-visible" + }, + { + "description": "Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-get-by-id" + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-new" + }, + { + "description": "Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-remove-by-id" + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon" + }, + { + "description": "Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-as-template" + }, + { + "description": "Denies the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-menu" + }, + { + "description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-show-menu-on-left-click" + }, + { + "description": "Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-temp-dir-path" + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-title" + }, + { + "description": "Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-tooltip" + }, + { + "description": "Denies the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-visible" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:webview:default" + }, + { + "description": "Enables the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-clear-all-browsing-data" + }, + { + "description": "Enables the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview" + }, + { + "description": "Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview-window" + }, + { + "description": "Enables the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-get-all-webviews" + }, + { + "description": "Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-internal-toggle-devtools" + }, + { + "description": "Enables the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-print" + }, + { + "description": "Enables the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-reparent" + }, + { + "description": "Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-focus" + }, + { + "description": "Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-position" + }, + { + "description": "Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-size" + }, + { + "description": "Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-zoom" + }, + { + "description": "Enables the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-close" + }, + { + "description": "Enables the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-hide" + }, + { + "description": "Enables the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-position" + }, + { + "description": "Enables the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-show" + }, + { + "description": "Enables the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-size" + }, + { + "description": "Denies the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-clear-all-browsing-data" + }, + { + "description": "Denies the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview" + }, + { + "description": "Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview-window" + }, + { + "description": "Denies the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-get-all-webviews" + }, + { + "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-internal-toggle-devtools" + }, + { + "description": "Denies the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-print" + }, + { + "description": "Denies the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-reparent" + }, + { + "description": "Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-focus" + }, + { + "description": "Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-position" + }, + { + "description": "Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-size" + }, + { + "description": "Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-zoom" + }, + { + "description": "Denies the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-close" + }, + { + "description": "Denies the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-hide" + }, + { + "description": "Denies the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-position" + }, + { + "description": "Denies the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-show" + }, + { + "description": "Denies the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-size" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:window:default" + }, + { + "description": "Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-available-monitors" + }, + { + "description": "Enables the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-center" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-close" + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-create" + }, + { + "description": "Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-current-monitor" + }, + { + "description": "Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-cursor-position" + }, + { + "description": "Enables the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-destroy" + }, + { + "description": "Enables the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-get-all-windows" + }, + { + "description": "Enables the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-hide" + }, + { + "description": "Enables the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-position" + }, + { + "description": "Enables the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-size" + }, + { + "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-internal-toggle-maximize" + }, + { + "description": "Enables the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-closable" + }, + { + "description": "Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-decorated" + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-enabled" + }, + { + "description": "Enables the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-focused" + }, + { + "description": "Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-fullscreen" + }, + { + "description": "Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximizable" + }, + { + "description": "Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximized" + }, + { + "description": "Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimizable" + }, + { + "description": "Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimized" + }, + { + "description": "Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-resizable" + }, + { + "description": "Enables the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-visible" + }, + { + "description": "Enables the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-maximize" + }, + { + "description": "Enables the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-minimize" + }, + { + "description": "Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-monitor-from-point" + }, + { + "description": "Enables the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-position" + }, + { + "description": "Enables the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-size" + }, + { + "description": "Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-primary-monitor" + }, + { + "description": "Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-request-user-attention" + }, + { + "description": "Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scale-factor" + }, + { + "description": "Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-bottom" + }, + { + "description": "Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-top" + }, + { + "description": "Enables the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-closable" + }, + { + "description": "Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-content-protected" + }, + { + "description": "Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-grab" + }, + { + "description": "Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-icon" + }, + { + "description": "Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-position" + }, + { + "description": "Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-visible" + }, + { + "description": "Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-decorations" + }, + { + "description": "Enables the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-effects" + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-enabled" + }, + { + "description": "Enables the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focus" + }, + { + "description": "Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-fullscreen" + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-icon" + }, + { + "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-ignore-cursor-events" + }, + { + "description": "Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-max-size" + }, + { + "description": "Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-maximizable" + }, + { + "description": "Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-min-size" + }, + { + "description": "Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-minimizable" + }, + { + "description": "Enables the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-position" + }, + { + "description": "Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-progress-bar" + }, + { + "description": "Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-resizable" + }, + { + "description": "Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-shadow" + }, + { + "description": "Enables the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size" + }, + { + "description": "Enables the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size-constraints" + }, + { + "description": "Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-skip-taskbar" + }, + { + "description": "Enables the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-theme" + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title" + }, + { + "description": "Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title-bar-style" + }, + { + "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-visible-on-all-workspaces" + }, + { + "description": "Enables the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-show" + }, + { + "description": "Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-dragging" + }, + { + "description": "Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-resize-dragging" + }, + { + "description": "Enables the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-theme" + }, + { + "description": "Enables the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-title" + }, + { + "description": "Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-toggle-maximize" + }, + { + "description": "Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unmaximize" + }, + { + "description": "Enables the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unminimize" + }, + { + "description": "Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-available-monitors" + }, + { + "description": "Denies the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-center" + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-close" + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-create" + }, + { + "description": "Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-current-monitor" + }, + { + "description": "Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-cursor-position" + }, + { + "description": "Denies the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-destroy" + }, + { + "description": "Denies the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-get-all-windows" + }, + { + "description": "Denies the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-hide" + }, + { + "description": "Denies the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-position" + }, + { + "description": "Denies the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-size" + }, + { + "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-internal-toggle-maximize" + }, + { + "description": "Denies the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-closable" + }, + { + "description": "Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-decorated" + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-enabled" + }, + { + "description": "Denies the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-focused" + }, + { + "description": "Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-fullscreen" + }, + { + "description": "Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximizable" + }, + { + "description": "Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximized" + }, + { + "description": "Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimizable" + }, + { + "description": "Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimized" + }, + { + "description": "Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-resizable" + }, + { + "description": "Denies the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-visible" + }, + { + "description": "Denies the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-maximize" + }, + { + "description": "Denies the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-minimize" + }, + { + "description": "Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-monitor-from-point" + }, + { + "description": "Denies the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-position" + }, + { + "description": "Denies the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-size" + }, + { + "description": "Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-primary-monitor" + }, + { + "description": "Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-request-user-attention" + }, + { + "description": "Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scale-factor" + }, + { + "description": "Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-bottom" + }, + { + "description": "Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-top" + }, + { + "description": "Denies the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-closable" + }, + { + "description": "Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-content-protected" + }, + { + "description": "Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-grab" + }, + { + "description": "Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-icon" + }, + { + "description": "Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-position" + }, + { + "description": "Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-visible" + }, + { + "description": "Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-decorations" + }, + { + "description": "Denies the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-effects" + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-enabled" + }, + { + "description": "Denies the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focus" + }, + { + "description": "Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-fullscreen" + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-icon" + }, + { + "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-ignore-cursor-events" + }, + { + "description": "Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-max-size" + }, + { + "description": "Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-maximizable" + }, + { + "description": "Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-min-size" + }, + { + "description": "Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-minimizable" + }, + { + "description": "Denies the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-position" + }, + { + "description": "Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-progress-bar" + }, + { + "description": "Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-resizable" + }, + { + "description": "Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-shadow" + }, + { + "description": "Denies the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size" + }, + { + "description": "Denies the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size-constraints" + }, + { + "description": "Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-skip-taskbar" + }, + { + "description": "Denies the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-theme" + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title" + }, + { + "description": "Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title-bar-style" + }, + { + "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-visible-on-all-workspaces" + }, + { + "description": "Denies the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-show" + }, + { + "description": "Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-dragging" + }, + { + "description": "Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-resize-dragging" + }, + { + "description": "Denies the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-theme" + }, + { + "description": "Denies the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-title" + }, + { + "description": "Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-toggle-maximize" + }, + { + "description": "Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unmaximize" + }, + { + "description": "Denies the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unminimize" + }, + { + "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", + "type": "string", + "const": "fs:default" + }, + { + "description": "This allows non-recursive read access to metadata of the application folders, including file listing and statistics.", + "type": "string", + "const": "fs:allow-app-meta" + }, + { + "description": "This allows full recursive read access to metadata of the application folders, including file listing and statistics.", + "type": "string", + "const": "fs:allow-app-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the application folders.", + "type": "string", + "const": "fs:allow-app-read" + }, + { + "description": "This allows full recursive read access to the complete application folders, files and subdirectories.", + "type": "string", + "const": "fs:allow-app-read-recursive" + }, + { + "description": "This allows non-recursive write access to the application folders.", + "type": "string", + "const": "fs:allow-app-write" + }, + { + "description": "This allows full recursive write access to the complete application folders, files and subdirectories.", + "type": "string", + "const": "fs:allow-app-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appcache-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appcache-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPCACHE` folder.", + "type": "string", + "const": "fs:allow-appcache-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appcache-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPCACHE` folder.", + "type": "string", + "const": "fs:allow-appcache-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appcache-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appconfig-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appconfig-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:allow-appconfig-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appconfig-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:allow-appconfig-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appconfig-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appdata-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appdata-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPDATA` folder.", + "type": "string", + "const": "fs:allow-appdata-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appdata-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPDATA` folder.", + "type": "string", + "const": "fs:allow-appdata-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appdata-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applocaldata-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applocaldata-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:allow-applocaldata-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applocaldata-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:allow-applocaldata-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applocaldata-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applog-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applog-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPLOG` folder.", + "type": "string", + "const": "fs:allow-applog-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applog-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPLOG` folder.", + "type": "string", + "const": "fs:allow-applog-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applog-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-audio-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-audio-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$AUDIO` folder.", + "type": "string", + "const": "fs:allow-audio-read" + }, + { + "description": "This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-audio-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$AUDIO` folder.", + "type": "string", + "const": "fs:allow-audio-write" + }, + { + "description": "This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-audio-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-cache-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-cache-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$CACHE` folder.", + "type": "string", + "const": "fs:allow-cache-read" + }, + { + "description": "This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-cache-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$CACHE` folder.", + "type": "string", + "const": "fs:allow-cache-write" + }, + { + "description": "This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-cache-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-config-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-config-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$CONFIG` folder.", + "type": "string", + "const": "fs:allow-config-read" + }, + { + "description": "This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-config-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$CONFIG` folder.", + "type": "string", + "const": "fs:allow-config-write" + }, + { + "description": "This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-config-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-data-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-data-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DATA` folder.", + "type": "string", + "const": "fs:allow-data-read" + }, + { + "description": "This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-data-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DATA` folder.", + "type": "string", + "const": "fs:allow-data-write" + }, + { + "description": "This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-data-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-desktop-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-desktop-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DESKTOP` folder.", + "type": "string", + "const": "fs:allow-desktop-read" + }, + { + "description": "This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-desktop-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DESKTOP` folder.", + "type": "string", + "const": "fs:allow-desktop-write" + }, + { + "description": "This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-desktop-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-document-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-document-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:allow-document-read" + }, + { + "description": "This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-document-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:allow-document-write" + }, + { + "description": "This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-document-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-download-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-download-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:allow-download-read" + }, + { + "description": "This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-download-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:allow-download-write" + }, + { + "description": "This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-download-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-exe-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-exe-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$EXE` folder.", + "type": "string", + "const": "fs:allow-exe-read" + }, + { + "description": "This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-exe-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$EXE` folder.", + "type": "string", + "const": "fs:allow-exe-write" + }, + { + "description": "This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-exe-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-font-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-font-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$FONT` folder.", + "type": "string", + "const": "fs:allow-font-read" + }, + { + "description": "This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-font-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$FONT` folder.", + "type": "string", + "const": "fs:allow-font-write" + }, + { + "description": "This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-font-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-home-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-home-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$HOME` folder.", + "type": "string", + "const": "fs:allow-home-read" + }, + { + "description": "This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-home-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$HOME` folder.", + "type": "string", + "const": "fs:allow-home-write" + }, + { + "description": "This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-home-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-localdata-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-localdata-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:allow-localdata-read" + }, + { + "description": "This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-localdata-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:allow-localdata-write" + }, + { + "description": "This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-localdata-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-log-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-log-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$LOG` folder.", + "type": "string", + "const": "fs:allow-log-read" + }, + { + "description": "This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-log-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$LOG` folder.", + "type": "string", + "const": "fs:allow-log-write" + }, + { + "description": "This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-log-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-picture-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-picture-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$PICTURE` folder.", + "type": "string", + "const": "fs:allow-picture-read" + }, + { + "description": "This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-picture-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$PICTURE` folder.", + "type": "string", + "const": "fs:allow-picture-write" + }, + { + "description": "This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-picture-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-public-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-public-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$PUBLIC` folder.", + "type": "string", + "const": "fs:allow-public-read" + }, + { + "description": "This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-public-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$PUBLIC` folder.", + "type": "string", + "const": "fs:allow-public-write" + }, + { + "description": "This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-public-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-resource-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-resource-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$RESOURCE` folder.", + "type": "string", + "const": "fs:allow-resource-read" + }, + { + "description": "This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-resource-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$RESOURCE` folder.", + "type": "string", + "const": "fs:allow-resource-write" + }, + { + "description": "This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-resource-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-runtime-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-runtime-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$RUNTIME` folder.", + "type": "string", + "const": "fs:allow-runtime-read" + }, + { + "description": "This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-runtime-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$RUNTIME` folder.", + "type": "string", + "const": "fs:allow-runtime-write" + }, + { + "description": "This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-runtime-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-temp-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-temp-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$TEMP` folder.", + "type": "string", + "const": "fs:allow-temp-read" + }, + { + "description": "This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-temp-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$TEMP` folder.", + "type": "string", + "const": "fs:allow-temp-write" + }, + { + "description": "This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-temp-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-template-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-template-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:allow-template-read" + }, + { + "description": "This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-template-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:allow-template-write" + }, + { + "description": "This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-template-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-video-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-video-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$VIDEO` folder.", + "type": "string", + "const": "fs:allow-video-read" + }, + { + "description": "This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-video-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$VIDEO` folder.", + "type": "string", + "const": "fs:allow-video-write" + }, + { + "description": "This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-video-write-recursive" + }, + { + "description": "This denies access to dangerous Tauri relevant files and folders by default.", + "type": "string", + "const": "fs:deny-default" + }, + { + "description": "Enables the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-copy-file" + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-create" + }, + { + "description": "Enables the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-exists" + }, + { + "description": "Enables the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-fstat" + }, + { + "description": "Enables the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-ftruncate" + }, + { + "description": "Enables the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-lstat" + }, + { + "description": "Enables the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-mkdir" + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-open" + }, + { + "description": "Enables the read command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read" + }, + { + "description": "Enables the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-dir" + }, + { + "description": "Enables the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-file" + }, + { + "description": "Enables the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file" + }, + { + "description": "Enables the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines" + }, + { + "description": "Enables the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines-next" + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-remove" + }, + { + "description": "Enables the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-rename" + }, + { + "description": "Enables the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-seek" + }, + { + "description": "Enables the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-stat" + }, + { + "description": "Enables the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-truncate" + }, + { + "description": "Enables the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-unwatch" + }, + { + "description": "Enables the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-watch" + }, + { + "description": "Enables the write command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write" + }, + { + "description": "Enables the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-file" + }, + { + "description": "Enables the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-text-file" + }, + { + "description": "This permissions allows to create the application specific directories.\n", + "type": "string", + "const": "fs:create-app-specific-dirs" + }, + { + "description": "Denies the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-copy-file" + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-create" + }, + { + "description": "Denies the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-exists" + }, + { + "description": "Denies the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-fstat" + }, + { + "description": "Denies the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-ftruncate" + }, + { + "description": "Denies the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-lstat" + }, + { + "description": "Denies the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-mkdir" + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-open" + }, + { + "description": "Denies the read command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read" + }, + { + "description": "Denies the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-dir" + }, + { + "description": "Denies the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-file" + }, + { + "description": "Denies the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file" + }, + { + "description": "Denies the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines" + }, + { + "description": "Denies the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines-next" + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-remove" + }, + { + "description": "Denies the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-rename" + }, + { + "description": "Denies the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-seek" + }, + { + "description": "Denies the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-stat" + }, + { + "description": "Denies the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-truncate" + }, + { + "description": "Denies the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-unwatch" + }, + { + "description": "Denies the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-watch" + }, + { + "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": "fs:deny-webview-data-linux" + }, + { + "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": "fs:deny-webview-data-windows" + }, + { + "description": "Denies the write command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write" + }, + { + "description": "Denies the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-file" + }, + { + "description": "Denies the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-text-file" + }, + { + "description": "This enables all read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-all" + }, + { + "description": "This permission allows recursive read functionality on the application\nspecific base directories. \n", + "type": "string", + "const": "fs:read-app-specific-dirs-recursive" + }, + { + "description": "This enables directory read and file metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-dirs" + }, + { + "description": "This enables file read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-files" + }, + { + "description": "This enables all index or metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-meta" + }, + { + "description": "An empty permission you can use to modify the global scope.", + "type": "string", + "const": "fs:scope" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the application folders.", + "type": "string", + "const": "fs:scope-app" + }, + { + "description": "This scope permits to list all files and folders in the application directories.", + "type": "string", + "const": "fs:scope-app-index" + }, + { + "description": "This scope permits recursive access to the complete application folders, including sub directories and files.", + "type": "string", + "const": "fs:scope-app-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder.", + "type": "string", + "const": "fs:scope-appcache" + }, + { + "description": "This scope permits to list all files and folders in the `$APPCACHE`folder.", + "type": "string", + "const": "fs:scope-appcache-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appcache-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:scope-appconfig" + }, + { + "description": "This scope permits to list all files and folders in the `$APPCONFIG`folder.", + "type": "string", + "const": "fs:scope-appconfig-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appconfig-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPDATA` folder.", + "type": "string", + "const": "fs:scope-appdata" + }, + { + "description": "This scope permits to list all files and folders in the `$APPDATA`folder.", + "type": "string", + "const": "fs:scope-appdata-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appdata-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:scope-applocaldata" + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOCALDATA`folder.", + "type": "string", + "const": "fs:scope-applocaldata-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applocaldata-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOG` folder.", + "type": "string", + "const": "fs:scope-applog" + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOG`folder.", + "type": "string", + "const": "fs:scope-applog-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applog-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$AUDIO` folder.", + "type": "string", + "const": "fs:scope-audio" + }, + { + "description": "This scope permits to list all files and folders in the `$AUDIO`folder.", + "type": "string", + "const": "fs:scope-audio-index" + }, + { + "description": "This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-audio-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CACHE` folder.", + "type": "string", + "const": "fs:scope-cache" + }, + { + "description": "This scope permits to list all files and folders in the `$CACHE`folder.", + "type": "string", + "const": "fs:scope-cache-index" + }, + { + "description": "This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-cache-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CONFIG` folder.", + "type": "string", + "const": "fs:scope-config" + }, + { + "description": "This scope permits to list all files and folders in the `$CONFIG`folder.", + "type": "string", + "const": "fs:scope-config-index" + }, + { + "description": "This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-config-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DATA` folder.", + "type": "string", + "const": "fs:scope-data" + }, + { + "description": "This scope permits to list all files and folders in the `$DATA`folder.", + "type": "string", + "const": "fs:scope-data-index" + }, + { + "description": "This scope permits recursive access to the complete `$DATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-data-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder.", + "type": "string", + "const": "fs:scope-desktop" + }, + { + "description": "This scope permits to list all files and folders in the `$DESKTOP`folder.", + "type": "string", + "const": "fs:scope-desktop-index" + }, + { + "description": "This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-desktop-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:scope-document" + }, + { + "description": "This scope permits to list all files and folders in the `$DOCUMENT`folder.", + "type": "string", + "const": "fs:scope-document-index" + }, + { + "description": "This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-document-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:scope-download" + }, + { + "description": "This scope permits to list all files and folders in the `$DOWNLOAD`folder.", + "type": "string", + "const": "fs:scope-download-index" + }, + { + "description": "This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-download-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$EXE` folder.", + "type": "string", + "const": "fs:scope-exe" + }, + { + "description": "This scope permits to list all files and folders in the `$EXE`folder.", + "type": "string", + "const": "fs:scope-exe-index" + }, + { + "description": "This scope permits recursive access to the complete `$EXE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-exe-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$FONT` folder.", + "type": "string", + "const": "fs:scope-font" + }, + { + "description": "This scope permits to list all files and folders in the `$FONT`folder.", + "type": "string", + "const": "fs:scope-font-index" + }, + { + "description": "This scope permits recursive access to the complete `$FONT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-font-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$HOME` folder.", + "type": "string", + "const": "fs:scope-home" + }, + { + "description": "This scope permits to list all files and folders in the `$HOME`folder.", + "type": "string", + "const": "fs:scope-home-index" + }, + { + "description": "This scope permits recursive access to the complete `$HOME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-home-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:scope-localdata" + }, + { + "description": "This scope permits to list all files and folders in the `$LOCALDATA`folder.", + "type": "string", + "const": "fs:scope-localdata-index" + }, + { + "description": "This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-localdata-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOG` folder.", + "type": "string", + "const": "fs:scope-log" + }, + { + "description": "This scope permits to list all files and folders in the `$LOG`folder.", + "type": "string", + "const": "fs:scope-log-index" + }, + { + "description": "This scope permits recursive access to the complete `$LOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-log-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PICTURE` folder.", + "type": "string", + "const": "fs:scope-picture" + }, + { + "description": "This scope permits to list all files and folders in the `$PICTURE`folder.", + "type": "string", + "const": "fs:scope-picture-index" + }, + { + "description": "This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-picture-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder.", + "type": "string", + "const": "fs:scope-public" + }, + { + "description": "This scope permits to list all files and folders in the `$PUBLIC`folder.", + "type": "string", + "const": "fs:scope-public-index" + }, + { + "description": "This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-public-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder.", + "type": "string", + "const": "fs:scope-resource" + }, + { + "description": "This scope permits to list all files and folders in the `$RESOURCE`folder.", + "type": "string", + "const": "fs:scope-resource-index" + }, + { + "description": "This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-resource-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder.", + "type": "string", + "const": "fs:scope-runtime" + }, + { + "description": "This scope permits to list all files and folders in the `$RUNTIME`folder.", + "type": "string", + "const": "fs:scope-runtime-index" + }, + { + "description": "This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-runtime-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMP` folder.", + "type": "string", + "const": "fs:scope-temp" + }, + { + "description": "This scope permits to list all files and folders in the `$TEMP`folder.", + "type": "string", + "const": "fs:scope-temp-index" + }, + { + "description": "This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-temp-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:scope-template" + }, + { + "description": "This scope permits to list all files and folders in the `$TEMPLATE`folder.", + "type": "string", + "const": "fs:scope-template-index" + }, + { + "description": "This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-template-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$VIDEO` folder.", + "type": "string", + "const": "fs:scope-video" + }, + { + "description": "This scope permits to list all files and folders in the `$VIDEO`folder.", + "type": "string", + "const": "fs:scope-video-index" + }, + { + "description": "This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-video-recursive" + }, + { + "description": "This enables all write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-all" + }, + { + "description": "This enables all file write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-files" + }, + { + "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", + "type": "string", + "const": "shell:default" + }, + { + "description": "Enables the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-execute" + }, + { + "description": "Enables the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-kill" + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-open" + }, + { + "description": "Enables the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-spawn" + }, + { + "description": "Enables the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-stdin-write" + }, + { + "description": "Denies the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-execute" + }, + { + "description": "Denies the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-kill" + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-open" + }, + { + "description": "Denies the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-spawn" + }, + { + "description": "Denies the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-stdin-write" + } + ] + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": [ + "macOS" + ] + }, + { + "description": "Windows.", + "type": "string", + "enum": [ + "windows" + ] + }, + { + "description": "Linux.", + "type": "string", + "enum": [ + "linux" + ] + }, + { + "description": "Android.", + "type": "string", + "enum": [ + "android" + ] + }, + { + "description": "iOS.", + "type": "string", + "enum": [ + "iOS" + ] + } + ] + }, + "ShellScopeEntryAllowedArgs": { + "description": "A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration.", + "anyOf": [ + { + "description": "Use a simple boolean to allow all or disable all arguments to this command configuration.", + "type": "boolean" + }, + { + "description": "A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.", + "type": "array", + "items": { + "$ref": "#/definitions/ShellScopeEntryAllowedArg" + } + } + ] + }, + "ShellScopeEntryAllowedArg": { + "description": "A command argument allowed to be executed by the webview API.", + "anyOf": [ + { + "description": "A non-configurable argument that is passed to the command in the order it was specified.", + "type": "string" + }, + { + "description": "A variable that is set while calling the command from the webview API.", + "type": "object", + "required": [ + "validator" + ], + "properties": { + "validator": { + "description": "[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: ", + "type": "string" + }, + "raw": { + "description": "Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.", + "default": false, + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + } +} \ No newline at end of file diff --git a/archived/lunar/src-tauri/gen/schemas/linux-schema.json b/archived/lunar/src-tauri/gen/schemas/linux-schema.json new file mode 100644 index 00000000..19a86b0e --- /dev/null +++ b/archived/lunar/src-tauri/gen/schemas/linux-schema.json @@ -0,0 +1,4986 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CapabilityFile", + "description": "Capability formats accepted in a capability file.", + "anyOf": [ + { + "description": "A single capability.", + "allOf": [ + { + "$ref": "#/definitions/Capability" + } + ] + }, + { + "description": "A list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + }, + { + "description": "A list of capabilities.", + "type": "object", + "required": [ + "capabilities" + ], + "properties": { + "capabilities": { + "description": "The list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + } + } + } + ], + "definitions": { + "Capability": { + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": [ + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "anyOf": [ + { + "$ref": "#/definitions/CapabilityRemote" + }, + { + "type": "null" + } + ] + }, + "local": { + "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", + "default": true, + "type": "boolean" + }, + "windows": { + "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "CapabilityRemote": { + "description": "Configuration for remote URLs that are associated with the capability.", + "type": "object", + "required": [ + "urls" + ], + "properties": { + "urls": { + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionEntry": { + "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", + "anyOf": [ + { + "description": "Reference a permission or permission set by identifier.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + { + "description": "Reference a permission or permission set by identifier and extends its scope.", + "type": "object", + "allOf": [ + { + "if": { + "properties": { + "identifier": { + "anyOf": [ + { + "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", + "type": "string", + "const": "fs:default" + }, + { + "description": "This allows non-recursive read access to metadata of the application folders, including file listing and statistics.", + "type": "string", + "const": "fs:allow-app-meta" + }, + { + "description": "This allows full recursive read access to metadata of the application folders, including file listing and statistics.", + "type": "string", + "const": "fs:allow-app-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the application folders.", + "type": "string", + "const": "fs:allow-app-read" + }, + { + "description": "This allows full recursive read access to the complete application folders, files and subdirectories.", + "type": "string", + "const": "fs:allow-app-read-recursive" + }, + { + "description": "This allows non-recursive write access to the application folders.", + "type": "string", + "const": "fs:allow-app-write" + }, + { + "description": "This allows full recursive write access to the complete application folders, files and subdirectories.", + "type": "string", + "const": "fs:allow-app-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appcache-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appcache-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPCACHE` folder.", + "type": "string", + "const": "fs:allow-appcache-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appcache-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPCACHE` folder.", + "type": "string", + "const": "fs:allow-appcache-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appcache-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appconfig-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appconfig-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:allow-appconfig-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appconfig-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:allow-appconfig-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appconfig-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appdata-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appdata-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPDATA` folder.", + "type": "string", + "const": "fs:allow-appdata-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appdata-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPDATA` folder.", + "type": "string", + "const": "fs:allow-appdata-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appdata-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applocaldata-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applocaldata-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:allow-applocaldata-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applocaldata-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:allow-applocaldata-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applocaldata-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applog-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applog-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPLOG` folder.", + "type": "string", + "const": "fs:allow-applog-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applog-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPLOG` folder.", + "type": "string", + "const": "fs:allow-applog-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applog-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-audio-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-audio-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$AUDIO` folder.", + "type": "string", + "const": "fs:allow-audio-read" + }, + { + "description": "This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-audio-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$AUDIO` folder.", + "type": "string", + "const": "fs:allow-audio-write" + }, + { + "description": "This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-audio-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-cache-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-cache-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$CACHE` folder.", + "type": "string", + "const": "fs:allow-cache-read" + }, + { + "description": "This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-cache-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$CACHE` folder.", + "type": "string", + "const": "fs:allow-cache-write" + }, + { + "description": "This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-cache-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-config-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-config-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$CONFIG` folder.", + "type": "string", + "const": "fs:allow-config-read" + }, + { + "description": "This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-config-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$CONFIG` folder.", + "type": "string", + "const": "fs:allow-config-write" + }, + { + "description": "This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-config-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-data-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-data-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DATA` folder.", + "type": "string", + "const": "fs:allow-data-read" + }, + { + "description": "This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-data-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DATA` folder.", + "type": "string", + "const": "fs:allow-data-write" + }, + { + "description": "This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-data-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-desktop-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-desktop-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DESKTOP` folder.", + "type": "string", + "const": "fs:allow-desktop-read" + }, + { + "description": "This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-desktop-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DESKTOP` folder.", + "type": "string", + "const": "fs:allow-desktop-write" + }, + { + "description": "This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-desktop-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-document-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-document-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:allow-document-read" + }, + { + "description": "This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-document-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:allow-document-write" + }, + { + "description": "This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-document-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-download-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-download-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:allow-download-read" + }, + { + "description": "This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-download-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:allow-download-write" + }, + { + "description": "This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-download-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-exe-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-exe-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$EXE` folder.", + "type": "string", + "const": "fs:allow-exe-read" + }, + { + "description": "This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-exe-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$EXE` folder.", + "type": "string", + "const": "fs:allow-exe-write" + }, + { + "description": "This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-exe-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-font-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-font-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$FONT` folder.", + "type": "string", + "const": "fs:allow-font-read" + }, + { + "description": "This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-font-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$FONT` folder.", + "type": "string", + "const": "fs:allow-font-write" + }, + { + "description": "This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-font-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-home-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-home-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$HOME` folder.", + "type": "string", + "const": "fs:allow-home-read" + }, + { + "description": "This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-home-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$HOME` folder.", + "type": "string", + "const": "fs:allow-home-write" + }, + { + "description": "This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-home-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-localdata-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-localdata-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:allow-localdata-read" + }, + { + "description": "This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-localdata-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:allow-localdata-write" + }, + { + "description": "This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-localdata-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-log-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-log-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$LOG` folder.", + "type": "string", + "const": "fs:allow-log-read" + }, + { + "description": "This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-log-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$LOG` folder.", + "type": "string", + "const": "fs:allow-log-write" + }, + { + "description": "This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-log-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-picture-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-picture-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$PICTURE` folder.", + "type": "string", + "const": "fs:allow-picture-read" + }, + { + "description": "This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-picture-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$PICTURE` folder.", + "type": "string", + "const": "fs:allow-picture-write" + }, + { + "description": "This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-picture-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-public-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-public-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$PUBLIC` folder.", + "type": "string", + "const": "fs:allow-public-read" + }, + { + "description": "This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-public-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$PUBLIC` folder.", + "type": "string", + "const": "fs:allow-public-write" + }, + { + "description": "This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-public-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-resource-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-resource-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$RESOURCE` folder.", + "type": "string", + "const": "fs:allow-resource-read" + }, + { + "description": "This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-resource-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$RESOURCE` folder.", + "type": "string", + "const": "fs:allow-resource-write" + }, + { + "description": "This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-resource-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-runtime-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-runtime-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$RUNTIME` folder.", + "type": "string", + "const": "fs:allow-runtime-read" + }, + { + "description": "This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-runtime-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$RUNTIME` folder.", + "type": "string", + "const": "fs:allow-runtime-write" + }, + { + "description": "This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-runtime-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-temp-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-temp-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$TEMP` folder.", + "type": "string", + "const": "fs:allow-temp-read" + }, + { + "description": "This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-temp-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$TEMP` folder.", + "type": "string", + "const": "fs:allow-temp-write" + }, + { + "description": "This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-temp-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-template-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-template-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:allow-template-read" + }, + { + "description": "This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-template-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:allow-template-write" + }, + { + "description": "This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-template-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-video-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-video-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$VIDEO` folder.", + "type": "string", + "const": "fs:allow-video-read" + }, + { + "description": "This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-video-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$VIDEO` folder.", + "type": "string", + "const": "fs:allow-video-write" + }, + { + "description": "This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-video-write-recursive" + }, + { + "description": "This denies access to dangerous Tauri relevant files and folders by default.", + "type": "string", + "const": "fs:deny-default" + }, + { + "description": "Enables the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-copy-file" + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-create" + }, + { + "description": "Enables the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-exists" + }, + { + "description": "Enables the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-fstat" + }, + { + "description": "Enables the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-ftruncate" + }, + { + "description": "Enables the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-lstat" + }, + { + "description": "Enables the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-mkdir" + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-open" + }, + { + "description": "Enables the read command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read" + }, + { + "description": "Enables the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-dir" + }, + { + "description": "Enables the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-file" + }, + { + "description": "Enables the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file" + }, + { + "description": "Enables the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines" + }, + { + "description": "Enables the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines-next" + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-remove" + }, + { + "description": "Enables the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-rename" + }, + { + "description": "Enables the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-seek" + }, + { + "description": "Enables the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-stat" + }, + { + "description": "Enables the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-truncate" + }, + { + "description": "Enables the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-unwatch" + }, + { + "description": "Enables the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-watch" + }, + { + "description": "Enables the write command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write" + }, + { + "description": "Enables the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-file" + }, + { + "description": "Enables the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-text-file" + }, + { + "description": "This permissions allows to create the application specific directories.\n", + "type": "string", + "const": "fs:create-app-specific-dirs" + }, + { + "description": "Denies the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-copy-file" + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-create" + }, + { + "description": "Denies the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-exists" + }, + { + "description": "Denies the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-fstat" + }, + { + "description": "Denies the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-ftruncate" + }, + { + "description": "Denies the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-lstat" + }, + { + "description": "Denies the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-mkdir" + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-open" + }, + { + "description": "Denies the read command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read" + }, + { + "description": "Denies the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-dir" + }, + { + "description": "Denies the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-file" + }, + { + "description": "Denies the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file" + }, + { + "description": "Denies the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines" + }, + { + "description": "Denies the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines-next" + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-remove" + }, + { + "description": "Denies the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-rename" + }, + { + "description": "Denies the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-seek" + }, + { + "description": "Denies the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-stat" + }, + { + "description": "Denies the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-truncate" + }, + { + "description": "Denies the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-unwatch" + }, + { + "description": "Denies the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-watch" + }, + { + "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": "fs:deny-webview-data-linux" + }, + { + "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": "fs:deny-webview-data-windows" + }, + { + "description": "Denies the write command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write" + }, + { + "description": "Denies the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-file" + }, + { + "description": "Denies the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-text-file" + }, + { + "description": "This enables all read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-all" + }, + { + "description": "This permission allows recursive read functionality on the application\nspecific base directories. \n", + "type": "string", + "const": "fs:read-app-specific-dirs-recursive" + }, + { + "description": "This enables directory read and file metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-dirs" + }, + { + "description": "This enables file read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-files" + }, + { + "description": "This enables all index or metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-meta" + }, + { + "description": "An empty permission you can use to modify the global scope.", + "type": "string", + "const": "fs:scope" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the application folders.", + "type": "string", + "const": "fs:scope-app" + }, + { + "description": "This scope permits to list all files and folders in the application directories.", + "type": "string", + "const": "fs:scope-app-index" + }, + { + "description": "This scope permits recursive access to the complete application folders, including sub directories and files.", + "type": "string", + "const": "fs:scope-app-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder.", + "type": "string", + "const": "fs:scope-appcache" + }, + { + "description": "This scope permits to list all files and folders in the `$APPCACHE`folder.", + "type": "string", + "const": "fs:scope-appcache-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appcache-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:scope-appconfig" + }, + { + "description": "This scope permits to list all files and folders in the `$APPCONFIG`folder.", + "type": "string", + "const": "fs:scope-appconfig-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appconfig-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPDATA` folder.", + "type": "string", + "const": "fs:scope-appdata" + }, + { + "description": "This scope permits to list all files and folders in the `$APPDATA`folder.", + "type": "string", + "const": "fs:scope-appdata-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appdata-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:scope-applocaldata" + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOCALDATA`folder.", + "type": "string", + "const": "fs:scope-applocaldata-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applocaldata-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOG` folder.", + "type": "string", + "const": "fs:scope-applog" + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOG`folder.", + "type": "string", + "const": "fs:scope-applog-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applog-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$AUDIO` folder.", + "type": "string", + "const": "fs:scope-audio" + }, + { + "description": "This scope permits to list all files and folders in the `$AUDIO`folder.", + "type": "string", + "const": "fs:scope-audio-index" + }, + { + "description": "This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-audio-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CACHE` folder.", + "type": "string", + "const": "fs:scope-cache" + }, + { + "description": "This scope permits to list all files and folders in the `$CACHE`folder.", + "type": "string", + "const": "fs:scope-cache-index" + }, + { + "description": "This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-cache-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CONFIG` folder.", + "type": "string", + "const": "fs:scope-config" + }, + { + "description": "This scope permits to list all files and folders in the `$CONFIG`folder.", + "type": "string", + "const": "fs:scope-config-index" + }, + { + "description": "This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-config-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DATA` folder.", + "type": "string", + "const": "fs:scope-data" + }, + { + "description": "This scope permits to list all files and folders in the `$DATA`folder.", + "type": "string", + "const": "fs:scope-data-index" + }, + { + "description": "This scope permits recursive access to the complete `$DATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-data-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder.", + "type": "string", + "const": "fs:scope-desktop" + }, + { + "description": "This scope permits to list all files and folders in the `$DESKTOP`folder.", + "type": "string", + "const": "fs:scope-desktop-index" + }, + { + "description": "This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-desktop-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:scope-document" + }, + { + "description": "This scope permits to list all files and folders in the `$DOCUMENT`folder.", + "type": "string", + "const": "fs:scope-document-index" + }, + { + "description": "This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-document-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:scope-download" + }, + { + "description": "This scope permits to list all files and folders in the `$DOWNLOAD`folder.", + "type": "string", + "const": "fs:scope-download-index" + }, + { + "description": "This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-download-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$EXE` folder.", + "type": "string", + "const": "fs:scope-exe" + }, + { + "description": "This scope permits to list all files and folders in the `$EXE`folder.", + "type": "string", + "const": "fs:scope-exe-index" + }, + { + "description": "This scope permits recursive access to the complete `$EXE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-exe-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$FONT` folder.", + "type": "string", + "const": "fs:scope-font" + }, + { + "description": "This scope permits to list all files and folders in the `$FONT`folder.", + "type": "string", + "const": "fs:scope-font-index" + }, + { + "description": "This scope permits recursive access to the complete `$FONT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-font-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$HOME` folder.", + "type": "string", + "const": "fs:scope-home" + }, + { + "description": "This scope permits to list all files and folders in the `$HOME`folder.", + "type": "string", + "const": "fs:scope-home-index" + }, + { + "description": "This scope permits recursive access to the complete `$HOME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-home-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:scope-localdata" + }, + { + "description": "This scope permits to list all files and folders in the `$LOCALDATA`folder.", + "type": "string", + "const": "fs:scope-localdata-index" + }, + { + "description": "This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-localdata-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOG` folder.", + "type": "string", + "const": "fs:scope-log" + }, + { + "description": "This scope permits to list all files and folders in the `$LOG`folder.", + "type": "string", + "const": "fs:scope-log-index" + }, + { + "description": "This scope permits recursive access to the complete `$LOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-log-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PICTURE` folder.", + "type": "string", + "const": "fs:scope-picture" + }, + { + "description": "This scope permits to list all files and folders in the `$PICTURE`folder.", + "type": "string", + "const": "fs:scope-picture-index" + }, + { + "description": "This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-picture-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder.", + "type": "string", + "const": "fs:scope-public" + }, + { + "description": "This scope permits to list all files and folders in the `$PUBLIC`folder.", + "type": "string", + "const": "fs:scope-public-index" + }, + { + "description": "This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-public-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder.", + "type": "string", + "const": "fs:scope-resource" + }, + { + "description": "This scope permits to list all files and folders in the `$RESOURCE`folder.", + "type": "string", + "const": "fs:scope-resource-index" + }, + { + "description": "This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-resource-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder.", + "type": "string", + "const": "fs:scope-runtime" + }, + { + "description": "This scope permits to list all files and folders in the `$RUNTIME`folder.", + "type": "string", + "const": "fs:scope-runtime-index" + }, + { + "description": "This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-runtime-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMP` folder.", + "type": "string", + "const": "fs:scope-temp" + }, + { + "description": "This scope permits to list all files and folders in the `$TEMP`folder.", + "type": "string", + "const": "fs:scope-temp-index" + }, + { + "description": "This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-temp-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:scope-template" + }, + { + "description": "This scope permits to list all files and folders in the `$TEMPLATE`folder.", + "type": "string", + "const": "fs:scope-template-index" + }, + { + "description": "This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-template-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$VIDEO` folder.", + "type": "string", + "const": "fs:scope-video" + }, + { + "description": "This scope permits to list all files and folders in the `$VIDEO`folder.", + "type": "string", + "const": "fs:scope-video-index" + }, + { + "description": "This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-video-recursive" + }, + { + "description": "This enables all write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-all" + }, + { + "description": "This enables all file write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-files" + } + ] + } + } + }, + "then": { + "properties": { + "allow": { + "items": { + "title": "FsScopeEntry", + "description": "FS scope entry.", + "anyOf": [ + { + "description": "FS scope path.", + "type": "string" + }, + { + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "description": "FS scope path.", + "type": "string" + } + } + } + ] + } + }, + "deny": { + "items": { + "title": "FsScopeEntry", + "description": "FS scope entry.", + "anyOf": [ + { + "description": "FS scope path.", + "type": "string" + }, + { + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "description": "FS scope path.", + "type": "string" + } + } + } + ] + } + } + } + }, + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + } + } + }, + { + "if": { + "properties": { + "identifier": { + "anyOf": [ + { + "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", + "type": "string", + "const": "shell:default" + }, + { + "description": "Enables the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-execute" + }, + { + "description": "Enables the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-kill" + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-open" + }, + { + "description": "Enables the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-spawn" + }, + { + "description": "Enables the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-stdin-write" + }, + { + "description": "Denies the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-execute" + }, + { + "description": "Denies the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-kill" + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-open" + }, + { + "description": "Denies the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-spawn" + }, + { + "description": "Denies the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-stdin-write" + } + ] + } + } + }, + "then": { + "properties": { + "allow": { + "items": { + "title": "ShellScopeEntry", + "description": "Shell scope entry.", + "anyOf": [ + { + "type": "object", + "required": [ + "cmd", + "name" + ], + "properties": { + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "cmd": { + "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + }, + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "name", + "sidecar" + ], + "properties": { + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "deny": { + "items": { + "title": "ShellScopeEntry", + "description": "Shell scope entry.", + "anyOf": [ + { + "type": "object", + "required": [ + "cmd", + "name" + ], + "properties": { + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "cmd": { + "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + }, + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "name", + "sidecar" + ], + "properties": { + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + } + } + }, + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + } + } + }, + { + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + "allow": { + "description": "Data that defines what is allowed by the scope.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + }, + "deny": { + "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + } + } + } + ], + "required": [ + "identifier" + ] + } + ] + }, + "Identifier": { + "description": "Permission identifier", + "oneOf": [ + { + "description": "Default core plugins set which includes:\n- 'core:path:default'\n- 'core:event:default'\n- 'core:window:default'\n- 'core:webview:default'\n- 'core:app:default'\n- 'core:image:default'\n- 'core:resources:default'\n- 'core:menu:default'\n- 'core:tray:default'\n", + "type": "string", + "const": "core:default" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:app:default" + }, + { + "description": "Enables the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-hide" + }, + { + "description": "Enables the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-show" + }, + { + "description": "Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-default-window-icon" + }, + { + "description": "Enables the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-name" + }, + { + "description": "Enables the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-app-theme" + }, + { + "description": "Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-tauri-version" + }, + { + "description": "Enables the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-version" + }, + { + "description": "Denies the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-hide" + }, + { + "description": "Denies the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-show" + }, + { + "description": "Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-default-window-icon" + }, + { + "description": "Denies the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-name" + }, + { + "description": "Denies the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-app-theme" + }, + { + "description": "Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-tauri-version" + }, + { + "description": "Denies the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-version" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:event:default" + }, + { + "description": "Enables the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit" + }, + { + "description": "Enables the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit-to" + }, + { + "description": "Enables the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-listen" + }, + { + "description": "Enables the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-unlisten" + }, + { + "description": "Denies the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit" + }, + { + "description": "Denies the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit-to" + }, + { + "description": "Denies the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-listen" + }, + { + "description": "Denies the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-unlisten" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:image:default" + }, + { + "description": "Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-bytes" + }, + { + "description": "Enables the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-path" + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-new" + }, + { + "description": "Enables the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-rgba" + }, + { + "description": "Enables the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-size" + }, + { + "description": "Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-bytes" + }, + { + "description": "Denies the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-path" + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-new" + }, + { + "description": "Denies the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-rgba" + }, + { + "description": "Denies the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-size" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:menu:default" + }, + { + "description": "Enables the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-append" + }, + { + "description": "Enables the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-create-default" + }, + { + "description": "Enables the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-get" + }, + { + "description": "Enables the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-insert" + }, + { + "description": "Enables the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-checked" + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-enabled" + }, + { + "description": "Enables the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-items" + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-new" + }, + { + "description": "Enables the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-popup" + }, + { + "description": "Enables the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-prepend" + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove" + }, + { + "description": "Enables the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove-at" + }, + { + "description": "Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-accelerator" + }, + { + "description": "Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-app-menu" + }, + { + "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-help-menu-for-nsapp" + }, + { + "description": "Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-window-menu" + }, + { + "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-windows-menu-for-nsapp" + }, + { + "description": "Enables the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-checked" + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-enabled" + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-icon" + }, + { + "description": "Enables the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-text" + }, + { + "description": "Enables the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-text" + }, + { + "description": "Denies the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-append" + }, + { + "description": "Denies the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-create-default" + }, + { + "description": "Denies the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-get" + }, + { + "description": "Denies the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-insert" + }, + { + "description": "Denies the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-checked" + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-enabled" + }, + { + "description": "Denies the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-items" + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-new" + }, + { + "description": "Denies the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-popup" + }, + { + "description": "Denies the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-prepend" + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove" + }, + { + "description": "Denies the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove-at" + }, + { + "description": "Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-accelerator" + }, + { + "description": "Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-app-menu" + }, + { + "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-help-menu-for-nsapp" + }, + { + "description": "Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-window-menu" + }, + { + "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-windows-menu-for-nsapp" + }, + { + "description": "Denies the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-checked" + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-enabled" + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-icon" + }, + { + "description": "Denies the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-text" + }, + { + "description": "Denies the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-text" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:path:default" + }, + { + "description": "Enables the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-basename" + }, + { + "description": "Enables the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-dirname" + }, + { + "description": "Enables the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-extname" + }, + { + "description": "Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-is-absolute" + }, + { + "description": "Enables the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-join" + }, + { + "description": "Enables the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-normalize" + }, + { + "description": "Enables the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve" + }, + { + "description": "Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve-directory" + }, + { + "description": "Denies the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-basename" + }, + { + "description": "Denies the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-dirname" + }, + { + "description": "Denies the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-extname" + }, + { + "description": "Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-is-absolute" + }, + { + "description": "Denies the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-join" + }, + { + "description": "Denies the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-normalize" + }, + { + "description": "Denies the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve" + }, + { + "description": "Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve-directory" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:resources:default" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:allow-close" + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:deny-close" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:tray:default" + }, + { + "description": "Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-get-by-id" + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-new" + }, + { + "description": "Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-remove-by-id" + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon" + }, + { + "description": "Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-as-template" + }, + { + "description": "Enables the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-menu" + }, + { + "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-show-menu-on-left-click" + }, + { + "description": "Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-temp-dir-path" + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-title" + }, + { + "description": "Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-tooltip" + }, + { + "description": "Enables the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-visible" + }, + { + "description": "Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-get-by-id" + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-new" + }, + { + "description": "Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-remove-by-id" + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon" + }, + { + "description": "Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-as-template" + }, + { + "description": "Denies the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-menu" + }, + { + "description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-show-menu-on-left-click" + }, + { + "description": "Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-temp-dir-path" + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-title" + }, + { + "description": "Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-tooltip" + }, + { + "description": "Denies the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-visible" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:webview:default" + }, + { + "description": "Enables the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-clear-all-browsing-data" + }, + { + "description": "Enables the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview" + }, + { + "description": "Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview-window" + }, + { + "description": "Enables the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-get-all-webviews" + }, + { + "description": "Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-internal-toggle-devtools" + }, + { + "description": "Enables the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-print" + }, + { + "description": "Enables the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-reparent" + }, + { + "description": "Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-focus" + }, + { + "description": "Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-position" + }, + { + "description": "Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-size" + }, + { + "description": "Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-zoom" + }, + { + "description": "Enables the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-close" + }, + { + "description": "Enables the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-hide" + }, + { + "description": "Enables the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-position" + }, + { + "description": "Enables the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-show" + }, + { + "description": "Enables the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-size" + }, + { + "description": "Denies the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-clear-all-browsing-data" + }, + { + "description": "Denies the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview" + }, + { + "description": "Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview-window" + }, + { + "description": "Denies the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-get-all-webviews" + }, + { + "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-internal-toggle-devtools" + }, + { + "description": "Denies the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-print" + }, + { + "description": "Denies the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-reparent" + }, + { + "description": "Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-focus" + }, + { + "description": "Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-position" + }, + { + "description": "Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-size" + }, + { + "description": "Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-zoom" + }, + { + "description": "Denies the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-close" + }, + { + "description": "Denies the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-hide" + }, + { + "description": "Denies the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-position" + }, + { + "description": "Denies the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-show" + }, + { + "description": "Denies the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-size" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:window:default" + }, + { + "description": "Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-available-monitors" + }, + { + "description": "Enables the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-center" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-close" + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-create" + }, + { + "description": "Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-current-monitor" + }, + { + "description": "Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-cursor-position" + }, + { + "description": "Enables the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-destroy" + }, + { + "description": "Enables the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-get-all-windows" + }, + { + "description": "Enables the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-hide" + }, + { + "description": "Enables the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-position" + }, + { + "description": "Enables the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-size" + }, + { + "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-internal-toggle-maximize" + }, + { + "description": "Enables the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-closable" + }, + { + "description": "Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-decorated" + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-enabled" + }, + { + "description": "Enables the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-focused" + }, + { + "description": "Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-fullscreen" + }, + { + "description": "Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximizable" + }, + { + "description": "Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximized" + }, + { + "description": "Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimizable" + }, + { + "description": "Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimized" + }, + { + "description": "Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-resizable" + }, + { + "description": "Enables the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-visible" + }, + { + "description": "Enables the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-maximize" + }, + { + "description": "Enables the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-minimize" + }, + { + "description": "Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-monitor-from-point" + }, + { + "description": "Enables the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-position" + }, + { + "description": "Enables the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-size" + }, + { + "description": "Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-primary-monitor" + }, + { + "description": "Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-request-user-attention" + }, + { + "description": "Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scale-factor" + }, + { + "description": "Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-bottom" + }, + { + "description": "Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-top" + }, + { + "description": "Enables the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-closable" + }, + { + "description": "Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-content-protected" + }, + { + "description": "Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-grab" + }, + { + "description": "Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-icon" + }, + { + "description": "Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-position" + }, + { + "description": "Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-visible" + }, + { + "description": "Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-decorations" + }, + { + "description": "Enables the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-effects" + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-enabled" + }, + { + "description": "Enables the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focus" + }, + { + "description": "Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-fullscreen" + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-icon" + }, + { + "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-ignore-cursor-events" + }, + { + "description": "Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-max-size" + }, + { + "description": "Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-maximizable" + }, + { + "description": "Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-min-size" + }, + { + "description": "Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-minimizable" + }, + { + "description": "Enables the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-position" + }, + { + "description": "Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-progress-bar" + }, + { + "description": "Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-resizable" + }, + { + "description": "Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-shadow" + }, + { + "description": "Enables the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size" + }, + { + "description": "Enables the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size-constraints" + }, + { + "description": "Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-skip-taskbar" + }, + { + "description": "Enables the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-theme" + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title" + }, + { + "description": "Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title-bar-style" + }, + { + "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-visible-on-all-workspaces" + }, + { + "description": "Enables the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-show" + }, + { + "description": "Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-dragging" + }, + { + "description": "Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-resize-dragging" + }, + { + "description": "Enables the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-theme" + }, + { + "description": "Enables the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-title" + }, + { + "description": "Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-toggle-maximize" + }, + { + "description": "Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unmaximize" + }, + { + "description": "Enables the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unminimize" + }, + { + "description": "Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-available-monitors" + }, + { + "description": "Denies the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-center" + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-close" + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-create" + }, + { + "description": "Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-current-monitor" + }, + { + "description": "Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-cursor-position" + }, + { + "description": "Denies the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-destroy" + }, + { + "description": "Denies the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-get-all-windows" + }, + { + "description": "Denies the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-hide" + }, + { + "description": "Denies the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-position" + }, + { + "description": "Denies the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-size" + }, + { + "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-internal-toggle-maximize" + }, + { + "description": "Denies the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-closable" + }, + { + "description": "Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-decorated" + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-enabled" + }, + { + "description": "Denies the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-focused" + }, + { + "description": "Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-fullscreen" + }, + { + "description": "Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximizable" + }, + { + "description": "Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximized" + }, + { + "description": "Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimizable" + }, + { + "description": "Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimized" + }, + { + "description": "Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-resizable" + }, + { + "description": "Denies the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-visible" + }, + { + "description": "Denies the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-maximize" + }, + { + "description": "Denies the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-minimize" + }, + { + "description": "Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-monitor-from-point" + }, + { + "description": "Denies the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-position" + }, + { + "description": "Denies the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-size" + }, + { + "description": "Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-primary-monitor" + }, + { + "description": "Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-request-user-attention" + }, + { + "description": "Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scale-factor" + }, + { + "description": "Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-bottom" + }, + { + "description": "Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-top" + }, + { + "description": "Denies the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-closable" + }, + { + "description": "Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-content-protected" + }, + { + "description": "Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-grab" + }, + { + "description": "Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-icon" + }, + { + "description": "Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-position" + }, + { + "description": "Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-visible" + }, + { + "description": "Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-decorations" + }, + { + "description": "Denies the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-effects" + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-enabled" + }, + { + "description": "Denies the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focus" + }, + { + "description": "Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-fullscreen" + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-icon" + }, + { + "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-ignore-cursor-events" + }, + { + "description": "Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-max-size" + }, + { + "description": "Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-maximizable" + }, + { + "description": "Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-min-size" + }, + { + "description": "Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-minimizable" + }, + { + "description": "Denies the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-position" + }, + { + "description": "Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-progress-bar" + }, + { + "description": "Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-resizable" + }, + { + "description": "Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-shadow" + }, + { + "description": "Denies the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size" + }, + { + "description": "Denies the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size-constraints" + }, + { + "description": "Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-skip-taskbar" + }, + { + "description": "Denies the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-theme" + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title" + }, + { + "description": "Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title-bar-style" + }, + { + "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-visible-on-all-workspaces" + }, + { + "description": "Denies the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-show" + }, + { + "description": "Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-dragging" + }, + { + "description": "Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-resize-dragging" + }, + { + "description": "Denies the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-theme" + }, + { + "description": "Denies the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-title" + }, + { + "description": "Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-toggle-maximize" + }, + { + "description": "Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unmaximize" + }, + { + "description": "Denies the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unminimize" + }, + { + "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", + "type": "string", + "const": "fs:default" + }, + { + "description": "This allows non-recursive read access to metadata of the application folders, including file listing and statistics.", + "type": "string", + "const": "fs:allow-app-meta" + }, + { + "description": "This allows full recursive read access to metadata of the application folders, including file listing and statistics.", + "type": "string", + "const": "fs:allow-app-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the application folders.", + "type": "string", + "const": "fs:allow-app-read" + }, + { + "description": "This allows full recursive read access to the complete application folders, files and subdirectories.", + "type": "string", + "const": "fs:allow-app-read-recursive" + }, + { + "description": "This allows non-recursive write access to the application folders.", + "type": "string", + "const": "fs:allow-app-write" + }, + { + "description": "This allows full recursive write access to the complete application folders, files and subdirectories.", + "type": "string", + "const": "fs:allow-app-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appcache-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appcache-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPCACHE` folder.", + "type": "string", + "const": "fs:allow-appcache-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appcache-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPCACHE` folder.", + "type": "string", + "const": "fs:allow-appcache-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appcache-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appconfig-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appconfig-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:allow-appconfig-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appconfig-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:allow-appconfig-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appconfig-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appdata-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appdata-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPDATA` folder.", + "type": "string", + "const": "fs:allow-appdata-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appdata-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPDATA` folder.", + "type": "string", + "const": "fs:allow-appdata-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appdata-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applocaldata-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applocaldata-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:allow-applocaldata-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applocaldata-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:allow-applocaldata-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applocaldata-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applog-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applog-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPLOG` folder.", + "type": "string", + "const": "fs:allow-applog-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applog-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPLOG` folder.", + "type": "string", + "const": "fs:allow-applog-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applog-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-audio-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-audio-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$AUDIO` folder.", + "type": "string", + "const": "fs:allow-audio-read" + }, + { + "description": "This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-audio-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$AUDIO` folder.", + "type": "string", + "const": "fs:allow-audio-write" + }, + { + "description": "This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-audio-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-cache-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-cache-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$CACHE` folder.", + "type": "string", + "const": "fs:allow-cache-read" + }, + { + "description": "This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-cache-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$CACHE` folder.", + "type": "string", + "const": "fs:allow-cache-write" + }, + { + "description": "This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-cache-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-config-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-config-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$CONFIG` folder.", + "type": "string", + "const": "fs:allow-config-read" + }, + { + "description": "This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-config-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$CONFIG` folder.", + "type": "string", + "const": "fs:allow-config-write" + }, + { + "description": "This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-config-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-data-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-data-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DATA` folder.", + "type": "string", + "const": "fs:allow-data-read" + }, + { + "description": "This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-data-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DATA` folder.", + "type": "string", + "const": "fs:allow-data-write" + }, + { + "description": "This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-data-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-desktop-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-desktop-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DESKTOP` folder.", + "type": "string", + "const": "fs:allow-desktop-read" + }, + { + "description": "This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-desktop-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DESKTOP` folder.", + "type": "string", + "const": "fs:allow-desktop-write" + }, + { + "description": "This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-desktop-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-document-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-document-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:allow-document-read" + }, + { + "description": "This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-document-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:allow-document-write" + }, + { + "description": "This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-document-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-download-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-download-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:allow-download-read" + }, + { + "description": "This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-download-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:allow-download-write" + }, + { + "description": "This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-download-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-exe-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-exe-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$EXE` folder.", + "type": "string", + "const": "fs:allow-exe-read" + }, + { + "description": "This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-exe-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$EXE` folder.", + "type": "string", + "const": "fs:allow-exe-write" + }, + { + "description": "This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-exe-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-font-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-font-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$FONT` folder.", + "type": "string", + "const": "fs:allow-font-read" + }, + { + "description": "This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-font-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$FONT` folder.", + "type": "string", + "const": "fs:allow-font-write" + }, + { + "description": "This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-font-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-home-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-home-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$HOME` folder.", + "type": "string", + "const": "fs:allow-home-read" + }, + { + "description": "This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-home-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$HOME` folder.", + "type": "string", + "const": "fs:allow-home-write" + }, + { + "description": "This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-home-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-localdata-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-localdata-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:allow-localdata-read" + }, + { + "description": "This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-localdata-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:allow-localdata-write" + }, + { + "description": "This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-localdata-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-log-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-log-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$LOG` folder.", + "type": "string", + "const": "fs:allow-log-read" + }, + { + "description": "This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-log-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$LOG` folder.", + "type": "string", + "const": "fs:allow-log-write" + }, + { + "description": "This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-log-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-picture-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-picture-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$PICTURE` folder.", + "type": "string", + "const": "fs:allow-picture-read" + }, + { + "description": "This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-picture-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$PICTURE` folder.", + "type": "string", + "const": "fs:allow-picture-write" + }, + { + "description": "This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-picture-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-public-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-public-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$PUBLIC` folder.", + "type": "string", + "const": "fs:allow-public-read" + }, + { + "description": "This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-public-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$PUBLIC` folder.", + "type": "string", + "const": "fs:allow-public-write" + }, + { + "description": "This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-public-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-resource-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-resource-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$RESOURCE` folder.", + "type": "string", + "const": "fs:allow-resource-read" + }, + { + "description": "This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-resource-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$RESOURCE` folder.", + "type": "string", + "const": "fs:allow-resource-write" + }, + { + "description": "This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-resource-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-runtime-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-runtime-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$RUNTIME` folder.", + "type": "string", + "const": "fs:allow-runtime-read" + }, + { + "description": "This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-runtime-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$RUNTIME` folder.", + "type": "string", + "const": "fs:allow-runtime-write" + }, + { + "description": "This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-runtime-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-temp-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-temp-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$TEMP` folder.", + "type": "string", + "const": "fs:allow-temp-read" + }, + { + "description": "This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-temp-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$TEMP` folder.", + "type": "string", + "const": "fs:allow-temp-write" + }, + { + "description": "This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-temp-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-template-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-template-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:allow-template-read" + }, + { + "description": "This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-template-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:allow-template-write" + }, + { + "description": "This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-template-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-video-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-video-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$VIDEO` folder.", + "type": "string", + "const": "fs:allow-video-read" + }, + { + "description": "This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-video-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$VIDEO` folder.", + "type": "string", + "const": "fs:allow-video-write" + }, + { + "description": "This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-video-write-recursive" + }, + { + "description": "This denies access to dangerous Tauri relevant files and folders by default.", + "type": "string", + "const": "fs:deny-default" + }, + { + "description": "Enables the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-copy-file" + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-create" + }, + { + "description": "Enables the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-exists" + }, + { + "description": "Enables the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-fstat" + }, + { + "description": "Enables the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-ftruncate" + }, + { + "description": "Enables the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-lstat" + }, + { + "description": "Enables the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-mkdir" + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-open" + }, + { + "description": "Enables the read command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read" + }, + { + "description": "Enables the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-dir" + }, + { + "description": "Enables the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-file" + }, + { + "description": "Enables the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file" + }, + { + "description": "Enables the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines" + }, + { + "description": "Enables the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines-next" + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-remove" + }, + { + "description": "Enables the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-rename" + }, + { + "description": "Enables the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-seek" + }, + { + "description": "Enables the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-stat" + }, + { + "description": "Enables the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-truncate" + }, + { + "description": "Enables the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-unwatch" + }, + { + "description": "Enables the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-watch" + }, + { + "description": "Enables the write command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write" + }, + { + "description": "Enables the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-file" + }, + { + "description": "Enables the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-text-file" + }, + { + "description": "This permissions allows to create the application specific directories.\n", + "type": "string", + "const": "fs:create-app-specific-dirs" + }, + { + "description": "Denies the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-copy-file" + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-create" + }, + { + "description": "Denies the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-exists" + }, + { + "description": "Denies the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-fstat" + }, + { + "description": "Denies the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-ftruncate" + }, + { + "description": "Denies the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-lstat" + }, + { + "description": "Denies the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-mkdir" + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-open" + }, + { + "description": "Denies the read command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read" + }, + { + "description": "Denies the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-dir" + }, + { + "description": "Denies the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-file" + }, + { + "description": "Denies the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file" + }, + { + "description": "Denies the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines" + }, + { + "description": "Denies the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines-next" + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-remove" + }, + { + "description": "Denies the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-rename" + }, + { + "description": "Denies the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-seek" + }, + { + "description": "Denies the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-stat" + }, + { + "description": "Denies the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-truncate" + }, + { + "description": "Denies the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-unwatch" + }, + { + "description": "Denies the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-watch" + }, + { + "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": "fs:deny-webview-data-linux" + }, + { + "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": "fs:deny-webview-data-windows" + }, + { + "description": "Denies the write command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write" + }, + { + "description": "Denies the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-file" + }, + { + "description": "Denies the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-text-file" + }, + { + "description": "This enables all read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-all" + }, + { + "description": "This permission allows recursive read functionality on the application\nspecific base directories. \n", + "type": "string", + "const": "fs:read-app-specific-dirs-recursive" + }, + { + "description": "This enables directory read and file metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-dirs" + }, + { + "description": "This enables file read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-files" + }, + { + "description": "This enables all index or metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-meta" + }, + { + "description": "An empty permission you can use to modify the global scope.", + "type": "string", + "const": "fs:scope" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the application folders.", + "type": "string", + "const": "fs:scope-app" + }, + { + "description": "This scope permits to list all files and folders in the application directories.", + "type": "string", + "const": "fs:scope-app-index" + }, + { + "description": "This scope permits recursive access to the complete application folders, including sub directories and files.", + "type": "string", + "const": "fs:scope-app-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder.", + "type": "string", + "const": "fs:scope-appcache" + }, + { + "description": "This scope permits to list all files and folders in the `$APPCACHE`folder.", + "type": "string", + "const": "fs:scope-appcache-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appcache-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:scope-appconfig" + }, + { + "description": "This scope permits to list all files and folders in the `$APPCONFIG`folder.", + "type": "string", + "const": "fs:scope-appconfig-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appconfig-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPDATA` folder.", + "type": "string", + "const": "fs:scope-appdata" + }, + { + "description": "This scope permits to list all files and folders in the `$APPDATA`folder.", + "type": "string", + "const": "fs:scope-appdata-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appdata-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:scope-applocaldata" + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOCALDATA`folder.", + "type": "string", + "const": "fs:scope-applocaldata-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applocaldata-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOG` folder.", + "type": "string", + "const": "fs:scope-applog" + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOG`folder.", + "type": "string", + "const": "fs:scope-applog-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applog-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$AUDIO` folder.", + "type": "string", + "const": "fs:scope-audio" + }, + { + "description": "This scope permits to list all files and folders in the `$AUDIO`folder.", + "type": "string", + "const": "fs:scope-audio-index" + }, + { + "description": "This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-audio-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CACHE` folder.", + "type": "string", + "const": "fs:scope-cache" + }, + { + "description": "This scope permits to list all files and folders in the `$CACHE`folder.", + "type": "string", + "const": "fs:scope-cache-index" + }, + { + "description": "This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-cache-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CONFIG` folder.", + "type": "string", + "const": "fs:scope-config" + }, + { + "description": "This scope permits to list all files and folders in the `$CONFIG`folder.", + "type": "string", + "const": "fs:scope-config-index" + }, + { + "description": "This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-config-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DATA` folder.", + "type": "string", + "const": "fs:scope-data" + }, + { + "description": "This scope permits to list all files and folders in the `$DATA`folder.", + "type": "string", + "const": "fs:scope-data-index" + }, + { + "description": "This scope permits recursive access to the complete `$DATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-data-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder.", + "type": "string", + "const": "fs:scope-desktop" + }, + { + "description": "This scope permits to list all files and folders in the `$DESKTOP`folder.", + "type": "string", + "const": "fs:scope-desktop-index" + }, + { + "description": "This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-desktop-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:scope-document" + }, + { + "description": "This scope permits to list all files and folders in the `$DOCUMENT`folder.", + "type": "string", + "const": "fs:scope-document-index" + }, + { + "description": "This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-document-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:scope-download" + }, + { + "description": "This scope permits to list all files and folders in the `$DOWNLOAD`folder.", + "type": "string", + "const": "fs:scope-download-index" + }, + { + "description": "This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-download-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$EXE` folder.", + "type": "string", + "const": "fs:scope-exe" + }, + { + "description": "This scope permits to list all files and folders in the `$EXE`folder.", + "type": "string", + "const": "fs:scope-exe-index" + }, + { + "description": "This scope permits recursive access to the complete `$EXE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-exe-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$FONT` folder.", + "type": "string", + "const": "fs:scope-font" + }, + { + "description": "This scope permits to list all files and folders in the `$FONT`folder.", + "type": "string", + "const": "fs:scope-font-index" + }, + { + "description": "This scope permits recursive access to the complete `$FONT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-font-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$HOME` folder.", + "type": "string", + "const": "fs:scope-home" + }, + { + "description": "This scope permits to list all files and folders in the `$HOME`folder.", + "type": "string", + "const": "fs:scope-home-index" + }, + { + "description": "This scope permits recursive access to the complete `$HOME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-home-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:scope-localdata" + }, + { + "description": "This scope permits to list all files and folders in the `$LOCALDATA`folder.", + "type": "string", + "const": "fs:scope-localdata-index" + }, + { + "description": "This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-localdata-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOG` folder.", + "type": "string", + "const": "fs:scope-log" + }, + { + "description": "This scope permits to list all files and folders in the `$LOG`folder.", + "type": "string", + "const": "fs:scope-log-index" + }, + { + "description": "This scope permits recursive access to the complete `$LOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-log-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PICTURE` folder.", + "type": "string", + "const": "fs:scope-picture" + }, + { + "description": "This scope permits to list all files and folders in the `$PICTURE`folder.", + "type": "string", + "const": "fs:scope-picture-index" + }, + { + "description": "This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-picture-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder.", + "type": "string", + "const": "fs:scope-public" + }, + { + "description": "This scope permits to list all files and folders in the `$PUBLIC`folder.", + "type": "string", + "const": "fs:scope-public-index" + }, + { + "description": "This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-public-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder.", + "type": "string", + "const": "fs:scope-resource" + }, + { + "description": "This scope permits to list all files and folders in the `$RESOURCE`folder.", + "type": "string", + "const": "fs:scope-resource-index" + }, + { + "description": "This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-resource-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder.", + "type": "string", + "const": "fs:scope-runtime" + }, + { + "description": "This scope permits to list all files and folders in the `$RUNTIME`folder.", + "type": "string", + "const": "fs:scope-runtime-index" + }, + { + "description": "This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-runtime-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMP` folder.", + "type": "string", + "const": "fs:scope-temp" + }, + { + "description": "This scope permits to list all files and folders in the `$TEMP`folder.", + "type": "string", + "const": "fs:scope-temp-index" + }, + { + "description": "This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-temp-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:scope-template" + }, + { + "description": "This scope permits to list all files and folders in the `$TEMPLATE`folder.", + "type": "string", + "const": "fs:scope-template-index" + }, + { + "description": "This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-template-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$VIDEO` folder.", + "type": "string", + "const": "fs:scope-video" + }, + { + "description": "This scope permits to list all files and folders in the `$VIDEO`folder.", + "type": "string", + "const": "fs:scope-video-index" + }, + { + "description": "This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-video-recursive" + }, + { + "description": "This enables all write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-all" + }, + { + "description": "This enables all file write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-files" + }, + { + "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", + "type": "string", + "const": "shell:default" + }, + { + "description": "Enables the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-execute" + }, + { + "description": "Enables the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-kill" + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-open" + }, + { + "description": "Enables the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-spawn" + }, + { + "description": "Enables the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-stdin-write" + }, + { + "description": "Denies the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-execute" + }, + { + "description": "Denies the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-kill" + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-open" + }, + { + "description": "Denies the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-spawn" + }, + { + "description": "Denies the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-stdin-write" + } + ] + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": [ + "macOS" + ] + }, + { + "description": "Windows.", + "type": "string", + "enum": [ + "windows" + ] + }, + { + "description": "Linux.", + "type": "string", + "enum": [ + "linux" + ] + }, + { + "description": "Android.", + "type": "string", + "enum": [ + "android" + ] + }, + { + "description": "iOS.", + "type": "string", + "enum": [ + "iOS" + ] + } + ] + }, + "ShellScopeEntryAllowedArgs": { + "description": "A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration.", + "anyOf": [ + { + "description": "Use a simple boolean to allow all or disable all arguments to this command configuration.", + "type": "boolean" + }, + { + "description": "A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.", + "type": "array", + "items": { + "$ref": "#/definitions/ShellScopeEntryAllowedArg" + } + } + ] + }, + "ShellScopeEntryAllowedArg": { + "description": "A command argument allowed to be executed by the webview API.", + "anyOf": [ + { + "description": "A non-configurable argument that is passed to the command in the order it was specified.", + "type": "string" + }, + { + "description": "A variable that is set while calling the command from the webview API.", + "type": "object", + "required": [ + "validator" + ], + "properties": { + "validator": { + "description": "[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: ", + "type": "string" + }, + "raw": { + "description": "Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.", + "default": false, + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + } +} \ No newline at end of file diff --git a/archived/lunar/src-tauri/gen/schemas/macOS-schema.json b/archived/lunar/src-tauri/gen/schemas/macOS-schema.json new file mode 100644 index 00000000..6d0ac276 --- /dev/null +++ b/archived/lunar/src-tauri/gen/schemas/macOS-schema.json @@ -0,0 +1,4986 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CapabilityFile", + "description": "Capability formats accepted in a capability file.", + "anyOf": [ + { + "description": "A single capability.", + "allOf": [ + { + "$ref": "#/definitions/Capability" + } + ] + }, + { + "description": "A list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + }, + { + "description": "A list of capabilities.", + "type": "object", + "required": [ + "capabilities" + ], + "properties": { + "capabilities": { + "description": "The list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + } + } + } + ], + "definitions": { + "Capability": { + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": [ + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "anyOf": [ + { + "$ref": "#/definitions/CapabilityRemote" + }, + { + "type": "null" + } + ] + }, + "local": { + "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", + "default": true, + "type": "boolean" + }, + "windows": { + "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ] ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "CapabilityRemote": { + "description": "Configuration for remote URLs that are associated with the capability.", + "type": "object", + "required": [ + "urls" + ], + "properties": { + "urls": { + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionEntry": { + "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", + "anyOf": [ + { + "description": "Reference a permission or permission set by identifier.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + { + "description": "Reference a permission or permission set by identifier and extends its scope.", + "type": "object", + "allOf": [ + { + "if": { + "properties": { + "identifier": { + "anyOf": [ + { + "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", + "type": "string", + "const": "fs:default" + }, + { + "description": "This allows non-recursive read access to metadata of the application folders, including file listing and statistics.", + "type": "string", + "const": "fs:allow-app-meta" + }, + { + "description": "This allows full recursive read access to metadata of the application folders, including file listing and statistics.", + "type": "string", + "const": "fs:allow-app-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the application folders.", + "type": "string", + "const": "fs:allow-app-read" + }, + { + "description": "This allows full recursive read access to the complete application folders, files and subdirectories.", + "type": "string", + "const": "fs:allow-app-read-recursive" + }, + { + "description": "This allows non-recursive write access to the application folders.", + "type": "string", + "const": "fs:allow-app-write" + }, + { + "description": "This allows full recursive write access to the complete application folders, files and subdirectories.", + "type": "string", + "const": "fs:allow-app-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appcache-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appcache-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPCACHE` folder.", + "type": "string", + "const": "fs:allow-appcache-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appcache-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPCACHE` folder.", + "type": "string", + "const": "fs:allow-appcache-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appcache-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appconfig-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appconfig-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:allow-appconfig-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appconfig-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:allow-appconfig-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appconfig-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appdata-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appdata-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPDATA` folder.", + "type": "string", + "const": "fs:allow-appdata-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appdata-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPDATA` folder.", + "type": "string", + "const": "fs:allow-appdata-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appdata-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applocaldata-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applocaldata-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:allow-applocaldata-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applocaldata-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:allow-applocaldata-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applocaldata-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applog-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applog-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPLOG` folder.", + "type": "string", + "const": "fs:allow-applog-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applog-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPLOG` folder.", + "type": "string", + "const": "fs:allow-applog-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applog-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-audio-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-audio-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$AUDIO` folder.", + "type": "string", + "const": "fs:allow-audio-read" + }, + { + "description": "This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-audio-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$AUDIO` folder.", + "type": "string", + "const": "fs:allow-audio-write" + }, + { + "description": "This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-audio-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-cache-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-cache-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$CACHE` folder.", + "type": "string", + "const": "fs:allow-cache-read" + }, + { + "description": "This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-cache-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$CACHE` folder.", + "type": "string", + "const": "fs:allow-cache-write" + }, + { + "description": "This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-cache-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-config-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-config-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$CONFIG` folder.", + "type": "string", + "const": "fs:allow-config-read" + }, + { + "description": "This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-config-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$CONFIG` folder.", + "type": "string", + "const": "fs:allow-config-write" + }, + { + "description": "This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-config-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-data-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-data-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DATA` folder.", + "type": "string", + "const": "fs:allow-data-read" + }, + { + "description": "This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-data-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DATA` folder.", + "type": "string", + "const": "fs:allow-data-write" + }, + { + "description": "This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-data-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-desktop-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-desktop-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DESKTOP` folder.", + "type": "string", + "const": "fs:allow-desktop-read" + }, + { + "description": "This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-desktop-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DESKTOP` folder.", + "type": "string", + "const": "fs:allow-desktop-write" + }, + { + "description": "This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-desktop-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-document-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-document-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:allow-document-read" + }, + { + "description": "This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-document-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:allow-document-write" + }, + { + "description": "This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-document-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-download-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-download-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:allow-download-read" + }, + { + "description": "This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-download-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:allow-download-write" + }, + { + "description": "This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-download-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-exe-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-exe-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$EXE` folder.", + "type": "string", + "const": "fs:allow-exe-read" + }, + { + "description": "This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-exe-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$EXE` folder.", + "type": "string", + "const": "fs:allow-exe-write" + }, + { + "description": "This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-exe-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-font-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-font-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$FONT` folder.", + "type": "string", + "const": "fs:allow-font-read" + }, + { + "description": "This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-font-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$FONT` folder.", + "type": "string", + "const": "fs:allow-font-write" + }, + { + "description": "This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-font-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-home-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-home-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$HOME` folder.", + "type": "string", + "const": "fs:allow-home-read" + }, + { + "description": "This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-home-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$HOME` folder.", + "type": "string", + "const": "fs:allow-home-write" + }, + { + "description": "This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-home-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-localdata-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-localdata-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:allow-localdata-read" + }, + { + "description": "This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-localdata-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:allow-localdata-write" + }, + { + "description": "This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-localdata-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-log-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-log-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$LOG` folder.", + "type": "string", + "const": "fs:allow-log-read" + }, + { + "description": "This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-log-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$LOG` folder.", + "type": "string", + "const": "fs:allow-log-write" + }, + { + "description": "This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-log-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-picture-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-picture-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$PICTURE` folder.", + "type": "string", + "const": "fs:allow-picture-read" + }, + { + "description": "This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-picture-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$PICTURE` folder.", + "type": "string", + "const": "fs:allow-picture-write" + }, + { + "description": "This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-picture-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-public-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-public-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$PUBLIC` folder.", + "type": "string", + "const": "fs:allow-public-read" + }, + { + "description": "This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-public-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$PUBLIC` folder.", + "type": "string", + "const": "fs:allow-public-write" + }, + { + "description": "This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-public-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-resource-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-resource-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$RESOURCE` folder.", + "type": "string", + "const": "fs:allow-resource-read" + }, + { + "description": "This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-resource-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$RESOURCE` folder.", + "type": "string", + "const": "fs:allow-resource-write" + }, + { + "description": "This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-resource-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-runtime-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-runtime-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$RUNTIME` folder.", + "type": "string", + "const": "fs:allow-runtime-read" + }, + { + "description": "This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-runtime-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$RUNTIME` folder.", + "type": "string", + "const": "fs:allow-runtime-write" + }, + { + "description": "This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-runtime-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-temp-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-temp-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$TEMP` folder.", + "type": "string", + "const": "fs:allow-temp-read" + }, + { + "description": "This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-temp-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$TEMP` folder.", + "type": "string", + "const": "fs:allow-temp-write" + }, + { + "description": "This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-temp-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-template-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-template-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:allow-template-read" + }, + { + "description": "This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-template-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:allow-template-write" + }, + { + "description": "This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-template-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-video-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-video-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$VIDEO` folder.", + "type": "string", + "const": "fs:allow-video-read" + }, + { + "description": "This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-video-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$VIDEO` folder.", + "type": "string", + "const": "fs:allow-video-write" + }, + { + "description": "This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-video-write-recursive" + }, + { + "description": "This denies access to dangerous Tauri relevant files and folders by default.", + "type": "string", + "const": "fs:deny-default" + }, + { + "description": "Enables the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-copy-file" + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-create" + }, + { + "description": "Enables the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-exists" + }, + { + "description": "Enables the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-fstat" + }, + { + "description": "Enables the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-ftruncate" + }, + { + "description": "Enables the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-lstat" + }, + { + "description": "Enables the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-mkdir" + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-open" + }, + { + "description": "Enables the read command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read" + }, + { + "description": "Enables the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-dir" + }, + { + "description": "Enables the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-file" + }, + { + "description": "Enables the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file" + }, + { + "description": "Enables the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines" + }, + { + "description": "Enables the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines-next" + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-remove" + }, + { + "description": "Enables the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-rename" + }, + { + "description": "Enables the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-seek" + }, + { + "description": "Enables the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-stat" + }, + { + "description": "Enables the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-truncate" + }, + { + "description": "Enables the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-unwatch" + }, + { + "description": "Enables the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-watch" + }, + { + "description": "Enables the write command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write" + }, + { + "description": "Enables the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-file" + }, + { + "description": "Enables the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-text-file" + }, + { + "description": "This permissions allows to create the application specific directories.\n", + "type": "string", + "const": "fs:create-app-specific-dirs" + }, + { + "description": "Denies the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-copy-file" + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-create" + }, + { + "description": "Denies the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-exists" + }, + { + "description": "Denies the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-fstat" + }, + { + "description": "Denies the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-ftruncate" + }, + { + "description": "Denies the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-lstat" + }, + { + "description": "Denies the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-mkdir" + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-open" + }, + { + "description": "Denies the read command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read" + }, + { + "description": "Denies the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-dir" + }, + { + "description": "Denies the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-file" + }, + { + "description": "Denies the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file" + }, + { + "description": "Denies the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines" + }, + { + "description": "Denies the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines-next" + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-remove" + }, + { + "description": "Denies the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-rename" + }, + { + "description": "Denies the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-seek" + }, + { + "description": "Denies the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-stat" + }, + { + "description": "Denies the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-truncate" + }, + { + "description": "Denies the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-unwatch" + }, + { + "description": "Denies the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-watch" + }, + { + "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": "fs:deny-webview-data-linux" + }, + { + "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": "fs:deny-webview-data-windows" + }, + { + "description": "Denies the write command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write" + }, + { + "description": "Denies the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-file" + }, + { + "description": "Denies the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-text-file" + }, + { + "description": "This enables all read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-all" + }, + { + "description": "This permission allows recursive read functionality on the application\nspecific base directories. \n", + "type": "string", + "const": "fs:read-app-specific-dirs-recursive" + }, + { + "description": "This enables directory read and file metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-dirs" + }, + { + "description": "This enables file read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-files" + }, + { + "description": "This enables all index or metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-meta" + }, + { + "description": "An empty permission you can use to modify the global scope.", + "type": "string", + "const": "fs:scope" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the application folders.", + "type": "string", + "const": "fs:scope-app" + }, + { + "description": "This scope permits to list all files and folders in the application directories.", + "type": "string", + "const": "fs:scope-app-index" + }, + { + "description": "This scope permits recursive access to the complete application folders, including sub directories and files.", + "type": "string", + "const": "fs:scope-app-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder.", + "type": "string", + "const": "fs:scope-appcache" + }, + { + "description": "This scope permits to list all files and folders in the `$APPCACHE`folder.", + "type": "string", + "const": "fs:scope-appcache-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appcache-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:scope-appconfig" + }, + { + "description": "This scope permits to list all files and folders in the `$APPCONFIG`folder.", + "type": "string", + "const": "fs:scope-appconfig-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appconfig-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPDATA` folder.", + "type": "string", + "const": "fs:scope-appdata" + }, + { + "description": "This scope permits to list all files and folders in the `$APPDATA`folder.", + "type": "string", + "const": "fs:scope-appdata-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appdata-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:scope-applocaldata" + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOCALDATA`folder.", + "type": "string", + "const": "fs:scope-applocaldata-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applocaldata-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOG` folder.", + "type": "string", + "const": "fs:scope-applog" + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOG`folder.", + "type": "string", + "const": "fs:scope-applog-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applog-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$AUDIO` folder.", + "type": "string", + "const": "fs:scope-audio" + }, + { + "description": "This scope permits to list all files and folders in the `$AUDIO`folder.", + "type": "string", + "const": "fs:scope-audio-index" + }, + { + "description": "This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-audio-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CACHE` folder.", + "type": "string", + "const": "fs:scope-cache" + }, + { + "description": "This scope permits to list all files and folders in the `$CACHE`folder.", + "type": "string", + "const": "fs:scope-cache-index" + }, + { + "description": "This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-cache-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CONFIG` folder.", + "type": "string", + "const": "fs:scope-config" + }, + { + "description": "This scope permits to list all files and folders in the `$CONFIG`folder.", + "type": "string", + "const": "fs:scope-config-index" + }, + { + "description": "This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-config-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DATA` folder.", + "type": "string", + "const": "fs:scope-data" + }, + { + "description": "This scope permits to list all files and folders in the `$DATA`folder.", + "type": "string", + "const": "fs:scope-data-index" + }, + { + "description": "This scope permits recursive access to the complete `$DATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-data-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder.", + "type": "string", + "const": "fs:scope-desktop" + }, + { + "description": "This scope permits to list all files and folders in the `$DESKTOP`folder.", + "type": "string", + "const": "fs:scope-desktop-index" + }, + { + "description": "This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-desktop-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:scope-document" + }, + { + "description": "This scope permits to list all files and folders in the `$DOCUMENT`folder.", + "type": "string", + "const": "fs:scope-document-index" + }, + { + "description": "This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-document-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:scope-download" + }, + { + "description": "This scope permits to list all files and folders in the `$DOWNLOAD`folder.", + "type": "string", + "const": "fs:scope-download-index" + }, + { + "description": "This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-download-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$EXE` folder.", + "type": "string", + "const": "fs:scope-exe" + }, + { + "description": "This scope permits to list all files and folders in the `$EXE`folder.", + "type": "string", + "const": "fs:scope-exe-index" + }, + { + "description": "This scope permits recursive access to the complete `$EXE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-exe-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$FONT` folder.", + "type": "string", + "const": "fs:scope-font" + }, + { + "description": "This scope permits to list all files and folders in the `$FONT`folder.", + "type": "string", + "const": "fs:scope-font-index" + }, + { + "description": "This scope permits recursive access to the complete `$FONT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-font-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$HOME` folder.", + "type": "string", + "const": "fs:scope-home" + }, + { + "description": "This scope permits to list all files and folders in the `$HOME`folder.", + "type": "string", + "const": "fs:scope-home-index" + }, + { + "description": "This scope permits recursive access to the complete `$HOME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-home-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:scope-localdata" + }, + { + "description": "This scope permits to list all files and folders in the `$LOCALDATA`folder.", + "type": "string", + "const": "fs:scope-localdata-index" + }, + { + "description": "This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-localdata-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOG` folder.", + "type": "string", + "const": "fs:scope-log" + }, + { + "description": "This scope permits to list all files and folders in the `$LOG`folder.", + "type": "string", + "const": "fs:scope-log-index" + }, + { + "description": "This scope permits recursive access to the complete `$LOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-log-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PICTURE` folder.", + "type": "string", + "const": "fs:scope-picture" + }, + { + "description": "This scope permits to list all files and folders in the `$PICTURE`folder.", + "type": "string", + "const": "fs:scope-picture-index" + }, + { + "description": "This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-picture-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder.", + "type": "string", + "const": "fs:scope-public" + }, + { + "description": "This scope permits to list all files and folders in the `$PUBLIC`folder.", + "type": "string", + "const": "fs:scope-public-index" + }, + { + "description": "This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-public-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder.", + "type": "string", + "const": "fs:scope-resource" + }, + { + "description": "This scope permits to list all files and folders in the `$RESOURCE`folder.", + "type": "string", + "const": "fs:scope-resource-index" + }, + { + "description": "This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-resource-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder.", + "type": "string", + "const": "fs:scope-runtime" + }, + { + "description": "This scope permits to list all files and folders in the `$RUNTIME`folder.", + "type": "string", + "const": "fs:scope-runtime-index" + }, + { + "description": "This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-runtime-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMP` folder.", + "type": "string", + "const": "fs:scope-temp" + }, + { + "description": "This scope permits to list all files and folders in the `$TEMP`folder.", + "type": "string", + "const": "fs:scope-temp-index" + }, + { + "description": "This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-temp-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:scope-template" + }, + { + "description": "This scope permits to list all files and folders in the `$TEMPLATE`folder.", + "type": "string", + "const": "fs:scope-template-index" + }, + { + "description": "This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-template-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$VIDEO` folder.", + "type": "string", + "const": "fs:scope-video" + }, + { + "description": "This scope permits to list all files and folders in the `$VIDEO`folder.", + "type": "string", + "const": "fs:scope-video-index" + }, + { + "description": "This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-video-recursive" + }, + { + "description": "This enables all write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-all" + }, + { + "description": "This enables all file write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-files" + } + ] + } + } + }, + "then": { + "properties": { + "allow": { + "items": { + "title": "FsScopeEntry", + "description": "FS scope entry.", + "anyOf": [ + { + "description": "FS scope path.", + "type": "string" + }, + { + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "description": "FS scope path.", + "type": "string" + } + } + } + ] + } + }, + "deny": { + "items": { + "title": "FsScopeEntry", + "description": "FS scope entry.", + "anyOf": [ + { + "description": "FS scope path.", + "type": "string" + }, + { + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "description": "FS scope path.", + "type": "string" + } + } + } + ] + } + } + } + }, + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + } + } + }, + { + "if": { + "properties": { + "identifier": { + "anyOf": [ + { + "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", + "type": "string", + "const": "shell:default" + }, + { + "description": "Enables the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-execute" + }, + { + "description": "Enables the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-kill" + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-open" + }, + { + "description": "Enables the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-spawn" + }, + { + "description": "Enables the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-stdin-write" + }, + { + "description": "Denies the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-execute" + }, + { + "description": "Denies the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-kill" + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-open" + }, + { + "description": "Denies the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-spawn" + }, + { + "description": "Denies the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-stdin-write" + } + ] + } + } + }, + "then": { + "properties": { + "allow": { + "items": { + "title": "ShellScopeEntry", + "description": "Shell scope entry.", + "anyOf": [ + { + "type": "object", + "required": [ + "cmd", + "name" + ], + "properties": { + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "cmd": { + "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + }, + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "name", + "sidecar" + ], + "properties": { + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "deny": { + "items": { + "title": "ShellScopeEntry", + "description": "Shell scope entry.", + "anyOf": [ + { + "type": "object", + "required": [ + "cmd", + "name" + ], + "properties": { + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "cmd": { + "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + }, + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "name", + "sidecar" + ], + "properties": { + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + } + } + }, + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + } + } + }, + { + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + "allow": { + "description": "Data that defines what is allowed by the scope.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + }, + "deny": { + "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + } + } + } + ], + "required": [ + "identifier" + ] + } + ] + }, + "Identifier": { + "description": "Permission identifier", + "oneOf": [ + { + "description": "Default core plugins set which includes:\n- 'core:path:default'\n- 'core:event:default'\n- 'core:window:default'\n- 'core:webview:default'\n- 'core:app:default'\n- 'core:image:default'\n- 'core:resources:default'\n- 'core:menu:default'\n- 'core:tray:default'\n", + "type": "string", + "const": "core:default" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:app:default" + }, + { + "description": "Enables the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-hide" + }, + { + "description": "Enables the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-show" + }, + { + "description": "Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-default-window-icon" + }, + { + "description": "Enables the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-name" + }, + { + "description": "Enables the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-app-theme" + }, + { + "description": "Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-tauri-version" + }, + { + "description": "Enables the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-version" + }, + { + "description": "Denies the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-hide" + }, + { + "description": "Denies the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-show" + }, + { + "description": "Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-default-window-icon" + }, + { + "description": "Denies the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-name" + }, + { + "description": "Denies the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-app-theme" + }, + { + "description": "Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-tauri-version" + }, + { + "description": "Denies the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-version" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:event:default" + }, + { + "description": "Enables the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit" + }, + { + "description": "Enables the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit-to" + }, + { + "description": "Enables the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-listen" + }, + { + "description": "Enables the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-unlisten" + }, + { + "description": "Denies the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit" + }, + { + "description": "Denies the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit-to" + }, + { + "description": "Denies the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-listen" + }, + { + "description": "Denies the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-unlisten" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:image:default" + }, + { + "description": "Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-bytes" + }, + { + "description": "Enables the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-path" + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-new" + }, + { + "description": "Enables the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-rgba" + }, + { + "description": "Enables the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-size" + }, + { + "description": "Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-bytes" + }, + { + "description": "Denies the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-path" + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-new" + }, + { + "description": "Denies the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-rgba" + }, + { + "description": "Denies the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-size" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:menu:default" + }, + { + "description": "Enables the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-append" + }, + { + "description": "Enables the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-create-default" + }, + { + "description": "Enables the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-get" + }, + { + "description": "Enables the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-insert" + }, + { + "description": "Enables the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-checked" + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-enabled" + }, + { + "description": "Enables the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-items" + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-new" + }, + { + "description": "Enables the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-popup" + }, + { + "description": "Enables the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-prepend" + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove" + }, + { + "description": "Enables the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove-at" + }, + { + "description": "Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-accelerator" + }, + { + "description": "Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-app-menu" + }, + { + "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-help-menu-for-nsapp" + }, + { + "description": "Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-window-menu" + }, + { + "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-windows-menu-for-nsapp" + }, + { + "description": "Enables the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-checked" + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-enabled" + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-icon" + }, + { + "description": "Enables the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-text" + }, + { + "description": "Enables the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-text" + }, + { + "description": "Denies the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-append" + }, + { + "description": "Denies the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-create-default" + }, + { + "description": "Denies the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-get" + }, + { + "description": "Denies the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-insert" + }, + { + "description": "Denies the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-checked" + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-enabled" + }, + { + "description": "Denies the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-items" + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-new" + }, + { + "description": "Denies the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-popup" + }, + { + "description": "Denies the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-prepend" + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove" + }, + { + "description": "Denies the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove-at" + }, + { + "description": "Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-accelerator" + }, + { + "description": "Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-app-menu" + }, + { + "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-help-menu-for-nsapp" + }, + { + "description": "Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-window-menu" + }, + { + "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-windows-menu-for-nsapp" + }, + { + "description": "Denies the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-checked" + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-enabled" + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-icon" + }, + { + "description": "Denies the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-text" + }, + { + "description": "Denies the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-text" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:path:default" + }, + { + "description": "Enables the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-basename" + }, + { + "description": "Enables the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-dirname" + }, + { + "description": "Enables the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-extname" + }, + { + "description": "Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-is-absolute" + }, + { + "description": "Enables the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-join" + }, + { + "description": "Enables the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-normalize" + }, + { + "description": "Enables the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve" + }, + { + "description": "Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve-directory" + }, + { + "description": "Denies the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-basename" + }, + { + "description": "Denies the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-dirname" + }, + { + "description": "Denies the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-extname" + }, + { + "description": "Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-is-absolute" + }, + { + "description": "Denies the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-join" + }, + { + "description": "Denies the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-normalize" + }, + { + "description": "Denies the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve" + }, + { + "description": "Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve-directory" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:resources:default" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:allow-close" + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:deny-close" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:tray:default" + }, + { + "description": "Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-get-by-id" + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-new" + }, + { + "description": "Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-remove-by-id" + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon" + }, + { + "description": "Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-as-template" + }, + { + "description": "Enables the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-menu" + }, + { + "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-show-menu-on-left-click" + }, + { + "description": "Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-temp-dir-path" + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-title" + }, + { + "description": "Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-tooltip" + }, + { + "description": "Enables the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-visible" + }, + { + "description": "Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-get-by-id" + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-new" + }, + { + "description": "Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-remove-by-id" + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon" + }, + { + "description": "Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-as-template" + }, + { + "description": "Denies the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-menu" + }, + { + "description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-show-menu-on-left-click" + }, + { + "description": "Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-temp-dir-path" + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-title" + }, + { + "description": "Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-tooltip" + }, + { + "description": "Denies the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-visible" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:webview:default" + }, + { + "description": "Enables the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-clear-all-browsing-data" + }, + { + "description": "Enables the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview" + }, + { + "description": "Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview-window" + }, + { + "description": "Enables the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-get-all-webviews" + }, + { + "description": "Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-internal-toggle-devtools" + }, + { + "description": "Enables the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-print" + }, + { + "description": "Enables the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-reparent" + }, + { + "description": "Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-focus" + }, + { + "description": "Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-position" + }, + { + "description": "Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-size" + }, + { + "description": "Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-zoom" + }, + { + "description": "Enables the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-close" + }, + { + "description": "Enables the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-hide" + }, + { + "description": "Enables the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-position" + }, + { + "description": "Enables the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-show" + }, + { + "description": "Enables the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-size" + }, + { + "description": "Denies the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-clear-all-browsing-data" + }, + { + "description": "Denies the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview" + }, + { + "description": "Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview-window" + }, + { + "description": "Denies the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-get-all-webviews" + }, + { + "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-internal-toggle-devtools" + }, + { + "description": "Denies the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-print" + }, + { + "description": "Denies the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-reparent" + }, + { + "description": "Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-focus" + }, + { + "description": "Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-position" + }, + { + "description": "Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-size" + }, + { + "description": "Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-zoom" + }, + { + "description": "Denies the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-close" + }, + { + "description": "Denies the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-hide" + }, + { + "description": "Denies the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-position" + }, + { + "description": "Denies the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-show" + }, + { + "description": "Denies the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-size" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:window:default" + }, + { + "description": "Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-available-monitors" + }, + { + "description": "Enables the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-center" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-close" + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-create" + }, + { + "description": "Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-current-monitor" + }, + { + "description": "Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-cursor-position" + }, + { + "description": "Enables the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-destroy" + }, + { + "description": "Enables the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-get-all-windows" + }, + { + "description": "Enables the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-hide" + }, + { + "description": "Enables the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-position" + }, + { + "description": "Enables the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-size" + }, + { + "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-internal-toggle-maximize" + }, + { + "description": "Enables the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-closable" + }, + { + "description": "Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-decorated" + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-enabled" + }, + { + "description": "Enables the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-focused" + }, + { + "description": "Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-fullscreen" + }, + { + "description": "Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximizable" + }, + { + "description": "Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximized" + }, + { + "description": "Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimizable" + }, + { + "description": "Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimized" + }, + { + "description": "Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-resizable" + }, + { + "description": "Enables the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-visible" + }, + { + "description": "Enables the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-maximize" + }, + { + "description": "Enables the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-minimize" + }, + { + "description": "Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-monitor-from-point" + }, + { + "description": "Enables the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-position" + }, + { + "description": "Enables the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-size" + }, + { + "description": "Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-primary-monitor" + }, + { + "description": "Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-request-user-attention" + }, + { + "description": "Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scale-factor" + }, + { + "description": "Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-bottom" + }, + { + "description": "Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-top" + }, + { + "description": "Enables the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-closable" + }, + { + "description": "Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-content-protected" + }, + { + "description": "Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-grab" + }, + { + "description": "Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-icon" + }, + { + "description": "Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-position" + }, + { + "description": "Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-visible" + }, + { + "description": "Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-decorations" + }, + { + "description": "Enables the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-effects" + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-enabled" + }, + { + "description": "Enables the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focus" + }, + { + "description": "Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-fullscreen" + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-icon" + }, + { + "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-ignore-cursor-events" + }, + { + "description": "Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-max-size" + }, + { + "description": "Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-maximizable" + }, + { + "description": "Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-min-size" + }, + { + "description": "Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-minimizable" + }, + { + "description": "Enables the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-position" + }, + { + "description": "Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-progress-bar" + }, + { + "description": "Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-resizable" + }, + { + "description": "Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-shadow" + }, + { + "description": "Enables the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size" + }, + { + "description": "Enables the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size-constraints" + }, + { + "description": "Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-skip-taskbar" + }, + { + "description": "Enables the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-theme" + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title" + }, + { + "description": "Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title-bar-style" + }, + { + "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-visible-on-all-workspaces" + }, + { + "description": "Enables the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-show" + }, + { + "description": "Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-dragging" + }, + { + "description": "Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-resize-dragging" + }, + { + "description": "Enables the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-theme" + }, + { + "description": "Enables the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-title" + }, + { + "description": "Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-toggle-maximize" + }, + { + "description": "Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unmaximize" + }, + { + "description": "Enables the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unminimize" + }, + { + "description": "Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-available-monitors" + }, + { + "description": "Denies the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-center" + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-close" + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-create" + }, + { + "description": "Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-current-monitor" + }, + { + "description": "Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-cursor-position" + }, + { + "description": "Denies the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-destroy" + }, + { + "description": "Denies the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-get-all-windows" + }, + { + "description": "Denies the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-hide" + }, + { + "description": "Denies the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-position" + }, + { + "description": "Denies the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-size" + }, + { + "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-internal-toggle-maximize" + }, + { + "description": "Denies the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-closable" + }, + { + "description": "Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-decorated" + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-enabled" + }, + { + "description": "Denies the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-focused" + }, + { + "description": "Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-fullscreen" + }, + { + "description": "Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximizable" + }, + { + "description": "Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximized" + }, + { + "description": "Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimizable" + }, + { + "description": "Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimized" + }, + { + "description": "Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-resizable" + }, + { + "description": "Denies the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-visible" + }, + { + "description": "Denies the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-maximize" + }, + { + "description": "Denies the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-minimize" + }, + { + "description": "Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-monitor-from-point" + }, + { + "description": "Denies the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-position" + }, + { + "description": "Denies the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-size" + }, + { + "description": "Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-primary-monitor" + }, + { + "description": "Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-request-user-attention" + }, + { + "description": "Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scale-factor" + }, + { + "description": "Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-bottom" + }, + { + "description": "Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-top" + }, + { + "description": "Denies the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-closable" + }, + { + "description": "Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-content-protected" + }, + { + "description": "Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-grab" + }, + { + "description": "Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-icon" + }, + { + "description": "Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-position" + }, + { + "description": "Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-visible" + }, + { + "description": "Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-decorations" + }, + { + "description": "Denies the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-effects" + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-enabled" + }, + { + "description": "Denies the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focus" + }, + { + "description": "Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-fullscreen" + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-icon" + }, + { + "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-ignore-cursor-events" + }, + { + "description": "Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-max-size" + }, + { + "description": "Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-maximizable" + }, + { + "description": "Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-min-size" + }, + { + "description": "Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-minimizable" + }, + { + "description": "Denies the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-position" + }, + { + "description": "Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-progress-bar" + }, + { + "description": "Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-resizable" + }, + { + "description": "Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-shadow" + }, + { + "description": "Denies the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size" + }, + { + "description": "Denies the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size-constraints" + }, + { + "description": "Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-skip-taskbar" + }, + { + "description": "Denies the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-theme" + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title" + }, + { + "description": "Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title-bar-style" + }, + { + "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-visible-on-all-workspaces" + }, + { + "description": "Denies the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-show" + }, + { + "description": "Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-dragging" + }, + { + "description": "Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-resize-dragging" + }, + { + "description": "Denies the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-theme" + }, + { + "description": "Denies the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-title" + }, + { + "description": "Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-toggle-maximize" + }, + { + "description": "Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unmaximize" + }, + { + "description": "Denies the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unminimize" + }, + { + "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", + "type": "string", + "const": "fs:default" + }, + { + "description": "This allows non-recursive read access to metadata of the application folders, including file listing and statistics.", + "type": "string", + "const": "fs:allow-app-meta" + }, + { + "description": "This allows full recursive read access to metadata of the application folders, including file listing and statistics.", + "type": "string", + "const": "fs:allow-app-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the application folders.", + "type": "string", + "const": "fs:allow-app-read" + }, + { + "description": "This allows full recursive read access to the complete application folders, files and subdirectories.", + "type": "string", + "const": "fs:allow-app-read-recursive" + }, + { + "description": "This allows non-recursive write access to the application folders.", + "type": "string", + "const": "fs:allow-app-write" + }, + { + "description": "This allows full recursive write access to the complete application folders, files and subdirectories.", + "type": "string", + "const": "fs:allow-app-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appcache-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appcache-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPCACHE` folder.", + "type": "string", + "const": "fs:allow-appcache-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appcache-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPCACHE` folder.", + "type": "string", + "const": "fs:allow-appcache-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appcache-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appconfig-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appconfig-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:allow-appconfig-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appconfig-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:allow-appconfig-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appconfig-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appdata-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-appdata-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPDATA` folder.", + "type": "string", + "const": "fs:allow-appdata-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appdata-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPDATA` folder.", + "type": "string", + "const": "fs:allow-appdata-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-appdata-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applocaldata-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applocaldata-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:allow-applocaldata-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applocaldata-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:allow-applocaldata-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applocaldata-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applog-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-applog-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$APPLOG` folder.", + "type": "string", + "const": "fs:allow-applog-read" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applog-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$APPLOG` folder.", + "type": "string", + "const": "fs:allow-applog-write" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-applog-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-audio-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-audio-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$AUDIO` folder.", + "type": "string", + "const": "fs:allow-audio-read" + }, + { + "description": "This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-audio-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$AUDIO` folder.", + "type": "string", + "const": "fs:allow-audio-write" + }, + { + "description": "This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-audio-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-cache-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-cache-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$CACHE` folder.", + "type": "string", + "const": "fs:allow-cache-read" + }, + { + "description": "This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-cache-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$CACHE` folder.", + "type": "string", + "const": "fs:allow-cache-write" + }, + { + "description": "This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-cache-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-config-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-config-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$CONFIG` folder.", + "type": "string", + "const": "fs:allow-config-read" + }, + { + "description": "This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-config-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$CONFIG` folder.", + "type": "string", + "const": "fs:allow-config-write" + }, + { + "description": "This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-config-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-data-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-data-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DATA` folder.", + "type": "string", + "const": "fs:allow-data-read" + }, + { + "description": "This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-data-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DATA` folder.", + "type": "string", + "const": "fs:allow-data-write" + }, + { + "description": "This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-data-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-desktop-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-desktop-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DESKTOP` folder.", + "type": "string", + "const": "fs:allow-desktop-read" + }, + { + "description": "This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-desktop-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DESKTOP` folder.", + "type": "string", + "const": "fs:allow-desktop-write" + }, + { + "description": "This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-desktop-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-document-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-document-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:allow-document-read" + }, + { + "description": "This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-document-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:allow-document-write" + }, + { + "description": "This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-document-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-download-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-download-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:allow-download-read" + }, + { + "description": "This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-download-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:allow-download-write" + }, + { + "description": "This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-download-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-exe-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-exe-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$EXE` folder.", + "type": "string", + "const": "fs:allow-exe-read" + }, + { + "description": "This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-exe-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$EXE` folder.", + "type": "string", + "const": "fs:allow-exe-write" + }, + { + "description": "This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-exe-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-font-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-font-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$FONT` folder.", + "type": "string", + "const": "fs:allow-font-read" + }, + { + "description": "This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-font-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$FONT` folder.", + "type": "string", + "const": "fs:allow-font-write" + }, + { + "description": "This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-font-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-home-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-home-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$HOME` folder.", + "type": "string", + "const": "fs:allow-home-read" + }, + { + "description": "This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-home-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$HOME` folder.", + "type": "string", + "const": "fs:allow-home-write" + }, + { + "description": "This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-home-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-localdata-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-localdata-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:allow-localdata-read" + }, + { + "description": "This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-localdata-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:allow-localdata-write" + }, + { + "description": "This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-localdata-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-log-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-log-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$LOG` folder.", + "type": "string", + "const": "fs:allow-log-read" + }, + { + "description": "This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-log-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$LOG` folder.", + "type": "string", + "const": "fs:allow-log-write" + }, + { + "description": "This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-log-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-picture-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-picture-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$PICTURE` folder.", + "type": "string", + "const": "fs:allow-picture-read" + }, + { + "description": "This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-picture-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$PICTURE` folder.", + "type": "string", + "const": "fs:allow-picture-write" + }, + { + "description": "This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-picture-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-public-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-public-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$PUBLIC` folder.", + "type": "string", + "const": "fs:allow-public-read" + }, + { + "description": "This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-public-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$PUBLIC` folder.", + "type": "string", + "const": "fs:allow-public-write" + }, + { + "description": "This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-public-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-resource-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-resource-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$RESOURCE` folder.", + "type": "string", + "const": "fs:allow-resource-read" + }, + { + "description": "This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-resource-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$RESOURCE` folder.", + "type": "string", + "const": "fs:allow-resource-write" + }, + { + "description": "This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-resource-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-runtime-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-runtime-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$RUNTIME` folder.", + "type": "string", + "const": "fs:allow-runtime-read" + }, + { + "description": "This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-runtime-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$RUNTIME` folder.", + "type": "string", + "const": "fs:allow-runtime-write" + }, + { + "description": "This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-runtime-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-temp-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-temp-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$TEMP` folder.", + "type": "string", + "const": "fs:allow-temp-read" + }, + { + "description": "This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-temp-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$TEMP` folder.", + "type": "string", + "const": "fs:allow-temp-write" + }, + { + "description": "This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-temp-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-template-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-template-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:allow-template-read" + }, + { + "description": "This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-template-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:allow-template-write" + }, + { + "description": "This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-template-write-recursive" + }, + { + "description": "This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-video-meta" + }, + { + "description": "This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "const": "fs:allow-video-meta-recursive" + }, + { + "description": "This allows non-recursive read access to the `$VIDEO` folder.", + "type": "string", + "const": "fs:allow-video-read" + }, + { + "description": "This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-video-read-recursive" + }, + { + "description": "This allows non-recursive write access to the `$VIDEO` folder.", + "type": "string", + "const": "fs:allow-video-write" + }, + { + "description": "This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "const": "fs:allow-video-write-recursive" + }, + { + "description": "This denies access to dangerous Tauri relevant files and folders by default.", + "type": "string", + "const": "fs:deny-default" + }, + { + "description": "Enables the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-copy-file" + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-create" + }, + { + "description": "Enables the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-exists" + }, + { + "description": "Enables the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-fstat" + }, + { + "description": "Enables the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-ftruncate" + }, + { + "description": "Enables the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-lstat" + }, + { + "description": "Enables the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-mkdir" + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-open" + }, + { + "description": "Enables the read command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read" + }, + { + "description": "Enables the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-dir" + }, + { + "description": "Enables the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-file" + }, + { + "description": "Enables the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file" + }, + { + "description": "Enables the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines" + }, + { + "description": "Enables the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines-next" + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-remove" + }, + { + "description": "Enables the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-rename" + }, + { + "description": "Enables the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-seek" + }, + { + "description": "Enables the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-stat" + }, + { + "description": "Enables the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-truncate" + }, + { + "description": "Enables the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-unwatch" + }, + { + "description": "Enables the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-watch" + }, + { + "description": "Enables the write command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write" + }, + { + "description": "Enables the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-file" + }, + { + "description": "Enables the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-text-file" + }, + { + "description": "This permissions allows to create the application specific directories.\n", + "type": "string", + "const": "fs:create-app-specific-dirs" + }, + { + "description": "Denies the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-copy-file" + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-create" + }, + { + "description": "Denies the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-exists" + }, + { + "description": "Denies the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-fstat" + }, + { + "description": "Denies the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-ftruncate" + }, + { + "description": "Denies the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-lstat" + }, + { + "description": "Denies the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-mkdir" + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-open" + }, + { + "description": "Denies the read command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read" + }, + { + "description": "Denies the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-dir" + }, + { + "description": "Denies the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-file" + }, + { + "description": "Denies the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file" + }, + { + "description": "Denies the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines" + }, + { + "description": "Denies the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines-next" + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-remove" + }, + { + "description": "Denies the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-rename" + }, + { + "description": "Denies the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-seek" + }, + { + "description": "Denies the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-stat" + }, + { + "description": "Denies the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-truncate" + }, + { + "description": "Denies the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-unwatch" + }, + { + "description": "Denies the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-watch" + }, + { + "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": "fs:deny-webview-data-linux" + }, + { + "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": "fs:deny-webview-data-windows" + }, + { + "description": "Denies the write command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write" + }, + { + "description": "Denies the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-file" + }, + { + "description": "Denies the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-text-file" + }, + { + "description": "This enables all read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-all" + }, + { + "description": "This permission allows recursive read functionality on the application\nspecific base directories. \n", + "type": "string", + "const": "fs:read-app-specific-dirs-recursive" + }, + { + "description": "This enables directory read and file metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-dirs" + }, + { + "description": "This enables file read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-files" + }, + { + "description": "This enables all index or metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-meta" + }, + { + "description": "An empty permission you can use to modify the global scope.", + "type": "string", + "const": "fs:scope" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the application folders.", + "type": "string", + "const": "fs:scope-app" + }, + { + "description": "This scope permits to list all files and folders in the application directories.", + "type": "string", + "const": "fs:scope-app-index" + }, + { + "description": "This scope permits recursive access to the complete application folders, including sub directories and files.", + "type": "string", + "const": "fs:scope-app-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder.", + "type": "string", + "const": "fs:scope-appcache" + }, + { + "description": "This scope permits to list all files and folders in the `$APPCACHE`folder.", + "type": "string", + "const": "fs:scope-appcache-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appcache-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:scope-appconfig" + }, + { + "description": "This scope permits to list all files and folders in the `$APPCONFIG`folder.", + "type": "string", + "const": "fs:scope-appconfig-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appconfig-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPDATA` folder.", + "type": "string", + "const": "fs:scope-appdata" + }, + { + "description": "This scope permits to list all files and folders in the `$APPDATA`folder.", + "type": "string", + "const": "fs:scope-appdata-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appdata-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:scope-applocaldata" + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOCALDATA`folder.", + "type": "string", + "const": "fs:scope-applocaldata-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applocaldata-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOG` folder.", + "type": "string", + "const": "fs:scope-applog" + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOG`folder.", + "type": "string", + "const": "fs:scope-applog-index" + }, + { + "description": "This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applog-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$AUDIO` folder.", + "type": "string", + "const": "fs:scope-audio" + }, + { + "description": "This scope permits to list all files and folders in the `$AUDIO`folder.", + "type": "string", + "const": "fs:scope-audio-index" + }, + { + "description": "This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-audio-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CACHE` folder.", + "type": "string", + "const": "fs:scope-cache" + }, + { + "description": "This scope permits to list all files and folders in the `$CACHE`folder.", + "type": "string", + "const": "fs:scope-cache-index" + }, + { + "description": "This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-cache-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CONFIG` folder.", + "type": "string", + "const": "fs:scope-config" + }, + { + "description": "This scope permits to list all files and folders in the `$CONFIG`folder.", + "type": "string", + "const": "fs:scope-config-index" + }, + { + "description": "This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-config-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DATA` folder.", + "type": "string", + "const": "fs:scope-data" + }, + { + "description": "This scope permits to list all files and folders in the `$DATA`folder.", + "type": "string", + "const": "fs:scope-data-index" + }, + { + "description": "This scope permits recursive access to the complete `$DATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-data-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder.", + "type": "string", + "const": "fs:scope-desktop" + }, + { + "description": "This scope permits to list all files and folders in the `$DESKTOP`folder.", + "type": "string", + "const": "fs:scope-desktop-index" + }, + { + "description": "This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-desktop-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:scope-document" + }, + { + "description": "This scope permits to list all files and folders in the `$DOCUMENT`folder.", + "type": "string", + "const": "fs:scope-document-index" + }, + { + "description": "This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-document-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:scope-download" + }, + { + "description": "This scope permits to list all files and folders in the `$DOWNLOAD`folder.", + "type": "string", + "const": "fs:scope-download-index" + }, + { + "description": "This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-download-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$EXE` folder.", + "type": "string", + "const": "fs:scope-exe" + }, + { + "description": "This scope permits to list all files and folders in the `$EXE`folder.", + "type": "string", + "const": "fs:scope-exe-index" + }, + { + "description": "This scope permits recursive access to the complete `$EXE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-exe-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$FONT` folder.", + "type": "string", + "const": "fs:scope-font" + }, + { + "description": "This scope permits to list all files and folders in the `$FONT`folder.", + "type": "string", + "const": "fs:scope-font-index" + }, + { + "description": "This scope permits recursive access to the complete `$FONT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-font-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$HOME` folder.", + "type": "string", + "const": "fs:scope-home" + }, + { + "description": "This scope permits to list all files and folders in the `$HOME`folder.", + "type": "string", + "const": "fs:scope-home-index" + }, + { + "description": "This scope permits recursive access to the complete `$HOME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-home-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:scope-localdata" + }, + { + "description": "This scope permits to list all files and folders in the `$LOCALDATA`folder.", + "type": "string", + "const": "fs:scope-localdata-index" + }, + { + "description": "This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-localdata-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOG` folder.", + "type": "string", + "const": "fs:scope-log" + }, + { + "description": "This scope permits to list all files and folders in the `$LOG`folder.", + "type": "string", + "const": "fs:scope-log-index" + }, + { + "description": "This scope permits recursive access to the complete `$LOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-log-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PICTURE` folder.", + "type": "string", + "const": "fs:scope-picture" + }, + { + "description": "This scope permits to list all files and folders in the `$PICTURE`folder.", + "type": "string", + "const": "fs:scope-picture-index" + }, + { + "description": "This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-picture-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder.", + "type": "string", + "const": "fs:scope-public" + }, + { + "description": "This scope permits to list all files and folders in the `$PUBLIC`folder.", + "type": "string", + "const": "fs:scope-public-index" + }, + { + "description": "This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-public-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder.", + "type": "string", + "const": "fs:scope-resource" + }, + { + "description": "This scope permits to list all files and folders in the `$RESOURCE`folder.", + "type": "string", + "const": "fs:scope-resource-index" + }, + { + "description": "This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-resource-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder.", + "type": "string", + "const": "fs:scope-runtime" + }, + { + "description": "This scope permits to list all files and folders in the `$RUNTIME`folder.", + "type": "string", + "const": "fs:scope-runtime-index" + }, + { + "description": "This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-runtime-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMP` folder.", + "type": "string", + "const": "fs:scope-temp" + }, + { + "description": "This scope permits to list all files and folders in the `$TEMP`folder.", + "type": "string", + "const": "fs:scope-temp-index" + }, + { + "description": "This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-temp-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:scope-template" + }, + { + "description": "This scope permits to list all files and folders in the `$TEMPLATE`folder.", + "type": "string", + "const": "fs:scope-template-index" + }, + { + "description": "This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-template-recursive" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$VIDEO` folder.", + "type": "string", + "const": "fs:scope-video" + }, + { + "description": "This scope permits to list all files and folders in the `$VIDEO`folder.", + "type": "string", + "const": "fs:scope-video-index" + }, + { + "description": "This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-video-recursive" + }, + { + "description": "This enables all write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-all" + }, + { + "description": "This enables all file write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-files" + }, + { + "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", + "type": "string", + "const": "shell:default" + }, + { + "description": "Enables the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-execute" + }, + { + "description": "Enables the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-kill" + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-open" + }, + { + "description": "Enables the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-spawn" + }, + { + "description": "Enables the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-stdin-write" + }, + { + "description": "Denies the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-execute" + }, + { + "description": "Denies the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-kill" + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-open" + }, + { + "description": "Denies the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-spawn" + }, + { + "description": "Denies the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-stdin-write" + } + ] + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": [ + "macOS" + ] + }, + { + "description": "Windows.", + "type": "string", + "enum": [ + "windows" + ] + }, + { + "description": "Linux.", + "type": "string", + "enum": [ + "linux" + ] + }, + { + "description": "Android.", + "type": "string", + "enum": [ + "android" + ] + }, + { + "description": "iOS.", + "type": "string", + "enum": [ + "iOS" + ] + } + ] + }, + "ShellScopeEntryAllowedArgs": { + "description": "A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration.", + "anyOf": [ + { + "description": "Use a simple boolean to allow all or disable all arguments to this command configuration.", + "type": "boolean" + }, + { + "description": "A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.", + "type": "array", + "items": { + "$ref": "#/definitions/ShellScopeEntryAllowedArg" + } + } + ] + }, + "ShellScopeEntryAllowedArg": { + "description": "A command argument allowed to be executed by the webview API.", + "anyOf": [ + { + "description": "A non-configurable argument that is passed to the command in the order it was specified.", + "type": "string" + }, + { + "description": "A variable that is set while calling the command from the webview API.", + "type": "object", + "required": [ + "validator" + ], + "properties": { + "validator": { + "description": "[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: ", + "type": "string" + }, + "raw": { + "description": "Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.", + "default": false, + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + } +} \ No newline at end of file diff --git a/archived/lunar/src-tauri/icons/128x128.png b/archived/lunar/src-tauri/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..77e7d2338e9d8ccffc731198dc584906627c903f GIT binary patch literal 11059 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 IM6N<$g7Cm5Jpcdz literal 0 HcmV?d00001 diff --git a/archived/lunar/src-tauri/icons/Square150x150Logo.png b/archived/lunar/src-tauri/icons/Square150x150Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..dc2b22cea563cca761896877ed8d72502c8fa241 GIT binary patch literal 13032 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 literal 0 HcmV?d00001 diff --git a/archived/lunar/src-tauri/icons/Square30x30Logo.png b/archived/lunar/src-tauri/icons/Square30x30Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..60bf0eadf75c86e5d25cc1da13fe5ecc2c39c559 GIT binary patch literal 2078 zcmV+(2;ujMP)%q2v2@fKtSxpMXgijv z)fq>Pk#L19Fsu4()DBYp45dn$d|w7L$xim4(ghvO{2KV_ z+$Hm-4+=-lCvt6F`pHd82H&_b<~Ep`2qG%4yaCtnEHo$PE&9r=><>InhMM}#Bal70 zUf^jnRszc83E!|N`Rx5SryfTxDP-4{&|41om~VDuv~w6qd_&luzjUVa)#`{hUuj_d z;-TjOk+N;g#m|ICGUpTKol4b;)1*uMHFL8MKCv|ZGRhN>F6J+sEPnK@OTq0qxW^;f zg69Z@bb;=ln|bV!1*zxYUSeI~E&nck;GNdstHrvQ!1<(5!-Ux5Sj-IZ@~z9_hm@9c zE=m9VKe5%jFN9tTX%YuDVJH!eouF`WsM|Wyn`O<*Zm_?u*sYJ{@7&uK*yeKV5{&S) zf#D@;b0Y7ma@VA6+_UYN`OwQ}B0oEqG|om0!Iap5_k7kT+~I_CKtiX80<7AJ0rPaZ z$s@I8-V)2;;r=XZJJD}8sl};Mn=-J3lr@S-XWVVx+a1}{8floz^ZAs;b2h>Rf?{4D z^A`SaVe^surn)X<`3X?*m}zB|{wl#5hVBPZ8SoJ>C^ggHJ& zx0Sp1si3Y+b8e32LIJZ*~&~tlQ1KZVPQ14EFNvvQ_c$BZaG4nui zke92eo8#uY4zLT0B79WUpPv6pSzi13~yl3@aY!Vu178d^4!sM@D=Xy%{JJJL?)ngsl-cqztS?SeY zO~&FDDw{A}5^59%@@`tejg+Ez9(j=&w@AtmakDw%=5h#Acvjf}6hIna>VW==n%wuW zCZH7%=)I1>o{a}fmn#of&BN852^-5mIThw!4j|1IO27=2!$K6yTml7F-~ax}>{KQn zjE2;Xz?@;%>N~$rG97V&c+7&{K$p>Y#^~L7Cb$Xw{ErmEDfhcxH^RoXMF^p8&I4{Q zxRJ`)US#I2eyHR#ESu;RU?yxh-ZOLm3(FF9_x?mxK=kz9&3dZ0L&1z8uv*~egMsD8 zd)R?N6h_bl5S7nlEzr1Es~V=hBY@**wzB?9AT$HY%MG=k_y=&W!NR0AJkVX#dURK~ z_2?_Gpf0HyL{)>vU6ICNaT?DSsfHClwJam54_rP4XwZ=jbBfkyMAasONq0b2&-iAz zBvH5gX{-OjyP?a+_H(P4zygd3HYa(W*-1Y$Yw;KR?s)h$5h#jE-$y08_f<%$sdOf7 z_$KU5AS}l0v`x4-Fg$zlYTz4XY8HKy`fjHgzkGsvIoKYcseu!oae!Q=Y8%(}ec|C< zoEbp@x~w>~BB;^Six{6>uj#+KrjZ|wE4j8-`G01;LAUvP8La~Av50E6zu%( zZY|w^R=t)Fm)B;i7OZi~W-o%i6Ra$VVl8{NmL1voxX>*yAjzj}sjk!d6ucbxl|v0H zpBijfwOJHk8)-|xibe~OjME1Qpjh+UKQ3v0dkbg-j|+CHR{8pk0ANTN33RsnE7<-1 z>mZ_t(1Vpgg{5|`!W&TAnw=gBb)0;o;?SSI6~1`*ub=^P<-=l{CUUA~50uWpwR{i} z@h5!Hn literal 0 HcmV?d00001 diff --git a/archived/lunar/src-tauri/icons/Square310x310Logo.png b/archived/lunar/src-tauri/icons/Square310x310Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c8ca0ad132e0184b64cd2e4a38cfceab3c4b3a46 GIT binary patch literal 28507 zcmZ^KQ*dTouy$8*zWMW$rYhv5U#MZ>NJ+W;&d1Kr5pYQIkI_F&Mi{5)x*R#62 zy8BtZcDSOv1R@+B90&*qqLielG6)DL$A1qD)c2dSj;=Bg5IZs{Q6W|L%!@4OKRRly z&kC(3uhumuh+wd=q`@Ghl2^IEKwctCx9bbKj?mYGETFidSP#IYNyAUWB`Td1$rNR7r+5Z&qtiM&v=JytheJ}f81cUi+h}hRj2~B5l&$zbJBnZ8QN%_CS~ygs0z_JWc4wSxIPKcLM_Ti-)TMNq!q%EKwCE$rnHPpch3=P>@x!`DM4@8d< zqpDP>S{l}9i%OS!AZ#a20eCa$+&3&z&eu|yU5V}c)}9crZM^1(V!*lE+Ue{bO>|C2 z;S=mJNAh7bMNwe2l;@6r1}@}QG(5O1H6ER{=N{C;C`F`@{DtUCO8*saSf-AOQ4e7W z$BT$=d3|4ykOqlf@qE6-m9dH8N{tpsjrv15@OXRWtN!&b3#mW-U#4FOZ4;l1T14+z zlBq^~$H{w4chZhcum*1~bn zJJUoj?UI64pxk)rA6zn77`X}VHEhMx{A@5jjLZn$yZ3vLJlT7&{Y zk{+7(U+kiqFf^z47El2kK#$$+927Wg-`C(%StpDjEZucW?}Ma!nOi)tP@4kUwJ53) z-?OsFs;ysU=_zE%)l^YDKnqMh7v(@XqyLX2BKLO;l3UI`n^FZwXPKq8&q+rG!=!5+ z$YrYJ@LK87b=zx^aZWd_^9-UvGLuQ=PVmf(Zkr*TD!I1^NWgjqq`bS_3YSK48$j}y zgrOyl&wt>*iNx0M81TQZ``&#Lp4fYB?of`v(h5R|@}_cVu&*?zmLgc1L5A>`W#!fO z&L&!NeBQ$byD^wgbo*HM@gpfML$M<3>4CnPe14DBa;0?(-BSlN&PiP z+G>+_{O^D;zCHPZ>dE?|8AyoR8I1$y9KxaYpZYN{(0W8V6_tG*`y4|yfgSZM0mi48 z1g+bvEai*rFj-sj)?QFk7RQqpP& z3$V;@Q(#$Z0gEzI7!ra8r-YB)1@M6m^( z>3-nT_X+E6i29M5NdAZ)gB_A3Tr?Ld6DlKl2U1HNtcv?o6I*Ud&*f%+q6AIJj>kQw zMS|qtNMVz(1kHqAnmw&>go(Q-&WgbpZYy<`_v4gJI6l!9>E-E|3I-=P2TXqM#wl-c zZ*dU7{zv>DHTl7UneN>P8#D$ z-L-tqcN2-*rw@;yU93Q7R7|NwH<|A^M+qCN#s(`P7_%e?>vS6Hfo9Ck{BRTol}pc% z{nUyGI&FV|0u2QWXrmO}0^+oEylA^_o7XJ6UuV?sp8`}Pjho6#W|UOF9T0kvmohO` zN!Ls1wz;~;YNq4i{J0h!{%*bh`pJse&`%!6LqEle)CTG+wlIe4~sWsE9@X7oQCn@o0v$yppJ@qT&U)bIKj@wXc&UEAkgpi?WK zkB=)y4HJQQ1I1#5*<(a&RC2q;-J4$~P@2?kLI_H}nx3hY<4S&{S(NJf&i0!FP~iH& zKY^MqFnO`WDKEDru@|3CB9&ZO+@h~Ds*&&_;5K2G-F!?K+bwKLxP5!&@J>vbaqUoP zdD+;WA{Dnt*rXz?R2=&mn3g3-+?yM zu&S924t49sY;3>f;Vdt6*q1QuUUD%Ol5BTXkcFl6Vkc^4_l@dvkxE$+-E@ppZ=rbq z?#{Ez?cqE-N8(3KidH(bOFYjUH{Wiv*x#cFI`(6Ghuu|lN8<3%$%%Bvx3UhpAh}?g zhR5${I7s3^QbwIdAC5Hcc2S-#7-ln>K8kr~+1Eks9#891>G!;T{^TrUA4dsfE?{CuykKfSL2hsU!nAhI00x0c=>;KY8|^f(Rr zjCFt}CoOO+?^2R6c;P7RG#og8G5(h#TP-{}O$4)*;D7>wg-~ic(|qy}F3>75R{ay@ zVP9N-)?NW;Z>sAc3LM{bp=kOEZb8k)#$-lis|ao-ZpF@T04|k*XzghyCwsQt(~;2P zgszk%w(KenYV8LQL6UpwRcEc;QT(uzGjqL_M>w)-qNrMkB>3ms9PN1=nQD4YHecb8 z=zP7M=USJXnYuDW9|inNx5HY za)fV_Yt&MEkZCo?T@scENK=tj=d| zHzqW;QZDNVQ_jNk^wd9|iZ+7bqi}uDTg!N7zW}e&LgBK=4HE||IVQF1)<4%y=pZ~O zC5^_>PS&{cliCca5+{K^bC(vpsE)BU?s zqSfemC-_0)rsI^q6H4vIr(yRnZIHc#=RWXL4q*!SPj$U)r~QfB13ROhcX+R0|MJci zbT{#*jfLmJcF!Ja-eON4RQgNe>+XvnSJ7Fx=t6^x{rsmYV$+!J!b!k&jFsci*ZKYi zot4y;`;cskI$%Nij$0E}4}pr@m>v)^>q^C0N~zD0!1SD@Vq_eE$o$-Q>V}T`%=6y) zkP!y@VXxcYT2%%pTI}Sd%PN(eVsOvBrD}UiZh09KkW}CgVu7|M^TO|x3 zzwfN%o{&y1*Zr%(DM>2JbSNq!5E!|4VZc|nUQozZixczf8E#mw*xcDnXKpFExczQ@ zy`A6W>M0_a2p9HzZP;p_-)EIRBpe)v^<|y{#HOHYEMn<)GwgkbeYSQMz@2PYjL{qu z?X_1SYgTC!uJt1DDTE|qj)S6xXl0tj)84zc!Y;eKo>iuGH!5LuSaLUkh+qEkTzWNC z(W?%tm~d#eB($w!^}aI-oqfa3uEnhA+6Q}F8@D);o}FKE8!*eFxq{a)#)QuGBSKDplA zGX<}wcT%d0DhqEnyT56$O|#Tu8Y{80vK4`~zaDd(ihX@rYv-EpE^zo1`-m^f8t!9D z+|5i6u_;$XE*+a2yRPjA+{b>UKl_8}7b>QaFA>WitihpzhTCm}mkRCeJ`m~ky3N)q z4FWinov-Q4m%3hdO4hp&FwH;;gNH>?6DBkj=4T?foAQnd2wQAsjY*^KJ$8TueP}j> zRmYW!kt;JDCQ#Afa*)@3%#>R6W@OH6>GQ{<34<=NhurMI4_a$te7jl}*t9oP5(ZKf z;D6^PP^=jOf)Ecfikaw0ULq?wo=8$f6#G(GK=2=hm3zZOEc4i)mHzR^;4ANH@_R|` zrBm=YDSN34;XVX-9G0lrNPln#E+2z!sHsK4bP}G*NF0FtcCGewxF4Bw zV3Xv0p~17ow(MX8TPQh-LB3ol8b0F=JBOL$qw8jL7j{f1SQAA#lDvG@9so++sJsm0 zaQ9htbJqQ!^MFlWZtv?H^EPh)U)mEj#@5_fL$vjgr9yr0v!u|4NVI?i7XAFwIA*r} zx59CYxUY@;*&I>KmeuX3JE?FE6)^NvO@E(ItH#ONNZ~JOeU4xC1k=~4p&~@ z75@kdhvN>oBCbD%|H3v-3eY5IUVDk-eT_*y)V3Va3BBRJ=Cq%2W)KuETabLdCcI4>O|dlu)ioeZz$v@9tK+ox<*;u1_hpBRyHjJ|Pn0gdV)(ZNBDIuy`|$ zT#d_cwjadT2)FT@py`Y^*k})wxjks*u-c6gSs>N2;Jh=Cf9+htN_Zm99$zgz14?^4 zmnsT0)H8B;AKTY>*8iZdAQwA~Buy|5z8FoI!QYX)?W+cW;_h``{1~MKGVDDP*ER{0 zmZk|uWKibei9~HKO=#hMgxYGwgtO+ukZ+sHi-Ot9Cux&M0v5fv;F12i@;9V_!)5-l zltx?)FRU69afyly5*L(E!%FqzYIn1U>edJh)qVh)EdDij)xuFEzsde)*^-)KU3VPnXLD3*mu7b=`Ds9eQ;>mbJ%bK#(4(^ zK^ftRUBsqrjtY^9uOzX~7<5M;I3K}%=$lAcj5qha$rR8)Axn>Jf?JC$q}-_AYoLSX@N zZ>OKv-_7X@bTxhj(t_drG3XUym_!qAl6?BuDo>}g)yaDIR0u&FpqwEo_!Ik2)(wQf z+@7?o*XD{9c(sPvDTn8m#fraTWKgqm6yI}5O~GZ2?)sgr74eeqb{yp@$Weo5_> z6M!q$x2T2OAw~IJ7_q|Zgs0^_$*kLaM+R1JxKh96LDT8K5T?Ls z9Ee-&{4bg#_XGVp35xn79K*6VdmY=?_Qn6%Mncs?f}H|h0!F;{)&;TtvDn(!gW)bc z>rUN8!gnp3iXV&cr7DJPB}B7_iTs1OL%=r3mg}acKiR%Kh{U^vGl;rY2GO*QE3wVN z<->%tI%;E^Wk;L=LPU&j1N>a9r`PVA1ZLr~UH4R9+rjkv)Tc)r{m{qOxabIFsLgGG zg2r&E!gVo!^l2}09p%2g%ll?O2=P7FF$Ap7*jUBBJdHdq<@%a{N(OV1=sG!vPLn_JV`O{Pv*x=x=Wt}<(0T`(zAb*Q4c1qj|3;Z&c;{^Gw>ph1;ux-1#qdnQ{ z`X~amd}N-qrbP>-c>Y4OoHdE{dz4H5LBt4myTo`p7c+hp7$6u6t=Ac=fk43le(^1B zUMC>)tNOh+F)pd&8&UnPja|CUTt?=E^g)uUlX;q9*WjN4IEk1YUoBvn(kvRST;|*_ zE2|D1|10a{PDeO2u^&sd#}_V)MJjRv z__feA6LAc~F2%kQ0%;jmOxP!%{^wASwf;!`vUKd!kQrW;jQS>uET*LU)_Fc0*``FM z;=A1$T5!cXr-nQpjX3QhS*m2Z@8Q0k5X(8?H{#r_x zPQ=mz3)5myv-CJ2XdSb0_hDuwpWhvWdow-@!CKcQSXvIrKg)yRZX$U{nHynd#qQ6>Z1dgaKrI#~!T)>uNYh?HA& zJspMftA+A&L}oi=44D%~(IGS}cn?m4iAW_g$MrfaBPF+2eREzJ3L$P8ZSU}{*hN2< z?;wcgjaAVftS_1`q8MX=r(<#y1uyBsW(=Ow8D`zmrv+9hv}_`rbZSOT;z8doJp?Y) z>YFDyacZ~CIY#9_O+IZVV-YQUj^o1ejM$RAg(MNoB=vAPI!d8|hA^1=1&097x8$RRkh{WU^fi+3G zRw}FxIx(A^jd$aVq)3GBtCD3B-_~4<#$uaBxQ`)+BSzM492!OLDcOGsV zSah?CrH}Uqt13fG7%|&X$B%JXv)rRbwyty_rk+QpNMXygW(ZT8C zVQJt%Y`Uc<(buks2LfBV6c9t3iY)~hQusPpUjj3h)HZaC+e4NXLKIZ}X@=;nVcxTn z7QgCRS>KT@9ZD5{oU!^d2LqDMvQ$|0OJSK6w>#o<8!c*+%x-4*1WT(HQ-rk91JRfA zFvfOT3~;hr$<;od-83i!3G*1S`V)=v4=9nP*!}h=MD#t{KKWPkJ44Y7lk2S_Y8nmI zbDYgGIho&LDkEnlXMo>H(RXJ%KPo6jD&qLX*h^4vZV7442irH+3o4pqXYj*QKB`Df z2qE?F6e8VuFrVp@&%@|`I~?Q0r7CQG+a)Uq*ntKqI{pPXnbSuE(2Y!l-LarFsu!XW zhd+ohQ|noWPjs8D@>#@gKvXEe%W*`qRHE}KTBei9`Y7YqtUH~q1N4#Y?Hr6@Ad1C| zqQw%Dt6jnb2IG|5QB{+((D}MPOmorQ=4a6xncL-gzpg`q&_&785*Wo?^C6{;E#s<* zz*Bo$`m_#5=bKlhGFFb3JR)e_ohvP+Y zW*)1EH`Hsr4keo^HZSy_#l?S(iGPbO4oPA%s5CrYOyiwBA#EeBvCJ-dsr;Vrs+`@- zqJFCvD=f~H`6Bv<=x;u@4jtBkDiW0 zLkvDcDraxT)3z6sbZ$tg+FtN%+V_8a;W9@k3~c+Z!hWSDl(N~0k1dp<`k;*UM~o+2 z4<*f3_OMAw(MT3m_bp^q|}n1t~{?kyxe)S-WLIZxmXWqsmxK2B~fbA&Z3{UIvV#o za{Ry5G&b!?ctFxq#ge2f44h|V)j*83@bPi&_eP>K2)+!BpNHm$h8PL4$FoU3^eYME zNDU{+QgYF?Z&R9wI%=e3a!Hm6st2Zszy0p=KI*b-KQT>^(+!53JsANlae_Ft5k$(E zDBX>1Zu+KjIA+Ep?5Dd#)aE5p^YQ*O{%764D|}WySOM>uEhy@Wu6}YA1Kpp*&7jcr z+S#%1Z+=W;j46!o|9&%-P7xE-nI}f;^HI4?*>O^S8m$GW?&g{xHsxuO(3*po&{A`j zY=Q&v45TIx6Q>M};1)sYl9*kqSI|G_Kic!VJ@SS_ai52TLweLWN&-<8t9e&qXhGvB z=xzDhINujmy~vsg1sT7558bwLZa>P`DQ|Oi`KZ3Sc$Bc&czNpnQniMR?9?h2Owgx&l-~YqJ1qEiThDPDN<8FL}K^548%H ztoUqZDzrJsHW|2DrOdmg9v4Y%Gn`y{x) z@_;|R;O!8NP%sVx0(pV(cS2?n40uy>U;FV^(o4Lvz(Rw?J^nsVm5lXQd zKG`ZGOjSLiXXAO;yCXoO3X3VEV%5RCn!ob7SYoxwBsX;wk^N&x_IK)n!o>`DXk!P* zN?h#^mdBEr9@NFbVh8pqu+lRM5k5Llx)i`rWAgmFyY_Q(HrON%hMKBP2h`e*eiX`L z-v;-3x3#`|BcF@Xgtx;=EfjEP&HFT%)~dhrW;&eIOv(9ZG}(!2Ul7j3+5OnZCh*Yw z`DaA6_9CvQUV1@DX>KNmO#~9^mcg*pR~j2j-q3pb-w-+g-5`26~<^oJW^>MeQ*RPZoo)G*k>lR z4@;I$>Ne3pYxZcIHsToRNJhI)WLc}mF`QUbJf;Y#8q9L&l|?%Z7kCI#-SAHt$sbGL z_}*bP0XufI+e%*Krb9GQLA8I(-?>9ocF584O-#=Jv_i<=VYV=xPZ)jMYp#?@grnvd zVdG6v`dM8@q_B3J_ep7ux24*t+8G` zmY|t6>JmmlKch$1XxJ+*2(^egkX?jZ5h0c9eiwl`nLl@F)sJ~UeKiYCRiMkJ#x|m7 zA3scf;b))N08@y z7$kaK>31>HS|JBh6IX#mY?5Ai6PN(p#|`Nz+3LsC8cMwt@?0)N@l$O9ULZ<*cZHd> z=GWhkzjXh2KDm+i^R(=NcWBbcijTG9WN~FPJ@21);cKI%c>wIx`l8+nz|=^#5#JJ_ z60+6Ks4a$s3@?|eXFk4~s~>?!z>~wEL74Y#>AB6GdwS2XkLQJIuM$p-=>tZhxn1`i z=-ygyfh=P8S_eywO-VIrr49};@b(B;HO0MbiFGjWDp^squts@asx2-Xhc@3a?!n)8 z1e}THL3N2y>7|}u@K3W{9~(rCg;q2x7g>~MQJIk)wKloa(-&Wl9tp3X;DCKh)lfqn zV67ccDn>1F;p=I=K(+-;u4*#tqhBR6x_e9cE=|80@vA3kssaVGLD}2xw!f5M)a0$t zP2P?+^USJL#3Nt&L6))IUXo4n>#*SwLCa7m$q90u39-q5a1`)c?9!^NhKn029XC=H zH*E=*+H`2DZNw(q(~^0UE7A}g50jLBQt^DBduKvuNAyRX*+ESZo!op}bRdBUAPfKv zx00pRe_Erz;AE#lCK!tyew#bm&3kS&M~uSY*8(r%+~RN&Pq-!6R_!{gkt3@EOhC0A z5EZ9PtoO&Vlt%Y*Dfxi8wO8u%8#$Bk5ya;#rgm~lxsa;-(Fz8}glFv!l70(gxQkh2 zyW^RSDP(k;>ETmV&xmi%bxX#iBq()@L^>@rKqIYI43eRE%AWcsG(rWBCCl2c#iyTK z=M}iW3x6JNXOq6*ISIk-8bVVr0OL@0I zO;jQ1;x{BYN+P*_pk3l8@^7}2xP_vg(d z8{*sj&1V}F$7?aw*ELG*Lox5XKUj?!jc#Iubr8T%`&a!?LRkN#L@4Oz?d3w)iWm&w1H3O#my z>bY-=z&ZW|C3pfX8;QA{-#8VUh6re4zbD?>E{F{zrq`D8#0h=e5?zCt>7OLutffXxx$b9Fy(tWO0hEi^2}2aA<7T0W{7oYg>nEP zS4YvjOWkJ9$p7N@*v_tvw=&4)wpPT)pxrr?YFVV-XkDJX>fYNTu4$dX(93mdOw5tX zw>D$)%;s&;C&E!PhxxF!XAN3d5iZu)!Z|Posx)jB_r^w@{w-$#Ma+B=C%u5}@9Sip z{@A{}>u#`py1Dw2>9XB5!UaKD81*Q(2ANQqnbX@+I8@f|=Sl&Z-CwMcAgK5-*c;Hv z^?lu+UtYyTKQY~}?}P$-69~7}NiNry?u)K6vS01TXtwyKIUAE9oZnGe_>G;fq%!bP zFh#Qe^^yJ|*(#yjmA!7EJ%RHE5el@CbZdZvLrI@@UjZmiPuy*GAH6f#T=IPW%ZQw9 z!)=K(8DL<60r`>JISWZ%r6?qafw$5PSK{?A42R9U)oL4ES|(>E4IPd;hlBeGSG}-f zLZETEOPowdec%{e;^|}i*pow?h*>YrN_HpvkT1X$35PCk&>Odb`T>iod zrr4ZocSQniRKw>w_%v|l8h)djO#}TN&92s5-qrlZMe$?VZ)srJV(I4ZT{1Fi+Ljhr z>b=&Ml1<7l@i71=bBw5F@{gN~=_8XSL=P}Tw`jwhK2gCP+W|HS86(f{tQ(x|K9acBccIzI% zMk^@Gl1#Z<8u7I8LRXhxe_Tg0l*b4#q={E3ya$;SKiR|WlcN;xFGoLeG=O-p-k=rb z5{DP znNFMYuDvN7E^>PJ4yqHRrXxA+_qT);^X(F)aFyH7%RR`64`Ezo zlx|v9^z5O`W3X_=O|JH=iBxQaDjFTnrFdrEoA|FB>vqZ3b4+2LcP+d}yD@=?YatPq zD-xP=5X(!VaTgBVA*z8kg%LS_g^I#YZrkc63C;W-FLj4IpPt058&l<%f-9qy6%Amp zI3bVMdrelX5WMozMi(?^JSEd*Fzc2UsFIi4 zYg_Fd*6sQUB}qiKs3gkeWA+-8v{Vsq@}R1e%`r>zexFn|3~}t{Qss%kTf`1k^y`}W zoW?ZmF?LR(|FCWGPyj{VVOiJc-u-h=Y##WJZV{Orkbx8r){s=aH#|hrjrrzFPFNbh7O3h2k4=7CJ&VvR`U}|(B=sATN+v9&^C?#d>*|kMj zjz%XXo8CST6!MNA^s-6pl;dC@|MaVCC!oR6S#4)5#{#cY4vt(}5f6|wSDL_0=>i`l0B=-n+;}c;zIBQyn zA76r0nKhhJV7Hb5rEYK@ezOAWsUqeeNz7MMwCLX~JjD7yGAAtnxXq%6#)_ zABjZN;caZBhIeqtcl7M0v*@s^_C!(w!@B*ewICZ)3JfPe0*3a`k*EWO6tgchf>K;8 zhd_kVv)~hbVV{LmnbkN8zUJ9`Yu3zH#q(%qJg!v*mDU}F1CJusarvOn1?qk0K1n28 z#ITo{5Qb%s#El`s5lh&_!i?7)nfCiqUb0A@_&UMQi?-~7=})RDGp?ba6zZMFDx1FC z4LMlIL=f$Y&`S0PC_>Pb=$mw7xzL?0MI}9 z>#A+DV7g;-q$F1#ulkSIZ|IAFA6OJ;Mh#wnY=hf1EDZ3^hnBQ+wLfmx49YWv`MpcZ zWpimZAa+#y&=(9;_7wN?&an!MAHS;4R1{@Irr8KqFnx}N5BXl_g0Z8#;5c0*1bx1X zzRE0}9{+FU+$x_Tt$;u{)33jLq7`Fq+Ny&hT7gwyqC7ze)TaG~$>vI;#*4 zF$GZ+Vm63yinU(e)aXX-%ID+s`)deVjB&CR^=~LAvMP=qSird4AEHf@kI#6ChDb_@2KqqJe>!?nA;;?q7uC@9@i^z(W)Q>&!?d*W8QOF+y0nD+zUXf8}@>>G9o09^#s3l~>6E&yhp-qN~9j=m9&cC9Lr((pk&~ zcp;Mob0921>0kE7Aj766=MQ#K590;lXps$bkhZ&k&2+lkk5#fzGn{At(E@nuF{N#0 zYl)f9!R7bGdgJJY$@c!0yuBnQmGn#k^uSf-{t@K+1zWA#f^xaoj}g3;t?8oG(FwqV zS1}xsXelCGkO2WM-}BzmGorrvF}H$y@1t(H&?u4XXD#I;zslqpLgh=;L3k+M`8$MY zN1P}k@$M?ZnDCX02sGbIR}){(J~miZDQ|fXlm#IgeC3r5@%!pe$Mf*w`#Q+7M|3s` zbJbH#CGr8dla&zYt_1g;9pcrp7+>38k^wkS`1S;V`aAvbcL2R9%j-<`%A6B5_7_V# z>4WPbUiSSWgzd&?!axG&Mu(fk2lCR>idO;_=fZm+iLxB~t*E(Wqn9&{0tyJMvraMwRhcWhIc zqtWDHg-usCFp&~+qv_Sj4v#s+e(e_)Qwn|nu51NK*x6J-<%F3e(MvbO{?ss7!Wrw9 z)IB95F6Ia~{qb)X0>jV5fJg)TFt@pYenPIzmop*IfLIP4;4*TM`AI&#TFRHupz15} z2D0S{qYchLzJ&qVoqoiUS;_gx;JtN~rh}=fDb;^9klf>#hRaf9C&6ada@AI@=C(xw zr)l9R4lO6|M!^SW-$N}MyV=F)co&ua-1oxpL3|yNY=y#nj#ob%Zx+=0a#SU^ywN=A zPHzFd4Dpb{N+uTa++xXAOhXl;T=$+w$U!a*ZrjlmRX6^`4@GQEu4jy1WO1Skzj>En zU3e*ZimA(dj;dHjVP6&!ylYCaQRnzBvc=nG`C?~#jnls#Gbhc)tv?*I--H10eJBGW z+e&fr8~&=M`Oxaua{IBh#V)+=ZK<)JBB*KTM`!BT2aeD<7cz)MZthvdi9G7w%E#98 zn+T|ijLRj-tNzyIT{=myi(8CmU2~K-GD5~++HpTyqQAgvySaEf?cMTW>H7x+ohV`! zNT~2>Fwwb{Zq;D3avY2{cLktE+-H1%fT@_2HYU(W?LUJ?8lN*CRK z5x&?-?N_d`<(=7UU}>l;GF_Nd;spU9XW9!wNr&{#P~wy-paE9oGHLVW>a|OxKicu8 ztzT1f`)$6@bU?}m|84szHoV5`no;uXr((vKL~-(CO^;DV5Y|7Bt9qHgC4z13j}qcx zN*0$W7V53$#|@w}b2`G1lvsU!>xxe=O#Eto?4sC+Wx>~f&5ew#okCQG2;xTFK7~PZ}Kh%KPe^jj6C%gECWZ{f_!S(dj|a15Z{} zYMXSLD<2Ap1+Y7N2MCPzTF`P2(V)5CVARDmDY9%xu1@agc_DL^5_GP@#G@(5)yujMIc^9(go zfABceluJ-0#eO<>pL(WFM(pY=)1DSSK6+5_Kk3(fuv(ojbzfB;ry4mq%W|(6f(sd z$us)#5agi3t$_YDmX+FWvxgA+$y$#PWK%X!b@8vc@&wMu*_-|I zHve#9@Gc_~n;?E<5;@ep-r494KMj6MvQJ=1HPaRV7@!$DoXvJ2tdmG_6TR|mixybV zX1>G1ECt>otfc0?sIJdJv8rlKmNb|$rVt59x$n-BZgxv^Cp3HLDjYjt8@-4hG>8x> z83a;6)ZTiTW<9ZEXEgciC?tg@Yjf?*m575{%Ar}VBPg+-SQZ`>6Hb|xR1)lq$&n&15`o5*DuItuZwU=&k<91)aK_?Vobj(XTZ;oiL@Klrpqh!fy z*(gU1rkQIgioS;3szwDvWnF6t(|$lg1n3D}i$hpi6+nq#%S!rTL>)V>1k$#UU%iA7 z-Gy(0VZzSC|F&z3N8~80LZ$A9o5#vYF30nuW%zAKBI7Y$oEw^s$!y%oo1(^lUq2p6 zlwyd0?rjNt_pWGOA_n+{>7UP3MJvr{A9rAaPSPJ3JT~2221u!;H9Mq)v9O;($bj>& z;eKRv2RVps9H7Quf&%dn#T2jNOMF1VVp`Tu2oZPjor!2n58_D?$q?BY z>^v-BEj(46Z{jbHq)CWxdqTI!bmP2dPxV%DwUB(J^@Khf<3TyDt6I7BQu(eLR3Cy= z%Af`I{$aHSW=S2Ggw>7Pb;h|hmIPsPh^w&sCzAp*m08EzQYVS&4yVe_{6g(1ZN_E_ zRenl`_Ra#cNB%xy;MF1s(T#RX)Lk`DiJ#$9Xq@=P2GZ5Y zVr8YcFm?Vz?o!u9#(Gll(jYI@U))2?Ke?ZLTU$nE3rJJdiXM{$#CtOLXkgz$C<@MR z^fL){(H}*q;yNqH@1EbqCVC!$aym(O9yfH+sSj`5$FF5`Z z4RIA4$v-YX@!9&>rBPtLp^%$#9RdEx|9wq?VRGiD8#UpTbW`Lrkr0Ie8C}D1ifM;hr8n-b2#c4$K0mITN^*X?P7DBR ziVy578BS(sS8+z$^c`|C(I2UjLrD+Hu- z;%8b#xxjZihYr&Y`W!rXp=Z(RErPW)X>VTUdpi31y&z0kYB}qO!%+x;i^{JsGwa4} zimZx4M^3TGam4vYUXUjP%x`u(0I0lUw!$D9HF)TcJx%Yi@TWb?DTY-6m>HDsn2*C9I_0y##>xY(R)KpwW zB36tA7H~K${G~0oERbw9JF)o*JOu)4e$Rxj<^KvyX zXKWtt6;IuHQFhQDk%|xXGXH+SBc;`pOE|aF6*mA1u#&2>6NBiq+w-%B)4V);FP0uy4ih)A}uU%MLa!Yrsu|1lWkTd_GsY$7diOgZ~ z%8U__x4vS`7!L{oqRYKN1M*N(7O}%i+qsU;V*;A8DYvi_xBk+J;|7I&9 zh6%~gOp^<@`PD#k+dZS;L-C6&36cXKl16^ZZX7!?m~j}08!=`OLTfXLP%x6+*c{5s zVVC5~A%fjvpwrEF7Xp6V)R3zLrFnX zTFMjI)+VRofC$ID)fs85mWbk85FJd{{;W1Ymv?N!RYpqzj$jLJOA#KGwsFNBTE!;LU( zqv{_1%Y=>kx6!GSkYdfRhrY1QUSLni6TM-6XMrVAv-%^t2H%n;Lg9^X?QI0?GmW*R zuxltnS&qzvQ;^hdvVe*;+cI+fRR>=avmQtG8jqPf4HKMWOSJFD8sI>6RECQ|))C$Y;F%Du6%dVHw`K;6A7x@;;zkmx%ar*nY zmw~yfzKA)}eWaC_F2bE`T?HVaHgVmPjc1=c@o_MZg`}1`T&}#IhgzwB@zPmvhZWYg z)z{X-#@2xcm|{On5+__a50~T<(NW&}Bojrq5e)keKT$&YZ+P^D|Ewhxn_PFv$X3Zh zx`L$bWf8}vkVRdqI}&7i)C!x5Uki<;Gc&2f{5xRl4jXV|;ClIV~!h zT4;Q%$jf65O#UEd>dbWyS!rpzcewHd=*763gF_c#Ad`C<^ar}?zkx2-n#_EU@>fWn zkkTP>=FXjmiCMkAW{-U6w%9J{K`mtTK;ykb3@h`yL^l+O0}7qX3q<^&A=3aFlIZGk zk8!y*7eu^Ir=N9B)$*>kZS9`@BKpj3)tci5yQFG&L=BIJBGF^V)Cr0r-@*B|HTV9` zl+DTY6A>AFAy*rkJ!mzhj&q|+z*i*7)0`qL_d7F?WGu|xx}YDnn^Fiztdc&}l(C7u zVAVApT`4mRN27>is`5~?(IKBbwdx?U&|!#kR17`ubJ5T zP?&uG)|u~Yjfw*o9YR?bAc7-#y2x2o^P#Gs9`+jspT#z}mxDe-we?33#M;11ACm{M zrM3i5!4LK<*%|~qz5yDDN?HkR6*aWMh74jstEtamjn6U^t5nfQixoK#wmks98y{C3 z(Eg5SVb)dQ*Yl0ee1lU)&g&xO&|{L7=ntguiGqJpe@F{5%g7uv(Agd*g9-gIRQ0)% zFiXvz{R0gB)A?3(ESa4wv?r^cZ0m_+SCrF^$Q87~%fcXZ5zw^@W5>%Z(-2>*MD)bf zJOwMzpp?Cq>7S|UW`c0%q>Ssk$2ar=C=Ni`0t@F$fNBPANP z;-c*31!W8d%zn(P#ZUh#C!ZaG!%@Xqp%`cxE-K(vjanoQPV%!c#}17M8SBJ5TX)o_ z(XS?REpA{gBQ3}-+uQmW?Q~-LB6K4ZE%K8?(TX9ULAVkz!2oR+>#(}?^4ns++Q=Cg zBuK3wHwHXe!ThQCp{uTGT8lh2rhm7Qz?&VLehG1Cw2TwN*C-M!LhBzs`?SpNZ9WZh zf}A!|dN2H>k+99gb$xD6)nUJgGaVDt`>A?L3K>nCXN2@`jgy~>ydX(Qn6i;-W}z*% z^Z2wn4f}oON1;$1rcqc!gCC+s(&4CsKy-YZc!OOsT0%zO``4+0lCWj{hFS5 z&PEBFZKxIS7%rSub(-k`U_aX!k1AgZpSV)>ntqRnpa#RSudtuke2eAzv_3yJHKfp5 zeaWzygTh%FUPu-NHu$^Gvz=t=%${q1?xceWrt(;#yQHK_I0^xhb)jpF+DBa8ZTx&D zN6vARFbYvz3n^-u_Tb>Vc9p^i2F7Be142NeIk-hB#_{zw}s2Gmt`=VLDDm_;ld&SFp=u`>~gRVNn_jGKcpH_JzS?DG zFE)CX6|@ls9xqRfA3cP8>( z8;jE%n{gY~nV?C0GfVwMCBK*Lw^?c2q~5mD5kU}^#1=6g1kuJTV@-A?VwYN8E&rn9 zHC*-|zvd(C9q1~EYR5X^imPCN>D$7CPGXQ@Jt+G zEz@=<)>-Gm<%7I5d3p31G{B^DC*&>wQH$Q~xT*Mjj-JrK;;K)o-kd zV}U=Rcq}40OGULNn24?}uvGknJTk~+zI%+7uyy5S-beuL>3Sv zv0|F4Lv}A81J_=dvD3bNV)pE`G9h8YMW|DYdm=GT<<;x(-)^cOjlH{u-!(MB@EkJv z7=P;a6H(A(gOiHC3`IKv)V~Sn;-~Mu#FR?oh3EV|qDQSwhBxjg-^tB|S63jB5UgT7 z5hqp@^`}stoTlslsMOomc@)a)H{OIl7xm5)IkGn;;UMu7UaR3F%_PF&+{1!twjMQg<_m z#KQBuP`-^O6#dH+SxFAK;_<96-mo8lZ8MRI2y9 zq&qC_gMucQK%yeO(^oue0G);^FK=Hm9|`Kj^}BmAn@0*O&iEyBf%SwROf0zbfTw>=^>9fa<@Z%%J*kPZD&r;M$ci4(+n zSBs#NA{xJsWksoys4jv91kzerbc~t;SeRR?hS|XhprW_54zb+kqMMk@yuS4Vg?~UV zinF6*F-kUatfIKBN3RdzaTG-?zsulqgcG7FGXlxj@Y$^RzQI+*56)=fcqF=s1kFsA z`qiqRS4s=JOrWq(Rf2+{W~}qhr!Ak$2v@^c_8pIX%}}Th z^aZGk)m~nrK1de2&eUA^{EpVc$&@?)x~Z}4A# zRj6@vdia!r%IibZM>U|4V&M?CHk7HU?|+VNr?l-Yp?P}bQ2c4xjQ2}?&fN2t`w`Us zqeNQCZXtHS51w*GE#BY6d@TnEv-tDYo4TsoR4nVN5z;m;q5PiDNt-fni9%e;#|hRa zF-_M%+V6t@7o$s!8v0p@YIB=mi7!;fMuN0f(>lX8?{}_awh;S0cyjuHcyqxlV7p^5 zDX+2u((qPdj5YPT@_Sg4phB;$QPNc-jBD!0vXU3R3NlXS<6$akEp#Zzd%JC*xW1|N zEfvyJzIlg@NjXo!Kj(F#5}RUP18Bn_CUF*QV>$R$2>&xHsYO+S#>?XqTtU}SxcyDK z0i~tji2K4?+0k(D%{=0?q2bFPG-1kAZE8eiR$&#OUW!HSLonjNeH5**3n~{DxpeJ2 zq9_=GmB&W6mu5veV}HX_I}aUnIqh>lq|cInr9^mo_UCb=LrsO>F6-5?#Hshitd%IK z?~lp-$^>gA@3;&#V64g<D(vd>;c~&q-T{|67rPiU z(?4NvJifl>s;;w#m5d8^d#J{~ILe&Zt++P3$-6ABKBu6|XOYS3gxiIim9fD50`+ZA zZ#BF8*Uyv(j$-;ue;YiG=hj5}I-m87RZu-C4GhfTsX##^27zynQuNL4x7+uM>3+v| zcGc}hZbhxiAG$9o`ACEPGOh7i|eec41HTvz`k( zOURMxUhd-WwjEMP*r6pCZHcDhu!IYl81Fm|T5eVXL~akthKtUGVShW+yuGO-amc?v zz1?0VbCa3F!1jaT6Jg04s%Fzc?+*tyA-UL1EZ}TF`1c#%PdToYTjwBd=m_BkS9+1c zPco_Kg&fnzc?)Y9oqpj;)djSKUNTj9?f1+^^?-?+Leg6P02QciBQF{`CV*Hh+cC~N z|C#3mW-Xqxf!cm%g0!mmzT&cMa6L9Jr!IvRKhodKXvY>P|1?fHN4YEGW)Btir8G*T z9;W$PsmgE8At8Km`!?HWm}4<2_3|3#tGazRux%(XIcAbaV&%x6gU(#h(egpxVl;k} zj!uly7r@f~p@u|{TF-=6LHL*j}+se(>@#mWz@ z=7nlZ4t>=ni!_+^U`lT^rP0IUb@lgz+0rsS!1p*vp0t(vx!vs~34XL`j;U6iGJ7kl zm@Q6rE6~BQ3w%ws7S?oklc2E*O~UWVC&zjPmaIOYs#!q=iyN3^2e?BDCH-IvrzQ%H zg=`pEA@?F}{qnH6EYYKGd{)Yf0hBA_*fJW3&>RiQ{kA8cy36ChLa+)U^Pd)F`NNd2 zwaml6(c>Fa2am^=J0~kP0Gemy@as!VzU??Nw*Bwd231K!pQY9wWB>?a@pV3QM$_B# z4T(;!J_8sFNJxfE@{zJ?-a7lbs@iZrZ7qFDCj!&p4_g}1U!lRdQBfC2Ye-wYw4M)1 z?;_6xW7vGAmU&in-4v^bfuOtE6`e5{3s*JhxN-gLyuk`S?acfV@Pl^g0FEud2Tneu zKUC*a16wY?heLG5^798IECKIH_q%3M8o8LS-Wzp{vp&?{8%Yr(|BWNpVZrOiAJ!yV zzRf|aw4X+ZgI(;$D{_&Tu}M5wIBcRJf_mANGQ8#KMgz>nbKsDLK4)W%lK`CG40cH0 zuOS3pVYE(^Pv&Z7F0Zu4I6&=ctvE-(p+NqtTK|lzgX?+asI1~mJjWzTaZ{Y@AhHEH z!o_=l{E`oOnbdT(=hOCYG4Y;WpKCL})Yge2{dx2}19&?kF@K4Xsd#B*#umEnS7Vch zg?D@yb`+(u0Dr&gJtL0Ne(r>gt`&L}s6GlLPLaC9^a!#EvJJkeXEV~u6}QB&ztU;d zm$6l+v!tfV!~qnR;MAbb*-<6^07&;}HYENqT%g7tHAXV$YBNN%P4e?u)P6cGq^qJF zlKM7!31ScV>PlyaE`q$FSpy$JnvOSVp5hqrT zxt@xnbY6zx&Q%9DQRXCYI+^##O4$lK7wwmH$D(w|RzocoOS4#$$D4DK$yN8wIGMEV zPBWq=YQ0AX{UO7)jgh898xtOj|CFH)S&1hC3!Ppb1|BL*d6bza8}(xOPi3ry+g`rY z@VI#Q=uS9bmVFB!;bEZeL%xUQC z;ifu^C1GEk)<*_C6tLW615UT)5IEL`p&0y^F|`u)|Me99fmmo|#nfxhU)Ara+4MDb zsjW9RfPIpRQ6Rqwr5crnQ{G(-O<$P-{jiX0p4=DThD^cwg3zaw02cR-haF1QIPL%8Av z5Cse-SjI$E07)xvsSHgujh1HjHA>sbKzx}jPJv+tqJ%Iz3)>pvH%Cfm#Z}iu&Nzk6 z3F@qorKL+VWdAR`=Qs!X#DSxiu?T+Ac6z=xmfy!Q zN=uW|bs+6F0rD}gn2s*wTaoajIyDqYj{l&LmbT{#uV~b0%s&WTLLHeeLcHARruLblyND8S@NryobqGLH%F!s>@EZcP1wJG z*$VtCvVBmtIIJ9{b1i6=bRMig)fl>!34&JpBx6f?!jqKH;;oWWx+fa=I|e04Z%z0Z>nFgSQbDKYJY2mL7sTG6p=JzX_W?99di!=W-&xAiz|al?NX z^gJFjan* zNja}|LWGm@_DgJMPXxRjjBRmyy73H5!j}lCgwoQ&Fx1%?iw3!E!LZhBNEQM?4suM3 zYN7k!*XB5YJ5A#tpWq7`{bg!D#B}mlJX;W!U5YR|QUa8W$Quy?x}K%<`HzSD52H z{!IZ535^Q&o}iRQG)OxUhryI5td{bVau#gUOeUy$N(UL9^0>fsbfi-~Y?GxaHMGj- z-;uJx;A2!{%%ZtcYhUOVI6+Min4Aou`(^yDY)J{^x=tQ8hM2nF&ofH%lG{J-Q_;WZ z(Bl5VYJ9P;A+FxvZps!qZg#xGbN)T?Emy)WxtBiSWmg6YgTExL{NniPtgvBokkw}> zfI5w)(uUH~8J(t^Kt_hMjOT0I@}x--pP(M)LOk0%ZsVQy#xH}Kv+%<3%x8(B6=2P_PYyC|uWuNwQ`{bnHHYm&^z7HkM{kSEm&S{Y?3$Z<~e`Og2lo*U_r!QH?p$EVt4`F*TL(%tnO9%5V3&B z*m!FXTDqVueF)Y8ek5M;k{69dtZ5EHH~a4w56wfIlB^TuOqAB}Xkpc*NUi$oYT3bV zFF=P<2_;QchIo)&88oT9;$lIO*Nwn?UrShHH7mn_LM*9ntZ?4KGVMVaJ}cwPOj}D# zsi$vhPwG4vD+~*C3|v6^=*Kx`aF>)k6{kC(;A7}uN8K{rSD!iAc0U@}p%K5|UcsOV zfkZ?^`q#?&=6u&h)7qg0{Sk5+$JR{Wr~IOFD!j$RVhE|Q!hBR2rBI67vp;HZR zH9lMl6U`ZSt`QA4WMV!u2O`0Euu3J9BT<*lvO%9jc z#OGzkj$%Q8r?}@Y$~FC-g6k2qU)|_Ul5@~_Q>7^^PDou1!~*c9i8!H~tR+ogu)+Qy zr^gdj*lx30AF+z+VqTn`QIFxS|5;(J@vZ$fQH0^h2HDe&O^zHXFL%R-5_vB?(f_ zHy-5Qe#KPsv5M6p@&MB~7Co{xxy?Mi&fh@T#)pZ+#U*W7lF8A<4dW|yq2Bw6p8NYt z&9-EM+HY9rOIKlFwi(L*H|mc(dRkH}vXxVXc1gXIvkLP(*L0McqOnHNFOeygUB>jn z4XyxljVUJGjIC<9WzPB@G%N%#@)rIlRb@INyjY{6Mn1MReF%C`4EZOZqW07w+YRCo zpZ3H&fwD~pUcK2J-|uxcli;Jjn67UyMUrs|y5ByaF(b7D(D>zJ#;nV(kgO30IwKr@ zhe=!luWr`zPsQ#;hdZEHaII+mKcL7px}Q^Zyf-608O+e3AR6%i4ESeB+VZc?u{yZ6H60plUmV0t>K-_fO>#ijBU_8Z;649^pT zai5_=|9kH#$bgzw#|+xQ9%YI7;$QAzDIFKci7FGa%pg7VNzT$t`}6 z*;r9wG)@6H6QS`-o$zIfg1&-0FzdgOv;XDU$QRt)0vx$x74g74cxYplANgYau5M|g zZ&rO~7z{Tsz{O*C;Q2F!Q^7jEM*vgg%hLnlpdmgiN?FQlxc$Unh1uiIO{MYpNWf7@ z=RgCCyp`_`pLP34Drsp>PX#z5-z1PpgD%SVukT+_hz8LUx<7wJbZ$NH(Q5D3znpt@ zE9pXFWF@TclsV@eo0l^18O>J7`qGlFNhSLb^;k#4Zfw+4(8ujgrL>fg=Hu8p1k=jc zz%8EUuq%r3aBR;O?N)EGXZgZP?Z^-7oVaJ*jRVn-CP8Tc(Cke7q0U!g_Lge zZ+(Jo7XxBA8rRL&?<=-y-ADDf(XOpaEAZ9Tz*U=`60Dxq8m=dcW-_3JIxOYHm9XK&|yCBC<@JSQIzZHE;DdoT`h_0`z5c z(98Oc&>iV4a>oLn)|_6tdO8woWd~DZ6j0Tp$3Ve{M@~x~)4#dO^)7Sf@=m>kXx)~A zV69*8DJQ>~p6fBue1J;j(sh5tPT)L}T7ijTbMp>63*VQejt{eJ=miG{yD=d3tbLWy z*=t#E{K|9Lb6GQy=1Y9^B(L}3kR2uPf{N9E?vyoE~ZUP@{4ykM;(Hb%-# zwhf0pEhC~;rkR6wb{a(9@ zM@@bxr9F#cX;aCfxIz>++3lao7{eDPHossWxTdd{*LW171o0)E&%8WpI+RpEQ zS@TNZq4C+77ZhKOIHI+HRsa-?9fmPWw%vB&G9CZK*S;E42A*O*~R6?jC(QZCx zxO`MZb5?&mR`_r9a;*jTE1;O4=}1zF_ixMbo%4)MH_D8ba|L7Hc=bH;a5j$e`rTjl zA+J5hV>T?l|JaqywQ4r=j zyt5A=Z#j*W+F$S;4-nRQYe2+Ifn1=k3RRcTzTGRv z?Po$rymGN+Y&9|*2&ApM2sc`e&+|bv&2^DjJc#WctHkFeUa7w$NW8Gvs*{g)Q|P1J z?$i#ua#`sfX{*eXDF&N;`RcWhgvODuF z1QLY>wimDVx(8^4_73^6(GGs!c% zNVoW&7fb~oFt7$UE?;l7qkGhJ$xKpV&lEyAR@4{v&9TM=oBT2S;_Yqo>-YLjhErE$ zFFK3pdxRH4hx!ry%ZPQS^I?8u)YmuVabHAJ#xBshE=84WLT;0Y|7x4~(oQ}m(*?#o zs-MaQhfUs$sK1fqsr>Gt#xb*W2KvZr6|4JddyWJvF;&g4<+ewD z7PnbGLhb4hb=>iN6S2K35ir8+B1Sy#>iS)DAQ)+bV?(ljox--9l3Xv47`ltL=UW^NZWw!0v39mV%iAy(l`VLG)zjh6>Q)_F}VDW@d1Fg>Rv%+2xs zU`KIuqTTFFDe8DT+Li9Z2KQI0S5`}lMqEXrpUmpYQ-g#Ynd1BE8=&>waGCPpJiIz2 zgW-{grwU*cY9woO{SZ$qItuCaV`+Hn5sY-)N)}r2ZO)^wZ>-_>OZG7qiDwgy*%*0g zVf`|xwi%{C)Wi&5{h9wZHGUDuP{jhP72Q(Z+3owjK)BcvGmF|9o@PX9RuYJjPf`xD zawxM5x`*!14aPJPE1p=!WxoPZepc#T(d)Tj<3pjmv1e(?=nFohOChY$41`>; z(Z8;OR*w2+1{{R(2r5XW6a)FQ1QM3#11jBk<1~^+|N>Jss*Y*7O@mw-G z>tR5=^M}kB9=Z0%Dx6*zSb7z_l1p{juf^7bfEB177k6YFGSx^ow*W|;I!h3FVmK>K z)~lgmFNKdelO@`~{=qQz^#^u__2&b_Ah02_!71C_0MpSo!C^p6_u~0l2cE^7t|3ks zi<-5u+4bvp@?bB4N=yw~4I(6T<@4cG(w9hZx@*EO;zKeVoCe_Gm2w*2^Mc&;&>}x8 zN+MH`@Q@sW8Pak7KR>p9J^SD(M?l|3iQmT!Uxs2QjaJ^nGTT}pEN3FF<3r<2hw1JB z?ag638x?k)R*;@G=?gUQ77QQSpQD0Z^%U{ z82aVd+mZG=iwZ>bvu?FfyH9KAOJ9=>XX{1fC^6QrI05F{*3cc^!_B0W7a8G(rxZyI7A_6huW4DGC{t^qF#%0>a-1m$r6u=dZS1uvPAg>?8Qo_(! z+kS<9ruPMm*SzQ8Z(BTaakmD@@Yw=7L^%}7ufQ}htke$c!D+KA*VPWk=NZcC9DYTe z&-azg@|tWiL8TurRI%l21nR;X5jaeh`XLs+i)fbJ3Xtf6SZwgm(&rY2Bo9h-Gd4P< zXceO~vubg@X4Hd=CVLtMiGYaKC7n`ewb#3vvhd3QNdTLj04Mg zcp#5z*<~%lpe?u@vy8tVihA&iYJRN0AQKCtR60z%E`X>f)a} zLQ7-^LSC3s`+9ot=82a@)~CF-)Lr7SMg+c+T5{9jI^;tFjSCu(1;g4;#lvKPtP1ZU zDkq@=`x^Z*8TfItCF_eQQu1MhEF+~AY^)45AAgvPr0@f)4y~!RAM-vem8yBwflJB5 zE?pnQnhuSV*gx-C#w^_auj)pxGm^8tgyrC3?-xc>|5>Kf3WC(N+vzB>tKb}MBF^3e ziE7a}4OnH3cM2$UUy;gDNcyM*N?6jk=6eAASNbUVQHo6jYAF$9x2@xIo^@XGg7UnL z3JoM*&cfnT5(CON@M(sW|!v?!a(&Z zgt>{$s~Hm|C_wQMRxs?vPkBF%@U235vS=zrsZ&{0KFCgNUVaR9v+lV@$BH-o>C?o# zSEqtASZFmgfm;NL5Pa9BN69QBwf2NU>W_!{kenx2<|zODAnMeojyv3$>S93P1R6i$ zwOIij-7IsV`Jd^}-?2XTe;pd-6HWG9utxy@v_r20DkDM5(?i~$8Em>vLfc>ZX56ul zmIFW$S`sKHR#Bug>gi<(aeEI(Oz1g#qtc1(QlsfgoR}K3l?JLV{(J#d{BPGJ3Fk9? zdv?|3R&_DDZ2=x6nEabxAF0wvzFrz6%RNiYDYFoKrya>94M+?~B&{l}q|=+JABxkT zf?ZkY_t2Td73|Fum{%rV(+EV0ZnUQ1azOs=!@7>No2Y7u{et(unDD%TGXAM#?^s`!tJAq!(qN1!-*>Z6=+SlY zegg@`vxnJybjq>DLiFN5ke9u|>=l)u=}`ke#Z9;q$geNLZ7L3Zo0{8kt3)mD{*8`P znxg`*$tismlOjX)6g}r3X^<&X7VVmN-c9RZ=W#fCvXIlAO_MD;OFd_}ND}8mYr9ax zj~}5&>mV}zw&8sh455PBCswz|R=wnW>rtLht1(m*XrZn7wLg(j>i3QCN*+)Y1#&@= z00iB5gY@FE*hOZ6MmhMs5hi%gx`dQim2$av$yht^?Onx5%)6-Ii^>KC1Vb0MKUrWaVqlG^uxst;#LM^>-&-Az$8aKX#N)lK%B+Cg(QZdo zW!1SI_`&P7mS*eO$Xx8y;bMS$fuvm$Q&?qLCgj!}hVbb2m!t?<3dA!!e zej=Q5LHoZb57O*;C2fH2r=b9UJTr%}r4CWY9XS{g9n`~GgKa2#L^P%HOPtVbSO=7( zncy2#;+rd>9b{dYPSBxJVEno9D63-4=P&C+_ zgOI-U{2f61B!rd*m;`?lXFncpVN&K~?BADG{HmBfBUV|SHBnUeqw~y2n*XBxiTl!P zv!z{7&$$rbeuV_|jLoF9F5PGWObSgl6_%0KU`0puYb5u9`92)@9u}p&{?A2`;nXwM zcS?GouMy9|wmsK66(3T6mTK{Eem`P!A*8u3!aV5J6nuHP*8W$^$w8;a2T40H;W^mx z`OLzSq9V+I%)mfs`LW{z!!`Ec_5jaO_t!Skf&%ZiwEaIPO;h0Oo+D$=2i3d9UtEYH z#sQD92+gfiiIfNPnAzi%rI3aI4liEDqpF-?06Xt2G?s8>EHpc8sm!eZoD@JE#pIQq z@#6X(UDL95`0OOiFE4+aW|kTx$8k;@smKxskzVEXAP-caGdaGb2tlgj?jb##VPwj31pB612RZDTsu=qzy1^pUEilXu!1%~?L{-Bg~ zaf42WY;rsloPe|_sPocn(&mo!9Bf44mLMb^##7Q8eID34wuj_NOv`d};$>3#>0%Uf zKbYoPzp>NJR)aQ%e+#7)MeZdF#;yea#U$b0R7M-m0^UnpxaerO3i@BO3B_?n93Qs< z=h>qOu-2zgWX?iajGdb|26Ae+L~ws{7|~Bm_hKkpobR6_NTC09v-hVr=s~Vn1coRH zhf=PCL_xrzq;qA|%bkzlZ0jw2yWWj^`VkR&HGwIJcot*$T)Wx51bCk8Dx_e|u%L?$ ztDj6lpnzrXHu)$rcnI;DarcldcHpGYWS$6ah%RTU2~LZ^BJss!;;0DITmFx>nFA{3 z4!!3*=px1OSkgfqO%oJ8lw}aECpdnA3W0M~91^iA>Zz3<^?KtA?P|SqL(Z*b-dH1M zTA7KILOjwO#~e6m5@)D`VlTez#O!P^JeX{3=&F0}SoKnF**eR7(-E9_S7e!SuBZr- zT=_%bc(LqUY-(ZfsH|f8B`r?S3?d45v_Is01p67`W@O5UX?y}vG9U`m&hm%1^l7)- zqcBu92fDphaX#NU(%Zkf$+lUAOp`UIzY_yMUK5Fmn!x31jDW?2s2p$utAFp6AK^qL zT2h>7j0i^ocw9Vl>-3*$+sOTYD;=OlJ6&g@EE^`+MPk}2>WPCck1hGMGb1=wWItQkN%~p-}Bc0Qr6Ga*x3eKKN9dyGGpU z_Q|t{MDk{Hm;Z9C@#_FJ3q*lnI#oPL z&ks`FN18#t6)st1{l6nGR)JNAcMmOr&rt2XqV9J4!4mcPF@5i*d{{B2kR{ literal 0 HcmV?d00001 diff --git a/archived/lunar/src-tauri/icons/Square44x44Logo.png b/archived/lunar/src-tauri/icons/Square44x44Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8756459b63d6e8dd6003b97613befbe2743441cb GIT binary patch literal 3419 zcmV-h4W#mkP)~6IvKD z5E2+dD5e+^z<|Lx2ICH~1vbV-wk275l3stix8$6Cl97u*q9u9us_gE2``vTC^PTTp z(b>N_mHa=w#JBn36#wHtd>LX4e*Iqpi~t!W9Di1ZNM9pJ8h~W*jRSZ%I0Dy(sQ)Tp z03raO%=k>=?@>#WDpyy9xQQUZyie189_!0^OmYApwt@u+T-bLC7$b_&>Mb!@d8Bz@nGcE!yN}AnO;9J+H?4?U~xbv5Hgx<*cRK{$L5!aB4VbSGl z6&*&XAgSbxkTaVzSDxLRy{;hqo*zeW(N8CAc*CNM}QCZ|(@PR_xL>PZUPYgX60$*`>V zd{z|P*wiv?!G`#KH!iI@^_}hRTfHUT3HM4?R$&6by|#>KgKPhUfA%Ej!Zo+I8LbI#(Eh z<+)FWhaFwuAw)?|NXW+X4@uvI>n})_-qvTY`_rn5d5^D;-d`2c0u+NuO?}J+DK`qi z`92SApz-V81Q2G|UHk3Y#k_7N;sMgeh6|M?pJUGQ9=-+U%K$X>w+3}&&uQ_k5rd70u5XR5;?Zg zYnfVKI$?2}yAU$9PXP{_638j|P_i}WY@Gjb=;1A0-UeTh9Jg)T0jSzgJvbZC6m(Nm zHvF)$cnV~txx2vIfKDZ+U%K#cKuvb!L|33pwd&QHR&m* zUc32}8$M~9`HP41b(4;=`Z`)ofYlh(TaYC+xyo;uH#PNV1^`qE8VMYUuwQ%Q54z`9 zhIB+~gcV4a4ziZ9*7X&5C-7e&k84~t8Yq?oz=rNwyI&3%!E&!4{djFt+ez1c&@t`& zJ7p+V!%I10r8_o@Lf_5+aQVYoKhMtwwi2lz#ms7g?6m#r! z`_}4J&(8y@6oJ11B``k7$>r_NEBHw4ekfybcwA_Va%pXs^A1EXkhuOvL|m@jxTUHB z>xAUGg%1yY z3xa?a%-(Acz5Ud`lea;urqFgR5mGiHxqC&$#cf&MG0@3CO+c_IX^6^+m9A>kD1orx zRFUoME3s~DK6`gOF(egAS=rli(iOQ;2hR|Nw2$Ys<iIjB9U%~Di)!WX z1zKYSA6y;30V4hCw7TL+5V0b(;$6wFWJhQ*o_AmoQR{OjhFT2;>eq%<_|);aD~P0|EO(SF-RZtCe0vFc%edZgHcM`5mu@geFW7$0gbh}Um%gT51)rfgVty@ z5LpD9Ibix3?MKah1|m-bEz;`t>Q(cvuUxa>4sC%Eg-8#60L*@V+|lIvX+3w%IWRMi z_!K*yL{Hq>5nB4(#^?hu=h5MrAIz1KL`IUe%8ierN6m`O;|6SuC}zAsI~lijO*!Lsw`0R1xBcVyp-=&|?k_UJ&T7v7{JaA*H;hVp z6AeUGAz09!d_nZxwyf%G4Y7vDV0QNFhuOXn1|AA0rnzw8L9lq}m!;e;COr>7~f|qqg?UlTs@OnzD6O6yMU`i3LvNxxk zHJ86p+wxJjwKis%FWsjQ`xYEJ@KTydKZlV9%SxmZsfC{%h-xVS4?qnRBBXqwDD?D# z%q5|P2b2Jn04bFu+O~E+Dn=lGz%&Wg2@0vUA|mUtIpp)a_u2KyyPjAdyA}P%aKP>x zVVwM+yYXVClNb7S05_4-T81mf0AHIaibD`>ATk$RJSmppd1C}lIyL~Ip`T9}Hu z_n*8x)cNUZQ!ctd0iZpT(J^_@rj)blffZF(UG!SRq(82X-HO>j-#gqLpnW22C?F~2 zWGJ<5S*dEwfea!C5f0@>AAS}T(nr#E!6GP)DMuBEY+JK%>`T8JpKCbe6evpD?fB$P zC)KtITlfGiP~O5eVX)it`rBKb7fU4{CXgbD#}Wzf(&>@xv+Xl+(6Ry;BP@~`H|<;o zKjVFVV$@-=Ez2K*)aMD~te@x*X&dD&2N7Kp+O=sV_wqd^PzIw1HzV*OS}G%1IGUu5 z2h8j~@|=4VcO0PAa-bI zX-01hQK9+9LudK%x=C*5#)THN>M~kZ-We{7mqAJaHM9Y~cTGFz_gz!w+{XMOfujK2 zw%pXV*1CT^b}n!pj0PRiCil=&b0A;Zgm<M1OgR|}*T6L&s1^b)mm1%??^uydbrE4B zclAgBfAQWL4xfHe`pHpaaYXXs^^G8Te!z5aaA=AE0I_o2n^`g25eT#ssRq7J0KW_q zi-(#XY!X81ZSLg?jc?w6jJvb-gEAHLh&Ho_wHb)U9ik{zq@tqZ=($g2Mt|=_070-F z2Mq*UG8e2oIb-L*=?wh7QrKizurMg%aOcL=_3u7i|{DaMwy*$RZ2YB$N3XD)#^=R|~2!*y>2a${8qJZ=1ptVD{#N;3y zKn+B{kN)oe>=mRF$37>*gQ?so36n@WG2QJ0whY=kE`$fx5;s!61_i!0;N7kcK+t}K xXp#nPjP(BrQ7cNm`PVn`cRDlRfXR38`VYhRJ7|+21Ni^|002ovPDHLkV1nLacAfwL literal 0 HcmV?d00001 diff --git a/archived/lunar/src-tauri/icons/Square71x71Logo.png b/archived/lunar/src-tauri/icons/Square71x71Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2c8023cc824417a29378a68471b8fb3af33fdeb0 GIT binary patch literal 6027 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�rop@t+= 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 V#?y`xQ)U1F002ovPDHLkV1n!EW;y@> literal 0 HcmV?d00001 diff --git a/archived/lunar/src-tauri/icons/StoreLogo.png b/archived/lunar/src-tauri/icons/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..17d142c0a43208db62ca28b86a3239329ac93aea GIT binary patch literal 3971 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 literal 0 HcmV?d00001 diff --git a/archived/lunar/src-tauri/icons/icon.icns b/archived/lunar/src-tauri/icons/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..a2993adc87ff15230d919da5a3a6600f0892b48d GIT binary patch literal 277003 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
j#(n6`cTK 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, + with_relay: bool, +} + +impl Drop for ServiceState { + fn drop(&mut self) { + if let Some(child_process) = self.child.take() { + child_process + .kill() + .expect("Failed to kill sidecar process"); + } + } +} + +#[derive(Debug, Deserialize, Clone, Default)] +struct MegaStartParams { + pub bootstrap_node: Option, +} + +fn set_up_lib(handle: tauri::AppHandle) { + let resource_path = handle.path().resource_dir().expect("home dir not found"); + let libs_dir = resource_path.join("libs"); + + #[cfg(target_os = "macos")] + std::env::set_var("DYLD_LIBRARY_PATH", libs_dir.to_str().unwrap()); + + #[cfg(target_os = "linux")] + std::env::set_var("LD_LIBRARY_PATH", libs_dir.to_str().unwrap()); + + #[cfg(target_os = "windows")] + std::env::set_var( + "PATH", + format!( + "{};{}", + libs_dir.to_str().unwrap(), + std::env::var("PATH").unwrap() + ), + ); +} + +#[tauri::command] +fn start_mega_service( + app: tauri::AppHandle, + state: State<'_, Arc>>, + params: MegaStartParams, +) -> Result<(), String> { + let mut service_state = state.lock().unwrap(); + if service_state.child.is_some() { + return Err("Service is already running".into()); + } + + let args = if let Some(ref addr) = params.bootstrap_node { + service_state.with_relay = true; + vec!["service", "http", "--bootstrap-node", addr] + } else { + service_state.with_relay = false; + vec!["service", "http"] + }; + + let sidecar_command = app + .shell() + .sidecar("mega") + .expect("Failed to create `mega` binary command"); + + let (mut rx, child) = sidecar_command + .args(args) + .spawn() + .expect("Failed to spawn `Mega service`"); + + service_state.child = Some(child); + let cloned_state = Arc::clone(&state); + // Sidecar output + tauri::async_runtime::spawn(async move { + while let Some(event) = rx.recv().await { + match event { + CommandEvent::Stdout(line) => { + // line to string + // print!("{}", line); + print!("Sidecar stdout: {}", String::from_utf8_lossy(&line)); + } + CommandEvent::Stderr(line) => { + eprint!("Sidecar stderr: {}", String::from_utf8_lossy(&line)); + } + CommandEvent::Terminated(payload) => { + if let Some(code) = payload.code { + if code == 0 { + println!("Sidecar executed successfully."); + } else { + eprintln!("Sidecar failed with exit code: {}", code); + } + } else if let Some(signal) = payload.signal { + eprintln!("Sidecar terminated by signal: {}", signal); + } + let mut service_state = cloned_state.lock().unwrap(); + service_state.child = None; + service_state.with_relay = false; + break; + } + _ => {} + } + } + }); + Ok(()) +} + +#[tauri::command] +fn stop_mega_service(state: State<'_, Arc>>) -> Result<(), String> { + let mut service_state = state.lock().unwrap(); + if let Some(child) = service_state.child.take() { + child.kill().map_err(|e| e.to_string())?; + } else { + println!("Mega Service is not running"); + } + Ok(()) +} + +#[tauri::command] +fn restart_mega_service( + app: tauri::AppHandle, + state: State<'_, Arc>>, + params: MegaStartParams, +) -> Result<(), String> { + stop_mega_service(state.clone())?; + // wait for process exit + thread::sleep(time::Duration::from_millis(1000)); + start_mega_service(app, state, params)?; + Ok(()) +} + +#[tauri::command] +fn mega_service_status(state: State<'_, Arc>>) -> Result<(bool, bool), String> { + let service_state = state.lock().unwrap(); + Ok((service_state.child.is_some(), service_state.with_relay)) +} + +#[tauri::command] +fn clone_repository(app: tauri::AppHandle, repo_url: String, name: String) -> Result<(), String> { + let home = match home::home_dir() { + Some(path) if !path.as_os_str().is_empty() => path, + _ => { + println!("Unable to get your home dir!"); + PathBuf::new() + } + }; + let target_dir = home.join(".mega").join(name.clone()); + + if target_dir.exists() { + fs::remove_dir_all(&target_dir).unwrap(); + } + let app_clone = app.clone(); + let output = tauri::async_runtime::block_on(async { + app_clone + .shell() + .sidecar("libra") + .expect("Failed to create `libra` binary command") + .args(["clone", &repo_url, target_dir.to_str().unwrap()]) + .output() + .await + }) + .map_err(|e| format!("Failed to execute process: {}", e))?; + + if output.status.success() { + println!("{}", String::from_utf8_lossy(&output.stdout)); + } else { + eprintln!("{}", String::from_utf8_lossy(&output.stderr)); + } + change_remote_url(app.to_owned(), target_dir.clone(), name)?; + push_to_new_remote(app, target_dir)?; + Ok(()) +} + +fn change_remote_url( + app: tauri::AppHandle, + repo_path: PathBuf, + name: String, +) -> Result<(), String> { + tauri::async_runtime::block_on(async { + app.shell() + .sidecar("libra") + .expect("Failed to create `libra` binary command") + .args(["remote", "remove", "origin"]) + .current_dir(repo_path.clone()) + .output() + .await + }) + .map_err(|e| format!("Failed to execute process: {}", e))?; + + let output = tauri::async_runtime::block_on(async { + app.shell() + .sidecar("libra") + .expect("Failed to create `libra` binary command") + .args([ + "remote", + "add", + "origin", + &format!("http://localhost:8000/third-part/{}", name), + ]) + .current_dir(repo_path.clone()) + .output() + .await + }) + .map_err(|e| format!("Failed to execute process: {}", e))?; + + if output.status.success() { + println!("{}", String::from_utf8_lossy(&output.stdout)); + } else { + eprintln!("{}", String::from_utf8_lossy(&output.stderr)); + } + Ok(()) +} + +fn push_to_new_remote(app: tauri::AppHandle, repo_path: PathBuf) -> Result<(), String> { + let output = tauri::async_runtime::block_on(async { + app.shell() + .sidecar("libra") + .expect("Failed to create `libra` binary command") + .args(["push", "origin", "master"]) + .current_dir(repo_path) + .output() + .await + }) + .map_err(|e| format!("Failed to execute process: {}", e))?; + + if output.status.success() { + println!("{}", String::from_utf8_lossy(&output.stdout)); + } else { + eprintln!("{}", String::from_utf8_lossy(&output.stderr)); + } + Ok(()) +} + +fn main() { + // let params = MegaStartParams::default(); + let params = MegaStartParams { + bootstrap_node: Some("http://gitmono.org/relay".to_string()), + }; + tauri::Builder::default() + .plugin(tauri_plugin_shell::init()) + .plugin(tauri_plugin_fs::init()) + .manage(Arc::new(Mutex::new(ServiceState::default()))) + .invoke_handler(tauri::generate_handler![ + start_mega_service, + stop_mega_service, + restart_mega_service, + mega_service_status, + clone_repository + ]) + .setup(|app| { + let app_handle = app.handle().clone(); + set_up_lib(app_handle.to_owned()); + let state = app.state::>>().clone(); + if let Err(e) = start_mega_service(app_handle, state, params) { + eprintln!("Failed to restart rust_service: {}", e); + } else { + println!("Rust service restarted successfully"); + } + Ok(()) + }) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); +} diff --git a/archived/lunar/src-tauri/tauri.conf.json b/archived/lunar/src-tauri/tauri.conf.json new file mode 100644 index 00000000..37a63af3 --- /dev/null +++ b/archived/lunar/src-tauri/tauri.conf.json @@ -0,0 +1,63 @@ +{ + "build": { + "beforeBuildCommand": "npm run build", + "beforeDevCommand": "npm run dev", + "frontendDist": "../out", + "devUrl": "http://localhost:3000" + }, + "bundle": { + "active": true, + "category": "DeveloperTool", + "copyright": "", + "linux": { + "deb": { + "files": {} + }, + "appimage": {} + }, + "targets": "all", + "externalBin": [ + "binaries/mega", + "binaries/libra" + ], + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico" + ], + "windows": { + "certificateThumbprint": null, + "digestAlgorithm": "sha256", + "timestampUrl": "" + }, + "longDescription": "", + "macOS": { + "entitlements": null, + "exceptionDomain": "", + "frameworks": [], + "providerShortName": null, + "signingIdentity": null + }, + "resources": [], + "shortDescription": "" + }, + "productName": "lunar", + "version": "0.1.0", + "identifier": "org.mega.dev", + "app": { + "windows": [ + { + "fullscreen": false, + "height": 768, + "resizable": true, + "title": "lunar-app", + "width": 1366 + } + ], + "security": { + "csp": null + } + } +} \ No newline at end of file diff --git a/archived/lunar/src-tauri/tauri.linux.conf.json b/archived/lunar/src-tauri/tauri.linux.conf.json new file mode 100644 index 00000000..2cdd60ea --- /dev/null +++ b/archived/lunar/src-tauri/tauri.linux.conf.json @@ -0,0 +1,7 @@ +{ + "bundle": { + "resources": [ + "libs/libpipy.so" + ] + } +} \ No newline at end of file diff --git a/archived/lunar/src-tauri/tauri.macos.conf.json b/archived/lunar/src-tauri/tauri.macos.conf.json new file mode 100644 index 00000000..0cdc9a4b --- /dev/null +++ b/archived/lunar/src-tauri/tauri.macos.conf.json @@ -0,0 +1,7 @@ +{ + "bundle": { + "resources": [ + "libs/libpipy.dylib" + ] + } +} \ No newline at end of file diff --git a/archived/lunar/src-tauri/tauri.windows.conf.json b/archived/lunar/src-tauri/tauri.windows.conf.json new file mode 100644 index 00000000..834d5732 --- /dev/null +++ b/archived/lunar/src-tauri/tauri.windows.conf.json @@ -0,0 +1,7 @@ +{ + "bundle": { + "resources": [ + "libs/pipy.dll" + ] + } +} \ No newline at end of file diff --git a/archived/lunar/src/app/api/fetcher.ts b/archived/lunar/src/app/api/fetcher.ts new file mode 100644 index 00000000..ddd9ff0d --- /dev/null +++ b/archived/lunar/src/app/api/fetcher.ts @@ -0,0 +1,165 @@ +import useSWR, { Fetcher } from "swr"; +import { invoke } from '@tauri-apps/api/core'; + +const endpoint = process.env.NEXT_PUBLIC_API_URL; +const relay = process.env.NEXT_PUBLIC_RELAY_API_URL; + +export interface ApiResult { + req_result: boolean, + data: T, + err_message: string +} + +export class FetchError extends Error { + info: any; + status: number; + + constructor(message: string, info: any, status: number) { + super(message); + this.info = info; + this.status = status; + } +} + +const fetcher = async url => { + const res = await fetch(url) + if (!res.ok) { + const error = new Error('An error occurred while fetching the data.') + const errorInfo = await res.json(); + throw new FetchError('An error occurred while fetching the data.', errorInfo, res.status); + } + return res.json() +} + + +export function useTreeCommitInfo(path) { + const { data, error, isLoading } = useSWR(`${endpoint}/api/v1/mono/tree/commit-info?path=${path}`, fetcher, { + dedupingInterval: 30000, + }) + return { + tree: data, + isTreeLoading: isLoading, + isTreeError: error, + } +} + +export function useBlobContent(path) { + const { data, error, isLoading } = useSWR(`${endpoint}/api/v1/mono/blob?path=${path}`, fetcher, { + dedupingInterval: 60000, + }) + return { + blob: data, + isBlobLoading: isLoading, + isBlobError: error, + } +} + +export function useMRList(status) { + const { data, error, isLoading } = useSWR(`${endpoint}/api/v1/mono/mr/list?status=${status}`, fetcher, { + dedupingInterval: 60000, + }) + return { + mrList: data, + isMRLoading: isLoading, + isMRError: error, + } +} + +export function useMRDetail(id) { + const { data, error, isLoading } = useSWR(`${endpoint}/api/v1/mono/mr/${id}/detail`, fetcher, { + dedupingInterval: 60000, + }) + return { + mrDetail: data, + isMRLoading: isLoading, + isMRError: error, + } +} + +export function useMRFiles(id) { + const { data, error, isLoading } = useSWR(`${endpoint}/api/v1/mono/mr/${id}/files`, fetcher, { + dedupingInterval: 60000, + }) + return { + mrFiles: data, + isMRLoading: isLoading, + isMRError: error, + } +} + +export function useRepoList() { + const { data, error, isLoading } = useSWR(`${relay}/relay/api/v1/repo_list`, fetcher, { + dedupingInterval: 30000, + }) + return { + repo: data, + isRepoLoading: isLoading, + isRepoError: error, + } +} + +export function usePeerId() { + const { data, error, isLoading } = useSWR(`${endpoint}/api/v1/mega/ztm/peer_id`, fetcher, { + dedupingInterval: 60000, + }) + return { + peerId: data, + isLoading: isLoading, + isError: error, + } +} + +export function useRepoFork(identifier) { + const { data, error, isLoading } = useSWR(`${endpoint}/api/v1/mega/ztm/repo_fork?identifier=${identifier}`, { + dedupingInterval: 60000, + }) + return { + url: data, + isForkLoading: isLoading, + isForkError: error, + } +} + +// export function usePublishRepo(path: string) { +// const { data, error, isLoading } = useSWR(`${endpoint}/api/v1/mega/ztm/repo_provide?path=${path}`, fetcher) +// return { +// data: data, +// isLoading, +// isError: error, +// } +// } + +export const tauriFetcher: Fetcher = ([key, args]) => { + return invoke(key, args); +}; + +export function useMegaStatus() { + const { data, error, isLoading } = useSWR( + ['mega_service_status', {}], + tauriFetcher + ); + + return { + status: data, + isLoading, + isError: error, + }; +} + +// normal fetch +export async function requestPublishRepo(data) { + const response = await fetch(`${endpoint}/api/v1/mega/ztm/repo_provide`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(data), + }); + + if (!response.ok) { + const errorResponse = await response.text(); + const errorMessage = errorResponse || 'Failed to publish repo'; + throw new Error(errorMessage); + } + return response.json(); +} diff --git a/archived/lunar/src/app/application-layout.tsx b/archived/lunar/src/app/application-layout.tsx new file mode 100644 index 00000000..d8160898 --- /dev/null +++ b/archived/lunar/src/app/application-layout.tsx @@ -0,0 +1,211 @@ +'use client' + +import { Avatar } from '@/components/catalyst/avatar' +import { + Dropdown, + DropdownButton, + DropdownDivider, + DropdownItem, + DropdownLabel, + DropdownMenu, +} from '@/components/catalyst/dropdown' +import { Navbar, NavbarItem, NavbarSection, NavbarSpacer } from '@/components/catalyst/navbar' +import { + Sidebar, + SidebarBody, + SidebarFooter, + SidebarHeader, + SidebarHeading, + SidebarItem, + SidebarLabel, + SidebarSection, + SidebarSpacer, +} from '@/components/catalyst/sidebar' +import { SidebarLayout } from '@/components/catalyst/sidebar-layout' +import { + ArrowRightStartOnRectangleIcon, + ChevronDownIcon, + ChevronUpIcon, + Cog8ToothIcon, + LightBulbIcon, + PlusIcon, + ShieldCheckIcon, + UserCircleIcon, +} from '@heroicons/react/16/solid' +import { + Cog6ToothIcon, + HomeIcon, + QuestionMarkCircleIcon, + SparklesIcon, + TicketIcon, + ChatBubbleLeftRightIcon, + CodeBracketSquareIcon, + ArchiveBoxArrowDownIcon, +} from '@heroicons/react/20/solid' +import { invoke } from '@tauri-apps/api/core' +import { usePathname } from 'next/navigation' +import { useState, useEffect } from 'react' +import { Badge, Alert, Skeleton } from 'antd/lib' + +function AccountDropdownMenu({ anchor }: { anchor: 'top start' | 'bottom end' }) { + return ( + + + + My account + + + + + Privacy policy + + + + Share feedback + + + + + Sign out + + + ) +} + +export function ApplicationLayout({ + // events, + children, +}: { + // events: Awaited> + children: React.ReactNode +}) { + let pathname = usePathname() + + const [mega_status, setMegaStatus] = useState(false) + const [ztm_status, setZtmStatus] = useState(true) + + useEffect(() => { + const fetchStatus = () => { + invoke('mega_service_status') + .then((status: boolean[]) => { + setMegaStatus(status[0]); + setZtmStatus(status[1]); + console.log(`Service Status: ${status}`); + }) + .catch((error) => { + console.error(`Failed to get service status: ${error}`); + }); + }; + fetchStatus(); + // Set up interval to fetch status every 10 seconds + const interval = setInterval(fetchStatus, 10000); + // Clean up interval on unmount + return () => clearInterval(interval); + }, []) + + return ( + + + + + + + + + + + + + + } + sidebar={ + + + + + + Mega Status: + + + + + + + Settings + + + + + Admin + + + + Big Events + + + + + New team… + + + + + + + + + + Code & Issue + + + + AI Chat + + + + Repos + + + + Reminder + + + + Logs + + + + Settings + + + + + + + + Support + + + + Changelog + + + + + } + > + { + !ztm_status && + + } + {children} + + ) +} diff --git a/archived/lunar/src/app/blob/page.tsx b/archived/lunar/src/app/blob/page.tsx new file mode 100644 index 00000000..87dce465 --- /dev/null +++ b/archived/lunar/src/app/blob/page.tsx @@ -0,0 +1,31 @@ +'use client' +import CodeContent from '@/components/CodeContent'; +import Bread from '@/components/BreadCrumb'; +import { useSearchParams } from 'next/navigation'; +import { useBlobContent } from '../api/fetcher'; +import { Skeleton } from "antd/lib"; +import { Suspense } from 'react' + + +export default function BlobPage() { + return ( + + + + ) +} + +function Blob() { + const searchParams = useSearchParams(); + const path = searchParams.get('path'); + + const { blob, isBlobLoading, isBlobError } = useBlobContent(`${path}`); + if (isBlobLoading) return ; + + return ( +
+ + +
+ ) +} diff --git a/archived/lunar/src/app/layout.tsx b/archived/lunar/src/app/layout.tsx new file mode 100644 index 00000000..1058837f --- /dev/null +++ b/archived/lunar/src/app/layout.tsx @@ -0,0 +1,27 @@ +'use client' +import '@/styles/globals.css' +import type React from 'react' + +import { ApplicationLayout } from './application-layout' +import { AntdRegistry } from '@ant-design/nextjs-registry'; + + +export default function Layout({ children }: { children: React.ReactNode }) { + + return ( + + + + + + + {children} + + + + + ) +} diff --git a/archived/lunar/src/app/mr/page.tsx b/archived/lunar/src/app/mr/page.tsx new file mode 100644 index 00000000..a09d8d28 --- /dev/null +++ b/archived/lunar/src/app/mr/page.tsx @@ -0,0 +1,27 @@ +'use client' +import MergeDetail from "@/components/MergeDetail"; +import { useMRDetail } from "../api/fetcher"; +import { Skeleton } from "antd/lib"; +import { useSearchParams } from "next/navigation"; +import { Suspense } from 'react' + +export default function Page() { + return ( + + + + ); +} + +function MRDetailPage() { + const searchParams = useSearchParams(); + const id = searchParams.get('id'); + const { mrDetail, isMRLoading, isMRError } = useMRDetail(id); + if (isMRLoading) return ; + + return ( +
+ +
+ ) +} diff --git a/archived/lunar/src/app/page.tsx b/archived/lunar/src/app/page.tsx new file mode 100644 index 00000000..ad92a8ba --- /dev/null +++ b/archived/lunar/src/app/page.tsx @@ -0,0 +1,62 @@ +'use client' + +import { Flex, Layout, Skeleton } from "antd/lib"; +import CodeTable from '@/components/CodeTable'; +import MergeList from '@/components/MergeList'; +import { useTreeCommitInfo, useBlobContent, useMRList, useMegaStatus } from '@/app/api/fetcher'; + +const { Content } = Layout; + +const contentStyle: React.CSSProperties = { + textAlign: 'center', + minHeight: 500, + lineHeight: '120px', + border: 'solid', + backgroundColor: '#fff', +}; + +const rightStyle = { + minHeight: 768, + borderRadius: 8, + overflow: 'hidden', + width: 'calc(40% - 8px)', + maxWidth: 'calc(40% - 8px)', + background: '#fff' +}; + + +const leftStyle = { + minHeight: '100%', + borderRadius: 8, + overflow: 'hidden', + width: 'calc(60% - 8px)', + maxWidth: 'calc(70% - 8px)', + background: '#fff' +}; + + +export default function HomePage() { + const { tree, isTreeLoading, isTreeError } = useTreeCommitInfo("/"); + const { blob, isBlobLoading, isBlobError } = useBlobContent("/README.md"); + const { mrList, isMRLoading, isMRError } = useMRList(""); + const { status, isLoading, isError } = useMegaStatus(); + + if (isTreeLoading || isBlobLoading || isMRLoading || isLoading) return ; + + return ( + + + { + (tree && blob) && + + } + + + {mrList && + + } + {/* */} + + + ) +} diff --git a/archived/lunar/src/app/repo/page.tsx b/archived/lunar/src/app/repo/page.tsx new file mode 100644 index 00000000..bec35937 --- /dev/null +++ b/archived/lunar/src/app/repo/page.tsx @@ -0,0 +1,15 @@ +'use client' + +import RepoList from '@/components/RepoList' +import { useRepoList } from '@/app/api/fetcher'; +import { Skeleton } from "antd"; + + +export default function RepoPage() { + const { repo, isRepoLoading, isRepoError } = useRepoList(); + + if (isRepoLoading) return ; + return ( + + ) +} \ No newline at end of file diff --git a/archived/lunar/src/app/settings/page.tsx b/archived/lunar/src/app/settings/page.tsx new file mode 100644 index 00000000..54f98a59 --- /dev/null +++ b/archived/lunar/src/app/settings/page.tsx @@ -0,0 +1,120 @@ +'use client' + +import { Divider } from '@/components/catalyst/divider' +import { Heading, Subheading } from '@/components/catalyst/heading' +import { Input } from '@/components/catalyst/input' +import { Text } from '@/components/catalyst/text' +import { invoke } from '@tauri-apps/api/core' +import { useState } from 'react' +import { Button, Skeleton, message } from "antd"; +import { usePeerId } from '@/app/api/fetcher' +interface MegaStartParams { + bootstrap_node: string, +} + +export default function Settings() { + + const [messageApi, contextHolder] = message.useMessage(); + + const success = () => { + messageApi.open({ + type: 'success', + content: 'Save setting successful', + }); + }; + + const [loadings, setLoadings] = useState([]); + const [params, setParams] = useState({ + bootstrap_node: "http://gitmono.org/relay", + }); + const { peerId, isLoading, isError } = usePeerId(); + if (isLoading) return ; + + const enterLoading = (index: number) => { + setLoadings((prevLoadings) => { + const newLoadings = [...prevLoadings]; + newLoadings[index] = true; + return newLoadings; + }); + } + + const exitLoading = (index: number) => { + setLoadings((prevLoadings) => { + const newLoadings = [...prevLoadings]; + newLoadings[index] = false; + return newLoadings; + }); + } + + const stopMega = async () => { + invoke('stop_mega_service', { params: params }) + .then((message) => console.log("result:", message)) + .catch((err) => console.error("err:", err)); + }; + + const restartMega = async () => { + enterLoading(1); + invoke('restart_mega_service', { params: params }) + .then((message) => { + console.log("result:", message); + success() + }) + .catch((err) => console.error("err:", err)); + + setTimeout(() => { + exitLoading(1); + }, 1000); + }; + + const handleInputChange = (e: React.ChangeEvent) => { + const { name, value } = e.target; + setParams((prevParams) => ({ + ...prevParams, + [name]: value, + })); + }; + + return ( +
+ {contextHolder} + Settings + + +
+
+ ZTM Server IP Address + Reboot Mega service after saving. +
+
+ +
+
+ + + +
+
+ ZTM Agent Peer Id +
+
+ +
+
+ + + + +
+ + +
+ + ) +} diff --git a/archived/lunar/src/app/tree/page.tsx b/archived/lunar/src/app/tree/page.tsx new file mode 100644 index 00000000..6caffeb2 --- /dev/null +++ b/archived/lunar/src/app/tree/page.tsx @@ -0,0 +1,64 @@ +'use client' + +import CodeTable from '@/components/CodeTable' +import Bread from '@/components/BreadCrumb' +import RepoTree from '@/components/RepoTree' +import { useBlobContent, useMegaStatus, useTreeCommitInfo } from '@/app/api/fetcher' +import { useSearchParams } from 'next/navigation'; +import { Skeleton, Flex, Layout } from "antd/lib"; +import { Suspense } from 'react' + +export default function Page() { + return ( + + + + ); +} + +function Tree() { + const searchParams = useSearchParams(); + const path = searchParams.get('path'); + const { tree, isTreeLoading, isTreeError } = useTreeCommitInfo(path); + const { blob, isBlobLoading, isBlobError } = useBlobContent(`${path}/README.md`); + const { status, isLoading, isError } = useMegaStatus(); + + if (isTreeLoading || isBlobLoading) return ; + + const treeStyle = { + borderRadius: 8, + overflow: 'hidden', + width: 'calc(20% - 8px)', + maxWidth: 'calc(20% - 8px)', + background: '#fff', + }; + + const codeStyle = { + borderRadius: 8, + overflow: 'hidden', + width: 'calc(80% - 8px)', + background: '#fff', + }; + + const breadStyle = { + minHeight: 30, + borderRadius: 8, + overflow: 'hidden', + width: 'calc(100% - 8px)', + background: '#fff', + }; + + return ( + + + + + + + + + + + + ) +} \ No newline at end of file diff --git a/archived/lunar/src/components/BreadCrumb.module.css b/archived/lunar/src/components/BreadCrumb.module.css new file mode 100644 index 00000000..bf9772c6 --- /dev/null +++ b/archived/lunar/src/components/BreadCrumb.module.css @@ -0,0 +1,5 @@ +.breadCrumb { + width: 80%; + margin-left: 18%; + margin-top: 20px; +} \ No newline at end of file diff --git a/archived/lunar/src/components/BreadCrumb.tsx b/archived/lunar/src/components/BreadCrumb.tsx new file mode 100644 index 00000000..db52e3c4 --- /dev/null +++ b/archived/lunar/src/components/BreadCrumb.tsx @@ -0,0 +1,32 @@ +import 'github-markdown-css/github-markdown-light.css' +import { useRouter } from 'next/navigation' +import { Breadcrumb } from 'antd/lib' +import styles from './BreadCrumb.module.css' + +const Bread = ({ path }) => { + const router = useRouter(); + let path_arr = path.split('/').filter(Boolean); + + const breadCrumbItems = path_arr.map((path, index) => { + if (index == path_arr.length - 1) { + return { + title: path, + }; + } else { + const href = '/tree?path=/' + path_arr.slice(0, index + 1).join('/'); + return { + title: path, + href: href, + }; + } + + }); + + return ( + + ); +}; + +export default Bread; diff --git a/archived/lunar/src/components/CodeContent.module.css b/archived/lunar/src/components/CodeContent.module.css new file mode 100644 index 00000000..7762baab --- /dev/null +++ b/archived/lunar/src/components/CodeContent.module.css @@ -0,0 +1,41 @@ +.codeShowContainer { + border-radius: 1rem; + padding-top: 70px; +} + +.codeLineNumber { + margin-left: 15px; + margin-right: 25px; +} + +.viewChangeTab { + background-color: rgba(53, 53, 53, 0.103); + display: flex; + position: absolute; + width: 80%; + height: 50px; + border-top-left-radius: 1rem; + border-top-right-radius: 1rem; +} + +.viewChangeTabButton { + padding-left: 20px; + padding-right: 20px; + height: 100%; + border-radius: 1rem; + border: none; + background-color: transparent; +} + +.viewChangeTabButton:hover, +.viewChangeTabButton:checked { + background-color: rgba(0, 0, 0, 0.121); +} + +.fileCodeContainer { + width: 80%; + margin-left: 18%; + border-radius: 0.5rem; + margin-top: 10px; + +} \ No newline at end of file diff --git a/archived/lunar/src/components/CodeContent.tsx b/archived/lunar/src/components/CodeContent.tsx new file mode 100644 index 00000000..457e1d90 --- /dev/null +++ b/archived/lunar/src/components/CodeContent.tsx @@ -0,0 +1,71 @@ +// import Editor from './editor/Editor' +import 'github-markdown-css/github-markdown-light.css' +import { Highlight, themes } from "prism-react-renderer" +import { useState } from 'react' +import { createRoot } from 'react-dom/client' +import styles from './CodeContent.module.css' + +const CodeContent = ({ fileContent }) => { + + const [showEditor, setShowEditor] = useState(false); + + const handleLineNumberClick = (lineIndex) => { + setShowEditor(!showEditor); + const lineNumberButton = document.getElementsByClassName('codeLineNumber')[lineIndex]; + const codeLineNumber = lineNumberButton.closest('.token-line'); + if (showEditor) { + const editorContainer = document.createElement('div'); + editorContainer.className = 'editor-container'; + + // render the Editor into the container + const root = createRoot(editorContainer); + // root.render() + if (codeLineNumber && codeLineNumber.parentNode) { + codeLineNumber.parentNode.insertBefore(editorContainer, codeLineNumber.nextSibling); + + } + } else { + const editorContainer = document.querySelector('.editor-container'); + if (editorContainer && editorContainer.parentNode) { + editorContainer.parentNode.removeChild(editorContainer); + } + } + + }; + + return ( +
+
+ + +
+ + + {({ className, style, tokens, getLineProps, getTokenProps }) => ( +
+                        {tokens.map((line, i) => (
+                            
+ + {i + 1} + {line.map((token, key) => ( + + ))} +
+ ))} +
+ )} +
+
+ ) + +} + +export default CodeContent; diff --git a/archived/lunar/src/components/CodeTable.module.css b/archived/lunar/src/components/CodeTable.module.css new file mode 100644 index 00000000..b8813f91 --- /dev/null +++ b/archived/lunar/src/components/CodeTable.module.css @@ -0,0 +1,18 @@ +.readmeContainer { + margin-top: 2rem; + margin-left: 1rem; +} + +.markdownContent { + margin: 0 auto; + margin-top: 5%; + border: 1px solid rgba(0, 0, 0, 0.112); + padding: 2%; + border-radius: 0.5rem; + --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); + +} diff --git a/archived/lunar/src/components/CodeTable.tsx b/archived/lunar/src/components/CodeTable.tsx new file mode 100644 index 00000000..c73e158b --- /dev/null +++ b/archived/lunar/src/components/CodeTable.tsx @@ -0,0 +1,197 @@ +'use client' + +import 'github-markdown-css/github-markdown-light.css' +import { useRouter, useSearchParams } from 'next/navigation' +import Markdown from 'react-markdown' +import { formatDistance, fromUnixTime } from 'date-fns' +import styles from './CodeTable.module.css' +import { Input, Modal, Space, Table, TableProps, message } from 'antd/lib' +import { useState } from 'react' +import { + FolderIcon, + DocumentIcon, +} from '@heroicons/react/20/solid' +import { requestPublishRepo } from '@/app/api/fetcher' +import { Button } from '@/components/catalyst/button' + +export interface DataType { + oid: string; + name: string; + content_type: string; + message: string; + date: number; +} + +const CodeTable = ({ directory, readmeContent, with_ztm }) => { + const [messageApi, contextHolder] = message.useMessage(); + const msg_error = (content: String) => { + messageApi.open({ + type: 'error', + content: content, + }); + }; + const msg_success = (content: String) => { + messageApi.open({ + type: 'success', + content: content, + }); + }; + + const router = useRouter(); + const fileCodeContainerStyle = { + width: '100%', + margin: '0 auto', + borderRadius: '0.5rem', + marginTop: '10px' + }; + const [open, setOpen] = useState(false); + const [confirmLoading, setConfirmLoading] = useState(false); + const [modalText, setModalText] = useState(''); + const searchParams = useSearchParams(); + const path = searchParams.get('path'); + + var columns: TableProps['columns'] = [ + { + title: 'Name', + dataIndex: ['name', 'content_type'], + key: 'name', + render: (_, record) => { + return <> + {record.content_type === "file" && + + + handleFileClick(record)}>{record.name} + + } + {record.content_type === "directory" && + + +
handleDirectoryClick(record)}>{record.name} + } + + } + }, + { + title: 'Message', + dataIndex: 'message', + key: 'message', + render: (text) => {text}, + }, + { + title: 'Date', + dataIndex: 'date', + key: 'date', + render: (_, { date }) => ( + <> + {date && formatDistance(fromUnixTime(date), new Date(), { addSuffix: true })} + + ) + }, + { + title: 'Action', + key: 'action', + render: (_, record) => ( + + + {/* */} + + ), + }, + ]; + + const handleFileClick = (file) => { + router.push(`/blob?path=${path}/${file.name}`); + }; + + const handleDirectoryClick = async (directory) => { + var newPath = ''; + if (!path) { + newPath = `/tree?path=/${directory.name}`; + } else { + newPath = `/tree?path=${path}/${directory.name}`; + } + router.push( + newPath + ); + }; + + // const handleGoBack = () => { + // const safePath = real_path.split('/'); + // if (safePath.length == 1) { + // router.push('/') + // } else { + // router.push(`/tree/${safePath.slice(0, -1).join('/')}`); + // } + // }; + + // sort by file type, render folder type first + const sortedDir = directory.sort((a, b) => { + if (a.content_type === 'directory' && b.content_type === 'file') { + return -1; + } else if (a.content_type === 'file' && b.content_type === 'directory') { + return 1; + } else { + return 0; + } + }); + + const showModal = (name) => { + setModalText(name); + setOpen(true); + }; + + const handleOk = async (filename) => { + var newPath = ''; + if (!path) { + newPath = `/${filename}`; + } else { + newPath = `${path}/${filename}`; + } + setConfirmLoading(true); + + try { + const result = await requestPublishRepo({ + "path": newPath, + "alias": filename, + }); + msg_success("Publish Success!"); + console.log('Repo published successfully:', result); + } catch (error) { + msg_error("Publish failed:" + error); + } + setOpen(false); + setConfirmLoading(false); + }; + + const handleCancel = () => { + setOpen(false); + }; + + return ( +
+ {contextHolder} + + handleOk(modalText)} + confirmLoading={confirmLoading} + onCancel={handleCancel} + > + + + {readmeContent && ( +
+
+ {readmeContent} +
+
+ )} + + ); +}; + + + +export default CodeTable; diff --git a/archived/lunar/src/components/MergeDetail.tsx b/archived/lunar/src/components/MergeDetail.tsx new file mode 100644 index 00000000..043f6be6 --- /dev/null +++ b/archived/lunar/src/components/MergeDetail.tsx @@ -0,0 +1,95 @@ +'use client' +import React, { useEffect, useState } from 'react'; +import { Card, Button, List } from 'antd/lib'; +import { useRouter } from 'next/navigation'; +import { useMRFiles } from '@/app/api/fetcher'; + +const endpoint = process.env.NEXT_PUBLIC_API_URL; + + +const MRDetailPage = ({ mrDetail }) => { + const router = useRouter(); + const [filedata, setFileData] = useState([]); + const [loadings, setLoadings] = useState([]); + const [error, setError] = useState(null); + + const { mrFiles, isMRLoading, isMRError } = useMRFiles(mrDetail.id); + + useEffect(() => { + if (isMRLoading) { + set_to_loading(2) + } + if (mrFiles) { + setFileData(mrFiles.data); + cancel_loading(2) + } + }, [mrDetail, mrFiles, isMRLoading]); + + + const set_to_loading = (index: number) => { + setLoadings((prevLoadings) => { + const newLoadings = [...prevLoadings]; + newLoadings[index] = true; + return newLoadings; + }); + } + + const cancel_loading = (index: number) => { + setLoadings((prevLoadings) => { + const newLoadings = [...prevLoadings]; + newLoadings[index] = false; + return newLoadings; + }); + } + + const approve_mr = async (index: number, id: number) => { + set_to_loading(index); + const res = await fetch(`${endpoint}/api/v1/mono/mr/${id}/merge`,{ + method: 'POST', + }); + if (res) { + cancel_loading(index); + } + + if (res.ok) { + router.refresh(); + } + }; + + + return ( + + {mrDetail.status === "open" && + + } + + More} + > + Change File List} + bordered + dataSource={filedata} + loading = {loadings[2]} + renderItem={(item) => ( + + {item} + + )} + /> + + + ) +} + +export default MRDetailPage; \ No newline at end of file diff --git a/archived/lunar/src/components/MergeList.tsx b/archived/lunar/src/components/MergeList.tsx new file mode 100644 index 00000000..737a204f --- /dev/null +++ b/archived/lunar/src/components/MergeList.tsx @@ -0,0 +1,67 @@ +import React from 'react'; +import { Avatar, List, Tag } from 'antd/lib'; +import { format, formatDistance, fromUnixTime } from 'date-fns' +import { MergeOutlined } from '@ant-design/icons'; +import Link from 'next/link'; + +interface MrInfoItem { + id: number, + title: string, + status: string, + open_timestamp: number, + merge_timestamp: number | null, +} + +interface MergeListProps { + mrList: MrInfoItem[]; +} + +const MergeList: React.FC = ({ mrList }) => { + + const getStatusTag = (status: string) => { + switch (status) { + case 'open': + return open; + case 'merged': + return merged; + case 'closed': + return closed; + } + }; + + const getDescription = (item: MrInfoItem) => { + switch (item.status) { + case 'open': + return `MergeRequest opened on ${format(fromUnixTime(Number(item.open_timestamp)), 'MMM d')} by Admin`; + case 'merged': + if (item.merge_timestamp !== null) { + return `MergeRequest by Admin was merged ${formatDistance(fromUnixTime(item.merge_timestamp), new Date(), { addSuffix: true })}`; + } else { + return ""; + } + case 'closed': + return closed; + } + } + + return ( + ( + + + } + title={{`MR ${item.id} open by Mega automacticlly${item.title}`}{getStatusTag(item.status)}} + description={getDescription(item)} + /> + + )} + /> + ); +}; + +export default MergeList; \ No newline at end of file diff --git a/archived/lunar/src/components/RepoList.tsx b/archived/lunar/src/components/RepoList.tsx new file mode 100644 index 00000000..c2072fec --- /dev/null +++ b/archived/lunar/src/components/RepoList.tsx @@ -0,0 +1,165 @@ +'use client' + +import { Space, Table, TableProps, Badge, Button, Skeleton, message } from 'antd/lib' +import { useState } from 'react' +import { format, fromUnixTime } from 'date-fns' +import { DownloadOutlined } from '@ant-design/icons'; +import { invoke } from '@tauri-apps/api/core'; +import { ApiResult, useMegaStatus } from '@/app/api/fetcher'; + +const endpoint = process.env.NEXT_PUBLIC_API_URL; + +interface DataType { + name: string; + identifier: string; + origin: string; + update_time: number; + commit: string; + peer_online: boolean +} + +const DataList = ({ data }) => { + const [messageApi, contextHolder] = message.useMessage(); + const { status, isLoading, isError } = useMegaStatus(); + const [loadings, setLoadings] = useState([]); + + if (isLoading) return ; + + const enterLoading = (index: number) => { + setLoadings((prevLoadings) => { + const newLoadings = [...prevLoadings]; + newLoadings[index] = true; + return newLoadings; + }); + } + + const exitLoading = (index: number) => { + setLoadings((prevLoadings) => { + const newLoadings = [...prevLoadings]; + newLoadings[index] = false; + return newLoadings; + }); + } + + const msg_error = () => { + messageApi.open({ + type: 'error', + content: 'Failed to clone repo', + }); + }; + + const msg_success = () => { + messageApi.open({ + type: 'success', + content: 'Clone success', + }); + }; + + + var columns: TableProps['columns'] = [ + { + title: 'Name', + dataIndex: ['name', 'identifier'], + key: 'name', + render: (_, record) => { + return <> + + {record.name} + + + } + }, + { + title: 'Identifier', + dataIndex: 'identifier', + key: 'identifier', + ellipsis: true, + render: (text) => {text}, + }, + { + title: 'Online', + dataIndex: 'peer_online', + key: 'peer_online', + render: (_, { peer_online }) => ( + + ), + }, + { + title: 'Origin', + dataIndex: 'origin', + key: 'origin', + }, + { + title: 'Update Date', + dataIndex: 'update_time', + key: 'update_time', + render: (update_time) => ( + + + {update_time && format(fromUnixTime(update_time), 'yyyy-MM-dd HH:mm:ss')} + + + ) + }, + { + title: 'Action', + key: 'action', + render: (_, record) => ( + + + + ), + }, + ]; + + const handleClone = async (record) => { + enterLoading(1) + try { + let res: ApiResult = await getRepoFork(record.identifier); + // showSuccModel(text); + console.log("repo fork result", res); + if (res.req_result) { + invoke('clone_repository', { repoUrl: res.data, name: record.name }) + .then(() => msg_success()) + .catch((error) => { + console.error(`Failed to get service status: ${error}`); + msg_error(); + }); + } else { + msg_error(); + } + } catch (error) { + console.error('Error fetching data:', error); + } + exitLoading(1) + }; + + return ( +
+
+ {/* + + */} + {contextHolder} + + ); +}; + + +async function getRepoFork(identifier) { + const res = await fetch(`${endpoint}/api/v1/mega/ztm/repo_fork?identifier=${identifier}`); + const response = await res.json(); + return response +} + +export default DataList; diff --git a/archived/lunar/src/components/RepoTree.module.css b/archived/lunar/src/components/RepoTree.module.css new file mode 100644 index 00000000..04808d88 --- /dev/null +++ b/archived/lunar/src/components/RepoTree.module.css @@ -0,0 +1,4 @@ +.dirTreeContainer { + margin-top: 20px; + float: left; +} \ No newline at end of file diff --git a/archived/lunar/src/components/RepoTree.tsx b/archived/lunar/src/components/RepoTree.tsx new file mode 100644 index 00000000..11c2a0f6 --- /dev/null +++ b/archived/lunar/src/components/RepoTree.tsx @@ -0,0 +1,128 @@ +import 'github-markdown-css/github-markdown-light.css' +import { DownOutlined } from '@ant-design/icons/lib' +import { useState, useEffect, useCallback } from 'react' +import { useRouter } from 'next/navigation' +import { Tree } from 'antd/lib' +import styles from './RepoTree.module.css' + +const RepoTree = ({ directory }) => { + const router = useRouter(); + const [treeData, setTreeData] = useState(); + const [updateTree, setUpdateTree] = useState(false); + const [expandedKeys, setExpandedKeys] = useState([]); + + const convertToTreeData = useCallback((directory) => { + return sortProjectsByType(directory).map(item => { + const treeItem = { + title: item.name, + key: item.id, + isLeaf: item.content_type !== 'directory', + path: item.path, + expanded: false, // initialize expanded state to false + children: [] // eneure every node having the children element + }; + return treeItem; + }); + }, []); + + useEffect(() => { + let data = convertToTreeData(directory); + setTreeData(data); + }, [directory, convertToTreeData]); + + + useEffect(() => { + if (updateTree) { + setUpdateTree(false); + } + }, [updateTree]); + + + + + + // sortProjectsByType function to sort projects by file type + const sortProjectsByType = (projects) => { + return projects.sort((a, b) => { + if (a.content_type === 'directory' && b.content_type === 'file') { + return -1; // directory comes before file + } else if (a.content_type === 'file' && b.content_type === 'directory') { + return 1; // file comes after directory + } else { + return 0; // maintain original order + } + }); + }; + + // append the clicked dir to the treeData + const appendTreeData = (treeData, subItems, clickedNodeKey) => { + return treeData.map(item => { + if (item.key === clickedNodeKey) { + return { + ...item, + children: subItems + }; + } else if (Array.isArray(item.children)) { + return { + ...item, + children: appendTreeData(item.children, subItems, clickedNodeKey) + }; + } + }); + }; + + const onExpand = async (keys, { expanded, node }) => { + // push new url and query to router + console.log("OnExpanded!"); + console.log("keys", keys); + console.log("node", node.path); + // router.push({ query: { repo_path: "/projects/freighter", object_id: node.key } }); + var responseData; + try { + const response = await fetch(`/api/tree?path=${node.path}`); + + if (!response.ok) { + throw new Error('Failed to fetch tree data'); + } + + console.log('Response status:', response.status); + + responseData = await response.json(); + console.log('Response data:', responseData); + + } catch (error) { + console.error('Error fetching tree data:', error); + } + // onRenderTree(node.key); + if (expanded) { + const subTreeData = convertToTreeData(responseData.items); + const newTreeData = appendTreeData(treeData, subTreeData, node.key); + // setExpandedKeys([...expandedKeys, node.key]); + setTreeData(newTreeData); + // setCurrentPath([...currentPath, node.title]); // for breadcrumb + } else { + setExpandedKeys(expandedKeys.filter(key => key !== node.key)); + } + }; + + const onSelect = (keys, info) => { + router.push(`/?object_id=${keys}`); + console.log('Trigger Select', keys, info); + }; + + return ( +
+ } + expandedKeys={expandedKeys} + /> +
+ ); +}; + +export default RepoTree; diff --git a/archived/lunar/src/components/catalyst/avatar.tsx b/archived/lunar/src/components/catalyst/avatar.tsx new file mode 100644 index 00000000..ed21e313 --- /dev/null +++ b/archived/lunar/src/components/catalyst/avatar.tsx @@ -0,0 +1,84 @@ +import * as Headless from '@headlessui/react' +import clsx from 'clsx' +import React, { forwardRef } from 'react' +import { TouchTarget } from './button' +import { Link } from './link' + +type AvatarProps = { + src?: string | null + square?: boolean + initials?: string + alt?: string + className?: string +} + +export function Avatar({ + src = null, + square = false, + initials, + alt = '', + className, + ...props +}: AvatarProps & React.ComponentPropsWithoutRef<'span'>) { + return ( + + {initials && ( + + {alt && {alt}} + + {initials} + + + )} + {src && {alt}} + + ) +} + +export const AvatarButton = forwardRef(function AvatarButton( + { + src, + square = false, + initials, + alt, + className, + ...props + }: AvatarProps & + (Omit | Omit, 'className'>), + ref: React.ForwardedRef +) { + let classes = clsx( + className, + square ? 'rounded-[20%]' : 'rounded-full', + 'relative inline-grid focus:outline-none data-[focus]:outline data-[focus]:outline-2 data-[focus]:outline-offset-2 data-[focus]:outline-blue-500' + ) + + return 'href' in props ? ( + }> + + + + + ) : ( + + + + + + ) +}) diff --git a/archived/lunar/src/components/catalyst/button.tsx b/archived/lunar/src/components/catalyst/button.tsx new file mode 100644 index 00000000..21539811 --- /dev/null +++ b/archived/lunar/src/components/catalyst/button.tsx @@ -0,0 +1,204 @@ +import * as Headless from '@headlessui/react' +import clsx from 'clsx' +import React, { forwardRef } from 'react' +import { Link } from './link' + +const styles = { + base: [ + // Base + 'relative isolate inline-flex items-center justify-center gap-x-2 rounded-lg border text-base/6 font-semibold', + // Sizing + 'px-[calc(theme(spacing[3.5])-1px)] py-[calc(theme(spacing[2.5])-1px)] sm:px-[calc(theme(spacing.3)-1px)] sm:py-[calc(theme(spacing[1.5])-1px)] sm:text-sm/6', + // Focus + 'focus:outline-none data-[focus]:outline data-[focus]:outline-2 data-[focus]:outline-offset-2 data-[focus]:outline-blue-500', + // Disabled + 'data-[disabled]:opacity-50', + // Icon + '[&>[data-slot=icon]]:-mx-0.5 [&>[data-slot=icon]]:my-0.5 [&>[data-slot=icon]]:size-5 [&>[data-slot=icon]]:shrink-0 [&>[data-slot=icon]]:text-[--btn-icon] [&>[data-slot=icon]]:sm:my-1 [&>[data-slot=icon]]:sm:size-4 forced-colors:[--btn-icon:ButtonText] forced-colors:data-[hover]:[--btn-icon:ButtonText]', + ], + solid: [ + // Optical border, implemented as the button background to avoid corner artifacts + 'border-transparent bg-[--btn-border]', + // Dark mode: border is rendered on `after` so background is set to button background + 'dark:bg-[--btn-bg]', + // Button background, implemented as foreground layer to stack on top of pseudo-border layer + 'before:absolute before:inset-0 before:-z-10 before:rounded-[calc(theme(borderRadius.lg)-1px)] before:bg-[--btn-bg]', + // Drop shadow, applied to the inset `before` layer so it blends with the border + 'before:shadow', + // Background color is moved to control and shadow is removed in dark mode so hide `before` pseudo + 'dark:before:hidden', + // Dark mode: Subtle white outline is applied using a border + 'dark:border-white/5', + // Shim/overlay, inset to match button foreground and used for hover state + highlight shadow + 'after:absolute after:inset-0 after:-z-10 after:rounded-[calc(theme(borderRadius.lg)-1px)]', + // Inner highlight shadow + 'after:shadow-[shadow:inset_0_1px_theme(colors.white/15%)]', + // White overlay on hover + 'after:data-[active]:bg-[--btn-hover-overlay] after:data-[hover]:bg-[--btn-hover-overlay]', + // Dark mode: `after` layer expands to cover entire button + 'dark:after:-inset-px dark:after:rounded-lg', + // Disabled + 'before:data-[disabled]:shadow-none after:data-[disabled]:shadow-none', + ], + outline: [ + // Base + 'border-zinc-950/10 text-zinc-950 data-[active]:bg-zinc-950/[2.5%] data-[hover]:bg-zinc-950/[2.5%]', + // Dark mode + 'dark:border-white/15 dark:text-white dark:[--btn-bg:transparent] dark:data-[active]:bg-white/5 dark:data-[hover]:bg-white/5', + // Icon + '[--btn-icon:theme(colors.zinc.500)] data-[active]:[--btn-icon:theme(colors.zinc.700)] data-[hover]:[--btn-icon:theme(colors.zinc.700)] dark:data-[active]:[--btn-icon:theme(colors.zinc.400)] dark:data-[hover]:[--btn-icon:theme(colors.zinc.400)]', + ], + plain: [ + // Base + 'border-transparent text-zinc-950 data-[active]:bg-zinc-950/5 data-[hover]:bg-zinc-950/5', + // Dark mode + 'dark:text-white dark:data-[active]:bg-white/10 dark:data-[hover]:bg-white/10', + // Icon + '[--btn-icon:theme(colors.zinc.500)] data-[active]:[--btn-icon:theme(colors.zinc.700)] data-[hover]:[--btn-icon:theme(colors.zinc.700)] dark:[--btn-icon:theme(colors.zinc.500)] dark:data-[active]:[--btn-icon:theme(colors.zinc.400)] dark:data-[hover]:[--btn-icon:theme(colors.zinc.400)]', + ], + colors: { + 'dark/zinc': [ + 'text-white [--btn-bg:theme(colors.zinc.900)] [--btn-border:theme(colors.zinc.950/90%)] [--btn-hover-overlay:theme(colors.white/10%)]', + 'dark:text-white dark:[--btn-bg:theme(colors.zinc.600)] dark:[--btn-hover-overlay:theme(colors.white/5%)]', + '[--btn-icon:theme(colors.zinc.400)] data-[active]:[--btn-icon:theme(colors.zinc.300)] data-[hover]:[--btn-icon:theme(colors.zinc.300)]', + ], + light: [ + 'text-zinc-950 [--btn-bg:white] [--btn-border:theme(colors.zinc.950/10%)] [--btn-hover-overlay:theme(colors.zinc.950/2.5%)] data-[active]:[--btn-border:theme(colors.zinc.950/15%)] data-[hover]:[--btn-border:theme(colors.zinc.950/15%)]', + 'dark:text-white dark:[--btn-hover-overlay:theme(colors.white/5%)] dark:[--btn-bg:theme(colors.zinc.800)]', + '[--btn-icon:theme(colors.zinc.500)] data-[active]:[--btn-icon:theme(colors.zinc.700)] data-[hover]:[--btn-icon:theme(colors.zinc.700)] dark:[--btn-icon:theme(colors.zinc.500)] dark:data-[active]:[--btn-icon:theme(colors.zinc.400)] dark:data-[hover]:[--btn-icon:theme(colors.zinc.400)]', + ], + 'dark/white': [ + 'text-white [--btn-bg:theme(colors.zinc.900)] [--btn-border:theme(colors.zinc.950/90%)] [--btn-hover-overlay:theme(colors.white/10%)]', + 'dark:text-zinc-950 dark:[--btn-bg:white] dark:[--btn-hover-overlay:theme(colors.zinc.950/5%)]', + '[--btn-icon:theme(colors.zinc.400)] data-[active]:[--btn-icon:theme(colors.zinc.300)] data-[hover]:[--btn-icon:theme(colors.zinc.300)] dark:[--btn-icon:theme(colors.zinc.500)] dark:data-[active]:[--btn-icon:theme(colors.zinc.400)] dark:data-[hover]:[--btn-icon:theme(colors.zinc.400)]', + ], + dark: [ + 'text-white [--btn-bg:theme(colors.zinc.900)] [--btn-border:theme(colors.zinc.950/90%)] [--btn-hover-overlay:theme(colors.white/10%)]', + 'dark:[--btn-hover-overlay:theme(colors.white/5%)] dark:[--btn-bg:theme(colors.zinc.800)]', + '[--btn-icon:theme(colors.zinc.400)] data-[active]:[--btn-icon:theme(colors.zinc.300)] data-[hover]:[--btn-icon:theme(colors.zinc.300)]', + ], + white: [ + 'text-zinc-950 [--btn-bg:white] [--btn-border:theme(colors.zinc.950/10%)] [--btn-hover-overlay:theme(colors.zinc.950/2.5%)] data-[active]:[--btn-border:theme(colors.zinc.950/15%)] data-[hover]:[--btn-border:theme(colors.zinc.950/15%)]', + 'dark:[--btn-hover-overlay:theme(colors.zinc.950/5%)]', + '[--btn-icon:theme(colors.zinc.400)] data-[active]:[--btn-icon:theme(colors.zinc.500)] data-[hover]:[--btn-icon:theme(colors.zinc.500)]', + ], + zinc: [ + 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.zinc.600)] [--btn-border:theme(colors.zinc.700/90%)]', + 'dark:[--btn-hover-overlay:theme(colors.white/5%)]', + '[--btn-icon:theme(colors.zinc.400)] data-[active]:[--btn-icon:theme(colors.zinc.300)] data-[hover]:[--btn-icon:theme(colors.zinc.300)]', + ], + indigo: [ + 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.indigo.500)] [--btn-border:theme(colors.indigo.600/90%)]', + '[--btn-icon:theme(colors.indigo.300)] data-[active]:[--btn-icon:theme(colors.indigo.200)] data-[hover]:[--btn-icon:theme(colors.indigo.200)]', + ], + cyan: [ + 'text-cyan-950 [--btn-bg:theme(colors.cyan.300)] [--btn-border:theme(colors.cyan.400/80%)] [--btn-hover-overlay:theme(colors.white/25%)]', + '[--btn-icon:theme(colors.cyan.500)]', + ], + red: [ + 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.red.600)] [--btn-border:theme(colors.red.700/90%)]', + '[--btn-icon:theme(colors.red.300)] data-[active]:[--btn-icon:theme(colors.red.200)] data-[hover]:[--btn-icon:theme(colors.red.200)]', + ], + orange: [ + 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.orange.500)] [--btn-border:theme(colors.orange.600/90%)]', + '[--btn-icon:theme(colors.orange.300)] data-[active]:[--btn-icon:theme(colors.orange.200)] data-[hover]:[--btn-icon:theme(colors.orange.200)]', + ], + amber: [ + 'text-amber-950 [--btn-hover-overlay:theme(colors.white/25%)] [--btn-bg:theme(colors.amber.400)] [--btn-border:theme(colors.amber.500/80%)]', + '[--btn-icon:theme(colors.amber.600)]', + ], + yellow: [ + 'text-yellow-950 [--btn-hover-overlay:theme(colors.white/25%)] [--btn-bg:theme(colors.yellow.300)] [--btn-border:theme(colors.yellow.400/80%)]', + '[--btn-icon:theme(colors.yellow.600)] data-[active]:[--btn-icon:theme(colors.yellow.700)] data-[hover]:[--btn-icon:theme(colors.yellow.700)]', + ], + lime: [ + 'text-lime-950 [--btn-hover-overlay:theme(colors.white/25%)] [--btn-bg:theme(colors.lime.300)] [--btn-border:theme(colors.lime.400/80%)]', + '[--btn-icon:theme(colors.lime.600)] data-[active]:[--btn-icon:theme(colors.lime.700)] data-[hover]:[--btn-icon:theme(colors.lime.700)]', + ], + green: [ + 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.green.600)] [--btn-border:theme(colors.green.700/90%)]', + '[--btn-icon:theme(colors.white/60%)] data-[active]:[--btn-icon:theme(colors.white/80%)] data-[hover]:[--btn-icon:theme(colors.white/80%)]', + ], + emerald: [ + 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.emerald.600)] [--btn-border:theme(colors.emerald.700/90%)]', + '[--btn-icon:theme(colors.white/60%)] data-[active]:[--btn-icon:theme(colors.white/80%)] data-[hover]:[--btn-icon:theme(colors.white/80%)]', + ], + teal: [ + 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.teal.600)] [--btn-border:theme(colors.teal.700/90%)]', + '[--btn-icon:theme(colors.white/60%)] data-[active]:[--btn-icon:theme(colors.white/80%)] data-[hover]:[--btn-icon:theme(colors.white/80%)]', + ], + sky: [ + 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.sky.500)] [--btn-border:theme(colors.sky.600/80%)]', + '[--btn-icon:theme(colors.white/60%)] data-[active]:[--btn-icon:theme(colors.white/80%)] data-[hover]:[--btn-icon:theme(colors.white/80%)]', + ], + blue: [ + 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.blue.600)] [--btn-border:theme(colors.blue.700/90%)]', + '[--btn-icon:theme(colors.blue.400)] data-[active]:[--btn-icon:theme(colors.blue.300)] data-[hover]:[--btn-icon:theme(colors.blue.300)]', + ], + violet: [ + 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.violet.500)] [--btn-border:theme(colors.violet.600/90%)]', + '[--btn-icon:theme(colors.violet.300)] data-[active]:[--btn-icon:theme(colors.violet.200)] data-[hover]:[--btn-icon:theme(colors.violet.200)]', + ], + purple: [ + 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.purple.500)] [--btn-border:theme(colors.purple.600/90%)]', + '[--btn-icon:theme(colors.purple.300)] data-[active]:[--btn-icon:theme(colors.purple.200)] data-[hover]:[--btn-icon:theme(colors.purple.200)]', + ], + fuchsia: [ + 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.fuchsia.500)] [--btn-border:theme(colors.fuchsia.600/90%)]', + '[--btn-icon:theme(colors.fuchsia.300)] data-[active]:[--btn-icon:theme(colors.fuchsia.200)] data-[hover]:[--btn-icon:theme(colors.fuchsia.200)]', + ], + pink: [ + 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.pink.500)] [--btn-border:theme(colors.pink.600/90%)]', + '[--btn-icon:theme(colors.pink.300)] data-[active]:[--btn-icon:theme(colors.pink.200)] data-[hover]:[--btn-icon:theme(colors.pink.200)]', + ], + rose: [ + 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.rose.500)] [--btn-border:theme(colors.rose.600/90%)]', + '[--btn-icon:theme(colors.rose.300)] data-[active]:[--btn-icon:theme(colors.rose.200)] data-[hover]:[--btn-icon:theme(colors.rose.200)]', + ], + }, +} + +type ButtonProps = ( + | { color?: keyof typeof styles.colors; outline?: never; plain?: never } + | { color?: never; outline: true; plain?: never } + | { color?: never; outline?: never; plain: true } +) & { className?: string; children: React.ReactNode } & ( + | Omit + | Omit, 'className'> + ) + +export const Button = forwardRef(function Button( + { color, outline, plain, className, children, ...props }: ButtonProps, + ref: React.ForwardedRef +) { + let classes = clsx( + className, + styles.base, + outline ? styles.outline : plain ? styles.plain : clsx(styles.solid, styles.colors[color ?? 'dark/zinc']) + ) + + return 'href' in props ? ( + }> + {children} + + ) : ( + + {children} + + ) +}) + +/** + * Expand the hit area to at least 44×44px on touch devices + */ +export function TouchTarget({ children }: { children: React.ReactNode }) { + return ( + <> +
- handleOk(modalText)} - confirmLoading={confirmLoading} - onCancel={handleCancel} - > - - - {readmeContent && ( -
-
- {readmeContent} -
-
- )} - - ); -}; - - - -export default CodeTable; diff --git a/lunar/src/components/MergeDetail.tsx b/lunar/src/components/MergeDetail.tsx deleted file mode 100644 index 043f6be6..00000000 --- a/lunar/src/components/MergeDetail.tsx +++ /dev/null @@ -1,95 +0,0 @@ -'use client' -import React, { useEffect, useState } from 'react'; -import { Card, Button, List } from 'antd/lib'; -import { useRouter } from 'next/navigation'; -import { useMRFiles } from '@/app/api/fetcher'; - -const endpoint = process.env.NEXT_PUBLIC_API_URL; - - -const MRDetailPage = ({ mrDetail }) => { - const router = useRouter(); - const [filedata, setFileData] = useState([]); - const [loadings, setLoadings] = useState([]); - const [error, setError] = useState(null); - - const { mrFiles, isMRLoading, isMRError } = useMRFiles(mrDetail.id); - - useEffect(() => { - if (isMRLoading) { - set_to_loading(2) - } - if (mrFiles) { - setFileData(mrFiles.data); - cancel_loading(2) - } - }, [mrDetail, mrFiles, isMRLoading]); - - - const set_to_loading = (index: number) => { - setLoadings((prevLoadings) => { - const newLoadings = [...prevLoadings]; - newLoadings[index] = true; - return newLoadings; - }); - } - - const cancel_loading = (index: number) => { - setLoadings((prevLoadings) => { - const newLoadings = [...prevLoadings]; - newLoadings[index] = false; - return newLoadings; - }); - } - - const approve_mr = async (index: number, id: number) => { - set_to_loading(index); - const res = await fetch(`${endpoint}/api/v1/mono/mr/${id}/merge`,{ - method: 'POST', - }); - if (res) { - cancel_loading(index); - } - - if (res.ok) { - router.refresh(); - } - }; - - - return ( - - {mrDetail.status === "open" && - - } - - More} - > - Change File List} - bordered - dataSource={filedata} - loading = {loadings[2]} - renderItem={(item) => ( - - {item} - - )} - /> - - - ) -} - -export default MRDetailPage; \ No newline at end of file diff --git a/lunar/src/components/MergeList.tsx b/lunar/src/components/MergeList.tsx deleted file mode 100644 index 737a204f..00000000 --- a/lunar/src/components/MergeList.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import React from 'react'; -import { Avatar, List, Tag } from 'antd/lib'; -import { format, formatDistance, fromUnixTime } from 'date-fns' -import { MergeOutlined } from '@ant-design/icons'; -import Link from 'next/link'; - -interface MrInfoItem { - id: number, - title: string, - status: string, - open_timestamp: number, - merge_timestamp: number | null, -} - -interface MergeListProps { - mrList: MrInfoItem[]; -} - -const MergeList: React.FC = ({ mrList }) => { - - const getStatusTag = (status: string) => { - switch (status) { - case 'open': - return open; - case 'merged': - return merged; - case 'closed': - return closed; - } - }; - - const getDescription = (item: MrInfoItem) => { - switch (item.status) { - case 'open': - return `MergeRequest opened on ${format(fromUnixTime(Number(item.open_timestamp)), 'MMM d')} by Admin`; - case 'merged': - if (item.merge_timestamp !== null) { - return `MergeRequest by Admin was merged ${formatDistance(fromUnixTime(item.merge_timestamp), new Date(), { addSuffix: true })}`; - } else { - return ""; - } - case 'closed': - return closed; - } - } - - return ( - ( - - - } - title={{`MR ${item.id} open by Mega automacticlly${item.title}`}{getStatusTag(item.status)}} - description={getDescription(item)} - /> - - )} - /> - ); -}; - -export default MergeList; \ No newline at end of file diff --git a/lunar/src/components/RepoList.tsx b/lunar/src/components/RepoList.tsx deleted file mode 100644 index c2072fec..00000000 --- a/lunar/src/components/RepoList.tsx +++ /dev/null @@ -1,165 +0,0 @@ -'use client' - -import { Space, Table, TableProps, Badge, Button, Skeleton, message } from 'antd/lib' -import { useState } from 'react' -import { format, fromUnixTime } from 'date-fns' -import { DownloadOutlined } from '@ant-design/icons'; -import { invoke } from '@tauri-apps/api/core'; -import { ApiResult, useMegaStatus } from '@/app/api/fetcher'; - -const endpoint = process.env.NEXT_PUBLIC_API_URL; - -interface DataType { - name: string; - identifier: string; - origin: string; - update_time: number; - commit: string; - peer_online: boolean -} - -const DataList = ({ data }) => { - const [messageApi, contextHolder] = message.useMessage(); - const { status, isLoading, isError } = useMegaStatus(); - const [loadings, setLoadings] = useState([]); - - if (isLoading) return ; - - const enterLoading = (index: number) => { - setLoadings((prevLoadings) => { - const newLoadings = [...prevLoadings]; - newLoadings[index] = true; - return newLoadings; - }); - } - - const exitLoading = (index: number) => { - setLoadings((prevLoadings) => { - const newLoadings = [...prevLoadings]; - newLoadings[index] = false; - return newLoadings; - }); - } - - const msg_error = () => { - messageApi.open({ - type: 'error', - content: 'Failed to clone repo', - }); - }; - - const msg_success = () => { - messageApi.open({ - type: 'success', - content: 'Clone success', - }); - }; - - - var columns: TableProps['columns'] = [ - { - title: 'Name', - dataIndex: ['name', 'identifier'], - key: 'name', - render: (_, record) => { - return <> - - {record.name} - - - } - }, - { - title: 'Identifier', - dataIndex: 'identifier', - key: 'identifier', - ellipsis: true, - render: (text) => {text}, - }, - { - title: 'Online', - dataIndex: 'peer_online', - key: 'peer_online', - render: (_, { peer_online }) => ( - - ), - }, - { - title: 'Origin', - dataIndex: 'origin', - key: 'origin', - }, - { - title: 'Update Date', - dataIndex: 'update_time', - key: 'update_time', - render: (update_time) => ( - - - {update_time && format(fromUnixTime(update_time), 'yyyy-MM-dd HH:mm:ss')} - - - ) - }, - { - title: 'Action', - key: 'action', - render: (_, record) => ( - - - - ), - }, - ]; - - const handleClone = async (record) => { - enterLoading(1) - try { - let res: ApiResult = await getRepoFork(record.identifier); - // showSuccModel(text); - console.log("repo fork result", res); - if (res.req_result) { - invoke('clone_repository', { repoUrl: res.data, name: record.name }) - .then(() => msg_success()) - .catch((error) => { - console.error(`Failed to get service status: ${error}`); - msg_error(); - }); - } else { - msg_error(); - } - } catch (error) { - console.error('Error fetching data:', error); - } - exitLoading(1) - }; - - return ( -
-
- {/* - - */} - {contextHolder} - - ); -}; - - -async function getRepoFork(identifier) { - const res = await fetch(`${endpoint}/api/v1/mega/ztm/repo_fork?identifier=${identifier}`); - const response = await res.json(); - return response -} - -export default DataList; diff --git a/lunar/src/components/RepoTree.module.css b/lunar/src/components/RepoTree.module.css deleted file mode 100644 index 04808d88..00000000 --- a/lunar/src/components/RepoTree.module.css +++ /dev/null @@ -1,4 +0,0 @@ -.dirTreeContainer { - margin-top: 20px; - float: left; -} \ No newline at end of file diff --git a/lunar/src/components/RepoTree.tsx b/lunar/src/components/RepoTree.tsx deleted file mode 100644 index 11c2a0f6..00000000 --- a/lunar/src/components/RepoTree.tsx +++ /dev/null @@ -1,128 +0,0 @@ -import 'github-markdown-css/github-markdown-light.css' -import { DownOutlined } from '@ant-design/icons/lib' -import { useState, useEffect, useCallback } from 'react' -import { useRouter } from 'next/navigation' -import { Tree } from 'antd/lib' -import styles from './RepoTree.module.css' - -const RepoTree = ({ directory }) => { - const router = useRouter(); - const [treeData, setTreeData] = useState(); - const [updateTree, setUpdateTree] = useState(false); - const [expandedKeys, setExpandedKeys] = useState([]); - - const convertToTreeData = useCallback((directory) => { - return sortProjectsByType(directory).map(item => { - const treeItem = { - title: item.name, - key: item.id, - isLeaf: item.content_type !== 'directory', - path: item.path, - expanded: false, // initialize expanded state to false - children: [] // eneure every node having the children element - }; - return treeItem; - }); - }, []); - - useEffect(() => { - let data = convertToTreeData(directory); - setTreeData(data); - }, [directory, convertToTreeData]); - - - useEffect(() => { - if (updateTree) { - setUpdateTree(false); - } - }, [updateTree]); - - - - - - // sortProjectsByType function to sort projects by file type - const sortProjectsByType = (projects) => { - return projects.sort((a, b) => { - if (a.content_type === 'directory' && b.content_type === 'file') { - return -1; // directory comes before file - } else if (a.content_type === 'file' && b.content_type === 'directory') { - return 1; // file comes after directory - } else { - return 0; // maintain original order - } - }); - }; - - // append the clicked dir to the treeData - const appendTreeData = (treeData, subItems, clickedNodeKey) => { - return treeData.map(item => { - if (item.key === clickedNodeKey) { - return { - ...item, - children: subItems - }; - } else if (Array.isArray(item.children)) { - return { - ...item, - children: appendTreeData(item.children, subItems, clickedNodeKey) - }; - } - }); - }; - - const onExpand = async (keys, { expanded, node }) => { - // push new url and query to router - console.log("OnExpanded!"); - console.log("keys", keys); - console.log("node", node.path); - // router.push({ query: { repo_path: "/projects/freighter", object_id: node.key } }); - var responseData; - try { - const response = await fetch(`/api/tree?path=${node.path}`); - - if (!response.ok) { - throw new Error('Failed to fetch tree data'); - } - - console.log('Response status:', response.status); - - responseData = await response.json(); - console.log('Response data:', responseData); - - } catch (error) { - console.error('Error fetching tree data:', error); - } - // onRenderTree(node.key); - if (expanded) { - const subTreeData = convertToTreeData(responseData.items); - const newTreeData = appendTreeData(treeData, subTreeData, node.key); - // setExpandedKeys([...expandedKeys, node.key]); - setTreeData(newTreeData); - // setCurrentPath([...currentPath, node.title]); // for breadcrumb - } else { - setExpandedKeys(expandedKeys.filter(key => key !== node.key)); - } - }; - - const onSelect = (keys, info) => { - router.push(`/?object_id=${keys}`); - console.log('Trigger Select', keys, info); - }; - - return ( -
- } - expandedKeys={expandedKeys} - /> -
- ); -}; - -export default RepoTree; diff --git a/lunar/src/components/catalyst/avatar.tsx b/lunar/src/components/catalyst/avatar.tsx deleted file mode 100644 index ed21e313..00000000 --- a/lunar/src/components/catalyst/avatar.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import * as Headless from '@headlessui/react' -import clsx from 'clsx' -import React, { forwardRef } from 'react' -import { TouchTarget } from './button' -import { Link } from './link' - -type AvatarProps = { - src?: string | null - square?: boolean - initials?: string - alt?: string - className?: string -} - -export function Avatar({ - src = null, - square = false, - initials, - alt = '', - className, - ...props -}: AvatarProps & React.ComponentPropsWithoutRef<'span'>) { - return ( - - {initials && ( - - {alt && {alt}} - - {initials} - - - )} - {src && {alt}} - - ) -} - -export const AvatarButton = forwardRef(function AvatarButton( - { - src, - square = false, - initials, - alt, - className, - ...props - }: AvatarProps & - (Omit | Omit, 'className'>), - ref: React.ForwardedRef -) { - let classes = clsx( - className, - square ? 'rounded-[20%]' : 'rounded-full', - 'relative inline-grid focus:outline-none data-[focus]:outline data-[focus]:outline-2 data-[focus]:outline-offset-2 data-[focus]:outline-blue-500' - ) - - return 'href' in props ? ( - }> - - - - - ) : ( - - - - - - ) -}) diff --git a/lunar/src/components/catalyst/button.tsx b/lunar/src/components/catalyst/button.tsx deleted file mode 100644 index 21539811..00000000 --- a/lunar/src/components/catalyst/button.tsx +++ /dev/null @@ -1,204 +0,0 @@ -import * as Headless from '@headlessui/react' -import clsx from 'clsx' -import React, { forwardRef } from 'react' -import { Link } from './link' - -const styles = { - base: [ - // Base - 'relative isolate inline-flex items-center justify-center gap-x-2 rounded-lg border text-base/6 font-semibold', - // Sizing - 'px-[calc(theme(spacing[3.5])-1px)] py-[calc(theme(spacing[2.5])-1px)] sm:px-[calc(theme(spacing.3)-1px)] sm:py-[calc(theme(spacing[1.5])-1px)] sm:text-sm/6', - // Focus - 'focus:outline-none data-[focus]:outline data-[focus]:outline-2 data-[focus]:outline-offset-2 data-[focus]:outline-blue-500', - // Disabled - 'data-[disabled]:opacity-50', - // Icon - '[&>[data-slot=icon]]:-mx-0.5 [&>[data-slot=icon]]:my-0.5 [&>[data-slot=icon]]:size-5 [&>[data-slot=icon]]:shrink-0 [&>[data-slot=icon]]:text-[--btn-icon] [&>[data-slot=icon]]:sm:my-1 [&>[data-slot=icon]]:sm:size-4 forced-colors:[--btn-icon:ButtonText] forced-colors:data-[hover]:[--btn-icon:ButtonText]', - ], - solid: [ - // Optical border, implemented as the button background to avoid corner artifacts - 'border-transparent bg-[--btn-border]', - // Dark mode: border is rendered on `after` so background is set to button background - 'dark:bg-[--btn-bg]', - // Button background, implemented as foreground layer to stack on top of pseudo-border layer - 'before:absolute before:inset-0 before:-z-10 before:rounded-[calc(theme(borderRadius.lg)-1px)] before:bg-[--btn-bg]', - // Drop shadow, applied to the inset `before` layer so it blends with the border - 'before:shadow', - // Background color is moved to control and shadow is removed in dark mode so hide `before` pseudo - 'dark:before:hidden', - // Dark mode: Subtle white outline is applied using a border - 'dark:border-white/5', - // Shim/overlay, inset to match button foreground and used for hover state + highlight shadow - 'after:absolute after:inset-0 after:-z-10 after:rounded-[calc(theme(borderRadius.lg)-1px)]', - // Inner highlight shadow - 'after:shadow-[shadow:inset_0_1px_theme(colors.white/15%)]', - // White overlay on hover - 'after:data-[active]:bg-[--btn-hover-overlay] after:data-[hover]:bg-[--btn-hover-overlay]', - // Dark mode: `after` layer expands to cover entire button - 'dark:after:-inset-px dark:after:rounded-lg', - // Disabled - 'before:data-[disabled]:shadow-none after:data-[disabled]:shadow-none', - ], - outline: [ - // Base - 'border-zinc-950/10 text-zinc-950 data-[active]:bg-zinc-950/[2.5%] data-[hover]:bg-zinc-950/[2.5%]', - // Dark mode - 'dark:border-white/15 dark:text-white dark:[--btn-bg:transparent] dark:data-[active]:bg-white/5 dark:data-[hover]:bg-white/5', - // Icon - '[--btn-icon:theme(colors.zinc.500)] data-[active]:[--btn-icon:theme(colors.zinc.700)] data-[hover]:[--btn-icon:theme(colors.zinc.700)] dark:data-[active]:[--btn-icon:theme(colors.zinc.400)] dark:data-[hover]:[--btn-icon:theme(colors.zinc.400)]', - ], - plain: [ - // Base - 'border-transparent text-zinc-950 data-[active]:bg-zinc-950/5 data-[hover]:bg-zinc-950/5', - // Dark mode - 'dark:text-white dark:data-[active]:bg-white/10 dark:data-[hover]:bg-white/10', - // Icon - '[--btn-icon:theme(colors.zinc.500)] data-[active]:[--btn-icon:theme(colors.zinc.700)] data-[hover]:[--btn-icon:theme(colors.zinc.700)] dark:[--btn-icon:theme(colors.zinc.500)] dark:data-[active]:[--btn-icon:theme(colors.zinc.400)] dark:data-[hover]:[--btn-icon:theme(colors.zinc.400)]', - ], - colors: { - 'dark/zinc': [ - 'text-white [--btn-bg:theme(colors.zinc.900)] [--btn-border:theme(colors.zinc.950/90%)] [--btn-hover-overlay:theme(colors.white/10%)]', - 'dark:text-white dark:[--btn-bg:theme(colors.zinc.600)] dark:[--btn-hover-overlay:theme(colors.white/5%)]', - '[--btn-icon:theme(colors.zinc.400)] data-[active]:[--btn-icon:theme(colors.zinc.300)] data-[hover]:[--btn-icon:theme(colors.zinc.300)]', - ], - light: [ - 'text-zinc-950 [--btn-bg:white] [--btn-border:theme(colors.zinc.950/10%)] [--btn-hover-overlay:theme(colors.zinc.950/2.5%)] data-[active]:[--btn-border:theme(colors.zinc.950/15%)] data-[hover]:[--btn-border:theme(colors.zinc.950/15%)]', - 'dark:text-white dark:[--btn-hover-overlay:theme(colors.white/5%)] dark:[--btn-bg:theme(colors.zinc.800)]', - '[--btn-icon:theme(colors.zinc.500)] data-[active]:[--btn-icon:theme(colors.zinc.700)] data-[hover]:[--btn-icon:theme(colors.zinc.700)] dark:[--btn-icon:theme(colors.zinc.500)] dark:data-[active]:[--btn-icon:theme(colors.zinc.400)] dark:data-[hover]:[--btn-icon:theme(colors.zinc.400)]', - ], - 'dark/white': [ - 'text-white [--btn-bg:theme(colors.zinc.900)] [--btn-border:theme(colors.zinc.950/90%)] [--btn-hover-overlay:theme(colors.white/10%)]', - 'dark:text-zinc-950 dark:[--btn-bg:white] dark:[--btn-hover-overlay:theme(colors.zinc.950/5%)]', - '[--btn-icon:theme(colors.zinc.400)] data-[active]:[--btn-icon:theme(colors.zinc.300)] data-[hover]:[--btn-icon:theme(colors.zinc.300)] dark:[--btn-icon:theme(colors.zinc.500)] dark:data-[active]:[--btn-icon:theme(colors.zinc.400)] dark:data-[hover]:[--btn-icon:theme(colors.zinc.400)]', - ], - dark: [ - 'text-white [--btn-bg:theme(colors.zinc.900)] [--btn-border:theme(colors.zinc.950/90%)] [--btn-hover-overlay:theme(colors.white/10%)]', - 'dark:[--btn-hover-overlay:theme(colors.white/5%)] dark:[--btn-bg:theme(colors.zinc.800)]', - '[--btn-icon:theme(colors.zinc.400)] data-[active]:[--btn-icon:theme(colors.zinc.300)] data-[hover]:[--btn-icon:theme(colors.zinc.300)]', - ], - white: [ - 'text-zinc-950 [--btn-bg:white] [--btn-border:theme(colors.zinc.950/10%)] [--btn-hover-overlay:theme(colors.zinc.950/2.5%)] data-[active]:[--btn-border:theme(colors.zinc.950/15%)] data-[hover]:[--btn-border:theme(colors.zinc.950/15%)]', - 'dark:[--btn-hover-overlay:theme(colors.zinc.950/5%)]', - '[--btn-icon:theme(colors.zinc.400)] data-[active]:[--btn-icon:theme(colors.zinc.500)] data-[hover]:[--btn-icon:theme(colors.zinc.500)]', - ], - zinc: [ - 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.zinc.600)] [--btn-border:theme(colors.zinc.700/90%)]', - 'dark:[--btn-hover-overlay:theme(colors.white/5%)]', - '[--btn-icon:theme(colors.zinc.400)] data-[active]:[--btn-icon:theme(colors.zinc.300)] data-[hover]:[--btn-icon:theme(colors.zinc.300)]', - ], - indigo: [ - 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.indigo.500)] [--btn-border:theme(colors.indigo.600/90%)]', - '[--btn-icon:theme(colors.indigo.300)] data-[active]:[--btn-icon:theme(colors.indigo.200)] data-[hover]:[--btn-icon:theme(colors.indigo.200)]', - ], - cyan: [ - 'text-cyan-950 [--btn-bg:theme(colors.cyan.300)] [--btn-border:theme(colors.cyan.400/80%)] [--btn-hover-overlay:theme(colors.white/25%)]', - '[--btn-icon:theme(colors.cyan.500)]', - ], - red: [ - 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.red.600)] [--btn-border:theme(colors.red.700/90%)]', - '[--btn-icon:theme(colors.red.300)] data-[active]:[--btn-icon:theme(colors.red.200)] data-[hover]:[--btn-icon:theme(colors.red.200)]', - ], - orange: [ - 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.orange.500)] [--btn-border:theme(colors.orange.600/90%)]', - '[--btn-icon:theme(colors.orange.300)] data-[active]:[--btn-icon:theme(colors.orange.200)] data-[hover]:[--btn-icon:theme(colors.orange.200)]', - ], - amber: [ - 'text-amber-950 [--btn-hover-overlay:theme(colors.white/25%)] [--btn-bg:theme(colors.amber.400)] [--btn-border:theme(colors.amber.500/80%)]', - '[--btn-icon:theme(colors.amber.600)]', - ], - yellow: [ - 'text-yellow-950 [--btn-hover-overlay:theme(colors.white/25%)] [--btn-bg:theme(colors.yellow.300)] [--btn-border:theme(colors.yellow.400/80%)]', - '[--btn-icon:theme(colors.yellow.600)] data-[active]:[--btn-icon:theme(colors.yellow.700)] data-[hover]:[--btn-icon:theme(colors.yellow.700)]', - ], - lime: [ - 'text-lime-950 [--btn-hover-overlay:theme(colors.white/25%)] [--btn-bg:theme(colors.lime.300)] [--btn-border:theme(colors.lime.400/80%)]', - '[--btn-icon:theme(colors.lime.600)] data-[active]:[--btn-icon:theme(colors.lime.700)] data-[hover]:[--btn-icon:theme(colors.lime.700)]', - ], - green: [ - 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.green.600)] [--btn-border:theme(colors.green.700/90%)]', - '[--btn-icon:theme(colors.white/60%)] data-[active]:[--btn-icon:theme(colors.white/80%)] data-[hover]:[--btn-icon:theme(colors.white/80%)]', - ], - emerald: [ - 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.emerald.600)] [--btn-border:theme(colors.emerald.700/90%)]', - '[--btn-icon:theme(colors.white/60%)] data-[active]:[--btn-icon:theme(colors.white/80%)] data-[hover]:[--btn-icon:theme(colors.white/80%)]', - ], - teal: [ - 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.teal.600)] [--btn-border:theme(colors.teal.700/90%)]', - '[--btn-icon:theme(colors.white/60%)] data-[active]:[--btn-icon:theme(colors.white/80%)] data-[hover]:[--btn-icon:theme(colors.white/80%)]', - ], - sky: [ - 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.sky.500)] [--btn-border:theme(colors.sky.600/80%)]', - '[--btn-icon:theme(colors.white/60%)] data-[active]:[--btn-icon:theme(colors.white/80%)] data-[hover]:[--btn-icon:theme(colors.white/80%)]', - ], - blue: [ - 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.blue.600)] [--btn-border:theme(colors.blue.700/90%)]', - '[--btn-icon:theme(colors.blue.400)] data-[active]:[--btn-icon:theme(colors.blue.300)] data-[hover]:[--btn-icon:theme(colors.blue.300)]', - ], - violet: [ - 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.violet.500)] [--btn-border:theme(colors.violet.600/90%)]', - '[--btn-icon:theme(colors.violet.300)] data-[active]:[--btn-icon:theme(colors.violet.200)] data-[hover]:[--btn-icon:theme(colors.violet.200)]', - ], - purple: [ - 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.purple.500)] [--btn-border:theme(colors.purple.600/90%)]', - '[--btn-icon:theme(colors.purple.300)] data-[active]:[--btn-icon:theme(colors.purple.200)] data-[hover]:[--btn-icon:theme(colors.purple.200)]', - ], - fuchsia: [ - 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.fuchsia.500)] [--btn-border:theme(colors.fuchsia.600/90%)]', - '[--btn-icon:theme(colors.fuchsia.300)] data-[active]:[--btn-icon:theme(colors.fuchsia.200)] data-[hover]:[--btn-icon:theme(colors.fuchsia.200)]', - ], - pink: [ - 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.pink.500)] [--btn-border:theme(colors.pink.600/90%)]', - '[--btn-icon:theme(colors.pink.300)] data-[active]:[--btn-icon:theme(colors.pink.200)] data-[hover]:[--btn-icon:theme(colors.pink.200)]', - ], - rose: [ - 'text-white [--btn-hover-overlay:theme(colors.white/10%)] [--btn-bg:theme(colors.rose.500)] [--btn-border:theme(colors.rose.600/90%)]', - '[--btn-icon:theme(colors.rose.300)] data-[active]:[--btn-icon:theme(colors.rose.200)] data-[hover]:[--btn-icon:theme(colors.rose.200)]', - ], - }, -} - -type ButtonProps = ( - | { color?: keyof typeof styles.colors; outline?: never; plain?: never } - | { color?: never; outline: true; plain?: never } - | { color?: never; outline?: never; plain: true } -) & { className?: string; children: React.ReactNode } & ( - | Omit - | Omit, 'className'> - ) - -export const Button = forwardRef(function Button( - { color, outline, plain, className, children, ...props }: ButtonProps, - ref: React.ForwardedRef -) { - let classes = clsx( - className, - styles.base, - outline ? styles.outline : plain ? styles.plain : clsx(styles.solid, styles.colors[color ?? 'dark/zinc']) - ) - - return 'href' in props ? ( - }> - {children} - - ) : ( - - {children} - - ) -}) - -/** - * Expand the hit area to at least 44×44px on touch devices - */ -export function TouchTarget({ children }: { children: React.ReactNode }) { - return ( - <> -