app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

commit a0834cedcdba2804b546c803fe9c6b90b095556c
parent 4d236d40358ba7b311dbb5353f7eb74e5b38221a
Author: triesap <triesap@radroots.dev>
Date:   Mon, 19 Jan 2026 07:06:11 +0000

app-utils: add array buffer helper

- add array buffer type alias per target
- add as_array_buffer conversion helper
- export binary helpers from utils crate
- add unit test for native conversion

Diffstat:
Acrates/utils/src/binary/mod.rs | 32++++++++++++++++++++++++++++++++
Mcrates/utils/src/lib.rs | 2++
2 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/crates/utils/src/binary/mod.rs b/crates/utils/src/binary/mod.rs @@ -0,0 +1,32 @@ +#![forbid(unsafe_code)] + +#[cfg(target_arch = "wasm32")] +pub type RadrootsAppArrayBuffer = js_sys::ArrayBuffer; + +#[cfg(not(target_arch = "wasm32"))] +pub type RadrootsAppArrayBuffer = Vec<u8>; + +pub fn as_array_buffer(bytes: &[u8]) -> RadrootsAppArrayBuffer { + #[cfg(target_arch = "wasm32")] + { + let array = js_sys::Uint8Array::from(bytes); + array.buffer() + } + #[cfg(not(target_arch = "wasm32"))] + { + bytes.to_vec() + } +} + +#[cfg(test)] +mod tests { + use super::as_array_buffer; + + #[test] + #[cfg(not(target_arch = "wasm32"))] + fn as_array_buffer_clones_bytes() { + let bytes = vec![1u8, 2u8, 3u8]; + let buffer = as_array_buffer(&bytes); + assert_eq!(buffer, bytes); + } +} diff --git a/crates/utils/src/lib.rs b/crates/utils/src/lib.rs @@ -2,12 +2,14 @@ pub mod error; pub mod errors; +pub mod binary; pub mod numbers; pub mod path; pub mod text; pub mod time; pub mod types; +pub use binary::{as_array_buffer, RadrootsAppArrayBuffer}; pub use errors::{err_msg, handle_err, throw_err, ERR_PREFIX_APP, ERR_PREFIX_UTILS}; pub use numbers::{num_interval_range, num_str, parse_float, parse_int}; pub use path::{