cql2-wasm
A small WebAssembly module for parsing and translating CQL2.
Usage
Add to your project:
npm i cql2-wasm
Then:
import { CQL2 } from 'cql2-wasm'
const cql2 = new CQL2('collection = foo')
console.log('is_valid():', cql2.is_valid())
console.log('to_json():', cql2.to_json())
console.log('to_text():', cql2.to_text())
Building
Get wasm-pack.
Then (from the top-level directory in this repo):
scripts/buildwasm
You can then preview our WASM playground locally.
Get uv, then:
uv sync
uv run mkdocs serve
The playground will be available at http://127.0.0.1:8000/cql2-rs/playground/.
There is a live version available at http://developmentseed.org/cql2-rs/latest/playground/.
Testing
This package includes two types of tests:
Rust Unit Tests
Unit tests are written in tests/common/mod.rs and support execution in various environments.
[!NOTE]
All demonstrated commands are to be run from the root of the repository
Firefox
Run tests/web.rs browser tests in a WASM environment using wasm-bindgen-test:
wasm-pack test --firefox wasm
Then, open http://127.0.0.1:8000/ to see the test(s) run.
Node
Run tests/node.rs browser tests in a WASM environment using wasm-bindgen-test:
wasm-pack test --node wasm
JavaScript Integration Tests
These tests are written in JavaScript and verify the actual JavaScript API surface that developers will use.
The tests work with both nodejs and web targets:
# Test with nodejs target
wasm-pack build --target nodejs wasm
npm --prefix wasm test
# Test with web target
wasm-pack build --target web wasm
npm --prefix wasm test