Commit graph

161 commits

Author SHA1 Message Date
Zixuan Chen
95e6130d93
Fix: richtext event (#138)
Support rich text event. Now it will emit the delta event correctly in the Quill Delta format.
2023-11-01 20:02:05 +08:00
Zixuan Chen
e1ab03f30f
feat: create doc from snapshot (#136) 2023-10-31 19:02:52 +08:00
Zixuan Chen
8293347334
Feat: autocommit transaction (#127)
* feat: auto commit

* fix: make recursive single thread event work again
2023-10-30 18:32:36 +08:00
Leon zhao
e01e98411c
feat: movable tree support (#120)
* feat: tree state

* feat: tree value

* feat: tree handler

* fix: tree diff

* test: fuzz tree

* feat: tree snapshot

* fix: tree default value

* fix: test new node

* fix: tree diff

* fix: tree unresolved value

* fix: tree fuzz

* fix: tree fuzz move

* fix: sort by tree id

* fix: tree diff sorted by lamport

* fix: sort roots before tree converted to string

* fix: rebase main

* fix: tree fuzz

* fix: delete undo

* fix: tree to json children sorted

* fix: diff calculate

* fix: diff cycle move

* fix: tree old parent cache

* feat: cache

* fix: local op add tree cache

* fix: don't add same tree move to cache

* fix: need update cache

* feat: new cache

* bench: add checkout bench

* chore: clean

* fix: apply node uncheck

* perf: lamport bound

* fix: calc old parent

* feat: tree wasm

* fix: change tree diff

* fix: tree diff retreat

* fix: tree diff should not apply when add node

* feat: new tree loro value

* chore: typo

* fix: tree deep value

* fix: snapshot tree index -1

* fix: decode tree snapshot use state

* fix: release state lock when emit event

* fix: tree node meta container

* fix: need set map container when covert to local tree op

* fix: tree value add deleted

* fix: more then one op in a change

* fix: tree fuzz deleted equal

* fix: tree calc min lamport

* feat: tree encoding v2

* doc: movable tree

* fix: test tree meta

* test: remove import bytes check

* refactor: diff of text and map

* refactor: del span

* perf: tree state use deleted cache

* fix: some details

* fix: loro js tree create

* feat: add un exist tree node

* bench:  tree depth

* fix: check out should emit event

* refactor: event

* fix: fuzz err

* fix: pass all tests

* fix: fuzz err

* fix: list child cache err

* chore: rm debug code

* fix: encode enhanced err

* fix: encode enchanced

* fix: fix several richtext issue

* fix: richtext anchor err

* chore: rm debug code

* fix: richtext fuzz err

* feat: speedup text snapshot decode

* perf: optimize snapshot encoding

* perf: speed up decode & insert

* fix: fugue span merge err

* perf: speedup delete & id cursor map

* fix: fugue merge err

* chore: update utils

* fix: fix merge

* fix: return err apply op

* fix: fix merge

* fix: get map container as tree meta
2023-10-30 11:13:52 +08:00
Zixuan Chen
d942e3d7a2
Feat: Peritext-like rich text support (#123)
* feat: richtext wip

* feat: add insert to style range map wip

* feat: richtext state

* fix: fix style state inserting and style map

* fix: tiny vec merge err

* fix: comment err

* refactor: use new generic-btree & refine impl

* feat: fugue tracker

* feat: tracker

* feat: tracker

* fix: fix a few err in impl

* feat: init richtext content state

* feat: refactor arena

* feat: extract anchor_type info out of style flag

* refactor: state apply op more efficiently
we can now reuse the repr in state and op

* fix: new clippy errors

* refactor: use state chunk as delta item

* refactor: use two op to insert style start and style end

* feat: diff calc

* feat: handler

* fix: tracker checkout err

* fix: pass basic richtext handler tests

* fix: pass handler basic marking tests

* fix: pass all peritext criteria

* feat: snapshot encoding for richtext init

* refactor: replace Text with Richtext

* refacotr: rm text code

* fix: richtext checkout err

* refactor: diff of text and map

* refactor: del span

* refactor: event

* fix: fuzz err

* fix: pass all tests

* fix: fuzz err

* fix: list child cache err

* chore: rm debug code

* fix: encode enhanced err

* fix: encode enchanced

* fix: fix several richtext issue

* fix: richtext anchor err

* chore: rm debug code

* fix: richtext fuzz err

* feat: speedup text snapshot decode

* perf: optimize snapshot encoding

* perf: speed up decode & insert

* fix: fugue span merge err

* perf: speedup delete & id cursor map

* fix: fugue merge err

* chore: update utils

* perf: speedup text insert / del

* fix: cursor cache

* perf: reduce conversion by introducing InsertText

* perf: speed up by refined cursor cache

* chore: update gbtree dep

* refactor(wasm): use quill delta format

* chore: fix warnings
2023-10-29 14:02:13 +08:00
leeeon233
5c0d8b74f4 fix: nodejs patch 2023-09-12 15:57:06 +08:00
Zixuan Chen
345b5bbcb9
perf: speedup when there are many peers 2023-09-02 18:19:34 +08:00
Zixuan Chen
fd0cc63cb5 refactor: return result when checkout to a version
err when the specified version is not found
2023-08-11 09:32:34 +08:00
Zixuan Chen
7ab8ccff64 refactor: return handler when inserting container 2023-08-05 16:25:31 +08:00
Zixuan Chen
db4eb64d42 refactor: oplog_frontiers & state_frontiers 2023-08-04 14:37:42 +08:00
Zixuan Chen
5ee860b74e chore: use serde 1 2023-08-04 11:09:32 +08:00
Zixuan Chen
c105ff2220
Feat: checkout to target version & use unicode index by default (#98)
* feat: checkout to frontiers

* feat: record timestamp

* fix: use unicode len by default for text
now "你好" has length of 2 instead of 6

* chore: rm dbg!
2023-08-04 10:45:23 +08:00
Zixuan Chen
1e736df133
Refactor: rm legacy code (#97)
* refactor: rm legacy code

* chore: rm dead code

* refactor: mv refactored files outside

* refactor: rename files & methods

* chore: rm unused deps

* fix: compact bytes err

* chore: fix ci
2023-07-31 11:49:55 +08:00
Zixuan Chen
86057adb05 fix: make events JsValue
this can avoid memory leak when FinalizationRegistry is unavailable
2023-07-30 20:33:46 +08:00
Zixuan Chen
83ee956c8b chore: mark todo 2023-07-30 19:08:32 +08:00
Zixuan Chen
41556dcb78 refactor: rm needless refcell 2023-07-30 19:06:22 +08:00
Zixuan Chen
6860132ada refactor: call events subs without await now 2023-07-30 17:08:49 +08:00
Zixuan Chen
88003bdffe fix: get deep value & throw mismatched context err 2023-07-30 16:30:41 +08:00
Zixuan Chen
15be521777 feat: event & wasm 2023-07-29 02:03:51 +08:00
Zixuan Chen
a90668abca refactor: make LoroValue cheap to clone 2023-07-10 18:26:49 +08:00
Zixuan Chen
f6c7e7a8f4 refactor: rm AppStateDiff 2023-07-10 16:53:56 +08:00
Zixuan Chen
f0f82fb581 refactor: seal change exp impl 2023-07-05 14:43:58 +08:00
Zixuan Chen
794ed42ea4 chore: bump version 2023-05-11 12:19:47 +08:00
Zixuan Chen
bc09a0489f
feat: add typed versions of getMap and getList to Loro class (#96)
* feat: add typed versions of getMap and getList to Loro class

This commit adds `getTypedMap` and `getTypedList` methods to the `Loro` class, which allow for accessing maps and lists with type information. It also adds corresponding `getTyped`, `insertTyped`, and `setTyped` methods to `LoroMap` and `LoroList`. This makes it easier and safer to work with Loro's data structures.

* chore: bump version

* chore: alpha 1

* feat: add size and length to list and map

* chore: update deno test script
2023-05-11 11:59:48 +08:00
Zixuan Chen
598f6dbc33 release: loro-crdt v0.2.5 2023-04-07 14:29:18 +08:00
Zixuan Chen
0a31b67dd4
Feat: expose frontier & make it comparable (#95)
* refactor: make frontiers a new type

* feat: compare frontiers
2023-04-05 20:31:58 +08:00
Leon zhao
e51d6f8760
Fix: use Transaction to decode/import (#92) 2023-04-04 21:44:41 +08:00
Zixuan Chen
82b5f8dc90
Perf: speed up utf16 and wasm (#90)
* perf: remove unused transact field

* perf: micro optimization

* bench: fix bench

* bench: add utf16 bench

* chore: refine diagnose

* perf: speedup utf16 lookup

* perf: use better utf16 len counter

* refactor: use js to cast Loro/Transaction

* refactor: map and list use __loro and __txn

* test: configure ci vitest

* chore: ci
2023-04-03 09:29:25 +08:00
Zixuan Chen
7f62142db3 chore: bump loro-wasm version 2023-03-28 23:09:05 +08:00
Zixuan Chen
abafec9e18 chore: bump versions 2023-03-28 01:05:17 +08:00
Zixuan Chen
6df69bd2be feat: add subscribe to containers in wasm 2023-03-25 20:11:45 +08:00
Zixuan Chen
49f664dd8f feat: convert event to js & add vitest 2023-03-25 20:11:45 +08:00
Zixuan Chen
e01b6954db fix: deno tests 2023-03-24 11:57:28 +08:00
Zixuan Chen
606685d42b chore: bump version 2023-03-24 11:50:10 +08:00
Zixuan Chen
74a7aa6c1a fix: transaction 2023-03-24 11:20:59 +08:00
Zixuan Chen
2f74b13e70 feat: extra pkg loro-crdt to wrap loro-wasm 2023-03-24 10:08:11 +08:00
Zixuan Chen
85d91e10b4 chore: speedup wasm build 2023-03-23 22:19:26 +08:00
Zixuan Chen
b0d7ad88b9 fix: not leaking closure 2023-03-23 21:44:27 +08:00
Zixuan Chen
63ebbe2ddb chore: remove tracing 2023-03-23 21:17:16 +08:00
Zixuan Chen
32378a7188 fix: use promise.then instead of timeout 2023-03-23 21:16:29 +08:00
Zixuan Chen
94f481e65e fix: settimeout by default in subscription 2023-03-23 19:09:13 +08:00
Zixuan Chen
4c372359e6 fix: use utf16 by default for text in wasm 2023-03-22 23:23:57 +08:00
leeeon233
d8f0dfa673 chore: clean the code 2023-03-21 09:47:24 +08:00
leeeon233
99e48b65ae feat: add simple origin 2023-03-20 21:26:36 +08:00
leeeon233
117155cc54 perf: remove compress 2023-03-20 13:55:20 +08:00
leeeon233
ce007295e1 feat: wasm transaction 2023-03-16 17:27:00 +08:00
leeeon233
189ea685eb refactor: event with option, add once subscribe 2023-02-07 11:40:47 +08:00
Zixuan Chen
d0e83076ee refactor: fix bench type err 2023-01-16 20:08:43 +08:00
Zixuan Chen
18d32384a5 refactor: move loro-core to loro-internal 2023-01-16 20:08:43 +08:00
Zixuan Chen
c56653c3c8 refactor: refine encode interface (buggy)
Co-authored-by: Leonzhao <leeeon233@gmail.com>
2023-01-16 18:39:08 +08:00
leeeon233
a04d0794aa fix: avoid Unresolved as PrelimValue 2023-01-16 18:38:55 +08:00
Zixuan Chen
625771c37d
fix: decode batch (#54) 2023-01-06 21:14:29 +08:00
Zixuan Chen
a03c68a993
fix: make LoroCore: Send + Sync (#61) 2023-01-06 21:03:11 +08:00
leeeon233
6a02ce1568 fix: wasm loro class inner mutability 2023-01-06 12:20:00 +08:00
leeeon233
38ccf36b9d fix: test 2023-01-03 17:36:17 +08:00
leeeon233
953a4613c6 fix: nesting notify 2023-01-03 17:36:17 +08:00
leeeon233
80640ca4e1 fix: wasm hierarchy notify dead lock 2023-01-03 17:36:17 +08:00
leeeon233
647352aa2a chore: cargo fix 2022-12-30 11:54:22 +08:00
leeeon233
065e646a7e refactor: use Weak in container 2022-12-30 11:54:22 +08:00
Zixuan Chen
fd65b1504c Merge branch 'main' into perf-wasm-analysis 2022-12-27 12:57:16 +08:00
leeeon233
4748e1d38c fix: decode hierarchy for snapshot mode
update columnar version, reduce compression time
2022-12-19 18:07:24 +08:00
leeeon233
b0b1fddef3 refactor: unify encode api 2022-12-19 18:07:24 +08:00
Zixuan Chen
c6f9561de3 chore(ci): fix ci 2022-12-18 21:05:04 +08:00
Zixuan Chen
4a0b8e52e8 Merge remote-tracking branch 'origin/main' into perf-wasm-analysis 2022-12-18 20:59:57 +08:00
leeeon233
4cfdbff768 chore: rebase 2022-12-13 23:06:21 +08:00
Zixuan Chen
035d03c89e chore(wasm): fix build wasm script 2022-12-13 16:33:24 +08:00
Zixuan Chen
95daf02a29 refactor: rename vv to vv_cloned to emphasize cost 2022-12-13 01:39:57 +08:00
Zixuan Chen
313b1cc8c0 bench: add wasm bench to web test 2022-12-12 13:44:49 +08:00
Zixuan Chen
2903a47ddb chore(ci): fix build script in ci 2022-12-09 12:03:45 +08:00
Zixuan Chen
85f0d98385 chore(wasm): fix wasm build & test scripts 2022-12-09 11:33:39 +08:00
Zixuan Chen
b74ab34f79 chore(wasm): make build parallel 2022-12-09 10:46:55 +08:00
Zixuan Chen
f9f556f822 fix: add local info 2022-12-09 10:46:55 +08:00
Zixuan Chen
a24e284fba fix: hierarchy notify 2022-12-09 10:46:55 +08:00
Zixuan Chen
db29178982 fix: make subscription work 2022-12-09 10:46:55 +08:00
Zixuan Chen
9a3194edef chore(wasm): change the build methods 2022-12-09 10:46:55 +08:00
Zixuan Chen
572fe857a0 feat(wasm): root subscribe & unsubscribe 2022-12-09 10:46:55 +08:00
Zixuan Chen
b98c22570d fix: get container by id err 2022-12-09 10:46:55 +08:00
Zixuan Chen
2db272e857 chore(wasm): wasm build cfg 2022-12-09 10:46:47 +08:00
Zixuan Chen
0cd38270f9 bench(wasm): wasm bench
bench(wasm): add snapshot bench
2022-12-09 10:46:36 +08:00
Zixuan Chen
b1738e34a9 fix: to json result 2022-12-09 10:46:30 +08:00
Zixuan Chen
91e7b3ac87 feat: wasm encode decode basic 2022-12-09 10:46:30 +08:00
Zixuan Chen
f14905d562 feat: init encoding and build pipeline for wasm 2022-12-09 10:46:30 +08:00
Zixuan Chen
aeb935455e chore: doc bk 2022-11-23 22:03:33 +08:00
Zixuan Chen
c04989d046 ci: speedup wasm-pack install 2022-11-23 19:59:57 +08:00
leeeon233
ca96b294d4 chore: wasm pack ci 2022-11-23 19:49:39 +08:00
leeeon233
2591ed3cc4 chore: typo 2022-11-23 19:49:39 +08:00
leeeon233
fcfc8fd6b9 refactor: prelim trait 2022-11-23 19:49:39 +08:00
leeeon233
cc129ee753 feat: expose ContainerID 2022-11-23 19:49:39 +08:00
leeeon233
4194c79fe7 fix: prelim compatible with pool 2022-11-23 19:49:39 +08:00
leeeon233
bc8235ff47 feat: add prelim
Co-authored-by: Zixuan Chen <me@zxch3n.com>
2022-11-23 19:49:39 +08:00
leeeon233
e124bbbec1 fix: wasm interface 2022-11-23 19:49:39 +08:00
leeeon233
71fd00418e test: add wasm test 2022-11-23 19:49:39 +08:00
leeeon233
973486067a fix: wasm add client id check 2022-11-23 19:49:39 +08:00
leeeon233
42ded24721 chore: add panic hook 2022-11-23 19:49:39 +08:00
leeeon233
47266773ba feat: add recursive wasm 2022-11-23 19:49:39 +08:00
Zixuan Chen
7a6e50931d chore: replace justfile with deno task 2022-11-21 12:50:15 +08:00
Zixuan Chen
e5c022b204 refactor: remove unused logics 2022-11-18 16:31:00 +08:00
Zixuan Chen
0c7a7af0fd refactor: remove insert value
simplify code and only use loro value
2022-11-12 00:30:07 +08:00
Zixuan Chen
0d0603d75f feat: get value deep 2022-11-11 22:26:06 +08:00
Zixuan Chen
d818cd1ca8 refactor: use Text and Map as exposed interfaces
Co-authored-by: Leonzhao <leeeon233@gmail.com>
2022-11-11 15:23:22 +08:00