[package]
name = "taganak-core"
description = "RDF types and interfaces from Taganak (Transactional, Aggregating Graph Architecture for Networking and Access to Knowledge)"

version.workspace = true
edition.workspace = true
authors.workspace = true
homepage.workspace = true
repository.workspace = true
license.workspace = true
keywords.workspace = true
categories.workspace = true

[dependencies]
const_format = "0.2.32"
iref = { version = "3.2.2", features = ["macros"] }
language-tags = "0.3.2"
unicode-normalization = "0.1.23"
uuid = { version = "1.10.0", features = ["v4"] }

thiserror.workspace = true
tracing.workspace = true
futures.workspace = true

winnow = { version = "0.7.2", optional = true }
tokio = { version = "1.39.2", features = ["io-util"] }

chrono = { version = "0.4.39", optional = true }
rust_decimal = { version = "1.36.0", optional = true }
curie = "0.1.3"
bimap = "0.6.3"
async-utf8-decoder = "1.0.0"
tokio-util = { version = "0.7.13", features = ["compat"] }
async-stream = "0.3.6"
dyn-clone = "1.0.19"
base64 = { version = "0.22.1", optional = true }
iriencoding = "1.0.1"

[target.'cfg(target_arch = "wasm32")'.dependencies]
uuid = { version = "1.10.0", features = ["v4", "js"] }

[features]
default = ["source_n_triples", "source_turtle", "base64"]
all = ["default"]
debug = ["winnow/debug"]

# Sources and formats
source_n_triples = ["_parsers"]
source_turtle = ["source_n_triples", "_parsers"]

# Literal types
chrono = ["dep:chrono"]
decimal = ["dep:rust_decimal"]
base64 = ["dep:base64"]

# Internal / dependency groups
_parsers = ["dep:winnow"]

[dev-dependencies]
env_logger = "0.11.6"
libtest-mimic = "0.8.1"
tokio-test = "0.4.4"
taganak-framework = { path = "../framework/" }
taganak-orm = { path = "../orm/", features = ["derive"] }

[[test]]
name = "rdf_test_suites"
path = "tests/rdf_test_suites/main.rs"
harness = false
