braid-text 0.2.68 → 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.
- package/index.js +500 -306
- package/package.json +1 -1
- package/test/test.html +223 -50
package/package.json
CHANGED
package/test/test.html
CHANGED
|
@@ -113,7 +113,7 @@ runTest(
|
|
|
113
113
|
var x = await new Promise(done => {
|
|
114
114
|
braid_text.get(new URL('http://localhost:8889/${key}'), {
|
|
115
115
|
subscribe: update => {
|
|
116
|
-
if (update.body_text) done(update.body_text)
|
|
116
|
+
if (update.body_text === 'yo') done(update.body_text)
|
|
117
117
|
}
|
|
118
118
|
})
|
|
119
119
|
})
|
|
@@ -134,6 +134,33 @@ runTest(
|
|
|
134
134
|
'yo'
|
|
135
135
|
)
|
|
136
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
|
+
|
|
137
164
|
runTest(
|
|
138
165
|
"test braid_text.sync, url to key",
|
|
139
166
|
async () => {
|
|
@@ -163,6 +190,36 @@ runTest(
|
|
|
163
190
|
'got: hi'
|
|
164
191
|
)
|
|
165
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
|
+
|
|
166
223
|
runTest(
|
|
167
224
|
"test braid_text.sync, with two urls",
|
|
168
225
|
async () => {
|
|
@@ -222,6 +279,117 @@ runTest(
|
|
|
222
279
|
'got: hi'
|
|
223
280
|
)
|
|
224
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
|
+
|
|
225
393
|
runTest(
|
|
226
394
|
"test braid_text.sync, with two keys",
|
|
227
395
|
async () => {
|
|
@@ -488,44 +656,6 @@ runTest(
|
|
|
488
656
|
'got: yo -- version: "xyz-1"'
|
|
489
657
|
)
|
|
490
658
|
|
|
491
|
-
runTest(
|
|
492
|
-
"test updating meta data",
|
|
493
|
-
async () => {
|
|
494
|
-
var key = 'test-' + Math.random().toString(36).slice(2)
|
|
495
|
-
|
|
496
|
-
var r1 = await braid_fetch(`/eval`, {
|
|
497
|
-
method: 'PUT',
|
|
498
|
-
body: `void (async () => {
|
|
499
|
-
var resource = await braid_text.get_resource('/${key}')
|
|
500
|
-
resource.update_meta({ test_meta_info: 42 })
|
|
501
|
-
res.end(JSON.stringify(resource.meta))
|
|
502
|
-
})()`
|
|
503
|
-
})
|
|
504
|
-
|
|
505
|
-
return (await r1.text())
|
|
506
|
-
},
|
|
507
|
-
'{"test_meta_info":42}'
|
|
508
|
-
)
|
|
509
|
-
|
|
510
|
-
runTest(
|
|
511
|
-
"test updating meta data when do db_folder set",
|
|
512
|
-
async () => {
|
|
513
|
-
var key = 'test-' + Math.random().toString(36).slice(2)
|
|
514
|
-
|
|
515
|
-
var r1 = await braid_fetch(`/eval`, {
|
|
516
|
-
method: 'PUT',
|
|
517
|
-
body: `void (async () => {
|
|
518
|
-
var resource = await braid_text2.get_resource('/${key}')
|
|
519
|
-
resource.update_meta({ test_meta_info: 42 })
|
|
520
|
-
res.end(JSON.stringify(resource.meta))
|
|
521
|
-
})()`
|
|
522
|
-
})
|
|
523
|
-
|
|
524
|
-
return (await r1.text())
|
|
525
|
-
},
|
|
526
|
-
'{"test_meta_info":42}'
|
|
527
|
-
)
|
|
528
|
-
|
|
529
659
|
runTest(
|
|
530
660
|
"test loading a meta file from disk",
|
|
531
661
|
async () => {
|
|
@@ -535,7 +665,8 @@ runTest(
|
|
|
535
665
|
method: 'PUT',
|
|
536
666
|
body: `void (async () => {
|
|
537
667
|
var resource = await braid_text.get_resource('/${key}')
|
|
538
|
-
resource.
|
|
668
|
+
resource.meta = { test_meta_info: 42 }
|
|
669
|
+
resource.change_meta()
|
|
539
670
|
|
|
540
671
|
await new Promise(done => setTimeout(done, 200))
|
|
541
672
|
|
|
@@ -782,7 +913,9 @@ runTest(
|
|
|
782
913
|
})
|
|
783
914
|
if (!r.ok) throw 'got: ' + r.statusCode
|
|
784
915
|
|
|
916
|
+
var a = new AbortController()
|
|
785
917
|
let r2 = await braid_fetch(`/${key}`, {
|
|
918
|
+
signal: a.signal,
|
|
786
919
|
version: ['hi-0'],
|
|
787
920
|
subscribe: true
|
|
788
921
|
})
|
|
@@ -790,7 +923,10 @@ runTest(
|
|
|
790
923
|
var p = new Promise(async (done, fail) => {
|
|
791
924
|
r2.subscribe(update => {
|
|
792
925
|
parts.push(update.extra_headers['repr-digest'])
|
|
793
|
-
if (parts.length > 1)
|
|
926
|
+
if (parts.length > 1) {
|
|
927
|
+
done()
|
|
928
|
+
a.abort()
|
|
929
|
+
}
|
|
794
930
|
}, fail)
|
|
795
931
|
})
|
|
796
932
|
|
|
@@ -822,7 +958,9 @@ runTest(
|
|
|
822
958
|
})
|
|
823
959
|
if (!r.ok) throw 'got: ' + r.statusCode
|
|
824
960
|
|
|
961
|
+
var a = new AbortController()
|
|
825
962
|
let r2 = await braid_fetch(`/${key}`, {
|
|
963
|
+
signal: a.signal,
|
|
826
964
|
version: ['hi-0'],
|
|
827
965
|
headers: { 'merge-type': 'dt' },
|
|
828
966
|
subscribe: true
|
|
@@ -831,7 +969,10 @@ runTest(
|
|
|
831
969
|
var p = new Promise(async (done, fail) => {
|
|
832
970
|
r2.subscribe(update => {
|
|
833
971
|
parts.push(update.extra_headers['repr-digest'])
|
|
834
|
-
if (parts.length > 1)
|
|
972
|
+
if (parts.length > 1) {
|
|
973
|
+
done()
|
|
974
|
+
a.abort()
|
|
975
|
+
}
|
|
835
976
|
}, fail)
|
|
836
977
|
})
|
|
837
978
|
|
|
@@ -1075,12 +1216,16 @@ runTest(
|
|
|
1075
1216
|
var p_done
|
|
1076
1217
|
var p = new Promise(done => p_done = done)
|
|
1077
1218
|
|
|
1219
|
+
var a = new AbortController()
|
|
1078
1220
|
var r = await braid_fetch(`/${key}`, {
|
|
1221
|
+
signal: a.signal,
|
|
1079
1222
|
subscribe: true
|
|
1080
1223
|
})
|
|
1081
1224
|
r.subscribe(update => {
|
|
1082
|
-
if (update.version[0] === 'hi-0')
|
|
1225
|
+
if (update.version[0] === 'hi-0') {
|
|
1083
1226
|
p_done(update.patches[0].content_text)
|
|
1227
|
+
a.abort()
|
|
1228
|
+
}
|
|
1084
1229
|
})
|
|
1085
1230
|
|
|
1086
1231
|
var r = await braid_fetch(`/${key}`, {
|
|
@@ -1117,10 +1262,10 @@ runTest(
|
|
|
1117
1262
|
body: 'x'
|
|
1118
1263
|
})
|
|
1119
1264
|
|
|
1120
|
-
if (!r.ok) throw 'got: ' + r.
|
|
1265
|
+
if (!r.ok) throw 'got: ' + r.status
|
|
1121
1266
|
|
|
1122
1267
|
r = await f
|
|
1123
|
-
if (!r.ok) throw 'got: ' + r.
|
|
1268
|
+
if (!r.ok) throw 'got: ' + r.status
|
|
1124
1269
|
|
|
1125
1270
|
var r2 = await braid_fetch(`/${key}`)
|
|
1126
1271
|
return await r2.text()
|
|
@@ -1633,13 +1778,16 @@ runTest(
|
|
|
1633
1778
|
})
|
|
1634
1779
|
if (!r.ok) throw 'got: ' + r.statusCode
|
|
1635
1780
|
|
|
1781
|
+
var a = new AbortController()
|
|
1636
1782
|
let r2 = await braid_fetch(`/${key}`, {
|
|
1783
|
+
signal: a.signal,
|
|
1637
1784
|
version: ['hi-0'],
|
|
1638
1785
|
subscribe: true
|
|
1639
1786
|
})
|
|
1640
1787
|
return await new Promise(async (done, fail) => {
|
|
1641
1788
|
r2.subscribe(update => {
|
|
1642
1789
|
done(JSON.stringify(update.parents))
|
|
1790
|
+
a.abort()
|
|
1643
1791
|
}, fail)
|
|
1644
1792
|
})
|
|
1645
1793
|
},
|
|
@@ -1659,7 +1807,9 @@ runTest(
|
|
|
1659
1807
|
})
|
|
1660
1808
|
if (!r.ok) throw 'got: ' + r.statusCode
|
|
1661
1809
|
|
|
1810
|
+
var a = new AbortController()
|
|
1662
1811
|
let r2 = await braid_fetch(`/${key}`, {
|
|
1812
|
+
signal: a.signal,
|
|
1663
1813
|
version: ['hi-0'],
|
|
1664
1814
|
subscribe: true,
|
|
1665
1815
|
headers: {
|
|
@@ -1669,6 +1819,7 @@ runTest(
|
|
|
1669
1819
|
return r2.headers.get('merge-type') + ':' + await new Promise(async (done, fail) => {
|
|
1670
1820
|
r2.subscribe(update => {
|
|
1671
1821
|
done(JSON.stringify(update.parents))
|
|
1822
|
+
a.abort()
|
|
1672
1823
|
}, fail)
|
|
1673
1824
|
})
|
|
1674
1825
|
},
|
|
@@ -1688,7 +1839,9 @@ runTest(
|
|
|
1688
1839
|
})
|
|
1689
1840
|
if (!r.ok) throw 'got: ' + r.statusCode
|
|
1690
1841
|
|
|
1842
|
+
var a = new AbortController()
|
|
1691
1843
|
let r2 = await braid_fetch(`/${key}`, {
|
|
1844
|
+
signal: a.signal,
|
|
1692
1845
|
version: ['hi-1'],
|
|
1693
1846
|
subscribe: true,
|
|
1694
1847
|
headers: {
|
|
@@ -1696,8 +1849,14 @@ runTest(
|
|
|
1696
1849
|
}
|
|
1697
1850
|
})
|
|
1698
1851
|
return await new Promise(async (done, fail) => {
|
|
1699
|
-
r2.subscribe(update =>
|
|
1700
|
-
|
|
1852
|
+
r2.subscribe(update => {
|
|
1853
|
+
done('got something')
|
|
1854
|
+
a.abort()
|
|
1855
|
+
}, fail)
|
|
1856
|
+
setTimeout(() => {
|
|
1857
|
+
done('got nothing')
|
|
1858
|
+
a.abort()
|
|
1859
|
+
}, 1500)
|
|
1701
1860
|
})
|
|
1702
1861
|
},
|
|
1703
1862
|
'got nothing'
|
|
@@ -1716,7 +1875,9 @@ runTest(
|
|
|
1716
1875
|
})
|
|
1717
1876
|
if (!r.ok) throw 'got: ' + r.statusCode
|
|
1718
1877
|
|
|
1878
|
+
var a = new AbortController()
|
|
1719
1879
|
let r2 = await braid_fetch(`/${key}`, {
|
|
1880
|
+
signal: a.signal,
|
|
1720
1881
|
subscribe: true,
|
|
1721
1882
|
headers: {
|
|
1722
1883
|
'Merge-Type': 'dt'
|
|
@@ -1724,7 +1885,10 @@ runTest(
|
|
|
1724
1885
|
})
|
|
1725
1886
|
return r2.headers.get('merge-type') + ':' + await new Promise(async (done, fail) => {
|
|
1726
1887
|
r2.subscribe(update => {
|
|
1727
|
-
if (update.version[0] === 'hi-1')
|
|
1888
|
+
if (update.version[0] === 'hi-1') {
|
|
1889
|
+
done('got it!')
|
|
1890
|
+
a.abort()
|
|
1891
|
+
}
|
|
1728
1892
|
}, fail)
|
|
1729
1893
|
})
|
|
1730
1894
|
},
|
|
@@ -1779,11 +1943,16 @@ runTest(
|
|
|
1779
1943
|
body: JSON.stringify({a: 5, b: 6}, null, 4)
|
|
1780
1944
|
})
|
|
1781
1945
|
|
|
1946
|
+
var a = new AbortController()
|
|
1782
1947
|
let r = await braid_fetch(`/${key}`, {
|
|
1948
|
+
signal: a.signal,
|
|
1783
1949
|
subscribe: true
|
|
1784
1950
|
})
|
|
1785
1951
|
|
|
1786
|
-
r.subscribe(update =>
|
|
1952
|
+
r.subscribe(update => {
|
|
1953
|
+
done(update.body_text)
|
|
1954
|
+
a.abort()
|
|
1955
|
+
}, fail)
|
|
1787
1956
|
})
|
|
1788
1957
|
},
|
|
1789
1958
|
JSON.stringify({a: 5, b: 6}, null, 4)
|
|
@@ -2010,10 +2179,14 @@ runTest(
|
|
|
2010
2179
|
})
|
|
2011
2180
|
if (!r.ok) throw 'got: ' + r.statusCode
|
|
2012
2181
|
|
|
2182
|
+
var a = new AbortController()
|
|
2013
2183
|
var r = await braid_fetch(`/${key}`, {
|
|
2184
|
+
signal: a.signal,
|
|
2014
2185
|
subscribe: true
|
|
2015
2186
|
})
|
|
2016
|
-
|
|
2187
|
+
var result = r.headers.get('current-version')
|
|
2188
|
+
a.abort()
|
|
2189
|
+
return result
|
|
2017
2190
|
},
|
|
2018
2191
|
'"hi-11"'
|
|
2019
2192
|
)
|