@peerbit/shared-log 13.1.17 → 13.2.0
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/dist/benchmark/index.js +91 -29
- package/dist/benchmark/index.js.map +1 -1
- package/dist/benchmark/native-graph.js +120 -10
- package/dist/benchmark/native-graph.js.map +1 -1
- package/dist/benchmark/network-preset-e2e.d.ts +2 -0
- package/dist/benchmark/network-preset-e2e.d.ts.map +1 -0
- package/dist/benchmark/network-preset-e2e.js +497 -0
- package/dist/benchmark/network-preset-e2e.js.map +1 -0
- package/dist/benchmark/receive-prune.d.ts +2 -0
- package/dist/benchmark/receive-prune.d.ts.map +1 -0
- package/dist/benchmark/receive-prune.js +816 -0
- package/dist/benchmark/receive-prune.js.map +1 -0
- package/dist/benchmark/sync-catchup.d.ts +1 -2
- package/dist/benchmark/sync-catchup.d.ts.map +1 -1
- package/dist/benchmark/sync-catchup.js +175 -7
- package/dist/benchmark/sync-catchup.js.map +1 -1
- package/dist/src/checked-prune.d.ts +3 -0
- package/dist/src/checked-prune.d.ts.map +1 -1
- package/dist/src/checked-prune.js +24 -0
- package/dist/src/checked-prune.js.map +1 -1
- package/dist/src/exchange-heads.d.ts +238 -1
- package/dist/src/exchange-heads.d.ts.map +1 -1
- package/dist/src/exchange-heads.js +1512 -36
- package/dist/src/exchange-heads.js.map +1 -1
- package/dist/src/index.d.ts +276 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7358 -666
- package/dist/src/index.js.map +1 -1
- package/dist/src/pid.d.ts.map +1 -1
- package/dist/src/pid.js +25 -9
- package/dist/src/pid.js.map +1 -1
- package/dist/src/ranges.d.ts +11 -2
- package/dist/src/ranges.d.ts.map +1 -1
- package/dist/src/ranges.js +74 -30
- package/dist/src/ranges.js.map +1 -1
- package/dist/src/sync/index.d.ts +77 -2
- package/dist/src/sync/index.d.ts.map +1 -1
- package/dist/src/sync/rateless-iblt.d.ts +11 -5
- package/dist/src/sync/rateless-iblt.d.ts.map +1 -1
- package/dist/src/sync/rateless-iblt.js +123 -60
- package/dist/src/sync/rateless-iblt.js.map +1 -1
- package/dist/src/sync/simple.d.ts +56 -4
- package/dist/src/sync/simple.d.ts.map +1 -1
- package/dist/src/sync/simple.js +495 -63
- package/dist/src/sync/simple.js.map +1 -1
- package/dist/src/utils.d.ts +2 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +49 -2
- package/dist/src/utils.js.map +1 -1
- package/package.json +27 -17
- package/src/checked-prune.ts +27 -0
- package/src/exchange-heads.ts +2018 -41
- package/src/index.ts +13114 -3167
- package/src/pid.ts +24 -13
- package/src/ranges.ts +90 -40
- package/src/sync/index.ts +115 -2
- package/src/sync/rateless-iblt.ts +154 -75
- package/src/sync/simple.ts +590 -95
- package/src/utils.ts +73 -3
package/src/utils.ts
CHANGED
|
@@ -1,7 +1,71 @@
|
|
|
1
1
|
import { Entry, ShallowEntry } from "@peerbit/log";
|
|
2
|
-
import
|
|
2
|
+
import {
|
|
3
|
+
type EntryWithRefs,
|
|
4
|
+
getPreparedRawExchangeHeadGid,
|
|
5
|
+
getPreparedRawExchangeGid,
|
|
6
|
+
} from "./exchange-heads.js";
|
|
3
7
|
import { type EntryReplicated, isEntryReplicated } from "./ranges.js";
|
|
4
8
|
|
|
9
|
+
const getEntryGid = async (entry: Entry<any>): Promise<string> => {
|
|
10
|
+
try {
|
|
11
|
+
return entry.meta.gid;
|
|
12
|
+
} catch {
|
|
13
|
+
return (await entry.getMeta()).gid;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const getEntryGidSync = (entry: Entry<any>): string | undefined => {
|
|
18
|
+
try {
|
|
19
|
+
return entry.meta.gid;
|
|
20
|
+
} catch {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const getHeadGidSync = <
|
|
26
|
+
T extends
|
|
27
|
+
| ShallowEntry
|
|
28
|
+
| Entry<any>
|
|
29
|
+
| EntryWithRefs<any>
|
|
30
|
+
| EntryReplicated<any>,
|
|
31
|
+
>(
|
|
32
|
+
head: T,
|
|
33
|
+
): string | undefined =>
|
|
34
|
+
head instanceof Entry
|
|
35
|
+
? getPreparedRawExchangeGid(head) ?? getEntryGidSync(head)
|
|
36
|
+
: head instanceof ShallowEntry
|
|
37
|
+
? head.meta.gid
|
|
38
|
+
: isEntryReplicated(head)
|
|
39
|
+
? head.gid
|
|
40
|
+
: getPreparedRawExchangeHeadGid(head) ??
|
|
41
|
+
getPreparedRawExchangeGid(head.entry) ??
|
|
42
|
+
getEntryGidSync(head.entry);
|
|
43
|
+
|
|
44
|
+
export const tryGroupByGidSync = <
|
|
45
|
+
T extends
|
|
46
|
+
| ShallowEntry
|
|
47
|
+
| Entry<any>
|
|
48
|
+
| EntryWithRefs<any>
|
|
49
|
+
| EntryReplicated<any>,
|
|
50
|
+
>(
|
|
51
|
+
entries: T[],
|
|
52
|
+
): Map<string, T[]> | undefined => {
|
|
53
|
+
const groupByGid: Map<string, T[]> = new Map();
|
|
54
|
+
for (const head of entries) {
|
|
55
|
+
const gid = getHeadGidSync(head);
|
|
56
|
+
if (gid == null) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
let value = groupByGid.get(gid);
|
|
60
|
+
if (!value) {
|
|
61
|
+
value = [];
|
|
62
|
+
groupByGid.set(gid, value);
|
|
63
|
+
}
|
|
64
|
+
value.push(head);
|
|
65
|
+
}
|
|
66
|
+
return groupByGid;
|
|
67
|
+
};
|
|
68
|
+
|
|
5
69
|
export const groupByGid = async <
|
|
6
70
|
T extends
|
|
7
71
|
| ShallowEntry
|
|
@@ -11,16 +75,22 @@ export const groupByGid = async <
|
|
|
11
75
|
>(
|
|
12
76
|
entries: T[],
|
|
13
77
|
): Promise<Map<string, T[]>> => {
|
|
78
|
+
const syncGrouped = tryGroupByGidSync(entries);
|
|
79
|
+
if (syncGrouped) {
|
|
80
|
+
return syncGrouped;
|
|
81
|
+
}
|
|
82
|
+
|
|
14
83
|
const groupByGid: Map<string, T[]> = new Map();
|
|
15
84
|
for (const head of entries) {
|
|
16
85
|
const gid =
|
|
17
86
|
head instanceof Entry
|
|
18
|
-
?
|
|
87
|
+
? await getEntryGid(head)
|
|
19
88
|
: head instanceof ShallowEntry
|
|
20
89
|
? head.meta.gid
|
|
21
90
|
: isEntryReplicated(head)
|
|
22
91
|
? head.gid
|
|
23
|
-
: (
|
|
92
|
+
: getPreparedRawExchangeHeadGid(head) ??
|
|
93
|
+
(await getEntryGid(head.entry));
|
|
24
94
|
let value = groupByGid.get(gid);
|
|
25
95
|
if (!value) {
|
|
26
96
|
value = [];
|