[package] name = "surrealdb-core" publish = true edition = "2021" version = "2.0.0" rust-version = "1.77.0" readme = "../lib/CARGO.md" authors = ["Tobie Morgan Hitchcock "] description = "A scalable, distributed, collaborative, document-graph database, for the realtime web" repository = "https://github.com/surrealdb/surrealdb" homepage = "https://github.com/surrealdb/surrealdb" documentation = "https://docs.rs/surrealdb-core/" keywords = [ "database", "embedded-database", "key-value", "key-value-store", "kv-store", ] categories = ["database-implementations", "data-structures", "embedded"] license-file = "../LICENSE" resolver = "2" [features] # Public features default = ["kv-mem"] kv-mem = ["dep:echodb", "tokio/time", "dep:tempfile", "dep:ext-sort"] kv-indxdb = ["dep:indxdb"] kv-rocksdb = ["dep:rocksdb", "tokio/time", "dep:tempfile", "dep:ext-sort"] kv-tikv = ["dep:tikv", "tokio/time", "dep:tempfile", "dep:ext-sort"] kv-fdb = ["dep:foundationdb", "tokio/time", "dep:tempfile", "dep:ext-sort"] kv-surrealkv = ["dep:surrealkv", "tokio/time", "dep:tempfile", "dep:ext-sort"] scripting = ["dep:js"] http = ["dep:reqwest"] ml = ["dep:surrealml"] jwks = ["dep:reqwest"] arbitrary = [ "dep:arbitrary", "dep:regex-syntax", "rust_decimal/rust-fuzz", "geo-types/arbitrary", "uuid/arbitrary", ] # Special features kv-fdb-7_1 = ["foundationdb/fdb-7_1"] kv-fdb-7_3 = ["foundationdb/fdb-7_3"] [package.metadata.docs.rs] rustdoc-args = ["--cfg", "docsrs"] features = ["kv-mem", "kv-rocksdb", "http", "scripting"] targets = [] [dependencies] addr = { version = "0.15.6", default-features = false, features = ["std"] } ahash = "0.8.11" ammonia = "4.0.0" arbitrary = { version = "1.3.2", features = ["derive"], optional = true } argon2 = "0.5.2" ascii = { version = "0.3.2", package = "any_ascii" } async-recursion = "1.0.5" base64 = "0.21.5" bcrypt = "0.15.0" bincode = "1.3.3" bytes = "1.5.0" ciborium = "0.2.1" cedar-policy = "2.4.2" channel = { version = "1.9.0", package = "async-channel" } chrono = { version = "0.4.31", features = ["serde"] } dashmap = "5.5.3" derive = { version = "0.12.0", package = "surrealdb-derive" } deunicode = "1.4.1" dmp = "0.2.0" echodb = { version = "0.7.0", optional = true } executor = { version = "1.8.0", package = "async-executor" } ext-sort = { version = "^0.1.4", optional = true } foundationdb = { version = "0.9.0", default-features = false, features = [ "embedded-fdb-include", ], optional = true } fst = "0.4.7" futures = "0.3.29" fuzzy-matcher = "0.3.7" geo = { version = "0.27.0", features = ["use-serde"] } geo-types = { version = "0.7.12", features = ["arbitrary"] } hex = { version = "0.4.3" } indxdb = { version = "0.5.0", optional = true } ipnet = "2.9.0" js = { version = "0.6.2", package = "rquickjs", features = [ "array-buffer", "bindgen", "classes", "futures", "loader", "macro", "parallel", "properties", "rust-alloc", ], optional = true } jsonwebtoken = "9.3.0" lexicmp = "0.1.0" linfa-linalg = "=0.1.0" md-5 = "0.10.6" nanoid = "0.4.0" ndarray = { version = "=0.15.6" } ndarray-stats = "=0.5.1" num-traits = "0.2.18" nom = { version = "7.1.3", features = ["alloc"] } num_cpus = "1.16.0" object_store = { version = "0.10.2", optional = false } once_cell = "1.18.0" pbkdf2 = { version = "0.12.2", features = ["simple"] } phf = { version = "0.11.2", features = ["macros", "unicase"] } pin-project-lite = "0.2.13" quick_cache = "0.5.1" radix_trie = { version = "0.2.1", features = ["serde"] } rand = "0.8.5" reblessive = { version = "0.4.0", features = ["tree"] } regex = "1.10.2" regex-syntax = { version = "0.8.2", optional = true, features = ["arbitrary"] } reqwest = { version = "0.12.5", default-features = false, features = [ "json", "stream", "multipart", ], optional = true } revision = { version = "0.8.0", features = ["chrono", "geo", "roaring", "regex", "rust_decimal", "uuid"] } rmpv = "1.0.1" roaring = { version = "0.10.2", features = ["serde"] } rocksdb = { version = "0.21.0", features = ["lz4", "snappy"], optional = true } rust_decimal = { version = "1.33.1", features = ["maths", "serde-str"] } rust-stemmers = "1.2.0" scrypt = "0.11.0" semver = { version = "1.0.20", features = ["serde"] } serde = { version = "1.0.193", features = ["derive"] } serde_json = "1.0.108" sha1 = "0.10.6" sha2 = "0.10.8" snap = "1.1.0" storekey = "0.5.0" surrealkv = { version = "0.3.0", optional = true } surrealml = { version = "0.1.1", optional = true, package = "surrealml-core" } tempfile = { version = "3.10.1", optional = true } thiserror = "1.0.50" tikv = { version = "0.3.0-surreal.1", default-features = false, package = "surrealdb-tikv-client", optional = true } tracing = "0.1.40" trice = "0.4.0" ulid = { version = "1.1.0", features = ["serde"] } unicase = "2.7.0" url = "2.5.0" [dev-dependencies] criterion = { version = "0.5.1", features = ["async_tokio"] } env_logger = "0.10.1" flate2 = "1.0.28" pprof = { version = "0.13.0", features = ["flamegraph", "criterion"] } serial_test = "2.0.0" temp-dir = "0.1.11" test-log = { version = "0.2.13", features = ["trace"] } time = { version = "0.3.36", features = ["serde"] } tokio = { version = "1.34.0", features = ["macros", "sync", "rt-multi-thread"] } tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } wiremock = "0.6.0" [target.'cfg(target_arch = "wasm32")'.dependencies] pharos = "0.5.3" ring = { version = "0.17.7", features = ["wasm32_unknown_unknown_js"] } tokio = { version = "1.34.0", default-features = false, features = [ "rt", "sync", ] } uuid = { version = "1.6.1", features = ["serde", "js", "v4", "v7"] } wasm-bindgen-futures = "0.4.39" wasmtimer = { version = "0.2.0", default-features = false, features = [ "tokio", ] } ws_stream_wasm = "0.7.4" [target.'cfg(not(target_arch = "wasm32"))'.dependencies] tokio = { version = "1.34.0", default-features = false, features = [ "macros", "io-util", "io-std", "fs", "rt-multi-thread", "time", "sync", ] } tokio-tungstenite = { version = "0.21.0", optional = true } uuid = { version = "1.6.1", features = ["serde", "v4", "v7"] } [lib] name = "surrealdb_core"