feat: Add WASM support and browser extension infrastructure

- Add WASM build target and dependencies for all crates.
- Implement IndexedDB-based persistent storage for WASM.
- Create browser extension infrastructure (UI, scripting, etc.).
- Integrate Rhai scripting engine for secure automation.
- Implement user stories and documentation for the extension.
This commit is contained in:
2025-05-16 15:31:53 +03:00
parent 19f46d6edb
commit 13945a8725
25 changed files with 672 additions and 183 deletions

View File

@@ -7,16 +7,18 @@ edition = "2021"
path = "src/lib.rs"
[dependencies]
tokio = { version = "1.37", features = ["rt", "macros"] }
async-trait = "0.1"
js-sys = "0.3"
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
thiserror = "1"
tempfile = "3"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
sled = { version = "0.34" }
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
tempfile = "3"
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
[target.'cfg(target_arch = "wasm32")'.dependencies]

View File

@@ -28,13 +28,16 @@ use idb::{Database, TransactionMode, Factory};
use wasm_bindgen::JsValue;
#[cfg(target_arch = "wasm32")]
use js_sys::Uint8Array;
#[cfg(target_arch = "wasm32")]
use std::rc::Rc;
#[cfg(target_arch = "wasm32")]
const STORE_NAME: &str = "kv";
#[cfg(target_arch = "wasm32")]
#[derive(Clone)]
pub struct WasmStore {
db: Database,
db: Rc<Database>,
}
#[cfg(target_arch = "wasm32")]
@@ -50,7 +53,7 @@ impl WasmStore {
}
});
let db = open_req.await.map_err(|e| KVError::Other(format!("IndexedDB open error: {e:?}")))?;
Ok(Self { db })
Ok(Self { db: Rc::new(db) })
}
}