[package]
name = "firezone-windows-client"
# mark:automatic-version
version = "1.0.0"
description = "Firezone Windows Client"
edition = "2021"

[build-dependencies]
anyhow = { version = "1.0" }
tauri-build = { version = "1.5", features = [] }

[dependencies]
arboard = { version = "3.3.0", default-features = false }
anyhow = { version = "1.0" }
arc-swap = "1.6.0"
chrono = { workspace = true }
clap = { version = "4.4", features = ["derive",  "env"] }
connlib-client-shared = { workspace = true }
connlib-shared = { workspace = true }
firezone-cli-utils = { workspace = true }
hex = "0.4.3"
git-version = "0.3.9"
# Same crate Hickory uses
hostname = "0.3.1"
# This is the same crate hickory uses to get system resolvers
ipconfig = "0.3.2"
keyring = "2.0.5"
ring = "0.17"
secrecy = { workspace = true }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
subtle = "2.5.0"
thiserror = { version = "1.0", default-features = false }
tokio = { version = "1.33.0", features = ["time"] }
tracing = { workspace = true }
tracing-log = "0.2"
tracing-subscriber = { version = "0.3.17", features = ["env-filter"] }
url = { version = "2.5.0", features = ["serde"] }
uuid = { version = "1.5.0", features = ["v4"] }
tracing-panic = "0.1.1"
zip = { version = "0.6.6", features = ["deflate", "time"], default-features = false }
rand = "0.8.5"
windows-implement = "0.52.0"
known-folders = "1.1.0"

# These dependencies are locked behind `cfg(windows)` because they either can't compile at all on Linux, or they need native dependencies like glib that are difficult to get. Try not to add more here.

[target.'cfg(windows)'.dependencies]
# Tauri works fine on Linux, but it requires a lot of build-time deps like glib and gdk, so I've blocked it out for now.
tauri = { version = "1.5", features = [ "dialog", "notification", "shell-open-api", "system-tray" ] }
tauri-utils = "1.5.1"
winreg = "0.51.0"
wintun = "0.3.2"

[target.'cfg(windows)'.dependencies.windows]
version = "0.52.0"
features = [
  # For implementing COM interfaces
  "implement",
  "Win32_Foundation",
  # For listening for network change events
  "Win32_Networking_NetworkListManager",
  # For deep_link module
  "Win32_Security",
  # COM is needed to listen for network change events
  "Win32_System_Com",
  # For deep_link module
  "Win32_System_SystemServices",
]

[features]
# this feature is used for production builds or when `devPath` points to the filesystem
# DO NOT REMOVE!!
custom-protocol = ["tauri/custom-protocol"]
