@peerbit/shared-log 8.0.7 → 9.0.0-2bc15a6

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 (79) hide show
  1. package/dist/benchmark/get-samples.d.ts +2 -0
  2. package/dist/benchmark/get-samples.d.ts.map +1 -0
  3. package/dist/benchmark/get-samples.js +69 -0
  4. package/dist/benchmark/get-samples.js.map +1 -0
  5. package/dist/benchmark/index.d.ts +2 -0
  6. package/dist/benchmark/index.d.ts.map +1 -0
  7. package/{lib/esm/__benchmark__ → dist/benchmark}/index.js +16 -16
  8. package/dist/benchmark/index.js.map +1 -0
  9. package/dist/benchmark/replication-prune.d.ts +2 -0
  10. package/dist/benchmark/replication-prune.d.ts.map +1 -0
  11. package/dist/benchmark/replication-prune.js +103 -0
  12. package/dist/benchmark/replication-prune.js.map +1 -0
  13. package/dist/benchmark/replication.d.ts +2 -0
  14. package/dist/benchmark/replication.d.ts.map +1 -0
  15. package/dist/benchmark/replication.js +91 -0
  16. package/dist/benchmark/replication.js.map +1 -0
  17. package/{lib/esm → dist/src}/blocks.d.ts +1 -0
  18. package/dist/src/blocks.d.ts.map +1 -0
  19. package/{lib/esm → dist/src}/blocks.js +1 -1
  20. package/dist/src/blocks.js.map +1 -0
  21. package/{lib/esm → dist/src}/cpu.d.ts +2 -1
  22. package/dist/src/cpu.d.ts.map +1 -0
  23. package/{lib/esm → dist/src}/cpu.js +2 -2
  24. package/dist/src/cpu.js.map +1 -0
  25. package/{lib/esm → dist/src}/exchange-heads.d.ts +2 -1
  26. package/dist/src/exchange-heads.d.ts.map +1 -0
  27. package/{lib/esm → dist/src}/exchange-heads.js +9 -7
  28. package/dist/src/exchange-heads.js.map +1 -0
  29. package/{lib/esm → dist/src}/index.d.ts +64 -54
  30. package/dist/src/index.d.ts.map +1 -0
  31. package/{lib/esm → dist/src}/index.js +569 -399
  32. package/dist/src/index.js.map +1 -0
  33. package/{lib/esm → dist/src}/message.d.ts +1 -0
  34. package/dist/src/message.d.ts.map +1 -0
  35. package/{lib/esm → dist/src}/pid.d.ts +1 -0
  36. package/dist/src/pid.d.ts.map +1 -0
  37. package/{lib/esm → dist/src}/pid.js +20 -20
  38. package/dist/src/pid.js.map +1 -0
  39. package/dist/src/ranges.d.ts +10 -0
  40. package/dist/src/ranges.d.ts.map +1 -0
  41. package/dist/src/ranges.js +645 -0
  42. package/dist/src/ranges.js.map +1 -0
  43. package/dist/src/replication.d.ts +112 -0
  44. package/dist/src/replication.d.ts.map +1 -0
  45. package/dist/src/replication.js +348 -0
  46. package/dist/src/replication.js.map +1 -0
  47. package/dist/src/role.d.ts +2 -0
  48. package/dist/src/role.d.ts.map +1 -0
  49. package/dist/src/role.js +106 -0
  50. package/dist/src/role.js.map +1 -0
  51. package/package.json +70 -43
  52. package/src/blocks.ts +1 -1
  53. package/src/cpu.ts +7 -6
  54. package/src/exchange-heads.ts +19 -19
  55. package/src/index.ts +881 -609
  56. package/src/pid.ts +22 -21
  57. package/src/ranges.ts +692 -148
  58. package/src/replication.ts +271 -19
  59. package/src/role.ts +63 -83
  60. package/LICENSE +0 -202
  61. package/lib/esm/__benchmark__/index.d.ts +0 -1
  62. package/lib/esm/__benchmark__/index.js.map +0 -1
  63. package/lib/esm/blocks.js.map +0 -1
  64. package/lib/esm/cpu.js.map +0 -1
  65. package/lib/esm/exchange-heads.js.map +0 -1
  66. package/lib/esm/index.js.map +0 -1
  67. package/lib/esm/pid.js.map +0 -1
  68. package/lib/esm/ranges.d.ts +0 -12
  69. package/lib/esm/ranges.js +0 -247
  70. package/lib/esm/ranges.js.map +0 -1
  71. package/lib/esm/replication.d.ts +0 -53
  72. package/lib/esm/replication.js +0 -105
  73. package/lib/esm/replication.js.map +0 -1
  74. package/lib/esm/role.d.ts +0 -38
  75. package/lib/esm/role.js +0 -130
  76. package/lib/esm/role.js.map +0 -1
  77. package/src/__benchmark__/index.ts +0 -115
  78. /package/{lib/esm → dist/src}/message.js +0 -0
  79. /package/{lib/esm → dist/src}/message.js.map +0 -0
@@ -1,25 +1,21 @@
1
- import { RequestContext, RPC } from "@peerbit/rpc";
2
- import { TransportMessage } from "./message.js";
3
- import { AppendOptions, Entry, Log, LogEvents, LogProperties } from "@peerbit/log";
4
- import { Program, ProgramEvents } from "@peerbit/program";
5
1
  import { PublicSignKey } from "@peerbit/crypto";
2
+ import { type Index } from "@peerbit/indexer-interface";
3
+ import { type AppendOptions, type Change, Entry, Log, type LogEvents, type LogProperties, ShallowEntry, type ShallowOrFullEntry } from "@peerbit/log";
4
+ import { Program, type ProgramEvents } from "@peerbit/program";
6
5
  import { SubscriptionEvent, UnsubcriptionEvent } from "@peerbit/pubsub-interface";
7
- import { Observer, Replicator, Role } from "./role.js";
8
- import { AbsoluteReplicas, ReplicationLimits, ReplicatorRect } from "./replication.js";
9
- import yallist from "yallist";
6
+ import { RPC, type RequestContext } from "@peerbit/rpc";
7
+ import { type CPUUsage, CPUUsageIntervalLag } from "./cpu.js";
8
+ import { TransportMessage } from "./message.js";
10
9
  import { PIDReplicationController } from "./pid.js";
10
+ import { AbsoluteReplicas, type ReplicationLimits, ReplicationRange, ReplicationRangeIndexable } from "./replication.js";
11
11
  export * from "./replication.js";
12
- import { CPUUsage, CPUUsageIntervalLag } from "./cpu.js";
13
12
  export { type CPUUsage, CPUUsageIntervalLag };
14
- export { Observer, Replicator, Role };
15
13
  export declare const logger: import("pino").Logger<never>;
16
14
  export type ReplicationLimitsOptions = Partial<ReplicationLimits> | {
17
15
  min?: number;
18
16
  max?: number;
19
17
  };
20
- type StringRoleOptions = "observer" | "replicator";
21
- export type AdaptiveReplicatorOptions = {
22
- type: "replicator";
18
+ export type DynamicReplicationOptions = {
23
19
  limits?: {
24
20
  storage?: number;
25
21
  cpu?: number | {
@@ -28,20 +24,17 @@ export type AdaptiveReplicatorOptions = {
28
24
  };
29
25
  };
30
26
  };
31
- export type FixedReplicatorOptions = {
32
- type: "replicator";
27
+ export type FixedReplicationOptions = {
33
28
  factor: number;
29
+ offset?: number;
34
30
  };
35
- export type ObserverType = {
36
- type: "observer";
37
- };
38
- export type RoleOptions = StringRoleOptions | ObserverType | FixedReplicatorOptions | AdaptiveReplicatorOptions;
31
+ export type ReplicationOptions = DynamicReplicationOptions | FixedReplicationOptions | number | boolean;
39
32
  export type SharedLogOptions<T> = {
40
- role?: RoleOptions;
33
+ replicate?: ReplicationOptions;
41
34
  replicas?: ReplicationLimitsOptions;
42
35
  respondToIHaveTimeout?: number;
43
36
  canReplicate?: (publicKey: PublicSignKey) => Promise<boolean> | boolean;
44
- sync?: (entry: Entry<T>) => boolean;
37
+ sync?: (entry: Entry<T> | ShallowEntry) => boolean;
45
38
  timeUntilRoleMaturity?: number;
46
39
  waitForReplicatorTimeout?: number;
47
40
  distributionDebounceTime?: number;
@@ -54,24 +47,30 @@ export type SharedAppendOptions<T> = AppendOptions<T> & {
54
47
  replicas?: AbsoluteReplicas | number;
55
48
  target?: "all" | "replicators";
56
49
  };
57
- type UpdateRoleEvent = {
50
+ type ReplicatorJoinEvent = {
51
+ publicKey: PublicSignKey;
52
+ };
53
+ type ReplicatorLeaveEvent = {
54
+ publicKey: PublicSignKey;
55
+ };
56
+ type ReplicationChange = {
58
57
  publicKey: PublicSignKey;
59
- role: Role;
60
58
  };
61
59
  export interface SharedLogEvents extends ProgramEvents {
62
- role: CustomEvent<UpdateRoleEvent>;
60
+ "replicator:join": CustomEvent<ReplicatorJoinEvent>;
61
+ "replicator:leave": CustomEvent<ReplicatorLeaveEvent>;
62
+ "replication:change": CustomEvent<ReplicationChange>;
63
63
  }
64
64
  export declare class SharedLog<T = Uint8Array> extends Program<Args<T>, SharedLogEvents> {
65
65
  log: Log<T>;
66
66
  rpc: RPC<TransportMessage, TransportMessage>;
67
- private _role;
68
- private _roleConfig;
69
- private _sortedPeersCache;
67
+ private _replicationSettings?;
68
+ private _replicationRangeIndex;
70
69
  private _totalParticipation;
71
70
  private _gidPeersHistory;
72
71
  private _onSubscriptionFn;
73
72
  private _onUnsubscriptionFn;
74
- private _canReplicate?;
73
+ private _isTrustedReplicator?;
75
74
  private _logProperties?;
76
75
  private _closeController;
77
76
  private _gidParentCache;
@@ -95,83 +94,94 @@ export declare class SharedLog<T = Uint8Array> extends Program<Args<T>, SharedLo
95
94
  timeUntilRoleMaturity: number;
96
95
  waitForReplicatorTimeout: number;
97
96
  distributionDebounceTime: number;
97
+ replicationController: PIDReplicationController;
98
+ history: {
99
+ usedMemory: number;
100
+ factor: number;
101
+ }[];
102
+ private pq;
98
103
  constructor(properties?: {
99
104
  id?: Uint8Array;
100
105
  });
101
- /**
102
- * Returns the current role
103
- */
104
- get role(): Observer | Replicator;
105
106
  /**
106
107
  * Return the
107
108
  */
108
- get roleConfig(): Observer | Replicator | AdaptiveReplicatorOptions;
109
+ get replicationSettings(): ReplicationOptions | undefined;
110
+ isReplicating(): Promise<boolean>;
109
111
  get totalParticipation(): number;
112
+ calculateTotalParticipation(): Promise<number>;
113
+ countReplicationSegments(): Promise<number>;
110
114
  private setupRebalanceDebounceFunction;
111
- private setupRole;
112
- updateRole(role: RoleOptions, onRoleChange?: boolean): Promise<"added" | "none" | "updated" | "removed">;
113
- private _updateRole;
115
+ private setupReplicationSettings;
116
+ replicate(range?: ReplicationRange | ReplicationOptions): Promise<void>;
117
+ private removeReplicator;
118
+ private updateOldestTimestampFromIndex;
119
+ private removeReplicationRange;
120
+ private addReplicationRange;
121
+ startAnnounceReplicating(range: ReplicationRangeIndexable): Promise<void>;
114
122
  append(data: T, options?: SharedAppendOptions<T> | undefined): Promise<{
115
123
  entry: Entry<T>;
116
- removed: Entry<T>[];
124
+ removed: ShallowOrFullEntry<T>[];
117
125
  }>;
118
126
  open(options?: Args<T>): Promise<void>;
119
127
  afterOpen(): Promise<void>;
128
+ reload(): Promise<void>;
120
129
  getMemoryUsage(): Promise<number>;
121
130
  get topic(): string;
131
+ onChange(change: Change<T>): Promise<void>;
132
+ canAppend(entry: Entry<T>): Promise<boolean>;
122
133
  private _close;
123
134
  close(from?: Program): Promise<boolean>;
124
135
  drop(from?: Program): Promise<boolean>;
125
136
  recover(): Promise<void>;
126
137
  _onMessage(msg: TransportMessage, context: RequestContext): Promise<TransportMessage | undefined>;
127
- getReplicatorsSorted(): yallist<ReplicatorRect> | undefined;
128
- waitForReplicator(...keys: PublicSignKey[]): Promise<boolean | void | undefined>;
138
+ getMyReplicationSegments(): Promise<ReplicationRangeIndexable[]>;
139
+ getTotalParticipation(): Promise<number>;
140
+ get replicationIndex(): Index<ReplicationRangeIndexable>;
141
+ /**
142
+ * TODO improve efficiency
143
+ */
144
+ getReplicators(): Promise<Set<unknown>>;
145
+ waitForReplicator(...keys: PublicSignKey[]): Promise<boolean | void>;
129
146
  isLeader(slot: {
130
147
  toString(): string;
131
148
  }, numberOfLeaders: number, options?: {
132
149
  candidates?: string[];
133
150
  roleAge?: number;
134
151
  }): Promise<boolean>;
135
- private getReplicationOffset;
136
152
  private waitForIsLeader;
137
153
  findLeaders(subject: {
138
154
  toString(): string;
139
155
  }, numberOfLeaders: number, options?: {
140
156
  roleAge?: number;
141
157
  }): Promise<string[]>;
142
- getDefaultMinRoleAge(): number;
158
+ getDefaultMinRoleAge(): Promise<number>;
143
159
  private findLeadersFromUniformNumber;
144
160
  /**
145
161
  *
146
162
  * @returns groups where at least one in any group will have the entry you are looking for
147
163
  */
148
- getReplicatorUnion(roleAge?: number): string[];
149
- replicator(entry: Entry<any>, options?: {
164
+ getReplicatorUnion(roleAge?: number): Promise<string[]>;
165
+ isReplicator(entry: Entry<any>, options?: {
150
166
  candidates?: string[];
151
167
  roleAge?: number;
152
168
  }): Promise<boolean>;
153
- private onRoleChange;
154
- private modifyReplicators;
155
- private _modifyReplicators;
156
- handleSubscriptionChange(publicKey: PublicSignKey, changes: string[], subscribed: boolean): Promise<void>;
157
- prune(entries: Entry<any>[], options?: {
169
+ handleSubscriptionChange(publicKey: PublicSignKey, topics: string[], subscribed: boolean): Promise<void>;
170
+ prune(entries: (Entry<any> | ShallowEntry)[], options?: {
158
171
  timeout?: number;
159
172
  unchecked?: boolean;
160
173
  }): Promise<any>[];
161
- distribute(): Promise<false | void>;
162
- _distribute(): Promise<false | undefined>;
174
+ distribute(): Promise<boolean | void>;
175
+ _distribute(): Promise<boolean>;
163
176
  private requestSync;
164
177
  _onUnsubscription(evt: CustomEvent<UnsubcriptionEvent>): Promise<void>;
165
178
  _onSubscription(evt: CustomEvent<SubscriptionEvent>): Promise<void>;
166
- replicationController: PIDReplicationController;
167
- history: {
168
- usedMemory: number;
169
- factor: number;
170
- }[];
171
179
  addToHistory(usedMemory: number, factor: number): Promise<void>;
172
180
  calculateTrend(): Promise<number>;
173
181
  rebalanceParticipation(onRoleChange?: boolean): Promise<boolean>;
182
+ getDynamicRange(): Promise<ReplicationRangeIndexable>;
174
183
  private clearSyncProcess;
175
184
  private onEntryAdded;
176
185
  onEntryRemoved(hash: string): void;
177
186
  }
187
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}