boatramp-node 0.2.12

Node assembly for boatramp: the parsed config model (and, incrementally, the config-to-running-node assembly) that the serve binary and library embedders share.
Documentation
[package]
name = "boatramp-node"
version.workspace = true
readme.workspace = true
homepage.workspace = true
documentation.workspace = true
keywords.workspace = true
categories.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
description = "Node assembly for boatramp: the parsed config model (and, incrementally, the config-to-running-node assembly) that the serve binary and library embedders share."

[dependencies]
boatramp-core.workspace = true
boatramp-server.workspace = true
boatramp-docker.workspace = true
# Concrete compute backends assembled by `compute::build_compute` (the deps
# boatramp-server deliberately avoids). Linux/KVM deps are `target_os`-gated in
# these crates, so enabling them cross-platform is a no-op off Linux.
boatramp-container.workspace = true
boatramp-firecracker = { workspace = true, features = [
  "build",
  "backend",
  "embedded",
] }
# The macOS-native VMM backend (Virtualization.framework). Its objc2/Virtualization
# deps are `target_os = "macos"`-gated, so enabling `backend` cross-platform is a
# no-op off macOS (the crate compiles to a shell whose `launch` is unreachable
# because `build_compute` cfg-gates registration to macOS).
boatramp-vz = { workspace = true, features = ["backend"] }
# Handler-runtime assembly (`handlers::build_handler_runtime`/`build_sql_backends`);
# optional, pulled only by the `handlers` feature (the lean node has no wasm engine).
boatramp-handlers = { workspace = true, optional = true }
boatramp-storage = { workspace = true, optional = true }
# Optional: derives `clap::ValueEnum` on the backend-selection enums so the CLI
# binary uses them directly in its args. A non-CLI embedder never pulls clap.
clap = { workspace = true, optional = true }
ron.workspace = true
serde = { workspace = true, features = ["derive"] }
thiserror.workspace = true
# Naming the detached reconcile `JoinHandle`s that `assemble` returns.
tokio.workspace = true
tracing.workspace = true
# Generating the managed SQL credential (PLAN-managed-compute-sql; only used under
# the sql features, but a tiny dep so it stays unconditional).
getrandom.workspace = true
# The managed-SQL resolvers (`ManagedDbEnv`/`DeployEndpointResolver`) implement the
# async ManagedDbEnvResolver/ComputeEndpointResolver traits in non-test code; only
# used under the sql features but a tiny dep so it stays unconditional.
async-trait.workspace = true

[features]
# Cfg markers matching the binary's feature set: `config` parses every section in
# every build (so config files stay portable), but a handful of fields/impls are
# cfg-gated to the feature that consumes them. The binary forwards each of its
# features to the matching one here so the gating stays consistent.
acme-dns = []
azure = ["dep:boatramp-storage", "boatramp-storage/azure"]
# Derive `clap::ValueEnum` on the backend enums (enabled by the CLI binary).
clap = ["dep:clap"]
cloudflare-kv = ["dep:boatramp-storage", "boatramp-storage/cloudflare-kv"]
cluster = []
console = ["boatramp-server/console"]
fs = ["dep:boatramp-storage", "boatramp-storage/fs"]
gcs = ["dep:boatramp-storage", "boatramp-storage/gcs"]
# The wasm handler runtime assembly: the engine + the libsql `sql` binding backend.
handlers = [
  "dep:boatramp-handlers",
  "dep:boatramp-storage",
  "boatramp-handlers/engine",
  "boatramp-server/handlers",
  "boatramp-storage/sql",
]
# External bring-your-own SQL for the handler `sql` binding (each implies handlers).
sql-postgres = ["handlers", "boatramp-storage/sql-postgres"]
sql-mysql = ["handlers", "boatramp-storage/sql-mysql"]
s3 = ["dep:boatramp-storage", "boatramp-storage/s3"]
slatedb = ["dep:boatramp-storage", "boatramp-storage/slatedb"]
tls = []

[dev-dependencies]
# The in-process fidelity test (`node::tests`) drives the assembled router with a
# synthetic request over a temp `FsStorage` + `MemoryKv` (gated on `fs`).
axum = "0.8"
tempfile = "3"
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
tower = { version = "0.5", features = ["util"] }