@fireproof/core 0.0.6 → 0.0.8
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/coverage/blockstore.js.html +254 -242
- package/coverage/clock.js.html +203 -266
- package/coverage/db-index.js.html +426 -213
- package/coverage/fireproof.js.html +424 -238
- package/coverage/index.html +69 -84
- package/coverage/listener.js.html +13 -25
- package/coverage/prolly.js.html +267 -219
- package/coverage/tmp/coverage-28490-1680373005621-0.json +1 -0
- package/coverage/tmp/coverage-28494-1680373004502-0.json +1 -0
- package/coverage/tmp/coverage-28500-1680373005593-0.json +1 -0
- package/coverage/tmp/coverage-28504-1680373005559-0.json +1 -0
- package/coverage/valet.js.html +96 -246
- package/hooks/use-fireproof.ts +9 -8
- package/package.json +5 -5
- package/src/blockstore.js +16 -14
- package/src/clock.js +27 -5
- package/src/db-index.js +139 -96
- package/src/fireproof.js +48 -16
- package/src/hydrator.js +10 -0
- package/src/listener.js +0 -6
- package/src/prolly.js +43 -32
- package/src/valet.js +6 -62
- package/{src → test}/block.js +6 -6
- package/test/clock.test.js +0 -5
- package/test/db-index.test.js +11 -10
- package/test/fireproof.test.js +74 -19
- package/test/helpers.js +1 -1
- package/test/hydrator.test.js +75 -0
- package/test/prolly.test.js +2 -2
- package/test/proofs.test.js +5 -5
- package/test/reproduce-fixture-bug.test.js +2 -2
- package/coverage/tmp/coverage-42191-1678146904346-0.json +0 -1
- package/coverage/tmp/coverage-42193-1678146903521-0.json +0 -1
- package/coverage/tmp/coverage-42196-1678146904322-0.json +0 -1
- package/coverage/tmp/coverage-42197-1678146904292-0.json +0 -1
- package/scripts/propernames/gen.sh +0 -3
- package/scripts/randomcid.js +0 -12
- package/scripts/words/gen.js +0 -55
package/coverage/clock.js.html
CHANGED
@@ -23,30 +23,30 @@
|
|
23
23
|
<div class='clearfix'>
|
24
24
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
26
|
-
<span class="strong">
|
26
|
+
<span class="strong">87.91% </span>
|
27
27
|
<span class="quiet">Statements</span>
|
28
|
-
<span class='fraction'>
|
28
|
+
<span class='fraction'>291/331</span>
|
29
29
|
</div>
|
30
30
|
|
31
31
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
33
|
-
<span class="strong">90.
|
33
|
+
<span class="strong">90.12% </span>
|
34
34
|
<span class="quiet">Branches</span>
|
35
|
-
<span class='fraction'>
|
35
|
+
<span class='fraction'>73/81</span>
|
36
36
|
</div>
|
37
37
|
|
38
38
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
40
|
-
<span class="strong">
|
40
|
+
<span class="strong">83.33% </span>
|
41
41
|
<span class="quiet">Functions</span>
|
42
|
-
<span class='fraction'>
|
42
|
+
<span class='fraction'>15/18</span>
|
43
43
|
</div>
|
44
44
|
|
45
45
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
47
|
-
<span class="strong">
|
47
|
+
<span class="strong">87.91% </span>
|
48
48
|
<span class="quiet">Lines</span>
|
49
|
-
<span class='fraction'>
|
49
|
+
<span class='fraction'>291/331</span>
|
50
50
|
</div>
|
51
51
|
|
52
52
|
|
@@ -394,28 +394,7 @@
|
|
394
394
|
<a name='L329'></a><a href='#L329'>329</a>
|
395
395
|
<a name='L330'></a><a href='#L330'>330</a>
|
396
396
|
<a name='L331'></a><a href='#L331'>331</a>
|
397
|
-
<a name='L332'></a><a href='#L332'>332</a>
|
398
|
-
<a name='L333'></a><a href='#L333'>333</a>
|
399
|
-
<a name='L334'></a><a href='#L334'>334</a>
|
400
|
-
<a name='L335'></a><a href='#L335'>335</a>
|
401
|
-
<a name='L336'></a><a href='#L336'>336</a>
|
402
|
-
<a name='L337'></a><a href='#L337'>337</a>
|
403
|
-
<a name='L338'></a><a href='#L338'>338</a>
|
404
|
-
<a name='L339'></a><a href='#L339'>339</a>
|
405
|
-
<a name='L340'></a><a href='#L340'>340</a>
|
406
|
-
<a name='L341'></a><a href='#L341'>341</a>
|
407
|
-
<a name='L342'></a><a href='#L342'>342</a>
|
408
|
-
<a name='L343'></a><a href='#L343'>343</a>
|
409
|
-
<a name='L344'></a><a href='#L344'>344</a>
|
410
|
-
<a name='L345'></a><a href='#L345'>345</a>
|
411
|
-
<a name='L346'></a><a href='#L346'>346</a>
|
412
|
-
<a name='L347'></a><a href='#L347'>347</a>
|
413
|
-
<a name='L348'></a><a href='#L348'>348</a>
|
414
|
-
<a name='L349'></a><a href='#L349'>349</a>
|
415
|
-
<a name='L350'></a><a href='#L350'>350</a>
|
416
|
-
<a name='L351'></a><a href='#L351'>351</a>
|
417
|
-
<a name='L352'></a><a href='#L352'>352</a>
|
418
|
-
<a name='L353'></a><a href='#L353'>353</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
397
|
+
<a name='L332'></a><a href='#L332'>332</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
419
398
|
<span class="cline-any cline-yes">1x</span>
|
420
399
|
<span class="cline-any cline-yes">1x</span>
|
421
400
|
<span class="cline-any cline-yes">1x</span>
|
@@ -444,38 +423,39 @@
|
|
444
423
|
<span class="cline-any cline-yes">1x</span>
|
445
424
|
<span class="cline-any cline-yes">1x</span>
|
446
425
|
<span class="cline-any cline-yes">1x</span>
|
447
|
-
<span class="cline-any cline-yes">
|
448
|
-
<span class="cline-any cline-yes">
|
449
|
-
<span class="cline-any cline-yes">
|
450
|
-
<span class="cline-any cline-yes">
|
451
|
-
<span class="cline-any cline-yes">
|
452
|
-
<span class="cline-any cline-yes">
|
453
|
-
<span class="cline-any cline-yes">
|
454
|
-
<span class="cline-any cline-yes">
|
455
|
-
<span class="cline-any cline-yes">
|
456
|
-
<span class="cline-any cline-yes">
|
457
|
-
<span class="cline-any cline-yes">
|
458
|
-
<span class="cline-any cline-yes">
|
459
|
-
<span class="cline-any cline-yes">
|
460
|
-
<span class="cline-any cline-yes">
|
461
|
-
<span class="cline-any cline-yes">
|
462
|
-
<span class="cline-any cline-yes">
|
463
|
-
<span class="cline-any cline-yes">
|
464
|
-
<span class="cline-any cline-yes">
|
465
|
-
<span class="cline-any cline-yes">
|
466
|
-
<span class="cline-any cline-yes">
|
467
|
-
<span class="cline-any cline-yes">
|
468
|
-
<span class="cline-any cline-yes">
|
469
|
-
<span class="cline-any cline-yes">
|
470
|
-
<span class="cline-any cline-yes">
|
426
|
+
<span class="cline-any cline-yes">1x</span>
|
427
|
+
<span class="cline-any cline-yes">221x</span>
|
428
|
+
<span class="cline-any cline-yes">221x</span>
|
429
|
+
<span class="cline-any cline-yes">221x</span>
|
430
|
+
<span class="cline-any cline-yes">221x</span>
|
431
|
+
<span class="cline-any cline-yes">221x</span>
|
432
|
+
<span class="cline-any cline-yes">221x</span>
|
433
|
+
<span class="cline-any cline-yes">221x</span>
|
434
|
+
<span class="cline-any cline-yes">221x</span>
|
435
|
+
<span class="cline-any cline-yes">221x</span>
|
436
|
+
<span class="cline-any cline-yes">221x</span>
|
437
|
+
<span class="cline-any cline-yes">191x</span>
|
438
|
+
<span class="cline-any cline-yes">171x</span>
|
439
|
+
<span class="cline-any cline-yes">171x</span>
|
440
|
+
<span class="cline-any cline-yes">171x</span>
|
441
|
+
<span class="cline-any cline-yes">171x</span>
|
442
|
+
<span class="cline-any cline-yes">191x</span>
|
443
|
+
<span class="cline-any cline-yes">221x</span>
|
444
|
+
<span class="cline-any cline-yes">221x</span>
|
445
|
+
<span class="cline-any cline-yes">221x</span>
|
446
|
+
<span class="cline-any cline-yes">160x</span>
|
447
|
+
<span class="cline-any cline-yes">160x</span>
|
448
|
+
<span class="cline-any cline-yes">61x</span>
|
449
|
+
<span class="cline-any cline-yes">61x</span>
|
450
|
+
<span class="cline-any cline-yes">221x</span>
|
471
451
|
<span class="cline-any cline-yes">16x</span>
|
472
452
|
<span class="cline-any cline-no"> </span>
|
473
453
|
<span class="cline-any cline-no"> </span>
|
474
454
|
<span class="cline-any cline-yes">16x</span>
|
475
|
-
<span class="cline-any cline-yes">
|
476
|
-
<span class="cline-any cline-yes">
|
477
|
-
<span class="cline-any cline-yes">
|
478
|
-
<span class="cline-any cline-yes">
|
455
|
+
<span class="cline-any cline-yes">61x</span>
|
456
|
+
<span class="cline-any cline-yes">61x</span>
|
457
|
+
<span class="cline-any cline-yes">61x</span>
|
458
|
+
<span class="cline-any cline-yes">221x</span>
|
479
459
|
<span class="cline-any cline-yes">1x</span>
|
480
460
|
<span class="cline-any cline-yes">1x</span>
|
481
461
|
<span class="cline-any cline-yes">1x</span>
|
@@ -499,27 +479,34 @@
|
|
499
479
|
<span class="cline-any cline-yes">1x</span>
|
500
480
|
<span class="cline-any cline-yes">1x</span>
|
501
481
|
<span class="cline-any cline-yes">1x</span>
|
502
|
-
<span class="cline-any cline-yes">
|
503
|
-
<span class="cline-any cline-yes">
|
482
|
+
<span class="cline-any cline-yes">222x</span>
|
483
|
+
<span class="cline-any cline-yes">222x</span>
|
484
|
+
<span class="cline-any cline-yes">1x</span>
|
485
|
+
<span class="cline-any cline-yes">1x</span>
|
504
486
|
<span class="cline-any cline-yes">1x</span>
|
505
487
|
<span class="cline-any cline-yes">1x</span>
|
506
488
|
<span class="cline-any cline-yes">1x</span>
|
507
489
|
<span class="cline-any cline-yes">1x</span>
|
490
|
+
<span class="cline-any cline-yes">532x</span>
|
491
|
+
<span class="cline-any cline-yes">532x</span>
|
492
|
+
<span class="cline-any cline-yes">532x</span>
|
493
|
+
<span class="cline-any cline-yes">532x</span>
|
508
494
|
<span class="cline-any cline-yes">1x</span>
|
509
495
|
<span class="cline-any cline-yes">1x</span>
|
510
|
-
<span class="cline-any cline-yes">688x</span>
|
511
|
-
<span class="cline-any cline-yes">688x</span>
|
512
|
-
<span class="cline-any cline-yes">688x</span>
|
513
496
|
<span class="cline-any cline-yes">1x</span>
|
514
497
|
<span class="cline-any cline-yes">1x</span>
|
515
498
|
<span class="cline-any cline-yes">1x</span>
|
516
499
|
<span class="cline-any cline-yes">1x</span>
|
500
|
+
<span class="cline-any cline-yes">3405x</span>
|
501
|
+
<span class="cline-any cline-yes">3405x</span>
|
502
|
+
<span class="cline-any cline-yes">3405x</span>
|
503
|
+
<span class="cline-any cline-yes">3405x</span>
|
504
|
+
<span class="cline-any cline-yes">3405x</span>
|
517
505
|
<span class="cline-any cline-yes">1x</span>
|
518
506
|
<span class="cline-any cline-yes">1x</span>
|
519
|
-
<span class="cline-any cline-
|
520
|
-
<span class="cline-any cline-
|
521
|
-
<span class="cline-any cline-
|
522
|
-
<span class="cline-any cline-yes">3814x</span>
|
507
|
+
<span class="cline-any cline-no"> </span>
|
508
|
+
<span class="cline-any cline-no"> </span>
|
509
|
+
<span class="cline-any cline-no"> </span>
|
523
510
|
<span class="cline-any cline-yes">1x</span>
|
524
511
|
<span class="cline-any cline-yes">1x</span>
|
525
512
|
<span class="cline-any cline-yes">1x</span>
|
@@ -528,11 +515,11 @@
|
|
528
515
|
<span class="cline-any cline-yes">1x</span>
|
529
516
|
<span class="cline-any cline-yes">1x</span>
|
530
517
|
<span class="cline-any cline-yes">1x</span>
|
531
|
-
<span class="cline-any cline-yes">
|
532
|
-
<span class="cline-any cline-yes">
|
533
|
-
<span class="cline-any cline-yes">
|
534
|
-
<span class="cline-any cline-yes">
|
535
|
-
<span class="cline-any cline-yes">
|
518
|
+
<span class="cline-any cline-yes">222x</span>
|
519
|
+
<span class="cline-any cline-yes">222x</span>
|
520
|
+
<span class="cline-any cline-yes">222x</span>
|
521
|
+
<span class="cline-any cline-yes">222x</span>
|
522
|
+
<span class="cline-any cline-yes">222x</span>
|
536
523
|
<span class="cline-any cline-yes">1x</span>
|
537
524
|
<span class="cline-any cline-yes">1x</span>
|
538
525
|
<span class="cline-any cline-yes">1x</span>
|
@@ -540,10 +527,10 @@
|
|
540
527
|
<span class="cline-any cline-yes">1x</span>
|
541
528
|
<span class="cline-any cline-yes">1x</span>
|
542
529
|
<span class="cline-any cline-yes">1x</span>
|
543
|
-
<span class="cline-any cline-yes">
|
544
|
-
<span class="cline-any cline-yes">
|
545
|
-
<span class="cline-any cline-yes">
|
546
|
-
<span class="cline-any cline-yes">
|
530
|
+
<span class="cline-any cline-yes">3416x</span>
|
531
|
+
<span class="cline-any cline-yes">3416x</span>
|
532
|
+
<span class="cline-any cline-yes">3416x</span>
|
533
|
+
<span class="cline-any cline-yes">3416x</span>
|
547
534
|
<span class="cline-any cline-yes">1x</span>
|
548
535
|
<span class="cline-any cline-yes">1x</span>
|
549
536
|
<span class="cline-any cline-yes">1x</span>
|
@@ -552,22 +539,22 @@
|
|
552
539
|
<span class="cline-any cline-yes">1x</span>
|
553
540
|
<span class="cline-any cline-yes">1x</span>
|
554
541
|
<span class="cline-any cline-yes">1x</span>
|
555
|
-
<span class="cline-any cline-yes">
|
556
|
-
<span class="cline-any cline-yes">
|
557
|
-
<span class="cline-any cline-yes">
|
558
|
-
<span class="cline-any cline-yes">
|
559
|
-
<span class="cline-any cline-yes">
|
560
|
-
<span class="cline-any cline-yes">
|
561
|
-
<span class="cline-any cline-yes">
|
562
|
-
<span class="cline-any cline-yes">
|
542
|
+
<span class="cline-any cline-yes">544x</span>
|
543
|
+
<span class="cline-any cline-yes">544x</span>
|
544
|
+
<span class="cline-any cline-yes">483x</span>
|
545
|
+
<span class="cline-any cline-yes">483x</span>
|
546
|
+
<span class="cline-any cline-yes">544x</span>
|
547
|
+
<span class="cline-any cline-yes">791x</span>
|
548
|
+
<span class="cline-any cline-yes">791x</span>
|
549
|
+
<span class="cline-any cline-yes">791x</span>
|
563
550
|
<span class="cline-any cline-yes">518x</span>
|
564
551
|
<span class="cline-any cline-yes">518x</span>
|
565
|
-
<span class="cline-any cline-yes">
|
552
|
+
<span class="cline-any cline-yes">791x</span>
|
566
553
|
<span class="cline-any cline-yes">460x</span>
|
567
554
|
<span class="cline-any cline-yes">460x</span>
|
568
555
|
<span class="cline-any cline-yes">460x</span>
|
569
|
-
<span class="cline-any cline-yes">
|
570
|
-
<span class="cline-any cline-yes">
|
556
|
+
<span class="cline-any cline-yes">210x</span>
|
557
|
+
<span class="cline-any cline-yes">544x</span>
|
571
558
|
<span class="cline-any cline-yes">1x</span>
|
572
559
|
<span class="cline-any cline-yes">1x</span>
|
573
560
|
<span class="cline-any cline-yes">1x</span>
|
@@ -609,48 +596,24 @@
|
|
609
596
|
<span class="cline-any cline-no"> </span>
|
610
597
|
<span class="cline-any cline-yes">1x</span>
|
611
598
|
<span class="cline-any cline-yes">1x</span>
|
612
|
-
<span class="cline-any cline-yes">
|
613
|
-
<span class="cline-any cline-yes">
|
614
|
-
<span class="cline-any cline-yes">
|
615
|
-
<span class="cline-any cline-yes">
|
616
|
-
<span class="cline-any cline-yes">
|
617
|
-
<span class="cline-any cline-yes">
|
618
|
-
<span class="cline-any cline-yes">
|
619
|
-
<span class="cline-any cline-yes">
|
620
|
-
<span class="cline-any cline-yes">
|
621
|
-
<span class="cline-any cline-yes">
|
622
|
-
<span class="cline-any cline-yes">
|
623
|
-
<span class="cline-any cline-yes">
|
624
|
-
<span class="cline-any cline-yes">58x</span>
|
625
|
-
<span class="cline-any cline-yes">58x</span>
|
626
|
-
<span class="cline-any cline-yes">58x</span>
|
627
|
-
<span class="cline-any cline-yes">58x</span>
|
628
|
-
<span class="cline-any cline-yes">327x</span>
|
629
|
-
<span class="cline-any cline-yes">327x</span>
|
630
|
-
<span class="cline-any cline-yes">327x</span>
|
631
|
-
<span class="cline-any cline-yes">327x</span>
|
632
|
-
<span class="cline-any cline-yes">169x</span>
|
633
|
-
<span class="cline-any cline-yes">58x</span>
|
634
|
-
<span class="cline-any cline-yes">58x</span>
|
635
|
-
<span class="cline-any cline-yes">58x</span>
|
636
|
-
<span class="cline-any cline-yes">58x</span>
|
637
|
-
<span class="cline-any cline-yes">1x</span>
|
638
|
-
<span class="cline-any cline-yes">1x</span>
|
639
|
-
<span class="cline-any cline-yes">58x</span>
|
640
|
-
<span class="cline-any cline-yes">1x</span>
|
641
|
-
<span class="cline-any cline-yes">1x</span>
|
642
|
-
<span class="cline-any cline-yes">255x</span>
|
643
|
-
<span class="cline-any cline-yes">255x</span>
|
644
|
-
<span class="cline-any cline-yes">255x</span>
|
645
|
-
<span class="cline-any cline-yes">255x</span>
|
599
|
+
<span class="cline-any cline-yes">63x</span>
|
600
|
+
<span class="cline-any cline-yes">63x</span>
|
601
|
+
<span class="cline-any cline-yes">63x</span>
|
602
|
+
<span class="cline-any cline-yes">63x</span>
|
603
|
+
<span class="cline-any cline-yes">63x</span>
|
604
|
+
<span class="cline-any cline-yes">1x</span>
|
605
|
+
<span class="cline-any cline-yes">1x</span>
|
606
|
+
<span class="cline-any cline-yes">63x</span>
|
607
|
+
<span class="cline-any cline-yes">1x</span>
|
608
|
+
<span class="cline-any cline-yes">1x</span>
|
609
|
+
<span class="cline-any cline-yes">311x</span>
|
610
|
+
<span class="cline-any cline-yes">311x</span>
|
646
611
|
<span class="cline-any cline-no"> </span>
|
647
612
|
<span class="cline-any cline-no"> </span>
|
648
|
-
<span class="cline-any cline-yes">
|
649
|
-
<span class="cline-any cline-yes">
|
650
|
-
<span class="cline-any cline-yes">
|
651
|
-
<span class="cline-any cline-yes">
|
652
|
-
<span class="cline-any cline-yes">255x</span>
|
653
|
-
<span class="cline-any cline-yes">255x</span>
|
613
|
+
<span class="cline-any cline-yes">311x</span>
|
614
|
+
<span class="cline-any cline-yes">311x</span>
|
615
|
+
<span class="cline-any cline-yes">311x</span>
|
616
|
+
<span class="cline-any cline-yes">311x</span>
|
654
617
|
<span class="cline-any cline-yes">1x</span>
|
655
618
|
<span class="cline-any cline-yes">1x</span>
|
656
619
|
<span class="cline-any cline-yes">1x</span>
|
@@ -659,53 +622,51 @@
|
|
659
622
|
<span class="cline-any cline-yes">1x</span>
|
660
623
|
<span class="cline-any cline-yes">1x</span>
|
661
624
|
<span class="cline-any cline-yes">1x</span>
|
662
|
-
<span class="cline-any cline-yes">
|
663
|
-
<span class="cline-any cline-yes">
|
664
|
-
<span class="cline-any cline-yes">
|
665
|
-
<span class="cline-any cline-yes">
|
666
|
-
<span class="cline-any cline-yes">
|
667
|
-
<span class="cline-any cline-yes">
|
668
|
-
<span class="cline-any cline-yes">
|
669
|
-
<span class="cline-any cline-yes">
|
670
|
-
<span class="cline-any cline-yes">
|
671
|
-
<span class="cline-any cline-yes">
|
672
|
-
<span class="cline-any cline-yes">
|
673
|
-
<span class="cline-any cline-yes">
|
674
|
-
<span class="cline-any cline-yes">
|
675
|
-
<span class="cline-any cline-yes">
|
676
|
-
<span class="cline-any cline-yes">
|
677
|
-
<span class="cline-any cline-yes">
|
625
|
+
<span class="cline-any cline-yes">317x</span>
|
626
|
+
<span class="cline-any cline-yes">317x</span>
|
627
|
+
<span class="cline-any cline-yes">317x</span>
|
628
|
+
<span class="cline-any cline-yes">317x</span>
|
629
|
+
<span class="cline-any cline-yes">439x</span>
|
630
|
+
<span class="cline-any cline-yes">439x</span>
|
631
|
+
<span class="cline-any cline-yes">586x</span>
|
632
|
+
<span class="cline-any cline-yes">586x</span>
|
633
|
+
<span class="cline-any cline-yes">586x</span>
|
634
|
+
<span class="cline-any cline-yes">586x</span>
|
635
|
+
<span class="cline-any cline-yes">586x</span>
|
636
|
+
<span class="cline-any cline-yes">586x</span>
|
637
|
+
<span class="cline-any cline-yes">586x</span>
|
638
|
+
<span class="cline-any cline-yes">439x</span>
|
639
|
+
<span class="cline-any cline-yes">439x</span>
|
640
|
+
<span class="cline-any cline-yes">317x</span>
|
678
641
|
<span class="cline-any cline-yes">1x</span>
|
679
642
|
<span class="cline-any cline-yes">1x</span>
|
680
643
|
<span class="cline-any cline-yes">1x</span>
|
681
644
|
<span class="cline-any cline-yes">1x</span>
|
682
645
|
<span class="cline-any cline-yes">1x</span>
|
683
|
-
<span class="cline-any cline-yes">
|
684
|
-
<span class="cline-any cline-yes">
|
685
|
-
<span class="cline-any cline-yes">
|
686
|
-
<span class="cline-any cline-yes">
|
687
|
-
<span class="cline-any cline-yes">
|
688
|
-
<span class="cline-any cline-yes">525x</span>
|
689
|
-
<span class="cline-any cline-yes">525x</span>
|
646
|
+
<span class="cline-any cline-yes">586x</span>
|
647
|
+
<span class="cline-any cline-yes">586x</span>
|
648
|
+
<span class="cline-any cline-yes">586x</span>
|
649
|
+
<span class="cline-any cline-yes">586x</span>
|
650
|
+
<span class="cline-any cline-yes">586x</span>
|
690
651
|
<span class="cline-any cline-yes">1x</span>
|
691
652
|
<span class="cline-any cline-yes">1x</span>
|
692
653
|
<span class="cline-any cline-yes">1x</span>
|
693
654
|
<span class="cline-any cline-yes">1x</span>
|
694
655
|
<span class="cline-any cline-yes">1x</span>
|
695
|
-
<span class="cline-any cline-yes">
|
696
|
-
<span class="cline-any cline-yes">
|
697
|
-
<span class="cline-any cline-yes">
|
698
|
-
<span class="cline-any cline-yes">
|
699
|
-
<span class="cline-any cline-yes">
|
700
|
-
<span class="cline-any cline-yes">
|
701
|
-
<span class="cline-any cline-yes">
|
702
|
-
<span class="cline-any cline-yes">
|
703
|
-
<span class="cline-any cline-yes">
|
704
|
-
<span class="cline-any cline-yes">
|
705
|
-
<span class="cline-any cline-yes">
|
706
|
-
<span class="cline-any cline-yes">
|
707
|
-
<span class="cline-any cline-yes">
|
708
|
-
<span class="cline-any cline-yes">
|
656
|
+
<span class="cline-any cline-yes">586x</span>
|
657
|
+
<span class="cline-any cline-yes">586x</span>
|
658
|
+
<span class="cline-any cline-yes">586x</span>
|
659
|
+
<span class="cline-any cline-yes">855x</span>
|
660
|
+
<span class="cline-any cline-yes">2247x</span>
|
661
|
+
<span class="cline-any cline-yes">2247x</span>
|
662
|
+
<span class="cline-any cline-yes">3435x</span>
|
663
|
+
<span class="cline-any cline-yes">1997x</span>
|
664
|
+
<span class="cline-any cline-yes">3435x</span>
|
665
|
+
<span class="cline-any cline-yes">3435x</span>
|
666
|
+
<span class="cline-any cline-yes">2247x</span>
|
667
|
+
<span class="cline-any cline-yes">2247x</span>
|
668
|
+
<span class="cline-any cline-yes">538x</span>
|
669
|
+
<span class="cline-any cline-yes">586x</span>
|
709
670
|
<span class="cline-any cline-yes">1x</span>
|
710
671
|
<span class="cline-any cline-yes">1x</span>
|
711
672
|
<span class="cline-any cline-yes">1x</span>
|
@@ -713,63 +674,61 @@
|
|
713
674
|
<span class="cline-any cline-yes">1x</span>
|
714
675
|
<span class="cline-any cline-yes">1x</span>
|
715
676
|
<span class="cline-any cline-yes">1x</span>
|
716
|
-
<span class="cline-any cline-yes">255x</span>
|
717
|
-
<span class="cline-any cline-yes">255x</span>
|
718
|
-
<span class="cline-any cline-yes">255x</span>
|
719
|
-
<span class="cline-any cline-yes">255x</span>
|
720
|
-
<span class="cline-any cline-yes">255x</span>
|
721
|
-
<span class="cline-any cline-yes">255x</span>
|
722
677
|
<span class="cline-any cline-yes">311x</span>
|
723
|
-
<span class="cline-any cline-yes">
|
724
|
-
<span class="cline-any cline-yes">
|
678
|
+
<span class="cline-any cline-yes">311x</span>
|
679
|
+
<span class="cline-any cline-yes">311x</span>
|
680
|
+
<span class="cline-any cline-yes">311x</span>
|
681
|
+
<span class="cline-any cline-yes">311x</span>
|
682
|
+
<span class="cline-any cline-yes">311x</span>
|
683
|
+
<span class="cline-any cline-yes">372x</span>
|
684
|
+
<span class="cline-any cline-yes">1145x</span>
|
685
|
+
<span class="cline-any cline-yes">1145x</span>
|
686
|
+
<span class="cline-any cline-yes">1145x</span>
|
725
687
|
<span class="cline-any cline-yes">24x</span>
|
726
|
-
<span class="cline-any cline-yes">
|
727
|
-
<span class="cline-any cline-yes">
|
728
|
-
<span class="cline-any cline-yes">
|
729
|
-
<span class="cline-any cline-yes">
|
688
|
+
<span class="cline-any cline-yes">1145x</span>
|
689
|
+
<span class="cline-any cline-yes">1121x</span>
|
690
|
+
<span class="cline-any cline-yes">1121x</span>
|
691
|
+
<span class="cline-any cline-yes">1145x</span>
|
692
|
+
<span class="cline-any cline-yes">372x</span>
|
693
|
+
<span class="cline-any cline-yes">311x</span>
|
694
|
+
<span class="cline-any cline-yes">311x</span>
|
695
|
+
<span class="cline-any cline-yes">311x</span>
|
730
696
|
<span class="cline-any cline-yes">311x</span>
|
731
|
-
<span class="cline-any cline-yes">
|
732
|
-
<span class="cline-any cline-yes">
|
733
|
-
<span class="cline-any cline-yes">
|
734
|
-
<span class="cline-any cline-yes">
|
735
|
-
<span class="cline-any cline-yes">
|
736
|
-
<span class="cline-any cline-yes">
|
737
|
-
<span class="cline-any cline-yes">
|
738
|
-
<span class="cline-any cline-yes">
|
739
|
-
<span class="cline-any cline-yes">
|
740
|
-
<span class="cline-any cline-yes">
|
741
|
-
<span class="cline-any cline-yes">
|
742
|
-
<span class="cline-any cline-yes">
|
743
|
-
<span class="cline-any cline-yes">
|
744
|
-
<span class="cline-any cline-yes">
|
745
|
-
<span class="cline-any cline-yes">
|
746
|
-
<span class="cline-any cline-yes">
|
747
|
-
<span class="cline-any cline-yes">
|
748
|
-
<span class="cline-any cline-yes">
|
749
|
-
<span class="cline-any cline-yes">
|
750
|
-
<span class="cline-any cline-yes">
|
751
|
-
<span class="cline-any cline-yes">
|
752
|
-
<span class="cline-any cline-yes">
|
753
|
-
<span class="cline-any cline-yes">1x</span>
|
754
|
-
<span class="cline-any cline-yes">
|
755
|
-
<span class="cline-any cline-yes">
|
756
|
-
<span class="cline-any cline-yes">
|
757
|
-
<span class="cline-any cline-yes">
|
758
|
-
<span class="cline-any cline-yes">
|
759
|
-
<span class="cline-any cline-yes">
|
760
|
-
<span class="cline-any cline-yes">
|
761
|
-
<span class="cline-any cline-yes">
|
762
|
-
<span class="cline-any cline-yes">931x</span>
|
763
|
-
<span class="cline-any cline-yes">931x</span>
|
764
|
-
<span class="cline-any cline-yes">931x</span>
|
765
|
-
<span class="cline-any cline-yes">871x</span>
|
766
|
-
<span class="cline-any cline-yes">871x</span>
|
767
|
-
<span class="cline-any cline-yes">871x</span>
|
768
|
-
<span class="cline-any cline-yes">871x</span>
|
769
|
-
<span class="cline-any cline-yes">931x</span>
|
697
|
+
<span class="cline-any cline-yes">311x</span>
|
698
|
+
<span class="cline-any cline-yes">1121x</span>
|
699
|
+
<span class="cline-any cline-yes">1121x</span>
|
700
|
+
<span class="cline-any cline-yes">110x</span>
|
701
|
+
<span class="cline-any cline-yes">1121x</span>
|
702
|
+
<span class="cline-any cline-yes">1011x</span>
|
703
|
+
<span class="cline-any cline-yes">1011x</span>
|
704
|
+
<span class="cline-any cline-yes">1121x</span>
|
705
|
+
<span class="cline-any cline-yes">311x</span>
|
706
|
+
<span class="cline-any cline-yes">311x</span>
|
707
|
+
<span class="cline-any cline-yes">311x</span>
|
708
|
+
<span class="cline-any cline-yes">311x</span>
|
709
|
+
<span class="cline-any cline-yes">311x</span>
|
710
|
+
<span class="cline-any cline-yes">311x</span>
|
711
|
+
<span class="cline-any cline-yes">311x</span>
|
712
|
+
<span class="cline-any cline-yes">311x</span>
|
713
|
+
<span class="cline-any cline-yes">1x</span>
|
714
|
+
<span class="cline-any cline-yes">1x</span>
|
715
|
+
<span class="cline-any cline-yes">1x</span>
|
716
|
+
<span class="cline-any cline-yes">1x</span>
|
717
|
+
<span class="cline-any cline-yes">1x</span>
|
718
|
+
<span class="cline-any cline-yes">1x</span>
|
719
|
+
<span class="cline-any cline-yes">1x</span>
|
720
|
+
<span class="cline-any cline-yes">1145x</span>
|
721
|
+
<span class="cline-any cline-yes">1145x</span>
|
722
|
+
<span class="cline-any cline-yes">1145x</span>
|
723
|
+
<span class="cline-any cline-yes">1145x</span>
|
724
|
+
<span class="cline-any cline-yes">1145x</span>
|
725
|
+
<span class="cline-any cline-yes">1080x</span>
|
726
|
+
<span class="cline-any cline-yes">1080x</span>
|
727
|
+
<span class="cline-any cline-yes">1145x</span>
|
770
728
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { Block, encode, decode } from 'multiformats/block'
|
771
729
|
import { sha256 } from 'multiformats/hashes/sha2'
|
772
730
|
import * as cbor from '@ipld/dag-cbor'
|
731
|
+
import { CIDCounter } from 'prolly-trees/utils'
|
773
732
|
|
774
733
|
/**
|
775
734
|
* @template T
|
@@ -790,7 +749,7 @@ import * as cbor from '@ipld/dag-cbor'
|
|
790
749
|
* Advance the clock by adding an event.
|
791
750
|
*
|
792
751
|
* @template T
|
793
|
-
* @param {import('
|
752
|
+
* @param {import('../test/block').BlockFetcher} blocks Block storage.
|
794
753
|
* @param {EventLink<T>[]} head The head of the clock.
|
795
754
|
* @param {EventLink<T>} event The event to add.
|
796
755
|
* @returns {Promise<EventLink<T>[]>} The new head of the clock.
|
@@ -798,10 +757,10 @@ import * as cbor from '@ipld/dag-cbor'
|
|
798
757
|
export async function advance (blocks, head, event) {
|
799
758
|
/** @type {EventFetcher<T>} */
|
800
759
|
const events = new EventFetcher(blocks)
|
801
|
-
const headmap = new Map(head.map(cid => [cid.toString(), cid]))
|
760
|
+
const headmap = new Map(head.map((cid) => [cid.toString(), cid]))
|
802
761
|
|
803
762
|
// Check if the headmap already includes the event, return head if it does
|
804
|
-
if (headmap.has(event.toString())) <span class="branch-0 cbranch-no" title="branch not covered" >return head</span>
|
763
|
+
if (headmap.has(event.toString())) <span class="branch-0 cbranch-no" title="branch not covered" >return { head, cids: events.cids }</span>
|
805
764
|
|
806
765
|
// Does event contain the clock?
|
807
766
|
let changed = false
|
@@ -815,18 +774,18 @@ export async function advance (blocks, head, event) {
|
|
815
774
|
|
816
775
|
// If the headmap has been changed, return the new headmap values
|
817
776
|
if (changed) {
|
818
|
-
return [...headmap.values()]
|
777
|
+
return { head: [...headmap.values()], cids: events.cids }
|
819
778
|
}
|
820
779
|
|
821
780
|
// Does clock contain the event?
|
822
781
|
for (const p of head) {
|
823
782
|
if (await contains(events, p, event)) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
824
|
-
<span class="cstat-no" title="statement not covered" > return head</span>
|
783
|
+
<span class="cstat-no" title="statement not covered" > return { head, cids: events.cids }</span>
|
825
784
|
<span class="cstat-no" title="statement not covered" > }</span>
|
826
785
|
}
|
827
786
|
|
828
787
|
// Return the head concatenated with the new event if it passes both checks
|
829
|
-
return head.concat(event)
|
788
|
+
return { head: head.concat(event), cids: events.cids }
|
830
789
|
}
|
831
790
|
|
832
791
|
/**
|
@@ -857,10 +816,11 @@ export class EventBlock extends Block {
|
|
857
816
|
|
858
817
|
/** @template T */
|
859
818
|
export class EventFetcher {
|
860
|
-
/** @param {import('
|
819
|
+
/** @param {import('../test/block').BlockFetcher} blocks */
|
861
820
|
constructor (blocks) {
|
862
821
|
/** @private */
|
863
822
|
this._blocks = blocks
|
823
|
+
this._cids = new CIDCounter()
|
864
824
|
}
|
865
825
|
|
866
826
|
/**
|
@@ -869,9 +829,15 @@ export class EventFetcher {
|
|
869
829
|
*/
|
870
830
|
async get (link) {
|
871
831
|
const block = await this._blocks.get(link)
|
832
|
+
this._cids.add({ address: link })
|
872
833
|
if (!block) <span class="branch-0 cbranch-no" title="branch not covered" >throw new Error(`missing block: ${link}`)</span>
|
873
834
|
return decodeEventBlock(block.bytes)
|
874
835
|
}
|
836
|
+
|
837
|
+
<span class="fstat-no" title="function not covered" > async all () {</span>
|
838
|
+
<span class="cstat-no" title="statement not covered" > await Promise.all([...this._cids])</span>
|
839
|
+
<span class="cstat-no" title="statement not covered" > return this._cids</span>
|
840
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
875
841
|
}
|
876
842
|
|
877
843
|
/**
|
@@ -914,7 +880,7 @@ async function contains (events, a, b) {
|
|
914
880
|
if (link.toString() === b.toString()) return true
|
915
881
|
// if any of b's parents are this link, then b cannot exist in any of the
|
916
882
|
// tree below, since that would create a cycle.
|
917
|
-
if (bevent.parents.some(p => link.toString() === p.toString())) continue
|
883
|
+
if (bevent.parents.some((p) => link.toString() === p.toString())) continue
|
918
884
|
const { value: event } = await events.get(link)
|
919
885
|
links.push(...event.parents)
|
920
886
|
}
|
@@ -923,17 +889,17 @@ async function contains (events, a, b) {
|
|
923
889
|
|
924
890
|
/**
|
925
891
|
* @template T
|
926
|
-
* @param {import('
|
892
|
+
* @param {import('../test/block').BlockFetcher} blocks Block storage.
|
927
893
|
* @param {EventLink<T>[]} head
|
928
894
|
* @param {object} [options]
|
929
895
|
* @param {(b: EventBlockView<T>) => string} [options.renderNodeLabel]
|
930
896
|
*/
|
931
897
|
export <span class="fstat-no" title="function not covered" >async function * vis (blocks, head, options = {}) {</span>
|
932
|
-
<span class="cstat-no" title="statement not covered" > const renderNodeLabel = options.renderNodeLabel ?? (b =>
|
898
|
+
<span class="cstat-no" title="statement not covered" > const renderNodeLabel = options.renderNodeLabel ?? ((b) => b.value.data.value)</span>
|
933
899
|
<span class="cstat-no" title="statement not covered" > const events = new EventFetcher(blocks)</span>
|
934
900
|
<span class="cstat-no" title="statement not covered" > yield 'digraph clock {'</span>
|
935
901
|
<span class="cstat-no" title="statement not covered" > yield ' node [shape=point fontname="Courier"]; head;'</span>
|
936
|
-
<span class="cstat-no" title="statement not covered" > const hevents = await Promise.all(head.map(link => events.get(link)))</span>
|
902
|
+
<span class="cstat-no" title="statement not covered" > const hevents = await Promise.all(head.map((link) => events.get(link)))</span>
|
937
903
|
<span class="cstat-no" title="statement not covered" > const links = []</span>
|
938
904
|
<span class="cstat-no" title="statement not covered" > const nodes = new Set()</span>
|
939
905
|
<span class="cstat-no" title="statement not covered" > for (const e of hevents) {</span>
|
@@ -961,46 +927,22 @@ export <span class="fstat-no" title="function not covered" >async function * vis
|
|
961
927
|
<span class="cstat-no" title="statement not covered" >}</span>
|
962
928
|
|
963
929
|
export async function findEventsToSync (blocks, head) {
|
964
|
-
const toSync = await findUnknownSortedEvents(blocks, head, await findCommonAncestorWithSortedEvents(blocks, head))
|
965
|
-
return toSync
|
966
|
-
}
|
967
|
-
|
968
|
-
export async function findUnknownSortedEvents (blocks, children, { ancestor, sorted }) {
|
969
930
|
const events = new EventFetcher(blocks)
|
970
|
-
|
971
|
-
|
972
|
-
|
973
|
-
// const knownAncestor = await findCommonAncestor(events, [...children]) // should this be [lowerEvent.cid] ?
|
974
|
-
// console.x('already knownAncestor', knownAncestor.toString() === ancestor.toString(),
|
975
|
-
// (await (await decodeEventBlock((await blocks.get(knownAncestor)).bytes)).value.data?.value), knownAncestor
|
976
|
-
// )
|
977
|
-
|
978
|
-
const matchHead = [ancestor]
|
979
|
-
const unknownSorted = await asyncFilter(sorted, async (uks) => {
|
980
|
-
for (const ev of matchHead) {
|
981
|
-
const isIn = await contains(events, ev, uks.cid)
|
982
|
-
if (isIn) return false
|
983
|
-
}
|
984
|
-
return true
|
985
|
-
})
|
986
|
-
// console.x('unknownSorted contains', unknownSorted.length, sorted.length)
|
987
|
-
return unknownSorted
|
931
|
+
const { ancestor, sorted } = await findCommonAncestorWithSortedEvents(events, head)
|
932
|
+
const toSync = await asyncFilter(sorted, async (uks) => !(await contains(events, ancestor, uks.cid)))
|
933
|
+
return { cids: events.cids, events: toSync }
|
988
934
|
}
|
989
935
|
|
990
|
-
const asyncFilter = async (arr, predicate) =>
|
991
|
-
.then((results) => arr.filter((_v, index) => results[index]))
|
992
|
-
|
993
|
-
export async function findCommonAncestorWithSortedEvents (blocks, children) {
|
994
|
-
const events = new EventFetcher(blocks)
|
936
|
+
const asyncFilter = async (arr, predicate) =>
|
937
|
+
Promise.all(arr.map(predicate)).then((results) => arr.filter((_v, index) => results[index]))
|
995
938
|
|
939
|
+
export async function findCommonAncestorWithSortedEvents (events, children) {
|
996
940
|
const ancestor = await findCommonAncestor(events, children)
|
997
941
|
if (!ancestor) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
998
942
|
<span class="cstat-no" title="statement not covered" > throw new Error('failed to find common ancestor event')</span>
|
999
943
|
<span class="cstat-no" title="statement not covered" > }</span>
|
1000
944
|
// Sort the events by their sequence number
|
1001
945
|
const sorted = await findSortedEvents(events, children, ancestor)
|
1002
|
-
// console.x('ancstor', ancestor, (await decodeEventBlock((await blocks.get(ancestor)).bytes)).value.data?.value)
|
1003
|
-
// sorted.forEach(({ cid, value }) => console.x('xsorted', cid, value.data.value))
|
1004
946
|
return { ancestor, sorted }
|
1005
947
|
}
|
1006
948
|
|
@@ -1035,9 +977,7 @@ async function findCommonAncestor (events, children) {
|
|
1035
977
|
async function findAncestorCandidate (events, root) {
|
1036
978
|
const { value: event } = await events.get(root)
|
1037
979
|
if (!event.parents.length) return root
|
1038
|
-
return event.parents.length === 1
|
1039
|
-
? event.parents[0]
|
1040
|
-
: findCommonAncestor(events, event.parents)
|
980
|
+
return event.parents.length === 1 ? event.parents[0] : findCommonAncestor(events, event.parents)
|
1041
981
|
}
|
1042
982
|
|
1043
983
|
/**
|
@@ -1072,6 +1012,7 @@ async function findSortedEvents (events, head, tail) {
|
|
1072
1012
|
const all = await Promise.all(head.map((h) => findEvents(events, h, tail)))
|
1073
1013
|
for (const arr of all) {
|
1074
1014
|
for (const { event, depth } of arr) {
|
1015
|
+
// console.log('event value', event.value.data.value)
|
1075
1016
|
const info = weights.get(event.cid.toString())
|
1076
1017
|
if (info) {
|
1077
1018
|
info.weight += depth
|
@@ -1096,9 +1037,7 @@ async function findSortedEvents (events, head, tail) {
|
|
1096
1037
|
// sort by weight, and by CID within weight
|
1097
1038
|
const sorted = Array.from(buckets)
|
1098
1039
|
.sort((a, b) => b[0] - a[0])
|
1099
|
-
.flatMap(([, es]) =>
|
1100
|
-
es.sort((a, b) => (String(a.cid) < String(b.cid) ? -1 : 1))
|
1101
|
-
)
|
1040
|
+
.flatMap(([, es]) => es.sort((a, b) => (String(a.cid) < String(b.cid) ? -1 : 1)))
|
1102
1041
|
// console.log('sorted', sorted.map(s => s.value.data.value))
|
1103
1042
|
return sorted
|
1104
1043
|
}
|
@@ -1114,9 +1053,7 @@ async function findEvents (events, start, end, depth = 0) {
|
|
1114
1053
|
const acc = [{ event, depth }]
|
1115
1054
|
const { parents } = event.value
|
1116
1055
|
if (parents.length === 1 && String(parents[0]) === String(end)) return acc
|
1117
|
-
const rest = await Promise.all(
|
1118
|
-
parents.map((p) => findEvents(events, p, end, depth + 1))
|
1119
|
-
)
|
1056
|
+
const rest = await Promise.all(parents.map((p) => findEvents(events, p, end, depth + 1)))
|
1120
1057
|
return acc.concat(...rest)
|
1121
1058
|
}
|
1122
1059
|
</pre></td></tr></table></pre>
|
@@ -1126,7 +1063,7 @@ async function findEvents (events, start, end, depth = 0) {
|
|
1126
1063
|
<div class='footer quiet pad2 space-top1 center small'>
|
1127
1064
|
Code coverage generated by
|
1128
1065
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
1129
|
-
at 2023-
|
1066
|
+
at 2023-04-01T18:16:45.716Z
|
1130
1067
|
</div>
|
1131
1068
|
<script src="prettify.js"></script>
|
1132
1069
|
<script>
|