microservices 0.9.0

LNP/BP support crate for devloping microservices
Documentation
[package]
name = "microservices"
version = "0.9.0"
license = "Apache-2.0"
authors = ["Dr Maxim Orlovsky <orlovsky@pandoracore.com>"]
description = "LNP/BP support crate for devloping microservices"
repository = "https://github.com/internet2-org/rust-microservices"
homepage = "https://github.com/internet2-org"
keywords = ["internet2", "microservices", "lnp-bp", "esb", "rpc"]
readme = "README.md"
edition = "2021"
rust-version = "1.59.0"

[lib]
name = "microservices"
path = "src/lib.rs"
crate-type = ["rlib", "staticlib"]

[dependencies]
# LNP/BP libraries
amplify = "3.13.0"
secp256k1 = "0.24.2"
internet2 = { version = "0.9.0", default-features = false, features = ["derive"] }
lightning_encoding = "0.9.1"
strict_encoding = { version = "0.9.0", default-features = false, features = ["derive"] }
# Serialization & parsing
serde_crate = { package = "serde", version = "1", features = ["derive"], optional = true }
serde_with = { version = "1.14", optional = true, features = ["hex"] }
toml = { version = "0.5", optional = true }
# Congig
settings = { version = "0.10", package = "config", optional = true }
log = { version = "0.4", features = ["max_level_trace", "release_max_level_debug"] }
shellexpand = { version = "2.1", optional = true }
env_logger = "0.7"
colored = { version = "2", optional = true }
# Networking
zmq2 = { package = "zmq2", version = "0.5", optional = true }
nix = ">=0.24"
# TODO: remove after feature(once_cell) stabilization
once_cell = "1.12.0"

# Recommended set of features:
# 1. Standalone node: `server` (=`node`+`shell`)
# 2. Cli to remote node: `cli` (auto includes `shell` and `integration`)
# 3. Mobile app talking to a server: `client`
# 4. Mobile app with embedded node: `embedded` (auto includes `client` + `node`)
# 5. Simple cli utility app: `shell`
[features]
default = ["client", "tor"]
all = ["server", "cli", "tor", "serde", "peer"]

# Server is a standalone application that runs daemon
server = ["node", "shell"]
# Command-line application feature
cli = ["shell", "client", "serde", "colored"]

# Embedded is an app that contains embedded node and that talks to it through
# integration layer
embedded = ["client", "node"]
# Server node can be run as a part of mobile app and other types of clients;
# thus `server` != `node`.
# This feature results in building with features not required for command-line
node = ["serde", "_config", "_rpc"]
# Feature is required for any applications that talks to daemon processes
client = ["_rpc"]
# Required for all apps that can be launched from command-line shell as binaries
# (i.e. both servers and cli)
shell = ["settings", "amplify/parse_arg", "serde", "_config", "shellexpand"]

# Internally used features for convenience
_config = []
_rpc = ["zmq"]

serde = ["serde_crate", "serde_with", "amplify/serde", "internet2/serde", "toml"]
peer = ["node", "internet2/keygen"]
zmq = ["zmq2", "internet2/zmq"]
tor = ["internet2/tor"]