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"
|
checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"getrandom 0.3.2",
|
"getrandom 0.3.3",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"version_check",
|
"version_check",
|
||||||
"zerocopy",
|
"zerocopy",
|
||||||
@ -615,14 +615,16 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "getrandom"
|
name = "getrandom"
|
||||||
version = "0.3.2"
|
version = "0.3.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
|
checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
|
"js-sys",
|
||||||
"libc",
|
"libc",
|
||||||
"r-efi",
|
"r-efi",
|
||||||
"wasi 0.14.2+wasi-0.2.4",
|
"wasi 0.14.2+wasi-0.2.4",
|
||||||
|
"wasm-bindgen",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1139,6 +1141,7 @@ name = "offline-web-model"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"blake2",
|
"blake2",
|
||||||
|
"getrandom 0.3.3",
|
||||||
"rand 0.9.1",
|
"rand 0.9.1",
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
@ -1157,6 +1160,7 @@ dependencies = [
|
|||||||
"thiserror 2.0.12",
|
"thiserror 2.0.12",
|
||||||
"tokio",
|
"tokio",
|
||||||
"uuid",
|
"uuid",
|
||||||
|
"wasm-bindgen",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1359,7 +1363,7 @@ version = "0.9.3"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
|
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"getrandom 0.3.2",
|
"getrandom 0.3.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1911,7 +1915,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1"
|
checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fastrand",
|
"fastrand",
|
||||||
"getrandom 0.3.2",
|
"getrandom 0.3.3",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"rustix",
|
"rustix",
|
||||||
"windows-sys 0.59.0",
|
"windows-sys 0.59.0",
|
||||||
@ -2198,7 +2202,7 @@ version = "1.17.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d"
|
checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"getrandom 0.3.2",
|
"getrandom 0.3.3",
|
||||||
"js-sys",
|
"js-sys",
|
||||||
"wasm-bindgen",
|
"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
|
rust-overlay.overlays.default
|
||||||
];
|
];
|
||||||
pkgs = import nixpkgs { inherit system overlays; };
|
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 {
|
naersk-lib = pkgs.callPackage naersk {
|
||||||
rustc = rust-bin;
|
rustc = rust-bin;
|
||||||
cargo = rust-bin;
|
cargo = rust-bin;
|
||||||
@ -37,7 +40,7 @@
|
|||||||
{
|
{
|
||||||
packages.default = project;
|
packages.default = project;
|
||||||
devShells.default = pkgs.mkShell {
|
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 ];
|
packages = with pkgs; [ gnumake ];
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
@ -3,7 +3,14 @@ name = "offline-web-model"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
native = [ ]
|
||||||
|
wasm = ["getrandom/wasm_js"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
blake2 = "0.10.6"
|
blake2 = "0.10.6"
|
||||||
|
getrandom = { version="0.3.3", features=["wasm_js"] }
|
||||||
rand = "0.9.1"
|
rand = "0.9.1"
|
||||||
serde = { version = "1.0.219", features = ["derive", "rc"] }
|
serde = { version = "1.0.219", features = ["derive", "rc"] }
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,10 +3,14 @@ name = "offline-web-storage"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
native = ["sqlx", "tokio"]
|
||||||
|
wasm = ["offline-web-model/wasm", "uuid/js"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
offline-web-model = { path = "../offline-web-model" }
|
offline-web-model = { path = "../offline-web-model" }
|
||||||
sqlx = { version = "0.7", features = ["runtime-tokio-rustls", "sqlite", "uuid", "chrono"] }
|
sqlx = { version = "0.7", features = ["runtime-tokio-rustls", "sqlite", "uuid", "chrono"], optional=true }
|
||||||
tokio = { version = "1.0", features = ["full"] }
|
tokio = { version = "1.0", features = ["full"], optional=true }
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
anyhow = "1.0"
|
anyhow = "1.0"
|
||||||
@ -14,5 +18,6 @@ uuid = { version = "1.0", features = ["v4"] }
|
|||||||
chrono = { version = "0.4", features = ["serde"] }
|
chrono = { version = "0.4", features = ["serde"] }
|
||||||
blake2 = "0.10"
|
blake2 = "0.10"
|
||||||
thiserror = "2.0.12"
|
thiserror = "2.0.12"
|
||||||
|
wasm-bindgen = { version = "0.2.100", optional=true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[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>;
|
async fn get_graph(&self, root_name: &str) -> Result<Vec<Reference>, StoreError>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature="native")]
|
||||||
mod sqlite;
|
mod sqlite;
|
||||||
|
|
||||||
|
#[cfg(feature="native")]
|
||||||
pub use sqlite::SqliteReferenceStore;
|
pub use sqlite::SqliteReferenceStore;
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(feature="native")]
|
||||||
|
mod indexeddb;
|
||||||
|
|
||||||
|
#[cfg(all(test, feature="native"))]
|
||||||
mod integration_tests;
|
mod integration_tests;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user