preview.3 trying to fix the docsrs issue

pull/19/head
Niko PLP 7 months ago
parent 1e2f5ab4d8
commit 176eb5f5ca
  1. 4
      Cargo.lock
  2. 15
      nextgraph/Cargo.toml
  3. 2
      nextgraph/README.md
  4. 6
      nextgraph/src/local_broker.rs
  5. 6
      ng-broker/Cargo.toml
  6. 8
      ng-oxigraph/Cargo.toml
  7. 8
      ng-oxigraph/src/oxigraph/storage/backend/mod.rs
  8. 2
      ng-oxigraph/src/oxigraph/storage/binary_encoder.rs
  9. 74
      ng-oxigraph/src/oxigraph/storage/mod.rs
  10. 28
      ng-oxigraph/src/oxigraph/store.rs
  11. 2
      ng-repo/Cargo.toml
  12. 4
      ng-storage-rocksdb/Cargo.toml
  13. 15
      ng-verifier/Cargo.toml
  14. 2
      ng-verifier/src/lib.rs
  15. 16
      ng-verifier/src/verifier.rs
  16. 8
      ng-wallet/Cargo.toml
  17. 2
      ngcli/Cargo.toml
  18. 4
      ngd/Cargo.toml

4
Cargo.lock generated

@ -7080,9 +7080,9 @@ dependencies = [
[[package]] [[package]]
name = "zeroize" name = "zeroize"
version = "1.6.0" version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
dependencies = [ dependencies = [
"zeroize_derive", "zeroize_derive",
] ]

@ -2,7 +2,7 @@
name = "nextgraph" name = "nextgraph"
description = "NextGraph client library. Nextgraph is a decentralized, secure and local-first web 3.0 ecosystem based on Semantic Web and CRDTs" description = "NextGraph client library. Nextgraph is a decentralized, secure and local-first web 3.0 ecosystem based on Semantic Web and CRDTs"
categories = ["asynchronous","text-editors","web-programming","development-tools","database-implementations"] categories = ["asynchronous","text-editors","web-programming","development-tools","database-implementations"]
version = "0.1.0-preview.2" version = "0.1.0-preview.3"
edition.workspace = true edition.workspace = true
license.workspace = true license.workspace = true
authors.workspace = true authors.workspace = true
@ -20,7 +20,7 @@ serde_bare = "0.5.0"
serde_json = "1.0" serde_json = "1.0"
base64-url = "2.0.0" base64-url = "2.0.0"
once_cell = "1.17.1" once_cell = "1.17.1"
zeroize = { version = "1.6.0", features = ["zeroize_derive"] } zeroize = { version = "1.7.0", features = ["zeroize_derive"] }
futures = "0.3.24" futures = "0.3.24"
async-std = { version = "1.12.0", features = [ "attributes", "unstable" ] } async-std = { version = "1.12.0", features = [ "attributes", "unstable" ] }
async-trait = "0.1.64" async-trait = "0.1.64"
@ -28,15 +28,12 @@ async-once-cell = "0.5.3"
web-time = "0.2.0" web-time = "0.2.0"
ng-repo = { path = "../ng-repo", version = "0.1.0-preview.1" } ng-repo = { path = "../ng-repo", version = "0.1.0-preview.1" }
ng-net = { path = "../ng-net", version = "0.1.0-preview.1" } ng-net = { path = "../ng-net", version = "0.1.0-preview.1" }
ng-wallet = { path = "../ng-wallet", version = "0.1.0-preview.1" } ng-wallet = { path = "../ng-wallet", version = "0.1.0-preview.3" }
ng-client-ws = { path = "../ng-client-ws", version = "0.1.0-preview.1" } ng-client-ws = { path = "../ng-client-ws", version = "0.1.0-preview.1" }
ng-verifier = { path = "../ng-verifier", version = "0.1.0-preview.2" } ng-verifier = { path = "../ng-verifier", version = "0.1.0-preview.3" }
[target.'cfg(all(not(target_arch = "wasm32"),not(doc)))'.dependencies] [target.'cfg(all(not(target_arch = "wasm32")))'.dependencies]
ng-storage-rocksdb = { path = "../ng-storage-rocksdb", version = "0.1.0-preview.1" } ng-storage-rocksdb = { path = "../ng-storage-rocksdb", version = "0.1.0-preview.3" }
[package.metadata.docs.rs]
rustc-args = [ "--cfg" , "doc"]
[[example]] [[example]]
name = "in_memory" name = "in_memory"

@ -43,7 +43,7 @@ A tokio-based version (as a feature) might be available in the future.
```toml ```toml
[dependencies] [dependencies]
nextgraph = "0.1.0-preview.1" nextgraph = "0.1.0-preview.3"
async-std = "1.12.0" async-std = "1.12.0"
``` ```

@ -46,7 +46,7 @@ use ng_wallet::{create_wallet_first_step_v0, create_wallet_second_step_v0, types
use ng_client_ws::remote_ws::ConnectionWebSocket; use ng_client_ws::remote_ws::ConnectionWebSocket;
#[cfg(target_arch = "wasm32")] #[cfg(target_arch = "wasm32")]
use ng_client_ws::remote_ws_wasm::ConnectionWebSocket; use ng_client_ws::remote_ws_wasm::ConnectionWebSocket;
#[cfg(not(any(target_family = "wasm",doc)))] #[cfg(not(any(target_family = "wasm")))]
use ng_storage_rocksdb::block_storage::RocksDbBlockStorage; use ng_storage_rocksdb::block_storage::RocksDbBlockStorage;
#[doc(hidden)] #[doc(hidden)]
@ -824,7 +824,7 @@ impl LocalBroker {
(VerifierType::Memory, LocalBrokerConfig::BasePath(_)) => { (VerifierType::Memory, LocalBrokerConfig::BasePath(_)) => {
VerifierConfigType::Memory VerifierConfigType::Memory
} }
#[cfg(all(not(target_family = "wasm"),not(doc)))] #[cfg(all(not(target_family = "wasm")))]
(VerifierType::Save, LocalBrokerConfig::BasePath(base)) => { (VerifierType::Save, LocalBrokerConfig::BasePath(base)) => {
let mut path = base.clone(); let mut path = base.clone();
path.push(format!("user{}", config.user_id().to_hash_string())); path.push(format!("user{}", config.user_id().to_hash_string()));
@ -911,7 +911,7 @@ impl LocalBroker {
Arc::new(std::sync::RwLock::new(HashMapBlockStorage::new())) Arc::new(std::sync::RwLock::new(HashMapBlockStorage::new()))
as Arc<std::sync::RwLock<dyn BlockStorage + Send + Sync + 'static>> as Arc<std::sync::RwLock<dyn BlockStorage + Send + Sync + 'static>>
} else { } else {
#[cfg(all(not(target_family = "wasm"),not(doc)))] #[cfg(all(not(target_family = "wasm")))]
{ {
let key_material = wallet let key_material = wallet
.client() .client()

@ -1,6 +1,6 @@
[package] [package]
name = "ng-broker" name = "ng-broker"
# version = "0.1.0" version = "0.1.0-preview.3"
description = "Broker library of NextGraph, a decentralized, secure and local-first web 3.0 ecosystem based on Semantic Web and CRDTs" description = "Broker library of NextGraph, a decentralized, secure and local-first web 3.0 ecosystem based on Semantic Web and CRDTs"
version.workspace = true version.workspace = true
edition.workspace = true edition.workspace = true
@ -30,8 +30,8 @@ blake3 = "1.3.1"
ng-repo = { path = "../ng-repo", version = "0.1.0-preview.1" } ng-repo = { path = "../ng-repo", version = "0.1.0-preview.1" }
ng-net = { path = "../ng-net", version = "0.1.0-preview.1" } ng-net = { path = "../ng-net", version = "0.1.0-preview.1" }
ng-client-ws = { path = "../ng-client-ws", version = "0.1.0-preview.1" } ng-client-ws = { path = "../ng-client-ws", version = "0.1.0-preview.1" }
ng-verifier = { path = "../ng-verifier", version = "0.1.0-preview.1" } ng-verifier = { path = "../ng-verifier", version = "0.1.0-preview.3" }
ng-storage-rocksdb = { path = "../ng-storage-rocksdb", version = "0.1.0-preview.1" } ng-storage-rocksdb = { path = "../ng-storage-rocksdb", version = "0.1.0-preview.3" }
[target.'cfg(target_arch = "wasm32")'.dependencies.getrandom] [target.'cfg(target_arch = "wasm32")'.dependencies.getrandom]
version = "0.2.7" version = "0.2.7"

@ -1,6 +1,6 @@
[package] [package]
name = "ng-oxigraph" name = "ng-oxigraph"
version = "0.4.0-alpha.7-ngpreview2" version = "0.4.0-alpha.7-ngpreview3"
authors = ["Tpt <thomas@pellissier-tanon.fr>", "Niko PLP <niko@nextgraph.org>"] authors = ["Tpt <thomas@pellissier-tanon.fr>", "Niko PLP <niko@nextgraph.org>"]
license = "MIT OR Apache-2.0" license = "MIT OR Apache-2.0"
readme = "README.md" readme = "README.md"
@ -44,9 +44,9 @@ quick-xml = ">=0.29, <0.32"
memchr = "2.5" memchr = "2.5"
peg = "0.8" peg = "0.8"
[target.'cfg(all(not(target_family = "wasm"),not(doc)))'.dependencies] [target.'cfg(all(not(target_family = "wasm")))'.dependencies]
libc = "0.2" libc = "0.2"
ng-rocksdb = { version = "0.21.0", git = "https://git.nextgraph.org/NextGraph/rust-rocksdb.git", branch = "master", features = [ ] } ng-rocksdb = { version = "0.21.0-ngpreview.1", git = "https://git.nextgraph.org/NextGraph/rust-rocksdb.git", branch = "master", features = [ ] }
[target.'cfg(all(target_family = "wasm", target_os = "unknown"))'.dependencies] [target.'cfg(all(target_family = "wasm", target_os = "unknown"))'.dependencies]
getrandom = "0.2.8" getrandom = "0.2.8"
@ -56,8 +56,6 @@ js-sys = { version = "0.3.60", optional = true }
codspeed-criterion-compat = "2.3.3" codspeed-criterion-compat = "2.3.3"
zstd = ">=0.12, <0.14" zstd = ">=0.12, <0.14"
[package.metadata.docs.rs]
rustc-args = [ "--cfg" , "doc"]
[lints.rust] [lints.rust]
absolute_paths_not_starting_with_crate = "warn" absolute_paths_not_starting_with_crate = "warn"

@ -1,12 +1,12 @@
//! A storage backend //! A storage backend
//! RocksDB is available, if not in memory //! RocksDB is available, if not in memory
#[cfg(any(target_family = "wasm", doc))] #[cfg(any(target_family = "wasm"))]
pub use fallback::{ColumnFamily, ColumnFamilyDefinition, Db, Iter, Reader, Transaction}; pub use fallback::{ColumnFamily, ColumnFamilyDefinition, Db, Iter, Reader, Transaction};
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
pub use oxi_rocksdb::{ColumnFamily, ColumnFamilyDefinition, Db, Iter, Reader, Transaction}; pub use oxi_rocksdb::{ColumnFamily, ColumnFamilyDefinition, Db, Iter, Reader, Transaction};
#[cfg(any(target_family = "wasm", doc))] #[cfg(any(target_family = "wasm"))]
mod fallback; mod fallback;
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
mod oxi_rocksdb; mod oxi_rocksdb;

@ -5,7 +5,7 @@ use crate::oxsdatatypes::*;
use std::io::Read; use std::io::Read;
use std::mem::size_of; use std::mem::size_of;
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
pub const LATEST_STORAGE_VERSION: u64 = 1; pub const LATEST_STORAGE_VERSION: u64 = 1;
pub const WRITTEN_TERM_MAX_SIZE: usize = size_of::<u8>() + 2 * size_of::<StrHash>(); pub const WRITTEN_TERM_MAX_SIZE: usize = size_of::<u8>() + 2 * size_of::<StrHash>();

@ -1,9 +1,9 @@
#![allow(clippy::same_name_method)] #![allow(clippy::same_name_method)]
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
use crate::oxigraph::model::Quad; use crate::oxigraph::model::Quad;
use crate::oxigraph::model::{GraphNameRef, NamedOrBlankNodeRef, QuadRef, TermRef}; use crate::oxigraph::model::{GraphNameRef, NamedOrBlankNodeRef, QuadRef, TermRef};
use crate::oxigraph::storage::backend::{Reader, Transaction}; use crate::oxigraph::storage::backend::{Reader, Transaction};
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
use crate::oxigraph::storage::binary_encoder::LATEST_STORAGE_VERSION; use crate::oxigraph::storage::binary_encoder::LATEST_STORAGE_VERSION;
use crate::oxigraph::storage::binary_encoder::{ use crate::oxigraph::storage::binary_encoder::{
decode_term, encode_term, encode_term_pair, encode_term_quad, encode_term_triple, decode_term, encode_term, encode_term_pair, encode_term_quad, encode_term_triple,
@ -14,24 +14,24 @@ use crate::oxigraph::storage::binary_encoder::{
pub use crate::oxigraph::storage::error::{ pub use crate::oxigraph::storage::error::{
CorruptionError, LoaderError, SerializerError, StorageError, CorruptionError, LoaderError, SerializerError, StorageError,
}; };
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
use crate::oxigraph::storage::numeric_encoder::Decoder; use crate::oxigraph::storage::numeric_encoder::Decoder;
use crate::oxigraph::storage::numeric_encoder::{ use crate::oxigraph::storage::numeric_encoder::{
insert_term, EncodedQuad, EncodedTerm, StrHash, StrLookup, insert_term, EncodedQuad, EncodedTerm, StrHash, StrLookup,
}; };
use backend::{ColumnFamily, ColumnFamilyDefinition, Db, Iter}; use backend::{ColumnFamily, ColumnFamilyDefinition, Db, Iter};
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
use std::collections::VecDeque; use std::collections::VecDeque;
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
use std::collections::{HashMap, HashSet}; use std::collections::{HashMap, HashSet};
use std::error::Error; use std::error::Error;
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
use std::mem::{swap, take}; use std::mem::{swap, take};
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
use std::sync::Mutex; use std::sync::Mutex;
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
use std::{io, thread}; use std::{io, thread};
mod backend; mod backend;
@ -51,16 +51,16 @@ const DSPO_CF: &str = "dspo";
const DPOS_CF: &str = "dpos"; const DPOS_CF: &str = "dpos";
const DOSP_CF: &str = "dosp"; const DOSP_CF: &str = "dosp";
const GRAPHS_CF: &str = "graphs"; const GRAPHS_CF: &str = "graphs";
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
const DEFAULT_CF: &str = "default"; const DEFAULT_CF: &str = "default";
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
const DEFAULT_BULK_LOAD_BATCH_SIZE: usize = 1_000_000; const DEFAULT_BULK_LOAD_BATCH_SIZE: usize = 1_000_000;
/// Low level storage primitives /// Low level storage primitives
#[derive(Clone)] #[derive(Clone)]
pub struct Storage { pub struct Storage {
db: Db, db: Db,
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
default_cf: ColumnFamily, default_cf: ColumnFamily,
id2str_cf: ColumnFamily, id2str_cf: ColumnFamily,
spog_cf: ColumnFamily, spog_cf: ColumnFamily,
@ -80,7 +80,7 @@ impl Storage {
Self::setup(Db::new(Self::column_families())?) Self::setup(Db::new(Self::column_families())?)
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
pub fn open(path: &Path, key: Option<[u8; 32]>) -> Result<Self, StorageError> { pub fn open(path: &Path, key: Option<[u8; 32]>) -> Result<Self, StorageError> {
Self::setup(Db::open_read_write( Self::setup(Db::open_read_write(
Some(path), Some(path),
@ -89,7 +89,7 @@ impl Storage {
)?) )?)
} }
// #[cfg(all(not(target_family = "wasm"), not(doc)))] // #[cfg(all(not(target_family = "wasm")))]
// pub fn open_secondary(primary_path: &Path) -> Result<Self, StorageError> { // pub fn open_secondary(primary_path: &Path) -> Result<Self, StorageError> {
// Self::setup(Db::open_secondary( // Self::setup(Db::open_secondary(
// primary_path, // primary_path,
@ -98,7 +98,7 @@ impl Storage {
// )?) // )?)
// } // }
// #[cfg(all(not(target_family = "wasm"), not(doc)))] // #[cfg(all(not(target_family = "wasm")))]
// pub fn open_persistent_secondary( // pub fn open_persistent_secondary(
// primary_path: &Path, // primary_path: &Path,
// secondary_path: &Path, // secondary_path: &Path,
@ -110,7 +110,7 @@ impl Storage {
// )?) // )?)
// } // }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
pub fn open_read_only(path: &Path, key: Option<[u8; 32]>) -> Result<Self, StorageError> { pub fn open_read_only(path: &Path, key: Option<[u8; 32]>) -> Result<Self, StorageError> {
Self::setup(Db::open_read_only(path, Self::column_families(), key)?) Self::setup(Db::open_read_only(path, Self::column_families(), key)?)
} }
@ -188,7 +188,7 @@ impl Storage {
fn setup(db: Db) -> Result<Self, StorageError> { fn setup(db: Db) -> Result<Self, StorageError> {
let this = Self { let this = Self {
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
default_cf: db.column_family(DEFAULT_CF)?, default_cf: db.column_family(DEFAULT_CF)?,
id2str_cf: db.column_family(ID2STR_CF)?, id2str_cf: db.column_family(ID2STR_CF)?,
spog_cf: db.column_family(SPOG_CF)?, spog_cf: db.column_family(SPOG_CF)?,
@ -203,12 +203,12 @@ impl Storage {
graphs_cf: db.column_family(GRAPHS_CF)?, graphs_cf: db.column_family(GRAPHS_CF)?,
db, db,
}; };
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
this.migrate()?; this.migrate()?;
Ok(this) Ok(this)
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
fn migrate(&self) -> Result<(), StorageError> { fn migrate(&self) -> Result<(), StorageError> {
let mut version = self.ensure_version()?; let mut version = self.ensure_version()?;
if version == 0 { if version == 0 {
@ -248,7 +248,7 @@ impl Storage {
} }
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
fn ensure_version(&self) -> Result<u64, StorageError> { fn ensure_version(&self) -> Result<u64, StorageError> {
Ok( Ok(
if let Some(version) = self.db.get(&self.default_cf, b"oxversion")? { if let Some(version) = self.db.get(&self.default_cf, b"oxversion")? {
@ -262,7 +262,7 @@ impl Storage {
) )
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
fn update_version(&self, version: u64) -> Result<(), StorageError> { fn update_version(&self, version: u64) -> Result<(), StorageError> {
self.db self.db
.insert(&self.default_cf, b"oxversion", &version.to_be_bytes())?; .insert(&self.default_cf, b"oxversion", &version.to_be_bytes())?;
@ -289,12 +289,12 @@ impl Storage {
}) })
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
pub fn flush(&self) -> Result<(), StorageError> { pub fn flush(&self) -> Result<(), StorageError> {
self.db.flush() self.db.flush()
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
pub fn compact(&self) -> Result<(), StorageError> { pub fn compact(&self) -> Result<(), StorageError> {
self.db.compact(&self.default_cf)?; self.db.compact(&self.default_cf)?;
self.db.compact(&self.gspo_cf)?; self.db.compact(&self.gspo_cf)?;
@ -309,7 +309,7 @@ impl Storage {
self.db.compact(&self.id2str_cf) self.db.compact(&self.id2str_cf)
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
pub fn backup(&self, target_directory: &Path) -> Result<(), StorageError> { pub fn backup(&self, target_directory: &Path) -> Result<(), StorageError> {
self.db.backup(target_directory) self.db.backup(target_directory)
} }
@ -634,7 +634,7 @@ impl StorageReader {
} }
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
pub fn get_str(&self, key: &StrHash) -> Result<Option<String>, StorageError> { pub fn get_str(&self, key: &StrHash) -> Result<Option<String>, StorageError> {
Ok(self Ok(self
.storage .storage
@ -645,7 +645,7 @@ impl StorageReader {
.map_err(CorruptionError::new)?) .map_err(CorruptionError::new)?)
} }
#[cfg(any(target_family = "wasm", doc))] #[cfg(any(target_family = "wasm"))]
pub fn get_str(&self, key: &StrHash) -> Result<Option<String>, StorageError> { pub fn get_str(&self, key: &StrHash) -> Result<Option<String>, StorageError> {
Ok(self Ok(self
.reader .reader
@ -655,21 +655,21 @@ impl StorageReader {
.map_err(CorruptionError::new)?) .map_err(CorruptionError::new)?)
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
pub fn contains_str(&self, key: &StrHash) -> Result<bool, StorageError> { pub fn contains_str(&self, key: &StrHash) -> Result<bool, StorageError> {
self.storage self.storage
.db .db
.contains_key(&self.storage.id2str_cf, &key.to_be_bytes()) .contains_key(&self.storage.id2str_cf, &key.to_be_bytes())
} }
#[cfg(any(target_family = "wasm", doc))] #[cfg(any(target_family = "wasm"))]
pub fn contains_str(&self, key: &StrHash) -> Result<bool, StorageError> { pub fn contains_str(&self, key: &StrHash) -> Result<bool, StorageError> {
self.reader self.reader
.contains_key(&self.storage.id2str_cf, &key.to_be_bytes()) .contains_key(&self.storage.id2str_cf, &key.to_be_bytes())
} }
/// Validates that all the storage invariants held in the data /// Validates that all the storage invariants held in the data
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
pub fn validate(&self) -> Result<(), StorageError> { pub fn validate(&self) -> Result<(), StorageError> {
// triples // triples
let dspo_size = self.dspo_quads(&[]).count(); let dspo_size = self.dspo_quads(&[]).count();
@ -781,7 +781,7 @@ impl StorageReader {
} }
/// Validates that all the storage invariants held in the data /// Validates that all the storage invariants held in the data
#[cfg(any(target_family = "wasm", doc))] #[cfg(any(target_family = "wasm"))]
#[allow(clippy::unused_self, clippy::unnecessary_wraps)] #[allow(clippy::unused_self, clippy::unnecessary_wraps)]
pub fn validate(&self) -> Result<(), StorageError> { pub fn validate(&self) -> Result<(), StorageError> {
Ok(()) // TODO Ok(()) // TODO
@ -1005,7 +1005,7 @@ impl<'a> StorageWriter<'a> {
} }
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
fn insert_str(&mut self, key: &StrHash, value: &str) -> Result<(), StorageError> { fn insert_str(&mut self, key: &StrHash, value: &str) -> Result<(), StorageError> {
if self if self
.storage .storage
@ -1021,7 +1021,7 @@ impl<'a> StorageWriter<'a> {
) )
} }
#[cfg(any(target_family = "wasm", doc))] #[cfg(any(target_family = "wasm"))]
fn insert_str(&mut self, key: &StrHash, value: &str) -> Result<(), StorageError> { fn insert_str(&mut self, key: &StrHash, value: &str) -> Result<(), StorageError> {
self.transaction.insert( self.transaction.insert(
&self.storage.id2str_cf, &self.storage.id2str_cf,
@ -1186,7 +1186,7 @@ impl<'a> StorageWriter<'a> {
} }
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
#[must_use] #[must_use]
pub struct StorageBulkLoader { pub struct StorageBulkLoader {
storage: Storage, storage: Storage,
@ -1195,7 +1195,7 @@ pub struct StorageBulkLoader {
max_memory_size: Option<usize>, max_memory_size: Option<usize>,
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
impl StorageBulkLoader { impl StorageBulkLoader {
pub fn new(storage: Storage) -> Self { pub fn new(storage: Storage) -> Self {
Self { Self {
@ -1326,7 +1326,7 @@ impl StorageBulkLoader {
} }
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
struct FileBulkLoader<'a> { struct FileBulkLoader<'a> {
storage: &'a Storage, storage: &'a Storage,
id2str: HashMap<StrHash, Box<str>>, id2str: HashMap<StrHash, Box<str>>,
@ -1335,7 +1335,7 @@ struct FileBulkLoader<'a> {
graphs: HashSet<EncodedTerm>, graphs: HashSet<EncodedTerm>,
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
impl<'a> FileBulkLoader<'a> { impl<'a> FileBulkLoader<'a> {
fn new(storage: &'a Storage, batch_size: usize) -> Self { fn new(storage: &'a Storage, batch_size: usize) -> Self {
Self { Self {
@ -1541,7 +1541,7 @@ impl<'a> FileBulkLoader<'a> {
} }
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
fn map_thread_result<R>(result: thread::Result<R>) -> io::Result<R> { fn map_thread_result<R>(result: thread::Result<R>) -> io::Result<R> {
result.map_err(|e| { result.map_err(|e| {
io::Error::new( io::Error::new(

@ -25,7 +25,7 @@
//! }; //! };
//! # Result::<_, Box<dyn std::error::Error>>::Ok(()) //! # Result::<_, Box<dyn std::error::Error>>::Ok(())
//! ``` //! ```
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
use super::io::RdfParseError; use super::io::RdfParseError;
use super::io::{RdfFormat, RdfParser, RdfSerializer}; use super::io::{RdfFormat, RdfParser, RdfSerializer};
use super::model::*; use super::model::*;
@ -34,7 +34,7 @@ use super::sparql::{
QueryResults, Update, UpdateOptions, QueryResults, Update, UpdateOptions,
}; };
use super::storage::numeric_encoder::{Decoder, EncodedQuad, EncodedTerm}; use super::storage::numeric_encoder::{Decoder, EncodedQuad, EncodedTerm};
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
use super::storage::StorageBulkLoader; use super::storage::StorageBulkLoader;
use super::storage::{ use super::storage::{
ChainedDecodingQuadIterator, DecodingGraphIterator, Storage, StorageReader, StorageWriter, ChainedDecodingQuadIterator, DecodingGraphIterator, Storage, StorageReader, StorageWriter,
@ -42,7 +42,7 @@ use super::storage::{
pub use super::storage::{CorruptionError, LoaderError, SerializerError, StorageError}; pub use super::storage::{CorruptionError, LoaderError, SerializerError, StorageError};
use std::error::Error; use std::error::Error;
use std::io::{Read, Write}; use std::io::{Read, Write};
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
use std::path::Path; use std::path::Path;
use std::{fmt, str}; use std::{fmt, str};
@ -100,14 +100,14 @@ impl Store {
/// Only one read-write [`Store`] can exist at the same time. /// Only one read-write [`Store`] can exist at the same time.
/// If you want to have extra [`Store`] instance opened on a same data /// If you want to have extra [`Store`] instance opened on a same data
/// use [`Store::open_read_only`]. /// use [`Store::open_read_only`].
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
pub fn open(path: impl AsRef<Path>) -> Result<Self, StorageError> { pub fn open(path: impl AsRef<Path>) -> Result<Self, StorageError> {
Ok(Self { Ok(Self {
storage: Storage::open(path.as_ref(), None)?, storage: Storage::open(path.as_ref(), None)?,
}) })
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
pub fn open_with_key(path: impl AsRef<Path>, key: [u8; 32]) -> Result<Self, StorageError> { pub fn open_with_key(path: impl AsRef<Path>, key: [u8; 32]) -> Result<Self, StorageError> {
Ok(Self { Ok(Self {
storage: Storage::open(path.as_ref(), Some(key))?, storage: Storage::open(path.as_ref(), Some(key))?,
@ -124,7 +124,7 @@ impl Store {
// /// If you prefer persistent storage use [`Store::open_persistent_secondary`]. // /// If you prefer persistent storage use [`Store::open_persistent_secondary`].
// /// // ///
// /// If you want to simple read-only [`Store`] use [`Store::open_read_only`]. // /// If you want to simple read-only [`Store`] use [`Store::open_read_only`].
// #[cfg(all(not(target_family = "wasm"), not(doc)))] // #[cfg(all(not(target_family = "wasm")))]
// pub fn open_secondary(primary_path: impl AsRef<Path>) -> Result<Self, StorageError> { // pub fn open_secondary(primary_path: impl AsRef<Path>) -> Result<Self, StorageError> {
// Ok(Self { // Ok(Self {
// storage: Storage::open_secondary(primary_path.as_ref())?, // storage: Storage::open_secondary(primary_path.as_ref())?,
@ -139,7 +139,7 @@ impl Store {
/// `primary_path` must be the path of the primary instance and `secondary_path` an other directory for the secondary instance cache. /// `primary_path` must be the path of the primary instance and `secondary_path` an other directory for the secondary instance cache.
/// ///
/// If you want to simple read-only [`Store`] use [`Store::open_read_only`]. /// If you want to simple read-only [`Store`] use [`Store::open_read_only`].
// #[cfg(all(not(target_family = "wasm"), not(doc)))] // #[cfg(all(not(target_family = "wasm")))]
// pub fn open_persistent_secondary( // pub fn open_persistent_secondary(
// primary_path: impl AsRef<Path>, // primary_path: impl AsRef<Path>,
// secondary_path: impl AsRef<Path>, // secondary_path: impl AsRef<Path>,
@ -155,7 +155,7 @@ impl Store {
/// Opens a read-only [`Store`] from disk. /// Opens a read-only [`Store`] from disk.
/// ///
/// Opening as read-only while having an other process writing the database is undefined behavior. /// Opening as read-only while having an other process writing the database is undefined behavior.
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
pub fn open_read_only( pub fn open_read_only(
path: impl AsRef<Path>, path: impl AsRef<Path>,
key: Option<[u8; 32]>, key: Option<[u8; 32]>,
@ -939,7 +939,7 @@ impl Store {
/// Flushes all buffers and ensures that all writes are saved on disk. /// Flushes all buffers and ensures that all writes are saved on disk.
/// ///
/// Flushes are automatically done using background threads but might lag a little bit. /// Flushes are automatically done using background threads but might lag a little bit.
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
pub fn flush(&self) -> Result<(), StorageError> { pub fn flush(&self) -> Result<(), StorageError> {
self.storage.flush() self.storage.flush()
} }
@ -949,7 +949,7 @@ impl Store {
/// Useful to call after a batch upload or another similar operation. /// Useful to call after a batch upload or another similar operation.
/// ///
/// <div class="warning">Can take hours on huge databases.</div> /// <div class="warning">Can take hours on huge databases.</div>
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
pub fn optimize(&self) -> Result<(), StorageError> { pub fn optimize(&self) -> Result<(), StorageError> {
self.storage.compact() self.storage.compact()
} }
@ -972,7 +972,7 @@ impl Store {
/// This allows cheap regular backups. /// This allows cheap regular backups.
/// ///
/// If you want to move your data to another RDF storage system, you should have a look at the [`Store::dump_to_write`] function instead. /// If you want to move your data to another RDF storage system, you should have a look at the [`Store::dump_to_write`] function instead.
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
pub fn backup(&self, target_directory: impl AsRef<Path>) -> Result<(), StorageError> { pub fn backup(&self, target_directory: impl AsRef<Path>) -> Result<(), StorageError> {
self.storage.backup(target_directory.as_ref()) self.storage.backup(target_directory.as_ref())
} }
@ -999,7 +999,7 @@ impl Store {
/// assert!(store.contains(QuadRef::new(ex, ex, ex, ex))?); /// assert!(store.contains(QuadRef::new(ex, ex, ex, ex))?);
/// # Result::<_, Box<dyn std::error::Error>>::Ok(()) /// # Result::<_, Box<dyn std::error::Error>>::Ok(())
/// ``` /// ```
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
pub fn bulk_loader(&self) -> BulkLoader { pub fn bulk_loader(&self) -> BulkLoader {
BulkLoader { BulkLoader {
storage: StorageBulkLoader::new(self.storage.clone()), storage: StorageBulkLoader::new(self.storage.clone()),
@ -1617,14 +1617,14 @@ impl Iterator for GraphNameIter {
/// assert!(store.contains(QuadRef::new(ex, ex, ex, ex))?); /// assert!(store.contains(QuadRef::new(ex, ex, ex, ex))?);
/// # Result::<_, Box<dyn std::error::Error>>::Ok(()) /// # Result::<_, Box<dyn std::error::Error>>::Ok(())
/// ``` /// ```
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
#[must_use] #[must_use]
pub struct BulkLoader { pub struct BulkLoader {
storage: StorageBulkLoader, storage: StorageBulkLoader,
on_parse_error: Option<Box<dyn Fn(RdfParseError) -> Result<(), RdfParseError>>>, on_parse_error: Option<Box<dyn Fn(RdfParseError) -> Result<(), RdfParseError>>>,
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
impl BulkLoader { impl BulkLoader {
/// Sets the maximal number of threads to be used by the bulk loader per operation. /// Sets the maximal number of threads to be used by the bulk loader per operation.
/// ///

@ -38,7 +38,7 @@ bloomfilter = { version = "1.0.13", features = ["random","serde"] }
curve25519-dalek = "3.2.0" curve25519-dalek = "3.2.0"
threshold_crypto = "0.4.0" threshold_crypto = "0.4.0"
crypto_box = { version = "0.8.2", features = ["seal"] } crypto_box = { version = "0.8.2", features = ["seal"] }
zeroize = { version = "1.6.0", features = ["zeroize_derive"] } zeroize = { version = "1.7.0", features = ["zeroize_derive"] }
base64-url = "2.0.0" base64-url = "2.0.0"
web-time = "0.2.0" web-time = "0.2.0"
time = { version= "0.3.36", features = ["formatting"] } time = { version= "0.3.36", features = ["formatting"] }

@ -1,6 +1,6 @@
[package] [package]
name = "ng-storage-rocksdb" name = "ng-storage-rocksdb"
# version = "0.1.0" version = "0.1.0-preview.3"
description = "Stores based on RocksDB for NextGraph" description = "Stores based on RocksDB for NextGraph"
version.workspace = true version.workspace = true
edition.workspace = true edition.workspace = true
@ -20,4 +20,4 @@ ng-repo = { path = "../ng-repo", version = "0.1.0-preview.1" }
git = "https://git.nextgraph.org/NextGraph/rust-rocksdb.git" git = "https://git.nextgraph.org/NextGraph/rust-rocksdb.git"
branch = "master" branch = "master"
features = [ ] features = [ ]
version = "0.21.0" version = "0.21.0-ngpreview.1"

@ -1,6 +1,6 @@
[package] [package]
name = "ng-verifier" name = "ng-verifier"
version = "0.1.0-preview.2" version = "0.1.0-preview.3"
description = "Verifier library of NextGraph" description = "Verifier library of NextGraph"
edition.workspace = true edition.workspace = true
license.workspace = true license.workspace = true
@ -32,17 +32,14 @@ yrs = "0.18.2"
bloomfilter = { version = "1.0.13", features = ["random","serde"] } bloomfilter = { version = "1.0.13", features = ["random","serde"] }
ng-repo = { path = "../ng-repo", version = "0.1.0-preview.1" } ng-repo = { path = "../ng-repo", version = "0.1.0-preview.1" }
ng-net = { path = "../ng-net", version = "0.1.0-preview.1" } ng-net = { path = "../ng-net", version = "0.1.0-preview.1" }
ng-oxigraph = { path = "../ng-oxigraph", version = "0.4.0-alpha.7-ngpreview2" } ng-oxigraph = { path = "../ng-oxigraph", version = "0.4.0-alpha.7-ngpreview3" }
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
ng-oxigraph = { path = "../ng-oxigraph", version = "0.4.0-alpha.7-ngpreview2", features = ["js"] } ng-oxigraph = { path = "../ng-oxigraph", version = "0.4.0-alpha.7-ngpreview3", features = ["js"] }
[target.'cfg(all(not(target_arch = "wasm32"),not(doc)))'.dependencies] [target.'cfg(all(not(target_arch = "wasm32")))'.dependencies]
ng-storage-rocksdb = { path = "../ng-storage-rocksdb", version = "0.1.0-preview.1" } ng-storage-rocksdb = { path = "../ng-storage-rocksdb", version = "0.1.0-preview.3" }
getrandom = "0.2.7" getrandom = "0.2.7"
[dev-dependencies] [dev-dependencies]
ng-repo = { path = "../ng-repo", version = "0.1.0-preview.1", features = ["testing"] } ng-repo = { path = "../ng-repo", version = "0.1.0-preview.1", features = ["testing"] }
[package.metadata.docs.rs]
rustc-args = [ "--cfg" , "doc"]

@ -12,5 +12,5 @@ mod commits;
mod request_processor; mod request_processor;
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
mod rocksdb_user_storage; mod rocksdb_user_storage;

@ -13,11 +13,11 @@ use core::fmt;
use std::cmp::max; use std::cmp::max;
use std::collections::BTreeMap; use std::collections::BTreeMap;
use std::collections::HashSet; use std::collections::HashSet;
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
use std::fs::create_dir_all; use std::fs::create_dir_all;
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
use std::fs::{read, File, OpenOptions}; use std::fs::{read, File, OpenOptions};
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
use std::io::Write; use std::io::Write;
use std::{collections::HashMap, sync::Arc}; use std::{collections::HashMap, sync::Arc};
@ -58,7 +58,7 @@ use ng_net::{
}; };
use crate::commits::*; use crate::commits::*;
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
use crate::rocksdb_user_storage::RocksDbUserStorage; use crate::rocksdb_user_storage::RocksDbUserStorage;
use crate::types::*; use crate::types::*;
use crate::user_storage::InMemoryUserStorage; use crate::user_storage::InMemoryUserStorage;
@ -714,7 +714,7 @@ impl Verifier {
} }
Ok(res) Ok(res)
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
VerifierConfigType::RocksDb(path) => { VerifierConfigType::RocksDb(path) => {
let mut path = path.clone(); let mut path = path.clone();
path.push(format!("outbox{}", self.peer_id.to_hash_string())); path.push(format!("outbox{}", self.peer_id.to_hash_string()));
@ -794,7 +794,7 @@ impl Verifier {
serde_bare::to_vec(&e)?, serde_bare::to_vec(&e)?,
)?; )?;
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
VerifierConfigType::RocksDb(path) => { VerifierConfigType::RocksDb(path) => {
let mut path = path.clone(); let mut path = path.clone();
std::fs::create_dir_all(path.clone()).unwrap(); std::fs::create_dir_all(path.clone()).unwrap();
@ -1968,7 +1968,7 @@ impl Verifier {
let res = (js.last_seq_function)(self.peer_id, qty)?; let res = (js.last_seq_function)(self.peer_id, qty)?;
self.max_reserved_seq_num = res + qty as u64; self.max_reserved_seq_num = res + qty as u64;
} }
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
VerifierConfigType::RocksDb(path) => { VerifierConfigType::RocksDb(path) => {
let mut path = path.clone(); let mut path = path.clone();
std::fs::create_dir_all(path.clone()).unwrap(); std::fs::create_dir_all(path.clone()).unwrap();
@ -2028,7 +2028,7 @@ impl Verifier {
Some(Box::new(InMemoryUserStorage::new()) as Box<dyn UserStorage>), Some(Box::new(InMemoryUserStorage::new()) as Box<dyn UserStorage>),
Some(block_storage), Some(block_storage),
), ),
#[cfg(all(not(target_family = "wasm"), not(doc)))] #[cfg(all(not(target_family = "wasm")))]
VerifierConfigType::RocksDb(path) => { VerifierConfigType::RocksDb(path) => {
let mut path_oxi = path.clone(); let mut path_oxi = path.clone();
path_oxi.push("graph"); path_oxi.push("graph");

@ -1,6 +1,6 @@
[package] [package]
name = "ng-wallet" name = "ng-wallet"
version = "0.1.0-preview.1" version = "0.1.0-preview.3"
description = "Wallet library of NextGraph. keeps the secret keys of all identities of the user in a safe wallet. NextGraph is a decentralized, secure and local-first web 3.0 ecosystem based on Semantic Web and CRDTs" description = "Wallet library of NextGraph. keeps the secret keys of all identities of the user in a safe wallet. NextGraph is a decentralized, secure and local-first web 3.0 ecosystem based on Semantic Web and CRDTs"
categories = ["authentication"] categories = ["authentication"]
edition.workspace = true edition.workspace = true
@ -23,7 +23,7 @@ async-std = { version = "1.12.0", features = ["attributes","unstable"] }
getrandom = { version = "0.1.1", features = ["wasm-bindgen"] } getrandom = { version = "0.1.1", features = ["wasm-bindgen"] }
rand = { version = "0.7", features = ["getrandom"] } rand = { version = "0.7", features = ["getrandom"] }
aes-gcm-siv = {version = "0.11.1", features = ["aes","heapless","getrandom","std"] } aes-gcm-siv = {version = "0.11.1", features = ["aes","heapless","getrandom","std"] }
zeroize = { version = "1.6.0", features = ["zeroize_derive"] } zeroize = { version = "1.7.0", features = ["zeroize_derive"] }
crypto_box = { version = "0.8.2", features = ["seal"] } crypto_box = { version = "0.8.2", features = ["seal"] }
blake3 = "1.3.1" blake3 = "1.3.1"
argon2 = "0.5.0" argon2 = "0.5.0"
@ -33,8 +33,8 @@ image = "0.24.6"
web-time = "0.2.0" web-time = "0.2.0"
ng-repo = { path = "../ng-repo", version = "0.1.0-preview.1" } ng-repo = { path = "../ng-repo", version = "0.1.0-preview.1" }
ng-net = { path = "../ng-net", version = "0.1.0-preview.1" } ng-net = { path = "../ng-net", version = "0.1.0-preview.1" }
ng-verifier = { path = "../ng-verifier", version = "0.1.0-preview.1" } ng-verifier = { path = "../ng-verifier", version = "0.1.0-preview.3" }
[dev-dependencies] [dev-dependencies]
ng-repo = { path = "../ng-repo", version = "0.1.0-preview.1", features = ["testing"] } ng-repo = { path = "../ng-repo", version = "0.1.0-preview.1", features = ["testing"] }
ng-verifier = { path = "../ng-verifier", version = "0.1.0-preview.1", features = ["testing"] } ng-verifier = { path = "../ng-verifier", version = "0.1.0-preview.3", features = ["testing"] }

@ -19,7 +19,7 @@ maintenance = { status = "actively-developed" }
serde = { version = "1.0", features = ["derive"] } serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0" serde_json = "1.0"
async-std = { version = "1.12.0", features = ["attributes"] } async-std = { version = "1.12.0", features = ["attributes"] }
zeroize = { version = "1.6.0" } zeroize = { version = "1.7.0" }
getrandom = "0.2.7" getrandom = "0.2.7"
blake3 = "1.3.1" blake3 = "1.3.1"
duration-str = "0.7.1" duration-str = "0.7.1"

@ -20,7 +20,7 @@ maintenance = { status = "actively-developed" }
serde_bare = "0.5.0" serde_bare = "0.5.0"
serde_json = "1.0" serde_json = "1.0"
async-std = { version = "1.12.0", features = ["attributes"] } async-std = { version = "1.12.0", features = ["attributes"] }
zeroize = { version = "1.6.0" } zeroize = { version = "1.7.0" }
addr = "0.15.6" addr = "0.15.6"
regex = "1.8.4" regex = "1.8.4"
lazy_static = "1.4.0" lazy_static = "1.4.0"
@ -29,7 +29,7 @@ env_logger = "0.10"
clap = { version = "4.3.21", features = ["derive","env","string"] } clap = { version = "4.3.21", features = ["derive","env","string"] }
ng-repo = { path = "../ng-repo", version = "0.1.0-preview.1", features = ["server_log_output"] } ng-repo = { path = "../ng-repo", version = "0.1.0-preview.1", features = ["server_log_output"] }
ng-net = { path = "../ng-net", version = "0.1.0-preview.1" } ng-net = { path = "../ng-net", version = "0.1.0-preview.1" }
ng-broker = { path = "../ng-broker", version = "0.1.0-preview.1" } ng-broker = { path = "../ng-broker", version = "0.1.0-preview.3" }

Loading…
Cancel
Save