loro-crdt 1.5.5 → 1.5.7
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 +13 -0
- package/base64/index.js +63 -8
- package/base64/loro_wasm.d.ts +50 -15
- package/base64/loro_wasm_bg-8058cd67.js +64 -0
- package/bundler/loro_wasm.d.ts +50 -15
- package/bundler/loro_wasm_bg.js +58 -4
- package/bundler/loro_wasm_bg.wasm +0 -0
- package/bundler/loro_wasm_bg.wasm.d.ts +3 -0
- package/nodejs/loro_wasm.d.ts +50 -15
- package/nodejs/loro_wasm.js +58 -4
- package/nodejs/loro_wasm_bg.wasm +0 -0
- package/nodejs/loro_wasm_bg.wasm.d.ts +3 -0
- package/package.json +4 -1
- package/web/loro_wasm.d.ts +53 -15
- package/web/loro_wasm.js +58 -4
- package/web/loro_wasm_bg.wasm +0 -0
- package/web/loro_wasm_bg.wasm.d.ts +3 -0
- package/base64/loro_wasm_bg-40e94009.js +0 -64
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.5.7
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 70a3bf3: Feat: support `group_start` and `group_end` for UndoManager #720
|
|
8
|
+
- 24a7f53: fix: panic when calling get_deep_value with an empty tree #740
|
|
9
|
+
|
|
10
|
+
## 1.5.6
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- 60876bb: Feat: redact
|
|
15
|
+
|
|
3
16
|
## 1.5.5
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/base64/index.js
CHANGED
|
@@ -383,6 +383,44 @@ function decodeImportBlobMeta(blob, check_checksum) {
|
|
|
383
383
|
}
|
|
384
384
|
}
|
|
385
385
|
|
|
386
|
+
/**
|
|
387
|
+
* Redacts sensitive content in JSON updates within the specified version range.
|
|
388
|
+
*
|
|
389
|
+
* This function allows you to share document history while removing potentially sensitive content.
|
|
390
|
+
* It preserves the document structure and collaboration capabilities while replacing content with
|
|
391
|
+
* placeholders according to these redaction rules:
|
|
392
|
+
*
|
|
393
|
+
* - Preserves delete and move operations
|
|
394
|
+
* - Replaces text insertion content with the Unicode replacement character
|
|
395
|
+
* - Substitutes list and map insert values with null
|
|
396
|
+
* - Maintains structure of child containers
|
|
397
|
+
* - Replaces text mark values with null
|
|
398
|
+
* - Preserves map keys and text annotation keys
|
|
399
|
+
*
|
|
400
|
+
* @param {Object|string} jsonUpdates - The JSON updates to redact (object or JSON string)
|
|
401
|
+
* @param {Object} versionRange - Version range defining what content to redact,
|
|
402
|
+
* format: { peerId: [startCounter, endCounter], ... }
|
|
403
|
+
* @returns {Object} The redacted JSON updates
|
|
404
|
+
* @param {string | JsonSchema} json_updates
|
|
405
|
+
* @param {any} version_range
|
|
406
|
+
* @returns {JsonSchema}
|
|
407
|
+
*/
|
|
408
|
+
function redactJsonUpdates(json_updates, version_range) {
|
|
409
|
+
try {
|
|
410
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
411
|
+
wasm.redactJsonUpdates(retptr, addHeapObject(json_updates), addHeapObject(version_range));
|
|
412
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
413
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
414
|
+
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
415
|
+
if (r2) {
|
|
416
|
+
throw takeObject(r1);
|
|
417
|
+
}
|
|
418
|
+
return takeObject(r0);
|
|
419
|
+
} finally {
|
|
420
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
|
|
386
424
|
function __wbg_adapter_60(arg0, arg1, arg2) {
|
|
387
425
|
wasm.__wbindgen_export_5(arg0, arg1, addHeapObject(arg2));
|
|
388
426
|
}
|
|
@@ -6133,6 +6171,22 @@ class UndoManager {
|
|
|
6133
6171
|
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
6134
6172
|
}
|
|
6135
6173
|
}
|
|
6174
|
+
groupStart() {
|
|
6175
|
+
try {
|
|
6176
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
6177
|
+
wasm.undomanager_groupStart(retptr, this.__wbg_ptr);
|
|
6178
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
6179
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
6180
|
+
if (r1) {
|
|
6181
|
+
throw takeObject(r0);
|
|
6182
|
+
}
|
|
6183
|
+
} finally {
|
|
6184
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
6185
|
+
}
|
|
6186
|
+
}
|
|
6187
|
+
groupEnd() {
|
|
6188
|
+
wasm.undomanager_groupEnd(this.__wbg_ptr);
|
|
6189
|
+
}
|
|
6136
6190
|
/**
|
|
6137
6191
|
* Can undo the last operation.
|
|
6138
6192
|
* @returns {boolean}
|
|
@@ -6694,7 +6748,7 @@ function __wbg_node_02999533c4ea02e3(arg0) {
|
|
|
6694
6748
|
const ret = getObject(arg0).node;
|
|
6695
6749
|
return addHeapObject(ret);
|
|
6696
6750
|
}
|
|
6697
|
-
function
|
|
6751
|
+
function __wbg_now_dc4980649ae44bd7() {
|
|
6698
6752
|
const ret = Date.now();
|
|
6699
6753
|
return ret;
|
|
6700
6754
|
}
|
|
@@ -6809,11 +6863,11 @@ function __wbindgen_cb_drop(arg0) {
|
|
|
6809
6863
|
return ret;
|
|
6810
6864
|
}
|
|
6811
6865
|
function __wbindgen_closure_wrapper483(arg0, arg1, arg2) {
|
|
6812
|
-
const ret = makeMutClosure(arg0, arg1,
|
|
6866
|
+
const ret = makeMutClosure(arg0, arg1, 8, __wbg_adapter_60);
|
|
6813
6867
|
return addHeapObject(ret);
|
|
6814
6868
|
}
|
|
6815
|
-
function
|
|
6816
|
-
const ret = makeMutClosure(arg0, arg1,
|
|
6869
|
+
function __wbindgen_closure_wrapper486(arg0, arg1, arg2) {
|
|
6870
|
+
const ret = makeMutClosure(arg0, arg1, 10, __wbg_adapter_63);
|
|
6817
6871
|
return addHeapObject(ret);
|
|
6818
6872
|
}
|
|
6819
6873
|
function __wbindgen_debug_string(arg0, arg1) {
|
|
@@ -6990,7 +7044,7 @@ var imports = /*#__PURE__*/Object.freeze({
|
|
|
6990
7044
|
__wbg_next_928df8c15fc0c9b0: __wbg_next_928df8c15fc0c9b0,
|
|
6991
7045
|
__wbg_next_9dc0926f351c7090: __wbg_next_9dc0926f351c7090,
|
|
6992
7046
|
__wbg_node_02999533c4ea02e3: __wbg_node_02999533c4ea02e3,
|
|
6993
|
-
|
|
7047
|
+
__wbg_now_dc4980649ae44bd7: __wbg_now_dc4980649ae44bd7,
|
|
6994
7048
|
__wbg_ownKeys_b16312a839a4152c: __wbg_ownKeys_b16312a839a4152c,
|
|
6995
7049
|
__wbg_process_5c1d670bc53614b8: __wbg_process_5c1d670bc53614b8,
|
|
6996
7050
|
__wbg_push_e7d7247e69dad3ee: __wbg_push_e7d7247e69dad3ee,
|
|
@@ -7019,7 +7073,7 @@ var imports = /*#__PURE__*/Object.freeze({
|
|
|
7019
7073
|
__wbindgen_boolean_get: __wbindgen_boolean_get,
|
|
7020
7074
|
__wbindgen_cb_drop: __wbindgen_cb_drop,
|
|
7021
7075
|
__wbindgen_closure_wrapper483: __wbindgen_closure_wrapper483,
|
|
7022
|
-
|
|
7076
|
+
__wbindgen_closure_wrapper486: __wbindgen_closure_wrapper486,
|
|
7023
7077
|
__wbindgen_debug_string: __wbindgen_debug_string,
|
|
7024
7078
|
__wbindgen_error_new: __wbindgen_error_new,
|
|
7025
7079
|
__wbindgen_in: __wbindgen_in,
|
|
@@ -7046,6 +7100,7 @@ var imports = /*#__PURE__*/Object.freeze({
|
|
|
7046
7100
|
decodeFrontiers: decodeFrontiers,
|
|
7047
7101
|
decodeImportBlobMeta: decodeImportBlobMeta,
|
|
7048
7102
|
encodeFrontiers: encodeFrontiers,
|
|
7103
|
+
redactJsonUpdates: redactJsonUpdates,
|
|
7049
7104
|
run: run,
|
|
7050
7105
|
setDebug: setDebug
|
|
7051
7106
|
});
|
|
@@ -7054,7 +7109,7 @@ var imports = /*#__PURE__*/Object.freeze({
|
|
|
7054
7109
|
// Without this patch, Cloudflare Worker would raise issue like: "Uncaught TypeError: wasm2.__wbindgen_start is not a function"
|
|
7055
7110
|
|
|
7056
7111
|
|
|
7057
|
-
import loro_wasm_bg_js from './loro_wasm_bg-
|
|
7112
|
+
import loro_wasm_bg_js from './loro_wasm_bg-8058cd67.js';
|
|
7058
7113
|
const instance = new WebAssembly.Instance(loro_wasm_bg_js(), {
|
|
7059
7114
|
"./loro_wasm_bg.js": imports,
|
|
7060
7115
|
});
|
|
@@ -7359,4 +7414,4 @@ function idStrToId(idStr) {
|
|
|
7359
7414
|
};
|
|
7360
7415
|
}
|
|
7361
7416
|
|
|
7362
|
-
export { Awareness, AwarenessWasm, ChangeModifier, Cursor, EphemeralStore, EphemeralStoreWasm, LORO_VERSION, Loro, LoroCounter, LoroDoc, LoroList, LoroMap, LoroMovableList, LoroText, LoroTree, LoroTreeNode, UndoManager, VersionVector, __wbg_String_8f0eb39a4a4c2f66, __wbg_apply_9bb7fe8fff013a3f, __wbg_buffer_ef9774282e5dab94, __wbg_call_0ad083564791763a, __wbg_call_a34b6b4765f27be0, __wbg_call_d00953b926be4879, __wbg_call_efe5a4db7065d1a2, __wbg_changemodifier_new, __wbg_crypto_ed58b8e10a292839, __wbg_cursor_new, __wbg_done_f4c254830a095eaf, __wbg_entries_4dce6361e3ba6fbc, __wbg_entries_83beb641792ccb9c, __wbg_error_7534b8e9a36f1ab4, __wbg_error_9912f7d6d7835a4b, __wbg_from_3aa0fcaa8eef0104, __wbg_getRandomValues_bcb4912f16000dc4, __wbg_get_0c3cc364764a0b98, __wbg_get_b996a12be035ef4f, __wbg_getindex_a471648b3037c750, __wbg_getwithrefkey_1dc361bd10053bfe, __wbg_globalThis_6b4d52a0b6aaeaea, __wbg_global_49324ce12193de77, __wbg_instanceof_ArrayBuffer_ff40e55b5978e215, __wbg_instanceof_Map_0f3f3653f757ced1, __wbg_instanceof_Object_9108547bac1f91b1, __wbg_instanceof_Uint8Array_db97368f94b1373f, __wbg_isArray_8738f1062fa88586, __wbg_isSafeInteger_a1b3e0811faecf2f, __wbg_iterator_c0c688f37fa815e6, __wbg_length_12246a78d2f65d3a, __wbg_length_c24da17096edfe57, __wbg_log_0cc1b7768397bcfe, __wbg_log_0fd6c49475c7bece, __wbg_log_cb9e190acc5753fb, __wbg_lorocounter_new, __wbg_lorolist_new, __wbg_loromap_new, __wbg_loromovablelist_new, __wbg_lorotext_new, __wbg_lorotree_new, __wbg_lorotreenode_new, __wbg_mark_7438147ce31e9d4b, __wbg_measure_fb7825c11612c823, __wbg_msCrypto_0a36e2ec3a343d26, __wbg_new_518e2184725aa711, __wbg_new_59845962d1127937, __wbg_new_67abf4a77618ee3e, __wbg_new_8a6f238a6ece86ea, __wbg_new_e2d07398d7689006, __wbg_newnoargs_a136448eeb7d48ac, __wbg_newwithbyteoffsetandlength_84908302a4c137cf, __wbg_newwithlength_4c216eaaf23f2f9a, __wbg_newwithlength_88b49de1eb24d63e, __wbg_next_928df8c15fc0c9b0, __wbg_next_9dc0926f351c7090, __wbg_node_02999533c4ea02e3,
|
|
7417
|
+
export { Awareness, AwarenessWasm, ChangeModifier, Cursor, EphemeralStore, EphemeralStoreWasm, LORO_VERSION, Loro, LoroCounter, LoroDoc, LoroList, LoroMap, LoroMovableList, LoroText, LoroTree, LoroTreeNode, UndoManager, VersionVector, __wbg_String_8f0eb39a4a4c2f66, __wbg_apply_9bb7fe8fff013a3f, __wbg_buffer_ef9774282e5dab94, __wbg_call_0ad083564791763a, __wbg_call_a34b6b4765f27be0, __wbg_call_d00953b926be4879, __wbg_call_efe5a4db7065d1a2, __wbg_changemodifier_new, __wbg_crypto_ed58b8e10a292839, __wbg_cursor_new, __wbg_done_f4c254830a095eaf, __wbg_entries_4dce6361e3ba6fbc, __wbg_entries_83beb641792ccb9c, __wbg_error_7534b8e9a36f1ab4, __wbg_error_9912f7d6d7835a4b, __wbg_from_3aa0fcaa8eef0104, __wbg_getRandomValues_bcb4912f16000dc4, __wbg_get_0c3cc364764a0b98, __wbg_get_b996a12be035ef4f, __wbg_getindex_a471648b3037c750, __wbg_getwithrefkey_1dc361bd10053bfe, __wbg_globalThis_6b4d52a0b6aaeaea, __wbg_global_49324ce12193de77, __wbg_instanceof_ArrayBuffer_ff40e55b5978e215, __wbg_instanceof_Map_0f3f3653f757ced1, __wbg_instanceof_Object_9108547bac1f91b1, __wbg_instanceof_Uint8Array_db97368f94b1373f, __wbg_isArray_8738f1062fa88586, __wbg_isSafeInteger_a1b3e0811faecf2f, __wbg_iterator_c0c688f37fa815e6, __wbg_length_12246a78d2f65d3a, __wbg_length_c24da17096edfe57, __wbg_log_0cc1b7768397bcfe, __wbg_log_0fd6c49475c7bece, __wbg_log_cb9e190acc5753fb, __wbg_lorocounter_new, __wbg_lorolist_new, __wbg_loromap_new, __wbg_loromovablelist_new, __wbg_lorotext_new, __wbg_lorotree_new, __wbg_lorotreenode_new, __wbg_mark_7438147ce31e9d4b, __wbg_measure_fb7825c11612c823, __wbg_msCrypto_0a36e2ec3a343d26, __wbg_new_518e2184725aa711, __wbg_new_59845962d1127937, __wbg_new_67abf4a77618ee3e, __wbg_new_8a6f238a6ece86ea, __wbg_new_e2d07398d7689006, __wbg_newnoargs_a136448eeb7d48ac, __wbg_newwithbyteoffsetandlength_84908302a4c137cf, __wbg_newwithlength_4c216eaaf23f2f9a, __wbg_newwithlength_88b49de1eb24d63e, __wbg_next_928df8c15fc0c9b0, __wbg_next_9dc0926f351c7090, __wbg_node_02999533c4ea02e3, __wbg_now_dc4980649ae44bd7, __wbg_ownKeys_b16312a839a4152c, __wbg_process_5c1d670bc53614b8, __wbg_push_e7d7247e69dad3ee, __wbg_randomFillSync_ab2cfe79ebbf2740, __wbg_require_79b1e9274cde3c87, __wbg_resolve_267ff08e7e1d2ce4, __wbg_self_cca3ca60d61220f4, __wbg_set_1b50d2de855a9d50, __wbg_set_393f510a6b7e9da5, __wbg_set_3f1d0b984ed272ed, __wbg_set_5deee49b10b2b780, __wbg_set_93ba9407b5476ec6, __wbg_set_wasm, __wbg_setindex_e0b7b31bfc87ba3f, __wbg_stack_0ed75d68575b0f3c, __wbg_subarray_2dc34705c0dc7cdb, __wbg_then_84907e7a6730461e, __wbg_value_51f8a88d4a1805fb, __wbg_versions_c71aa1626a93e0a1, __wbg_versionvector_new, __wbg_window_2aba046d3fc4ad7c, __wbindgen_as_number, __wbindgen_bigint_from_i64, __wbindgen_bigint_from_u64, __wbindgen_bigint_get_as_i64, __wbindgen_boolean_get, __wbindgen_cb_drop, __wbindgen_closure_wrapper483, __wbindgen_closure_wrapper486, __wbindgen_debug_string, __wbindgen_error_new, __wbindgen_in, __wbindgen_is_array, __wbindgen_is_bigint, __wbindgen_is_falsy, __wbindgen_is_function, __wbindgen_is_null, __wbindgen_is_object, __wbindgen_is_string, __wbindgen_is_undefined, __wbindgen_jsval_eq, __wbindgen_jsval_loose_eq, __wbindgen_memory, __wbindgen_number_get, __wbindgen_number_new, __wbindgen_object_clone_ref, __wbindgen_object_drop_ref, __wbindgen_rethrow, __wbindgen_string_get, __wbindgen_string_new, __wbindgen_throw, __wbindgen_typeof, decodeFrontiers, decodeImportBlobMeta, encodeFrontiers, getType, idStrToId, isContainer, isContainerId, newContainerID, newRootContainerID, redactJsonUpdates, run, setDebug };
|
package/base64/loro_wasm.d.ts
CHANGED
|
@@ -24,6 +24,26 @@ export function setDebug(): void;
|
|
|
24
24
|
* - changeNum
|
|
25
25
|
*/
|
|
26
26
|
export function decodeImportBlobMeta(blob: Uint8Array, check_checksum: boolean): ImportBlobMetadata;
|
|
27
|
+
/**
|
|
28
|
+
* Redacts sensitive content in JSON updates within the specified version range.
|
|
29
|
+
*
|
|
30
|
+
* This function allows you to share document history while removing potentially sensitive content.
|
|
31
|
+
* It preserves the document structure and collaboration capabilities while replacing content with
|
|
32
|
+
* placeholders according to these redaction rules:
|
|
33
|
+
*
|
|
34
|
+
* - Preserves delete and move operations
|
|
35
|
+
* - Replaces text insertion content with the Unicode replacement character
|
|
36
|
+
* - Substitutes list and map insert values with null
|
|
37
|
+
* - Maintains structure of child containers
|
|
38
|
+
* - Replaces text mark values with null
|
|
39
|
+
* - Preserves map keys and text annotation keys
|
|
40
|
+
*
|
|
41
|
+
* @param {Object|string} jsonUpdates - The JSON updates to redact (object or JSON string)
|
|
42
|
+
* @param {Object} versionRange - Version range defining what content to redact,
|
|
43
|
+
* format: { peerId: [startCounter, endCounter], ... }
|
|
44
|
+
* @returns {Object} The redacted JSON updates
|
|
45
|
+
*/
|
|
46
|
+
export function redactJsonUpdates(json_updates: string | JsonSchema, version_range: any): JsonSchema;
|
|
27
47
|
|
|
28
48
|
/**
|
|
29
49
|
* Container types supported by loro.
|
|
@@ -194,11 +214,11 @@ interface LoroDoc {
|
|
|
194
214
|
* doc.commit();
|
|
195
215
|
* expect(doc.getChangeAt({ peer: "0", counter: 0 }).message).toBe("test");
|
|
196
216
|
* ```
|
|
197
|
-
*
|
|
217
|
+
*
|
|
198
218
|
* ### Advanced Example: Creating a Merkle DAG
|
|
199
|
-
*
|
|
219
|
+
*
|
|
200
220
|
* By combining `doc.subscribePreCommit` with `doc.exportJsonInIdSpan`, you can implement advanced features like representing Loro's editing history as a Merkle DAG:
|
|
201
|
-
*
|
|
221
|
+
*
|
|
202
222
|
* ```ts
|
|
203
223
|
* const doc = new LoroDoc();
|
|
204
224
|
* doc.setPeerId(0);
|
|
@@ -218,7 +238,7 @@ interface LoroDoc {
|
|
|
218
238
|
* const sha256Hash = hash.digest('hex');
|
|
219
239
|
* e.modifier.setMessage(sha256Hash);
|
|
220
240
|
* });
|
|
221
|
-
*
|
|
241
|
+
*
|
|
222
242
|
* doc.getList("list").insert(0, 100);
|
|
223
243
|
* doc.commit();
|
|
224
244
|
* // Change 0
|
|
@@ -236,8 +256,8 @@ interface LoroDoc {
|
|
|
236
256
|
* // }
|
|
237
257
|
* // ]
|
|
238
258
|
* // }
|
|
239
|
-
*
|
|
240
|
-
*
|
|
259
|
+
*
|
|
260
|
+
*
|
|
241
261
|
* doc.getList("list").insert(0, 200);
|
|
242
262
|
* doc.commit();
|
|
243
263
|
* // Change 1
|
|
@@ -257,13 +277,13 @@ interface LoroDoc {
|
|
|
257
277
|
* // }
|
|
258
278
|
* // ]
|
|
259
279
|
* // }
|
|
260
|
-
*
|
|
280
|
+
*
|
|
261
281
|
* expect(doc.getChangeAt({ peer: "0", counter: 0 }).message).toBe("2af99cf93869173984bcf6b1ce5412610b0413d027a5511a8f720a02a4432853");
|
|
262
282
|
* expect(doc.getChangeAt({ peer: "0", counter: 1 }).message).toBe("aedbb442c554ecf59090e0e8339df1d8febf647f25cc37c67be0c6e27071d37f");
|
|
263
283
|
* ```
|
|
264
|
-
*
|
|
284
|
+
*
|
|
265
285
|
* @param f - A callback function that receives a pre commit event.
|
|
266
|
-
*
|
|
286
|
+
*
|
|
267
287
|
**/
|
|
268
288
|
subscribePreCommit(f: (e: { changeMeta: Change, origin: string, modifier: ChangeModifier }) => void): () => void
|
|
269
289
|
|
|
@@ -587,9 +607,6 @@ interface LoroMovableList {
|
|
|
587
607
|
}
|
|
588
608
|
|
|
589
609
|
export type Side = -1 | 0 | 1;
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
610
|
export type JsonOpID = `${number}@${PeerID}`;
|
|
594
611
|
export type JsonContainerID = `🦜:${ContainerID}` ;
|
|
595
612
|
export type JsonValue =
|
|
@@ -888,6 +905,24 @@ interface UndoManager {
|
|
|
888
905
|
* @param listener - The callback function.
|
|
889
906
|
*/
|
|
890
907
|
setOnPop(listener?: UndoConfig["onPop"]): void;
|
|
908
|
+
|
|
909
|
+
/**
|
|
910
|
+
* Starts a new grouping of undo operations.
|
|
911
|
+
* All changes/commits made after this call will be grouped/merged together.
|
|
912
|
+
* to end the group, call `groupEnd`.
|
|
913
|
+
*
|
|
914
|
+
* If a remote import is received within the group, its possible that the undo item will be
|
|
915
|
+
* split and the group will be automatically ended.
|
|
916
|
+
*
|
|
917
|
+
* Calling `groupStart` within an active group will throw but have no effect.
|
|
918
|
+
*
|
|
919
|
+
*/
|
|
920
|
+
groupStart(): void;
|
|
921
|
+
|
|
922
|
+
/**
|
|
923
|
+
* Ends the current grouping of undo operations.
|
|
924
|
+
*/
|
|
925
|
+
groupEnd(): void;
|
|
891
926
|
}
|
|
892
927
|
interface LoroDoc<T extends Record<string, Container> = Record<string, Container>> {
|
|
893
928
|
/**
|
|
@@ -931,7 +966,7 @@ interface LoroDoc<T extends Record<string, Container> = Record<string, Container
|
|
|
931
966
|
* import { LoroDoc } from "loro-crdt";
|
|
932
967
|
*
|
|
933
968
|
* const doc = new LoroDoc();
|
|
934
|
-
* const list = doc.
|
|
969
|
+
* const list = doc.getMovableList("list");
|
|
935
970
|
* ```
|
|
936
971
|
*/
|
|
937
972
|
getMovableList<Key extends keyof T | ContainerID>(name: Key): T[Key] extends LoroMovableList ? T[Key] : LoroMovableList;
|
|
@@ -967,9 +1002,9 @@ interface LoroDoc<T extends Record<string, Container> = Record<string, Container
|
|
|
967
1002
|
* It ensures deterministic output, making it ideal for hash calculations and integrity checks.
|
|
968
1003
|
*
|
|
969
1004
|
* This method can also export pending changes from the uncommitted transaction that have not yet been applied to the OpLog.
|
|
970
|
-
*
|
|
1005
|
+
*
|
|
971
1006
|
* This method will NOT trigger a new commit implicitly.
|
|
972
|
-
*
|
|
1007
|
+
*
|
|
973
1008
|
* @param idSpan - The id span to export.
|
|
974
1009
|
* @returns The changes in the given id span.
|
|
975
1010
|
*/
|