@peerbit/shared-log 7.0.10 → 7.0.11
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/lib/esm/index.d.ts +5 -0
- package/lib/esm/index.js +106 -45
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/ranges.d.ts +8 -1
- package/lib/esm/ranges.js +145 -67
- package/lib/esm/ranges.js.map +1 -1
- package/lib/esm/role.d.ts +1 -4
- package/lib/esm/role.js +1 -17
- package/lib/esm/role.js.map +1 -1
- package/package.json +5 -5
- package/src/index.ts +134 -59
- package/src/ranges.ts +201 -89
- package/src/role.ts +2 -24
package/lib/esm/ranges.js
CHANGED
|
@@ -1,25 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const maybeIncrementMatured = (role) => {
|
|
5
|
-
if (isMatured(role, time, roleAge)) {
|
|
6
|
-
matured++;
|
|
7
|
-
return true;
|
|
8
|
-
}
|
|
1
|
+
export const containsPoint = (rect, point, eps = 0.00001 // we do this to handle numerical errors
|
|
2
|
+
) => {
|
|
3
|
+
if (rect.factor === 0) {
|
|
9
4
|
return false;
|
|
5
|
+
}
|
|
6
|
+
const start = rect.offset;
|
|
7
|
+
const width = rect.factor + eps; // we do this to handle numerical errors. It is better to be more inclusive
|
|
8
|
+
const endUnwrapped = rect.offset + width;
|
|
9
|
+
let end = endUnwrapped;
|
|
10
|
+
let wrapped = false;
|
|
11
|
+
if (endUnwrapped > 1) {
|
|
12
|
+
end = endUnwrapped % 1;
|
|
13
|
+
wrapped = true;
|
|
14
|
+
}
|
|
15
|
+
const inFirstInterval = point >= start && point < Math.min(endUnwrapped, 1);
|
|
16
|
+
const inSecondInterval = !inFirstInterval && wrapped && point >= 0 && point < end;
|
|
17
|
+
return inFirstInterval || inSecondInterval;
|
|
18
|
+
};
|
|
19
|
+
const collectNodesAroundPoint = (time, roleAge, peers, currentNode, collector, point, done = () => true) => {
|
|
20
|
+
/* let uniqueMatured = 0;
|
|
21
|
+
*/ const maybeIncrementMatured = (rect) => {
|
|
22
|
+
const isMature = isMatured(rect.role, time, roleAge);
|
|
23
|
+
collector(rect, isMature);
|
|
10
24
|
};
|
|
11
25
|
// Assume peers does not mutate during this loop
|
|
12
26
|
const startNode = currentNode;
|
|
13
27
|
const diffs = [];
|
|
14
28
|
while (currentNode) {
|
|
15
29
|
if (containsPoint(currentNode.value.role, point)) {
|
|
16
|
-
|
|
17
|
-
if (
|
|
18
|
-
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
30
|
+
maybeIncrementMatured(currentNode.value);
|
|
31
|
+
if (done(false)) {
|
|
32
|
+
return;
|
|
21
33
|
}
|
|
22
|
-
}
|
|
34
|
+
} /* if (matured === 0) */
|
|
23
35
|
else {
|
|
24
36
|
const start = currentNode.value.role.offset;
|
|
25
37
|
const end = (currentNode.value.role.offset + currentNode.value.role.factor) % 1;
|
|
@@ -38,21 +50,56 @@ export const collectNodesAroundPoint = (time, roleAge, peers, currentNode, colle
|
|
|
38
50
|
break; // TODO throw error for failing to fetch ffull width
|
|
39
51
|
}
|
|
40
52
|
}
|
|
41
|
-
if (
|
|
53
|
+
if (done(true) == false) {
|
|
42
54
|
diffs.sort((x, y) => x.diff - y.diff);
|
|
43
55
|
for (const node of diffs) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (matured > 0) {
|
|
56
|
+
maybeIncrementMatured(node.rect);
|
|
57
|
+
if (done(true)) {
|
|
47
58
|
break;
|
|
48
59
|
}
|
|
49
60
|
}
|
|
50
61
|
}
|
|
51
62
|
};
|
|
52
|
-
const isMatured = (role, now, minAge) => {
|
|
63
|
+
export const isMatured = (role, now, minAge) => {
|
|
53
64
|
return now - Number(role.timestamp) >= minAge;
|
|
54
65
|
};
|
|
66
|
+
export const getSamples = (cursor, peers, amount, roleAge, dbg) => {
|
|
67
|
+
const leaders = new Set();
|
|
68
|
+
const width = 1;
|
|
69
|
+
if (!peers || peers?.length === 0) {
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
72
|
+
amount = Math.min(amount, peers.length);
|
|
73
|
+
const t = +new Date();
|
|
74
|
+
const matured = 0;
|
|
75
|
+
const maturedLeaders = new Set();
|
|
76
|
+
for (let i = 0; i < amount; i++) {
|
|
77
|
+
// evenly distributed
|
|
78
|
+
const point = ((cursor + i / amount) % 1) * width;
|
|
79
|
+
const currentNode = peers.head;
|
|
80
|
+
// aquire at least one unique node for each point
|
|
81
|
+
// but if previous point yielded more than one node
|
|
82
|
+
collectNodesAroundPoint(t, roleAge, peers, currentNode, (rect, m) => {
|
|
83
|
+
if (m) {
|
|
84
|
+
maturedLeaders.add(rect.publicKey.hashcode());
|
|
85
|
+
}
|
|
86
|
+
leaders.add(rect.publicKey.hashcode());
|
|
87
|
+
}, point, (postProcess) => {
|
|
88
|
+
if (postProcess) {
|
|
89
|
+
if (maturedLeaders.size > i) {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return false; // collect all intersecting points
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
return [...leaders];
|
|
97
|
+
};
|
|
55
98
|
export const getCover = (coveringWidth, peers, roleAge, startNodeIdentity) => {
|
|
99
|
+
return [...getCoverSet(coveringWidth, peers, roleAge, startNodeIdentity)];
|
|
100
|
+
};
|
|
101
|
+
export const getCoverSet = (coveringWidth, peers, roleAge, startNodeIdentity) => {
|
|
102
|
+
// find a good starting point
|
|
56
103
|
let walker = peers.head;
|
|
57
104
|
if (startNodeIdentity) {
|
|
58
105
|
// start at our node (local first)
|
|
@@ -77,35 +124,30 @@ export const getCover = (coveringWidth, peers, roleAge, startNodeIdentity) => {
|
|
|
77
124
|
}
|
|
78
125
|
const startNode = walker;
|
|
79
126
|
if (!startNode) {
|
|
80
|
-
return
|
|
127
|
+
return new Set();
|
|
81
128
|
}
|
|
129
|
+
//
|
|
82
130
|
const set = new Set();
|
|
83
131
|
let currentNode = startNode;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
* "query" all data in that range
|
|
88
|
-
*/
|
|
89
|
-
let wrapped = false;
|
|
132
|
+
const t = +new Date();
|
|
133
|
+
let wrappedOnce = false;
|
|
134
|
+
const startPoint = startNode.value.role.offset;
|
|
90
135
|
const getNextPoint = () => {
|
|
91
136
|
let nextPoint = currentNode.value.role.offset + currentNode.value.role.factor;
|
|
92
|
-
if (nextPoint > 1) {
|
|
93
|
-
|
|
94
|
-
nextPoint = nextPoint % 1;
|
|
137
|
+
if (nextPoint > 1 || nextPoint < startPoint) {
|
|
138
|
+
wrappedOnce = true;
|
|
95
139
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
140
|
+
nextPoint = nextPoint % 1;
|
|
141
|
+
let distanceStart;
|
|
142
|
+
if (wrappedOnce) {
|
|
143
|
+
distanceStart = (1 - startPoint + currentNode.value.role.offset) % 1;
|
|
99
144
|
}
|
|
100
145
|
else {
|
|
101
|
-
|
|
102
|
-
currentNode.value.role.offset -
|
|
103
|
-
startNode.value.role.offset +
|
|
104
|
-
currentNode.value.role.factor;
|
|
146
|
+
distanceStart = (currentNode.value.role.offset - startPoint) % 1;
|
|
105
147
|
}
|
|
106
|
-
|
|
148
|
+
const distanceEnd = distanceStart + currentNode.value.role.factor;
|
|
149
|
+
return [nextPoint, distanceStart, distanceEnd, wrappedOnce];
|
|
107
150
|
};
|
|
108
|
-
const t = +new Date();
|
|
109
151
|
const getNextMatured = (from) => {
|
|
110
152
|
let next = (from.next || peers.head);
|
|
111
153
|
while (!next.value.publicKey.equals(from.value.publicKey) &&
|
|
@@ -117,12 +159,20 @@ export const getCover = (coveringWidth, peers, roleAge, startNodeIdentity) => {
|
|
|
117
159
|
}
|
|
118
160
|
return undefined;
|
|
119
161
|
};
|
|
162
|
+
/**
|
|
163
|
+
* The purpose of this loop is to cover at least coveringWidth
|
|
164
|
+
* so that if we query all nodes in this range, we know we will
|
|
165
|
+
* "query" all data in that range
|
|
166
|
+
*/
|
|
167
|
+
let isPastThePoint = false;
|
|
120
168
|
outer: while (currentNode) {
|
|
121
169
|
if (set.has(currentNode.value.publicKey.hashcode()))
|
|
122
170
|
break;
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
171
|
+
const [nextPoint, distanceStart, distanceEnd, wrapped] = getNextPoint();
|
|
172
|
+
if (distanceStart <= coveringWidth) {
|
|
173
|
+
set.add(currentNode.value.publicKey.hashcode());
|
|
174
|
+
}
|
|
175
|
+
if (distanceEnd >= coveringWidth) {
|
|
126
176
|
break;
|
|
127
177
|
}
|
|
128
178
|
let next = currentNode.next || peers.head;
|
|
@@ -130,40 +180,68 @@ export const getCover = (coveringWidth, peers, roleAge, startNodeIdentity) => {
|
|
|
130
180
|
if (next.value.publicKey.equals(startNode.value.publicKey)) {
|
|
131
181
|
break outer;
|
|
132
182
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
183
|
+
const prevOffset = (next.prev || peers.tail).value.role.offset;
|
|
184
|
+
const nextOffset = next.value.role.offset;
|
|
185
|
+
const nextHasWrapped = nextOffset < prevOffset;
|
|
186
|
+
if ((!wrapped && nextOffset > nextPoint) ||
|
|
187
|
+
(nextHasWrapped &&
|
|
188
|
+
(wrapped ? nextOffset > nextPoint : prevOffset < nextPoint)) ||
|
|
189
|
+
(!nextHasWrapped && prevOffset < nextPoint && nextPoint <= nextOffset)) {
|
|
190
|
+
isPastThePoint = true;
|
|
191
|
+
}
|
|
192
|
+
if (isPastThePoint) {
|
|
193
|
+
break; // include this next in the set;
|
|
194
|
+
}
|
|
195
|
+
const overlapsRange = containsPoint(next.value.role, nextPoint);
|
|
196
|
+
if (overlapsRange) {
|
|
197
|
+
// Find out if there is a better choice ahead of us
|
|
198
|
+
const nextNext = getNextMatured(next);
|
|
199
|
+
if (nextNext &&
|
|
200
|
+
!nextNext.value.publicKey.equals(currentNode.value.publicKey) &&
|
|
201
|
+
nextNext.value.role.offset < nextPoint &&
|
|
202
|
+
nextNext.value.role.offset + nextNext.value.role.factor > nextPoint) {
|
|
203
|
+
// nextNext is better (continue to iterate)
|
|
148
204
|
}
|
|
149
205
|
else {
|
|
150
|
-
//
|
|
206
|
+
// done
|
|
207
|
+
break;
|
|
151
208
|
}
|
|
152
209
|
}
|
|
153
210
|
else {
|
|
154
|
-
//
|
|
155
|
-
break;
|
|
211
|
+
// (continue to iterate)
|
|
156
212
|
}
|
|
157
|
-
next = next.next;
|
|
213
|
+
next = next.next || peers.head;
|
|
158
214
|
}
|
|
159
215
|
currentNode = next;
|
|
160
216
|
}
|
|
161
|
-
// collect around the boundary of the start
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
217
|
+
// collect 1 point around the boundary of the start and one at the end,
|
|
218
|
+
// preferrd matured and that we already have it
|
|
219
|
+
for (const point of [
|
|
220
|
+
startNode.value.role.offset,
|
|
221
|
+
(startNode.value.role.offset + coveringWidth) % 1
|
|
222
|
+
]) {
|
|
223
|
+
let done = false;
|
|
224
|
+
const unmatured = [];
|
|
225
|
+
collectNodesAroundPoint(t, roleAge, peers, isMatured(startNode.value.role, t, roleAge) ? startNode : peers.head, // start at startNode is matured, else start at head (we only seek to find one matured node at the point)
|
|
226
|
+
(rect, matured) => {
|
|
227
|
+
if (matured) {
|
|
228
|
+
if (set.has(rect.publicKey.hashcode())) {
|
|
229
|
+
// great!
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
set.add(rect.publicKey.hashcode());
|
|
233
|
+
}
|
|
234
|
+
done = true;
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
unmatured.push(rect.publicKey.hashcode());
|
|
238
|
+
}
|
|
239
|
+
}, point, () => done);
|
|
240
|
+
if (!done && unmatured.length > 0) {
|
|
241
|
+
set.add(unmatured[0]);
|
|
242
|
+
// TODO add more elements?
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return set;
|
|
168
246
|
};
|
|
169
247
|
//# sourceMappingURL=ranges.js.map
|
package/lib/esm/ranges.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ranges.js","sourceRoot":"","sources":["../../src/ranges.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ranges.js","sourceRoot":"","sources":["../../src/ranges.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/role.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
export declare const
|
|
2
|
-
offset: number;
|
|
3
|
-
factor: number;
|
|
4
|
-
}, point: number) => boolean;
|
|
1
|
+
export declare const overlaps: (x1: number, x2: number, y1: number, y2: number) => boolean;
|
|
5
2
|
export declare abstract class Role {
|
|
6
3
|
abstract equals(other: Role): any;
|
|
7
4
|
}
|
package/lib/esm/role.js
CHANGED
|
@@ -9,23 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
};
|
|
10
10
|
var NoType_1, Observer_1, Replicator_1;
|
|
11
11
|
import { field, variant, vec } from "@dao-xyz/borsh";
|
|
12
|
-
export const
|
|
13
|
-
if (rect.factor === 0) {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
const start = rect.offset;
|
|
17
|
-
const endUnwrapped = rect.offset + rect.factor;
|
|
18
|
-
let end = endUnwrapped;
|
|
19
|
-
let wrapped = false;
|
|
20
|
-
if (endUnwrapped > 1) {
|
|
21
|
-
end = endUnwrapped % 1;
|
|
22
|
-
wrapped = true;
|
|
23
|
-
}
|
|
24
|
-
const inFirstInterval = point >= start && point < Math.min(endUnwrapped, 1);
|
|
25
|
-
const inSecondInterval = !inFirstInterval && wrapped && point >= 0 && point < end;
|
|
26
|
-
return inFirstInterval || inSecondInterval;
|
|
27
|
-
};
|
|
28
|
-
const overlaps = (x1, x2, y1, y2) => {
|
|
12
|
+
export const overlaps = (x1, x2, y1, y2) => {
|
|
29
13
|
if (x1 <= y2 && y1 <= x2) {
|
|
30
14
|
return true;
|
|
31
15
|
}
|
package/lib/esm/role.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/role.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/role.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/shared-log",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.11",
|
|
4
4
|
"description": "Shared log",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -31,15 +31,15 @@
|
|
|
31
31
|
"license": "MIT",
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@dao-xyz/borsh": "^5.2.1",
|
|
34
|
-
"@peerbit/log": "3.0.
|
|
34
|
+
"@peerbit/log": "3.0.26",
|
|
35
35
|
"@peerbit/logger": "1.0.2",
|
|
36
36
|
"@peerbit/program": "3.0.20",
|
|
37
|
-
"@peerbit/rpc": "3.0.
|
|
37
|
+
"@peerbit/rpc": "3.0.25",
|
|
38
38
|
"@peerbit/time": "2.0.6",
|
|
39
39
|
"p-debounce": "^4.0.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@peerbit/test-utils": "^2.0.
|
|
42
|
+
"@peerbit/test-utils": "^2.0.25"
|
|
43
43
|
},
|
|
44
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "a4da18ebc1b18e79693f96a79f2d7a83a35b0d29"
|
|
45
45
|
}
|