@peerbit/shared-log 9.1.2 → 9.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/get-samples.js +2 -3
- package/dist/benchmark/get-samples.js.map +1 -1
- package/dist/benchmark/index.js +4 -6
- package/dist/benchmark/index.js.map +1 -1
- package/dist/benchmark/memory/child.d.ts +2 -0
- package/dist/benchmark/memory/child.d.ts.map +1 -0
- package/dist/benchmark/memory/child.js +149 -0
- package/dist/benchmark/memory/child.js.map +1 -0
- package/dist/benchmark/memory/index.d.ts +2 -0
- package/dist/benchmark/memory/index.d.ts.map +1 -0
- package/dist/benchmark/memory/index.js +81 -0
- package/dist/benchmark/memory/index.js.map +1 -0
- package/dist/benchmark/memory/utils.d.ts +13 -0
- package/dist/benchmark/memory/utils.d.ts.map +1 -0
- package/dist/benchmark/memory/utils.js +2 -0
- package/dist/benchmark/memory/utils.js.map +1 -0
- package/dist/benchmark/replication-prune.js +27 -25
- package/dist/benchmark/replication-prune.js.map +1 -1
- package/dist/benchmark/replication.js +15 -16
- package/dist/benchmark/replication.js.map +1 -1
- package/dist/src/debounce.d.ts +25 -0
- package/dist/src/debounce.d.ts.map +1 -0
- package/dist/src/debounce.js +130 -0
- package/dist/src/debounce.js.map +1 -0
- package/dist/src/index.d.ts +55 -21
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +867 -390
- package/dist/src/index.js.map +1 -1
- package/dist/src/pid.d.ts.map +1 -1
- package/dist/src/pid.js +23 -21
- package/dist/src/pid.js.map +1 -1
- package/dist/src/ranges.d.ts +104 -8
- package/dist/src/ranges.d.ts.map +1 -1
- package/dist/src/ranges.js +518 -76
- package/dist/src/ranges.js.map +1 -1
- package/dist/src/replication-domain-hash.d.ts.map +1 -1
- package/dist/src/replication-domain-hash.js.map +1 -1
- package/dist/src/replication-domain-time.d.ts.map +1 -1
- package/dist/src/replication-domain-time.js.map +1 -1
- package/dist/src/replication-domain.d.ts +22 -2
- package/dist/src/replication-domain.d.ts.map +1 -1
- package/dist/src/replication-domain.js +33 -0
- package/dist/src/replication-domain.js.map +1 -1
- package/dist/src/replication.d.ts +1 -55
- package/dist/src/replication.d.ts.map +1 -1
- package/dist/src/replication.js +5 -215
- package/dist/src/replication.js.map +1 -1
- package/dist/src/role.d.ts +1 -0
- package/dist/src/role.d.ts.map +1 -1
- package/dist/src/role.js +1 -0
- package/dist/src/role.js.map +1 -1
- package/dist/src/utils.d.ts +6 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/utils.js +39 -0
- package/dist/src/utils.js.map +1 -0
- package/package.json +5 -5
- package/src/debounce.ts +172 -0
- package/src/index.ts +1282 -562
- package/src/pid.ts +27 -25
- package/src/ranges.ts +794 -181
- package/src/replication-domain-hash.ts +3 -1
- package/src/replication-domain-time.ts +2 -1
- package/src/replication-domain.ts +68 -5
- package/src/replication.ts +9 -235
- package/src/role.ts +1 -0
- package/src/utils.ts +49 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/* export const debounceFixedInterval = <
|
|
2
|
+
T extends (...args: any[]) => any | Promise<any>,
|
|
3
|
+
>(
|
|
4
|
+
fn: T,
|
|
5
|
+
delay: number,
|
|
6
|
+
options?: { debug?: boolean, onError?: (error: Error) => void },
|
|
7
|
+
) => {
|
|
8
|
+
// a debounce function that will always wait for the delay to pass before invoking the function
|
|
9
|
+
// though if delay time has passed it will call the function immediately instead of resetting the timer
|
|
10
|
+
|
|
11
|
+
let onError = options?.onError || ((error: Error) => console.error(error));
|
|
12
|
+
let timeout: NodeJS.Timeout | null = null;
|
|
13
|
+
let lastArgs: any[] = [];
|
|
14
|
+
let lastThis: any;
|
|
15
|
+
let invokePromise = Promise.resolve();
|
|
16
|
+
const invoke = async () => {
|
|
17
|
+
const fnCall = fn.apply(lastThis, lastArgs);
|
|
18
|
+
invokePromise = Promise.resolve(fnCall ?? {});
|
|
19
|
+
await invokePromise.then((res) => {
|
|
20
|
+
|
|
21
|
+
timeout = null;
|
|
22
|
+
return res;
|
|
23
|
+
}).catch(onError);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const debounced = (...args: Parameters<T>) => {
|
|
27
|
+
lastArgs = args;
|
|
28
|
+
lastThis = this;
|
|
29
|
+
if (timeout) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
invokePromise.then(() => {
|
|
33
|
+
timeout && clearTimeout(timeout);
|
|
34
|
+
timeout = setTimeout(invoke, delay);
|
|
35
|
+
if (options?.debug) {
|
|
36
|
+
console.log("debounceFixedInterval: timeout set", timeout);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
return debounced as T;
|
|
42
|
+
};
|
|
43
|
+
*/
|
|
44
|
+
export const debounceFixedInterval = (fn, delay, options) => {
|
|
45
|
+
// A debounce function that waits for the delay after the async function finishes
|
|
46
|
+
// before invoking the function again
|
|
47
|
+
let delayFn = typeof delay === "number" ? () => delay : delay;
|
|
48
|
+
const onError = options?.onError ||
|
|
49
|
+
((error) => {
|
|
50
|
+
throw error;
|
|
51
|
+
});
|
|
52
|
+
let timeout = null;
|
|
53
|
+
let lastArgs = null;
|
|
54
|
+
let lastThis;
|
|
55
|
+
let invokePromise = Promise.resolve();
|
|
56
|
+
let pendingCall = false;
|
|
57
|
+
let isRunning = false;
|
|
58
|
+
const invoke = async () => {
|
|
59
|
+
if (!lastArgs) {
|
|
60
|
+
// No pending calls to process
|
|
61
|
+
timeout = null;
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const args = lastArgs;
|
|
65
|
+
lastArgs = null; // Reset arguments
|
|
66
|
+
pendingCall = false; // Reset pending call flag
|
|
67
|
+
isRunning = true;
|
|
68
|
+
try {
|
|
69
|
+
const fnCall = fn.apply(lastThis, args);
|
|
70
|
+
invokePromise = Promise.resolve(fnCall ?? {});
|
|
71
|
+
await invokePromise;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
onError(error);
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
isRunning = false;
|
|
78
|
+
timeout = null;
|
|
79
|
+
// If there are pending calls, schedule the next invocation
|
|
80
|
+
if (pendingCall) {
|
|
81
|
+
timeout = setTimeout(invoke, delayFn());
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
const debounced = (...args) => {
|
|
86
|
+
lastArgs = args;
|
|
87
|
+
lastThis = this;
|
|
88
|
+
pendingCall = true;
|
|
89
|
+
if (isRunning || timeout) {
|
|
90
|
+
// Function is currently running or timeout is set, do nothing
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
// No function running and no timeout set, so schedule the invocation
|
|
94
|
+
timeout = setTimeout(invoke, delayFn());
|
|
95
|
+
};
|
|
96
|
+
return debounced;
|
|
97
|
+
};
|
|
98
|
+
export const debounceAcculmulator = (fn, create, delay) => {
|
|
99
|
+
let accumulator = create();
|
|
100
|
+
const invoke = async () => {
|
|
101
|
+
let toSend = accumulator.value;
|
|
102
|
+
accumulator = create();
|
|
103
|
+
await fn(toSend);
|
|
104
|
+
};
|
|
105
|
+
const debounced = debounceFixedInterval(invoke, delay);
|
|
106
|
+
return {
|
|
107
|
+
add: (value) => {
|
|
108
|
+
accumulator.add(value);
|
|
109
|
+
debounced();
|
|
110
|
+
},
|
|
111
|
+
delete: (key) => {
|
|
112
|
+
accumulator.delete(key);
|
|
113
|
+
},
|
|
114
|
+
size: () => accumulator.size,
|
|
115
|
+
invoke,
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
export const debouncedAccumulatorMap = (fn, delay) => {
|
|
119
|
+
return debounceAcculmulator(fn, () => {
|
|
120
|
+
const map = new Map();
|
|
121
|
+
return {
|
|
122
|
+
add: (props) => map.set(props.key, props.value),
|
|
123
|
+
delete: (key) => map.delete(key),
|
|
124
|
+
size: () => map.size,
|
|
125
|
+
value: map,
|
|
126
|
+
clear: () => map.clear(),
|
|
127
|
+
};
|
|
128
|
+
}, delay);
|
|
129
|
+
};
|
|
130
|
+
//# sourceMappingURL=debounce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debounce.js","sourceRoot":"","sources":["../../src/debounce.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAGpC,EAAK,EACL,KAA8B,EAC9B,OAA8C,EAC7C,EAAE;IACH,iFAAiF;IACjF,qCAAqC;IACrC,IAAI,OAAO,GAAiB,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5E,MAAM,OAAO,GACZ,OAAO,EAAE,OAAO;QAChB,CAAC,CAAC,KAAY,EAAE,EAAE;YACjB,MAAM,KAAK,CAAC;QACb,CAAC,CAAC,CAAC;IACJ,IAAI,OAAO,GAA0B,IAAI,CAAC;IAC1C,IAAI,QAAQ,GAAiB,IAAI,CAAC;IAClC,IAAI,QAAa,CAAC;IAClB,IAAI,aAAa,GAAiB,OAAO,CAAC,OAAO,EAAE,CAAC;IACpD,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,8BAA8B;YAC9B,OAAO,GAAG,IAAI,CAAC;YACf,OAAO;QACR,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC;QACtB,QAAQ,GAAG,IAAI,CAAC,CAAC,kBAAkB;QACnC,WAAW,GAAG,KAAK,CAAC,CAAC,0BAA0B;QAC/C,SAAS,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACxC,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YAE9C,MAAM,aAAa,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAc,CAAC,CAAC;QACzB,CAAC;gBAAS,CAAC;YACV,SAAS,GAAG,KAAK,CAAC;YAClB,OAAO,GAAG,IAAI,CAAC;YAEf,2DAA2D;YAC3D,IAAI,WAAW,EAAE,CAAC;gBACjB,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;YACzC,CAAC;QACF,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,GAAG,IAAmB,EAAE,EAAE;QAC5C,QAAQ,GAAG,IAAI,CAAC;QAChB,QAAQ,GAAG,IAAI,CAAC;QAChB,WAAW,GAAG,IAAI,CAAC;QAEnB,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;YAC1B,8DAA8D;YAC9D,OAAO;QACR,CAAC;QAED,qEAAqE;QACrE,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,OAAO,SAAc,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CACnC,EAAoB,EACpB,MAKC,EACD,KAA8B,EAC7B,EAAE;IACH,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC;IAE3B,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACzB,IAAI,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC;QAC/B,WAAW,GAAG,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAEvD,OAAO;QACN,GAAG,EAAE,CAAC,KAAQ,EAAE,EAAE;YACjB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,SAAS,EAAE,CAAC;QACb,CAAC;QACD,MAAM,EAAE,CAAC,GAAM,EAAE,EAAE;YAClB,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI;QAC5B,MAAM;KACN,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACtC,EAAiC,EACjC,KAAa,EACZ,EAAE;IACH,OAAO,oBAAoB,CAK1B,EAAE,EACF,GAAG,EAAE;QACJ,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,OAAO;YACN,GAAG,EAAE,CAAC,KAAgC,EAAE,EAAE,CACzC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;YAChC,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;YACxC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI;YACpB,KAAK,EAAE,GAAG;YACV,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE;SACxB,CAAC;IACH,CAAC,EACD,KAAK,CACL,CAAC;AACH,CAAC,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -5,15 +5,18 @@ import { Program, type ProgramEvents } from "@peerbit/program";
|
|
|
5
5
|
import { SubscriptionEvent, UnsubcriptionEvent } from "@peerbit/pubsub-interface";
|
|
6
6
|
import { RPC, type RequestContext } from "@peerbit/rpc";
|
|
7
7
|
import { type CPUUsage, CPUUsageIntervalLag } from "./cpu.js";
|
|
8
|
+
import { type DebouncedAccumulatorMap } from "./debounce.js";
|
|
8
9
|
import { TransportMessage } from "./message.js";
|
|
9
10
|
import { PIDReplicationController } from "./pid.js";
|
|
11
|
+
import { EntryReplicated, ReplicationRange, ReplicationRangeIndexable } from "./ranges.js";
|
|
10
12
|
import { type ReplicationDomainHash, createReplicationDomainHash } from "./replication-domain-hash.js";
|
|
11
13
|
import { type ReplicationDomainTime, createReplicationDomainTime } from "./replication-domain-time.js";
|
|
12
|
-
import { type ExtractDomainArgs, type ReplicationDomain } from "./replication-domain.js";
|
|
13
|
-
import { AbsoluteReplicas, AddedReplicationSegmentMessage, AllReplicatingSegmentsMessage, type ReplicationLimits
|
|
14
|
+
import { type ExtractDomainArgs, type ReplicationChanges, type ReplicationDomain } from "./replication-domain.js";
|
|
15
|
+
import { AbsoluteReplicas, AddedReplicationSegmentMessage, AllReplicatingSegmentsMessage, type ReplicationLimits } from "./replication.js";
|
|
14
16
|
export { type ReplicationDomain, type ReplicationDomainHash, type ReplicationDomainTime, createReplicationDomainHash, createReplicationDomainTime, };
|
|
15
17
|
export { type CPUUsage, CPUUsageIntervalLag };
|
|
16
18
|
export * from "./replication.js";
|
|
19
|
+
export { EntryReplicated };
|
|
17
20
|
export declare const logger: import("pino").Logger<never>;
|
|
18
21
|
export type ReplicationLimitsOptions = Partial<ReplicationLimits> | {
|
|
19
22
|
min?: number;
|
|
@@ -21,6 +24,7 @@ export type ReplicationLimitsOptions = Partial<ReplicationLimits> | {
|
|
|
21
24
|
};
|
|
22
25
|
export type DynamicReplicationOptions = {
|
|
23
26
|
limits?: {
|
|
27
|
+
interval?: number;
|
|
24
28
|
storage?: number;
|
|
25
29
|
cpu?: number | {
|
|
26
30
|
max: number;
|
|
@@ -29,6 +33,7 @@ export type DynamicReplicationOptions = {
|
|
|
29
33
|
};
|
|
30
34
|
};
|
|
31
35
|
export type FixedReplicationOptions = {
|
|
36
|
+
id?: Uint8Array;
|
|
32
37
|
normalized?: boolean;
|
|
33
38
|
factor: number | "all" | "right";
|
|
34
39
|
strict?: boolean;
|
|
@@ -40,7 +45,7 @@ export type SharedLogOptions<T, D extends ReplicationDomain<any, T>> = {
|
|
|
40
45
|
replicas?: ReplicationLimitsOptions;
|
|
41
46
|
respondToIHaveTimeout?: number;
|
|
42
47
|
canReplicate?: (publicKey: PublicSignKey) => Promise<boolean> | boolean;
|
|
43
|
-
sync?: (entry:
|
|
48
|
+
sync?: (entry: ShallowOrFullEntry<T> | EntryReplicated) => boolean;
|
|
44
49
|
timeUntilRoleMaturity?: number;
|
|
45
50
|
waitForReplicatorTimeout?: number;
|
|
46
51
|
distributionDebounceTime?: number;
|
|
@@ -54,7 +59,7 @@ export type Args<T, D extends ReplicationDomain<any, T> = ReplicationDomainHash>
|
|
|
54
59
|
export type SharedAppendOptions<T> = AppendOptions<T> & {
|
|
55
60
|
replicas?: AbsoluteReplicas | number;
|
|
56
61
|
replicate?: boolean;
|
|
57
|
-
target?: "all" | "replicators";
|
|
62
|
+
target?: "all" | "replicators" | "none";
|
|
58
63
|
};
|
|
59
64
|
type ReplicatorJoinEvent = {
|
|
60
65
|
publicKey: PublicSignKey;
|
|
@@ -62,13 +67,17 @@ type ReplicatorJoinEvent = {
|
|
|
62
67
|
type ReplicatorLeaveEvent = {
|
|
63
68
|
publicKey: PublicSignKey;
|
|
64
69
|
};
|
|
65
|
-
type
|
|
70
|
+
type ReplicationChangeEvent = {
|
|
71
|
+
publicKey: PublicSignKey;
|
|
72
|
+
};
|
|
73
|
+
type ReplicatorMatureEvent = {
|
|
66
74
|
publicKey: PublicSignKey;
|
|
67
75
|
};
|
|
68
76
|
export interface SharedLogEvents extends ProgramEvents {
|
|
69
77
|
"replicator:join": CustomEvent<ReplicatorJoinEvent>;
|
|
70
78
|
"replicator:leave": CustomEvent<ReplicatorLeaveEvent>;
|
|
71
|
-
"replication:change": CustomEvent<
|
|
79
|
+
"replication:change": CustomEvent<ReplicationChangeEvent>;
|
|
80
|
+
"replicator:mature": CustomEvent<ReplicatorMatureEvent>;
|
|
72
81
|
}
|
|
73
82
|
export declare class SharedLog<T = Uint8Array, D extends ReplicationDomain<any, T> = ReplicationDomainHash> extends Program<Args<T, D>, SharedLogEvents> {
|
|
74
83
|
log: Log<T>;
|
|
@@ -76,6 +85,7 @@ export declare class SharedLog<T = Uint8Array, D extends ReplicationDomain<any,
|
|
|
76
85
|
private _isReplicating;
|
|
77
86
|
private _isAdaptiveReplicating;
|
|
78
87
|
private _replicationRangeIndex;
|
|
88
|
+
private _entryCoordinatesIndex;
|
|
79
89
|
private _gidPeersHistory;
|
|
80
90
|
private _onSubscriptionFn;
|
|
81
91
|
private _onUnsubscriptionFn;
|
|
@@ -86,13 +96,16 @@ export declare class SharedLog<T = Uint8Array, D extends ReplicationDomain<any,
|
|
|
86
96
|
private _respondToIHaveTimeout;
|
|
87
97
|
private _pendingDeletes;
|
|
88
98
|
private _pendingIHave;
|
|
99
|
+
private pendingMaturity;
|
|
89
100
|
private latestReplicationInfoMessage;
|
|
90
101
|
private remoteBlocks;
|
|
91
102
|
private openTime;
|
|
92
103
|
private oldestOpenTime;
|
|
93
104
|
private sync?;
|
|
94
105
|
private rebalanceParticipationDebounced;
|
|
95
|
-
|
|
106
|
+
pruneDebouncedFn: DebouncedAccumulatorMap<Entry<T> | ShallowEntry | EntryReplicated>;
|
|
107
|
+
private responseToPruneDebouncedFn;
|
|
108
|
+
private replicationChangeDebounceFn;
|
|
96
109
|
private distributeQueue?;
|
|
97
110
|
private syncMoreInterval?;
|
|
98
111
|
private syncInFlightQueue;
|
|
@@ -111,7 +124,7 @@ export declare class SharedLog<T = Uint8Array, D extends ReplicationDomain<any,
|
|
|
111
124
|
factor: number;
|
|
112
125
|
}[];
|
|
113
126
|
domain: D;
|
|
114
|
-
|
|
127
|
+
interval: any;
|
|
115
128
|
constructor(properties?: {
|
|
116
129
|
id?: Uint8Array;
|
|
117
130
|
});
|
|
@@ -124,11 +137,11 @@ export declare class SharedLog<T = Uint8Array, D extends ReplicationDomain<any,
|
|
|
124
137
|
private setupRebalanceDebounceFunction;
|
|
125
138
|
private _replicate;
|
|
126
139
|
setupDebouncedRebalancing(options?: DynamicReplicationOptions): void;
|
|
127
|
-
replicate(rangeOrEntry?:
|
|
140
|
+
replicate(rangeOrEntry?: ReplicationOptions | Entry<T> | Entry<T>[], options?: {
|
|
128
141
|
reset?: boolean;
|
|
129
142
|
checkDuplicates?: boolean;
|
|
130
143
|
announce?: (msg: AllReplicatingSegmentsMessage | AddedReplicationSegmentMessage) => void;
|
|
131
|
-
}): Promise<
|
|
144
|
+
}): Promise<ReplicationRangeIndexable[] | undefined>;
|
|
132
145
|
unreplicate(rangeOrEntry?: Entry<T> | ReplicationRange): Promise<void>;
|
|
133
146
|
private removeReplicator;
|
|
134
147
|
private updateOldestTimestampFromIndex;
|
|
@@ -164,24 +177,38 @@ export declare class SharedLog<T = Uint8Array, D extends ReplicationDomain<any,
|
|
|
164
177
|
getMyReplicationSegments(): Promise<ReplicationRangeIndexable[]>;
|
|
165
178
|
getMyTotalParticipation(): Promise<number>;
|
|
166
179
|
get replicationIndex(): Index<ReplicationRangeIndexable>;
|
|
180
|
+
get entryCoordinatesIndex(): Index<EntryReplicated>;
|
|
167
181
|
/**
|
|
168
182
|
* TODO improve efficiency
|
|
169
183
|
*/
|
|
170
|
-
getReplicators(): Promise<Set<
|
|
171
|
-
waitForReplicator(...keys: PublicSignKey[]): Promise<boolean | void>;
|
|
184
|
+
getReplicators(): Promise<Set<string>>;
|
|
185
|
+
waitForReplicator(...keys: PublicSignKey[]): Promise<boolean | void | undefined>;
|
|
172
186
|
join(entries: (string | Entry<T> | ShallowEntry)[], options?: {
|
|
173
187
|
verifySignatures?: boolean;
|
|
174
188
|
timeout?: number;
|
|
175
189
|
replicate?: boolean;
|
|
176
190
|
}): Promise<void>;
|
|
177
|
-
|
|
178
|
-
|
|
191
|
+
private findLeadersPersist;
|
|
192
|
+
isLeader(cursor: number[] | {
|
|
193
|
+
entry: ShallowOrFullEntry<any> | EntryReplicated;
|
|
194
|
+
replicas: number;
|
|
195
|
+
}, options?: {
|
|
179
196
|
roleAge?: number;
|
|
180
197
|
}): Promise<boolean>;
|
|
181
198
|
private waitForIsLeader;
|
|
182
|
-
findLeaders(
|
|
199
|
+
findLeaders(cursor: number[] | {
|
|
200
|
+
entry: ShallowOrFullEntry<any> | EntryReplicated;
|
|
201
|
+
replicas: number;
|
|
202
|
+
}, options?: {
|
|
183
203
|
roleAge?: number;
|
|
184
|
-
}): Promise<string
|
|
204
|
+
}): Promise<Map<string, {
|
|
205
|
+
intersecting: boolean;
|
|
206
|
+
}>>;
|
|
207
|
+
private groupByLeaders;
|
|
208
|
+
private createCoordinates;
|
|
209
|
+
private getCoordinates;
|
|
210
|
+
private persistCoordinate;
|
|
211
|
+
private deleteCoordinates;
|
|
185
212
|
getDefaultMinRoleAge(): Promise<number>;
|
|
186
213
|
private findLeadersFromU32;
|
|
187
214
|
isReplicator(entry: Entry<any>, options?: {
|
|
@@ -189,20 +216,27 @@ export declare class SharedLog<T = Uint8Array, D extends ReplicationDomain<any,
|
|
|
189
216
|
roleAge?: number;
|
|
190
217
|
}): Promise<boolean>;
|
|
191
218
|
handleSubscriptionChange(publicKey: PublicSignKey, topics: string[], subscribed: boolean): Promise<void>;
|
|
192
|
-
prune(entries: (
|
|
219
|
+
prune(entries: (EntryReplicated | ShallowOrFullEntry<any>)[] | Map<string, EntryReplicated | ShallowOrFullEntry<any>>, options?: {
|
|
193
220
|
timeout?: number;
|
|
194
221
|
unchecked?: boolean;
|
|
195
222
|
}): Promise<any>[];
|
|
196
|
-
|
|
197
|
-
|
|
223
|
+
/**
|
|
224
|
+
* For debugging
|
|
225
|
+
*/
|
|
226
|
+
getPrunable(): Promise<Entry<any>[]>;
|
|
227
|
+
getNonPrunable(): Promise<Entry<any>[]>;
|
|
228
|
+
rebalanceAll(): Promise<void>;
|
|
229
|
+
waitForPruned(): Promise<void>;
|
|
230
|
+
onReplicationChange(changeOrChanges: ReplicationChanges | ReplicationChanges[]): Promise<false | undefined>;
|
|
198
231
|
private requestSync;
|
|
199
232
|
_onUnsubscription(evt: CustomEvent<UnsubcriptionEvent>): Promise<void>;
|
|
200
233
|
_onSubscription(evt: CustomEvent<SubscriptionEvent>): Promise<void>;
|
|
201
234
|
addToHistory(usedMemory: number, factor: number): Promise<void>;
|
|
202
235
|
calculateTrend(): Promise<number>;
|
|
203
|
-
rebalanceParticipation(
|
|
204
|
-
getDynamicRange(): Promise<ReplicationRangeIndexable>;
|
|
236
|
+
rebalanceParticipation(): Promise<boolean | undefined>;
|
|
237
|
+
getDynamicRange(): Promise<ReplicationRangeIndexable | undefined>;
|
|
205
238
|
private clearSyncProcess;
|
|
239
|
+
private clearSyncProcessPublicKey;
|
|
206
240
|
private onEntryAdded;
|
|
207
241
|
onEntryRemoved(hash: string): void;
|
|
208
242
|
}
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|