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:
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::{