diff --git a/Cargo.lock b/Cargo.lock index 4e7e199..0b4e799 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,18 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "accessory" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28e416a3ab45838bac2ab2d81b1088d738d7b2d2c5272a54d39366565a29bd80" +dependencies = [ + "macroific", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "aceditor" version = "0.1.0" @@ -324,6 +336,20 @@ dependencies = [ "parking_lot_core", ] +[[package]] +name = "delegate-display" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9926686c832494164c33a36bf65118f4bd6e704000b58c94681bf62e9ad67a74" +dependencies = [ + "impartial-ord", + "itoa", + "macroific", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "derive-where" version = "1.4.0" @@ -335,6 +361,28 @@ dependencies = [ "syn", ] +[[package]] +name = "derive_more" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10b768e943bed7bf2cab53df09f4bc34bfd217cdb57d971e769874c9a6710618" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d286bfdaf75e988b4a78e013ecd79c581e06399ab53fbacd2d916c2f904f30b" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "syn", + "unicode-xid", +] + [[package]] name = "dirs-next" version = "2.0.0" @@ -428,6 +476,18 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "fancy_constructor" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28a27643a5d05f3a22f5afd6e0d0e6e354f92d37907006f97b84b9cb79082198" +dependencies = [ + "macroific", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "find-msvc-tools" version = "0.1.4" @@ -451,6 +511,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "form_urlencoded" version = "1.2.1" @@ -639,6 +705,15 @@ version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "foldhash", +] + [[package]] name = "hermit-abi" version = "0.3.9" @@ -798,6 +873,51 @@ dependencies = [ "icu_properties", ] +[[package]] +name = "impartial-ord" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab604ee7085efba6efc65e4ebca0e9533e3aff6cb501d7d77b211e3a781c6d5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "indexed_db_futures" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69ff41758cbd104e91033bb53bc449bec7eea65652960c81eddf3fc146ecea19" +dependencies = [ + "accessory", + "cfg-if", + "delegate-display", + "derive_more", + "fancy_constructor", + "indexed_db_futures_macros_internal", + "js-sys", + "sealed", + "smallvec", + "thiserror 2.0.12", + "tokio", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "indexed_db_futures_macros_internal" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caeba94923b68f254abef921cea7e7698bf4675fdd89d7c58bf1ed885b49a27d" +dependencies = [ + "macroific", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "indexmap" version = "2.9.0" @@ -1047,6 +1167,54 @@ version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +[[package]] +name = "macroific" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89f276537b4b8f981bf1c13d79470980f71134b7bdcc5e6e911e910e556b0285" +dependencies = [ + "macroific_attr_parse", + "macroific_core", + "macroific_macro", +] + +[[package]] +name = "macroific_attr_parse" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad4023761b45fcd36abed8fb7ae6a80456b0a38102d55e89a57d9a594a236be9" +dependencies = [ + "proc-macro2", + "quote", + "sealed", + "syn", +] + +[[package]] +name = "macroific_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a7594d3c14916fa55bef7e9d18c5daa9ed410dd37504251e4b75bbdeec33e3" +dependencies = [ + "proc-macro2", + "quote", + "sealed", + "syn", +] + +[[package]] +name = "macroific_macro" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4da6f2ed796261b0a74e2b52b42c693bb6dee1effba3a482c49592659f824b3b" +dependencies = [ + "macroific_attr_parse", + "macroific_core", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "manyhow" version = "0.11.4" @@ -1511,6 +1679,17 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "sealed" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22f968c5ea23d555e670b449c1c5e7b2fc399fdaec1d304a17cd48e288abc107" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "semver" version = "1.0.26" @@ -1723,6 +1902,7 @@ dependencies = [ "sqlformat", "sqlite-wasm-rs", "sqlite-wasm-vec", + "sqlite-wasm-vfs", "thiserror 2.0.12", "tokio", "wasm-bindgen", @@ -1732,13 +1912,35 @@ dependencies = [ [[package]] name = "sqlite-wasm-rs" -version = "0.4.8" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60bdd87fcb4c9764b024805fb2df5f1d659bea6e629fdbdcdcfc4042b9a640d0" +checksum = "e7daddb7b39e5da61fb649987177b622f95c7d0e240ce47b3c7610420e6fb8e5" dependencies = [ "cc", + "hashbrown 0.16.1", "js-sys", - "once_cell", + "thiserror 2.0.12", + "wasm-bindgen", +] + +[[package]] +name = "sqlite-wasm-vec" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505c5019531c5433e31c1d4c9933d719324bb692d1b7f7ce25504c1c7b03afe" +dependencies = [ + "cc", +] + +[[package]] +name = "sqlite-wasm-vfs" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "878a0eddb88c769f7edd7f7cf573025dc1a1fa9a93dc91866254eeb5ce83ef3c" +dependencies = [ + "indexed_db_futures", + "js-sys", + "sqlite-wasm-rs", "thiserror 2.0.12", "tokio", "wasm-bindgen", @@ -1746,15 +1948,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "sqlite-wasm-vec" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76268c49078702af3b58c4461eaaca2707d3b99d89c9f7e29fbf16ea8aa06c11" -dependencies = [ - "cc", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" diff --git a/Cargo.toml b/Cargo.toml index 6f073de..6d25502 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,6 @@ aceditor = { path = "crates/aceditor" } split-grid = { path = "crates/split-grid" } floating-ui = { path = "crates/floating-ui" } -sqlite-wasm-rs = { version = "0.4.6", default-features = false, optional = true } console_error_panic_hook = "0.1.7" leptos = { version = "0.8.2", features = ["csr"] } reactive_stores = "0.2.2" @@ -39,9 +38,12 @@ fragile = "2.0.1" hex = "0.4.3" prettytable-rs = "0.10.0" sqlformat = "0.3.5" -sqlite-wasm-vec = "0.1.0" + +sqlite-wasm-vec = "0.1.1" +sqlite-wasm-vfs = "0.1.0" +sqlite-wasm-rs = { version = "0.5.0", default-features = false } [features] default = ["sqlite3"] -sqlite3 = ["sqlite-wasm-rs/precompiled"] +sqlite3 = [] sqlite3mc = ["sqlite-wasm-rs/sqlite3mc"] diff --git a/src/worker/mod.rs b/src/worker/mod.rs index dfb7edf..0da68aa 100644 --- a/src/worker/mod.rs +++ b/src/worker/mod.rs @@ -6,10 +6,9 @@ use crate::{ }; use js_sys::Uint8Array; use once_cell::sync::Lazy; -use sqlite_wasm_rs::{ - mem_vfs::MemVfsUtil, - sahpool_vfs::{OpfsSAHPoolCfgBuilder, OpfsSAHPoolUtil}, -}; +use sqlite_wasm_rs::MemVfsUtil; +use sqlite_wasm_vfs::sahpool::{OpfsSAHPoolCfgBuilder, OpfsSAHPoolUtil}; + use sqlitend::SQLiteDb; use std::sync::Arc; use tokio::sync::Mutex; @@ -56,6 +55,9 @@ struct FSUtil { opfs: OnceCell, } +unsafe impl Send for FSUtil {} +unsafe impl Sync for FSUtil {} + struct SQLiteWorker { open_options: OpenOptions, state: SQLiteState, @@ -77,7 +79,7 @@ async fn init_opfs_util() -> Result<&'static OpfsSAHPoolUtil> { FS_UTIL .opfs .get_or_try_init(|| async { - sqlite_wasm_rs::sahpool_vfs::install( + sqlite_wasm_vfs::sahpool::install( &OpfsSAHPoolCfgBuilder::new() .directory(OPFS_VFS_DIR) .vfs_name("opfs")