wip: infrastructure for wasm builds
This commit is contained in:
parent
4312cf45ab
commit
bca2601451
2
.cargo/config.toml
Normal file
2
.cargo/config.toml
Normal file
@ -0,0 +1,2 @@
|
||||
[target.wasm32-unknown-unknown]
|
||||
rustflags = ['--cfg', 'getrandom_backend="wasm_js"']
|
16
Cargo.lock
generated
16
Cargo.lock
generated
@ -24,7 +24,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"getrandom 0.3.2",
|
||||
"getrandom 0.3.3",
|
||||
"once_cell",
|
||||
"version_check",
|
||||
"zerocopy",
|
||||
@ -615,14 +615,16 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.3.2"
|
||||
version = "0.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
|
||||
checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"js-sys",
|
||||
"libc",
|
||||
"r-efi",
|
||||
"wasi 0.14.2+wasi-0.2.4",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1139,6 +1141,7 @@ name = "offline-web-model"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"blake2",
|
||||
"getrandom 0.3.3",
|
||||
"rand 0.9.1",
|
||||
"serde",
|
||||
]
|
||||
@ -1157,6 +1160,7 @@ dependencies = [
|
||||
"thiserror 2.0.12",
|
||||
"tokio",
|
||||
"uuid",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1359,7 +1363,7 @@ version = "0.9.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
|
||||
dependencies = [
|
||||
"getrandom 0.3.2",
|
||||
"getrandom 0.3.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1911,7 +1915,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1"
|
||||
dependencies = [
|
||||
"fastrand",
|
||||
"getrandom 0.3.2",
|
||||
"getrandom 0.3.3",
|
||||
"once_cell",
|
||||
"rustix",
|
||||
"windows-sys 0.59.0",
|
||||
@ -2198,7 +2202,7 @@ version = "1.17.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d"
|
||||
dependencies = [
|
||||
"getrandom 0.3.2",
|
||||
"getrandom 0.3.3",
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
16
Makefile
Normal file
16
Makefile
Normal file
@ -0,0 +1,16 @@
|
||||
build: wasm native
|
||||
|
||||
native: model-native storage-native
|
||||
|
||||
model-native:
|
||||
cargo build --features native -p offline-web-model
|
||||
|
||||
storage-native:
|
||||
cargo build --features native -p offline-web-storage
|
||||
|
||||
wasm: model-wasm storage-wasm
|
||||
|
||||
model-wasm:
|
||||
cargo build --target=wasm32-unknown-unknown --features wasm -p offline-web-model --verbose
|
||||
storage-wasm:
|
||||
cargo build --target=wasm32-unknown-unknown --features wasm -p offline-web-storage --verbose
|
@ -16,7 +16,10 @@
|
||||
rust-overlay.overlays.default
|
||||
];
|
||||
pkgs = import nixpkgs { inherit system overlays; };
|
||||
rust-bin = pkgs.rust-bin.stable.latest.default;
|
||||
rust-bin = pkgs.rust-bin.stable.latest.default.override {
|
||||
targets = [ "wasm32-unknown-unknown" ];
|
||||
extensions = [ "rust-src" ];
|
||||
};
|
||||
naersk-lib = pkgs.callPackage naersk {
|
||||
rustc = rust-bin;
|
||||
cargo = rust-bin;
|
||||
@ -37,7 +40,7 @@
|
||||
{
|
||||
packages.default = project;
|
||||
devShells.default = pkgs.mkShell {
|
||||
buildInputs = [ rust-bin pkgs.rust-analyzer pkgs.cargo-tarpaulin ];
|
||||
buildInputs = [ rust-bin pkgs.rust-analyzer pkgs.cargo-tarpaulin pkgs.wasm-pack ];
|
||||
packages = with pkgs; [ gnumake ];
|
||||
};
|
||||
});
|
||||
|
@ -3,7 +3,14 @@ name = "offline-web-model"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[features]
|
||||
native = [ ]
|
||||
wasm = ["getrandom/wasm_js"]
|
||||
|
||||
[dependencies]
|
||||
blake2 = "0.10.6"
|
||||
getrandom = { version="0.3.3", features=["wasm_js"] }
|
||||
rand = "0.9.1"
|
||||
serde = { version = "1.0.219", features = ["derive", "rc"] }
|
||||
|
||||
|
||||
|
@ -3,10 +3,14 @@ name = "offline-web-storage"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[features]
|
||||
native = ["sqlx", "tokio"]
|
||||
wasm = ["offline-web-model/wasm", "uuid/js"]
|
||||
|
||||
[dependencies]
|
||||
offline-web-model = { path = "../offline-web-model" }
|
||||
sqlx = { version = "0.7", features = ["runtime-tokio-rustls", "sqlite", "uuid", "chrono"] }
|
||||
tokio = { version = "1.0", features = ["full"] }
|
||||
sqlx = { version = "0.7", features = ["runtime-tokio-rustls", "sqlite", "uuid", "chrono"], optional=true }
|
||||
tokio = { version = "1.0", features = ["full"], optional=true }
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
serde_json = "1.0"
|
||||
anyhow = "1.0"
|
||||
@ -14,5 +18,6 @@ uuid = { version = "1.0", features = ["v4"] }
|
||||
chrono = { version = "0.4", features = ["serde"] }
|
||||
blake2 = "0.10"
|
||||
thiserror = "2.0.12"
|
||||
wasm-bindgen = { version = "0.2.100", optional=true }
|
||||
|
||||
[dev-dependencies]
|
||||
|
0
offline-web-storage/src/indexeddb.rs
Normal file
0
offline-web-storage/src/indexeddb.rs
Normal file
@ -20,9 +20,14 @@ pub trait ReferenceStore {
|
||||
async fn get_graph(&self, root_name: &str) -> Result<Vec<Reference>, StoreError>;
|
||||
}
|
||||
|
||||
#[cfg(feature="native")]
|
||||
mod sqlite;
|
||||
|
||||
#[cfg(feature="native")]
|
||||
pub use sqlite::SqliteReferenceStore;
|
||||
|
||||
#[cfg(test)]
|
||||
#[cfg(feature="native")]
|
||||
mod indexeddb;
|
||||
|
||||
#[cfg(all(test, feature="native"))]
|
||||
mod integration_tests;
|
||||
|
Loading…
x
Reference in New Issue
Block a user