diff --git a/Cargo.lock b/Cargo.lock
index 3fc272f8..17ad6ed2 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -371,9 +371,9 @@ dependencies = [
[[package]]
name = "borrow-or-share"
-version = "0.2.3"
+version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fa326467c5d528c03e479661320269e7716d6b7d5d49bafd30890ce0c725696"
+checksum = "dc0b364ead1874514c8c2855ab558056ebfeb775653e7ae45ff72f28f8f3166c"
[[package]]
name = "borsh"
@@ -395,7 +395,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -452,9 +452,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
[[package]]
name = "cc"
-version = "1.2.44"
+version = "1.2.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37521ac7aabe3d13122dc382493e20c9416f299d2ccd5b3a5340a2570cdeb0f3"
+checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe"
dependencies = [
"find-msvc-tools",
"jobserver",
@@ -516,7 +516,7 @@ dependencies = [
"heck",
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -633,6 +633,7 @@ dependencies = [
"cql2",
"getrandom 0.3.4",
"wasm-bindgen",
+ "wasm-bindgen-test",
"web-sys",
]
@@ -704,7 +705,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -869,7 +870,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -1319,7 +1320,7 @@ checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -1544,6 +1545,16 @@ dependencies = [
"autocfg",
]
+[[package]]
+name = "minicov"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f27fe9f1cc3c22e1687f9446c2083c4c5fc7f0bcf1c7a86bdbded14985895b4b"
+dependencies = [
+ "cc",
+ "walkdir",
+]
+
[[package]]
name = "miniz_oxide"
version = "0.8.9"
@@ -1720,7 +1731,7 @@ dependencies = [
"pest_meta",
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -1772,7 +1783,7 @@ dependencies = [
"phf_shared",
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -1928,7 +1939,7 @@ dependencies = [
"proc-macro2",
"pyo3-macros-backend",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -1941,7 +1952,7 @@ dependencies = [
"proc-macro2",
"pyo3-build-config",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -1956,9 +1967,9 @@ dependencies = [
[[package]]
name = "quote"
-version = "1.0.41"
+version = "1.0.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1"
+checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
dependencies = [
"proc-macro2",
]
@@ -2042,7 +2053,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76009fbe0614077fc1a2ce255e3a1881a2e3a3527097d5dc6d8212c585e7e38b"
dependencies = [
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -2071,7 +2082,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -2203,7 +2214,7 @@ dependencies = [
"regex",
"relative-path",
"rustc_version",
- "syn 2.0.108",
+ "syn 2.0.110",
"unicode-ident",
]
@@ -2257,6 +2268,15 @@ version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
[[package]]
name = "scopeguard"
version = "1.2.0"
@@ -2302,7 +2322,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -2397,7 +2417,7 @@ checksum = "da5fc6819faabb412da764b99d3b713bb55083c11e7e0c00144d386cd6a1939c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -2450,7 +2470,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustversion",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -2462,7 +2482,7 @@ dependencies = [
"heck",
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -2478,9 +2498,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.108"
+version = "2.0.110"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917"
+checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea"
dependencies = [
"proc-macro2",
"quote",
@@ -2495,7 +2515,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -2547,7 +2567,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -2558,7 +2578,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -2724,6 +2744,16 @@ version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64"
+[[package]]
+name = "walkdir"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
[[package]]
name = "wasi"
version = "0.11.1+wasi-snapshot-preview1"
@@ -2752,6 +2782,19 @@ dependencies = [
"wasm-bindgen-shared",
]
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.55"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "once_cell",
+ "wasm-bindgen",
+ "web-sys",
+]
+
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.105"
@@ -2771,7 +2814,7 @@ dependencies = [
"bumpalo",
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
"wasm-bindgen-shared",
]
@@ -2784,6 +2827,30 @@ dependencies = [
"unicode-ident",
]
+[[package]]
+name = "wasm-bindgen-test"
+version = "0.3.55"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfc379bfb624eb59050b509c13e77b4eb53150c350db69628141abce842f2373"
+dependencies = [
+ "js-sys",
+ "minicov",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "wasm-bindgen-test-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-test-macro"
+version = "0.3.55"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "085b2df989e1e6f9620c1311df6c996e83fe16f57792b272ce1e024ac16a90f1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.110",
+]
+
[[package]]
name = "web-sys"
version = "0.3.82"
@@ -2794,6 +2861,15 @@ dependencies = [
"wasm-bindgen",
]
+[[package]]
+name = "winapi-util"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
+dependencies = [
+ "windows-sys 0.61.2",
+]
+
[[package]]
name = "windows-core"
version = "0.62.2"
@@ -2815,7 +2891,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -2826,7 +2902,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -3093,7 +3169,7 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
"synstructure",
]
@@ -3114,7 +3190,7 @@ checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
[[package]]
@@ -3134,7 +3210,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
"synstructure",
]
@@ -3168,5 +3244,5 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.108",
+ "syn 2.0.110",
]
diff --git a/Cargo.toml b/Cargo.toml
index 600d8792..eba37e08 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -54,3 +54,6 @@ members = ["cli", "python", "wasm"]
[workspace.dependencies]
clap = "4.5.51"
+
+[profile.release]
+opt-level = "s"
diff --git a/wasm/Cargo.toml b/wasm/Cargo.toml
index 8f46206c..f4b2a1cf 100644
--- a/wasm/Cargo.toml
+++ b/wasm/Cargo.toml
@@ -12,7 +12,7 @@ keywords = ["cql2"]
publish = false
[lib]
-crate-type = ["cdylib"]
+crate-type = ["cdylib", "rlib"]
[dependencies]
cql2 = { path = ".." }
@@ -22,3 +22,6 @@ getrandom = { version = "0.3.3", features = ["wasm_js"] }
[dependencies.web-sys]
version = "0.3.82"
features = ['Document', 'Element', 'HtmlElement', 'Node', 'Window']
+
+[dev-dependencies]
+wasm-bindgen-test = "0.3.34"
diff --git a/wasm/LICENSE b/wasm/LICENSE
new file mode 120000
index 00000000..ea5b6064
--- /dev/null
+++ b/wasm/LICENSE
@@ -0,0 +1 @@
+../LICENSE
\ No newline at end of file
diff --git a/wasm/README.md b/wasm/README.md
index 98cc0ce1..d8041a30 100644
--- a/wasm/README.md
+++ b/wasm/README.md
@@ -21,3 +21,18 @@ uv run mkdocs serve
The playground will be available at .
There is a live version available at .
+
+## Testing
+
+```shell
+wasm-pack test --firefox wasm
+```
+
+Then, open to see the test(s) run.
+
+## Releasing to NPM
+
+```shell
+wasm-pack build wasm
+# TODO actually release
+```
diff --git a/wasm/tests/web.rs b/wasm/tests/web.rs
new file mode 100644
index 00000000..588094c0
--- /dev/null
+++ b/wasm/tests/web.rs
@@ -0,0 +1,16 @@
+//! Test suite for the Web and headless browsers.
+
+#![cfg(target_arch = "wasm32")]
+
+extern crate wasm_bindgen_test;
+use cql2_wasm::CQL2Expression;
+use wasm_bindgen_test::*;
+
+wasm_bindgen_test_configure!(run_in_browser);
+
+#[wasm_bindgen_test]
+fn is_valid() {
+ let expr =
+ CQL2Expression::new("landsat:scene_id = 'LC82030282019133LGN00'".to_string()).unwrap();
+ assert!(expr.is_valid());
+}