This PR has no functional changes. Only types are changing and getting
improved (more stricter).
A follow-up PR will come next that does a few functional changes to make
this package fully strict.
This PR adds types to the `crdt` directory to make the structure of the
merkle tree (really a merkle radix trie) clearer.
---------
Co-authored-by: Jed Fox <git@jedfox.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
I noticed that:
- The web and electron versions of our `uuid` module both looked exactly
the same…
- …and deferred to the `uuid` package…
- …and the async version just called the sync API.
So now we will just use the `uuid` package directly everywhere.
I've updated the return values in `sync/index` to sensible values based
on how they're being called.
I've updated the type of `msg.value` to be `string | number | null` to
match the values expected by `serializeValue`
actual-server does not need to import the full actual-app/api package.
It can import only the CRDT stuff.. so I'm extracting it into a new
package to reduce the size of actual-server and make the link between
things more transparent.