braid-text 0.2.18 → 0.2.19

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 +7 -4
  2. package/package.json +1 -1
  3. package/test/test.js +24 -0
package/index.js CHANGED
@@ -483,13 +483,16 @@ braid_text.put = async (key, options) => {
483
483
  let version = resource.doc.getRemoteVersion().map((x) => x.join("-")).sort()
484
484
 
485
485
  for (let client of resource.simpleton_clients) {
486
- if (client.peer == peer) {
486
+ if (peer && client.peer === peer) {
487
487
  client.my_last_seen_version = [og_v]
488
488
  }
489
489
 
490
490
  function set_timeout(time_override) {
491
491
  if (client.my_timeout) clearTimeout(client.my_timeout)
492
492
  client.my_timeout = setTimeout(() => {
493
+ // if the doc has been freed, exit early
494
+ if (resource.doc.__wbg_ptr === 0) return
495
+
493
496
  let version = resource.doc.getRemoteVersion().map((x) => x.join("-")).sort()
494
497
  let x = { version }
495
498
  x.parents = client.my_last_seen_version
@@ -507,7 +510,7 @@ braid_text.put = async (key, options) => {
507
510
  }
508
511
 
509
512
  if (client.my_timeout) {
510
- if (client.peer == peer) {
513
+ if (peer && client.peer === peer) {
511
514
  if (!v_eq(client.my_last_sent_version, og_parents)) {
512
515
  // note: we don't add to client.my_unused_version_count,
513
516
  // because we're already in a timeout;
@@ -523,7 +526,7 @@ braid_text.put = async (key, options) => {
523
526
  }
524
527
 
525
528
  let x = { version }
526
- if (client.peer == peer) {
529
+ if (peer && client.peer === peer) {
527
530
  if (!v_eq(client.my_last_sent_version, og_parents)) {
528
531
  client.my_unused_version_count = (client.my_unused_version_count ?? 0) + 1
529
532
  set_timeout()
@@ -571,7 +574,7 @@ braid_text.put = async (key, options) => {
571
574
  patches: og_patches,
572
575
  }
573
576
  for (let client of resource.clients) {
574
- if (client.peer != peer) client.subscribe(x)
577
+ if (!peer || client.peer !== peer) client.subscribe(x)
575
578
  }
576
579
 
577
580
  await resource.db_delta(resource.doc.getPatchSince(v_before))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "braid-text",
3
- "version": "0.2.18",
3
+ "version": "0.2.19",
4
4
  "description": "Library for collaborative text over http using braid.",
5
5
  "author": "Braid Working Group",
6
6
  "repository": "braid-org/braid-text",
package/test/test.js CHANGED
@@ -127,6 +127,30 @@ async function main() {
127
127
  console.log(`doc = `, await braid_text.get('doc', {version: middle_v}))
128
128
  if (await braid_text.get('middle_doc') != (await braid_text.get('doc', {version: middle_v})).body) throw new Error('bad')
129
129
 
130
+ // test simplton
131
+ var first_time = true
132
+ await new Promise(async (done, fail) => {
133
+ await braid_text.get('middle_doc', {peer: 'sim', subscribe: async update => {
134
+ if (first_time) {
135
+ first_time = false
136
+ if (update.body !== await braid_text.get('middle_doc')) fail(new Error('test 2'))
137
+
138
+ var x = await braid_text.get('middle_doc', {})
139
+ await braid_text.put('middle_doc', {peer: 'sim', version: ['sim-0'], parents: x.version, patches: [{content: 'A', range: '[0:0]'}]})
140
+ await braid_text.put('middle_doc', {peer: 'other', merge_type: 'dt', version: ['other-0'], parents: [], patches: [{content: 'B', range: '[0:0]'}]})
141
+ await braid_text.put('middle_doc', {peer: 'sim', version: ['sim-1'], parents: ['sim-0'], patches: [{content: 'b', range: '[0:0]'}]})
142
+ await braid_text.put('middle_doc', {peer: 'sim', version: ['sim-2'], parents: ['sim-1'], patches: [{content: 'c', range: '[0:0]'}]})
143
+ await braid_text.revert('middle_doc', ['sim-0'])
144
+ await braid_text.revert('middle_doc', ['other-0'])
145
+
146
+ done()
147
+ }
148
+ }})
149
+ })
150
+
151
+ // test handler on dt
152
+ braid_text.get('middle_doc', {merge_type: 'dt', subscribe: async update => {}})
153
+
130
154
  // try getting updates from middle_doc to doc
131
155
  let o = {merge_type: 'dt', parents: middle_v, subscribe: update => {
132
156
  braid_text.put('middle_doc', update)