@loro-dev/flock 3.0.0 → 3.1.0

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.
@@ -821,53 +821,58 @@ function Option$Some$40$(param0) {
821
821
  this._0 = param0;
822
822
  }
823
823
  Option$Some$40$.prototype.$tag = 1;
824
- function Result$Err$41$(param0) {
824
+ const Option$None$41$ = { $tag: 0 };
825
+ function Option$Some$41$(param0) {
825
826
  this._0 = param0;
826
827
  }
827
- Result$Err$41$.prototype.$tag = 0;
828
- function Result$Ok$41$(param0) {
828
+ Option$Some$41$.prototype.$tag = 1;
829
+ function Result$Err$42$(param0) {
829
830
  this._0 = param0;
830
831
  }
831
- Result$Ok$41$.prototype.$tag = 1;
832
- const $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Continue$42$ = { $tag: 0 };
833
- function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Break$42$(param0) {
832
+ Result$Err$42$.prototype.$tag = 0;
833
+ function Result$Ok$42$(param0) {
834
834
  this._0 = param0;
835
835
  }
836
- $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Break$42$.prototype.$tag = 1;
837
- function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Return$42$(param0) {
836
+ Result$Ok$42$.prototype.$tag = 1;
837
+ const $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Continue$43$ = { $tag: 0 };
838
+ function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Break$43$(param0) {
839
+ this._0 = param0;
840
+ }
841
+ $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Break$43$.prototype.$tag = 1;
842
+ function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Return$43$(param0) {
838
843
  this._0 = param0;
839
844
  }
840
- $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Return$42$.prototype.$tag = 2;
841
- function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Error$42$(param0) {
845
+ $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Return$43$.prototype.$tag = 2;
846
+ function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Error$43$(param0) {
842
847
  this._0 = param0;
843
848
  }
844
- $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Error$42$.prototype.$tag = 3;
845
- function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$JumpOuter$42$(param0) {
849
+ $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Error$43$.prototype.$tag = 3;
850
+ function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$JumpOuter$43$(param0) {
846
851
  this._0 = param0;
847
852
  }
848
- $64$moonbitlang$47$core$47$builtin$46$ForeachResult$JumpOuter$42$.prototype.$tag = 4;
853
+ $64$moonbitlang$47$core$47$builtin$46$ForeachResult$JumpOuter$43$.prototype.$tag = 4;
849
854
  const Option$None$29$ = { $tag: 0 };
850
855
  function Option$Some$29$(param0) {
851
856
  this._0 = param0;
852
857
  }
853
858
  Option$Some$29$.prototype.$tag = 1;
854
- const $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Continue$43$ = { $tag: 0 };
855
- function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Break$43$(param0) {
859
+ const $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Continue$44$ = { $tag: 0 };
860
+ function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Break$44$(param0) {
856
861
  this._0 = param0;
857
862
  }
858
- $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Break$43$.prototype.$tag = 1;
859
- function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Return$43$(param0) {
863
+ $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Break$44$.prototype.$tag = 1;
864
+ function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Return$44$(param0) {
860
865
  this._0 = param0;
861
866
  }
862
- $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Return$43$.prototype.$tag = 2;
863
- function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Error$43$(param0) {
867
+ $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Return$44$.prototype.$tag = 2;
868
+ function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Error$44$(param0) {
864
869
  this._0 = param0;
865
870
  }
866
- $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Error$43$.prototype.$tag = 3;
867
- function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$JumpOuter$43$(param0) {
871
+ $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Error$44$.prototype.$tag = 3;
872
+ function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$JumpOuter$44$(param0) {
868
873
  this._0 = param0;
869
874
  }
870
- $64$moonbitlang$47$core$47$builtin$46$ForeachResult$JumpOuter$43$.prototype.$tag = 4;
875
+ $64$moonbitlang$47$core$47$builtin$46$ForeachResult$JumpOuter$44$.prototype.$tag = 4;
871
876
  const zxch3n$flock$flock$$ffi_json_stringify_value = (value) => {
872
877
  const result = JSON.stringify(value);
873
878
  if (result === undefined) {
@@ -878,23 +883,23 @@ const zxch3n$flock$flock$$ffi_json_stringify_value = (value) => {
878
883
  const zxch3n$flock$flock$$ffi_json_parse_to_nullable = (json) => JSON.parse(json);
879
884
  const zxch3n$flock$flock$$ffi_any_is_null = (value) => value === null;
880
885
  const zxch3n$flock$flock$$ffi_any_is_undefined = (value) => value === undefined;
881
- const $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Continue$44$ = { $tag: 0 };
882
- function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Break$44$(param0) {
886
+ const $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Continue$45$ = { $tag: 0 };
887
+ function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Break$45$(param0) {
883
888
  this._0 = param0;
884
889
  }
885
- $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Break$44$.prototype.$tag = 1;
886
- function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Return$44$(param0) {
890
+ $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Break$45$.prototype.$tag = 1;
891
+ function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Return$45$(param0) {
887
892
  this._0 = param0;
888
893
  }
889
- $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Return$44$.prototype.$tag = 2;
890
- function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Error$44$(param0) {
894
+ $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Return$45$.prototype.$tag = 2;
895
+ function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Error$45$(param0) {
891
896
  this._0 = param0;
892
897
  }
893
- $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Error$44$.prototype.$tag = 3;
894
- function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$JumpOuter$44$(param0) {
898
+ $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Error$45$.prototype.$tag = 3;
899
+ function $64$moonbitlang$47$core$47$builtin$46$ForeachResult$JumpOuter$45$(param0) {
895
900
  this._0 = param0;
896
901
  }
897
- $64$moonbitlang$47$core$47$builtin$46$ForeachResult$JumpOuter$44$.prototype.$tag = 4;
902
+ $64$moonbitlang$47$core$47$builtin$46$ForeachResult$JumpOuter$45$.prototype.$tag = 4;
898
903
  const zxch3n$flock$flock$$ffi_invoke_listener = (listener, event) => listener(event);
899
904
  const zxch3n$flock$flock$$ffi_make_unsubscribe = (callback) => () => callback();
900
905
  const moonbitlang$core$strconv$$base_err_str = "invalid base";
@@ -1003,10 +1008,10 @@ const zxch3n$expect$$yellow$46$constr$47$2550 = 3;
1003
1008
  const zxch3n$expect$$blue$46$constr$47$2552 = 4;
1004
1009
  const zxch3n$flock$sorted_map$$range$46$tuple$47$2955 = { _0: true, _1: true };
1005
1010
  const zxch3n$flock$sorted_map$$range$46$tuple$47$2956 = { _0: true, _1: true };
1006
- const zxch3n$flock$flock$$from_string$46$42$bind$124$616 = ",";
1007
- const zxch3n$flock$flock$$zero$46$record$47$3038 = { physical_time: 0, logical_counter: 0 };
1008
- const zxch3n$flock$flock$$new$46$42$bind$47$3226 = { physical_time: 0, logical_counter: 0 };
1009
- const zxch3n$flock$flock$$import_json$46$inner$46$constr$47$3487 = new Source$Import("import_json");
1011
+ const zxch3n$flock$flock$$from_string$46$42$bind$124$643 = ",";
1012
+ const zxch3n$flock$flock$$zero$46$record$47$3040 = { physical_time: 0, logical_counter: 0 };
1013
+ const zxch3n$flock$flock$$new$46$42$bind$47$3228 = { physical_time: 0, logical_counter: 0 };
1014
+ const zxch3n$flock$flock$$import_json$46$inner$46$constr$47$3535 = new Source$Import("import_json");
1010
1015
  (() => {
1011
1016
  Yoorkin$jmop$$ffi_init(Yoorkin$jmop$$convert_thrown_error);
1012
1017
  })();
@@ -6568,7 +6573,7 @@ function moonbitlang$core$array$$Array$at$51$(self, index) {
6568
6573
  return $panic();
6569
6574
  }
6570
6575
  }
6571
- function moonbitlang$core$array$$Array$at$41$(self, index) {
6576
+ function moonbitlang$core$array$$Array$at$11$(self, index) {
6572
6577
  const len = self.length;
6573
6578
  if (index >= 0 && index < len) {
6574
6579
  $bound_check(self, index);
@@ -6577,7 +6582,7 @@ function moonbitlang$core$array$$Array$at$41$(self, index) {
6577
6582
  return $panic();
6578
6583
  }
6579
6584
  }
6580
- function moonbitlang$core$array$$Array$at$11$(self, index) {
6585
+ function moonbitlang$core$array$$Array$at$52$(self, index) {
6581
6586
  const len = self.length;
6582
6587
  if (index >= 0 && index < len) {
6583
6588
  $bound_check(self, index);
@@ -6586,7 +6591,7 @@ function moonbitlang$core$array$$Array$at$11$(self, index) {
6586
6591
  return $panic();
6587
6592
  }
6588
6593
  }
6589
- function moonbitlang$core$array$$Array$at$52$(self, index) {
6594
+ function moonbitlang$core$array$$Array$at$41$(self, index) {
6590
6595
  const len = self.length;
6591
6596
  if (index >= 0 && index < len) {
6592
6597
  $bound_check(self, index);
@@ -11233,18 +11238,18 @@ function zxch3n$flock$sorted_map$$SortedMap$set$75$(self, key, value) {
11233
11238
  return;
11234
11239
  }
11235
11240
  }
11236
- function zxch3n$flock$sorted_map$$SortedMap$get$82$(self, key) {
11241
+ function zxch3n$flock$sorted_map$$SortedMap$get$75$(self, key) {
11237
11242
  let _tmp = self.root;
11238
11243
  while (true) {
11239
11244
  const _param = _tmp;
11240
11245
  if (_param === undefined) {
11241
- return Option$None$31$;
11246
+ return undefined;
11242
11247
  } else {
11243
11248
  const _Some = _param;
11244
11249
  const _node = _Some;
11245
- const cmp = moonbitlang$core$builtin$$Compare$compare$1$(key, _node.key);
11250
+ const cmp = moonbitlang$core$builtin$$Compare$compare$43$(key, _node.key);
11246
11251
  if (cmp === 0) {
11247
- return new Option$Some$31$(_node.value);
11252
+ return _node.value;
11248
11253
  } else {
11249
11254
  if (cmp > 0) {
11250
11255
  _tmp = _node.right;
@@ -11257,18 +11262,18 @@ function zxch3n$flock$sorted_map$$SortedMap$get$82$(self, key) {
11257
11262
  }
11258
11263
  }
11259
11264
  }
11260
- function zxch3n$flock$sorted_map$$SortedMap$get$75$(self, key) {
11265
+ function zxch3n$flock$sorted_map$$SortedMap$get$82$(self, key) {
11261
11266
  let _tmp = self.root;
11262
11267
  while (true) {
11263
11268
  const _param = _tmp;
11264
11269
  if (_param === undefined) {
11265
- return undefined;
11270
+ return Option$None$31$;
11266
11271
  } else {
11267
11272
  const _Some = _param;
11268
11273
  const _node = _Some;
11269
- const cmp = moonbitlang$core$builtin$$Compare$compare$43$(key, _node.key);
11274
+ const cmp = moonbitlang$core$builtin$$Compare$compare$1$(key, _node.key);
11270
11275
  if (cmp === 0) {
11271
- return _node.value;
11276
+ return new Option$Some$31$(_node.value);
11272
11277
  } else {
11273
11278
  if (cmp > 0) {
11274
11279
  _tmp = _node.right;
@@ -11612,6 +11617,15 @@ function zxch3n$flock$flock$$peer_id_from_string(peer_id) {
11612
11617
  function zxch3n$flock$flock$$peer_key_to_string(peer) {
11613
11618
  return zxch3n$flock$types$$Utf8Str$to_string(peer);
11614
11619
  }
11620
+ function moonbitlang$core$builtin$$Eq$equal$56$(a, b) {
11621
+ const _p = a.hlc;
11622
+ const _p$2 = b.hlc;
11623
+ if (_p.physical_time === _p$2.physical_time && _p.logical_counter === _p$2.logical_counter) {
11624
+ return moonbitlang$core$builtin$$Eq$equal$1$(a.peer, b.peer);
11625
+ } else {
11626
+ return false;
11627
+ }
11628
+ }
11615
11629
  function moonbitlang$core$builtin$$Compare$compare$56$(a, b) {
11616
11630
  const _p = a.hlc;
11617
11631
  const _p$2 = b.hlc;
@@ -11628,7 +11642,7 @@ function zxch3n$flock$flock$$HlcWithPeer$to_string(self) {
11628
11642
  return `${zxch3n$flock$flock$$Hlc$to_string(self.hlc)},${zxch3n$flock$flock$$peer_key_to_string(self.peer)}`;
11629
11643
  }
11630
11644
  function zxch3n$flock$flock$$HlcWithPeer$from_string(s) {
11631
- const parts = moonbitlang$core$builtin$$Iter$collect$13$(moonbitlang$core$string$$StringView$split(s, { str: zxch3n$flock$flock$$from_string$46$42$bind$124$616, start: 0, end: zxch3n$flock$flock$$from_string$46$42$bind$124$616.length }));
11645
+ const parts = moonbitlang$core$builtin$$Iter$collect$13$(moonbitlang$core$string$$StringView$split(s, { str: zxch3n$flock$flock$$from_string$46$42$bind$124$643, start: 0, end: zxch3n$flock$flock$$from_string$46$42$bind$124$643.length }));
11632
11646
  if (parts.length < 3) {
11633
11647
  return undefined;
11634
11648
  }
@@ -12242,7 +12256,7 @@ function zxch3n$flock$flock$$Flock$new(peer_id) {
12242
12256
  const _bind$4 = zxch3n$flock$sorted_map$$SortedMap$new$82$();
12243
12257
  const _bind$5 = zxch3n$flock$flock$$SubscriberSet$new$83$();
12244
12258
  const _bind$6 = undefined;
12245
- return { peer_id: peer_key, max_hlc: zxch3n$flock$flock$$new$46$42$bind$47$3226, vv: _bind$2, kv: _bind$3, updates: _bind$4, subscribers: _bind$5, digest: _bind$6 };
12259
+ return { peer_id: peer_key, max_hlc: zxch3n$flock$flock$$new$46$42$bind$47$3228, vv: _bind$2, kv: _bind$3, updates: _bind$4, subscribers: _bind$5, digest: _bind$6 };
12246
12260
  }
12247
12261
  function zxch3n$flock$flock$$Flock$set_peer_id(self, peer_id) {
12248
12262
  const _bind = zxch3n$flock$flock$$peer_id_from_string(peer_id);
@@ -12460,9 +12474,9 @@ function zxch3n$flock$flock$$prefix_upper_bound_bytes(bytes) {
12460
12474
  }
12461
12475
  return undefined;
12462
12476
  }
12463
- function zxch3n$flock$flock$$scan$46$inner$46$apply_lower$124$379(_env, bytes, inclusive) {
12464
- const lower_bytes = _env._1;
12465
- const lower_inclusive = _env._0;
12477
+ function zxch3n$flock$flock$$scan$46$inner$46$apply_lower$124$406(_env, bytes, inclusive) {
12478
+ const lower_inclusive = _env._1;
12479
+ const lower_bytes = _env._0;
12466
12480
  const _bind = lower_bytes.val;
12467
12481
  if (_bind === undefined) {
12468
12482
  lower_bytes.val = bytes;
@@ -12486,9 +12500,9 @@ function zxch3n$flock$flock$$scan$46$inner$46$apply_lower$124$379(_env, bytes, i
12486
12500
  }
12487
12501
  }
12488
12502
  }
12489
- function zxch3n$flock$flock$$scan$46$inner$46$apply_upper$124$391(_env, bytes, inclusive) {
12490
- const upper_inclusive = _env._1;
12491
- const upper_bytes = _env._0;
12503
+ function zxch3n$flock$flock$$scan$46$inner$46$apply_upper$124$418(_env, bytes, inclusive) {
12504
+ const upper_bytes = _env._1;
12505
+ const upper_inclusive = _env._0;
12492
12506
  const _bind = upper_bytes.val;
12493
12507
  if (_bind === undefined) {
12494
12508
  upper_bytes.val = bytes;
@@ -12598,25 +12612,25 @@ function zxch3n$flock$flock$$Flock$scan$46$inner(self, start, end, prefix) {
12598
12612
  }
12599
12613
  const lower_bytes = { val: undefined };
12600
12614
  const lower_inclusive = { val: true };
12601
- const _env = { _0: lower_inclusive, _1: lower_bytes };
12615
+ const _env = { _0: lower_bytes, _1: lower_inclusive };
12602
12616
  const _bind$5 = prefix_bytes;
12603
12617
  if (_bind$5 === undefined) {
12604
12618
  } else {
12605
12619
  const _Some = _bind$5;
12606
12620
  const _prefix_key = _Some;
12607
- zxch3n$flock$flock$$scan$46$inner$46$apply_lower$124$379(_env, _prefix_key, true);
12621
+ zxch3n$flock$flock$$scan$46$inner$46$apply_lower$124$406(_env, _prefix_key, true);
12608
12622
  }
12609
12623
  switch (start_bound_bytes.$tag) {
12610
12624
  case 0: {
12611
12625
  const _Inclusive$3 = start_bound_bytes;
12612
12626
  const _start_key = _Inclusive$3._0;
12613
- zxch3n$flock$flock$$scan$46$inner$46$apply_lower$124$379(_env, _start_key, true);
12627
+ zxch3n$flock$flock$$scan$46$inner$46$apply_lower$124$406(_env, _start_key, true);
12614
12628
  break;
12615
12629
  }
12616
12630
  case 1: {
12617
12631
  const _Exclusive$3 = start_bound_bytes;
12618
12632
  const _start_key$2 = _Exclusive$3._0;
12619
- zxch3n$flock$flock$$scan$46$inner$46$apply_lower$124$379(_env, _start_key$2, false);
12633
+ zxch3n$flock$flock$$scan$46$inner$46$apply_lower$124$406(_env, _start_key$2, false);
12620
12634
  break;
12621
12635
  }
12622
12636
  }
@@ -12631,25 +12645,25 @@ function zxch3n$flock$flock$$Flock$scan$46$inner(self, start, end, prefix) {
12631
12645
  }
12632
12646
  const upper_bytes = { val: undefined };
12633
12647
  const upper_inclusive = { val: true };
12634
- const _env$2 = { _0: upper_bytes, _1: upper_inclusive };
12648
+ const _env$2 = { _0: upper_inclusive, _1: upper_bytes };
12635
12649
  const _bind$7 = prefix_upper_bytes;
12636
12650
  if (_bind$7 === undefined) {
12637
12651
  } else {
12638
12652
  const _Some = _bind$7;
12639
12653
  const _prefix_upper = _Some;
12640
- zxch3n$flock$flock$$scan$46$inner$46$apply_upper$124$391(_env$2, _prefix_upper, false);
12654
+ zxch3n$flock$flock$$scan$46$inner$46$apply_upper$124$418(_env$2, _prefix_upper, false);
12641
12655
  }
12642
12656
  switch (end_bound_bytes.$tag) {
12643
12657
  case 0: {
12644
12658
  const _Inclusive$4 = end_bound_bytes;
12645
12659
  const _end_key = _Inclusive$4._0;
12646
- zxch3n$flock$flock$$scan$46$inner$46$apply_upper$124$391(_env$2, _end_key, true);
12660
+ zxch3n$flock$flock$$scan$46$inner$46$apply_upper$124$418(_env$2, _end_key, true);
12647
12661
  break;
12648
12662
  }
12649
12663
  case 1: {
12650
12664
  const _Exclusive$4 = end_bound_bytes;
12651
12665
  const _end_key$2 = _Exclusive$4._0;
12652
- zxch3n$flock$flock$$scan$46$inner$46$apply_upper$124$391(_env$2, _end_key$2, false);
12666
+ zxch3n$flock$flock$$scan$46$inner$46$apply_upper$124$418(_env$2, _end_key$2, false);
12653
12667
  break;
12654
12668
  }
12655
12669
  }
@@ -12723,132 +12737,255 @@ function zxch3n$flock$flock$$Flock$peer_id(self) {
12723
12737
  function zxch3n$flock$flock$$Flock$version(self) {
12724
12738
  return moonbitlang$core$builtin$$Map$copy$72$(self.vv);
12725
12739
  }
12726
- function zxch3n$flock$flock$$Flock$export_json$46$inner(self, from, prune_tombstones_before) {
12740
+ function zxch3n$flock$flock$$export_current_state(entries, peer_key, prune_before, flock) {
12741
+ const _bind = zxch3n$flock$sorted_map$$SortedMap$get$82$(flock.updates, peer_key);
12742
+ if (_bind.$tag === 1) {
12743
+ const _Some = _bind;
12744
+ const _peer_updates = _Some._0;
12745
+ let _tmp = 0;
12746
+ while (true) {
12747
+ const i = _tmp;
12748
+ if (i < _peer_updates.length) {
12749
+ _L: {
12750
+ const update = moonbitlang$core$array$$Array$at$41$(_peer_updates, i);
12751
+ if (update.overridden) {
12752
+ break _L;
12753
+ }
12754
+ _L$2: {
12755
+ _L$3: {
12756
+ const _bind$2 = zxch3n$flock$sorted_map$$SortedMap$get$75$(flock.kv, update.key);
12757
+ if (_bind$2 === undefined) {
12758
+ break _L$3;
12759
+ } else {
12760
+ const _Some$2 = _bind$2;
12761
+ const _current_entry = _Some$2;
12762
+ if (moonbitlang$core$builtin$$Eq$equal$56$(_current_entry.value.clock, update.value.clock)) {
12763
+ if (prune_before.$tag === 1) {
12764
+ const _Some$3 = prune_before;
12765
+ const _before = _Some$3._0;
12766
+ const _bind$3 = update.value.data;
12767
+ if (_bind$3 === undefined) {
12768
+ if (update.value.clock.hlc.physical_time < _before) {
12769
+ break _L;
12770
+ }
12771
+ }
12772
+ }
12773
+ const key = zxch3n$flock$memcomparable$$decode_key_to_json(update.key);
12774
+ const exported_value = update.value;
12775
+ moonbitlang$core$builtin$$Map$set$36$(entries, moonbitlang$core$json$$Json$stringify$46$inner(moonbitlang$core$builtin$$ToJson$to_json$31$(key), false, 0, undefined), zxch3n$flock$flock$$RawValue$to_json(exported_value));
12776
+ } else {
12777
+ break _L$3;
12778
+ }
12779
+ }
12780
+ break _L$2;
12781
+ }
12782
+ break _L;
12783
+ }
12784
+ break _L;
12785
+ }
12786
+ _tmp = i + 1 | 0;
12787
+ continue;
12788
+ } else {
12789
+ return;
12790
+ }
12791
+ }
12792
+ } else {
12793
+ return;
12794
+ }
12795
+ }
12796
+ function zxch3n$flock$flock$$export_updates_since(entries, peer_key, since, prune_before, flock) {
12797
+ const _bind = zxch3n$flock$sorted_map$$SortedMap$get$82$(flock.updates, peer_key);
12798
+ if (_bind.$tag === 1) {
12799
+ const _Some = _bind;
12800
+ const _peer_updates = _Some._0;
12801
+ const _bind$2 = moonbitlang$core$array$$Array$binary_search_by$41$(_peer_updates, (e) => {
12802
+ const _p = e.value.clock.hlc;
12803
+ return _p.physical_time < since.physical_time ? -1 : _p.physical_time > since.physical_time ? 1 : $compare_int(_p.logical_counter, since.logical_counter);
12804
+ });
12805
+ let index;
12806
+ if (_bind$2.$tag === 1) {
12807
+ const _Ok = _bind$2;
12808
+ const _index = _Ok._0;
12809
+ index = _index + 1 | 0;
12810
+ } else {
12811
+ const _Err = _bind$2;
12812
+ index = _Err._0;
12813
+ }
12814
+ let _tmp = index;
12815
+ while (true) {
12816
+ const i = _tmp;
12817
+ if (i < _peer_updates.length) {
12818
+ _L: {
12819
+ const update = moonbitlang$core$array$$Array$at$41$(_peer_updates, i);
12820
+ if (update.overridden) {
12821
+ break _L;
12822
+ }
12823
+ if (prune_before.$tag === 1) {
12824
+ const _Some$2 = prune_before;
12825
+ const _before = _Some$2._0;
12826
+ const _bind$3 = update.value.data;
12827
+ if (_bind$3 === undefined) {
12828
+ if (update.value.clock.hlc.physical_time < _before) {
12829
+ break _L;
12830
+ }
12831
+ }
12832
+ }
12833
+ const key = zxch3n$flock$memcomparable$$decode_key_to_json(update.key);
12834
+ const exported_value = update.value;
12835
+ moonbitlang$core$builtin$$Map$set$36$(entries, moonbitlang$core$json$$Json$stringify$46$inner(moonbitlang$core$builtin$$ToJson$to_json$31$(key), false, 0, undefined), zxch3n$flock$flock$$RawValue$to_json(exported_value));
12836
+ break _L;
12837
+ }
12838
+ _tmp = i + 1 | 0;
12839
+ continue;
12840
+ } else {
12841
+ return;
12842
+ }
12843
+ }
12844
+ } else {
12845
+ return;
12846
+ }
12847
+ }
12848
+ function zxch3n$flock$flock$$Flock$export_json$46$inner(self, from, prune_tombstones_before, peer_id) {
12727
12849
  const ans = moonbitlang$core$builtin$$Map$new$46$inner$36$(8);
12850
+ let target_peer_key;
12851
+ if (peer_id === undefined) {
12852
+ target_peer_key = undefined;
12853
+ } else {
12854
+ const _Some = peer_id;
12855
+ const _pid = _Some;
12856
+ const _bind = zxch3n$flock$flock$$peer_id_from_string(_pid);
12857
+ if (_bind === undefined) {
12858
+ target_peer_key = undefined;
12859
+ } else {
12860
+ const _Some$2 = _bind;
12861
+ const _pk = _Some$2;
12862
+ target_peer_key = _pk;
12863
+ }
12864
+ }
12728
12865
  const _p = 0;
12729
12866
  const _p$2 = undefined;
12730
12867
  moonbitlang$core$builtin$$Map$set$36$(ans, "version", new $64$moonbitlang$47$core$47$builtin$46$Json$Number(_p, _p$2));
12731
12868
  const entries = moonbitlang$core$builtin$$Map$new$46$inner$36$(8);
12732
- _L: {
12733
- _L$2: {
12734
- if (from === undefined) {
12735
- break _L$2;
12736
- } else {
12737
- const _Some = from;
12738
- const _f = _Some;
12739
- if (!(_f.size === 0)) {
12740
- let _foreach_result = $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Continue$36$;
12741
- const _bind = moonbitlang$core$builtin$$Map$iter2$72$(self.vv);
12742
- _bind((peer, clock) => {
12743
- const _p$3 = moonbitlang$core$builtin$$Map$get$72$(_f, peer);
12869
+ if (target_peer_key === undefined) {
12870
+ _L: {
12871
+ _L$2: {
12872
+ if (from === undefined) {
12873
+ break _L$2;
12874
+ } else {
12875
+ const _Some = from;
12876
+ const _f = _Some;
12877
+ if (!(_f.size === 0)) {
12878
+ let _foreach_result = $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Continue$36$;
12879
+ const _bind = moonbitlang$core$builtin$$Map$iter2$72$(self.vv);
12880
+ _bind((peer, clock) => {
12881
+ const _p$3 = moonbitlang$core$builtin$$Map$get$72$(_f, peer);
12882
+ let v;
12883
+ if (_p$3 === undefined) {
12884
+ v = zxch3n$flock$flock$$zero$46$record$47$3040;
12885
+ } else {
12886
+ const _p$4 = _p$3;
12887
+ v = _p$4;
12888
+ }
12889
+ if (moonbitlang$core$builtin$$Compare$op_ge$54$(v, clock)) {
12890
+ return 1;
12891
+ }
12892
+ const _bind$2 = zxch3n$flock$flock$$peer_id_from_string(peer);
12893
+ let peer_key;
12894
+ if (_bind$2 === undefined) {
12895
+ return 1;
12896
+ } else {
12897
+ const _Some$2 = _bind$2;
12898
+ peer_key = _Some$2;
12899
+ }
12900
+ zxch3n$flock$flock$$export_updates_since(entries, peer_key, v, prune_tombstones_before, self);
12901
+ return 1;
12902
+ });
12903
+ const _tmp = _foreach_result;
12904
+ switch (_tmp.$tag) {
12905
+ case 0: {
12906
+ break;
12907
+ }
12908
+ case 1: {
12909
+ const _break = _tmp;
12910
+ _break._0;
12911
+ break;
12912
+ }
12913
+ case 2: {
12914
+ const _return = _tmp;
12915
+ return _return._0;
12916
+ }
12917
+ case 3: {
12918
+ $panic();
12919
+ break;
12920
+ }
12921
+ default: {
12922
+ $panic();
12923
+ }
12924
+ }
12925
+ } else {
12926
+ break _L$2;
12927
+ }
12928
+ }
12929
+ break _L;
12930
+ }
12931
+ const _bind = zxch3n$flock$sorted_map$$SortedMap$iter2$75$(self.kv);
12932
+ _bind((k, v) => {
12933
+ const key = zxch3n$flock$memcomparable$$decode_key_to_json(k);
12934
+ const exported_value = v.value;
12935
+ moonbitlang$core$builtin$$Map$set$36$(entries, moonbitlang$core$json$$Json$stringify$46$inner(moonbitlang$core$builtin$$ToJson$to_json$31$(key), false, 0, undefined), zxch3n$flock$flock$$RawValue$to_json(exported_value));
12936
+ return 1;
12937
+ });
12938
+ }
12939
+ } else {
12940
+ const _Some = target_peer_key;
12941
+ const _target = _Some;
12942
+ _L: {
12943
+ _L$2: {
12944
+ if (from === undefined) {
12945
+ break _L$2;
12946
+ } else {
12947
+ const _Some$2 = from;
12948
+ const _f = _Some$2;
12949
+ if (!(_f.size === 0)) {
12950
+ const peer_string = zxch3n$flock$flock$$peer_key_to_string(_target);
12951
+ const _p$3 = moonbitlang$core$builtin$$Map$get$72$(_f, peer_string);
12744
12952
  let v;
12745
12953
  if (_p$3 === undefined) {
12746
- v = zxch3n$flock$flock$$zero$46$record$47$3038;
12954
+ v = zxch3n$flock$flock$$zero$46$record$47$3040;
12747
12955
  } else {
12748
12956
  const _p$4 = _p$3;
12749
12957
  v = _p$4;
12750
12958
  }
12751
- if (moonbitlang$core$builtin$$Compare$op_ge$54$(v, clock)) {
12752
- return 1;
12753
- }
12754
- const _bind$2 = zxch3n$flock$flock$$peer_id_from_string(peer);
12755
- let peer_key;
12756
- if (_bind$2 === undefined) {
12757
- return 1;
12758
- } else {
12759
- const _Some$2 = _bind$2;
12760
- peer_key = _Some$2;
12761
- }
12762
- const _bind$3 = zxch3n$flock$sorted_map$$SortedMap$get$82$(self.updates, peer_key);
12763
- if (_bind$3.$tag === 1) {
12764
- const _Some$2 = _bind$3;
12765
- const _peer_updates = _Some$2._0;
12766
- const _bind$4 = moonbitlang$core$array$$Array$binary_search_by$41$(_peer_updates, (e) => {
12767
- const _p$4 = e.value.clock.hlc;
12768
- return _p$4.physical_time < v.physical_time ? -1 : _p$4.physical_time > v.physical_time ? 1 : $compare_int(_p$4.logical_counter, v.logical_counter);
12769
- });
12770
- let index;
12771
- if (_bind$4.$tag === 1) {
12772
- const _Ok = _bind$4;
12773
- const _index = _Ok._0;
12774
- index = _index + 1 | 0;
12775
- } else {
12776
- const _Err = _bind$4;
12777
- index = _Err._0;
12778
- }
12779
- let _tmp = index;
12780
- while (true) {
12781
- const i = _tmp;
12782
- if (i < _peer_updates.length) {
12783
- _L$3: {
12784
- const update = moonbitlang$core$array$$Array$at$41$(_peer_updates, i);
12785
- if (update.overridden) {
12786
- break _L$3;
12787
- }
12788
- if (prune_tombstones_before.$tag === 1) {
12789
- const _Some$3 = prune_tombstones_before;
12790
- const _before = _Some$3._0;
12791
- const _bind$5 = update.value.data;
12792
- if (_bind$5 === undefined) {
12793
- if (update.value.clock.hlc.physical_time < _before) {
12794
- break _L$3;
12795
- }
12796
- }
12797
- }
12798
- const key = zxch3n$flock$memcomparable$$decode_key_to_json(update.key);
12799
- const exported_value = update.value;
12800
- moonbitlang$core$builtin$$Map$set$36$(entries, moonbitlang$core$json$$Json$stringify$46$inner(moonbitlang$core$builtin$$ToJson$to_json$31$(key), false, 0, undefined), zxch3n$flock$flock$$RawValue$to_json(exported_value));
12801
- break _L$3;
12802
- }
12803
- _tmp = i + 1 | 0;
12804
- continue;
12959
+ _L$3: {
12960
+ _L$4: {
12961
+ const _bind = moonbitlang$core$builtin$$Map$get$72$(self.vv, peer_string);
12962
+ if (_bind === undefined) {
12963
+ break _L$4;
12805
12964
  } else {
12806
- break;
12965
+ const _Some$3 = _bind;
12966
+ const _clock = _Some$3;
12967
+ if (moonbitlang$core$builtin$$Compare$op_lt$54$(v, _clock)) {
12968
+ zxch3n$flock$flock$$export_updates_since(entries, _target, v, prune_tombstones_before, self);
12969
+ } else {
12970
+ break _L$4;
12971
+ }
12807
12972
  }
12973
+ break _L$3;
12808
12974
  }
12809
12975
  }
12810
- return 1;
12811
- });
12812
- const _tmp = _foreach_result;
12813
- switch (_tmp.$tag) {
12814
- case 0: {
12815
- break;
12816
- }
12817
- case 1: {
12818
- const _break = _tmp;
12819
- _break._0;
12820
- break;
12821
- }
12822
- case 2: {
12823
- const _return = _tmp;
12824
- return _return._0;
12825
- }
12826
- case 3: {
12827
- $panic();
12828
- break;
12829
- }
12830
- default: {
12831
- $panic();
12832
- }
12976
+ } else {
12977
+ break _L$2;
12833
12978
  }
12834
- } else {
12835
- break _L$2;
12836
12979
  }
12980
+ break _L;
12837
12981
  }
12838
- break _L;
12982
+ zxch3n$flock$flock$$export_current_state(entries, _target, prune_tombstones_before, self);
12839
12983
  }
12840
- const _bind = zxch3n$flock$sorted_map$$SortedMap$iter2$75$(self.kv);
12841
- _bind((k, v) => {
12842
- const key = zxch3n$flock$memcomparable$$decode_key_to_json(k);
12843
- const exported_value = v.value;
12844
- moonbitlang$core$builtin$$Map$set$36$(entries, moonbitlang$core$json$$Json$stringify$46$inner(moonbitlang$core$builtin$$ToJson$to_json$31$(key), false, 0, undefined), zxch3n$flock$flock$$RawValue$to_json(exported_value));
12845
- return 1;
12846
- });
12847
12984
  }
12848
12985
  moonbitlang$core$builtin$$Map$set$36$(ans, "entries", new $64$moonbitlang$47$core$47$builtin$46$Json$Object(entries));
12849
12986
  return new $64$moonbitlang$47$core$47$builtin$46$Json$Object(ans);
12850
12987
  }
12851
- function zxch3n$flock$flock$$Flock$export_json(self, from, prune_tombstones_before$46$opt) {
12988
+ function zxch3n$flock$flock$$Flock$export_json(self, from, prune_tombstones_before$46$opt, peer_id$46$opt) {
12852
12989
  let prune_tombstones_before;
12853
12990
  if (prune_tombstones_before$46$opt === undefined) {
12854
12991
  prune_tombstones_before = Option$None$8$;
@@ -12856,7 +12993,14 @@ function zxch3n$flock$flock$$Flock$export_json(self, from, prune_tombstones_befo
12856
12993
  const _Some = prune_tombstones_before$46$opt;
12857
12994
  prune_tombstones_before = _Some;
12858
12995
  }
12859
- return zxch3n$flock$flock$$Flock$export_json$46$inner(self, from, prune_tombstones_before);
12996
+ let peer_id;
12997
+ if (peer_id$46$opt.$tag === 1) {
12998
+ const _Some = peer_id$46$opt;
12999
+ peer_id = _Some._0;
13000
+ } else {
13001
+ peer_id = undefined;
13002
+ }
13003
+ return zxch3n$flock$flock$$Flock$export_json$46$inner(self, from, prune_tombstones_before, peer_id);
12860
13004
  }
12861
13005
  function zxch3n$flock$flock$$Flock$import_json$46$inner(self, json, hooks) {
12862
13006
  if (json.$tag === 6) {
@@ -13053,7 +13197,7 @@ function zxch3n$flock$flock$$Flock$import_json$46$inner(self, json, hooks) {
13053
13197
  const _Some = _bind$2;
13054
13198
  const _events = _Some._0;
13055
13199
  if (_events.length > 0) {
13056
- zxch3n$flock$flock$$SubscriberSet$notify$83$(self.subscribers, { by: zxch3n$flock$flock$$import_json$46$inner$46$constr$47$3487, events: _events });
13200
+ zxch3n$flock$flock$$SubscriberSet$notify$83$(self.subscribers, { by: zxch3n$flock$flock$$import_json$46$inner$46$constr$47$3535, events: _events });
13057
13201
  }
13058
13202
  }
13059
13203
  return new Result$Ok$37$({ accepted: accepted.val, skipped: skipped_entries });
@@ -13075,7 +13219,7 @@ function zxch3n$flock$flock$$Flock$merge(self, other) {
13075
13219
  let _try_err;
13076
13220
  _L: {
13077
13221
  _L$2: {
13078
- const _bind = zxch3n$flock$flock$$Flock$import_json(self, zxch3n$flock$flock$$Flock$export_json(other, zxch3n$flock$flock$$Flock$version(self), undefined), Option$None$40$);
13222
+ const _bind = zxch3n$flock$flock$$Flock$import_json(self, zxch3n$flock$flock$$Flock$export_json(other, zxch3n$flock$flock$$Flock$version(self), undefined, Option$None$40$), Option$None$41$);
13079
13223
  if (_bind.$tag === 1) {
13080
13224
  const _ok = _bind;
13081
13225
  _ok._0;
@@ -13092,7 +13236,7 @@ function zxch3n$flock$flock$$Flock$merge(self, other) {
13092
13236
  }
13093
13237
  function zxch3n$flock$flock$$Flock$from_json(json, peer_id) {
13094
13238
  const flock = zxch3n$flock$flock$$Flock$new(peer_id);
13095
- const _bind = zxch3n$flock$flock$$Flock$import_json(flock, json, Option$None$40$);
13239
+ const _bind = zxch3n$flock$flock$$Flock$import_json(flock, json, Option$None$41$);
13096
13240
  let report;
13097
13241
  if (_bind.$tag === 1) {
13098
13242
  const _ok = _bind;
@@ -13100,13 +13244,13 @@ function zxch3n$flock$flock$$Flock$from_json(json, peer_id) {
13100
13244
  } else {
13101
13245
  return _bind;
13102
13246
  }
13103
- return new Result$Ok$41$(flock);
13247
+ return new Result$Ok$42$(flock);
13104
13248
  }
13105
13249
  function zxch3n$flock$flock$$Flock$kv_to_json(self) {
13106
- return zxch3n$flock$flock$$Flock$export_json(self, undefined, undefined);
13250
+ return zxch3n$flock$flock$$Flock$export_json(self, undefined, undefined, Option$None$40$);
13107
13251
  }
13108
13252
  function zxch3n$flock$flock$$Flock$put_mvr$46$inner(self, key, value, now) {
13109
- const _foreach_result = { val: $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Continue$42$ };
13253
+ const _foreach_result = { val: $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Continue$43$ };
13110
13254
  const _bind = zxch3n$flock$flock$$Flock$scan(self, undefined, undefined, new Option$Some$29$(key));
13111
13255
  _bind((k, v) => {
13112
13256
  let _foreach_error;
@@ -13127,7 +13271,7 @@ function zxch3n$flock$flock$$Flock$put_mvr$46$inner(self, key, value, now) {
13127
13271
  }
13128
13272
  return 1;
13129
13273
  }
13130
- _foreach_result.val = new $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Error$42$(_foreach_error);
13274
+ _foreach_result.val = new $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Error$43$(_foreach_error);
13131
13275
  return 0;
13132
13276
  });
13133
13277
  const _tmp = _foreach_result.val;
@@ -13177,7 +13321,7 @@ function zxch3n$flock$flock$$Flock$put_mvr$46$inner(self, key, value, now) {
13177
13321
  }
13178
13322
  function zxch3n$flock$flock$$Flock$get_mvr(self, key) {
13179
13323
  const ans = [];
13180
- let _foreach_result = $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Continue$43$;
13324
+ let _foreach_result = $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Continue$44$;
13181
13325
  const _bind = zxch3n$flock$flock$$Flock$scan(self, undefined, undefined, new Option$Some$29$(key));
13182
13326
  _bind((k, v) => {
13183
13327
  let _tmp;
@@ -13449,14 +13593,14 @@ function zxch3n$flock$flock$$json_to_version_vector(json) {
13449
13593
  return moonbitlang$core$abort$$abort$4$("version vector must be an object");
13450
13594
  }
13451
13595
  }
13452
- function zxch3n$flock$flock$$Flock$export_json_ffi(self, from, prune_tombstones_before) {
13596
+ function zxch3n$flock$flock$$Flock$export_json_ffi(self, from, prune_tombstones_before, peer_id) {
13453
13597
  let _try_err;
13454
13598
  _L: {
13455
13599
  let export_from;
13456
13600
  if (zxch3n$flock$flock$$any_is_undefined(from) || zxch3n$flock$flock$$any_is_null(from)) {
13457
13601
  export_from = undefined;
13458
13602
  } else {
13459
- const _bind = Yoorkin$jmop$$Any$unwrap_value(from, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:74:32-74:51");
13603
+ const _bind = Yoorkin$jmop$$Any$unwrap_value(from, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:75:32-75:51");
13460
13604
  let _tmp;
13461
13605
  if (_bind.$tag === 1) {
13462
13606
  const _ok = _bind;
@@ -13474,7 +13618,7 @@ function zxch3n$flock$flock$$Flock$export_json_ffi(self, from, prune_tombstones_
13474
13618
  if (zxch3n$flock$flock$$any_is_undefined(prune_tombstones_before) || zxch3n$flock$flock$$any_is_null(prune_tombstones_before)) {
13475
13619
  prune_before = Option$None$8$;
13476
13620
  } else {
13477
- const _bind = Yoorkin$jmop$$Any$unwrap_value(prune_tombstones_before, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:81:12-81:50");
13621
+ const _bind = Yoorkin$jmop$$Any$unwrap_value(prune_tombstones_before, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:82:12-82:50");
13478
13622
  let _tmp;
13479
13623
  if (_bind.$tag === 1) {
13480
13624
  const _ok = _bind;
@@ -13485,7 +13629,7 @@ function zxch3n$flock$flock$$Flock$export_json_ffi(self, from, prune_tombstones_
13485
13629
  _try_err = _tmp$2;
13486
13630
  break _L;
13487
13631
  }
13488
- const _bind$2 = Yoorkin$jmop$$Value$to_number(_tmp, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:81:12-81:62");
13632
+ const _bind$2 = Yoorkin$jmop$$Value$to_number(_tmp, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:82:12-82:62");
13489
13633
  let _tmp$2;
13490
13634
  if (_bind$2.$tag === 1) {
13491
13635
  const _ok = _bind$2;
@@ -13498,13 +13642,39 @@ function zxch3n$flock$flock$$Flock$export_json_ffi(self, from, prune_tombstones_
13498
13642
  }
13499
13643
  prune_before = new Option$Some$8$(_tmp$2);
13500
13644
  }
13645
+ let target_peer_id;
13646
+ if (zxch3n$flock$flock$$any_is_undefined(peer_id) || zxch3n$flock$flock$$any_is_null(peer_id)) {
13647
+ target_peer_id = undefined;
13648
+ } else {
13649
+ const _bind = Yoorkin$jmop$$Any$unwrap_value(peer_id, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:87:12-87:34");
13650
+ let _tmp;
13651
+ if (_bind.$tag === 1) {
13652
+ const _ok = _bind;
13653
+ _tmp = _ok._0;
13654
+ } else {
13655
+ const _err = _bind;
13656
+ const _tmp$2 = _err._0;
13657
+ _try_err = _tmp$2;
13658
+ break _L;
13659
+ }
13660
+ const _bind$2 = Yoorkin$jmop$$Value$to_string(_tmp, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:87:12-87:46");
13661
+ if (_bind$2.$tag === 1) {
13662
+ const _ok = _bind$2;
13663
+ target_peer_id = _ok._0;
13664
+ } else {
13665
+ const _err = _bind$2;
13666
+ const _tmp$2 = _err._0;
13667
+ _try_err = _tmp$2;
13668
+ break _L;
13669
+ }
13670
+ }
13501
13671
  let exported;
13502
13672
  if (export_from === undefined) {
13503
- exported = zxch3n$flock$flock$$Flock$export_json$46$inner(self, undefined, prune_before);
13673
+ exported = zxch3n$flock$flock$$Flock$export_json$46$inner(self, undefined, prune_before, target_peer_id);
13504
13674
  } else {
13505
13675
  const _Some = export_from;
13506
13676
  const _vv = _Some;
13507
- exported = zxch3n$flock$flock$$Flock$export_json$46$inner(self, _vv, prune_before);
13677
+ exported = zxch3n$flock$flock$$Flock$export_json$46$inner(self, _vv, prune_before, target_peer_id);
13508
13678
  }
13509
13679
  const _p = zxch3n$flock$flock$$json_to_value(exported);
13510
13680
  return _p;
@@ -13515,7 +13685,7 @@ function zxch3n$flock$flock$$Flock$import_json_ffi(self, json) {
13515
13685
  let _try_err;
13516
13686
  _L: {
13517
13687
  if (!(zxch3n$flock$flock$$any_is_undefined(json) || zxch3n$flock$flock$$any_is_null(json))) {
13518
- const _bind = Yoorkin$jmop$$Any$unwrap_value(json, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:98:32-98:51");
13688
+ const _bind = Yoorkin$jmop$$Any$unwrap_value(json, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:112:32-112:51");
13519
13689
  let _tmp;
13520
13690
  if (_bind.$tag === 1) {
13521
13691
  const _ok = _bind;
@@ -13531,7 +13701,7 @@ function zxch3n$flock$flock$$Flock$import_json_ffi(self, json) {
13531
13701
  let _try_err$2;
13532
13702
  _L$2: {
13533
13703
  _L$3: {
13534
- const _bind$2 = zxch3n$flock$flock$$Flock$import_json(self, parsed, Option$None$40$);
13704
+ const _bind$2 = zxch3n$flock$flock$$Flock$import_json(self, parsed, Option$None$41$);
13535
13705
  if (_bind$2.$tag === 1) {
13536
13706
  const _ok = _bind$2;
13537
13707
  report = _ok._0;
@@ -13651,7 +13821,7 @@ function zxch3n$flock$flock$$Flock$check_invariants_ffi(self) {
13651
13821
  function zxch3n$flock$flock$$Flock$put_json_ffi(self, key, value, now) {
13652
13822
  let _try_err;
13653
13823
  _L: {
13654
- const _bind = Yoorkin$jmop$$Any$unwrap_value(key, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:212:21-212:39");
13824
+ const _bind = Yoorkin$jmop$$Any$unwrap_value(key, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:226:21-226:39");
13655
13825
  let key_value;
13656
13826
  if (_bind.$tag === 1) {
13657
13827
  const _ok = _bind;
@@ -13662,7 +13832,7 @@ function zxch3n$flock$flock$$Flock$put_json_ffi(self, key, value, now) {
13662
13832
  _try_err = _tmp;
13663
13833
  break _L;
13664
13834
  }
13665
- const _bind$2 = Yoorkin$jmop$$Value$to_array$78$(key_value, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:213:40-213:60");
13835
+ const _bind$2 = Yoorkin$jmop$$Value$to_array$78$(key_value, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:227:40-227:60");
13666
13836
  let key_arr;
13667
13837
  if (_bind$2.$tag === 1) {
13668
13838
  const _ok = _bind$2;
@@ -13710,7 +13880,7 @@ function zxch3n$flock$flock$$Flock$put_json_ffi(self, key, value, now) {
13710
13880
  if (zxch3n$flock$flock$$any_is_undefined(now) || zxch3n$flock$flock$$any_is_null(now)) {
13711
13881
  now_value = Option$None$8$;
13712
13882
  } else {
13713
- const _bind$3 = Yoorkin$jmop$$Any$unwrap_value(now, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:219:12-219:30");
13883
+ const _bind$3 = Yoorkin$jmop$$Any$unwrap_value(now, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:233:12-233:30");
13714
13884
  let _tmp$2;
13715
13885
  if (_bind$3.$tag === 1) {
13716
13886
  const _ok = _bind$3;
@@ -13721,7 +13891,7 @@ function zxch3n$flock$flock$$Flock$put_json_ffi(self, key, value, now) {
13721
13891
  _try_err = _tmp$3;
13722
13892
  break _L;
13723
13893
  }
13724
- const _bind$4 = Yoorkin$jmop$$Value$to_number(_tmp$2, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:219:12-219:42");
13894
+ const _bind$4 = Yoorkin$jmop$$Value$to_number(_tmp$2, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:233:12-233:42");
13725
13895
  let _tmp$3;
13726
13896
  if (_bind$4.$tag === 1) {
13727
13897
  const _ok = _bind$4;
@@ -13751,7 +13921,7 @@ function zxch3n$flock$flock$$Flock$put_json_ffi(self, key, value, now) {
13751
13921
  function zxch3n$flock$flock$$Flock$put_with_meta_ffi(self, key, value, metadata, now) {
13752
13922
  let _try_err;
13753
13923
  _L: {
13754
- const _bind = Yoorkin$jmop$$Any$unwrap_value(key, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:234:21-234:39");
13924
+ const _bind = Yoorkin$jmop$$Any$unwrap_value(key, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:248:21-248:39");
13755
13925
  let key_value;
13756
13926
  if (_bind.$tag === 1) {
13757
13927
  const _ok = _bind;
@@ -13762,7 +13932,7 @@ function zxch3n$flock$flock$$Flock$put_with_meta_ffi(self, key, value, metadata,
13762
13932
  _try_err = _tmp;
13763
13933
  break _L;
13764
13934
  }
13765
- const _bind$2 = Yoorkin$jmop$$Value$to_array$78$(key_value, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:235:40-235:60");
13935
+ const _bind$2 = Yoorkin$jmop$$Value$to_array$78$(key_value, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:249:40-249:60");
13766
13936
  let key_arr;
13767
13937
  if (_bind$2.$tag === 1) {
13768
13938
  const _ok = _bind$2;
@@ -13810,7 +13980,7 @@ function zxch3n$flock$flock$$Flock$put_with_meta_ffi(self, key, value, metadata,
13810
13980
  if (zxch3n$flock$flock$$any_is_undefined(metadata) || zxch3n$flock$flock$$any_is_null(metadata)) {
13811
13981
  metadata_value = undefined;
13812
13982
  } else {
13813
- const _bind$3 = Yoorkin$jmop$$Any$unwrap_value(metadata, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:241:41-241:64");
13983
+ const _bind$3 = Yoorkin$jmop$$Any$unwrap_value(metadata, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:255:41-255:64");
13814
13984
  let _tmp$2;
13815
13985
  if (_bind$3.$tag === 1) {
13816
13986
  const _ok = _bind$3;
@@ -13828,7 +13998,7 @@ function zxch3n$flock$flock$$Flock$put_with_meta_ffi(self, key, value, metadata,
13828
13998
  if (zxch3n$flock$flock$$any_is_undefined(now) || zxch3n$flock$flock$$any_is_null(now)) {
13829
13999
  now_value = Option$None$8$;
13830
14000
  } else {
13831
- const _bind$3 = Yoorkin$jmop$$Any$unwrap_value(now, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:247:12-247:30");
14001
+ const _bind$3 = Yoorkin$jmop$$Any$unwrap_value(now, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:261:12-261:30");
13832
14002
  let _tmp$2;
13833
14003
  if (_bind$3.$tag === 1) {
13834
14004
  const _ok = _bind$3;
@@ -13839,7 +14009,7 @@ function zxch3n$flock$flock$$Flock$put_with_meta_ffi(self, key, value, metadata,
13839
14009
  _try_err = _tmp$3;
13840
14010
  break _L;
13841
14011
  }
13842
- const _bind$4 = Yoorkin$jmop$$Value$to_number(_tmp$2, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:247:12-247:42");
14012
+ const _bind$4 = Yoorkin$jmop$$Value$to_number(_tmp$2, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:261:12-261:42");
13843
14013
  let _tmp$3;
13844
14014
  if (_bind$4.$tag === 1) {
13845
14015
  const _ok = _bind$4;
@@ -13885,7 +14055,7 @@ function zxch3n$flock$flock$$Flock$put_with_meta_ffi(self, key, value, metadata,
13885
14055
  function zxch3n$flock$flock$$Flock$delete_ffi(self, key, now) {
13886
14056
  let _try_err;
13887
14057
  _L: {
13888
- const _bind = Yoorkin$jmop$$Any$unwrap_value(key, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:269:21-269:39");
14058
+ const _bind = Yoorkin$jmop$$Any$unwrap_value(key, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:283:21-283:39");
13889
14059
  let key_value;
13890
14060
  if (_bind.$tag === 1) {
13891
14061
  const _ok = _bind;
@@ -13896,7 +14066,7 @@ function zxch3n$flock$flock$$Flock$delete_ffi(self, key, now) {
13896
14066
  _try_err = _tmp;
13897
14067
  break _L;
13898
14068
  }
13899
- const _bind$2 = Yoorkin$jmop$$Value$to_array$78$(key_value, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:270:40-270:60");
14069
+ const _bind$2 = Yoorkin$jmop$$Value$to_array$78$(key_value, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:284:40-284:60");
13900
14070
  let key_arr;
13901
14071
  if (_bind$2.$tag === 1) {
13902
14072
  const _ok = _bind$2;
@@ -13926,7 +14096,7 @@ function zxch3n$flock$flock$$Flock$delete_ffi(self, key, now) {
13926
14096
  if (zxch3n$flock$flock$$any_is_undefined(now) || zxch3n$flock$flock$$any_is_null(now)) {
13927
14097
  now_value = Option$None$8$;
13928
14098
  } else {
13929
- const _bind$3 = Yoorkin$jmop$$Any$unwrap_value(now, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:275:12-275:30");
14099
+ const _bind$3 = Yoorkin$jmop$$Any$unwrap_value(now, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:289:12-289:30");
13930
14100
  let _tmp$2;
13931
14101
  if (_bind$3.$tag === 1) {
13932
14102
  const _ok = _bind$3;
@@ -13937,7 +14107,7 @@ function zxch3n$flock$flock$$Flock$delete_ffi(self, key, now) {
13937
14107
  _try_err = _tmp$3;
13938
14108
  break _L;
13939
14109
  }
13940
- const _bind$4 = Yoorkin$jmop$$Value$to_number(_tmp$2, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:275:12-275:42");
14110
+ const _bind$4 = Yoorkin$jmop$$Value$to_number(_tmp$2, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:289:12-289:42");
13941
14111
  let _tmp$3;
13942
14112
  if (_bind$4.$tag === 1) {
13943
14113
  const _ok = _bind$4;
@@ -14002,7 +14172,7 @@ function zxch3n$flock$flock$$FlockDigest$xor(self, digest) {
14002
14172
  }
14003
14173
  function zxch3n$flock$flock$$Flock$recompute_full_digest(self) {
14004
14174
  const sum = { val: zxch3n$flock$flock$$FlockDigest$zero() };
14005
- let _foreach_result = $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Continue$44$;
14175
+ let _foreach_result = $64$moonbitlang$47$core$47$builtin$46$ForeachResult$Continue$45$;
14006
14176
  const _bind = zxch3n$flock$sorted_map$$SortedMap$iter2$75$(self.kv);
14007
14177
  _bind((__, entry) => {
14008
14178
  const _bind$2 = entry.value.data;
@@ -14103,7 +14273,7 @@ function zxch3n$flock$flock$$Flock$digest_hex_ffi(self) {
14103
14273
  function zxch3n$flock$flock$$Flock$put_mvr_ffi(self, key, value, now) {
14104
14274
  let _try_err;
14105
14275
  _L: {
14106
- const _bind = Yoorkin$jmop$$Any$unwrap_value(key, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:309:21-309:39");
14276
+ const _bind = Yoorkin$jmop$$Any$unwrap_value(key, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:323:21-323:39");
14107
14277
  let key_value;
14108
14278
  if (_bind.$tag === 1) {
14109
14279
  const _ok = _bind;
@@ -14114,7 +14284,7 @@ function zxch3n$flock$flock$$Flock$put_mvr_ffi(self, key, value, now) {
14114
14284
  _try_err = _tmp;
14115
14285
  break _L;
14116
14286
  }
14117
- const _bind$2 = Yoorkin$jmop$$Value$to_array$78$(key_value, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:310:40-310:60");
14287
+ const _bind$2 = Yoorkin$jmop$$Value$to_array$78$(key_value, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:324:40-324:60");
14118
14288
  let key_arr;
14119
14289
  if (_bind$2.$tag === 1) {
14120
14290
  const _ok = _bind$2;
@@ -14162,7 +14332,7 @@ function zxch3n$flock$flock$$Flock$put_mvr_ffi(self, key, value, now) {
14162
14332
  if (zxch3n$flock$flock$$any_is_undefined(now) || zxch3n$flock$flock$$any_is_null(now)) {
14163
14333
  now_value = Option$None$8$;
14164
14334
  } else {
14165
- const _bind$3 = Yoorkin$jmop$$Any$unwrap_value(now, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:316:12-316:30");
14335
+ const _bind$3 = Yoorkin$jmop$$Any$unwrap_value(now, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:330:12-330:30");
14166
14336
  let _tmp$2;
14167
14337
  if (_bind$3.$tag === 1) {
14168
14338
  const _ok = _bind$3;
@@ -14173,7 +14343,7 @@ function zxch3n$flock$flock$$Flock$put_mvr_ffi(self, key, value, now) {
14173
14343
  _try_err = _tmp$3;
14174
14344
  break _L;
14175
14345
  }
14176
- const _bind$4 = Yoorkin$jmop$$Value$to_number(_tmp$2, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:316:12-316:42");
14346
+ const _bind$4 = Yoorkin$jmop$$Value$to_number(_tmp$2, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:330:12-330:42");
14177
14347
  let _tmp$3;
14178
14348
  if (_bind$4.$tag === 1) {
14179
14349
  const _ok = _bind$4;
@@ -14203,7 +14373,7 @@ function zxch3n$flock$flock$$Flock$put_mvr_ffi(self, key, value, now) {
14203
14373
  function zxch3n$flock$flock$$Flock$get_mvr_ffi(self, key) {
14204
14374
  let _try_err;
14205
14375
  _L: {
14206
- const _bind = Yoorkin$jmop$$Any$unwrap_value(key, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:325:21-325:39");
14376
+ const _bind = Yoorkin$jmop$$Any$unwrap_value(key, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:339:21-339:39");
14207
14377
  let key_value;
14208
14378
  if (_bind.$tag === 1) {
14209
14379
  const _ok = _bind;
@@ -14214,7 +14384,7 @@ function zxch3n$flock$flock$$Flock$get_mvr_ffi(self, key) {
14214
14384
  _try_err = _tmp;
14215
14385
  break _L;
14216
14386
  }
14217
- const _bind$2 = Yoorkin$jmop$$Value$to_array$78$(key_value, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:326:40-326:60");
14387
+ const _bind$2 = Yoorkin$jmop$$Value$to_array$78$(key_value, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:340:40-340:60");
14218
14388
  let key_arr;
14219
14389
  if (_bind$2.$tag === 1) {
14220
14390
  const _ok = _bind$2;
@@ -14249,7 +14419,7 @@ function zxch3n$flock$flock$$Flock$get_mvr_ffi(self, key) {
14249
14419
  function zxch3n$flock$flock$$from_json_ffi(json, peer_id) {
14250
14420
  let _try_err;
14251
14421
  _L: {
14252
- const _bind = Yoorkin$jmop$$Any$unwrap_value(json, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:336:22-336:41");
14422
+ const _bind = Yoorkin$jmop$$Any$unwrap_value(json, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:350:22-350:41");
14253
14423
  let json_value;
14254
14424
  if (_bind.$tag === 1) {
14255
14425
  const _ok = _bind;
@@ -14261,7 +14431,7 @@ function zxch3n$flock$flock$$from_json_ffi(json, peer_id) {
14261
14431
  break _L;
14262
14432
  }
14263
14433
  const parsed = zxch3n$flock$flock$$value_to_json(json_value);
14264
- const _bind$2 = Yoorkin$jmop$$Any$unwrap_value(peer_id, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:338:22-338:44");
14434
+ const _bind$2 = Yoorkin$jmop$$Any$unwrap_value(peer_id, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:352:22-352:44");
14265
14435
  let peer_value;
14266
14436
  if (_bind$2.$tag === 1) {
14267
14437
  const _ok = _bind$2;
@@ -14272,7 +14442,7 @@ function zxch3n$flock$flock$$from_json_ffi(json, peer_id) {
14272
14442
  _try_err = _tmp;
14273
14443
  break _L;
14274
14444
  }
14275
- const _bind$3 = Yoorkin$jmop$$Value$to_string(peer_value, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:339:16-339:38");
14445
+ const _bind$3 = Yoorkin$jmop$$Value$to_string(peer_value, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:353:16-353:38");
14276
14446
  let peer;
14277
14447
  if (_bind$3.$tag === 1) {
14278
14448
  const _ok = _bind$3;
@@ -14303,7 +14473,7 @@ function zxch3n$flock$flock$$Flock$scan_ffi(self, start, end, prefix) {
14303
14473
  if (zxch3n$flock$flock$$any_is_undefined(start) || zxch3n$flock$flock$$any_is_null(start)) {
14304
14474
  start_bound = $64$zxch3n$47$flock$47$sorted_map$46$Bound$Unbounded$29$;
14305
14475
  } else {
14306
- const _bind = Yoorkin$jmop$$Any$unwrap_value(start, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:355:25-355:45");
14476
+ const _bind = Yoorkin$jmop$$Any$unwrap_value(start, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:369:25-369:45");
14307
14477
  let start_value;
14308
14478
  if (_bind.$tag === 1) {
14309
14479
  const _ok = _bind;
@@ -14320,7 +14490,7 @@ function zxch3n$flock$flock$$Flock$scan_ffi(self, start, end, prefix) {
14320
14490
  if (zxch3n$flock$flock$$any_is_undefined(end) || zxch3n$flock$flock$$any_is_null(end)) {
14321
14491
  end_bound = $64$zxch3n$47$flock$47$sorted_map$46$Bound$Unbounded$29$;
14322
14492
  } else {
14323
- const _bind = Yoorkin$jmop$$Any$unwrap_value(end, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:361:23-361:41");
14493
+ const _bind = Yoorkin$jmop$$Any$unwrap_value(end, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:375:23-375:41");
14324
14494
  let end_value;
14325
14495
  if (_bind.$tag === 1) {
14326
14496
  const _ok = _bind;
@@ -14337,7 +14507,7 @@ function zxch3n$flock$flock$$Flock$scan_ffi(self, start, end, prefix) {
14337
14507
  if (zxch3n$flock$flock$$any_is_undefined(prefix) || zxch3n$flock$flock$$any_is_null(prefix)) {
14338
14508
  prefix_filter = Option$None$29$;
14339
14509
  } else {
14340
- const _bind = Yoorkin$jmop$$Any$unwrap_value(prefix, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:367:26-367:47");
14510
+ const _bind = Yoorkin$jmop$$Any$unwrap_value(prefix, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:381:26-381:47");
14341
14511
  let prefix_value;
14342
14512
  if (_bind.$tag === 1) {
14343
14513
  const _ok = _bind;
@@ -14348,7 +14518,7 @@ function zxch3n$flock$flock$$Flock$scan_ffi(self, start, end, prefix) {
14348
14518
  _try_err = _tmp;
14349
14519
  break _L;
14350
14520
  }
14351
- const _bind$2 = Yoorkin$jmop$$Value$to_array$78$(prefix_value, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:368:45-368:68");
14521
+ const _bind$2 = Yoorkin$jmop$$Value$to_array$78$(prefix_value, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:382:45-382:68");
14352
14522
  let prefix_arr;
14353
14523
  if (_bind$2.$tag === 1) {
14354
14524
  const _ok = _bind$2;
@@ -14444,7 +14614,7 @@ function zxch3n$flock$flock$$raw_value_payload_to_json(value) {
14444
14614
  function zxch3n$flock$flock$$Flock$subscribe_ffi(self, listener) {
14445
14615
  let _try_err;
14446
14616
  _L: {
14447
- const _bind = Yoorkin$jmop$$Any$unwrap_value(listener, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:417:26-417:49");
14617
+ const _bind = Yoorkin$jmop$$Any$unwrap_value(listener, "/home/runner/work/flock/flock/moon/flock/ffi-js.mbt:431:26-431:49");
14448
14618
  let listener_value;
14449
14619
  if (_bind.$tag === 1) {
14450
14620
  const _ok = _bind;