v0.5.0
This release provides a number of major updates, including:
- Spatial data support via the DuckDB
spatial
extension - A redesigned specification parsing and code generation package
- API contexts for vgplot: use multiple coordinators or named plot sets simultaneously
- A new Python-based local server supporting the latest DuckDB version
- Watch out for the multiple breaking changes below
Changelog:
Update declarative spec parser and code generator
- Breaking: Remove spec parser and code generator from
vgplot
. TheparseSpec
method is no longer exported by vgplot. Instead, use the new methods from the@uwdata/mosaic-spec
package. - Breaking: Remove support for client-side data loading. Previously this was used to load GeoJSON and TopoJSON data. The DuckDB spatial extension is now used to load and manage such data directly in the database.
- Breaking: The
expr
construct has been removed from declarative specs, instead usesql
. This change better aligns the specs with the underlying vgplot API (where thesql
tagged template is used). - Add
spec
package with updated spec parser and AST framework. - Add extension loading to spec processing, using the
config.extensions
spec property.
Spatial data support
- Add support for the DuckDB
spatial
extension. - Add
loadSpatial
helper and spatial methods (e.g.,centroidX
,centroidY
) tomosaic-sql
. - Remove client-side GeoJSON/TopoJSON loading, route through DuckDB instead.
- Add mapping and spatial analysis examples to tests and docs.
Python-based DuckDB server
- Add
duckdb-server
package for a Python-based HTTP/WebSocket server. This server supercedes the earlier Node-based server in theduckdb
package, due to persistent bugs arising in the Node client and Arrow extension.
Refactor packages
- Add top-level
specs
folder for shared access to example specs. - Add
plot
package for plot, mark, and interactor component classes. - Re-focus
vgplot
package solely on providing an exported API for Mosaic applications.
Other changes
- Modify the
wasmConnector
method to be synchronous. DuckDB initialization is now perform lazily. - Add options to the
wasmConnector
to use an existing DuckDB instance. - Add vgplot API contexts (
createAPIContext()
) to permit multiple coordinators or named plot sets on the same page. - Add sql
loadExtension()
utility, which generates commands to load external DuckDB extensions. - Add array support to
Coordinator.exec()
. An array of queries can now be provided, issued to DuckDB as a single multi-statement query. - Fix vgplot
margin()
attribute directive. - Fix line/area marks to not apply M4 optimization to unoriented marks.
- Fix menu input to support to non-truthy values such as
0
andnull
. (thanks @FrTennis!) - Breaking: Replace
selections
withparams
in Jupyter widget, include all params, and index params by name.