# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

[package]
name = "apache-avro"
version = "0.15.0"
authors = ["Apache Avro team <dev@avro.apache.org>"]
description = "A library for working with Apache Avro in Rust"
license = "Apache-2.0"
readme = "README.md"
repository = "https://github.com/apache/avro"
edition = "2018"
keywords = ["avro", "data", "serialization"]
categories = ["encoding"]
documentation = "https://docs.rs/apache-avro"

[features]
bzip = ["bzip2"]
derive = ["apache-avro-derive"]
snappy = ["crc32fast", "snap"]
xz = ["xz2"]
zstandard = ["zstd"]

[lib]
# disable benchmarks to allow passing criterion arguments to `cargo bench`
bench = false
path = "src/lib.rs"

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

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

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

[dependencies]
apache-avro-derive = { default-features = false, version = "0.15.0", path = "../avro_derive", optional = true }
byteorder = { default-features = false, version = "1.4.3" }
bzip2 = { default-features = false, version = "0.4.3", optional = true }
crc32fast = { default-features = false, version = "1.3.2", optional = true }
digest = { default-features = false, version = "0.10.6", features = ["core-api"] }
lazy_static = { default-features = false, version = "1.4.0" }
libflate = { default-features = false, version = "1.2.0" }
log = { default-features = false, version = "0.4.17" }
num-bigint = { default-features = false, version = "0.4.3" }
regex = { default-features = false, version = "1.7.0", features = ["std", "perf"] }
serde = { default-features = false, version = "1.0.150", features = ["derive"] }
serde_json = { default-features = false, version = "1.0.89", features = ["std"] }
snap = { default-features = false, version = "1.1.0", optional = true }
strum = { default-features = false, version = "0.24.1" }
strum_macros = { default-features = false, version = "0.24.3" }
thiserror = { default-features = false, version = "1.0.37" }
typed-builder = { default-features = false, version = "0.11.0" }
uuid = { default-features = false, version = "1.2.2", features = ["serde", "std"] }
xz2 = { default-features = false, version = "0.1.7", optional = true }
zerocopy = { default-features = false, version = "0.6.1" }
zstd = { default-features = false, version = "0.12.1+zstd.1.5.2", optional = true }

[target.'cfg(target_arch = "wasm32")'.dependencies]
quad-rand = { default-features = false, version = "0.2.1" }

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
rand = { default-features = false, version = "0.8.5", features = ["default"] }

[dev-dependencies]
anyhow = { default-features = false, version = "1.0.66", features = ["std"] }
apache-avro-test-helper = { default-features = false, version = "0.15.0", path = "../avro_test_helper" }
criterion = { default-features = false, version = "0.4.0" }
hex-literal = { default-features = false, version = "0.3.4" }
md-5 = { default-features = false, version = "0.10.5" }
pretty_assertions = { default-features = false, version = "1.3.0", features = ["std"] }
sha2 = { default-features = false, version = "0.10.6" }
