Commit graph

1614 commits

Author SHA1 Message Date
Zixuan Chen
07500dab34
fix: map.keys() may return keys from deleted entries (#618)
* fix: map.keys() may return keys from deleted entries

* chore: changeset

* chore: fix latest clippy warning
2025-01-15 14:12:30 +08:00
Zixuan Chen
d5ec926bb4
docs: update readme
Some checks failed
Release WASM / Release (push) Has been cancelled
Test All / build (push) Has been cancelled
2025-01-10 14:04:34 +08:00
github-actions[bot]
9caae235c1 chore: version packages
Some checks are pending
Release WASM / Release (push) Waiting to run
Test All / build (push) Waiting to run
2025-01-09 12:46:23 +08:00
Zixuan Chen
ddafb7e899
feat: diff, revertTo, and applyDiff (#610)
* feat: expose diff, apply_diff, revert_to, to rust crate

* fix: revert to

* refactor: simplify TextDiff data structure

* fix: make diff and apply_diff actually work

* step 0

* feat(wasm): add diff, applyDiff, revertTo

* test: add a more complicated revert test

* chore: fix clippy warnings

* feat: add order to diff events batch

* fix: DiffBatch invariants maintain

* docs: refine docs a bit

* chore: fix warnings

* chore: add changeset
2025-01-09 12:39:03 +08:00
Zixuan Chen
9c1005d92e
fix: prevent merging remote changes based on local changeMergeInterval config (#614)
* docs: make the merge interval unit clear

* fix: prevent merging remote changes with small intervals and improve commit message handling

The changeMergeInterval config should only work for local changes.

* docs: refine docs
2025-01-09 12:00:52 +08:00
Leon Zhao
763ab04797 fix: to_delta return TextDelta
Some checks are pending
Release WASM / Release (push) Waiting to run
Test All / build (push) Waiting to run
2025-01-08 17:08:02 +08:00
Michael Hahn
32d5c9b19d Adjust the ffi for apply_delta to map between ffi TextDelta and internal TextDelta
Some checks failed
Release WASM / Release (push) Has been cancelled
Test All / build (push) Has been cancelled
2025-01-06 16:46:43 +08:00
Leon Zhao
ca51a78bac chore: revert 2025-01-06 16:08:48 +08:00
Leon Zhao
477c4f6216 fix: pass DiffEvent to onPush 2025-01-06 16:08:48 +08:00
Leon Zhao
567067b4d1 fix: from value or handler
Some checks are pending
Release WASM / Release (push) Waiting to run
Test All / build (push) Waiting to run
2025-01-06 12:03:41 +08:00
Zixuan Chen
8039e446a8
feat: find id spans between (#607)
* feat: add a method to find id spans between frontiers

* feat(wasm): expose frontiers (from&to) in event

* test: fix test

* chore: changeset

* refactor: rename to findIdSpansBetween

* test: fix test err

* refactor: rename the fields of version vector diff

replace `left` and `right` with `retreat` and `forward`

* docs: add more details about find_id_spans_between
2025-01-06 11:15:10 +08:00
Zixuan Chen
ac51ceb2f9
feat: add exportJsonInIdSpan and make peer compression optional (#602)
Some checks failed
Release WASM / Release (push) Has been cancelled
Test All / build (push) Has been cancelled
This change will make the internal operations more accessible to the application code.

* feat: add exportJsonInIdSpan and make peer compression optional

- Introduced `export_json_updates_without_peer_compression` method to allow exporting JSON updates without compressing peer IDs, making it easier for application code to process.
- Updated existing `export_json_updates` method to accept a `with_peer_compression` parameter, defaulting to true.
- Refactored related code in various files to accommodate the new functionality, ensuring backward compatibility.

* fix: slice err & add tests

* chore: changeset
2025-01-05 01:25:15 +08:00
Zixuan Chen
46bab49281
chore: rm loro py (#601)
Some checks are pending
Release WASM / Release (push) Waiting to run
Test All / build (push) Waiting to run
2025-01-04 14:26:19 +08:00
Zixuan Chen
c7c1e2fa89
chore: bump rust crates
Some checks are pending
Release WASM / Release (push) Waiting to run
Test All / build (push) Waiting to run
2025-01-04 02:14:02 +08:00
github-actions[bot]
137d8b2d14 chore: version packages 2025-01-04 02:11:42 +08:00
Zixuan Chen
da249109bc
fix: should commit before travel_change_ancestors (#599)
* fix: should commit before travel_change_ancestors

* chore: changeest
2025-01-04 02:08:05 +08:00
Cole Lawrence
df621a370c
fix(typescript): tree node parent() + move() use generics (#597)
Some checks failed
Release WASM / Release (push) Has been cancelled
Test All / build (push) Has been cancelled
- removed unused move() and parent() docs
2025-01-01 04:00:06 +08:00
github-actions[bot]
2709090756 chore: version packages
Some checks are pending
Release WASM / Release (push) Waiting to run
Test All / build (push) Waiting to run
2024-12-31 14:25:59 +08:00
Zixuan Chen
df81aece51
Fix-better-event-order (#595)
The event will now be ordered by (depth, container counter). Therefore, two container creation events within the same layer will be sorted based on the containers’ counter values. This approach can prevent the issue where child tree node events are received before the parent tree node events
2024-12-31 13:26:52 +08:00
Zixuan Chen
d552955ec6
feat: make get_by_path work for tree (#594) 2024-12-31 13:11:12 +08:00
github-actions[bot]
5a85e6e5d2 chore: version packages
Some checks failed
Release WASM / Release (push) Has been cancelled
Test All / build (push) Has been cancelled
2024-12-28 22:53:50 +08:00
Zixuan Chen
9faa149e04
fix: panic when detach then attach (#592)
Some checks are pending
Release WASM / Release (push) Waiting to run
Test All / build (push) Waiting to run
detaching should commit the pending ops
2024-12-28 14:57:46 +08:00
Zixuan Chen
18e7920015
docs: update
Some checks are pending
Release WASM / Release (push) Waiting to run
Test All / build (push) Waiting to run
2024-12-27 10:32:16 +08:00
github-actions[bot]
d03d53626e chore: version packages 2024-12-27 10:19:52 +08:00
Leon Zhao
bd9c2b25a8 fix: move child in current parent 2024-12-27 09:47:11 +08:00
github-actions[bot]
2b7a621744 chore: version packages
Some checks failed
Release WASM / Release (push) Has been cancelled
Test All / build (push) Has been cancelled
2024-12-23 14:37:20 +08:00
Zixuan Chen
479c2268f3
feat: UndoManager's onPush now can access the change event (#588)
Include `origin` and `commitMessage` in the UndoManager's onPush and onPop #584
2024-12-23 11:49:35 +08:00
Zixuan Chen
42949c0e24
fix(wasm): ownership of vv (#585)
Some checks failed
Release WASM / Release (push) Has been cancelled
Test All / build (push) Has been cancelled
* test: add failed test

* fix: ownership issue of version vector in wasm

* chore: fix clippy warning
2024-12-20 02:31:59 +08:00
github-actions[bot]
f861da45fb chore: version packages
Some checks failed
Release WASM / Release (push) Has been cancelled
Test All / build (push) Has been cancelled
2024-12-16 12:03:07 +08:00
Zixuan Chen
2693db3e05
feat: implement toJsonWithReplacer method for LoroDoc to customize JSON serialization (#582)
- Added `toJsonWithReplacer` method to `LoroDoc` allowing custom serialization of document values.
- Introduced new type `TreeNodeShallowValue` for tree node representation.
- Enhanced tests to cover various scenarios for the new JSON serialization method, including handling of nested containers and value transformations.
2024-12-16 11:53:08 +08:00
Zixuan Chen
8518e2b0d5
feat: add getShallowValue for each container (#581)
Some checks are pending
Release WASM / Release (push) Waiting to run
Test All / build (push) Waiting to run
2024-12-15 13:34:07 +08:00
Zixuan Chen
62ff89fd36
refactor: rename importUpdateBatch into importBatch & refine type (#580) 2024-12-15 12:17:41 +08:00
github-actions[bot]
1275e95479 chore: version packages
Some checks failed
Release WASM / Release (push) Has been cancelled
Test All / build (push) Has been cancelled
2024-12-11 17:27:28 +08:00
Zixuan Chen
adb6ab87a7
fix: panic when returned non-boolean value from text.iter(f) (#578)
Some checks are pending
Release WASM / Release (push) Waiting to run
Test All / build (push) Waiting to run
* fix: panic when returned non-boolean value from text.iter(f) #577

* test: add related test

* fix: add type for iter function
2024-12-11 15:14:43 +08:00
github-actions[bot]
6e0437e88c chore: version packages
Some checks are pending
Release WASM / Release (push) Waiting to run
Test All / build (push) Waiting to run
2024-12-10 16:36:17 +08:00
Zixuan Chen
d08a865d50
fix: getOrCreateContainer should not throw if value is null (#576)
Some checks are pending
Release WASM / Release (push) Waiting to run
Test All / build (push) Waiting to run
* fix: getOrCreateContainer should not throw if value is null

resolve #575

* chore: update changeset release info
2024-12-10 15:01:12 +08:00
Zixuan Chen
01fccc5a7d
feat: return import status in import_batch method (#573)
Some checks are pending
Release WASM / Release (push) Waiting to run
Test All / build (push) Waiting to run
* feat: return import status in import_batch method

* feat(wasm): add importUpdateBatch returned status support

* chore: add changeset update

* chore: update ffi return type
2024-12-09 16:31:21 +08:00
Zixuan Chen
46f578bcd0
chore: fix wasm types (#569)
Some checks failed
Release WASM / Release (push) Has been cancelled
Test All / build (push) Has been cancelled
* chore: fix wasm types

* fix: type err
2024-11-29 15:53:53 +08:00
github-actions[bot]
d54ad80bb6 chore: version packages 2024-11-29 14:24:59 +08:00
Zixuan Chen
0325061476
fix: dead loop when importing updates (#570)
Fix the dead loop issue here: https://gist.github.com/sunflowerdeath/c0e2b46b6f5d2e32d368f8e04f730237

# Reason for the Dead Loop in `find_common_ancestor`

### Original Assumptions

1. **Dependency Assumption**

   If a DagNode is depended upon by other nodes, the direction of this dependency will only point to before the end of the node. This assumption is used in system design.

2. **Node Overlap Assumption**

   DagNodes do not overlap with each other. When retrieving DagNodes from two different positions:
   - They are either completely identical
   - Or they do not overlap at all
   - If there is overlap, it means they are the same node

### Current Issues

1. **Issues Caused by Lazy Loading**

   Due to the use of lazy loading, new situations have arisen. Initially:
   - A certain DagNode is not depended upon by other DagNodes
   - Therefore, the initially retrieved form is complete

2. **Impact of Subsequent Loading**

   After loading additional DagNodes:
   - The newly loaded DagNode may depend on the internal position of the previously complete DagNode
   - This causes the originally complete DagNode to be split into multiple smaller DagNodes

3. **Violation of Original Assumptions**

   In this case, when retrieving the content of the original DagNode again:
   - Other DagNode dependencies may appear in the middle
   - There may be overlaps on the DagNode
   - This violates the original design assumptions

# Fix Approach

Remove the assumption in the original implementation that "overlapping DagNodes will not occur." When overlapping DagNodes are found, retain the shorter one and remove the longer one.
2024-11-29 13:01:15 +08:00
leeeon233
a6f3ddfcd9
fix: miss an export mode in ffi
Some checks failed
Release WASM / Release (push) Has been cancelled
Test All / build (push) Has been cancelled
2024-11-28 15:03:05 +08:00
leeeon233
67f7fa54d2 chore: clean 2024-11-28 14:49:54 +08:00
leeeon233
5855bf0ebc fix: ffi export mode 2024-11-28 14:49:54 +08:00
Leon Zhao
76c630027a feat: update loro-ffi to v1.1.3
Some checks are pending
Release WASM / Release (push) Waiting to run
Test All / build (push) Waiting to run
2024-11-27 16:35:41 +08:00
github-actions[bot]
eef5a9fa9a chore: version packages
Some checks failed
Release WASM / Release (push) Has been cancelled
Test All / build (push) Has been cancelled
2024-11-18 15:25:39 +08:00
Zixuan Chen
d6966aca34
fix: fractional index is enabled by default now (#561)
* fix: tree should use jitter 0 by default

Otherwise, there may be inconsistency between the event and the actual data. But this will increase the cost when the index property is not used.

* chore: add changeset

* chore: fix warning

* refactor: enable tree move by default

* docs: update related docs
2024-11-18 14:32:56 +08:00
github-actions[bot]
c4a9729c9c chore: version packages
Some checks failed
Release WASM / Release (push) Has been cancelled
Test All / build (push) Has been cancelled
2024-11-16 19:33:41 +08:00
Zixuan Chen
e7450e21e1
chore: fix build script 2024-11-16 19:30:37 +08:00
Zixuan Chen
70c4942fad
chore: add wasm-base64 build target 2024-11-16 19:18:29 +08:00
Zixuan Chen
35e7ea5f54
fix: calc change count (#556)
Some checks failed
Release WASM / Release (push) Has been cancelled
Test All / build (push) Has been cancelled
* fix: calc change count

* fix: len ops
2024-11-13 16:52:41 +08:00