[package]
name = "jmespath_extensions"
version = "0.4.1"
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
description = "Extended functions for JMESPath queries - 150+ functions for strings, arrays, dates, hashing, encoding, geo, and more"
documentation = "https://docs.rs/jmespath_extensions"
readme = "README.md"
keywords = ["jmespath", "json", "query", "transform", "filter"]
categories = ["data-structures", "parsing", "text-processing"]

[dependencies]
jmespath.workspace = true
serde_json.workspace = true

# Optional deps
md-5 = { workspace = true, optional = true }
sha1 = { workspace = true, optional = true }
sha2 = { workspace = true, optional = true }
crc32fast = { workspace = true, optional = true }
base64 = { workspace = true, optional = true }
urlencoding = { workspace = true, optional = true }
regex = { workspace = true, optional = true }
url = { workspace = true, optional = true }
uuid = { workspace = true, optional = true }
hex = { workspace = true, optional = true }
rand = { workspace = true, optional = true }
chrono = { workspace = true, optional = true }
chrono-tz = { workspace = true, optional = true }
strsim = { workspace = true, optional = true }
rphonetic = { workspace = true, optional = true }
geoutils = { workspace = true, optional = true }
semver_crate = { workspace = true, optional = true }
ipnetwork = { workspace = true, optional = true }
nanoid = { workspace = true, optional = true }
ulid = { workspace = true, optional = true }
json-patch = { workspace = true, optional = true }

[features]
default = ["full"]
full = ["string", "array", "object", "math", "type", "utility", "validation", "path", "hash", "encoding", "regex", "url", "uuid", "rand", "datetime", "fuzzy", "expression", "phonetic", "geo", "semver", "network", "ids", "text", "duration", "color", "computing", "jsonpatch"]
core = ["string", "array", "object", "math", "type", "utility", "validation", "path", "expression"]
string = []
array = []
object = []
math = []
type = []
utility = []
validation = []
path = []
hash = ["dep:md-5", "dep:sha1", "dep:sha2", "dep:crc32fast"]
encoding = ["dep:base64", "dep:hex"]
regex = ["dep:regex"]
url = ["dep:url", "dep:urlencoding"]
uuid = ["dep:uuid"]
rand = ["dep:rand"]
datetime = ["dep:chrono", "dep:chrono-tz"]
fuzzy = ["dep:strsim"]
expression = []
phonetic = ["dep:rphonetic"]
geo = ["dep:geoutils"]
semver = ["dep:semver_crate"]
network = ["dep:ipnetwork"]
ids = ["dep:nanoid", "dep:ulid"]
text = []
duration = []
color = []
computing = []
jsonpatch = ["dep:json-patch"]

[dev-dependencies]
criterion.workspace = true

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