@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.
Files changed (66) hide show
  1. package/dist/benchmark/get-samples.js +2 -3
  2. package/dist/benchmark/get-samples.js.map +1 -1
  3. package/dist/benchmark/index.js +4 -6
  4. package/dist/benchmark/index.js.map +1 -1
  5. package/dist/benchmark/memory/child.d.ts +2 -0
  6. package/dist/benchmark/memory/child.d.ts.map +1 -0
  7. package/dist/benchmark/memory/child.js +149 -0
  8. package/dist/benchmark/memory/child.js.map +1 -0
  9. package/dist/benchmark/memory/index.d.ts +2 -0
  10. package/dist/benchmark/memory/index.d.ts.map +1 -0
  11. package/dist/benchmark/memory/index.js +81 -0
  12. package/dist/benchmark/memory/index.js.map +1 -0
  13. package/dist/benchmark/memory/utils.d.ts +13 -0
  14. package/dist/benchmark/memory/utils.d.ts.map +1 -0
  15. package/dist/benchmark/memory/utils.js +2 -0
  16. package/dist/benchmark/memory/utils.js.map +1 -0
  17. package/dist/benchmark/replication-prune.js +27 -25
  18. package/dist/benchmark/replication-prune.js.map +1 -1
  19. package/dist/benchmark/replication.js +15 -16
  20. package/dist/benchmark/replication.js.map +1 -1
  21. package/dist/src/debounce.d.ts +25 -0
  22. package/dist/src/debounce.d.ts.map +1 -0
  23. package/dist/src/debounce.js +130 -0
  24. package/dist/src/debounce.js.map +1 -0
  25. package/dist/src/index.d.ts +55 -21
  26. package/dist/src/index.d.ts.map +1 -1
  27. package/dist/src/index.js +867 -390
  28. package/dist/src/index.js.map +1 -1
  29. package/dist/src/pid.d.ts.map +1 -1
  30. package/dist/src/pid.js +23 -21
  31. package/dist/src/pid.js.map +1 -1
  32. package/dist/src/ranges.d.ts +104 -8
  33. package/dist/src/ranges.d.ts.map +1 -1
  34. package/dist/src/ranges.js +518 -76
  35. package/dist/src/ranges.js.map +1 -1
  36. package/dist/src/replication-domain-hash.d.ts.map +1 -1
  37. package/dist/src/replication-domain-hash.js.map +1 -1
  38. package/dist/src/replication-domain-time.d.ts.map +1 -1
  39. package/dist/src/replication-domain-time.js.map +1 -1
  40. package/dist/src/replication-domain.d.ts +22 -2
  41. package/dist/src/replication-domain.d.ts.map +1 -1
  42. package/dist/src/replication-domain.js +33 -0
  43. package/dist/src/replication-domain.js.map +1 -1
  44. package/dist/src/replication.d.ts +1 -55
  45. package/dist/src/replication.d.ts.map +1 -1
  46. package/dist/src/replication.js +5 -215
  47. package/dist/src/replication.js.map +1 -1
  48. package/dist/src/role.d.ts +1 -0
  49. package/dist/src/role.d.ts.map +1 -1
  50. package/dist/src/role.js +1 -0
  51. package/dist/src/role.js.map +1 -1
  52. package/dist/src/utils.d.ts +6 -0
  53. package/dist/src/utils.d.ts.map +1 -0
  54. package/dist/src/utils.js +39 -0
  55. package/dist/src/utils.js.map +1 -0
  56. package/package.json +5 -5
  57. package/src/debounce.ts +172 -0
  58. package/src/index.ts +1282 -562
  59. package/src/pid.ts +27 -25
  60. package/src/ranges.ts +794 -181
  61. package/src/replication-domain-hash.ts +3 -1
  62. package/src/replication-domain-time.ts +2 -1
  63. package/src/replication-domain.ts +68 -5
  64. package/src/replication.ts +9 -235
  65. package/src/role.ts +1 -0
  66. 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":"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"}
@@ -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, ReplicationRange, ReplicationRangeIndexable } from "./replication.js";
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: Entry<T> | ShallowEntry) => boolean;
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 ReplicationChange = {
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<ReplicationChange>;
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
- private distributeInterval;
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
- private pq;
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?: ReplicationRange | ReplicationOptions | Entry<T> | Entry<T>[], options?: {
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<void>;
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<unknown>>;
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
- isLeader(entry: ShallowOrFullEntry<any>, numberOfLeaders: number, options?: {
178
- candidates?: string[];
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(entry: ShallowOrFullEntry<any>, numberOfLeaders: number, options?: {
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: (Entry<any> | ShallowEntry)[], options?: {
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
- distribute(): Promise<boolean | void>;
197
- _distribute(): Promise<boolean>;
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(onRoleChange?: boolean): Promise<boolean>;
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}