loro-crdt 1.1.0 β†’ 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 9abeb81: Add methods to modify VV
8
+ - ee26952: Add isDeleted() method to each container
9
+
3
10
  ## 1.1.0
4
11
 
5
12
  ### Minor Changes
package/README.md CHANGED
@@ -9,8 +9,7 @@
9
9
  <a href="https://loro.dev" alt="loro-site">Loro</a>
10
10
  </h1>
11
11
  <p align="center">
12
- <b>Reimagine state management with CRDTs 🦜</b><br/>
13
- Make your app state synchronized and collaborative effortlessly.
12
+ <b>Make your JSON data collaborative and version-controlled 🦜</b>
14
13
  </p>
15
14
  <p align="center">
16
15
  <a href="https://trendshift.io/repositories/4964" target="_blank"><img src="https://trendshift.io/api/badge/repositories/4964" alt="loro-dev%2Floro | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
@@ -42,11 +41,11 @@
42
41
  ✨ Loro 1.0 is out! Read the <a href="https://loro.dev/blog/v1.0">announcement</a>.
43
42
  </h4>
44
43
 
45
- Loro is a [CRDTs(Conflict-free Replicated Data Types)](https://crdt.tech/) library that makes building [local-first apps][local-first] easier. It is currently available for JavaScript (via WASM) and Rust developers.
44
+ Loro is a [CRDTs(Conflict-free Replicated Data Types)](https://crdt.tech/) library that makes building [local-first][local-first] and collaborative apps easier. You can now use it in Rust, JS (via WASM), and Swift.
46
45
 
47
46
  # Features
48
47
 
49
- **Basic Features Provided by CRDTs**
48
+ **Features Provided by CRDTs**
50
49
 
51
50
  - P2P Synchronization
52
51
  - Automatic Merging
@@ -61,10 +60,10 @@ Loro is a [CRDTs(Conflict-free Replicated Data Types)](https://crdt.tech/) libra
61
60
  - 🌲 [Moveable Tree](https://loro.dev/docs/tutorial/tree)
62
61
  - πŸš— [Moveable List](https://loro.dev/docs/tutorial/list)
63
62
  - πŸ—ΊοΈ [Last-Write-Wins Map](https://loro.dev/docs/tutorial/map)
64
- - πŸ”„ [Replayable Event Graph](https://loro.dev/docs/advanced/replayable_event_graph)
65
63
 
66
64
  **Advanced Features in Loro**
67
65
 
66
+ - πŸš€ [Fast Document Loading](https://loro.dev/blog/v1.0)
68
67
  - ⏱️ Fast [Time Travel](https://loro.dev/docs/tutorial/time_travel) Through History
69
68
  - πŸ›οΈ [Version Control with Real-Time Collaboration](https://loro.dev/blog/v1.0#version-control)
70
69
  - πŸ“¦ [Shallow Snapshot](https://loro.dev/docs/advanced/shallow_snapshot) that Works like Git Shallow Clone
@@ -82,9 +81,8 @@ import { expect, test } from 'vitest';
82
81
  import { LoroDoc, LoroList } from 'loro-crdt';
83
82
 
84
83
  test('sync example', () => {
85
- /**
86
- * Demonstrates synchronization of two documents with two rounds of exchanges.
87
- */
84
+ // Sync two docs with two rounds of exchanges
85
+
88
86
  // Initialize document A
89
87
  const docA = new LoroDoc();
90
88
  const listA: LoroList = docA.getList('list');
@@ -92,34 +90,36 @@ test('sync example', () => {
92
90
  listA.insert(1, 'B');
93
91
  listA.insert(2, 'C');
94
92
 
95
- // Export the state of document A as a byte array
93
+ // Export all updates from docA
96
94
  const bytes: Uint8Array = docA.export({ mode: 'update' });
97
95
 
98
96
  // Simulate sending `bytes` across the network to another peer, B
97
+
99
98
  const docB = new LoroDoc();
100
99
  // Peer B imports the updates from A
101
100
  docB.import(bytes);
102
101
 
103
- // Verify that B's state matches A's state
102
+ // B's state matches A's state
104
103
  expect(docB.toJSON()).toStrictEqual({
105
104
  list: ['A', 'B', 'C'],
106
105
  });
107
106
 
108
- // Get the current operation log version of document B
107
+ // Get the current version of docB
109
108
  const version = docB.oplogVersion();
110
109
 
111
110
  // Simulate editing at B: delete item 'B'
112
111
  const listB: LoroList = docB.getList('list');
113
112
  listB.delete(1, 1);
114
113
 
115
- // Export the updates from B since the last synchronization point
114
+ // Export the updates from B since the last sync point
116
115
  const bytesB: Uint8Array = docB.export({ mode: 'update', from: version });
117
116
 
118
117
  // Simulate sending `bytesB` back across the network to A
118
+
119
119
  // A imports the updates from B
120
120
  docA.import(bytesB);
121
121
 
122
- // Verify that the list at A now matches the list at B after merging
122
+ // A has the same state as B
123
123
  expect(docA.toJSON()).toStrictEqual({
124
124
  list: ['A', 'C'],
125
125
  });
@@ -1676,9 +1676,9 @@ export class LoroDoc {
1676
1676
  /**
1677
1677
  * Get the path from the root to the container
1678
1678
  * @param {ContainerID} id
1679
- * @returns {Array<any> | undefined}
1679
+ * @returns {(string|number)[] | undefined}
1680
1680
  */
1681
- getPathToContainer(id: ContainerID): Array<any> | undefined;
1681
+ getPathToContainer(id: ContainerID): (string|number)[] | undefined;
1682
1682
  /**
1683
1683
  * Evaluate JSONPath against a LoroDoc
1684
1684
  * @param {string} jsonpath
@@ -2165,6 +2165,11 @@ export class LoroList {
2165
2165
  */
2166
2166
  getIdAt(pos: number): { peer: PeerID, counter: number } | undefined;
2167
2167
  /**
2168
+ * Check if the container is deleted
2169
+ * @returns {boolean}
2170
+ */
2171
+ isDeleted(): boolean;
2172
+ /**
2168
2173
  * Get the id of this container.
2169
2174
  */
2170
2175
  readonly id: ContainerID;
@@ -2321,6 +2326,11 @@ export class LoroMap {
2321
2326
  */
2322
2327
  getLastEditor(key: string): PeerID | undefined;
2323
2328
  /**
2329
+ * Check if the container is deleted
2330
+ * @returns {boolean}
2331
+ */
2332
+ isDeleted(): boolean;
2333
+ /**
2324
2334
  * The container id of this handler.
2325
2335
  */
2326
2336
  readonly id: ContainerID;
@@ -2459,6 +2469,11 @@ export class LoroMovableList {
2459
2469
  */
2460
2470
  getLastEditorAt(pos: number): PeerID | undefined;
2461
2471
  /**
2472
+ * Check if the container is deleted
2473
+ * @returns {boolean}
2474
+ */
2475
+ isDeleted(): boolean;
2476
+ /**
2462
2477
  * Get the id of this container.
2463
2478
  */
2464
2479
  readonly id: ContainerID;
@@ -2769,6 +2784,11 @@ export class LoroText {
2769
2784
  */
2770
2785
  getEditorOf(pos: number): PeerID | undefined;
2771
2786
  /**
2787
+ * Check if the container is deleted
2788
+ * @returns {boolean}
2789
+ */
2790
+ isDeleted(): boolean;
2791
+ /**
2772
2792
  * Get the container id of the text.
2773
2793
  */
2774
2794
  readonly id: ContainerID;
@@ -2933,6 +2953,11 @@ export class LoroTree {
2933
2953
  */
2934
2954
  isFractionalIndexEnabled(): boolean;
2935
2955
  /**
2956
+ * Check if the container is deleted
2957
+ * @returns {boolean}
2958
+ */
2959
+ isDeleted(): boolean;
2960
+ /**
2936
2961
  * Get the id of the container.
2937
2962
  */
2938
2963
  readonly id: ContainerID;
@@ -3197,4 +3222,22 @@ export class VersionVector {
3197
3222
  * @returns {number | undefined}
3198
3223
  */
3199
3224
  compare(other: VersionVector): number | undefined;
3225
+ /**
3226
+ * set the exclusive ending point. target id will NOT be included by self
3227
+ * @param {{ peer: PeerID, counter: number }} id
3228
+ */
3229
+ setEnd(id: { peer: PeerID, counter: number }): void;
3230
+ /**
3231
+ * set the inclusive ending point. target id will be included
3232
+ * @param {{ peer: PeerID, counter: number }} id
3233
+ */
3234
+ setLast(id: { peer: PeerID, counter: number }): void;
3235
+ /**
3236
+ * @param {PeerID} peer
3237
+ */
3238
+ remove(peer: PeerID): void;
3239
+ /**
3240
+ * @returns {number}
3241
+ */
3242
+ length(): number;
3200
3243
  }
@@ -1584,7 +1584,7 @@ export class LoroDoc {
1584
1584
  /**
1585
1585
  * Get the path from the root to the container
1586
1586
  * @param {ContainerID} id
1587
- * @returns {Array<any> | undefined}
1587
+ * @returns {(string|number)[] | undefined}
1588
1588
  */
1589
1589
  getPathToContainer(id) {
1590
1590
  try {
@@ -2800,6 +2800,14 @@ export class LoroList {
2800
2800
  const ret = wasm.lorolist_getIdAt(this.__wbg_ptr, pos);
2801
2801
  return takeObject(ret);
2802
2802
  }
2803
+ /**
2804
+ * Check if the container is deleted
2805
+ * @returns {boolean}
2806
+ */
2807
+ isDeleted() {
2808
+ const ret = wasm.lorolist_isDeleted(this.__wbg_ptr);
2809
+ return ret !== 0;
2810
+ }
2803
2811
  }
2804
2812
 
2805
2813
  const LoroMapFinalization = (typeof FinalizationRegistry === 'undefined')
@@ -3242,6 +3250,14 @@ export class LoroMap {
3242
3250
  const ret = wasm.loromap_getLastEditor(this.__wbg_ptr, ptr0, len0);
3243
3251
  return takeObject(ret);
3244
3252
  }
3253
+ /**
3254
+ * Check if the container is deleted
3255
+ * @returns {boolean}
3256
+ */
3257
+ isDeleted() {
3258
+ const ret = wasm.loromap_isDeleted(this.__wbg_ptr);
3259
+ return ret !== 0;
3260
+ }
3245
3261
  }
3246
3262
 
3247
3263
  const LoroMovableListFinalization = (typeof FinalizationRegistry === 'undefined')
@@ -3741,6 +3757,14 @@ export class LoroMovableList {
3741
3757
  const ret = wasm.loromovablelist_getLastEditorAt(this.__wbg_ptr, pos);
3742
3758
  return takeObject(ret);
3743
3759
  }
3760
+ /**
3761
+ * Check if the container is deleted
3762
+ * @returns {boolean}
3763
+ */
3764
+ isDeleted() {
3765
+ const ret = wasm.loromovablelist_isDeleted(this.__wbg_ptr);
3766
+ return ret !== 0;
3767
+ }
3744
3768
  }
3745
3769
 
3746
3770
  const LoroTextFinalization = (typeof FinalizationRegistry === 'undefined')
@@ -4382,6 +4406,14 @@ export class LoroText {
4382
4406
  const ret = wasm.lorotext_getEditorOf(this.__wbg_ptr, pos);
4383
4407
  return takeObject(ret);
4384
4408
  }
4409
+ /**
4410
+ * Check if the container is deleted
4411
+ * @returns {boolean}
4412
+ */
4413
+ isDeleted() {
4414
+ const ret = wasm.lorotext_isDeleted(this.__wbg_ptr);
4415
+ return ret !== 0;
4416
+ }
4385
4417
  }
4386
4418
 
4387
4419
  const LoroTreeFinalization = (typeof FinalizationRegistry === 'undefined')
@@ -4818,6 +4850,14 @@ export class LoroTree {
4818
4850
  const ret = wasm.lorotree_isFractionalIndexEnabled(this.__wbg_ptr);
4819
4851
  return ret !== 0;
4820
4852
  }
4853
+ /**
4854
+ * Check if the container is deleted
4855
+ * @returns {boolean}
4856
+ */
4857
+ isDeleted() {
4858
+ const ret = wasm.lorotree_isDeleted(this.__wbg_ptr);
4859
+ return ret !== 0;
4860
+ }
4821
4861
  }
4822
4862
 
4823
4863
  const LoroTreeNodeFinalization = (typeof FinalizationRegistry === 'undefined')
@@ -5506,14 +5546,71 @@ export class VersionVector {
5506
5546
  wasm.__wbindgen_add_to_stack_pointer(16);
5507
5547
  }
5508
5548
  }
5549
+ /**
5550
+ * set the exclusive ending point. target id will NOT be included by self
5551
+ * @param {{ peer: PeerID, counter: number }} id
5552
+ */
5553
+ setEnd(id) {
5554
+ try {
5555
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
5556
+ wasm.versionvector_setEnd(retptr, this.__wbg_ptr, addHeapObject(id));
5557
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
5558
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
5559
+ if (r1) {
5560
+ throw takeObject(r0);
5561
+ }
5562
+ } finally {
5563
+ wasm.__wbindgen_add_to_stack_pointer(16);
5564
+ }
5565
+ }
5566
+ /**
5567
+ * set the inclusive ending point. target id will be included
5568
+ * @param {{ peer: PeerID, counter: number }} id
5569
+ */
5570
+ setLast(id) {
5571
+ try {
5572
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
5573
+ wasm.versionvector_setLast(retptr, this.__wbg_ptr, addHeapObject(id));
5574
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
5575
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
5576
+ if (r1) {
5577
+ throw takeObject(r0);
5578
+ }
5579
+ } finally {
5580
+ wasm.__wbindgen_add_to_stack_pointer(16);
5581
+ }
5582
+ }
5583
+ /**
5584
+ * @param {PeerID} peer
5585
+ */
5586
+ remove(peer) {
5587
+ try {
5588
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
5589
+ wasm.versionvector_remove(retptr, this.__wbg_ptr, addHeapObject(peer));
5590
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
5591
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
5592
+ if (r1) {
5593
+ throw takeObject(r0);
5594
+ }
5595
+ } finally {
5596
+ wasm.__wbindgen_add_to_stack_pointer(16);
5597
+ }
5598
+ }
5599
+ /**
5600
+ * @returns {number}
5601
+ */
5602
+ length() {
5603
+ const ret = wasm.versionvector_length(this.__wbg_ptr);
5604
+ return ret >>> 0;
5605
+ }
5509
5606
  }
5510
5607
 
5511
5608
  export function __wbindgen_object_drop_ref(arg0) {
5512
5609
  takeObject(arg0);
5513
5610
  };
5514
5611
 
5515
- export function __wbg_loromap_new(arg0) {
5516
- const ret = LoroMap.__wrap(arg0);
5612
+ export function __wbg_lorotreenode_new(arg0) {
5613
+ const ret = LoroTreeNode.__wrap(arg0);
5517
5614
  return addHeapObject(ret);
5518
5615
  };
5519
5616
 
@@ -5522,13 +5619,13 @@ export function __wbg_lorotree_new(arg0) {
5522
5619
  return addHeapObject(ret);
5523
5620
  };
5524
5621
 
5525
- export function __wbg_lorolist_new(arg0) {
5526
- const ret = LoroList.__wrap(arg0);
5622
+ export function __wbg_lorotext_new(arg0) {
5623
+ const ret = LoroText.__wrap(arg0);
5527
5624
  return addHeapObject(ret);
5528
5625
  };
5529
5626
 
5530
- export function __wbg_lorotreenode_new(arg0) {
5531
- const ret = LoroTreeNode.__wrap(arg0);
5627
+ export function __wbg_loromap_new(arg0) {
5628
+ const ret = LoroMap.__wrap(arg0);
5532
5629
  return addHeapObject(ret);
5533
5630
  };
5534
5631
 
@@ -5537,6 +5634,11 @@ export function __wbg_lorocounter_new(arg0) {
5537
5634
  return addHeapObject(ret);
5538
5635
  };
5539
5636
 
5637
+ export function __wbg_lorolist_new(arg0) {
5638
+ const ret = LoroList.__wrap(arg0);
5639
+ return addHeapObject(ret);
5640
+ };
5641
+
5540
5642
  export function __wbg_loromovablelist_new(arg0) {
5541
5643
  const ret = LoroMovableList.__wrap(arg0);
5542
5644
  return addHeapObject(ret);
@@ -5547,11 +5649,6 @@ export function __wbg_cursor_new(arg0) {
5547
5649
  return addHeapObject(ret);
5548
5650
  };
5549
5651
 
5550
- export function __wbg_lorotext_new(arg0) {
5551
- const ret = LoroText.__wrap(arg0);
5552
- return addHeapObject(ret);
5553
- };
5554
-
5555
5652
  export function __wbg_versionvector_new(arg0) {
5556
5653
  const ret = VersionVector.__wrap(arg0);
5557
5654
  return addHeapObject(ret);
@@ -5775,7 +5872,7 @@ export function __wbg_error_f851667af71bcfc6(arg0, arg1) {
5775
5872
  }
5776
5873
  };
5777
5874
 
5778
- export const __wbg_now_faeb7e893612c45a = typeof Date.now == 'function' ? Date.now : notDefined('Date.now');
5875
+ export const __wbg_now_11683c634f92ae89 = typeof Date.now == 'function' ? Date.now : notDefined('Date.now');
5779
5876
 
5780
5877
  export function __wbg_crypto_1d1f22824a6a080c(arg0) {
5781
5878
  const ret = getObject(arg0).crypto;
@@ -6094,13 +6191,13 @@ export function __wbindgen_memory() {
6094
6191
  return addHeapObject(ret);
6095
6192
  };
6096
6193
 
6097
- export function __wbindgen_closure_wrapper491(arg0, arg1, arg2) {
6098
- const ret = makeMutClosure(arg0, arg1, 9, __wbg_adapter_58);
6194
+ export function __wbindgen_closure_wrapper485(arg0, arg1, arg2) {
6195
+ const ret = makeMutClosure(arg0, arg1, 11, __wbg_adapter_58);
6099
6196
  return addHeapObject(ret);
6100
6197
  };
6101
6198
 
6102
- export function __wbindgen_closure_wrapper494(arg0, arg1, arg2) {
6103
- const ret = makeMutClosure(arg0, arg1, 11, __wbg_adapter_61);
6199
+ export function __wbindgen_closure_wrapper488(arg0, arg1, arg2) {
6200
+ const ret = makeMutClosure(arg0, arg1, 9, __wbg_adapter_61);
6104
6201
  return addHeapObject(ret);
6105
6202
  };
6106
6203
 
Binary file
@@ -116,6 +116,7 @@ export function lorotext_getAttached(a: number): number;
116
116
  export function lorotext_getCursor(a: number, b: number, c: number): number;
117
117
  export function lorotext_push(a: number, b: number, c: number, d: number): void;
118
118
  export function lorotext_getEditorOf(a: number, b: number): number;
119
+ export function lorotext_isDeleted(a: number): number;
119
120
  export function __wbg_loromap_free(a: number): void;
120
121
  export function loromap_new(): number;
121
122
  export function loromap_kind(a: number): number;
@@ -135,6 +136,7 @@ export function loromap_parent(a: number): number;
135
136
  export function loromap_getAttached(a: number): number;
136
137
  export function loromap_clear(a: number, b: number): void;
137
138
  export function loromap_getLastEditor(a: number, b: number, c: number): number;
139
+ export function loromap_isDeleted(a: number): number;
138
140
  export function __wbg_lorolist_free(a: number): void;
139
141
  export function lorolist_new(): number;
140
142
  export function lorolist_kind(a: number): number;
@@ -156,6 +158,7 @@ export function lorolist_push(a: number, b: number, c: number): void;
156
158
  export function lorolist_pop(a: number, b: number): void;
157
159
  export function lorolist_clear(a: number, b: number): void;
158
160
  export function lorolist_getIdAt(a: number, b: number): number;
161
+ export function lorolist_isDeleted(a: number): number;
159
162
  export function loromovablelist_new(): number;
160
163
  export function loromovablelist_kind(a: number): number;
161
164
  export function loromovablelist_insert(a: number, b: number, c: number, d: number): void;
@@ -179,6 +182,7 @@ export function loromovablelist_clear(a: number, b: number): void;
179
182
  export function loromovablelist_getCreatorAt(a: number, b: number): number;
180
183
  export function loromovablelist_getLastMoverAt(a: number, b: number): number;
181
184
  export function loromovablelist_getLastEditorAt(a: number, b: number): number;
185
+ export function loromovablelist_isDeleted(a: number): number;
182
186
  export function __wbg_lorotree_free(a: number): void;
183
187
  export function lorotreenode___getClassname(a: number, b: number): void;
184
188
  export function __wbg_lorotreenode_free(a: number): void;
@@ -218,6 +222,7 @@ export function lorotree_getAttached(a: number): number;
218
222
  export function lorotree_enableFractionalIndex(a: number, b: number): void;
219
223
  export function lorotree_disableFractionalIndex(a: number): void;
220
224
  export function lorotree_isFractionalIndexEnabled(a: number): number;
225
+ export function lorotree_isDeleted(a: number): number;
221
226
  export function __wbg_cursor_free(a: number): void;
222
227
  export function cursor_containerId(a: number): number;
223
228
  export function cursor_pos(a: number): number;
@@ -246,6 +251,10 @@ export function versionvector_encode(a: number, b: number): void;
246
251
  export function versionvector_decode(a: number, b: number, c: number): void;
247
252
  export function versionvector_get(a: number, b: number, c: number): void;
248
253
  export function versionvector_compare(a: number, b: number, c: number): void;
254
+ export function versionvector_setEnd(a: number, b: number, c: number): void;
255
+ export function versionvector_setLast(a: number, b: number, c: number): void;
256
+ export function versionvector_remove(a: number, b: number, c: number): void;
257
+ export function versionvector_length(a: number): number;
249
258
  export function decodeImportBlobMeta(a: number, b: number, c: number, d: number): void;
250
259
  export function __wbg_loromovablelist_free(a: number): void;
251
260
  export function loromovablelist_parent(a: number): number;
@@ -1676,9 +1676,9 @@ export class LoroDoc {
1676
1676
  /**
1677
1677
  * Get the path from the root to the container
1678
1678
  * @param {ContainerID} id
1679
- * @returns {Array<any> | undefined}
1679
+ * @returns {(string|number)[] | undefined}
1680
1680
  */
1681
- getPathToContainer(id: ContainerID): Array<any> | undefined;
1681
+ getPathToContainer(id: ContainerID): (string|number)[] | undefined;
1682
1682
  /**
1683
1683
  * Evaluate JSONPath against a LoroDoc
1684
1684
  * @param {string} jsonpath
@@ -2165,6 +2165,11 @@ export class LoroList {
2165
2165
  */
2166
2166
  getIdAt(pos: number): { peer: PeerID, counter: number } | undefined;
2167
2167
  /**
2168
+ * Check if the container is deleted
2169
+ * @returns {boolean}
2170
+ */
2171
+ isDeleted(): boolean;
2172
+ /**
2168
2173
  * Get the id of this container.
2169
2174
  */
2170
2175
  readonly id: ContainerID;
@@ -2321,6 +2326,11 @@ export class LoroMap {
2321
2326
  */
2322
2327
  getLastEditor(key: string): PeerID | undefined;
2323
2328
  /**
2329
+ * Check if the container is deleted
2330
+ * @returns {boolean}
2331
+ */
2332
+ isDeleted(): boolean;
2333
+ /**
2324
2334
  * The container id of this handler.
2325
2335
  */
2326
2336
  readonly id: ContainerID;
@@ -2459,6 +2469,11 @@ export class LoroMovableList {
2459
2469
  */
2460
2470
  getLastEditorAt(pos: number): PeerID | undefined;
2461
2471
  /**
2472
+ * Check if the container is deleted
2473
+ * @returns {boolean}
2474
+ */
2475
+ isDeleted(): boolean;
2476
+ /**
2462
2477
  * Get the id of this container.
2463
2478
  */
2464
2479
  readonly id: ContainerID;
@@ -2769,6 +2784,11 @@ export class LoroText {
2769
2784
  */
2770
2785
  getEditorOf(pos: number): PeerID | undefined;
2771
2786
  /**
2787
+ * Check if the container is deleted
2788
+ * @returns {boolean}
2789
+ */
2790
+ isDeleted(): boolean;
2791
+ /**
2772
2792
  * Get the container id of the text.
2773
2793
  */
2774
2794
  readonly id: ContainerID;
@@ -2933,6 +2953,11 @@ export class LoroTree {
2933
2953
  */
2934
2954
  isFractionalIndexEnabled(): boolean;
2935
2955
  /**
2956
+ * Check if the container is deleted
2957
+ * @returns {boolean}
2958
+ */
2959
+ isDeleted(): boolean;
2960
+ /**
2936
2961
  * Get the id of the container.
2937
2962
  */
2938
2963
  readonly id: ContainerID;
@@ -3197,4 +3222,22 @@ export class VersionVector {
3197
3222
  * @returns {number | undefined}
3198
3223
  */
3199
3224
  compare(other: VersionVector): number | undefined;
3225
+ /**
3226
+ * set the exclusive ending point. target id will NOT be included by self
3227
+ * @param {{ peer: PeerID, counter: number }} id
3228
+ */
3229
+ setEnd(id: { peer: PeerID, counter: number }): void;
3230
+ /**
3231
+ * set the inclusive ending point. target id will be included
3232
+ * @param {{ peer: PeerID, counter: number }} id
3233
+ */
3234
+ setLast(id: { peer: PeerID, counter: number }): void;
3235
+ /**
3236
+ * @param {PeerID} peer
3237
+ */
3238
+ remove(peer: PeerID): void;
3239
+ /**
3240
+ * @returns {number}
3241
+ */
3242
+ length(): number;
3200
3243
  }
@@ -1582,7 +1582,7 @@ class LoroDoc {
1582
1582
  /**
1583
1583
  * Get the path from the root to the container
1584
1584
  * @param {ContainerID} id
1585
- * @returns {Array<any> | undefined}
1585
+ * @returns {(string|number)[] | undefined}
1586
1586
  */
1587
1587
  getPathToContainer(id) {
1588
1588
  try {
@@ -2799,6 +2799,14 @@ class LoroList {
2799
2799
  const ret = wasm.lorolist_getIdAt(this.__wbg_ptr, pos);
2800
2800
  return takeObject(ret);
2801
2801
  }
2802
+ /**
2803
+ * Check if the container is deleted
2804
+ * @returns {boolean}
2805
+ */
2806
+ isDeleted() {
2807
+ const ret = wasm.lorolist_isDeleted(this.__wbg_ptr);
2808
+ return ret !== 0;
2809
+ }
2802
2810
  }
2803
2811
  module.exports.LoroList = LoroList;
2804
2812
 
@@ -3242,6 +3250,14 @@ class LoroMap {
3242
3250
  const ret = wasm.loromap_getLastEditor(this.__wbg_ptr, ptr0, len0);
3243
3251
  return takeObject(ret);
3244
3252
  }
3253
+ /**
3254
+ * Check if the container is deleted
3255
+ * @returns {boolean}
3256
+ */
3257
+ isDeleted() {
3258
+ const ret = wasm.loromap_isDeleted(this.__wbg_ptr);
3259
+ return ret !== 0;
3260
+ }
3245
3261
  }
3246
3262
  module.exports.LoroMap = LoroMap;
3247
3263
 
@@ -3742,6 +3758,14 @@ class LoroMovableList {
3742
3758
  const ret = wasm.loromovablelist_getLastEditorAt(this.__wbg_ptr, pos);
3743
3759
  return takeObject(ret);
3744
3760
  }
3761
+ /**
3762
+ * Check if the container is deleted
3763
+ * @returns {boolean}
3764
+ */
3765
+ isDeleted() {
3766
+ const ret = wasm.loromovablelist_isDeleted(this.__wbg_ptr);
3767
+ return ret !== 0;
3768
+ }
3745
3769
  }
3746
3770
  module.exports.LoroMovableList = LoroMovableList;
3747
3771
 
@@ -4384,6 +4408,14 @@ class LoroText {
4384
4408
  const ret = wasm.lorotext_getEditorOf(this.__wbg_ptr, pos);
4385
4409
  return takeObject(ret);
4386
4410
  }
4411
+ /**
4412
+ * Check if the container is deleted
4413
+ * @returns {boolean}
4414
+ */
4415
+ isDeleted() {
4416
+ const ret = wasm.lorotext_isDeleted(this.__wbg_ptr);
4417
+ return ret !== 0;
4418
+ }
4387
4419
  }
4388
4420
  module.exports.LoroText = LoroText;
4389
4421
 
@@ -4821,6 +4853,14 @@ class LoroTree {
4821
4853
  const ret = wasm.lorotree_isFractionalIndexEnabled(this.__wbg_ptr);
4822
4854
  return ret !== 0;
4823
4855
  }
4856
+ /**
4857
+ * Check if the container is deleted
4858
+ * @returns {boolean}
4859
+ */
4860
+ isDeleted() {
4861
+ const ret = wasm.lorotree_isDeleted(this.__wbg_ptr);
4862
+ return ret !== 0;
4863
+ }
4824
4864
  }
4825
4865
  module.exports.LoroTree = LoroTree;
4826
4866
 
@@ -5512,6 +5552,63 @@ class VersionVector {
5512
5552
  wasm.__wbindgen_add_to_stack_pointer(16);
5513
5553
  }
5514
5554
  }
5555
+ /**
5556
+ * set the exclusive ending point. target id will NOT be included by self
5557
+ * @param {{ peer: PeerID, counter: number }} id
5558
+ */
5559
+ setEnd(id) {
5560
+ try {
5561
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
5562
+ wasm.versionvector_setEnd(retptr, this.__wbg_ptr, addHeapObject(id));
5563
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
5564
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
5565
+ if (r1) {
5566
+ throw takeObject(r0);
5567
+ }
5568
+ } finally {
5569
+ wasm.__wbindgen_add_to_stack_pointer(16);
5570
+ }
5571
+ }
5572
+ /**
5573
+ * set the inclusive ending point. target id will be included
5574
+ * @param {{ peer: PeerID, counter: number }} id
5575
+ */
5576
+ setLast(id) {
5577
+ try {
5578
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
5579
+ wasm.versionvector_setLast(retptr, this.__wbg_ptr, addHeapObject(id));
5580
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
5581
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
5582
+ if (r1) {
5583
+ throw takeObject(r0);
5584
+ }
5585
+ } finally {
5586
+ wasm.__wbindgen_add_to_stack_pointer(16);
5587
+ }
5588
+ }
5589
+ /**
5590
+ * @param {PeerID} peer
5591
+ */
5592
+ remove(peer) {
5593
+ try {
5594
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
5595
+ wasm.versionvector_remove(retptr, this.__wbg_ptr, addHeapObject(peer));
5596
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
5597
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
5598
+ if (r1) {
5599
+ throw takeObject(r0);
5600
+ }
5601
+ } finally {
5602
+ wasm.__wbindgen_add_to_stack_pointer(16);
5603
+ }
5604
+ }
5605
+ /**
5606
+ * @returns {number}
5607
+ */
5608
+ length() {
5609
+ const ret = wasm.versionvector_length(this.__wbg_ptr);
5610
+ return ret >>> 0;
5611
+ }
5515
5612
  }
5516
5613
  module.exports.VersionVector = VersionVector;
5517
5614
 
@@ -5519,8 +5616,8 @@ module.exports.__wbindgen_object_drop_ref = function(arg0) {
5519
5616
  takeObject(arg0);
5520
5617
  };
5521
5618
 
5522
- module.exports.__wbg_loromap_new = function(arg0) {
5523
- const ret = LoroMap.__wrap(arg0);
5619
+ module.exports.__wbg_lorotreenode_new = function(arg0) {
5620
+ const ret = LoroTreeNode.__wrap(arg0);
5524
5621
  return addHeapObject(ret);
5525
5622
  };
5526
5623
 
@@ -5529,13 +5626,13 @@ module.exports.__wbg_lorotree_new = function(arg0) {
5529
5626
  return addHeapObject(ret);
5530
5627
  };
5531
5628
 
5532
- module.exports.__wbg_lorolist_new = function(arg0) {
5533
- const ret = LoroList.__wrap(arg0);
5629
+ module.exports.__wbg_lorotext_new = function(arg0) {
5630
+ const ret = LoroText.__wrap(arg0);
5534
5631
  return addHeapObject(ret);
5535
5632
  };
5536
5633
 
5537
- module.exports.__wbg_lorotreenode_new = function(arg0) {
5538
- const ret = LoroTreeNode.__wrap(arg0);
5634
+ module.exports.__wbg_loromap_new = function(arg0) {
5635
+ const ret = LoroMap.__wrap(arg0);
5539
5636
  return addHeapObject(ret);
5540
5637
  };
5541
5638
 
@@ -5544,6 +5641,11 @@ module.exports.__wbg_lorocounter_new = function(arg0) {
5544
5641
  return addHeapObject(ret);
5545
5642
  };
5546
5643
 
5644
+ module.exports.__wbg_lorolist_new = function(arg0) {
5645
+ const ret = LoroList.__wrap(arg0);
5646
+ return addHeapObject(ret);
5647
+ };
5648
+
5547
5649
  module.exports.__wbg_loromovablelist_new = function(arg0) {
5548
5650
  const ret = LoroMovableList.__wrap(arg0);
5549
5651
  return addHeapObject(ret);
@@ -5554,11 +5656,6 @@ module.exports.__wbg_cursor_new = function(arg0) {
5554
5656
  return addHeapObject(ret);
5555
5657
  };
5556
5658
 
5557
- module.exports.__wbg_lorotext_new = function(arg0) {
5558
- const ret = LoroText.__wrap(arg0);
5559
- return addHeapObject(ret);
5560
- };
5561
-
5562
5659
  module.exports.__wbg_versionvector_new = function(arg0) {
5563
5660
  const ret = VersionVector.__wrap(arg0);
5564
5661
  return addHeapObject(ret);
@@ -5782,7 +5879,7 @@ module.exports.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) {
5782
5879
  }
5783
5880
  };
5784
5881
 
5785
- module.exports.__wbg_now_faeb7e893612c45a = typeof Date.now == 'function' ? Date.now : notDefined('Date.now');
5882
+ module.exports.__wbg_now_11683c634f92ae89 = typeof Date.now == 'function' ? Date.now : notDefined('Date.now');
5786
5883
 
5787
5884
  module.exports.__wbg_crypto_1d1f22824a6a080c = function(arg0) {
5788
5885
  const ret = getObject(arg0).crypto;
@@ -6101,13 +6198,13 @@ module.exports.__wbindgen_memory = function() {
6101
6198
  return addHeapObject(ret);
6102
6199
  };
6103
6200
 
6104
- module.exports.__wbindgen_closure_wrapper491 = function(arg0, arg1, arg2) {
6105
- const ret = makeMutClosure(arg0, arg1, 9, __wbg_adapter_58);
6201
+ module.exports.__wbindgen_closure_wrapper485 = function(arg0, arg1, arg2) {
6202
+ const ret = makeMutClosure(arg0, arg1, 11, __wbg_adapter_58);
6106
6203
  return addHeapObject(ret);
6107
6204
  };
6108
6205
 
6109
- module.exports.__wbindgen_closure_wrapper494 = function(arg0, arg1, arg2) {
6110
- const ret = makeMutClosure(arg0, arg1, 11, __wbg_adapter_61);
6206
+ module.exports.__wbindgen_closure_wrapper488 = function(arg0, arg1, arg2) {
6207
+ const ret = makeMutClosure(arg0, arg1, 9, __wbg_adapter_61);
6111
6208
  return addHeapObject(ret);
6112
6209
  };
6113
6210
 
Binary file
@@ -116,6 +116,7 @@ export function lorotext_getAttached(a: number): number;
116
116
  export function lorotext_getCursor(a: number, b: number, c: number): number;
117
117
  export function lorotext_push(a: number, b: number, c: number, d: number): void;
118
118
  export function lorotext_getEditorOf(a: number, b: number): number;
119
+ export function lorotext_isDeleted(a: number): number;
119
120
  export function __wbg_loromap_free(a: number): void;
120
121
  export function loromap_new(): number;
121
122
  export function loromap_kind(a: number): number;
@@ -135,6 +136,7 @@ export function loromap_parent(a: number): number;
135
136
  export function loromap_getAttached(a: number): number;
136
137
  export function loromap_clear(a: number, b: number): void;
137
138
  export function loromap_getLastEditor(a: number, b: number, c: number): number;
139
+ export function loromap_isDeleted(a: number): number;
138
140
  export function __wbg_lorolist_free(a: number): void;
139
141
  export function lorolist_new(): number;
140
142
  export function lorolist_kind(a: number): number;
@@ -156,6 +158,7 @@ export function lorolist_push(a: number, b: number, c: number): void;
156
158
  export function lorolist_pop(a: number, b: number): void;
157
159
  export function lorolist_clear(a: number, b: number): void;
158
160
  export function lorolist_getIdAt(a: number, b: number): number;
161
+ export function lorolist_isDeleted(a: number): number;
159
162
  export function loromovablelist_new(): number;
160
163
  export function loromovablelist_kind(a: number): number;
161
164
  export function loromovablelist_insert(a: number, b: number, c: number, d: number): void;
@@ -179,6 +182,7 @@ export function loromovablelist_clear(a: number, b: number): void;
179
182
  export function loromovablelist_getCreatorAt(a: number, b: number): number;
180
183
  export function loromovablelist_getLastMoverAt(a: number, b: number): number;
181
184
  export function loromovablelist_getLastEditorAt(a: number, b: number): number;
185
+ export function loromovablelist_isDeleted(a: number): number;
182
186
  export function __wbg_lorotree_free(a: number): void;
183
187
  export function lorotreenode___getClassname(a: number, b: number): void;
184
188
  export function __wbg_lorotreenode_free(a: number): void;
@@ -218,6 +222,7 @@ export function lorotree_getAttached(a: number): number;
218
222
  export function lorotree_enableFractionalIndex(a: number, b: number): void;
219
223
  export function lorotree_disableFractionalIndex(a: number): void;
220
224
  export function lorotree_isFractionalIndexEnabled(a: number): number;
225
+ export function lorotree_isDeleted(a: number): number;
221
226
  export function __wbg_cursor_free(a: number): void;
222
227
  export function cursor_containerId(a: number): number;
223
228
  export function cursor_pos(a: number): number;
@@ -246,6 +251,10 @@ export function versionvector_encode(a: number, b: number): void;
246
251
  export function versionvector_decode(a: number, b: number, c: number): void;
247
252
  export function versionvector_get(a: number, b: number, c: number): void;
248
253
  export function versionvector_compare(a: number, b: number, c: number): void;
254
+ export function versionvector_setEnd(a: number, b: number, c: number): void;
255
+ export function versionvector_setLast(a: number, b: number, c: number): void;
256
+ export function versionvector_remove(a: number, b: number, c: number): void;
257
+ export function versionvector_length(a: number): number;
249
258
  export function decodeImportBlobMeta(a: number, b: number, c: number, d: number): void;
250
259
  export function __wbg_loromovablelist_free(a: number): void;
251
260
  export function loromovablelist_parent(a: number): number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "loro-crdt",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "Loro CRDTs is a high-performance CRDT framework that makes your app state synchronized, collaborative and maintainable effortlessly.",
5
5
  "keywords": [
6
6
  "crdt",
@@ -1676,9 +1676,9 @@ export class LoroDoc {
1676
1676
  /**
1677
1677
  * Get the path from the root to the container
1678
1678
  * @param {ContainerID} id
1679
- * @returns {Array<any> | undefined}
1679
+ * @returns {(string|number)[] | undefined}
1680
1680
  */
1681
- getPathToContainer(id: ContainerID): Array<any> | undefined;
1681
+ getPathToContainer(id: ContainerID): (string|number)[] | undefined;
1682
1682
  /**
1683
1683
  * Evaluate JSONPath against a LoroDoc
1684
1684
  * @param {string} jsonpath
@@ -2165,6 +2165,11 @@ export class LoroList {
2165
2165
  */
2166
2166
  getIdAt(pos: number): { peer: PeerID, counter: number } | undefined;
2167
2167
  /**
2168
+ * Check if the container is deleted
2169
+ * @returns {boolean}
2170
+ */
2171
+ isDeleted(): boolean;
2172
+ /**
2168
2173
  * Get the id of this container.
2169
2174
  */
2170
2175
  readonly id: ContainerID;
@@ -2321,6 +2326,11 @@ export class LoroMap {
2321
2326
  */
2322
2327
  getLastEditor(key: string): PeerID | undefined;
2323
2328
  /**
2329
+ * Check if the container is deleted
2330
+ * @returns {boolean}
2331
+ */
2332
+ isDeleted(): boolean;
2333
+ /**
2324
2334
  * The container id of this handler.
2325
2335
  */
2326
2336
  readonly id: ContainerID;
@@ -2459,6 +2469,11 @@ export class LoroMovableList {
2459
2469
  */
2460
2470
  getLastEditorAt(pos: number): PeerID | undefined;
2461
2471
  /**
2472
+ * Check if the container is deleted
2473
+ * @returns {boolean}
2474
+ */
2475
+ isDeleted(): boolean;
2476
+ /**
2462
2477
  * Get the id of this container.
2463
2478
  */
2464
2479
  readonly id: ContainerID;
@@ -2769,6 +2784,11 @@ export class LoroText {
2769
2784
  */
2770
2785
  getEditorOf(pos: number): PeerID | undefined;
2771
2786
  /**
2787
+ * Check if the container is deleted
2788
+ * @returns {boolean}
2789
+ */
2790
+ isDeleted(): boolean;
2791
+ /**
2772
2792
  * Get the container id of the text.
2773
2793
  */
2774
2794
  readonly id: ContainerID;
@@ -2933,6 +2953,11 @@ export class LoroTree {
2933
2953
  */
2934
2954
  isFractionalIndexEnabled(): boolean;
2935
2955
  /**
2956
+ * Check if the container is deleted
2957
+ * @returns {boolean}
2958
+ */
2959
+ isDeleted(): boolean;
2960
+ /**
2936
2961
  * Get the id of the container.
2937
2962
  */
2938
2963
  readonly id: ContainerID;
@@ -3197,6 +3222,24 @@ export class VersionVector {
3197
3222
  * @returns {number | undefined}
3198
3223
  */
3199
3224
  compare(other: VersionVector): number | undefined;
3225
+ /**
3226
+ * set the exclusive ending point. target id will NOT be included by self
3227
+ * @param {{ peer: PeerID, counter: number }} id
3228
+ */
3229
+ setEnd(id: { peer: PeerID, counter: number }): void;
3230
+ /**
3231
+ * set the inclusive ending point. target id will be included
3232
+ * @param {{ peer: PeerID, counter: number }} id
3233
+ */
3234
+ setLast(id: { peer: PeerID, counter: number }): void;
3235
+ /**
3236
+ * @param {PeerID} peer
3237
+ */
3238
+ remove(peer: PeerID): void;
3239
+ /**
3240
+ * @returns {number}
3241
+ */
3242
+ length(): number;
3200
3243
  }
3201
3244
 
3202
3245
  export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
@@ -3318,6 +3361,7 @@ export interface InitOutput {
3318
3361
  readonly lorotext_getCursor: (a: number, b: number, c: number) => number;
3319
3362
  readonly lorotext_push: (a: number, b: number, c: number, d: number) => void;
3320
3363
  readonly lorotext_getEditorOf: (a: number, b: number) => number;
3364
+ readonly lorotext_isDeleted: (a: number) => number;
3321
3365
  readonly __wbg_loromap_free: (a: number) => void;
3322
3366
  readonly loromap_new: () => number;
3323
3367
  readonly loromap_kind: (a: number) => number;
@@ -3337,6 +3381,7 @@ export interface InitOutput {
3337
3381
  readonly loromap_getAttached: (a: number) => number;
3338
3382
  readonly loromap_clear: (a: number, b: number) => void;
3339
3383
  readonly loromap_getLastEditor: (a: number, b: number, c: number) => number;
3384
+ readonly loromap_isDeleted: (a: number) => number;
3340
3385
  readonly __wbg_lorolist_free: (a: number) => void;
3341
3386
  readonly lorolist_new: () => number;
3342
3387
  readonly lorolist_kind: (a: number) => number;
@@ -3358,6 +3403,7 @@ export interface InitOutput {
3358
3403
  readonly lorolist_pop: (a: number, b: number) => void;
3359
3404
  readonly lorolist_clear: (a: number, b: number) => void;
3360
3405
  readonly lorolist_getIdAt: (a: number, b: number) => number;
3406
+ readonly lorolist_isDeleted: (a: number) => number;
3361
3407
  readonly loromovablelist_new: () => number;
3362
3408
  readonly loromovablelist_kind: (a: number) => number;
3363
3409
  readonly loromovablelist_insert: (a: number, b: number, c: number, d: number) => void;
@@ -3381,6 +3427,7 @@ export interface InitOutput {
3381
3427
  readonly loromovablelist_getCreatorAt: (a: number, b: number) => number;
3382
3428
  readonly loromovablelist_getLastMoverAt: (a: number, b: number) => number;
3383
3429
  readonly loromovablelist_getLastEditorAt: (a: number, b: number) => number;
3430
+ readonly loromovablelist_isDeleted: (a: number) => number;
3384
3431
  readonly __wbg_lorotree_free: (a: number) => void;
3385
3432
  readonly lorotreenode___getClassname: (a: number, b: number) => void;
3386
3433
  readonly __wbg_lorotreenode_free: (a: number) => void;
@@ -3420,6 +3467,7 @@ export interface InitOutput {
3420
3467
  readonly lorotree_enableFractionalIndex: (a: number, b: number) => void;
3421
3468
  readonly lorotree_disableFractionalIndex: (a: number) => void;
3422
3469
  readonly lorotree_isFractionalIndexEnabled: (a: number) => number;
3470
+ readonly lorotree_isDeleted: (a: number) => number;
3423
3471
  readonly __wbg_cursor_free: (a: number) => void;
3424
3472
  readonly cursor_containerId: (a: number) => number;
3425
3473
  readonly cursor_pos: (a: number) => number;
@@ -3448,6 +3496,10 @@ export interface InitOutput {
3448
3496
  readonly versionvector_decode: (a: number, b: number, c: number) => void;
3449
3497
  readonly versionvector_get: (a: number, b: number, c: number) => void;
3450
3498
  readonly versionvector_compare: (a: number, b: number, c: number) => void;
3499
+ readonly versionvector_setEnd: (a: number, b: number, c: number) => void;
3500
+ readonly versionvector_setLast: (a: number, b: number, c: number) => void;
3501
+ readonly versionvector_remove: (a: number, b: number, c: number) => void;
3502
+ readonly versionvector_length: (a: number) => number;
3451
3503
  readonly decodeImportBlobMeta: (a: number, b: number, c: number, d: number) => void;
3452
3504
  readonly __wbg_loromovablelist_free: (a: number) => void;
3453
3505
  readonly loromovablelist_parent: (a: number) => number;
package/web/loro_wasm.js CHANGED
@@ -1576,7 +1576,7 @@ export class LoroDoc {
1576
1576
  /**
1577
1577
  * Get the path from the root to the container
1578
1578
  * @param {ContainerID} id
1579
- * @returns {Array<any> | undefined}
1579
+ * @returns {(string|number)[] | undefined}
1580
1580
  */
1581
1581
  getPathToContainer(id) {
1582
1582
  try {
@@ -2792,6 +2792,14 @@ export class LoroList {
2792
2792
  const ret = wasm.lorolist_getIdAt(this.__wbg_ptr, pos);
2793
2793
  return takeObject(ret);
2794
2794
  }
2795
+ /**
2796
+ * Check if the container is deleted
2797
+ * @returns {boolean}
2798
+ */
2799
+ isDeleted() {
2800
+ const ret = wasm.lorolist_isDeleted(this.__wbg_ptr);
2801
+ return ret !== 0;
2802
+ }
2795
2803
  }
2796
2804
 
2797
2805
  const LoroMapFinalization = (typeof FinalizationRegistry === 'undefined')
@@ -3234,6 +3242,14 @@ export class LoroMap {
3234
3242
  const ret = wasm.loromap_getLastEditor(this.__wbg_ptr, ptr0, len0);
3235
3243
  return takeObject(ret);
3236
3244
  }
3245
+ /**
3246
+ * Check if the container is deleted
3247
+ * @returns {boolean}
3248
+ */
3249
+ isDeleted() {
3250
+ const ret = wasm.loromap_isDeleted(this.__wbg_ptr);
3251
+ return ret !== 0;
3252
+ }
3237
3253
  }
3238
3254
 
3239
3255
  const LoroMovableListFinalization = (typeof FinalizationRegistry === 'undefined')
@@ -3733,6 +3749,14 @@ export class LoroMovableList {
3733
3749
  const ret = wasm.loromovablelist_getLastEditorAt(this.__wbg_ptr, pos);
3734
3750
  return takeObject(ret);
3735
3751
  }
3752
+ /**
3753
+ * Check if the container is deleted
3754
+ * @returns {boolean}
3755
+ */
3756
+ isDeleted() {
3757
+ const ret = wasm.loromovablelist_isDeleted(this.__wbg_ptr);
3758
+ return ret !== 0;
3759
+ }
3736
3760
  }
3737
3761
 
3738
3762
  const LoroTextFinalization = (typeof FinalizationRegistry === 'undefined')
@@ -4374,6 +4398,14 @@ export class LoroText {
4374
4398
  const ret = wasm.lorotext_getEditorOf(this.__wbg_ptr, pos);
4375
4399
  return takeObject(ret);
4376
4400
  }
4401
+ /**
4402
+ * Check if the container is deleted
4403
+ * @returns {boolean}
4404
+ */
4405
+ isDeleted() {
4406
+ const ret = wasm.lorotext_isDeleted(this.__wbg_ptr);
4407
+ return ret !== 0;
4408
+ }
4377
4409
  }
4378
4410
 
4379
4411
  const LoroTreeFinalization = (typeof FinalizationRegistry === 'undefined')
@@ -4810,6 +4842,14 @@ export class LoroTree {
4810
4842
  const ret = wasm.lorotree_isFractionalIndexEnabled(this.__wbg_ptr);
4811
4843
  return ret !== 0;
4812
4844
  }
4845
+ /**
4846
+ * Check if the container is deleted
4847
+ * @returns {boolean}
4848
+ */
4849
+ isDeleted() {
4850
+ const ret = wasm.lorotree_isDeleted(this.__wbg_ptr);
4851
+ return ret !== 0;
4852
+ }
4813
4853
  }
4814
4854
 
4815
4855
  const LoroTreeNodeFinalization = (typeof FinalizationRegistry === 'undefined')
@@ -5498,6 +5538,63 @@ export class VersionVector {
5498
5538
  wasm.__wbindgen_add_to_stack_pointer(16);
5499
5539
  }
5500
5540
  }
5541
+ /**
5542
+ * set the exclusive ending point. target id will NOT be included by self
5543
+ * @param {{ peer: PeerID, counter: number }} id
5544
+ */
5545
+ setEnd(id) {
5546
+ try {
5547
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
5548
+ wasm.versionvector_setEnd(retptr, this.__wbg_ptr, addHeapObject(id));
5549
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
5550
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
5551
+ if (r1) {
5552
+ throw takeObject(r0);
5553
+ }
5554
+ } finally {
5555
+ wasm.__wbindgen_add_to_stack_pointer(16);
5556
+ }
5557
+ }
5558
+ /**
5559
+ * set the inclusive ending point. target id will be included
5560
+ * @param {{ peer: PeerID, counter: number }} id
5561
+ */
5562
+ setLast(id) {
5563
+ try {
5564
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
5565
+ wasm.versionvector_setLast(retptr, this.__wbg_ptr, addHeapObject(id));
5566
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
5567
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
5568
+ if (r1) {
5569
+ throw takeObject(r0);
5570
+ }
5571
+ } finally {
5572
+ wasm.__wbindgen_add_to_stack_pointer(16);
5573
+ }
5574
+ }
5575
+ /**
5576
+ * @param {PeerID} peer
5577
+ */
5578
+ remove(peer) {
5579
+ try {
5580
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
5581
+ wasm.versionvector_remove(retptr, this.__wbg_ptr, addHeapObject(peer));
5582
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
5583
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
5584
+ if (r1) {
5585
+ throw takeObject(r0);
5586
+ }
5587
+ } finally {
5588
+ wasm.__wbindgen_add_to_stack_pointer(16);
5589
+ }
5590
+ }
5591
+ /**
5592
+ * @returns {number}
5593
+ */
5594
+ length() {
5595
+ const ret = wasm.versionvector_length(this.__wbg_ptr);
5596
+ return ret >>> 0;
5597
+ }
5501
5598
  }
5502
5599
 
5503
5600
  async function __wbg_load(module, imports) {
@@ -5537,26 +5634,30 @@ function __wbg_get_imports() {
5537
5634
  imports.wbg.__wbindgen_object_drop_ref = function(arg0) {
5538
5635
  takeObject(arg0);
5539
5636
  };
5540
- imports.wbg.__wbg_loromap_new = function(arg0) {
5541
- const ret = LoroMap.__wrap(arg0);
5637
+ imports.wbg.__wbg_lorotreenode_new = function(arg0) {
5638
+ const ret = LoroTreeNode.__wrap(arg0);
5542
5639
  return addHeapObject(ret);
5543
5640
  };
5544
5641
  imports.wbg.__wbg_lorotree_new = function(arg0) {
5545
5642
  const ret = LoroTree.__wrap(arg0);
5546
5643
  return addHeapObject(ret);
5547
5644
  };
5548
- imports.wbg.__wbg_lorolist_new = function(arg0) {
5549
- const ret = LoroList.__wrap(arg0);
5645
+ imports.wbg.__wbg_lorotext_new = function(arg0) {
5646
+ const ret = LoroText.__wrap(arg0);
5550
5647
  return addHeapObject(ret);
5551
5648
  };
5552
- imports.wbg.__wbg_lorotreenode_new = function(arg0) {
5553
- const ret = LoroTreeNode.__wrap(arg0);
5649
+ imports.wbg.__wbg_loromap_new = function(arg0) {
5650
+ const ret = LoroMap.__wrap(arg0);
5554
5651
  return addHeapObject(ret);
5555
5652
  };
5556
5653
  imports.wbg.__wbg_lorocounter_new = function(arg0) {
5557
5654
  const ret = LoroCounter.__wrap(arg0);
5558
5655
  return addHeapObject(ret);
5559
5656
  };
5657
+ imports.wbg.__wbg_lorolist_new = function(arg0) {
5658
+ const ret = LoroList.__wrap(arg0);
5659
+ return addHeapObject(ret);
5660
+ };
5560
5661
  imports.wbg.__wbg_loromovablelist_new = function(arg0) {
5561
5662
  const ret = LoroMovableList.__wrap(arg0);
5562
5663
  return addHeapObject(ret);
@@ -5565,10 +5666,6 @@ function __wbg_get_imports() {
5565
5666
  const ret = Cursor.__wrap(arg0);
5566
5667
  return addHeapObject(ret);
5567
5668
  };
5568
- imports.wbg.__wbg_lorotext_new = function(arg0) {
5569
- const ret = LoroText.__wrap(arg0);
5570
- return addHeapObject(ret);
5571
- };
5572
5669
  imports.wbg.__wbg_versionvector_new = function(arg0) {
5573
5670
  const ret = VersionVector.__wrap(arg0);
5574
5671
  return addHeapObject(ret);
@@ -5757,7 +5854,7 @@ function __wbg_get_imports() {
5757
5854
  wasm.__wbindgen_export_5(deferred0_0, deferred0_1, 1);
5758
5855
  }
5759
5856
  };
5760
- imports.wbg.__wbg_now_faeb7e893612c45a = typeof Date.now == 'function' ? Date.now : notDefined('Date.now');
5857
+ imports.wbg.__wbg_now_11683c634f92ae89 = typeof Date.now == 'function' ? Date.now : notDefined('Date.now');
5761
5858
  imports.wbg.__wbg_crypto_1d1f22824a6a080c = function(arg0) {
5762
5859
  const ret = getObject(arg0).crypto;
5763
5860
  return addHeapObject(ret);
@@ -6016,12 +6113,12 @@ function __wbg_get_imports() {
6016
6113
  const ret = wasm.memory;
6017
6114
  return addHeapObject(ret);
6018
6115
  };
6019
- imports.wbg.__wbindgen_closure_wrapper491 = function(arg0, arg1, arg2) {
6020
- const ret = makeMutClosure(arg0, arg1, 9, __wbg_adapter_58);
6116
+ imports.wbg.__wbindgen_closure_wrapper485 = function(arg0, arg1, arg2) {
6117
+ const ret = makeMutClosure(arg0, arg1, 11, __wbg_adapter_58);
6021
6118
  return addHeapObject(ret);
6022
6119
  };
6023
- imports.wbg.__wbindgen_closure_wrapper494 = function(arg0, arg1, arg2) {
6024
- const ret = makeMutClosure(arg0, arg1, 11, __wbg_adapter_61);
6120
+ imports.wbg.__wbindgen_closure_wrapper488 = function(arg0, arg1, arg2) {
6121
+ const ret = makeMutClosure(arg0, arg1, 9, __wbg_adapter_61);
6025
6122
  return addHeapObject(ret);
6026
6123
  };
6027
6124
 
Binary file
@@ -116,6 +116,7 @@ export function lorotext_getAttached(a: number): number;
116
116
  export function lorotext_getCursor(a: number, b: number, c: number): number;
117
117
  export function lorotext_push(a: number, b: number, c: number, d: number): void;
118
118
  export function lorotext_getEditorOf(a: number, b: number): number;
119
+ export function lorotext_isDeleted(a: number): number;
119
120
  export function __wbg_loromap_free(a: number): void;
120
121
  export function loromap_new(): number;
121
122
  export function loromap_kind(a: number): number;
@@ -135,6 +136,7 @@ export function loromap_parent(a: number): number;
135
136
  export function loromap_getAttached(a: number): number;
136
137
  export function loromap_clear(a: number, b: number): void;
137
138
  export function loromap_getLastEditor(a: number, b: number, c: number): number;
139
+ export function loromap_isDeleted(a: number): number;
138
140
  export function __wbg_lorolist_free(a: number): void;
139
141
  export function lorolist_new(): number;
140
142
  export function lorolist_kind(a: number): number;
@@ -156,6 +158,7 @@ export function lorolist_push(a: number, b: number, c: number): void;
156
158
  export function lorolist_pop(a: number, b: number): void;
157
159
  export function lorolist_clear(a: number, b: number): void;
158
160
  export function lorolist_getIdAt(a: number, b: number): number;
161
+ export function lorolist_isDeleted(a: number): number;
159
162
  export function loromovablelist_new(): number;
160
163
  export function loromovablelist_kind(a: number): number;
161
164
  export function loromovablelist_insert(a: number, b: number, c: number, d: number): void;
@@ -179,6 +182,7 @@ export function loromovablelist_clear(a: number, b: number): void;
179
182
  export function loromovablelist_getCreatorAt(a: number, b: number): number;
180
183
  export function loromovablelist_getLastMoverAt(a: number, b: number): number;
181
184
  export function loromovablelist_getLastEditorAt(a: number, b: number): number;
185
+ export function loromovablelist_isDeleted(a: number): number;
182
186
  export function __wbg_lorotree_free(a: number): void;
183
187
  export function lorotreenode___getClassname(a: number, b: number): void;
184
188
  export function __wbg_lorotreenode_free(a: number): void;
@@ -218,6 +222,7 @@ export function lorotree_getAttached(a: number): number;
218
222
  export function lorotree_enableFractionalIndex(a: number, b: number): void;
219
223
  export function lorotree_disableFractionalIndex(a: number): void;
220
224
  export function lorotree_isFractionalIndexEnabled(a: number): number;
225
+ export function lorotree_isDeleted(a: number): number;
221
226
  export function __wbg_cursor_free(a: number): void;
222
227
  export function cursor_containerId(a: number): number;
223
228
  export function cursor_pos(a: number): number;
@@ -246,6 +251,10 @@ export function versionvector_encode(a: number, b: number): void;
246
251
  export function versionvector_decode(a: number, b: number, c: number): void;
247
252
  export function versionvector_get(a: number, b: number, c: number): void;
248
253
  export function versionvector_compare(a: number, b: number, c: number): void;
254
+ export function versionvector_setEnd(a: number, b: number, c: number): void;
255
+ export function versionvector_setLast(a: number, b: number, c: number): void;
256
+ export function versionvector_remove(a: number, b: number, c: number): void;
257
+ export function versionvector_length(a: number): number;
249
258
  export function decodeImportBlobMeta(a: number, b: number, c: number, d: number): void;
250
259
  export function __wbg_loromovablelist_free(a: number): void;
251
260
  export function loromovablelist_parent(a: number): number;