braid-text 0.2.67 → 0.2.69

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 +507 -292
  2. package/package.json +2 -2
  3. package/test/test.html +492 -149
package/test/test.html CHANGED
@@ -96,105 +96,443 @@ async function runTest(testName, testFunction, expectedResult) {
96
96
  }
97
97
  }
98
98
 
99
- // runTest(
100
- // "test braid_text.get(url), with no options",
101
- // async () => {
102
- // var key = 'test-' + Math.random().toString(36).slice(2)
103
- // let r = await braid_fetch(`/${key}`, {
104
- // method: 'PUT',
105
- // body: 'hi'
106
- // })
107
- // if (!r.ok) return 'got: ' + r.status
108
-
109
- // var r1 = await braid_fetch(`/eval`, {
110
- // method: 'PUT',
111
- // body: `void (async () => {
112
- // res.end(await braid_text.get(new URL('http://localhost:8889/${key}')))
113
- // })()`
114
- // })
115
-
116
- // return 'got: ' + (await r1.text())
117
- // },
118
- // 'got: hi'
119
- // )
120
-
121
- // runTest(
122
- // "test braid_text.get(url), with headers",
123
- // async () => {
124
- // var key = 'test-' + Math.random().toString(36).slice(2)
125
- // let r = await braid_fetch(`/${key}`, {
126
- // method: 'PUT',
127
- // version: ['xyz-1'],
128
- // body: 'hi'
129
- // })
130
- // if (!r.ok) return 'got: ' + r.status
131
-
132
- // var r1 = await braid_fetch(`/eval`, {
133
- // method: 'PUT',
134
- // body: `void (async () => {
135
- // res.end(await braid_text.get(new URL('http://localhost:8889/${key}'), {
136
- // headers: {
137
- // version: '"xyz-0"'
138
- // }
139
- // }))
140
- // })()`
141
- // })
142
-
143
- // return 'got: ' + (await r1.text())
144
- // },
145
- // 'got: h'
146
- // )
147
-
148
- // runTest(
149
- // "test braid_text.get(url), with parents",
150
- // async () => {
151
- // var key = 'test-' + Math.random().toString(36).slice(2)
152
- // let r = await braid_fetch(`/${key}`, {
153
- // method: 'PUT',
154
- // version: ['xyz-1'],
155
- // body: 'hi'
156
- // })
157
- // if (!r.ok) return 'got: ' + r.status
158
-
159
- // var r1 = await braid_fetch(`/eval`, {
160
- // method: 'PUT',
161
- // body: `void (async () => {
162
- // res.end(await braid_text.get(new URL('http://localhost:8889/${key}'), {
163
- // parents: ['xyz-0']
164
- // }))
165
- // })()`
166
- // })
167
-
168
- // return 'got: ' + (await r1.text())
169
- // },
170
- // 'got: h'
171
- // )
172
-
173
- // runTest(
174
- // "test braid_text.get(url), with version and peer",
175
- // async () => {
176
- // var key = 'test-' + Math.random().toString(36).slice(2)
177
- // let r = await braid_fetch(`/${key}`, {
178
- // method: 'PUT',
179
- // version: ['xyz-1'],
180
- // body: 'hi'
181
- // })
182
- // if (!r.ok) return 'got: ' + r.status
183
-
184
- // var r1 = await braid_fetch(`/eval`, {
185
- // method: 'PUT',
186
- // body: `void (async () => {
187
- // res.end(await braid_text.get(new URL('http://localhost:8889/${key}'), {
188
- // version: ['xyz-0'],
189
- // peer: 'xyz'
190
- // }))
191
- // })()`
192
- // })
193
-
194
- // return 'got: ' + (await r1.text())
195
- // },
196
- // 'got: h'
197
- // )
99
+ runTest(
100
+ "test subscribe update with body_text",
101
+ async () => {
102
+ var key = 'test' + Math.random().toString(36).slice(2)
103
+
104
+ var r = await braid_fetch(`/${key}`, {
105
+ method: 'PUT',
106
+ body: 'hi'
107
+ })
108
+ if (!r.ok) return 'got: ' + r.status
109
+
110
+ var r1p = braid_fetch(`/eval`, {
111
+ method: 'PUT',
112
+ body: `void (async () => {
113
+ var x = await new Promise(done => {
114
+ braid_text.get(new URL('http://localhost:8889/${key}'), {
115
+ subscribe: update => {
116
+ if (update.body_text === 'yo') done(update.body_text)
117
+ }
118
+ })
119
+ })
120
+ res.end(x)
121
+ })()`
122
+ })
123
+
124
+ var r2 = await braid_fetch(`/${key}`, {
125
+ method: 'PUT',
126
+ body: 'yo'
127
+ })
128
+
129
+ var r1 = await r1p
130
+ if (!r1.ok) return 'got: ' + r.status
131
+
132
+ return await r1.text()
133
+ },
134
+ 'yo'
135
+ )
136
+
137
+ runTest(
138
+ "test braid_text.sync, key to url, where url breaks",
139
+ async () => {
140
+ var key = 'test' + Math.random().toString(36).slice(2)
141
+
142
+ var r = await braid_fetch(`/eval`, {
143
+ method: 'PUT',
144
+ body: `void (async () => {
145
+ var count = 0
146
+ var ops
147
+ braid_text.sync('/${key}', new URL('http://localhost:8889/have_error'), ops = {
148
+ on_connect: () => {
149
+ count++
150
+ if (count === 2) {
151
+ res.end('it reconnected!')
152
+ ops.my_unsync()
153
+ }
154
+ }
155
+ })
156
+ })()`
157
+ })
158
+ return await r.text()
159
+
160
+ },
161
+ 'it reconnected!'
162
+ )
163
+
164
+ runTest(
165
+ "test braid_text.sync, url to key",
166
+ async () => {
167
+ var key_a = 'test-a-' + Math.random().toString(36).slice(2)
168
+ var key_b = 'test-b-' + Math.random().toString(36).slice(2)
169
+
170
+ var r = await braid_fetch(`/${key_a}`, {
171
+ method: 'PUT',
172
+ body: 'hi'
173
+ })
174
+ if (!r.ok) return 'got: ' + r.status
175
+
176
+ var r = await braid_fetch(`/eval`, {
177
+ method: 'PUT',
178
+ body: `void (async () => {
179
+ braid_text.sync(new URL('http://localhost:8889/${key_a}'), '/${key_b}')
180
+ res.end('')
181
+ })()`
182
+ })
183
+ if (!r.ok) return 'got: ' + r.status
184
+
185
+ await new Promise(done => setTimeout(done, 100))
186
+
187
+ var r = await braid_fetch(`/${key_b}`)
188
+ return 'got: ' + (await r.text())
189
+ },
190
+ 'got: hi'
191
+ )
192
+
193
+ runTest(
194
+ "test braid_text.sync, url to resource",
195
+ async () => {
196
+ var key_a = 'test-a-' + Math.random().toString(36).slice(2)
197
+ var key_b = 'test-b-' + Math.random().toString(36).slice(2)
198
+
199
+ var r = await braid_fetch(`/${key_a}`, {
200
+ method: 'PUT',
201
+ body: 'hi'
202
+ })
203
+ if (!r.ok) return 'got: ' + r.status
204
+
205
+ var r = await braid_fetch(`/eval`, {
206
+ method: 'PUT',
207
+ body: `void (async () => {
208
+ var resource = await braid_text.get_resource('/${key_b}')
209
+ braid_text.sync(new URL('http://localhost:8889/${key_a}'), resource)
210
+ res.end('')
211
+ })()`
212
+ })
213
+ if (!r.ok) return 'got: ' + r.status
214
+
215
+ await new Promise(done => setTimeout(done, 100))
216
+
217
+ var r = await braid_fetch(`/${key_b}`)
218
+ return 'got: ' + (await r.text())
219
+ },
220
+ 'got: hi'
221
+ )
222
+
223
+ runTest(
224
+ "test braid_text.sync, with two urls",
225
+ async () => {
226
+ var key_a = 'test-a-' + Math.random().toString(36).slice(2)
227
+ var key_b = 'test-b-' + Math.random().toString(36).slice(2)
228
+
229
+ var r = await braid_fetch(`/${key_a}`, {
230
+ method: 'PUT',
231
+ body: 'hi'
232
+ })
233
+ if (!r.ok) return 'got: ' + r.status
234
+
235
+ var r = await braid_fetch(`/eval`, {
236
+ method: 'PUT',
237
+ body: `void (async () => {
238
+ braid_text.sync(new URL('http://localhost:8889/${key_a}'),
239
+ new URL('http://localhost:8889/${key_b}'))
240
+ res.end('')
241
+ })()`
242
+ })
243
+ if (!r.ok) return 'got: ' + r.status
244
+
245
+ await new Promise(done => setTimeout(done, 100))
246
+
247
+ var r = await braid_fetch(`/${key_b}`)
248
+ return 'got: ' + (await r.text())
249
+ },
250
+ 'got: hi'
251
+ )
252
+
253
+ runTest(
254
+ "test braid_text.sync, key to url",
255
+ async () => {
256
+ var key_a = 'test-a-' + Math.random().toString(36).slice(2)
257
+ var key_b = 'test-b-' + Math.random().toString(36).slice(2)
258
+
259
+ var r = await braid_fetch(`/${key_a}`, {
260
+ method: 'PUT',
261
+ body: 'hi'
262
+ })
263
+ if (!r.ok) return 'got: ' + r.status
264
+
265
+ var r = await braid_fetch(`/eval`, {
266
+ method: 'PUT',
267
+ body: `void (async () => {
268
+ braid_text.sync('/${key_a}', new URL('http://localhost:8889/${key_b}'))
269
+ res.end('')
270
+ })()`
271
+ })
272
+ if (!r.ok) return 'got: ' + r.status
273
+
274
+ await new Promise(done => setTimeout(done, 100))
275
+
276
+ var r = await braid_fetch(`/${key_b}`)
277
+ return 'got: ' + (await r.text())
278
+ },
279
+ 'got: hi'
280
+ )
281
+
282
+ runTest(
283
+ "test braid_text.sync, key to url, when HEAD fails",
284
+ async () => {
285
+ var key_a = 'test-a-' + Math.random().toString(36).slice(2)
286
+
287
+ var r = await braid_fetch(`/${key_a}`, {
288
+ method: 'PUT',
289
+ body: 'hi'
290
+ })
291
+ if (!r.ok) return 'got: ' + r.status
292
+
293
+ var r = await braid_fetch(`/eval`, {
294
+ method: 'PUT',
295
+ body: `void (async () => {
296
+ var count = 0
297
+ var ops
298
+ braid_text.sync('/${key_a}', new URL('http://localhost:8889/have_error'), ops = {
299
+ on_connect: () => {
300
+ count++
301
+ if (count === 2) {
302
+ res.end('it reconnected!')
303
+ ops.my_unsync()
304
+ }
305
+ }
306
+ })
307
+ })()`
308
+ })
309
+ if (!r.ok) return 'got: ' + r.status
310
+
311
+ return await r.text()
312
+ },
313
+ 'it reconnected!'
314
+ )
315
+
316
+ runTest(
317
+ "test when remote doesn't have a fork-point that we think they have",
318
+ async () => {
319
+ var key_a = 'test-a-' + Math.random().toString(36).slice(2)
320
+ var key_b = 'test-b-' + Math.random().toString(36).slice(2)
321
+ var key_c = 'test-c-' + Math.random().toString(36).slice(2)
322
+
323
+ var r = await braid_fetch(`/${key_a}`, {
324
+ method: 'PUT',
325
+ body: 'hi'
326
+ })
327
+ if (!r.ok) return 'got: ' + r.status
328
+
329
+ var r = await braid_fetch(`/eval`, {
330
+ method: 'PUT',
331
+ body: `void (async () => {
332
+ braid_text.sync('/${key_a}', new URL('http://localhost:8889/${key_b}'))
333
+ await new Promise(done => setTimeout(done, 100))
334
+ braid_text.sync('/${key_a}', new URL('http://localhost:8889/${key_c}'))
335
+ await new Promise(done => setTimeout(done, 100))
336
+ res.end('')
337
+ })()`
338
+ })
339
+ if (!r.ok) return 'got: ' + r.status
340
+
341
+ return await (await braid_fetch(`/${key_c}`)).text()
342
+ },
343
+ 'hi'
344
+ )
345
+
346
+ runTest(
347
+ "test when we don't have a fork-point with remote, but they do have a shared version",
348
+ async () => {
349
+ var key_a = 'test-a-' + Math.random().toString(36).slice(2)
350
+ var key_b = 'test-b-' + Math.random().toString(36).slice(2)
351
+
352
+ var r = await braid_fetch(`/${key_a}`, {
353
+ method: 'PUT',
354
+ body: 'hi'
355
+ })
356
+ if (!r.ok) return 'got: ' + r.status
357
+
358
+ var r = await braid_fetch(`/eval`, {
359
+ method: 'PUT',
360
+ body: `void (async () => {
361
+ var ops = {}
362
+ braid_text.sync('/${key_a}', '/${key_b}', ops)
363
+ await new Promise(done => setTimeout(done, 100))
364
+ ops.my_unsync()
365
+ res.end('')
366
+ })()`
367
+ })
368
+ if (!r.ok) return 'got: ' + r.status
369
+
370
+ var r = await braid_fetch(`/${key_a}`, {
371
+ method: 'PUT',
372
+ body: 'yo'
373
+ })
374
+ if (!r.ok) return 'got: ' + r.status
375
+
376
+ var r = await braid_fetch(`/eval`, {
377
+ method: 'PUT',
378
+ body: `void (async () => {
379
+ var ops = {}
380
+ braid_text.sync('/${key_a}', new URL('http://localhost:8889/${key_b}'), ops)
381
+ await new Promise(done => setTimeout(done, 100))
382
+ ops.my_unsync()
383
+ res.end('')
384
+ })()`
385
+ })
386
+ if (!r.ok) return 'got: ' + r.status
387
+
388
+ return await (await braid_fetch(`/${key_b}`)).text()
389
+ },
390
+ 'yo'
391
+ )
392
+
393
+ runTest(
394
+ "test braid_text.sync, with two keys",
395
+ async () => {
396
+ var key_a = 'test-a-' + Math.random().toString(36).slice(2)
397
+ var key_b = 'test-b-' + Math.random().toString(36).slice(2)
398
+
399
+ var r = await braid_fetch(`/${key_a}`, {
400
+ method: 'PUT',
401
+ body: 'hi'
402
+ })
403
+ if (!r.ok) return 'got: ' + r.status
404
+
405
+ var r = await braid_fetch(`/eval`, {
406
+ method: 'PUT',
407
+ body: `void (async () => {
408
+ braid_text.sync('/${key_a}', '/${key_b}')
409
+ res.end('')
410
+ })()`
411
+ })
412
+ if (!r.ok) return 'got: ' + r.status
413
+
414
+ await new Promise(done => setTimeout(done, 100))
415
+
416
+ var r = await braid_fetch(`/${key_b}`)
417
+ return 'got: ' + (await r.text())
418
+ },
419
+ 'got: hi'
420
+ )
421
+
422
+ runTest(
423
+ "test putting version with multiple event ids, should have error",
424
+ async () => {
425
+ var key_a = 'test-a-' + Math.random().toString(36).slice(2)
426
+
427
+ var r = await braid_fetch(`/${key_a}`, {
428
+ method: 'PUT',
429
+ version: ['abc-1', 'xyz-2'],
430
+ body: 'hi'
431
+ })
432
+ return '' + (await r.text()).includes('cannot put a version with multiple ids')
433
+ },
434
+ 'true'
435
+ )
436
+
437
+ runTest(
438
+ "test braid_text.get(url), with no options",
439
+ async () => {
440
+ var key = 'test-' + Math.random().toString(36).slice(2)
441
+ let r = await braid_fetch(`/${key}`, {
442
+ method: 'PUT',
443
+ body: 'hi'
444
+ })
445
+ if (!r.ok) return 'got: ' + r.status
446
+
447
+ var r1 = await braid_fetch(`/eval`, {
448
+ method: 'PUT',
449
+ body: `void (async () => {
450
+ res.end(await braid_text.get(new URL('http://localhost:8889/${key}')))
451
+ })()`
452
+ })
453
+
454
+ return 'got: ' + (await r1.text())
455
+ },
456
+ 'got: hi'
457
+ )
458
+
459
+ runTest(
460
+ "test braid_text.get(url), with headers",
461
+ async () => {
462
+ var key = 'test-' + Math.random().toString(36).slice(2)
463
+ let r = await braid_fetch(`/${key}`, {
464
+ method: 'PUT',
465
+ version: ['xyz-1'],
466
+ body: 'hi'
467
+ })
468
+ if (!r.ok) return 'got: ' + r.status
469
+
470
+ var r1 = await braid_fetch(`/eval`, {
471
+ method: 'PUT',
472
+ body: `void (async () => {
473
+ res.end(await braid_text.get(new URL('http://localhost:8889/${key}'), {
474
+ headers: {
475
+ version: '"xyz-0"'
476
+ }
477
+ }))
478
+ })()`
479
+ })
480
+
481
+ return 'got: ' + (await r1.text())
482
+ },
483
+ 'got: h'
484
+ )
485
+
486
+ runTest(
487
+ "test braid_text.get(url), with parents",
488
+ async () => {
489
+ var key = 'test-' + Math.random().toString(36).slice(2)
490
+ let r = await braid_fetch(`/${key}`, {
491
+ method: 'PUT',
492
+ version: ['xyz-1'],
493
+ body: 'hi'
494
+ })
495
+ if (!r.ok) return 'got: ' + r.status
496
+
497
+ var r1 = await braid_fetch(`/eval`, {
498
+ method: 'PUT',
499
+ body: `void (async () => {
500
+ res.end(await braid_text.get(new URL('http://localhost:8889/${key}'), {
501
+ parents: ['xyz-0']
502
+ }))
503
+ })()`
504
+ })
505
+
506
+ return 'got: ' + (await r1.text())
507
+ },
508
+ 'got: h'
509
+ )
510
+
511
+ runTest(
512
+ "test braid_text.get(url), with version and peer",
513
+ async () => {
514
+ var key = 'test-' + Math.random().toString(36).slice(2)
515
+ let r = await braid_fetch(`/${key}`, {
516
+ method: 'PUT',
517
+ version: ['xyz-1'],
518
+ body: 'hi'
519
+ })
520
+ if (!r.ok) return 'got: ' + r.status
521
+
522
+ var r1 = await braid_fetch(`/eval`, {
523
+ method: 'PUT',
524
+ body: `void (async () => {
525
+ res.end(await braid_text.get(new URL('http://localhost:8889/${key}'), {
526
+ version: ['xyz-0'],
527
+ peer: 'xyz'
528
+ }))
529
+ })()`
530
+ })
531
+
532
+ return 'got: ' + (await r1.text())
533
+ },
534
+ 'got: h'
535
+ )
198
536
 
199
537
  runTest(
200
538
  "test braid_text.get(url) with subscription",
@@ -220,7 +558,7 @@ runTest(
220
558
  }
221
559
  braid_text.get(url, o)
222
560
  })
223
- res.end(update.body_text)
561
+ res.end(update.body)
224
562
  })()`
225
563
  })
226
564
 
@@ -318,44 +656,6 @@ runTest(
318
656
  'got: yo -- version: "xyz-1"'
319
657
  )
320
658
 
321
- runTest(
322
- "test updating meta data",
323
- async () => {
324
- var key = 'test-' + Math.random().toString(36).slice(2)
325
-
326
- var r1 = await braid_fetch(`/eval`, {
327
- method: 'PUT',
328
- body: `void (async () => {
329
- var resource = await braid_text.get_resource('/${key}')
330
- resource.update_meta({ test_meta_info: 42 })
331
- res.end(JSON.stringify(resource.meta))
332
- })()`
333
- })
334
-
335
- return (await r1.text())
336
- },
337
- '{"test_meta_info":42}'
338
- )
339
-
340
- runTest(
341
- "test updating meta data when do db_folder set",
342
- async () => {
343
- var key = 'test-' + Math.random().toString(36).slice(2)
344
-
345
- var r1 = await braid_fetch(`/eval`, {
346
- method: 'PUT',
347
- body: `void (async () => {
348
- var resource = await braid_text2.get_resource('/${key}')
349
- resource.update_meta({ test_meta_info: 42 })
350
- res.end(JSON.stringify(resource.meta))
351
- })()`
352
- })
353
-
354
- return (await r1.text())
355
- },
356
- '{"test_meta_info":42}'
357
- )
358
-
359
659
  runTest(
360
660
  "test loading a meta file from disk",
361
661
  async () => {
@@ -365,7 +665,8 @@ runTest(
365
665
  method: 'PUT',
366
666
  body: `void (async () => {
367
667
  var resource = await braid_text.get_resource('/${key}')
368
- resource.update_meta({ test_meta_info: 42 })
668
+ resource.meta = { test_meta_info: 42 }
669
+ resource.change_meta()
369
670
 
370
671
  await new Promise(done => setTimeout(done, 200))
371
672
 
@@ -612,7 +913,9 @@ runTest(
612
913
  })
613
914
  if (!r.ok) throw 'got: ' + r.statusCode
614
915
 
916
+ var a = new AbortController()
615
917
  let r2 = await braid_fetch(`/${key}`, {
918
+ signal: a.signal,
616
919
  version: ['hi-0'],
617
920
  subscribe: true
618
921
  })
@@ -620,7 +923,10 @@ runTest(
620
923
  var p = new Promise(async (done, fail) => {
621
924
  r2.subscribe(update => {
622
925
  parts.push(update.extra_headers['repr-digest'])
623
- if (parts.length > 1) done()
926
+ if (parts.length > 1) {
927
+ done()
928
+ a.abort()
929
+ }
624
930
  }, fail)
625
931
  })
626
932
 
@@ -652,7 +958,9 @@ runTest(
652
958
  })
653
959
  if (!r.ok) throw 'got: ' + r.statusCode
654
960
 
961
+ var a = new AbortController()
655
962
  let r2 = await braid_fetch(`/${key}`, {
963
+ signal: a.signal,
656
964
  version: ['hi-0'],
657
965
  headers: { 'merge-type': 'dt' },
658
966
  subscribe: true
@@ -661,7 +969,10 @@ runTest(
661
969
  var p = new Promise(async (done, fail) => {
662
970
  r2.subscribe(update => {
663
971
  parts.push(update.extra_headers['repr-digest'])
664
- if (parts.length > 1) done()
972
+ if (parts.length > 1) {
973
+ done()
974
+ a.abort()
975
+ }
665
976
  }, fail)
666
977
  })
667
978
 
@@ -905,12 +1216,16 @@ runTest(
905
1216
  var p_done
906
1217
  var p = new Promise(done => p_done = done)
907
1218
 
1219
+ var a = new AbortController()
908
1220
  var r = await braid_fetch(`/${key}`, {
1221
+ signal: a.signal,
909
1222
  subscribe: true
910
1223
  })
911
1224
  r.subscribe(update => {
912
- if (update.version[0] === 'hi-0')
1225
+ if (update.version[0] === 'hi-0') {
913
1226
  p_done(update.patches[0].content_text)
1227
+ a.abort()
1228
+ }
914
1229
  })
915
1230
 
916
1231
  var r = await braid_fetch(`/${key}`, {
@@ -947,10 +1262,10 @@ runTest(
947
1262
  body: 'x'
948
1263
  })
949
1264
 
950
- if (!r.ok) throw 'got: ' + r.statusCode
1265
+ if (!r.ok) throw 'got: ' + r.status
951
1266
 
952
1267
  r = await f
953
- if (!r.ok) throw 'got: ' + r.statusCode
1268
+ if (!r.ok) throw 'got: ' + r.status
954
1269
 
955
1270
  var r2 = await braid_fetch(`/${key}`)
956
1271
  return await r2.text()
@@ -1463,13 +1778,16 @@ runTest(
1463
1778
  })
1464
1779
  if (!r.ok) throw 'got: ' + r.statusCode
1465
1780
 
1781
+ var a = new AbortController()
1466
1782
  let r2 = await braid_fetch(`/${key}`, {
1783
+ signal: a.signal,
1467
1784
  version: ['hi-0'],
1468
1785
  subscribe: true
1469
1786
  })
1470
1787
  return await new Promise(async (done, fail) => {
1471
1788
  r2.subscribe(update => {
1472
1789
  done(JSON.stringify(update.parents))
1790
+ a.abort()
1473
1791
  }, fail)
1474
1792
  })
1475
1793
  },
@@ -1489,7 +1807,9 @@ runTest(
1489
1807
  })
1490
1808
  if (!r.ok) throw 'got: ' + r.statusCode
1491
1809
 
1810
+ var a = new AbortController()
1492
1811
  let r2 = await braid_fetch(`/${key}`, {
1812
+ signal: a.signal,
1493
1813
  version: ['hi-0'],
1494
1814
  subscribe: true,
1495
1815
  headers: {
@@ -1499,6 +1819,7 @@ runTest(
1499
1819
  return r2.headers.get('merge-type') + ':' + await new Promise(async (done, fail) => {
1500
1820
  r2.subscribe(update => {
1501
1821
  done(JSON.stringify(update.parents))
1822
+ a.abort()
1502
1823
  }, fail)
1503
1824
  })
1504
1825
  },
@@ -1518,7 +1839,9 @@ runTest(
1518
1839
  })
1519
1840
  if (!r.ok) throw 'got: ' + r.statusCode
1520
1841
 
1842
+ var a = new AbortController()
1521
1843
  let r2 = await braid_fetch(`/${key}`, {
1844
+ signal: a.signal,
1522
1845
  version: ['hi-1'],
1523
1846
  subscribe: true,
1524
1847
  headers: {
@@ -1526,8 +1849,14 @@ runTest(
1526
1849
  }
1527
1850
  })
1528
1851
  return await new Promise(async (done, fail) => {
1529
- r2.subscribe(update => done('got something'), fail)
1530
- setTimeout(() => done('got nothing'), 1500)
1852
+ r2.subscribe(update => {
1853
+ done('got something')
1854
+ a.abort()
1855
+ }, fail)
1856
+ setTimeout(() => {
1857
+ done('got nothing')
1858
+ a.abort()
1859
+ }, 1500)
1531
1860
  })
1532
1861
  },
1533
1862
  'got nothing'
@@ -1546,7 +1875,9 @@ runTest(
1546
1875
  })
1547
1876
  if (!r.ok) throw 'got: ' + r.statusCode
1548
1877
 
1878
+ var a = new AbortController()
1549
1879
  let r2 = await braid_fetch(`/${key}`, {
1880
+ signal: a.signal,
1550
1881
  subscribe: true,
1551
1882
  headers: {
1552
1883
  'Merge-Type': 'dt'
@@ -1554,7 +1885,10 @@ runTest(
1554
1885
  })
1555
1886
  return r2.headers.get('merge-type') + ':' + await new Promise(async (done, fail) => {
1556
1887
  r2.subscribe(update => {
1557
- if (update.version[0] === 'hi-1') done('got it!')
1888
+ if (update.version[0] === 'hi-1') {
1889
+ done('got it!')
1890
+ a.abort()
1891
+ }
1558
1892
  }, fail)
1559
1893
  })
1560
1894
  },
@@ -1609,11 +1943,16 @@ runTest(
1609
1943
  body: JSON.stringify({a: 5, b: 6}, null, 4)
1610
1944
  })
1611
1945
 
1946
+ var a = new AbortController()
1612
1947
  let r = await braid_fetch(`/${key}`, {
1948
+ signal: a.signal,
1613
1949
  subscribe: true
1614
1950
  })
1615
1951
 
1616
- r.subscribe(update => done(update.body_text), fail)
1952
+ r.subscribe(update => {
1953
+ done(update.body_text)
1954
+ a.abort()
1955
+ }, fail)
1617
1956
  })
1618
1957
  },
1619
1958
  JSON.stringify({a: 5, b: 6}, null, 4)
@@ -1840,10 +2179,14 @@ runTest(
1840
2179
  })
1841
2180
  if (!r.ok) throw 'got: ' + r.statusCode
1842
2181
 
2182
+ var a = new AbortController()
1843
2183
  var r = await braid_fetch(`/${key}`, {
2184
+ signal: a.signal,
1844
2185
  subscribe: true
1845
2186
  })
1846
- return r.headers.get('current-version')
2187
+ var result = r.headers.get('current-version')
2188
+ a.abort()
2189
+ return result
1847
2190
  },
1848
2191
  '"hi-11"'
1849
2192
  )