@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.
Files changed (99) hide show
  1. package/dist/benchmark/append.d.ts +2 -0
  2. package/dist/benchmark/append.d.ts.map +1 -0
  3. package/dist/benchmark/append.js +40 -0
  4. package/dist/benchmark/append.js.map +1 -0
  5. package/dist/benchmark/{index.d.ts.map → memory/index.d.ts.map} +1 -1
  6. package/dist/benchmark/memory/index.js +122 -0
  7. package/dist/benchmark/memory/index.js.map +1 -0
  8. package/dist/benchmark/memory/insert.d.ts +2 -0
  9. package/dist/benchmark/memory/insert.d.ts.map +1 -0
  10. package/dist/benchmark/memory/insert.js +59 -0
  11. package/dist/benchmark/memory/insert.js.map +1 -0
  12. package/dist/benchmark/memory/utils.d.ts +13 -0
  13. package/dist/benchmark/memory/utils.d.ts.map +1 -0
  14. package/dist/benchmark/memory/utils.js +2 -0
  15. package/dist/benchmark/memory/utils.js.map +1 -0
  16. package/dist/benchmark/payload.d.ts +2 -0
  17. package/dist/benchmark/payload.d.ts.map +1 -0
  18. package/dist/benchmark/{index.js → payload.js} +14 -14
  19. package/dist/benchmark/payload.js.map +1 -0
  20. package/dist/src/change.d.ts +2 -2
  21. package/dist/src/change.d.ts.map +1 -1
  22. package/dist/src/change.js +1 -1
  23. package/dist/src/change.js.map +1 -1
  24. package/dist/src/clock.d.ts +0 -24
  25. package/dist/src/clock.d.ts.map +1 -1
  26. package/dist/src/clock.js +28 -35
  27. package/dist/src/clock.js.map +1 -1
  28. package/dist/src/encoding.d.ts.map +1 -1
  29. package/dist/src/encoding.js +2 -2
  30. package/dist/src/encoding.js.map +1 -1
  31. package/dist/src/entry-index.d.ts +70 -17
  32. package/dist/src/entry-index.d.ts.map +1 -1
  33. package/dist/src/entry-index.js +281 -41
  34. package/dist/src/entry-index.js.map +1 -1
  35. package/dist/src/entry-with-refs.d.ts +1 -1
  36. package/dist/src/entry-with-refs.d.ts.map +1 -1
  37. package/dist/src/entry-with-refs.js +1 -1
  38. package/dist/src/entry-with-refs.js.map +1 -1
  39. package/dist/src/entry.d.ts +18 -15
  40. package/dist/src/entry.d.ts.map +1 -1
  41. package/dist/src/entry.js +62 -36
  42. package/dist/src/entry.js.map +1 -1
  43. package/dist/src/find-uniques.d.ts.map +1 -1
  44. package/dist/src/heads-cache.d.ts +1 -1
  45. package/dist/src/heads-cache.d.ts.map +1 -1
  46. package/dist/src/heads-cache.js +6 -7
  47. package/dist/src/heads-cache.js.map +1 -1
  48. package/dist/src/log-sorting.d.ts +27 -37
  49. package/dist/src/log-sorting.d.ts.map +1 -1
  50. package/dist/src/log-sorting.js +92 -74
  51. package/dist/src/log-sorting.js.map +1 -1
  52. package/dist/src/log.d.ts +71 -54
  53. package/dist/src/log.d.ts.map +1 -1
  54. package/dist/src/log.js +349 -468
  55. package/dist/src/log.js.map +1 -1
  56. package/dist/src/logger.d.ts.map +1 -1
  57. package/dist/src/logger.js.map +1 -1
  58. package/dist/src/snapshot.d.ts +2 -2
  59. package/dist/src/snapshot.d.ts.map +1 -1
  60. package/dist/src/snapshot.js +5 -5
  61. package/dist/src/snapshot.js.map +1 -1
  62. package/dist/src/trim.d.ts +9 -8
  63. package/dist/src/trim.d.ts.map +1 -1
  64. package/dist/src/trim.js +43 -40
  65. package/dist/src/trim.js.map +1 -1
  66. package/dist/src/utils.d.ts.map +1 -1
  67. package/dist/src/utils.js +1 -1
  68. package/dist/src/utils.js.map +1 -1
  69. package/package.json +15 -13
  70. package/src/change.ts +3 -2
  71. package/src/clock.ts +25 -19
  72. package/src/encoding.ts +3 -3
  73. package/src/entry-index.ts +451 -52
  74. package/src/entry-with-refs.ts +1 -1
  75. package/src/entry.ts +89 -72
  76. package/src/heads-cache.ts +27 -21
  77. package/src/log-sorting.ts +116 -94
  78. package/src/log.ts +465 -564
  79. package/src/logger.ts +1 -0
  80. package/src/snapshot.ts +10 -10
  81. package/src/trim.ts +75 -50
  82. package/src/utils.ts +6 -8
  83. package/dist/benchmark/index.js.map +0 -1
  84. package/dist/src/heads.d.ts +0 -70
  85. package/dist/src/heads.d.ts.map +0 -1
  86. package/dist/src/heads.js +0 -164
  87. package/dist/src/heads.js.map +0 -1
  88. package/dist/src/types.d.ts +0 -7
  89. package/dist/src/types.d.ts.map +0 -1
  90. package/dist/src/types.js +0 -21
  91. package/dist/src/types.js.map +0 -1
  92. package/dist/src/values.d.ts +0 -27
  93. package/dist/src/values.d.ts.map +0 -1
  94. package/dist/src/values.js +0 -134
  95. package/dist/src/values.js.map +0 -1
  96. package/src/heads.ts +0 -233
  97. package/src/types.ts +0 -10
  98. package/src/values.ts +0 -174
  99. /package/dist/benchmark/{index.d.ts → memory/index.d.ts} +0 -0
package/src/logger.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  import pino from "pino";
2
+
2
3
  const logger = pino();
3
4
  export { logger };
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: 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 { Entry, type ShallowEntry } from "./entry.js";
4
- import { type EntryNode, Values } from "./values.js";
5
- import { HeadsIndex } from "./heads.js";
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
- headsIndex: HeadsIndex<T>;
83
- values: () => Values<T>;
84
- deleteNode: (node: EntryNode) => Promise<Entry<T> | undefined>;
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: EntryNode | undefined | null;
89
- private _trimLastHead: EntryNode | undefined | null;
90
- private _trimLastTail: EntryNode | undefined | null;
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(entry: Entry<T>) {
106
- if (this._canTrimCacheLastNode?.value === entry.hash) {
107
- this._canTrimCacheLastNode = this._canTrimCacheLastNode.prev;
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 values = this._log.values();
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 (values.length < from) {
135
+ if (this._log.getLength() < from) {
130
136
  return [];
131
137
  }
132
- done = () => values.length <= to;
133
- } else if (option.type == "bytelength") {
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 (values.byteLength < byteLengthFrom) {
151
+ if ((await byteLengthFn()) < byteLengthFrom) {
138
152
  return [];
139
153
  }
140
- done = () => values.byteLength <= option.to;
141
- } else if (option.type == "time") {
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 (!values.tail) {
158
+ done = async () => {
159
+ if (!(await this._log.index.getOldest())) {
146
160
  return true;
147
161
  }
148
162
 
149
- const nodeValue = values.entryIndex.getShallow(values.tail.value);
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 = values.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 !== values.head ||
186
- this._trimLastTail !== values.tail ||
187
- this._trimLastLength !== this._log.headsIndex.size ||
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: EntryNode | undefined | null = this._canTrimCacheLastNode || tail; // TODO should we do this._canTrimCacheLastNode?.prev instead ?
195
- let lastNode: EntryNode | undefined | null = node;
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
- values.length > 0 &&
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
- const indexedEntry = values.entryIndex.getShallow(node.value)!; // TODO check undefined
212
- deleteAble = canTrimByGid.get(indexedEntry.meta.gid);
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(indexedEntry);
215
- canTrimByGid.set(indexedEntry.meta.gid, deleteAble);
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.value, true);
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
- // @ts-ignore
229
- const prev = node.prev;
230
- // @ts-ignore
231
- const next = node.next;
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?.prev;
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 = values.head;
260
- this._trimLastTail = values.tail;
261
- this._trimLastLength = this._log.headsIndex.size;
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
- option: TrimOptions | undefined = this._trim
297
+ options: TrimOptions | undefined = this._trim,
273
298
  ): Promise<Entry<T>[] | undefined> {
274
- if (!option) {
299
+ if (!options) {
275
300
  return;
276
301
  }
277
- const result = await this._queue.add(() => this.trimTask(option));
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
- if (!!array1 != !!array2) return false;
7
- if (!array1 || !array2) {
8
- return false;
9
- }
10
- return uequals(array1, array2);
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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"}
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"heads.d.ts","sourceRoot":"","sources":["../../src/heads.ts"],"names":[],"mappings":"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"}
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"heads.js","sourceRoot":"","sources":["../../src/heads.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- export declare class StringArray {
2
- arr: string[];
3
- constructor(properties: {
4
- arr: string[];
5
- });
6
- }
7
- //# sourceMappingURL=types.d.ts.map
@@ -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
@@ -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"}
@@ -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