diff --git a/.gitignore b/.gitignore index f617deccb..41ffebf9a 100644 --- a/.gitignore +++ b/.gitignore @@ -56,4 +56,8 @@ generated # app testing dir app-playground-data/* +# soley because i need the PORT to be 3002 due to WSL stuff +.env +apps/frontend/.env + .astro diff --git a/apps/app/capabilities/plugins.json b/apps/app/capabilities/plugins.json index 126febf02..e4a4c4e46 100644 --- a/apps/app/capabilities/plugins.json +++ b/apps/app/capabilities/plugins.json @@ -2,9 +2,7 @@ "identifier": "plugins", "description": "", "local": true, - "windows": [ - "main" - ], + "windows": ["main"], "permissions": [ "dialog:allow-open", "dialog:allow-confirm", diff --git a/apps/app/gen/schemas/linux-schema.json b/apps/app/gen/schemas/linux-schema.json index fb130beaf..1df65cfb2 100644 --- a/apps/app/gen/schemas/linux-schema.json +++ b/apps/app/gen/schemas/linux-schema.json @@ -133,4007 +133,3067 @@ { "description": "Reference a permission or permission set by identifier and extends its scope.", "type": "object", - "oneOf": [ + "allOf": [ { - "type": "object", - "required": [ - "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": "Entry", + "description": "A command allowed to be executed by the webview API.", + "type": "object", + "required": [ + "args", + "cmd", + "name", + "sidecar" + ], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellAllowedArgs" + } + ] + }, + "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`, `$APP`, `$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" + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + } + } + }, + "deny": { + "items": { + "title": "Entry", + "description": "A command allowed to be executed by the webview API.", + "type": "object", + "required": [ + "args", + "cmd", + "name", + "sidecar" + ], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellAllowedArgs" + } + ] + }, + "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`, `$APP`, `$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" + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + } + } + } + } + }, "properties": { "identifier": { - "oneOf": [ - { - "description": "shell:default -> 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", - "enum": [ - "shell:default" - ] - }, - { - "description": "shell:allow-execute -> Enables the execute command without any pre-configured scope.", - "type": "string", - "enum": [ - "shell:allow-execute" - ] - }, - { - "description": "shell:allow-kill -> Enables the kill command without any pre-configured scope.", - "type": "string", - "enum": [ - "shell:allow-kill" - ] - }, - { - "description": "shell:allow-open -> Enables the open command without any pre-configured scope.", - "type": "string", - "enum": [ - "shell:allow-open" - ] - }, - { - "description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.", - "type": "string", - "enum": [ - "shell:allow-spawn" - ] - }, - { - "description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.", - "type": "string", - "enum": [ - "shell:allow-stdin-write" - ] - }, - { - "description": "shell:deny-execute -> Denies the execute command without any pre-configured scope.", - "type": "string", - "enum": [ - "shell:deny-execute" - ] - }, - { - "description": "shell:deny-kill -> Denies the kill command without any pre-configured scope.", - "type": "string", - "enum": [ - "shell:deny-kill" - ] - }, - { - "description": "shell:deny-open -> Denies the open command without any pre-configured scope.", - "type": "string", - "enum": [ - "shell:deny-open" - ] - }, + "description": "Identifier of the permission or permission set.", + "allOf": [ { - "description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.", - "type": "string", - "enum": [ - "shell:deny-spawn" - ] - }, + "$ref": "#/definitions/Identifier" + } + ] + } + } + }, + { + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ { - "description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.", - "type": "string", - "enum": [ - "shell:deny-stdin-write" - ] + "$ref": "#/definitions/Identifier" } ] }, "allow": { + "description": "Data that defines what is allowed by the scope.", + "type": [ + "array", + "null" + ], "items": { - "title": "Entry", - "description": "A command allowed to be executed by the webview API.", - "type": "object", - "required": [ - "args", - "cmd", - "name", - "sidecar" - ], - "properties": { - "args": { - "description": "The allowed arguments for the command execution.", - "allOf": [ - { - "$ref": "#/definitions/ShellAllowedArgs" - } - ] - }, - "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`, `$APP`, `$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" - }, - "sidecar": { - "description": "If this command is a sidecar command.", - "type": "boolean" - } - } + "$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": { - "title": "Entry", - "description": "A command allowed to be executed by the webview API.", - "type": "object", - "required": [ - "args", - "cmd", - "name", - "sidecar" - ], - "properties": { - "args": { - "description": "The allowed arguments for the command execution.", - "allOf": [ - { - "$ref": "#/definitions/ShellAllowedArgs" - } - ] - }, - "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`, `$APP`, `$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" - }, - "sidecar": { - "description": "If this command is a sidecar command.", - "type": "boolean" - } - } + "$ref": "#/definitions/Value" } } } } + ], + "required": [ + "identifier" ] } ] }, "Identifier": { + "description": "Permission identifier", "oneOf": [ { - "description": "ads:default -> Default plugin permissions.", + "description": "Default plugin permissions.", "type": "string", - "enum": [ - "ads:default" - ] + "const": "ads:default" }, { - "description": "ads:allow-hide-ads-window -> Enables the hide_ads_window command without any pre-configured scope.", + "description": "Enables the get_ads_personalization command without any pre-configured scope.", "type": "string", - "enum": [ - "ads:allow-hide-ads-window" - ] + "const": "ads:allow-get-ads-personalization" }, { - "description": "ads:allow-init-ads-window -> Enables the init_ads_window command without any pre-configured scope.", + "description": "Enables the hide_ads_window command without any pre-configured scope.", "type": "string", - "enum": [ - "ads:allow-init-ads-window" - ] + "const": "ads:allow-hide-ads-window" }, { - "description": "ads:allow-scroll-ads-window -> Enables the scroll_ads_window command without any pre-configured scope.", + "description": "Enables the init_ads_window command without any pre-configured scope.", "type": "string", - "enum": [ - "ads:allow-scroll-ads-window" - ] + "const": "ads:allow-init-ads-window" }, { - "description": "ads:allow-show-ads-window -> Enables the show_ads_window command without any pre-configured scope.", + "description": "Enables the open_link command without any pre-configured scope.", "type": "string", - "enum": [ - "ads:allow-show-ads-window" - ] + "const": "ads:allow-open-link" }, { - "description": "ads:deny-hide-ads-window -> Denies the hide_ads_window command without any pre-configured scope.", + "description": "Enables the record_ads_click command without any pre-configured scope.", "type": "string", - "enum": [ - "ads:deny-hide-ads-window" - ] + "const": "ads:allow-record-ads-click" }, { - "description": "ads:deny-init-ads-window -> Denies the init_ads_window command without any pre-configured scope.", + "description": "Enables the scroll_ads_window command without any pre-configured scope.", "type": "string", - "enum": [ - "ads:deny-init-ads-window" - ] + "const": "ads:allow-scroll-ads-window" }, { - "description": "ads:deny-scroll-ads-window -> Denies the scroll_ads_window command without any pre-configured scope.", + "description": "Enables the show_ads_window command without any pre-configured scope.", "type": "string", - "enum": [ - "ads:deny-scroll-ads-window" - ] + "const": "ads:allow-show-ads-window" }, { - "description": "ads:deny-show-ads-window -> Denies the show_ads_window command without any pre-configured scope.", + "description": "Denies the get_ads_personalization command without any pre-configured scope.", "type": "string", - "enum": [ - "ads:deny-show-ads-window" - ] + "const": "ads:deny-get-ads-personalization" }, { - "description": "auth:default -> Default plugin permissions.", + "description": "Denies the hide_ads_window command without any pre-configured scope.", "type": "string", - "enum": [ - "auth:default" - ] + "const": "ads:deny-hide-ads-window" }, { - "description": "auth:allow-get-default-user -> Enables the get_default_user command without any pre-configured scope.", + "description": "Denies the init_ads_window command without any pre-configured scope.", "type": "string", - "enum": [ - "auth:allow-get-default-user" - ] + "const": "ads:deny-init-ads-window" }, { - "description": "auth:allow-get-users -> Enables the get_users command without any pre-configured scope.", + "description": "Denies the open_link command without any pre-configured scope.", "type": "string", - "enum": [ - "auth:allow-get-users" - ] + "const": "ads:deny-open-link" }, { - "description": "auth:allow-login -> Enables the login command without any pre-configured scope.", + "description": "Denies the record_ads_click command without any pre-configured scope.", "type": "string", - "enum": [ - "auth:allow-login" - ] + "const": "ads:deny-record-ads-click" }, { - "description": "auth:allow-remove-user -> Enables the remove_user command without any pre-configured scope.", + "description": "Denies the scroll_ads_window command without any pre-configured scope.", "type": "string", - "enum": [ - "auth:allow-remove-user" - ] + "const": "ads:deny-scroll-ads-window" }, { - "description": "auth:allow-set-default-user -> Enables the set_default_user command without any pre-configured scope.", + "description": "Denies the show_ads_window command without any pre-configured scope.", "type": "string", - "enum": [ - "auth:allow-set-default-user" - ] + "const": "ads:deny-show-ads-window" }, { - "description": "auth:deny-get-default-user -> Denies the get_default_user command without any pre-configured scope.", + "description": "Default plugin permissions.", "type": "string", - "enum": [ - "auth:deny-get-default-user" - ] + "const": "auth:default" }, { - "description": "auth:deny-get-users -> Denies the get_users command without any pre-configured scope.", + "description": "Enables the get_default_user command without any pre-configured scope.", "type": "string", - "enum": [ - "auth:deny-get-users" - ] + "const": "auth:allow-get-default-user" }, { - "description": "auth:deny-login -> Denies the login command without any pre-configured scope.", + "description": "Enables the get_users command without any pre-configured scope.", "type": "string", - "enum": [ - "auth:deny-login" - ] + "const": "auth:allow-get-users" }, { - "description": "auth:deny-remove-user -> Denies the remove_user command without any pre-configured scope.", + "description": "Enables the login command without any pre-configured scope.", "type": "string", - "enum": [ - "auth:deny-remove-user" - ] + "const": "auth:allow-login" }, { - "description": "auth:deny-set-default-user -> Denies the set_default_user command without any pre-configured scope.", + "description": "Enables the remove_user command without any pre-configured scope.", "type": "string", - "enum": [ - "auth:deny-set-default-user" - ] + "const": "auth:allow-remove-user" }, { - "description": "cache:default -> Default plugin permissions.", + "description": "Enables the set_default_user command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:default" - ] + "const": "auth:allow-set-default-user" }, { - "description": "cache:allow-get-organization -> Enables the get_organization command without any pre-configured scope.", + "description": "Denies the get_default_user command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:allow-get-organization" - ] + "const": "auth:deny-get-default-user" }, { - "description": "cache:allow-get-organization-many -> Enables the get_organization_many command without any pre-configured scope.", + "description": "Denies the get_users command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:allow-get-organization-many" - ] + "const": "auth:deny-get-users" }, { - "description": "cache:allow-get-project -> Enables the get_project command without any pre-configured scope.", + "description": "Denies the login command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:allow-get-project" - ] + "const": "auth:deny-login" }, { - "description": "cache:allow-get-project-many -> Enables the get_project_many command without any pre-configured scope.", + "description": "Denies the remove_user command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:allow-get-project-many" - ] + "const": "auth:deny-remove-user" }, { - "description": "cache:allow-get-search-results -> Enables the get_search_results command without any pre-configured scope.", + "description": "Denies the set_default_user command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:allow-get-search-results" - ] + "const": "auth:deny-set-default-user" }, { - "description": "cache:allow-get-search-results-many -> Enables the get_search_results_many command without any pre-configured scope.", + "description": "Default plugin permissions.", "type": "string", - "enum": [ - "cache:allow-get-search-results-many" - ] + "const": "cache:default" }, { - "description": "cache:allow-get-team -> Enables the get_team command without any pre-configured scope.", + "description": "Enables the get_organization command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:allow-get-team" - ] + "const": "cache:allow-get-organization" }, { - "description": "cache:allow-get-team-many -> Enables the get_team_many command without any pre-configured scope.", + "description": "Enables the get_organization_many command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:allow-get-team-many" - ] + "const": "cache:allow-get-organization-many" }, { - "description": "cache:allow-get-user -> Enables the get_user command without any pre-configured scope.", + "description": "Enables the get_project command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:allow-get-user" - ] + "const": "cache:allow-get-project" }, { - "description": "cache:allow-get-user-many -> Enables the get_user_many command without any pre-configured scope.", + "description": "Enables the get_project_many command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:allow-get-user-many" - ] + "const": "cache:allow-get-project-many" }, { - "description": "cache:allow-get-version -> Enables the get_version command without any pre-configured scope.", + "description": "Enables the get_search_results command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:allow-get-version" - ] + "const": "cache:allow-get-search-results" }, { - "description": "cache:allow-get-version-many -> Enables the get_version_many command without any pre-configured scope.", + "description": "Enables the get_search_results_many command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:allow-get-version-many" - ] + "const": "cache:allow-get-search-results-many" }, { - "description": "cache:allow-purge-cache-types -> Enables the purge_cache_types command without any pre-configured scope.", + "description": "Enables the get_team command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:allow-purge-cache-types" - ] + "const": "cache:allow-get-team" }, { - "description": "cache:deny-get-organization -> Denies the get_organization command without any pre-configured scope.", + "description": "Enables the get_team_many command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:deny-get-organization" - ] + "const": "cache:allow-get-team-many" }, { - "description": "cache:deny-get-organization-many -> Denies the get_organization_many command without any pre-configured scope.", + "description": "Enables the get_user command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:deny-get-organization-many" - ] + "const": "cache:allow-get-user" }, { - "description": "cache:deny-get-project -> Denies the get_project command without any pre-configured scope.", + "description": "Enables the get_user_many command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:deny-get-project" - ] + "const": "cache:allow-get-user-many" }, { - "description": "cache:deny-get-project-many -> Denies the get_project_many command without any pre-configured scope.", + "description": "Enables the get_version command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:deny-get-project-many" - ] + "const": "cache:allow-get-version" }, { - "description": "cache:deny-get-search-results -> Denies the get_search_results command without any pre-configured scope.", + "description": "Enables the get_version_many command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:deny-get-search-results" - ] + "const": "cache:allow-get-version-many" }, { - "description": "cache:deny-get-search-results-many -> Denies the get_search_results_many command without any pre-configured scope.", + "description": "Enables the purge_cache_types command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:deny-get-search-results-many" - ] + "const": "cache:allow-purge-cache-types" }, { - "description": "cache:deny-get-team -> Denies the get_team command without any pre-configured scope.", + "description": "Denies the get_organization command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:deny-get-team" - ] + "const": "cache:deny-get-organization" }, { - "description": "cache:deny-get-team-many -> Denies the get_team_many command without any pre-configured scope.", + "description": "Denies the get_organization_many command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:deny-get-team-many" - ] + "const": "cache:deny-get-organization-many" }, { - "description": "cache:deny-get-user -> Denies the get_user command without any pre-configured scope.", + "description": "Denies the get_project command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:deny-get-user" - ] + "const": "cache:deny-get-project" }, { - "description": "cache:deny-get-user-many -> Denies the get_user_many command without any pre-configured scope.", + "description": "Denies the get_project_many command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:deny-get-user-many" - ] + "const": "cache:deny-get-project-many" }, { - "description": "cache:deny-get-version -> Denies the get_version command without any pre-configured scope.", + "description": "Denies the get_search_results command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:deny-get-version" - ] + "const": "cache:deny-get-search-results" }, { - "description": "cache:deny-get-version-many -> Denies the get_version_many command without any pre-configured scope.", + "description": "Denies the get_search_results_many command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:deny-get-version-many" - ] + "const": "cache:deny-get-search-results-many" }, { - "description": "cache:deny-purge-cache-types -> Denies the purge_cache_types command without any pre-configured scope.", + "description": "Denies the get_team command without any pre-configured scope.", "type": "string", - "enum": [ - "cache:deny-purge-cache-types" - ] + "const": "cache:deny-get-team" }, { - "description": "core:app:default -> Default permissions for the plugin.", + "description": "Denies the get_team_many command without any pre-configured scope.", "type": "string", - "enum": [ - "core:app:default" - ] + "const": "cache:deny-get-team-many" }, { - "description": "core:app:allow-app-hide -> Enables the app_hide command without any pre-configured scope.", + "description": "Denies the get_user command without any pre-configured scope.", "type": "string", - "enum": [ - "core:app:allow-app-hide" - ] + "const": "cache:deny-get-user" }, { - "description": "core:app:allow-app-show -> Enables the app_show command without any pre-configured scope.", + "description": "Denies the get_user_many command without any pre-configured scope.", "type": "string", - "enum": [ - "core:app:allow-app-show" - ] + "const": "cache:deny-get-user-many" }, { - "description": "core:app:allow-default-window-icon -> Enables the default_window_icon command without any pre-configured scope.", + "description": "Denies the get_version command without any pre-configured scope.", "type": "string", - "enum": [ - "core:app:allow-default-window-icon" - ] + "const": "cache:deny-get-version" }, { - "description": "core:app:allow-name -> Enables the name command without any pre-configured scope.", + "description": "Denies the get_version_many command without any pre-configured scope.", "type": "string", - "enum": [ - "core:app:allow-name" - ] + "const": "cache:deny-get-version-many" }, { - "description": "core:app:allow-tauri-version -> Enables the tauri_version command without any pre-configured scope.", + "description": "Denies the purge_cache_types command without any pre-configured scope.", "type": "string", - "enum": [ - "core:app:allow-tauri-version" - ] + "const": "cache:deny-purge-cache-types" }, { - "description": "core:app:allow-version -> Enables the version command without any pre-configured scope.", + "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", - "enum": [ - "core:app:allow-version" - ] + "const": "core:default" }, { - "description": "core:app:deny-app-hide -> Denies the app_hide command without any pre-configured scope.", + "description": "Default permissions for the plugin.", "type": "string", - "enum": [ - "core:app:deny-app-hide" - ] + "const": "core:app:default" }, { - "description": "core:app:deny-app-show -> Denies the app_show command without any pre-configured scope.", + "description": "Enables the app_hide command without any pre-configured scope.", "type": "string", - "enum": [ - "core:app:deny-app-show" - ] + "const": "core:app:allow-app-hide" }, { - "description": "core:app:deny-default-window-icon -> Denies the default_window_icon command without any pre-configured scope.", + "description": "Enables the app_show command without any pre-configured scope.", "type": "string", - "enum": [ - "core:app:deny-default-window-icon" - ] + "const": "core:app:allow-app-show" }, { - "description": "core:app:deny-name -> Denies the name command without any pre-configured scope.", + "description": "Enables the default_window_icon command without any pre-configured scope.", "type": "string", - "enum": [ - "core:app:deny-name" - ] + "const": "core:app:allow-default-window-icon" }, { - "description": "core:app:deny-tauri-version -> Denies the tauri_version command without any pre-configured scope.", + "description": "Enables the name command without any pre-configured scope.", "type": "string", - "enum": [ - "core:app:deny-tauri-version" - ] + "const": "core:app:allow-name" }, { - "description": "core:app:deny-version -> Denies the version command without any pre-configured scope.", + "description": "Enables the set_app_theme command without any pre-configured scope.", "type": "string", - "enum": [ - "core:app:deny-version" - ] + "const": "core:app:allow-set-app-theme" }, { - "description": "core:event:default -> Default permissions for the plugin.", + "description": "Enables the tauri_version command without any pre-configured scope.", "type": "string", - "enum": [ - "core:event:default" - ] + "const": "core:app:allow-tauri-version" }, { - "description": "core:event:allow-emit -> Enables the emit command without any pre-configured scope.", + "description": "Enables the version command without any pre-configured scope.", "type": "string", - "enum": [ - "core:event:allow-emit" - ] + "const": "core:app:allow-version" }, { - "description": "core:event:allow-emit-to -> Enables the emit_to command without any pre-configured scope.", + "description": "Denies the app_hide command without any pre-configured scope.", "type": "string", - "enum": [ - "core:event:allow-emit-to" - ] + "const": "core:app:deny-app-hide" }, { - "description": "core:event:allow-listen -> Enables the listen command without any pre-configured scope.", + "description": "Denies the app_show command without any pre-configured scope.", "type": "string", - "enum": [ - "core:event:allow-listen" - ] + "const": "core:app:deny-app-show" }, { - "description": "core:event:allow-unlisten -> Enables the unlisten command without any pre-configured scope.", + "description": "Denies the default_window_icon command without any pre-configured scope.", "type": "string", - "enum": [ - "core:event:allow-unlisten" - ] + "const": "core:app:deny-default-window-icon" }, { - "description": "core:event:deny-emit -> Denies the emit command without any pre-configured scope.", + "description": "Denies the name command without any pre-configured scope.", "type": "string", - "enum": [ - "core:event:deny-emit" - ] + "const": "core:app:deny-name" }, { - "description": "core:event:deny-emit-to -> Denies the emit_to command without any pre-configured scope.", + "description": "Denies the set_app_theme command without any pre-configured scope.", "type": "string", - "enum": [ - "core:event:deny-emit-to" - ] + "const": "core:app:deny-set-app-theme" }, { - "description": "core:event:deny-listen -> Denies the listen command without any pre-configured scope.", + "description": "Denies the tauri_version command without any pre-configured scope.", "type": "string", - "enum": [ - "core:event:deny-listen" - ] + "const": "core:app:deny-tauri-version" }, { - "description": "core:event:deny-unlisten -> Denies the unlisten command without any pre-configured scope.", + "description": "Denies the version command without any pre-configured scope.", "type": "string", - "enum": [ - "core:event:deny-unlisten" - ] + "const": "core:app:deny-version" }, { - "description": "core:image:default -> Default permissions for the plugin.", + "description": "Default permissions for the plugin.", "type": "string", - "enum": [ - "core:image:default" - ] + "const": "core:event:default" }, { - "description": "core:image:allow-from-bytes -> Enables the from_bytes command without any pre-configured scope.", + "description": "Enables the emit command without any pre-configured scope.", "type": "string", - "enum": [ - "core:image:allow-from-bytes" - ] + "const": "core:event:allow-emit" }, { - "description": "core:image:allow-from-path -> Enables the from_path command without any pre-configured scope.", + "description": "Enables the emit_to command without any pre-configured scope.", "type": "string", - "enum": [ - "core:image:allow-from-path" - ] + "const": "core:event:allow-emit-to" }, { - "description": "core:image:allow-new -> Enables the new command without any pre-configured scope.", + "description": "Enables the listen command without any pre-configured scope.", "type": "string", - "enum": [ - "core:image:allow-new" - ] + "const": "core:event:allow-listen" }, { - "description": "core:image:allow-rgba -> Enables the rgba command without any pre-configured scope.", + "description": "Enables the unlisten command without any pre-configured scope.", "type": "string", - "enum": [ - "core:image:allow-rgba" - ] + "const": "core:event:allow-unlisten" }, { - "description": "core:image:allow-size -> Enables the size command without any pre-configured scope.", + "description": "Denies the emit command without any pre-configured scope.", "type": "string", - "enum": [ - "core:image:allow-size" - ] + "const": "core:event:deny-emit" }, { - "description": "core:image:deny-from-bytes -> Denies the from_bytes command without any pre-configured scope.", + "description": "Denies the emit_to command without any pre-configured scope.", "type": "string", - "enum": [ - "core:image:deny-from-bytes" - ] + "const": "core:event:deny-emit-to" }, { - "description": "core:image:deny-from-path -> Denies the from_path command without any pre-configured scope.", + "description": "Denies the listen command without any pre-configured scope.", "type": "string", - "enum": [ - "core:image:deny-from-path" - ] + "const": "core:event:deny-listen" }, { - "description": "core:image:deny-new -> Denies the new command without any pre-configured scope.", + "description": "Denies the unlisten command without any pre-configured scope.", "type": "string", - "enum": [ - "core:image:deny-new" - ] + "const": "core:event:deny-unlisten" }, { - "description": "core:image:deny-rgba -> Denies the rgba command without any pre-configured scope.", + "description": "Default permissions for the plugin.", "type": "string", - "enum": [ - "core:image:deny-rgba" - ] + "const": "core:image:default" }, { - "description": "core:image:deny-size -> Denies the size command without any pre-configured scope.", + "description": "Enables the from_bytes command without any pre-configured scope.", "type": "string", - "enum": [ - "core:image:deny-size" - ] + "const": "core:image:allow-from-bytes" }, { - "description": "core:menu:default -> Default permissions for the plugin.", + "description": "Enables the from_path command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:default" - ] + "const": "core:image:allow-from-path" }, { - "description": "core:menu:allow-append -> Enables the append command without any pre-configured scope.", + "description": "Enables the new command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-append" - ] + "const": "core:image:allow-new" }, { - "description": "core:menu:allow-create-default -> Enables the create_default command without any pre-configured scope.", + "description": "Enables the rgba command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-create-default" - ] + "const": "core:image:allow-rgba" }, { - "description": "core:menu:allow-get -> Enables the get command without any pre-configured scope.", + "description": "Enables the size command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-get" - ] + "const": "core:image:allow-size" }, { - "description": "core:menu:allow-insert -> Enables the insert command without any pre-configured scope.", + "description": "Denies the from_bytes command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-insert" - ] + "const": "core:image:deny-from-bytes" }, { - "description": "core:menu:allow-is-checked -> Enables the is_checked command without any pre-configured scope.", + "description": "Denies the from_path command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-is-checked" - ] + "const": "core:image:deny-from-path" }, { - "description": "core:menu:allow-is-enabled -> Enables the is_enabled command without any pre-configured scope.", + "description": "Denies the new command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-is-enabled" - ] + "const": "core:image:deny-new" }, { - "description": "core:menu:allow-items -> Enables the items command without any pre-configured scope.", + "description": "Denies the rgba command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-items" - ] + "const": "core:image:deny-rgba" }, { - "description": "core:menu:allow-new -> Enables the new command without any pre-configured scope.", + "description": "Denies the size command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-new" - ] + "const": "core:image:deny-size" }, { - "description": "core:menu:allow-popup -> Enables the popup command without any pre-configured scope.", + "description": "Default permissions for the plugin.", "type": "string", - "enum": [ - "core:menu:allow-popup" - ] + "const": "core:menu:default" }, { - "description": "core:menu:allow-prepend -> Enables the prepend command without any pre-configured scope.", + "description": "Enables the append command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-prepend" - ] + "const": "core:menu:allow-append" }, { - "description": "core:menu:allow-remove -> Enables the remove command without any pre-configured scope.", + "description": "Enables the create_default command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-remove" - ] + "const": "core:menu:allow-create-default" }, { - "description": "core:menu:allow-remove-at -> Enables the remove_at command without any pre-configured scope.", + "description": "Enables the get command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-remove-at" - ] + "const": "core:menu:allow-get" }, { - "description": "core:menu:allow-set-accelerator -> Enables the set_accelerator command without any pre-configured scope.", + "description": "Enables the insert command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-set-accelerator" - ] + "const": "core:menu:allow-insert" }, { - "description": "core:menu:allow-set-as-app-menu -> Enables the set_as_app_menu command without any pre-configured scope.", + "description": "Enables the is_checked command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-set-as-app-menu" - ] + "const": "core:menu:allow-is-checked" }, { - "description": "core:menu:allow-set-as-help-menu-for-nsapp -> Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "description": "Enables the is_enabled command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-set-as-help-menu-for-nsapp" - ] + "const": "core:menu:allow-is-enabled" }, { - "description": "core:menu:allow-set-as-window-menu -> Enables the set_as_window_menu command without any pre-configured scope.", + "description": "Enables the items command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-set-as-window-menu" - ] + "const": "core:menu:allow-items" }, { - "description": "core:menu:allow-set-as-windows-menu-for-nsapp -> Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "description": "Enables the new command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-set-as-windows-menu-for-nsapp" - ] + "const": "core:menu:allow-new" }, { - "description": "core:menu:allow-set-checked -> Enables the set_checked command without any pre-configured scope.", + "description": "Enables the popup command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-set-checked" - ] + "const": "core:menu:allow-popup" }, { - "description": "core:menu:allow-set-enabled -> Enables the set_enabled command without any pre-configured scope.", + "description": "Enables the prepend command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-set-enabled" - ] + "const": "core:menu:allow-prepend" }, { - "description": "core:menu:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "description": "Enables the remove command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-set-icon" - ] + "const": "core:menu:allow-remove" }, { - "description": "core:menu:allow-set-text -> Enables the set_text command without any pre-configured scope.", + "description": "Enables the remove_at command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-set-text" - ] + "const": "core:menu:allow-remove-at" }, { - "description": "core:menu:allow-text -> Enables the text command without any pre-configured scope.", + "description": "Enables the set_accelerator command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:allow-text" - ] + "const": "core:menu:allow-set-accelerator" }, { - "description": "core:menu:deny-append -> Denies the append command without any pre-configured scope.", + "description": "Enables the set_as_app_menu command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-append" - ] + "const": "core:menu:allow-set-as-app-menu" }, { - "description": "core:menu:deny-create-default -> Denies the create_default command without any pre-configured scope.", + "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-create-default" - ] + "const": "core:menu:allow-set-as-help-menu-for-nsapp" }, { - "description": "core:menu:deny-get -> Denies the get command without any pre-configured scope.", + "description": "Enables the set_as_window_menu command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-get" - ] + "const": "core:menu:allow-set-as-window-menu" }, { - "description": "core:menu:deny-insert -> Denies the insert command without any pre-configured scope.", + "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-insert" - ] + "const": "core:menu:allow-set-as-windows-menu-for-nsapp" }, { - "description": "core:menu:deny-is-checked -> Denies the is_checked command without any pre-configured scope.", + "description": "Enables the set_checked command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-is-checked" - ] + "const": "core:menu:allow-set-checked" }, { - "description": "core:menu:deny-is-enabled -> Denies the is_enabled command without any pre-configured scope.", + "description": "Enables the set_enabled command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-is-enabled" - ] + "const": "core:menu:allow-set-enabled" }, { - "description": "core:menu:deny-items -> Denies the items command without any pre-configured scope.", + "description": "Enables the set_icon command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-items" - ] + "const": "core:menu:allow-set-icon" }, { - "description": "core:menu:deny-new -> Denies the new command without any pre-configured scope.", + "description": "Enables the set_text command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-new" - ] + "const": "core:menu:allow-set-text" }, { - "description": "core:menu:deny-popup -> Denies the popup command without any pre-configured scope.", + "description": "Enables the text command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-popup" - ] + "const": "core:menu:allow-text" }, { - "description": "core:menu:deny-prepend -> Denies the prepend command without any pre-configured scope.", + "description": "Denies the append command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-prepend" - ] + "const": "core:menu:deny-append" }, { - "description": "core:menu:deny-remove -> Denies the remove command without any pre-configured scope.", + "description": "Denies the create_default command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-remove" - ] + "const": "core:menu:deny-create-default" }, { - "description": "core:menu:deny-remove-at -> Denies the remove_at command without any pre-configured scope.", + "description": "Denies the get command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-remove-at" - ] + "const": "core:menu:deny-get" }, { - "description": "core:menu:deny-set-accelerator -> Denies the set_accelerator command without any pre-configured scope.", + "description": "Denies the insert command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-set-accelerator" - ] + "const": "core:menu:deny-insert" }, { - "description": "core:menu:deny-set-as-app-menu -> Denies the set_as_app_menu command without any pre-configured scope.", + "description": "Denies the is_checked command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-set-as-app-menu" - ] + "const": "core:menu:deny-is-checked" }, { - "description": "core:menu:deny-set-as-help-menu-for-nsapp -> Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "description": "Denies the is_enabled command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-set-as-help-menu-for-nsapp" - ] + "const": "core:menu:deny-is-enabled" }, { - "description": "core:menu:deny-set-as-window-menu -> Denies the set_as_window_menu command without any pre-configured scope.", + "description": "Denies the items command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-set-as-window-menu" - ] + "const": "core:menu:deny-items" }, { - "description": "core:menu:deny-set-as-windows-menu-for-nsapp -> Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "description": "Denies the new command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-set-as-windows-menu-for-nsapp" - ] + "const": "core:menu:deny-new" }, { - "description": "core:menu:deny-set-checked -> Denies the set_checked command without any pre-configured scope.", + "description": "Denies the popup command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-set-checked" - ] + "const": "core:menu:deny-popup" }, { - "description": "core:menu:deny-set-enabled -> Denies the set_enabled command without any pre-configured scope.", + "description": "Denies the prepend command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-set-enabled" - ] + "const": "core:menu:deny-prepend" }, { - "description": "core:menu:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "description": "Denies the remove command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-set-icon" - ] + "const": "core:menu:deny-remove" }, { - "description": "core:menu:deny-set-text -> Denies the set_text command without any pre-configured scope.", + "description": "Denies the remove_at command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-set-text" - ] + "const": "core:menu:deny-remove-at" }, { - "description": "core:menu:deny-text -> Denies the text command without any pre-configured scope.", + "description": "Denies the set_accelerator command without any pre-configured scope.", "type": "string", - "enum": [ - "core:menu:deny-text" - ] + "const": "core:menu:deny-set-accelerator" }, { - "description": "core:path:default -> Default permissions for the plugin.", + "description": "Denies the set_as_app_menu command without any pre-configured scope.", "type": "string", - "enum": [ - "core:path:default" - ] + "const": "core:menu:deny-set-as-app-menu" }, { - "description": "core:path:allow-basename -> Enables the basename command without any pre-configured scope.", + "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", "type": "string", - "enum": [ - "core:path:allow-basename" - ] + "const": "core:menu:deny-set-as-help-menu-for-nsapp" }, { - "description": "core:path:allow-dirname -> Enables the dirname command without any pre-configured scope.", + "description": "Denies the set_as_window_menu command without any pre-configured scope.", "type": "string", - "enum": [ - "core:path:allow-dirname" - ] + "const": "core:menu:deny-set-as-window-menu" }, { - "description": "core:path:allow-extname -> Enables the extname command without any pre-configured scope.", + "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", "type": "string", - "enum": [ - "core:path:allow-extname" - ] + "const": "core:menu:deny-set-as-windows-menu-for-nsapp" }, { - "description": "core:path:allow-is-absolute -> Enables the is_absolute command without any pre-configured scope.", + "description": "Denies the set_checked command without any pre-configured scope.", "type": "string", - "enum": [ - "core:path:allow-is-absolute" - ] + "const": "core:menu:deny-set-checked" }, { - "description": "core:path:allow-join -> Enables the join command without any pre-configured scope.", + "description": "Denies the set_enabled command without any pre-configured scope.", "type": "string", - "enum": [ - "core:path:allow-join" - ] + "const": "core:menu:deny-set-enabled" }, { - "description": "core:path:allow-normalize -> Enables the normalize command without any pre-configured scope.", + "description": "Denies the set_icon command without any pre-configured scope.", "type": "string", - "enum": [ - "core:path:allow-normalize" - ] + "const": "core:menu:deny-set-icon" }, { - "description": "core:path:allow-resolve -> Enables the resolve command without any pre-configured scope.", + "description": "Denies the set_text command without any pre-configured scope.", "type": "string", - "enum": [ - "core:path:allow-resolve" - ] + "const": "core:menu:deny-set-text" }, { - "description": "core:path:allow-resolve-directory -> Enables the resolve_directory command without any pre-configured scope.", + "description": "Denies the text command without any pre-configured scope.", "type": "string", - "enum": [ - "core:path:allow-resolve-directory" - ] + "const": "core:menu:deny-text" }, { - "description": "core:path:deny-basename -> Denies the basename command without any pre-configured scope.", + "description": "Default permissions for the plugin.", "type": "string", - "enum": [ - "core:path:deny-basename" - ] + "const": "core:path:default" }, { - "description": "core:path:deny-dirname -> Denies the dirname command without any pre-configured scope.", + "description": "Enables the basename command without any pre-configured scope.", "type": "string", - "enum": [ - "core:path:deny-dirname" - ] + "const": "core:path:allow-basename" }, { - "description": "core:path:deny-extname -> Denies the extname command without any pre-configured scope.", + "description": "Enables the dirname command without any pre-configured scope.", "type": "string", - "enum": [ - "core:path:deny-extname" - ] + "const": "core:path:allow-dirname" }, { - "description": "core:path:deny-is-absolute -> Denies the is_absolute command without any pre-configured scope.", + "description": "Enables the extname command without any pre-configured scope.", "type": "string", - "enum": [ - "core:path:deny-is-absolute" - ] + "const": "core:path:allow-extname" }, { - "description": "core:path:deny-join -> Denies the join command without any pre-configured scope.", + "description": "Enables the is_absolute command without any pre-configured scope.", "type": "string", - "enum": [ - "core:path:deny-join" - ] + "const": "core:path:allow-is-absolute" }, { - "description": "core:path:deny-normalize -> Denies the normalize command without any pre-configured scope.", + "description": "Enables the join command without any pre-configured scope.", "type": "string", - "enum": [ - "core:path:deny-normalize" - ] + "const": "core:path:allow-join" }, { - "description": "core:path:deny-resolve -> Denies the resolve command without any pre-configured scope.", + "description": "Enables the normalize command without any pre-configured scope.", "type": "string", - "enum": [ - "core:path:deny-resolve" - ] + "const": "core:path:allow-normalize" }, { - "description": "core:path:deny-resolve-directory -> Denies the resolve_directory command without any pre-configured scope.", + "description": "Enables the resolve command without any pre-configured scope.", "type": "string", - "enum": [ - "core:path:deny-resolve-directory" - ] + "const": "core:path:allow-resolve" }, { - "description": "core:resources:default -> Default permissions for the plugin.", + "description": "Enables the resolve_directory command without any pre-configured scope.", "type": "string", - "enum": [ - "core:resources:default" - ] + "const": "core:path:allow-resolve-directory" }, { - "description": "core:resources:allow-close -> Enables the close command without any pre-configured scope.", + "description": "Denies the basename command without any pre-configured scope.", "type": "string", - "enum": [ - "core:resources:allow-close" - ] + "const": "core:path:deny-basename" }, { - "description": "core:resources:deny-close -> Denies the close command without any pre-configured scope.", + "description": "Denies the dirname command without any pre-configured scope.", "type": "string", - "enum": [ - "core:resources:deny-close" - ] + "const": "core:path:deny-dirname" }, { - "description": "core:tray:default -> Default permissions for the plugin.", + "description": "Denies the extname command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:default" - ] + "const": "core:path:deny-extname" }, { - "description": "core:tray:allow-get-by-id -> Enables the get_by_id command without any pre-configured scope.", + "description": "Denies the is_absolute command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:allow-get-by-id" - ] + "const": "core:path:deny-is-absolute" }, { - "description": "core:tray:allow-new -> Enables the new command without any pre-configured scope.", + "description": "Denies the join command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:allow-new" - ] + "const": "core:path:deny-join" }, { - "description": "core:tray:allow-remove-by-id -> Enables the remove_by_id command without any pre-configured scope.", + "description": "Denies the normalize command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:allow-remove-by-id" - ] + "const": "core:path:deny-normalize" }, { - "description": "core:tray:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "description": "Denies the resolve command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:allow-set-icon" - ] + "const": "core:path:deny-resolve" }, { - "description": "core:tray:allow-set-icon-as-template -> Enables the set_icon_as_template command without any pre-configured scope.", + "description": "Denies the resolve_directory command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:allow-set-icon-as-template" - ] + "const": "core:path:deny-resolve-directory" }, { - "description": "core:tray:allow-set-menu -> Enables the set_menu command without any pre-configured scope.", + "description": "Default permissions for the plugin.", "type": "string", - "enum": [ - "core:tray:allow-set-menu" - ] + "const": "core:resources:default" }, { - "description": "core:tray:allow-set-show-menu-on-left-click -> Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "description": "Enables the close command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:allow-set-show-menu-on-left-click" - ] + "const": "core:resources:allow-close" }, { - "description": "core:tray:allow-set-temp-dir-path -> Enables the set_temp_dir_path command without any pre-configured scope.", + "description": "Denies the close command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:allow-set-temp-dir-path" - ] + "const": "core:resources:deny-close" }, { - "description": "core:tray:allow-set-title -> Enables the set_title command without any pre-configured scope.", + "description": "Default permissions for the plugin.", "type": "string", - "enum": [ - "core:tray:allow-set-title" - ] + "const": "core:tray:default" }, { - "description": "core:tray:allow-set-tooltip -> Enables the set_tooltip command without any pre-configured scope.", + "description": "Enables the get_by_id command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:allow-set-tooltip" - ] + "const": "core:tray:allow-get-by-id" }, { - "description": "core:tray:allow-set-visible -> Enables the set_visible command without any pre-configured scope.", + "description": "Enables the new command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:allow-set-visible" - ] + "const": "core:tray:allow-new" }, { - "description": "core:tray:deny-get-by-id -> Denies the get_by_id command without any pre-configured scope.", + "description": "Enables the remove_by_id command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:deny-get-by-id" - ] + "const": "core:tray:allow-remove-by-id" }, { - "description": "core:tray:deny-new -> Denies the new command without any pre-configured scope.", + "description": "Enables the set_icon command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:deny-new" - ] + "const": "core:tray:allow-set-icon" }, { - "description": "core:tray:deny-remove-by-id -> Denies the remove_by_id command without any pre-configured scope.", + "description": "Enables the set_icon_as_template command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:deny-remove-by-id" - ] + "const": "core:tray:allow-set-icon-as-template" }, { - "description": "core:tray:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "description": "Enables the set_menu command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:deny-set-icon" - ] + "const": "core:tray:allow-set-menu" }, { - "description": "core:tray:deny-set-icon-as-template -> Denies the set_icon_as_template command without any pre-configured scope.", + "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:deny-set-icon-as-template" - ] + "const": "core:tray:allow-set-show-menu-on-left-click" }, { - "description": "core:tray:deny-set-menu -> Denies the set_menu command without any pre-configured scope.", + "description": "Enables the set_temp_dir_path command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:deny-set-menu" - ] + "const": "core:tray:allow-set-temp-dir-path" }, { - "description": "core:tray:deny-set-show-menu-on-left-click -> Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "description": "Enables the set_title command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:deny-set-show-menu-on-left-click" - ] + "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": "core:tray:deny-set-temp-dir-path -> Denies the set_temp_dir_path command without any pre-configured scope.", + "description": "Enables the webview_hide command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:deny-set-temp-dir-path" - ] + "const": "core:webview:allow-webview-hide" }, { - "description": "core:tray:deny-set-title -> Denies the set_title command without any pre-configured scope.", + "description": "Enables the webview_position command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:deny-set-title" - ] + "const": "core:webview:allow-webview-position" }, { - "description": "core:tray:deny-set-tooltip -> Denies the set_tooltip command without any pre-configured scope.", + "description": "Enables the webview_show command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:deny-set-tooltip" - ] + "const": "core:webview:allow-webview-show" }, { - "description": "core:tray:deny-set-visible -> Denies the set_visible command without any pre-configured scope.", + "description": "Enables the webview_size command without any pre-configured scope.", "type": "string", - "enum": [ - "core:tray:deny-set-visible" - ] + "const": "core:webview:allow-webview-size" }, { - "description": "core:webview:default -> Default permissions for the plugin.", + "description": "Denies the clear_all_browsing_data command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:default" - ] + "const": "core:webview:deny-clear-all-browsing-data" }, { - "description": "core:webview:allow-create-webview -> Enables the create_webview command without any pre-configured scope.", + "description": "Denies the create_webview command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:allow-create-webview" - ] + "const": "core:webview:deny-create-webview" }, { - "description": "core:webview:allow-create-webview-window -> Enables the create_webview_window command without any pre-configured scope.", + "description": "Denies the create_webview_window command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:allow-create-webview-window" - ] + "const": "core:webview:deny-create-webview-window" }, { - "description": "core:webview:allow-get-all-webviews -> Enables the get_all_webviews command without any pre-configured scope.", + "description": "Denies the get_all_webviews command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:allow-get-all-webviews" - ] + "const": "core:webview:deny-get-all-webviews" }, { - "description": "core:webview:allow-internal-toggle-devtools -> Enables the internal_toggle_devtools command without any pre-configured scope.", + "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:allow-internal-toggle-devtools" - ] + "const": "core:webview:deny-internal-toggle-devtools" }, { - "description": "core:webview:allow-print -> Enables the print command without any pre-configured scope.", + "description": "Denies the print command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:allow-print" - ] + "const": "core:webview:deny-print" }, { - "description": "core:webview:allow-reparent -> Enables the reparent command without any pre-configured scope.", + "description": "Denies the reparent command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:allow-reparent" - ] + "const": "core:webview:deny-reparent" }, { - "description": "core:webview:allow-set-webview-focus -> Enables the set_webview_focus command without any pre-configured scope.", + "description": "Denies the set_webview_focus command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:allow-set-webview-focus" - ] + "const": "core:webview:deny-set-webview-focus" }, { - "description": "core:webview:allow-set-webview-position -> Enables the set_webview_position command without any pre-configured scope.", + "description": "Denies the set_webview_position command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:allow-set-webview-position" - ] + "const": "core:webview:deny-set-webview-position" }, { - "description": "core:webview:allow-set-webview-size -> Enables the set_webview_size command without any pre-configured scope.", + "description": "Denies the set_webview_size command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:allow-set-webview-size" - ] + "const": "core:webview:deny-set-webview-size" }, { - "description": "core:webview:allow-set-webview-zoom -> Enables the set_webview_zoom command without any pre-configured scope.", + "description": "Denies the set_webview_zoom command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:allow-set-webview-zoom" - ] + "const": "core:webview:deny-set-webview-zoom" }, { - "description": "core:webview:allow-webview-close -> Enables the webview_close command without any pre-configured scope.", + "description": "Denies the webview_close command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:allow-webview-close" - ] + "const": "core:webview:deny-webview-close" }, { - "description": "core:webview:allow-webview-position -> Enables the webview_position command without any pre-configured scope.", + "description": "Denies the webview_hide command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:allow-webview-position" - ] + "const": "core:webview:deny-webview-hide" }, { - "description": "core:webview:allow-webview-size -> Enables the webview_size command without any pre-configured scope.", + "description": "Denies the webview_position command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:allow-webview-size" - ] + "const": "core:webview:deny-webview-position" }, { - "description": "core:webview:deny-create-webview -> Denies the create_webview command without any pre-configured scope.", + "description": "Denies the webview_show command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:deny-create-webview" - ] + "const": "core:webview:deny-webview-show" }, { - "description": "core:webview:deny-create-webview-window -> Denies the create_webview_window command without any pre-configured scope.", + "description": "Denies the webview_size command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:deny-create-webview-window" - ] + "const": "core:webview:deny-webview-size" }, { - "description": "core:webview:deny-get-all-webviews -> Denies the get_all_webviews command without any pre-configured scope.", + "description": "Default permissions for the plugin.", "type": "string", - "enum": [ - "core:webview:deny-get-all-webviews" - ] + "const": "core:window:default" }, { - "description": "core:webview:deny-internal-toggle-devtools -> Denies the internal_toggle_devtools command without any pre-configured scope.", + "description": "Enables the available_monitors command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:deny-internal-toggle-devtools" - ] + "const": "core:window:allow-available-monitors" }, { - "description": "core:webview:deny-print -> Denies the print command without any pre-configured scope.", + "description": "Enables the center command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:deny-print" - ] + "const": "core:window:allow-center" }, { - "description": "core:webview:deny-reparent -> Denies the reparent command without any pre-configured scope.", + "description": "Enables the close command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:deny-reparent" - ] + "const": "core:window:allow-close" }, { - "description": "core:webview:deny-set-webview-focus -> Denies the set_webview_focus command without any pre-configured scope.", + "description": "Enables the create command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:deny-set-webview-focus" - ] + "const": "core:window:allow-create" }, { - "description": "core:webview:deny-set-webview-position -> Denies the set_webview_position command without any pre-configured scope.", + "description": "Enables the current_monitor command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:deny-set-webview-position" - ] + "const": "core:window:allow-current-monitor" }, { - "description": "core:webview:deny-set-webview-size -> Denies the set_webview_size command without any pre-configured scope.", + "description": "Enables the cursor_position command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:deny-set-webview-size" - ] + "const": "core:window:allow-cursor-position" }, { - "description": "core:webview:deny-set-webview-zoom -> Denies the set_webview_zoom command without any pre-configured scope.", + "description": "Enables the destroy command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:deny-set-webview-zoom" - ] + "const": "core:window:allow-destroy" }, { - "description": "core:webview:deny-webview-close -> Denies the webview_close command without any pre-configured scope.", + "description": "Enables the get_all_windows command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:deny-webview-close" - ] + "const": "core:window:allow-get-all-windows" }, { - "description": "core:webview:deny-webview-position -> Denies the webview_position command without any pre-configured scope.", + "description": "Enables the hide command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:deny-webview-position" - ] + "const": "core:window:allow-hide" }, { - "description": "core:webview:deny-webview-size -> Denies the webview_size command without any pre-configured scope.", + "description": "Enables the inner_position command without any pre-configured scope.", "type": "string", - "enum": [ - "core:webview:deny-webview-size" - ] + "const": "core:window:allow-inner-position" }, { - "description": "core:window:default -> Default permissions for the plugin.", + "description": "Enables the inner_size command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:default" - ] + "const": "core:window:allow-inner-size" }, { - "description": "core:window:allow-available-monitors -> Enables the available_monitors command without any pre-configured scope.", + "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-available-monitors" - ] + "const": "core:window:allow-internal-toggle-maximize" }, { - "description": "core:window:allow-center -> Enables the center command without any pre-configured scope.", + "description": "Enables the is_closable command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-center" - ] + "const": "core:window:allow-is-closable" }, { - "description": "core:window:allow-close -> Enables the close command without any pre-configured scope.", + "description": "Enables the is_decorated command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-close" - ] + "const": "core:window:allow-is-decorated" }, { - "description": "core:window:allow-create -> Enables the create command without any pre-configured scope.", + "description": "Enables the is_enabled command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-create" - ] + "const": "core:window:allow-is-enabled" }, { - "description": "core:window:allow-current-monitor -> Enables the current_monitor command without any pre-configured scope.", + "description": "Enables the is_focused command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-current-monitor" - ] + "const": "core:window:allow-is-focused" }, { - "description": "core:window:allow-cursor-position -> Enables the cursor_position command without any pre-configured scope.", + "description": "Enables the is_fullscreen command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-cursor-position" - ] + "const": "core:window:allow-is-fullscreen" }, { - "description": "core:window:allow-destroy -> Enables the destroy command without any pre-configured scope.", + "description": "Enables the is_maximizable command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-destroy" - ] + "const": "core:window:allow-is-maximizable" }, { - "description": "core:window:allow-get-all-windows -> Enables the get_all_windows command without any pre-configured scope.", + "description": "Enables the is_maximized command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-get-all-windows" - ] + "const": "core:window:allow-is-maximized" }, { - "description": "core:window:allow-hide -> Enables the hide command without any pre-configured scope.", + "description": "Enables the is_minimizable command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-hide" - ] + "const": "core:window:allow-is-minimizable" }, { - "description": "core:window:allow-inner-position -> Enables the inner_position command without any pre-configured scope.", + "description": "Enables the is_minimized command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-inner-position" - ] + "const": "core:window:allow-is-minimized" }, { - "description": "core:window:allow-inner-size -> Enables the inner_size command without any pre-configured scope.", + "description": "Enables the is_resizable command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-inner-size" - ] + "const": "core:window:allow-is-resizable" }, { - "description": "core:window:allow-internal-toggle-maximize -> Enables the internal_toggle_maximize command without any pre-configured scope.", + "description": "Enables the is_visible command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-internal-toggle-maximize" - ] + "const": "core:window:allow-is-visible" }, { - "description": "core:window:allow-is-closable -> Enables the is_closable command without any pre-configured scope.", + "description": "Enables the maximize command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-is-closable" - ] + "const": "core:window:allow-maximize" }, { - "description": "core:window:allow-is-decorated -> Enables the is_decorated command without any pre-configured scope.", + "description": "Enables the minimize command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-is-decorated" - ] + "const": "core:window:allow-minimize" }, { - "description": "core:window:allow-is-focused -> Enables the is_focused command without any pre-configured scope.", + "description": "Enables the monitor_from_point command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-is-focused" - ] + "const": "core:window:allow-monitor-from-point" }, { - "description": "core:window:allow-is-fullscreen -> Enables the is_fullscreen command without any pre-configured scope.", + "description": "Enables the outer_position command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-is-fullscreen" - ] + "const": "core:window:allow-outer-position" }, { - "description": "core:window:allow-is-maximizable -> Enables the is_maximizable command without any pre-configured scope.", + "description": "Enables the outer_size command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-is-maximizable" - ] + "const": "core:window:allow-outer-size" }, { - "description": "core:window:allow-is-maximized -> Enables the is_maximized command without any pre-configured scope.", + "description": "Enables the primary_monitor command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-is-maximized" - ] + "const": "core:window:allow-primary-monitor" }, { - "description": "core:window:allow-is-minimizable -> Enables the is_minimizable command without any pre-configured scope.", + "description": "Enables the request_user_attention command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-is-minimizable" - ] + "const": "core:window:allow-request-user-attention" }, { - "description": "core:window:allow-is-minimized -> Enables the is_minimized command without any pre-configured scope.", + "description": "Enables the scale_factor command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-is-minimized" - ] + "const": "core:window:allow-scale-factor" }, { - "description": "core:window:allow-is-resizable -> Enables the is_resizable command without any pre-configured scope.", + "description": "Enables the set_always_on_bottom command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-is-resizable" - ] + "const": "core:window:allow-set-always-on-bottom" }, { - "description": "core:window:allow-is-visible -> Enables the is_visible command without any pre-configured scope.", + "description": "Enables the set_always_on_top command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-is-visible" - ] + "const": "core:window:allow-set-always-on-top" }, { - "description": "core:window:allow-maximize -> Enables the maximize command without any pre-configured scope.", + "description": "Enables the set_closable command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-maximize" - ] + "const": "core:window:allow-set-closable" }, { - "description": "core:window:allow-minimize -> Enables the minimize command without any pre-configured scope.", + "description": "Enables the set_content_protected command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-minimize" - ] + "const": "core:window:allow-set-content-protected" }, { - "description": "core:window:allow-monitor-from-point -> Enables the monitor_from_point command without any pre-configured scope.", + "description": "Enables the set_cursor_grab command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-monitor-from-point" - ] + "const": "core:window:allow-set-cursor-grab" }, { - "description": "core:window:allow-outer-position -> Enables the outer_position command without any pre-configured scope.", + "description": "Enables the set_cursor_icon command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-outer-position" - ] + "const": "core:window:allow-set-cursor-icon" }, { - "description": "core:window:allow-outer-size -> Enables the outer_size command without any pre-configured scope.", + "description": "Enables the set_cursor_position command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-outer-size" - ] + "const": "core:window:allow-set-cursor-position" }, { - "description": "core:window:allow-primary-monitor -> Enables the primary_monitor command without any pre-configured scope.", + "description": "Enables the set_cursor_visible command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-primary-monitor" - ] + "const": "core:window:allow-set-cursor-visible" }, { - "description": "core:window:allow-request-user-attention -> Enables the request_user_attention command without any pre-configured scope.", + "description": "Enables the set_decorations command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-request-user-attention" - ] + "const": "core:window:allow-set-decorations" }, { - "description": "core:window:allow-scale-factor -> Enables the scale_factor command without any pre-configured scope.", + "description": "Enables the set_effects command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-scale-factor" - ] + "const": "core:window:allow-set-effects" }, { - "description": "core:window:allow-set-always-on-bottom -> Enables the set_always_on_bottom command without any pre-configured scope.", + "description": "Enables the set_enabled command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-always-on-bottom" - ] + "const": "core:window:allow-set-enabled" }, { - "description": "core:window:allow-set-always-on-top -> Enables the set_always_on_top command without any pre-configured scope.", + "description": "Enables the set_focus command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-always-on-top" - ] + "const": "core:window:allow-set-focus" }, { - "description": "core:window:allow-set-closable -> Enables the set_closable command without any pre-configured scope.", + "description": "Enables the set_fullscreen command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-closable" - ] + "const": "core:window:allow-set-fullscreen" }, { - "description": "core:window:allow-set-content-protected -> Enables the set_content_protected command without any pre-configured scope.", + "description": "Enables the set_icon command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-content-protected" - ] + "const": "core:window:allow-set-icon" }, { - "description": "core:window:allow-set-cursor-grab -> Enables the set_cursor_grab command without any pre-configured scope.", + "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-cursor-grab" - ] + "const": "core:window:allow-set-ignore-cursor-events" }, { - "description": "core:window:allow-set-cursor-icon -> Enables the set_cursor_icon command without any pre-configured scope.", + "description": "Enables the set_max_size command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-cursor-icon" - ] + "const": "core:window:allow-set-max-size" }, { - "description": "core:window:allow-set-cursor-position -> Enables the set_cursor_position command without any pre-configured scope.", + "description": "Enables the set_maximizable command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-cursor-position" - ] + "const": "core:window:allow-set-maximizable" }, { - "description": "core:window:allow-set-cursor-visible -> Enables the set_cursor_visible command without any pre-configured scope.", + "description": "Enables the set_min_size command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-cursor-visible" - ] + "const": "core:window:allow-set-min-size" }, { - "description": "core:window:allow-set-decorations -> Enables the set_decorations command without any pre-configured scope.", + "description": "Enables the set_minimizable command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-decorations" - ] + "const": "core:window:allow-set-minimizable" }, { - "description": "core:window:allow-set-effects -> Enables the set_effects command without any pre-configured scope.", + "description": "Enables the set_position command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-effects" - ] + "const": "core:window:allow-set-position" }, { - "description": "core:window:allow-set-focus -> Enables the set_focus command without any pre-configured scope.", + "description": "Enables the set_progress_bar command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-focus" - ] + "const": "core:window:allow-set-progress-bar" }, { - "description": "core:window:allow-set-fullscreen -> Enables the set_fullscreen command without any pre-configured scope.", + "description": "Enables the set_resizable command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-fullscreen" - ] + "const": "core:window:allow-set-resizable" }, { - "description": "core:window:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "description": "Enables the set_shadow command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-icon" - ] + "const": "core:window:allow-set-shadow" }, { - "description": "core:window:allow-set-ignore-cursor-events -> Enables the set_ignore_cursor_events command without any pre-configured scope.", + "description": "Enables the set_size command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-ignore-cursor-events" - ] + "const": "core:window:allow-set-size" }, { - "description": "core:window:allow-set-max-size -> Enables the set_max_size command without any pre-configured scope.", + "description": "Enables the set_size_constraints command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-max-size" - ] + "const": "core:window:allow-set-size-constraints" }, { - "description": "core:window:allow-set-maximizable -> Enables the set_maximizable command without any pre-configured scope.", + "description": "Enables the set_skip_taskbar command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-maximizable" - ] + "const": "core:window:allow-set-skip-taskbar" }, { - "description": "core:window:allow-set-min-size -> Enables the set_min_size command without any pre-configured scope.", + "description": "Enables the set_theme command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-min-size" - ] + "const": "core:window:allow-set-theme" }, { - "description": "core:window:allow-set-minimizable -> Enables the set_minimizable command without any pre-configured scope.", + "description": "Enables the set_title command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-minimizable" - ] + "const": "core:window:allow-set-title" }, { - "description": "core:window:allow-set-position -> Enables the set_position command without any pre-configured scope.", + "description": "Enables the set_title_bar_style command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-position" - ] + "const": "core:window:allow-set-title-bar-style" }, { - "description": "core:window:allow-set-progress-bar -> Enables the set_progress_bar command without any pre-configured scope.", + "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-progress-bar" - ] + "const": "core:window:allow-set-visible-on-all-workspaces" }, { - "description": "core:window:allow-set-resizable -> Enables the set_resizable command without any pre-configured scope.", + "description": "Enables the show command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-resizable" - ] + "const": "core:window:allow-show" }, { - "description": "core:window:allow-set-shadow -> Enables the set_shadow command without any pre-configured scope.", + "description": "Enables the start_dragging command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-shadow" - ] + "const": "core:window:allow-start-dragging" }, { - "description": "core:window:allow-set-size -> Enables the set_size command without any pre-configured scope.", + "description": "Enables the start_resize_dragging command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-size" - ] + "const": "core:window:allow-start-resize-dragging" }, { - "description": "core:window:allow-set-size-constraints -> Enables the set_size_constraints command without any pre-configured scope.", + "description": "Enables the theme command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-size-constraints" - ] + "const": "core:window:allow-theme" }, { - "description": "core:window:allow-set-skip-taskbar -> Enables the set_skip_taskbar command without any pre-configured scope.", + "description": "Enables the title command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-skip-taskbar" - ] + "const": "core:window:allow-title" }, { - "description": "core:window:allow-set-title -> Enables the set_title command without any pre-configured scope.", + "description": "Enables the toggle_maximize command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-title" - ] + "const": "core:window:allow-toggle-maximize" }, { - "description": "core:window:allow-set-title-bar-style -> Enables the set_title_bar_style command without any pre-configured scope.", + "description": "Enables the unmaximize command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-title-bar-style" - ] + "const": "core:window:allow-unmaximize" }, { - "description": "core:window:allow-set-visible-on-all-workspaces -> Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "description": "Enables the unminimize command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-set-visible-on-all-workspaces" - ] + "const": "core:window:allow-unminimize" }, { - "description": "core:window:allow-show -> Enables the show command without any pre-configured scope.", + "description": "Denies the available_monitors command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-show" - ] + "const": "core:window:deny-available-monitors" }, { - "description": "core:window:allow-start-dragging -> Enables the start_dragging command without any pre-configured scope.", + "description": "Denies the center command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-start-dragging" - ] + "const": "core:window:deny-center" }, { - "description": "core:window:allow-start-resize-dragging -> Enables the start_resize_dragging command without any pre-configured scope.", + "description": "Denies the close command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-start-resize-dragging" - ] + "const": "core:window:deny-close" }, { - "description": "core:window:allow-theme -> Enables the theme command without any pre-configured scope.", + "description": "Denies the create command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-theme" - ] + "const": "core:window:deny-create" }, { - "description": "core:window:allow-title -> Enables the title command without any pre-configured scope.", + "description": "Denies the current_monitor command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-title" - ] + "const": "core:window:deny-current-monitor" }, { - "description": "core:window:allow-toggle-maximize -> Enables the toggle_maximize command without any pre-configured scope.", + "description": "Denies the cursor_position command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-toggle-maximize" - ] + "const": "core:window:deny-cursor-position" }, { - "description": "core:window:allow-unmaximize -> Enables the unmaximize command without any pre-configured scope.", + "description": "Denies the destroy command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-unmaximize" - ] + "const": "core:window:deny-destroy" }, { - "description": "core:window:allow-unminimize -> Enables the unminimize command without any pre-configured scope.", + "description": "Denies the get_all_windows command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:allow-unminimize" - ] + "const": "core:window:deny-get-all-windows" }, { - "description": "core:window:deny-available-monitors -> Denies the available_monitors command without any pre-configured scope.", + "description": "Denies the hide command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-available-monitors" - ] + "const": "core:window:deny-hide" }, { - "description": "core:window:deny-center -> Denies the center command without any pre-configured scope.", + "description": "Denies the inner_position command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-center" - ] + "const": "core:window:deny-inner-position" }, { - "description": "core:window:deny-close -> Denies the close command without any pre-configured scope.", + "description": "Denies the inner_size command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-close" - ] + "const": "core:window:deny-inner-size" }, { - "description": "core:window:deny-create -> Denies the create command without any pre-configured scope.", + "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-create" - ] + "const": "core:window:deny-internal-toggle-maximize" }, { - "description": "core:window:deny-current-monitor -> Denies the current_monitor command without any pre-configured scope.", + "description": "Denies the is_closable command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-current-monitor" - ] + "const": "core:window:deny-is-closable" }, { - "description": "core:window:deny-cursor-position -> Denies the cursor_position command without any pre-configured scope.", + "description": "Denies the is_decorated command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-cursor-position" - ] + "const": "core:window:deny-is-decorated" }, { - "description": "core:window:deny-destroy -> Denies the destroy command without any pre-configured scope.", + "description": "Denies the is_enabled command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-destroy" - ] + "const": "core:window:deny-is-enabled" }, { - "description": "core:window:deny-get-all-windows -> Denies the get_all_windows command without any pre-configured scope.", + "description": "Denies the is_focused command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-get-all-windows" - ] + "const": "core:window:deny-is-focused" }, { - "description": "core:window:deny-hide -> Denies the hide command without any pre-configured scope.", + "description": "Denies the is_fullscreen command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-hide" - ] + "const": "core:window:deny-is-fullscreen" }, { - "description": "core:window:deny-inner-position -> Denies the inner_position command without any pre-configured scope.", + "description": "Denies the is_maximizable command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-inner-position" - ] + "const": "core:window:deny-is-maximizable" }, { - "description": "core:window:deny-inner-size -> Denies the inner_size command without any pre-configured scope.", + "description": "Denies the is_maximized command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-inner-size" - ] + "const": "core:window:deny-is-maximized" }, { - "description": "core:window:deny-internal-toggle-maximize -> Denies the internal_toggle_maximize command without any pre-configured scope.", + "description": "Denies the is_minimizable command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-internal-toggle-maximize" - ] + "const": "core:window:deny-is-minimizable" }, { - "description": "core:window:deny-is-closable -> Denies the is_closable command without any pre-configured scope.", + "description": "Denies the is_minimized command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-is-closable" - ] + "const": "core:window:deny-is-minimized" }, { - "description": "core:window:deny-is-decorated -> Denies the is_decorated command without any pre-configured scope.", + "description": "Denies the is_resizable command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-is-decorated" - ] + "const": "core:window:deny-is-resizable" }, { - "description": "core:window:deny-is-focused -> Denies the is_focused command without any pre-configured scope.", + "description": "Denies the is_visible command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-is-focused" - ] + "const": "core:window:deny-is-visible" }, { - "description": "core:window:deny-is-fullscreen -> Denies the is_fullscreen command without any pre-configured scope.", + "description": "Denies the maximize command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-is-fullscreen" - ] + "const": "core:window:deny-maximize" }, { - "description": "core:window:deny-is-maximizable -> Denies the is_maximizable command without any pre-configured scope.", + "description": "Denies the minimize command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-is-maximizable" - ] + "const": "core:window:deny-minimize" }, { - "description": "core:window:deny-is-maximized -> Denies the is_maximized command without any pre-configured scope.", + "description": "Denies the monitor_from_point command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-is-maximized" - ] + "const": "core:window:deny-monitor-from-point" }, { - "description": "core:window:deny-is-minimizable -> Denies the is_minimizable command without any pre-configured scope.", + "description": "Denies the outer_position command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-is-minimizable" - ] + "const": "core:window:deny-outer-position" }, { - "description": "core:window:deny-is-minimized -> Denies the is_minimized command without any pre-configured scope.", + "description": "Denies the outer_size command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-is-minimized" - ] + "const": "core:window:deny-outer-size" }, { - "description": "core:window:deny-is-resizable -> Denies the is_resizable command without any pre-configured scope.", + "description": "Denies the primary_monitor command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-is-resizable" - ] + "const": "core:window:deny-primary-monitor" }, { - "description": "core:window:deny-is-visible -> Denies the is_visible command without any pre-configured scope.", + "description": "Denies the request_user_attention command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-is-visible" - ] + "const": "core:window:deny-request-user-attention" }, { - "description": "core:window:deny-maximize -> Denies the maximize command without any pre-configured scope.", + "description": "Denies the scale_factor command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-maximize" - ] + "const": "core:window:deny-scale-factor" }, { - "description": "core:window:deny-minimize -> Denies the minimize command without any pre-configured scope.", + "description": "Denies the set_always_on_bottom command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-minimize" - ] + "const": "core:window:deny-set-always-on-bottom" }, { - "description": "core:window:deny-monitor-from-point -> Denies the monitor_from_point command without any pre-configured scope.", + "description": "Denies the set_always_on_top command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-monitor-from-point" - ] + "const": "core:window:deny-set-always-on-top" }, { - "description": "core:window:deny-outer-position -> Denies the outer_position command without any pre-configured scope.", + "description": "Denies the set_closable command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-outer-position" - ] + "const": "core:window:deny-set-closable" }, { - "description": "core:window:deny-outer-size -> Denies the outer_size command without any pre-configured scope.", + "description": "Denies the set_content_protected command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-outer-size" - ] + "const": "core:window:deny-set-content-protected" }, { - "description": "core:window:deny-primary-monitor -> Denies the primary_monitor command without any pre-configured scope.", + "description": "Denies the set_cursor_grab command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-primary-monitor" - ] + "const": "core:window:deny-set-cursor-grab" }, { - "description": "core:window:deny-request-user-attention -> Denies the request_user_attention command without any pre-configured scope.", + "description": "Denies the set_cursor_icon command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-request-user-attention" - ] + "const": "core:window:deny-set-cursor-icon" }, { - "description": "core:window:deny-scale-factor -> Denies the scale_factor command without any pre-configured scope.", + "description": "Denies the set_cursor_position command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-scale-factor" - ] + "const": "core:window:deny-set-cursor-position" }, { - "description": "core:window:deny-set-always-on-bottom -> Denies the set_always_on_bottom command without any pre-configured scope.", + "description": "Denies the set_cursor_visible command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-always-on-bottom" - ] + "const": "core:window:deny-set-cursor-visible" }, { - "description": "core:window:deny-set-always-on-top -> Denies the set_always_on_top command without any pre-configured scope.", + "description": "Denies the set_decorations command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-always-on-top" - ] + "const": "core:window:deny-set-decorations" }, { - "description": "core:window:deny-set-closable -> Denies the set_closable command without any pre-configured scope.", + "description": "Denies the set_effects command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-closable" - ] + "const": "core:window:deny-set-effects" }, { - "description": "core:window:deny-set-content-protected -> Denies the set_content_protected command without any pre-configured scope.", + "description": "Denies the set_enabled command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-content-protected" - ] + "const": "core:window:deny-set-enabled" }, { - "description": "core:window:deny-set-cursor-grab -> Denies the set_cursor_grab command without any pre-configured scope.", + "description": "Denies the set_focus command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-cursor-grab" - ] + "const": "core:window:deny-set-focus" }, { - "description": "core:window:deny-set-cursor-icon -> Denies the set_cursor_icon command without any pre-configured scope.", + "description": "Denies the set_fullscreen command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-cursor-icon" - ] + "const": "core:window:deny-set-fullscreen" }, { - "description": "core:window:deny-set-cursor-position -> Denies the set_cursor_position command without any pre-configured scope.", + "description": "Denies the set_icon command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-cursor-position" - ] + "const": "core:window:deny-set-icon" }, { - "description": "core:window:deny-set-cursor-visible -> Denies the set_cursor_visible command without any pre-configured scope.", + "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-cursor-visible" - ] + "const": "core:window:deny-set-ignore-cursor-events" }, { - "description": "core:window:deny-set-decorations -> Denies the set_decorations command without any pre-configured scope.", + "description": "Denies the set_max_size command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-decorations" - ] + "const": "core:window:deny-set-max-size" }, { - "description": "core:window:deny-set-effects -> Denies the set_effects command without any pre-configured scope.", + "description": "Denies the set_maximizable command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-effects" - ] + "const": "core:window:deny-set-maximizable" }, { - "description": "core:window:deny-set-focus -> Denies the set_focus command without any pre-configured scope.", + "description": "Denies the set_min_size command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-focus" - ] + "const": "core:window:deny-set-min-size" }, { - "description": "core:window:deny-set-fullscreen -> Denies the set_fullscreen command without any pre-configured scope.", + "description": "Denies the set_minimizable command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-fullscreen" - ] + "const": "core:window:deny-set-minimizable" }, { - "description": "core:window:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "description": "Denies the set_position command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-icon" - ] + "const": "core:window:deny-set-position" }, { - "description": "core:window:deny-set-ignore-cursor-events -> Denies the set_ignore_cursor_events command without any pre-configured scope.", + "description": "Denies the set_progress_bar command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-ignore-cursor-events" - ] + "const": "core:window:deny-set-progress-bar" }, { - "description": "core:window:deny-set-max-size -> Denies the set_max_size command without any pre-configured scope.", + "description": "Denies the set_resizable command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-max-size" - ] + "const": "core:window:deny-set-resizable" }, { - "description": "core:window:deny-set-maximizable -> Denies the set_maximizable command without any pre-configured scope.", + "description": "Denies the set_shadow command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-maximizable" - ] + "const": "core:window:deny-set-shadow" }, { - "description": "core:window:deny-set-min-size -> Denies the set_min_size command without any pre-configured scope.", + "description": "Denies the set_size command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-min-size" - ] + "const": "core:window:deny-set-size" }, { - "description": "core:window:deny-set-minimizable -> Denies the set_minimizable command without any pre-configured scope.", + "description": "Denies the set_size_constraints command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-minimizable" - ] + "const": "core:window:deny-set-size-constraints" }, { - "description": "core:window:deny-set-position -> Denies the set_position command without any pre-configured scope.", + "description": "Denies the set_skip_taskbar command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-position" - ] + "const": "core:window:deny-set-skip-taskbar" }, { - "description": "core:window:deny-set-progress-bar -> Denies the set_progress_bar command without any pre-configured scope.", + "description": "Denies the set_theme command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-progress-bar" - ] + "const": "core:window:deny-set-theme" }, { - "description": "core:window:deny-set-resizable -> Denies the set_resizable command without any pre-configured scope.", + "description": "Denies the set_title command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-resizable" - ] + "const": "core:window:deny-set-title" }, { - "description": "core:window:deny-set-shadow -> Denies the set_shadow command without any pre-configured scope.", + "description": "Denies the set_title_bar_style command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-shadow" - ] + "const": "core:window:deny-set-title-bar-style" }, { - "description": "core:window:deny-set-size -> Denies the set_size command without any pre-configured scope.", + "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-size" - ] + "const": "core:window:deny-set-visible-on-all-workspaces" }, { - "description": "core:window:deny-set-size-constraints -> Denies the set_size_constraints command without any pre-configured scope.", + "description": "Denies the show command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-size-constraints" - ] + "const": "core:window:deny-show" }, { - "description": "core:window:deny-set-skip-taskbar -> Denies the set_skip_taskbar command without any pre-configured scope.", + "description": "Denies the start_dragging command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-skip-taskbar" - ] + "const": "core:window:deny-start-dragging" }, { - "description": "core:window:deny-set-title -> Denies the set_title command without any pre-configured scope.", + "description": "Denies the start_resize_dragging command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-title" - ] + "const": "core:window:deny-start-resize-dragging" }, { - "description": "core:window:deny-set-title-bar-style -> Denies the set_title_bar_style command without any pre-configured scope.", + "description": "Denies the theme command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-title-bar-style" - ] + "const": "core:window:deny-theme" }, { - "description": "core:window:deny-set-visible-on-all-workspaces -> Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "description": "Denies the title command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-set-visible-on-all-workspaces" - ] + "const": "core:window:deny-title" }, { - "description": "core:window:deny-show -> Denies the show command without any pre-configured scope.", + "description": "Denies the toggle_maximize command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-show" - ] + "const": "core:window:deny-toggle-maximize" }, { - "description": "core:window:deny-start-dragging -> Denies the start_dragging command without any pre-configured scope.", + "description": "Denies the unmaximize command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-start-dragging" - ] + "const": "core:window:deny-unmaximize" }, { - "description": "core:window:deny-start-resize-dragging -> Denies the start_resize_dragging command without any pre-configured scope.", + "description": "Denies the unminimize command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-start-resize-dragging" - ] + "const": "core:window:deny-unminimize" }, { - "description": "core:window:deny-theme -> Denies the theme command without any pre-configured scope.", + "description": "Allows reading the opened deep link via the get_current command", "type": "string", - "enum": [ - "core:window:deny-theme" - ] + "const": "deep-link:default" }, { - "description": "core:window:deny-title -> Denies the title command without any pre-configured scope.", + "description": "Enables the get_current command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-title" - ] + "const": "deep-link:allow-get-current" }, { - "description": "core:window:deny-toggle-maximize -> Denies the toggle_maximize command without any pre-configured scope.", + "description": "Enables the is_registered command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-toggle-maximize" - ] + "const": "deep-link:allow-is-registered" }, { - "description": "core:window:deny-unmaximize -> Denies the unmaximize command without any pre-configured scope.", + "description": "Enables the register command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-unmaximize" - ] + "const": "deep-link:allow-register" }, { - "description": "core:window:deny-unminimize -> Denies the unminimize command without any pre-configured scope.", + "description": "Enables the unregister command without any pre-configured scope.", "type": "string", - "enum": [ - "core:window:deny-unminimize" - ] + "const": "deep-link:allow-unregister" }, { - "description": "deep-link:default -> Allows reading the opened deep link via the get_current command", + "description": "Denies the get_current command without any pre-configured scope.", "type": "string", - "enum": [ - "deep-link:default" - ] + "const": "deep-link:deny-get-current" }, { - "description": "deep-link:allow-get-current -> Enables the get_current command without any pre-configured scope.", + "description": "Denies the is_registered command without any pre-configured scope.", "type": "string", - "enum": [ - "deep-link:allow-get-current" - ] + "const": "deep-link:deny-is-registered" }, { - "description": "deep-link:allow-is-registered -> Enables the is_registered command without any pre-configured scope.", + "description": "Denies the register command without any pre-configured scope.", "type": "string", - "enum": [ - "deep-link:allow-is-registered" - ] + "const": "deep-link:deny-register" }, { - "description": "deep-link:allow-register -> Enables the register command without any pre-configured scope.", + "description": "Denies the unregister command without any pre-configured scope.", "type": "string", - "enum": [ - "deep-link:allow-register" - ] + "const": "deep-link:deny-unregister" }, { - "description": "deep-link:allow-unregister -> Enables the unregister command without any pre-configured scope.", + "description": "This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n", "type": "string", - "enum": [ - "deep-link:allow-unregister" - ] + "const": "dialog:default" }, { - "description": "deep-link:deny-get-current -> Denies the get_current command without any pre-configured scope.", + "description": "Enables the ask command without any pre-configured scope.", "type": "string", - "enum": [ - "deep-link:deny-get-current" - ] + "const": "dialog:allow-ask" }, { - "description": "deep-link:deny-is-registered -> Denies the is_registered command without any pre-configured scope.", + "description": "Enables the confirm command without any pre-configured scope.", "type": "string", - "enum": [ - "deep-link:deny-is-registered" - ] + "const": "dialog:allow-confirm" }, { - "description": "deep-link:deny-register -> Denies the register command without any pre-configured scope.", + "description": "Enables the message command without any pre-configured scope.", "type": "string", - "enum": [ - "deep-link:deny-register" - ] + "const": "dialog:allow-message" }, { - "description": "deep-link:deny-unregister -> Denies the unregister command without any pre-configured scope.", + "description": "Enables the open command without any pre-configured scope.", "type": "string", - "enum": [ - "deep-link:deny-unregister" - ] + "const": "dialog:allow-open" }, { - "description": "dialog:default -> This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n", + "description": "Enables the save command without any pre-configured scope.", "type": "string", - "enum": [ - "dialog:default" - ] + "const": "dialog:allow-save" }, { - "description": "dialog:allow-ask -> Enables the ask command without any pre-configured scope.", + "description": "Denies the ask command without any pre-configured scope.", "type": "string", - "enum": [ - "dialog:allow-ask" - ] + "const": "dialog:deny-ask" }, { - "description": "dialog:allow-confirm -> Enables the confirm command without any pre-configured scope.", + "description": "Denies the confirm command without any pre-configured scope.", "type": "string", - "enum": [ - "dialog:allow-confirm" - ] + "const": "dialog:deny-confirm" }, { - "description": "dialog:allow-message -> Enables the message command without any pre-configured scope.", + "description": "Denies the message command without any pre-configured scope.", "type": "string", - "enum": [ - "dialog:allow-message" - ] + "const": "dialog:deny-message" }, { - "description": "dialog:allow-open -> Enables the open command without any pre-configured scope.", + "description": "Denies the open command without any pre-configured scope.", "type": "string", - "enum": [ - "dialog:allow-open" - ] + "const": "dialog:deny-open" }, { - "description": "dialog:allow-save -> Enables the save command without any pre-configured scope.", + "description": "Denies the save command without any pre-configured scope.", "type": "string", - "enum": [ - "dialog:allow-save" - ] + "const": "dialog:deny-save" }, { - "description": "dialog:deny-ask -> Denies the ask command without any pre-configured scope.", + "description": "Default plugin permissions.", "type": "string", - "enum": [ - "dialog:deny-ask" - ] + "const": "import:default" }, { - "description": "dialog:deny-confirm -> Denies the confirm command without any pre-configured scope.", + "description": "Enables the get_default_launcher_path command without any pre-configured scope.", "type": "string", - "enum": [ - "dialog:deny-confirm" - ] + "const": "import:allow-get-default-launcher-path" }, { - "description": "dialog:deny-message -> Denies the message command without any pre-configured scope.", + "description": "Enables the get_importable_instances command without any pre-configured scope.", "type": "string", - "enum": [ - "dialog:deny-message" - ] + "const": "import:allow-get-importable-instances" }, { - "description": "dialog:deny-open -> Denies the open command without any pre-configured scope.", + "description": "Enables the import_instance command without any pre-configured scope.", "type": "string", - "enum": [ - "dialog:deny-open" - ] + "const": "import:allow-import-instance" }, { - "description": "dialog:deny-save -> Denies the save command without any pre-configured scope.", + "description": "Enables the is_valid_importable_instance command without any pre-configured scope.", "type": "string", - "enum": [ - "dialog:deny-save" - ] + "const": "import:allow-is-valid-importable-instance" }, { - "description": "import:default -> Default plugin permissions.", + "description": "Denies the get_default_launcher_path command without any pre-configured scope.", "type": "string", - "enum": [ - "import:default" - ] + "const": "import:deny-get-default-launcher-path" }, { - "description": "import:allow-get-default-launcher-path -> Enables the get_default_launcher_path command without any pre-configured scope.", + "description": "Denies the get_importable_instances command without any pre-configured scope.", "type": "string", - "enum": [ - "import:allow-get-default-launcher-path" - ] + "const": "import:deny-get-importable-instances" }, { - "description": "import:allow-get-importable-instances -> Enables the get_importable_instances command without any pre-configured scope.", + "description": "Denies the import_instance command without any pre-configured scope.", "type": "string", - "enum": [ - "import:allow-get-importable-instances" - ] + "const": "import:deny-import-instance" }, { - "description": "import:allow-import-instance -> Enables the import_instance command without any pre-configured scope.", + "description": "Denies the is_valid_importable_instance command without any pre-configured scope.", "type": "string", - "enum": [ - "import:allow-import-instance" - ] + "const": "import:deny-is-valid-importable-instance" }, { - "description": "import:allow-is-valid-importable-instance -> Enables the is_valid_importable_instance command without any pre-configured scope.", + "description": "Default plugin permissions.", "type": "string", - "enum": [ - "import:allow-is-valid-importable-instance" - ] + "const": "jre:default" }, { - "description": "import:deny-get-default-launcher-path -> Denies the get_default_launcher_path command without any pre-configured scope.", + "description": "Enables the get_java_versions command without any pre-configured scope.", "type": "string", - "enum": [ - "import:deny-get-default-launcher-path" - ] + "const": "jre:allow-get-java-versions" }, { - "description": "import:deny-get-importable-instances -> Denies the get_importable_instances command without any pre-configured scope.", + "description": "Enables the jre_auto_install_java command without any pre-configured scope.", "type": "string", - "enum": [ - "import:deny-get-importable-instances" - ] + "const": "jre:allow-jre-auto-install-java" }, { - "description": "import:deny-import-instance -> Denies the import_instance command without any pre-configured scope.", + "description": "Enables the jre_find_filtered_jres command without any pre-configured scope.", "type": "string", - "enum": [ - "import:deny-import-instance" - ] + "const": "jre:allow-jre-find-filtered-jres" }, { - "description": "import:deny-is-valid-importable-instance -> Denies the is_valid_importable_instance command without any pre-configured scope.", + "description": "Enables the jre_get_jre command without any pre-configured scope.", "type": "string", - "enum": [ - "import:deny-is-valid-importable-instance" - ] + "const": "jre:allow-jre-get-jre" }, { - "description": "jre:default -> Default plugin permissions.", + "description": "Enables the jre_get_max_memory command without any pre-configured scope.", "type": "string", - "enum": [ - "jre:default" - ] + "const": "jre:allow-jre-get-max-memory" }, { - "description": "jre:allow-get-java-versions -> Enables the get_java_versions command without any pre-configured scope.", + "description": "Enables the jre_test_jre command without any pre-configured scope.", "type": "string", - "enum": [ - "jre:allow-get-java-versions" - ] + "const": "jre:allow-jre-test-jre" }, { - "description": "jre:allow-jre-auto-install-java -> Enables the jre_auto_install_java command without any pre-configured scope.", + "description": "Enables the set_java_version command without any pre-configured scope.", "type": "string", - "enum": [ - "jre:allow-jre-auto-install-java" - ] + "const": "jre:allow-set-java-version" }, { - "description": "jre:allow-jre-find-filtered-jres -> Enables the jre_find_filtered_jres command without any pre-configured scope.", + "description": "Denies the get_java_versions command without any pre-configured scope.", "type": "string", - "enum": [ - "jre:allow-jre-find-filtered-jres" - ] + "const": "jre:deny-get-java-versions" }, { - "description": "jre:allow-jre-get-jre -> Enables the jre_get_jre command without any pre-configured scope.", + "description": "Denies the jre_auto_install_java command without any pre-configured scope.", "type": "string", - "enum": [ - "jre:allow-jre-get-jre" - ] + "const": "jre:deny-jre-auto-install-java" }, { - "description": "jre:allow-jre-get-max-memory -> Enables the jre_get_max_memory command without any pre-configured scope.", + "description": "Denies the jre_find_filtered_jres command without any pre-configured scope.", "type": "string", - "enum": [ - "jre:allow-jre-get-max-memory" - ] + "const": "jre:deny-jre-find-filtered-jres" }, { - "description": "jre:allow-jre-test-jre -> Enables the jre_test_jre command without any pre-configured scope.", + "description": "Denies the jre_get_jre command without any pre-configured scope.", "type": "string", - "enum": [ - "jre:allow-jre-test-jre" - ] + "const": "jre:deny-jre-get-jre" }, { - "description": "jre:allow-set-java-version -> Enables the set_java_version command without any pre-configured scope.", + "description": "Denies the jre_get_max_memory command without any pre-configured scope.", "type": "string", - "enum": [ - "jre:allow-set-java-version" - ] + "const": "jre:deny-jre-get-max-memory" }, { - "description": "jre:deny-get-java-versions -> Denies the get_java_versions command without any pre-configured scope.", + "description": "Denies the jre_test_jre command without any pre-configured scope.", "type": "string", - "enum": [ - "jre:deny-get-java-versions" - ] + "const": "jre:deny-jre-test-jre" }, { - "description": "jre:deny-jre-auto-install-java -> Denies the jre_auto_install_java command without any pre-configured scope.", + "description": "Denies the set_java_version command without any pre-configured scope.", "type": "string", - "enum": [ - "jre:deny-jre-auto-install-java" - ] + "const": "jre:deny-set-java-version" }, { - "description": "jre:deny-jre-find-filtered-jres -> Denies the jre_find_filtered_jres command without any pre-configured scope.", + "description": "Default plugin permissions.", "type": "string", - "enum": [ - "jre:deny-jre-find-filtered-jres" - ] + "const": "logs:default" }, { - "description": "jre:deny-jre-get-jre -> Denies the jre_get_jre command without any pre-configured scope.", + "description": "Enables the logs_delete_logs command without any pre-configured scope.", "type": "string", - "enum": [ - "jre:deny-jre-get-jre" - ] + "const": "logs:allow-logs-delete-logs" }, { - "description": "jre:deny-jre-get-max-memory -> Denies the jre_get_max_memory command without any pre-configured scope.", + "description": "Enables the logs_delete_logs_by_filename command without any pre-configured scope.", "type": "string", - "enum": [ - "jre:deny-jre-get-max-memory" - ] + "const": "logs:allow-logs-delete-logs-by-filename" }, { - "description": "jre:deny-jre-test-jre -> Denies the jre_test_jre command without any pre-configured scope.", + "description": "Enables the logs_get_latest_log_cursor command without any pre-configured scope.", "type": "string", - "enum": [ - "jre:deny-jre-test-jre" - ] + "const": "logs:allow-logs-get-latest-log-cursor" }, { - "description": "jre:deny-set-java-version -> Denies the set_java_version command without any pre-configured scope.", + "description": "Enables the logs_get_logs command without any pre-configured scope.", "type": "string", - "enum": [ - "jre:deny-set-java-version" - ] + "const": "logs:allow-logs-get-logs" }, { - "description": "logs:default -> Default plugin permissions.", + "description": "Enables the logs_get_logs_by_filename command without any pre-configured scope.", "type": "string", - "enum": [ - "logs:default" - ] + "const": "logs:allow-logs-get-logs-by-filename" }, { - "description": "logs:allow-logs-delete-logs -> Enables the logs_delete_logs command without any pre-configured scope.", + "description": "Enables the logs_get_output_by_filename command without any pre-configured scope.", "type": "string", - "enum": [ - "logs:allow-logs-delete-logs" - ] + "const": "logs:allow-logs-get-output-by-filename" }, { - "description": "logs:allow-logs-delete-logs-by-filename -> Enables the logs_delete_logs_by_filename command without any pre-configured scope.", + "description": "Denies the logs_delete_logs command without any pre-configured scope.", "type": "string", - "enum": [ - "logs:allow-logs-delete-logs-by-filename" - ] + "const": "logs:deny-logs-delete-logs" }, { - "description": "logs:allow-logs-get-latest-log-cursor -> Enables the logs_get_latest_log_cursor command without any pre-configured scope.", + "description": "Denies the logs_delete_logs_by_filename command without any pre-configured scope.", "type": "string", - "enum": [ - "logs:allow-logs-get-latest-log-cursor" - ] + "const": "logs:deny-logs-delete-logs-by-filename" }, { - "description": "logs:allow-logs-get-logs -> Enables the logs_get_logs command without any pre-configured scope.", + "description": "Denies the logs_get_latest_log_cursor command without any pre-configured scope.", "type": "string", - "enum": [ - "logs:allow-logs-get-logs" - ] + "const": "logs:deny-logs-get-latest-log-cursor" }, { - "description": "logs:allow-logs-get-logs-by-filename -> Enables the logs_get_logs_by_filename command without any pre-configured scope.", + "description": "Denies the logs_get_logs command without any pre-configured scope.", "type": "string", - "enum": [ - "logs:allow-logs-get-logs-by-filename" - ] + "const": "logs:deny-logs-get-logs" }, { - "description": "logs:allow-logs-get-output-by-filename -> Enables the logs_get_output_by_filename command without any pre-configured scope.", + "description": "Denies the logs_get_logs_by_filename command without any pre-configured scope.", "type": "string", - "enum": [ - "logs:allow-logs-get-output-by-filename" - ] + "const": "logs:deny-logs-get-logs-by-filename" }, { - "description": "logs:deny-logs-delete-logs -> Denies the logs_delete_logs command without any pre-configured scope.", + "description": "Denies the logs_get_output_by_filename command without any pre-configured scope.", "type": "string", - "enum": [ - "logs:deny-logs-delete-logs" - ] + "const": "logs:deny-logs-get-output-by-filename" }, { - "description": "logs:deny-logs-delete-logs-by-filename -> Denies the logs_delete_logs_by_filename command without any pre-configured scope.", + "description": "Default plugin permissions.", "type": "string", - "enum": [ - "logs:deny-logs-delete-logs-by-filename" - ] + "const": "metadata:default" }, { - "description": "logs:deny-logs-get-latest-log-cursor -> Denies the logs_get_latest_log_cursor command without any pre-configured scope.", + "description": "Enables the metadata_get_game_versions command without any pre-configured scope.", "type": "string", - "enum": [ - "logs:deny-logs-get-latest-log-cursor" - ] + "const": "metadata:allow-metadata-get-game-versions" }, { - "description": "logs:deny-logs-get-logs -> Denies the logs_get_logs command without any pre-configured scope.", + "description": "Enables the metadata_get_loader_versions command without any pre-configured scope.", "type": "string", - "enum": [ - "logs:deny-logs-get-logs" - ] + "const": "metadata:allow-metadata-get-loader-versions" }, { - "description": "logs:deny-logs-get-logs-by-filename -> Denies the logs_get_logs_by_filename command without any pre-configured scope.", + "description": "Denies the metadata_get_game_versions command without any pre-configured scope.", "type": "string", - "enum": [ - "logs:deny-logs-get-logs-by-filename" - ] + "const": "metadata:deny-metadata-get-game-versions" }, { - "description": "logs:deny-logs-get-output-by-filename -> Denies the logs_get_output_by_filename command without any pre-configured scope.", + "description": "Denies the metadata_get_loader_versions command without any pre-configured scope.", "type": "string", - "enum": [ - "logs:deny-logs-get-output-by-filename" - ] + "const": "metadata:deny-metadata-get-loader-versions" }, { - "description": "metadata:default -> Default plugin permissions.", + "description": "Default plugin permissions.", "type": "string", - "enum": [ - "metadata:default" - ] + "const": "mr-auth:default" }, { - "description": "metadata:allow-metadata-get-game-versions -> Enables the metadata_get_game_versions command without any pre-configured scope.", + "description": "Enables the create_account command without any pre-configured scope.", "type": "string", - "enum": [ - "metadata:allow-metadata-get-game-versions" - ] + "const": "mr-auth:allow-create-account" }, { - "description": "metadata:allow-metadata-get-loader-versions -> Enables the metadata_get_loader_versions command without any pre-configured scope.", + "description": "Enables the get command without any pre-configured scope.", "type": "string", - "enum": [ - "metadata:allow-metadata-get-loader-versions" - ] + "const": "mr-auth:allow-get" }, { - "description": "metadata:deny-metadata-get-game-versions -> Denies the metadata_get_game_versions command without any pre-configured scope.", + "description": "Enables the login_2fa command without any pre-configured scope.", "type": "string", - "enum": [ - "metadata:deny-metadata-get-game-versions" - ] + "const": "mr-auth:allow-login-2fa" }, { - "description": "metadata:deny-metadata-get-loader-versions -> Denies the metadata_get_loader_versions command without any pre-configured scope.", + "description": "Enables the login_pass command without any pre-configured scope.", "type": "string", - "enum": [ - "metadata:deny-metadata-get-loader-versions" - ] + "const": "mr-auth:allow-login-pass" }, { - "description": "mr-auth:default -> Default plugin permissions.", + "description": "Enables the logout command without any pre-configured scope.", "type": "string", - "enum": [ - "mr-auth:default" - ] + "const": "mr-auth:allow-logout" }, { - "description": "mr-auth:allow-create-account -> Enables the create_account command without any pre-configured scope.", + "description": "Denies the create_account command without any pre-configured scope.", "type": "string", - "enum": [ - "mr-auth:allow-create-account" - ] + "const": "mr-auth:deny-create-account" }, { - "description": "mr-auth:allow-get -> Enables the get command without any pre-configured scope.", + "description": "Denies the get command without any pre-configured scope.", "type": "string", - "enum": [ - "mr-auth:allow-get" - ] + "const": "mr-auth:deny-get" }, { - "description": "mr-auth:allow-login-2fa -> Enables the login_2fa command without any pre-configured scope.", + "description": "Denies the login_2fa command without any pre-configured scope.", "type": "string", - "enum": [ - "mr-auth:allow-login-2fa" - ] + "const": "mr-auth:deny-login-2fa" }, { - "description": "mr-auth:allow-login-pass -> Enables the login_pass command without any pre-configured scope.", + "description": "Denies the login_pass command without any pre-configured scope.", "type": "string", - "enum": [ - "mr-auth:allow-login-pass" - ] + "const": "mr-auth:deny-login-pass" }, { - "description": "mr-auth:allow-logout -> Enables the logout command without any pre-configured scope.", + "description": "Denies the logout command without any pre-configured scope.", "type": "string", - "enum": [ - "mr-auth:allow-logout" - ] + "const": "mr-auth:deny-logout" }, { - "description": "mr-auth:deny-create-account -> Denies the create_account command without any pre-configured scope.", + "description": "This permission set configures which\noperating system information are available\nto gather from the frontend.\n\n#### Granted Permissions\n\nAll information except the host name are available.\n\n", "type": "string", - "enum": [ - "mr-auth:deny-create-account" - ] + "const": "os:default" }, { - "description": "mr-auth:deny-get -> Denies the get command without any pre-configured scope.", + "description": "Enables the arch command without any pre-configured scope.", "type": "string", - "enum": [ - "mr-auth:deny-get" - ] + "const": "os:allow-arch" }, { - "description": "mr-auth:deny-login-2fa -> Denies the login_2fa command without any pre-configured scope.", + "description": "Enables the exe_extension command without any pre-configured scope.", "type": "string", - "enum": [ - "mr-auth:deny-login-2fa" - ] + "const": "os:allow-exe-extension" }, { - "description": "mr-auth:deny-login-pass -> Denies the login_pass command without any pre-configured scope.", + "description": "Enables the family command without any pre-configured scope.", "type": "string", - "enum": [ - "mr-auth:deny-login-pass" - ] + "const": "os:allow-family" }, { - "description": "mr-auth:deny-logout -> Denies the logout command without any pre-configured scope.", + "description": "Enables the hostname command without any pre-configured scope.", "type": "string", - "enum": [ - "mr-auth:deny-logout" - ] + "const": "os:allow-hostname" }, { - "description": "os:default -> This permission set configures which\noperating system information are available\nto gather from the frontend.\n\n#### Granted Permissions\n\nAll information except the host name are available.\n\n", + "description": "Enables the locale command without any pre-configured scope.", "type": "string", - "enum": [ - "os:default" - ] + "const": "os:allow-locale" }, { - "description": "os:allow-arch -> Enables the arch command without any pre-configured scope.", + "description": "Enables the os_type command without any pre-configured scope.", "type": "string", - "enum": [ - "os:allow-arch" - ] + "const": "os:allow-os-type" }, { - "description": "os:allow-exe-extension -> Enables the exe_extension command without any pre-configured scope.", + "description": "Enables the platform command without any pre-configured scope.", "type": "string", - "enum": [ - "os:allow-exe-extension" - ] + "const": "os:allow-platform" }, { - "description": "os:allow-family -> Enables the family command without any pre-configured scope.", + "description": "Enables the version command without any pre-configured scope.", "type": "string", - "enum": [ - "os:allow-family" - ] + "const": "os:allow-version" }, { - "description": "os:allow-hostname -> Enables the hostname command without any pre-configured scope.", + "description": "Denies the arch command without any pre-configured scope.", "type": "string", - "enum": [ - "os:allow-hostname" - ] + "const": "os:deny-arch" }, { - "description": "os:allow-locale -> Enables the locale command without any pre-configured scope.", + "description": "Denies the exe_extension command without any pre-configured scope.", "type": "string", - "enum": [ - "os:allow-locale" - ] + "const": "os:deny-exe-extension" }, { - "description": "os:allow-os-type -> Enables the os_type command without any pre-configured scope.", + "description": "Denies the family command without any pre-configured scope.", "type": "string", - "enum": [ - "os:allow-os-type" - ] + "const": "os:deny-family" }, { - "description": "os:allow-platform -> Enables the platform command without any pre-configured scope.", + "description": "Denies the hostname command without any pre-configured scope.", "type": "string", - "enum": [ - "os:allow-platform" - ] + "const": "os:deny-hostname" }, { - "description": "os:allow-version -> Enables the version command without any pre-configured scope.", + "description": "Denies the locale command without any pre-configured scope.", "type": "string", - "enum": [ - "os:allow-version" - ] + "const": "os:deny-locale" }, { - "description": "os:deny-arch -> Denies the arch command without any pre-configured scope.", + "description": "Denies the os_type command without any pre-configured scope.", "type": "string", - "enum": [ - "os:deny-arch" - ] + "const": "os:deny-os-type" }, { - "description": "os:deny-exe-extension -> Denies the exe_extension command without any pre-configured scope.", + "description": "Denies the platform command without any pre-configured scope.", "type": "string", - "enum": [ - "os:deny-exe-extension" - ] + "const": "os:deny-platform" }, { - "description": "os:deny-family -> Denies the family command without any pre-configured scope.", + "description": "Denies the version command without any pre-configured scope.", "type": "string", - "enum": [ - "os:deny-family" - ] + "const": "os:deny-version" }, { - "description": "os:deny-hostname -> Denies the hostname command without any pre-configured scope.", + "description": "Default plugin permissions.", "type": "string", - "enum": [ - "os:deny-hostname" - ] + "const": "pack:default" }, { - "description": "os:deny-locale -> Denies the locale command without any pre-configured scope.", + "description": "Enables the pack_get_profile_from_pack command without any pre-configured scope.", "type": "string", - "enum": [ - "os:deny-locale" - ] + "const": "pack:allow-pack-get-profile-from-pack" }, { - "description": "os:deny-os-type -> Denies the os_type command without any pre-configured scope.", + "description": "Enables the pack_install command without any pre-configured scope.", "type": "string", - "enum": [ - "os:deny-os-type" - ] + "const": "pack:allow-pack-install" }, { - "description": "os:deny-platform -> Denies the platform command without any pre-configured scope.", + "description": "Denies the pack_get_profile_from_pack command without any pre-configured scope.", "type": "string", - "enum": [ - "os:deny-platform" - ] + "const": "pack:deny-pack-get-profile-from-pack" }, { - "description": "os:deny-version -> Denies the version command without any pre-configured scope.", + "description": "Denies the pack_install command without any pre-configured scope.", "type": "string", - "enum": [ - "os:deny-version" - ] + "const": "pack:deny-pack-install" }, { - "description": "pack:default -> Default plugin permissions.", + "description": "Default plugin permissions.", "type": "string", - "enum": [ - "pack:default" - ] + "const": "process:default" }, { - "description": "pack:allow-pack-get-profile-from-pack -> Enables the pack_get_profile_from_pack command without any pre-configured scope.", + "description": "Enables the process_get_all command without any pre-configured scope.", "type": "string", - "enum": [ - "pack:allow-pack-get-profile-from-pack" - ] + "const": "process:allow-process-get-all" }, { - "description": "pack:allow-pack-install -> Enables the pack_install command without any pre-configured scope.", + "description": "Enables the process_get_by_profile_path command without any pre-configured scope.", "type": "string", - "enum": [ - "pack:allow-pack-install" - ] + "const": "process:allow-process-get-by-profile-path" }, { - "description": "pack:deny-pack-get-profile-from-pack -> Denies the pack_get_profile_from_pack command without any pre-configured scope.", + "description": "Enables the process_kill command without any pre-configured scope.", "type": "string", - "enum": [ - "pack:deny-pack-get-profile-from-pack" - ] + "const": "process:allow-process-kill" }, { - "description": "pack:deny-pack-install -> Denies the pack_install command without any pre-configured scope.", + "description": "Enables the process_wait_for command without any pre-configured scope.", "type": "string", - "enum": [ - "pack:deny-pack-install" - ] + "const": "process:allow-process-wait-for" }, { - "description": "process:default -> Default plugin permissions.", + "description": "Denies the process_get_all command without any pre-configured scope.", "type": "string", - "enum": [ - "process:default" - ] + "const": "process:deny-process-get-all" }, { - "description": "process:allow-process-get-all -> Enables the process_get_all command without any pre-configured scope.", + "description": "Denies the process_get_by_profile_path command without any pre-configured scope.", "type": "string", - "enum": [ - "process:allow-process-get-all" - ] + "const": "process:deny-process-get-by-profile-path" }, { - "description": "process:allow-process-get-by-profile-path -> Enables the process_get_by_profile_path command without any pre-configured scope.", + "description": "Denies the process_kill command without any pre-configured scope.", "type": "string", - "enum": [ - "process:allow-process-get-by-profile-path" - ] + "const": "process:deny-process-kill" }, { - "description": "process:allow-process-kill -> Enables the process_kill command without any pre-configured scope.", + "description": "Denies the process_wait_for command without any pre-configured scope.", "type": "string", - "enum": [ - "process:allow-process-kill" - ] + "const": "process:deny-process-wait-for" }, { - "description": "process:allow-process-wait-for -> Enables the process_wait_for command without any pre-configured scope.", + "description": "Default plugin permissions.", "type": "string", - "enum": [ - "process:allow-process-wait-for" - ] + "const": "profile:default" }, { - "description": "process:deny-process-get-all -> Denies the process_get_all command without any pre-configured scope.", + "description": "Enables the profile_add_project_from_path command without any pre-configured scope.", "type": "string", - "enum": [ - "process:deny-process-get-all" - ] + "const": "profile:allow-profile-add-project-from-path" }, { - "description": "process:deny-process-get-by-profile-path -> Denies the process_get_by_profile_path command without any pre-configured scope.", + "description": "Enables the profile_add_project_from_version command without any pre-configured scope.", "type": "string", - "enum": [ - "process:deny-process-get-by-profile-path" - ] + "const": "profile:allow-profile-add-project-from-version" }, { - "description": "process:deny-process-kill -> Denies the process_kill command without any pre-configured scope.", + "description": "Enables the profile_check_installed command without any pre-configured scope.", "type": "string", - "enum": [ - "process:deny-process-kill" - ] + "const": "profile:allow-profile-check-installed" }, { - "description": "process:deny-process-wait-for -> Denies the process_wait_for command without any pre-configured scope.", + "description": "Enables the profile_edit command without any pre-configured scope.", "type": "string", - "enum": [ - "process:deny-process-wait-for" - ] + "const": "profile:allow-profile-edit" }, { - "description": "profile:default -> Default plugin permissions.", + "description": "Enables the profile_edit_icon command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:default" - ] + "const": "profile:allow-profile-edit-icon" }, { - "description": "profile:allow-profile-add-project-from-path -> Enables the profile_add_project_from_path command without any pre-configured scope.", + "description": "Enables the profile_export_mrpack command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-add-project-from-path" - ] + "const": "profile:allow-profile-export-mrpack" }, { - "description": "profile:allow-profile-add-project-from-version -> Enables the profile_add_project_from_version command without any pre-configured scope.", + "description": "Enables the profile_get command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-add-project-from-version" - ] + "const": "profile:allow-profile-get" }, { - "description": "profile:allow-profile-check-installed -> Enables the profile_check_installed command without any pre-configured scope.", + "description": "Enables the profile_get_full_path command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-check-installed" - ] + "const": "profile:allow-profile-get-full-path" }, { - "description": "profile:allow-profile-edit -> Enables the profile_edit command without any pre-configured scope.", + "description": "Enables the profile_get_many command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-edit" - ] + "const": "profile:allow-profile-get-many" }, { - "description": "profile:allow-profile-edit-icon -> Enables the profile_edit_icon command without any pre-configured scope.", + "description": "Enables the profile_get_mod_full_path command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-edit-icon" - ] + "const": "profile:allow-profile-get-mod-full-path" }, { - "description": "profile:allow-profile-export-mrpack -> Enables the profile_export_mrpack command without any pre-configured scope.", + "description": "Enables the profile_get_optimal_jre_key command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-export-mrpack" - ] + "const": "profile:allow-profile-get-optimal-jre-key" }, { - "description": "profile:allow-profile-get -> Enables the profile_get command without any pre-configured scope.", + "description": "Enables the profile_get_pack_export_candidates command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-get" - ] + "const": "profile:allow-profile-get-pack-export-candidates" }, { - "description": "profile:allow-profile-get-full-path -> Enables the profile_get_full_path command without any pre-configured scope.", + "description": "Enables the profile_get_projects command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-get-full-path" - ] + "const": "profile:allow-profile-get-projects" }, { - "description": "profile:allow-profile-get-many -> Enables the profile_get_many command without any pre-configured scope.", + "description": "Enables the profile_install command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-get-many" - ] + "const": "profile:allow-profile-install" }, { - "description": "profile:allow-profile-get-mod-full-path -> Enables the profile_get_mod_full_path command without any pre-configured scope.", + "description": "Enables the profile_kill command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-get-mod-full-path" - ] + "const": "profile:allow-profile-kill" }, { - "description": "profile:allow-profile-get-optimal-jre-key -> Enables the profile_get_optimal_jre_key command without any pre-configured scope.", + "description": "Enables the profile_list command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-get-optimal-jre-key" - ] + "const": "profile:allow-profile-list" }, { - "description": "profile:allow-profile-get-pack-export-candidates -> Enables the profile_get_pack_export_candidates command without any pre-configured scope.", + "description": "Enables the profile_remove command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-get-pack-export-candidates" - ] + "const": "profile:allow-profile-remove" }, { - "description": "profile:allow-profile-get-projects -> Enables the profile_get_projects command without any pre-configured scope.", + "description": "Enables the profile_remove_project command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-get-projects" - ] + "const": "profile:allow-profile-remove-project" }, { - "description": "profile:allow-profile-install -> Enables the profile_install command without any pre-configured scope.", + "description": "Enables the profile_repair_managed_modrinth command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-install" - ] + "const": "profile:allow-profile-repair-managed-modrinth" }, { - "description": "profile:allow-profile-kill -> Enables the profile_kill command without any pre-configured scope.", + "description": "Enables the profile_run command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-kill" - ] + "const": "profile:allow-profile-run" }, { - "description": "profile:allow-profile-list -> Enables the profile_list command without any pre-configured scope.", + "description": "Enables the profile_run_credentials command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-list" - ] + "const": "profile:allow-profile-run-credentials" }, { - "description": "profile:allow-profile-remove -> Enables the profile_remove command without any pre-configured scope.", + "description": "Enables the profile_toggle_disable_project command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-remove" - ] + "const": "profile:allow-profile-toggle-disable-project" }, { - "description": "profile:allow-profile-remove-project -> Enables the profile_remove_project command without any pre-configured scope.", + "description": "Enables the profile_update_all command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-remove-project" - ] + "const": "profile:allow-profile-update-all" }, { - "description": "profile:allow-profile-repair-managed-modrinth -> Enables the profile_repair_managed_modrinth command without any pre-configured scope.", + "description": "Enables the profile_update_managed_modrinth_version command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-repair-managed-modrinth" - ] + "const": "profile:allow-profile-update-managed-modrinth-version" }, { - "description": "profile:allow-profile-run -> Enables the profile_run command without any pre-configured scope.", + "description": "Enables the profile_update_project command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-run" - ] + "const": "profile:allow-profile-update-project" }, { - "description": "profile:allow-profile-run-credentials -> Enables the profile_run_credentials command without any pre-configured scope.", + "description": "Denies the profile_add_project_from_path command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-run-credentials" - ] + "const": "profile:deny-profile-add-project-from-path" }, { - "description": "profile:allow-profile-toggle-disable-project -> Enables the profile_toggle_disable_project command without any pre-configured scope.", + "description": "Denies the profile_add_project_from_version command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-toggle-disable-project" - ] + "const": "profile:deny-profile-add-project-from-version" }, { - "description": "profile:allow-profile-update-all -> Enables the profile_update_all command without any pre-configured scope.", + "description": "Denies the profile_check_installed command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-update-all" - ] + "const": "profile:deny-profile-check-installed" }, { - "description": "profile:allow-profile-update-managed-modrinth-version -> Enables the profile_update_managed_modrinth_version command without any pre-configured scope.", + "description": "Denies the profile_edit command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-update-managed-modrinth-version" - ] + "const": "profile:deny-profile-edit" }, { - "description": "profile:allow-profile-update-project -> Enables the profile_update_project command without any pre-configured scope.", + "description": "Denies the profile_edit_icon command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:allow-profile-update-project" - ] + "const": "profile:deny-profile-edit-icon" }, { - "description": "profile:deny-profile-add-project-from-path -> Denies the profile_add_project_from_path command without any pre-configured scope.", + "description": "Denies the profile_export_mrpack command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-add-project-from-path" - ] + "const": "profile:deny-profile-export-mrpack" }, { - "description": "profile:deny-profile-add-project-from-version -> Denies the profile_add_project_from_version command without any pre-configured scope.", + "description": "Denies the profile_get command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-add-project-from-version" - ] + "const": "profile:deny-profile-get" }, { - "description": "profile:deny-profile-check-installed -> Denies the profile_check_installed command without any pre-configured scope.", + "description": "Denies the profile_get_full_path command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-check-installed" - ] + "const": "profile:deny-profile-get-full-path" }, { - "description": "profile:deny-profile-edit -> Denies the profile_edit command without any pre-configured scope.", + "description": "Denies the profile_get_many command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-edit" - ] + "const": "profile:deny-profile-get-many" }, { - "description": "profile:deny-profile-edit-icon -> Denies the profile_edit_icon command without any pre-configured scope.", + "description": "Denies the profile_get_mod_full_path command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-edit-icon" - ] + "const": "profile:deny-profile-get-mod-full-path" }, { - "description": "profile:deny-profile-export-mrpack -> Denies the profile_export_mrpack command without any pre-configured scope.", + "description": "Denies the profile_get_optimal_jre_key command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-export-mrpack" - ] + "const": "profile:deny-profile-get-optimal-jre-key" }, { - "description": "profile:deny-profile-get -> Denies the profile_get command without any pre-configured scope.", + "description": "Denies the profile_get_pack_export_candidates command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-get" - ] + "const": "profile:deny-profile-get-pack-export-candidates" }, { - "description": "profile:deny-profile-get-full-path -> Denies the profile_get_full_path command without any pre-configured scope.", + "description": "Denies the profile_get_projects command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-get-full-path" - ] + "const": "profile:deny-profile-get-projects" }, { - "description": "profile:deny-profile-get-many -> Denies the profile_get_many command without any pre-configured scope.", + "description": "Denies the profile_install command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-get-many" - ] + "const": "profile:deny-profile-install" }, { - "description": "profile:deny-profile-get-mod-full-path -> Denies the profile_get_mod_full_path command without any pre-configured scope.", + "description": "Denies the profile_kill command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-get-mod-full-path" - ] + "const": "profile:deny-profile-kill" }, { - "description": "profile:deny-profile-get-optimal-jre-key -> Denies the profile_get_optimal_jre_key command without any pre-configured scope.", + "description": "Denies the profile_list command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-get-optimal-jre-key" - ] + "const": "profile:deny-profile-list" }, { - "description": "profile:deny-profile-get-pack-export-candidates -> Denies the profile_get_pack_export_candidates command without any pre-configured scope.", + "description": "Denies the profile_remove command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-get-pack-export-candidates" - ] + "const": "profile:deny-profile-remove" }, { - "description": "profile:deny-profile-get-projects -> Denies the profile_get_projects command without any pre-configured scope.", + "description": "Denies the profile_remove_project command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-get-projects" - ] + "const": "profile:deny-profile-remove-project" }, { - "description": "profile:deny-profile-install -> Denies the profile_install command without any pre-configured scope.", + "description": "Denies the profile_repair_managed_modrinth command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-install" - ] + "const": "profile:deny-profile-repair-managed-modrinth" }, { - "description": "profile:deny-profile-kill -> Denies the profile_kill command without any pre-configured scope.", + "description": "Denies the profile_run command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-kill" - ] + "const": "profile:deny-profile-run" }, { - "description": "profile:deny-profile-list -> Denies the profile_list command without any pre-configured scope.", + "description": "Denies the profile_run_credentials command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-list" - ] + "const": "profile:deny-profile-run-credentials" }, { - "description": "profile:deny-profile-remove -> Denies the profile_remove command without any pre-configured scope.", + "description": "Denies the profile_toggle_disable_project command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-remove" - ] + "const": "profile:deny-profile-toggle-disable-project" }, { - "description": "profile:deny-profile-remove-project -> Denies the profile_remove_project command without any pre-configured scope.", + "description": "Denies the profile_update_all command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-remove-project" - ] + "const": "profile:deny-profile-update-all" }, { - "description": "profile:deny-profile-repair-managed-modrinth -> Denies the profile_repair_managed_modrinth command without any pre-configured scope.", + "description": "Denies the profile_update_managed_modrinth_version command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-repair-managed-modrinth" - ] + "const": "profile:deny-profile-update-managed-modrinth-version" }, { - "description": "profile:deny-profile-run -> Denies the profile_run command without any pre-configured scope.", + "description": "Denies the profile_update_project command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-run" - ] + "const": "profile:deny-profile-update-project" }, { - "description": "profile:deny-profile-run-credentials -> Denies the profile_run_credentials command without any pre-configured scope.", + "description": "Default plugin permissions.", "type": "string", - "enum": [ - "profile:deny-profile-run-credentials" - ] + "const": "profile-create:default" }, { - "description": "profile:deny-profile-toggle-disable-project -> Denies the profile_toggle_disable_project command without any pre-configured scope.", + "description": "Enables the profile_create command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-toggle-disable-project" - ] + "const": "profile-create:allow-profile-create" }, { - "description": "profile:deny-profile-update-all -> Denies the profile_update_all command without any pre-configured scope.", + "description": "Enables the profile_duplicate command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-update-all" - ] + "const": "profile-create:allow-profile-duplicate" }, { - "description": "profile:deny-profile-update-managed-modrinth-version -> Denies the profile_update_managed_modrinth_version command without any pre-configured scope.", + "description": "Denies the profile_create command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-update-managed-modrinth-version" - ] + "const": "profile-create:deny-profile-create" }, { - "description": "profile:deny-profile-update-project -> Denies the profile_update_project command without any pre-configured scope.", + "description": "Denies the profile_duplicate command without any pre-configured scope.", "type": "string", - "enum": [ - "profile:deny-profile-update-project" - ] + "const": "profile-create:deny-profile-duplicate" }, { - "description": "profile-create:default -> Default plugin permissions.", + "description": "Default plugin permissions.", "type": "string", - "enum": [ - "profile-create:default" - ] + "const": "settings:default" }, { - "description": "profile-create:allow-profile-create -> Enables the profile_create command without any pre-configured scope.", + "description": "Enables the cancel_directory_change command without any pre-configured scope.", "type": "string", - "enum": [ - "profile-create:allow-profile-create" - ] + "const": "settings:allow-cancel-directory-change" }, { - "description": "profile-create:allow-profile-duplicate -> Enables the profile_duplicate command without any pre-configured scope.", + "description": "Enables the settings_get command without any pre-configured scope.", "type": "string", - "enum": [ - "profile-create:allow-profile-duplicate" - ] + "const": "settings:allow-settings-get" }, { - "description": "profile-create:deny-profile-create -> Denies the profile_create command without any pre-configured scope.", + "description": "Enables the settings_set command without any pre-configured scope.", "type": "string", - "enum": [ - "profile-create:deny-profile-create" - ] + "const": "settings:allow-settings-set" }, { - "description": "profile-create:deny-profile-duplicate -> Denies the profile_duplicate command without any pre-configured scope.", + "description": "Denies the cancel_directory_change command without any pre-configured scope.", "type": "string", - "enum": [ - "profile-create:deny-profile-duplicate" - ] + "const": "settings:deny-cancel-directory-change" }, { - "description": "settings:default -> Default plugin permissions.", + "description": "Denies the settings_get command without any pre-configured scope.", "type": "string", - "enum": [ - "settings:default" - ] + "const": "settings:deny-settings-get" }, { - "description": "settings:allow-cancel-directory-change -> Enables the cancel_directory_change command without any pre-configured scope.", + "description": "Denies the settings_set command without any pre-configured scope.", "type": "string", - "enum": [ - "settings:allow-cancel-directory-change" - ] + "const": "settings:deny-settings-set" }, { - "description": "settings:allow-settings-get -> Enables the settings_get command without any pre-configured scope.", + "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", - "enum": [ - "settings:allow-settings-get" - ] + "const": "shell:default" }, { - "description": "settings:allow-settings-set -> Enables the settings_set command without any pre-configured scope.", + "description": "Enables the execute command without any pre-configured scope.", "type": "string", - "enum": [ - "settings:allow-settings-set" - ] + "const": "shell:allow-execute" }, { - "description": "settings:deny-cancel-directory-change -> Denies the cancel_directory_change command without any pre-configured scope.", + "description": "Enables the kill command without any pre-configured scope.", "type": "string", - "enum": [ - "settings:deny-cancel-directory-change" - ] + "const": "shell:allow-kill" }, { - "description": "settings:deny-settings-get -> Denies the settings_get command without any pre-configured scope.", + "description": "Enables the open command without any pre-configured scope.", "type": "string", - "enum": [ - "settings:deny-settings-get" - ] + "const": "shell:allow-open" }, { - "description": "settings:deny-settings-set -> Denies the settings_set command without any pre-configured scope.", + "description": "Enables the spawn command without any pre-configured scope.", "type": "string", - "enum": [ - "settings:deny-settings-set" - ] + "const": "shell:allow-spawn" }, { - "description": "shell:default -> 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", + "description": "Enables the stdin_write command without any pre-configured scope.", "type": "string", - "enum": [ - "shell:default" - ] + "const": "shell:allow-stdin-write" }, { - "description": "shell:allow-execute -> Enables the execute command without any pre-configured scope.", + "description": "Denies the execute command without any pre-configured scope.", "type": "string", - "enum": [ - "shell:allow-execute" - ] + "const": "shell:deny-execute" }, { - "description": "shell:allow-kill -> Enables the kill command without any pre-configured scope.", + "description": "Denies the kill command without any pre-configured scope.", "type": "string", - "enum": [ - "shell:allow-kill" - ] + "const": "shell:deny-kill" }, { - "description": "shell:allow-open -> Enables the open command without any pre-configured scope.", + "description": "Denies the open command without any pre-configured scope.", "type": "string", - "enum": [ - "shell:allow-open" - ] + "const": "shell:deny-open" }, { - "description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.", + "description": "Denies the spawn command without any pre-configured scope.", "type": "string", - "enum": [ - "shell:allow-spawn" - ] + "const": "shell:deny-spawn" }, { - "description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.", + "description": "Denies the stdin_write command without any pre-configured scope.", "type": "string", - "enum": [ - "shell:allow-stdin-write" - ] + "const": "shell:deny-stdin-write" }, { - "description": "shell:deny-execute -> Denies the execute command without any pre-configured scope.", + "description": "Default plugin permissions.", "type": "string", - "enum": [ - "shell:deny-execute" - ] + "const": "tags:default" }, { - "description": "shell:deny-kill -> Denies the kill command without any pre-configured scope.", + "description": "Enables the tags_get_categories command without any pre-configured scope.", "type": "string", - "enum": [ - "shell:deny-kill" - ] + "const": "tags:allow-tags-get-categories" }, { - "description": "shell:deny-open -> Denies the open command without any pre-configured scope.", + "description": "Enables the tags_get_donation_platforms command without any pre-configured scope.", "type": "string", - "enum": [ - "shell:deny-open" - ] + "const": "tags:allow-tags-get-donation-platforms" }, { - "description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.", + "description": "Enables the tags_get_game_versions command without any pre-configured scope.", "type": "string", - "enum": [ - "shell:deny-spawn" - ] + "const": "tags:allow-tags-get-game-versions" }, { - "description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.", + "description": "Enables the tags_get_loaders command without any pre-configured scope.", "type": "string", - "enum": [ - "shell:deny-stdin-write" - ] + "const": "tags:allow-tags-get-loaders" }, { - "description": "tags:default -> Default plugin permissions.", + "description": "Enables the tags_get_report_types command without any pre-configured scope.", "type": "string", - "enum": [ - "tags:default" - ] + "const": "tags:allow-tags-get-report-types" }, { - "description": "tags:allow-tags-get-categories -> Enables the tags_get_categories command without any pre-configured scope.", + "description": "Denies the tags_get_categories command without any pre-configured scope.", "type": "string", - "enum": [ - "tags:allow-tags-get-categories" - ] + "const": "tags:deny-tags-get-categories" }, { - "description": "tags:allow-tags-get-donation-platforms -> Enables the tags_get_donation_platforms command without any pre-configured scope.", + "description": "Denies the tags_get_donation_platforms command without any pre-configured scope.", "type": "string", - "enum": [ - "tags:allow-tags-get-donation-platforms" - ] + "const": "tags:deny-tags-get-donation-platforms" }, { - "description": "tags:allow-tags-get-game-versions -> Enables the tags_get_game_versions command without any pre-configured scope.", + "description": "Denies the tags_get_game_versions command without any pre-configured scope.", "type": "string", - "enum": [ - "tags:allow-tags-get-game-versions" - ] + "const": "tags:deny-tags-get-game-versions" }, { - "description": "tags:allow-tags-get-loaders -> Enables the tags_get_loaders command without any pre-configured scope.", + "description": "Denies the tags_get_loaders command without any pre-configured scope.", "type": "string", - "enum": [ - "tags:allow-tags-get-loaders" - ] + "const": "tags:deny-tags-get-loaders" }, { - "description": "tags:allow-tags-get-report-types -> Enables the tags_get_report_types command without any pre-configured scope.", + "description": "Denies the tags_get_report_types command without any pre-configured scope.", "type": "string", - "enum": [ - "tags:allow-tags-get-report-types" - ] + "const": "tags:deny-tags-get-report-types" }, { - "description": "tags:deny-tags-get-categories -> Denies the tags_get_categories command without any pre-configured scope.", + "description": "This permission set configures which kind of\nupdater functions are exposed to the frontend.\n\n#### Granted Permissions\n\nThe full workflow from checking for updates to installing them\nis enabled.\n\n", "type": "string", - "enum": [ - "tags:deny-tags-get-categories" - ] + "const": "updater:default" }, { - "description": "tags:deny-tags-get-donation-platforms -> Denies the tags_get_donation_platforms command without any pre-configured scope.", + "description": "Enables the check command without any pre-configured scope.", "type": "string", - "enum": [ - "tags:deny-tags-get-donation-platforms" - ] + "const": "updater:allow-check" }, { - "description": "tags:deny-tags-get-game-versions -> Denies the tags_get_game_versions command without any pre-configured scope.", + "description": "Enables the download command without any pre-configured scope.", "type": "string", - "enum": [ - "tags:deny-tags-get-game-versions" - ] + "const": "updater:allow-download" }, { - "description": "tags:deny-tags-get-loaders -> Denies the tags_get_loaders command without any pre-configured scope.", + "description": "Enables the download_and_install command without any pre-configured scope.", "type": "string", - "enum": [ - "tags:deny-tags-get-loaders" - ] + "const": "updater:allow-download-and-install" }, { - "description": "tags:deny-tags-get-report-types -> Denies the tags_get_report_types command without any pre-configured scope.", + "description": "Enables the install command without any pre-configured scope.", "type": "string", - "enum": [ - "tags:deny-tags-get-report-types" - ] + "const": "updater:allow-install" }, { - "description": "updater:default -> This permission set configures which kind of\nupdater functions are exposed to the frontend.\n\n#### Granted Permissions\n\nThe full workflow from checking for updates to installing them\nis enabled.\n\n", + "description": "Denies the check command without any pre-configured scope.", "type": "string", - "enum": [ - "updater:default" - ] + "const": "updater:deny-check" }, { - "description": "updater:allow-check -> Enables the check command without any pre-configured scope.", + "description": "Denies the download command without any pre-configured scope.", "type": "string", - "enum": [ - "updater:allow-check" - ] + "const": "updater:deny-download" }, { - "description": "updater:allow-download -> Enables the download command without any pre-configured scope.", + "description": "Denies the download_and_install command without any pre-configured scope.", "type": "string", - "enum": [ - "updater:allow-download" - ] + "const": "updater:deny-download-and-install" }, { - "description": "updater:allow-download-and-install -> Enables the download_and_install command without any pre-configured scope.", + "description": "Denies the install command without any pre-configured scope.", "type": "string", - "enum": [ - "updater:allow-download-and-install" - ] + "const": "updater:deny-install" }, { - "description": "updater:allow-install -> Enables the install command without any pre-configured scope.", + "description": "Default plugin permissions.", "type": "string", - "enum": [ - "updater:allow-install" - ] + "const": "utils:default" }, { - "description": "updater:deny-check -> Denies the check command without any pre-configured scope.", + "description": "Enables the get_opening_command command without any pre-configured scope.", "type": "string", - "enum": [ - "updater:deny-check" - ] + "const": "utils:allow-get-opening-command" }, { - "description": "updater:deny-download -> Denies the download command without any pre-configured scope.", + "description": "Enables the get_os command without any pre-configured scope.", "type": "string", - "enum": [ - "updater:deny-download" - ] + "const": "utils:allow-get-os" }, { - "description": "updater:deny-download-and-install -> Denies the download_and_install command without any pre-configured scope.", + "description": "Enables the highlight_in_folder command without any pre-configured scope.", "type": "string", - "enum": [ - "updater:deny-download-and-install" - ] + "const": "utils:allow-highlight-in-folder" }, { - "description": "updater:deny-install -> Denies the install command without any pre-configured scope.", + "description": "Enables the open_path command without any pre-configured scope.", "type": "string", - "enum": [ - "updater:deny-install" - ] + "const": "utils:allow-open-path" }, { - "description": "utils:default -> Default plugin permissions.", + "description": "Enables the progress_bars_list command without any pre-configured scope.", "type": "string", - "enum": [ - "utils:default" - ] + "const": "utils:allow-progress-bars-list" }, { - "description": "utils:allow-get-opening-command -> Enables the get_opening_command command without any pre-configured scope.", + "description": "Enables the should_disable_mouseover command without any pre-configured scope.", "type": "string", - "enum": [ - "utils:allow-get-opening-command" - ] + "const": "utils:allow-should-disable-mouseover" }, { - "description": "utils:allow-get-os -> Enables the get_os command without any pre-configured scope.", + "description": "Enables the show_launcher_logs_folder command without any pre-configured scope.", "type": "string", - "enum": [ - "utils:allow-get-os" - ] + "const": "utils:allow-show-launcher-logs-folder" }, { - "description": "utils:allow-highlight-in-folder -> Enables the highlight_in_folder command without any pre-configured scope.", + "description": "Denies the get_opening_command command without any pre-configured scope.", "type": "string", - "enum": [ - "utils:allow-highlight-in-folder" - ] + "const": "utils:deny-get-opening-command" }, { - "description": "utils:allow-open-path -> Enables the open_path command without any pre-configured scope.", + "description": "Denies the get_os command without any pre-configured scope.", "type": "string", - "enum": [ - "utils:allow-open-path" - ] + "const": "utils:deny-get-os" }, { - "description": "utils:allow-progress-bars-list -> Enables the progress_bars_list command without any pre-configured scope.", + "description": "Denies the highlight_in_folder command without any pre-configured scope.", "type": "string", - "enum": [ - "utils:allow-progress-bars-list" - ] + "const": "utils:deny-highlight-in-folder" }, { - "description": "utils:allow-should-disable-mouseover -> Enables the should_disable_mouseover command without any pre-configured scope.", + "description": "Denies the open_path command without any pre-configured scope.", "type": "string", - "enum": [ - "utils:allow-should-disable-mouseover" - ] + "const": "utils:deny-open-path" }, { - "description": "utils:allow-show-launcher-logs-folder -> Enables the show_launcher_logs_folder command without any pre-configured scope.", + "description": "Denies the progress_bars_list command without any pre-configured scope.", "type": "string", - "enum": [ - "utils:allow-show-launcher-logs-folder" - ] + "const": "utils:deny-progress-bars-list" }, { - "description": "utils:deny-get-opening-command -> Denies the get_opening_command command without any pre-configured scope.", + "description": "Denies the should_disable_mouseover command without any pre-configured scope.", "type": "string", - "enum": [ - "utils:deny-get-opening-command" - ] + "const": "utils:deny-should-disable-mouseover" }, { - "description": "utils:deny-get-os -> Denies the get_os command without any pre-configured scope.", + "description": "Denies the show_launcher_logs_folder command without any pre-configured scope.", "type": "string", - "enum": [ - "utils:deny-get-os" - ] + "const": "utils:deny-show-launcher-logs-folder" }, { - "description": "utils:deny-highlight-in-folder -> Denies the highlight_in_folder command without any pre-configured scope.", + "description": "Allows connecting and sending data to a WebSocket server", "type": "string", - "enum": [ - "utils:deny-highlight-in-folder" - ] + "const": "websocket:default" }, { - "description": "utils:deny-open-path -> Denies the open_path command without any pre-configured scope.", + "description": "Enables the connect command without any pre-configured scope.", "type": "string", - "enum": [ - "utils:deny-open-path" - ] + "const": "websocket:allow-connect" }, { - "description": "utils:deny-progress-bars-list -> Denies the progress_bars_list command without any pre-configured scope.", + "description": "Enables the send command without any pre-configured scope.", "type": "string", - "enum": [ - "utils:deny-progress-bars-list" - ] + "const": "websocket:allow-send" }, { - "description": "utils:deny-should-disable-mouseover -> Denies the should_disable_mouseover command without any pre-configured scope.", + "description": "Denies the connect command without any pre-configured scope.", "type": "string", - "enum": [ - "utils:deny-should-disable-mouseover" - ] + "const": "websocket:deny-connect" }, { - "description": "utils:deny-show-launcher-logs-folder -> Denies the show_launcher_logs_folder command without any pre-configured scope.", + "description": "Denies the send command without any pre-configured scope.", "type": "string", - "enum": [ - "utils:deny-show-launcher-logs-folder" - ] + "const": "websocket:deny-send" }, { - "description": "window-state:default -> This permission set configures what kind of\noperations are available from the window state plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n", + "description": "This permission set configures what kind of\noperations are available from the window state plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n", "type": "string", - "enum": [ - "window-state:default" - ] + "const": "window-state:default" }, { - "description": "window-state:allow-filename -> Enables the filename command without any pre-configured scope.", + "description": "Enables the filename command without any pre-configured scope.", "type": "string", - "enum": [ - "window-state:allow-filename" - ] + "const": "window-state:allow-filename" }, { - "description": "window-state:allow-restore-state -> Enables the restore_state command without any pre-configured scope.", + "description": "Enables the restore_state command without any pre-configured scope.", "type": "string", - "enum": [ - "window-state:allow-restore-state" - ] + "const": "window-state:allow-restore-state" }, { - "description": "window-state:allow-save-window-state -> Enables the save_window_state command without any pre-configured scope.", + "description": "Enables the save_window_state command without any pre-configured scope.", "type": "string", - "enum": [ - "window-state:allow-save-window-state" - ] + "const": "window-state:allow-save-window-state" }, { - "description": "window-state:deny-filename -> Denies the filename command without any pre-configured scope.", + "description": "Denies the filename command without any pre-configured scope.", "type": "string", - "enum": [ - "window-state:deny-filename" - ] + "const": "window-state:deny-filename" }, { - "description": "window-state:deny-restore-state -> Denies the restore_state command without any pre-configured scope.", + "description": "Denies the restore_state command without any pre-configured scope.", "type": "string", - "enum": [ - "window-state:deny-restore-state" - ] + "const": "window-state:deny-restore-state" }, { - "description": "window-state:deny-save-window-state -> Denies the save_window_state command without any pre-configured scope.", + "description": "Denies the save_window_state command without any pre-configured scope.", "type": "string", - "enum": [ - "window-state:deny-save-window-state" - ] + "const": "window-state:deny-save-window-state" } ] }, diff --git a/apps/frontend/.eslintrc.cjs b/apps/frontend/.eslintrc.cjs index 5d253386a..b0faf8948 100644 --- a/apps/frontend/.eslintrc.cjs +++ b/apps/frontend/.eslintrc.cjs @@ -1,4 +1,7 @@ module.exports = { root: true, extends: ["../../packages/eslint-config-custom/nuxt.js"], + rules: { + "import/no-unresolved": "off", + }, }; diff --git a/apps/frontend/nuxt.config.ts b/apps/frontend/nuxt.config.ts index 867919706..55302a829 100644 --- a/apps/frontend/nuxt.config.ts +++ b/apps/frontend/nuxt.config.ts @@ -177,7 +177,8 @@ export default defineNuxtConfig({ $fetch(`${API_URL}search?limit=3&query=leave&index=relevance`, headers), $fetch(`${API_URL}search?limit=3&query=&index=updated`, headers), // TODO: dehardcode - $fetch(`${API_URL.replace("/v2/", "/_internal/")}billing/products`, headers), + $fetch(`${STAGING_API_URL.replace("/v2/", "/_internal/")}billing/products`, headers), + // SET TO API_URL WHEN MERGING WITH UPSTREAM ]); state.categories = categories; @@ -321,8 +322,12 @@ export default defineNuxtConfig({ apiBaseUrl: process.env.BASE_URL ?? globalThis.BASE_URL ?? getApiUrl(), // @ts-ignore rateLimitKey: process.env.RATE_LIMIT_IGNORE_KEY ?? globalThis.RATE_LIMIT_IGNORE_KEY, + pyroBaseUrl: process.env.PYRO_BASE_URL, + prodOverride: process.env.PROD_OVERRIDE, public: { apiBaseUrl: getApiUrl(), + pyroBaseUrl: process.env.PYRO_BASE_URL, + prodOverride: process.env.PROD_OVERRIDE, siteUrl: getDomain(), production: isProduction(), featureFlagOverrides: getFeatureFlagOverrides(), @@ -361,7 +366,7 @@ export default defineNuxtConfig({ }, }, }, - modules: ["@vintl/nuxt", "@nuxtjs/turnstile"], + modules: ["@vintl/nuxt", "@nuxtjs/turnstile", "@pinia/nuxt"], vintl: { defaultLocale: "en-US", locales: [ @@ -445,23 +450,26 @@ function getFeatureFlagOverrides() { function getDomain() { if (process.env.NODE_ENV === "production") { - if (process.env.SITE_URL) { - return process.env.SITE_URL; - } - // @ts-ignore - else if (process.env.CF_PAGES_URL || globalThis.CF_PAGES_URL) { - // @ts-ignore - return process.env.CF_PAGES_URL ?? globalThis.CF_PAGES_URL; - } else if (process.env.HEROKU_APP_NAME) { - return `https://${process.env.HEROKU_APP_NAME}.herokuapp.com`; - } else if (process.env.VERCEL_URL) { - return `https://${process.env.VERCEL_URL}`; - } else if (getApiUrl() === STAGING_API_URL) { - return "https://staging.modrinth.com"; - } else { - return "https://modrinth.com"; - } + // if (process.env.SITE_URL) { + // return process.env.SITE_URL; + // } + // // @ts-ignore + // else if (process.env.CF_PAGES_URL || globalThis.CF_PAGES_URL) { + // // @ts-ignore + // return process.env.CF_PAGES_URL ?? globalThis.CF_PAGES_URL; + // } else if (process.env.HEROKU_APP_NAME) { + // return `https://${process.env.HEROKU_APP_NAME}.herokuapp.com`; + // } else if (process.env.VERCEL_URL) { + // return `https://${process.env.VERCEL_URL}`; + // } else if (getApiUrl() === STAGING_API_URL) { + // return "https://staging.modrinth.com"; + // } else { + // return "https://modrinth.com"; + // } + // TODO: remove on merge + return "https://redacted.modrinth.com"; } else { - return "http://localhost:3000"; + const port = process.env.PORT || 3000; + return `http://localhost:${port}`; } } diff --git a/apps/frontend/package.json b/apps/frontend/package.json index fca6cc271..3a13549f4 100644 --- a/apps/frontend/package.json +++ b/apps/frontend/package.json @@ -16,6 +16,7 @@ "@formatjs/cli": "^6.2.12", "@nuxt/devtools": "^1.3.3", "@nuxtjs/turnstile": "^0.8.0", + "@types/dompurify": "^3.0.5", "@types/node": "^20.1.0", "@vintl/compact-number": "^2.0.5", "@vintl/how-ago": "^3.0.1", @@ -38,8 +39,13 @@ "@modrinth/assets": "workspace:*", "@modrinth/ui": "workspace:*", "@modrinth/utils": "workspace:*", + "@pinia/nuxt": "^0.5.1", "@vintl/vintl": "^4.4.1", + "@vueuse/core": "^11.1.0", + "ace-builds": "^1.36.2", + "ansi-to-html": "^0.7.2", "dayjs": "^1.11.7", + "dompurify": "^3.1.7", "floating-vue": "2.0.0-beta.20", "fuse.js": "^6.6.2", "highlight.js": "^11.7.0", @@ -48,9 +54,12 @@ "jszip": "^3.10.1", "markdown-it": "14.1.0", "pathe": "^1.1.2", + "pinia": "^2.1.7", "qrcode.vue": "^3.4.0", "semver": "^7.5.4", - "vue-multiselect": "3.0.0", + "vue-multiselect": "3.0.0-alpha.2", + "vue-typed-virtual-list": "^1.0.10", + "vue3-ace-editor": "^2.2.4", "vue3-apexcharts": "^1.5.2", "xss": "^1.0.14" } diff --git a/apps/frontend/src/assets/images/games/app-servers-hero.png b/apps/frontend/src/assets/images/games/app-servers-hero.png new file mode 100644 index 000000000..cf130a218 Binary files /dev/null and b/apps/frontend/src/assets/images/games/app-servers-hero.png differ diff --git a/apps/frontend/src/assets/images/games/bg-mock.png b/apps/frontend/src/assets/images/games/bg-mock.png new file mode 100644 index 000000000..b28fbf150 Binary files /dev/null and b/apps/frontend/src/assets/images/games/bg-mock.png differ diff --git a/apps/frontend/src/assets/images/games/combined-hero.png b/apps/frontend/src/assets/images/games/combined-hero.png new file mode 100644 index 000000000..b12127c8b Binary files /dev/null and b/apps/frontend/src/assets/images/games/combined-hero.png differ diff --git a/apps/frontend/src/assets/images/games/content-hero-fixed.png b/apps/frontend/src/assets/images/games/content-hero-fixed.png new file mode 100644 index 000000000..dea622228 Binary files /dev/null and b/apps/frontend/src/assets/images/games/content-hero-fixed.png differ diff --git a/apps/frontend/src/assets/images/games/content-hero.png b/apps/frontend/src/assets/images/games/content-hero.png new file mode 100644 index 000000000..f281b61a1 Binary files /dev/null and b/apps/frontend/src/assets/images/games/content-hero.png differ diff --git a/apps/frontend/src/assets/images/games/excitement.png b/apps/frontend/src/assets/images/games/excitement.png new file mode 100644 index 000000000..b9112cf26 Binary files /dev/null and b/apps/frontend/src/assets/images/games/excitement.png differ diff --git a/apps/frontend/src/assets/images/games/maze.png b/apps/frontend/src/assets/images/games/maze.png new file mode 100644 index 000000000..5fae422a6 Binary files /dev/null and b/apps/frontend/src/assets/images/games/maze.png differ diff --git a/apps/frontend/src/assets/images/games/minecraft.png b/apps/frontend/src/assets/images/games/minecraft.png new file mode 100644 index 000000000..7ba55fa1a Binary files /dev/null and b/apps/frontend/src/assets/images/games/minecraft.png differ diff --git a/apps/frontend/src/assets/images/games/rinth.png b/apps/frontend/src/assets/images/games/rinth.png new file mode 100644 index 000000000..652a7cbd3 Binary files /dev/null and b/apps/frontend/src/assets/images/games/rinth.png differ diff --git a/apps/frontend/src/assets/images/games/servers-hero-real-noshadow.png b/apps/frontend/src/assets/images/games/servers-hero-real-noshadow.png new file mode 100644 index 000000000..eef743c6e Binary files /dev/null and b/apps/frontend/src/assets/images/games/servers-hero-real-noshadow.png differ diff --git a/apps/frontend/src/assets/images/games/servers-hero-square-fixed-forreal-updated.png b/apps/frontend/src/assets/images/games/servers-hero-square-fixed-forreal-updated.png new file mode 100644 index 000000000..dd74e1f25 Binary files /dev/null and b/apps/frontend/src/assets/images/games/servers-hero-square-fixed-forreal-updated.png differ diff --git a/apps/frontend/src/assets/images/games/waving.png b/apps/frontend/src/assets/images/games/waving.png new file mode 100644 index 000000000..80cfc6c1b Binary files /dev/null and b/apps/frontend/src/assets/images/games/waving.png differ diff --git a/apps/frontend/src/assets/images/servers/minecraft-background-dark.png b/apps/frontend/src/assets/images/servers/minecraft-background-dark.png new file mode 100644 index 000000000..bb22629be Binary files /dev/null and b/apps/frontend/src/assets/images/servers/minecraft-background-dark.png differ diff --git a/apps/frontend/src/assets/images/servers/minecraft_server_icon.png b/apps/frontend/src/assets/images/servers/minecraft_server_icon.png new file mode 100644 index 000000000..ec98382d4 Binary files /dev/null and b/apps/frontend/src/assets/images/servers/minecraft_server_icon.png differ diff --git a/apps/frontend/src/assets/images/servers/this-is-fine.gif b/apps/frontend/src/assets/images/servers/this-is-fine.gif new file mode 100644 index 000000000..3f175f231 Binary files /dev/null and b/apps/frontend/src/assets/images/servers/this-is-fine.gif differ diff --git a/apps/frontend/src/components/ui/CopyCode.vue b/apps/frontend/src/components/ui/CopyCode.vue index e42fe01ee..7161a3a6b 100644 --- a/apps/frontend/src/components/ui/CopyCode.vue +++ b/apps/frontend/src/components/ui/CopyCode.vue @@ -45,7 +45,7 @@ export default { margin: 0; padding: 0.25rem 0.5rem; background-color: var(--color-code-bg); - width: min-content; + width: fit-content; border-radius: 10px; user-select: text; transition: @@ -55,7 +55,6 @@ export default { outline 0.2s ease-in-out; span { - max-width: 10rem; overflow: hidden; text-overflow: ellipsis; } diff --git a/apps/frontend/src/components/ui/NavTabs.vue b/apps/frontend/src/components/ui/NavTabs.vue index 9ab0bf4d0..6cac43be7 100644 --- a/apps/frontend/src/components/ui/NavTabs.vue +++ b/apps/frontend/src/components/ui/NavTabs.vue @@ -24,7 +24,7 @@ top: sliderTopPx, right: sliderRightPx, bottom: sliderBottomPx, - opacity: sliderLeft === 4 && sliderLeft === sliderRight ? 0 : activeIndex === -1 ? 0 : 1, + // opacity: sliderLeft === 4 && sliderLeft === sliderRight ? 0 : activeIndex === -1 ? 0 : 1, }" aria-hidden="true" > @@ -38,7 +38,7 @@ interface Tab { label: string; href: string; shown?: boolean; - icon?: string; + icon?: unknown; subpages?: string[]; } @@ -64,6 +64,7 @@ const sliderRightPx = computed(() => `${sliderRight.value}px`); const sliderBottomPx = computed(() => `${sliderBottom.value}px`); function pickLink() { + if (route.path.split("/").length < 4) return; let index = -1; subpageSelected.value = false; for (let i = filteredLinks.value.length - 1; i >= 0; i--) { diff --git a/apps/frontend/src/components/ui/servers/ContentItem.vue b/apps/frontend/src/components/ui/servers/ContentItem.vue new file mode 100644 index 000000000..d6f952897 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/ContentItem.vue @@ -0,0 +1,68 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/FileItem.vue b/apps/frontend/src/components/ui/servers/FileItem.vue new file mode 100644 index 000000000..d682500c7 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/FileItem.vue @@ -0,0 +1,197 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/LoaderIcon.vue b/apps/frontend/src/components/ui/servers/LoaderIcon.vue new file mode 100644 index 000000000..2b604b949 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/LoaderIcon.vue @@ -0,0 +1,180 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/LogParser.vue b/apps/frontend/src/components/ui/servers/LogParser.vue new file mode 100644 index 000000000..338901de1 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/LogParser.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/apps/frontend/src/components/ui/servers/MOTDEditor.vue b/apps/frontend/src/components/ui/servers/MOTDEditor.vue new file mode 100644 index 000000000..20f5b2fe8 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/MOTDEditor.vue @@ -0,0 +1,281 @@ + + + + + diff --git a/apps/frontend/src/components/ui/servers/ModrinthServersIcon.vue b/apps/frontend/src/components/ui/servers/ModrinthServersIcon.vue new file mode 100644 index 000000000..35d90b1db --- /dev/null +++ b/apps/frontend/src/components/ui/servers/ModrinthServersIcon.vue @@ -0,0 +1,26 @@ + diff --git a/apps/frontend/src/components/ui/servers/PanelCopyIP.vue b/apps/frontend/src/components/ui/servers/PanelCopyIP.vue new file mode 100644 index 000000000..6bc45920d --- /dev/null +++ b/apps/frontend/src/components/ui/servers/PanelCopyIP.vue @@ -0,0 +1,31 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/PanelErrorIcon.vue b/apps/frontend/src/components/ui/servers/PanelErrorIcon.vue new file mode 100644 index 000000000..0904de9d7 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/PanelErrorIcon.vue @@ -0,0 +1,16 @@ + diff --git a/apps/frontend/src/components/ui/servers/PanelLoading.vue b/apps/frontend/src/components/ui/servers/PanelLoading.vue new file mode 100644 index 000000000..7ab67af60 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/PanelLoading.vue @@ -0,0 +1,84 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/PanelOverviewLoading.vue b/apps/frontend/src/components/ui/servers/PanelOverviewLoading.vue new file mode 100644 index 000000000..c3a9e9397 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/PanelOverviewLoading.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/apps/frontend/src/components/ui/servers/PanelPlay.vue b/apps/frontend/src/components/ui/servers/PanelPlay.vue new file mode 100644 index 000000000..29073471c --- /dev/null +++ b/apps/frontend/src/components/ui/servers/PanelPlay.vue @@ -0,0 +1,19 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/PanelServerActionButton.vue b/apps/frontend/src/components/ui/servers/PanelServerActionButton.vue new file mode 100644 index 000000000..10242a384 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/PanelServerActionButton.vue @@ -0,0 +1,172 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/PanelServerStatus.vue b/apps/frontend/src/components/ui/servers/PanelServerStatus.vue new file mode 100644 index 000000000..81e6ebc6f --- /dev/null +++ b/apps/frontend/src/components/ui/servers/PanelServerStatus.vue @@ -0,0 +1,66 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/PanelSpinner.vue b/apps/frontend/src/components/ui/servers/PanelSpinner.vue new file mode 100644 index 000000000..d9b5721de --- /dev/null +++ b/apps/frontend/src/components/ui/servers/PanelSpinner.vue @@ -0,0 +1,22 @@ + diff --git a/apps/frontend/src/components/ui/servers/PanelTerminal.vue b/apps/frontend/src/components/ui/servers/PanelTerminal.vue new file mode 100644 index 000000000..1bb70ea48 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/PanelTerminal.vue @@ -0,0 +1,480 @@ + + + + + diff --git a/apps/frontend/src/components/ui/servers/PanelTerminalFullscreen.vue b/apps/frontend/src/components/ui/servers/PanelTerminalFullscreen.vue new file mode 100644 index 000000000..1b173d8cc --- /dev/null +++ b/apps/frontend/src/components/ui/servers/PanelTerminalFullscreen.vue @@ -0,0 +1,16 @@ + diff --git a/apps/frontend/src/components/ui/servers/PanelTerminalMinimize.vue b/apps/frontend/src/components/ui/servers/PanelTerminalMinimize.vue new file mode 100644 index 000000000..7a21f08ee --- /dev/null +++ b/apps/frontend/src/components/ui/servers/PanelTerminalMinimize.vue @@ -0,0 +1,16 @@ + diff --git a/apps/frontend/src/components/ui/servers/PoweredByPyro.vue b/apps/frontend/src/components/ui/servers/PoweredByPyro.vue new file mode 100644 index 000000000..4a6f36db3 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/PoweredByPyro.vue @@ -0,0 +1,14 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/ProjectSelect.vue b/apps/frontend/src/components/ui/servers/ProjectSelect.vue new file mode 100644 index 000000000..0db45ebee --- /dev/null +++ b/apps/frontend/src/components/ui/servers/ProjectSelect.vue @@ -0,0 +1,174 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/PyroError.vue b/apps/frontend/src/components/ui/servers/PyroError.vue new file mode 100644 index 000000000..fe1ef50a6 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/PyroError.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/apps/frontend/src/components/ui/servers/PyroLoading.vue b/apps/frontend/src/components/ui/servers/PyroLoading.vue new file mode 100644 index 000000000..3c72d239b --- /dev/null +++ b/apps/frontend/src/components/ui/servers/PyroLoading.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/apps/frontend/src/components/ui/servers/PyroModal.vue b/apps/frontend/src/components/ui/servers/PyroModal.vue new file mode 100644 index 000000000..d2d9648cd --- /dev/null +++ b/apps/frontend/src/components/ui/servers/PyroModal.vue @@ -0,0 +1,60 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/SaveBanner.vue b/apps/frontend/src/components/ui/servers/SaveBanner.vue new file mode 100644 index 000000000..50d9e41bc --- /dev/null +++ b/apps/frontend/src/components/ui/servers/SaveBanner.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/apps/frontend/src/components/ui/servers/ServerGameLabel.vue b/apps/frontend/src/components/ui/servers/ServerGameLabel.vue new file mode 100644 index 000000000..4dd885f25 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/ServerGameLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/ServerIcon.vue b/apps/frontend/src/components/ui/servers/ServerIcon.vue new file mode 100644 index 000000000..727514f7a --- /dev/null +++ b/apps/frontend/src/components/ui/servers/ServerIcon.vue @@ -0,0 +1,22 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/ServerInstallStatusPill.vue b/apps/frontend/src/components/ui/servers/ServerInstallStatusPill.vue new file mode 100644 index 000000000..b8cc020cf --- /dev/null +++ b/apps/frontend/src/components/ui/servers/ServerInstallStatusPill.vue @@ -0,0 +1,46 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/ServerListing.vue b/apps/frontend/src/components/ui/servers/ServerListing.vue new file mode 100644 index 000000000..66e9229b4 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/ServerListing.vue @@ -0,0 +1,133 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/ServerListingSkeleton.vue b/apps/frontend/src/components/ui/servers/ServerListingSkeleton.vue new file mode 100644 index 000000000..65dd1d465 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/ServerListingSkeleton.vue @@ -0,0 +1,13 @@ + diff --git a/apps/frontend/src/components/ui/servers/ServerLoaderLabel.vue b/apps/frontend/src/components/ui/servers/ServerLoaderLabel.vue new file mode 100644 index 000000000..f9a3abdbc --- /dev/null +++ b/apps/frontend/src/components/ui/servers/ServerLoaderLabel.vue @@ -0,0 +1,29 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/ServerManageEmptyState.vue b/apps/frontend/src/components/ui/servers/ServerManageEmptyState.vue new file mode 100644 index 000000000..f6dc7e1da --- /dev/null +++ b/apps/frontend/src/components/ui/servers/ServerManageEmptyState.vue @@ -0,0 +1,19 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/ServerSidebar.vue b/apps/frontend/src/components/ui/servers/ServerSidebar.vue new file mode 100644 index 000000000..e9d6eff18 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/ServerSidebar.vue @@ -0,0 +1,41 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/ServerSkeleton.vue b/apps/frontend/src/components/ui/servers/ServerSkeleton.vue new file mode 100644 index 000000000..7429de93b --- /dev/null +++ b/apps/frontend/src/components/ui/servers/ServerSkeleton.vue @@ -0,0 +1,18 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/ServerStats.vue b/apps/frontend/src/components/ui/servers/ServerStats.vue new file mode 100644 index 000000000..a52ff2c23 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/ServerStats.vue @@ -0,0 +1,296 @@ + + + + + diff --git a/apps/frontend/src/components/ui/servers/ServerSubdomainLabel.vue b/apps/frontend/src/components/ui/servers/ServerSubdomainLabel.vue new file mode 100644 index 000000000..b140331ba --- /dev/null +++ b/apps/frontend/src/components/ui/servers/ServerSubdomainLabel.vue @@ -0,0 +1,39 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/ServerUptimeLabel.vue b/apps/frontend/src/components/ui/servers/ServerUptimeLabel.vue new file mode 100644 index 000000000..1e28881fb --- /dev/null +++ b/apps/frontend/src/components/ui/servers/ServerUptimeLabel.vue @@ -0,0 +1,62 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/SlashIcon.vue b/apps/frontend/src/components/ui/servers/SlashIcon.vue new file mode 100644 index 000000000..613ec2713 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/SlashIcon.vue @@ -0,0 +1,10 @@ + diff --git a/apps/frontend/src/components/ui/servers/TeleportOverflowMenu.vue b/apps/frontend/src/components/ui/servers/TeleportOverflowMenu.vue new file mode 100644 index 000000000..9a31e494c --- /dev/null +++ b/apps/frontend/src/components/ui/servers/TeleportOverflowMenu.vue @@ -0,0 +1,338 @@ + + + diff --git a/apps/frontend/src/components/ui/servers/Timer.vue b/apps/frontend/src/components/ui/servers/Timer.vue new file mode 100644 index 000000000..0de5f7a95 --- /dev/null +++ b/apps/frontend/src/components/ui/servers/Timer.vue @@ -0,0 +1,17 @@ + diff --git a/apps/frontend/src/composables/fetch.js b/apps/frontend/src/composables/fetch.js index 91f765ce3..58a732f73 100644 --- a/apps/frontend/src/composables/fetch.js +++ b/apps/frontend/src/composables/fetch.js @@ -1,7 +1,11 @@ -export const useBaseFetch = async (url, options = {}, skipAuth = false) => { +export const useBaseFetch = async (url, options = {}, skipAuth = false, prodOverride = false) => { const config = useRuntimeConfig(); let base = import.meta.server ? config.apiBaseUrl : config.public.apiBaseUrl; + if (prodOverride) { + base = "https://api.modrinth.com/v2/"; + } + if (!options.headers) { options.headers = {}; } diff --git a/apps/frontend/src/composables/pyroFetch.ts b/apps/frontend/src/composables/pyroFetch.ts new file mode 100644 index 000000000..f363b6af5 --- /dev/null +++ b/apps/frontend/src/composables/pyroFetch.ts @@ -0,0 +1,108 @@ +import { $fetch, FetchError } from "ofetch"; + +interface PyroFetchOptions { + method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE"; + contentType?: string; + body?: Record; + version?: number; + override?: { + url?: string; + token?: string; + }; + retry?: boolean; +} + +export class PyroFetchError extends Error { + constructor( + message: string, + public statusCode?: number, + public originalError?: Error, + ) { + super(message); + this.name = "PyroFetchError"; + } +} + +// eslint-disable-next-line require-await +export async function PyroAuthOverride() { + return true; +} + +export async function usePyroFetch(path: string, options: PyroFetchOptions = {}): Promise { + const config = useRuntimeConfig(); + const auth = await useAuth(); + const authToken = auth.value?.token; + + if (!authToken) { + throw new PyroFetchError("Cannot pyrofetch without auth", 10000); + } + + const { method = "GET", contentType = "application/json", body, version = 0, override } = options; + + const base = (import.meta.server ? config.pyroBaseUrl : config.public.pyroBaseUrl)?.replace( + /\/$/, + "", + ); + + if (!base) { + throw new PyroFetchError( + "Cannot pyrofetch without base url. Make sure to set a PYRO_BASE_URL in environment variables", + 10001, + ); + } + + const fullUrl = override?.url + ? `https://${override.url}/${path.replace(/^\//, "")}` + : `${base}/modrinth/v${version}/${path.replace(/^\//, "")}`; + + type HeadersRecord = Record; + + const headers: HeadersRecord = { + Authorization: `Bearer ${override?.token ?? authToken}`, + "Access-Control-Allow-Headers": "Authorization", + "User-Agent": "Pyro/1.0 (https://pyro.host)", + Vary: "Accept, Origin", + "Content-Type": contentType, + }; + + if (import.meta.client && typeof window !== "undefined") { + headers.Origin = window.location.origin; + } + + try { + const response = await $fetch(fullUrl, { + method, + headers, + body: body && contentType === "application/json" ? JSON.stringify(body) : body ?? undefined, + timeout: 10000, + retry: options.retry !== false ? (method === "GET" ? 3 : 0) : 0, + }); + return response; + } catch (error) { + console.error("Fetch error:", error); + if (error instanceof FetchError) { + const statusCode = error.response?.status; + const statusText = error.response?.statusText || "Unknown error"; + const errorMessages: { [key: number]: string } = { + 400: "Bad Request", + 401: "Unauthorized", + 403: "Forbidden", + 404: "Not Found", + 405: "Method Not Allowed", + 429: "Too Many Requests", + 500: "Internal Server Error", + 502: "Bad Gateway", + }; + const message = + statusCode && statusCode in errorMessages + ? errorMessages[statusCode] + : `HTTP Error: ${statusCode || "unknown"} ${statusText}`; + throw new PyroFetchError(`[PYROFETCH][PYRO] ${message}`, statusCode, error); + } + throw new PyroFetchError( + "[PYROFETCH][PYRO] An unexpected error occurred during the fetch operation.", + undefined, + error as Error, + ); + } +} diff --git a/apps/frontend/src/composables/pyroServers.ts b/apps/frontend/src/composables/pyroServers.ts new file mode 100644 index 000000000..79739713a --- /dev/null +++ b/apps/frontend/src/composables/pyroServers.ts @@ -0,0 +1,1166 @@ +// usePyroServer is a composable that interfaces with the REDACTED API to get data and control the users server +import { $fetch, FetchError } from "ofetch"; + +interface PyroFetchOptions { + method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE"; + contentType?: string; + body?: Record; + version?: number; + override?: { + url?: string; + token?: string; + }; + retry?: boolean; +} + +async function PyroFetch(path: string, options: PyroFetchOptions = {}): Promise { + const config = useRuntimeConfig(); + const auth = await useAuth(); + const authToken = auth.value?.token; + + if (!authToken) { + throw new PyroFetchError("Cannot pyrofetch without auth", 10000); + } + + const { method = "GET", contentType = "application/json", body, version = 0, override } = options; + + const base = (import.meta.server ? config.pyroBaseUrl : config.public.pyroBaseUrl)?.replace( + /\/$/, + "", + ); + + if (!base) { + throw new PyroFetchError( + "Cannot pyrofetch without base url. Make sure to set a PYRO_BASE_URL in environment variables", + 10001, + ); + } + + const fullUrl = override?.url + ? `https://${override.url}/${path.replace(/^\//, "")}` + : `${base}/modrinth/v${version}/${path.replace(/^\//, "")}`; + + type HeadersRecord = Record; + + const headers: HeadersRecord = { + Authorization: `Bearer ${override?.token ?? authToken}`, + "Access-Control-Allow-Headers": "Authorization", + "User-Agent": "Pyro/1.0 (https://pyro.host)", + Vary: "Accept, Origin", + "Content-Type": contentType, + }; + + if (import.meta.client && typeof window !== "undefined") { + headers.Origin = window.location.origin; + } + + try { + const response = await $fetch(fullUrl, { + method, + headers, + body: body && contentType === "application/json" ? JSON.stringify(body) : body ?? undefined, + timeout: 10000, + retry: options.retry !== false ? (method === "GET" ? 3 : 0) : 0, + }); + return response; + } catch (error) { + console.error("[PYROSERVERS]:", error); + if (error instanceof FetchError) { + const statusCode = error.response?.status; + const statusText = error.response?.statusText || "Unknown error"; + const errorMessages: { [key: number]: string } = { + 400: "Bad Request", + 401: "Unauthorized", + 403: "Forbidden", + 404: "Not Found", + 405: "Method Not Allowed", + 429: "Too Many Requests", + 500: "Internal Server Error", + 502: "Bad Gateway", + }; + const message = + statusCode && statusCode in errorMessages + ? errorMessages[statusCode] + : `HTTP Error: ${statusCode || "unknown"} ${statusText}`; + throw new PyroFetchError(`[PYROSERVERS][PYRO] ${message}`, statusCode, error); + } + throw new PyroFetchError( + "[PYROSERVERS][PYRO] An unexpected error occurred during the fetch operation.", + undefined, + error as Error, + ); + } +} + +const internalServerRefrence = ref(null); +const config = true; + +interface License { + id: string; + name: string; + url: string; +} + +interface DonationUrl { + id: string; + platform: string; + url: string; +} + +interface GalleryItem { + url: string; + featured: boolean; + title: string; + description: string; + created: string; + ordering: number; +} + +export interface Project { + slug: string; + title: string; + description: string; + categories: string[]; + client_side: "required" | "optional"; + server_side: "required" | "optional"; + body: string; + status: "approved" | "pending" | "rejected"; + requested_status: "approved" | "pending" | "rejected"; + additional_categories: string[]; + issues_url: string; + source_url: string; + wiki_url: string; + discord_url: string; + donation_urls: DonationUrl[]; + project_type: "mod" | "resourcepack" | "map" | "plugin"; + downloads: number; + icon_url: string; + color: number; + thread_id: string; + monetization_status: "monetized" | "non-monetized"; + id: string; + team: string; + body_url: string | null; + moderator_message: string | null; + published: string; + updated: string; + approved: string; + queued: string; + followers: number; + license: License; + versions: string[]; + game_versions: string[]; + loaders: string[]; + gallery: GalleryItem[]; +} + +interface General { + server_id: string; + name: string; + net: { + ip: string; + port: number; + domain: string; + }; + game: string; + backup_quota: number; + used_backup_quota: number; + status: string; + suspension_reason: string; + loader: string; + loader_version: string; + mc_version: string; + upstream: { + kind: "modpack" | "mod" | "resourcepack"; + version_id: string; + project_id: string; + } | null; + motd?: string; + image?: string; + project?: Project; + sftp_username: string; + sftp_password: string; + sftp_host: string; + datacenter?: string; +} + +interface Allocation { + port: number; + name: string; +} + +interface Startup { + invocation: string; + original_invocation: string; + jdk_version: "lts8" | "lts11" | "lts17" | "lts21"; + jdk_build: "corretto" | "temurin" | "graal"; +} + +interface Mod { + filename: string; + project_id: string; + version_id: string; + name: string; + version_number: string; + icon_url: string; + disabled: boolean; +} + +interface Backup { + id: string; + name: string; + created_at: string; +} + +interface WSAuth { + url: string; + token: string; +} + +interface FSAuth { + url: string; + token: string; +} + +const constructServerProperties = (properties: any): string => { + let fileContent = `#Minecraft server properties\n#${new Date().toUTCString()}\n`; + + for (const [key, value] of Object.entries(properties)) { + if (typeof value === "object") { + fileContent += `${key}=${JSON.stringify(value)}\n`; + } else if (typeof value === "boolean") { + fileContent += `${key}=${value ? "true" : "false"}\n`; + } else { + fileContent += `${key}=${value}\n`; + } + } + + return fileContent; +}; + +const processImage = async (iconUrl: string | undefined) => { + const image = ref(null); + const auth = await PyroFetch(`servers/${internalServerRefrence.value.serverId}/fs`); + try { + const fileData = await PyroFetch(`/download?path=/server-icon-original.png`, { + override: auth, + retry: false, + }); + + if (fileData instanceof Blob) { + if (import.meta.client) { + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d"); + const img = new Image(); + img.src = URL.createObjectURL(fileData); + await new Promise((resolve) => { + img.onload = () => { + canvas.width = 512; + canvas.height = 512; + ctx?.drawImage(img, 0, 0, 512, 512); + const dataURL = canvas.toDataURL("image/png"); + internalServerRefrence.value.general.image = dataURL; + image.value = dataURL; + resolve(); + }; + }); + } + } + } catch (error) { + if (error instanceof PyroFetchError && error.statusCode === 404) { + console.log("[PYROSERVERS] No server icon found"); + } else { + console.error(error); + } + } + + if (image.value === null && iconUrl) { + console.log("iconUrl", iconUrl); + try { + const response = await fetch(iconUrl); + const file = await response.blob(); + const originalfile = new File([file], "server-icon-original.png", { + type: "image/png", + }); + if (import.meta.client) { + const scaledFile = await new Promise((resolve, reject) => { + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d"); + const img = new Image(); + img.src = URL.createObjectURL(file); + img.onload = () => { + canvas.width = 64; + canvas.height = 64; + ctx?.drawImage(img, 0, 0, 64, 64); + canvas.toBlob((blob) => { + if (blob) { + const data = new File([blob], "server-icon.png", { type: "image/png" }); + resolve(data); + } else { + reject(new Error("Canvas toBlob failed")); + } + }, "image/png"); + }; + img.onerror = reject; + }); + if (scaledFile) { + await PyroFetch(`/create?path=/server-icon.png&type=file`, { + method: "POST", + contentType: "application/octet-stream", + body: scaledFile, + override: auth, + }); + + await PyroFetch(`/create?path=/server-icon-original.png&type=file`, { + method: "POST", + contentType: "application/octet-stream", + body: originalfile, + override: auth, + }); + } + } + } catch (error) { + if (error instanceof PyroFetchError && error.statusCode === 404) { + console.log("[PYROSERVERS] No server icon found"); + } else { + console.error(error); + } + } + } + return image.value; +}; + +// ------------------ GENERAL ------------------ // + +const sendPowerAction = async (action: string) => { + try { + await PyroFetch(`servers/${internalServerRefrence.value.serverId}/power`, { + method: "POST", + body: { action }, + }); + + await new Promise((resolve) => setTimeout(resolve, 1000)); + await internalServerRefrence.value.refresh(); + } catch (error) { + console.error("Error changing power state:", error); + throw error; + } +}; + +const updateName = async (newName: string) => { + try { + await PyroFetch(`servers/${internalServerRefrence.value.serverId}/name`, { + method: "POST", + body: { name: newName }, + }); + } catch (error) { + console.error("Error updating server name:", error); + throw error; + } +}; + +const fetchProject = async (projectId: string): Promise => { + try { + return (await toRaw(useBaseFetch(`project/${projectId}`, {}, false, config))) as Project; + } catch (error) { + console.error("Error fetching project:", error); + throw error; + } +}; + +// lord forgive me, for i have sinned and should not be forgiven -maddie +const reinstallServer = async ( + serverId: string, + loader: boolean, + projectId: string, + versionId?: string, + loaderVersionId?: string, + hardReset: boolean = false, +) => { + try { + if (loader) { + if (projectId.toLowerCase() === "neoforge") { + projectId = "NeoForge"; + } + await PyroFetch(`servers/${serverId}/reinstall?hard=${hardReset}`, { + method: "POST", + body: { loader: projectId, loader_version: loaderVersionId, game_version: versionId }, + }); + } else { + await PyroFetch(`servers/${serverId}/reinstall?hard=${hardReset}`, { + method: "POST", + body: { project_id: projectId, version_id: versionId }, + }); + } + } catch (error) { + console.error("Error reinstalling server:", error); + throw error; + } +}; + +const suspendServer = async (status: boolean) => { + try { + await PyroFetch(`servers/${internalServerRefrence.value.serverId}/suspend`, { + method: "POST", + body: { suspended: status }, + }); + } catch (error) { + console.error("Error suspending server:", error); + throw error; + } +}; + +const fetchConfigFile = async (fileName: string) => { + try { + return await PyroFetch(`servers/${internalServerRefrence.value.serverId}/config/${fileName}`); + } catch (error) { + console.error("Error fetching config file:", error); + throw error; + } +}; + +const getMotd = async () => { + try { + const props = await downloadFile("/server.properties"); + if (props) { + const lines = props.split("\n"); + for (const line of lines) { + if (line.startsWith("motd=")) { + return line.slice(5); + } + } + } + } catch { + return null; + } +}; + +const setMotd = async (motd: string) => { + try { + const props = (await fetchConfigFile("ServerProperties")) as any; + if (props) { + props.motd = motd; + const newProps = constructServerProperties(props); + const octetStream = new Blob([newProps], { type: "application/octet-stream" }); + const auth = await await PyroFetch( + `servers/${internalServerRefrence.value.serverId}/fs`, + ); + + return await PyroFetch(`/update?path=/server.properties`, { + method: "PUT", + contentType: "application/octet-stream", + body: octetStream, + override: auth, + }); + } + } catch (error) { + console.error("Error setting motd:", error); + } +}; + +// ------------------ MODS ------------------ // + +const installMod = async (projectId: string, versionId: string) => { + try { + await PyroFetch(`servers/${internalServerRefrence.value.serverId}/mods`, { + method: "POST", + body: { rinth_ids: { project_id: projectId, version_id: versionId } }, + }); + } catch (error) { + console.error("Error installing mod:", error); + throw error; + } +}; + +const removeMod = async (modId: string) => { + try { + await PyroFetch(`servers/${internalServerRefrence.value.serverId}/deleteMod`, { + method: "POST", + body: { + path: modId, + }, + }); + } catch (error) { + console.error("Error removing mod:", error); + throw error; + } +}; + +const reinstallMod = async (modId: string, versionId: string) => { + try { + await PyroFetch(`servers/${internalServerRefrence.value.serverId}/mods/${modId}`, { + method: "PUT", + body: { version_id: versionId }, + }); + } catch (error) { + console.error("Error reinstalling mod:", error); + throw error; + } +}; + +// ------------------ BACKUPS ------------------ // + +const createBackup = async (backupName: string) => { + try { + await PyroFetch(`servers/${internalServerRefrence.value.serverId}/backups`, { + method: "POST", + body: { name: backupName }, + }); + } catch (error) { + console.error("Error creating backup:", error); + throw error; + } +}; + +const renameBackup = async (backupId: string, newName: string) => { + try { + await PyroFetch(`servers/${internalServerRefrence.value.serverId}/backups/${backupId}/rename`, { + method: "POST", + body: { name: newName }, + }); + } catch (error) { + console.error("Error renaming backup:", error); + throw error; + } +}; + +const deleteBackup = async (backupId: string) => { + try { + await PyroFetch(`servers/${internalServerRefrence.value.serverId}/backups/${backupId}`, { + method: "DELETE", + }); + } catch (error) { + console.error("Error deleting backup:", error); + throw error; + } +}; + +const restoreBackup = async (backupId: string) => { + try { + await PyroFetch( + `servers/${internalServerRefrence.value.serverId}/backups/${backupId}/restore`, + { + method: "POST", + }, + ); + } catch (error) { + console.error("Error restoring backup:", error); + throw error; + } +}; + +const downloadBackup = async (backupId: string) => { + try { + return await PyroFetch(`servers/${internalServerRefrence.value.serverId}/backups/${backupId}`); + } catch (error) { + console.error("Error downloading backup:", error); + throw error; + } +}; + +// ------------------ NETWORK ------------------ // + +const reserveAllocation = async (name: string): Promise => { + try { + return await PyroFetch( + `servers/${internalServerRefrence.value.serverId}/allocations?name=${name}`, + { + method: "POST", + }, + ); + } catch (error) { + console.error("Error reserving new allocation:", error); + throw error; + } +}; + +const updateAllocation = async (port: number, name: string) => { + try { + await PyroFetch( + `servers/${internalServerRefrence.value.serverId}/allocations/${port}?name=${name}`, + { + method: "PUT", + }, + ); + } catch (error) { + console.error("Error updating allocations:", error); + throw error; + } +}; + +const deleteAllocation = async (port: number) => { + try { + await PyroFetch(`servers/${internalServerRefrence.value.serverId}/allocations/${port}`, { + method: "DELETE", + }); + } catch (error) { + console.error("Error deleting allocation:", error); + throw error; + } +}; + +const checkSubdomainAvailability = async (subdomain: string): Promise<{ available: boolean }> => { + try { + return (await PyroFetch(`subdomains/${subdomain}/isavailable`)) as { available: boolean }; + } catch (error) { + console.error("Error checking subdomain availability:", error); + throw error; + } +}; + +const changeSubdomain = async (subdomain: string) => { + try { + await PyroFetch(`servers/${internalServerRefrence.value.serverId}/subdomain`, { + method: "POST", + body: { subdomain }, + }); + } catch (error) { + console.error("Error changing subdomain:", error); + throw error; + } +}; + +// ------------------ STARTUP ------------------ // + +const updateStartupSettings = async ( + invocation: string, + jdkVersion: "lts8" | "lts11" | "lts17" | "lts21", + jdkBuild: "corretto" | "temurin" | "graal", +) => { + try { + await PyroFetch(`servers/${internalServerRefrence.value.serverId}/startup`, { + method: "POST", + body: { + invocation: invocation || null, + jdk_version: jdkVersion || null, + jdk_build: jdkBuild || null, + }, + }); + } catch (error) { + console.error("Error updating startup settings:", error); + throw error; + } +}; + +// ------------------ FS ------------------ // + +const retryWithAuth = async (requestFn: () => Promise) => { + try { + return await requestFn(); + } catch { + await internalServerRefrence.value.refresh(["fs"]); + return await requestFn(); + } +}; + +const listDirContents = (path: string, page: number, pageSize: number) => { + return retryWithAuth(async () => { + return await PyroFetch(`/list?path=${path}&page=${page}&page_size=${pageSize}`, { + override: internalServerRefrence.value.fs.auth, + }); + }); +}; + +const createFileOrFolder = ( + path: string, + // name: string, + type: "file" | "directory", +) => { + return retryWithAuth(async () => { + return await PyroFetch(`/create?path=${path}&type=${type}`, { + method: "POST", + contentType: "application/octet-stream", + override: internalServerRefrence.value.fs.auth, + }); + }); +}; + +const uploadFile = (path: string, file: File) => { + return retryWithAuth(async () => { + return await PyroFetch(`/create?path=${path}&type=file`, { + method: "POST", + contentType: "application/octet-stream", + body: file, + override: internalServerRefrence.value.fs.auth, + }); + }); +}; + +const renameFileOrFolder = (path: string, name: string) => { + const pathName = path.split("/").slice(0, -1).join("/") + "/" + name; + return retryWithAuth(async () => { + return await PyroFetch(`/move`, { + method: "POST", + override: internalServerRefrence.value.fs.auth, + body: { + source: path, + destination: pathName, + }, + }); + }); +}; + +const updateFile = (path: string, content: string) => { + const octetStream = new Blob([content], { type: "application/octet-stream" }); + return retryWithAuth(async () => { + return await PyroFetch(`/update?path=${path}`, { + method: "PUT", + contentType: "application/octet-stream", + body: octetStream, + override: internalServerRefrence.value.fs.auth, + }); + }); +}; + +const moveFileOrFolder = (path: string, newPath: string) => { + return retryWithAuth(async () => { + return await PyroFetch(`/move`, { + method: "POST", + override: internalServerRefrence.value.fs.auth, + body: { + source: path, + destination: newPath, + }, + }); + }); +}; + +const deleteFileOrFolder = (path: string, recursive: boolean) => { + const encodedPath = encodeURIComponent(path); + return retryWithAuth(async () => { + return await PyroFetch(`/delete?path=${encodedPath}&recursive=${recursive}`, { + method: "DELETE", + override: internalServerRefrence.value.fs.auth, + }); + }); +}; + +const downloadFile = (path: string) => { + return retryWithAuth(async () => { + const fileData = await PyroFetch(`/download?path=${path}`, { + override: internalServerRefrence.value.fs.auth, + }); + + if (fileData instanceof Blob) { + return fileData.text(); + } + }); +}; + +const modules: any = { + general: { + get: async (serverId: string) => { + const data = await PyroFetch(`servers/${serverId}`); + if (data.upstream?.project_id) { + data.project = await fetchProject(data.upstream.project_id); + } + data.image = (await processImage(data.project?.icon_url)) ?? undefined; + const motd = await getMotd(); + if (motd === "A Minecraft Server") { + await setMotd( + `§b${data.project?.title || data.loader + " " + data.mc_version} §f♦ §aModrinth Servers`, + ); + } + data.motd = motd; + return data; + }, + updateName, + power: sendPowerAction, + reinstall: reinstallServer, + suspend: suspendServer, + getMotd, + setMotd, + fetchConfigFile, + }, + mods: { + get: async (serverId: string) => { + const mods = await PyroFetch(`servers/${serverId}/mods`); + return { data: mods.sort((a, b) => (a?.name ?? "").localeCompare(b?.name ?? "")) }; + }, + install: installMod, + remove: removeMod, + reinstall: reinstallMod, + }, + backups: { + get: async (serverId: string) => { + return { data: await PyroFetch(`servers/${serverId}/backups`) }; + }, + create: createBackup, + rename: renameBackup, + delete: deleteBackup, + restore: restoreBackup, + download: downloadBackup, + }, + network: { + get: async (serverId: string) => { + return { allocations: await PyroFetch(`servers/${serverId}/allocations`) }; + }, + reserveAllocation, + updateAllocation, + deleteAllocation, + checkSubdomainAvailability, + changeSubdomain, + }, + startup: { + get: async (serverId: string) => await PyroFetch(`servers/${serverId}/startup`), + update: updateStartupSettings, + }, + ws: { + get: async (serverId: string) => await PyroFetch(`servers/${serverId}/ws`), + }, + fs: { + get: async (serverId: string) => { + return { auth: await PyroFetch(`servers/${serverId}/fs`) }; + }, + listDirContents, + createFileOrFolder, + uploadFile, + renameFileOrFolder, + updateFile, + moveFileOrFolder, + deleteFileOrFolder, + downloadFile, + }, +}; + +type GeneralFunctions = { + /** + * INTERNAL: Gets the general settings of a server. + * @param serverId - The ID of the server. + */ + get: (serverId: string) => Promise; + + /** + * Updates the name of the server. + * @param newName - The new name for the server. + */ + updateName: (newName: string) => Promise; + + /** + * Sends a power action to the server. + + * @param action - The power action to send (e.g., "start", "stop", "restart"). + */ + power: (action: string) => Promise; + + /** + * Reinstalls the server with the specified project and version. + * @param loader - Whether to use a loader. + * @param projectId - The ID of the project. + * @param versionId - Optional version ID. + */ + reinstall: ( + serverId: string, + loader: boolean, + projectId: string, + versionId?: string, + loaderVersionId?: string, + hardReset?: boolean, + ) => Promise; + + /** + * Suspends or resumes the server. + * @param status - True to suspend the server, false to resume. + */ + suspend: (status: boolean) => Promise; + + /** + * INTERNAL: Gets the general settings of a server. + */ + getMotd: () => Promise; + + /** + * INTERNAL: Updates the general settings of a server. + * @param motd - The new motd. + */ + setMotd: (motd: string) => Promise; + + /** + * INTERNAL: Gets the config file of a server. + * @param fileName - The name of the file. + */ + fetchConfigFile: (fileName: string) => Promise; +}; + +type ModFunctions = { + /** + * INTERNAL: Gets the mods of a server. + * @param serverId - The ID of the server. + * @returns + */ + get: (serverId: string) => Promise; + + /** + * Installs a mod to a server. + * @param projectId - The ID of the project. + * @param versionId - The ID of the version. + */ + install: (projectId: string, versionId: string) => Promise; + + /** + * Removes a mod from a server. + * @param modId - The ID of the mod. + */ + remove: (modId: string) => Promise; + + /** + * Reinstalls a mod to a server. + * @param modId - The ID of the mod. + * @param versionId - The ID of the version. + */ + reinstall: (modId: string, versionId: string) => Promise; +}; + +type BackupFunctions = { + /** + * INTERNAL: Gets the backups of a server. + * @param serverId - The ID of the server. + * @returns + */ + get: (serverId: string) => Promise; + + /** + * Creates a new backup for the server. + * @param backupName - The name of the backup. + */ + create: (backupName: string) => Promise; + + /** + * Renames a backup for the server. + * @param backupId - The ID of the backup. + * @param newName - The new name for the backup. + */ + rename: (backupId: string, newName: string) => Promise; + + /** + * Deletes a backup for the server. + * @param backupId - The ID of the backup. + */ + delete: (backupId: string) => Promise; + + /** + * Restores a backup for the server. + * @param serverId - The ID of the server. + * @param backupId - The ID of the backup. + */ + restore: (backupId: string) => Promise; + + /** + * Downloads a backup for the server. + * @param backupId - The ID of the backup. + */ + download: (backupId: string) => Promise; +}; + +type NetworkFunctions = { + /** + * INTERNAL: Gets the network settings of a server. + * @param serverId - The ID of the server. + * @returns + */ + get: (serverId: string) => Promise; + + /** + * Reserves a new allocation for the server. + * @param name - The name of the allocation. + * @returns The allocated network port details. + */ + reserveAllocation: (name: string) => Promise; + + /** + * Updates the allocation for the server. + * @param port - The port to update. + * @param name - The new name for the allocation. + */ + updateAllocation: (port: number, name: string) => Promise; + + /** + * Deletes an allocation for the server. + * @param port - The port to delete. + */ + deleteAllocation: (port: number) => Promise; + + /** + * Checks if a subdomain is available. + * @param subdomain - The subdomain to check. + * @returns True if the subdomain is available, otherwise false. + */ + checkSubdomainAvailability: (subdomain: string) => Promise; + + /** + * Changes the subdomain of the server. + * @param subdomain - The new subdomain. + */ + changeSubdomain: (subdomain: string) => Promise; +}; + +type StartupFunctions = { + /** + * INTERNAL: Gets the startup settings of a server. + * @param serverId - The ID of the server. + * @returns + */ + get: (serverId: string) => Promise; + + /** + * Updates the startup settings of a server. + * @param invocation - The invocation of the server. + * @param jdkVersion - The version of the JDK. + * @param jdkBuild - The build of the JDK. + */ + update: ( + invocation: string, + jdkVersion: "lts8" | "lts11" | "lts17" | "lts21", + jdkBuild: "corretto" | "temurin" | "graal", + ) => Promise; +}; + +type FSFunctions = { + /** + * INTERNAL: Gets the file system settings of a server. + * @param serverId + * @returns + */ + get: (serverId: string) => Promise; + + /** + * INTERNAL: Lists the contents of a directory. + * @param path + * @param page + * @param pageSize + * @returns + */ + listDirContents: (path: string, page: number, pageSize: number) => Promise; + + /** + * INTERNAL: Creates a file or folder. + * @param path + * @param type + * @returns + */ + createFileOrFolder: (path: string, type: "file" | "directory") => Promise; + + /** + * INTERNAL: Uploads a file. + * @param path + * @param file + * @returns + */ + uploadFile: (path: string, file: File) => Promise; + + /** + * INTERNAL: Renames a file or folder. + * @param path + * @param name + * @returns + */ + renameFileOrFolder: (path: string, name: string) => Promise; + + /** + * INTERNAL: Updates a file. + * @param path + * @param content + * @returns + */ + updateFile: (path: string, content: string) => Promise; + + /** + * INTERNAL: Moves a file or folder. + * @param path + * @param newPath + * @returns + */ + moveFileOrFolder: (path: string, newPath: string) => Promise; + + /** + * INTERNAL: Deletes a file or folder. + * @param path + * @param recursive + * @returns + */ + deleteFileOrFolder: (path: string, recursive: boolean) => Promise; + + /** + * INTERNAL: Downloads a file. + * @param serverId + * @param path + * @returns + */ + downloadFile: (path: string) => Promise; +}; + +type GeneralModule = General & GeneralFunctions; +type ModsModule = { data: Mod[] } & ModFunctions; +type BackupsModule = { data: Backup[] } & BackupFunctions; +type NetworkModule = { allocations: Allocation[] } & NetworkFunctions; +type StartupModule = Startup & StartupFunctions; +type FSModule = { auth: FSAuth } & FSFunctions; + +type ModulesMap = { + general: GeneralModule; + mods: ModsModule; + backups: BackupsModule; + network: NetworkModule; + startup: StartupModule; + ws: WSAuth; + fs: FSModule; +}; + +type avaliableModules = ("general" | "mods" | "backups" | "network" | "startup" | "ws" | "fs")[]; + +export type Server = { + [K in T[number]]?: ModulesMap[K]; +} & { + /** + * Refreshes the included modules of the server + * @param refreshModules - The modules to refresh. + */ + refresh: (refreshModules?: avaliableModules) => Promise; + serverId: string; +}; + +export const usePyroServer = async (serverId: string, includedModules: avaliableModules) => { + const server: Server = reactive({ + refresh: async (refreshModules?: avaliableModules) => { + const promises: Promise[] = []; + if (refreshModules) { + for (const module of refreshModules) { + promises.push( + (async () => { + const mods = modules[module]; + if (mods.get) { + const data = await mods.get(serverId); + server[module] = { ...server[module], ...data }; + } + })(), + ); + } + } else { + for (const module of includedModules) { + promises.push( + (async () => { + const mods = modules[module]; + if (mods.get) { + const data = await mods.get(serverId); + server[module] = { ...server[module], ...data }; + } + })(), + ); + } + } + await Promise.all(promises); + }, + serverId, + }); + + for (const module of includedModules) { + const mods = modules[module]; + server[module] = mods; + } + + internalServerRefrence.value = server; + + await server.refresh(); + + return server as Server; +}; diff --git a/apps/frontend/src/layouts/default.vue b/apps/frontend/src/layouts/default.vue index 8a452dac8..92974bd97 100644 --- a/apps/frontend/src/layouts/default.vue +++ b/apps/frontend/src/layouts/default.vue @@ -54,7 +54,7 @@
@@ -134,8 +134,7 @@ :options="[ { id: 'servers', - link: 'https://bisecthosting.com/modrinth', - shown: false, + link: '/servers', }, { id: 'app', @@ -224,6 +223,7 @@ +