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.
- package/index.js +7 -4
- package/package.json +1 -1
- 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
|
|
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
|
|
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
|
|
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
|
|
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
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)
|