@peerbit/shared-log 1.0.4 → 1.1.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/lib/esm/index.d.ts +12 -6
- package/lib/esm/index.js +8 -8
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/role.d.ts +4 -4
- package/lib/esm/role.js +4 -4
- package/lib/esm/role.js.map +1 -1
- package/package.json +6 -6
- package/src/index.ts +19 -21
- package/src/role.ts +4 -4
package/lib/esm/index.d.ts
CHANGED
|
@@ -4,14 +4,14 @@ import { AppendOptions, Entry, Log, LogEvents, LogProperties } from "@peerbit/lo
|
|
|
4
4
|
import { AbstractProgram, ComposableProgram } from "@peerbit/program";
|
|
5
5
|
import { MinReplicas } from "./exchange-heads.js";
|
|
6
6
|
import { SubscriptionEvent, UnsubcriptionEvent } from "@peerbit/pubsub-interface";
|
|
7
|
-
import { Observer, Replicator,
|
|
8
|
-
export { Observer, Replicator,
|
|
7
|
+
import { Observer, Replicator, Role } from "./role.js";
|
|
8
|
+
export { Observer, Replicator, Role };
|
|
9
9
|
export declare const logger: import("pino").Logger<import("pino").LoggerOptions | import("pino").DestinationStream>;
|
|
10
10
|
export type SyncFilter = (entries: Entry<any>) => Promise<boolean> | boolean;
|
|
11
11
|
export interface SharedLogOptions {
|
|
12
12
|
minReplicas?: number;
|
|
13
13
|
sync?: SyncFilter;
|
|
14
|
-
role?:
|
|
14
|
+
role?: Role;
|
|
15
15
|
}
|
|
16
16
|
export declare const DEFAULT_MIN_REPLICAS = 2;
|
|
17
17
|
export type Args<T> = LogProperties<T> & LogEvents<T> & SharedLogOptions;
|
|
@@ -32,7 +32,7 @@ export declare class SharedLog<T> extends ComposableProgram<Args<T>> {
|
|
|
32
32
|
});
|
|
33
33
|
get minReplicas(): MinReplicas;
|
|
34
34
|
set minReplicas(minReplicas: MinReplicas);
|
|
35
|
-
get role():
|
|
35
|
+
get role(): Role;
|
|
36
36
|
append(data: T, options?: AppendOptions<T> | undefined): Promise<{
|
|
37
37
|
entry: Entry<T>;
|
|
38
38
|
removed: Entry<T>[];
|
|
@@ -43,7 +43,10 @@ export declare class SharedLog<T> extends ComposableProgram<Args<T>> {
|
|
|
43
43
|
close(from?: AbstractProgram): Promise<boolean>;
|
|
44
44
|
drop(): Promise<void>;
|
|
45
45
|
_onMessage(msg: TransportMessage, context: QueryContext): Promise<TransportMessage | undefined>;
|
|
46
|
-
getReplicatorsSorted():
|
|
46
|
+
getReplicatorsSorted(): {
|
|
47
|
+
hash: string;
|
|
48
|
+
timestamp: number;
|
|
49
|
+
}[] | undefined;
|
|
47
50
|
isLeader(slot: {
|
|
48
51
|
toString(): string;
|
|
49
52
|
}, numberOfLeaders?: number): Promise<boolean>;
|
|
@@ -61,7 +64,10 @@ export declare class SharedLog<T> extends ComposableProgram<Args<T>> {
|
|
|
61
64
|
* @param channel
|
|
62
65
|
*/
|
|
63
66
|
replicationReorganization(): Promise<boolean>;
|
|
64
|
-
replicators():
|
|
67
|
+
replicators(): {
|
|
68
|
+
hash: string;
|
|
69
|
+
timestamp: number;
|
|
70
|
+
}[][];
|
|
65
71
|
replicator(gid: any): Promise<boolean>;
|
|
66
72
|
_onUnsubscription(evt: CustomEvent<UnsubcriptionEvent>): Promise<void>;
|
|
67
73
|
_onSubscription(evt: CustomEvent<SubscriptionEvent>): Promise<void>;
|
package/lib/esm/index.js
CHANGED
|
@@ -17,8 +17,8 @@ import { logger as loggerFn } from "@peerbit/logger";
|
|
|
17
17
|
import { AbsolutMinReplicas, ExchangeHeadsMessage, createExchangeHeadsMessage, } from "./exchange-heads.js";
|
|
18
18
|
import { startsWith } from "@peerbit/uint8arrays";
|
|
19
19
|
import { TimeoutError } from "@peerbit/time";
|
|
20
|
-
import { REPLICATOR_TYPE_VARIANT, Observer, Replicator,
|
|
21
|
-
export { Observer, Replicator,
|
|
20
|
+
import { REPLICATOR_TYPE_VARIANT, Observer, Replicator, Role } from "./role.js";
|
|
21
|
+
export { Observer, Replicator, Role };
|
|
22
22
|
export const logger = loggerFn({ module: "peer" });
|
|
23
23
|
const groupByGid = async (entries) => {
|
|
24
24
|
const groupByGid = new Map();
|
|
@@ -235,7 +235,7 @@ export let SharedLog = class SharedLog extends ComposableProgram {
|
|
|
235
235
|
// same conclusion (are running the same leader selection algorithm)
|
|
236
236
|
const leaders = new Array(numberOfLeaders);
|
|
237
237
|
for (let i = 0; i < numberOfLeaders; i++) {
|
|
238
|
-
leaders[i] = peers[(i + startIndex) % peers.length];
|
|
238
|
+
leaders[i] = peers[(i + startIndex) % peers.length].hash;
|
|
239
239
|
}
|
|
240
240
|
return leaders;
|
|
241
241
|
}
|
|
@@ -250,13 +250,13 @@ export let SharedLog = class SharedLog extends ComposableProgram {
|
|
|
250
250
|
const code = fromHash;
|
|
251
251
|
if (subscribed) {
|
|
252
252
|
// TODO use Set + list for fast lookup
|
|
253
|
-
if (!sortedPeer.find((x) => x === code)) {
|
|
254
|
-
sortedPeer.push(code);
|
|
255
|
-
sortedPeer.sort((a, b) => a.localeCompare(b));
|
|
253
|
+
if (!sortedPeer.find((x) => x.hash === code)) {
|
|
254
|
+
sortedPeer.push({ hash: code, timestamp: +new Date() });
|
|
255
|
+
sortedPeer.sort((a, b) => a.hash.localeCompare(b.hash));
|
|
256
256
|
}
|
|
257
257
|
}
|
|
258
258
|
else {
|
|
259
|
-
const deleteIndex = sortedPeer.findIndex((x) => x === code);
|
|
259
|
+
const deleteIndex = sortedPeer.findIndex((x) => x.hash === code);
|
|
260
260
|
sortedPeer.splice(deleteIndex, 1);
|
|
261
261
|
}
|
|
262
262
|
}
|
|
@@ -279,7 +279,7 @@ export let SharedLog = class SharedLog extends ComposableProgram {
|
|
|
279
279
|
}
|
|
280
280
|
if (subscription.data) {
|
|
281
281
|
try {
|
|
282
|
-
const type = deserialize(subscription.data,
|
|
282
|
+
const type = deserialize(subscription.data, Role);
|
|
283
283
|
if (type instanceof Replicator) {
|
|
284
284
|
await this.replicationReorganization();
|
|
285
285
|
}
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/role.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export declare abstract class
|
|
1
|
+
export declare abstract class Role {
|
|
2
2
|
}
|
|
3
3
|
export declare const NO_TYPE_VARIANT: Uint8Array;
|
|
4
|
-
export declare class NoType extends
|
|
4
|
+
export declare class NoType extends Role {
|
|
5
5
|
}
|
|
6
6
|
export declare const OBSERVER_TYPE_VARIANT: Uint8Array;
|
|
7
|
-
export declare class Observer extends
|
|
7
|
+
export declare class Observer extends Role {
|
|
8
8
|
}
|
|
9
9
|
export declare const REPLICATOR_TYPE_VARIANT: Uint8Array;
|
|
10
|
-
export declare class Replicator extends
|
|
10
|
+
export declare class Replicator extends Role {
|
|
11
11
|
multiplier: number;
|
|
12
12
|
constructor();
|
|
13
13
|
}
|
package/lib/esm/role.js
CHANGED
|
@@ -8,22 +8,22 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
10
|
import { field, variant } from "@dao-xyz/borsh";
|
|
11
|
-
export class
|
|
11
|
+
export class Role {
|
|
12
12
|
}
|
|
13
13
|
export const NO_TYPE_VARIANT = new Uint8Array([0]);
|
|
14
|
-
export let NoType = class NoType extends
|
|
14
|
+
export let NoType = class NoType extends Role {
|
|
15
15
|
};
|
|
16
16
|
NoType = __decorate([
|
|
17
17
|
variant(0)
|
|
18
18
|
], NoType);
|
|
19
19
|
export const OBSERVER_TYPE_VARIANT = new Uint8Array([1]);
|
|
20
|
-
export let Observer = class Observer extends
|
|
20
|
+
export let Observer = class Observer extends Role {
|
|
21
21
|
};
|
|
22
22
|
Observer = __decorate([
|
|
23
23
|
variant(1)
|
|
24
24
|
], Observer);
|
|
25
25
|
export const REPLICATOR_TYPE_VARIANT = new Uint8Array([2]);
|
|
26
|
-
export let Replicator = class Replicator extends
|
|
26
|
+
export let Replicator = class Replicator extends Role {
|
|
27
27
|
multiplier; // 1 means I do the same amount of work as anyone else, 2 means double
|
|
28
28
|
constructor() {
|
|
29
29
|
// multiplier is unsupported for now, so contructor is empty
|
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,MAAM,gBAAgB,CAAC;AAEhD,MAAM,OAAgB,
|
|
1
|
+
{"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/role.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,OAAgB,IAAI;CAAG;AAE7B,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAG5C,WAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,IAAI;CAAG,CAAA;AAAtB,MAAM;IADlB,OAAO,CAAC,CAAC,CAAC;GACE,MAAM,CAAgB;AAEnC,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAElD,WAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,IAAI;CAAG,CAAA;AAAxB,QAAQ;IADpB,OAAO,CAAC,CAAC,CAAC;GACE,QAAQ,CAAgB;AAErC,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAGpD,WAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,IAAI;IAEnC,UAAU,CAAS,CAAC,sEAAsE;IAE1F;QACC,4DAA4D;QAC5D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACrB,CAAC;CACD,CAAA;AAPA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;8CACJ;AAFP,UAAU;IADtB,OAAO,CAAC,CAAC,CAAC;;GACE,UAAU,CAStB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/shared-log",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Shared log",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -32,14 +32,14 @@
|
|
|
32
32
|
"license": "MIT",
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@dao-xyz/borsh": "^5.1.5",
|
|
35
|
-
"@peerbit/log": "1.0.
|
|
35
|
+
"@peerbit/log": "1.0.5",
|
|
36
36
|
"@peerbit/logger": "1.0.0",
|
|
37
|
-
"@peerbit/program": "1.0.
|
|
38
|
-
"@peerbit/rpc": "1.0.
|
|
37
|
+
"@peerbit/program": "1.0.3",
|
|
38
|
+
"@peerbit/rpc": "1.0.5",
|
|
39
39
|
"@peerbit/time": "1.0.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@peerbit/test-utils": "^1.0.
|
|
42
|
+
"@peerbit/test-utils": "^1.0.5"
|
|
43
43
|
},
|
|
44
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "fa8b8b495b7bbbd52679a02dad43392b565164fa"
|
|
45
45
|
}
|
package/src/index.ts
CHANGED
|
@@ -38,20 +38,14 @@ import {
|
|
|
38
38
|
createExchangeHeadsMessage,
|
|
39
39
|
} from "./exchange-heads.js";
|
|
40
40
|
import {
|
|
41
|
-
Subscription,
|
|
42
41
|
SubscriptionEvent,
|
|
43
42
|
UnsubcriptionEvent,
|
|
44
43
|
} from "@peerbit/pubsub-interface";
|
|
45
44
|
import { startsWith } from "@peerbit/uint8arrays";
|
|
46
45
|
import { TimeoutError } from "@peerbit/time";
|
|
47
|
-
import {
|
|
48
|
-
REPLICATOR_TYPE_VARIANT,
|
|
49
|
-
Observer,
|
|
50
|
-
Replicator,
|
|
51
|
-
SubscriptionType,
|
|
52
|
-
} from "./role.js";
|
|
46
|
+
import { REPLICATOR_TYPE_VARIANT, Observer, Replicator, Role } from "./role.js";
|
|
53
47
|
|
|
54
|
-
export { Observer, Replicator,
|
|
48
|
+
export { Observer, Replicator, Role };
|
|
55
49
|
|
|
56
50
|
export const logger = loggerFn({ module: "peer" });
|
|
57
51
|
|
|
@@ -78,7 +72,7 @@ export type SyncFilter = (entries: Entry<any>) => Promise<boolean> | boolean;
|
|
|
78
72
|
export interface SharedLogOptions {
|
|
79
73
|
minReplicas?: number;
|
|
80
74
|
sync?: SyncFilter;
|
|
81
|
-
role?:
|
|
75
|
+
role?: Role;
|
|
82
76
|
}
|
|
83
77
|
|
|
84
78
|
export const DEFAULT_MIN_REPLICAS = 2;
|
|
@@ -95,9 +89,9 @@ export class SharedLog<T> extends ComposableProgram<Args<T>> {
|
|
|
95
89
|
// options
|
|
96
90
|
private _minReplicas: MinReplicas;
|
|
97
91
|
private _sync?: SyncFilter;
|
|
98
|
-
private _role:
|
|
92
|
+
private _role: Role;
|
|
99
93
|
|
|
100
|
-
private _sortedPeersCache: string[] | undefined;
|
|
94
|
+
private _sortedPeersCache: { hash: string; timestamp: number }[] | undefined;
|
|
101
95
|
private _lastSubscriptionMessageId: number;
|
|
102
96
|
private _gidPeersHistory: Map<string, Set<string>>;
|
|
103
97
|
|
|
@@ -118,7 +112,7 @@ export class SharedLog<T> extends ComposableProgram<Args<T>> {
|
|
|
118
112
|
set minReplicas(minReplicas: MinReplicas) {
|
|
119
113
|
this._minReplicas = minReplicas;
|
|
120
114
|
}
|
|
121
|
-
get role():
|
|
115
|
+
get role(): Role {
|
|
122
116
|
return this._role;
|
|
123
117
|
}
|
|
124
118
|
|
|
@@ -332,7 +326,7 @@ export class SharedLog<T> extends ComposableProgram<Args<T>> {
|
|
|
332
326
|
}
|
|
333
327
|
}
|
|
334
328
|
|
|
335
|
-
getReplicatorsSorted(): string[] | undefined {
|
|
329
|
+
getReplicatorsSorted(): { hash: string; timestamp: number }[] | undefined {
|
|
336
330
|
return this._sortedPeersCache;
|
|
337
331
|
}
|
|
338
332
|
|
|
@@ -352,7 +346,8 @@ export class SharedLog<T> extends ComposableProgram<Args<T>> {
|
|
|
352
346
|
): Promise<string[]> {
|
|
353
347
|
// For a fixed set or members, the choosen leaders will always be the same (address invariant)
|
|
354
348
|
// This allows for that same content is always chosen to be distributed to same peers, to remove unecessary copies
|
|
355
|
-
const peers: string
|
|
349
|
+
const peers: { hash: string; timestamp: number }[] =
|
|
350
|
+
this.getReplicatorsSorted() || [];
|
|
356
351
|
|
|
357
352
|
if (peers.length === 0) {
|
|
358
353
|
return [];
|
|
@@ -377,7 +372,7 @@ export class SharedLog<T> extends ComposableProgram<Args<T>> {
|
|
|
377
372
|
// same conclusion (are running the same leader selection algorithm)
|
|
378
373
|
const leaders = new Array(numberOfLeaders);
|
|
379
374
|
for (let i = 0; i < numberOfLeaders; i++) {
|
|
380
|
-
leaders[i] = peers[(i + startIndex) % peers.length];
|
|
375
|
+
leaders[i] = peers[(i + startIndex) % peers.length].hash;
|
|
381
376
|
}
|
|
382
377
|
return leaders;
|
|
383
378
|
}
|
|
@@ -393,12 +388,12 @@ export class SharedLog<T> extends ComposableProgram<Args<T>> {
|
|
|
393
388
|
const code = fromHash;
|
|
394
389
|
if (subscribed) {
|
|
395
390
|
// TODO use Set + list for fast lookup
|
|
396
|
-
if (!sortedPeer.find((x) => x === code)) {
|
|
397
|
-
sortedPeer.push(code);
|
|
398
|
-
sortedPeer.sort((a, b) => a.localeCompare(b));
|
|
391
|
+
if (!sortedPeer.find((x) => x.hash === code)) {
|
|
392
|
+
sortedPeer.push({ hash: code, timestamp: +new Date() });
|
|
393
|
+
sortedPeer.sort((a, b) => a.hash.localeCompare(b.hash));
|
|
399
394
|
}
|
|
400
395
|
} else {
|
|
401
|
-
const deleteIndex = sortedPeer.findIndex((x) => x === code);
|
|
396
|
+
const deleteIndex = sortedPeer.findIndex((x) => x.hash === code);
|
|
402
397
|
sortedPeer.splice(deleteIndex, 1);
|
|
403
398
|
}
|
|
404
399
|
}
|
|
@@ -430,7 +425,7 @@ export class SharedLog<T> extends ComposableProgram<Args<T>> {
|
|
|
430
425
|
}
|
|
431
426
|
if (subscription.data) {
|
|
432
427
|
try {
|
|
433
|
-
const type = deserialize(subscription.data,
|
|
428
|
+
const type = deserialize(subscription.data, Role);
|
|
434
429
|
if (type instanceof Replicator) {
|
|
435
430
|
await this.replicationReorganization();
|
|
436
431
|
}
|
|
@@ -554,13 +549,16 @@ export class SharedLog<T> extends ComposableProgram<Args<T>> {
|
|
|
554
549
|
const numberOfGroups = Math.min(
|
|
555
550
|
Math.ceil(replicators!.length / minReplicas)
|
|
556
551
|
);
|
|
557
|
-
const groups = new Array<string[]>(
|
|
552
|
+
const groups = new Array<{ hash: string; timestamp: number }[]>(
|
|
553
|
+
numberOfGroups
|
|
554
|
+
);
|
|
558
555
|
for (let i = 0; i < groups.length; i++) {
|
|
559
556
|
groups[i] = [];
|
|
560
557
|
}
|
|
561
558
|
for (let i = 0; i < replicators!.length; i++) {
|
|
562
559
|
groups[i % numberOfGroups].push(replicators![i]);
|
|
563
560
|
}
|
|
561
|
+
|
|
564
562
|
return groups;
|
|
565
563
|
}
|
|
566
564
|
async replicator(gid) {
|
package/src/role.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { field, variant } from "@dao-xyz/borsh";
|
|
2
2
|
|
|
3
|
-
export abstract class
|
|
3
|
+
export abstract class Role {}
|
|
4
4
|
|
|
5
5
|
export const NO_TYPE_VARIANT = new Uint8Array([0]);
|
|
6
6
|
|
|
7
7
|
@variant(0)
|
|
8
|
-
export class NoType extends
|
|
8
|
+
export class NoType extends Role {}
|
|
9
9
|
|
|
10
10
|
export const OBSERVER_TYPE_VARIANT = new Uint8Array([1]);
|
|
11
11
|
@variant(1)
|
|
12
|
-
export class Observer extends
|
|
12
|
+
export class Observer extends Role {}
|
|
13
13
|
|
|
14
14
|
export const REPLICATOR_TYPE_VARIANT = new Uint8Array([2]);
|
|
15
15
|
|
|
16
16
|
@variant(2)
|
|
17
|
-
export class Replicator extends
|
|
17
|
+
export class Replicator extends Role {
|
|
18
18
|
@field({ type: "u32" })
|
|
19
19
|
multiplier: number; // 1 means I do the same amount of work as anyone else, 2 means double
|
|
20
20
|
|