webhooksmith 0.1.0

Production-grade webhook delivery engine with transactional outbox, HMAC signing, and dead letter queue
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
name = "webhooksmith"
version = "0.1.0"
authors = ["Biplab Das <biplabku@gmail.com>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Production-grade webhook delivery engine with transactional outbox, HMAC signing, and dead letter queue"
readme = "README.md"
keywords = [
    "webhook",
    "outbox",
    "delivery",
    "postgres",
    "async",
]
categories = [
    "web-programming",
    "asynchronous",
    "database",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/biplabku/webhooksmith"

[lib]
name = "webhooksmith"
path = "src/lib.rs"

[[example]]
name = "basic"
path = "examples/basic.rs"

[[example]]
name = "demo"
path = "examples/demo.rs"

[[example]]
name = "outbox"
path = "examples/outbox.rs"

[[test]]
name = "adversarial"
path = "tests/adversarial.rs"

[[test]]
name = "bombardment"
path = "tests/bombardment.rs"

[[test]]
name = "crud_and_ops"
path = "tests/crud_and_ops.rs"

[[test]]
name = "dns_rebinding"
path = "tests/dns_rebinding.rs"

[[test]]
name = "e2e"
path = "tests/e2e.rs"

[[test]]
name = "edge_cases"
path = "tests/edge_cases.rs"

[[test]]
name = "endpoint_lifecycle"
path = "tests/endpoint_lifecycle.rs"

[[test]]
name = "fanout"
path = "tests/fanout.rs"

[[test]]
name = "full_api_exercise"
path = "tests/full_api_exercise.rs"

[[test]]
name = "graceful_shutdown"
path = "tests/graceful_shutdown.rs"

[[test]]
name = "idempotency"
path = "tests/idempotency.rs"

[[test]]
name = "new_api"
path = "tests/new_api.rs"

[[test]]
name = "stress"
path = "tests/stress.rs"

[[test]]
name = "timeouts"
path = "tests/timeouts.rs"

[[test]]
name = "updated_at"
path = "tests/updated_at.rs"

[dependencies.chrono]
version = "0.4"
features = ["serde"]

[dependencies.futures]
version = "0.3"

[dependencies.hex]
version = "0.4"

[dependencies.hmac]
version = "0.12"

[dependencies.rand]
version = "0.8"

[dependencies.reqwest]
version = "0.12"
features = [
    "json",
    "rustls-tls",
    "stream",
]
default-features = false

[dependencies.serde]
version = "1"
features = ["derive"]

[dependencies.serde_json]
version = "1"

[dependencies.sha2]
version = "0.10"

[dependencies.sqlx]
version = "0.8"
features = [
    "runtime-tokio-rustls",
    "postgres",
    "uuid",
    "chrono",
    "json",
    "migrate",
]

[dependencies.subtle]
version = "2"

[dependencies.thiserror]
version = "2"

[dependencies.tokio]
version = "1"
features = ["full"]

[dependencies.tracing]
version = "0.1"

[dependencies.url]
version = "2"

[dependencies.uuid]
version = "1"
features = [
    "v4",
    "serde",
]

[dev-dependencies.axum]
version = "0.7"

[dev-dependencies.futures]
version = "0.3"

[dev-dependencies.tokio]
version = "1"
features = ["full"]

[dev-dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]

[dev-dependencies.wiremock]
version = "0.6"