fsqlite 0.3.13

Public API facade
[package]
name = "fsqlite"
version = "0.3.13"
description = "Public API facade"
edition.workspace = true
license-file.workspace = true
repository.workspace = true

[dependencies]
asupersync = { workspace = true, optional = true }
futures-lite = { workspace = true, optional = true }
fsqlite-types = { workspace = true }
fsqlite-error = { workspace = true }
fsqlite-core = { workspace = true, default-features = false }
fsqlite-vfs = { workspace = true, default-features = false }
fsqlite-ext-json = { workspace = true, optional = true }
fsqlite-ext-fts5 = { workspace = true, optional = true }
fsqlite-ext-fts3 = { workspace = true, optional = true }
fsqlite-ext-rtree = { workspace = true, optional = true }
fsqlite-ext-session = { workspace = true, optional = true }
fsqlite-ext-icu = { workspace = true, optional = true }
fsqlite-ext-misc = { workspace = true, optional = true }
fsqlite-parser = { workspace = true }
tracing = { workspace = true }

[features]
# `native` no longer transitively links every extension vtab (fsqlite#356):
# fsqlite-core's `native` stopped implying `extensions`, and each facade ext
# feature now forwards to the matching core registration feature. The default
# set adds `icu` + `misc` so a default facade build keeps the exact same
# engine capabilities it had when core's `native` force-enabled everything.
default = ["native", "linux-asupersync-uring", "json", "fts5", "rtree", "icu", "misc"]
native = ["dep:asupersync", "fsqlite-types/native", "fsqlite-core/native", "fsqlite-vfs/native"]
wasm = ["fsqlite-types/wasm", "fsqlite-core/wasm", "fsqlite-vfs/wasm"]
linux-asupersync-uring = ["native", "fsqlite-core/linux-asupersync-uring", "fsqlite-vfs/linux-asupersync-uring"]
json = ["dep:fsqlite-ext-json", "fsqlite-core/ext-json"]
fts5 = ["dep:fsqlite-ext-fts5", "fsqlite-core/ext-fts5"]
fts3 = ["dep:fsqlite-ext-fts3"]
rtree = ["dep:fsqlite-ext-rtree", "fsqlite-core/ext-rtree"]
session = ["dep:fsqlite-ext-session"]
icu = ["dep:fsqlite-ext-icu", "fsqlite-core/ext-icu"]
misc = ["dep:fsqlite-ext-misc", "fsqlite-core/ext-misc"]
# `async-api` implies the full `native` stack (fsqlite#379): the async surface
# is only meaningful with a working native context (engine + VFS + types), and
# enabling only `fsqlite-types/native` let `default-features = false` consumers
# silently build an engine with the whole `fsqlite-core`/`fsqlite-vfs` native
# stack missing. `native` already covers `dep:asupersync` and
# `fsqlite-types/native`; `dep:asupersync` is kept explicit because
# `async_api.rs` uses it directly.
async-api = ["native", "dep:asupersync", "dep:futures-lite"]
raptorq = []
mvcc = []

[dev-dependencies]
# The whole storage stack is `async` now, so every test must drive a runtime.
# `asupersync` is an optional *dependency* (gated behind `async-api`), but tests
# need `asupersync::test_utils::run_test` unconditionally — hence a non-optional
# dev-dependency as well.
asupersync = { workspace = true, features = ["test-internals"] }
fsqlite-ast = { workspace = true }
fsqlite-func = { workspace = true }
fsqlite-pager = { workspace = true }
rand = { workspace = true }
rusqlite = { workspace = true, features = ["functions"] }
sha2 = { workspace = true }
tempfile = { workspace = true }

[[bench]]
name = "minmax_prefix_contract_bench"
path = "benches/minmax_prefix_contract_bench.rs"
harness = false

[lints]
workspace = true