[package]
edition = "2021"
name = "microsoft-webui-desktop"
version = "3.0.0"
authors = ["Microsoft Edge"]
build = "build.rs"
include = [
"/assets/ipc/**",
"/benches/**",
"/build.rs",
"/Cargo.toml",
"/README.md",
"/runtime/**",
"/src/**",
"/tests/*.rs",
"/tests/public_api/**",
"/tests/support/**",
"/tests/fixtures/*.c",
"/tests/fixtures/*.js",
"/tests/fixtures/*.mjs",
"/tests/fixtures/*.py",
"/tests/fixtures/*.rs",
"/tests/fixtures/*.ts",
"/tests/fixtures/linux-local-server/**",
"/tests/fixtures/typed-ipc/**",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Configurable native desktop SDK for WebUI applications"
homepage = "https://microsoft.github.io/webui"
readme = "README.md"
keywords = [
"webui",
"desktop",
"webview",
"ipc",
"ssr",
]
categories = [
"gui",
"web-programming",
]
license = "MIT"
repository = "https://github.com/microsoft/webui"
[features]
application-ipc = [
"dep:base64",
"dep:libc",
"dep:socket2",
"dep:futures-channel",
"dep:futures-executor",
"dep:futures-util",
"dep:getrandom",
"objc2-foundation?/NSJSONSerialization",
"objc2-foundation?/NSStream",
"objc2-web-kit?/WKScriptMessageHandlerWithReply",
"objc2-web-kit?/WKContentWorld",
]
cli = [
"native",
"source",
"dep:clap",
"dep:console",
"dep:expand-tilde",
"dep:microsoft-webui-desktop-build",
]
default = []
local-server = [
"native",
"dep:getrandom",
"dep:libc",
"dep:socket2",
"objc2-web-kit?/WKNavigationResponse",
]
native = [
"dep:anyhow",
"dep:objc2",
"dep:objc2-app-kit",
"dep:objc2-foundation",
"dep:objc2-web-kit",
"dep:block2",
"dep:webview2-com",
"dep:windows",
"dep:windows-core",
"dep:windows-future",
"dep:gtk4",
"dep:webkit6",
]
native-capture = [
"native-services",
"objc2-app-kit?/NSBitmapImageRep",
"objc2-app-kit?/NSImageRep",
"objc2-web-kit?/WKSnapshotConfiguration",
]
native-clipboard = [
"native-capture",
"objc2-app-kit?/NSPasteboard",
"windows?/Win32_System_DataExchange",
]
native-dialogs = [
"native-services",
"objc2-app-kit?/NSAlert",
"objc2-app-kit?/block2",
]
native-dwm-frame = ["native"]
native-picker = [
"native-services",
"objc2-app-kit?/NSOpenPanel",
"objc2-app-kit?/NSSavePanel",
"objc2-app-kit?/NSPanel",
"objc2-app-kit?/block2",
"windows?/Win32_UI_Shell",
]
native-services = [
"local-server",
"dep:url",
]
native-url-activation = [
"local-server",
"dep:url",
]
packaging = [
"dep:libc",
"dep:sha2",
]
source = [
"dep:microsoft-webui",
"dep:sha2",
]
startup-failure = [
"dep:objc2",
"dep:objc2-app-kit",
"dep:objc2-foundation",
"dep:windows",
"objc2-app-kit?/NSAlert",
]
verified-update = ["dep:sha2"]
[lib]
name = "webui_desktop"
path = "src/lib.rs"
[[bin]]
name = "webui-desktop"
path = "src/cli/main.rs"
required-features = ["cli"]
[[example]]
name = "local-server-quit"
path = "tests/fixtures/local-server-quit.rs"
required-features = [
"local-server",
"application-ipc",
]
[[example]]
name = "local-server-smoke"
path = "tests/fixtures/local-server-smoke.rs"
required-features = ["local-server"]
[[example]]
name = "local-url-activation"
path = "tests/fixtures/local-url-activation.rs"
required-features = ["native-url-activation"]
[[example]]
name = "native-capture"
path = "tests/fixtures/native-capture.rs"
required-features = ["native-capture"]
[[example]]
name = "native-directory"
path = "tests/fixtures/native-directory.rs"
required-features = ["native-picker"]
[[example]]
name = "native-geometry"
path = "tests/fixtures/native-geometry.rs"
required-features = ["native-services"]
[[example]]
name = "native-theme"
path = "tests/fixtures/native-theme.rs"
required-features = ["native-services"]
[[example]]
name = "no-ipc-native"
path = "tests/fixtures/no-ipc-native.rs"
required-features = [
"native",
"source",
]
[[example]]
name = "startup-failure"
path = "tests/fixtures/startup-failure.rs"
required-features = ["startup-failure"]
[[test]]
name = "bundle_runtime"
path = "tests/bundle_runtime.rs"
[[test]]
name = "capture_allocations"
path = "tests/capture_allocations.rs"
required-features = ["native-capture"]
[[test]]
name = "cli_package_e2e"
path = "tests/cli_package_e2e.rs"
required-features = ["cli"]
[[test]]
name = "codecs"
path = "tests/codecs.rs"
required-features = ["application-ipc"]
[[test]]
name = "ipc_contract"
path = "tests/public_api/ipc.rs"
required-features = ["application-ipc"]
[[test]]
name = "linux_local_server"
path = "tests/linux_local_server.rs"
required-features = ["local-server"]
[[test]]
name = "local_server_api"
path = "tests/public_api/local_server.rs"
required-features = ["local-server"]
[[test]]
name = "precompiled_package"
path = "tests/precompiled_package.rs"
required-features = ["packaging"]
[[test]]
name = "shell_contract"
path = "tests/shell_contract.rs"
[[test]]
name = "windows_bootstrap_build"
path = "tests/windows_bootstrap_build.rs"
[[test]]
name = "windows_portable_package"
path = "tests/windows_portable_package.rs"
required-features = ["source"]
[[test]]
name = "windows_resource_contract"
path = "tests/windows_resource_contract.rs"
[[bench]]
name = "macos_menu"
path = "benches/macos_menu.rs"
harness = false
required-features = ["native"]
[[bench]]
name = "macos_response"
path = "benches/macos_response.rs"
harness = false
required-features = ["native"]
[[bench]]
name = "navigation"
path = "benches/navigation.rs"
harness = false
[dependencies.anyhow]
version = "1.0.104"
optional = true
[dependencies.base64]
version = "0.22.1"
optional = true
[dependencies.clap]
version = "4.6.3"
features = [
"derive",
"color",
]
optional = true
[dependencies.console]
version = "0.16.6"
optional = true
[dependencies.expand-tilde]
version = "0.6.1"
optional = true
[dependencies.futures-channel]
version = "0.3.34"
optional = true
[dependencies.futures-executor]
version = "0.3.33"
features = ["thread-pool"]
optional = true
[dependencies.futures-util]
version = "0.3.33"
optional = true
[dependencies.microsoft-webui]
version = "3.0.0"
features = ["cli"]
optional = true
[dependencies.microsoft-webui-desktop-build]
version = "3.0.0"
optional = true
[dependencies.microsoft-webui-handler]
version = "3.0.0"
[dependencies.microsoft-webui-protocol]
version = "3.0.0"
[dependencies.microsoft-webui-tokens]
version = "3.0.0"
[dependencies.mime_guess]
version = "2.0.5"
[dependencies.percent-encoding]
version = "2.3.2"
[dependencies.serde]
version = "1.0.228"
features = ["derive"]
[dependencies.serde_json]
version = "1.0.151"
features = ["raw_value"]
[dependencies.sha2]
version = "0.11.0"
optional = true
[dependencies.thiserror]
version = "2.0.18"
[dependencies.url]
version = "2.5.8"
optional = true
[dev-dependencies.criterion]
version = "0.8.2"
[dev-dependencies.prost]
version = "0.14.4"
[dev-dependencies.tempfile]
version = "3.27.0"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.getrandom]
version = "0.4.3"
optional = true
[target.'cfg(target_os = "linux")'.dependencies.gtk4]
version = "0.11.3"
features = ["v4_10"]
optional = true
default-features = false
[target.'cfg(target_os = "linux")'.dependencies.libc]
version = "0.2.189"
optional = true
[target.'cfg(target_os = "linux")'.dependencies.socket2]
version = "0.6.5"
optional = true
[target.'cfg(target_os = "linux")'.dependencies.webkit6]
version = "0.6.1"
features = ["v2_42"]
optional = true
default-features = false
[target.'cfg(target_os = "macos")'.dependencies.block2]
version = "0.6.2"
optional = true
[target.'cfg(target_os = "macos")'.dependencies.libc]
version = "0.2.189"
[target.'cfg(target_os = "macos")'.dependencies.objc2]
version = "0.6.4"
features = ["exception"]
optional = true
[target.'cfg(target_os = "macos")'.dependencies.objc2-app-kit]
version = "0.3.2"
features = [
"std",
"objc2-core-foundation",
"NSApplication",
"NSAppearance",
"NSButton",
"NSColor",
"NSControl",
"NSEvent",
"NSGraphics",
"NSGraphicsContext",
"NSImage",
"NSMenu",
"NSMenuItem",
"NSResponder",
"NSRunningApplication",
"NSScreen",
"NSStatusBar",
"NSStatusBarButton",
"NSStatusItem",
"NSView",
"NSVisualEffectView",
"NSWindow",
]
optional = true
default-features = false
[target.'cfg(target_os = "macos")'.dependencies.objc2-foundation]
version = "0.3.2"
features = [
"std",
"block2",
"NSData",
"NSDictionary",
"NSDistributedNotificationCenter",
"NSURL",
"NSURLRequest",
"NSURLResponse",
"NSString",
"NSObject",
"NSNotification",
"NSOperation",
"NSGeometry",
"NSValue",
"NSTimer",
"NSDate",
"NSRunLoop",
"NSBundle",
]
optional = true
default-features = false
[target.'cfg(target_os = "macos")'.dependencies.objc2-web-kit]
version = "0.3.2"
features = [
"std",
"objc2-app-kit",
"objc2-core-foundation",
"block2",
"WKURLSchemeHandler",
"WKURLSchemeTask",
"WKWebView",
"WKWebViewConfiguration",
"WKWebsiteDataStore",
"WKNavigation",
"WKNavigationAction",
"WKNavigationDelegate",
"WKFrameInfo",
"WKSecurityOrigin",
"WKScriptMessage",
"WKScriptMessageHandler",
"WKUserContentController",
"WKUserScript",
]
optional = true
default-features = false
[target.'cfg(target_os = "macos")'.dev-dependencies.block2]
version = "0.6.2"
[target.'cfg(target_os = "macos")'.dev-dependencies.objc2-app-kit]
version = "0.3.2"
features = [
"NSActionCell",
"NSButtonCell",
"NSCell",
]
default-features = false
[target."cfg(windows)".dependencies.socket2]
version = "0.6.5"
optional = true
[target."cfg(windows)".dependencies.webview2-com]
version = "0.39.1"
optional = true
[target."cfg(windows)".dependencies.windows]
version = "0.62.2"
features = [
"Foundation",
"Graphics",
"UI",
"Win32_Foundation",
"Win32_Graphics_Dwm",
"Win32_Graphics_Gdi",
"Win32_Networking_WinSock",
"Win32_System_Com",
"Win32_System_LibraryLoader",
"Win32_System_Memory",
"Win32_System_Ole",
"Win32_System_Performance",
"Win32_System_Threading",
"Win32_UI_Controls",
"Win32_UI_HiDpi",
"Win32_UI_Input_KeyboardAndMouse",
"Win32_UI_WindowsAndMessaging",
]
optional = true
[target."cfg(windows)".dependencies.windows-core]
version = "0.62.2"
optional = true
[target."cfg(windows)".dependencies.windows-future]
version = "0.3.2"
optional = true
[target."cfg(windows)".dependencies.windows-sys]
version = "0.61.2"
features = [
"Win32_Foundation",
"Win32_Storage_FileSystem",
"Win32_System_ProcessStatus",
"Win32_System_Threading",
]
[lints.clippy]
cast_possible_truncation = "deny"
cast_possible_wrap = "deny"
cast_sign_loss = "deny"
inefficient_to_string = "deny"
large_enum_variant = "deny"
large_futures = "deny"
large_stack_arrays = "deny"
large_types_passed_by_value = "deny"
manual_memcpy = "deny"
naive_bytecount = "deny"
needless_collect = "deny"
rc_buffer = "deny"
redundant_clone = "deny"
unnecessary_box_returns = "deny"
unnecessary_to_owned = "deny"
vec_box = "deny"
[lints.clippy.perf]
level = "deny"
priority = -1
[lints.clippy.suspicious]
level = "deny"
priority = -1
[lints.rust]
unsafe_code = "deny"