[package]
name = "loro-internal"
version = "1.11.1"
edition = "2021"
license = "MIT"
description = "Loro internal library. Do not use it directly as it's not stable."
documentation = "https://docs.rs/loro/"
homepage = "https://loro.dev"
repository = "https://github.com/loro-dev/loro/"
authors = ["Zixuan Chen", "Liang Zhao"]
categories = []
keywords = ["crdt", "local-first"]

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
generic-btree = { version = "^0.10.7" }
smallvec = { workspace = true }
loro-delta = { path = "../delta", version = "1.9.1", package = "loro-delta" }
rle = { path = "../rle", version = "1.6.0", package = "loro-rle" }
loro-common = { path = "../loro-common", version = "1.11.1" }
fractional_index = { path = "../fractional_index", features = [
    "serde",
], version = "1.6.0", package = "loro_fractional_index" }
loro-kv-store = { path = "../kv-store", version = "1.11.1" }
rustc-hash = { workspace = true }
serde = { workspace = true }
thiserror = { workspace = true }
enum-as-inner = { workspace = true }
serde_json = { workspace = true }
bytes = { workspace = true }
xxhash-rust = { workspace = true }
serde_columnar = { workspace = true }
itertools = { workspace = true }
enum_dispatch = { workspace = true }
once_cell = { workspace = true }
arbitrary = { version = "1", optional = true }
postcard = { version = "1", features = ["use-std"] }
append-only-bytes = { version = "0.1.12", features = ["u32_range"] }
im = { version = "15.1.0", features = ["serde"] }
tabled = { version = "0.10.0", optional = true }
wasm-bindgen = { version = "=0.2.100", optional = true }
js-sys = { version = "0.3.60", optional = true }
num = "0.4.0"
rand = { version = "0.8.5" }
getrandom = "0.2.15"
leb128 = "0.2.5"
num-traits = "0.2"
either = "1"
md5 = "0.7.0"
arref = "0.1.0"
tracing = { version = "0.1" }
nonmax = "0.5.5"
ensure-cov = { workspace = true }
pretty_assertions = "1.4.1"
thread_local = "1.1.8"
parking_lot = "0.12.5"
pest = "2.8.3"
pest_derive = "2.8.3"

[target.'cfg(loom)'.dependencies]
loom = { version = "0.7", features = ["checkpoint"] }

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

[target.'cfg(target_arch = "wasm32")'.dependencies.getrandom]
version = "0.2.15"
features = ["js"]

[target.'cfg(all(target_arch = "wasm32", not(features = "wasm")))'.dependencies]
wasm-bindgen = "0.2.100"

[dev-dependencies]
arbitrary = { version = "1" }
miniz_oxide = "0.7.1"
rand = { version = "0.8.5" }
tabled = "0.10.0"
ctor = "0.1.23"
bench-utils = { path = "../bench-utils" }
dev-utils = { path = "../dev-utils" }
zstd = "0.13.0"
criterion = { version = "0.7.0", features = ["html_reports"] }

# See https://matklad.github.io/2021/02/27/delete-cargo-integration-tests.html
[lib]
doctest = false
bench = false

[features]
# "wasm" will use utf-16 index by default when using text related stuff; But it'll use utf-8 encoding internally.
wasm = ["wasm-bindgen", "js-sys", "loro-common/wasm"]
# whether to use list slice instead of raw str in text container
test_utils = ["arbitrary", "tabled"]
# whether enable the counter container
counter = ["loro-common/counter"]
logging = ["loro-common/logging"]
jsonpath = []

[[bench]]
name = "text_r"
harness = false

[[bench]]
name = "list"
harness = false

[[bench]]
name = "encode"
harness = false

[[bench]]
name = "pending"
harness = false

[[bench]]
name = "event"
harness = false

[[bench]]
name = "map"
harness = false

[[bench]]
name = "tree"
harness = false

[[bench]]
name = "jsonpath"
harness = false
