[package]
edition = "2021"
rust-version = "1.91"
name = "opa-wasm"
version = "0.2.0"
authors = ["Quentin Gliech <quenting@element.io>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
default-run = "opa-eval"
description = "A crate to use OPA policies compiled to WASM."
readme = "README.md"
license = "Apache-2.0"
repository = "https://github.com/matrix-org/rust-opa-wasm"
[features]
all-builtins = [
"all-crypto-builtins",
"base64url-builtins",
"hex-builtins",
"json-builtins",
"rand-builtins",
"semver-builtins",
"sprintf-builtins",
"units-builtins",
"yaml-builtins",
"urlquery-builtins",
"time-builtins",
]
all-crypto-builtins = [
"crypto-digest-builtins",
"crypto-hmac-builtins",
"crypto-md5-builtins",
"crypto-sha1-builtins",
"crypto-sha2-builtins",
]
base64url-builtins = [
"dep:base64",
"dep:hex",
]
cli = [
"loader",
"fast",
"dep:camino",
"dep:clap",
"dep:tracing-forest",
"dep:tracing-subscriber",
"tokio/fs",
"tokio/rt-multi-thread",
]
crypto-digest-builtins = [
"dep:digest",
"dep:hex",
]
crypto-hmac-builtins = [
"dep:hmac",
"dep:hex",
]
crypto-md5-builtins = ["dep:md-5"]
crypto-sha1-builtins = ["dep:sha1"]
crypto-sha2-builtins = ["dep:sha2"]
default = [
"all-builtins",
"fast",
]
fast = [
"wasmtime/cranelift",
"wasmtime/parallel-compilation",
]
hex-builtins = ["dep:hex"]
json-builtins = ["dep:json-patch"]
loader = [
"dep:tokio-tar",
"dep:async-compression",
"dep:futures-util",
"tokio/fs",
"tokio/io-util",
]
rand-builtins = ["rng"]
rng = ["dep:rand"]
semver-builtins = ["dep:semver"]
sprintf-builtins = ["dep:sprintf"]
time = ["dep:chrono"]
time-builtins = [
"time",
"dep:chrono-tz",
"dep:duration-str",
"dep:chronoutil",
]
units-builtins = ["dep:parse-size"]
urlquery-builtins = [
"dep:form_urlencoded",
"dep:urlencoding",
]
yaml-builtins = ["dep:serde_yaml"]
[lib]
name = "opa_wasm"
path = "src/lib.rs"
[[bin]]
name = "opa-eval"
path = "src/bin/opa-eval.rs"
required-features = ["cli"]
[[bin]]
name = "simple"
path = "src/bin/simple.rs"
required-features = ["cli"]
[[test]]
name = "smoke_test"
path = "tests/smoke_test.rs"
required-features = ["loader"]
[dependencies.anyhow]
version = "1"
[dependencies.async-compression]
version = "0.4"
features = [
"tokio",
"gzip",
]
optional = true
[dependencies.base64]
version = "0.22"
optional = true
[dependencies.camino]
version = "1"
optional = true
[dependencies.chrono]
version = "0.4.31"
features = [
"std",
"clock",
]
optional = true
default-features = false
[dependencies.chrono-tz]
version = ">=0.6, <0.11.0"
optional = true
[dependencies.chronoutil]
version = "0.2"
optional = true
[dependencies.clap]
version = "4"
features = ["derive"]
optional = true
[dependencies.digest]
version = "0.10"
optional = true
[dependencies.duration-str]
version = ">=0.11, <0.16"
optional = true
default-features = false
[dependencies.form_urlencoded]
version = "1"
optional = true
[dependencies.futures-util]
version = "0.3"
optional = true
[dependencies.hex]
version = "0.4"
optional = true
[dependencies.hmac]
version = "0.12"
optional = true
[dependencies.json-patch]
version = ">=0.2.3, <4.2.0"
optional = true
default-features = false
[dependencies.md-5]
version = "0.10"
optional = true
[dependencies.parse-size]
version = "1"
features = ["std"]
optional = true
[dependencies.rand]
version = "0.8"
optional = true
[dependencies.semver]
version = "1"
optional = true
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1.0.18"
[dependencies.serde_yaml]
version = "0.9.1"
optional = true
[dependencies.sha1]
version = "0.10"
optional = true
[dependencies.sha2]
version = "0.10"
optional = true
[dependencies.sprintf]
version = ">=0.3, <0.5"
optional = true
[dependencies.thiserror]
version = ">=1, <3"
[dependencies.tokio]
version = "1.5"
features = [
"sync",
"macros",
]
[dependencies.tokio-tar]
version = "0.3"
optional = true
[dependencies.tracing]
version = "0.1.27"
[dependencies.tracing-forest]
version = "0.3.0"
optional = true
[dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]
optional = true
[dependencies.urlencoding]
version = "2"
optional = true
[dependencies.wasmtime]
version = ">=42, <44"
features = [
"async",
"anyhow",
]
default-features = false
[dev-dependencies.insta]
version = "1"
features = ["yaml"]
[dev-dependencies.tokio]
version = "1.5"
features = [
"macros",
"fs",
"rt",
"rt-multi-thread",
]
[dev-dependencies.wasmtime]
version = ">=42, <44"
features = [
"cranelift",
"anyhow",
]
default-features = false
[build-dependencies.rayon]
version = "^1.6"
[build-dependencies.version_check]
version = "^0.9.4"