# Description of Changes
All types are now defined and exported in `module_bindings/types.ts`,
meanings there's only one module you need to import from to access
types.
# Expected complexity level and risk
2
# Testing
n/a, no change in behavior.
# Description of Changes
This fixes a couple issues:
- We are now using the `SendDroppedRows` flag for unsubscribe messages.
- We parse reducer errors as strings now when throwing errors.
- `useTable` was not doing client-side filtering correctly for object
types (Timestamp, ConnectionId, Identity)
- `useTable` was not always recomputing snapshots when it needed to,
because it couldn't distinguish between two events if they were caused
by reducers called by other connections (or two subscription applied
events). All events how have a client-generated id attached, so we can
tell if there was actually a new event processed.
Once we have per-query storage, we can purge the client-side filtering
code.
This also adds some tests to cover these cases, and includes a bit of
refactoring.
Another change added here is to use `SenderError` in the typescript SDK
for errors that were returned by reducers (which throw `SenderError` in
typescript modules).
# Expected complexity level and risk
1
# Testing
This has some new tests added.
Much of the `useTable` logic was tested manually.