Commit graph

420 commits

Author SHA1 Message Date
Andrew Jeffery
62c71845cd Add some basic docs for Automerge mutations 2022-02-16 15:12:51 +00:00
Andrew Jeffery
2f49a82eea Have generate_sync_message not take mut self 2022-02-16 14:20:49 +00:00
Andrew Jeffery
ea826b70f4 Move TransactionInner and add get methods to Transaction 2022-02-16 14:15:36 +00:00
Andrew Jeffery
7cbd6effb7 Add autotxn document for wasm and cross-language use
These don't have the ability to preserve the semantics of the reference
based transaction model and so can make use of the nicer auto
transaction model.
2022-02-16 14:06:22 +00:00
Andrew Jeffery
735a4ab84c Add explicit transaction API
This removes the requirement for `&mut self`s on some of the immutable
methods on `Automerge` which can be quite inconvenient.

I've reimplemented the main functions on `Automerge` that manipulate
state to create a transaction for their op for ease of use but not
performance. I've updated the edit trace to run in a single
transaction, like on a page load.

Wasm API still needs working on at the moment to expose this properly.
2022-02-16 11:38:43 +00:00
Orion Henry
b6e0da28d8 fmt 2022-02-10 11:48:09 -05:00
Orion Henry
c8c695618b remove marks 2022-02-10 11:42:15 -05:00
Orion Henry
9136f00e43 bugfix: duplicate seq not blocked on apply_changes, clone did not close a transaction, added fork and merge to wasm 2022-02-10 11:14:44 -05:00
Orion Henry
b53305cf7f Merge branch 'marks' into tmp 2022-02-10 09:42:38 -05:00
Andrew Jeffery
7607ebbfcc Add from () for Value 2022-02-04 11:37:33 +00:00
Orion Henry
bf184fe980 remove some un needed imports 2022-02-03 14:43:02 -05:00
Orion Henry
2019943849 bump edition from 2018 to 2021 2022-02-03 14:38:21 -05:00
Orion Henry
0f49608dde spans have types not names 2022-02-02 16:29:23 -05:00
Orion Henry
1d0c54ca9a raw_spans with ids 2022-02-02 16:21:33 -05:00
Orion Henry
ee80837feb raw_spans experiment 2022-02-02 15:55:41 -05:00
Orion Henry
836e6ba510 fix return types 2022-01-31 17:21:16 -05:00
Orion Henry
bfc051f4fb cleanup / rename 2022-01-31 14:02:24 -05:00
Orion Henry
a2e433348a mark encode/decode/serde 2022-01-31 14:02:24 -05:00
Orion Henry
b794f4803d rework marks as inserts between values 2022-01-31 14:02:24 -05:00
Orion Henry
e679c4f6a0 v0 wip 2022-01-31 14:02:23 -05:00
Orion Henry
9ff0c60ccb add cra example code 2022-01-28 18:05:33 -05:00
Orion Henry
7b3db2f15a clippy lint 2022-01-20 14:17:11 -08:00
Orion Henry
54fec3e438 lamport compare was backward on actorids and so was value resolution 2022-01-20 14:17:11 -08:00
Andrew Jeffery
0388c46480 Remove unused is_empty function on optrees 2022-01-19 15:16:02 -08:00
Andrew Jeffery
429426a693 Fix removal and rollback
Credit to @orionz
2022-01-19 15:16:02 -08:00
Andrew Jeffery
2015428452 Detect object type before getting length 2022-01-19 15:16:02 -08:00
Andrew Jeffery
812c7df3a7 Add length tests to props tests 2022-01-19 15:16:02 -08:00
Andrew Jeffery
5867c8d131 Fixup CI 2022-01-19 15:11:04 -08:00
Andrew Jeffery
0ccf36fe49 Add test and doc update for setting scalarvalues 2022-01-19 15:11:04 -08:00
Orion Henry
faf3e2cae4 update todo 2022-01-18 12:45:10 -05:00
Orion Henry
8b2f0238f3 create sub op tree at a time when we know the type 2022-01-18 09:11:46 -08:00
Orion Henry
acbf394290 cleanup some dead code 2022-01-14 06:27:42 -08:00
Orion Henry
b30a2b9cc1 give Counter its own type 2022-01-14 06:27:42 -08:00
Orion Henry
d50062b769 move values into the counter type - remove need for vis_window 2022-01-14 06:27:42 -08:00
Orion Henry
e59d24f68b return values are sorted - add counter del test 2022-01-14 06:27:42 -08:00
Orion Henry
fdab61e213 derive default 2022-01-09 08:05:00 -08:00
Orion Henry
45ee5ddbd9 add import/export 2022-01-09 08:05:00 -08:00
Orion Henry
d2a7cc5f75 get sync tests working 2022-01-09 08:05:00 -08:00
Alex Good
1f0a1e4071 Correctly sort actor IDs when encoding changes
This is a port of a fix previously merged into `main`.

The javascript implementation of automerge sorts actor IDs
lexicographically when encoding changes. We were sorting actor IDs in
the order the appear in the change we're encoding. This meant that the
index that we assigned to operations in the encoded change was different
to that which the javascript implementation assigns, resulting in
mismatched head errors as the hashes we created did not match the
javascript implementation.

This change fixes the issue by sorting actor IDs lexicographically. We
make a pass over the operations in the change before encoding to collect
the actor IDs and sort them. This means we no longer need to pass a
mutable `Vec<ActorId>` to the various encode functions, which cleans
things up a little.
2022-01-04 15:28:03 -08:00
Orion Henry
96a8357e36 add hasher for exid 2022-01-03 14:59:34 -05:00
Orion Henry
4c4484b897 fix bug in wasm 2022-01-03 12:58:08 -05:00
Orion Henry
3046cbab35
Replace the OpID API with an object ID
Rather than returning an OpID for every mutation, we now return an
`Option<ObjId>`. This is `Some` only when a `make*` operation was
applied. This `ObjID` is an opaque type which can be used with any
document.
2022-01-01 20:15:02 +00:00
Alex Good
fa936b5a28 Add script to run clippy 2021-12-24 10:18:16 -08:00
Alex Good
001c9befcc Add script to run cargo fmt 2021-12-24 10:18:16 -08:00
Alex Good
216b4eed82 Add deny.toml and a script for calling cargo deny
In order to get cargo deny to pass we also update a few dependencies and
add licenses
2021-12-24 10:18:16 -08:00
Orion Henry
e275334e72 remove dead code and pubs we don't need 2021-12-21 12:23:55 -05:00
Orion Henry
780298b72c docs, tests, code cleanup 2021-12-21 09:23:34 -08:00
Orion Henry
265ce823da implement all the query_at(), add tests, was, cut dead code 2021-12-21 09:23:34 -08:00
Alex Good
6a63d30a56 Add some rust tests
This commit adds a bunch of testing infrastructure as well as most of
the tests from the `legacy_tests.js` file in the js codebase that seem
applicable to this codebase.
2021-12-20 17:54:40 -08:00
Alex Good
f22be2ade7 Make Automerge::visualise succinct, include succ
This abbreviates actor IDs so that object IDs are more readable and also
includes successor operation IDs in the op tables
2021-12-20 09:28:07 -08:00