tap-node 0.7.0

Transaction Authorization Protocol (TAP) node implementation for routing and processing messages
Documentation
[package]
name = "tap-node"
version.workspace = true
edition.workspace = true
authors.workspace = true
repository.workspace = true
license.workspace = true
description = "Transaction Authorization Protocol (TAP) node implementation for routing and processing messages"
readme = "README.md"

[dependencies]
# Internal dependencies
tap-msg = { version = "0.7.0", path = "../tap-msg" }
tap-agent = { version = "0.7.0", path = "../tap-agent" }
tap-caip = { version = "0.7.0", path = "../tap-caip" }
tap-ivms101 = { version = "0.7.0", path = "../tap-ivms101" }

# Async runtime
tokio = { workspace = true }
async-trait = { workspace = true }

# WASM-specific dependencies (optional)
wasm-bindgen = { workspace = true, optional = true }
js-sys = { workspace = true, optional = true }
wasm-bindgen-futures = { workspace = true, optional = true }
console_error_panic_hook = { workspace = true, optional = true }
web-sys = { workspace = true, optional = true, features = [
    "Headers",
    "Request",
    "RequestInit",
    "RequestMode",
    "Response",
    "Window",
] }

# Serialization
serde = { workspace = true }
serde_json = { workspace = true }

# Error handling
thiserror = { workspace = true }
anyhow = { workspace = true }

# Utilities
tracing = { workspace = true }
dashmap = "6.1"                # Concurrent HashMap implementation
uuid = { workspace = true }
futures = { version = "0.3" }
sha2 = "0.10"
base58 = "0.2"
base64 = "0.22"                # For encoding signatures
chrono = { workspace = true }
log = "0.4"

# URL encoding
percent-encoding = "2.3"

# HTTP client for native
reqwest = { version = "0.12", features = ["json"], optional = true }

# WebSocket support for native
tokio-tungstenite = { version = "0.24", features = [
    "native-tls",
], optional = true }

# Storage dependencies (native only)
sqlx = { version = "0.8.6", features = [
    "runtime-tokio-native-tls",
    "sqlite",
    "migrate",
    "json",
], optional = true }
dirs = { version = "6.0", optional = true }

[dev-dependencies]
tokio-test = { workspace = true }
criterion = { version = "0.6", features = ["async_tokio"] }
futures = { version = "0.3" }
env_logger = "0.10"
tempfile = "3.8"

[[bench]]
name = "stress_test"
harness = false

[features]
default = ["native", "storage"]
native = ["tokio/full", "reqwest"]
storage = ["sqlx", "dirs"]
websocket = ["tokio-tungstenite"]
native-with-websocket = ["native", "websocket"]
wasm = [
    "wasm-bindgen",
    "js-sys",
    "wasm-bindgen-futures",
    "console_error_panic_hook",
    "web-sys",
]
wasm-with-websocket = [
    "wasm",
    "web-sys/WebSocket",
    "web-sys/MessageEvent",
    "web-sys/BinaryType",
]