loro-crdt 1.2.1 → 1.2.3

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/web/loro_wasm.js CHANGED
@@ -853,6 +853,14 @@ export class LoroCounter {
853
853
  const ret = wasm.lorocounter_getAttached(this.__wbg_ptr);
854
854
  return takeObject(ret);
855
855
  }
856
+ /**
857
+ * Get the value of the counter.
858
+ * @returns {number}
859
+ */
860
+ getShallowValue() {
861
+ const ret = wasm.lorocounter_getShallowValue(this.__wbg_ptr);
862
+ return ret;
863
+ }
856
864
  }
857
865
 
858
866
  const LoroDocFinalization = (typeof FinalizationRegistry === 'undefined')
@@ -1799,18 +1807,13 @@ export class LoroDoc {
1799
1807
  * // get updates from specific version to the latest version
1800
1808
  * const updates2 = doc.exportFrom(version);
1801
1809
  * ```
1802
- * @param {VersionVector | undefined} [vv]
1810
+ * @param {any} vv
1803
1811
  * @returns {Uint8Array}
1804
1812
  */
1805
1813
  exportFrom(vv) {
1806
1814
  try {
1807
1815
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1808
- let ptr0 = 0;
1809
- if (!isLikeNone(vv)) {
1810
- _assertClass(vv, VersionVector);
1811
- ptr0 = vv.__destroy_into_raw();
1812
- }
1813
- wasm.lorodoc_exportFrom(retptr, this.__wbg_ptr, ptr0);
1816
+ wasm.lorodoc_exportFrom(retptr, this.__wbg_ptr, addHeapObject(vv));
1814
1817
  var r0 = getInt32Memory0()[retptr / 4 + 0];
1815
1818
  var r1 = getInt32Memory0()[retptr / 4 + 1];
1816
1819
  var r2 = getInt32Memory0()[retptr / 4 + 2];
@@ -1818,9 +1821,9 @@ export class LoroDoc {
1818
1821
  if (r3) {
1819
1822
  throw takeObject(r2);
1820
1823
  }
1821
- var v2 = getArrayU8FromWasm0(r0, r1).slice();
1824
+ var v1 = getArrayU8FromWasm0(r0, r1).slice();
1822
1825
  wasm.__wbindgen_export_5(r0, r1 * 1, 1);
1823
- return v2;
1826
+ return v1;
1824
1827
  } finally {
1825
1828
  wasm.__wbindgen_add_to_stack_pointer(16);
1826
1829
  }
@@ -1884,24 +1887,14 @@ export class LoroDoc {
1884
1887
  }
1885
1888
  /**
1886
1889
  * Export updates in the given range in JSON format.
1887
- * @param {VersionVector | undefined} [start_vv]
1888
- * @param {VersionVector | undefined} [end_vv]
1890
+ * @param {any} start_vv
1891
+ * @param {any} end_vv
1889
1892
  * @returns {JsonSchema}
1890
1893
  */
1891
1894
  exportJsonUpdates(start_vv, end_vv) {
1892
1895
  try {
1893
1896
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1894
- let ptr0 = 0;
1895
- if (!isLikeNone(start_vv)) {
1896
- _assertClass(start_vv, VersionVector);
1897
- ptr0 = start_vv.__destroy_into_raw();
1898
- }
1899
- let ptr1 = 0;
1900
- if (!isLikeNone(end_vv)) {
1901
- _assertClass(end_vv, VersionVector);
1902
- ptr1 = end_vv.__destroy_into_raw();
1903
- }
1904
- wasm.lorodoc_exportJsonUpdates(retptr, this.__wbg_ptr, ptr0, ptr1);
1897
+ wasm.lorodoc_exportJsonUpdates(retptr, this.__wbg_ptr, addHeapObject(start_vv), addHeapObject(end_vv));
1905
1898
  var r0 = getInt32Memory0()[retptr / 4 + 0];
1906
1899
  var r1 = getInt32Memory0()[retptr / 4 + 1];
1907
1900
  var r2 = getInt32Memory0()[retptr / 4 + 2];
@@ -1979,10 +1972,12 @@ export class LoroDoc {
1979
1972
  }
1980
1973
  }
1981
1974
  /**
1982
- * Import a batch of updates.
1975
+ * Import a batch of updates and snapshots.
1983
1976
  *
1984
1977
  * It's more efficient than importing updates one by one.
1985
1978
  *
1979
+ * @deprecated Use `importBatch` instead.
1980
+ *
1986
1981
  * @example
1987
1982
  * ```ts
1988
1983
  * import { LoroDoc } from "loro-crdt";
@@ -1993,9 +1988,9 @@ export class LoroDoc {
1993
1988
  * const updates = doc.export({ mode: "update" });
1994
1989
  * const snapshot = doc.export({ mode: "snapshot" });
1995
1990
  * const doc2 = new LoroDoc();
1996
- * doc2.importUpdateBatch([snapshot, updates]);
1991
+ * doc2.importBatch([snapshot, updates]);
1997
1992
  * ```
1998
- * @param {Array<any>} data
1993
+ * @param {Uint8Array[]} data
1999
1994
  * @returns {ImportStatus}
2000
1995
  */
2001
1996
  importUpdateBatch(data) {
@@ -2014,8 +2009,46 @@ export class LoroDoc {
2014
2009
  }
2015
2010
  }
2016
2011
  /**
2012
+ * Import a batch of updates or snapshots.
2013
+ *
2014
+ * It's more efficient than importing updates one by one.
2015
+ *
2016
+ * @example
2017
+ * ```ts
2018
+ * import { LoroDoc } from "loro-crdt";
2019
+ *
2020
+ * const doc = new LoroDoc();
2021
+ * const text = doc.getText("text");
2022
+ * text.insert(0, "Hello");
2023
+ * const updates = doc.export({ mode: "update" });
2024
+ * const snapshot = doc.export({ mode: "snapshot" });
2025
+ * const doc2 = new LoroDoc();
2026
+ * doc2.importBatch([snapshot, updates]);
2027
+ * ```
2028
+ * @param {Uint8Array[]} data
2029
+ * @returns {ImportStatus}
2030
+ */
2031
+ importBatch(data) {
2032
+ try {
2033
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
2034
+ wasm.lorodoc_importBatch(retptr, this.__wbg_ptr, addHeapObject(data));
2035
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
2036
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
2037
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
2038
+ if (r2) {
2039
+ throw takeObject(r1);
2040
+ }
2041
+ return takeObject(r0);
2042
+ } finally {
2043
+ wasm.__wbindgen_add_to_stack_pointer(16);
2044
+ }
2045
+ }
2046
+ /**
2017
2047
  * Get the shallow json format of the document state.
2018
2048
  *
2049
+ * Unlike `toJSON()` which recursively resolves all containers to their values,
2050
+ * `getShallowValue()` returns container IDs as strings for any nested containers.
2051
+ *
2019
2052
  * @example
2020
2053
  * ```ts
2021
2054
  * import { LoroDoc } from "loro-crdt";
@@ -2025,12 +2058,17 @@ export class LoroDoc {
2025
2058
  * const tree = doc.getTree("tree");
2026
2059
  * const map = doc.getMap("map");
2027
2060
  * const shallowValue = doc.getShallowValue();
2028
- * /*
2029
- * {"list": ..., "tree": ..., "map": ...}
2030
- * *\/
2031
2061
  * console.log(shallowValue);
2062
+ * // {
2063
+ * // list: 'cid:root-list:List',
2064
+ * // tree: 'cid:root-tree:Tree',
2065
+ * // map: 'cid:root-map:Map'
2066
+ * // }
2067
+ *
2068
+ * // It points to the same container as `list`
2069
+ * const listB = doc.getContainerById(shallowValue.list);
2032
2070
  * ```
2033
- * @returns {any}
2071
+ * @returns {Record<string, ContainerID>}
2034
2072
  */
2035
2073
  getShallowValue() {
2036
2074
  try {
@@ -2050,9 +2088,12 @@ export class LoroDoc {
2050
2088
  /**
2051
2089
  * Get the json format of the entire document state.
2052
2090
  *
2091
+ * Unlike `getShallowValue()` which returns container IDs as strings,
2092
+ * `toJSON()` recursively resolves all containers to their actual values.
2093
+ *
2053
2094
  * @example
2054
2095
  * ```ts
2055
- * import { LoroDoc, LoroText, LoroMap } from "loro-crdt";
2096
+ * import { LoroDoc, LoroText } from "loro-crdt";
2056
2097
  *
2057
2098
  * const doc = new LoroDoc();
2058
2099
  * const list = doc.getList("list");
@@ -2061,10 +2102,8 @@ export class LoroDoc {
2061
2102
  * text.insert(0, "Hello");
2062
2103
  * const map = list.insertContainer(1, new LoroMap());
2063
2104
  * map.set("foo", "bar");
2064
- * /*
2065
- * {"list": ["Hello", {"foo": "bar"}]}
2066
- * *\/
2067
2105
  * console.log(doc.toJSON());
2106
+ * // {"list": ["Hello", {"foo": "bar"}]}
2068
2107
  * ```
2069
2108
  * @returns {any}
2070
2109
  */
@@ -2819,6 +2858,29 @@ export class LoroList {
2819
2858
  const ret = wasm.lorolist_isDeleted(this.__wbg_ptr);
2820
2859
  return ret !== 0;
2821
2860
  }
2861
+ /**
2862
+ * Get the shallow value of the list.
2863
+ *
2864
+ * Unlike `toJSON()` which recursively resolves all containers to their values,
2865
+ * `getShallowValue()` returns container IDs as strings for any nested containers.
2866
+ *
2867
+ * ```js
2868
+ * const doc = new LoroDoc();
2869
+ * doc.setPeerId("1");
2870
+ * const list = doc.getList("list");
2871
+ * list.insert(0, 1);
2872
+ * list.insert(1, "two");
2873
+ * const subList = list.insertContainer(2, new LoroList());
2874
+ * subList.insert(0, "sub");
2875
+ * list.getShallowValue(); // [1, "two", "cid:2@1:List"]
2876
+ * list.toJSON(); // [1, "two", ["sub"]]
2877
+ * ```
2878
+ * @returns {Value[]}
2879
+ */
2880
+ getShallowValue() {
2881
+ const ret = wasm.lorolist_getShallowValue(this.__wbg_ptr);
2882
+ return takeObject(ret);
2883
+ }
2822
2884
  }
2823
2885
 
2824
2886
  const LoroMapFinalization = (typeof FinalizationRegistry === 'undefined')
@@ -3269,6 +3331,37 @@ export class LoroMap {
3269
3331
  const ret = wasm.loromap_isDeleted(this.__wbg_ptr);
3270
3332
  return ret !== 0;
3271
3333
  }
3334
+ /**
3335
+ * Get the shallow value of the map.
3336
+ *
3337
+ * Unlike `toJSON()` which recursively resolves all containers to their values,
3338
+ * `getShallowValue()` returns container IDs as strings for any nested containers.
3339
+ *
3340
+ * @example
3341
+ * ```ts
3342
+ * import { LoroDoc } from "loro-crdt";
3343
+ *
3344
+ * const doc = new LoroDoc();
3345
+ * doc.setPeerId("1");
3346
+ * const map = doc.getMap("map");
3347
+ * map.set("key", "value");
3348
+ * const subText = map.setContainer("text", new LoroText());
3349
+ * subText.insert(0, "Hello");
3350
+ *
3351
+ * // Get shallow value - nested containers are represented by their IDs
3352
+ * console.log(map.getShallowValue());
3353
+ * // Output: { key: "value", text: "cid:1@1:Text" }
3354
+ *
3355
+ * // Get full value with nested containers resolved by `toJSON()`
3356
+ * console.log(map.toJSON());
3357
+ * // Output: { key: "value", text: "Hello" }
3358
+ * ```
3359
+ * @returns {Record<string, Value>}
3360
+ */
3361
+ getShallowValue() {
3362
+ const ret = wasm.loromap_getShallowValue(this.__wbg_ptr);
3363
+ return takeObject(ret);
3364
+ }
3272
3365
  }
3273
3366
 
3274
3367
  const LoroMovableListFinalization = (typeof FinalizationRegistry === 'undefined')
@@ -3776,6 +3869,29 @@ export class LoroMovableList {
3776
3869
  const ret = wasm.loromovablelist_isDeleted(this.__wbg_ptr);
3777
3870
  return ret !== 0;
3778
3871
  }
3872
+ /**
3873
+ * Get the shallow value of the movable list.
3874
+ *
3875
+ * Unlike `toJSON()` which recursively resolves all containers to their values,
3876
+ * `getShallowValue()` returns container IDs as strings for any nested containers.
3877
+ *
3878
+ * ```js
3879
+ * const doc = new LoroDoc();
3880
+ * doc.setPeerId("1");
3881
+ * const list = doc.getMovableList("list");
3882
+ * list.insert(0, 1);
3883
+ * list.insert(1, "two");
3884
+ * const subList = list.insertContainer(2, new LoroList());
3885
+ * subList.insert(0, "sub");
3886
+ * list.getShallowValue(); // [1, "two", "cid:2@1:List"]
3887
+ * list.toJSON(); // [1, "two", ["sub"]]
3888
+ * ```
3889
+ * @returns {Value[]}
3890
+ */
3891
+ getShallowValue() {
3892
+ const ret = wasm.loromovablelist_getShallowValue(this.__wbg_ptr);
3893
+ return takeObject(ret);
3894
+ }
3779
3895
  }
3780
3896
 
3781
3897
  const LoroTextFinalization = (typeof FinalizationRegistry === 'undefined')
@@ -4431,6 +4547,26 @@ export class LoroText {
4431
4547
  const ret = wasm.lorotext_isDeleted(this.__wbg_ptr);
4432
4548
  return ret !== 0;
4433
4549
  }
4550
+ /**
4551
+ * Get the shallow value of the text. This equals to `text.toString()`.
4552
+ * @returns {string}
4553
+ */
4554
+ getShallowValue() {
4555
+ let deferred1_0;
4556
+ let deferred1_1;
4557
+ try {
4558
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
4559
+ wasm.lorotext_getShallowValue(retptr, this.__wbg_ptr);
4560
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
4561
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
4562
+ deferred1_0 = r0;
4563
+ deferred1_1 = r1;
4564
+ return getStringFromWasm0(r0, r1);
4565
+ } finally {
4566
+ wasm.__wbindgen_add_to_stack_pointer(16);
4567
+ wasm.__wbindgen_export_5(deferred1_0, deferred1_1, 1);
4568
+ }
4569
+ }
4434
4570
  }
4435
4571
 
4436
4572
  const LoroTreeFinalization = (typeof FinalizationRegistry === 'undefined')
@@ -4878,6 +5014,51 @@ export class LoroTree {
4878
5014
  const ret = wasm.lorotree_isDeleted(this.__wbg_ptr);
4879
5015
  return ret !== 0;
4880
5016
  }
5017
+ /**
5018
+ * Get the shallow value of the tree.
5019
+ *
5020
+ * Unlike `toJSON()` which recursively resolves nested containers to their values,
5021
+ * `getShallowValue()` returns container IDs as strings for any nested containers.
5022
+ *
5023
+ * @example
5024
+ * ```ts
5025
+ * const doc = new LoroDoc();
5026
+ * doc.setPeerId("1");
5027
+ * const tree = doc.getTree("tree");
5028
+ * const root = tree.createNode();
5029
+ * root.data.set("name", "root");
5030
+ * const text = root.data.setContainer("content", new LoroText());
5031
+ * text.insert(0, "Hello");
5032
+ *
5033
+ * console.log(tree.getShallowValue());
5034
+ * // [{
5035
+ * // id: "0@1",
5036
+ * // parent: null,
5037
+ * // index: 0,
5038
+ * // fractional_index: "80",
5039
+ * // meta: "cid:0@1:Map",
5040
+ * // children: []
5041
+ * // }]
5042
+ *
5043
+ * console.log(tree.toJSON());
5044
+ * // [{
5045
+ * // id: "0@1",
5046
+ * // parent: null,
5047
+ * // index: 0,
5048
+ * // fractional_index: "80",
5049
+ * // meta: {
5050
+ * // name: "root",
5051
+ * // content: "Hello"
5052
+ * // },
5053
+ * // children: []
5054
+ * // }]
5055
+ * ```
5056
+ * @returns {TreeNodeShallowValue[]}
5057
+ */
5058
+ getShallowValue() {
5059
+ const ret = wasm.lorotree_getShallowValue(this.__wbg_ptr);
5060
+ return takeObject(ret);
5061
+ }
4881
5062
  }
4882
5063
 
4883
5064
  const LoroTreeNodeFinalization = (typeof FinalizationRegistry === 'undefined')
@@ -5779,6 +5960,10 @@ function __wbg_get_imports() {
5779
5960
  const ret = typeof(getObject(arg0)) === 'string';
5780
5961
  return ret;
5781
5962
  };
5963
+ imports.wbg.__wbindgen_is_null = function(arg0) {
5964
+ const ret = getObject(arg0) === null;
5965
+ return ret;
5966
+ };
5782
5967
  imports.wbg.__wbindgen_number_new = function(arg0) {
5783
5968
  const ret = arg0;
5784
5969
  return addHeapObject(ret);
@@ -5787,10 +5972,6 @@ function __wbg_get_imports() {
5787
5972
  const ret = typeof getObject(arg0);
5788
5973
  return addHeapObject(ret);
5789
5974
  };
5790
- imports.wbg.__wbindgen_is_null = function(arg0) {
5791
- const ret = getObject(arg0) === null;
5792
- return ret;
5793
- };
5794
5975
  imports.wbg.__wbg_error_c8c2cca30a630316 = function(arg0, arg1) {
5795
5976
  console.error(getStringFromWasm0(arg0, arg1));
5796
5977
  };
Binary file
@@ -10,6 +10,7 @@ export function lorocounter_subscribe(a: number, b: number, c: number): void;
10
10
  export function lorocounter_parent(a: number): number;
11
11
  export function lorocounter_isAttached(a: number): number;
12
12
  export function lorocounter_getAttached(a: number): number;
13
+ export function lorocounter_getShallowValue(a: number): number;
13
14
  export function __wbg_awarenesswasm_free(a: number): void;
14
15
  export function awarenesswasm_new(a: number, b: number): number;
15
16
  export function awarenesswasm_encode(a: number, b: number, c: number): void;
@@ -76,6 +77,7 @@ export function lorodoc_exportJsonUpdates(a: number, b: number, c: number, d: nu
76
77
  export function lorodoc_importJsonUpdates(a: number, b: number, c: number): void;
77
78
  export function lorodoc_import(a: number, b: number, c: number, d: number): void;
78
79
  export function lorodoc_importUpdateBatch(a: number, b: number, c: number): void;
80
+ export function lorodoc_importBatch(a: number, b: number, c: number): void;
79
81
  export function lorodoc_getShallowValue(a: number, b: number): void;
80
82
  export function lorodoc_toJSON(a: number, b: number): void;
81
83
  export function lorodoc_subscribe(a: number, b: number): number;
@@ -119,6 +121,7 @@ export function lorotext_getCursor(a: number, b: number, c: number): number;
119
121
  export function lorotext_push(a: number, b: number, c: number, d: number): void;
120
122
  export function lorotext_getEditorOf(a: number, b: number): number;
121
123
  export function lorotext_isDeleted(a: number): number;
124
+ export function lorotext_getShallowValue(a: number, b: number): void;
122
125
  export function __wbg_loromap_free(a: number): void;
123
126
  export function loromap_new(): number;
124
127
  export function loromap_kind(a: number): number;
@@ -139,6 +142,7 @@ export function loromap_getAttached(a: number): number;
139
142
  export function loromap_clear(a: number, b: number): void;
140
143
  export function loromap_getLastEditor(a: number, b: number, c: number): number;
141
144
  export function loromap_isDeleted(a: number): number;
145
+ export function loromap_getShallowValue(a: number): number;
142
146
  export function __wbg_lorolist_free(a: number): void;
143
147
  export function lorolist_new(): number;
144
148
  export function lorolist_kind(a: number): number;
@@ -161,6 +165,7 @@ export function lorolist_pop(a: number, b: number): void;
161
165
  export function lorolist_clear(a: number, b: number): void;
162
166
  export function lorolist_getIdAt(a: number, b: number): number;
163
167
  export function lorolist_isDeleted(a: number): number;
168
+ export function lorolist_getShallowValue(a: number): number;
164
169
  export function loromovablelist_new(): number;
165
170
  export function loromovablelist_kind(a: number): number;
166
171
  export function loromovablelist_insert(a: number, b: number, c: number, d: number): void;
@@ -185,6 +190,7 @@ export function loromovablelist_getCreatorAt(a: number, b: number): number;
185
190
  export function loromovablelist_getLastMoverAt(a: number, b: number): number;
186
191
  export function loromovablelist_getLastEditorAt(a: number, b: number): number;
187
192
  export function loromovablelist_isDeleted(a: number): number;
193
+ export function loromovablelist_getShallowValue(a: number): number;
188
194
  export function __wbg_lorotree_free(a: number): void;
189
195
  export function lorotreenode___getClassname(a: number, b: number): void;
190
196
  export function __wbg_lorotreenode_free(a: number): void;
@@ -225,6 +231,7 @@ export function lorotree_enableFractionalIndex(a: number, b: number): void;
225
231
  export function lorotree_disableFractionalIndex(a: number): void;
226
232
  export function lorotree_isFractionalIndexEnabled(a: number): number;
227
233
  export function lorotree_isDeleted(a: number): number;
234
+ export function lorotree_getShallowValue(a: number): number;
228
235
  export function __wbg_cursor_free(a: number): void;
229
236
  export function cursor_containerId(a: number): number;
230
237
  export function cursor_pos(a: number): number;