@peerbit/shared-log 8.0.7 → 9.0.0-55cebfe
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/get-samples.d.ts +2 -0
- package/dist/benchmark/get-samples.d.ts.map +1 -0
- package/dist/benchmark/get-samples.js +69 -0
- package/dist/benchmark/get-samples.js.map +1 -0
- package/dist/benchmark/index.d.ts +2 -0
- package/dist/benchmark/index.d.ts.map +1 -0
- package/{lib/esm/__benchmark__ → dist/benchmark}/index.js +16 -16
- package/dist/benchmark/index.js.map +1 -0
- package/dist/benchmark/replication-prune.d.ts +2 -0
- package/dist/benchmark/replication-prune.d.ts.map +1 -0
- package/dist/benchmark/replication-prune.js +103 -0
- package/dist/benchmark/replication-prune.js.map +1 -0
- package/dist/benchmark/replication.d.ts +2 -0
- package/dist/benchmark/replication.d.ts.map +1 -0
- package/dist/benchmark/replication.js +91 -0
- package/dist/benchmark/replication.js.map +1 -0
- package/{lib/esm → dist/src}/blocks.d.ts +1 -0
- package/dist/src/blocks.d.ts.map +1 -0
- package/{lib/esm → dist/src}/blocks.js +1 -1
- package/dist/src/blocks.js.map +1 -0
- package/{lib/esm → dist/src}/cpu.d.ts +2 -1
- package/dist/src/cpu.d.ts.map +1 -0
- package/{lib/esm → dist/src}/cpu.js +2 -2
- package/dist/src/cpu.js.map +1 -0
- package/{lib/esm → dist/src}/exchange-heads.d.ts +2 -1
- package/dist/src/exchange-heads.d.ts.map +1 -0
- package/{lib/esm → dist/src}/exchange-heads.js +9 -7
- package/dist/src/exchange-heads.js.map +1 -0
- package/{lib/esm → dist/src}/index.d.ts +64 -54
- package/dist/src/index.d.ts.map +1 -0
- package/{lib/esm → dist/src}/index.js +569 -399
- package/dist/src/index.js.map +1 -0
- package/{lib/esm → dist/src}/message.d.ts +1 -0
- package/dist/src/message.d.ts.map +1 -0
- package/{lib/esm → dist/src}/pid.d.ts +1 -0
- package/dist/src/pid.d.ts.map +1 -0
- package/{lib/esm → dist/src}/pid.js +20 -20
- package/dist/src/pid.js.map +1 -0
- package/dist/src/ranges.d.ts +10 -0
- package/dist/src/ranges.d.ts.map +1 -0
- package/dist/src/ranges.js +645 -0
- package/dist/src/ranges.js.map +1 -0
- package/dist/src/replication.d.ts +112 -0
- package/dist/src/replication.d.ts.map +1 -0
- package/dist/src/replication.js +348 -0
- package/dist/src/replication.js.map +1 -0
- package/dist/src/role.d.ts +2 -0
- package/dist/src/role.d.ts.map +1 -0
- package/dist/src/role.js +106 -0
- package/dist/src/role.js.map +1 -0
- package/package.json +70 -43
- package/src/blocks.ts +1 -1
- package/src/cpu.ts +7 -6
- package/src/exchange-heads.ts +19 -19
- package/src/index.ts +881 -609
- package/src/pid.ts +22 -21
- package/src/ranges.ts +692 -148
- package/src/replication.ts +271 -19
- package/src/role.ts +63 -83
- package/LICENSE +0 -202
- package/lib/esm/__benchmark__/index.d.ts +0 -1
- package/lib/esm/__benchmark__/index.js.map +0 -1
- package/lib/esm/blocks.js.map +0 -1
- package/lib/esm/cpu.js.map +0 -1
- package/lib/esm/exchange-heads.js.map +0 -1
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/pid.js.map +0 -1
- package/lib/esm/ranges.d.ts +0 -12
- package/lib/esm/ranges.js +0 -247
- package/lib/esm/ranges.js.map +0 -1
- package/lib/esm/replication.d.ts +0 -53
- package/lib/esm/replication.js +0 -105
- package/lib/esm/replication.js.map +0 -1
- package/lib/esm/role.d.ts +0 -38
- package/lib/esm/role.js +0 -130
- package/lib/esm/role.js.map +0 -1
- package/src/__benchmark__/index.ts +0 -115
- /package/{lib/esm → dist/src}/message.js +0 -0
- /package/{lib/esm → dist/src}/message.js.map +0 -0
package/package.json
CHANGED
|
@@ -1,45 +1,72 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
2
|
+
"name": "@peerbit/shared-log",
|
|
3
|
+
"version": "9.0.0-55cebfe",
|
|
4
|
+
"description": "Shared log",
|
|
5
|
+
"sideEffects": false,
|
|
6
|
+
"type": "module",
|
|
7
|
+
"types": "./dist/src/index.d.ts",
|
|
8
|
+
"typesVersions": {
|
|
9
|
+
"*": {
|
|
10
|
+
"*": [
|
|
11
|
+
"*",
|
|
12
|
+
"dist/*",
|
|
13
|
+
"dist/src/*",
|
|
14
|
+
"dist/src/*/index"
|
|
15
|
+
],
|
|
16
|
+
"src/*": [
|
|
17
|
+
"*",
|
|
18
|
+
"dist/*",
|
|
19
|
+
"dist/src/*",
|
|
20
|
+
"dist/src/*/index"
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
"src",
|
|
26
|
+
"dist",
|
|
27
|
+
"!dist/e2e",
|
|
28
|
+
"!dist/test",
|
|
29
|
+
"!**/*.tsbuildinfo"
|
|
30
|
+
],
|
|
31
|
+
"exports": {
|
|
32
|
+
".": {
|
|
33
|
+
"types": "./dist/src/index.d.ts",
|
|
34
|
+
"import": "./dist/src/index.js"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"eslintConfig": {
|
|
38
|
+
"extends": "peerbit",
|
|
39
|
+
"parserOptions": {
|
|
40
|
+
"project": true,
|
|
41
|
+
"sourceType": "module"
|
|
42
|
+
},
|
|
43
|
+
"ignorePatterns": [
|
|
44
|
+
"!.aegir.js",
|
|
45
|
+
"test/ts-use",
|
|
46
|
+
"*.d.ts"
|
|
47
|
+
]
|
|
48
|
+
},
|
|
49
|
+
"publishConfig": {
|
|
50
|
+
"access": "public"
|
|
51
|
+
},
|
|
52
|
+
"scripts": {
|
|
53
|
+
"clean": "aegir clean",
|
|
54
|
+
"build": "aegir build --no-bundle",
|
|
55
|
+
"test": "aegir test --target node",
|
|
56
|
+
"lint": "aegir lint"
|
|
57
|
+
},
|
|
58
|
+
"author": "dao.xyz",
|
|
59
|
+
"license": "MIT",
|
|
60
|
+
"dependencies": {
|
|
61
|
+
"@dao-xyz/borsh": "^5.2.3",
|
|
62
|
+
"@peerbit/logger": "1.0.3-55cebfe",
|
|
63
|
+
"@peerbit/program": "5.0.0-55cebfe",
|
|
64
|
+
"@peerbit/log": "4.0.0-55cebfe",
|
|
65
|
+
"@peerbit/rpc": "5.0.0-55cebfe",
|
|
66
|
+
"@peerbit/time": "2.0.7-55cebfe",
|
|
67
|
+
"p-debounce": "^4.0.0"
|
|
68
|
+
},
|
|
69
|
+
"devDependencies": {
|
|
70
|
+
"@peerbit/test-utils": "2.0.34-55cebfe"
|
|
71
|
+
}
|
|
45
72
|
}
|
package/src/blocks.ts
CHANGED
package/src/cpu.ts
CHANGED
|
@@ -11,15 +11,16 @@ export interface CPUUsage {
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
export class CPUUsageIntervalLag implements CPUUsage {
|
|
14
|
-
dt: number[];
|
|
15
|
-
interval
|
|
16
|
-
sum: number;
|
|
14
|
+
dt: number[] = [];
|
|
15
|
+
interval?: ReturnType<typeof setInterval>;
|
|
16
|
+
sum: number = 0;
|
|
17
|
+
|
|
17
18
|
constructor(
|
|
18
19
|
readonly properties: {
|
|
19
20
|
windowSize: number;
|
|
20
21
|
intervalTime: number;
|
|
21
22
|
upperBoundLag: number;
|
|
22
|
-
} = { windowSize: 50, intervalTime: 100, upperBoundLag: 1000 }
|
|
23
|
+
} = { windowSize: 50, intervalTime: 100, upperBoundLag: 1000 },
|
|
23
24
|
) {}
|
|
24
25
|
private mean() {
|
|
25
26
|
return this.sum / this.dt.length;
|
|
@@ -29,14 +30,14 @@ export class CPUUsageIntervalLag implements CPUUsage {
|
|
|
29
30
|
return (
|
|
30
31
|
Math.min(
|
|
31
32
|
Math.max(this.mean() - this.properties.intervalTime, 0),
|
|
32
|
-
this.properties.upperBoundLag
|
|
33
|
+
this.properties.upperBoundLag,
|
|
33
34
|
) / this.properties.upperBoundLag
|
|
34
35
|
); // 1 if lagging more than MAX_INTERVAL seconds
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
start() {
|
|
38
39
|
this.dt = new Array<number>(this.properties.windowSize).fill(
|
|
39
|
-
this.properties.intervalTime
|
|
40
|
+
this.properties.intervalTime,
|
|
40
41
|
);
|
|
41
42
|
this.sum = this.properties.windowSize * this.properties.intervalTime;
|
|
42
43
|
|
package/src/exchange-heads.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { field, fixedArray, variant, vec } from "@dao-xyz/borsh";
|
|
2
|
+
import { Cache } from "@peerbit/cache";
|
|
3
|
+
import { Entry, EntryType, type ShallowEntry } from "@peerbit/log";
|
|
3
4
|
import { Log } from "@peerbit/log";
|
|
4
5
|
import { logger as loggerFn } from "@peerbit/logger";
|
|
5
6
|
import { TransportMessage } from "./message.js";
|
|
6
|
-
import { Cache } from "@peerbit/cache";
|
|
7
7
|
|
|
8
8
|
const logger = loggerFn({ module: "exchange-heads" });
|
|
9
9
|
|
|
@@ -91,7 +91,7 @@ const MAX_EXCHANGE_MESSAGE_SIZE = 1e5; // 100kb. Too large size might not be fas
|
|
|
91
91
|
export const createExchangeHeadsMessages = async (
|
|
92
92
|
log: Log<any>,
|
|
93
93
|
heads: Entry<any>[],
|
|
94
|
-
gidParentCache: Cache<Entry<any>[]
|
|
94
|
+
gidParentCache: Cache<Entry<any>[]>,
|
|
95
95
|
): Promise<ExchangeHeadsMessage<any>[]> => {
|
|
96
96
|
const messages: ExchangeHeadsMessage<any>[] = [];
|
|
97
97
|
let size = 0;
|
|
@@ -117,8 +117,8 @@ export const createExchangeHeadsMessages = async (
|
|
|
117
117
|
current.push(
|
|
118
118
|
new EntryWithRefs({
|
|
119
119
|
entry: fromHead,
|
|
120
|
-
gidRefrences: refs.map((x) => x.meta.gid)
|
|
121
|
-
})
|
|
120
|
+
gidRefrences: refs.map((x) => x.meta.gid),
|
|
121
|
+
}),
|
|
122
122
|
);
|
|
123
123
|
|
|
124
124
|
size += fromHead.size;
|
|
@@ -126,8 +126,8 @@ export const createExchangeHeadsMessages = async (
|
|
|
126
126
|
size = 0;
|
|
127
127
|
messages.push(
|
|
128
128
|
new ExchangeHeadsMessage({
|
|
129
|
-
heads: current
|
|
130
|
-
})
|
|
129
|
+
heads: current,
|
|
130
|
+
}),
|
|
131
131
|
);
|
|
132
132
|
current = [];
|
|
133
133
|
continue;
|
|
@@ -136,8 +136,8 @@ export const createExchangeHeadsMessages = async (
|
|
|
136
136
|
if (current.length > 0) {
|
|
137
137
|
messages.push(
|
|
138
138
|
new ExchangeHeadsMessage({
|
|
139
|
-
heads: current
|
|
140
|
-
})
|
|
139
|
+
heads: current,
|
|
140
|
+
}),
|
|
141
141
|
);
|
|
142
142
|
}
|
|
143
143
|
return messages;
|
|
@@ -146,7 +146,7 @@ export const createExchangeHeadsMessages = async (
|
|
|
146
146
|
export const allEntriesWithUniqueGids = async (
|
|
147
147
|
log: Log<any>,
|
|
148
148
|
entry: Entry<any>,
|
|
149
|
-
gidParentCache: Cache<Entry<any>[]
|
|
149
|
+
gidParentCache: Cache<Entry<any>[]>,
|
|
150
150
|
): Promise<Entry<any>[]> => {
|
|
151
151
|
const cachedValue = gidParentCache.get(entry.hash);
|
|
152
152
|
if (cachedValue != null) {
|
|
@@ -154,23 +154,23 @@ export const allEntriesWithUniqueGids = async (
|
|
|
154
154
|
}
|
|
155
155
|
|
|
156
156
|
// TODO optimize this
|
|
157
|
-
const map: Map<string, ShallowEntry
|
|
158
|
-
let curr: ShallowEntry[] = [entry];
|
|
157
|
+
const map: Map<string, ShallowEntry | Entry<any>> = new Map();
|
|
158
|
+
let curr: (Entry<any> | ShallowEntry)[] = [entry];
|
|
159
159
|
while (curr.length > 0) {
|
|
160
|
-
const nexts: ShallowEntry[] = [];
|
|
160
|
+
const nexts: (Entry<any> | ShallowEntry)[] = [];
|
|
161
161
|
for (const element of curr) {
|
|
162
162
|
if (!map.has(element.meta.gid)) {
|
|
163
163
|
map.set(element.meta.gid, element);
|
|
164
164
|
if (element.meta.type === EntryType.APPEND) {
|
|
165
165
|
for (const next of element.meta.next) {
|
|
166
|
-
const indexedEntry = log.entryIndex.getShallow(next);
|
|
166
|
+
const indexedEntry = await log.entryIndex.getShallow(next);
|
|
167
167
|
if (!indexedEntry) {
|
|
168
168
|
logger.error(
|
|
169
169
|
"Failed to find indexed entry for hash when fetching references: " +
|
|
170
|
-
next
|
|
170
|
+
next,
|
|
171
171
|
);
|
|
172
172
|
} else {
|
|
173
|
-
nexts.push(indexedEntry);
|
|
173
|
+
nexts.push(indexedEntry.value);
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
176
|
}
|
|
@@ -180,8 +180,8 @@ export const allEntriesWithUniqueGids = async (
|
|
|
180
180
|
}
|
|
181
181
|
const value = [
|
|
182
182
|
...(await Promise.all(
|
|
183
|
-
[...map.values()].map((x) => log.entryIndex.get(x.hash))
|
|
184
|
-
))
|
|
183
|
+
[...map.values()].map((x) => log.entryIndex.get(x.hash)),
|
|
184
|
+
)),
|
|
185
185
|
].filter((x) => !!x) as Entry<any>[];
|
|
186
186
|
gidParentCache.add(entry.hash, value);
|
|
187
187
|
return value;
|