[package]
name = "cranpose-services"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
authors.workspace = true
keywords.workspace = true
categories.workspace = true
readme = "README.md"
description = "Multiplatform system services for Cranpose (HTTP, URI, and OS integrations)"
[dependencies]
cranpose-core = { workspace = true }
cranpose-macros = { workspace = true }
thiserror = "2.0.18"
[features]
default = []
http-native = ["dep:reqwest", "dep:webpki-root-certs"]
web-http = [
"dep:futures-util",
"dep:js-sys",
"dep:wasm-bindgen",
"dep:wasm-bindgen-futures",
"dep:web-sys",
]
uri-native = ["dep:open"]
uri-android = ["dep:webbrowser"]
uri-web = ["dep:web-sys"]
system-theme = []
system-theme-web = ["dep:web-sys"]
file-picker-native = ["dep:rfd"]
file-picker-web = [
"dep:rfd",
"dep:js-sys",
"dep:wasm-bindgen",
"dep:wasm-bindgen-futures",
"dep:web-sys",
]
[target.'cfg(all(not(target_arch = "wasm32"), not(target_os = "android")))'.dependencies]
open = { version = "5.3.5", optional = true }
[target.'cfg(all(not(target_arch = "wasm32"), not(target_os = "android"), not(target_os = "ios")))'.dependencies]
rfd = { version = "0.17.2", default-features = false, features = ["xdg-portal"], optional = true }
[target.'cfg(target_arch = "wasm32")'.dependencies]
futures-util = { version = "0.3.32", optional = true }
js-sys = { version = "0.3.98", optional = true }
wasm-bindgen = { version = "0.2", optional = true }
wasm-bindgen-futures = { version = "0.4.71", optional = true }
rfd = { version = "0.17.2", default-features = false, optional = true }
web-sys = { version = "0.3", features = [
"Blob",
"File",
"FileList",
"MediaQueryList",
"Request",
"RequestInit",
"RequestMode",
"Response",
"Window",
], optional = true }
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
pollster = "0.4.0"
[target.'cfg(all(not(target_arch = "wasm32"), not(target_os = "ios")))'.dependencies]
reqwest = { version = "0.13.3", default-features = false, features = ["blocking", "rustls"], optional = true }
[target.'cfg(target_os = "ios")'.dependencies]
reqwest = { version = "0.13.3", default-features = false, features = ["blocking", "native-tls"], optional = true }
[target.'cfg(target_os = "android")'.dependencies]
webbrowser = { version = "1.2.1", optional = true }
webpki-root-certs = { version = "1.0.7", optional = true }
[dev-dependencies]
webpki-root-certs = "1.0.7"