@peerbit/log 3.0.34-efee9d3 → 4.0.0-3a75d6e
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/append.d.ts +2 -0
- package/dist/benchmark/append.d.ts.map +1 -0
- package/dist/benchmark/append.js +40 -0
- package/dist/benchmark/append.js.map +1 -0
- package/dist/benchmark/{index.d.ts.map → memory/index.d.ts.map} +1 -1
- package/dist/benchmark/memory/index.js +122 -0
- package/dist/benchmark/memory/index.js.map +1 -0
- package/dist/benchmark/memory/insert.d.ts +2 -0
- package/dist/benchmark/memory/insert.d.ts.map +1 -0
- package/dist/benchmark/memory/insert.js +59 -0
- package/dist/benchmark/memory/insert.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/payload.d.ts +2 -0
- package/dist/benchmark/payload.d.ts.map +1 -0
- package/dist/benchmark/{index.js → payload.js} +14 -14
- package/dist/benchmark/payload.js.map +1 -0
- package/dist/src/change.d.ts +2 -2
- package/dist/src/change.d.ts.map +1 -1
- package/dist/src/change.js +1 -1
- package/dist/src/change.js.map +1 -1
- package/dist/src/clock.d.ts +0 -24
- package/dist/src/clock.d.ts.map +1 -1
- package/dist/src/clock.js +28 -35
- package/dist/src/clock.js.map +1 -1
- package/dist/src/encoding.d.ts.map +1 -1
- package/dist/src/encoding.js +2 -2
- package/dist/src/encoding.js.map +1 -1
- package/dist/src/entry-index.d.ts +70 -17
- package/dist/src/entry-index.d.ts.map +1 -1
- package/dist/src/entry-index.js +281 -41
- package/dist/src/entry-index.js.map +1 -1
- package/dist/src/entry-with-refs.d.ts +1 -1
- package/dist/src/entry-with-refs.d.ts.map +1 -1
- package/dist/src/entry-with-refs.js +1 -1
- package/dist/src/entry-with-refs.js.map +1 -1
- package/dist/src/entry.d.ts +18 -15
- package/dist/src/entry.d.ts.map +1 -1
- package/dist/src/entry.js +62 -36
- package/dist/src/entry.js.map +1 -1
- package/dist/src/find-uniques.d.ts.map +1 -1
- package/dist/src/heads-cache.d.ts +1 -1
- package/dist/src/heads-cache.d.ts.map +1 -1
- package/dist/src/heads-cache.js +6 -7
- package/dist/src/heads-cache.js.map +1 -1
- package/dist/src/log-sorting.d.ts +27 -37
- package/dist/src/log-sorting.d.ts.map +1 -1
- package/dist/src/log-sorting.js +92 -74
- package/dist/src/log-sorting.js.map +1 -1
- package/dist/src/log.d.ts +71 -54
- package/dist/src/log.d.ts.map +1 -1
- package/dist/src/log.js +349 -468
- package/dist/src/log.js.map +1 -1
- package/dist/src/logger.d.ts.map +1 -1
- package/dist/src/logger.js.map +1 -1
- package/dist/src/snapshot.d.ts +2 -2
- package/dist/src/snapshot.d.ts.map +1 -1
- package/dist/src/snapshot.js +5 -5
- package/dist/src/snapshot.js.map +1 -1
- package/dist/src/trim.d.ts +9 -8
- package/dist/src/trim.d.ts.map +1 -1
- package/dist/src/trim.js +43 -40
- package/dist/src/trim.js.map +1 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +1 -1
- package/dist/src/utils.js.map +1 -1
- package/package.json +15 -13
- package/src/change.ts +3 -2
- package/src/clock.ts +25 -19
- package/src/encoding.ts +3 -3
- package/src/entry-index.ts +451 -52
- package/src/entry-with-refs.ts +1 -1
- package/src/entry.ts +89 -72
- package/src/heads-cache.ts +27 -21
- package/src/log-sorting.ts +116 -94
- package/src/log.ts +465 -564
- package/src/logger.ts +1 -0
- package/src/snapshot.ts +10 -10
- package/src/trim.ts +75 -50
- package/src/utils.ts +6 -8
- package/dist/benchmark/index.js.map +0 -1
- package/dist/src/heads.d.ts +0 -70
- package/dist/src/heads.d.ts.map +0 -1
- package/dist/src/heads.js +0 -164
- package/dist/src/heads.js.map +0 -1
- package/dist/src/types.d.ts +0 -7
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -21
- package/dist/src/types.js.map +0 -1
- package/dist/src/values.d.ts +0 -27
- package/dist/src/values.d.ts.map +0 -1
- package/dist/src/values.js +0 -134
- package/dist/src/values.js.map +0 -1
- package/src/heads.ts +0 -233
- package/src/types.ts +0 -10
- package/src/values.ts +0 -174
- /package/dist/benchmark/{index.d.ts → memory/index.d.ts} +0 -0
package/src/logger.ts
CHANGED
package/src/snapshot.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { Entry } from "./entry.js";
|
|
2
|
-
import { type Blocks } from "@peerbit/blocks-interface";
|
|
3
1
|
import {
|
|
4
2
|
BinaryReader,
|
|
5
3
|
BinaryWriter,
|
|
@@ -8,10 +6,12 @@ import {
|
|
|
8
6
|
fixedArray,
|
|
9
7
|
serialize,
|
|
10
8
|
variant,
|
|
11
|
-
vec
|
|
9
|
+
vec,
|
|
12
10
|
} from "@dao-xyz/borsh";
|
|
13
|
-
import { waitFor } from "@peerbit/time";
|
|
14
11
|
import { type AnyStore } from "@peerbit/any-store";
|
|
12
|
+
import { type Blocks } from "@peerbit/blocks-interface";
|
|
13
|
+
import { waitFor } from "@peerbit/time";
|
|
14
|
+
import { Entry } from "./entry.js";
|
|
15
15
|
import { logger } from "./logger.js";
|
|
16
16
|
|
|
17
17
|
@variant(0)
|
|
@@ -49,7 +49,7 @@ export const save = async <T>(
|
|
|
49
49
|
id: Uint8Array;
|
|
50
50
|
getHeads: () => Promise<string[]>;
|
|
51
51
|
getValues: () => Promise<Entry<T>[]> | Entry<T>[];
|
|
52
|
-
}
|
|
52
|
+
},
|
|
53
53
|
): Promise<string> => {
|
|
54
54
|
const values = await log.getValues();
|
|
55
55
|
const buf = serialize(
|
|
@@ -57,8 +57,8 @@ export const save = async <T>(
|
|
|
57
57
|
id: log.id,
|
|
58
58
|
heads: await log.getHeads(),
|
|
59
59
|
size: BigInt(values.length),
|
|
60
|
-
values
|
|
61
|
-
})
|
|
60
|
+
values,
|
|
61
|
+
}),
|
|
62
62
|
);
|
|
63
63
|
|
|
64
64
|
const snapshot = await blockstore.put(buf);
|
|
@@ -68,7 +68,7 @@ export const save = async <T>(
|
|
|
68
68
|
|
|
69
69
|
await waitFor(async () => (await cache.get(snapshotPath)) != null, {
|
|
70
70
|
delayInterval: 200,
|
|
71
|
-
timeout: 10 * 1000
|
|
71
|
+
timeout: 10 * 1000,
|
|
72
72
|
});
|
|
73
73
|
|
|
74
74
|
logger.debug(`Saved snapshot: ${snapshot}`);
|
|
@@ -77,7 +77,7 @@ export const save = async <T>(
|
|
|
77
77
|
|
|
78
78
|
export const load = async (
|
|
79
79
|
hash: string,
|
|
80
|
-
blockstore: Blocks
|
|
80
|
+
blockstore: Blocks,
|
|
81
81
|
): Promise<Snapshot> => {
|
|
82
82
|
const block = await blockstore.get(hash);
|
|
83
83
|
if (!block) {
|
|
@@ -89,7 +89,7 @@ export const load = async (
|
|
|
89
89
|
export const loadFromCache = async (
|
|
90
90
|
path: string,
|
|
91
91
|
blockstore: Blocks,
|
|
92
|
-
cache: AnyStore
|
|
92
|
+
cache: AnyStore,
|
|
93
93
|
) => {
|
|
94
94
|
const snapshotOrCID = await cache.get(path);
|
|
95
95
|
if (!snapshotOrCID) {
|
package/src/trim.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Cache } from "@peerbit/cache";
|
|
2
|
+
import { SumRequest } from "@peerbit/indexer-interface";
|
|
2
3
|
import PQueue from "p-queue";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import type { EntryIndex } from "./entry-index.js";
|
|
5
|
+
import type { Entry, ShallowEntry } from "./entry.js";
|
|
6
|
+
import type { SortFn } from "./log-sorting.js";
|
|
6
7
|
|
|
7
8
|
const trimOptionsEqual = (a: TrimOptions, b: TrimOptions) => {
|
|
8
9
|
if (a.type === b.type) {
|
|
@@ -79,15 +80,16 @@ export type TrimCanAppendOption = {
|
|
|
79
80
|
export type TrimOptions = TrimCanAppendOption & TrimCondition;
|
|
80
81
|
|
|
81
82
|
interface Log<T> {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
deleteNode: (node:
|
|
83
|
+
index: EntryIndex<T>;
|
|
84
|
+
sortFn: SortFn;
|
|
85
|
+
deleteNode: (node: ShallowEntry) => Promise<Entry<T> | undefined>;
|
|
86
|
+
getLength(): number;
|
|
85
87
|
}
|
|
86
88
|
export class Trim<T> {
|
|
87
89
|
private _trim?: TrimOptions;
|
|
88
|
-
private _canTrimCacheLastNode:
|
|
89
|
-
private _trimLastHead:
|
|
90
|
-
private _trimLastTail:
|
|
90
|
+
private _canTrimCacheLastNode: ShallowEntry | undefined | null;
|
|
91
|
+
private _trimLastHead: ShallowEntry | undefined | null;
|
|
92
|
+
private _trimLastTail: ShallowEntry | undefined | null;
|
|
91
93
|
private _trimLastLength = 0;
|
|
92
94
|
|
|
93
95
|
private _trimLastOptions?: TrimOptions;
|
|
@@ -102,9 +104,13 @@ export class Trim<T> {
|
|
|
102
104
|
this._queue = new PQueue({ concurrency: 1 });
|
|
103
105
|
}
|
|
104
106
|
|
|
105
|
-
deleteFromCache(
|
|
106
|
-
if (this._canTrimCacheLastNode?.
|
|
107
|
-
|
|
107
|
+
async deleteFromCache(hash: string) {
|
|
108
|
+
if (this._canTrimCacheLastNode?.hash === hash) {
|
|
109
|
+
// we do 'getAfter' here, because earlier entries might already have been deleted or checked for deletion but not removed due to some filtering logic
|
|
110
|
+
this._canTrimCacheLastNode = await this._log.index.getAfter(
|
|
111
|
+
this._canTrimCacheLastNode,
|
|
112
|
+
false,
|
|
113
|
+
);
|
|
108
114
|
}
|
|
109
115
|
}
|
|
110
116
|
|
|
@@ -113,7 +119,7 @@ export class Trim<T> {
|
|
|
113
119
|
}
|
|
114
120
|
|
|
115
121
|
private async trimTask(
|
|
116
|
-
option: TrimOptions | undefined = this._trim
|
|
122
|
+
option: TrimOptions | undefined = this._trim,
|
|
117
123
|
): Promise<Entry<T>[]> {
|
|
118
124
|
if (!option) {
|
|
119
125
|
return [];
|
|
@@ -121,32 +127,40 @@ export class Trim<T> {
|
|
|
121
127
|
/// TODO Make this method less ugly
|
|
122
128
|
const deleted: Entry<T>[] = [];
|
|
123
129
|
|
|
124
|
-
let done: () => boolean;
|
|
125
|
-
const
|
|
130
|
+
let done: () => Promise<boolean> | boolean;
|
|
131
|
+
/* const valueIterator = this._log.index.query([], this._log.sortFn.sort, false); */
|
|
126
132
|
if (option.type === "length") {
|
|
127
133
|
const to = option.to;
|
|
128
134
|
const from = option.from ?? to;
|
|
129
|
-
if (
|
|
135
|
+
if (this._log.getLength() < from) {
|
|
130
136
|
return [];
|
|
131
137
|
}
|
|
132
|
-
done = () =>
|
|
133
|
-
} else if (option.type
|
|
138
|
+
done = async () => this._log.getLength() <= to;
|
|
139
|
+
} else if (option.type === "bytelength") {
|
|
140
|
+
// TODO calculate the sum and cache it and update it only when entries are added or removed
|
|
141
|
+
const byteLengthFn = async () =>
|
|
142
|
+
BigInt(
|
|
143
|
+
await this._log.index.properties.index.sum(
|
|
144
|
+
new SumRequest({ key: "payloadSize" }),
|
|
145
|
+
),
|
|
146
|
+
);
|
|
147
|
+
|
|
134
148
|
// prune to max sum payload sizes in bytes
|
|
135
|
-
const byteLengthFrom = option.from ?? option.to;
|
|
149
|
+
const byteLengthFrom = BigInt(option.from ?? option.to);
|
|
136
150
|
|
|
137
|
-
if (
|
|
151
|
+
if ((await byteLengthFn()) < byteLengthFrom) {
|
|
138
152
|
return [];
|
|
139
153
|
}
|
|
140
|
-
done = () =>
|
|
141
|
-
} else if (option.type
|
|
154
|
+
done = async () => (await byteLengthFn()) <= option.to;
|
|
155
|
+
} else if (option.type === "time") {
|
|
142
156
|
const s0 = BigInt(+new Date() * 1e6);
|
|
143
157
|
const maxAge = option.maxAge * 1e6;
|
|
144
|
-
done = () => {
|
|
145
|
-
if (!
|
|
158
|
+
done = async () => {
|
|
159
|
+
if (!(await this._log.index.getOldest())) {
|
|
146
160
|
return true;
|
|
147
161
|
}
|
|
148
162
|
|
|
149
|
-
const nodeValue =
|
|
163
|
+
const nodeValue = await this._log.index.getOldest();
|
|
150
164
|
|
|
151
165
|
if (!nodeValue) {
|
|
152
166
|
return true;
|
|
@@ -158,7 +172,7 @@ export class Trim<T> {
|
|
|
158
172
|
return [];
|
|
159
173
|
}
|
|
160
174
|
|
|
161
|
-
const tail =
|
|
175
|
+
const tail = await this._log.index.getOldest(false);
|
|
162
176
|
|
|
163
177
|
if (
|
|
164
178
|
this._trimLastOptions &&
|
|
@@ -182,17 +196,21 @@ export class Trim<T> {
|
|
|
182
196
|
!trimOptionsEqual(this._trimLastOptions, option);
|
|
183
197
|
|
|
184
198
|
changed =
|
|
185
|
-
this._trimLastHead !==
|
|
186
|
-
|
|
187
|
-
this.
|
|
199
|
+
this._trimLastHead?.hash !==
|
|
200
|
+
(await this._log.index.getNewest())?.hash ||
|
|
201
|
+
this._trimLastTail?.hash !==
|
|
202
|
+
(await this._log.index.getOldest())?.hash ||
|
|
203
|
+
this._trimLastLength !== this._log.getLength() ||
|
|
188
204
|
trimOptionsChanged;
|
|
205
|
+
|
|
189
206
|
if (!changed) {
|
|
190
207
|
return [];
|
|
191
208
|
}
|
|
192
209
|
}
|
|
193
210
|
|
|
194
|
-
let node:
|
|
195
|
-
|
|
211
|
+
let node: ShallowEntry | undefined | null =
|
|
212
|
+
this._canTrimCacheLastNode || tail; // TODO should we do this._canTrimCacheLastNode?.prev instead ?
|
|
213
|
+
let lastNode: ShallowEntry | undefined | null = node;
|
|
196
214
|
let looped = false;
|
|
197
215
|
const startNode = node;
|
|
198
216
|
let canTrimByGid: Map<string, boolean> | undefined = undefined;
|
|
@@ -200,24 +218,27 @@ export class Trim<T> {
|
|
|
200
218
|
// TODO only go through heads?
|
|
201
219
|
while (
|
|
202
220
|
node &&
|
|
203
|
-
!done() &&
|
|
204
|
-
|
|
221
|
+
!(await done()) &&
|
|
222
|
+
this._log.getLength() > 0 &&
|
|
205
223
|
node &&
|
|
206
|
-
(!looped || node !== startNode)
|
|
224
|
+
(!looped || node.hash !== startNode?.hash)
|
|
207
225
|
) {
|
|
208
226
|
let deleteAble: boolean | undefined = true;
|
|
209
227
|
if (option.filter?.canTrim) {
|
|
210
228
|
canTrimByGid = canTrimByGid || new Map();
|
|
211
|
-
|
|
212
|
-
|
|
229
|
+
if (!node) {
|
|
230
|
+
throw new Error("Unexpected missing entry when trimming: " + node);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
deleteAble = canTrimByGid.get(node.meta.gid);
|
|
213
234
|
if (deleteAble === undefined) {
|
|
214
|
-
deleteAble = await option.filter?.canTrim(
|
|
215
|
-
canTrimByGid.set(
|
|
235
|
+
deleteAble = await option.filter?.canTrim(node);
|
|
236
|
+
canTrimByGid.set(node.meta.gid, deleteAble);
|
|
216
237
|
}
|
|
217
238
|
|
|
218
239
|
if (!deleteAble && cacheProgress) {
|
|
219
240
|
// ignore it
|
|
220
|
-
this._canTrimCacheHashBreakpoint.add(node.
|
|
241
|
+
this._canTrimCacheHashBreakpoint.add(node.hash, true);
|
|
221
242
|
}
|
|
222
243
|
}
|
|
223
244
|
|
|
@@ -225,10 +246,14 @@ export class Trim<T> {
|
|
|
225
246
|
if (deleteAble) {
|
|
226
247
|
// Do this before deleteNode, else prev/next might be gone
|
|
227
248
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
249
|
+
const prev: ShallowEntry | undefined = await this._log.index.getAfter(
|
|
250
|
+
node,
|
|
251
|
+
false,
|
|
252
|
+
);
|
|
253
|
+
const next: ShallowEntry | undefined = await this._log.index.getBefore(
|
|
254
|
+
node,
|
|
255
|
+
false,
|
|
256
|
+
);
|
|
232
257
|
|
|
233
258
|
const entry = await this._log.deleteNode(node);
|
|
234
259
|
if (entry) {
|
|
@@ -241,7 +266,7 @@ export class Trim<T> {
|
|
|
241
266
|
lastNode = prev || next;
|
|
242
267
|
} else {
|
|
243
268
|
lastNode = node;
|
|
244
|
-
node = node
|
|
269
|
+
node = await this._log.index.getAfter(node, false);
|
|
245
270
|
}
|
|
246
271
|
|
|
247
272
|
if (!node) {
|
|
@@ -256,9 +281,9 @@ export class Trim<T> {
|
|
|
256
281
|
|
|
257
282
|
// remember the node where we started last time from
|
|
258
283
|
this._canTrimCacheLastNode = node || lastNode;
|
|
259
|
-
this._trimLastHead =
|
|
260
|
-
this._trimLastTail =
|
|
261
|
-
this._trimLastLength = this._log.
|
|
284
|
+
this._trimLastHead = await this._log.index.getNewest();
|
|
285
|
+
this._trimLastTail = await this._log.index.getOldest();
|
|
286
|
+
this._trimLastLength = this._log.getLength();
|
|
262
287
|
this._trimLastOptions = option;
|
|
263
288
|
this._trimLastSeed = seed;
|
|
264
289
|
|
|
@@ -269,12 +294,12 @@ export class Trim<T> {
|
|
|
269
294
|
* @returns deleted entries
|
|
270
295
|
*/
|
|
271
296
|
async trim(
|
|
272
|
-
|
|
297
|
+
options: TrimOptions | undefined = this._trim,
|
|
273
298
|
): Promise<Entry<T>[] | undefined> {
|
|
274
|
-
if (!
|
|
299
|
+
if (!options) {
|
|
275
300
|
return;
|
|
276
301
|
}
|
|
277
|
-
const result = await this._queue.add(() => this.trimTask(
|
|
302
|
+
const result = await this._queue.add(() => this.trimTask(options));
|
|
278
303
|
if (result instanceof Object) {
|
|
279
304
|
return result;
|
|
280
305
|
}
|
package/src/utils.ts
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
1
|
import { equals as uequals } from "uint8arrays";
|
|
4
2
|
|
|
5
3
|
export const equals = (array1?: Uint8Array, array2?: Uint8Array) => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
if (!!array1 !== !!array2) return false;
|
|
5
|
+
if (!array1 || !array2) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
return uequals(array1, array2);
|
|
11
9
|
};
|
|
12
10
|
|
|
13
11
|
export const max = <T>(...args: T[]) => args.reduce((m, e) => (e > m ? e : m));
|
|
14
|
-
export const min = <T>(...args: T[]) => args.reduce((m, e) => (e < m ? e : m));
|
|
12
|
+
export const min = <T>(...args: T[]) => args.reduce((m, e) => (e < m ? e : m));
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../benchmark/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/heads.d.ts
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { Entry } from "./entry.js";
|
|
2
|
-
import { type AnyStore } from "@peerbit/any-store";
|
|
3
|
-
import { HeadsCache } from "./heads-cache.js";
|
|
4
|
-
import { type Blocks } from "@peerbit/blocks-interface";
|
|
5
|
-
import { type Keychain } from "@peerbit/keychain";
|
|
6
|
-
import { type Encoding } from "./encoding.js";
|
|
7
|
-
import { Values } from "./values.js";
|
|
8
|
-
import { EntryIndex } from "./entry-index.js";
|
|
9
|
-
export type CacheUpdateOptions = {
|
|
10
|
-
cache?: {
|
|
11
|
-
update?: false;
|
|
12
|
-
reset?: false;
|
|
13
|
-
} | {
|
|
14
|
-
update: true;
|
|
15
|
-
reset?: boolean;
|
|
16
|
-
};
|
|
17
|
-
};
|
|
18
|
-
interface Log<T> {
|
|
19
|
-
blocks: Blocks;
|
|
20
|
-
keychain?: Keychain;
|
|
21
|
-
memory?: AnyStore;
|
|
22
|
-
encoding: Encoding<any>;
|
|
23
|
-
entryIndex: EntryIndex<T>;
|
|
24
|
-
values: Values<T>;
|
|
25
|
-
}
|
|
26
|
-
export declare class HeadsIndex<T> {
|
|
27
|
-
private _id;
|
|
28
|
-
private _index;
|
|
29
|
-
private _gids;
|
|
30
|
-
private _headsCache;
|
|
31
|
-
private _config;
|
|
32
|
-
private _onGidRemoved?;
|
|
33
|
-
constructor(id: Uint8Array);
|
|
34
|
-
init(log: Log<T>, options?: {
|
|
35
|
-
entries?: Entry<T>[];
|
|
36
|
-
onGidRemoved?: (gid: string[]) => Promise<void> | void;
|
|
37
|
-
}): Promise<HeadsCache<T> | undefined>;
|
|
38
|
-
load(options?: {
|
|
39
|
-
timeout?: number;
|
|
40
|
-
replicate?: boolean;
|
|
41
|
-
reload?: boolean;
|
|
42
|
-
ignoreMissing?: boolean;
|
|
43
|
-
} & CacheUpdateOptions): Promise<Entry<T>[] | undefined>;
|
|
44
|
-
get headsCache(): HeadsCache<T> | undefined;
|
|
45
|
-
close(): Promise<void> | undefined;
|
|
46
|
-
drop(): Promise<void> | undefined;
|
|
47
|
-
get id(): Uint8Array;
|
|
48
|
-
get index(): Set<string>;
|
|
49
|
-
get gids(): Map<string, Map<string, Entry<T>>>;
|
|
50
|
-
get size(): number;
|
|
51
|
-
reset(entries: Entry<T>[], options?: CacheUpdateOptions): Promise<void>;
|
|
52
|
-
has(cid: string): boolean;
|
|
53
|
-
put(entry: Entry<T>, options?: CacheUpdateOptions): Promise<void>;
|
|
54
|
-
putAll(entries: Entry<T>[], options?: CacheUpdateOptions): Promise<void>;
|
|
55
|
-
resetHeadsCache(): Promise<void>;
|
|
56
|
-
updateHeadsCache(change?: {
|
|
57
|
-
added?: (Entry<T> | string)[];
|
|
58
|
-
removed?: (Entry<T> | string)[];
|
|
59
|
-
}, reset?: boolean): Promise<void>;
|
|
60
|
-
private _putOne;
|
|
61
|
-
private _putAll;
|
|
62
|
-
del(entry: {
|
|
63
|
-
hash: string;
|
|
64
|
-
meta: {
|
|
65
|
-
gid: string;
|
|
66
|
-
};
|
|
67
|
-
}, options?: CacheUpdateOptions): Promise<boolean>;
|
|
68
|
-
}
|
|
69
|
-
export {};
|
|
70
|
-
//# sourceMappingURL=heads.d.ts.map
|
package/dist/src/heads.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"heads.d.ts","sourceRoot":"","sources":["../../src/heads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,MAAM,kBAAkB,GAAG;IAChC,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,KAAK,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,GAAG;QAAE,MAAM,EAAE,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC9E,CAAC;AAEF,UAAU,GAAG,CAAC,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IACxB,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAClB;AACD,qBAAa,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,aAAa,CAAC,CAA0C;gBACpD,EAAE,EAAE,UAAU;IAKpB,IAAI,CACT,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EACX,OAAO,GAAE;QACR,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAClD;IAWD,IAAI,CACT,OAAO,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,aAAa,CAAC,EAAE,OAAO,CAAC;KACxB,GAAG,kBAAkB,GACpB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC;IA8BlC,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAE1C;IAED,KAAK;IAIL,IAAI;IAIJ,IAAI,EAAE,IAAI,UAAU,CAEnB;IAED,IAAI,KAAK,gBAER;IAED,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAE7C;IAED,IAAI,IAAI,WAEP;IAEK,KAAK,CACV,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EACnB,OAAO,GAAE,kBAA6D;IAevE,GAAG,CAAC,GAAG,EAAE,MAAM;IAIT,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAOjD,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAOxD,eAAe;IAMf,gBAAgB,CACrB,MAAM,GAAE;QACP,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;KAC3B,EACN,KAAK,CAAC,EAAE,OAAO;YAKF,OAAO;YA0BP,OAAO;IAMf,GAAG,CACR,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,EAC9C,OAAO,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,OAAO,CAAC;CA+BnB"}
|
package/dist/src/heads.js
DELETED
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import { Entry } from "./entry.js";
|
|
2
|
-
import {} from "@peerbit/any-store";
|
|
3
|
-
import { HeadsCache } from "./heads-cache.js";
|
|
4
|
-
import {} from "@peerbit/blocks-interface";
|
|
5
|
-
import {} from "@peerbit/keychain";
|
|
6
|
-
import {} from "./encoding.js";
|
|
7
|
-
import { Values } from "./values.js";
|
|
8
|
-
import { logger } from "./logger.js";
|
|
9
|
-
import { EntryIndex } from "./entry-index.js";
|
|
10
|
-
export class HeadsIndex {
|
|
11
|
-
_id;
|
|
12
|
-
_index = new Set();
|
|
13
|
-
_gids; // gid -> hash -> entry
|
|
14
|
-
_headsCache;
|
|
15
|
-
_config;
|
|
16
|
-
_onGidRemoved;
|
|
17
|
-
constructor(id) {
|
|
18
|
-
this._gids = new Map();
|
|
19
|
-
this._id = id;
|
|
20
|
-
}
|
|
21
|
-
async init(log, options = {}) {
|
|
22
|
-
this._config = log;
|
|
23
|
-
this._onGidRemoved = options.onGidRemoved;
|
|
24
|
-
await this.reset(options?.entries || []);
|
|
25
|
-
if (log.memory) {
|
|
26
|
-
this._headsCache = new HeadsCache(this);
|
|
27
|
-
return this._headsCache.init(await log.memory.sublevel("heads"));
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
async load(options) {
|
|
31
|
-
if (!this._headsCache || (this._headsCache.loaded && !options?.reload)) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
// TODO make below into a promise that concurrenct caklls can wait on?
|
|
35
|
-
const heads = await this._headsCache?.load();
|
|
36
|
-
if (!heads) {
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
const entries = await Promise.all(heads.map(async (x) => {
|
|
40
|
-
const entry = await this._config.entryIndex.get(x, { load: true });
|
|
41
|
-
if (!entry) {
|
|
42
|
-
if (options?.ignoreMissing) {
|
|
43
|
-
logger.error("Failed to load entry from head with hash: " + x);
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
throw new Error("Failed to load entry from head with hash: " + x);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
await entry.getMeta(); // TODO types,decrypt gid
|
|
51
|
-
return entry;
|
|
52
|
-
}));
|
|
53
|
-
const filtered = entries.filter((x) => !!x);
|
|
54
|
-
await this.reset(filtered);
|
|
55
|
-
return filtered;
|
|
56
|
-
}
|
|
57
|
-
get headsCache() {
|
|
58
|
-
return this._headsCache;
|
|
59
|
-
}
|
|
60
|
-
close() {
|
|
61
|
-
return this._headsCache?.close();
|
|
62
|
-
}
|
|
63
|
-
drop() {
|
|
64
|
-
return this._headsCache?.drop();
|
|
65
|
-
}
|
|
66
|
-
get id() {
|
|
67
|
-
return this._id;
|
|
68
|
-
}
|
|
69
|
-
get index() {
|
|
70
|
-
return this._index;
|
|
71
|
-
}
|
|
72
|
-
get gids() {
|
|
73
|
-
return this._gids;
|
|
74
|
-
}
|
|
75
|
-
get size() {
|
|
76
|
-
return this._index.size;
|
|
77
|
-
}
|
|
78
|
-
async reset(entries, options = { cache: { reset: true, update: true } }) {
|
|
79
|
-
this._index.clear();
|
|
80
|
-
const gidKeys = [...this._gids.keys()];
|
|
81
|
-
this._gids = new Map();
|
|
82
|
-
if (entries?.length > 0) {
|
|
83
|
-
await this.putAll(entries, options); // reset cache = true
|
|
84
|
-
}
|
|
85
|
-
if (gidKeys.length > 0) {
|
|
86
|
-
this._onGidRemoved?.(gidKeys);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
has(cid) {
|
|
90
|
-
return this._index.has(cid);
|
|
91
|
-
}
|
|
92
|
-
async put(entry, options) {
|
|
93
|
-
await this._putOne(entry);
|
|
94
|
-
if (!options?.cache || options?.cache?.update) {
|
|
95
|
-
await this._headsCache?.queue({ added: [entry] }, options?.cache?.reset);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
async putAll(entries, options) {
|
|
99
|
-
await this._putAll(entries);
|
|
100
|
-
if (!options?.cache || options?.cache?.update) {
|
|
101
|
-
await this._headsCache?.queue({ added: entries }, options?.cache?.reset);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
async resetHeadsCache() {
|
|
105
|
-
await this._headsCache?.queue({ added: [...this._index], removed: [] }, true);
|
|
106
|
-
}
|
|
107
|
-
async updateHeadsCache(change = {}, reset) {
|
|
108
|
-
await this._headsCache?.queue(change, reset);
|
|
109
|
-
}
|
|
110
|
-
async _putOne(entry) {
|
|
111
|
-
if (!entry.hash) {
|
|
112
|
-
throw new Error("Missing hash");
|
|
113
|
-
}
|
|
114
|
-
if (this._index.has(entry.hash)) {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
this._index.add(entry.hash);
|
|
118
|
-
const map = this._gids.get(entry.meta.gid);
|
|
119
|
-
if (!map) {
|
|
120
|
-
const newMap = new Map();
|
|
121
|
-
this._gids.set(entry.meta.gid, newMap);
|
|
122
|
-
newMap.set(entry.hash, entry);
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
map.set(entry.hash, entry);
|
|
126
|
-
}
|
|
127
|
-
for (const next of entry.next) {
|
|
128
|
-
const indexedEntry = this._config.entryIndex.getShallow(next);
|
|
129
|
-
if (indexedEntry) {
|
|
130
|
-
await this.del(indexedEntry, { cache: { update: false } }); // we dont update cache here because the put will update the cache that is calling _putOne
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
async _putAll(entries) {
|
|
135
|
-
for (const entry of entries) {
|
|
136
|
-
await this._putOne(entry);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
async del(entry, options) {
|
|
140
|
-
const wasHead = this._index.delete(entry.hash);
|
|
141
|
-
if (!wasHead) {
|
|
142
|
-
return false;
|
|
143
|
-
}
|
|
144
|
-
let removedGids = undefined;
|
|
145
|
-
const map = this._gids.get(entry.meta.gid);
|
|
146
|
-
map.delete(entry.hash);
|
|
147
|
-
if (map.size <= 0) {
|
|
148
|
-
this._gids.delete(entry.meta.gid);
|
|
149
|
-
(removedGids || (removedGids = new Set())).add(entry.meta.gid);
|
|
150
|
-
}
|
|
151
|
-
if (!entry.hash) {
|
|
152
|
-
throw new Error("Missing hash");
|
|
153
|
-
}
|
|
154
|
-
if (removedGids) {
|
|
155
|
-
await this._onGidRemoved?.([...removedGids]);
|
|
156
|
-
}
|
|
157
|
-
if (wasHead && !(options?.cache || options?.cache?.update)) {
|
|
158
|
-
await this._headsCache?.queue({ removed: [entry.hash] }, options?.cache?.reset);
|
|
159
|
-
}
|
|
160
|
-
return wasHead;
|
|
161
|
-
// this._headsCache = undefined; // TODO do smarter things here, only remove the element needed (?)
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
//# sourceMappingURL=heads.js.map
|
package/dist/src/heads.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"heads.js","sourceRoot":"","sources":["../../src/heads.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.d.ts
DELETED
package/dist/src/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAEA,qBAAa,WAAW;IAEvB,GAAG,EAAE,MAAM,EAAE,CAAC;gBAEF,UAAU,EAAE;QAAE,GAAG,EAAE,MAAM,EAAE,CAAA;KAAE;CAGzC"}
|
package/dist/src/types.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { field, vec } from "@dao-xyz/borsh";
|
|
11
|
-
export class StringArray {
|
|
12
|
-
arr;
|
|
13
|
-
constructor(properties) {
|
|
14
|
-
this.arr = properties.arr;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
__decorate([
|
|
18
|
-
field({ type: vec("string") }),
|
|
19
|
-
__metadata("design:type", Array)
|
|
20
|
-
], StringArray.prototype, "arr", void 0);
|
|
21
|
-
//# sourceMappingURL=types.js.map
|
package/dist/src/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,OAAO,WAAW;IAEvB,GAAG,CAAW;IAEd,YAAY,UAA6B;QACxC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;IAC3B,CAAC;CACD;AALA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;;wCACjB"}
|
package/dist/src/values.d.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { Entry } from "./entry.js";
|
|
2
|
-
import { type ISortFunction } from "./log-sorting.js";
|
|
3
|
-
import yallist from "yallist";
|
|
4
|
-
import { EntryIndex } from "./entry-index.js";
|
|
5
|
-
export type EntryNode = yallist.Node<string>;
|
|
6
|
-
export declare class Values<T> {
|
|
7
|
-
/**
|
|
8
|
-
* Keep track of sorted elements in descending sort order (i.e. newest elements)
|
|
9
|
-
*/
|
|
10
|
-
private _values;
|
|
11
|
-
private _sortFn;
|
|
12
|
-
private _byteLength;
|
|
13
|
-
private _entryIndex;
|
|
14
|
-
constructor(entryIndex: EntryIndex<T>, sortFn: ISortFunction, entries?: Entry<T>[]);
|
|
15
|
-
toArray(): Promise<Entry<T>[]>;
|
|
16
|
-
get head(): yallist.Node<string> | null;
|
|
17
|
-
get tail(): yallist.Node<string> | null;
|
|
18
|
-
get length(): number;
|
|
19
|
-
get entryIndex(): EntryIndex<T>;
|
|
20
|
-
put(value: Entry<T>): void;
|
|
21
|
-
_put(value: Entry<T>): void;
|
|
22
|
-
delete(value: Entry<T> | string): Promise<void>;
|
|
23
|
-
deleteNode(node: EntryNode): void;
|
|
24
|
-
pop(): string | undefined;
|
|
25
|
-
get byteLength(): number;
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=values.d.ts.map
|