#![deny(unsafe_code)]
#![cfg_attr(not(test), deny(clippy::unwrap_used))]
#![cfg_attr(not(test), warn(unused_crate_dependencies))]
#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
#![doc(
html_logo_url = "https://raw.githubusercontent.com/stateset/stateset-icommerce/main/assets/stateset.png",
html_favicon_url = "https://raw.githubusercontent.com/stateset/stateset-icommerce/main/assets/favicon.ico",
issue_tracker_base_url = "https://github.com/stateset/stateset-icommerce/issues/"
)]
#[cfg(feature = "core")]
pub use stateset_primitives as primitives;
#[cfg(feature = "core")]
pub use stateset_core as core;
#[cfg(feature = "core")]
pub use stateset_db as db;
#[cfg(feature = "core")]
pub use stateset_embedded as embedded;
#[cfg(feature = "core")]
pub use stateset_observability as observability;
#[cfg(feature = "crypto")]
pub use stateset_crypto as crypto;
#[cfg(feature = "policy")]
pub use stateset_policy as policy;
#[cfg(feature = "macros")]
pub use stateset_macros as macros;
#[cfg(feature = "sync")]
pub use stateset_sync as sync;
#[cfg(feature = "sync")]
pub mod sync_runtime;
#[cfg(feature = "sync")]
pub use sync_runtime::{SyncRuntime, SyncRuntimeAuth, SyncRuntimeConfig, SyncRuntimeSnapshot};
#[cfg(feature = "core")]
pub mod prelude {
pub use stateset_embedded::Commerce;
pub use stateset_primitives::{CurrencyCode, Money, Sku};
pub use stateset_core::{
CustomerId, FulfillmentId, OrderId, OrderItemId, PaymentId, ProductId, ReturnId, ShipmentId,
};
pub use stateset_core::{
AddCartItem,
Address,
AdjustInventory,
Cart,
CreateCart,
CreateCustomer,
CreateInventoryItem,
CreateOrder,
CreateOrderItem,
CreatePayment,
CreateProduct,
CreateReturn,
CreateShipment,
Customer,
CustomerFilter,
CustomerStatus,
InventoryItem,
Order,
OrderFilter,
OrderItem,
OrderStatus,
Payment,
PaymentFilter,
PaymentStatus,
Product,
ProductFilter,
ProductStatus,
Return,
ReturnFilter,
ReturnStatus,
Shipment,
};
pub use stateset_core::CommerceEvent;
pub use stateset_core::{CommerceError, Result};
pub use stateset_db::Database;
pub use stateset_observability::{Metrics, MetricsConfig};
#[cfg(feature = "sync")]
pub use crate::{SyncRuntime, SyncRuntimeAuth, SyncRuntimeConfig, SyncRuntimeSnapshot};
#[cfg(feature = "sync")]
pub use stateset_sync::{
AttestationError, BudgetAuthorization, BudgetCheckpoint, CommandAttestation,
CommandConvergence, CommandInclusionProof, CommitmentManifest, CommitmentTrustPolicy,
CounterpartyCommitment, CounterpartyConvergenceStatus, DeadLetter, KernelExecutionError,
KernelMetadata, KernelReceipt, KernelReceiptStatus, KernelTransaction,
ManifestVerificationError, PolicyCheckpoint, PolicyDecision, PullResult, PushConfirmation,
PushResult, RemoteHead, SequenceAuthority, SequencerHttpTransport, SignerTrustMode,
SyncConfig, SyncEngine, SyncError, SyncEvent, SyncStatus, VerifiedCommitmentManifest,
compute_commitment_manifest_hash, sign_commitment_manifest, verify_commitment_manifest,
verify_commitment_manifest_against_state,
};
}
#[cfg(test)]
mod tests {
use super::*;
#[cfg(feature = "core")]
#[test]
fn prelude_imports_compile() {
use crate::prelude::*;
let _: Money = Money::zero(CurrencyCode::USD);
let _: OrderId = OrderId::new();
#[cfg(feature = "sync")]
{
let _: SyncConfig = SyncConfig::new("agent-1", "tenant-1", "store-1");
let _: SequenceAuthority = SequenceAuthority::LocalOutbox;
let runtime = SyncRuntimeConfig::new(
"https://sequencer.stateset.com",
SyncConfig::new("agent-1", "tenant-1", "store-1"),
)
.with_agent_key_id(5)
.build()
.unwrap();
let _: SyncRuntimeSnapshot = runtime.snapshot();
assert_eq!(runtime.transport().agent_id(), "agent-1");
assert_eq!(runtime.transport().agent_key_id(), 5);
}
}
#[cfg(feature = "core")]
#[test]
fn core_reexport_accessible() {
let _ = core::CommerceError::NotFound;
}
#[cfg(feature = "core")]
#[test]
fn primitives_reexport_accessible() {
let _id = primitives::OrderId::new();
}
#[cfg(feature = "core")]
#[test]
fn db_reexport_accessible() {
let _cfg = db::DatabaseConfig::in_memory();
}
#[cfg(feature = "core")]
#[test]
fn observability_reexport_accessible() {
let _cfg = observability::MetricsConfig::default();
}
#[cfg(feature = "crypto")]
#[test]
fn crypto_reexport_accessible() {
let _ = crypto::ZERO_HASH;
}
#[cfg(feature = "sync")]
#[test]
fn sync_reexport_accessible() {
let runtime = SyncRuntimeConfig::new(
"https://sequencer.stateset.com",
sync::SyncConfig::new("agent-1", "tenant-1", "store-1"),
)
.with_api_key("ss_example_key")
.with_agent_key_id(11)
.build()
.unwrap();
assert_eq!(runtime.transport().agent_key_id(), 11);
}
#[cfg(feature = "policy")]
#[test]
fn policy_reexport_accessible() {
let _ = policy::PolicyEngine::new();
}
#[cfg(feature = "macros")]
#[test]
fn macros_reexport_accessible() {
#[allow(unused_imports)]
use crate::macros as _;
}
}