1[package]
2name = "notebook"
3version = "0.1.0"
4edition = "2024"
5publish = false
6
7[features]
8smb = ["dep:smb2", "dep:tokio"]
9# Live presence: peers found on the network or met through a relay, through a shared secret,
10# over an encrypted stream (resources/live-share.md).
11live = ["dep:mdns-sd", "dep:minicbor", "dep:spake2", "dep:relay", "dep:rustls", "dep:rustls-native-certs", "dep:webpki-root-certs"]
12
13[dependencies]
14onestore = { path = "../onestore" }
15rusqlite = { version = "=0.40.2", features = ["bundled", "backup"] }
16thiserror = "2"
17serde = { version = "1", features = ["derive"] }
18serde_json = "1"
19tempfile = "3"
20sha2 = "0.11"
21smb2 = { version = "=0.21.0", optional = true }
22tokio = { version = "1", features = ["rt-multi-thread", "time"], optional = true }
23zeroize = "1.9.0"
24# Queued edits of a password-protected section are sealed under a key derived from its own.
25aes-gcm = "0.11.1"
26base64 = { version = "0.23.1", default-features = false, features = ["std"] }
27getrandom = "0.4.3"
28hmac = "0.13.0"
29minicbor = { version = "2.3.0", features = ["derive", "alloc"], optional = true }
30spake2 = { version = "=0.5.0-pre.0", features = ["getrandom"], optional = true }
31relay = { path = "../relay", optional = true }
32# OneNote packages (.onepkg) are cabinet files.
33cab = "0.6"
34# std's clock where there is one; the browser's on wasm32-unknown-unknown, whose std has none.
35web-time = "1.1"
36
37[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
38mdns-sd = { version = "0.21.4", default-features = false, optional = true }
39# A relay's TLS, trusting the system's authorities, then Mozilla's.
40rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12"], optional = true }
41rustls-native-certs = { version = "0.8", optional = true }
42webpki-root-certs = { version = "1.0", optional = true }
43
44# The browser: its randomness, clock, timers and event loop, and SQLite's files kept with
45# the notebooks' (`fs`).
46[target.'cfg(target_arch = "wasm32")'.dependencies]
47getrandom = { version = "0.4.3", features = ["wasm_js"] }
48js-sys = "0.3"
49wasm-bindgen = "0.2"
50wasm-bindgen-futures = "0.4"
51rsqlite-vfs = "0.1.1"
52
53[target.'cfg(target_vendor = "apple")'.dependencies]
54nix = { version = "0.31", default-features = false, features = ["fs"] }
55
56[target.'cfg(windows)'.dependencies]
57windows-sys = { version = "0.61", features = ["Win32_Storage_FileSystem", "Win32_System_Registry"] }
58
59[dev-dependencies]
60libc = "0.2"
61serde_json = "1"
62tempfile = "3"
63
64[[example]]
65name = "live_latency"
66required-features = ["live"]
67
68[[example]]
69name = "live_crowd"
70required-features = ["live"]
71
72[[example]]
73name = "smb_offline_client"
74required-features = ["smb"]
75
76[[example]]
77name = "smb_reconnect_client"
78required-features = ["smb"]
79
80[[example]]
81name = "smb_concurrent_client"
82required-features = ["smb"]
83
84[[example]]
85name = "smb_publish_probe"
86required-features = ["smb"]