Wasm hell

This commit is contained in:
Tyler Beckman 2023-12-10 21:56:15 -07:00
parent 5f00622ed2
commit 323afc1cbd
Signed by: Ty
GPG key ID: 2813440C772555A4
7 changed files with 63 additions and 5 deletions

1
.gitignore vendored
View file

@ -1,2 +1,3 @@
/target /target
/**/input.txt /**/input.txt
wasm/pkg

24
Cargo.lock generated
View file

@ -21,13 +21,13 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
name = "advent" name = "advent"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"getrandom",
"num-bigint", "num-bigint",
"num-irrational", "num-irrational",
"num-rational", "num-rational",
"regex", "regex",
"reqwest", "reqwest",
"scraper", "scraper",
"tokio",
] ]
[[package]] [[package]]
@ -39,6 +39,16 @@ dependencies = [
"tokio", "tokio",
] ]
[[package]]
name = "advent-wasm"
version = "0.1.0"
dependencies = [
"advent",
"console_error_panic_hook",
"wasm-bindgen",
"wasm-bindgen-futures",
]
[[package]] [[package]]
name = "ahash" name = "ahash"
version = "0.8.6" version = "0.8.6"
@ -227,6 +237,16 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
[[package]]
name = "console_error_panic_hook"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
dependencies = [
"cfg-if",
"wasm-bindgen",
]
[[package]] [[package]]
name = "core-foundation" name = "core-foundation"
version = "0.9.4" version = "0.9.4"
@ -433,8 +453,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"js-sys",
"libc", "libc",
"wasi", "wasi",
"wasm-bindgen",
] ]
[[package]] [[package]]

View file

@ -1,3 +1,3 @@
[workspace] [workspace]
members = ["cli", "lib"] members = ["cli", "lib", "wasm"]
resolver = "2" resolver = "2"

View file

@ -9,5 +9,8 @@ num-irrational = { version = "0.3.0", features = ["num-bigint"] }
num-rational = { version = "0.4.1", features = ["num-bigint"] } num-rational = { version = "0.4.1", features = ["num-bigint"] }
regex = "1.10.2" regex = "1.10.2"
scraper = "0.18.1" scraper = "0.18.1"
tokio = { version = "1.34.0", features = ["macros", "rt-multi-thread"] }
reqwest = "0.11.22" reqwest = "0.11.22"
[dependencies.getrandom]
version = "0.2.11"
features = ["js"]

14
wasm/Cargo.toml Normal file
View file

@ -0,0 +1,14 @@
[package]
name = "advent-wasm"
version = "0.1.0"
authors = ["Ty"]
edition = "2021"
[lib]
crate-type = ["cdylib", "rlib"]
[dependencies]
wasm-bindgen = "0.2.84"
wasm-bindgen-futures = "0.4.39"
console_error_panic_hook = { version = "0.1.7", optional = true }
advent = { path = "../lib" }

12
wasm/index.html Normal file
View file

@ -0,0 +1,12 @@
<!DOCTYPE HTML>
<html>
<head>
<script>
WebAssembly.instantiateStreaming(fetch("simple.wasm")).then(
(results) => {
console.log(results);
},
);
</script>
</head>
</html>

6
wasm/src/lib.rs Normal file
View file

@ -0,0 +1,6 @@
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
pub async fn solve(day: u8, part: u8, auth: String) -> String {
advent::get_day(day, advent::fetcher::fetch_input(auth, day).await).solve(part, false)
}