[package]
name = "sync-ls"
description = "Synchronized language service inspired by async-lsp, primarily for tinymist."
categories = ["compilers", "development-tools"]
keywords = ["lsp", "dap", "language", "language-server"]
authors.workspace = true
version.workspace = true
license.workspace = true
edition.workspace = true
homepage.workspace = true
repository.workspace = true
rust-version.workspace = true

[dependencies]

anyhow.workspace = true
crossbeam-channel.workspace = true
futures.workspace = true
log.workspace = true
parking_lot.workspace = true
serde.workspace = true
serde_json.workspace = true
tinymist-std.workspace = true

dapts = { workspace = true, optional = true }
lsp-types = { workspace = true, optional = true }

clap = { workspace = true, optional = true }
js-sys = { workspace = true, optional = true }
serde-wasm-bindgen = { workspace = true, optional = true }
tokio = { workspace = true, features = ["rt"], optional = true }
tokio-util = { workspace = true, optional = true }
wasm-bindgen = { workspace = true, optional = true }

[features]
dap = ["dapts"]
lsp = ["lsp-types"]
server = ["tokio"]
system = ["tokio", "tokio/time", "tokio-util", "clap", "tinymist-std/system"]
web = ["js-sys", "wasm-bindgen", "serde-wasm-bindgen", "tinymist-std/web"]

[package.metadata.docs.rs]
features = ["dap", "lsp", "system", "server"]

[lints]
workspace = true
