[workspace]
resolver = "2"
members = [
  ".",
  "internal_macros",
]

[package]
name = "indexed_db_futures"
version = "0.6.0"
authors = ["Arturas Molcanovas <amolc@pm.me>"]
edition = "2021"
rust-version = "1.75.0"
license = "MIT"
description = "Future bindings for IndexedDB via web_sys"
repository = "https://github.com/Alorel/rust-indexed-db"
keywords = ["wasm", "indexeddb", "future", "webassembly", "idb"]
categories = ["asynchronous", "database", "wasm", "web-programming"]
include = [
  "src/",
  "Cargo.toml",
  "README.md"
]

[features]
async-upgrade = []
cursors = [
  "web-sys/IdbCursor",
  "web-sys/IdbCursorWithValue",
  "web-sys/IdbCursorDirection",
]
dates = [
  "dep:web-time",
  "_serialise-deserialise-dyn",
]
indices = [
  "web-sys/IdbIndex",
  "web-sys/IdbIndexParameters",
]
list-databases = [
  "dep:impartial-ord",
]
serde = [
  "dep:serde",
  "dep:serde-wasm-bindgen",
  "smallvec/serde",
  "web-time/serde",
]
streams = [
  "dep:futures-core",
  "wasm_evt_listener/streams",
]
switch = []
tx-done = ["dep:wasm_evt_listener"]
typed-arrays = []
version-change = ["tokio/macros", "dep:wasm_evt_listener"]
_serialise-deserialise-dyn = []

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[lib]
crate-type = ["lib"]

[workspace.dependencies]
accessory = { version = "2" }
cfg-if = "1"
console_log = "1"
delegate-display = { version = "3" }
derive_more = { version = "1", default-features = false }
fancy_constructor = { version = "2" }
futures = "0.3.30"
futures-core = "0.3"
impartial-ord = "1.0.6"
js-sys = "0.3.72"
log = "0.4.22"
macroific = { version = "2" }
rand = "0.8"
sealed = "0.6"
serde = "1"
serde-wasm-bindgen = "0.6"
smallvec = "1.13"
thiserror = "1"
tokio = { version = "1.30", default-features = false }
uuid = "1.8"
wasm-bindgen = "0.2.95"
wasm-bindgen-futures = "0.4.45"
wasm-bindgen-test = "0.3.45"
wasm_evt_listener = "0.1"
web-time = "1.1"
web-sys = "0.3.72"

proc-macro2 = "1"
quote = "1"
syn = "2"

[dependencies]
accessory = { workspace = true }
cfg-if = { workspace = true }
delegate-display = { workspace = true }
derive_more = { workspace = true, features = ["as_ref", "from", "deref", "deref_mut", "into", "debug"], default-features = false }
fancy_constructor = { workspace = true }
futures-core = { workspace = true, optional = true }
impartial-ord = { workspace = true, optional = true }
js-sys = { workspace = true }
sealed = { workspace = true }
serde = { workspace = true, optional = true }
smallvec = { workspace = true }
serde-wasm-bindgen = { workspace = true, optional = true }
thiserror = { workspace = true }
tokio = { workspace = true, features = ["sync"], default-features = false }
wasm-bindgen = { workspace = true }
wasm-bindgen-futures = { workspace = true }
wasm_evt_listener = { workspace = true, optional = true }
web-time = { workspace = true, optional = true }

[dependencies.internal_macros]
version = "1"
package = "indexed_db_futures_macros_internal"
path = "internal_macros"

[dependencies.web-sys]
workspace = true
features = [
  "console",
  "DomException",
  "DomStringList",
  "Event",
  "EventTarget",
  "IdbDatabase",
  "IdbFactory",
  "IdbObjectStore",
  "IdbObjectStoreParameters",
  "IdbRequestReadyState",
  "IdbOpenDbRequest",
  "IdbKeyRange",
  "IdbRequest",
  "IdbTransaction",
  "IdbTransactionMode",
  "IdbVersionChangeEvent",
  "Window",
  "WorkerGlobalScope",
]

[dev-dependencies]
console_log = { workspace = true }
futures = { workspace = true }
impartial-ord = { workspace = true }
log = { workspace = true }
rand = { workspace = true }
uuid = { workspace = true, features = ["v4", "js"] }
wasm-bindgen-test = { workspace = true }

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "doc_cfg"]

[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(doc_cfg)'] }