* feat(storage): first array cursor
* feat: add first and last to rpc messages
* test(launcher): push down group first and group last
* feat(storage): window first array cursor
* test(launcher): push down bare first and bare last
* feat(storage): add capabilities for group first and group last
* refactor: rename first to limit
* refactor: make zero value for every period meaningful
* refactor: standardize launcher pushdown tests
* feat: implement resizer for Visualizations
* refactor: clean up implementation in Query
* refactor: move resizer components to shared folder
* refactor: make resizer components more generic and customizable
* fix: cleanup
* fix: clean up old runs when we fail to enqueue it
We need to make sure the runs are removed if we fail to enqueue the run to be worked.
for this we will now add an error message stating why we failed and move the run out of our kv store.
* fix: update fail message
Work had started on a opperation log but was never fully implemented and was later partially removed.
The plan here is to remove the partially defunct logs and then build a new robust op log system that will
replace it in the future.
* feat: WIP drag to resize results
* refactor: WIP make dragging smoother
* refactor: make resizing cells nice and smooth
* refactor: move height/visibility update handlers into results component
* refactor: use vanilla Math instead of lodash
* refactor: consolidate visibility and resizing code in Resizer component
* refactor: rename resizer components to be more generic
* fix: use updated component name
* refactor: use PipeData type instead of any
* chore: misc cleanup
Installing `osxcross` to `/opt` requires superuser permissions. This is
built as root in flux, but requires `sudo` for circleCI. Additionally,
there was a problem with `o64-clang` not being on the `PATH` that we
would have discovered the next time we tried to release.
The tables produced by `storage/flux` didn't previously pass our table
tests. The `Empty()` call is supposed to return false if the table was
ever not empty, but reading the table or calling `Done()` would cause
the table implementations here to return that they were always empty.
This messes up the csv encoder which then believes that it just emitted
an empty table.
The table tests for valid table implementations states that this is an
error for the table implementation. This change introduces a simple test
for `ReadFilter` and also runs the table tests on the filter iterator.