braid-text 0.2.2 → 0.2.4

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.
Files changed (3) hide show
  1. package/index.js +18 -8
  2. package/package.json +1 -1
  3. package/test.js +2 -0
package/index.js CHANGED
@@ -487,6 +487,7 @@ braid_text.put = async (key, options) => {
487
487
  }
488
488
 
489
489
  for (let b of bytes) resource.doc.mergeBytes(b)
490
+ resource.val = resource.doc.get()
490
491
 
491
492
  resource.need_defrag = true
492
493
 
@@ -589,8 +590,6 @@ braid_text.put = async (key, options) => {
589
590
  }
590
591
 
591
592
  await resource.db_delta(resource.doc.getPatchSince(v_before))
592
-
593
- resource.val = resource.doc.get()
594
593
  }
595
594
 
596
595
  braid_text.list = async () => {
@@ -866,17 +865,28 @@ function dt_get(doc, version, agent = null) {
866
865
  ) {
867
866
  for (; i < I; i++) {
868
867
  let version = versions[i].join("-")
869
- if (!after_versions[version]) new_doc.mergeBytes(
868
+ if (after_versions[version]) continue
869
+ let og_i = i
870
+ let content = []
871
+ if (op_run.content?.[i - base_i]) content.push(op_run.content[i - base_i])
872
+ if (!!op_run.content === op_run.fwd)
873
+ while (i + 1 < I && !after_versions[versions[i + 1].join("-")]) {
874
+ i++
875
+ if (op_run.content?.[i - base_i]) content.push(op_run.content[i - base_i])
876
+ }
877
+ content = content.length ? content.join("") : null
878
+
879
+ new_doc.mergeBytes(
870
880
  dt_create_bytes(
871
881
  version,
872
- parentss[i].map((x) => x.join("-")),
882
+ parentss[og_i].map((x) => x.join("-")),
873
883
  op_run.fwd ?
874
884
  (op_run.content ?
875
- op_run.start + (i - base_i) :
885
+ op_run.start + (og_i - base_i) :
876
886
  op_run.start) :
877
887
  op_run.end - 1 - (i - base_i),
878
- op_run.content?.[i - base_i] != null ? 0 : 1,
879
- op_run.content?.[i - base_i]
888
+ op_run.content ? 0 : i - og_i + 1,
889
+ content
880
890
  )
881
891
  )
882
892
  }
@@ -1569,7 +1579,7 @@ function decode_filename(encodedFilename) {
1569
1579
  function validate_version_array(x) {
1570
1580
  if (!Array.isArray(x)) throw new Error(`invalid version array: not an array`)
1571
1581
  x.sort()
1572
- for (xx of x) validate_actor_seq(xx)
1582
+ for (var xx of x) validate_actor_seq(xx)
1573
1583
  }
1574
1584
 
1575
1585
  function validate_actor_seq(x) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "braid-text",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "Library for collaborative text over http using braid.",
5
5
  "author": "Braid Working Group",
6
6
  "repository": "braid-org/braidjs",
package/test.js CHANGED
@@ -16,6 +16,7 @@ async function main() {
16
16
  let best_seed = NaN
17
17
  let best_n = Infinity
18
18
  let base = Math.floor(Math.random() * 10000000)
19
+ let st = Date.now()
19
20
 
20
21
  let og_log = console.log
21
22
  console.log = () => {}
@@ -113,6 +114,7 @@ async function main() {
113
114
  }
114
115
  }
115
116
  og_log(`best_seed = ${best_seed}, best_n = ${best_n}`)
117
+ og_log(`time = ${Date.now() - st}`)
116
118
  }
117
119
 
118
120
  function make_random_edit(doc) {