diff --git a/Cargo.toml b/Cargo.toml index 85239f6..536d372 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,28 +1,38 @@ [workspace] resolver = "2" - -members = [ - "Rust/tesseract", - "Rust/transports", - "Rust/utils" -] +members = [ "Rust/sdk", "Rust/transport", "Rust/utils", "Rust/framework" ] [workspace.package] -authors = ["Tesseract Systems, Inc. "] +authors = ["Daniel Leping", "Yehor Popovych", "Tesseract Systems, Inc."] edition = "2021" -version = "0.1.0" +version = "0.5.6" license = "Apache-2.0" +readme = "README.md" repository = "https://github.com/tesseract-one/Tesseract.swift" documentation = "https://github.com/tesseract-one/Tesseract.swift" +homepage = "https://github.com/tesseract-one/" +categories = ["api-bindings", "authentication", "network-programming"] +keywords = ["blockchain", "dApp", "wallet", "mobile", "bridge"] [workspace.dependencies] async-trait = "0.1" -cbindgen = "0.26" errorcon = "0.1" log = "0.4" -tesseract = { git = "https://github.com/tesseract-one/Tesseract.rs.git", branch = "master" } -tesseract-protocol-test = { git = "https://github.com/tesseract-one/Tesseract.rs.git", branch = "master" } -tesseract-protocol-substrate = { git = "https://github.com/tesseract-one/Tesseract.rs.git", branch = "master" } + +#build deps (C-interop) +cbindgen = "0.26" + +#tesseract +tesseract-one = "0.5" + +#protocols +tesseract-protocol-test = "0.5" +tesseract-protocol-substrate = "0.5" + +#local +tesseract-swift-utils = { path = "Rust/utils", version = "0.5.6"} +tesseract-swift-transport = { path = "Rust/transport", version = "0.5.6"} +tesseract-swift = { path = "Rust/sdk", version = "0.5.6"} [profile.release] strip = true diff --git a/Examples/Rust/Rust/Cargo.toml b/Examples/Rust/Rust/Cargo.toml index e7d84de..7702b86 100644 --- a/Examples/Rust/Rust/Cargo.toml +++ b/Examples/Rust/Rust/Cargo.toml @@ -1,24 +1,20 @@ [workspace] - resolver = "2" - members = [ "app", "wallet" ] [workspace.dependencies] -tesseract = { git = "https://github.com/tesseract-one/Tesseract.rs.git", branch = "dapp-fixes" } -tesseract-protocol-test = { git = "https://github.com/tesseract-one/Tesseract.rs.git", branch = "dapp-fixes" } -#tesseract = { path = "../../../../Tesseract.rs/tesseract", features = ["client"] } -#tesseract-protocol-test = { path = "../../../../Tesseract.rs/protocols/test", features = ["client"] } +tesseract-one = "0.5" +tesseract-protocol-test = "0.5" + +tesseract-swift = { path = "../../../Rust/sdk" } -tesseract-swift-utils = { path = "../../../Rust/utils" } -tesseract-swift-transports = { path = "../../../Rust/transports" } async-trait = "0.1" errorcon = "0.1" log = "0.4" -log-panics = { version = "2", features = ["with-backtrace"]} +log-panics = { version = "2", features = ["with-backtrace"] } stderrlog = "0.5" cbindgen = "0.26" diff --git a/Examples/Rust/Rust/app/Cargo.toml b/Examples/Rust/Rust/app/Cargo.toml index b15dac9..9d039df 100644 --- a/Examples/Rust/Rust/app/Cargo.toml +++ b/Examples/Rust/Rust/app/Cargo.toml @@ -3,16 +3,15 @@ name = "app" version = "0.0.1" authors = ["Tesseract Systems, Inc. "] license = "Apache-2.0" -description = "Cardano bindings for C." -keywords = [ "Tesseract", "Cardano", "C" ] +description = "Tesseract SDK Client Example" edition = "2021" [dependencies] -tesseract-swift-utils.workspace = true -tesseract-swift-transports = { workspace = true, features = ["client"]} +tesseract-swift = { workspace = true, features = ["client"] } -tesseract = { workspace = true, features = ["client"] } +tesseract-one = { workspace = true, features = ["client"] } tesseract-protocol-test = { workspace = true, features = ["client"] } + async-trait.workspace = true errorcon.workspace = true log.workspace = true diff --git a/Examples/Rust/Rust/app/cbindgen.toml b/Examples/Rust/Rust/app/cbindgen.toml index 011c488..37736b6 100644 --- a/Examples/Rust/Rust/app/cbindgen.toml +++ b/Examples/Rust/Rust/app/cbindgen.toml @@ -12,7 +12,7 @@ prefix_with_name = true [parse] parse_deps = true -include = ["tesseract-swift-utils", "tesseract-swift-client"] +include = ["tesseract-swift", "tesseract-swift-utils", "tesseract-swift-transport"] [export] exclude = [ diff --git a/Examples/Rust/Rust/app/src/delegate.rs b/Examples/Rust/Rust/app/src/delegate.rs index 0802c2d..f8920cc 100644 --- a/Examples/Rust/Rust/app/src/delegate.rs +++ b/Examples/Rust/Rust/app/src/delegate.rs @@ -2,8 +2,8 @@ use std::{collections::HashMap, sync::Arc}; use async_trait::async_trait; -use tesseract::client::{transport::Status, Delegate}; -use tesseract_swift_utils::{ptr::CAnyDropPtr, string::CString, string::CStringRef, traits::AsCRef}; +use tesseract_one::client::{transport::Status, Delegate}; +use tesseract_swift::utils::{ptr::CAnyDropPtr, string::CString, string::CStringRef, traits::AsCRef}; #[repr(C)] pub struct AlertProvider { diff --git a/Examples/Rust/Rust/app/src/lib.rs b/Examples/Rust/Rust/app/src/lib.rs index f93895b..94eb11e 100644 --- a/Examples/Rust/Rust/app/src/lib.rs +++ b/Examples/Rust/Rust/app/src/lib.rs @@ -1,29 +1,19 @@ #![feature(async_closure)] -extern crate async_trait; -extern crate tesseract; -extern crate tesseract_protocol_test; -extern crate tesseract_swift_transports; -extern crate tesseract_swift_utils; -extern crate errorcon; - pub mod delegate; use delegate::{AlertProvider, TransportDelegate}; use stderrlog::LogLevelNum; -use tesseract::client::Tesseract; +use tesseract_one::client::Tesseract; use errorcon::convertible::ErrorContext; -pub use tesseract_swift_transports::client::*; use tesseract_protocol_test::TestService; -use tesseract_swift_transports::error::TesseractSwiftError; -use tesseract_swift_utils::future_impls::CFutureString; -use tesseract_swift_utils::response::CMoveResponse; -use tesseract_swift_utils::string::CStringRef; -use tesseract_swift_utils::traits::TryAsRef; -use tesseract_swift_utils::ptr::SyncPtr; -use tesseract_swift_utils::error::CError; -pub use tesseract_swift_utils::*; +use tesseract_swift::error::TesseractSwiftError; +use tesseract_swift::client::transport::ClientTransport; +use tesseract_swift::utils::{ + future_impls::CFutureString, response::CMoveResponse, string::CStringRef, + traits::TryAsRef, ptr::SyncPtr, error::CError, Void +}; use std::mem::ManuallyDrop; use std::sync::Arc; @@ -46,7 +36,7 @@ impl AppContextPtr { } struct AppContext { - service: Arc>, + service: Arc>, } #[no_mangle] diff --git a/Examples/Rust/Rust/wallet/Cargo.toml b/Examples/Rust/Rust/wallet/Cargo.toml index 1eaa179..87f8b41 100644 --- a/Examples/Rust/Rust/wallet/Cargo.toml +++ b/Examples/Rust/Rust/wallet/Cargo.toml @@ -3,15 +3,15 @@ name = "wallet" version = "0.0.1" authors = ["Tesseract Systems, Inc. "] license = "Apache-2.0" -description = "Cardano bindings for C." -keywords = [ "Tesseract", "Cardano", "C" ] +description = "Tesseract SDK Service Example" edition = "2021" [dependencies] -tesseract-swift-utils.workspace = true -tesseract-swift-transports = { workspace = true, features = ["service"]} -tesseract = { workspace = true, features = ["service"] } +tesseract-swift = { workspace = true, features = ["service"] } + +tesseract-one = { workspace = true, features = ["service"] } tesseract-protocol-test = { workspace = true, features = ["service"] } + async-trait.workspace = true errorcon.workspace = true log.workspace = true diff --git a/Examples/Rust/Rust/wallet/cbindgen.toml b/Examples/Rust/Rust/wallet/cbindgen.toml index 53c15b6..7e1d4b6 100644 --- a/Examples/Rust/Rust/wallet/cbindgen.toml +++ b/Examples/Rust/Rust/wallet/cbindgen.toml @@ -12,7 +12,7 @@ prefix_with_name = true [parse] parse_deps = true -include = ["tesseract-swift-utils", "tesseract-swift-service"] +include = ["tesseract-swift", "tesseract-swift-utils", "tesseract-swift-transport"] [export] exclude = [ diff --git a/Examples/Rust/Rust/wallet/src/init.rs b/Examples/Rust/Rust/wallet/src/init.rs index 3849974..17e0322 100644 --- a/Examples/Rust/Rust/wallet/src/init.rs +++ b/Examples/Rust/Rust/wallet/src/init.rs @@ -1,6 +1,6 @@ use std::sync::atomic::{AtomicBool, Ordering}; use stderrlog::LogLevelNum; -use tesseract_swift_transports::error::TesseractSwiftError; +use tesseract_swift::error::TesseractSwiftError; static INITIALIZED: AtomicBool = AtomicBool::new(false); diff --git a/Examples/Rust/Rust/wallet/src/lib.rs b/Examples/Rust/Rust/wallet/src/lib.rs index a1b9307..43f0b26 100644 --- a/Examples/Rust/Rust/wallet/src/lib.rs +++ b/Examples/Rust/Rust/wallet/src/lib.rs @@ -1,27 +1,18 @@ #![feature(async_closure)] -extern crate async_trait; -extern crate errorcon; -extern crate tesseract; -extern crate tesseract_protocol_test; -extern crate tesseract_swift_transports; -extern crate tesseract_swift_utils; - use async_trait::async_trait; use errorcon::convertible::ErrorContext; use stderrlog::LogLevelNum; -use tesseract_swift_transports::error::TesseractSwiftError; +use tesseract_swift::error::TesseractSwiftError; use std::mem::ManuallyDrop; use std::sync::Arc; -use tesseract::service::Tesseract; -use tesseract_swift_transports::service::ServiceTransport; -use tesseract_swift_utils::error::CError; -use tesseract_swift_utils::future_impls::CFutureBool; -use tesseract_swift_utils::ptr::{CAnyDropPtr, SyncPtr}; -use tesseract_swift_utils::response::CMoveResponse; -use tesseract_swift_utils::string::{CString, CStringRef}; -use tesseract_swift_utils::traits::{TryAsRef, AsCRef}; -use tesseract_swift_utils::Void; +use tesseract_one::service::Tesseract; +use tesseract_swift::service::transport::ServiceTransport; +use tesseract_swift::utils::{ + error::CError, future_impls::CFutureBool, ptr::{CAnyDropPtr, SyncPtr}, + response::CMoveResponse, string::{CString, CStringRef}, traits::{TryAsRef, AsCRef}, + Void +}; mod init; @@ -55,21 +46,21 @@ impl TestService { } } -impl tesseract::service::Service for TestService { +impl tesseract_one::service::Service for TestService { type Protocol = tesseract_protocol_test::Test; fn protocol(&self) -> &tesseract_protocol_test::Test { &tesseract_protocol_test::Test::Protocol } - fn to_executor(self) -> Box { + fn to_executor(self) -> Box { Box::new(tesseract_protocol_test::service::TestExecutor::from_service(self)) } } #[async_trait] impl tesseract_protocol_test::TestService for TestService { - async fn sign_transaction(self: Arc, req: &str) -> tesseract::Result { + async fn sign_transaction(self: Arc, req: &str) -> tesseract_one::Result { let cstr: CString = req.into(); let future = unsafe { ManuallyDrop::into_inner((self.ui.approve_tx)(&self.ui, cstr.as_cref())) @@ -79,12 +70,12 @@ impl tesseract_protocol_test::TestService for TestService { if allow { if req == "make_error" { - Err(tesseract::Error::described(tesseract::ErrorKind::Weird, "intentional error for test").into()) + Err(tesseract_one::Error::described(tesseract_one::ErrorKind::Weird, "intentional error for test").into()) } else { Ok(format!("{}{}", req, self.signature)) } } else { - Err(tesseract::Error::kinded(tesseract::ErrorKind::Cancelled).into()) + Err(tesseract_one::Error::kinded(tesseract_one::ErrorKind::Cancelled).into()) } }).await } diff --git a/Rust/framework/Cargo.toml b/Rust/framework/Cargo.toml new file mode 100644 index 0000000..71cb20c --- /dev/null +++ b/Rust/framework/Cargo.toml @@ -0,0 +1,44 @@ +[package] +name = "tesseract-swift-framework" +description = "Tesseract framework to be embedded into prebuilt Swift artifacts. Don't use directly." +version.workspace = true +edition.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true +documentation.workspace = true +readme.workspace = true +authors.workspace = true +categories.workspace = true +keywords.workspace = true + +[dependencies] +async-trait.workspace = true +errorcon.workspace = true +log.workspace = true + +log-panics = { version = "2", features = ["with-backtrace"] } +stderrlog = "0.5" + +tesseract-swift.workspace = true + +tesseract-one.workspace = true +tesseract-protocol-test = { workspace = true, optional = true, features = ["client", "service"] } +tesseract-protocol-substrate = { workspace = true, optional = true, features = ["client", "service"] } + +[build-dependencies] +cbindgen.workspace = true + +[features] +default = ["client", "service", "protocol-all"] + +client = ["tesseract-swift/client", "tesseract-one/client"] +service = ["tesseract-swift/service", "tesseract-one/service"] + +protocol-test = ["dep:tesseract-protocol-test"] +protocol-substrate = ["dep:tesseract-protocol-substrate"] +protocol-all = ["protocol-test", "protocol-substrate"] + +[lib] +crate-type = ["staticlib"] + diff --git a/Rust/tesseract/build.rs b/Rust/framework/build.rs similarity index 100% rename from Rust/tesseract/build.rs rename to Rust/framework/build.rs diff --git a/Rust/tesseract/cbindgen.toml b/Rust/framework/cbindgen.toml similarity index 90% rename from Rust/tesseract/cbindgen.toml rename to Rust/framework/cbindgen.toml index dec0ee3..0673e16 100644 --- a/Rust/tesseract/cbindgen.toml +++ b/Rust/framework/cbindgen.toml @@ -12,7 +12,7 @@ prefix_with_name = true [parse] parse_deps = true -include = ["tesseract-swift-utils", "tesseract-swift-transports"] +include = ["tesseract-swift", "tesseract-swift-utils", "tesseract-swift-transport"] [export] exclude = [ diff --git a/Rust/tesseract/src/client.rs b/Rust/framework/src/client.rs similarity index 84% rename from Rust/tesseract/src/client.rs rename to Rust/framework/src/client.rs index 45fc45d..6b6821e 100644 --- a/Rust/tesseract/src/client.rs +++ b/Rust/framework/src/client.rs @@ -2,17 +2,15 @@ use std::sync::Arc; use std::{mem::ManuallyDrop, collections::HashMap}; use async_trait::async_trait; -use tesseract::Protocol; -use tesseract::client::{Transport, Tesseract, Service, Delegate, transport,}; -use tesseract::serialize::Serializer as TSerializer; -use tesseract_swift_transports::client::{ClientTransport, ClientStatus}; -use tesseract_swift_transports::error::TesseractSwiftError; -use tesseract_swift_utils::array::CArray; -use tesseract_swift_utils::future_impls::CFutureString; -use tesseract_swift_utils::traits::AsCRef; -use tesseract_swift_utils::{ - ptr::{SyncPtr, CAnyDropPtr}, Void, array::CArrayRef, - map::CKeyValue, string::CString +use tesseract_one::Protocol; +use tesseract_one::client::{Transport, Tesseract, Service, Delegate, transport}; +use tesseract_one::serialize::Serializer as TSerializer; + +use tesseract_swift::client::transport::{ClientTransport, ClientStatus}; +use tesseract_swift::error::TesseractSwiftError; +use tesseract_swift::utils::{ + array::{CArray, CArrayRef}, future_impls::CFutureString, traits::AsCRef, + ptr::{SyncPtr, CAnyDropPtr}, map::CKeyValue, string::CString, Void }; pub type ClientTransportsStatusRef<'a> = CArrayRef<'a, CKeyValue>; diff --git a/Rust/tesseract/src/init.rs b/Rust/framework/src/init.rs similarity index 88% rename from Rust/tesseract/src/init.rs rename to Rust/framework/src/init.rs index b27979e..b3b4fbc 100644 --- a/Rust/tesseract/src/init.rs +++ b/Rust/framework/src/init.rs @@ -1,8 +1,9 @@ use std::mem::ManuallyDrop; use errorcon::convertible::ErrorContext; use stderrlog::LogLevelNum; -use tesseract_swift_utils::{response::CVoidResponse, error::CError}; -use tesseract_swift_transports::error::TesseractSwiftError; + +use tesseract_swift::error::TesseractSwiftError; +use tesseract_swift::utils::{response::CVoidResponse, error::CError}; #[repr(C)] pub enum LogLevel { diff --git a/Rust/tesseract/src/lib.rs b/Rust/framework/src/lib.rs similarity index 59% rename from Rust/tesseract/src/lib.rs rename to Rust/framework/src/lib.rs index 7fb53d6..d31a761 100644 --- a/Rust/tesseract/src/lib.rs +++ b/Rust/framework/src/lib.rs @@ -1,9 +1,5 @@ #![feature(async_closure)] -extern crate errorcon; -extern crate tesseract_swift_utils; -extern crate tesseract_swift_transports; - #[cfg(feature = "client")] pub mod client; diff --git a/Rust/framework/src/protocols/mod.rs b/Rust/framework/src/protocols/mod.rs new file mode 100644 index 0000000..3a198bc --- /dev/null +++ b/Rust/framework/src/protocols/mod.rs @@ -0,0 +1,5 @@ +#[cfg(feature = "protocol-test")] +pub mod test; + +#[cfg(feature="protocol-substrate")] +pub mod substrate; \ No newline at end of file diff --git a/Rust/tesseract/src/protocols/substrate/client.rs b/Rust/framework/src/protocols/substrate/client.rs similarity index 93% rename from Rust/tesseract/src/protocols/substrate/client.rs rename to Rust/framework/src/protocols/substrate/client.rs index 4b12ba8..ef1cd1e 100644 --- a/Rust/tesseract/src/protocols/substrate/client.rs +++ b/Rust/framework/src/protocols/substrate/client.rs @@ -4,12 +4,12 @@ use crate::client::ClientTesseract; use super::{SubstrateService, SubstrateAccountType, SubstrateGetAccountResponse}; use errorcon::convertible::ErrorContext; use tesseract_protocol_substrate::{Substrate, SubstrateService as TSubstrateService}; -use tesseract_swift_transports::error::TesseractSwiftError; -use tesseract_swift_utils::{ +use tesseract_swift::error::TesseractSwiftError; +use tesseract_swift::utils::{ string::CStringRef, future_impls::CFutureData, ptr::CAnyDropPtr, future::CFuture, data::CDataRef, traits::TryAsRef }; -pub type Service = Arc>; +pub type Service = Arc>; #[no_mangle] pub extern "C" fn tesseract_client_get_substrate_service( diff --git a/Rust/tesseract/src/protocols/substrate/mod.rs b/Rust/framework/src/protocols/substrate/mod.rs similarity index 93% rename from Rust/tesseract/src/protocols/substrate/mod.rs rename to Rust/framework/src/protocols/substrate/mod.rs index 94eb440..1e69f48 100644 --- a/Rust/tesseract/src/protocols/substrate/mod.rs +++ b/Rust/framework/src/protocols/substrate/mod.rs @@ -1,15 +1,16 @@ use tesseract_protocol_substrate::{AccountType, GetAccountResponse}; -use tesseract_swift_transports::protocol::TesseractProtocol; -use tesseract_swift_utils::{ + +use tesseract_swift::protocol::TesseractProtocol; +use tesseract_swift::utils::{ data::{CData, CDataRef}, string::{CString, CStringRef}, error::CError, ptr::CAnyDropPtr, future::CFuture, future_impls::CFutureData }; use std::mem::ManuallyDrop; -#[cfg(feature="protocol-substrate-client")] +#[cfg(feature="client")] pub mod client; -#[cfg(feature="protocol-substrate-service")] +#[cfg(feature="service")] pub mod service; #[repr(C)] diff --git a/Rust/tesseract/src/protocols/substrate/service.rs b/Rust/framework/src/protocols/substrate/service.rs similarity index 88% rename from Rust/tesseract/src/protocols/substrate/service.rs rename to Rust/framework/src/protocols/substrate/service.rs index 6899eda..32049e1 100644 --- a/Rust/tesseract/src/protocols/substrate/service.rs +++ b/Rust/framework/src/protocols/substrate/service.rs @@ -2,10 +2,10 @@ use std::{mem::ManuallyDrop, sync::Arc}; use async_trait::async_trait; use errorcon::convertible::ErrorContext; -use tesseract::service::{Service, Executor}; +use tesseract_one::service::{Service, Executor}; use tesseract_protocol_substrate::{service::SubstrateExecutor, AccountType, GetAccountResponse}; -use tesseract_swift_transports::error::TesseractSwiftError; -use tesseract_swift_utils::{string:: CString, traits::AsCRef}; +use tesseract_swift::error::TesseractSwiftError; +use tesseract_swift::utils::{string:: CString, traits::AsCRef}; use crate::service::ServiceTesseract; @@ -25,7 +25,7 @@ impl Service for SubstrateService { #[async_trait] impl tesseract_protocol_substrate::SubstrateService for SubstrateService { - async fn get_account(self: Arc, account_type: AccountType) -> tesseract::Result { + async fn get_account(self: Arc, account_type: AccountType) -> tesseract_one::Result { let future = unsafe { ManuallyDrop::into_inner((self.get_account)(&self, account_type.into())) }; @@ -41,7 +41,7 @@ impl tesseract_protocol_substrate::SubstrateService for SubstrateService { extrinsic_data: &[u8], extrinsic_metadata: &[u8], extrinsic_types: &[u8], - ) -> tesseract::Result> { + ) -> tesseract_one::Result> { let cpath: CString = account_path.into(); let future = unsafe { (self.sign_transaction)( diff --git a/Rust/tesseract/src/protocols/test/client.rs b/Rust/framework/src/protocols/test/client.rs similarity index 82% rename from Rust/tesseract/src/protocols/test/client.rs rename to Rust/framework/src/protocols/test/client.rs index 4b46456..725e199 100644 --- a/Rust/tesseract/src/protocols/test/client.rs +++ b/Rust/framework/src/protocols/test/client.rs @@ -4,10 +4,10 @@ use crate::client::ClientTesseract; use super::TestService; use errorcon::convertible::ErrorContext; use tesseract_protocol_test::{Test, TestService as TTestService}; -use tesseract_swift_transports::error::TesseractSwiftError; -use tesseract_swift_utils::{string::CStringRef, future_impls::CFutureString, ptr::CAnyDropPtr, traits::TryAsRef}; +use tesseract_swift::error::TesseractSwiftError; +use tesseract_swift::utils::{string::CStringRef, future_impls::CFutureString, ptr::CAnyDropPtr, traits::TryAsRef}; -pub type Service = Arc>; +pub type Service = Arc>; #[no_mangle] pub extern "C" fn tesseract_client_get_test_service( diff --git a/Rust/tesseract/src/protocols/test/mod.rs b/Rust/framework/src/protocols/test/mod.rs similarity index 62% rename from Rust/tesseract/src/protocols/test/mod.rs rename to Rust/framework/src/protocols/test/mod.rs index d445c0d..990bb66 100644 --- a/Rust/tesseract/src/protocols/test/mod.rs +++ b/Rust/framework/src/protocols/test/mod.rs @@ -1,13 +1,12 @@ -#[cfg(feature="protocol-test-client")] +#[cfg(feature="client")] pub mod client; -#[cfg(feature="protocol-test-service")] +#[cfg(feature="service")] pub mod service; use std::mem::ManuallyDrop; -use tesseract_swift_transports::protocol::TesseractProtocol; -use tesseract_swift_utils::string::CStringRef; -use tesseract_swift_utils::{ptr::CAnyDropPtr, future_impls::CFutureString}; +use tesseract_swift::protocol::TesseractProtocol; +use tesseract_swift::utils::{ptr::CAnyDropPtr, string::CStringRef, future_impls::CFutureString}; #[repr(C)] pub struct TestService { diff --git a/Rust/tesseract/src/protocols/test/service.rs b/Rust/framework/src/protocols/test/service.rs similarity index 84% rename from Rust/tesseract/src/protocols/test/service.rs rename to Rust/framework/src/protocols/test/service.rs index ffc2946..2659a85 100644 --- a/Rust/tesseract/src/protocols/test/service.rs +++ b/Rust/framework/src/protocols/test/service.rs @@ -1,10 +1,9 @@ use async_trait::async_trait; use errorcon::convertible::ErrorContext; -use tesseract::service::{Executor, Service}; +use tesseract_one::service::{Executor, Service}; use tesseract_protocol_test::service::TestExecutor; -use tesseract_swift_transports::error::TesseractSwiftError; -use tesseract_swift_utils::string::CString; -use tesseract_swift_utils::traits::AsCRef; +use tesseract_swift::error::TesseractSwiftError; +use tesseract_swift::utils::{string::CString, traits::AsCRef}; use super::TestService; use crate::service::ServiceTesseract; @@ -26,7 +25,7 @@ impl Service for TestService { #[async_trait] impl tesseract_protocol_test::TestService for TestService { - async fn sign_transaction(self: Arc, req: &str) -> tesseract::Result { + async fn sign_transaction(self: Arc, req: &str) -> tesseract_one::Result { let cstr: CString = req.into(); let future = unsafe { ManuallyDrop::into_inner((self.sign_transaction)(&self, cstr.as_cref())) diff --git a/Rust/tesseract/src/service.rs b/Rust/framework/src/service.rs similarity index 86% rename from Rust/tesseract/src/service.rs rename to Rust/framework/src/service.rs index 1af5641..68dd421 100644 --- a/Rust/tesseract/src/service.rs +++ b/Rust/framework/src/service.rs @@ -1,7 +1,7 @@ -use tesseract::service::{Tesseract, Service, Transport}; -use tesseract_swift_utils::ptr::SyncPtr; -use tesseract_swift_utils::Void; -use tesseract_swift_transports::service::ServiceTransport; +use tesseract_one::service::{Tesseract, Service, Transport}; + +use tesseract_swift::service::transport::ServiceTransport; +use tesseract_swift::utils::{ptr::SyncPtr, Void}; use std::mem::ManuallyDrop; diff --git a/Rust/generate_headers.sh b/Rust/generate_headers.sh index 0a323ff..06a717c 100755 --- a/Rust/generate_headers.sh +++ b/Rust/generate_headers.sh @@ -2,7 +2,7 @@ set -e MODULE_NAME="CTesseractShared" -MAIN_CRATE="tesseract-swift-transports" +MAIN_CRATE="tesseract-swift-transport" HEADERS_DIR="target/release/include" OUTPUT_DIR="Sources/$MODULE_NAME/include" diff --git a/Rust/generate_xcframework.sh b/Rust/generate_xcframework.sh index 678324d..6c89396 100755 --- a/Rust/generate_xcframework.sh +++ b/Rust/generate_xcframework.sh @@ -1,7 +1,8 @@ #!/bin/zsh set -e -CRATE="tesseract-swift" +CRATE="tesseract-swift-framework" +XCFRAMEWORK_NAME="CTesseract" DIR="$(cd "$(dirname "$0")" && pwd -P)" SOURCES_DIR="${DIR}/.." @@ -142,9 +143,6 @@ else CONFIGURATION="release" fi -# generate name for xcframework -XCFRAMEWORK_NAME="C${${${(C)CRATE}//-}//Swift}" - # output xcframework path XCFRAMEWORK_PATH="${OUTPUT_DIR}/${XCFRAMEWORK_NAME}.xcframework" diff --git a/Rust/sdk/Cargo.toml b/Rust/sdk/Cargo.toml new file mode 100644 index 0000000..f909971 --- /dev/null +++ b/Rust/sdk/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "tesseract-swift" +description = "Swift specific Tesseract APIs" +version.workspace = true +edition.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true +documentation.workspace = true +readme.workspace = true +authors.workspace = true +categories.workspace = true +keywords.workspace = true + +[dependencies] +tesseract-swift-utils.workspace = true +tesseract-swift-transport.workspace = true + +[features] +default = ["transport-all"] +client = ["tesseract-swift-transport/client"] +service = ["tesseract-swift-transport/service"] +transport-sdk = [] +transport-all = ["transport-sdk"] diff --git a/Rust/sdk/src/client.rs b/Rust/sdk/src/client.rs new file mode 100644 index 0000000..81b461f --- /dev/null +++ b/Rust/sdk/src/client.rs @@ -0,0 +1,4 @@ +#[cfg(feature = "transport-sdk")] +pub mod transport { + pub use tesseract_swift_transport::client::*; +} \ No newline at end of file diff --git a/Rust/sdk/src/lib.rs b/Rust/sdk/src/lib.rs new file mode 100644 index 0000000..1b62251 --- /dev/null +++ b/Rust/sdk/src/lib.rs @@ -0,0 +1,17 @@ +pub mod error { + pub use tesseract_swift_transport::error::TesseractSwiftError; +} + +pub mod protocol { + pub use tesseract_swift_transport::protocol::TesseractProtocol; +} + +pub mod utils { + pub use tesseract_swift_utils::*; +} + +#[cfg(feature = "client")] +pub mod client; + +#[cfg(feature = "service")] +pub mod service; \ No newline at end of file diff --git a/Rust/sdk/src/service.rs b/Rust/sdk/src/service.rs new file mode 100644 index 0000000..030b4c4 --- /dev/null +++ b/Rust/sdk/src/service.rs @@ -0,0 +1,4 @@ +#[cfg(feature = "transport-sdk")] +pub mod transport { + pub use tesseract_swift_transport::service::*; +} \ No newline at end of file diff --git a/Rust/tesseract/Cargo.toml b/Rust/tesseract/Cargo.toml deleted file mode 100644 index 5802ae6..0000000 --- a/Rust/tesseract/Cargo.toml +++ /dev/null @@ -1,39 +0,0 @@ -[package] -name = "tesseract-swift" -authors.workspace = true -version.workspace = true -license.workspace = true -edition.workspace = true -repository.workspace = true -documentation.workspace = true -description = "Tesseract Swift wrapper implementation" -keywords = [ "Tesseract", "Swift", "C" ] - -[dependencies] -tesseract-swift-utils = { path = "../utils" } -tesseract-swift-transports = { path = "../transports" } -tesseract.workspace = true -tesseract-protocol-test = { workspace = true, optional = true } -tesseract-protocol-substrate = { workspace = true, optional = true } -async-trait.workspace = true -errorcon.workspace = true -log.workspace = true -log-panics = { version = "2", features = ["with-backtrace"] } -stderrlog = "0.5" - -[build-dependencies] -cbindgen.workspace = true - -[features] -client = ["tesseract-swift-transports/client", "tesseract/client"] -service = ["tesseract-swift-transports/service", "tesseract/service"] -protocol-test-client = ["client", "tesseract-protocol-test/client"] -protocol-test-service = ["service", "tesseract-protocol-test/service"] -protocol-substrate-client = ["client", "tesseract-protocol-substrate/client"] -protocol-substrate-service = ["service", "tesseract-protocol-substrate/service"] -client-all = ["protocol-test-client", "protocol-substrate-client"] -service-all = ["protocol-test-service", "protocol-substrate-service"] - -[lib] -crate-type = ["staticlib"] - diff --git a/Rust/tesseract/src/protocols/mod.rs b/Rust/tesseract/src/protocols/mod.rs deleted file mode 100644 index 7c28bd5..0000000 --- a/Rust/tesseract/src/protocols/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -#[cfg(any(feature = "protocol-test-client", feature="protocol-test-service"))] -pub mod test; - -#[cfg(any(feature = "protocol-substrate-client", feature="protocol-substrate-service"))] -pub mod substrate; \ No newline at end of file diff --git a/Rust/transport/Cargo.toml b/Rust/transport/Cargo.toml new file mode 100644 index 0000000..0ae5d23 --- /dev/null +++ b/Rust/transport/Cargo.toml @@ -0,0 +1,30 @@ +[package] +name = "tesseract-swift-transport" +description = "Crate with transport related Tesseract APIs for Swift" +version.workspace = true +edition.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true +documentation.workspace = true +readme.workspace = true +authors.workspace = true +categories.workspace = true +keywords.workspace = true + +[dependencies] +thiserror = "1.0" + +async-trait.workspace = true +errorcon.workspace = true +log.workspace = true + +tesseract-one.workspace = true +tesseract-swift-utils.workspace = true + +[features] +client = ["tesseract-one/client"] +service = ["tesseract-one/service"] + +[build-dependencies] +cbindgen.workspace = true diff --git a/Rust/transports/build.rs b/Rust/transport/build.rs similarity index 100% rename from Rust/transports/build.rs rename to Rust/transport/build.rs diff --git a/Rust/transports/cbindgen.toml b/Rust/transport/cbindgen.toml similarity index 100% rename from Rust/transports/cbindgen.toml rename to Rust/transport/cbindgen.toml diff --git a/Rust/transports/src/client/connection.rs b/Rust/transport/src/client/connection.rs similarity index 97% rename from Rust/transports/src/client/connection.rs rename to Rust/transport/src/client/connection.rs index a3b5050..77b6c90 100644 --- a/Rust/transports/src/client/connection.rs +++ b/Rust/transport/src/client/connection.rs @@ -10,8 +10,8 @@ use tesseract_swift_utils::traits::{AsCRef, TryAsRef}; use async_trait::async_trait; use errorcon::convertible::ErrorContext; -use tesseract::client::Connection; -use tesseract::Result; +use tesseract_one::client::Connection; +use tesseract_one::Result; #[repr(C)] pub struct ClientConnection { diff --git a/Rust/transports/src/client/mod.rs b/Rust/transport/src/client/mod.rs similarity index 100% rename from Rust/transports/src/client/mod.rs rename to Rust/transport/src/client/mod.rs diff --git a/Rust/transports/src/client/status.rs b/Rust/transport/src/client/status.rs similarity index 95% rename from Rust/transports/src/client/status.rs rename to Rust/transport/src/client/status.rs index 405e294..b7132a8 100644 --- a/Rust/transports/src/client/status.rs +++ b/Rust/transport/src/client/status.rs @@ -2,7 +2,7 @@ use tesseract_swift_utils::error::CError; use tesseract_swift_utils::future::CFuture; use tesseract_swift_utils::string::CString; -use tesseract::client::transport::Status; +use tesseract_one::client::transport::Status; use crate::error::TesseractSwiftError; diff --git a/Rust/transports/src/client/transport.rs b/Rust/transport/src/client/transport.rs similarity index 92% rename from Rust/transports/src/client/transport.rs rename to Rust/transport/src/client/transport.rs index 7c1b98a..7b25aea 100644 --- a/Rust/transports/src/client/transport.rs +++ b/Rust/transport/src/client/transport.rs @@ -11,10 +11,10 @@ use tesseract_swift_utils::string::CString; use async_trait::async_trait; use errorcon::convertible::ErrorContext; -use tesseract::client::transport::Status; -use tesseract::client::Connection; -use tesseract::client::Transport; -use tesseract::Protocol; +use tesseract_one::client::transport::Status; +use tesseract_one::client::Connection; +use tesseract_one::client::Transport; +use tesseract_one::Protocol; #[repr(C)] pub struct ClientTransport { @@ -60,7 +60,7 @@ impl Transport for ClientTransport { let future = unsafe { ManuallyDrop::into_inner((self.status)(self.as_ref(), ManuallyDrop::new(proto))) }; - let result: Result = TesseractSwiftError::context_async(async || { + let result: Result = TesseractSwiftError::context_async(async || { let status = future.try_into_future()?.await?; Ok(status.into()) }).await; diff --git a/Rust/transports/src/error.rs b/Rust/transport/src/error.rs similarity index 99% rename from Rust/transports/src/error.rs rename to Rust/transport/src/error.rs index 89e73b4..d0deae8 100644 --- a/Rust/transports/src/error.rs +++ b/Rust/transport/src/error.rs @@ -1,6 +1,6 @@ use std::mem::ManuallyDrop; use thiserror; -use tesseract::{Error as TError, ErrorKind}; +use tesseract_one::{Error as TError, ErrorKind}; use tesseract_swift_utils::{error::{CError, CErrorCode, ErrorCode, SwiftError}, traits::TryAsRef, string::CString}; diff --git a/Rust/transport/src/lib.rs b/Rust/transport/src/lib.rs new file mode 100644 index 0000000..0cf71f6 --- /dev/null +++ b/Rust/transport/src/lib.rs @@ -0,0 +1,12 @@ +#![feature(async_closure)] + +pub mod error; +pub mod protocol; +pub use tesseract_swift_utils as utils; + +#[cfg(feature = "client")] +pub mod client; + +#[cfg(feature = "service")] +pub mod service; + diff --git a/Rust/transports/src/protocol.rs b/Rust/transport/src/protocol.rs similarity index 92% rename from Rust/transports/src/protocol.rs rename to Rust/transport/src/protocol.rs index 1267655..4ec0e17 100644 --- a/Rust/transports/src/protocol.rs +++ b/Rust/transport/src/protocol.rs @@ -1,7 +1,7 @@ use std::mem::ManuallyDrop; -use tesseract::Protocol; -use tesseract_swift_utils::{string::CString, ptr::SyncPtr, Void}; +use tesseract_one::Protocol; +use crate::utils::{string::CString, ptr::SyncPtr, Void}; #[repr(C)] pub struct TesseractProtocol(SyncPtr); diff --git a/Rust/transports/src/service/mod.rs b/Rust/transport/src/service/mod.rs similarity index 100% rename from Rust/transports/src/service/mod.rs rename to Rust/transport/src/service/mod.rs diff --git a/Rust/transports/src/service/processor.rs b/Rust/transport/src/service/processor.rs similarity index 96% rename from Rust/transports/src/service/processor.rs rename to Rust/transport/src/service/processor.rs index 590828d..ea9d4d6 100644 --- a/Rust/transports/src/service/processor.rs +++ b/Rust/transport/src/service/processor.rs @@ -5,7 +5,7 @@ use tesseract_swift_utils::future_impls::CFutureData; use tesseract_swift_utils::ptr::SyncPtr; use tesseract_swift_utils::Void; -use tesseract::service::TransportProcessor; +use tesseract_one::service::TransportProcessor; #[repr(C)] pub struct ServiceTransportProcessor(SyncPtr); diff --git a/Rust/transports/src/service/transport.rs b/Rust/transport/src/service/transport.rs similarity index 95% rename from Rust/transports/src/service/transport.rs rename to Rust/transport/src/service/transport.rs index 9ec84c8..f180407 100644 --- a/Rust/transports/src/service/transport.rs +++ b/Rust/transport/src/service/transport.rs @@ -3,7 +3,7 @@ use std::mem::ManuallyDrop; use std::sync::Arc; use tesseract_swift_utils::ptr::CAnyDropPtr; -use tesseract::service::{BoundTransport, Transport, TransportProcessor}; +use tesseract_one::service::{BoundTransport, Transport, TransportProcessor}; #[repr(transparent)] pub struct ServiceBoundTransport(CAnyDropPtr); diff --git a/Rust/transports/Cargo.toml b/Rust/transports/Cargo.toml deleted file mode 100644 index 0e5906c..0000000 --- a/Rust/transports/Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "tesseract-swift-transports" -authors.workspace = true -version.workspace = true -license.workspace = true -edition.workspace = true -repository.workspace = true -documentation.workspace = true -description = "Tesseract transports for Swift" -keywords = [ "Tesseract", "Swift", "Transport", "C" ] - -[dependencies] -tesseract-swift-utils = { path = "../utils" } -tesseract.workspace = true -async-trait.workspace = true -errorcon.workspace = true -log.workspace = true -thiserror = "1.0" - -[features] -client = ["tesseract/client"] -service = ["tesseract/service"] - -[build-dependencies] -cbindgen.workspace = true diff --git a/Rust/transports/src/lib.rs b/Rust/transports/src/lib.rs deleted file mode 100644 index a7e2570..0000000 --- a/Rust/transports/src/lib.rs +++ /dev/null @@ -1,16 +0,0 @@ -#![feature(return_position_impl_trait_in_trait)] -#![feature(async_closure)] - -extern crate async_trait; -extern crate errorcon; -extern crate tesseract; -extern crate tesseract_swift_utils; - -pub mod error; -pub mod protocol; - -#[cfg(feature = "client")] -pub mod client; - -#[cfg(feature = "service")] -pub mod service; diff --git a/Rust/utils/Cargo.toml b/Rust/utils/Cargo.toml index 124816d..12a2723 100644 --- a/Rust/utils/Cargo.toml +++ b/Rust/utils/Cargo.toml @@ -1,13 +1,16 @@ [package] name = "tesseract-swift-utils" -authors.workspace = true +description = "Tesseract interop helpers for Swift. Check tesseract-swift crate for full SDK." version.workspace = true -license.workspace = true edition.workspace = true +license.workspace = true +homepage.workspace = true repository.workspace = true documentation.workspace = true -description = "Tesseract interop helpers for Swift." -keywords = [ "Tesseract", "Swift", "C" ] +readme.workspace = true +authors.workspace = true +categories.workspace = true +keywords.workspace = true [dependencies] log.workspace = true diff --git a/Rust/utils/src/lib.rs b/Rust/utils/src/lib.rs index 7a9d6d4..95553ab 100644 --- a/Rust/utils/src/lib.rs +++ b/Rust/utils/src/lib.rs @@ -1,4 +1,3 @@ -#![feature(return_position_impl_trait_in_trait)] #![feature(async_closure)] pub mod array; @@ -16,8 +15,6 @@ pub mod string; pub mod traits; pub mod map; -#[cfg(feature = "bigint")] -extern crate num_bigint; #[cfg(feature = "bigint")] pub mod bigint; diff --git a/Sources/CTesseractShared/dummy.c b/Sources/CTesseractShared/dummy.c index 790e659..58e84bb 100644 --- a/Sources/CTesseractShared/dummy.c +++ b/Sources/CTesseractShared/dummy.c @@ -1,3 +1,3 @@ // Empty file simply to provide empty static module with headers #include "tesseract-swift-utils.h" -#include "tesseract-swift-transports.h" +#include "tesseract-swift-transport.h" diff --git a/Sources/CTesseractShared/include/tesseract-swift-transports.h b/Sources/CTesseractShared/include/tesseract-swift-transport.h similarity index 100% rename from Sources/CTesseractShared/include/tesseract-swift-transports.h rename to Sources/CTesseractShared/include/tesseract-swift-transport.h