1[package]
2name = "jacquard-common"
3description = "Core AT Protocol types and utilities for Jacquard"
4edition.workspace = true
5version = "0.9.2"
6authors.workspace = true
7repository.workspace = true
8keywords.workspace = true
9categories.workspace = true
10readme.workspace = true
11exclude.workspace = true
12license.workspace = true
13
14[features]
15default = ["service-auth", "reqwest-client", "crypto"]
16crypto = []
17crypto-ed25519 = ["crypto", "dep:ed25519-dalek"]
18crypto-k256 = ["crypto", "dep:k256", "k256/ecdsa"]
19crypto-p256 = ["crypto", "dep:p256", "p256/ecdsa"]
20service-auth = ["crypto-k256", "crypto-p256", "dep:signature"]
21reqwest-client = ["dep:reqwest"]
22tracing = ["dep:tracing"]
23streaming = ["n0-future", "futures", "reqwest/stream"]
24websocket = ["streaming", "tokio-tungstenite-wasm", "dep:ciborium"]
25zstd = ["dep:zstd"]
26
27[dependencies]
28trait-variant.workspace = true
29bon.workspace = true
30base64.workspace = true
31bytes.workspace = true
32chrono.workspace = true
33cid.workspace = true
34ipld-core.workspace = true
35langtag = { version = "0.4.0", features = ["serde"] }
36miette.workspace = true
37multibase = "0.9.1"
38multihash = "0.19.3"
39ouroboros = "0.18.5"
40rand = "0.9.2"
41serde.workspace = true
42serde_html_form.workspace = true
43serde_json.workspace = true
44smol_str.workspace = true
45thiserror.workspace = true
46url.workspace = true
47http.workspace = true
48serde_bytes = "0.11"
49
50
51reqwest = { workspace = true, optional = true, features = ["json", "gzip", "charset"] }
52serde_ipld_dagcbor.workspace = true
53signature = { version = "2", optional = true }
54tracing = { workspace = true, optional = true }
55tokio = { workspace = true, default-features = false, features = ["sync"] }
56
57# Streaming support (optional)
58n0-future = { workspace = true, optional = true }
59futures = { version = "0.3", optional = true }
60tokio-tungstenite-wasm = { version = "0.4", default-features = false, optional = true }
61ciborium = {version = "0.2.0", optional = true }
62zstd = { version = "0.13", optional = true }
63postcard = { version = "1.1.3", features = ["use-std"] }
64
65[target.'cfg(target_family = "wasm")'.dependencies]
66getrandom = { version = "0.3.4", features = ["wasm_js"] }
67chrono = { workspace = true, features = ["wasmbind"] }
68getrandom_02 = { package = "getrandom", version = "0.2", features = ["js"] }
69regex-lite = "0.1"
70ring = { version = "0.17", features = ["wasm32_unknown_unknown_js"]}
71reqwest = { workspace = true, optional = true, features = [ "json", "gzip", "rustls-tls-manual-roots"] }
72tokio-tungstenite-wasm = { version = "0.4", features = [], optional = true }
73
74[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
75reqwest = { workspace = true, optional = true, features = [ "http2", "gzip", "system-proxy", "rustls-tls"] }
76tokio-util = { version = "0.7.16", features = ["io"] }
77regex = { version = "1.11.3", default-features = false, features = ["std", "perf-literal"] }
78tokio-tungstenite-wasm = { version = "0.4", features = ["rustls-tls-native-roots"], optional = true }
79
80
81[dependencies.ed25519-dalek]
82version = "2"
83optional = true
84default-features = false
85features = ["pkcs8"]
86
87[dependencies.k256]
88version = "0.13"
89optional = true
90default-features = false
91features = ["arithmetic"]
92
93[dependencies.p256]
94workspace = true
95optional = true
96features = ["arithmetic"]
97
98[dev-dependencies]
99tokio = { version = "1", features = ["macros", "rt", "rt-multi-thread"] }
100futures-lite = "2.6"
101
102[package.metadata.docs.rs]
103features = [ "crypto-k256", "crypto-ed22519", "crypto-p256", "websocket", "zstd", "service-auth", "reqwest-client", "crypto"]