@peerbit/log 3.0.34 → 4.0.0-55cebfe

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 (133) 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/memory/index.d.ts +2 -0
  6. package/dist/benchmark/memory/index.d.ts.map +1 -0
  7. package/dist/benchmark/memory/index.js +122 -0
  8. package/dist/benchmark/memory/index.js.map +1 -0
  9. package/dist/benchmark/memory/insert.d.ts +2 -0
  10. package/dist/benchmark/memory/insert.d.ts.map +1 -0
  11. package/dist/benchmark/memory/insert.js +59 -0
  12. package/dist/benchmark/memory/insert.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/payload.d.ts +2 -0
  18. package/dist/benchmark/payload.d.ts.map +1 -0
  19. package/{lib/esm/__benchmark__/index.js → dist/benchmark/payload.js} +20 -22
  20. package/dist/benchmark/payload.js.map +1 -0
  21. package/dist/src/change.d.ts +6 -0
  22. package/dist/src/change.d.ts.map +1 -0
  23. package/{lib/esm → dist/src}/clock.d.ts +3 -26
  24. package/dist/src/clock.d.ts.map +1 -0
  25. package/{lib/esm → dist/src}/clock.js +30 -39
  26. package/dist/src/clock.js.map +1 -0
  27. package/{lib/esm → dist/src}/difference.d.ts +1 -0
  28. package/dist/src/difference.d.ts.map +1 -0
  29. package/{lib/esm → dist/src}/encoding.d.ts +2 -1
  30. package/dist/src/encoding.d.ts.map +1 -0
  31. package/{lib/esm → dist/src}/encoding.js +2 -2
  32. package/{lib/esm → dist/src}/encoding.js.map +1 -1
  33. package/dist/src/entry-index.d.ts +78 -0
  34. package/dist/src/entry-index.d.ts.map +1 -0
  35. package/dist/src/entry-index.js +316 -0
  36. package/dist/src/entry-index.js.map +1 -0
  37. package/{lib/esm → dist/src}/entry-with-refs.d.ts +2 -1
  38. package/dist/src/entry-with-refs.d.ts.map +1 -0
  39. package/{lib/esm → dist/src}/entry.d.ts +22 -18
  40. package/dist/src/entry.d.ts.map +1 -0
  41. package/{lib/esm → dist/src}/entry.js +69 -42
  42. package/dist/src/entry.js.map +1 -0
  43. package/{lib/esm → dist/src}/find-uniques.d.ts +1 -0
  44. package/dist/src/find-uniques.d.ts.map +1 -0
  45. package/{lib/esm → dist/src}/heads-cache.d.ts +4 -3
  46. package/dist/src/heads-cache.d.ts.map +1 -0
  47. package/{lib/esm → dist/src}/heads-cache.js +9 -10
  48. package/dist/src/heads-cache.js.map +1 -0
  49. package/{lib/esm → dist/src}/index.d.ts +1 -0
  50. package/dist/src/index.d.ts.map +1 -0
  51. package/{lib/esm → dist/src}/log-errors.d.ts +1 -0
  52. package/dist/src/log-errors.d.ts.map +1 -0
  53. package/dist/src/log-sorting.d.ts +35 -0
  54. package/dist/src/log-sorting.d.ts.map +1 -0
  55. package/dist/src/log-sorting.js +105 -0
  56. package/dist/src/log-sorting.js.map +1 -0
  57. package/{lib/esm → dist/src}/log.d.ts +78 -56
  58. package/dist/src/log.d.ts.map +1 -0
  59. package/{lib/esm → dist/src}/log.js +355 -465
  60. package/dist/src/log.js.map +1 -0
  61. package/{lib/esm → dist/src}/logger.d.ts +1 -0
  62. package/dist/src/logger.d.ts.map +1 -0
  63. package/{lib/esm → dist/src}/logger.js.map +1 -1
  64. package/{lib/esm → dist/src}/snapshot.d.ts +5 -4
  65. package/dist/src/snapshot.d.ts.map +1 -0
  66. package/{lib/esm → dist/src}/snapshot.js +10 -10
  67. package/dist/src/snapshot.js.map +1 -0
  68. package/{lib/esm → dist/src}/trim.d.ts +11 -9
  69. package/dist/src/trim.d.ts.map +1 -0
  70. package/{lib/esm → dist/src}/trim.js +46 -35
  71. package/dist/src/trim.js.map +1 -0
  72. package/dist/src/utils.d.ts +4 -0
  73. package/dist/src/utils.d.ts.map +1 -0
  74. package/dist/src/utils.js +12 -0
  75. package/dist/src/utils.js.map +1 -0
  76. package/package.json +104 -78
  77. package/src/change.ts +3 -2
  78. package/src/clock.ts +22 -22
  79. package/src/encoding.ts +4 -4
  80. package/src/entry-index.ts +451 -52
  81. package/src/entry-with-refs.ts +1 -1
  82. package/src/entry.ts +95 -81
  83. package/src/heads-cache.ts +33 -29
  84. package/src/log-sorting.ts +116 -94
  85. package/src/log.ts +482 -571
  86. package/src/logger.ts +1 -0
  87. package/src/snapshot.ts +15 -17
  88. package/src/trim.ts +81 -50
  89. package/src/utils.ts +10 -0
  90. package/lib/esm/__benchmark__/index.d.ts +0 -1
  91. package/lib/esm/__benchmark__/index.js.map +0 -1
  92. package/lib/esm/change.d.ts +0 -5
  93. package/lib/esm/clock.js.map +0 -1
  94. package/lib/esm/entry-index.d.ts +0 -24
  95. package/lib/esm/entry-index.js +0 -74
  96. package/lib/esm/entry-index.js.map +0 -1
  97. package/lib/esm/entry.js.map +0 -1
  98. package/lib/esm/heads-cache.js.map +0 -1
  99. package/lib/esm/heads.d.ts +0 -69
  100. package/lib/esm/heads.js +0 -157
  101. package/lib/esm/heads.js.map +0 -1
  102. package/lib/esm/log-sorting.d.ts +0 -44
  103. package/lib/esm/log-sorting.js +0 -86
  104. package/lib/esm/log-sorting.js.map +0 -1
  105. package/lib/esm/log.js.map +0 -1
  106. package/lib/esm/snapshot.js.map +0 -1
  107. package/lib/esm/trim.js.map +0 -1
  108. package/lib/esm/types.d.ts +0 -6
  109. package/lib/esm/types.js +0 -23
  110. package/lib/esm/types.js.map +0 -1
  111. package/lib/esm/utils.d.ts +0 -2
  112. package/lib/esm/utils.js +0 -3
  113. package/lib/esm/utils.js.map +0 -1
  114. package/lib/esm/values.d.ts +0 -26
  115. package/lib/esm/values.js +0 -131
  116. package/lib/esm/values.js.map +0 -1
  117. package/src/__benchmark__/index.ts +0 -130
  118. package/src/heads.ts +0 -233
  119. package/src/types.ts +0 -12
  120. package/src/values.ts +0 -174
  121. /package/{lib/esm → dist/src}/change.js +0 -0
  122. /package/{lib/esm → dist/src}/change.js.map +0 -0
  123. /package/{lib/esm → dist/src}/difference.js +0 -0
  124. /package/{lib/esm → dist/src}/difference.js.map +0 -0
  125. /package/{lib/esm → dist/src}/entry-with-refs.js +0 -0
  126. /package/{lib/esm → dist/src}/entry-with-refs.js.map +0 -0
  127. /package/{lib/esm → dist/src}/find-uniques.js +0 -0
  128. /package/{lib/esm → dist/src}/find-uniques.js.map +0 -0
  129. /package/{lib/esm → dist/src}/index.js +0 -0
  130. /package/{lib/esm → dist/src}/index.js.map +0 -0
  131. /package/{lib/esm → dist/src}/log-errors.js +0 -0
  132. /package/{lib/esm → dist/src}/log-errors.js.map +0 -0
  133. /package/{lib/esm → dist/src}/logger.js +0 -0
@@ -1,29 +1,29 @@
1
- import { SignatureWithKey, Identity, X25519Keypair } from "@peerbit/crypto";
2
- import { AnyStore } from "@peerbit/any-store";
3
- import { EntryIndex } from "./entry-index.js";
4
- import * as Sorting from "./log-sorting.js";
5
- import { EncryptionTemplateMaybeEncrypted, Entry, Payload, CanAppend, EntryType } from "./entry.js";
1
+ import { type AnyStore } from "@peerbit/any-store";
2
+ import { type Blocks } from "@peerbit/blocks-interface";
3
+ import { type Identity, SignatureWithKey, X25519Keypair } from "@peerbit/crypto";
4
+ import { type Indices } from "@peerbit/indexer-interface";
5
+ import { type Keychain } from "@peerbit/keychain";
6
+ import { type Change } from "./change.js";
6
7
  import { HLC, LamportClock, Timestamp } from "./clock.js";
7
- import { Encoding } from "./encoding.js";
8
- import { CacheUpdateOptions, HeadsIndex } from "./heads.js";
9
- import { Values } from "./values.js";
10
- import { TrimOptions } from "./trim.js";
11
- import { Change } from "./change.js";
12
- import { EntryWithRefs } from "./entry-with-refs.js";
13
- import { Blocks } from "@peerbit/blocks-interface";
14
- import { Keychain } from "@peerbit/keychain";
8
+ import { type Encoding } from "./encoding.js";
9
+ import { EntryIndex, type MaybeResolveOptions, type ResultsIterator, type ReturnTypeFromResolveOptions } from "./entry-index.js";
10
+ import { type EntryWithRefs } from "./entry-with-refs.js";
11
+ import { type CanAppend, type EncryptionTemplateMaybeEncrypted, Entry, EntryType, Payload, ShallowEntry, type ShallowOrFullEntry } from "./entry.js";
12
+ import * as Sorting from "./log-sorting.js";
13
+ import { type TrimOptions } from "./trim.js";
15
14
  export type LogEvents<T> = {
16
15
  onChange?: (change: Change<T>) => void;
17
16
  onGidRemoved?: (gids: string[]) => Promise<void> | void;
18
17
  };
19
18
  export type MemoryProperties = {
20
- cache?: AnyStore;
19
+ storage?: AnyStore;
20
+ indexer?: Indices;
21
21
  };
22
22
  export type LogProperties<T> = {
23
23
  keychain?: Keychain;
24
24
  encoding?: Encoding<T>;
25
25
  clock?: LamportClock;
26
- sortFn?: Sorting.ISortFunction;
26
+ sortFn?: Sorting.SortFn;
27
27
  trim?: TrimOptions;
28
28
  canAppend?: CanAppend<T>;
29
29
  };
@@ -34,7 +34,7 @@ export type AppendOptions<T> = {
34
34
  gidSeed?: Uint8Array;
35
35
  data?: Uint8Array;
36
36
  timestamp?: Timestamp;
37
- next?: Entry<any>[];
37
+ next?: Entry<any>[] | ShallowEntry[];
38
38
  };
39
39
  identity?: Identity;
40
40
  signers?: ((data: Uint8Array) => Promise<SignatureWithKey> | SignatureWithKey)[];
@@ -43,26 +43,47 @@ export type AppendOptions<T> = {
43
43
  keypair: X25519Keypair;
44
44
  receiver: EncryptionTemplateMaybeEncrypted;
45
45
  };
46
+ onChange?: OnChange<T>;
47
+ canAppend?: CanAppend<T>;
48
+ };
49
+ type OnChange<T> = (change: Change<T>, reference?: undefined) => void | Promise<void>;
50
+ export type JoinableEntry = {
51
+ meta: {
52
+ clock: {
53
+ timestamp: Timestamp;
54
+ };
55
+ next: string[];
56
+ gid: string;
57
+ type: EntryType;
58
+ };
59
+ hash: string;
60
+ };
61
+ export declare const ENTRY_JOIN_SHAPE: {
62
+ readonly hash: true;
63
+ readonly meta: {
64
+ readonly type: true;
65
+ readonly next: true;
66
+ readonly gid: true;
67
+ readonly clock: true;
68
+ };
46
69
  };
47
70
  export declare class Log<T> {
48
71
  private _id;
49
- private _sortFn;
50
72
  private _storage;
51
73
  private _hlc;
52
74
  private _identity;
53
75
  private _entryIndex;
54
- private _headsIndex;
55
- private _values;
56
- private _nextsIndex;
57
76
  private _keychain?;
58
77
  private _encoding;
59
78
  private _trim;
60
- private _entryCache;
61
79
  private _canAppend?;
62
80
  private _onChange?;
63
81
  private _closed;
64
- private _memory?;
82
+ private _closeController;
83
+ private _loadedOnce;
84
+ private _indexer;
65
85
  private _joining;
86
+ private _sortFn;
66
87
  constructor(properties?: {
67
88
  id?: Uint8Array;
68
89
  });
@@ -76,14 +97,13 @@ export declare class Log<T> {
76
97
  * Returns the length of the log.
77
98
  */
78
99
  get length(): number;
79
- get values(): Values<T>;
80
100
  get canAppend(): CanAppend<T> | undefined;
81
101
  /**
82
102
  * Checks if a entry is part of the log
83
103
  * @param {string} hash The hash of the entry
84
104
  * @returns {boolean}
85
105
  */
86
- has(cid: string): boolean;
106
+ has(cid: string): Promise<boolean>;
87
107
  /**
88
108
  * Get all entries sorted. Don't use this method anywhere where performance matters
89
109
  */
@@ -91,9 +111,7 @@ export declare class Log<T> {
91
111
  /**
92
112
  * Returns the head index
93
113
  */
94
- get headsIndex(): HeadsIndex<T>;
95
- get memory(): AnyStore | undefined;
96
- getHeads(): Promise<Entry<T>[]>;
114
+ getHeads<R extends MaybeResolveOptions = false>(resolve?: R): ResultsIterator<ReturnTypeFromResolveOptions<R, T>>;
97
115
  /**
98
116
  * Returns an array of Entry objects that reference entries which
99
117
  * are not in the log currently.
@@ -112,11 +130,10 @@ export declare class Log<T> {
112
130
  get hlc(): HLC;
113
131
  get identity(): Identity;
114
132
  get blocks(): Blocks;
115
- get nextsIndex(): Map<string, Set<string>>;
116
133
  get entryIndex(): EntryIndex<T>;
117
134
  get keychain(): Keychain | undefined;
118
135
  get encoding(): Encoding<T>;
119
- get sortFn(): Sorting.ISortFunction;
136
+ get sortFn(): Sorting.SortFn;
120
137
  get closed(): boolean;
121
138
  /**
122
139
  * Set the identity for the log
@@ -124,51 +141,53 @@ export declare class Log<T> {
124
141
  */
125
142
  setIdentity(identity: Identity): void;
126
143
  /**
127
- * Find an entry.
144
+ * Get an entry.
128
145
  * @param {string} [hash] The hashes of the entry
129
146
  */
130
147
  get(hash: string, options?: {
131
148
  timeout?: number;
132
149
  }): Promise<Entry<T> | undefined>;
133
- traverse(rootEntries: Entry<T>[], amount?: number, endHash?: string): Promise<{
134
- [key: string]: Entry<T>;
135
- }>;
150
+ /**
151
+ * Get a entry with shallow representation
152
+ * @param {string} [hash] The hashes of the entry
153
+ */
154
+ getShallow(hash: string, options?: {
155
+ timeout?: number;
156
+ }): Promise<ShallowEntry | undefined>;
136
157
  getReferenceSamples(from: Entry<T>, options?: {
137
158
  pointerCount?: number;
138
159
  memoryLimit?: number;
139
160
  }): Promise<Entry<T>[]>;
140
161
  /**
141
162
  * Append an entry to the log.
142
- * @param {Entry} entry Entry to add
143
- * @return {Log} New Log containing the appended value
163
+ * @param {T} data The data to be appended
164
+ * @param {AppendOptions} [options] The options for the append
165
+ * @returns {{ entry: Entry<T>; removed: ShallowEntry[] }} The appended entry and an array of removed entries
144
166
  */
145
167
  append(data: T, options?: AppendOptions<T>): Promise<{
146
168
  entry: Entry<T>;
147
- removed: Entry<T>[];
169
+ removed: ShallowOrFullEntry<T>[];
148
170
  }>;
149
- reset(entries: Entry<T>[]): Promise<void>;
150
- remove(entry: Entry<T> | Entry<T>[], options?: {
171
+ reset(entries?: Entry<T>[]): Promise<void>;
172
+ remove(entry: ShallowOrFullEntry<T> | ShallowOrFullEntry<T>[], options?: {
151
173
  recursively?: boolean;
152
174
  }): Promise<Change<T>>;
153
- iterator(options?: {
154
- from?: "tail" | "head";
155
- amount?: number;
156
- }): IterableIterator<string>;
157
- trim(option?: TrimOptions | undefined): Promise<Entry<T>[]>;
158
- /**
159
- *
160
- * @param entries
161
- * @returns change
162
- */
163
- join(entriesOrLog: (string | Entry<T> | EntryWithRefs<T>)[] | Log<T>, options?: {
175
+ trim(option?: TrimOptions | undefined): Promise<Entry<T>[] | undefined>;
176
+ join(entriesOrLog: (string | Entry<T> | ShallowEntry | EntryWithRefs<T>)[] | Log<T> | ResultsIterator<Entry<any>>, options?: {
164
177
  verifySignatures?: boolean;
165
178
  trim?: TrimOptions;
166
179
  timeout?: number;
167
- } & CacheUpdateOptions): Promise<void>;
168
- private joinEntry;
180
+ }): Promise<void>;
181
+ /**
182
+ * Bottom up join of entries into the log
183
+ * @param entry
184
+ * @param options
185
+ * @returns
186
+ */
187
+ private joinRecursively;
169
188
  private processEntry;
170
- deleteRecursively(from: Entry<any> | Entry<any>[], skipFirst?: boolean): Promise<Entry<T>[]>;
171
- delete(entry: Entry<any>): Promise<void>;
189
+ deleteRecursively(from: ShallowOrFullEntry<T> | ShallowOrFullEntry<T>[], skipFirst?: boolean): Promise<ShallowEntry[]>;
190
+ delete(hash: string): Promise<ShallowEntry | undefined>;
172
191
  /**
173
192
  * Returns the log entries as a formatted string.
174
193
  * @returns {string}
@@ -178,15 +197,16 @@ export declare class Log<T> {
178
197
  * └─three
179
198
  */
180
199
  toString(payloadMapper?: (payload: Payload<T>) => string): Promise<string>;
181
- idle(): Promise<void>;
182
200
  close(): Promise<void>;
183
201
  drop(): Promise<void>;
184
202
  recover(): Promise<void>;
185
203
  load(opts?: {
186
204
  heads?: Entry<T>[];
187
205
  fetchEntryTimeout?: number;
188
- reload: boolean;
206
+ reset?: boolean;
189
207
  ignoreMissing?: boolean;
208
+ timeout?: number;
209
+ reload?: boolean;
190
210
  }): Promise<void>;
191
211
  static fromEntry<T>(store: Blocks, identity: Identity, entryOrHash: string | string[] | Entry<T> | Entry<T>[], options?: {
192
212
  id?: Uint8Array;
@@ -198,10 +218,12 @@ export declare class Log<T> {
198
218
  * Finds entries that are the heads of this collection,
199
219
  * ie. entries that are not referenced by other entries.
200
220
  *
201
- * @param {Array<Entry<T>>} entries Entries to search heads from
221
+ * @param {Array<Entry<T>>} entries - Entries to search heads from
202
222
  * @returns {Array<Entry<T>>}
203
223
  */
204
224
  static findHeads<T>(entries: Entry<T>[]): Entry<T>[];
205
225
  static findTails<T>(entries: Entry<T>[]): Entry<T>[];
206
226
  static findTailHashes(entries: Entry<any>[]): string[];
207
227
  }
228
+ export {};
229
+ //# sourceMappingURL=log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"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"}