# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: 2020 The Gleam contributors

[workspace]
resolver = "2"
members = [
  "gleam-bin",
  "compiler-cli",
  "compiler-core",
  "compiler-wasm",
  "language-server",
  "test-helpers-rs",
  "test-commands",
  "test-output",
  "test-package-compiler",
  "test-project-compiler",
  "hexpm",
  "pretty-arena",
  "format",
  "erlang-term-format",
  "erlang-abstract-format",
]

# common dependencies
[workspace.dependencies]
# Command line interface
clap = { version = "4", features = ["derive"] }
# Immutable data structures
im = { version = "15", features = ["serde"] }
# Extra iter methods
itertools = "0"
# Parsing
regex = "1"
# Colours in terminal
termcolor = "1"
# Data (de)serialisation
serde = { version = "1", features = ["derive", "rc"] }
serde_json = "1"
# toml config file parsing
toml = "0.9"
# Enum trait impl macros
strum = { version = "0", features = ["derive"] }
# Creation of tar file archives
tar = "0"
# gzip compression
flate2 = "1"
# Logging
tracing = "0"
# Macro to work around Rust's traits not working with async. Sigh.
async-trait = "0"
# HTTP types
http = "1"
http-serde = "2.1.1"
# Async combinators for futures
futures = "0"
# Little helper to omit fields that cannot be debug printed
debug-ignore = "1"
# base encoding
base16 = "0"
# Language server protocol server plumbing
lsp-server = "0"
lsp-types = { package = "gen-lsp-types", version = "0.5.0", features = ["url"] }
# Compact clone-on-write vector & string type
ecow = "0"
# Drop in replacement for std::path but with only utf-8
camino = "1"
# std::error::Error definition macro
thiserror = "2"
# Test assertion errors with diffs
pretty_assertions = "1"
# Snapshot testing to make test maintenance easier
insta = { version = "1", features = ["glob"] }
# A transitive dependency needed to compile into wasm32-unknown-unknown
# See https://docs.rs/getrandom/latest/getrandom/index.html#webassembly-support
getrandom = { version = "0.2", features = ["js"] }
# Non-empty vectors
vec1 = "1"
# Pubgrub dependency resolution algorithm
pubgrub = "0.3"
# Open the user's web browser
opener = "0"
# Recursively traversing directories
ignore = "0"
# Parsing of arbitrary width int values
num-bigint = { version = "0.4.6", features = ["serde"] }
num-traits = "0.2.19"
# Unicode grapheme traversal
unicode-segmentation = "1.13.2"
# Checksums
xxhash-rust = { version = "0", features = ["xxh3"] }

